@adminiumjs/ui 0.2.9 → 0.3.0-rc.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 (260) hide show
  1. package/dist/components/alert/Alert.d.ts +1 -1
  2. package/dist/components/alert/Alert.js +1 -1
  3. package/dist/components/auth-layout/AuthLayout.d.ts +6 -6
  4. package/dist/components/auth-layout/AuthLayout.js +6 -6
  5. package/dist/components/auth-screens/ForgotPasswordForm.d.ts +5 -6
  6. package/dist/components/auth-screens/ForgotPasswordForm.d.ts.map +1 -1
  7. package/dist/components/auth-screens/ForgotPasswordForm.js.map +1 -1
  8. package/dist/components/autosave-indicator/AutosaveIndicator.d.ts +2 -2
  9. package/dist/components/autosave-indicator/AutosaveIndicator.js +1 -1
  10. package/dist/components/avatar/Avatar.d.ts +5 -5
  11. package/dist/components/avatar/Avatar.js +5 -5
  12. package/dist/components/avatar-stack/AvatarStack.d.ts +1 -1
  13. package/dist/components/avatar-stack/AvatarStack.js +1 -1
  14. package/dist/components/badge/Badge.d.ts +1 -1
  15. package/dist/components/badge/Badge.js +1 -1
  16. package/dist/components/badge/index.js +2 -2
  17. package/dist/components/badge/index.js.map +1 -1
  18. package/dist/components/banner/Banner.d.ts +1 -1
  19. package/dist/components/banner/Banner.js +1 -1
  20. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -1
  21. package/dist/components/breadcrumbs/Breadcrumbs.js +1 -1
  22. package/dist/components/bulk-action-bar/BulkActionBar.d.ts +2 -2
  23. package/dist/components/bulk-action-bar/BulkActionBar.js +2 -2
  24. package/dist/components/button/Button.d.ts +3 -3
  25. package/dist/components/button/Button.js +3 -3
  26. package/dist/components/card/Card.d.ts +1 -1
  27. package/dist/components/card/Card.js +1 -1
  28. package/dist/components/check-row/CheckRow.d.ts +34 -0
  29. package/dist/components/check-row/CheckRow.d.ts.map +1 -0
  30. package/dist/components/check-row/CheckRow.js +53 -0
  31. package/dist/components/check-row/CheckRow.js.map +1 -0
  32. package/dist/components/check-row/index.d.ts +3 -0
  33. package/dist/components/check-row/index.d.ts.map +1 -0
  34. package/dist/components/check-row/index.js +3 -0
  35. package/dist/components/check-row/index.js.map +1 -0
  36. package/dist/components/checkbox/Checkbox.d.ts +1 -1
  37. package/dist/components/checkbox/Checkbox.js +1 -1
  38. package/dist/components/chip-input/ChipInput.d.ts +9 -2
  39. package/dist/components/chip-input/ChipInput.d.ts.map +1 -1
  40. package/dist/components/chip-input/ChipInput.js +3 -3
  41. package/dist/components/chip-input/ChipInput.js.map +1 -1
  42. package/dist/components/choice-chips/ChoiceChips.d.ts +2 -2
  43. package/dist/components/choice-chips/ChoiceChips.js +2 -2
  44. package/dist/components/combobox/Combobox.d.ts +1 -1
  45. package/dist/components/combobox/Combobox.js +1 -1
  46. package/dist/components/command-palette/CommandPalette.d.ts +1 -1
  47. package/dist/components/command-palette/CommandPalette.js +1 -1
  48. package/dist/components/command-palette/useCommandK.d.ts +4 -3
  49. package/dist/components/command-palette/useCommandK.d.ts.map +1 -1
  50. package/dist/components/command-palette/useCommandK.js +4 -3
  51. package/dist/components/command-palette/useCommandK.js.map +1 -1
  52. package/dist/components/confirm-modal/ConfirmModal.d.ts +7 -7
  53. package/dist/components/confirm-modal/ConfirmModal.js +1 -1
  54. package/dist/components/count-badge/CountBadge.d.ts +1 -1
  55. package/dist/components/count-badge/CountBadge.js +1 -1
  56. package/dist/components/date-input/DateInput.d.ts +1 -1
  57. package/dist/components/date-input/DateInput.js +1 -1
  58. package/dist/components/delta-pill/DeltaPill.d.ts +1 -1
  59. package/dist/components/delta-pill/DeltaPill.js +1 -1
  60. package/dist/components/divider/Divider.d.ts +1 -1
  61. package/dist/components/divider/Divider.js +1 -1
  62. package/dist/components/drawer/Drawer.d.ts +3 -3
  63. package/dist/components/drawer/Drawer.js +2 -2
  64. package/dist/components/drawer/Drawer.js.map +1 -1
  65. package/dist/components/dropdown-menu/DropdownMenu.d.ts +1 -1
  66. package/dist/components/dropdown-menu/DropdownMenu.js +1 -1
  67. package/dist/components/empty-state/EmptyState.d.ts +1 -1
  68. package/dist/components/empty-state/EmptyState.js +1 -1
  69. package/dist/components/filter-chip/FilterChip.d.ts +1 -1
  70. package/dist/components/filter-chip/FilterChip.js +1 -1
  71. package/dist/components/form-dialog/FormDialog.d.ts +79 -0
  72. package/dist/components/form-dialog/FormDialog.d.ts.map +1 -0
  73. package/dist/components/form-dialog/FormDialog.js +76 -0
  74. package/dist/components/form-dialog/FormDialog.js.map +1 -0
  75. package/dist/components/form-dialog/index.d.ts +3 -0
  76. package/dist/components/form-dialog/index.d.ts.map +1 -0
  77. package/dist/components/form-dialog/index.js +3 -0
  78. package/dist/components/form-dialog/index.js.map +1 -0
  79. package/dist/components/form-field/FormField.d.ts +1 -1
  80. package/dist/components/form-field/FormField.d.ts.map +1 -1
  81. package/dist/components/form-field/FormField.js +3 -2
  82. package/dist/components/form-field/FormField.js.map +1 -1
  83. package/dist/components/icon/Icon.d.ts +6 -6
  84. package/dist/components/icon/Icon.d.ts.map +1 -1
  85. package/dist/components/icon/Icon.js +1 -1
  86. package/dist/components/icon/Icon.js.map +1 -1
  87. package/dist/components/icon/icon-names.js +3 -3
  88. package/dist/components/icon/icon-names.js.map +1 -1
  89. package/dist/components/icon-button/IconButton.d.ts +2 -2
  90. package/dist/components/icon-button/IconButton.js +2 -2
  91. package/dist/components/icon-tile/IconTile.d.ts +1 -1
  92. package/dist/components/icon-tile/IconTile.js +2 -2
  93. package/dist/components/icon-tile/IconTile.js.map +1 -1
  94. package/dist/components/input/Input.d.ts +2 -2
  95. package/dist/components/input/Input.js +2 -2
  96. package/dist/components/input-group/InputGroup.d.ts +2 -2
  97. package/dist/components/input-group/InputGroup.js +2 -2
  98. package/dist/components/kbd/Kbd.d.ts +1 -1
  99. package/dist/components/kbd/Kbd.js +1 -1
  100. package/dist/components/key-value-list/KeyValueList.d.ts +1 -1
  101. package/dist/components/key-value-list/KeyValueList.js +1 -1
  102. package/dist/components/label/Label.d.ts +1 -1
  103. package/dist/components/label/Label.js +1 -1
  104. package/dist/components/meta-pill/MetaPill.d.ts +23 -0
  105. package/dist/components/meta-pill/MetaPill.d.ts.map +1 -0
  106. package/dist/components/meta-pill/MetaPill.js +19 -0
  107. package/dist/components/meta-pill/MetaPill.js.map +1 -0
  108. package/dist/components/meta-pill/index.d.ts +2 -0
  109. package/dist/components/meta-pill/index.d.ts.map +1 -0
  110. package/dist/components/meta-pill/index.js +3 -0
  111. package/dist/components/meta-pill/index.js.map +1 -0
  112. package/dist/components/modal/Modal.d.ts +1 -1
  113. package/dist/components/modal/Modal.d.ts.map +1 -1
  114. package/dist/components/modal/Modal.js +3 -2
  115. package/dist/components/modal/Modal.js.map +1 -1
  116. package/dist/components/mono-text/MonoText.d.ts +2 -3
  117. package/dist/components/mono-text/MonoText.d.ts.map +1 -1
  118. package/dist/components/mono-text/MonoText.js +2 -3
  119. package/dist/components/mono-text/MonoText.js.map +1 -1
  120. package/dist/components/month-calendar/MonthCalendar.d.ts +46 -0
  121. package/dist/components/month-calendar/MonthCalendar.d.ts.map +1 -0
  122. package/dist/components/month-calendar/MonthCalendar.js +55 -0
  123. package/dist/components/month-calendar/MonthCalendar.js.map +1 -0
  124. package/dist/components/month-calendar/index.d.ts +2 -0
  125. package/dist/components/month-calendar/index.d.ts.map +1 -0
  126. package/dist/components/month-calendar/index.js +3 -0
  127. package/dist/components/month-calendar/index.js.map +1 -0
  128. package/dist/components/number-stepper/NumberStepper.d.ts +16 -2
  129. package/dist/components/number-stepper/NumberStepper.d.ts.map +1 -1
  130. package/dist/components/number-stepper/NumberStepper.js +22 -3
  131. package/dist/components/number-stepper/NumberStepper.js.map +1 -1
  132. package/dist/components/pagination/Pagination.d.ts +1 -1
  133. package/dist/components/pagination/Pagination.js +1 -1
  134. package/dist/components/password-strength/PasswordStrength.d.ts +1 -1
  135. package/dist/components/password-strength/PasswordStrength.js +1 -1
  136. package/dist/components/permission-matrix/PermissionMatrix.d.ts +3 -3
  137. package/dist/components/popover/Popover.d.ts +1 -1
  138. package/dist/components/popover/Popover.js +1 -1
  139. package/dist/components/progress-bar/ProgressBar.d.ts +1 -1
  140. package/dist/components/progress-bar/ProgressBar.js +2 -2
  141. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  142. package/dist/components/radio/Radio.d.ts +2 -2
  143. package/dist/components/radio/Radio.js +2 -2
  144. package/dist/components/radio-card/RadioCard.d.ts +18 -8
  145. package/dist/components/radio-card/RadioCard.d.ts.map +1 -1
  146. package/dist/components/radio-card/RadioCard.js +4 -4
  147. package/dist/components/radio-card/RadioCard.js.map +1 -1
  148. package/dist/components/runtime-chip/RuntimeChip.d.ts +9 -9
  149. package/dist/components/runtime-chip/RuntimeChip.js +8 -8
  150. package/dist/components/search-input/SearchInput.d.ts +1 -1
  151. package/dist/components/search-input/SearchInput.js +1 -1
  152. package/dist/components/secret-input/SecretInput.d.ts +1 -1
  153. package/dist/components/secret-input/SecretInput.js +1 -1
  154. package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
  155. package/dist/components/segmented-control/SegmentedControl.js +1 -1
  156. package/dist/components/select/Select.d.ts +1 -1
  157. package/dist/components/select/Select.js +1 -1
  158. package/dist/components/skeleton/Skeleton.d.ts +1 -1
  159. package/dist/components/skeleton/Skeleton.js +2 -2
  160. package/dist/components/skeleton/Skeleton.js.map +1 -1
  161. package/dist/components/slider/Slider.d.ts +1 -1
  162. package/dist/components/slider/Slider.js +1 -1
  163. package/dist/components/slot-grid/SlotGrid.d.ts +37 -0
  164. package/dist/components/slot-grid/SlotGrid.d.ts.map +1 -0
  165. package/dist/components/slot-grid/SlotGrid.js +47 -0
  166. package/dist/components/slot-grid/SlotGrid.js.map +1 -0
  167. package/dist/components/slot-grid/index.d.ts +2 -0
  168. package/dist/components/slot-grid/index.d.ts.map +1 -0
  169. package/dist/components/slot-grid/index.js +3 -0
  170. package/dist/components/slot-grid/index.js.map +1 -0
  171. package/dist/components/snackbar/Snackbar.d.ts +1 -1
  172. package/dist/components/snackbar/Snackbar.js +1 -1
  173. package/dist/components/spinner/Spinner.d.ts +1 -1
  174. package/dist/components/spinner/Spinner.js +1 -1
  175. package/dist/components/status-pill/StatusPill.d.ts +1 -1
  176. package/dist/components/status-pill/StatusPill.js +5 -5
  177. package/dist/components/status-pill/StatusPill.js.map +1 -1
  178. package/dist/components/step-rail/StepRail.d.ts +36 -0
  179. package/dist/components/step-rail/StepRail.d.ts.map +1 -0
  180. package/dist/components/step-rail/StepRail.js +28 -0
  181. package/dist/components/step-rail/StepRail.js.map +1 -0
  182. package/dist/components/step-rail/index.d.ts +2 -0
  183. package/dist/components/step-rail/index.d.ts.map +1 -0
  184. package/dist/components/step-rail/index.js +3 -0
  185. package/dist/components/step-rail/index.js.map +1 -0
  186. package/dist/components/stepper/Stepper.d.ts +1 -1
  187. package/dist/components/stepper/Stepper.js +1 -1
  188. package/dist/components/success-state/SuccessState.d.ts +1 -2
  189. package/dist/components/success-state/SuccessState.d.ts.map +1 -1
  190. package/dist/components/success-state/SuccessState.js +1 -2
  191. package/dist/components/success-state/SuccessState.js.map +1 -1
  192. package/dist/components/switch/Switch.d.ts +2 -2
  193. package/dist/components/switch/Switch.js +2 -2
  194. package/dist/components/tabs/Tabs.d.ts +1 -1
  195. package/dist/components/tabs/Tabs.js +1 -1
  196. package/dist/components/tag/Tag.d.ts +1 -1
  197. package/dist/components/tag/Tag.js +1 -1
  198. package/dist/components/textarea/Textarea.d.ts +1 -1
  199. package/dist/components/textarea/Textarea.js +1 -1
  200. package/dist/components/toast/Toast.d.ts +5 -6
  201. package/dist/components/toast/Toast.d.ts.map +1 -1
  202. package/dist/components/toast/Toast.js +5 -6
  203. package/dist/components/toast/Toast.js.map +1 -1
  204. package/dist/components/toast/useToastQueue.d.ts +6 -7
  205. package/dist/components/toast/useToastQueue.d.ts.map +1 -1
  206. package/dist/components/toast/useToastQueue.js +6 -7
  207. package/dist/components/toast/useToastQueue.js.map +1 -1
  208. package/dist/components/toggle-row/ToggleRow.d.ts +33 -0
  209. package/dist/components/toggle-row/ToggleRow.d.ts.map +1 -0
  210. package/dist/components/toggle-row/ToggleRow.js +41 -0
  211. package/dist/components/toggle-row/ToggleRow.js.map +1 -0
  212. package/dist/components/toggle-row/index.d.ts +3 -0
  213. package/dist/components/toggle-row/index.d.ts.map +1 -0
  214. package/dist/components/toggle-row/index.js +3 -0
  215. package/dist/components/toggle-row/index.js.map +1 -0
  216. package/dist/components/tooltip/Tooltip.d.ts +1 -1
  217. package/dist/components/tooltip/Tooltip.js +1 -1
  218. package/dist/components/two-phase-modal/TwoPhaseModal.d.ts +3 -4
  219. package/dist/components/two-phase-modal/TwoPhaseModal.d.ts.map +1 -1
  220. package/dist/components/two-phase-modal/TwoPhaseModal.js +3 -4
  221. package/dist/components/two-phase-modal/TwoPhaseModal.js.map +1 -1
  222. package/dist/hooks/useUndoableAction.d.ts +5 -5
  223. package/dist/hooks/useUndoableAction.js +5 -5
  224. package/dist/index.d.ts +7 -0
  225. package/dist/index.d.ts.map +1 -1
  226. package/dist/index.js +7 -0
  227. package/dist/index.js.map +1 -1
  228. package/dist/lib/cn.d.ts +3 -4
  229. package/dist/lib/cn.d.ts.map +1 -1
  230. package/dist/lib/cn.js +3 -4
  231. package/dist/lib/cn.js.map +1 -1
  232. package/dist/lib/index.d.ts +1 -0
  233. package/dist/lib/index.d.ts.map +1 -1
  234. package/dist/lib/index.js +1 -0
  235. package/dist/lib/index.js.map +1 -1
  236. package/dist/lib/tones.d.ts +10 -9
  237. package/dist/lib/tones.d.ts.map +1 -1
  238. package/dist/lib/tones.js +10 -9
  239. package/dist/lib/tones.js.map +1 -1
  240. package/dist/lib/week.d.ts +37 -0
  241. package/dist/lib/week.d.ts.map +1 -0
  242. package/dist/lib/week.js +71 -0
  243. package/dist/lib/week.js.map +1 -0
  244. package/dist/theme/ThemeProvider.d.ts +4 -5
  245. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  246. package/dist/theme/ThemeProvider.js +19 -19
  247. package/dist/theme/ThemeProvider.js.map +1 -1
  248. package/dist/theme/context.d.ts +6 -5
  249. package/dist/theme/context.d.ts.map +1 -1
  250. package/dist/theme/context.js.map +1 -1
  251. package/dist/theme/subscribe.d.ts +4 -4
  252. package/dist/theme/subscribe.js +1 -1
  253. package/dist/theme/types.d.ts +10 -10
  254. package/dist/theme/types.d.ts.map +1 -1
  255. package/dist/theme/types.js +4 -4
  256. package/dist/theme/types.js.map +1 -1
  257. package/dist/theme/useTheme.d.ts.map +1 -1
  258. package/dist/theme/useTheme.js +2 -3
  259. package/dist/theme/useTheme.js.map +1 -1
  260. package/package.json +2 -2
@@ -0,0 +1,46 @@
1
+ export interface MonthCalendarProps {
2
+ /** The month on screen, as `YYYY-MM`. Controlled: the arrows report, never set. */
3
+ month: string;
4
+ onMonth: (month: string) => void;
5
+ /** The chosen day, `YYYY-MM-DD`, or null. */
6
+ value: string | null;
7
+ onChange: (day: string) => void;
8
+ /** Days nothing can be put on — struck through and inert (comp 634–652). */
9
+ unavailable?: readonly string[] | undefined;
10
+ /** Nothing before this day may be chosen; `YYYY-MM-DD`. */
11
+ min?: string | undefined;
12
+ locale?: string | undefined;
13
+ /** Accessible names — this package ships no copy. */
14
+ labels: {
15
+ previous: string;
16
+ next: string;
17
+ month: (month: string) => string;
18
+ };
19
+ className?: string | undefined;
20
+ }
21
+ /**
22
+ * MonthCalendar — the month grid (comp
23
+ * 322–334, 634–652).
24
+ *
25
+ * ─── A real calendar, in the reader's own week ─────────────────────────────
26
+ *
27
+ * The comp's grid is a fixed 7 × 5 with a hardcoded offset, and it puts
28
+ * 1 September 2026 on a Wednesday — it is a Tuesday. It also gives the month
29
+ * arrows no handlers. Both are drawing conveniences in a mock-up and both are
30
+ * defects in a product, so this computes the month from the calendar, starts
31
+ * the week where the reader's locale starts it, and moves.
32
+ *
33
+ * ─── Unavailable is INERT, not just decorated ──────────────────────────────
34
+ *
35
+ * A struck-through day that still accepts a click is a screen that takes a
36
+ * booking it has already said it cannot take. `disabled` carries that to the
37
+ * keyboard and to a screen reader as well as to the eye.
38
+ *
39
+ * ─── Height is fixed by the grid, not by the month ─────────────────────────
40
+ *
41
+ * `monthGrid` pads to whole weeks, so February and August are the same height
42
+ * and the legend under the calendar does not jump a line when the month
43
+ * changes.
44
+ */
45
+ export declare function MonthCalendar({ month, onMonth, value, onChange, unavailable, min, locale, labels, className, }: MonthCalendarProps): import("react").JSX.Element;
46
+ //# sourceMappingURL=MonthCalendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qDAAqD;IACrD,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,kBAAkB,+BAgFpB"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ import { useMemo } from 'react';
4
+ import { ChevronLeft, ChevronRight } from 'lucide-react';
5
+ import { cn } from '../../lib/cn.js';
6
+ import { dayKey, monthGrid, weekdayInitials } from '../../lib/week.js';
7
+ import { IconButton } from '../icon-button/IconButton.js';
8
+ /**
9
+ * MonthCalendar — the month grid (comp
10
+ * 322–334, 634–652).
11
+ *
12
+ * ─── A real calendar, in the reader's own week ─────────────────────────────
13
+ *
14
+ * The comp's grid is a fixed 7 × 5 with a hardcoded offset, and it puts
15
+ * 1 September 2026 on a Wednesday — it is a Tuesday. It also gives the month
16
+ * arrows no handlers. Both are drawing conveniences in a mock-up and both are
17
+ * defects in a product, so this computes the month from the calendar, starts
18
+ * the week where the reader's locale starts it, and moves.
19
+ *
20
+ * ─── Unavailable is INERT, not just decorated ──────────────────────────────
21
+ *
22
+ * A struck-through day that still accepts a click is a screen that takes a
23
+ * booking it has already said it cannot take. `disabled` carries that to the
24
+ * keyboard and to a screen reader as well as to the eye.
25
+ *
26
+ * ─── Height is fixed by the grid, not by the month ─────────────────────────
27
+ *
28
+ * `monthGrid` pads to whole weeks, so February and August are the same height
29
+ * and the legend under the calendar does not jump a line when the month
30
+ * changes.
31
+ */
32
+ export function MonthCalendar({ month, onMonth, value, onChange, unavailable, min, locale, labels, className, }) {
33
+ const [year, monthIndex] = useMemo(() => {
34
+ const [y, m] = month.split('-');
35
+ return [Number(y), Number(m) - 1];
36
+ }, [month]);
37
+ const cells = useMemo(() => monthGrid(year, monthIndex, locale), [year, monthIndex, locale]);
38
+ const initials = useMemo(() => weekdayInitials(locale), [locale]);
39
+ const blocked = useMemo(() => new Set(unavailable ?? []), [unavailable]);
40
+ const title = useMemo(() => new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(new Date(year, monthIndex, 1)), [year, monthIndex, locale]);
41
+ const shift = (by) => {
42
+ const next = new Date(year, monthIndex + by, 1);
43
+ onMonth(`${String(next.getFullYear()).padStart(4, '0')}-${String(next.getMonth() + 1).padStart(2, '0')}`);
44
+ };
45
+ return (_jsxs("div", { className: cn('min-w-0', className), "data-testid": "month-calendar", children: [_jsxs("div", { className: "mb-3.5 flex items-center justify-between", children: [_jsx("span", { className: "text-[13.5px] font-extrabold text-fg", children: title }), _jsxs("div", { className: "flex gap-1.5", children: [_jsx(IconButton, { variant: "bordered", size: "sm", label: labels.previous, onClick: () => shift(-1), children: _jsx(ChevronLeft, { className: "size-3.5" }) }), _jsx(IconButton, { variant: "bordered", size: "sm", label: labels.next, onClick: () => shift(1), children: _jsx(ChevronRight, { className: "size-3.5" }) })] })] }), _jsx("div", { className: "mb-1.5 grid grid-cols-7 gap-1", "aria-hidden": "true", children: initials.map((initial, index) => (_jsx("span", { className: "text-center text-[10.5px] font-bold text-fg-subtle", children: initial }, index))) }), _jsx("div", { className: "grid grid-cols-7 gap-1", role: "group", "aria-label": labels.month(title), children: cells.map((day, index) => {
46
+ if (day === null)
47
+ return _jsx("span", { className: "h-[34px]" }, index);
48
+ const key = dayKey(day);
49
+ const taken = blocked.has(key);
50
+ const past = min !== undefined && key < min;
51
+ const chosen = key === value;
52
+ return (_jsx("button", { type: "button", disabled: taken || past, "aria-pressed": chosen, "aria-label": new Intl.DateTimeFormat(locale, { dateStyle: 'full' }).format(day), "data-testid": `calendar-day-${key}`, onClick: () => onChange(key), className: cn('h-[34px] rounded-[9px] border border-transparent font-mono text-[12.5px] font-semibold', 'focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-accent', chosen && 'bg-accent font-extrabold text-accent-fg', !chosen && taken && 'bg-surface-3 text-fg-subtle line-through', !chosen && past && 'text-fg-subtle', !chosen && !taken && !past && 'text-fg hover:bg-surface-2'), children: day.getDate() }, key));
53
+ }) })] }));
54
+ }
55
+ //# sourceMappingURL=MonthCalendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthCalendar.js","sourceRoot":"","sources":["../../../src/components/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { MonthCalendar, type MonthCalendarProps } from './MonthCalendar.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/month-calendar/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ export { MonthCalendar } from './MonthCalendar.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/month-calendar/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC"}
@@ -16,14 +16,28 @@ export interface NumberStepperProps extends Omit<React.ComponentPropsWithRef<'in
16
16
  decrementLabel: string;
17
17
  /** Danger border + focus ring + `aria-invalid`. */
18
18
  error?: boolean | undefined;
19
+ /**
20
+ * `field` (default) is the chevron column inside the input's chrome — the
21
+ * shape every existing caller renders. `buttons` is the design comp's own:
22
+ * a −, a big mono value and a +,
23
+ * each a 34px bordered square, with the unit beside them.
24
+ *
25
+ * Two layouts rather than two components because it is one control with one
26
+ * contract: the same value, the same bounds, the same step, the same
27
+ * `spinbutton` semantics. What differs is how much room the number is given,
28
+ * and that is a caller's decision.
29
+ */
30
+ layout?: 'field' | 'buttons' | undefined;
31
+ /** The word after the number in the `buttons` layout: "guests", "seats". */
32
+ unit?: string | undefined;
19
33
  /** Extra classes for the inner `<input>` (className styles the wrapper). */
20
34
  inputClassName?: string | undefined;
21
35
  }
22
36
  /**
23
37
  * NumberStepper — mono `input[type=number]` (native `spinbutton`: typed
24
38
  * input, ↑↓ arrow keys) plus a chevron up/down column honoring
25
- * min/max/step (research/design-system.md §3 Tier 2). The chevron buttons
39
+ * min/max/step (research/design-system.md Tier 2). The chevron buttons
26
40
  * are `tabIndex={-1}` — keyboard users step with the arrow keys.
27
41
  */
28
- export declare function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step, incrementLabel, decrementLabel, error, disabled, ref, ...inputProps }: NumberStepperProps): React.JSX.Element;
42
+ export declare function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step, incrementLabel, decrementLabel, error, layout, unit, disabled, ref, ...inputProps }: NumberStepperProps): React.JSX.Element;
29
43
  //# sourceMappingURL=NumberStepper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberStepper.d.ts","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAC3F;IACD,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,cAAc,EACd,cAAc,EACd,KAAa,EACb,QAAQ,EACR,GAAG,EACH,GAAG,UAAU,EACd,EAAE,kBAAkB,qBAuFpB"}
1
+ {"version":3,"file":"NumberStepper.d.ts","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAC3F;IACD,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,cAAc,EACd,cAAc,EACd,KAAa,EACb,MAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,GAAG,UAAU,EACd,EAAE,kBAAkB,qBAyJpB"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // SPDX-License-Identifier: AGPL-3.0-only
3
- import { ChevronDown, ChevronUp } from 'lucide-react';
3
+ import { ChevronDown, ChevronUp, Minus, Plus } from 'lucide-react';
4
4
  import { useRef, useState } from 'react';
5
5
  import { cn } from '../../lib/cn.js';
6
6
  function clamp(next, min, max) {
@@ -14,10 +14,10 @@ function clamp(next, min, max) {
14
14
  /**
15
15
  * NumberStepper — mono `input[type=number]` (native `spinbutton`: typed
16
16
  * input, ↑↓ arrow keys) plus a chevron up/down column honoring
17
- * min/max/step (research/design-system.md §3 Tier 2). The chevron buttons
17
+ * min/max/step (research/design-system.md Tier 2). The chevron buttons
18
18
  * are `tabIndex={-1}` — keyboard users step with the arrow keys.
19
19
  */
20
- export function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step = 1, incrementLabel, decrementLabel, error = false, disabled, ref, ...inputProps }) {
20
+ export function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step = 1, incrementLabel, decrementLabel, error = false, layout = 'field', unit, disabled, ref, ...inputProps }) {
21
21
  const innerRef = useRef(null);
22
22
  const [internal, setInternal] = useState(defaultValue ?? null);
23
23
  const isControlled = value !== undefined;
@@ -41,8 +41,27 @@ export function NumberStepper({ className, inputClassName, value, defaultValue,
41
41
  };
42
42
  const atMin = current !== null && min !== undefined && current <= min;
43
43
  const atMax = current !== null && max !== undefined && current >= max;
44
+ const bigButtonClasses = 'flex size-[34px] shrink-0 items-center justify-center rounded-md border border-border-strong bg-surface text-fg-muted ' +
45
+ 'transition-colors hover:bg-surface-2 disabled:pointer-events-none disabled:opacity-40 ' +
46
+ 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent';
44
47
  const stepperButtonClasses = 'flex h-1/2 w-6 items-center justify-center text-fg-subtle transition-colors hover:bg-surface-3 hover:text-fg ' +
45
48
  'disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent';
49
+ if (layout === 'buttons') {
50
+ /*
51
+ * The value is a `spinbutton` in its own right — NOT a number input made to
52
+ * look like text. Arrow keys, Home/End and a typed value all have to keep
53
+ * working: the comp draws two buttons and a number, and a person who
54
+ * reaches it by keyboard still expects to type into it.
55
+ */
56
+ return (_jsxs("div", { className: cn('flex items-center gap-2.5', disabled === true && 'opacity-40', className), children: [_jsx("button", { type: "button", "aria-label": decrementLabel, disabled: disabled === true || atMin, onClick: () => stepBy(-1), className: bigButtonClasses, children: _jsx(Minus, { "aria-hidden": "true", className: "size-[15px]" }) }), _jsx("input", { ref: setRef, type: "number", inputMode: "numeric", value: current ?? '', onChange: (event) => {
57
+ const parsed = event.target.value === '' ? null : event.target.valueAsNumber;
58
+ commit(parsed === null || Number.isNaN(parsed) ? null : parsed);
59
+ }, ...(min !== undefined ? { min } : {}), ...(max !== undefined ? { max } : {}), step: step, disabled: disabled, ...(error ? { 'aria-invalid': true } : {}), className: cn('min-w-[3ch] bg-transparent text-center font-mono text-[15px] font-extrabold tabular-nums text-fg', 'focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent', '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none', 'w-[var(--adm-stepper-width)]', inputClassName),
60
+ // The field grows with the number it holds, so the width is a value
61
+ // rather than a class — through a custom property, the one shape the
62
+ // tokens-only rule allows.
63
+ style: { '--adm-stepper-width': `${String(Math.max(String(current ?? '').length, 2))}ch` }, ...inputProps }), _jsx("button", { type: "button", "aria-label": incrementLabel, disabled: disabled === true || atMax, onClick: () => stepBy(1), className: bigButtonClasses, children: _jsx(Plus, { "aria-hidden": "true", className: "size-[15px]" }) }), unit === undefined ? null : (_jsx("span", { className: "ms-0.5 text-caption text-fg-subtle", children: unit }))] }));
64
+ }
46
65
  return (_jsxs("div", { "data-invalid": error ? '' : undefined, className: cn('flex h-[34px] w-full min-w-0 items-stretch overflow-hidden rounded-md border border-border-strong bg-surface-2', 'transition-[border-color,box-shadow] duration-150', 'focus-within:border-accent focus-within:ring-[3px] focus-within:ring-accent-soft', 'has-[input:disabled]:pointer-events-none has-[input:disabled]:opacity-40', 'data-[invalid]:border-danger data-[invalid]:focus-within:ring-danger-soft', className), children: [_jsx("input", { ref: setRef, type: "number", inputMode: "decimal", value: current ?? '', onChange: (event) => {
47
66
  const parsed = event.target.value === '' ? null : event.target.valueAsNumber;
48
67
  commit(parsed === null || Number.isNaN(parsed) ? null : parsed);
@@ -1 +1 @@
1
- {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export declare function paginationRange(page: number, pageCount: number, sibling
20
20
  /**
21
21
  * Pagination — 32px square page buttons (active = accent fill), mono numbers,
22
22
  * RTL-mirrored chevrons, ellipsis windowing
23
- * (research/design-system.md §3 Tier 3).
23
+ * (research/design-system.md Tier 3).
24
24
  */
25
25
  export declare function Pagination({ page, pageCount, onPageChange, siblingCount, label, previousLabel, nextLabel, pageLabel, className, ...props }: PaginationProps): import("react").JSX.Element;
26
26
  //# sourceMappingURL=Pagination.d.ts.map
@@ -26,7 +26,7 @@ const squareClasses = 'inline-flex size-8 shrink-0 items-center justify-center r
26
26
  /**
27
27
  * Pagination — 32px square page buttons (active = accent fill), mono numbers,
28
28
  * RTL-mirrored chevrons, ellipsis windowing
29
- * (research/design-system.md §3 Tier 3).
29
+ * (research/design-system.md Tier 3).
30
30
  */
31
31
  export function Pagination({ page, pageCount, onPageChange, siblingCount = 1, label, previousLabel, nextLabel, pageLabel, className, ...props }) {
32
32
  const range = paginationRange(page, pageCount, siblingCount);
@@ -22,7 +22,7 @@ export interface PasswordStrengthProps extends ComponentPropsWithRef<'div'> {
22
22
  }
23
23
  /**
24
24
  * PasswordStrength — segmented 4-bar meter + tone-colored label, injectable
25
- * scoring (research/design-system.md §3 Tier 3, Auth screens). Announces via
25
+ * scoring (research/design-system.md Tier 3, Auth screens). Announces via
26
26
  * `role="meter"`; the label updates in an `aria-live` region.
27
27
  */
28
28
  export declare function PasswordStrength({ value, score, labels, label, className, ...props }: PasswordStrengthProps): import("react").JSX.Element;
@@ -33,7 +33,7 @@ const labelTone = {
33
33
  };
34
34
  /**
35
35
  * PasswordStrength — segmented 4-bar meter + tone-colored label, injectable
36
- * scoring (research/design-system.md §3 Tier 3, Auth screens). Announces via
36
+ * scoring (research/design-system.md Tier 3, Auth screens). Announces via
37
37
  * `role="meter"`; the label updates in an `aria-live` region.
38
38
  */
39
39
  export function PasswordStrength({ value, score = defaultPasswordScore, labels, label, className, ...props }) {
@@ -1,8 +1,8 @@
1
1
  import type * as React from 'react';
2
2
  /**
3
- * The RBAC grant-string grammar (apps/server/src/rbac/permissions.ts,
4
- * 08-server-api.md §5.1), mirrored as template-literal types so permission
5
- * keys are checked at the call site:
3
+ * The RBAC grant-string grammar (apps/server/src/rbac/permissions.ts),
4
+ * mirrored as template-literal types so permission keys are checked at the
5
+ * call site:
6
6
  *
7
7
  * ```
8
8
  * system:<area>:<verb> // closed set, e.g. system:roles:manage
@@ -11,7 +11,7 @@ export declare const PopoverClose: React.ForwardRefExoticComponent<PopoverPrimit
11
11
  export type PopoverContentProps = Omit<React.ComponentPropsWithRef<typeof PopoverPrimitive.Content>, 'style'>;
12
12
  /**
13
13
  * Popover — anchored panel on `--surface`, radius 14 (`rounded-lg`),
14
- * `--shadow-menu`, `nb-pop` entrance (research/design-system.md §3 Tier 3).
14
+ * `--shadow-menu`, `nb-pop` entrance (research/design-system.md Tier 3).
15
15
  * Focus is moved into the panel and trapped by Radix; Esc/outside-click
16
16
  * dismiss and return focus to the trigger.
17
17
  */
@@ -13,7 +13,7 @@ export const PopoverAnchor = PopoverPrimitive.Anchor;
13
13
  export const PopoverClose = PopoverPrimitive.Close;
14
14
  /**
15
15
  * Popover — anchored panel on `--surface`, radius 14 (`rounded-lg`),
16
- * `--shadow-menu`, `nb-pop` entrance (research/design-system.md §3 Tier 3).
16
+ * `--shadow-menu`, `nb-pop` entrance (research/design-system.md Tier 3).
17
17
  * Focus is moved into the panel and trapped by Radix; Esc/outside-click
18
18
  * dismiss and return focus to the trigger.
19
19
  */
@@ -3,7 +3,7 @@ import type * as React from 'react';
3
3
  import type { Tone } from '../badge/Badge.js';
4
4
  /**
5
5
  * Pill progress track (surface-3) — 4/6/10px heights
6
- * (research/design-system.md §3 Tier 1).
6
+ * (research/design-system.md Tier 1).
7
7
  */
8
8
  export declare const progressBarVariants: (props?: ({
9
9
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../lib/cn.js';
5
5
  /**
6
6
  * Pill progress track (surface-3) — 4/6/10px heights
7
- * (research/design-system.md §3 Tier 1).
7
+ * (research/design-system.md Tier 1).
8
8
  */
9
9
  export const progressBarVariants = cva('w-full overflow-hidden rounded-full bg-surface-3', {
10
10
  variants: {
@@ -30,7 +30,7 @@ export function ProgressBar({ className, size, value, max = 100, tone = 'accent'
30
30
  const pct = (clamped / upper) * 100;
31
31
  return (_jsx("div", { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": upper, "aria-valuenow": clamped, "aria-label": label, "data-tone": tone, className: cn(progressBarVariants({ size }), className), ...props, children: _jsx("div", { className: cn('h-full w-[var(--adm-progress)] rounded-full', FILL_TONE_CLASSES[tone], animated &&
32
32
  'origin-[0%_50%] animate-[nb-grow_0.85s_cubic-bezier(.2,.7,.3,1)] [--nb-grow-x:0] [--nb-grow-y:1] rtl:origin-[100%_50%]'),
33
- // Sanctioned escape hatch: CSS custom properties only (02-design-system.md §8).
33
+ // Sanctioned escape hatch: CSS custom properties only.
34
34
  style: { '--adm-progress': `${pct}%` } }) }));
35
35
  }
36
36
  //# sourceMappingURL=ProgressBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,kDAAkD,EAAE;IACzF,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;SACZ;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAiBF,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,IAAI,EACf,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAEpC,OAAO,CACL,cACE,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,mBACL,OAAO,gBACV,KAAK,eACN,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,iBAAiB,CAAC,IAAI,CAAC,EACvB,QAAQ;gBACN,wHAAwH,CAC3H;YACD,gFAAgF;YAChF,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAAG,GAAG,GAAG,EAAE,GACtC,GACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,kDAAkD,EAAE;IACzF,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;SACZ;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAiBF,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,IAAI,EACf,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAEpC,OAAO,CACL,cACE,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,mBACL,OAAO,gBACV,KAAK,eACN,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,iBAAiB,CAAC,IAAI,CAAC,EACvB,QAAQ;gBACN,wHAAwH,CAC3H;YACD,uDAAuD;YACvD,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAAG,GAAG,GAAG,EAAE,GACtC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -18,8 +18,8 @@ export interface RadioProps extends Omit<React.ComponentPropsWithRef<typeof Radi
18
18
  }
19
19
  /**
20
20
  * Radio — dot radio, 18px circle on `--surface-2`; checked = accent border +
21
- * accent dot (research/design-system.md §3 Tier 2). Card-styled selection
22
- * lives in `RadioCard`.
21
+ * accent dot (research/design-system.md Tier 2). Card-styled selection lives
22
+ * in `RadioCard`.
23
23
  */
24
24
  export declare function Radio({ label, description, className, id, ...props }: RadioProps): React.JSX.Element;
25
25
  //# sourceMappingURL=Radio.d.ts.map
@@ -13,8 +13,8 @@ export function RadioGroup({ className, ...props }) {
13
13
  }
14
14
  /**
15
15
  * Radio — dot radio, 18px circle on `--surface-2`; checked = accent border +
16
- * accent dot (research/design-system.md §3 Tier 2). Card-styled selection
17
- * lives in `RadioCard`.
16
+ * accent dot (research/design-system.md Tier 2). Card-styled selection lives
17
+ * in `RadioCard`.
18
18
  */
19
19
  export function Radio({ label, description, className, id, ...props }) {
20
20
  const generatedId = useId();
@@ -9,6 +9,17 @@ export interface RadioCardProps extends Omit<React.ComponentPropsWithRef<typeof
9
9
  icon?: React.ReactNode | undefined;
10
10
  /** Trailing slot on the title row — e.g. a mono price or a `Badge`. */
11
11
  trailing?: React.ReactNode | undefined;
12
+ /**
13
+ * The BIG line under the title, as the design comp draws it: 20px
14
+ * mono, tight tracking — a delivery window, a size, a duration.
15
+ *
16
+ * `valueLine`, not `value`: a radio item's `value` is what it SUBMITS, and
17
+ * this is what it shows. Distinct from `description`, which is the sentence
18
+ * under it — a card that offers a choice usually has one number worth reading
19
+ * from across the room and one line of prose, and folding them together made
20
+ * the number prose.
21
+ */
22
+ valueLine?: React.ReactNode | undefined;
12
23
  /** Hide the top-end check indicator shown when selected. */
13
24
  hideIndicator?: boolean | undefined;
14
25
  /**
@@ -16,19 +27,18 @@ export interface RadioCardProps extends Omit<React.ComponentPropsWithRef<typeof
16
27
  *
17
28
  * `row` (default) is the one every existing caller renders: a bare leading
18
29
  * glyph beside a 13px title. `tile` and `stack` are the two the onboarding
19
- * comps draw (`designs/Onboarding.dc.html`, 45-onboarding.md §3) — a 40px
20
- * accent-filling icon tile, leading with a description or centred above a
21
- * label — and they are here rather than hand-rolled in the wizard because
22
- * the Radix item underneath is what makes arrow keys and `aria-checked`
23
- * work, and it is not exported.
30
+ * comps draw — a 40px accent-filling icon tile, leading with a description
31
+ * or centred above a label — and they are here rather than hand-rolled in
32
+ * the wizard because the Radix item underneath is what makes arrow keys
33
+ * and `aria-checked` work, and it is not exported.
24
34
  */
25
35
  layout?: 'row' | 'tile' | 'stack' | undefined;
26
36
  }
27
37
  /**
28
38
  * RadioCard — selectable card variant of the radio item
29
- * (research/design-system.md §3 Tier 2): full-card click target, selected =
39
+ * (research/design-system.md Tier 2): full-card click target, selected =
30
40
  * accent border + accent-soft bg + check indicator. Must be rendered inside
31
- * a `RadioGroup` (../radio); arrow keys move and select between cards.
41
+ * a `RadioGroup` (./radio); arrow keys move and select between cards.
32
42
  */
33
- export declare function RadioCard({ layout, title, description, icon, trailing, hideIndicator, className, ...props }: RadioCardProps): React.JSX.Element;
43
+ export declare function RadioCard({ layout, title, description, valueLine, icon, trailing, hideIndicator, className, ...props }: RadioCardProps): React.JSX.Element;
34
44
  //# sourceMappingURL=RadioCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioCard.d.ts","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACtH,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AA4BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAc,EACd,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,aAAqB,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,qBAsDhB"}
1
+ {"version":3,"file":"RadioCard.d.ts","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACtH,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AA4BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAc,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,aAAqB,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,qBA2DhB"}
@@ -28,12 +28,12 @@ const LAYOUT = {
28
28
  };
29
29
  /**
30
30
  * RadioCard — selectable card variant of the radio item
31
- * (research/design-system.md §3 Tier 2): full-card click target, selected =
31
+ * (research/design-system.md Tier 2): full-card click target, selected =
32
32
  * accent border + accent-soft bg + check indicator. Must be rendered inside
33
- * a `RadioGroup` (../radio); arrow keys move and select between cards.
33
+ * a `RadioGroup` (./radio); arrow keys move and select between cards.
34
34
  */
35
- export function RadioCard({ layout = 'row', title, description, icon, trailing, hideIndicator = false, className, ...props }) {
36
- return (_jsxs(RadioGroupPrimitive.Item, { className: cn('group relative flex w-full cursor-pointer border border-border-strong bg-surface text-start ', LAYOUT[layout].card, layout === 'stack' ? '' : 'text-start ', 'transition-[border-color,background-color,box-shadow] duration-150 hover:border-fg-subtle ', 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent ', 'disabled:pointer-events-none disabled:opacity-40 ', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent-soft', className), ...props, children: [icon ? (_jsx("span", { "aria-hidden": "true", className: cn('flex shrink-0 text-fg-muted group-data-[state=checked]:text-accent', LAYOUT[layout].icon), children: icon })) : null, _jsxs("span", { className: cn('flex min-w-0 flex-col gap-0.5', layout === 'stack' ? 'items-center' : 'flex-1'), children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: LAYOUT[layout].title, children: title }), trailing ? _jsx("span", { className: "ms-auto flex shrink-0 items-center", children: trailing }) : null] }), description === undefined || description === null ? null : (_jsx("span", { className: LAYOUT[layout].description, children: description }))] }), hideIndicator ? null : (_jsx(RadioGroupPrimitive.Indicator, { "aria-hidden": "true", className: cn('absolute end-2.5 top-2.5 flex size-[18px] items-center justify-center rounded-full bg-accent text-accent-fg',
35
+ export function RadioCard({ layout = 'row', title, description, valueLine, icon, trailing, hideIndicator = false, className, ...props }) {
36
+ return (_jsxs(RadioGroupPrimitive.Item, { className: cn('group relative flex w-full cursor-pointer border border-border-strong bg-surface text-start ', LAYOUT[layout].card, layout === 'stack' ? '' : 'text-start ', 'transition-[border-color,background-color,box-shadow] duration-150 hover:border-fg-subtle ', 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent ', 'disabled:pointer-events-none disabled:opacity-40 ', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent-soft', className), ...props, children: [icon ? (_jsx("span", { "aria-hidden": "true", className: cn('flex shrink-0 text-fg-muted group-data-[state=checked]:text-accent', LAYOUT[layout].icon), children: icon })) : null, _jsxs("span", { className: cn('flex min-w-0 flex-col gap-0.5', layout === 'stack' ? 'items-center' : 'flex-1'), children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: LAYOUT[layout].title, children: title }), trailing ? _jsx("span", { className: "ms-auto flex shrink-0 items-center", children: trailing }) : null] }), valueLine === undefined || valueLine === null ? null : (_jsx("span", { className: "font-mono text-[20px] font-extrabold tracking-[-0.02em] text-fg", children: valueLine })), description === undefined || description === null ? null : (_jsx("span", { className: LAYOUT[layout].description, children: description }))] }), hideIndicator ? null : (_jsx(RadioGroupPrimitive.Indicator, { "aria-hidden": "true", className: cn('absolute end-2.5 top-2.5 flex size-[18px] items-center justify-center rounded-full bg-accent text-accent-fg',
37
37
  // keep the check clear of the trailing slot when both are present
38
38
  trailing ? 'top-auto bottom-2.5' : ''), children: _jsx(Check, { strokeWidth: 3, className: "size-3" }) }))] }));
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RadioCard.js","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AA4BrC,+EAA+E;AAC/E,MAAM,MAAM,GAAG;IACb,GAAG,EAAE;QACH,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE,uCAAuC;KACrD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,2CAA2C;QACjD,IAAI,EACF,kEAAkE;YAClE,oGAAoG;QACtG,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,iDAAiD;KAC/D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,IAAI,EACF,kEAAkE;YAClE,+FAA+F;QACjG,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,iDAAiD;KAC/D;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,GAAG,KAAK,EACd,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,aAAa,GAAG,KAAK,EACrB,SAAS,EACT,GAAG,KAAK,EACO;IACf,OAAO,CACL,MAAC,mBAAmB,CAAC,IAAI,IACvB,SAAS,EAAE,EAAE,CACX,8FAA8F,EAC9F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EACnB,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EACvC,4FAA4F,EAC5F,sFAAsF,EACtF,mDAAmD,EACnD,wEAAwE,EACxE,SAAS,CACV,KACG,KAAK,aAER,IAAI,CAAC,CAAC,CAAC,CACN,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,oEAAoE,EACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,YAEA,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,EACR,gBACE,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/C,aAED,gBAAM,SAAS,EAAC,yBAAyB,aACvC,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,YAAG,KAAK,GAAQ,EACpD,QAAQ,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,oCAAoC,YAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IACpF,EACN,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1D,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,YAAG,WAAW,GAAQ,CAClE,IACI,EACN,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,KAAC,mBAAmB,CAAC,SAAS,mBAChB,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,6GAA6G;gBAC7G,kEAAkE;gBAClE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACtC,YAED,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,GAAG,GACd,CACjC,IACwB,CAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"RadioCard.js","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAsCrC,+EAA+E;AAC/E,MAAM,MAAM,GAAG;IACb,GAAG,EAAE;QACH,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE,uCAAuC;KACrD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,2CAA2C;QACjD,IAAI,EACF,kEAAkE;YAClE,oGAAoG;QACtG,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,iDAAiD;KAC/D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,IAAI,EACF,kEAAkE;YAClE,+FAA+F;QACjG,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,iDAAiD;KAC/D;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,GAAG,KAAK,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,aAAa,GAAG,KAAK,EACrB,SAAS,EACT,GAAG,KAAK,EACO;IACf,OAAO,CACL,MAAC,mBAAmB,CAAC,IAAI,IACvB,SAAS,EAAE,EAAE,CACX,8FAA8F,EAC9F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EACnB,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EACvC,4FAA4F,EAC5F,sFAAsF,EACtF,mDAAmD,EACnD,wEAAwE,EACxE,SAAS,CACV,KACG,KAAK,aAER,IAAI,CAAC,CAAC,CAAC,CACN,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,oEAAoE,EACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,YAEA,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,EACR,gBACE,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/C,aAED,gBAAM,SAAS,EAAC,yBAAyB,aACvC,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,YAAG,KAAK,GAAQ,EACpD,QAAQ,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,oCAAoC,YAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IACpF,EACN,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtD,eAAM,SAAS,EAAC,iEAAiE,YAC9E,SAAS,GACL,CACR,EACA,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1D,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,YAAG,WAAW,GAAQ,CAClE,IACI,EACN,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,KAAC,mBAAmB,CAAC,SAAS,mBAChB,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,6GAA6G;gBAC7G,kEAAkE;gBAClE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACtC,YAED,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,GAAG,GACd,CACjC,IACwB,CAC5B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The four states of the desktop runtime chip (11-electron.md §8.1), verbatim
3
- * from that table's rows:
2
+ * The four states of the desktop runtime chip, verbatim from that table's
3
+ * rows:
4
4
  *
5
5
  * | State | Chip | Tone |
6
6
  * | Local DBs only, no sharing | `Local` (hard-drive icon) | muted |
@@ -25,9 +25,9 @@ export interface RuntimeChipProps {
25
25
  */
26
26
  label: string;
27
27
  /**
28
- * §8.1: "accent-soft; click → LAN panel". Supplying this renders a real
29
- * `<button>` — not a `<span>` with a click handler — so the chip is reachable
30
- * by keyboard and announced as actionable. Omit it and the chip is inert
28
+ * "accent-soft; click → LAN panel". Supplying this renders a real `<button>`
29
+ * — not a `<span>` with a click handler — so the chip is reachable by
30
+ * keyboard and announced as actionable. Omit it and the chip is inert
31
31
  * presentation, which is the honest rendering of the three states that have
32
32
  * nowhere to go.
33
33
  */
@@ -43,12 +43,12 @@ export interface RuntimeChipProps {
43
43
  }
44
44
  /**
45
45
  * The desktop runtime chip: what this Adminium is, and whether its data is
46
- * where you think it is (11-electron.md §8.1). Sits in the topbar next to the
47
- * environment area, desktop only.
46
+ * where you think it is. Sits in the topbar next to the environment area,
47
+ * desktop only.
48
48
  *
49
49
  * Fed by `GET /api/v1/system/info` + a connection-health poll — never by the
50
- * preload bridge (§8.1 is explicit, and §4 explains why: the server is the
51
- * authority for feature gating, the bridge only for native affordances).
50
+ * preload bridge (is explicit, explains why: the server is the authority for
51
+ * feature gating, the bridge only for native affordances).
52
52
  */
53
53
  export declare function RuntimeChip({ state, label, onClick, description, className }: RuntimeChipProps): import("react").JSX.Element;
54
54
  //# sourceMappingURL=RuntimeChip.d.ts.map
@@ -4,10 +4,10 @@ import { Database, HardDrive, Unplug, Wifi } from 'lucide-react';
4
4
  import { cn } from '../../lib/cn.js';
5
5
  import { badgeVariants } from '../badge/Badge.js';
6
6
  /**
7
- * §8.1's tone column, mapped onto the shared `Tone` vocabulary (03 §3.3):
8
- * "muted" is `neutral` (surface-3 + fg-muted), "accent-soft" is `accent`
9
- * (accent-soft + accent), "warn" is `warn`. No new tints — the whole point of
10
- * the vocabulary is that a chip cannot invent a colour.
7
+ * The tone column, mapped onto the shared `Tone` vocabulary: "muted" is
8
+ * `neutral` (surface-3 + fg-muted), "accent-soft" is `accent` (accent-soft +
9
+ * accent), "warn" is `warn`. No new tints — the whole point of the vocabulary
10
+ * is that a chip cannot invent a colour.
11
11
  *
12
12
  * ICONS: `hard-drive` for `local` is specified. The rest follow
13
13
  * `System States.dc.html`, whose "Database unreachable" state is a
@@ -24,12 +24,12 @@ const STATE_STYLES = Object.freeze({
24
24
  });
25
25
  /**
26
26
  * The desktop runtime chip: what this Adminium is, and whether its data is
27
- * where you think it is (11-electron.md §8.1). Sits in the topbar next to the
28
- * environment area, desktop only.
27
+ * where you think it is. Sits in the topbar next to the environment area,
28
+ * desktop only.
29
29
  *
30
30
  * Fed by `GET /api/v1/system/info` + a connection-health poll — never by the
31
- * preload bridge (§8.1 is explicit, and §4 explains why: the server is the
32
- * authority for feature gating, the bridge only for native affordances).
31
+ * preload bridge (is explicit, explains why: the server is the authority for
32
+ * feature gating, the bridge only for native affordances).
33
33
  */
34
34
  export function RuntimeChip({ state, label, onClick, description, className }) {
35
35
  const { icon: Icon, tone } = STATE_STYLES[state];
@@ -20,7 +20,7 @@ export type SearchInputProps = SearchInputBaseProps & ({
20
20
  /**
21
21
  * SearchInput — Search icon + borderless input inside a bordered `--surface-2`
22
22
  * pill, optional `Kbd` "⌘K" chip and clear button
23
- * (research/design-system.md §3 Tier 2).
23
+ * (research/design-system.md Tier 2).
24
24
  */
25
25
  export declare function SearchInput({ className, inputClassName, kbd, onClear, clearLabel, ref, onChange, ...inputProps }: SearchInputProps): React.JSX.Element;
26
26
  export {};
@@ -7,7 +7,7 @@ import { Kbd } from '../kbd/index.js';
7
7
  /**
8
8
  * SearchInput — Search icon + borderless input inside a bordered `--surface-2`
9
9
  * pill, optional `Kbd` "⌘K" chip and clear button
10
- * (research/design-system.md §3 Tier 2).
10
+ * (research/design-system.md Tier 2).
11
11
  */
12
12
  export function SearchInput({ className, inputClassName, kbd, onClear, clearLabel, ref, onChange, ...inputProps }) {
13
13
  const innerRef = useRef(null);
@@ -21,7 +21,7 @@ export interface SecretInputProps extends Omit<React.ComponentPropsWithRef<'inpu
21
21
  * SecretInput — masked mono value (API keys, tokens) with an eye reveal
22
22
  * toggle and a copy button that flips to a check + announces `copiedLabel`
23
23
  * through a polite `aria-live` region for 1.4s
24
- * (research/design-system.md §3 Tier 2).
24
+ * (research/design-system.md Tier 2).
25
25
  */
26
26
  export declare function SecretInput({ className, inputClassName, revealLabel, hideLabel, copyLabel, copiedLabel, error, onCopy, ref, ...inputProps }: SecretInputProps): React.JSX.Element;
27
27
  //# sourceMappingURL=SecretInput.d.ts.map
@@ -11,7 +11,7 @@ export const SECRET_COPIED_MS = 1400;
11
11
  * SecretInput — masked mono value (API keys, tokens) with an eye reveal
12
12
  * toggle and a copy button that flips to a check + announces `copiedLabel`
13
13
  * through a polite `aria-live` region for 1.4s
14
- * (research/design-system.md §3 Tier 2).
14
+ * (research/design-system.md Tier 2).
15
15
  */
16
16
  export function SecretInput({ className, inputClassName, revealLabel, hideLabel, copyLabel, copiedLabel, error = false, onCopy, ref, ...inputProps }) {
17
17
  const innerRef = useRef(null);