@@ -77,6 +77,7 @@ import type {
7777 SentMediaQualityType ,
7878 ThemeType ,
7979} from '../types/Util.std.js' ;
80+ import type { HourCycleSettingType } from '../util/preload.preload.js' ;
8081import type {
8182 BackupMediaDownloadStatusType ,
8283 BackupsSubscriptionType ,
@@ -162,6 +163,7 @@ export type PropsDataType = {
162163 selectedSpeaker ?: AudioDevice ;
163164 sentMediaQualitySetting : SentMediaQualitySettingType ;
164165 themeSetting : ThemeSettingType | undefined ;
166+ hourCyclePreference : HourCycleSettingType | undefined ;
165167 universalExpireTimer : DurationInSeconds ;
166168 whoCanFindMe : PhoneNumberDiscoverability ;
167169 whoCanSeeMe : PhoneNumberSharingMode ;
@@ -320,6 +322,7 @@ type PropsFunctionType = {
320322 onSpellCheckChange : CheckboxChangeHandlerType ;
321323 onTextFormattingChange : CheckboxChangeHandlerType ;
322324 onThemeChange : SelectChangeHandlerType < ThemeType > ;
325+ onHourCycleChange : SelectChangeHandlerType < HourCycleSettingType > ;
323326 onToggleNavTabsCollapse : ( navTabsCollapsed : boolean ) => void ;
324327 onUniversalExpireTimerChange : SelectChangeHandlerType < number > ;
325328 onWhoCanSeeMeChange : SelectChangeHandlerType < PhoneNumberSharingMode > ;
@@ -486,6 +489,7 @@ export function Preferences({
486489 onSpellCheckChange,
487490 onTextFormattingChange,
488491 onThemeChange,
492+ onHourCycleChange,
489493 onToggleNavTabsCollapse,
490494 onUniversalExpireTimerChange,
491495 onWhoCanSeeMeChange,
@@ -526,6 +530,7 @@ export function Preferences({
526530 localeOverride,
527531 theme,
528532 themeSetting,
533+ hourCyclePreference,
529534 universalExpireTimer = DurationInSeconds . ZERO ,
530535 validateBackup,
531536 whoCanFindMe,
@@ -539,6 +544,7 @@ export function Preferences({
539544} : PropsType ) : JSX . Element {
540545 const storiesId = useId ( ) ;
541546 const themeSelectId = useId ( ) ;
547+ const hourCycleSelectId = useId ( ) ;
542548 const zoomSelectId = useId ( ) ;
543549 const languageId = useId ( ) ;
544550
@@ -1035,6 +1041,36 @@ export function Preferences({
10351041 { i18n ( 'icu:Preferences__LanguageModal__Restart__Description' ) }
10361042 </ ConfirmationDialog >
10371043 ) }
1044+ < Control
1045+ icon
1046+ left = {
1047+ < label htmlFor = { hourCycleSelectId } >
1048+ { i18n ( 'icu:Preferences--time-format' ) }
1049+ </ label >
1050+ }
1051+ right = {
1052+ < Select
1053+ id = { hourCycleSelectId }
1054+ disabled = { hourCyclePreference === undefined }
1055+ onChange = { onHourCycleChange }
1056+ options = { [
1057+ {
1058+ text : i18n ( 'icu:timeFormatSystem' ) ,
1059+ value : 'system' ,
1060+ } ,
1061+ {
1062+ text : i18n ( 'icu:timeFormat12Hour' ) ,
1063+ value : '12' ,
1064+ } ,
1065+ {
1066+ text : i18n ( 'icu:timeFormat24Hour' ) ,
1067+ value : '24' ,
1068+ } ,
1069+ ] }
1070+ value = { hourCyclePreference }
1071+ />
1072+ }
1073+ />
10381074 < Control
10391075 icon
10401076 left = {
0 commit comments