@kanso-labs/kanso-ui 0.43.7 → 0.44.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.
Files changed (158) hide show
  1. package/README.md +1 -0
  2. package/dist/calendar/index.js +34 -10
  3. package/dist/calendar/index.js.map +1 -1
  4. package/dist/calendar/styles.js +30 -0
  5. package/dist/calendar/styles.js.map +1 -1
  6. package/dist/chip/index.js +27 -18
  7. package/dist/chip/index.js.map +1 -1
  8. package/dist/chip/label.js +32 -0
  9. package/dist/chip/label.js.map +1 -0
  10. package/dist/chip/styles.js +32 -2
  11. package/dist/chip/styles.js.map +1 -1
  12. package/dist/collection/text.js +24 -3
  13. package/dist/collection/text.js.map +1 -1
  14. package/dist/components/button/index.js.map +1 -1
  15. package/dist/components/calendar/index.d.ts +8 -1
  16. package/dist/components/calendar/index.js +129 -73
  17. package/dist/components/calendar/index.js.map +1 -1
  18. package/dist/components/checkbox/index.js +29 -30
  19. package/dist/components/checkbox/index.js.map +1 -1
  20. package/dist/components/checkbox-group/index.js +4 -2
  21. package/dist/components/checkbox-group/index.js.map +1 -1
  22. package/dist/components/chip/index.js +1 -1
  23. package/dist/components/chip/index.js.map +1 -1
  24. package/dist/components/chip-group/index.d.ts +35 -5
  25. package/dist/components/chip-group/index.js +137 -97
  26. package/dist/components/chip-group/index.js.map +1 -1
  27. package/dist/components/copy-field/index.js +1 -1
  28. package/dist/components/copy-field/index.js.map +1 -1
  29. package/dist/components/currency/index.d.ts +64 -6
  30. package/dist/components/currency/index.js +117 -40
  31. package/dist/components/currency/index.js.map +1 -1
  32. package/dist/components/date-picker/index.js +1 -1
  33. package/dist/components/dialog/index.d.ts +3 -1
  34. package/dist/components/dialog/index.js +121 -81
  35. package/dist/components/dialog/index.js.map +1 -1
  36. package/dist/components/disclosure-group/index.js +1 -1
  37. package/dist/components/disclosure-group/index.js.map +1 -1
  38. package/dist/components/icon-button/index.js +18 -1
  39. package/dist/components/icon-button/index.js.map +1 -1
  40. package/dist/components/index.d.ts +2 -2
  41. package/dist/components/keycap/index.d.ts +3 -0
  42. package/dist/components/keycap/index.js +30 -44
  43. package/dist/components/keycap/index.js.map +1 -1
  44. package/dist/components/list/index.d.ts +16 -2
  45. package/dist/components/list/index.js +124 -69
  46. package/dist/components/list/index.js.map +1 -1
  47. package/dist/components/list-detail/index.d.ts +11 -3
  48. package/dist/components/list-detail/index.js +13 -6
  49. package/dist/components/list-detail/index.js.map +1 -1
  50. package/dist/components/list-item/index.d.ts +16 -1
  51. package/dist/components/list-item/index.js.map +1 -1
  52. package/dist/components/menu/index.d.ts +6 -2
  53. package/dist/components/menu/index.js +22 -15
  54. package/dist/components/menu/index.js.map +1 -1
  55. package/dist/components/meter/index.d.ts +4 -1
  56. package/dist/components/meter/index.js +6 -0
  57. package/dist/components/meter/index.js.map +1 -1
  58. package/dist/components/navigation-bar/index.d.ts +14 -4
  59. package/dist/components/navigation-bar/index.js +77 -50
  60. package/dist/components/navigation-bar/index.js.map +1 -1
  61. package/dist/components/navigation-rail/index.d.ts +3 -2
  62. package/dist/components/navigation-rail/index.js +59 -52
  63. package/dist/components/navigation-rail/index.js.map +1 -1
  64. package/dist/components/navigation-tree/index.js +4 -1
  65. package/dist/components/navigation-tree/index.js.map +1 -1
  66. package/dist/components/number-field/index.d.ts +3 -2
  67. package/dist/components/number-field/index.js +91 -115
  68. package/dist/components/number-field/index.js.map +1 -1
  69. package/dist/components/popover/index.d.ts +3 -1
  70. package/dist/components/popover/index.js +102 -100
  71. package/dist/components/popover/index.js.map +1 -1
  72. package/dist/components/progress-indicator/index.d.ts +4 -2
  73. package/dist/components/progress-indicator/index.js +4 -3
  74. package/dist/components/progress-indicator/index.js.map +1 -1
  75. package/dist/components/radio-group/index.js +34 -24
  76. package/dist/components/radio-group/index.js.map +1 -1
  77. package/dist/components/search-field/index.d.ts +11 -1
  78. package/dist/components/search-field/index.js +32 -28
  79. package/dist/components/search-field/index.js.map +1 -1
  80. package/dist/components/segmented-button/index.d.ts +9 -2
  81. package/dist/components/segmented-button/index.js +1 -1
  82. package/dist/components/segmented-button/index.js.map +1 -1
  83. package/dist/components/separator/index.d.ts +19 -7
  84. package/dist/components/separator/index.js +36 -13
  85. package/dist/components/separator/index.js.map +1 -1
  86. package/dist/components/sheet/index.js +72 -61
  87. package/dist/components/sheet/index.js.map +1 -1
  88. package/dist/components/snackbar/index.d.ts +4 -1
  89. package/dist/components/snackbar/index.js +140 -55
  90. package/dist/components/snackbar/index.js.map +1 -1
  91. package/dist/components/stack/index.d.ts +6 -3
  92. package/dist/components/stack/index.js +48 -31
  93. package/dist/components/stack/index.js.map +1 -1
  94. package/dist/components/switch/index.d.ts +16 -6
  95. package/dist/components/switch/index.js +115 -62
  96. package/dist/components/switch/index.js.map +1 -1
  97. package/dist/components/text-area/index.d.ts +10 -1
  98. package/dist/components/text-area/index.js +21 -19
  99. package/dist/components/text-area/index.js.map +1 -1
  100. package/dist/components/text-field/index.d.ts +16 -2
  101. package/dist/components/text-field/index.js +49 -43
  102. package/dist/components/text-field/index.js.map +1 -1
  103. package/dist/components/time-picker/index.js +42 -38
  104. package/dist/components/time-picker/index.js.map +1 -1
  105. package/dist/components/tooltip/index.d.ts +3 -1
  106. package/dist/components/tooltip/index.js.map +1 -1
  107. package/dist/components/tree/index.d.ts +15 -3
  108. package/dist/components/tree/index.js +41 -28
  109. package/dist/components/tree/index.js.map +1 -1
  110. package/dist/control/index.js +26 -23
  111. package/dist/control/index.js.map +1 -1
  112. package/dist/control/styles.js +8 -1
  113. package/dist/control/styles.js.map +1 -1
  114. package/dist/field/index.js +149 -131
  115. package/dist/field/index.js.map +1 -1
  116. package/dist/field/styles.js +14 -1
  117. package/dist/field/styles.js.map +1 -1
  118. package/dist/glyphs/index.js +37 -1
  119. package/dist/glyphs/index.js.map +1 -1
  120. package/dist/hooks/useClippedTitle.js +44 -0
  121. package/dist/hooks/useClippedTitle.js.map +1 -0
  122. package/dist/hooks/useRipple.js +6 -5
  123. package/dist/hooks/useRipple.js.map +1 -1
  124. package/dist/hooks/useScrollStop.js +133 -0
  125. package/dist/hooks/useScrollStop.js.map +1 -0
  126. package/dist/i18n/index.js +1 -0
  127. package/dist/i18n/index.js.map +1 -1
  128. package/dist/i18n/messages.js +34 -0
  129. package/dist/i18n/messages.js.map +1 -1
  130. package/dist/index.d.ts +2 -2
  131. package/dist/indicator/index.js +18 -16
  132. package/dist/indicator/index.js.map +1 -1
  133. package/dist/indicator/styles.js +3 -0
  134. package/dist/indicator/styles.js.map +1 -1
  135. package/dist/keycap/context.js +7 -0
  136. package/dist/keycap/context.js.map +1 -0
  137. package/dist/navigation/index.d.ts +16 -2
  138. package/dist/navigation/index.js +145 -44
  139. package/dist/navigation/index.js.map +1 -1
  140. package/dist/navigation/styles.js +79 -16
  141. package/dist/navigation/styles.js.map +1 -1
  142. package/dist/overlay/modal.js +7 -0
  143. package/dist/overlay/modal.js.map +1 -0
  144. package/dist/row/index.js +92 -89
  145. package/dist/row/index.js.map +1 -1
  146. package/dist/row/styles.js +24 -1
  147. package/dist/row/styles.js.map +1 -1
  148. package/dist/styles/overlay.d.ts +6 -2
  149. package/dist/styles/overlay.js +9 -1
  150. package/dist/styles/overlay.js.map +1 -1
  151. package/dist/styles.css +177 -20
  152. package/dist/theme-scope.d.ts +5 -1
  153. package/dist/theme-scope.js +100 -51
  154. package/dist/theme-scope.js.map +1 -1
  155. package/dist/tokens/design.tokens.stylex.js.map +1 -1
  156. package/package.json +21 -20
  157. package/dist/hooks/useScrollable.js +0 -69
  158. package/dist/hooks/useScrollable.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","CalendarDateTime","ZonedDateTime","FocusEvent","PointerEvent","ReactElement","ReactNode","RefAttributes","TimeFieldProps","RACTimeFieldProps","Selection","TimeFieldState","TimeValue","getLocalTimeZone","Time","toCalendarDateTime","today","stylex","useCallback","useContext","useId","useRef","useState","Heading","LabelContext","Modal","ModalOverlay","Button","RACButton","DateInput","RACDateInput","DateSegment","RACDateSegment","Dialog","RACDialog","TimeField","RACTimeField","TimeFieldStateContext","ToggleButton","ToggleButtonGroup","useLocale","useSlottedContext","FieldVariant","FieldBox","FieldMessage","FieldSegments","fieldStyles","invalidFrom","useFieldValidationBehavior","ClockGlyph","KeyboardGlyph","useMessages","renderSegment","segmentStyles","mergeStatefulStyles","overlay","picker","triggerClassName","colors","motion","radii","shadows","sizing","spacing","stateLayerOpacity","typography","IconButton","FORCED_COLORS","DIAL","CENTRE","OUTER_RING","INNER_RING","HANDLE","MORNING","AFTERNOON","INVISIBLE","scaleIn","styles","centre","kGNEyG","k1xSpc","kjj79g","kmVPX3","$$css","dialog","periodButton","kWkggS","kMzoRj","kB7OPa","kMwMTN","kkrTdU","kCS8Yb","kzQI83","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","kogj98","kjBf7l","kInvED","k3XXqK","kMeerF","periodDivider","kLZC3w","kPef9Z","kEafiO","periodHovered","periodSelected","periodSelectedHovered","ring","selector","kZKoxP","kVAM5u","kaIpWk","ksu8eU","knGrYV","kcqcaj","kzqmXN","selectorHovered","selectorInput","selectorInputFocused","selectorSelected","selectorSelectedHovered","DialLabel","isSelected","key","text","x","y","PeriodState","isFocusVisible","isHovered","Segment","Parameters","NonNullable","SegmentState","isFocused","TimePart","TimePickerMode","TimePickerProps","Omit","T","cancelLabel","className","confirmLabel","container","Element","defaultMode","defaultOpen","description","enterTimeLabel","error","floatingLabel","isOpen","label","leadingIcon","onOpenChange","selectTimeLabel","style","variant","asDateTime","time","boxClassName","isDial","isFollowed","state","props","clockTrigger","isDisabled","onPress","ClockTrigger","t0","$","id","fieldLabel","t1","undefined","t2","Symbol","for","triggerGlyph","t3","dialLabel","turn","radius","polar","fieldName","names","Intl","DisplayNames","field","locale","name","of","charAt","toLocaleUpperCase","slice","initialTime","placeholderValue","held","value","labelsFor","part","twelveHour","steps","Array","from","length","_","step","digits","NumberFormat","minimumIntegerDigits","map","format","minute","hours","DateTimeFormat","hour","hour12","offset","partOf","type","formatToParts","Date","find","String","periodAmClassName","periodClassName","divider","periodPmClassName","angle","Math","PI","sin","cos","TimePicker","t4","isReadOnly","t5","t6","validationBehavior","messages","ownOpen","setOwnOpen","open","t7","next","changeOpen","t8","openModal","T0","t9","t10","root","t11","isRequired","t12","t13","selectTime","t14","t15","input","t16","t17","t18","scrim","t19","cancel","t20","confirm","t21","enterTime","t22","granularity","t23","t24","hourCycle","t25","t26","TimePickerDialog","draft","setDraft","mode","setMode","setPart","headingId","labelContext","boxes","dragging","usesTwelveHours","switchMode","periods","isAfternoon","showsMinutes","shown","handle","box","current","querySelector","HTMLElement","focus","focusBox","event","type_0","target","getAttribute","followFocus","changeDraft","event_0","box_0","currentTarget","getBoundingClientRect","clientX","left","width","clientY","top","height","atan2","distance","hypot","set","round","inner","pick","event_1","pointerType","button","preventDefault","setPointerCapture","pointerId","startPicking","event_2","continuePicking","stopPicking","keys","afternoon","has","choosePeriod","setValue","segment","replaceAll","0","1","renderBox","labels","between","modalDialog","_temp","resolvedOptions","stylex.props","_c","RACButton","props","RACTimeField","RACDateInput","RACDateSegment","RACDialog","Button"],"sources":["../../../src/components/time-picker/index.tsx"],"sourcesContent":["'use client';\n\nimport type { CalendarDateTime, ZonedDateTime } from '@internationalized/date';\nimport type { FocusEvent, PointerEvent, ReactElement, ReactNode, RefAttributes } from 'react';\nimport type { TimeFieldProps as RACTimeFieldProps, Selection, TimeFieldState, TimeValue } from 'react-aria-components';\nimport { getLocalTimeZone, Time, toCalendarDateTime, today } from '@internationalized/date';\nimport * as stylex from '@stylexjs/stylex';\nimport { useCallback, useContext, useId, useRef, useState } from 'react';\nimport { Heading, LabelContext, Modal, ModalOverlay, Button as RACButton, DateInput as RACDateInput, DateSegment as RACDateSegment, Dialog as RACDialog, TimeField as RACTimeField, TimeFieldStateContext, ToggleButton, ToggleButtonGroup, useLocale, useSlottedContext } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldMessage, FieldSegments } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { ClockGlyph, KeyboardGlyph } from '../../glyphs';\nimport { useMessages } from '../../i18n';\nimport { renderSegment } from '../../segments';\nimport { segmentStyles } from '../../segments/styles';\nimport { mergeStatefulStyles } from '../../styles/merge';\nimport { overlay } from '../../styles/overlay';\nimport { picker, triggerClassName } from '../../styles/picker';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, motion, radii, shadows, sizing, spacing, stateLayerOpacity, typography } from '../../tokens/design.tokens.stylex';\nimport Button from '../button';\nimport IconButton from '../icon-button';\n\n// The time pickers page's picker: TimeField's segments, with a clock button\n// in the field's trailing slot that opens the page's modal over a scrim. A\n// time is typed into the field or picked in the modal, and the modal's OK is\n// 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 at a breakpoint: the container is centred\n// over the scrim on a phone and on a desktop alike.\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.\n//\n// **The boxes are a TimeField of their own**, React Aria's, inside the\n// modal: its hour and minute segments drawn as the page's boxes. That makes\n// them spinbuttons with React Aria's arrow keys, typing, digits and names in\n// the reader's locale, and it is the same accessible model in both variants,\n// which differ in how the boxes are drawn rather than in what they are. The\n// day period stays a segment for React Aria's sake but is hidden, and the\n// period selector beside the boxes takes its place, as a radio group of the\n// locale's two words for it. The dial is a pointer affordance over the\n// spinbuttons and is hidden from assistive technology: everything it sets,\n// the 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. The row above it follows the field's own order, as TimeField's\n// segments do, so in a right-to-left locale the period selector sits on the\n// left.\n//\n// Twenty-four hours put the day's second half on an inner ring, 12 at its top\n// and 00 at the outer ring's, with no period selector, and whether there is\n// one at all is the reader's locale or `hourCycle`, as it is in TimeField.\n\nconst FORCED_COLORS = '@media (forced-colors: active)';\n\n// The dial's geometry, in the units of its viewBox, which it draws at the\n// page's 256dp: the radius of the outer and inner rings of labels and of the\n// handle that sits on them. The inner ring sits far enough in that a handle on\n// it clears the 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 period selector's selection, hoisted so each is one stable array\n// rather than a fresh one per render.\nconst MORNING = ['am'];\nconst AFTERNOON = ['pm'];\n\n// React Aria's literal segments carry the locale's bidirectional marks beside\n// the punctuation, so a literal is drawn only when something else is left.\nconst INVISIBLE = /[\\s؜‎‏‪-‮⁦-⁩]/gu;\nconst scaleIn = \"xnirehn-B\";\nconst styles = {\n centre: {\n kGNEyG: \"x6s0dn4\",\n k1xSpc: \"x78zum5\",\n kjj79g: \"xl56j7k\",\n kmVPX3: \"x1a7rqcl\",\n $$css: true\n },\n dialog: {\n kmVPX3: \"x1apw6a7\",\n $$css: true\n },\n periodButton: {\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"xjbqb8w\",\n kMzoRj: \"xc342km\",\n kB7OPa: \"x9f619\",\n kMwMTN: \"x1w5n3ug\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x78zum5\",\n kCS8Yb: \"x1r8uery\",\n kzQI83: \"x1iyjqo2\",\n kMv6JI: \"x46eyla\",\n kGuDYH: \"x5ehqhr\",\n k63SB2: \"xrf6cl6\",\n kjj79g: \"xl56j7k\",\n kb6lSQ: \"x1g135zh\",\n kLWn49: \"x1ggk5va\",\n kogj98: \"x1ghz6dp\",\n kjBf7l: \"xrgy624\",\n kInvED: \"x2ssjo2\",\n k3XXqK: \"x1t137rt\",\n kMeerF: \"x1de99jn\",\n kmVPX3: \"x1717udv\",\n $$css: true\n },\n periodDivider: {\n kLZC3w: \"xrre44y\",\n kPef9Z: \"x13fuv20\",\n kEafiO: \"x178xt8z\",\n $$css: true\n },\n periodHovered: {\n kWkggS: \"x14noynh\",\n $$css: true\n },\n periodSelected: {\n kWkggS: \"xs6yvni x1jzqe4\",\n kMwMTN: \"x3cbcwg x1k5gbb1\",\n $$css: true\n },\n periodSelectedHovered: {\n kWkggS: \"x5nnyxq x1jzqe4\",\n $$css: true\n },\n ring: {\n k3XXqK: \"xaatb59\",\n $$css: true\n },\n selector: {\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"x1rrhr5q\",\n kZKoxP: \"xwzfr38\",\n kVAM5u: \"x1ylmb6m\",\n kaIpWk: \"x1xdvaa9\",\n ksu8eU: \"xx61lck\",\n kMzoRj: \"xc342km x13rsnn2\",\n kB7OPa: \"x9f619\",\n knGrYV: \"xbuiw85\",\n kMwMTN: \"x139gbkf\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x3nfvp2\",\n kMv6JI: \"xjaampf\",\n kGuDYH: \"xuyiek4\",\n kcqcaj: \"xss6m8b\",\n k63SB2: \"x1n2oj23\",\n kzqmXN: \"xszbqgh\",\n kjj79g: \"xl56j7k\",\n kb6lSQ: \"x1hxa6v5\",\n kLWn49: \"x1iwmiir\",\n kjBf7l: \"xrgy624\",\n kInvED: \"x1hl8ikr\",\n k3XXqK: \"x1t137rt\",\n kMeerF: \"x1de99jn\",\n $$css: true\n },\n selectorHovered: {\n kWkggS: \"xpae8dx\",\n $$css: true\n },\n selectorInput: {\n kZKoxP: \"xfl6q2h\",\n kkrTdU: \"x1ed109x\",\n kMv6JI: \"x1gi70vc\",\n kGuDYH: \"xlzzeuu\",\n k63SB2: \"xh9quta\",\n kb6lSQ: \"x148mp24\",\n kLWn49: \"xs5hucj\",\n $$css: true\n },\n selectorInputFocused: {\n kInvED: \"x2ssjo2\",\n k3XXqK: \"xaatb59\",\n $$css: true\n },\n selectorSelected: {\n kWkggS: \"xp89om9 x1jzqe4\",\n kMwMTN: \"xscdzaa x1k5gbb1\",\n $$css: true\n },\n selectorSelectedHovered: {\n kWkggS: \"xq1oky0 x1jzqe4\",\n $$css: true\n }\n};\n\n// One label on the dial, placed on its ring.\ntype DialLabel = {\n isSelected: boolean;\n key: string;\n text: string;\n x: number;\n y: number;\n};\n\n// The state React Aria hands a half of the period selector's className.\ntype PeriodState = {\n isFocusVisible: boolean;\n isHovered: boolean;\n isSelected: boolean;\n};\n\n// What React Aria hands the input for each part of the time. Taken off the\n// component, for the reason src/segments gives.\ntype Segment = Parameters<NonNullable<Parameters<typeof RACDateInput>[0]['children']>>[0];\n\n// The state React Aria hands a segment's className.\ntype SegmentState = {\n isFocused: boolean;\n isFocusVisible: boolean;\n isHovered: boolean;\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';\ntype TimePickerProps<T extends TimeValue = TimeValue> = Omit<RACTimeFieldProps<T>, 'children' | 'className' | 'style'> & {\n /**\n * What the modal's dismissing action says. Left out, it is the word for\n * it in the I18nProvider's locale — \"Cancel\" in English.\n */\n cancelLabel?: string;\n /** A function may compute the class from the field's render state. */\n className?: RACTimeFieldProps<T>['className'];\n /**\n * What the modal's confirming action says. Left out, it is the word for\n * it in the I18nProvider's locale — \"OK\" in English.\n */\n confirmLabel?: string;\n /**\n * Where to portal the modal and its scrim. Defaults to the container of the\n * `ThemeScope` around it, which keeps the modal on that scope's tokens, or to\n * the end of `<body>` where there is none. A subtree themed through the\n * `themeScope` class has no container of its own, so point this inside it, or\n * the modal renders outside and keeps the page's tokens.\n */\n container?: Element;\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 defaultMode?: TimePickerMode;\n /** Whether the modal starts open, when it keeps its own state. */\n defaultOpen?: boolean;\n /** Supporting text under the field. */\n description?: string;\n /**\n * The input variant's headline, which also names the button that switches\n * the dial to it. Left out, it is the I18nProvider's locale's — \"Enter\n * time\" in English.\n */\n enterTimeLabel?: string;\n /**\n * The message shown instead of the description, which also marks the\n * field invalid.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label floats into the box's top once the field holds a\n * value, rather than sitting above it.\n * @default true\n */\n floatingLabel?: boolean;\n /** Whether the modal is open, when the call site holds the state. */\n isOpen?: boolean;\n /** What the field is for. Always rendered; never a placeholder. */\n label: string;\n /**\n * An icon at the box's leading end, in the page's 24dp size. An icon drawn\n * in `em` takes that size from the slot.\n */\n leadingIcon?: ReactNode;\n /** Called with the modal's new state when it opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * The dial's headline, which also names the clock button that opens the\n * modal, followed by the field's label, and the button that switches the\n * input variant back. Left out, it is the I18nProvider's locale's —\n * \"Select time\" in English.\n */\n selectTimeLabel?: string;\n /** A function may compute the style from the field's render state. */\n style?: RACTimeFieldProps<T>['style'];\n /**\n * Which of the text fields page's two boxes to draw.\n * @default 'filled'\n */\n variant?: FieldVariant;\n};\n\n/**\n * A picked time as the field's state takes it, which is always a date and\n * time: React Aria puts a bare time on today and takes the date off again on\n * the way out.\n */\nfunction asDateTime(time: TimeValue): CalendarDateTime | ZonedDateTime {\n return 'day' in time ? time : toCalendarDateTime(today(getLocalTimeZone()), time);\n}\n\n// An hour or a minute box's classes, from React Aria's render state. On the\n// dial the selected box is the one the dial follows; typed into, it is the\n// one with focus, which is what the page's input variant draws as focused.\nfunction boxClassName(isDial: boolean, isFollowed: boolean) {\n return (state: SegmentState) => {\n const isSelected = isDial ? isFollowed : state.isFocused;\n return stylex.props(styles.selector, !isDial && styles.selectorInput, state.isHovered && styles.selectorHovered, isSelected && styles.selectorSelected, isSelected && state.isHovered && styles.selectorSelectedHovered, isDial && state.isFocusVisible && styles.ring, !isDial && state.isFocused && styles.selectorInputFocused).className ?? '';\n };\n}\n\n// Built by a call rather than written inline at the prop, which is what\n// react-perf's no-jsx-as-prop is after — the same reason DatePicker builds\n// its trigger this way.\nfunction clockTrigger(isDisabled: boolean, isOpen: boolean, label: string, onPress: () => void) {\n return <ClockTrigger isDisabled={isDisabled} isOpen={isOpen} label={label} onPress={onPress} />;\n}\n\n// The clock button in the field's trailing slot. It is named by its own\n// words followed by the field's label, which is how React Aria names\n// DatePicker's calendar button, so two pickers on a form are told apart.\nfunction ClockTrigger({\n isDisabled,\n isOpen,\n label,\n onPress\n}: {\n isDisabled: boolean;\n isOpen: boolean;\n label: string;\n onPress: () => void;\n}) {\n const id = useId();\n const fieldLabel = useSlottedContext(LabelContext);\n return <RACButton aria-expanded={isOpen} aria-haspopup=\"dialog\" aria-label={label} aria-labelledby={fieldLabel?.id === undefined ? undefined : `${id} ${fieldLabel.id}`} className={triggerClassName} id={id} isDisabled={isDisabled} onPress={onPress}>\n <ClockGlyph {...stylex.props(picker.triggerGlyph)} />\n </RACButton>;\n}\n\n/** One label, placed a fraction of a turn round a ring. */\nfunction dialLabel(key: string, text: string, isSelected: boolean, turn: number, radius: number): DialLabel {\n const {\n x,\n y\n } = polar(turn, radius);\n return {\n isSelected,\n key,\n text,\n x,\n y\n };\n}\n\n/** A field's name as the locale writes it, opening with a capital. */\nfunction fieldName(names: Intl.DisplayNames, field: string, locale: string) {\n const name = names.of(field) ?? field;\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(field: null | TimeFieldState, placeholderValue: TimeValue | undefined): TimeValue {\n const held = field?.value;\n if (held !== null && held !== undefined && '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 reader's digits. */\nfunction labelsFor(part: TimePart, time: TimeValue, locale: string, twelveHour: boolean): DialLabel[] {\n const steps = Array.from({\n length: 12\n }, (_, step) => step);\n if (part === 'minute') {\n const digits = new Intl.NumberFormat(locale, {\n minimumIntegerDigits: 2\n });\n return steps.map(step => dialLabel(`m${step}`, digits.format(step * 5), time.minute === step * 5, step / 12, OUTER_RING));\n }\n const hours = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: twelveHour\n });\n if (twelveHour) {\n const offset = time.hour >= 12 ? 12 : 0;\n return steps.map(step => dialLabel(`h${step}`, partOf(hours, step + offset, 'hour'), time.hour % 12 === step, step / 12, OUTER_RING));\n }\n return [...steps.map(step => dialLabel(`h${step}`, partOf(hours, step, 'hour'), time.hour === step, step / 12, OUTER_RING)), ...steps.map(step => dialLabel(`h${step + 12}`, partOf(hours, step + 12, 'hour'), time.hour === step + 12, step / 12, INNER_RING))];\n}\n\n/** The part of a formatted time a formatter writes for one hour of the day. */\nfunction partOf(format: Intl.DateTimeFormat, hour: number, type: 'dayPeriod' | 'hour') {\n return format.formatToParts(new Date(2000, 0, 1, hour)).find(part => part.type === type)?.value ?? String(hour);\n}\n\n// The period selector's morning half, with no rule above it.\nfunction periodAmClassName(state: PeriodState) {\n return periodClassName(state, false);\n}\n\n// A half of the period selector, from React Aria's render state. The second\n// half draws the rule between the two.\nfunction periodClassName(state: PeriodState, divider: boolean) {\n return stylex.props(styles.periodButton, divider && styles.periodDivider, state.isHovered && styles.periodHovered, state.isSelected && styles.periodSelected, state.isSelected && state.isHovered && styles.periodSelectedHovered, state.isFocusVisible && styles.ring).className ?? '';\n}\n\n// Its afternoon half, under the rule between the two.\nfunction periodPmClassName(state: PeriodState) {\n return periodClassName(state, true);\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\n * at the field's end — on a dial, or typed into the modal's larger boxes.\n * The value is React Aria's — pass `value` with `onChange` to control it,\n * or `defaultValue` — as a `Time` from this package's `./date` subpath.\n *\n * ```tsx\n * import { Time } from '@kanso-labs/kanso-ui/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 reader's locale, through React Aria's\n * `I18nProvider`, unless `hourCycle` says otherwise.\n *\n * The call site's `className` and `style` land on the field as a whole,\n * which is the element a layout positions.\n */\nfunction TimePicker<T extends TimeValue>({\n cancelLabel,\n confirmLabel,\n container,\n defaultMode = 'dial',\n defaultOpen = false,\n description,\n enterTimeLabel,\n error,\n floatingLabel = true,\n isDisabled = false,\n isOpen,\n isReadOnly = false,\n label,\n leadingIcon,\n onOpenChange,\n selectTimeLabel,\n variant = 'filled',\n ...props\n}: RefAttributes<HTMLDivElement> & TimePickerProps<T>) {\n const validationBehavior = useFieldValidationBehavior();\n const messages = useMessages();\n const [ownOpen, setOwnOpen] = useState(defaultOpen);\n const open = isOpen ?? ownOpen;\n const changeOpen = useCallback((next: boolean) => {\n if (isOpen === undefined) {\n setOwnOpen(next);\n }\n onOpenChange?.(next);\n }, [isOpen, onOpenChange]);\n const openModal = useCallback(() => {\n changeOpen(true);\n }, [changeOpen]);\n return <RACTimeField<T> isDisabled={isDisabled} isInvalid={invalidFrom(error)} isReadOnly={isReadOnly} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel}\n // Always populated, for the reason TimeField's own comment gives.\n isPopulated isRequired={props.isRequired} label={label} leading={leadingIcon}\n // In the chrome's trailing slot, where DatePicker puts its calendar\n // button and for the same reasons.\n trailing={clockTrigger(isDisabled || isReadOnly, open, selectTimeLabel ?? messages.selectTime, openModal)} variant={variant}>\n <FieldSegments>\n <RACDateInput {...stylex.props(segmentStyles.input)}>\n {renderSegment}\n </RACDateInput>\n </FieldSegments>\n </FieldBox>\n <FieldMessage description={description} error={error} />\n <ModalOverlay isDismissable isOpen={open} onOpenChange={changeOpen}\n // oxlint-disable-next-line typescript/no-deprecated -- its replacement, UNSAFE_PortalProvider, is not exported by react-aria-components\n UNSTABLE_portalContainer={container} {...stylex.props(overlay.scrim, styles.centre)}>\n <Modal className=\"x1n1nwrg x1u6grsq xbhiib0 x16dv9tl xvkjz1l x1w1tqly x19pkqky xx61lck x13rsnn2 x1udv5rz x9f619 x139gbkf xi55695 xmz0i5r x193iq5w xysyzu8\">\n <TimePickerDialog cancelLabel={cancelLabel ?? messages.cancel} confirmLabel={confirmLabel ?? messages.confirm} defaultMode={defaultMode} enterTimeLabel={enterTimeLabel ?? messages.enterTime} fieldLabel={label} granularity={props.granularity === 'hour' ? 'hour' : 'minute'} hourCycle={props.hourCycle} placeholderValue={props.placeholderValue} selectTimeLabel={selectTimeLabel ?? messages.selectTime} />\n </Modal>\n </ModalOverlay>\n </RACTimeField>;\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.\n */\nfunction TimePickerDialog({\n cancelLabel,\n confirmLabel,\n defaultMode,\n enterTimeLabel,\n fieldLabel,\n granularity,\n hourCycle,\n placeholderValue,\n selectTimeLabel\n}: {\n cancelLabel: string;\n confirmLabel: string;\n defaultMode: TimePickerMode;\n enterTimeLabel: string;\n fieldLabel: string;\n granularity: 'hour' | 'minute';\n hourCycle: 12 | 24 | undefined;\n placeholderValue: TimeValue | undefined;\n selectTimeLabel: string;\n}) {\n const {\n locale\n } = useLocale();\n // The outer field's state: the modal reads the time from it and writes the\n // picked one back through it, so the field stays the one owner of its\n // value, controlled or not, and its onChange is React Aria's own.\n const field = useContext(TimeFieldStateContext);\n const [draft, setDraft] = useState(() => initialTime(field, placeholderValue));\n const [mode, setMode] = useState(defaultMode);\n const [part, setPart] = useState<TimePart>('hour');\n const headingId = useId();\n const labelContext = useSlottedContext(LabelContext);\n const boxes = useRef<HTMLDivElement>(null);\n const dragging = useRef(false);\n const twelveHour = usesTwelveHours(locale, hourCycle);\n const names = new Intl.DisplayNames(locale, {\n type: 'dateTimeField'\n });\n const periods = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true\n });\n const isAfternoon = draft.hour >= 12;\n const isDial = mode === 'dial';\n const showsMinutes = granularity === 'minute';\n const shown: TimePart = showsMinutes ? part : 'hour';\n const handle = shown === 'minute' ? polar(draft.minute / 60, OUTER_RING) : polar(draft.hour % 12 / 12, !twelveHour && draft.hour >= 12 ? INNER_RING : OUTER_RING);\n const focusBox = useCallback((type: TimePart) => {\n const box = boxes.current?.querySelector(`[data-type=\"${type}\"]`);\n if (box instanceof HTMLElement) {\n box.focus();\n }\n }, []);\n\n // Which box the dial follows, taken from the box that has focus — a press\n // on a box, a Tab into it, or React Aria moving on once an hour is typed.\n const followFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const type = event.target.getAttribute('data-type');\n if (type === 'hour' || type === 'minute') {\n setPart(type);\n }\n }, []);\n const changeDraft = useCallback((next: null | TimeValue) => {\n if (next !== null) {\n setDraft(next);\n }\n }, []);\n const pick = useCallback((event: PointerEvent<SVGSVGElement>) => {\n const box = event.currentTarget.getBoundingClientRect();\n const x = event.clientX - box.left - box.width / 2;\n const y = event.clientY - box.top - box.height / 2;\n const turn = (Math.atan2(x, -y) / (2 * Math.PI) + 1) % 1;\n const distance = Math.hypot(x, y) * DIAL / box.width;\n if (shown === 'minute') {\n setDraft(draft.set({\n minute: Math.round(turn * 60) % 60\n }));\n return;\n }\n const step = Math.round(turn * 12) % 12;\n if (twelveHour) {\n setDraft(draft.set({\n hour: step + (isAfternoon ? 12 : 0)\n }));\n return;\n }\n const inner = distance < (OUTER_RING + INNER_RING) / 2;\n setDraft(draft.set({\n hour: inner ? step + 12 : step\n }));\n }, [draft, isAfternoon, shown, twelveHour]);\n const startPicking = useCallback((event: PointerEvent<SVGSVGElement>) => {\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n // Keeps focus where it is: the dial is not a focus stop, and a press on\n // it would otherwise blur the box it is setting.\n event.preventDefault();\n try {\n event.currentTarget.setPointerCapture(event.pointerId);\n } catch {\n // A pointer the browser is not tracking has no capture to take — a\n // synthetic event in a test, where the moves land on the dial anyway.\n }\n dragging.current = true;\n pick(event);\n }, [pick]);\n const continuePicking = useCallback((event: PointerEvent<SVGSVGElement>) => {\n if (dragging.current) {\n pick(event);\n }\n }, [pick]);\n\n // An hour picked on the dial moves on to the minutes, as the page does.\n const stopPicking = useCallback(() => {\n if (!dragging.current) {\n return;\n }\n dragging.current = false;\n if (shown === 'hour' && showsMinutes) {\n setPart('minute');\n focusBox('minute');\n }\n }, [focusBox, shown, showsMinutes]);\n const switchMode = useCallback(() => {\n setMode(isDial ? 'input' : 'dial');\n focusBox(part);\n }, [focusBox, isDial, part]);\n const choosePeriod = useCallback((keys: Selection) => {\n const afternoon = keys !== 'all' && keys.has('pm');\n if (afternoon !== isAfternoon) {\n setDraft(draft.set({\n hour: draft.hour % 12 + (afternoon ? 12 : 0)\n }));\n }\n }, [draft, isAfternoon]);\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 const renderBox = useCallback((segment: Segment): ReactElement => {\n if (segment.type === 'hour' || segment.type === 'minute') {\n return <RACDateSegment className={boxClassName(isDial, shown === segment.type)} segment={segment} />;\n }\n if (segment.type === 'literal' && segment.text.replaceAll(INVISIBLE, '') !== '') {\n return <RACDateSegment {...{\n 0: {\n className: \"x6s0dn4 xwzfr38 x9f619 x139gbkf x3nfvp2 xjaampf xuyiek4 x1n2oj23 xvy4d1p xl56j7k x1iwmiir\"\n },\n 1: {\n className: \"x6s0dn4 x9f619 x139gbkf x3nfvp2 xvy4d1p xl56j7k xfl6q2h x1gi70vc xlzzeuu xh9quta xs5hucj\"\n }\n }[!!!isDial << 0]} segment={segment} />;\n }\n return <RACDateSegment hidden segment={segment} />;\n }, [isDial, shown]);\n const labels = labelsFor(shown, draft, locale, twelveHour);\n const between = shown === 'minute' && draft.minute % 5 !== 0;\n return <RACDialog aria-labelledby={labelContext?.id === undefined ? headingId : `${headingId} ${labelContext.id}`} {...stylex.props(overlay.modalDialog, styles.dialog)}>\n <Heading id={headingId} level={2} className=\"x9f619 x1w5n3ug xp6n8n2 xkucv67 x14hhc5u x12utw95 xvzb9hk x1ghz6dp xieb3on\">\n {isDial ? selectTimeLabel : enterTimeLabel}\n </Heading>\n <div className=\"x1cy8zhl x9f619 x78zum5 x1gka490 xl56j7k\">\n <div onFocus={followFocus} ref={boxes}>\n <RACTimeField aria-label={fieldLabel} granularity={granularity} hideTimeZone hourCycle={hourCycle} onChange={changeDraft} shouldForceLeadingZeros validationBehavior=\"aria\" value={draft}>\n <RACDateInput className=\"x6s0dn4 x9f619 x78zum5 x1t137rt\">\n {renderBox}\n </RACDateInput>\n </RACTimeField>\n {isDial ? null : <div aria-hidden=\"true\" className=\"x9f619 x1w5n3ug x78zum5 x1yicsit x1b35g6e x9d6959 x1665zp3 xwth0xh xybisxh x7suny0\">\n <span className=\"x9f619 xszbqgh\">\n {fieldName(names, 'hour', locale)}\n </span>\n {showsMinutes ? <span className=\"x9f619 xszbqgh\">\n {fieldName(names, 'minute', locale)}\n </span> : null}\n </div>}\n </div>\n {twelveHour ? <ToggleButtonGroup aria-label={names.of('dayPeriod')} disallowEmptySelection onSelectionChange={choosePeriod} orientation=\"vertical\" selectedKeys={isAfternoon ? AFTERNOON : MORNING} selectionMode=\"single\" {...{\n 0: {\n className: \"xwzfr38 x1fwvt7v x1xdvaa9 x1y0btm7 xmkeg23 x9f619 x78zum5 xdt5ytf x2lah0s xvni27 xb3r6kr\"\n },\n 1: {\n className: \"x1fwvt7v x1xdvaa9 x1y0btm7 xmkeg23 x9f619 x78zum5 xdt5ytf x2lah0s xvni27 xb3r6kr xfl6q2h\"\n }\n }[!!!isDial << 0]}>\n <ToggleButton className={periodAmClassName} id=\"am\">\n {partOf(periods, 9, 'dayPeriod')}\n </ToggleButton>\n <ToggleButton className={periodPmClassName} id=\"pm\">\n {partOf(periods, 21, 'dayPeriod')}\n </ToggleButton>\n </ToggleButtonGroup> : null}\n </div>\n {isDial ? <svg aria-hidden=\"true\" data-dial={shown} onPointerCancel={stopPicking} onPointerDown={startPicking} onPointerMove={continuePicking} onPointerUp={stopPicking} viewBox={`0 0 ${DIAL} ${DIAL}`} className=\"xrlp1an x9f619 x1ypdohk x1lliihq x2lah0s x1t9vceh xseo6mj xvueqy4 x5ve5x3 x87ps6o\">\n <circle cx={CENTRE} cy={CENTRE} r={CENTRE - 1} className=\"x1a930ss x1h8bevw xeutv01 x8jos32\" />\n <line x1={CENTRE} x2={handle.x} y1={CENTRE} y2={handle.y} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n <circle cx={CENTRE} cy={CENTRE} r={4} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n <circle cx={handle.x} cy={handle.y} data-handle=\"\" r={HANDLE} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n {between ? <circle cx={handle.x} cy={handle.y} r={2} className=\"xvlh3h9 x1bpb6vw\" /> : null}\n {labels.map(label => <text dominantBaseline=\"central\" key={label.key} textAnchor=\"middle\" x={label.x} y={label.y} {...{\n 0: {\n className: \"xti7fmr xmw301f x16svsjw x1848etk x1c52epr x1qn8t5l\"\n },\n 1: {\n className: \"x16svsjw x1848etk x1c52epr x1qn8t5l xvlh3h9 x1bpb6vw\"\n }\n }[!!label.isSelected << 0]}>\n {label.text}\n </text>)}\n </svg> : null}\n <div className=\"x6s0dn4 x9f619 x78zum5 x126z3so x1qughib x1yhnu8z\">\n <IconButton aria-label={isDial ? enterTimeLabel : selectTimeLabel} onPress={switchMode}>\n {isDial ? <KeyboardGlyph className=\"xlzyvqe x1lliihq x15vhz18\" /> : <ClockGlyph className=\"xlzyvqe x1lliihq x15vhz18\" />}\n </IconButton>\n <div className=\"x78zum5 x126z3so\">\n <Button slot=\"close\" variant=\"text\">\n {cancelLabel}\n </Button>\n <Button onPress={confirm} slot=\"close\" variant=\"text\">\n {confirmLabel}\n </Button>\n </div>\n </div>\n </RACDialog>;\n}\n\n/**\n * Whether the reader's clock has twelve hours. `hourCycle` decides when it\n * is given, as it does for React Aria's 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 new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).resolvedOptions().hour12 ?? false;\n}\nexport type { TimePickerMode, TimePickerProps };\nexport default TimePicker;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["c","_c","CalendarDateTime","ZonedDateTime","FocusEvent","PointerEvent","ReactElement","ReactNode","RefAttributes","TimeFieldProps","RACTimeFieldProps","Selection","TimeFieldState","TimeValue","getLocalTimeZone","Time","toCalendarDateTime","today","stylex","useCallback","useContext","useId","useRef","useState","Heading","LabelContext","Modal","ModalOverlay","Button","RACButton","DateInput","RACDateInput","DateSegment","RACDateSegment","Dialog","RACDialog","TimeField","RACTimeField","TimeFieldStateContext","ToggleButton","ToggleButtonGroup","useLocale","useSlottedContext","FieldVariant","FieldBox","FieldMessage","FieldSegments","fieldStyles","invalidFrom","useFieldValidationBehavior","ClockGlyph","KeyboardGlyph","useMessages","InsideModalContext","renderSegment","segmentStyles","mergeStatefulStyles","overlay","picker","triggerClassName","colors","motion","radii","shadows","sizing","spacing","stateLayerOpacity","typography","IconButton","FORCED_COLORS","DIAL","CENTRE","OUTER_RING","INNER_RING","HANDLE","MORNING","AFTERNOON","INVISIBLE","scaleIn","styles","centre","kGNEyG","k1xSpc","kjj79g","kmVPX3","$$css","dialog","periodButton","kWkggS","kMzoRj","kB7OPa","kMwMTN","kkrTdU","kCS8Yb","kzQI83","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","kogj98","kjBf7l","kInvED","k3XXqK","kMeerF","periodDivider","kLZC3w","kPef9Z","kEafiO","periodHovered","periodSelected","periodSelectedHovered","ring","selector","kZKoxP","kVAM5u","kaIpWk","ksu8eU","knGrYV","kcqcaj","kzqmXN","selectorHovered","selectorInput","selectorInputFocused","selectorSelected","selectorSelectedHovered","DialLabel","isSelected","key","text","x","y","PeriodState","isFocusVisible","isHovered","Segment","Parameters","NonNullable","SegmentState","isFocused","TimePart","TimePickerMode","TimePickerProps","Omit","T","cancelLabel","className","confirmLabel","container","Element","defaultMode","defaultOpen","description","enterTimeLabel","error","floatingLabel","isOpen","label","leadingIcon","onOpenChange","selectTimeLabel","style","variant","asDateTime","time","boxClassName","isDial","isFollowed","state","props","clockTrigger","isDisabled","onPress","ClockTrigger","t0","$","id","fieldLabel","t1","undefined","t2","Symbol","for","triggerGlyph","t3","dialLabel","turn","radius","polar","fieldName","names","Intl","DisplayNames","field","locale","name","of","charAt","toLocaleUpperCase","slice","initialTime","placeholderValue","held","value","labelsFor","part","twelveHour","steps","Array","from","length","_","step","digits","NumberFormat","minimumIntegerDigits","map","format","minute","hours","DateTimeFormat","hour","hour12","offset","partOf","type","formatToParts","Date","find","String","periodAmClassName","periodClassName","divider","periodPmClassName","angle","Math","PI","sin","cos","TimePicker","t4","isReadOnly","t5","t6","validationBehavior","messages","overModal","ownOpen","setOwnOpen","open","t7","next","changeOpen","t8","openModal","T0","t9","t10","root","t11","isRequired","t12","t13","selectTime","t14","t15","input","t16","t17","t18","scrim","scrimOverModal","t19","cancel","t20","confirm","t21","enterTime","t22","granularity","t23","t24","hourCycle","t25","t26","TimePickerDialog","draft","setDraft","mode","setMode","setPart","headingId","labelContext","boxes","dragging","usesTwelveHours","switchMode","periods","isAfternoon","showsMinutes","shown","handle","box","current","querySelector","HTMLElement","focus","focusBox","event","type_0","target","getAttribute","followFocus","changeDraft","event_0","box_0","currentTarget","getBoundingClientRect","clientX","left","width","clientY","top","height","atan2","distance","hypot","set","round","inner","pick","event_1","pointerType","button","preventDefault","setPointerCapture","pointerId","startPicking","event_2","continuePicking","stopPicking","keys","afternoon","has","choosePeriod","setValue","segment","replaceAll","0","1","renderBox","labels","between","modalDialog","_temp","resolvedOptions","stylex.props","_c","RACButton","props","RACTimeField","RACDateInput","RACDateSegment","RACDialog","Button"],"sources":["../../../src/components/time-picker/index.tsx"],"sourcesContent":["'use client';\n\nimport type { CalendarDateTime, ZonedDateTime } from '@internationalized/date';\nimport type { FocusEvent, PointerEvent, ReactElement, ReactNode, RefAttributes } from 'react';\nimport type { TimeFieldProps as RACTimeFieldProps, Selection, TimeFieldState, TimeValue } from 'react-aria-components';\nimport { getLocalTimeZone, Time, toCalendarDateTime, today } from '@internationalized/date';\nimport * as stylex from '@stylexjs/stylex';\nimport { useCallback, useContext, useId, useRef, useState } from 'react';\nimport { Heading, LabelContext, Modal, ModalOverlay, Button as RACButton, DateInput as RACDateInput, DateSegment as RACDateSegment, Dialog as RACDialog, TimeField as RACTimeField, TimeFieldStateContext, ToggleButton, ToggleButtonGroup, useLocale, useSlottedContext } from 'react-aria-components';\nimport type { FieldVariant } from '../../field';\nimport { FieldBox, FieldMessage, FieldSegments } from '../../field';\nimport { fieldStyles, invalidFrom, useFieldValidationBehavior } from '../../field/root';\nimport { ClockGlyph, KeyboardGlyph } from '../../glyphs';\nimport { useMessages } from '../../i18n';\nimport { InsideModalContext } from '../../overlay/modal';\nimport { renderSegment } from '../../segments';\nimport { segmentStyles } from '../../segments/styles';\nimport { mergeStatefulStyles } from '../../styles/merge';\nimport { overlay } from '../../styles/overlay';\nimport { picker, triggerClassName } from '../../styles/picker';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, motion, radii, shadows, sizing, spacing, stateLayerOpacity, typography } from '../../tokens/design.tokens.stylex';\nimport Button from '../button';\nimport IconButton from '../icon-button';\n\n// The time pickers page's picker: TimeField's segments, with a clock button\n// in the field's trailing slot that opens the page's modal over a scrim. A\n// time is typed into the field or picked in the modal, and the modal's OK is\n// 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 at a breakpoint: the container is centred\n// over the scrim on a phone and on a desktop alike.\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.\n//\n// **The boxes are a TimeField of their own**, React Aria's, inside the\n// modal: its hour and minute segments drawn as the page's boxes. That makes\n// them spinbuttons with React Aria's arrow keys, typing, digits and names in\n// the reader's locale, and it is the same accessible model in both variants,\n// which differ in how the boxes are drawn rather than in what they are. The\n// day period stays a segment for React Aria's sake but is hidden, and the\n// period selector beside the boxes takes its place, as a radio group of the\n// locale's two words for it. The dial is a pointer affordance over the\n// spinbuttons and is hidden from assistive technology: everything it sets,\n// the 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. The row above it follows the field's own order, as TimeField's\n// segments do, so in a right-to-left locale the period selector sits on the\n// left.\n//\n// Twenty-four hours put the day's second half on an inner ring, 12 at its top\n// and 00 at the outer ring's, with no period selector, and whether there is\n// one at all is the reader's locale or `hourCycle`, as it is in TimeField.\n\nconst FORCED_COLORS = '@media (forced-colors: active)';\n\n// The dial's geometry, in the units of its viewBox, which it draws at the\n// page's 256dp: the radius of the outer and inner rings of labels and of the\n// handle that sits on them. The inner ring sits far enough in that a handle on\n// it clears the 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 period selector's selection, hoisted so each is one stable array\n// rather than a fresh one per render.\nconst MORNING = ['am'];\nconst AFTERNOON = ['pm'];\n\n// React Aria's literal segments carry the locale's bidirectional marks beside\n// the punctuation, so a literal is drawn only when something else is left.\nconst INVISIBLE = /[\\s؜‎‏‪-‮⁦-⁩]/gu;\nconst scaleIn = \"xnirehn-B\";\nconst styles = {\n centre: {\n kGNEyG: \"x6s0dn4\",\n k1xSpc: \"x78zum5\",\n kjj79g: \"xl56j7k\",\n kmVPX3: \"x1a7rqcl\",\n $$css: true\n },\n dialog: {\n kmVPX3: \"x1apw6a7\",\n $$css: true\n },\n periodButton: {\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"xjbqb8w\",\n kMzoRj: \"xc342km\",\n kB7OPa: \"x9f619\",\n kMwMTN: \"x1w5n3ug\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x78zum5\",\n kCS8Yb: \"x1r8uery\",\n kzQI83: \"x1iyjqo2\",\n kMv6JI: \"x46eyla\",\n kGuDYH: \"x5ehqhr\",\n k63SB2: \"xrf6cl6\",\n kjj79g: \"xl56j7k\",\n kb6lSQ: \"x1g135zh\",\n kLWn49: \"x1ggk5va\",\n kogj98: \"x1ghz6dp\",\n kjBf7l: \"xrgy624\",\n kInvED: \"x2ssjo2\",\n k3XXqK: \"x1t137rt\",\n kMeerF: \"x1de99jn\",\n kmVPX3: \"x1717udv\",\n $$css: true\n },\n periodDivider: {\n kLZC3w: \"xrre44y\",\n kPef9Z: \"x13fuv20\",\n kEafiO: \"x178xt8z\",\n $$css: true\n },\n periodHovered: {\n kWkggS: \"x14noynh\",\n $$css: true\n },\n periodSelected: {\n kWkggS: \"xs6yvni x1jzqe4\",\n kMwMTN: \"x3cbcwg x1k5gbb1\",\n $$css: true\n },\n periodSelectedHovered: {\n kWkggS: \"x5nnyxq x1jzqe4\",\n $$css: true\n },\n ring: {\n k3XXqK: \"xaatb59\",\n $$css: true\n },\n selector: {\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"x1rrhr5q\",\n kZKoxP: \"xwzfr38\",\n kVAM5u: \"x1ylmb6m\",\n kaIpWk: \"x1xdvaa9\",\n ksu8eU: \"xx61lck\",\n kMzoRj: \"xc342km x13rsnn2\",\n kB7OPa: \"x9f619\",\n knGrYV: \"xbuiw85\",\n kMwMTN: \"x139gbkf\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x3nfvp2\",\n kMv6JI: \"xjaampf\",\n kGuDYH: \"xuyiek4\",\n kcqcaj: \"xss6m8b\",\n k63SB2: \"x1n2oj23\",\n kzqmXN: \"xszbqgh\",\n kjj79g: \"xl56j7k\",\n kb6lSQ: \"x1hxa6v5\",\n kLWn49: \"x1iwmiir\",\n kjBf7l: \"xrgy624\",\n kInvED: \"x1hl8ikr\",\n k3XXqK: \"x1t137rt\",\n kMeerF: \"x1de99jn\",\n $$css: true\n },\n selectorHovered: {\n kWkggS: \"xpae8dx\",\n $$css: true\n },\n selectorInput: {\n kZKoxP: \"xfl6q2h\",\n kkrTdU: \"x1ed109x\",\n kMv6JI: \"x1gi70vc\",\n kGuDYH: \"xlzzeuu\",\n k63SB2: \"xh9quta\",\n kb6lSQ: \"x148mp24\",\n kLWn49: \"xs5hucj\",\n $$css: true\n },\n selectorInputFocused: {\n kInvED: \"x2ssjo2\",\n k3XXqK: \"xaatb59\",\n $$css: true\n },\n selectorSelected: {\n kWkggS: \"xp89om9 x1jzqe4\",\n kMwMTN: \"xscdzaa x1k5gbb1\",\n $$css: true\n },\n selectorSelectedHovered: {\n kWkggS: \"xq1oky0 x1jzqe4\",\n $$css: true\n }\n};\n\n// One label on the dial, placed on its ring.\ntype DialLabel = {\n isSelected: boolean;\n key: string;\n text: string;\n x: number;\n y: number;\n};\n\n// The state React Aria hands a half of the period selector's className.\ntype PeriodState = {\n isFocusVisible: boolean;\n isHovered: boolean;\n isSelected: boolean;\n};\n\n// What React Aria hands the input for each part of the time. Taken off the\n// component, for the reason src/segments gives.\ntype Segment = Parameters<NonNullable<Parameters<typeof RACDateInput>[0]['children']>>[0];\n\n// The state React Aria hands a segment's className.\ntype SegmentState = {\n isFocused: boolean;\n isFocusVisible: boolean;\n isHovered: boolean;\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';\ntype TimePickerProps<T extends TimeValue = TimeValue> = Omit<RACTimeFieldProps<T>, 'children' | 'className' | 'style'> & {\n /**\n * What the modal's dismissing action says. Left out, it is the word for\n * it in the I18nProvider's locale — \"Cancel\" in English.\n */\n cancelLabel?: string;\n /** A function may compute the class from the field's render state. */\n className?: RACTimeFieldProps<T>['className'];\n /**\n * What the modal's confirming action says. Left out, it is the word for\n * it in the I18nProvider's locale — \"OK\" in English.\n */\n confirmLabel?: string;\n /**\n * Where to portal the modal and its scrim. Defaults to the container of the\n * `ThemeScope` around it, which keeps the modal on that scope's tokens, or to\n * the end of `<body>` where there is none. A subtree themed through the\n * `themeScope` class has no container of its own, so point this inside it, or\n * the modal renders outside and keeps the page's tokens.\n */\n container?: Element;\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 defaultMode?: TimePickerMode;\n /** Whether the modal starts open, when it keeps its own state. */\n defaultOpen?: boolean;\n /** Supporting text under the field. */\n description?: string;\n /**\n * The input variant's headline, which also names the button that switches\n * the dial to it. Left out, it is the I18nProvider's locale's — \"Enter\n * time\" in English.\n */\n enterTimeLabel?: string;\n /**\n * The message shown instead of the description, which also marks the\n * field invalid.\n *\n * Outside a `Form` the message line arrives with the message, so the\n * field grows when this does and moves what is under it. A `Form` holds\n * that space from the start; so does a permanent `description`.\n */\n error?: string;\n /**\n * Whether the label floats into the box's top once the field holds a\n * value, rather than sitting above it.\n * @default true\n */\n floatingLabel?: boolean;\n /** Whether the modal is open, when the call site holds the state. */\n isOpen?: boolean;\n /** What the field is for. Always rendered; never a placeholder. */\n label: string;\n /**\n * An icon at the box's leading end, in the page's 24dp size. An icon drawn\n * in `em` takes that size from the slot.\n */\n leadingIcon?: ReactNode;\n /** Called with the modal's new state when it opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * The dial's headline, which also names the clock button that opens the\n * modal, followed by the field's label, and the button that switches the\n * input variant back. Left out, it is the I18nProvider's locale's —\n * \"Select time\" in English.\n */\n selectTimeLabel?: string;\n /** A function may compute the style from the field's render state. */\n style?: RACTimeFieldProps<T>['style'];\n /**\n * Which of the text fields page's two boxes to draw.\n * @default 'filled'\n */\n variant?: FieldVariant;\n};\n\n/**\n * A picked time as the field's state takes it, which is always a date and\n * time: React Aria puts a bare time on today and takes the date off again on\n * the way out.\n */\nfunction asDateTime(time: TimeValue): CalendarDateTime | ZonedDateTime {\n return 'day' in time ? time : toCalendarDateTime(today(getLocalTimeZone()), time);\n}\n\n// An hour or a minute box's classes, from React Aria's render state. On the\n// dial the selected box is the one the dial follows; typed into, it is the\n// one with focus, which is what the page's input variant draws as focused.\nfunction boxClassName(isDial: boolean, isFollowed: boolean) {\n return (state: SegmentState) => {\n const isSelected = isDial ? isFollowed : state.isFocused;\n return stylex.props(styles.selector, !isDial && styles.selectorInput, state.isHovered && styles.selectorHovered, isSelected && styles.selectorSelected, isSelected && state.isHovered && styles.selectorSelectedHovered, isDial && state.isFocusVisible && styles.ring, !isDial && state.isFocused && styles.selectorInputFocused).className ?? '';\n };\n}\n\n// Built by a call rather than written inline at the prop, which is what\n// react-perf's no-jsx-as-prop is after — the same reason DatePicker builds\n// its trigger this way.\nfunction clockTrigger(isDisabled: boolean, isOpen: boolean, label: string, onPress: () => void) {\n return <ClockTrigger isDisabled={isDisabled} isOpen={isOpen} label={label} onPress={onPress} />;\n}\n\n// The clock button in the field's trailing slot. It is named by its own\n// words followed by the field's label, which is how React Aria names\n// DatePicker's calendar button, so two pickers on a form are told apart.\nfunction ClockTrigger({\n isDisabled,\n isOpen,\n label,\n onPress\n}: {\n isDisabled: boolean;\n isOpen: boolean;\n label: string;\n onPress: () => void;\n}) {\n const id = useId();\n const fieldLabel = useSlottedContext(LabelContext);\n return <RACButton aria-expanded={isOpen} aria-haspopup=\"dialog\" aria-label={label} aria-labelledby={fieldLabel?.id === undefined ? undefined : `${id} ${fieldLabel.id}`} className={triggerClassName} id={id} isDisabled={isDisabled} onPress={onPress}>\n <ClockGlyph {...stylex.props(picker.triggerGlyph)} />\n </RACButton>;\n}\n\n/** One label, placed a fraction of a turn round a ring. */\nfunction dialLabel(key: string, text: string, isSelected: boolean, turn: number, radius: number): DialLabel {\n const {\n x,\n y\n } = polar(turn, radius);\n return {\n isSelected,\n key,\n text,\n x,\n y\n };\n}\n\n/** A field's name as the locale writes it, opening with a capital. */\nfunction fieldName(names: Intl.DisplayNames, field: string, locale: string) {\n const name = names.of(field) ?? field;\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(field: null | TimeFieldState, placeholderValue: TimeValue | undefined): TimeValue {\n const held = field?.value;\n if (held !== null && held !== undefined && '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 reader's digits. */\nfunction labelsFor(part: TimePart, time: TimeValue, locale: string, twelveHour: boolean): DialLabel[] {\n const steps = Array.from({\n length: 12\n }, (_, step) => step);\n if (part === 'minute') {\n const digits = new Intl.NumberFormat(locale, {\n minimumIntegerDigits: 2\n });\n return steps.map(step => dialLabel(`m${step}`, digits.format(step * 5), time.minute === step * 5, step / 12, OUTER_RING));\n }\n const hours = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: twelveHour\n });\n if (twelveHour) {\n const offset = time.hour >= 12 ? 12 : 0;\n return steps.map(step => dialLabel(`h${step}`, partOf(hours, step + offset, 'hour'), time.hour % 12 === step, step / 12, OUTER_RING));\n }\n return [...steps.map(step => dialLabel(`h${step}`, partOf(hours, step, 'hour'), time.hour === step, step / 12, OUTER_RING)), ...steps.map(step => dialLabel(`h${step + 12}`, partOf(hours, step + 12, 'hour'), time.hour === step + 12, step / 12, INNER_RING))];\n}\n\n/** The part of a formatted time a formatter writes for one hour of the day. */\nfunction partOf(format: Intl.DateTimeFormat, hour: number, type: 'dayPeriod' | 'hour') {\n return format.formatToParts(new Date(2000, 0, 1, hour)).find(part => part.type === type)?.value ?? String(hour);\n}\n\n// The period selector's morning half, with no rule above it.\nfunction periodAmClassName(state: PeriodState) {\n return periodClassName(state, false);\n}\n\n// A half of the period selector, from React Aria's render state. The second\n// half draws the rule between the two.\nfunction periodClassName(state: PeriodState, divider: boolean) {\n return stylex.props(styles.periodButton, divider && styles.periodDivider, state.isHovered && styles.periodHovered, state.isSelected && styles.periodSelected, state.isSelected && state.isHovered && styles.periodSelectedHovered, state.isFocusVisible && styles.ring).className ?? '';\n}\n\n// Its afternoon half, under the rule between the two.\nfunction periodPmClassName(state: PeriodState) {\n return periodClassName(state, true);\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\n * at the field's end — on a dial, or typed into the modal's larger boxes.\n * The value is React Aria's — pass `value` with `onChange` to control it,\n * or `defaultValue` — as a `Time` from this package's `./date` subpath.\n *\n * ```tsx\n * import { Time } from '@kanso-labs/kanso-ui/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 reader's locale, through React Aria's\n * `I18nProvider`, unless `hourCycle` says otherwise.\n *\n * The call site's `className` and `style` land on the field as a whole,\n * which is the element a layout positions.\n */\nfunction TimePicker<T extends TimeValue>({\n cancelLabel,\n confirmLabel,\n container,\n defaultMode = 'dial',\n defaultOpen = false,\n description,\n enterTimeLabel,\n error,\n floatingLabel = true,\n isDisabled = false,\n isOpen,\n isReadOnly = false,\n label,\n leadingIcon,\n onOpenChange,\n selectTimeLabel,\n variant = 'filled',\n ...props\n}: RefAttributes<HTMLDivElement> & TimePickerProps<T>) {\n const validationBehavior = useFieldValidationBehavior();\n const messages = useMessages();\n const overModal = useContext(InsideModalContext);\n const [ownOpen, setOwnOpen] = useState(defaultOpen);\n const open = isOpen ?? ownOpen;\n const changeOpen = useCallback((next: boolean) => {\n if (isOpen === undefined) {\n setOwnOpen(next);\n }\n onOpenChange?.(next);\n }, [isOpen, onOpenChange]);\n const openModal = useCallback(() => {\n changeOpen(true);\n }, [changeOpen]);\n return <RACTimeField<T> isDisabled={isDisabled} isInvalid={invalidFrom(error)} isReadOnly={isReadOnly} validationBehavior={validationBehavior} {...props} {...mergeStatefulStyles(stylex.props(fieldStyles.root), props)}>\n <FieldBox floatingLabel={floatingLabel}\n // Always populated, for the reason TimeField's own comment gives.\n isPopulated isRequired={props.isRequired} label={label} leading={leadingIcon}\n // In the chrome's trailing slot, where DatePicker puts its calendar\n // button and for the same reasons.\n trailing={clockTrigger(isDisabled || isReadOnly, open, selectTimeLabel ?? messages.selectTime, openModal)} variant={variant}>\n <FieldSegments>\n <RACDateInput {...stylex.props(segmentStyles.input)}>\n {renderSegment}\n </RACDateInput>\n </FieldSegments>\n </FieldBox>\n <FieldMessage description={description} error={error} />\n <ModalOverlay isDismissable isOpen={open} onOpenChange={changeOpen}\n // oxlint-disable-next-line typescript/no-deprecated -- its replacement, UNSAFE_PortalProvider, is not exported by react-aria-components\n UNSTABLE_portalContainer={container} {...stylex.props(overlay.scrim, overModal && overlay.scrimOverModal, styles.centre)}>\n <Modal className=\"x1n1nwrg x1u6grsq xbhiib0 x16dv9tl xvkjz1l x1w1tqly x19pkqky xx61lck x13rsnn2 x1udv5rz x9f619 x139gbkf xi55695 xmz0i5r x193iq5w xysyzu8\">\n <TimePickerDialog cancelLabel={cancelLabel ?? messages.cancel} confirmLabel={confirmLabel ?? messages.confirm} defaultMode={defaultMode} enterTimeLabel={enterTimeLabel ?? messages.enterTime} fieldLabel={label} granularity={props.granularity === 'hour' ? 'hour' : 'minute'} hourCycle={props.hourCycle} placeholderValue={props.placeholderValue} selectTimeLabel={selectTimeLabel ?? messages.selectTime} />\n </Modal>\n </ModalOverlay>\n </RACTimeField>;\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.\n */\nfunction TimePickerDialog({\n cancelLabel,\n confirmLabel,\n defaultMode,\n enterTimeLabel,\n fieldLabel,\n granularity,\n hourCycle,\n placeholderValue,\n selectTimeLabel\n}: {\n cancelLabel: string;\n confirmLabel: string;\n defaultMode: TimePickerMode;\n enterTimeLabel: string;\n fieldLabel: string;\n granularity: 'hour' | 'minute';\n hourCycle: 12 | 24 | undefined;\n placeholderValue: TimeValue | undefined;\n selectTimeLabel: string;\n}) {\n const {\n locale\n } = useLocale();\n // The outer field's state: the modal reads the time from it and writes the\n // picked one back through it, so the field stays the one owner of its\n // value, controlled or not, and its onChange is React Aria's own.\n const field = useContext(TimeFieldStateContext);\n const [draft, setDraft] = useState(() => initialTime(field, placeholderValue));\n const [mode, setMode] = useState(defaultMode);\n const [part, setPart] = useState<TimePart>('hour');\n const headingId = useId();\n const labelContext = useSlottedContext(LabelContext);\n const boxes = useRef<HTMLDivElement>(null);\n const dragging = useRef(false);\n const twelveHour = usesTwelveHours(locale, hourCycle);\n const names = new Intl.DisplayNames(locale, {\n type: 'dateTimeField'\n });\n const periods = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true\n });\n const isAfternoon = draft.hour >= 12;\n const isDial = mode === 'dial';\n const showsMinutes = granularity === 'minute';\n const shown: TimePart = showsMinutes ? part : 'hour';\n const handle = shown === 'minute' ? polar(draft.minute / 60, OUTER_RING) : polar(draft.hour % 12 / 12, !twelveHour && draft.hour >= 12 ? INNER_RING : OUTER_RING);\n const focusBox = useCallback((type: TimePart) => {\n const box = boxes.current?.querySelector(`[data-type=\"${type}\"]`);\n if (box instanceof HTMLElement) {\n box.focus();\n }\n }, []);\n\n // Which box the dial follows, taken from the box that has focus — a press\n // on a box, a Tab into it, or React Aria moving on once an hour is typed.\n const followFocus = useCallback((event: FocusEvent<HTMLDivElement>) => {\n const type = event.target.getAttribute('data-type');\n if (type === 'hour' || type === 'minute') {\n setPart(type);\n }\n }, []);\n const changeDraft = useCallback((next: null | TimeValue) => {\n if (next !== null) {\n setDraft(next);\n }\n }, []);\n const pick = useCallback((event: PointerEvent<SVGSVGElement>) => {\n const box = event.currentTarget.getBoundingClientRect();\n const x = event.clientX - box.left - box.width / 2;\n const y = event.clientY - box.top - box.height / 2;\n const turn = (Math.atan2(x, -y) / (2 * Math.PI) + 1) % 1;\n const distance = Math.hypot(x, y) * DIAL / box.width;\n if (shown === 'minute') {\n setDraft(draft.set({\n minute: Math.round(turn * 60) % 60\n }));\n return;\n }\n const step = Math.round(turn * 12) % 12;\n if (twelveHour) {\n setDraft(draft.set({\n hour: step + (isAfternoon ? 12 : 0)\n }));\n return;\n }\n const inner = distance < (OUTER_RING + INNER_RING) / 2;\n setDraft(draft.set({\n hour: inner ? step + 12 : step\n }));\n }, [draft, isAfternoon, shown, twelveHour]);\n const startPicking = useCallback((event: PointerEvent<SVGSVGElement>) => {\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n // Keeps focus where it is: the dial is not a focus stop, and a press on\n // it would otherwise blur the box it is setting.\n event.preventDefault();\n try {\n event.currentTarget.setPointerCapture(event.pointerId);\n } catch {\n // A pointer the browser is not tracking has no capture to take — a\n // synthetic event in a test, where the moves land on the dial anyway.\n }\n dragging.current = true;\n pick(event);\n }, [pick]);\n const continuePicking = useCallback((event: PointerEvent<SVGSVGElement>) => {\n if (dragging.current) {\n pick(event);\n }\n }, [pick]);\n\n // An hour picked on the dial moves on to the minutes, as the page does.\n const stopPicking = useCallback(() => {\n if (!dragging.current) {\n return;\n }\n dragging.current = false;\n if (shown === 'hour' && showsMinutes) {\n setPart('minute');\n focusBox('minute');\n }\n }, [focusBox, shown, showsMinutes]);\n const switchMode = useCallback(() => {\n setMode(isDial ? 'input' : 'dial');\n focusBox(part);\n }, [focusBox, isDial, part]);\n const choosePeriod = useCallback((keys: Selection) => {\n const afternoon = keys !== 'all' && keys.has('pm');\n if (afternoon !== isAfternoon) {\n setDraft(draft.set({\n hour: draft.hour % 12 + (afternoon ? 12 : 0)\n }));\n }\n }, [draft, isAfternoon]);\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 const renderBox = useCallback((segment: Segment): ReactElement => {\n if (segment.type === 'hour' || segment.type === 'minute') {\n return <RACDateSegment className={boxClassName(isDial, shown === segment.type)} segment={segment} />;\n }\n if (segment.type === 'literal' && segment.text.replaceAll(INVISIBLE, '') !== '') {\n return <RACDateSegment {...{\n 0: {\n className: \"x6s0dn4 xwzfr38 x9f619 x139gbkf x3nfvp2 xjaampf xuyiek4 x1n2oj23 xvy4d1p xl56j7k x1iwmiir\"\n },\n 1: {\n className: \"x6s0dn4 x9f619 x139gbkf x3nfvp2 xvy4d1p xl56j7k xfl6q2h x1gi70vc xlzzeuu xh9quta xs5hucj\"\n }\n }[!!!isDial << 0]} segment={segment} />;\n }\n return <RACDateSegment hidden segment={segment} />;\n }, [isDial, shown]);\n const labels = labelsFor(shown, draft, locale, twelveHour);\n const between = shown === 'minute' && draft.minute % 5 !== 0;\n return <RACDialog aria-labelledby={labelContext?.id === undefined ? headingId : `${headingId} ${labelContext.id}`} {...stylex.props(overlay.modalDialog, styles.dialog)}>\n <Heading id={headingId} level={2} className=\"x9f619 x1w5n3ug xp6n8n2 xkucv67 x14hhc5u x12utw95 xvzb9hk x1ghz6dp xieb3on\">\n {isDial ? selectTimeLabel : enterTimeLabel}\n </Heading>\n <div className=\"x1cy8zhl x9f619 x78zum5 x1gka490 xl56j7k\">\n <div onFocus={followFocus} ref={boxes}>\n <RACTimeField aria-label={fieldLabel} granularity={granularity} hideTimeZone hourCycle={hourCycle} onChange={changeDraft} shouldForceLeadingZeros validationBehavior=\"aria\" value={draft}>\n <RACDateInput className=\"x6s0dn4 x9f619 x78zum5 x1t137rt\">\n {renderBox}\n </RACDateInput>\n </RACTimeField>\n {isDial ? null : <div aria-hidden=\"true\" className=\"x9f619 x1w5n3ug x78zum5 x1yicsit x1b35g6e x9d6959 x1665zp3 xwth0xh xybisxh x7suny0\">\n <span className=\"x9f619 xszbqgh\">\n {fieldName(names, 'hour', locale)}\n </span>\n {showsMinutes ? <span className=\"x9f619 xszbqgh\">\n {fieldName(names, 'minute', locale)}\n </span> : null}\n </div>}\n </div>\n {twelveHour ? <ToggleButtonGroup aria-label={names.of('dayPeriod')} disallowEmptySelection onSelectionChange={choosePeriod} orientation=\"vertical\" selectedKeys={isAfternoon ? AFTERNOON : MORNING} selectionMode=\"single\" {...{\n 0: {\n className: \"xwzfr38 x1fwvt7v x1xdvaa9 x1y0btm7 xmkeg23 x9f619 x78zum5 xdt5ytf x2lah0s xvni27 xb3r6kr\"\n },\n 1: {\n className: \"x1fwvt7v x1xdvaa9 x1y0btm7 xmkeg23 x9f619 x78zum5 xdt5ytf x2lah0s xvni27 xb3r6kr xfl6q2h\"\n }\n }[!!!isDial << 0]}>\n <ToggleButton className={periodAmClassName} id=\"am\">\n {partOf(periods, 9, 'dayPeriod')}\n </ToggleButton>\n <ToggleButton className={periodPmClassName} id=\"pm\">\n {partOf(periods, 21, 'dayPeriod')}\n </ToggleButton>\n </ToggleButtonGroup> : null}\n </div>\n {isDial ? <svg aria-hidden=\"true\" data-dial={shown} onPointerCancel={stopPicking} onPointerDown={startPicking} onPointerMove={continuePicking} onPointerUp={stopPicking} viewBox={`0 0 ${DIAL} ${DIAL}`} className=\"xrlp1an x9f619 x1ypdohk x1lliihq x2lah0s x1t9vceh xseo6mj xvueqy4 x5ve5x3 x87ps6o\">\n <circle cx={CENTRE} cy={CENTRE} r={CENTRE - 1} className=\"x1a930ss x1h8bevw xeutv01 x8jos32\" />\n <line x1={CENTRE} x2={handle.x} y1={CENTRE} y2={handle.y} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n <circle cx={CENTRE} cy={CENTRE} r={4} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n <circle cx={handle.x} cy={handle.y} data-handle=\"\" r={HANDLE} className=\"xrr0osq x1rqz208 x1i9vjva xbabvq0 x8pzrqk\" />\n {between ? <circle cx={handle.x} cy={handle.y} r={2} className=\"xvlh3h9 x1bpb6vw\" /> : null}\n {labels.map(label => <text dominantBaseline=\"central\" key={label.key} textAnchor=\"middle\" x={label.x} y={label.y} {...{\n 0: {\n className: \"xti7fmr xmw301f x16svsjw x1848etk x1c52epr x1qn8t5l\"\n },\n 1: {\n className: \"x16svsjw x1848etk x1c52epr x1qn8t5l xvlh3h9 x1bpb6vw\"\n }\n }[!!label.isSelected << 0]}>\n {label.text}\n </text>)}\n </svg> : null}\n <div className=\"x6s0dn4 x9f619 x78zum5 x126z3so x1qughib x1yhnu8z\">\n <IconButton aria-label={isDial ? enterTimeLabel : selectTimeLabel} onPress={switchMode}>\n {isDial ? <KeyboardGlyph className=\"xlzyvqe x1lliihq x15vhz18\" /> : <ClockGlyph className=\"xlzyvqe x1lliihq x15vhz18\" />}\n </IconButton>\n <div className=\"x78zum5 x126z3so\">\n <Button slot=\"close\" variant=\"text\">\n {cancelLabel}\n </Button>\n <Button onPress={confirm} slot=\"close\" variant=\"text\">\n {confirmLabel}\n </Button>\n </div>\n </div>\n </RACDialog>;\n}\n\n/**\n * Whether the reader's clock has twelve hours. `hourCycle` decides when it\n * is given, as it does for React Aria's 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 new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).resolvedOptions().hour12 ?? false;\n}\nexport type { TimePickerMode, TimePickerProps };\nexport default TimePicker;"],"mappings":"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"}
@@ -32,7 +32,9 @@ type TooltipProps = {
32
32
  label: ReactNode;
33
33
  /**
34
34
  * Which side of the element the tooltip opens on. It flips to the opposite
35
- * side on its own when there is no room.
35
+ * side on its own when there is no room. `start` and `end` follow the
36
+ * writing direction, so `end` is the right in English and the left in
37
+ * Arabic; `left` and `right` stay put in either.
36
38
  * @default 'top'
37
39
  */
38
40
  side?: TooltipSide;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","ReactNode","RefAttributes","ClassNameOrFunction","StyleOrFunction","TooltipRenderProps","TooltipTriggerComponentProps","stylex","Tooltip","RACTooltip","TooltipTrigger","OverlayAlign","OverlaySide","mergeStatefulStyles","overlay","placementOf","popupOrigin","colors","radii","spacing","typography","styles","container","kWkggS","kaIpWk","kGVxlE","kB7OPa","kMwMTN","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","ks0D6T","kAzted","k8WAf4","kg3NbH","$$css","DEFAULT_SIDE_OFFSET","TooltipAlign","TooltipProps","align","alignOffset","children","className","Element","label","side","TooltipSide","sideOffset","style","Omit","t0","$","props","ref","t1","t2","t3","undefined","t4","t5","_temp","t6","t7","state","popup","placement","Tooltip","_c","RACTooltip","stylex.props"],"sources":["../../../src/components/tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport type { ReactNode, RefAttributes } from 'react';\nimport type { ClassNameOrFunction, StyleOrFunction, TooltipRenderProps, TooltipTriggerComponentProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { Tooltip as RACTooltip, TooltipTrigger } from 'react-aria-components';\nimport type { OverlayAlign, OverlaySide } from '../../styles/overlay';\nimport { mergeStatefulStyles } from '../../styles/merge';\nimport { overlay, placementOf, popupOrigin } from '../../styles/overlay';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, radii, spacing, typography } from '../../tokens/design.tokens.stylex';\n\n// The tooltips page's plain tooltip: a 24dp container on inverse surface\n// with 8dp of padding, holding one line of supporting text in inverse on\n// surface at 12 over 16, which is the body-small role. The page names a\n// shape token for the container without giving its value, so the container\n// takes the smallest corner the library has — a 24dp box has room for no\n// more.\n//\n// The rich tooltip on the same page is a hover-triggered `Popover`, which is\n// where its subhead, supporting text and buttons already live; this one is\n// text and nothing else, which is why it takes its label as a string rather\n// than as parts.\n//\n// The entry is the overlay module's, shared with every anchored surface, and\n// so is the origin it grows from — the tooltip comes out of the thing it\n// describes. The surface itself is not: a tooltip inverts the page's colours\n// where a popover sits on a container role, so it draws its own, and it lies\n// flat. The plain tooltip's tokens give a container colour, a shape and the\n// text roles and no elevation, so the popup's shadow is taken off; it is the\n// rich tooltip that sits at level 2. The popup's forced-colours border\n// stays, since that mode paints the fill in the page's own colour.\nconst styles = {\n container: {\n kWkggS: \"x1c5gpgi\",\n kaIpWk: \"x1tfhd1\",\n kGVxlE: \"x1gnnqk1\",\n kB7OPa: \"x9f619\",\n kMwMTN: \"x1girmi0\",\n kMv6JI: \"x1yicsit\",\n kGuDYH: \"x1b35g6e\",\n k63SB2: \"x9d6959\",\n kb6lSQ: \"xwth0xh\",\n kLWn49: \"xybisxh\",\n ks0D6T: \"x10u2fgw\",\n kAzted: \"xjwf9q1\",\n k8WAf4: \"xmqoko8\",\n kg3NbH: \"xn60lsn\",\n $$css: true\n }\n};\n\n// The gap between the anchor and the tooltip. A number rather than a token,\n// because React Aria computes the position in JavaScript and so cannot read\n// a custom property — the same one place `Popover` spells a step out.\nconst DEFAULT_SIDE_OFFSET = 8;\n\n// The overlay module's, since which side a surface opens on is the same\n// question for every anchored overlay, and `Popover` and `Menu` ask it\n// there too. Aliased rather than re-declared so the names a call site\n// imports stay this component's.\ntype TooltipAlign = OverlayAlign;\ntype TooltipProps = {\n /**\n * Where the tooltip sits along the side it opens on.\n * @default 'center'\n */\n align?: TooltipAlign;\n /** Shifts the tooltip along that side, in pixels. */\n alignOffset?: number;\n /**\n * The element the tooltip describes, and nothing else. It has to be able\n * to take focus, since a tooltip a keyboard cannot reach is one most\n * people never see — wrap anything that cannot in `Focusable`, which this\n * package re-exports.\n */\n children?: ReactNode;\n /** A function may compute the class from the tooltip's render state. */\n className?: ClassNameOrFunction<TooltipRenderProps>;\n /**\n * Where to portal the tooltip. Defaults to the container of the `ThemeScope`\n * around it, which keeps the tooltip on that scope's tokens, or to the end of\n * `<body>` where there is none. A subtree themed through the `themeScope`\n * class has no container of its own, so point this inside it, or the tooltip\n * renders outside and keeps the page's tokens.\n */\n container?: Element;\n /** What the tooltip says. Text, since the page's plain tooltip is text. */\n label: ReactNode;\n /**\n * Which side of the element the tooltip opens on. It flips to the opposite\n * side on its own when there is no room.\n * @default 'top'\n */\n side?: TooltipSide;\n /** The gap between the element and the tooltip, in pixels. */\n sideOffset?: number;\n /** A function may compute the style from the tooltip's render state. */\n style?: StyleOrFunction<TooltipRenderProps>;\n} & Omit<TooltipTriggerComponentProps, 'children'>;\ntype TooltipSide = OverlaySide;\n\n/**\n * A label for the element it wraps, shown while that element is hovered or\n * focused — the tooltips page's plain tooltip. Its open state is React\n * Aria's: pass `isOpen` with `onOpenChange` to control it, `defaultOpen` to\n * let it keep its own, and `delay` and `closeDelay` for how long a pointer\n * has to rest before it appears and after it leaves.\n *\n * A tooltip is not a place to put anything a person has to read or reach:\n * it is skipped by touch entirely and dismissed by Escape, so what it says\n * has to be a repeat of what the element already means. Anything with a\n * button in it, or worth reading twice, is a `Popover`.\n *\n * The call site's `className` and `style` land on the tooltip itself.\n */\nfunction Tooltip({\n align = 'center',\n alignOffset,\n children,\n className,\n container,\n label,\n ref,\n side = 'top',\n sideOffset = DEFAULT_SIDE_OFFSET,\n style,\n ...props\n}: RefAttributes<HTMLDivElement> & TooltipProps) {\n return <TooltipTrigger {...props}>\n {children}\n <RACTooltip crossOffset={alignOffset} offset={sideOffset} placement={placementOf(side, align)}\n // The trigger renders no element of its own, so the ref lands on\n // the surface, as the call site's class and style do.\n ref={ref}\n // oxlint-disable-next-line typescript/no-deprecated -- its replacement, UNSAFE_PortalProvider, is not exported by react-aria-components\n UNSTABLE_portalContainer={container} {...mergeStatefulStyles((state: TooltipRenderProps) => stylex.props(overlay.popup, styles.container, popupOrigin(state.placement)), {\n className,\n style\n })}>\n {label}\n </RACTooltip>\n </TooltipTrigger>;\n}\nexport type { TooltipAlign, TooltipProps, TooltipSide };\nexport default Tooltip;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["c","_c","ReactNode","RefAttributes","ClassNameOrFunction","StyleOrFunction","TooltipRenderProps","TooltipTriggerComponentProps","stylex","Tooltip","RACTooltip","TooltipTrigger","OverlayAlign","OverlaySide","mergeStatefulStyles","overlay","placementOf","popupOrigin","colors","radii","spacing","typography","styles","container","kWkggS","kaIpWk","kGVxlE","kB7OPa","kMwMTN","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","ks0D6T","kAzted","k8WAf4","kg3NbH","$$css","DEFAULT_SIDE_OFFSET","TooltipAlign","TooltipProps","align","alignOffset","children","className","Element","label","side","TooltipSide","sideOffset","style","Omit","t0","$","props","ref","t1","t2","t3","undefined","t4","t5","_temp","t6","t7","state","popup","placement","Tooltip","_c","RACTooltip","stylex.props"],"sources":["../../../src/components/tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport type { ReactNode, RefAttributes } from 'react';\nimport type { ClassNameOrFunction, StyleOrFunction, TooltipRenderProps, TooltipTriggerComponentProps } from 'react-aria-components';\nimport * as stylex from '@stylexjs/stylex';\nimport { Tooltip as RACTooltip, TooltipTrigger } from 'react-aria-components';\nimport type { OverlayAlign, OverlaySide } from '../../styles/overlay';\nimport { mergeStatefulStyles } from '../../styles/merge';\nimport { overlay, placementOf, popupOrigin } from '../../styles/overlay';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, radii, spacing, typography } from '../../tokens/design.tokens.stylex';\n\n// The tooltips page's plain tooltip: a 24dp container on inverse surface\n// with 8dp of padding, holding one line of supporting text in inverse on\n// surface at 12 over 16, which is the body-small role. The page names a\n// shape token for the container without giving its value, so the container\n// takes the smallest corner the library has — a 24dp box has room for no\n// more.\n//\n// The rich tooltip on the same page is a hover-triggered `Popover`, which is\n// where its subhead, supporting text and buttons already live; this one is\n// text and nothing else, which is why it takes its label as a string rather\n// than as parts.\n//\n// The entry is the overlay module's, shared with every anchored surface, and\n// so is the origin it grows from — the tooltip comes out of the thing it\n// describes. The surface itself is not: a tooltip inverts the page's colours\n// where a popover sits on a container role, so it draws its own, and it lies\n// flat. The plain tooltip's tokens give a container colour, a shape and the\n// text roles and no elevation, so the popup's shadow is taken off; it is the\n// rich tooltip that sits at level 2. The popup's forced-colours border\n// stays, since that mode paints the fill in the page's own colour.\nconst styles = {\n container: {\n kWkggS: \"x1c5gpgi\",\n kaIpWk: \"x1tfhd1\",\n kGVxlE: \"x1gnnqk1\",\n kB7OPa: \"x9f619\",\n kMwMTN: \"x1girmi0\",\n kMv6JI: \"x1yicsit\",\n kGuDYH: \"x1b35g6e\",\n k63SB2: \"x9d6959\",\n kb6lSQ: \"xwth0xh\",\n kLWn49: \"xybisxh\",\n ks0D6T: \"x10u2fgw\",\n kAzted: \"xjwf9q1\",\n k8WAf4: \"xmqoko8\",\n kg3NbH: \"xn60lsn\",\n $$css: true\n }\n};\n\n// The gap between the anchor and the tooltip. A number rather than a token,\n// because React Aria computes the position in JavaScript and so cannot read\n// a custom property — the same one place `Popover` spells a step out.\nconst DEFAULT_SIDE_OFFSET = 8;\n\n// The overlay module's, since which side a surface opens on is the same\n// question for every anchored overlay, and `Popover` and `Menu` ask it\n// there too. Aliased rather than re-declared so the names a call site\n// imports stay this component's.\ntype TooltipAlign = OverlayAlign;\ntype TooltipProps = {\n /**\n * Where the tooltip sits along the side it opens on.\n * @default 'center'\n */\n align?: TooltipAlign;\n /** Shifts the tooltip along that side, in pixels. */\n alignOffset?: number;\n /**\n * The element the tooltip describes, and nothing else. It has to be able\n * to take focus, since a tooltip a keyboard cannot reach is one most\n * people never see — wrap anything that cannot in `Focusable`, which this\n * package re-exports.\n */\n children?: ReactNode;\n /** A function may compute the class from the tooltip's render state. */\n className?: ClassNameOrFunction<TooltipRenderProps>;\n /**\n * Where to portal the tooltip. Defaults to the container of the `ThemeScope`\n * around it, which keeps the tooltip on that scope's tokens, or to the end of\n * `<body>` where there is none. A subtree themed through the `themeScope`\n * class has no container of its own, so point this inside it, or the tooltip\n * renders outside and keeps the page's tokens.\n */\n container?: Element;\n /** What the tooltip says. Text, since the page's plain tooltip is text. */\n label: ReactNode;\n /**\n * Which side of the element the tooltip opens on. It flips to the opposite\n * side on its own when there is no room. `start` and `end` follow the\n * writing direction, so `end` is the right in English and the left in\n * Arabic; `left` and `right` stay put in either.\n * @default 'top'\n */\n side?: TooltipSide;\n /** The gap between the element and the tooltip, in pixels. */\n sideOffset?: number;\n /** A function may compute the style from the tooltip's render state. */\n style?: StyleOrFunction<TooltipRenderProps>;\n} & Omit<TooltipTriggerComponentProps, 'children'>;\ntype TooltipSide = OverlaySide;\n\n/**\n * A label for the element it wraps, shown while that element is hovered or\n * focused — the tooltips page's plain tooltip. Its open state is React\n * Aria's: pass `isOpen` with `onOpenChange` to control it, `defaultOpen` to\n * let it keep its own, and `delay` and `closeDelay` for how long a pointer\n * has to rest before it appears and after it leaves.\n *\n * A tooltip is not a place to put anything a person has to read or reach:\n * it is skipped by touch entirely and dismissed by Escape, so what it says\n * has to be a repeat of what the element already means. Anything with a\n * button in it, or worth reading twice, is a `Popover`.\n *\n * The call site's `className` and `style` land on the tooltip itself.\n */\nfunction Tooltip({\n align = 'center',\n alignOffset,\n children,\n className,\n container,\n label,\n ref,\n side = 'top',\n sideOffset = DEFAULT_SIDE_OFFSET,\n style,\n ...props\n}: RefAttributes<HTMLDivElement> & TooltipProps) {\n return <TooltipTrigger {...props}>\n {children}\n <RACTooltip crossOffset={alignOffset} offset={sideOffset} placement={placementOf(side, align)}\n // The trigger renders no element of its own, so the ref lands on\n // the surface, as the call site's class and style do.\n ref={ref}\n // oxlint-disable-next-line typescript/no-deprecated -- its replacement, UNSAFE_PortalProvider, is not exported by react-aria-components\n UNSTABLE_portalContainer={container} {...mergeStatefulStyles((state: TooltipRenderProps) => stylex.props(overlay.popup, styles.container, popupOrigin(state.placement)), {\n className,\n style\n })}>\n {label}\n </RACTooltip>\n </TooltipTrigger>;\n}\nexport type { TooltipAlign, TooltipProps, TooltipSide };\nexport default Tooltip;"],"mappings":"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"}
@@ -39,6 +39,16 @@ type TreeLoadMoreProps = Omit<TreeLoadMoreItemProps, 'children'> & {
39
39
  type TreeProps$1<T extends object = object> = {
40
40
  /** A function may compute the class from the tree's render state. */
41
41
  className?: TreeProps<T>['className'];
42
+ /**
43
+ * How a press selects. `toggle` draws a checkbox on every row, and a press
44
+ * adds that row to the selection or takes it out. `replace` draws none, a
45
+ * press makes that row the selection, and the arrow keys carry the
46
+ * selection with the focus; where rows also take an action, a click
47
+ * selects and a double click acts. Left out, a `single` tree replaces and
48
+ * any other toggles, since a single choice drawn as checkboxes unticks one
49
+ * box whenever another is ticked.
50
+ */
51
+ selectionBehavior?: TreeProps<T>['selectionBehavior'];
42
52
  /**
43
53
  * What each row's selection checkbox is called, for a screen reader. The
44
54
  * row's own text is what names the row; this names the box inside it.
@@ -48,7 +58,7 @@ type TreeProps$1<T extends object = object> = {
48
58
  selectLabel?: string;
49
59
  /** A function may compute the style from the tree's render state. */
50
60
  style?: TreeProps<T>['style'];
51
- } & Omit<TreeProps<T>, 'className' | 'style'>;
61
+ } & Omit<TreeProps<T>, 'className' | 'selectionBehavior' | 'style'>;
52
62
  type TreeSectionProps<T extends object = object> = Omit<RACTreeSectionProps<T>, 'children'> & {
53
63
  /**
54
64
  * The rows in the section. A section built from data puts React Aria's
@@ -66,7 +76,9 @@ type TreeSectionProps<T extends object = object> = Omit<RACTreeSectionProps<T>,
66
76
  * A list whose rows nest. Which rows are open is React Aria's: pass
67
77
  * `expandedKeys` with `onExpandedChange` to control it, or
68
78
  * `defaultExpandedKeys` to let it keep its own. Selection is React Aria's
69
- * too — set `selectionMode` to `single` or `multiple`.
79
+ * too — set `selectionMode` to `single` or `multiple`. A `multiple` tree
80
+ * draws a checkbox on every row and a `single` one draws none, as a `List`
81
+ * does; `selectionBehavior` overrides either.
70
82
  *
71
83
  * ```tsx
72
84
  * <Tree aria-label="Label">
@@ -83,7 +95,7 @@ type TreeSectionProps<T extends object = object> = Omit<RACTreeSectionProps<T>,
83
95
  * The call site's `className` and `style` land on the container, which is
84
96
  * the element a layout positions.
85
97
  */
86
- declare function Tree$1<T extends object>({ selectLabel, ...props }: RefAttributes<HTMLDivElement> & TreeProps$1<T>): import("react").JSX.Element;
98
+ declare function Tree$1<T extends object>({ selectionBehavior, selectLabel, ...props }: RefAttributes<HTMLDivElement> & TreeProps$1<T>): import("react").JSX.Element;
87
99
  declare namespace Tree$1 {
88
100
  var Item: typeof TreeItem$1;
89
101
  var LoadMore: typeof TreeLoadMore;
@@ -83,7 +83,9 @@ function textValueFor(textValue, headline) {
83
83
  * A list whose rows nest. Which rows are open is React Aria's: pass
84
84
  * `expandedKeys` with `onExpandedChange` to control it, or
85
85
  * `defaultExpandedKeys` to let it keep its own. Selection is React Aria's
86
- * too — set `selectionMode` to `single` or `multiple`.
86
+ * too — set `selectionMode` to `single` or `multiple`. A `multiple` tree
87
+ * draws a checkbox on every row and a `single` one draws none, as a `List`
88
+ * does; `selectionBehavior` overrides either.
87
89
  *
88
90
  * ```tsx
89
91
  * <Tree aria-label="Label">
@@ -101,14 +103,18 @@ function textValueFor(textValue, headline) {
101
103
  * the element a layout positions.
102
104
  */
103
105
  function Tree$1(t0) {
104
- const $ = c(14);
106
+ const $ = c(17);
105
107
  let T0;
106
108
  let T1;
109
+ let props;
110
+ let selectionBehavior;
107
111
  let t1;
108
112
  let t2;
109
113
  let t3;
110
114
  if ($[0] !== t0) {
111
- const { selectLabel, ...props } = t0;
115
+ const { selectionBehavior: t4, selectLabel, ...t5 } = t0;
116
+ selectionBehavior = t4;
117
+ props = t5;
112
118
  T1 = SelectLabelContext;
113
119
  t3 = selectLabel;
114
120
  T0 = Tree;
@@ -117,39 +123,46 @@ function Tree$1(t0) {
117
123
  $[0] = t0;
118
124
  $[1] = T0;
119
125
  $[2] = T1;
120
- $[3] = t1;
121
- $[4] = t2;
122
- $[5] = t3;
126
+ $[3] = props;
127
+ $[4] = selectionBehavior;
128
+ $[5] = t1;
129
+ $[6] = t2;
130
+ $[7] = t3;
123
131
  } else {
124
132
  T0 = $[1];
125
133
  T1 = $[2];
126
- t1 = $[3];
127
- t2 = $[4];
128
- t3 = $[5];
134
+ props = $[3];
135
+ selectionBehavior = $[4];
136
+ t1 = $[5];
137
+ t2 = $[6];
138
+ t3 = $[7];
129
139
  }
130
- let t4;
131
- if ($[6] !== T0 || $[7] !== t1 || $[8] !== t2) {
132
- t4 = /* @__PURE__ */ jsx(T0, {
140
+ const t4 = selectionBehavior ?? (props.selectionMode === "single" ? "replace" : "toggle");
141
+ let t5;
142
+ if ($[8] !== T0 || $[9] !== t1 || $[10] !== t2 || $[11] !== t4) {
143
+ t5 = /* @__PURE__ */ jsx(T0, {
133
144
  ...t1,
134
- ...t2
145
+ ...t2,
146
+ selectionBehavior: t4
135
147
  });
136
- $[6] = T0;
137
- $[7] = t1;
138
- $[8] = t2;
139
- $[9] = t4;
140
- } else t4 = $[9];
141
- let t5;
142
- if ($[10] !== T1 || $[11] !== t3 || $[12] !== t4) {
143
- t5 = /* @__PURE__ */ jsx(T1, {
148
+ $[8] = T0;
149
+ $[9] = t1;
150
+ $[10] = t2;
151
+ $[11] = t4;
152
+ $[12] = t5;
153
+ } else t5 = $[12];
154
+ let t6;
155
+ if ($[13] !== T1 || $[14] !== t3 || $[15] !== t5) {
156
+ t6 = /* @__PURE__ */ jsx(T1, {
144
157
  value: t3,
145
- children: t4
158
+ children: t5
146
159
  });
147
- $[10] = T1;
148
- $[11] = t3;
149
- $[12] = t4;
150
- $[13] = t5;
151
- } else t5 = $[13];
152
- return t5;
160
+ $[13] = T1;
161
+ $[14] = t3;
162
+ $[15] = t5;
163
+ $[16] = t6;
164
+ } else t6 = $[16];
165
+ return t6;
153
166
  }
154
167
  /**
155
168
  * A named group of rows. `header` names it, and is what a screen reader