@kanso-labs/react-native-kanso-ui 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/autocomplete/index.js +15 -1
- package/dist/autocomplete/index.js.map +1 -1
- package/dist/button/group.d.ts +5 -0
- package/dist/button/group.js +115 -0
- package/dist/button/group.js.map +1 -0
- package/dist/button/index.d.ts +4 -1
- package/dist/button/index.js +44 -22
- package/dist/button/index.js.map +1 -1
- package/dist/button/slots.js +2 -1
- package/dist/button/slots.js.map +1 -1
- package/dist/calendar/index.js +351 -182
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/styles.js +33 -2
- package/dist/calendar/styles.js.map +1 -1
- package/dist/carousel/arrangement.d.ts +5 -0
- package/dist/carousel/arrangement.js +123 -0
- package/dist/carousel/arrangement.js.map +1 -0
- package/dist/chequer/index.js +95 -0
- package/dist/chequer/index.js.map +1 -0
- package/dist/collection/index.d.ts +157 -0
- package/dist/collection/index.js +1358 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/color-thumb/index.js +56 -0
- package/dist/color-thumb/index.js.map +1 -0
- package/dist/components/button/index.d.ts +4 -2
- package/dist/components/button/index.js +227 -188
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button-group/index.d.ts +87 -0
- package/dist/components/button-group/index.js +275 -0
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/components/calendar/index.d.ts +11 -3
- package/dist/components/calendar/index.js +60 -45
- package/dist/components/calendar/index.js.map +1 -1
- package/dist/components/carousel/index.d.ts +72 -0
- package/dist/components/carousel/index.js +496 -0
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/components/checkbox-group/index.d.ts +3 -4
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/checkbox-group/index.js.map +1 -1
- package/dist/components/chip/index.d.ts +4 -1
- package/dist/components/chip/index.js +229 -161
- package/dist/components/chip/index.js.map +1 -1
- package/dist/components/color-area/index.d.ts +85 -0
- package/dist/components/color-area/index.js +630 -0
- package/dist/components/color-area/index.js.map +1 -0
- package/dist/components/color-field/index.d.ts +144 -0
- package/dist/components/color-field/index.js +516 -0
- package/dist/components/color-field/index.js.map +1 -0
- package/dist/components/color-picker/index.d.ts +74 -0
- package/dist/components/color-picker/index.js +317 -0
- package/dist/components/color-picker/index.js.map +1 -0
- package/dist/components/color-slider/index.d.ts +82 -0
- package/dist/components/color-slider/index.js +456 -0
- package/dist/components/color-slider/index.js.map +1 -0
- package/dist/components/color-swatch/index.d.ts +46 -0
- package/dist/components/color-swatch/index.js +127 -0
- package/dist/components/color-swatch/index.js.map +1 -0
- package/dist/components/color-swatch-picker/index.d.ts +81 -0
- package/dist/components/color-swatch-picker/index.js +287 -0
- package/dist/components/color-swatch-picker/index.js.map +1 -0
- package/dist/components/color-wheel/index.d.ts +71 -0
- package/dist/components/color-wheel/index.js +407 -0
- package/dist/components/color-wheel/index.js.map +1 -0
- package/dist/components/combo-box/index.d.ts +193 -0
- package/dist/components/combo-box/index.js +616 -0
- package/dist/components/combo-box/index.js.map +1 -0
- package/dist/components/date-field/index.d.ts +120 -0
- package/dist/components/date-field/index.js +111 -0
- package/dist/components/date-field/index.js.map +1 -0
- package/dist/components/date-picker/index.d.ts +130 -0
- package/dist/components/date-picker/index.js +310 -0
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/date-range-picker/index.d.ts +139 -0
- package/dist/components/date-range-picker/index.js +421 -0
- package/dist/components/date-range-picker/index.js.map +1 -0
- package/dist/components/dialog/index.d.ts +5 -5
- package/dist/components/dialog/index.js +5 -5
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/disclosure/index.d.ts +94 -0
- package/dist/components/disclosure/index.js +365 -0
- package/dist/components/disclosure/index.js.map +1 -0
- package/dist/components/disclosure-group/index.d.ts +61 -0
- package/dist/components/disclosure-group/index.js +100 -0
- package/dist/components/disclosure-group/index.js.map +1 -0
- package/dist/components/drop-zone/index.d.ts +113 -0
- package/dist/components/drop-zone/index.js +304 -0
- package/dist/components/drop-zone/index.js.map +1 -0
- package/dist/components/fab/index.d.ts +1 -1
- package/dist/components/fab/index.js +91 -76
- package/dist/components/fab/index.js.map +1 -1
- package/dist/components/form/index.d.ts +3 -2
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/icon-button/index.d.ts +4 -2
- package/dist/components/icon-button/index.js +204 -171
- package/dist/components/icon-button/index.js.map +1 -1
- package/dist/components/list/index.d.ts +15 -158
- package/dist/components/list/index.js +21 -1047
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/list-box/index.d.ts +73 -0
- package/dist/components/list-box/index.js +82 -0
- package/dist/components/list-box/index.js.map +1 -0
- package/dist/components/loading-indicator/index.d.ts +32 -0
- package/dist/components/loading-indicator/index.js +174 -0
- package/dist/components/loading-indicator/index.js.map +1 -0
- package/dist/components/menu/index.d.ts +3 -3
- package/dist/components/menu/index.js +3 -3
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/navigation-tree/index.d.ts +117 -0
- package/dist/components/navigation-tree/index.js +135 -0
- package/dist/components/navigation-tree/index.js.map +1 -0
- package/dist/components/number-field/index.js +132 -143
- package/dist/components/number-field/index.js.map +1 -1
- package/dist/components/popover/index.d.ts +2 -2
- package/dist/components/popover/index.js +2 -2
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/range-calendar/index.d.ts +69 -0
- package/dist/components/range-calendar/index.js +144 -0
- package/dist/components/range-calendar/index.js.map +1 -0
- package/dist/components/search-view/index.d.ts +79 -0
- package/dist/components/search-view/index.js +571 -0
- package/dist/components/search-view/index.js.map +1 -0
- package/dist/components/select/index.d.ts +152 -0
- package/dist/components/select/index.js +419 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/sheet/index.d.ts +16 -7
- package/dist/components/sheet/index.js +157 -152
- package/dist/components/sheet/index.js.map +1 -1
- package/dist/components/slider/index.d.ts +111 -0
- package/dist/components/slider/index.js +673 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/split-button/index.d.ts +77 -0
- package/dist/components/split-button/index.js +354 -0
- package/dist/components/split-button/index.js.map +1 -0
- package/dist/components/table/index.d.ts +391 -0
- package/dist/components/table/index.js +1708 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/tabs/index.d.ts +196 -0
- package/dist/components/tabs/index.js +1137 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/time-field/index.d.ts +43 -0
- package/dist/components/time-field/index.js +107 -0
- package/dist/components/time-field/index.js.map +1 -0
- package/dist/components/time-picker/index.d.ts +65 -0
- package/dist/components/time-picker/index.js +1168 -0
- package/dist/components/time-picker/index.js.map +1 -0
- package/dist/components/token-field/index.d.ts +105 -0
- package/dist/components/token-field/index.js +574 -0
- package/dist/components/token-field/index.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +102 -0
- package/dist/components/tooltip/index.js +223 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/tree/index.d.ts +112 -0
- package/dist/components/tree/index.js +157 -0
- package/dist/components/tree/index.js.map +1 -0
- package/dist/disclosure/chevron.js +75 -0
- package/dist/disclosure/chevron.js.map +1 -0
- package/dist/disclosure/index.js +7 -0
- package/dist/disclosure/index.js.map +1 -0
- package/dist/drop/index.d.ts +54 -0
- package/dist/drop/index.js +161 -0
- package/dist/drop/index.js.map +1 -0
- package/dist/field/chevron.js +74 -0
- package/dist/field/chevron.js.map +1 -0
- package/dist/field/index.d.ts +2 -1
- package/dist/field/index.js +359 -154
- package/dist/field/index.js.map +1 -1
- package/dist/field/styles.js +18 -1
- package/dist/field/styles.js.map +1 -1
- package/dist/files/index.d.ts +18 -0
- package/dist/files/index.js +107 -0
- package/dist/files/index.js.map +1 -0
- package/dist/form/index.d.ts +5 -2
- package/dist/form/index.js +64 -85
- package/dist/form/index.js.map +1 -1
- package/dist/glyphs/index.js +128 -1
- package/dist/glyphs/index.js.map +1 -1
- package/dist/i18n/index.js +36 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/messages.js +1734 -34
- package/dist/i18n/messages.js.map +1 -1
- package/dist/index.d.ts +37 -3
- package/dist/index.js +36 -3
- package/dist/indicator/paths.js +23 -1
- package/dist/indicator/paths.js.map +1 -1
- package/dist/modal/index.js +92 -77
- package/dist/modal/index.js.map +1 -1
- package/dist/number/keyboard.js +16 -0
- package/dist/number/keyboard.js.map +1 -0
- package/dist/overlay/anchored.js +68 -38
- package/dist/overlay/anchored.js.map +1 -1
- package/dist/overlay/keyboard.js +57 -0
- package/dist/overlay/keyboard.js.map +1 -0
- package/dist/overlay/panel.js +173 -19
- package/dist/overlay/panel.js.map +1 -1
- package/dist/overlay/placement.js +13 -1
- package/dist/overlay/placement.js.map +1 -1
- package/dist/picker/index.js +322 -0
- package/dist/picker/index.js.map +1 -0
- package/dist/press/index.d.ts +2 -0
- package/dist/press/index.js +102 -100
- package/dist/press/index.js.map +1 -1
- package/dist/row/index.js +77 -69
- package/dist/row/index.js.map +1 -1
- package/dist/row/styles.js +13 -2
- package/dist/row/styles.js.map +1 -1
- package/dist/segments/field.js +277 -0
- package/dist/segments/field.js.map +1 -0
- package/dist/segments/index.js +574 -0
- package/dist/segments/index.js.map +1 -0
- package/dist/segments/styles.js +24 -0
- package/dist/segments/styles.js.map +1 -0
- package/dist/slider/index.js +145 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/swatch/index.js +56 -0
- package/dist/swatch/index.js.map +1 -0
- package/package.json +11 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["CalendarDateTime","ZonedDateTime","HostInstance","LayoutChangeEvent","StyleProp","TextStyle","ViewStyle","AnimatedStyle","DateSegmentType","OverlayTriggerState","TimeFieldState","TimeValue","DateFormatter","getLocalTimeZone","Time","toCalendarDateTime","today","use","useCallback","useId","useRef","useState","Text","NativeText","Platform","Pressable","ScrollView","StyleSheet","View","Gesture","GestureDetector","GestureHandlerRootView","Animated","useAnimatedStyle","SafeAreaInsetsContext","Svg","Circle","Line","useOverlayTriggerState","useTimeFieldState","DateSegmentsProps","SegmentDrawing","SegmentsHandle","ResolvedTheme","TimeFieldProps","ButtonSlotContext","ClockGlyph","KeyboardGlyph","messagesFor","useLocaleOf","insetsOf","ModalWindow","NO_INSETS","panelRoleOf","useModalState","usePanelShown","usePanelStyle","roomOf","usePressFeedback","DateSegments","SegmentedField","useTheme","composeStyles","themedStyles","useTypeRole","Button","IconButton","DIAL","CENTRE","OUTER_RING","INNER_RING","HANDLE","WIDTH","BOX_HEIGHT","COLON","PERIOD_WIDTH","DIAL_GAP","HEADLINE_GAP","CENTRE_DOT","BETWEEN_DOT","SLOP","BOX_PARTS","ReadonlySet","Set","UNDESCRIBED","stylesOf","colors","radii","shadows","sizing","spacing","create","actions","alignItems","flexDirection","gap","sm","justifyContent","marginTop","xl","box","backgroundColor","surfaceContainerHighest","borderRadius","height","width","controlXl","boxInput","rowMd","boxInputFocused","borderColor","primary","borderWidth","boxSelected","primaryContainer","boxText","color","onSurface","fontVariant","boxTextSelected","onPrimaryContainer","buttons","caption","onSurfaceVariant","captions","colon","textAlign","container","surfaceContainerHigh","boxShadow","elevation3","maxHeight","maxWidth","overflow","transformOrigin","content","padding","dial","alignSelf","OS","undefined","direction","dialLabel","position","dialLabels","absoluteFill","pointerEvents","dialText","dialTextSelected","onPrimary","headline","marginBottom","insetRing","outlineOffset","layout","bottom","left","right","top","notDrawn","display","period","outline","periodDivider","borderTopColor","borderTopWidth","periodHalf","flexBasis","flexGrow","periodInput","periodSelected","tertiaryContainer","periodText","periodTextSelected","onTertiaryContainer","row","md","DialLabel","isSelected","key","text","x","y","DialProps","draft","locale","onPick","onRelease","part","TimePart","testID","twelveHour","ModalContentProps","cancelLabel","confirmLabel","defaultMode","TimePickerMode","enterTimeLabel","field","fieldLabel","granularity","headlineId","hourCycle","labelId","motion","onClose","placeholderValue","selectTimeLabel","setHeadline","node","ModalProps","Omit","state","trigger","PeriodHalfProps","isAfternoon","onChoose","afternoon","TimePickerProps","T","defaultOpen","isOpen","onOpenChange","asDateTime","time","clockOf","isDisabled","label","onPress","ref","Dial","t0","$","_c","theme","styles","role","t1","gesture","useDialGesture","labels","labelsFor","between","minute","t2","hour","polar","handle","T0","t3","T1","T2","t4","t5","t6","t7","t8","t9","t10","t11","T3","t12","t13","map","placeOf","t14","t15","t16","t17","turn","radius","drawingOf","ReturnType","isDial","shown","selected","type","isActive","literal","parts","raisesKeyboard","fieldName","name","charAt","toLocaleUpperCase","slice","initialTime","held","value","steps","Array","from","length","_","step","digits","Intl","NumberFormat","minimumIntegerDigits","format","hours","hour12","partOf","ModalContent","headlineRole","captionRole","dialRole","inputRole","words","segments","setDraft","mode","setMode","setPart","setContent","room","setRoom","boxes","usesTwelveHours","showsMinutes","periods","Symbol","for","next","hideTimeZone","onChange","shouldForceLeadingZeros","follow","across","down","Math","atan2","PI","set","round","time_0","inner","hypot","time_1","pick","current","focusOn","release","switchMode","time_2","choosePeriod","setValue","confirm","measureContent","event","nativeEvent","measureRoom","t18","t19","t20","t21","dayPeriod","formatToParts","Date","find","each","String","PeriodHalf","feedback","choose","handlers","ring","layer","angle","sin","cos","TimePicker","props","isReadOnly","isRequired","writtenIn","setTrigger","selectTime","open","realtimeValidation","validationErrors","timeValue","toString","cancel","enterTime","TimePickerModal","insets","count","opened","setOpened","close","present","setPresent","slots","scrim","opacity","get","Pick","pan","Pan","runOnJS","onStart","onUpdate","onEnd","tap","Tap","maxDistance","success","Race","withTestId","resolvedOptions","_c","NativeText"],"sources":["../../../src/components/time-picker/index.tsx"],"sourcesContent":["import type { CalendarDateTime, ZonedDateTime } from '@internationalized/date'\nimport type {\n HostInstance,\n LayoutChangeEvent,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport type { AnimatedStyle } from 'react-native-reanimated'\nimport type { DateSegmentType } from 'react-stately/useDateFieldState'\nimport type { OverlayTriggerState } from 'react-stately/useOverlayTriggerState'\nimport type { TimeFieldState, TimeValue } from 'react-stately/useTimeFieldState'\n\nimport {\n DateFormatter,\n getLocalTimeZone,\n Time,\n toCalendarDateTime,\n today,\n} from '@internationalized/date'\nimport { use, useCallback, useId, useRef, useState } from 'react'\nimport {\n Text as NativeText,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n View,\n} from 'react-native'\nimport {\n Gesture,\n GestureDetector,\n GestureHandlerRootView,\n} from 'react-native-gesture-handler'\nimport Animated, { useAnimatedStyle } from 'react-native-reanimated'\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context'\nimport Svg, { Circle, Line } from 'react-native-svg'\nimport { useOverlayTriggerState } from 'react-stately/useOverlayTriggerState'\nimport { useTimeFieldState } from 'react-stately/useTimeFieldState'\n\nimport type {\n DateSegmentsProps,\n SegmentDrawing,\n SegmentsHandle,\n} from '../../segments'\nimport type { ResolvedTheme } from '../../theme/scope'\nimport type { TimeFieldProps } from '../time-field'\n\nimport { ButtonSlotContext } from '../../button/slots'\nimport { ClockGlyph, KeyboardGlyph } from '../../glyphs'\nimport { messagesFor } from '../../i18n'\nimport { useLocaleOf } from '../../i18n/provider'\nimport {\n insetsOf,\n ModalWindow,\n NO_INSETS,\n panelRoleOf,\n useModalState,\n} from '../../modal'\nimport { usePanelShown, usePanelStyle } from '../../overlay/panel'\nimport { roomOf } from '../../picker'\nimport { usePressFeedback } from '../../press'\nimport { DateSegments } from '../../segments'\nimport { SegmentedField } from '../../segments/field'\nimport { useTheme } from '../../theme/scope'\nimport { composeStyles, themedStyles } from '../../theme/styles'\nimport { useTypeRole } from '../../typography/roles'\nimport { Button } from '../button'\nimport { IconButton } from '../icon-button'\n\n// kanso-ui's TimePicker, the time pickers page's picker: TimeField's\n// segments, with a clock button in the field's trailing slot that opens the\n// page's modal over a scrim. A time is typed into the field or picked in the\n// modal, and the modal's OK is what writes a picked time back.\n//\n// **Modal at every width.** The page has no docked time picker, so unlike\n// DatePicker nothing here changes with the window's size: the container is\n// centred over the scrim on a phone and on a tablet alike, in a React Native\n// `Modal` through src/modal, as Dialog's is.\n//\n// **The modal is the page's vertical layout, in both of its variants.** The\n// dial: a label medium headline on surface variant, then the time selector,\n// an hour and a minute box, 96 by 80dp at the small corner in display large,\n// on surface container highest and on primary container once selected, with\n// 24dp for the colon between, and beside them the period selector, 52 by\n// 80dp, outlined, its chosen half on tertiary container. Under them, 36dp\n// down, the 256dp dial on surface container highest: labels in body large,\n// the 48dp handle and 2dp hand in primary, an 8dp centre, and the label under\n// the handle in on primary. The input variant drops the dial and draws the\n// boxes as text fields, 96 by 72dp in display medium, the focused one on\n// primary container with a 2dp primary outline, each named underneath in\n// body small, and the period selector at the same 72dp. Both put the\n// keyboard or clock toggle at the actions' start and the text buttons at\n// their end, inside a container on surface container high at the\n// extra-large corner, level 3, with 24dp of padding. A window too short for\n// the dial scrolls the container rather than squeezing it.\n//\n// **The boxes are a time field of their own**, a second React Stately state\n// drawn through src/segments, so they are typed into, stepped and read as\n// TimeField's segments are, in both variants, which differ in how the boxes\n// are drawn rather than in what they are. On the dial a press on a box picks\n// which part the dial sets, without raising the keyboard; in the input\n// variant it raises the number pad, as a field's segment does. The day\n// period stays a part of that state but is not drawn, and the period\n// selector beside the boxes stands in for it, as a radio group of the\n// locale's two words for it. The dial is a pointer affordance over the boxes\n// and is hidden from a screen reader, as web's is: everything it sets, the\n// boxes set too.\n//\n// **The dial does not mirror.** A clock face is the same in either writing\n// direction, so it is drawn and read in screen coordinates, three o'clock on\n// the right, whatever direction the layout around it runs. The row above it\n// follows the layout's own direction, so in a right-to-left layout the\n// period selector sits on the left.\n//\n// Twenty-four hours put the day's second half on an inner ring, 12 at its\n// top and 00 at the outer ring's, with no period selector, and whether there\n// is one at all is the locale's or `hourCycle`'s, as it is in TimeField.\n\n// The dial's geometry in dp, which is also its own coordinates: the radius\n// of the outer and inner rings of labels and of the handle that sits on\n// them. The inner ring sits far enough in that a handle on it clears the\n// outer ring's labels.\nconst DIAL = 256\nconst CENTRE = DIAL / 2\nconst OUTER_RING = 101\nconst INNER_RING = 64\nconst HANDLE = 24\n\n// The page's measurements that are its own rather than the scale's: the\n// container's width, which is the 280dp time selector and the padding either\n// side, the dial variant's box height, the colon's width, the period\n// selector's width, and the gaps over the dial and under the headline.\nconst WIDTH = 328\nconst BOX_HEIGHT = 80\nconst COLON = 24\nconst PERIOD_WIDTH = 52\nconst DIAL_GAP = 36\nconst HEADLINE_GAP = 20\n\n// The dot centring the hand, and the one on the handle between two of the\n// minute labels.\nconst CENTRE_DOT = 4\nconst BETWEEN_DOT = 2\n\n// How far a press moves before it is a drag rather than a tap: Gesture\n// Handler's own default distance for a pan, as the slider's.\nconst SLOP = 10\n\n// The parts the boxes draw. The day period is the period selector's.\nconst BOX_PARTS: ReadonlySet<DateSegmentType> = new Set(['hour', 'minute'])\n\n// What describes the boxes after their value: nothing, since no line sits\n// under them.\nconst UNDESCRIBED: DateSegmentsProps['described'] = []\n\nconst stylesOf = themedStyles(\n ({ colors, radii, shadows, sizing, spacing }: ResolvedTheme) =>\n StyleSheet.create({\n actions: {\n alignItems: 'center',\n flexDirection: 'row',\n gap: spacing.sm,\n justifyContent: 'space-between',\n marginTop: spacing.xl,\n },\n // An hour or a minute box.\n box: {\n alignItems: 'center',\n backgroundColor: colors.surfaceContainerHighest,\n borderRadius: radii.sm,\n height: BOX_HEIGHT,\n justifyContent: 'center',\n width: sizing.controlXl,\n },\n // The input variant's box: the text field the page draws there, which\n // is shorter.\n boxInput: {\n height: sizing.rowMd,\n },\n // The focused text field's outline, drawn inside the box.\n boxInputFocused: {\n borderColor: colors.primary,\n borderWidth: 2,\n },\n boxSelected: {\n backgroundColor: colors.primaryContainer,\n },\n boxText: {\n color: colors.onSurface,\n fontVariant: ['tabular-nums'],\n },\n boxTextSelected: {\n color: colors.onPrimaryContainer,\n },\n buttons: {\n flexDirection: 'row',\n gap: spacing.sm,\n },\n caption: {\n color: colors.onSurfaceVariant,\n width: sizing.controlXl,\n },\n captions: {\n flexDirection: 'row',\n gap: COLON,\n marginTop: spacing.sm,\n },\n // The colon between the boxes, in the boxes' type.\n colon: {\n color: colors.onSurface,\n textAlign: 'center',\n width: COLON,\n },\n // The page's container: its fill, corner and level, as wide as the\n // page's vertical layout and no wider or taller than the room it is\n // given.\n container: {\n backgroundColor: colors.surfaceContainerHigh,\n borderRadius: radii.xl,\n boxShadow: shadows.elevation3,\n maxHeight: '100%',\n maxWidth: '100%',\n overflow: 'hidden',\n transformOrigin: 'center',\n width: WIDTH,\n },\n content: {\n padding: spacing.xl,\n },\n // The dial's square, its labels placed in screen coordinates. iOS and\n // Android turn a left into a right under a right-to-left layout, so\n // the square is laid out left to right there; a browser keeps a left\n // where it is and has no such style.\n dial: {\n alignSelf: 'center',\n ...(Platform.OS === 'web' ? undefined : { direction: 'ltr' }),\n height: DIAL,\n marginTop: DIAL_GAP,\n width: DIAL,\n },\n // A label's square, the handle's size, centred on its place on a ring.\n dialLabel: {\n alignItems: 'center',\n height: HANDLE * 2,\n justifyContent: 'center',\n position: 'absolute',\n width: HANDLE * 2,\n },\n dialLabels: {\n ...StyleSheet.absoluteFill,\n pointerEvents: 'none',\n },\n dialText: {\n color: colors.onSurface,\n },\n dialTextSelected: {\n color: colors.onPrimary,\n },\n headline: {\n color: colors.onSurfaceVariant,\n marginBottom: HEADLINE_GAP,\n },\n // The ring a focused half takes, drawn inside the selector, which\n // clips anything drawn past its edge.\n insetRing: {\n outlineOffset: -2,\n },\n // The container's room: centred in the window, clear of every edge\n // inside the safe area. It takes no touches itself, so a press around\n // the container reaches the scrim under it.\n layout: {\n alignItems: 'center',\n bottom: 0,\n justifyContent: 'center',\n left: 0,\n pointerEvents: 'box-none',\n position: 'absolute',\n right: 0,\n top: 0,\n },\n notDrawn: {\n display: 'none',\n },\n // The period selector: two halves stacked in one outlined box, the\n // locale's morning word above its afternoon one.\n period: {\n borderColor: colors.outline,\n borderRadius: radii.sm,\n borderWidth: 1,\n height: BOX_HEIGHT,\n overflow: 'hidden',\n width: PERIOD_WIDTH,\n },\n periodDivider: {\n borderTopColor: colors.outline,\n borderTopWidth: 1,\n },\n periodHalf: {\n alignItems: 'center',\n flexBasis: 0,\n flexGrow: 1,\n justifyContent: 'center',\n },\n periodInput: {\n height: sizing.rowMd,\n },\n periodSelected: {\n backgroundColor: colors.tertiaryContainer,\n },\n periodText: {\n color: colors.onSurfaceVariant,\n },\n periodTextSelected: {\n color: colors.onTertiaryContainer,\n },\n row: {\n alignItems: 'flex-start',\n flexDirection: 'row',\n gap: spacing.md,\n justifyContent: 'center',\n },\n }),\n)\n\n// One label on the dial, placed on its ring.\ntype DialLabel = {\n readonly isSelected: boolean\n readonly key: string\n readonly text: string\n readonly x: number\n readonly y: number\n}\n\ntype DialProps = {\n readonly draft: TimeValue\n readonly locale: string\n /** Called with a press's place, in the dial's coordinates. */\n readonly onPick: (x: number, y: number) => void\n /** Called as a press that picked lets go. */\n readonly onRelease: () => void\n /** The part the dial sets. */\n readonly part: TimePart\n readonly testID: string | undefined\n readonly twelveHour: boolean\n}\n\n// What the modal's content is handed by the modal around it.\ntype ModalContentProps = {\n readonly cancelLabel: string\n readonly confirmLabel: string\n readonly defaultMode: TimePickerMode\n readonly enterTimeLabel: string\n /** The field's state, which the modal reads its time from and writes it to. */\n readonly field: TimeFieldState\n readonly fieldLabel: string\n readonly granularity: TimePart\n readonly headlineId: string\n readonly hourCycle: 12 | 24 | undefined\n readonly labelId: string\n readonly locale: string\n readonly motion: AnimatedStyle<ViewStyle>\n readonly onClose: () => void\n readonly placeholderValue: TimeValue | undefined\n readonly selectTimeLabel: string\n readonly setHeadline: (node: HostInstance | null) => void\n readonly testID: string | undefined\n}\n\ntype ModalProps = Omit<\n ModalContentProps,\n 'headlineId' | 'labelId' | 'motion' | 'onClose' | 'setHeadline'\n> & {\n /** The picker's open state. */\n readonly state: OverlayTriggerState\n /** The clock button, which a screen reader goes back to once it has gone. */\n readonly trigger: HostInstance | null\n}\n\ntype PeriodHalfProps = {\n readonly isAfternoon: boolean\n readonly isSelected: boolean\n readonly onChoose: (afternoon: boolean) => void\n readonly text: string\n}\n\n// The parts of a time the dial and the boxes set.\ntype TimePart = 'hour' | 'minute'\n\n/** Which of the time pickers page's two variants the modal shows. */\ntype TimePickerMode = 'dial' | 'input'\n\ntype TimePickerProps<T extends TimeValue = TimeValue> = Omit<\n TimeFieldProps<T>,\n 'trailingIcon'\n> & {\n /**\n * What the modal's dismissing action says. Left out, it is the word for it\n * in the locale, \"Cancel\" in English.\n */\n readonly cancelLabel?: string\n /**\n * What the modal's confirming action says. Left out, it is the word for it\n * in the locale, \"OK\" in English.\n */\n readonly confirmLabel?: string\n /**\n * Which variant the modal opens on: the dial, or the boxes as text fields\n * to type into. The button at the modal's start switches between them.\n * @default 'dial'\n */\n readonly defaultMode?: TimePickerMode\n /** Whether the modal starts open, when it keeps its own state. */\n readonly defaultOpen?: boolean\n /**\n * The input variant's headline, which also names the button that switches\n * the dial to it. Left out, it is the locale's, \"Enter time\" in English.\n */\n readonly enterTimeLabel?: string\n /** Whether the modal is open, when the call site holds the state. */\n readonly isOpen?: boolean\n /** Called with the modal's new state as it opens or closes. */\n readonly onOpenChange?: (isOpen: boolean) => void\n /**\n * The dial's headline, which also names the clock button that opens the\n * modal, before the field's label, and the button that switches the input\n * variant back. Left out, it is the locale's, \"Select time\" in English.\n */\n readonly selectTimeLabel?: string\n}\n\n/**\n * A picked time as the field's state takes it, which is always a date and\n * time: a bare time is put on today, and the field takes the date off again\n * on the way out.\n */\nfunction asDateTime(time: TimeValue): CalendarDateTime | ZonedDateTime {\n return 'day' in time\n ? time\n : toCalendarDateTime(today(getLocalTimeZone()), time)\n}\n\n// The clock button for the box's trailing slot. A call rather than JSX\n// written at the prop, which is what react-perf's jsx-no-jsx-as-prop is\n// after.\nfunction clockOf({\n isDisabled,\n isOpen,\n label,\n onPress,\n ref,\n}: {\n readonly isDisabled: boolean\n readonly isOpen: boolean\n readonly label: string\n readonly onPress: () => void\n readonly ref: (node: HostInstance | null) => void\n}) {\n return (\n <IconButton\n aria-expanded={isOpen}\n aria-label={label}\n isDisabled={isDisabled}\n onPress={onPress}\n ref={ref}\n >\n <ClockGlyph />\n </IconButton>\n )\n}\n\n// The dial: the face, the hand and its handle in react-native-svg, and the\n// labels over them, driven by a pan and a tap.\nfunction Dial({\n draft,\n locale,\n onPick,\n onRelease,\n part,\n testID,\n twelveHour,\n}: DialProps) {\n const theme = useTheme()\n const { colors } = theme\n const styles = stylesOf(theme)\n const role = useTypeRole('bodyLarge')\n const gesture = useDialGesture({ onPick, onRelease, testID })\n const labels = labelsFor(part, draft, locale, twelveHour)\n const between = part === 'minute' && draft.minute % 5 !== 0\n const handle =\n part === 'minute'\n ? polar(draft.minute / 60, OUTER_RING)\n : polar(\n (draft.hour % 12) / 12,\n !twelveHour && draft.hour >= 12 ? INNER_RING : OUTER_RING,\n )\n\n return (\n <GestureHandlerRootView style={styles.dial}>\n <GestureDetector gesture={gesture}>\n <View\n aria-hidden\n testID={testID === undefined ? undefined : `${testID}-dial`}\n >\n <Svg height={DIAL} viewBox={`0 0 ${DIAL} ${DIAL}`} width={DIAL}>\n <Circle\n cx={CENTRE}\n cy={CENTRE}\n fill={colors.surfaceContainerHighest}\n r={CENTRE}\n />\n <Line\n stroke={colors.primary}\n strokeWidth={2}\n x1={CENTRE}\n x2={handle.x}\n y1={CENTRE}\n y2={handle.y}\n />\n <Circle\n cx={CENTRE}\n cy={CENTRE}\n fill={colors.primary}\n r={CENTRE_DOT}\n />\n <Circle\n cx={handle.x}\n cy={handle.y}\n fill={colors.primary}\n r={HANDLE}\n />\n {between ? (\n <Circle\n cx={handle.x}\n cy={handle.y}\n fill={colors.onPrimary}\n r={BETWEEN_DOT}\n />\n ) : null}\n </Svg>\n <View style={styles.dialLabels}>\n {labels.map((label) => (\n <View\n key={label.key}\n style={composeStyles<ViewStyle>(\n styles.dialLabel,\n placeOf(label),\n )}\n >\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n label.isSelected\n ? styles.dialTextSelected\n : styles.dialText,\n )}\n >\n {label.text}\n </NativeText>\n </View>\n ))}\n </View>\n </View>\n </GestureDetector>\n </GestureHandlerRootView>\n )\n}\n\n/** One label, placed a fraction of a turn round a ring. */\nfunction dialLabel(\n key: string,\n text: string,\n isSelected: boolean,\n turn: number,\n radius: number,\n): DialLabel {\n const { x, y } = polar(turn, radius)\n return { isSelected, key, text, x, y }\n}\n\n// How the boxes are drawn: the page's boxes in place of a field's line, the\n// one selected on primary container, which on the dial is the part the dial\n// sets and in the input variant the box being typed into, outlined besides.\nfunction drawingOf(\n styles: ReturnType<typeof stylesOf>,\n role: StyleProp<TextStyle>,\n isDial: boolean,\n shown: TimePart,\n): SegmentDrawing {\n const selected = (type: DateSegmentType, isActive: boolean) =>\n isDial ? type === shown : isActive\n\n return {\n box: (type, isActive) =>\n composeStyles<ViewStyle>(\n styles.box,\n isDial ? undefined : styles.boxInput,\n selected(type, isActive) ? styles.boxSelected : undefined,\n !isDial && isActive ? styles.boxInputFocused : undefined,\n ),\n literal: composeStyles<TextStyle>(role, styles.colon),\n parts: BOX_PARTS,\n raisesKeyboard: !isDial,\n text: (type, isActive) =>\n composeStyles<TextStyle>(\n role,\n styles.boxText,\n selected(type, isActive) ? styles.boxTextSelected : undefined,\n ),\n }\n}\n\n/** A part's name as the locale writes it, opening with a capital. */\nfunction fieldName(name: string, locale: string) {\n return name.charAt(0).toLocaleUpperCase(locale) + name.slice(1)\n}\n\n/**\n * The time the modal opens on: the field's own, else its placeholder, else\n * midnight. A date and time keeps its date, so the field gets back what it\n * holds.\n */\nfunction initialTime(\n field: TimeFieldState,\n placeholderValue: TimeValue | undefined,\n): TimeValue {\n const held = field.value\n if (held !== null && 'hour' in held) {\n return held\n }\n return placeholderValue ?? new Time()\n}\n\n/** The labels the dial draws for one part, in the locale's digits. */\nfunction labelsFor(\n part: TimePart,\n time: TimeValue,\n locale: string,\n twelveHour: boolean,\n): DialLabel[] {\n const steps = Array.from({ length: 12 }, (_, step) => step)\n\n if (part === 'minute') {\n const digits = new Intl.NumberFormat(locale, { minimumIntegerDigits: 2 })\n return steps.map((step) =>\n dialLabel(\n `m${step}`,\n digits.format(step * 5),\n time.minute === step * 5,\n step / 12,\n OUTER_RING,\n ),\n )\n }\n\n const hours = new DateFormatter(locale, {\n hour: 'numeric',\n hour12: twelveHour,\n })\n if (twelveHour) {\n return steps.map((step) =>\n dialLabel(\n `h${step}`,\n partOf(hours, step, 'hour'),\n time.hour % 12 === step,\n step / 12,\n OUTER_RING,\n ),\n )\n }\n return [\n ...steps.map((step) =>\n dialLabel(\n `h${step}`,\n partOf(hours, step, 'hour'),\n time.hour === step,\n step / 12,\n OUTER_RING,\n ),\n ),\n ...steps.map((step) =>\n dialLabel(\n `h${step + 12}`,\n partOf(hours, step + 12, 'hour'),\n time.hour === step + 12,\n step / 12,\n INNER_RING,\n ),\n ),\n ]\n}\n\n// The modal's content, mounted each time it opens: the time it was opened\n// with is its draft until OK writes the draft into the field, or the modal\n// closes without it.\nfunction ModalContent({\n cancelLabel,\n confirmLabel,\n defaultMode,\n enterTimeLabel,\n field,\n fieldLabel,\n granularity,\n headlineId,\n hourCycle,\n labelId,\n locale,\n motion,\n onClose,\n placeholderValue,\n selectTimeLabel,\n setHeadline,\n testID,\n}: ModalContentProps) {\n const theme = useTheme()\n const styles = stylesOf(theme)\n const headlineRole = useTypeRole('labelMedium')\n const captionRole = useTypeRole('bodySmall')\n const dialRole = useTypeRole('displayLarge')\n const inputRole = useTypeRole('displayMedium')\n const words = messagesFor(locale).segments\n const [draft, setDraft] = useState(() => initialTime(field, placeholderValue))\n const [mode, setMode] = useState(defaultMode)\n const [part, setPart] = useState<TimePart>('hour')\n const [content, setContent] = useState(0)\n const [room, setRoom] = useState(0)\n const boxes = useRef<SegmentsHandle>(null)\n const twelveHour = usesTwelveHours(locale, hourCycle)\n const showsMinutes = granularity === 'minute'\n const isDial = mode === 'dial'\n const isAfternoon = draft.hour >= 12\n const headline = isDial ? selectTimeLabel : enterTimeLabel\n const periods = new DateFormatter(locale, { hour: 'numeric', hour12: true })\n const state = useTimeFieldState({\n granularity,\n hideTimeZone: true,\n hourCycle,\n locale,\n onChange: (next: null | TimeValue) => {\n if (next !== null) {\n setDraft(next)\n }\n },\n shouldForceLeadingZeros: true,\n value: draft,\n })\n\n // Which part the dial sets, taken from the box in focus: a press on a box,\n // or the boxes moving on once an hour is typed.\n const follow = useCallback((type: DateSegmentType | null) => {\n if (type === 'hour' || type === 'minute') {\n setPart(type)\n }\n }, [])\n\n // A press on the dial sets the part it shows from where it lands: a\n // fraction of a turn clockwise from twelve, and on a 24-hour clock the\n // ring nearer it.\n const pick = useCallback(\n (x: number, y: number) => {\n const across = x - CENTRE\n const down = y - CENTRE\n const turn = (Math.atan2(across, -down) / (2 * Math.PI) + 1) % 1\n\n if (part === 'minute') {\n setDraft((time) => time.set({ minute: Math.round(turn * 60) % 60 }))\n return\n }\n const step = Math.round(turn * 12) % 12\n if (twelveHour) {\n setDraft((time) =>\n time.set({ hour: step + (time.hour >= 12 ? 12 : 0) }),\n )\n return\n }\n const inner = Math.hypot(across, down) < (OUTER_RING + INNER_RING) / 2\n setDraft((time) => time.set({ hour: inner ? step + 12 : step }))\n },\n [part, twelveHour],\n )\n\n // An hour picked on the dial moves on to the minutes, as the page does.\n const release = useCallback(() => {\n if (part === 'hour' && showsMinutes) {\n setPart('minute')\n boxes.current?.focusOn('minute', false)\n }\n }, [part, showsMinutes])\n\n // The other variant, with the box the dial sets in focus: typed into, with\n // the keyboard raised, or set on the dial, with it put away.\n const switchMode = useCallback(() => {\n setMode(isDial ? 'input' : 'dial')\n boxes.current?.focusOn(part, isDial)\n }, [isDial, part])\n\n // A half of the day keeps the hour on the clock's face, and choosing the\n // half the time is already in leaves it as it was.\n const choosePeriod = useCallback((afternoon: boolean) => {\n setDraft((time) =>\n time.set({ hour: (time.hour % 12) + (afternoon ? 12 : 0) }),\n )\n }, [])\n\n // OK writes the draft through the field's state, and its `slot` closes the\n // modal after.\n const confirm = useCallback(() => {\n field.setValue(asDateTime(draft))\n }, [draft, field])\n\n // The content's height against the room the container leaves it, so it\n // scrolls only when it does not fit, and a drag on the dial is never taken\n // for a scroll otherwise.\n const measureContent = useCallback((_: number, height: number) => {\n setContent(height)\n }, [])\n const measureRoom = useCallback((event: LayoutChangeEvent) => {\n setRoom(event.nativeEvent.layout.height)\n }, [])\n\n return (\n <Animated.View\n {...panelRoleOf('dialog', undefined)}\n aria-label={\n Platform.OS === 'web' ? undefined : `${headline}, ${fieldLabel}`\n }\n onAccessibilityEscape={onClose}\n style={composeStyles<AnimatedStyle<ViewStyle>>(styles.container, motion)}\n testID={testID === undefined ? undefined : `${testID}-modal`}\n >\n <ScrollView\n contentContainerStyle={styles.content}\n onContentSizeChange={measureContent}\n onLayout={measureRoom}\n scrollEnabled={content > room}\n >\n <NativeText\n nativeID={headlineId}\n ref={setHeadline}\n role=\"heading\"\n style={composeStyles<TextStyle>(headlineRole, styles.headline)}\n >\n {headline}\n </NativeText>\n {Platform.OS === 'web' ? (\n <NativeText nativeID={labelId} style={styles.notDrawn}>\n {fieldLabel}\n </NativeText>\n ) : null}\n <View style={styles.row}>\n <View>\n <DateSegments\n described={UNDESCRIBED}\n drawing={drawingOf(\n styles,\n isDial ? dialRole : inputRole,\n isDial,\n part,\n )}\n isInvalid={false}\n label={fieldLabel}\n locale={locale}\n onActiveChange={follow}\n ref={boxes}\n state={state}\n />\n {isDial ? null : (\n <View aria-hidden style={styles.captions}>\n <NativeText\n style={composeStyles<TextStyle>(captionRole, styles.caption)}\n >\n {fieldName(words.hour, locale)}\n </NativeText>\n {showsMinutes ? (\n <NativeText\n style={composeStyles<TextStyle>(\n captionRole,\n styles.caption,\n )}\n >\n {fieldName(words.minute, locale)}\n </NativeText>\n ) : null}\n </View>\n )}\n </View>\n {twelveHour ? (\n <View\n aria-label={words.dayPeriod}\n role=\"radiogroup\"\n style={composeStyles<ViewStyle>(\n styles.period,\n isDial ? undefined : styles.periodInput,\n )}\n >\n <PeriodHalf\n isAfternoon={false}\n isSelected={!isAfternoon}\n onChoose={choosePeriod}\n text={partOf(periods, 9, 'dayPeriod')}\n />\n <PeriodHalf\n isAfternoon\n isSelected={isAfternoon}\n onChoose={choosePeriod}\n text={partOf(periods, 21, 'dayPeriod')}\n />\n </View>\n ) : null}\n </View>\n {isDial ? (\n <Dial\n draft={draft}\n locale={locale}\n onPick={pick}\n onRelease={release}\n part={part}\n testID={testID}\n twelveHour={twelveHour}\n />\n ) : null}\n <View style={styles.actions}>\n <IconButton\n aria-label={isDial ? enterTimeLabel : selectTimeLabel}\n onPress={switchMode}\n >\n {isDial ? <KeyboardGlyph /> : <ClockGlyph />}\n </IconButton>\n <View style={styles.buttons}>\n <Button slot=\"close\" variant=\"text\">\n {cancelLabel}\n </Button>\n <Button onPress={confirm} slot=\"close\" variant=\"text\">\n {confirmLabel}\n </Button>\n </View>\n </View>\n </ScrollView>\n </Animated.View>\n )\n}\n\n/** The part of a formatted time a formatter writes for one hour of the day. */\nfunction partOf(\n format: DateFormatter,\n hour: number,\n type: 'dayPeriod' | 'hour',\n) {\n return (\n format\n .formatToParts(new Date(2000, 0, 1, hour))\n .find((each) => each.type === type)?.value ?? String(hour)\n )\n}\n\n// A half of the period selector: a radio of the selector's group, the\n// afternoon's drawing the rule between the two.\nfunction PeriodHalf({\n isAfternoon,\n isSelected,\n onChoose,\n text,\n}: PeriodHalfProps) {\n const theme = useTheme()\n const styles = stylesOf(theme)\n const role = useTypeRole('titleMedium')\n const feedback = usePressFeedback({\n color: isSelected\n ? theme.colors.onTertiaryContainer\n : theme.colors.onSurfaceVariant,\n })\n const choose = useCallback(() => {\n onChoose(isAfternoon)\n }, [isAfternoon, onChoose])\n\n return (\n <Pressable\n aria-checked={isSelected}\n role=\"radio\"\n {...feedback.handlers}\n onPress={choose}\n style={composeStyles<ViewStyle>(\n styles.periodHalf,\n isAfternoon ? styles.periodDivider : undefined,\n isSelected ? styles.periodSelected : undefined,\n feedback.ring,\n feedback.ring === undefined ? undefined : styles.insetRing,\n )}\n >\n {feedback.layer}\n <NativeText\n style={composeStyles<TextStyle>(\n role,\n isSelected ? styles.periodTextSelected : styles.periodText,\n )}\n >\n {text}\n </NativeText>\n </Pressable>\n )\n}\n\n// A label's square, its centre on the label's place.\nfunction placeOf({ x, y }: DialLabel): ViewStyle {\n return { left: x - HANDLE, top: y - HANDLE }\n}\n\n/** Where a fraction of a turn clockwise from twelve lands on a ring. */\nfunction polar(turn: number, radius: number) {\n const angle = turn * 2 * Math.PI\n return {\n x: CENTRE + radius * Math.sin(angle),\n y: CENTRE - radius * Math.cos(angle),\n }\n}\n\n/**\n * A time typed into a field, or picked in a modal behind the clock button at\n * the field's end: on a dial, or typed into the modal's larger boxes. The\n * value is an `@internationalized/date` value, as on web: pass `value` with\n * `onChange` to control it, or `defaultValue` to let it keep its own.\n *\n * ```tsx\n * import { Time } from '@internationalized/date'\n *\n * <TimePicker defaultValue={new Time(9, 30)} label=\"Label\" />\n * ```\n *\n * The field is TimeField's, so `granularity`, `hourCycle`, `minValue` and\n * `maxValue` behave as they do there. The modal sets hours and minutes and\n * keeps the seconds a value already has; a time it writes back is checked\n * against the bounds as a typed one is. Whether it shows a twelve or\n * twenty-four hour clock is the locale's, through the `I18nProvider`, unless\n * `hourCycle` says otherwise.\n *\n * `style`, `ref` and `testID` land on the field as a whole.\n */\nfunction TimePicker<T extends TimeValue = TimeValue>({\n cancelLabel,\n confirmLabel,\n defaultMode = 'dial',\n defaultOpen,\n enterTimeLabel,\n isDisabled = false,\n isOpen,\n isReadOnly = false,\n isRequired = false,\n locale,\n onOpenChange,\n selectTimeLabel,\n ...props\n}: TimePickerProps<T>) {\n const writtenIn = useLocaleOf(locale)\n const words = messagesFor(writtenIn)\n const [trigger, setTrigger] = useState<HostInstance | null>(null)\n const state = useOverlayTriggerState({ defaultOpen, isOpen, onOpenChange })\n const field = useTimeFieldState<T>({\n ...props,\n isDisabled,\n isReadOnly,\n isRequired,\n locale: writtenIn,\n })\n const selectTime = selectTimeLabel ?? words.selectTime\n // oxlint-disable-next-line typescript/unbound-method -- React Stately's setters are callbacks, and read no `this`\n const { open } = state\n\n return (\n <>\n <SegmentedField\n {...props}\n errors={field.realtimeValidation.validationErrors}\n isDisabled={isDisabled}\n isEmpty={field.value === null}\n isReadOnly={isReadOnly}\n isRequired={isRequired}\n locale={writtenIn}\n state={field}\n // The time alone, as TimeField submits it.\n submitted={field.value === null ? '' : field.timeValue.toString()}\n trailingIcon={clockOf({\n isDisabled: isDisabled || isReadOnly,\n isOpen: state.isOpen,\n label: `${selectTime} ${props.label}`,\n onPress: open,\n ref: setTrigger,\n })}\n />\n <TimePickerModal\n cancelLabel={cancelLabel ?? words.cancel}\n confirmLabel={confirmLabel ?? words.confirm}\n defaultMode={defaultMode}\n enterTimeLabel={enterTimeLabel ?? words.enterTime}\n field={field}\n fieldLabel={props.label}\n granularity={props.granularity === 'hour' ? 'hour' : 'minute'}\n hourCycle={props.hourCycle}\n locale={writtenIn}\n placeholderValue={props.placeholderValue}\n selectTimeLabel={selectTime}\n state={state}\n testID={props.testID}\n trigger={trigger}\n />\n </>\n )\n}\n\n// The modal while it is open and while its exit runs: the window, the scrim\n// and the container, centred in the room the safe area leaves. Its content\n// is mounted afresh each time it opens.\nfunction TimePickerModal({ state, trigger, ...props }: ModalProps) {\n const theme = useTheme()\n const styles = stylesOf(theme)\n const insets = use(SafeAreaInsetsContext) ?? NO_INSETS\n const headlineId = useId()\n const labelId = useId()\n const [headline, setHeadline] = useState<HostInstance | null>(null)\n const [opened, setOpened] = useState({ count: 0, isOpen: state.isOpen })\n const { close, present, setPresent, slots } = useModalState(\n { state, trigger },\n {},\n )\n const shown = usePanelShown(state.isOpen, true, setPresent)\n const motion = usePanelStyle(shown)\n const scrim = useAnimatedStyle(() => {\n 'worklet'\n return { opacity: shown.get() }\n })\n\n // Counts each opening, which the content is keyed by, so a modal opened\n // again while its exit still runs starts from the field's time again.\n if (opened.isOpen !== state.isOpen) {\n setOpened({\n count: opened.count + (state.isOpen ? 1 : 0),\n isOpen: state.isOpen,\n })\n }\n\n if (!present) {\n return null\n }\n\n return (\n <ModalWindow\n isKeyboardDismissDisabled={false}\n labelledBy={`${headlineId} ${labelId}`}\n onClose={close}\n onScrimPress={state.isOpen ? close : undefined}\n scrim={scrim}\n title={headline}\n >\n <View\n style={composeStyles<ViewStyle>(\n styles.layout,\n insetsOf(roomOf(insets, theme.spacing.sm)),\n )}\n >\n <ButtonSlotContext value={slots}>\n <ModalContent\n {...props}\n headlineId={headlineId}\n key={opened.count}\n labelId={labelId}\n motion={motion}\n onClose={close}\n setHeadline={setHeadline}\n />\n </ButtonSlotContext>\n </View>\n </ModalWindow>\n )\n}\n\n// The dial's gestures: a drag that sets the part as it moves and moves on\n// as it lets go, and a tap that does both where it lands. Each lets go to\n// the other, as the slider's track does.\nfunction useDialGesture({\n onPick,\n onRelease,\n testID,\n}: Pick<DialProps, 'onPick' | 'onRelease' | 'testID'>) {\n // Gesture Handler 3 deprecates these builders for hooks that version 2 does\n // not have, and the peer range admits both, so the builders stay while it\n // does.\n // oxlint-disable-next-line react/capitalized-calls, typescript/no-deprecated -- a builder named after its gesture, not a component; see above\n const pan = Gesture.Pan()\n .runOnJS(true)\n .onStart(({ x, y }) => {\n onPick(x, y)\n })\n .onUpdate(({ x, y }) => {\n onPick(x, y)\n })\n .onEnd(() => {\n onRelease()\n })\n // oxlint-disable-next-line react/capitalized-calls, typescript/no-deprecated -- as above\n const tap = Gesture.Tap()\n .maxDistance(SLOP)\n .runOnJS(true)\n .onEnd(({ x, y }, success) => {\n if (success) {\n onPick(x, y)\n onRelease()\n }\n })\n\n // oxlint-disable-next-line react/capitalized-calls, typescript/no-deprecated -- as above\n return Gesture.Race(\n testID === undefined ? pan : pan.withTestId(`${testID}-dial-pan`),\n testID === undefined ? tap : tap.withTestId(`${testID}-dial-tap`),\n )\n}\n\n/**\n * Whether the clock has twelve hours. `hourCycle` decides when it is given,\n * as it does for the segments; otherwise the locale does.\n */\nfunction usesTwelveHours(locale: string, hourCycle: 12 | 24 | undefined) {\n if (hourCycle !== undefined) {\n return hourCycle === 12\n }\n return (\n new DateFormatter(locale, { hour: 'numeric' }).resolvedOptions().hour12 ??\n false\n )\n}\n\nexport type { TimePickerMode, TimePickerProps }\n\nexport { TimePicker }\n"],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { FieldVariant } from "../../field/index.js";
|
|
2
|
+
import { StyleProp, TextInput, TextInputProps, View, ViewStyle } from "react-native";
|
|
3
|
+
import { ComponentRef, ReactNode, Ref } from "react";
|
|
4
|
+
import { TokenFieldValue, TokenSegment } from "react-stately";
|
|
5
|
+
//#region src/components/token-field/index.d.ts
|
|
6
|
+
type TokenFieldProps<T extends TokenFieldValue = TokenFieldValue> = Omit<TextInputProps, 'accessibilityHint' | 'accessibilityLabel' | 'aria-disabled' | 'aria-label' | 'children' | 'cursorColor' | 'defaultValue' | 'editable' | 'maxLength' | 'multiline' | 'numberOfLines' | 'onChange' | 'onChangeText' | 'placeholder' | 'placeholderTextColor' | 'readOnly' | 'rows' | 'selectionColor' | 'style' | 'underlineColorAndroid' | 'value'> & {
|
|
7
|
+
/** The value the field opens with, when it keeps its own. */
|
|
8
|
+
readonly defaultValue?: T;
|
|
9
|
+
/**
|
|
10
|
+
* A hint shown under the field. Replaced by `error` when there is one, so
|
|
11
|
+
* the two never stack.
|
|
12
|
+
*/
|
|
13
|
+
readonly description?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The problem with the current value, in words. Its presence is what puts
|
|
16
|
+
* the field in its error state: the message, the error colours, and the
|
|
17
|
+
* invalid state a screen reader reads all follow from it. The line under
|
|
18
|
+
* the field arrives with the message, so the field grows when this does,
|
|
19
|
+
* unless it is inside a `Form`, which keeps the line drawn.
|
|
20
|
+
*/
|
|
21
|
+
readonly error?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the label sits in the empty box and floats to the top once the
|
|
24
|
+
* field is focused or holds something. `false` keeps it small at the top in
|
|
25
|
+
* every state.
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
28
|
+
readonly floatingLabel?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* A ref to the field's own `TextInput`, which is what a call site moves
|
|
31
|
+
* focus to. `ref` is the field as a whole.
|
|
32
|
+
*/
|
|
33
|
+
readonly inputRef?: Ref<ComponentRef<typeof TextInput>>;
|
|
34
|
+
/**
|
|
35
|
+
* Draws the field disabled: it takes no focus and no input, and its pills
|
|
36
|
+
* take no presses.
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
readonly isDisabled?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Shows the value and takes focus, but takes no input, and its pills are
|
|
42
|
+
* neither selected nor removed.
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
readonly isReadOnly?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* What the field is for, and the name a screen reader reads for it.
|
|
48
|
+
* Required, since a field with no label is a box nobody can name.
|
|
49
|
+
*/
|
|
50
|
+
readonly label: string;
|
|
51
|
+
/**
|
|
52
|
+
* An icon at the start of the box, before the label and the value: the
|
|
53
|
+
* page's 24dp leading icon, in the muted role. The slot hands it that
|
|
54
|
+
* colour and size through `useIconStyle()`.
|
|
55
|
+
*/
|
|
56
|
+
readonly leadingIcon?: ReactNode;
|
|
57
|
+
/** Called with the new value as it is edited. */
|
|
58
|
+
readonly onChange?: (value: T) => void;
|
|
59
|
+
readonly ref?: Ref<ComponentRef<typeof View>>;
|
|
60
|
+
/**
|
|
61
|
+
* What each token holds. Given a segment, return what to draw inside its
|
|
62
|
+
* pill; without it the pill holds the segment's own text, which is what a
|
|
63
|
+
* screen reader reads either way.
|
|
64
|
+
*/
|
|
65
|
+
readonly renderToken?: (segment: TokenSegment) => ReactNode;
|
|
66
|
+
/** Positions and sizes the field as a whole. */
|
|
67
|
+
readonly style?: StyleProp<ViewStyle>;
|
|
68
|
+
/**
|
|
69
|
+
* An icon at the end of the box, after the value: the page's 24dp trailing
|
|
70
|
+
* icon, in the muted role and the error role while the field has an
|
|
71
|
+
* error. The slot hands it that colour and size through `useIconStyle()`.
|
|
72
|
+
*/
|
|
73
|
+
readonly trailingIcon?: ReactNode;
|
|
74
|
+
/** The value, when the call site keeps it. Pass it with `onChange`. */
|
|
75
|
+
readonly value?: T;
|
|
76
|
+
/**
|
|
77
|
+
* The filled box, or the outlined one, as the text fields page draws them.
|
|
78
|
+
* @default 'filled'
|
|
79
|
+
*/
|
|
80
|
+
readonly variant?: FieldVariant;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* A labelled field whose value is text with tokens in it, drawn as pills: a
|
|
84
|
+
* tag input, a mention field, a structured search box. Its value is React
|
|
85
|
+
* Stately's `TokenFieldValue`, which the package re-exports: pass `value` with
|
|
86
|
+
* `onChange` to control it, or `defaultValue` to let it keep its own.
|
|
87
|
+
*
|
|
88
|
+
* ```tsx
|
|
89
|
+
* const [value, setValue] = useState(new TokenFieldValue([]))
|
|
90
|
+
*
|
|
91
|
+
* <TokenField label="Label" onChange={setValue} value={value} />
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* What counts as a token is the call site's: subclass `TokenFieldValue` and
|
|
95
|
+
* override `tokenize`, which is handed what is typed after the last pill.
|
|
96
|
+
* `renderToken` decides what each pill holds; without it, the segment's own
|
|
97
|
+
* text.
|
|
98
|
+
*
|
|
99
|
+
* React Native's own `TextInput` props reach the control; `style` and `ref`
|
|
100
|
+
* are the field as a whole, and `inputRef` the control.
|
|
101
|
+
*/
|
|
102
|
+
declare function TokenField<T extends TokenFieldValue = TokenFieldValue>({ defaultValue, description, error, floatingLabel, inputRef, isDisabled, isReadOnly, label, leadingIcon, onBlur, onChange, onFocus, onKeyPress, ref, renderToken, style, trailingIcon, value, variant, ...props }: TokenFieldProps<T>): import("react").JSX.Element;
|
|
103
|
+
//#endregion
|
|
104
|
+
export { TokenField, type TokenFieldProps, type TokenSegment };
|
|
105
|
+
//# sourceMappingURL=index.d.ts.map
|