@epilot/zenith-react 0.1.0 → 0.2.0-next.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.
Files changed (132) hide show
  1. package/README.md +34 -0
  2. package/dist/components/accordion/accordion.js +57 -48
  3. package/dist/components/accordion/accordion.js.map +1 -1
  4. package/dist/components/alert-dialog/alert-dialog.js +120 -91
  5. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  6. package/dist/components/avatar/avatar-group.js +38 -35
  7. package/dist/components/avatar/avatar-group.js.map +1 -1
  8. package/dist/components/avatar/avatar.js +78 -71
  9. package/dist/components/avatar/avatar.js.map +1 -1
  10. package/dist/components/badge/badge.js +60 -55
  11. package/dist/components/badge/badge.js.map +1 -1
  12. package/dist/components/breadcrumb/breadcrumb.js +99 -54
  13. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  14. package/dist/components/button/button.js +87 -77
  15. package/dist/components/button/button.js.map +1 -1
  16. package/dist/components/button-group/button-group.js +36 -32
  17. package/dist/components/button-group/button-group.js.map +1 -1
  18. package/dist/components/callout/callout.js +113 -104
  19. package/dist/components/callout/callout.js.map +1 -1
  20. package/dist/components/card/card.js +62 -52
  21. package/dist/components/card/card.js.map +1 -1
  22. package/dist/components/checkbox/checkbox.js +22 -19
  23. package/dist/components/checkbox/checkbox.js.map +1 -1
  24. package/dist/components/code-block/code-block.js +135 -123
  25. package/dist/components/code-block/code-block.js.map +1 -1
  26. package/dist/components/code-editor/code-editor.js +276 -260
  27. package/dist/components/code-editor/code-editor.js.map +1 -1
  28. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
  29. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  30. package/dist/components/command/command.js +116 -105
  31. package/dist/components/command/command.js.map +1 -1
  32. package/dist/components/data-table/data-table-body.js +38 -34
  33. package/dist/components/data-table/data-table-body.js.map +1 -1
  34. package/dist/components/data-table/data-table-column-header.js +30 -26
  35. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  36. package/dist/components/data-table/data-table-column-order.js +79 -73
  37. package/dist/components/data-table/data-table-column-order.js.map +1 -1
  38. package/dist/components/data-table/data-table-column-visibility.js +25 -22
  39. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  40. package/dist/components/data-table/data-table-content.js +47 -44
  41. package/dist/components/data-table/data-table-content.js.map +1 -1
  42. package/dist/components/data-table/data-table-error.js +36 -32
  43. package/dist/components/data-table/data-table-error.js.map +1 -1
  44. package/dist/components/data-table/data-table-footer.js +10 -8
  45. package/dist/components/data-table/data-table-footer.js.map +1 -1
  46. package/dist/components/data-table/data-table-header-draggable.js +40 -36
  47. package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
  48. package/dist/components/data-table/data-table-loading.js +21 -18
  49. package/dist/components/data-table/data-table-loading.js.map +1 -1
  50. package/dist/components/data-table/data-table-resize-handle.js +13 -11
  51. package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
  52. package/dist/components/data-table/data-table-row.js +47 -44
  53. package/dist/components/data-table/data-table-row.js.map +1 -1
  54. package/dist/components/data-table/data-table-toolbar.js +9 -7
  55. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  56. package/dist/components/data-table/data-table.js +48 -46
  57. package/dist/components/data-table/data-table.js.map +1 -1
  58. package/dist/components/date-range-picker/date-range-picker.js +212 -193
  59. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  60. package/dist/components/date-range-picker/range-calendar.js +36 -34
  61. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  62. package/dist/components/date-time-picker/calendar.js +290 -272
  63. package/dist/components/date-time-picker/calendar.js.map +1 -1
  64. package/dist/components/date-time-picker/date-time-picker-input.js +127 -112
  65. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  66. package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
  67. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  68. package/dist/components/date-time-picker/date-time-picker.js +91 -86
  69. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  70. package/dist/components/date-time-picker/time-picker.js +95 -87
  71. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  72. package/dist/components/dialog/dialog.js +125 -103
  73. package/dist/components/dialog/dialog.js.map +1 -1
  74. package/dist/components/drawer/drawer.js +151 -114
  75. package/dist/components/drawer/drawer.js.map +1 -1
  76. package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
  77. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  78. package/dist/components/field/field-combobox.js +196 -176
  79. package/dist/components/field/field-combobox.js.map +1 -1
  80. package/dist/components/field/field.js +237 -195
  81. package/dist/components/field/field.js.map +1 -1
  82. package/dist/components/list/list.js +237 -219
  83. package/dist/components/list/list.js.map +1 -1
  84. package/dist/components/option-card/option-card.js +129 -116
  85. package/dist/components/option-card/option-card.js.map +1 -1
  86. package/dist/components/pill/pill.js +55 -51
  87. package/dist/components/pill/pill.js.map +1 -1
  88. package/dist/components/popover/popover.js +53 -36
  89. package/dist/components/popover/popover.js.map +1 -1
  90. package/dist/components/radio/radio.js +38 -34
  91. package/dist/components/radio/radio.js.map +1 -1
  92. package/dist/components/scroll-area/scroll-area.js +38 -35
  93. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  94. package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
  95. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  96. package/dist/components/segmented-control/segmented-control.js +93 -85
  97. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  98. package/dist/components/select/select.js +149 -128
  99. package/dist/components/select/select.js.map +1 -1
  100. package/dist/components/separator/separator.js +19 -16
  101. package/dist/components/separator/separator.js.map +1 -1
  102. package/dist/components/skeleton/skeleton.js +34 -30
  103. package/dist/components/skeleton/skeleton.js.map +1 -1
  104. package/dist/components/spinner/spinner.js +22 -17
  105. package/dist/components/spinner/spinner.js.map +1 -1
  106. package/dist/components/surface/surface.js +25 -22
  107. package/dist/components/surface/surface.js.map +1 -1
  108. package/dist/components/switch/switch.js +66 -57
  109. package/dist/components/switch/switch.js.map +1 -1
  110. package/dist/components/table/table-pagination.js +139 -129
  111. package/dist/components/table/table-pagination.js.map +1 -1
  112. package/dist/components/table/table.js +104 -90
  113. package/dist/components/table/table.js.map +1 -1
  114. package/dist/components/tabs/tabs.js +212 -79
  115. package/dist/components/tabs/tabs.js.map +1 -1
  116. package/dist/components/toast/toast.js +112 -100
  117. package/dist/components/toast/toast.js.map +1 -1
  118. package/dist/components/toggle/toggle.js +32 -30
  119. package/dist/components/toggle/toggle.js.map +1 -1
  120. package/dist/components/tooltip/tooltip.js +59 -46
  121. package/dist/components/tooltip/tooltip.js.map +1 -1
  122. package/dist/index.d.ts +22 -0
  123. package/dist/lib/clear-button.js +18 -17
  124. package/dist/lib/clear-button.js.map +1 -1
  125. package/dist/styles/host-reset.js +47 -0
  126. package/dist/styles/host-reset.js.map +1 -0
  127. package/dist/styles/overlay-layer.js +5 -0
  128. package/dist/styles/overlay-layer.js.map +1 -0
  129. package/dist/tokens.json +1 -1
  130. package/package.json +8 -7
  131. package/scripts/migration-diagnostics.mjs +42 -7
  132. package/scripts/migration-sweep.mjs +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.js","sources":["../../../src/components/date-time-picker/time-picker.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nimport {\n getHours,\n getMinutes,\n padNumber,\n updateTime,\n} from \"./date-time-picker-utils\"\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i)\n\nexport type TimePickerProps = {\n value: Date | null\n onChange: (date: Date) => void\n onTimeSelect?: () => void\n disablePast?: boolean\n currentTimeInTimezone?: Date\n fillHeight?: boolean\n minuteStep?: number\n className?: string\n /**\n * Accessible name for the hours column. Pass a translated string. These are ACCESSIBLE NAMES,\n * not visible headers, and the distinction is deliberate.\n */\n hoursLabel?: string\n /** Accessible name for the minutes column. Pass a translated string. See `hoursLabel`. */\n minutesLabel?: string\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n },\n fillHeight: {\n height: \"100%\",\n },\n column: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"3.5rem\",\n },\n columnFillHeight: {\n minHeight: \"0\",\n },\n scroll: {\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n width: \"100%\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA5),\n scrollbarWidth: \"thin\",\n scrollbarColor: `${tokens.grayA6} transparent`,\n },\n scrollFixed: {\n height: \"8rem\",\n },\n scrollFill: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n minHeight: \"0\",\n },\n separator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA8,\n },\n timeBtn: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n ...shorthands.borderRadius(tokens.radiusMd),\n transitionProperty: \"background-color, color\",\n transitionDuration: \"150ms\",\n minHeight: \"2rem\",\n width: \"100%\",\n maxWidth: \"3rem\",\n ...shorthands.border(\"0\"),\n outlineStyle: \"none\",\n },\n timeBtnDefault: {\n backgroundColor: \"transparent\",\n color: tokens.grayA11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n },\n timeBtnSelected: {\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.accentSolid,\n color: tokens.accentContrast,\n \":hover\": {\n backgroundColor: tokens.accentSolidHover,\n },\n },\n timeBtnDisabled: {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n timeBtnEnabled: {\n cursor: \"pointer\",\n },\n})\n\ntype TimeButtonProps = {\n value: number\n isSelected: boolean\n isDisabled: boolean\n onClick: (value: number) => void\n}\n\nconst TimeButton = React.memo(function TimeButton({\n value,\n isSelected,\n isDisabled,\n onClick,\n}: TimeButtonProps) {\n const styles = useStyles()\n const handleClick = React.useCallback(() => {\n if (!isDisabled) {\n onClick(value)\n }\n }, [onClick, value, isDisabled])\n\n return (\n <button\n aria-disabled={isDisabled}\n aria-pressed={isSelected}\n className={mergeClasses(\n styles.timeBtn,\n !isSelected && styles.timeBtnDefault,\n isSelected && styles.timeBtnSelected,\n isDisabled ? styles.timeBtnDisabled : styles.timeBtnEnabled\n )}\n data-selected={isSelected}\n data-slot=\"time-button\"\n {...{ [SLOT_ATTR]: \"time-button\" }}\n data-value={value}\n disabled={isDisabled}\n onClick={handleClick}\n type=\"button\"\n >\n {padNumber(value)}\n </button>\n )\n})\n\nTimeButton.displayName = \"TimeButton\"\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n function TimePicker(\n {\n value,\n onChange,\n onTimeSelect,\n disablePast = false,\n currentTimeInTimezone,\n fillHeight = false,\n minuteStep = 1,\n className,\n hoursLabel = \"Hours\",\n minutesLabel = \"Minutes\",\n },\n ref\n ) {\n const styles = useStyles()\n const step = Math.max(1, Math.floor(minuteStep))\n\n // Enumerate buckets 0, step, 2·step… stopping at <60 so a step that\n // doesn't divide 60 evenly (e.g. 7) can never produce an out-of-range\n // value like 63.\n const MINUTES = React.useMemo(() => {\n const buckets: number[] = []\n for (let m = 0; m < 60; m += step) buckets.push(m)\n\n return buckets\n }, [step])\n\n const selectedHour = value !== null ? getHours(value) : -1\n const rawMinute = value !== null ? getMinutes(value) : -1\n const selectedMinute =\n value === null\n ? -1\n : step === 1\n ? rawMinute\n : Math.min(\n MINUTES[MINUTES.length - 1],\n Math.round(rawMinute / step) * step\n )\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n\n const now = React.useMemo(\n () => currentTimeInTimezone || new Date(),\n [currentTimeInTimezone]\n )\n const isToday = React.useMemo(() => {\n if (!value) return false\n\n return (\n value.getFullYear() === now.getFullYear() &&\n value.getMonth() === now.getMonth() &&\n value.getDate() === now.getDate()\n )\n }, [value, now])\n\n const currentHour = now.getHours()\n const currentMinute = now.getMinutes()\n\n const isHourDisabled = React.useCallback(\n (hour: number) => {\n if (!disablePast || !isToday) return false\n\n return hour < currentHour\n },\n [disablePast, isToday, currentHour]\n )\n\n const isMinuteDisabled = React.useCallback(\n (minute: number) => {\n if (!disablePast || !isToday) return false\n if (selectedHour < currentHour) return true\n if (selectedHour === currentHour) return minute < currentMinute\n\n return false\n },\n [disablePast, isToday, selectedHour, currentHour, currentMinute]\n )\n\n const handleHourChange = React.useCallback(\n (hour: number) => {\n const base = value || now\n const minute = selectedMinute >= 0 ? selectedMinute : 0\n\n onChange(updateTime(base, hour, minute))\n },\n [onChange, value, now, selectedMinute]\n )\n\n const handleMinuteChange = React.useCallback(\n (minute: number) => {\n const base = value || now\n const hour = selectedHour >= 0 ? selectedHour : 0\n\n onChange(updateTime(base, hour, minute))\n onTimeSelect?.()\n },\n [onChange, onTimeSelect, value, now, selectedHour]\n )\n\n React.useEffect(() => {\n if (hoursRef.current) {\n const selectedElement = hoursRef.current.querySelector(\n `[data-value=\"${selectedHour}\"]`\n )\n\n if (selectedElement) {\n selectedElement.scrollIntoView?.({\n block: \"center\",\n behavior: \"auto\",\n })\n }\n }\n if (minutesRef.current) {\n const selectedElement = minutesRef.current.querySelector(\n `[data-value=\"${selectedMinute}\"]`\n )\n\n if (selectedElement) {\n selectedElement.scrollIntoView?.({\n block: \"center\",\n behavior: \"auto\",\n })\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div\n ref={ref}\n className={mergeClasses(\n styles.root,\n fillHeight && styles.fillHeight,\n className\n )}\n data-slot=\"timepicker\"\n {...{ [SLOT_ATTR]: \"timepicker\" }}\n >\n <div\n className={mergeClasses(\n styles.column,\n fillHeight && styles.columnFillHeight\n )}\n >\n <div\n className={mergeClasses(\n styles.scroll,\n fillHeight ? styles.scrollFill : styles.scrollFixed\n )}\n aria-label={hoursLabel}\n data-slot=\"timepicker-scroll\"\n role=\"group\"\n {...{ [SLOT_ATTR]: \"timepicker-scroll\" }}\n ref={hoursRef}\n >\n {HOURS.map((hour) => (\n <TimeButton\n isDisabled={isHourDisabled(hour)}\n isSelected={hour === selectedHour}\n key={hour}\n onClick={handleHourChange}\n value={hour}\n />\n ))}\n </div>\n </div>\n\n <div className={styles.separator}>:</div>\n\n <div\n className={mergeClasses(\n styles.column,\n fillHeight && styles.columnFillHeight\n )}\n >\n <div\n className={mergeClasses(\n styles.scroll,\n fillHeight ? styles.scrollFill : styles.scrollFixed\n )}\n aria-label={minutesLabel}\n data-slot=\"timepicker-scroll\"\n role=\"group\"\n {...{ [SLOT_ATTR]: \"timepicker-scroll\" }}\n ref={minutesRef}\n >\n {MINUTES.map((minute) => (\n <TimeButton\n isDisabled={isMinuteDisabled(minute)}\n isSelected={minute === selectedMinute}\n key={minute}\n onClick={handleMinuteChange}\n value={minute}\n />\n ))}\n </div>\n </div>\n </div>\n )\n }\n)\n"],"names":["HOURS","_","i","useStyles","makeZenithStyles","shorthands","tokens.spacingElement1","tokens.radiusMd","tokens.grayA5","tokens.grayA6","tokens.textBase","tokens.leadingBase","tokens.fontWeightSemibold","tokens.grayA8","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.grayA4","tokens.accentSolid","tokens.accentContrast","tokens.accentSolidHover","TimeButton","React","value","isSelected","isDisabled","onClick","styles","handleClick","jsx","mergeClasses","SLOT_ATTR","TimePicker","onChange","onTimeSelect","disablePast","currentTimeInTimezone","fillHeight","minuteStep","className","hoursLabel","minutesLabel","ref","step","MINUTES","buckets","m","selectedHour","getHours","rawMinute","getMinutes","selectedMinute","hoursRef","minutesRef","now","isToday","currentHour","currentMinute","isHourDisabled","hour","isMinuteDisabled","minute","handleHourChange","base","updateTime","handleMinuteChange","selectedElement","_a","_b","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"time-picker.js","sources":["../../../src/components/date-time-picker/time-picker.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\n\nimport {\n getHours,\n getMinutes,\n padNumber,\n updateTime,\n} from \"./date-time-picker-utils\"\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i)\n\nexport type TimePickerProps = {\n value: Date | null\n onChange: (date: Date) => void\n onTimeSelect?: () => void\n disablePast?: boolean\n currentTimeInTimezone?: Date\n fillHeight?: boolean\n minuteStep?: number\n className?: string\n /**\n * Accessible name for the hours column. Pass a translated string. These are ACCESSIBLE NAMES,\n * not visible headers, and the distinction is deliberate.\n */\n hoursLabel?: string\n /** Accessible name for the minutes column. Pass a translated string. See `hoursLabel`. */\n minutesLabel?: string\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"stretch\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n },\n fillHeight: {\n ...boxModel,\n height: \"100%\",\n },\n column: {\n ...boxModel,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"3.5rem\",\n },\n columnFillHeight: {\n ...boxModel,\n minHeight: \"0\",\n },\n scroll: {\n ...boxModel,\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n width: \"100%\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA5),\n scrollbarWidth: \"thin\",\n scrollbarColor: `${tokens.grayA6} transparent`,\n },\n scrollFixed: {\n ...boxModel,\n height: \"8rem\",\n },\n scrollFill: {\n ...boxModel,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n minHeight: \"0\",\n },\n separator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA8,\n },\n timeBtn: {\n ...nativeControl,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n ...shorthands.borderRadius(tokens.radiusMd),\n transitionProperty: \"background-color, color\",\n transitionDuration: \"150ms\",\n minHeight: \"2rem\",\n width: \"100%\",\n maxWidth: \"3rem\",\n ...shorthands.border(\"0\"),\n outlineStyle: \"none\",\n },\n timeBtnDefault: {\n backgroundColor: \"transparent\",\n color: tokens.grayA11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n },\n timeBtnSelected: {\n fontWeight: tokens.fontWeightSemibold,\n backgroundColor: tokens.accentSolid,\n color: tokens.accentContrast,\n \":hover\": {\n backgroundColor: tokens.accentSolidHover,\n },\n },\n timeBtnDisabled: {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n timeBtnEnabled: {\n cursor: \"pointer\",\n },\n})\n\ntype TimeButtonProps = {\n value: number\n isSelected: boolean\n isDisabled: boolean\n onClick: (value: number) => void\n}\n\nconst TimeButton = React.memo(function TimeButton({\n value,\n isSelected,\n isDisabled,\n onClick,\n}: TimeButtonProps) {\n const styles = useStyles()\n const handleClick = React.useCallback(() => {\n if (!isDisabled) {\n onClick(value)\n }\n }, [onClick, value, isDisabled])\n\n return (\n <button\n aria-disabled={isDisabled}\n aria-pressed={isSelected}\n className={mergeClasses(\n styles.timeBtn,\n !isSelected && styles.timeBtnDefault,\n isSelected && styles.timeBtnSelected,\n isDisabled ? styles.timeBtnDisabled : styles.timeBtnEnabled\n )}\n data-selected={isSelected}\n data-slot=\"time-button\"\n {...{ [SLOT_ATTR]: \"time-button\" }}\n data-value={value}\n disabled={isDisabled}\n onClick={handleClick}\n type=\"button\"\n >\n {padNumber(value)}\n </button>\n )\n})\n\nTimeButton.displayName = \"TimeButton\"\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n function TimePicker(\n {\n value,\n onChange,\n onTimeSelect,\n disablePast = false,\n currentTimeInTimezone,\n fillHeight = false,\n minuteStep = 1,\n className,\n hoursLabel = \"Hours\",\n minutesLabel = \"Minutes\",\n },\n ref\n ) {\n const styles = useStyles()\n const step = Math.max(1, Math.floor(minuteStep))\n\n // Enumerate buckets 0, step, 2·step… stopping at <60 so a step that\n // doesn't divide 60 evenly (e.g. 7) can never produce an out-of-range\n // value like 63.\n const MINUTES = React.useMemo(() => {\n const buckets: number[] = []\n for (let m = 0; m < 60; m += step) buckets.push(m)\n\n return buckets\n }, [step])\n\n const selectedHour = value !== null ? getHours(value) : -1\n const rawMinute = value !== null ? getMinutes(value) : -1\n const selectedMinute =\n value === null\n ? -1\n : step === 1\n ? rawMinute\n : Math.min(\n MINUTES[MINUTES.length - 1],\n Math.round(rawMinute / step) * step\n )\n\n const hoursRef = React.useRef<HTMLDivElement>(null)\n const minutesRef = React.useRef<HTMLDivElement>(null)\n\n const now = React.useMemo(\n () => currentTimeInTimezone || new Date(),\n [currentTimeInTimezone]\n )\n const isToday = React.useMemo(() => {\n if (!value) return false\n\n return (\n value.getFullYear() === now.getFullYear() &&\n value.getMonth() === now.getMonth() &&\n value.getDate() === now.getDate()\n )\n }, [value, now])\n\n const currentHour = now.getHours()\n const currentMinute = now.getMinutes()\n\n const isHourDisabled = React.useCallback(\n (hour: number) => {\n if (!disablePast || !isToday) return false\n\n return hour < currentHour\n },\n [disablePast, isToday, currentHour]\n )\n\n const isMinuteDisabled = React.useCallback(\n (minute: number) => {\n if (!disablePast || !isToday) return false\n if (selectedHour < currentHour) return true\n if (selectedHour === currentHour) return minute < currentMinute\n\n return false\n },\n [disablePast, isToday, selectedHour, currentHour, currentMinute]\n )\n\n const handleHourChange = React.useCallback(\n (hour: number) => {\n const base = value || now\n const minute = selectedMinute >= 0 ? selectedMinute : 0\n\n onChange(updateTime(base, hour, minute))\n },\n [onChange, value, now, selectedMinute]\n )\n\n const handleMinuteChange = React.useCallback(\n (minute: number) => {\n const base = value || now\n const hour = selectedHour >= 0 ? selectedHour : 0\n\n onChange(updateTime(base, hour, minute))\n onTimeSelect?.()\n },\n [onChange, onTimeSelect, value, now, selectedHour]\n )\n\n React.useEffect(() => {\n if (hoursRef.current) {\n const selectedElement = hoursRef.current.querySelector(\n `[data-value=\"${selectedHour}\"]`\n )\n\n if (selectedElement) {\n selectedElement.scrollIntoView?.({\n block: \"center\",\n behavior: \"auto\",\n })\n }\n }\n if (minutesRef.current) {\n const selectedElement = minutesRef.current.querySelector(\n `[data-value=\"${selectedMinute}\"]`\n )\n\n if (selectedElement) {\n selectedElement.scrollIntoView?.({\n block: \"center\",\n behavior: \"auto\",\n })\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div\n ref={ref}\n className={mergeClasses(\n styles.root,\n fillHeight && styles.fillHeight,\n className\n )}\n data-slot=\"timepicker\"\n {...{ [SLOT_ATTR]: \"timepicker\" }}\n >\n <div\n className={mergeClasses(\n styles.column,\n fillHeight && styles.columnFillHeight\n )}\n >\n <div\n className={mergeClasses(\n styles.scroll,\n fillHeight ? styles.scrollFill : styles.scrollFixed\n )}\n aria-label={hoursLabel}\n data-slot=\"timepicker-scroll\"\n role=\"group\"\n {...{ [SLOT_ATTR]: \"timepicker-scroll\" }}\n ref={hoursRef}\n >\n {HOURS.map((hour) => (\n <TimeButton\n isDisabled={isHourDisabled(hour)}\n isSelected={hour === selectedHour}\n key={hour}\n onClick={handleHourChange}\n value={hour}\n />\n ))}\n </div>\n </div>\n\n <div className={styles.separator}>:</div>\n\n <div\n className={mergeClasses(\n styles.column,\n fillHeight && styles.columnFillHeight\n )}\n >\n <div\n className={mergeClasses(\n styles.scroll,\n fillHeight ? styles.scrollFill : styles.scrollFixed\n )}\n aria-label={minutesLabel}\n data-slot=\"timepicker-scroll\"\n role=\"group\"\n {...{ [SLOT_ATTR]: \"timepicker-scroll\" }}\n ref={minutesRef}\n >\n {MINUTES.map((minute) => (\n <TimeButton\n isDisabled={isMinuteDisabled(minute)}\n isSelected={minute === selectedMinute}\n key={minute}\n onClick={handleMinuteChange}\n value={minute}\n />\n ))}\n </div>\n </div>\n </div>\n )\n }\n)\n"],"names":["HOURS","_","i","useStyles","makeZenithStyles","shorthands","tokens.spacingElement1","boxModel","tokens.radiusMd","tokens.grayA5","tokens.grayA6","tokens.textBase","tokens.leadingBase","tokens.fontWeightSemibold","tokens.grayA8","nativeControl","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.grayA4","tokens.accentSolid","tokens.accentContrast","tokens.accentSolidHover","TimeButton","React","value","isSelected","isDisabled","onClick","styles","handleClick","jsx","mergeClasses","SLOT_ATTR","TimePicker","onChange","onTimeSelect","disablePast","currentTimeInTimezone","fillHeight","minuteStep","className","hoursLabel","minutesLabel","ref","step","MINUTES","buckets","m","selectedHour","getHours","rawMinute","getMinutes","selectedMinute","hoursRef","minutesRef","now","isToday","currentHour","currentMinute","isHourDisabled","hour","isMinuteDisabled","minute","handleHourChange","base","updateTime","handleMinuteChange","selectedElement","_a","_b","jsxs"],"mappings":"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"}
@@ -1,17 +1,23 @@
1
- import { jsx as e, jsxs as x } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as h } from "react/jsx-runtime";
2
2
  import * as n from "react";
3
- import { Root as b, Close as y, Content as v, Description as z, Overlay as R, Portal as S, Title as W, Trigger as L } from "../../vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js";
4
- import { mergeClasses as d, SLOT_ATTR as l, shorthands as s } from "@epilot/zenith-runtime/v1";
5
- import { useAppearanceAttributes as N } from "../appearance-boundary/appearance-boundary.js";
6
- import { useDensity as T } from "../density-provider/density-provider.js";
7
- import { makeZenithStyles as A } from "../../styles/make-styles.js";
8
- import { leadingSm as O, textSm as F, grayA11 as I, grayA12 as k, fontWeightSemibold as P, leadingLg as H, textLg as X, focusRing as h, accentSoft as j, accentA11 as B, spacingGroup2 as f, container5xl as E, container4xl as _, container3xl as M, container2xl as Z, containerXl as G, containerLg as q, containerMd as J, containerSm as K, body as Q, spacingElement2 as p, grayA1 as U, radiusXl as V, spacingLayout1 as Y } from "../../tokens/index.js";
9
- const c = A({
3
+ import { Root as N, Close as b, Content as S, Description as L, Overlay as W, Portal as A, Title as O, Trigger as I } from "../../vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js";
4
+ import { mergeClasses as d, SLOT_ATTR as s, shorthands as l } from "@epilot/zenith-runtime/v1";
5
+ import { useAppearanceAttributes as v } from "../appearance-boundary/appearance-boundary.js";
6
+ import { useDensity as k } from "../density-provider/density-provider.js";
7
+ import { makeZenithStyles as F } from "../../styles/make-styles.js";
8
+ import { boxModel as f, nativeControl as y } from "../../styles/host-reset.js";
9
+ import { OVERLAY_Z_INDEX as C } from "../../styles/overlay-layer.js";
10
+ import { leadingSm as E, textSm as P, grayA11 as X, grayA12 as _, fontWeightSemibold as H, leadingLg as j, textLg as B, focusRing as D, accentSoft as M, accentA11 as Z, spacingGroup2 as p, container5xl as G, container4xl as V, container3xl as Y, container2xl as q, containerXl as J, containerLg as K, containerMd as Q, containerSm as U, body as $, spacingElement2 as u, grayA1 as tt, radiusXl as ot, spacingLayout1 as at } from "../../tokens/index.js";
11
+ const c = F({
12
+ // For the bare native `<button>` a Trigger/Close renders. Not applied under `asChild`, where the
13
+ // child owns its own element and two atom sets would race for the same properties.
14
+ nativeTrigger: {
15
+ ...y
16
+ },
10
17
  overlay: {
11
18
  position: "fixed",
12
- ...s.inset(0),
13
- // v1's z-1300 is the overlay tier; no z-index token exists in this package.
14
- zIndex: 1300,
19
+ ...l.inset(0),
20
+ zIndex: C,
15
21
  backgroundColor: "rgb(0 0 0 / 50%)",
16
22
  "@media (prefers-reduced-motion: reduce)": {
17
23
  animationDuration: "0.01ms",
@@ -41,19 +47,19 @@ const c = A({
41
47
  }
42
48
  },
43
49
  content: {
44
- backgroundColor: Q,
50
+ ...f,
51
+ backgroundColor: $,
45
52
  position: "fixed",
46
53
  top: "50%",
47
54
  left: "50%",
48
- // v1's z-1300 is the overlay tier; no z-index token exists in this package.
49
- zIndex: 1300,
55
+ zIndex: C,
50
56
  display: "grid",
51
57
  width: "100%",
52
58
  maxWidth: "calc(100% - 2rem)",
53
59
  transform: "translate(-50%, -50%)",
54
- ...s.gap(Y),
55
- ...s.borderRadius(V),
56
- ...s.border("1px", "solid", U),
60
+ ...l.gap(at),
61
+ ...l.borderRadius(ot),
62
+ ...l.border("1px", "solid", tt),
57
63
  // v1 shadow-lg; elevation has no token in this package.
58
64
  boxShadow: "0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a",
59
65
  "@media (prefers-reduced-motion: reduce)": {
@@ -94,49 +100,52 @@ const c = A({
94
100
  animationDuration: "150ms",
95
101
  animationTimingFunction: "cubic-bezier(0.4, 0, 1, 1)"
96
102
  },
97
- "&[data-size='sm']": { maxWidth: K },
98
- "&[data-size='md']": { maxWidth: J },
99
- "&[data-size='lg']": { maxWidth: q },
100
- "&[data-size='xl']": { maxWidth: G },
101
- "&[data-size='2xl']": { maxWidth: Z },
102
- "&[data-size='3xl']": { maxWidth: M },
103
- "&[data-size='4xl']": { maxWidth: _ },
104
- "&[data-size='5xl']": { maxWidth: E },
103
+ "&[data-size='sm']": { maxWidth: U },
104
+ "&[data-size='md']": { maxWidth: Q },
105
+ "&[data-size='lg']": { maxWidth: K },
106
+ "&[data-size='xl']": { maxWidth: J },
107
+ "&[data-size='2xl']": { maxWidth: q },
108
+ "&[data-size='3xl']": { maxWidth: Y },
109
+ "&[data-size='4xl']": { maxWidth: V },
110
+ "&[data-size='5xl']": { maxWidth: G },
105
111
  "&[data-size='full-width']": { maxWidth: "100%" }
106
112
  },
107
113
  contentPadding: {
108
- ...s.padding(f)
114
+ ...f,
115
+ ...l.padding(p)
109
116
  },
110
117
  close: {
111
118
  ":focus-visible": {
112
119
  outlineWidth: "2px",
113
120
  outlineStyle: "solid",
114
121
  outlineOffset: "2px",
115
- outlineColor: h
122
+ outlineColor: D
116
123
  }
117
124
  },
118
125
  closeButton: {
126
+ ...y,
119
127
  position: "absolute",
120
- top: f,
121
- right: f,
122
- ...s.padding(p),
128
+ top: p,
129
+ right: p,
130
+ ...l.padding(u),
123
131
  // v1 rounded-full; no full-radius token exists in this package.
124
132
  borderRadius: "9999px",
125
133
  cursor: "pointer",
126
- color: B,
134
+ color: Z,
127
135
  ":hover": {
128
- backgroundColor: j
136
+ backgroundColor: M
129
137
  },
130
138
  ":focus-visible": {
131
139
  outlineWidth: "2px",
132
140
  outlineStyle: "solid",
133
141
  outlineOffset: "2px",
134
- outlineColor: h
142
+ outlineColor: D
135
143
  },
136
144
  ":disabled": {
137
145
  pointerEvents: "none"
138
146
  },
139
147
  "& svg": {
148
+ display: "block",
140
149
  pointerEvents: "none",
141
150
  flexShrink: 0,
142
151
  width: "1rem",
@@ -146,26 +155,29 @@ const c = A({
146
155
  header: {
147
156
  display: "flex",
148
157
  flexDirection: "column",
149
- ...s.gap(p),
158
+ ...l.gap(u),
150
159
  textAlign: "left"
151
160
  },
152
161
  footer: {
153
162
  display: "flex",
154
- ...s.gap(p),
163
+ ...l.gap(u),
155
164
  justifyContent: "flex-end"
156
165
  },
157
166
  title: {
158
- fontSize: X,
159
- lineHeight: H,
160
- fontWeight: P,
161
- color: k
167
+ ...l.margin(0),
168
+ fontSize: B,
169
+ lineHeight: j,
170
+ fontWeight: H,
171
+ color: _
162
172
  },
163
173
  description: {
164
- color: I,
165
- fontSize: F,
166
- lineHeight: O
174
+ ...l.margin(0),
175
+ color: X,
176
+ fontSize: P,
177
+ lineHeight: E
167
178
  },
168
179
  srOnly: {
180
+ ...f,
169
181
  position: "absolute",
170
182
  width: "1px",
171
183
  height: "1px",
@@ -175,7 +187,7 @@ const c = A({
175
187
  clip: "rect(0, 0, 0, 0)",
176
188
  whiteSpace: "nowrap"
177
189
  }
178
- }), $ = n.forwardRef(
190
+ }), it = n.forwardRef(
179
191
  function(t, o) {
180
192
  return /* @__PURE__ */ e(
181
193
  "svg",
@@ -197,99 +209,109 @@ const c = A({
197
209
  }
198
210
  );
199
211
  }
200
- ), lt = n.forwardRef(
212
+ ), ft = n.forwardRef(
201
213
  function(t, o) {
202
- return /* @__PURE__ */ e(b, { "data-slot": "dialog", ...t });
214
+ return /* @__PURE__ */ e(N, { "data-slot": "dialog", ...t });
203
215
  }
204
- ), st = n.forwardRef(function({ className: t, ...o }, a) {
216
+ ), pt = n.forwardRef(function({ className: t, ...o }, a) {
217
+ const i = c();
205
218
  return /* @__PURE__ */ e(
206
- L,
219
+ I,
207
220
  {
208
221
  ref: a,
209
222
  "data-slot": "dialog-trigger",
210
- [l]: "dialog-trigger",
211
- className: t,
223
+ [s]: "dialog-trigger",
224
+ className: d(
225
+ !o.asChild && i.nativeTrigger,
226
+ t
227
+ ),
212
228
  ...o
213
229
  }
214
230
  );
215
- }), dt = n.forwardRef(
231
+ }), ut = n.forwardRef(
216
232
  function(t, o) {
217
233
  return /* @__PURE__ */ e(
218
- S,
234
+ A,
219
235
  {
220
236
  "data-slot": "dialog-portal",
221
- [l]: "dialog-portal",
237
+ [s]: "dialog-portal",
222
238
  ...t
223
239
  }
224
240
  );
225
241
  }
226
- ), ct = n.forwardRef(function({ className: t, ...o }, a) {
227
- const i = c();
242
+ ), xt = n.forwardRef(function({ className: t, ...o }, a) {
243
+ const i = c(), m = v();
228
244
  return /* @__PURE__ */ e(
229
- R,
245
+ W,
230
246
  {
231
247
  ref: a,
232
248
  "data-slot": "dialog-overlay",
233
- [l]: "dialog-overlay",
249
+ [s]: "dialog-overlay",
250
+ ...m,
234
251
  className: d(i.overlay, t),
235
252
  ...o
236
253
  }
237
254
  );
238
- }), mt = n.forwardRef(function({
255
+ }), ht = n.forwardRef(function({
239
256
  className: t,
240
257
  children: o,
241
258
  showCloseButton: a = !0,
242
- flush: i = !1,
243
- size: g = "lg",
244
- ...D
245
- }, C) {
246
- const m = c(), u = T(), w = N();
247
- return /* @__PURE__ */ x(
248
- v,
259
+ closeButtonLabel: i = "Close",
260
+ flush: m = !1,
261
+ size: w = "lg",
262
+ ...z
263
+ }, R) {
264
+ const g = c(), x = k(), T = v();
265
+ return /* @__PURE__ */ h(
266
+ S,
249
267
  {
250
- ref: C,
268
+ ref: R,
251
269
  "data-slot": "dialog-content",
252
- [l]: "dialog-content",
253
- ...u !== void 0 ? { "data-density": u } : {},
254
- ...w,
255
- "data-size": g,
270
+ [s]: "dialog-content",
271
+ ...x !== void 0 ? { "data-density": x } : {},
272
+ ...T,
273
+ "data-size": w,
256
274
  className: d(
257
- m.content,
258
- !i && m.contentPadding,
275
+ g.content,
276
+ !m && g.contentPadding,
259
277
  t
260
278
  ),
261
- ...D,
279
+ ...z,
262
280
  children: [
263
281
  o,
264
- a && /* @__PURE__ */ x(
265
- y,
282
+ a && /* @__PURE__ */ h(
283
+ b,
266
284
  {
267
285
  "data-slot": "dialog-close",
268
- [l]: "dialog-close",
269
- className: m.closeButton,
286
+ [s]: "dialog-close",
287
+ className: g.closeButton,
270
288
  children: [
271
- /* @__PURE__ */ e($, {}),
272
- /* @__PURE__ */ e("span", { className: m.srOnly, children: "Close" })
289
+ /* @__PURE__ */ e(it, {}),
290
+ /* @__PURE__ */ e("span", { className: g.srOnly, children: i })
273
291
  ]
274
292
  }
275
293
  )
276
294
  ]
277
295
  }
278
296
  );
279
- }), gt = n.forwardRef(function({ className: t, children: o, ...a }, i) {
280
- const g = c();
297
+ }), yt = n.forwardRef(function({ className: t, children: o, ...a }, i) {
298
+ const m = c();
281
299
  return /* @__PURE__ */ e(
282
- y,
300
+ b,
283
301
  {
284
302
  ref: i,
285
303
  "data-slot": "dialog-close",
286
- [l]: "dialog-close",
287
- className: d(g.close, t),
304
+ [s]: "dialog-close",
305
+ className: d(
306
+ !a.asChild && m.nativeTrigger,
307
+ m.close,
308
+ t
309
+ ),
288
310
  ...a,
289
311
  children: o
290
312
  }
291
313
  );
292
- }), ft = n.forwardRef(
314
+ }), Ct = n.forwardRef(
293
315
  function({ className: t, ...o }, a) {
294
316
  const i = c();
295
317
  return /* @__PURE__ */ e(
@@ -297,13 +319,13 @@ const c = A({
297
319
  {
298
320
  ref: a,
299
321
  "data-slot": "dialog-header",
300
- [l]: "dialog-header",
322
+ [s]: "dialog-header",
301
323
  className: d(i.header, t),
302
324
  ...o
303
325
  }
304
326
  );
305
327
  }
306
- ), pt = n.forwardRef(
328
+ ), Dt = n.forwardRef(
307
329
  function({ className: t, ...o }, a) {
308
330
  const i = c();
309
331
  return /* @__PURE__ */ e(
@@ -311,47 +333,47 @@ const c = A({
311
333
  {
312
334
  ref: a,
313
335
  "data-slot": "dialog-footer",
314
- [l]: "dialog-footer",
336
+ [s]: "dialog-footer",
315
337
  className: d(i.footer, t),
316
338
  ...o
317
339
  }
318
340
  );
319
341
  }
320
- ), ut = n.forwardRef(function({ className: t, ...o }, a) {
342
+ ), bt = n.forwardRef(function({ className: t, ...o }, a) {
321
343
  const i = c();
322
344
  return /* @__PURE__ */ e(
323
- W,
345
+ O,
324
346
  {
325
347
  ref: a,
326
348
  "data-slot": "dialog-title",
327
- [l]: "dialog-title",
349
+ [s]: "dialog-title",
328
350
  className: d(i.title, t),
329
351
  ...o
330
352
  }
331
353
  );
332
- }), xt = n.forwardRef(function({ className: t, ...o }, a) {
354
+ }), vt = n.forwardRef(function({ className: t, ...o }, a) {
333
355
  const i = c();
334
356
  return /* @__PURE__ */ e(
335
- z,
357
+ L,
336
358
  {
337
359
  ref: a,
338
360
  "data-slot": "dialog-description",
339
- [l]: "dialog-description",
361
+ [s]: "dialog-description",
340
362
  className: d(i.description, t),
341
363
  ...o
342
364
  }
343
365
  );
344
366
  });
345
367
  export {
346
- lt as Dialog,
347
- gt as DialogClose,
348
- mt as DialogContent,
349
- xt as DialogDescription,
350
- pt as DialogFooter,
351
- ft as DialogHeader,
352
- ct as DialogOverlay,
353
- dt as DialogPortal,
354
- ut as DialogTitle,
355
- st as DialogTrigger
368
+ ft as Dialog,
369
+ yt as DialogClose,
370
+ ht as DialogContent,
371
+ vt as DialogDescription,
372
+ Dt as DialogFooter,
373
+ Ct as DialogHeader,
374
+ xt as DialogOverlay,
375
+ ut as DialogPortal,
376
+ bt as DialogTitle,
377
+ pt as DialogTrigger
356
378
  };
357
379
  //# sourceMappingURL=dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sources":["../../../src/components/dialog/dialog.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nconst useStyles = makeZenithStyles({\n overlay: {\n position: \"fixed\",\n ...shorthands.inset(0),\n // v1's z-1300 is the overlay tier; no z-index token exists in this package.\n zIndex: 1300,\n backgroundColor: \"rgb(0 0 0 / 50%)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n animationDuration: \"0.01ms\",\n animationIterationCount: \"1\",\n \"&[data-state='open']\": {\n animationDuration: \"0.01ms\",\n },\n \"&[data-state='closed']\": {\n animationDuration: \"0.01ms\",\n },\n },\n \"&[data-state='open']\": {\n animationName: {\n from: { opacity: 0 },\n to: { opacity: 1 },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n \"&[data-state='closed']\": {\n animationName: {\n from: { opacity: 1 },\n to: { opacity: 0 },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 1, 1)\",\n },\n },\n content: {\n backgroundColor: tokens.body,\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n // v1's z-1300 is the overlay tier; no z-index token exists in this package.\n zIndex: 1300,\n display: \"grid\",\n width: \"100%\",\n maxWidth: \"calc(100% - 2rem)\",\n transform: \"translate(-50%, -50%)\",\n ...shorthands.gap(tokens.spacingLayout1),\n ...shorthands.borderRadius(tokens.radiusXl),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA1),\n // v1 shadow-lg; elevation has no token in this package.\n boxShadow: \"0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\",\n \"@media (prefers-reduced-motion: reduce)\": {\n animationDuration: \"0.01ms\",\n animationIterationCount: \"1\",\n \"&[data-state='open']\": {\n animationDuration: \"0.01ms\",\n },\n \"&[data-state='closed']\": {\n animationDuration: \"0.01ms\",\n },\n },\n \"&[data-state='open']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: \"translate(-50%, -50%) scale(0.95)\",\n },\n to: {\n opacity: 1,\n transform: \"translate(-50%, -50%) scale(1)\",\n },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n \"&[data-state='closed']\": {\n animationName: {\n from: {\n opacity: 1,\n transform: \"translate(-50%, -50%) scale(1)\",\n },\n to: {\n opacity: 0,\n transform: \"translate(-50%, -50%) scale(0.95)\",\n },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 1, 1)\",\n },\n \"&[data-size='sm']\": { maxWidth: tokens.containerSm },\n \"&[data-size='md']\": { maxWidth: tokens.containerMd },\n \"&[data-size='lg']\": { maxWidth: tokens.containerLg },\n \"&[data-size='xl']\": { maxWidth: tokens.containerXl },\n \"&[data-size='2xl']\": { maxWidth: tokens.container2xl },\n \"&[data-size='3xl']\": { maxWidth: tokens.container3xl },\n \"&[data-size='4xl']\": { maxWidth: tokens.container4xl },\n \"&[data-size='5xl']\": { maxWidth: tokens.container5xl },\n \"&[data-size='full-width']\": { maxWidth: \"100%\" },\n },\n contentPadding: {\n ...shorthands.padding(tokens.spacingGroup2),\n },\n close: {\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.focusRing,\n },\n },\n closeButton: {\n position: \"absolute\",\n top: tokens.spacingGroup2,\n right: tokens.spacingGroup2,\n ...shorthands.padding(tokens.spacingElement2),\n // v1 rounded-full; no full-radius token exists in this package.\n borderRadius: \"9999px\",\n cursor: \"pointer\",\n color: tokens.accentA11,\n \":hover\": {\n backgroundColor: tokens.accentSoft,\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.focusRing,\n },\n \":disabled\": {\n pointerEvents: \"none\",\n },\n \"& svg\": {\n pointerEvents: \"none\",\n flexShrink: 0,\n width: \"1rem\",\n height: \"1rem\",\n },\n },\n header: {\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingElement2),\n textAlign: \"left\",\n },\n footer: {\n display: \"flex\",\n ...shorthands.gap(tokens.spacingElement2),\n justifyContent: \"flex-end\",\n },\n title: {\n fontSize: tokens.textLg,\n lineHeight: tokens.leadingLg,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA12,\n },\n description: {\n color: tokens.grayA11,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n srOnly: {\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n padding: 0,\n margin: \"-1px\",\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nconst XIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n function XIcon(props, ref) {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M4.38333 5.31667L1.11667 8.58333C0.994445 8.70556 0.838889 8.76667 0.65 8.76667C0.461111 8.76667 0.305556 8.70556 0.183333 8.58333C0.0611111 8.46111 0 8.30556 0 8.11667C0 7.92778 0.0611111 7.77222 0.183333 7.65L3.45 4.38333L0.183333 1.11667C0.0611111 0.994445 0 0.838889 0 0.65C0 0.461111 0.0611111 0.305556 0.183333 0.183333C0.305556 0.0611111 0.461111 0 0.65 0C0.838889 0 0.994445 0.0611111 1.11667 0.183333L4.38333 3.45L7.65 0.183333C7.77222 0.0611111 7.92778 0 8.11667 0C8.30556 0 8.46111 0.0611111 8.58333 0.183333C8.70556 0.305556 8.76667 0.461111 8.76667 0.65C8.76667 0.838889 8.70556 0.994445 8.58333 1.11667L5.31667 4.38333L8.58333 7.65C8.70556 7.77222 8.76667 7.92778 8.76667 8.11667C8.76667 8.30556 8.70556 8.46111 8.58333 8.58333C8.46111 8.70556 8.30556 8.76667 8.11667 8.76667C7.92778 8.76667 7.77222 8.70556 7.65 8.58333L4.38333 5.31667Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n }\n)\n\nexport type DialogProps = React.ComponentProps<typeof DialogPrimitive.Root>\n\nexport const Dialog = React.forwardRef<HTMLElement, DialogProps>(\n function Dialog(props, _ref) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n }\n)\n\nexport type DialogTriggerProps = React.ComponentProps<\n typeof DialogPrimitive.Trigger\n>\n\nexport const DialogTrigger = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Trigger>,\n DialogTriggerProps\n>(function DialogTrigger({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Trigger\n ref={ref}\n data-slot=\"dialog-trigger\"\n {...{ [SLOT_ATTR]: \"dialog-trigger\" }}\n className={className}\n {...props}\n />\n )\n})\n\nexport type DialogPortalProps = React.ComponentProps<\n typeof DialogPrimitive.Portal\n>\n\nexport const DialogPortal = React.forwardRef<HTMLElement, DialogPortalProps>(\n function DialogPortal(props, _ref) {\n return (\n <DialogPrimitive.Portal\n data-slot=\"dialog-portal\"\n {...{ [SLOT_ATTR]: \"dialog-portal\" }}\n {...props}\n />\n )\n }\n)\n\nexport type DialogOverlayProps = React.ComponentProps<\n typeof DialogPrimitive.Overlay\n>\n\nexport const DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(function DialogOverlay({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n {...{ [SLOT_ATTR]: \"dialog-overlay\" }}\n className={mergeClasses(styles.overlay, className)}\n {...props}\n />\n )\n})\n\nexport type DialogContentSize =\n \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\" | \"full-width\"\n\nexport type DialogContentProps = React.ComponentProps<\n typeof DialogPrimitive.Content\n> & {\n showCloseButton?: boolean\n size?: DialogContentSize\n flush?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(function DialogContent(\n {\n className,\n children,\n showCloseButton = true,\n flush = false,\n size = \"lg\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary: stamp only an explicit override, never a\n // default, so an ambient shell density (already reaching this portal via ordinary DOM\n // inheritance) isn't masked.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n\n return (\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n {...{ [SLOT_ATTR]: \"dialog-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n data-size={size}\n className={mergeClasses(\n styles.content,\n !flush && styles.contentPadding,\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n {...{ [SLOT_ATTR]: \"dialog-close\" }}\n className={styles.closeButton}\n >\n <XIcon />\n <span className={styles.srOnly}>Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n )\n})\n\nexport type DialogCloseProps = React.ComponentProps<\n typeof DialogPrimitive.Close\n>\n\nexport const DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n DialogCloseProps\n>(function DialogClose({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Close\n ref={ref}\n data-slot=\"dialog-close\"\n {...{ [SLOT_ATTR]: \"dialog-close\" }}\n className={mergeClasses(styles.close, className)}\n {...props}\n >\n {children}\n </DialogPrimitive.Close>\n )\n})\n\nexport type DialogHeaderProps = React.ComponentProps<\"div\">\n\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n function DialogHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"dialog-header\"\n {...{ [SLOT_ATTR]: \"dialog-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n }\n)\n\nexport type DialogFooterProps = React.ComponentProps<\"div\">\n\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n function DialogFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"dialog-footer\"\n {...{ [SLOT_ATTR]: \"dialog-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n }\n)\n\nexport type DialogTitleProps = React.ComponentProps<\n typeof DialogPrimitive.Title\n>\n\nexport const DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n DialogTitleProps\n>(function DialogTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n {...{ [SLOT_ATTR]: \"dialog-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n})\n\nexport type DialogDescriptionProps = React.ComponentProps<\n typeof DialogPrimitive.Description\n>\n\nexport const DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n DialogDescriptionProps\n>(function DialogDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n {...{ [SLOT_ATTR]: \"dialog-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n"],"names":["useStyles","makeZenithStyles","shorthands","tokens.body","tokens.spacingLayout1","tokens.radiusXl","tokens.grayA1","tokens.containerSm","tokens.containerMd","tokens.containerLg","tokens.containerXl","tokens.container2xl","tokens.container3xl","tokens.container4xl","tokens.container5xl","tokens.spacingGroup2","tokens.focusRing","tokens.spacingElement2","tokens.accentA11","tokens.accentSoft","tokens.textLg","tokens.leadingLg","tokens.fontWeightSemibold","tokens.grayA12","tokens.grayA11","tokens.textSm","tokens.leadingSm","XIcon","React","props","ref","jsx","Dialog","_ref","DialogPrimitive.Root","DialogTrigger","className","DialogPrimitive.Trigger","SLOT_ATTR","DialogPortal","DialogPrimitive.Portal","DialogOverlay","styles","DialogPrimitive.Overlay","mergeClasses","DialogContent","children","showCloseButton","flush","size","override","useDensity","appearance","useAppearanceAttributes","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","DialogClose","DialogHeader","DialogFooter","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sources":["../../../src/components/dialog/dialog.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport { OVERLAY_Z_INDEX } from \"../../styles/overlay-layer\"\nimport * as tokens from \"../../tokens\"\n\nconst useStyles = makeZenithStyles({\n // For the bare native `<button>` a Trigger/Close renders. Not applied under `asChild`, where the\n // child owns its own element and two atom sets would race for the same properties.\n nativeTrigger: {\n ...nativeControl,\n },\n overlay: {\n position: \"fixed\",\n ...shorthands.inset(0),\n zIndex: OVERLAY_Z_INDEX,\n backgroundColor: \"rgb(0 0 0 / 50%)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n animationDuration: \"0.01ms\",\n animationIterationCount: \"1\",\n \"&[data-state='open']\": {\n animationDuration: \"0.01ms\",\n },\n \"&[data-state='closed']\": {\n animationDuration: \"0.01ms\",\n },\n },\n \"&[data-state='open']\": {\n animationName: {\n from: { opacity: 0 },\n to: { opacity: 1 },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n \"&[data-state='closed']\": {\n animationName: {\n from: { opacity: 1 },\n to: { opacity: 0 },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 1, 1)\",\n },\n },\n content: {\n ...boxModel,\n backgroundColor: tokens.body,\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n zIndex: OVERLAY_Z_INDEX,\n display: \"grid\",\n width: \"100%\",\n maxWidth: \"calc(100% - 2rem)\",\n transform: \"translate(-50%, -50%)\",\n ...shorthands.gap(tokens.spacingLayout1),\n ...shorthands.borderRadius(tokens.radiusXl),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA1),\n // v1 shadow-lg; elevation has no token in this package.\n boxShadow: \"0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\",\n \"@media (prefers-reduced-motion: reduce)\": {\n animationDuration: \"0.01ms\",\n animationIterationCount: \"1\",\n \"&[data-state='open']\": {\n animationDuration: \"0.01ms\",\n },\n \"&[data-state='closed']\": {\n animationDuration: \"0.01ms\",\n },\n },\n \"&[data-state='open']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: \"translate(-50%, -50%) scale(0.95)\",\n },\n to: {\n opacity: 1,\n transform: \"translate(-50%, -50%) scale(1)\",\n },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n \"&[data-state='closed']\": {\n animationName: {\n from: {\n opacity: 1,\n transform: \"translate(-50%, -50%) scale(1)\",\n },\n to: {\n opacity: 0,\n transform: \"translate(-50%, -50%) scale(0.95)\",\n },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 1, 1)\",\n },\n \"&[data-size='sm']\": { maxWidth: tokens.containerSm },\n \"&[data-size='md']\": { maxWidth: tokens.containerMd },\n \"&[data-size='lg']\": { maxWidth: tokens.containerLg },\n \"&[data-size='xl']\": { maxWidth: tokens.containerXl },\n \"&[data-size='2xl']\": { maxWidth: tokens.container2xl },\n \"&[data-size='3xl']\": { maxWidth: tokens.container3xl },\n \"&[data-size='4xl']\": { maxWidth: tokens.container4xl },\n \"&[data-size='5xl']\": { maxWidth: tokens.container5xl },\n \"&[data-size='full-width']\": { maxWidth: \"100%\" },\n },\n contentPadding: {\n ...boxModel,\n ...shorthands.padding(tokens.spacingGroup2),\n },\n close: {\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.focusRing,\n },\n },\n closeButton: {\n ...nativeControl,\n position: \"absolute\",\n top: tokens.spacingGroup2,\n right: tokens.spacingGroup2,\n ...shorthands.padding(tokens.spacingElement2),\n // v1 rounded-full; no full-radius token exists in this package.\n borderRadius: \"9999px\",\n cursor: \"pointer\",\n color: tokens.accentA11,\n \":hover\": {\n backgroundColor: tokens.accentSoft,\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"2px\",\n outlineColor: tokens.focusRing,\n },\n \":disabled\": {\n pointerEvents: \"none\",\n },\n \"& svg\": {\n display: \"block\",\n pointerEvents: \"none\",\n flexShrink: 0,\n width: \"1rem\",\n height: \"1rem\",\n },\n },\n header: {\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingElement2),\n textAlign: \"left\",\n },\n footer: {\n display: \"flex\",\n ...shorthands.gap(tokens.spacingElement2),\n justifyContent: \"flex-end\",\n },\n title: {\n ...shorthands.margin(0),\n fontSize: tokens.textLg,\n lineHeight: tokens.leadingLg,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA12,\n },\n description: {\n ...shorthands.margin(0),\n color: tokens.grayA11,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n padding: 0,\n margin: \"-1px\",\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n },\n})\n\nconst XIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n function XIcon(props, ref) {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M4.38333 5.31667L1.11667 8.58333C0.994445 8.70556 0.838889 8.76667 0.65 8.76667C0.461111 8.76667 0.305556 8.70556 0.183333 8.58333C0.0611111 8.46111 0 8.30556 0 8.11667C0 7.92778 0.0611111 7.77222 0.183333 7.65L3.45 4.38333L0.183333 1.11667C0.0611111 0.994445 0 0.838889 0 0.65C0 0.461111 0.0611111 0.305556 0.183333 0.183333C0.305556 0.0611111 0.461111 0 0.65 0C0.838889 0 0.994445 0.0611111 1.11667 0.183333L4.38333 3.45L7.65 0.183333C7.77222 0.0611111 7.92778 0 8.11667 0C8.30556 0 8.46111 0.0611111 8.58333 0.183333C8.70556 0.305556 8.76667 0.461111 8.76667 0.65C8.76667 0.838889 8.70556 0.994445 8.58333 1.11667L5.31667 4.38333L8.58333 7.65C8.70556 7.77222 8.76667 7.92778 8.76667 8.11667C8.76667 8.30556 8.70556 8.46111 8.58333 8.58333C8.46111 8.70556 8.30556 8.76667 8.11667 8.76667C7.92778 8.76667 7.77222 8.70556 7.65 8.58333L4.38333 5.31667Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n }\n)\n\nexport type DialogProps = React.ComponentProps<typeof DialogPrimitive.Root>\n\nexport const Dialog = React.forwardRef<HTMLElement, DialogProps>(\n function Dialog(props, _ref) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n }\n)\n\nexport type DialogTriggerProps = React.ComponentProps<\n typeof DialogPrimitive.Trigger\n>\n\nexport const DialogTrigger = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Trigger>,\n DialogTriggerProps\n>(function DialogTrigger({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Trigger\n ref={ref}\n data-slot=\"dialog-trigger\"\n {...{ [SLOT_ATTR]: \"dialog-trigger\" }}\n className={mergeClasses(\n !props.asChild && styles.nativeTrigger,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type DialogPortalProps = React.ComponentProps<\n typeof DialogPrimitive.Portal\n>\n\nexport const DialogPortal = React.forwardRef<HTMLElement, DialogPortalProps>(\n function DialogPortal(props, _ref) {\n return (\n <DialogPrimitive.Portal\n data-slot=\"dialog-portal\"\n {...{ [SLOT_ATTR]: \"dialog-portal\" }}\n {...props}\n />\n )\n }\n)\n\nexport type DialogOverlayProps = React.ComponentProps<\n typeof DialogPrimitive.Overlay\n>\n\nexport const DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(function DialogOverlay({ className, ...props }, ref) {\n const styles = useStyles()\n // The overlay is portalled too, so it re-stamps the boundary's appearance like the content (#8).\n const appearance = useAppearanceAttributes()\n\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n data-slot=\"dialog-overlay\"\n {...{ [SLOT_ATTR]: \"dialog-overlay\" }}\n {...appearance}\n className={mergeClasses(styles.overlay, className)}\n {...props}\n />\n )\n})\n\nexport type DialogContentSize =\n \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\" | \"full-width\"\n\nexport type DialogContentProps = React.ComponentProps<\n typeof DialogPrimitive.Content\n> & {\n showCloseButton?: boolean\n /**\n * Accessible name of the built-in close button, read by screen readers. Pass a translated\n * string for any locale other than English. Defaults to \"Close\".\n */\n closeButtonLabel?: string\n size?: DialogContentSize\n flush?: boolean\n}\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(function DialogContent(\n {\n className,\n children,\n showCloseButton = true,\n closeButtonLabel = \"Close\",\n flush = false,\n size = \"lg\",\n ...props\n },\n ref\n) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary: stamp only an explicit override, never a\n // default, so an ambient shell density (already reaching this portal via ordinary DOM\n // inheritance) isn't masked.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n\n return (\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n {...{ [SLOT_ATTR]: \"dialog-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n data-size={size}\n className={mergeClasses(\n styles.content,\n !flush && styles.contentPadding,\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n {...{ [SLOT_ATTR]: \"dialog-close\" }}\n className={styles.closeButton}\n >\n <XIcon />\n <span className={styles.srOnly}>{closeButtonLabel}</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n )\n})\n\nexport type DialogCloseProps = React.ComponentProps<\n typeof DialogPrimitive.Close\n>\n\nexport const DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n DialogCloseProps\n>(function DialogClose({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Close\n ref={ref}\n data-slot=\"dialog-close\"\n {...{ [SLOT_ATTR]: \"dialog-close\" }}\n className={mergeClasses(\n !props.asChild && styles.nativeTrigger,\n styles.close,\n className\n )}\n {...props}\n >\n {children}\n </DialogPrimitive.Close>\n )\n})\n\nexport type DialogHeaderProps = React.ComponentProps<\"div\">\n\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n function DialogHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"dialog-header\"\n {...{ [SLOT_ATTR]: \"dialog-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n }\n)\n\nexport type DialogFooterProps = React.ComponentProps<\"div\">\n\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n function DialogFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"dialog-footer\"\n {...{ [SLOT_ATTR]: \"dialog-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n }\n)\n\nexport type DialogTitleProps = React.ComponentProps<\n typeof DialogPrimitive.Title\n>\n\nexport const DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n DialogTitleProps\n>(function DialogTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n {...{ [SLOT_ATTR]: \"dialog-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n})\n\nexport type DialogDescriptionProps = React.ComponentProps<\n typeof DialogPrimitive.Description\n>\n\nexport const DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n DialogDescriptionProps\n>(function DialogDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n {...{ [SLOT_ATTR]: \"dialog-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n"],"names":["useStyles","makeZenithStyles","nativeControl","shorthands","OVERLAY_Z_INDEX","boxModel","tokens.body","tokens.spacingLayout1","tokens.radiusXl","tokens.grayA1","tokens.containerSm","tokens.containerMd","tokens.containerLg","tokens.containerXl","tokens.container2xl","tokens.container3xl","tokens.container4xl","tokens.container5xl","tokens.spacingGroup2","tokens.focusRing","tokens.spacingElement2","tokens.accentA11","tokens.accentSoft","tokens.textLg","tokens.leadingLg","tokens.fontWeightSemibold","tokens.grayA12","tokens.grayA11","tokens.textSm","tokens.leadingSm","XIcon","React","props","ref","jsx","Dialog","_ref","DialogPrimitive.Root","DialogTrigger","className","styles","DialogPrimitive.Trigger","SLOT_ATTR","mergeClasses","DialogPortal","DialogPrimitive.Portal","DialogOverlay","appearance","useAppearanceAttributes","DialogPrimitive.Overlay","DialogContent","children","showCloseButton","closeButtonLabel","flush","size","override","useDensity","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","DialogClose","DialogHeader","DialogFooter","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":";;;;;;;;;;AAaA,MAAMA,IAAYC,EAAiB;AAAA;AAAA;AAAA,EAGjC,eAAe;AAAA,IACb,GAAGC;AAAA,EAAA;AAAA,EAEL,SAAS;AAAA,IACP,UAAU;AAAA,IACV,GAAGC,EAAW,MAAM,CAAC;AAAA,IACrB,QAAQC;AAAA,IACR,iBAAiB;AAAA,IACjB,2CAA2C;AAAA,MACzC,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,QACtB,mBAAmB;AAAA,MAAA;AAAA,MAErB,0BAA0B;AAAA,QACxB,mBAAmB;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,wBAAwB;AAAA,MACtB,eAAe;AAAA,QACb,MAAM,EAAE,SAAS,EAAA;AAAA,QACjB,IAAI,EAAE,SAAS,EAAA;AAAA,MAAE;AAAA,MAEnB,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,IAAA;AAAA,IAE3B,0BAA0B;AAAA,MACxB,eAAe;AAAA,QACb,MAAM,EAAE,SAAS,EAAA;AAAA,QACjB,IAAI,EAAE,SAAS,EAAA;AAAA,MAAE;AAAA,MAEnB,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,IAAA;AAAA,EAC3B;AAAA,EAEF,SAAS;AAAA,IACP,GAAGC;AAAA,IACH,iBAAiBC;AAAAA,IACjB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQF;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,GAAGD,EAAW,IAAII,EAAqB;AAAA,IACvC,GAAGJ,EAAW,aAAaK,EAAe;AAAA,IAC1C,GAAGL,EAAW,OAAO,OAAO,SAASM,EAAa;AAAA;AAAA,IAElD,WAAW;AAAA,IACX,2CAA2C;AAAA,MACzC,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,QACtB,mBAAmB;AAAA,MAAA;AAAA,MAErB,0BAA0B;AAAA,QACxB,mBAAmB;AAAA,MAAA;AAAA,IACrB;AAAA,IAEF,wBAAwB;AAAA,MACtB,eAAe;AAAA,QACb,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAAA,QAEb,IAAI;AAAA,UACF,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAAA,MACb;AAAA,MAEF,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,IAAA;AAAA,IAE3B,0BAA0B;AAAA,MACxB,eAAe;AAAA,QACb,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAAA,QAEb,IAAI;AAAA,UACF,SAAS;AAAA,UACT,WAAW;AAAA,QAAA;AAAA,MACb;AAAA,MAEF,mBAAmB;AAAA,MACnB,yBAAyB;AAAA,IAAA;AAAA,IAE3B,qBAAqB,EAAE,UAAUC,EAAO;AAAA,IACxC,qBAAqB,EAAE,UAAUC,EAAO;AAAA,IACxC,qBAAqB,EAAE,UAAUC,EAAO;AAAA,IACxC,qBAAqB,EAAE,UAAUC,EAAO;AAAA,IACxC,sBAAsB,EAAE,UAAUC,EAAO;AAAA,IACzC,sBAAsB,EAAE,UAAUC,EAAO;AAAA,IACzC,sBAAsB,EAAE,UAAUC,EAAO;AAAA,IACzC,sBAAsB,EAAE,UAAUC,EAAO;AAAA,IACzC,6BAA6B,EAAE,UAAU,OAAA;AAAA,EAAO;AAAA,EAElD,gBAAgB;AAAA,IACd,GAAGZ;AAAA,IACH,GAAGF,EAAW,QAAQe,CAAoB;AAAA,EAAA;AAAA,EAE5C,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAcC;AAAAA,IAAO;AAAA,EACvB;AAAA,EAEF,aAAa;AAAA,IACX,GAAGjB;AAAA,IACH,UAAU;AAAA,IACV,KAAKgB;AAAAA,IACL,OAAOA;AAAAA,IACP,GAAGf,EAAW,QAAQiB,CAAsB;AAAA;AAAA,IAE5C,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,OAAOC;AAAAA,IACP,UAAU;AAAA,MACR,iBAAiBC;AAAAA,IAAO;AAAA,IAE1B,kBAAkB;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAcH;AAAAA,IAAO;AAAA,IAEvB,aAAa;AAAA,MACX,eAAe;AAAA,IAAA;AAAA,IAEjB,SAAS;AAAA,MACP,SAAS;AAAA,MACT,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA,EAEF,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,GAAGhB,EAAW,IAAIiB,CAAsB;AAAA,IACxC,WAAW;AAAA,EAAA;AAAA,EAEb,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,GAAGjB,EAAW,IAAIiB,CAAsB;AAAA,IACxC,gBAAgB;AAAA,EAAA;AAAA,EAElB,OAAO;AAAA,IACL,GAAGjB,EAAW,OAAO,CAAC;AAAA,IACtB,UAAUoB;AAAAA,IACV,YAAYC;AAAAA,IACZ,YAAYC;AAAAA,IACZ,OAAOC;AAAAA,EAAO;AAAA,EAEhB,aAAa;AAAA,IACX,GAAGvB,EAAW,OAAO,CAAC;AAAA,IACtB,OAAOwB;AAAAA,IACP,UAAUC;AAAAA,IACV,YAAYC;AAAAA,EAAO;AAAA,EAErB,QAAQ;AAAA,IACN,GAAGxB;AAAA,IACH,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,YAAY;AAAA,EAAA;AAEhB,CAAC,GAEKyB,KAAQC,EAAM;AAAA,EAClB,SAAeC,GAAOC,GAAK;AACzB,WACE,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,OAAM;AAAA,QACN,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACL,GAAGD;AAAA,QAEJ,UAAA,gBAAAE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAGN;AACF,GAIaC,KAASJ,EAAM;AAAA,EAC1B,SAAgBC,GAAOI,GAAM;AAC3B,6BAAQC,GAAA,EAAqB,aAAU,UAAU,GAAGL,GAAO;AAAA,EAC7D;AACF,GAMaM,KAAgBP,EAAM,WAGjC,SAAuB,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AACrD,QAAMO,IAASxC,EAAA;AAEf,SACE,gBAAAkC;AAAA,IAACO;AAAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MACnB,WAAWC;AAAA,QACT,CAACX,EAAM,WAAWQ,EAAO;AAAA,QACzBD;AAAA,MAAA;AAAA,MAED,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC,GAMYY,KAAeb,EAAM;AAAA,EAChC,SAAsBC,GAAOI,GAAM;AACjC,WACE,gBAAAF;AAAA,MAACW;AAAAA,MAAA;AAAA,QACC,aAAU;AAAA,QACJ,CAACH,CAAS,GAAG;AAAA,QAClB,GAAGV;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF,GAMac,KAAgBf,EAAM,WAGjC,SAAuB,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AACrD,QAAMO,IAASxC,EAAA,GAET+C,IAAaC,EAAA;AAEnB,SACE,gBAAAd;AAAA,IAACe;AAAAA,IAAA;AAAA,MACC,KAAAhB;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MAClB,GAAGK;AAAA,MACJ,WAAWJ,EAAaH,EAAO,SAASD,CAAS;AAAA,MAChD,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC,GAkBYkB,KAAgBnB,EAAM,WAGjC,SACA;AAAA,EACE,WAAAQ;AAAA,EACA,UAAAY;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,kBAAAC,IAAmB;AAAA,EACnB,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGvB;AACL,GACAC,GACA;AACA,QAAMO,IAASxC,EAAA,GAITwD,IAAWC,EAAA,GAIXV,IAAaC,EAAA;AAEnB,SACE,gBAAAU;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAA1B;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MAClB,GAAIc,MAAa,SAAY,EAAE,gBAAgBA,EAAA,IAAa,CAAA;AAAA,MAC5D,GAAGT;AAAA,MACJ,aAAWQ;AAAA,MACX,WAAWZ;AAAA,QACTH,EAAO;AAAA,QACP,CAACc,KAASd,EAAO;AAAA,QACjBD;AAAA,MAAA;AAAA,MAED,GAAGP;AAAA,MAEH,UAAA;AAAA,QAAAmB;AAAA,QACAC,KACC,gBAAAM;AAAA,UAACE;AAAAA,UAAA;AAAA,YACC,aAAU;AAAA,YACJ,CAAClB,CAAS,GAAG;AAAA,YACnB,WAAWF,EAAO;AAAA,YAElB,UAAA;AAAA,cAAA,gBAAAN,EAACJ,IAAA,EAAM;AAAA,cACP,gBAAAI,EAAC,QAAA,EAAK,WAAWM,EAAO,QAAS,UAAAa,EAAA,CAAiB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACpD;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC,GAMYQ,KAAc9B,EAAM,WAG/B,SAAqB,EAAE,WAAAQ,GAAW,UAAAY,GAAU,GAAGnB,EAAA,GAASC,GAAK;AAC7D,QAAMO,IAASxC,EAAA;AAEf,SACE,gBAAAkC;AAAA,IAAC0B;AAAAA,IAAA;AAAA,MACC,KAAA3B;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MACnB,WAAWC;AAAA,QACT,CAACX,EAAM,WAAWQ,EAAO;AAAA,QACzBA,EAAO;AAAA,QACPD;AAAA,MAAA;AAAA,MAED,GAAGP;AAAA,MAEH,UAAAmB;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC,GAIYW,KAAe/B,EAAM;AAAA,EAChC,SAAsB,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AAClD,UAAMO,IAASxC,EAAA;AAEf,WACE,gBAAAkC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,aAAU;AAAA,QACJ,CAACS,CAAS,GAAG;AAAA,QACnB,WAAWC,EAAaH,EAAO,QAAQD,CAAS;AAAA,QAC/C,GAAGP;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF,GAIa+B,KAAehC,EAAM;AAAA,EAChC,SAAsB,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AAClD,UAAMO,IAASxC,EAAA;AAEf,WACE,gBAAAkC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,aAAU;AAAA,QACJ,CAACS,CAAS,GAAG;AAAA,QACnB,WAAWC,EAAaH,EAAO,QAAQD,CAAS;AAAA,QAC/C,GAAGP;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF,GAMagC,KAAcjC,EAAM,WAG/B,SAAqB,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AACnD,QAAMO,IAASxC,EAAA;AAEf,SACE,gBAAAkC;AAAA,IAAC+B;AAAAA,IAAA;AAAA,MACC,KAAAhC;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MACnB,WAAWC,EAAaH,EAAO,OAAOD,CAAS;AAAA,MAC9C,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC,GAMYkC,KAAoBnC,EAAM,WAGrC,SAA2B,EAAE,WAAAQ,GAAW,GAAGP,EAAA,GAASC,GAAK;AACzD,QAAMO,IAASxC,EAAA;AAEf,SACE,gBAAAkC;AAAA,IAACiC;AAAAA,IAAA;AAAA,MACC,KAAAlC;AAAA,MACA,aAAU;AAAA,MACJ,CAACS,CAAS,GAAG;AAAA,MACnB,WAAWC,EAAaH,EAAO,aAAaD,CAAS;AAAA,MACpD,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}