@kanso-labs/kanso-ui 0.44.0 → 0.44.1

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.
@@ -11,7 +11,6 @@ import { overlay } from "../../styles/overlay.js";
11
11
  import { picker, triggerClassName } from "../../styles/picker.js";
12
12
  import { segmentStyles } from "../../segments/styles.js";
13
13
  import { renderSegment } from "../../segments/index.js";
14
- import { InsideModalContext } from "../../overlay/modal.js";
15
14
  import { c } from "react/compiler-runtime";
16
15
  import { useContext, useId, useRef, useState } from "react";
17
16
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -284,7 +283,7 @@ function polar(turn, radius) {
284
283
  * which is the element a layout positions.
285
284
  */
286
285
  function TimePicker(t0) {
287
- const $ = c(52);
286
+ const $ = c(50);
288
287
  const { cancelLabel, confirmLabel, container, defaultMode: t1, defaultOpen: t2, description, enterTimeLabel, error, floatingLabel: t3, isDisabled: t4, isOpen, isReadOnly: t5, label, leadingIcon, onOpenChange, selectTimeLabel, variant: t6, ...props$1 } = t0;
289
288
  const defaultMode = t1 === void 0 ? "dial" : t1;
290
289
  const defaultOpen = t2 === void 0 ? false : t2;
@@ -294,7 +293,6 @@ function TimePicker(t0) {
294
293
  const variant = t6 === void 0 ? "filled" : t6;
295
294
  const validationBehavior = useFieldValidationBehavior();
296
295
  const messages = useMessages();
297
- const overModal = useContext(InsideModalContext);
298
296
  const [ownOpen, setOwnOpen] = useState(defaultOpen);
299
297
  const open = isOpen ?? ownOpen;
300
298
  let t7;
@@ -376,18 +374,17 @@ function TimePicker(t0) {
376
374
  $[22] = t17;
377
375
  } else t17 = $[22];
378
376
  let t18;
379
- if ($[23] !== overModal) {
380
- t18 = props(overlay.scrim, overModal && overlay.scrimOverModal, styles.centre);
381
- $[23] = overModal;
382
- $[24] = t18;
383
- } else t18 = $[24];
377
+ if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
378
+ t18 = props(overlay.scrim, styles.centre);
379
+ $[23] = t18;
380
+ } else t18 = $[23];
384
381
  const t19 = cancelLabel ?? messages.cancel;
385
382
  const t20 = confirmLabel ?? messages.confirm;
386
383
  const t21 = enterTimeLabel ?? messages.enterTime;
387
384
  const t22 = props$1.granularity === "hour" ? "hour" : "minute";
388
385
  const t23 = selectTimeLabel ?? messages.selectTime;
389
386
  let t24;
390
- if ($[25] !== defaultMode || $[26] !== label || $[27] !== props$1.hourCycle || $[28] !== props$1.placeholderValue || $[29] !== t19 || $[30] !== t20 || $[31] !== t21 || $[32] !== t22 || $[33] !== t23) {
387
+ if ($[24] !== defaultMode || $[25] !== label || $[26] !== props$1.hourCycle || $[27] !== props$1.placeholderValue || $[28] !== t19 || $[29] !== t20 || $[30] !== t21 || $[31] !== t22 || $[32] !== t23) {
391
388
  t24 = /* @__PURE__ */ jsx(Modal, {
392
389
  className: "x1n1nwrg x1u6grsq xbhiib0 x16dv9tl xvkjz1l x1w1tqly x19pkqky xx61lck x13rsnn2 x1udv5rz x9f619 x139gbkf xi55695 xmz0i5r x193iq5w xysyzu8",
393
390
  children: /* @__PURE__ */ jsx(TimePickerDialog, {
@@ -402,19 +399,19 @@ function TimePicker(t0) {
402
399
  selectTimeLabel: t23
403
400
  })
404
401
  });
405
- $[25] = defaultMode;
406
- $[26] = label;
407
- $[27] = props$1.hourCycle;
408
- $[28] = props$1.placeholderValue;
409
- $[29] = t19;
410
- $[30] = t20;
411
- $[31] = t21;
412
- $[32] = t22;
413
- $[33] = t23;
414
- $[34] = t24;
415
- } else t24 = $[34];
402
+ $[24] = defaultMode;
403
+ $[25] = label;
404
+ $[26] = props$1.hourCycle;
405
+ $[27] = props$1.placeholderValue;
406
+ $[28] = t19;
407
+ $[29] = t20;
408
+ $[30] = t21;
409
+ $[31] = t22;
410
+ $[32] = t23;
411
+ $[33] = t24;
412
+ } else t24 = $[33];
416
413
  let t25;
417
- if ($[35] !== changeOpen || $[36] !== container || $[37] !== open || $[38] !== t18 || $[39] !== t24) {
414
+ if ($[34] !== changeOpen || $[35] !== container || $[36] !== open || $[37] !== t24) {
418
415
  t25 = /* @__PURE__ */ jsx(ModalOverlay, {
419
416
  isDismissable: true,
420
417
  isOpen: open,
@@ -423,15 +420,14 @@ function TimePicker(t0) {
423
420
  ...t18,
424
421
  children: t24
425
422
  });
426
- $[35] = changeOpen;
427
- $[36] = container;
428
- $[37] = open;
429
- $[38] = t18;
430
- $[39] = t24;
431
- $[40] = t25;
432
- } else t25 = $[40];
423
+ $[34] = changeOpen;
424
+ $[35] = container;
425
+ $[36] = open;
426
+ $[37] = t24;
427
+ $[38] = t25;
428
+ } else t25 = $[38];
433
429
  let t26;
434
- if ($[41] !== T0 || $[42] !== isDisabled || $[43] !== isReadOnly || $[44] !== props$1 || $[45] !== t10 || $[46] !== t16 || $[47] !== t17 || $[48] !== t25 || $[49] !== t9 || $[50] !== validationBehavior) {
430
+ if ($[39] !== T0 || $[40] !== isDisabled || $[41] !== isReadOnly || $[42] !== props$1 || $[43] !== t10 || $[44] !== t16 || $[45] !== t17 || $[46] !== t25 || $[47] !== t9 || $[48] !== validationBehavior) {
435
431
  t26 = /* @__PURE__ */ jsxs(T0, {
436
432
  isDisabled,
437
433
  isInvalid: t9,
@@ -445,18 +441,18 @@ function TimePicker(t0) {
445
441
  t25
446
442
  ]
447
443
  });
448
- $[41] = T0;
449
- $[42] = isDisabled;
450
- $[43] = isReadOnly;
451
- $[44] = props$1;
452
- $[45] = t10;
453
- $[46] = t16;
454
- $[47] = t17;
455
- $[48] = t25;
456
- $[49] = t9;
457
- $[50] = validationBehavior;
458
- $[51] = t26;
459
- } else t26 = $[51];
444
+ $[39] = T0;
445
+ $[40] = isDisabled;
446
+ $[41] = isReadOnly;
447
+ $[42] = props$1;
448
+ $[43] = t10;
449
+ $[44] = t16;
450
+ $[45] = t17;
451
+ $[46] = t25;
452
+ $[47] = t9;
453
+ $[48] = validationBehavior;
454
+ $[49] = t26;
455
+ } else t26 = $[49];
460
456
  return t26;
461
457
  }
462
458
  /**
@@ -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","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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"}
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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"}
@@ -28,7 +28,7 @@ function ControlDescription(t0) {
28
28
  let t3;
29
29
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
30
30
  t2 = props(controlStyles.messages);
31
- t3 = props(fieldChromeStyles.message, fieldChromeStyles.messageLine);
31
+ t3 = props(fieldChromeStyles.message, fieldChromeStyles.messageLine, fieldChromeStyles.messageIndent);
32
32
  $[0] = t2;
33
33
  $[1] = t3;
34
34
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ReactNode","SyntheticEvent","stylex","Text","RequiredMark","fieldChromeStyles","controlStyles","ControlDescriptionProps","children","isDisabled","ControlLabelProps","isRequired","state","ControlLabelState","isReadOnly","ControlDescription","t0","$","_c","t1","undefined","t2","t3","Symbol","for","props","messages","message","messageLine","t4","messageDisabled","t5","INTERACTIVE","ControlLabel","label","labelReadOnly","labelDisabled","keepToInteractive","event","HTMLSpanElement","currentTarget","target","interactive","Element","closest","contains","stopPropagation","_c","stylex.props"],"sources":["../../src/control/index.tsx"],"sourcesContent":["import type { ReactNode, SyntheticEvent } from 'react';\nimport * as stylex from '@stylexjs/stylex';\nimport { Text } from 'react-aria-components';\nimport { RequiredMark } from '../field';\nimport { fieldChromeStyles } from '../field/styles';\nimport { controlStyles } from './styles';\ntype ControlDescriptionProps = {\n /** The hint. Nothing renders when there is none. */\n children: string | undefined;\n /**\n * Whether the option is disabled, by itself or by its group, which fades\n * the hint with the option's label.\n * @default false\n */\n isDisabled?: boolean;\n};\ntype ControlLabelProps = {\n /** The label's text. Nothing renders when there is none. */\n children: ReactNode;\n /**\n * Whether the control must be chosen, which ends the label in the asterisk\n * every required field's label ends in.\n * @default false\n */\n isRequired?: boolean;\n /** The render state React Aria hands the component. */\n state: ControlLabelState;\n};\n\n/**\n * The state a label reads. Each of React Aria's three render states carries\n * more than this, and this is the part all three share.\n */\ntype ControlLabelState = {\n isDisabled: boolean;\n isReadOnly: boolean;\n};\n\n/**\n * The hint under one option of a group, in the second column of its grid and\n * in the option's description slot, so it is read with the option.\n *\n * Not `FieldMessage`, which is the line under a whole field: it reads the\n * validation of the field around it and draws an error, or an empty line for\n * one to arrive in. An option sits inside its group's validation, so through\n * `FieldMessage` it took the group's error for its own — React Aria's\n * `FieldError` then rendered into the option's slots, which hold no error\n * slot, and threw — dropped its own hint whenever the group was invalid, and\n * drew an empty line under every option inside a `Form`. The group's own line\n * is where its error goes, and an option has only its hint to say.\n */\nfunction ControlDescription({\n children,\n isDisabled = false\n}: ControlDescriptionProps) {\n if (children === undefined) {\n return null;\n }\n return <div {...stylex.props(controlStyles.messages)}>\n <div {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageLine)}>\n <Text slot=\"description\" {...stylex.props(fieldChromeStyles.message, isDisabled && fieldChromeStyles.messageDisabled)}>\n {children}\n </Text>\n </div>\n </div>;\n}\n\n// What a press inside a label belongs to rather than the control: anything\n// that acts on its own, where a native `<label>` leaves the press to it too.\nconst INTERACTIVE = 'a[href], button, input, select, textarea, [role=\"button\"], [role=\"link\"]';\n\n/**\n * The label beside a selection control, in the second column of its grid.\n *\n * Renders nothing without children, which is what a control labelled from\n * outside — by a group's legend, or an `aria-label` — needs.\n *\n * A link or a button inside it acts on its own rather than toggling the\n * control — see `keepToInteractive`.\n */\nfunction ControlLabel({\n children,\n isRequired = false,\n state\n}: ControlLabelProps) {\n if (children === undefined) {\n return null;\n }\n return (\n // The handlers only stop events on their way out of the label; they\n // handle nothing themselves, which is what jsx-a11y cannot tell.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n <span onClick={keepToInteractive} onKeyDown={keepToInteractive} onKeyUp={keepToInteractive} onMouseDown={keepToInteractive} onMouseUp={keepToInteractive} onPointerDown={keepToInteractive} onPointerUp={keepToInteractive} onTouchEnd={keepToInteractive} onTouchStart={keepToInteractive} {...stylex.props(controlStyles.label, state.isReadOnly && controlStyles.labelReadOnly, state.isDisabled && controlStyles.labelDisabled)}>\n {children}\n {isRequired ? <RequiredMark /> : null}\n </span>\n );\n}\n\n/**\n * Keeps a press or a key that starts in something interactive inside the\n * label — the link in \"I agree to the terms\" — from reaching the control's\n * own press handling, which sits on the element around the label. React Aria\n * took such a press as a press on the control, toggling it and stopping the\n * link's own default, so a click toggled the box and left the page where it\n * was, and Enter did neither. Stopped here, the event goes no further than\n * the label, and the browser's own default — following the link — is left\n * alone, as a native label leaves it. A press anywhere else in the label\n * still reaches the control and toggles it.\n */\nfunction keepToInteractive(event: SyntheticEvent<HTMLSpanElement>) {\n const {\n currentTarget,\n target\n } = event;\n const interactive = target instanceof Element ? target.closest(INTERACTIVE) : null;\n if (interactive !== null && currentTarget.contains(interactive)) {\n event.stopPropagation();\n }\n}\nexport type { ControlDescriptionProps, ControlLabelProps };\nexport { ControlDescription, ControlLabel };"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmDA,SAAAe,mBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAA4B,MAAA,EAAAV,UAAAC,YAAAU,OAAAH;CAE1B,MAAAP,aAAAU,OAAAC,KAAAA,IAAA,QAAAD;CAEA,IAAIX,aAAaY,KAAAA,GAAS,OACjB;CACR,IAAAC;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,GAAA;EACeH,KAAAnB,MAAaI,cAAaoB,QAAS;EACtCJ,KAAApB,MAAaG,kBAAiBsB,SAAUtB,kBAAiBuB,WAAY;EAACX,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAA;EAAAD,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;CAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAR,YAAA;EAChDoB,KAAA3B,MAAaG,kBAAiBsB,SAAUlB,cAAcJ,kBAAiByB,eAAgB;EAACb,EAAA,KAAAR;EAAAQ,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,OAAAT,YAAAS,EAAA,OAAAY,IAAA;EAFpHE,KAAA,oBAAA,OAAA;GAMC,GANQV;GACZ,UAAA,oBAAA,OAAA;IAIM,GAJGC;IACP,UAAA,oBAAC,MAAD;KAAW,MAAA;KAAa,GAAKO;KAC1BrB;IADE,CAAA;GAGD,CAAA;EACF,CAAA;EAAAS,EAAA,KAAAT;EAAAS,EAAA,KAAAY;EAAAZ,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OANDc;AAMC;AAKV,MAAMC,cAAc;;;;;;;;;;AAWpB,SAAAC,aAAAjB,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAsB,MAAA,EAAAV,UAAAG,YAAAQ,IAAAP,UAAAI;CAEpB,MAAAL,aAAAQ,OAAAC,KAAAA,IAAA,QAAAD;CAGA,IAAIX,aAAaY,KAAAA,GAAS,OACjB;CACR,IAAAC;CAAA,IAAAJ,EAAA,OAAAL,MAAAH,cAAAQ,EAAA,OAAAL,MAAAE,YAAA;EAKiSO,KAAAnB,MAAaI,cAAa4B,OAAQtB,MAAKE,cAAeR,cAAa6B,eAAgBvB,MAAKH,cAAeH,cAAa8B,aAAc;EAACnB,EAAA,KAAAL,MAAAH;EAAAQ,EAAA,KAAAL,MAAAE;EAAAG,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAEhaW,KAAAX,aAAa,oBAAC,cAAD,CAAa,CAAA,IAA1B;EAAoCM,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAT,YAAAS,EAAA,OAAAI,MAAAJ,EAAA,OAAAK,IAAA;EAFvCO,KAAA,qBAAA,QAAA;GAAeQ,SAAAA;GAA8BA,WAAAA;GAA4BA,SAAAA;GAAgCA,aAAAA;GAA8BA,WAAAA;GAAkCA,eAAAA;GAAgCA,aAAAA;GAA+BA,YAAAA;GAAiCA,cAAAA;GAAiB,GAAMhB;GAAhS,UAAA,CACGb,UACAc,EACI;;EAAAL,EAAA,KAAAT;EAAAS,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAHPY;AAGO;;;;;;;;;;;;AAeX,SAASQ,kBAAkBC,OAAwC;CACjE,MAAM,EACJE,eACAC,WACEH;CACJ,MAAMI,cAAcD,kBAAkBE,UAAUF,OAAOG,QAAQZ,WAAW,IAAI;CAC9E,IAAIU,gBAAgB,QAAQF,cAAcK,SAASH,WAAW,GAC5DJ,MAAMQ,gBAAgB;AAE1B"}
1
+ {"version":3,"file":"index.js","names":["ReactNode","SyntheticEvent","stylex","Text","RequiredMark","fieldChromeStyles","controlStyles","ControlDescriptionProps","children","isDisabled","ControlLabelProps","isRequired","state","ControlLabelState","isReadOnly","ControlDescription","t0","$","_c","t1","undefined","t2","t3","Symbol","for","props","messages","message","messageLine","messageIndent","t4","messageDisabled","t5","INTERACTIVE","ControlLabel","label","labelReadOnly","labelDisabled","keepToInteractive","event","HTMLSpanElement","currentTarget","target","interactive","Element","closest","contains","stopPropagation","_c","stylex.props"],"sources":["../../src/control/index.tsx"],"sourcesContent":["import type { ReactNode, SyntheticEvent } from 'react';\nimport * as stylex from '@stylexjs/stylex';\nimport { Text } from 'react-aria-components';\nimport { RequiredMark } from '../field';\nimport { fieldChromeStyles } from '../field/styles';\nimport { controlStyles } from './styles';\ntype ControlDescriptionProps = {\n /** The hint. Nothing renders when there is none. */\n children: string | undefined;\n /**\n * Whether the option is disabled, by itself or by its group, which fades\n * the hint with the option's label.\n * @default false\n */\n isDisabled?: boolean;\n};\ntype ControlLabelProps = {\n /** The label's text. Nothing renders when there is none. */\n children: ReactNode;\n /**\n * Whether the control must be chosen, which ends the label in the asterisk\n * every required field's label ends in.\n * @default false\n */\n isRequired?: boolean;\n /** The render state React Aria hands the component. */\n state: ControlLabelState;\n};\n\n/**\n * The state a label reads. Each of React Aria's three render states carries\n * more than this, and this is the part all three share.\n */\ntype ControlLabelState = {\n isDisabled: boolean;\n isReadOnly: boolean;\n};\n\n/**\n * The hint under one option of a group, in the second column of its grid and\n * in the option's description slot, so it is read with the option.\n *\n * Not `FieldMessage`, which is the line under a whole field: it reads the\n * validation of the field around it and draws an error, or an empty line for\n * one to arrive in. An option sits inside its group's validation, so through\n * `FieldMessage` it took the group's error for its own — React Aria's\n * `FieldError` then rendered into the option's slots, which hold no error\n * slot, and threw — dropped its own hint whenever the group was invalid, and\n * drew an empty line under every option inside a `Form`. The group's own line\n * is where its error goes, and an option has only its hint to say.\n */\nfunction ControlDescription({\n children,\n isDisabled = false\n}: ControlDescriptionProps) {\n if (children === undefined) {\n return null;\n }\n return <div {...stylex.props(controlStyles.messages)}>\n <div {...stylex.props(fieldChromeStyles.message, fieldChromeStyles.messageLine, fieldChromeStyles.messageIndent)}>\n <Text slot=\"description\" {...stylex.props(fieldChromeStyles.message, isDisabled && fieldChromeStyles.messageDisabled)}>\n {children}\n </Text>\n </div>\n </div>;\n}\n\n// What a press inside a label belongs to rather than the control: anything\n// that acts on its own, where a native `<label>` leaves the press to it too.\nconst INTERACTIVE = 'a[href], button, input, select, textarea, [role=\"button\"], [role=\"link\"]';\n\n/**\n * The label beside a selection control, in the second column of its grid.\n *\n * Renders nothing without children, which is what a control labelled from\n * outside — by a group's legend, or an `aria-label` — needs.\n *\n * A link or a button inside it acts on its own rather than toggling the\n * control — see `keepToInteractive`.\n */\nfunction ControlLabel({\n children,\n isRequired = false,\n state\n}: ControlLabelProps) {\n if (children === undefined) {\n return null;\n }\n return (\n // The handlers only stop events on their way out of the label; they\n // handle nothing themselves, which is what jsx-a11y cannot tell.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n <span onClick={keepToInteractive} onKeyDown={keepToInteractive} onKeyUp={keepToInteractive} onMouseDown={keepToInteractive} onMouseUp={keepToInteractive} onPointerDown={keepToInteractive} onPointerUp={keepToInteractive} onTouchEnd={keepToInteractive} onTouchStart={keepToInteractive} {...stylex.props(controlStyles.label, state.isReadOnly && controlStyles.labelReadOnly, state.isDisabled && controlStyles.labelDisabled)}>\n {children}\n {isRequired ? <RequiredMark /> : null}\n </span>\n );\n}\n\n/**\n * Keeps a press or a key that starts in something interactive inside the\n * label — the link in \"I agree to the terms\" — from reaching the control's\n * own press handling, which sits on the element around the label. React Aria\n * took such a press as a press on the control, toggling it and stopping the\n * link's own default, so a click toggled the box and left the page where it\n * was, and Enter did neither. Stopped here, the event goes no further than\n * the label, and the browser's own default — following the link — is left\n * alone, as a native label leaves it. A press anywhere else in the label\n * still reaches the control and toggles it.\n */\nfunction keepToInteractive(event: SyntheticEvent<HTMLSpanElement>) {\n const {\n currentTarget,\n target\n } = event;\n const interactive = target instanceof Element ? target.closest(INTERACTIVE) : null;\n if (interactive !== null && currentTarget.contains(interactive)) {\n event.stopPropagation();\n }\n}\nexport type { ControlDescriptionProps, ControlLabelProps };\nexport { ControlDescription, ControlLabel };"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmDA,SAAAe,mBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAA4B,MAAA,EAAAV,UAAAC,YAAAU,OAAAH;CAE1B,MAAAP,aAAAU,OAAAC,KAAAA,IAAA,QAAAD;CAEA,IAAIX,aAAaY,KAAAA,GAAS,OACjB;CACR,IAAAC;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAM,OAAAC,IAAA,2BAAA,GAAA;EACeH,KAAAnB,MAAaI,cAAaoB,QAAS;EACtCJ,KAAApB,MAAaG,kBAAiBsB,SAAUtB,kBAAiBuB,aAAcvB,kBAAiBwB,aAAc;EAACZ,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAA;EAAAD,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;CAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAR,YAAA;EACjFqB,KAAA5B,MAAaG,kBAAiBsB,SAAUlB,cAAcJ,kBAAiB0B,eAAgB;EAACd,EAAA,KAAAR;EAAAQ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAT,YAAAS,EAAA,OAAAa,IAAA;EAFpHE,KAAA,oBAAA,OAAA;GAMC,GANQX;GACZ,UAAA,oBAAA,OAAA;IAIM,GAJGC;IACP,UAAA,oBAAC,MAAD;KAAW,MAAA;KAAa,GAAKQ;KAC1BtB;IADE,CAAA;GAGD,CAAA;EACF,CAAA;EAAAS,EAAA,KAAAT;EAAAS,EAAA,KAAAa;EAAAb,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OANDe;AAMC;AAKV,MAAMC,cAAc;;;;;;;;;;AAWpB,SAAAC,aAAAlB,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAsB,MAAA,EAAAV,UAAAG,YAAAQ,IAAAP,UAAAI;CAEpB,MAAAL,aAAAQ,OAAAC,KAAAA,IAAA,QAAAD;CAGA,IAAIX,aAAaY,KAAAA,GAAS,OACjB;CACR,IAAAC;CAAA,IAAAJ,EAAA,OAAAL,MAAAH,cAAAQ,EAAA,OAAAL,MAAAE,YAAA;EAKiSO,KAAAnB,MAAaI,cAAa6B,OAAQvB,MAAKE,cAAeR,cAAa8B,eAAgBxB,MAAKH,cAAeH,cAAa+B,aAAc;EAACpB,EAAA,KAAAL,MAAAH;EAAAQ,EAAA,KAAAL,MAAAE;EAAAG,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAN,YAAA;EAEhaW,KAAAX,aAAa,oBAAC,cAAD,CAAa,CAAA,IAA1B;EAAoCM,EAAA,KAAAN;EAAAM,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAT,YAAAS,EAAA,OAAAI,MAAAJ,EAAA,OAAAK,IAAA;EAFvCQ,KAAA,qBAAA,QAAA;GAAeQ,SAAAA;GAA8BA,WAAAA;GAA4BA,SAAAA;GAAgCA,aAAAA;GAA8BA,WAAAA;GAAkCA,eAAAA;GAAgCA,aAAAA;GAA+BA,YAAAA;GAAiCA,cAAAA;GAAiB,GAAMjB;GAAhS,UAAA,CACGb,UACAc,EACI;;EAAAL,EAAA,KAAAT;EAAAS,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAHPa;AAGO;;;;;;;;;;;;AAeX,SAASQ,kBAAkBC,OAAwC;CACjE,MAAM,EACJE,eACAC,WACEH;CACJ,MAAMI,cAAcD,kBAAkBE,UAAUF,OAAOG,QAAQZ,WAAW,IAAI;CAC9E,IAAIU,gBAAgB,QAAQF,cAAcK,SAASH,WAAW,GAC5DJ,MAAMQ,gBAAgB;AAE1B"}
@@ -66,7 +66,6 @@ const controlStyles = {
66
66
  kEXP64: "x1xdureb",
67
67
  k7Eaqz: "xeuugli",
68
68
  kHjlTd: "xj0a0fe",
69
- kZCmMZ: "xdxifnh",
70
69
  $$css: true
71
70
  },
72
71
  stack: {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["stylex","colors","motion","radii","spacing","stateLayerOpacity","typography","FORCED_COLORS","LAYER_SIZE","TARGET_SIZE","TARGET_REACH","TARGET_GAP","controlStyles","controlDisabled","kkrTdU","$$css","controlReadOnly","disc","kgeoSG","kFcpXp","kEoFBp","k6CgDc","kGNEyG","kWkggS","kZKoxP","kaIpWk","kB7OPa","k1xSpc","kmuXW","kzqmXN","kjj79g","kVAEAm","kIyJzY","k1ekBW","kAMwcw","field","kumcoG","k7Eaqz","label","kMwMTN","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","kHjlTd","k8WAf4","kZCmMZ","labelDisabled","labelReadOnly","messages","kEXP64","stack","kXwgrk","khm7nJ"],"sources":["../../src/control/styles.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\nimport '../tokens/design.tokens.stylex';\nimport { colors, motion, radii, spacing, stateLayerOpacity, typography } from '../tokens/design.tokens.stylex';\n\n// Windows High Contrast and the rest of the forced-colours modes. Spelled\n// here rather than imported, for the reason src/field/styles.ts records: the\n// StyleX compiler resolves a constant across files only out of a `.stylex.ts`\n// module, and the generated one holds design tokens rather than queries.\nconst FORCED_COLORS = '@media (forced-colors: active)';\n\n// The row a selection control draws, shared by Checkbox, Switch and Radio.\n// Each wrote it out in full: the two-column grid, the body-large label with\n// its disabled and read-only fades, the messages cell under the text, and the\n// cursors the control takes in those two states. Switch's own comment already\n// said it drew \"the two-column grid the checkbox uses\" while keeping a second\n// copy, so the coupling was recorded in prose rather than in code — the same\n// thing src/field and src/row were extracted to stop.\n//\n// The set is closed at three. React Aria Components has no fourth component\n// drawing this row, and CheckboxGroup is a container rather than a control.\n// What this is worth is that the three cannot drift apart, and that the\n// repository's own convention — a style more than one component draws lives\n// beside src/components, not inside it — holds here too.\n//\n// Two things deliberately stay with each component.\n//\n// The state layers are three different shapes rather than one shape with\n// three sets of key names. Checkbox carries an `error` key Radio has no\n// equivalent for, Checkbox's pressed set inverts its own key names, and\n// Switch deliberately does not invert at all. One style keyed on a `marked`\n// boolean would have to encode an error branch one caller uses, an inversion\n// another uses, and a documented non-inversion for the third, which costs a\n// reader more than the three short `stylex.create` calls it would replace.\n//\n// And the disc's colour. Checkbox draws it in `onSurface` and Radio in\n// `onSurfaceVariant`, which is the one declaration their otherwise identical\n// discs disagree on, so `disc` holds the other fourteen and each component\n// composes its own colour after.\n// The two sizes the checkbox, radio button and switch pages each give, and\n// the decision the three of them share.\n//\n// Every one of those pages lists them as separate measurements — a 40dp state\n// layer and a 48dp target — and all three components here recorded the pair in\n// their header comments while drawing only the first. The target is what the\n// pages ask a press to reach, so it is drawn: `disc` carries a transparent\n// `::before` that reaches the 4dp either side, taking the press because a\n// pseudo-element is part of the element it belongs to. A lone control moves\n// nothing, since that box is out of flow — the alternative, a 48dp disc,\n// would have grown every form in every consuming app by 8dp a row.\n//\n// A group's rows are the exception, and `stack` is how. Rows on the 40dp\n// pitch of their layers put each target 8dp into the next row's, and the\n// later row is painted over the earlier, so a press on the bottom of one\n// row's visible layer went to the row below it. The pages ask that a target\n// not overlap its neighbour, so a group spaces its rows by the 8dp the two\n// sizes differ by, and the targets meet edge to edge on a 48dp pitch.\n//\n// Switch composes neither of these. Its track is its own 52 by 40, so it\n// carries the same `::before` in its own file, over the one axis that is\n// short.\n//\n// The layer is also what the label centres its first line on, and the two\n// have to agree: a disc resized without the label following it would put the\n// control off its own label again, which is the drift this row already had\n// once. The target is deliberately not in that sum — a label centred on an\n// invisible box would sit 4dp below the disc a reader can see.\n//\n// Literals rather than `sizing.controlSm` and `controlMd`, which happen to\n// hold the same two numbers. Those are steps of the control scale, spent on\n// button heights; these are one page's state layer and one page's target, and\n// a consumer resizing their buttons should not move either.\nconst LAYER_SIZE = '40px';\nconst TARGET_SIZE = '48px';\n\n/** How far the target reaches past the layer on each side: 4dp. */\nconst TARGET_REACH = `calc((${LAYER_SIZE} - ${TARGET_SIZE}) / 2)`;\n\n/** The room two targets need between their layers to meet without overlap. */\nconst TARGET_GAP = `calc(${TARGET_SIZE} - ${LAYER_SIZE})`;\nconst controlStyles = {\n controlDisabled: {\n kkrTdU: \"x1h6gzvc\",\n $$css: true\n },\n controlReadOnly: {\n kkrTdU: \"xt0e3qv\",\n $$css: true\n },\n disc: {\n kgeoSG: \"x1cpjm7i\",\n kFcpXp: \"x15kbrqr\",\n kEoFBp: \"x1hmns74\",\n k6CgDc: \"x12w9bfk\",\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"xjbqb8w\",\n kZKoxP: \"x1vqgdyp\",\n kaIpWk: \"x16fbrrb\",\n kB7OPa: \"x9f619\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x78zum5\",\n kmuXW: \"x2lah0s\",\n kzqmXN: \"x100vrsf\",\n kjj79g: \"xl56j7k\",\n kVAEAm: \"x1n2onr6\",\n kIyJzY: \"x1qno0dh\",\n k1ekBW: \"x15406qy\",\n kAMwcw: \"xpc4ca7\",\n $$css: true\n },\n field: {\n kGNEyG: \"x7a106z\",\n kB7OPa: \"x9f619\",\n k1xSpc: \"xrvj5dj\",\n kumcoG: \"x1rkzygb\",\n k7Eaqz: \"xeuugli\",\n $$css: true\n },\n label: {\n kB7OPa: \"x9f619\",\n kMwMTN: \"x139gbkf\",\n kkrTdU: \"x1ypdohk\",\n kMv6JI: \"x16svsjw\",\n kGuDYH: \"x1848etk\",\n k63SB2: \"x1c52epr\",\n kb6lSQ: \"x1qn8t5l\",\n kLWn49: \"xh7dzej\",\n k7Eaqz: \"xeuugli\",\n kHjlTd: \"xj0a0fe\",\n k8WAf4: \"x18r0n19\",\n kZCmMZ: \"xdxifnh\",\n $$css: true\n },\n labelDisabled: {\n kMwMTN: \"x1xj74d8 x1bhcspo\",\n kkrTdU: \"x1h6gzvc\",\n $$css: true\n },\n labelReadOnly: {\n kkrTdU: \"xt0e3qv\",\n $$css: true\n },\n messages: {\n kB7OPa: \"x9f619\",\n kEXP64: \"x1xdureb\",\n k7Eaqz: \"xeuugli\",\n kHjlTd: \"xj0a0fe\",\n kZCmMZ: \"xdxifnh\",\n $$css: true\n },\n stack: {\n k1xSpc: \"x78zum5\",\n kXwgrk: \"xdt5ytf\",\n khm7nJ: \"xtfsegk\",\n $$css: true\n }\n};\nexport { controlStyles };"],"mappings":";AA+EA,MAAMY,gBAAgB;CACpBC,iBAAiB;EACfC,QAAQ;EACRC,OAAO;CACT;CACAC,iBAAiB;EACfF,QAAQ;EACRC,OAAO;CACT;CACAE,MAAM;EACJC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRZ,QAAQ;EACRa,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRnB,OAAO;CACT;CACAoB,OAAO;EACLb,QAAQ;EACRI,QAAQ;EACRC,QAAQ;EACRS,QAAQ;EACRC,QAAQ;EACRtB,OAAO;CACT;CACAuB,OAAO;EACLZ,QAAQ;EACRa,QAAQ;EACRzB,QAAQ;EACR0B,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRP,QAAQ;EACRQ,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRhC,OAAO;CACT;CACAiC,eAAe;EACbT,QAAQ;EACRzB,QAAQ;EACRC,OAAO;CACT;CACAkC,eAAe;EACbnC,QAAQ;EACRC,OAAO;CACT;CACAmC,UAAU;EACRxB,QAAQ;EACRyB,QAAQ;EACRd,QAAQ;EACRQ,QAAQ;EACRE,QAAQ;EACRhC,OAAO;CACT;CACAqC,OAAO;EACLzB,QAAQ;EACR0B,QAAQ;EACRC,QAAQ;EACRvC,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"styles.js","names":["stylex","colors","motion","radii","spacing","stateLayerOpacity","typography","FORCED_COLORS","LAYER_SIZE","TARGET_SIZE","TARGET_REACH","TARGET_GAP","controlStyles","controlDisabled","kkrTdU","$$css","controlReadOnly","disc","kgeoSG","kFcpXp","kEoFBp","k6CgDc","kGNEyG","kWkggS","kZKoxP","kaIpWk","kB7OPa","k1xSpc","kmuXW","kzqmXN","kjj79g","kVAEAm","kIyJzY","k1ekBW","kAMwcw","field","kumcoG","k7Eaqz","label","kMwMTN","kMv6JI","kGuDYH","k63SB2","kb6lSQ","kLWn49","kHjlTd","k8WAf4","kZCmMZ","labelDisabled","labelReadOnly","messages","kEXP64","stack","kXwgrk","khm7nJ"],"sources":["../../src/control/styles.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\nimport '../tokens/design.tokens.stylex';\nimport { colors, motion, radii, spacing, stateLayerOpacity, typography } from '../tokens/design.tokens.stylex';\n\n// Windows High Contrast and the rest of the forced-colours modes. Spelled\n// here rather than imported, for the reason src/field/styles.ts records: the\n// StyleX compiler resolves a constant across files only out of a `.stylex.ts`\n// module, and the generated one holds design tokens rather than queries.\nconst FORCED_COLORS = '@media (forced-colors: active)';\n\n// The row a selection control draws, shared by Checkbox, Switch and Radio.\n// Each wrote it out in full: the two-column grid, the body-large label with\n// its disabled and read-only fades, the messages cell under the text, and the\n// cursors the control takes in those two states. Switch's own comment already\n// said it drew \"the two-column grid the checkbox uses\" while keeping a second\n// copy, so the coupling was recorded in prose rather than in code — the same\n// thing src/field and src/row were extracted to stop.\n//\n// The set is closed at three. React Aria Components has no fourth component\n// drawing this row, and CheckboxGroup is a container rather than a control.\n// What this is worth is that the three cannot drift apart, and that the\n// repository's own convention — a style more than one component draws lives\n// beside src/components, not inside it — holds here too.\n//\n// Two things deliberately stay with each component.\n//\n// The state layers are three different shapes rather than one shape with\n// three sets of key names. Checkbox carries an `error` key Radio has no\n// equivalent for, Checkbox's pressed set inverts its own key names, and\n// Switch deliberately does not invert at all. One style keyed on a `marked`\n// boolean would have to encode an error branch one caller uses, an inversion\n// another uses, and a documented non-inversion for the third, which costs a\n// reader more than the three short `stylex.create` calls it would replace.\n//\n// And the disc's colour. Checkbox draws it in `onSurface` and Radio in\n// `onSurfaceVariant`, which is the one declaration their otherwise identical\n// discs disagree on, so `disc` holds the other fourteen and each component\n// composes its own colour after.\n// The two sizes the checkbox, radio button and switch pages each give, and\n// the decision the three of them share.\n//\n// Every one of those pages lists them as separate measurements — a 40dp state\n// layer and a 48dp target — and all three components here recorded the pair in\n// their header comments while drawing only the first. The target is what the\n// pages ask a press to reach, so it is drawn: `disc` carries a transparent\n// `::before` that reaches the 4dp either side, taking the press because a\n// pseudo-element is part of the element it belongs to. A lone control moves\n// nothing, since that box is out of flow — the alternative, a 48dp disc,\n// would have grown every form in every consuming app by 8dp a row.\n//\n// A group's rows are the exception, and `stack` is how. Rows on the 40dp\n// pitch of their layers put each target 8dp into the next row's, and the\n// later row is painted over the earlier, so a press on the bottom of one\n// row's visible layer went to the row below it. The pages ask that a target\n// not overlap its neighbour, so a group spaces its rows by the 8dp the two\n// sizes differ by, and the targets meet edge to edge on a 48dp pitch.\n//\n// Switch composes neither of these. Its track is its own 52 by 40, so it\n// carries the same `::before` in its own file, over the one axis that is\n// short.\n//\n// The layer is also what the label centres its first line on, and the two\n// have to agree: a disc resized without the label following it would put the\n// control off its own label again, which is the drift this row already had\n// once. The target is deliberately not in that sum — a label centred on an\n// invisible box would sit 4dp below the disc a reader can see.\n//\n// Literals rather than `sizing.controlSm` and `controlMd`, which happen to\n// hold the same two numbers. Those are steps of the control scale, spent on\n// button heights; these are one page's state layer and one page's target, and\n// a consumer resizing their buttons should not move either.\nconst LAYER_SIZE = '40px';\nconst TARGET_SIZE = '48px';\n\n/** How far the target reaches past the layer on each side: 4dp. */\nconst TARGET_REACH = `calc((${LAYER_SIZE} - ${TARGET_SIZE}) / 2)`;\n\n/** The room two targets need between their layers to meet without overlap. */\nconst TARGET_GAP = `calc(${TARGET_SIZE} - ${LAYER_SIZE})`;\nconst controlStyles = {\n controlDisabled: {\n kkrTdU: \"x1h6gzvc\",\n $$css: true\n },\n controlReadOnly: {\n kkrTdU: \"xt0e3qv\",\n $$css: true\n },\n disc: {\n kgeoSG: \"x1cpjm7i\",\n kFcpXp: \"x15kbrqr\",\n kEoFBp: \"x1hmns74\",\n k6CgDc: \"x12w9bfk\",\n kGNEyG: \"x6s0dn4\",\n kWkggS: \"xjbqb8w\",\n kZKoxP: \"x1vqgdyp\",\n kaIpWk: \"x16fbrrb\",\n kB7OPa: \"x9f619\",\n kkrTdU: \"x1ypdohk\",\n k1xSpc: \"x78zum5\",\n kmuXW: \"x2lah0s\",\n kzqmXN: \"x100vrsf\",\n kjj79g: \"xl56j7k\",\n kVAEAm: \"x1n2onr6\",\n kIyJzY: \"x1qno0dh\",\n k1ekBW: \"x15406qy\",\n kAMwcw: \"xpc4ca7\",\n $$css: true\n },\n field: {\n kGNEyG: \"x7a106z\",\n kB7OPa: \"x9f619\",\n k1xSpc: \"xrvj5dj\",\n kumcoG: \"x1rkzygb\",\n k7Eaqz: \"xeuugli\",\n $$css: true\n },\n label: {\n kB7OPa: \"x9f619\",\n kMwMTN: \"x139gbkf\",\n kkrTdU: \"x1ypdohk\",\n kMv6JI: \"x16svsjw\",\n kGuDYH: \"x1848etk\",\n k63SB2: \"x1c52epr\",\n kb6lSQ: \"x1qn8t5l\",\n kLWn49: \"xh7dzej\",\n k7Eaqz: \"xeuugli\",\n kHjlTd: \"xj0a0fe\",\n k8WAf4: \"x18r0n19\",\n kZCmMZ: \"xdxifnh\",\n $$css: true\n },\n labelDisabled: {\n kMwMTN: \"x1xj74d8 x1bhcspo\",\n kkrTdU: \"x1h6gzvc\",\n $$css: true\n },\n labelReadOnly: {\n kkrTdU: \"xt0e3qv\",\n $$css: true\n },\n messages: {\n kB7OPa: \"x9f619\",\n kEXP64: \"x1xdureb\",\n k7Eaqz: \"xeuugli\",\n kHjlTd: \"xj0a0fe\",\n $$css: true\n },\n stack: {\n k1xSpc: \"x78zum5\",\n kXwgrk: \"xdt5ytf\",\n khm7nJ: \"xtfsegk\",\n $$css: true\n }\n};\nexport { controlStyles };"],"mappings":";AA+EA,MAAMY,gBAAgB;CACpBC,iBAAiB;EACfC,QAAQ;EACRC,OAAO;CACT;CACAC,iBAAiB;EACfF,QAAQ;EACRC,OAAO;CACT;CACAE,MAAM;EACJC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRZ,QAAQ;EACRa,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRnB,OAAO;CACT;CACAoB,OAAO;EACLb,QAAQ;EACRI,QAAQ;EACRC,QAAQ;EACRS,QAAQ;EACRC,QAAQ;EACRtB,OAAO;CACT;CACAuB,OAAO;EACLZ,QAAQ;EACRa,QAAQ;EACRzB,QAAQ;EACR0B,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRP,QAAQ;EACRQ,QAAQ;EACRC,QAAQ;EACRC,QAAQ;EACRhC,OAAO;CACT;CACAiC,eAAe;EACbT,QAAQ;EACRzB,QAAQ;EACRC,OAAO;CACT;CACAkC,eAAe;EACbnC,QAAQ;EACRC,OAAO;CACT;CACAmC,UAAU;EACRxB,QAAQ;EACRyB,QAAQ;EACRd,QAAQ;EACRQ,QAAQ;EACR9B,OAAO;CACT;CACAqC,OAAO;EACLzB,QAAQ;EACR0B,QAAQ;EACRC,QAAQ;EACRvC,OAAO;CACT;AACF"}