@sixthshift/design-system 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/README.md +242 -33
  2. package/dist/components/Badge/Badge.d.ts +65 -7
  3. package/dist/components/Badge/Badge.d.ts.map +1 -1
  4. package/dist/components/Badge/Badge.js +56 -46
  5. package/dist/components/Badge/Badge.js.map +1 -1
  6. package/dist/components/Badge/index.d.ts +1 -1
  7. package/dist/components/Badge/index.d.ts.map +1 -1
  8. package/dist/components/Badge/index.js +1 -1
  9. package/dist/components/Badge/index.js.map +1 -1
  10. package/dist/components/BarChart/BarChart.d.ts +20 -2
  11. package/dist/components/BarChart/BarChart.d.ts.map +1 -1
  12. package/dist/components/BarChart/BarChart.js +17 -3
  13. package/dist/components/BarChart/BarChart.js.map +1 -1
  14. package/dist/components/Button/Button.d.ts +85 -6
  15. package/dist/components/Button/Button.d.ts.map +1 -1
  16. package/dist/components/Button/Button.js +97 -106
  17. package/dist/components/Button/Button.js.map +1 -1
  18. package/dist/components/Button/index.d.ts +1 -1
  19. package/dist/components/Button/index.d.ts.map +1 -1
  20. package/dist/components/Button/index.js +1 -1
  21. package/dist/components/Button/index.js.map +1 -1
  22. package/dist/components/Calendar/Calendar.d.ts +31 -1
  23. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  24. package/dist/components/Calendar/Calendar.js +94 -225
  25. package/dist/components/Calendar/Calendar.js.map +1 -1
  26. package/dist/components/Calendar/CalendarView.d.ts +15 -0
  27. package/dist/components/Calendar/CalendarView.d.ts.map +1 -0
  28. package/dist/components/Calendar/CalendarView.js +263 -0
  29. package/dist/components/Calendar/CalendarView.js.map +1 -0
  30. package/dist/components/Calendar/calendar.types.d.ts +87 -27
  31. package/dist/components/Calendar/calendar.types.d.ts.map +1 -1
  32. package/dist/components/Calendar/calendar.types.js +10 -3
  33. package/dist/components/Calendar/calendar.types.js.map +1 -1
  34. package/dist/components/Calendar/index.d.ts +16 -2
  35. package/dist/components/Calendar/index.d.ts.map +1 -1
  36. package/dist/components/Calendar/index.js +15 -1
  37. package/dist/components/Calendar/index.js.map +1 -1
  38. package/dist/components/Card/Card.d.ts +13 -0
  39. package/dist/components/Card/Card.d.ts.map +1 -1
  40. package/dist/components/Card/Card.js +15 -2
  41. package/dist/components/Card/Card.js.map +1 -1
  42. package/dist/components/Checkbox/Checkbox.d.ts +21 -0
  43. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  44. package/dist/components/Checkbox/Checkbox.js +22 -1
  45. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  46. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +22 -0
  47. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  48. package/dist/components/CheckboxGroup/CheckboxGroup.js +22 -0
  49. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  50. package/dist/components/Code/Editor/Editor.js +2 -2
  51. package/dist/components/Code/Editor/Editor.js.map +1 -1
  52. package/dist/components/Code/Editor/themes.d.ts +2 -2
  53. package/dist/components/Code/Editor/themes.d.ts.map +1 -1
  54. package/dist/components/Code/Editor/themes.js +50 -32
  55. package/dist/components/Code/Editor/themes.js.map +1 -1
  56. package/dist/components/Code/ValidationStatus/ValidationStatus.d.ts.map +1 -1
  57. package/dist/components/Code/ValidationStatus/ValidationStatus.js.map +1 -1
  58. package/dist/components/DatePicker/DatePicker.d.ts +45 -2
  59. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  60. package/dist/components/DatePicker/DatePicker.js +228 -11
  61. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  62. package/dist/components/DatePicker/DateSegments.d.ts +60 -0
  63. package/dist/components/DatePicker/DateSegments.d.ts.map +1 -0
  64. package/dist/components/DatePicker/DateSegments.js +80 -0
  65. package/dist/components/DatePicker/DateSegments.js.map +1 -0
  66. package/dist/components/DatePicker/datepicker.types.d.ts +53 -37
  67. package/dist/components/DatePicker/datepicker.types.d.ts.map +1 -1
  68. package/dist/components/DatePicker/datepicker.types.js +5 -3
  69. package/dist/components/DatePicker/datepicker.types.js.map +1 -1
  70. package/dist/components/DatePicker/index.d.ts +10 -1
  71. package/dist/components/DatePicker/index.d.ts.map +1 -1
  72. package/dist/components/DatePicker/index.js +8 -0
  73. package/dist/components/DatePicker/index.js.map +1 -1
  74. package/dist/components/DateRangePicker/DateRangePicker.d.ts +22 -3
  75. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  76. package/dist/components/DateRangePicker/DateRangePicker.js +38 -24
  77. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  78. package/dist/components/DateRangePicker/daterangepicker.types.d.ts +26 -21
  79. package/dist/components/DateRangePicker/daterangepicker.types.d.ts.map +1 -1
  80. package/dist/components/DateRangePicker/daterangepicker.types.js +6 -0
  81. package/dist/components/DateRangePicker/daterangepicker.types.js.map +1 -1
  82. package/dist/components/DateRangePicker/index.d.ts +8 -1
  83. package/dist/components/DateRangePicker/index.d.ts.map +1 -1
  84. package/dist/components/DateRangePicker/index.js +6 -0
  85. package/dist/components/DateRangePicker/index.js.map +1 -1
  86. package/dist/components/DateTimePicker/DateTimePicker.d.ts +32 -4
  87. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +1 -1
  88. package/dist/components/DateTimePicker/DateTimePicker.js +133 -42
  89. package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
  90. package/dist/components/DateTimePicker/DateTimeSegments.d.ts +41 -0
  91. package/dist/components/DateTimePicker/DateTimeSegments.d.ts.map +1 -0
  92. package/dist/components/DateTimePicker/DateTimeSegments.js +67 -0
  93. package/dist/components/DateTimePicker/DateTimeSegments.js.map +1 -0
  94. package/dist/components/DateTimePicker/datetimepicker.types.d.ts +26 -18
  95. package/dist/components/DateTimePicker/datetimepicker.types.d.ts.map +1 -1
  96. package/dist/components/DateTimePicker/datetimepicker.types.js +10 -0
  97. package/dist/components/DateTimePicker/datetimepicker.types.js.map +1 -1
  98. package/dist/components/DateTimePicker/index.d.ts +8 -1
  99. package/dist/components/DateTimePicker/index.d.ts.map +1 -1
  100. package/dist/components/DateTimePicker/index.js +6 -0
  101. package/dist/components/DateTimePicker/index.js.map +1 -1
  102. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +30 -4
  103. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  104. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +171 -72
  105. package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
  106. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts +28 -19
  107. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.d.ts.map +1 -1
  108. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js +8 -0
  109. package/dist/components/DateTimeRangePicker/datetimerangepicker.types.js.map +1 -1
  110. package/dist/components/DateTimeRangePicker/index.d.ts +8 -0
  111. package/dist/components/DateTimeRangePicker/index.d.ts.map +1 -1
  112. package/dist/components/DateTimeRangePicker/index.js +7 -0
  113. package/dist/components/DateTimeRangePicker/index.js.map +1 -1
  114. package/dist/components/Field/Field.d.ts +18 -20
  115. package/dist/components/Field/Field.d.ts.map +1 -1
  116. package/dist/components/Field/Field.js +22 -5
  117. package/dist/components/Field/Field.js.map +1 -1
  118. package/dist/components/FormField/FormField.d.ts +15 -0
  119. package/dist/components/FormField/FormField.d.ts.map +1 -1
  120. package/dist/components/FormField/FormField.js +15 -0
  121. package/dist/components/FormField/FormField.js.map +1 -1
  122. package/dist/components/HoverCard/HoverCard.d.ts +6 -0
  123. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
  124. package/dist/components/HoverCard/HoverCard.js +6 -0
  125. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  126. package/dist/components/Input/Input.d.ts +15 -0
  127. package/dist/components/Input/Input.d.ts.map +1 -1
  128. package/dist/components/Input/Input.js +18 -3
  129. package/dist/components/Input/Input.js.map +1 -1
  130. package/dist/components/LineChart/LineChart.d.ts +35 -2
  131. package/dist/components/LineChart/LineChart.d.ts.map +1 -1
  132. package/dist/components/LineChart/LineChart.js +22 -3
  133. package/dist/components/LineChart/LineChart.js.map +1 -1
  134. package/dist/components/Markdown/Markdown.d.ts +19 -4
  135. package/dist/components/Markdown/Markdown.d.ts.map +1 -1
  136. package/dist/components/Markdown/Markdown.js +20 -2
  137. package/dist/components/Markdown/Markdown.js.map +1 -1
  138. package/dist/components/Message/Message.d.ts +49 -4
  139. package/dist/components/Message/Message.d.ts.map +1 -1
  140. package/dist/components/Message/Message.js +62 -11
  141. package/dist/components/Message/Message.js.map +1 -1
  142. package/dist/components/Message/index.d.ts +1 -1
  143. package/dist/components/Message/index.d.ts.map +1 -1
  144. package/dist/components/Modal/Modal.d.ts +60 -5
  145. package/dist/components/Modal/Modal.d.ts.map +1 -1
  146. package/dist/components/Modal/Modal.js +52 -6
  147. package/dist/components/Modal/Modal.js.map +1 -1
  148. package/dist/components/Modal/components/ModalContext.d.ts +14 -0
  149. package/dist/components/Modal/components/ModalContext.d.ts.map +1 -1
  150. package/dist/components/Modal/components/ModalContext.js.map +1 -1
  151. package/dist/components/Modal/components/ModalHeader.d.ts.map +1 -1
  152. package/dist/components/Modal/components/ModalHeader.js +13 -2
  153. package/dist/components/Modal/components/ModalHeader.js.map +1 -1
  154. package/dist/components/Popover/Popover.d.ts +29 -0
  155. package/dist/components/Popover/Popover.d.ts.map +1 -1
  156. package/dist/components/Popover/Popover.js +36 -0
  157. package/dist/components/Popover/Popover.js.map +1 -1
  158. package/dist/components/Popover/components/PopoverBody.d.ts.map +1 -1
  159. package/dist/components/Popover/components/PopoverBody.js +5 -2
  160. package/dist/components/Popover/components/PopoverBody.js.map +1 -1
  161. package/dist/components/Popover/components/PopoverContext.d.ts +1 -0
  162. package/dist/components/Popover/components/PopoverContext.d.ts.map +1 -1
  163. package/dist/components/Popover/components/PopoverContext.js.map +1 -1
  164. package/dist/components/Popover/components/PopoverTrigger.d.ts.map +1 -1
  165. package/dist/components/Popover/components/PopoverTrigger.js +2 -2
  166. package/dist/components/Popover/components/PopoverTrigger.js.map +1 -1
  167. package/dist/components/ProgressBar/ProgressBar.d.ts +16 -1
  168. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -1
  169. package/dist/components/ProgressBar/ProgressBar.js +19 -3
  170. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  171. package/dist/components/RadioButton/RadioButton.d.ts +26 -0
  172. package/dist/components/RadioButton/RadioButton.d.ts.map +1 -1
  173. package/dist/components/RadioButton/RadioButton.js +35 -1
  174. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  175. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts +26 -0
  176. package/dist/components/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -1
  177. package/dist/components/RadioButtonGroup/RadioButtonGroup.js +33 -0
  178. package/dist/components/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  179. package/dist/components/SearchInput/SearchInput.d.ts +10 -0
  180. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  181. package/dist/components/SearchInput/SearchInput.js +12 -1
  182. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  183. package/dist/components/Select/Select.d.ts +10 -2
  184. package/dist/components/Select/Select.d.ts.map +1 -1
  185. package/dist/components/Select/Select.js +63 -18
  186. package/dist/components/Select/Select.js.map +1 -1
  187. package/dist/components/Select/SelectDropdown.d.ts +14 -2
  188. package/dist/components/Select/SelectDropdown.d.ts.map +1 -1
  189. package/dist/components/Select/SelectDropdown.js +20 -4
  190. package/dist/components/Select/SelectDropdown.js.map +1 -1
  191. package/dist/components/Select/SelectTrigger.d.ts +10 -3
  192. package/dist/components/Select/SelectTrigger.d.ts.map +1 -1
  193. package/dist/components/Select/SelectTrigger.js +12 -3
  194. package/dist/components/Select/SelectTrigger.js.map +1 -1
  195. package/dist/components/Select/useSelectKeyboard.d.ts +15 -1
  196. package/dist/components/Select/useSelectKeyboard.d.ts.map +1 -1
  197. package/dist/components/Select/useSelectKeyboard.js +73 -65
  198. package/dist/components/Select/useSelectKeyboard.js.map +1 -1
  199. package/dist/components/Separator/Separator.d.ts +10 -0
  200. package/dist/components/Separator/Separator.d.ts.map +1 -1
  201. package/dist/components/Separator/Separator.js +10 -0
  202. package/dist/components/Separator/Separator.js.map +1 -1
  203. package/dist/components/Sheet/Sheet.d.ts +25 -5
  204. package/dist/components/Sheet/Sheet.d.ts.map +1 -1
  205. package/dist/components/Sheet/Sheet.js +24 -6
  206. package/dist/components/Sheet/Sheet.js.map +1 -1
  207. package/dist/components/Sheet/components/SheetContext.d.ts +10 -0
  208. package/dist/components/Sheet/components/SheetContext.d.ts.map +1 -1
  209. package/dist/components/Sheet/components/SheetContext.js.map +1 -1
  210. package/dist/components/Sheet/components/SheetFooter.js +1 -1
  211. package/dist/components/Sheet/components/SheetFooter.js.map +1 -1
  212. package/dist/components/Sheet/components/SheetHeader.d.ts.map +1 -1
  213. package/dist/components/Sheet/components/SheetHeader.js +11 -2
  214. package/dist/components/Sheet/components/SheetHeader.js.map +1 -1
  215. package/dist/components/Sparkline/Sparkline.d.ts +21 -2
  216. package/dist/components/Sparkline/Sparkline.d.ts.map +1 -1
  217. package/dist/components/Sparkline/Sparkline.js +16 -3
  218. package/dist/components/Sparkline/Sparkline.js.map +1 -1
  219. package/dist/components/Spinner/Spinner.d.ts +27 -2
  220. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  221. package/dist/components/Spinner/Spinner.js +28 -3
  222. package/dist/components/Spinner/Spinner.js.map +1 -1
  223. package/dist/components/Switch/Switch.d.ts +18 -0
  224. package/dist/components/Switch/Switch.d.ts.map +1 -1
  225. package/dist/components/Switch/Switch.js +19 -1
  226. package/dist/components/Switch/Switch.js.map +1 -1
  227. package/dist/components/Tabs/Tabs.d.ts +8 -2
  228. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  229. package/dist/components/Tabs/Tabs.js +6 -0
  230. package/dist/components/Tabs/Tabs.js.map +1 -1
  231. package/dist/components/Tabs/components/TabsList.d.ts +1 -1
  232. package/dist/components/Tabs/components/TabsList.d.ts.map +1 -1
  233. package/dist/components/Tabs/components/TabsList.js +5 -4
  234. package/dist/components/Tabs/components/TabsList.js.map +1 -1
  235. package/dist/components/Tabs/components/TabsPanels.d.ts +1 -1
  236. package/dist/components/Tabs/components/TabsPanels.d.ts.map +1 -1
  237. package/dist/components/Tabs/components/TabsPanels.js +5 -3
  238. package/dist/components/Tabs/components/TabsPanels.js.map +1 -1
  239. package/dist/components/Tabs/components/TabsTrigger.d.ts.map +1 -1
  240. package/dist/components/Tabs/components/TabsTrigger.js +22 -6
  241. package/dist/components/Tabs/components/TabsTrigger.js.map +1 -1
  242. package/dist/components/TagChip/TagChip.d.ts +16 -13
  243. package/dist/components/TagChip/TagChip.d.ts.map +1 -1
  244. package/dist/components/TagChip/TagChip.js +18 -3
  245. package/dist/components/TagChip/TagChip.js.map +1 -1
  246. package/dist/components/TagInput/TagInput.d.ts +12 -9
  247. package/dist/components/TagInput/TagInput.d.ts.map +1 -1
  248. package/dist/components/TagInput/TagInput.js +16 -4
  249. package/dist/components/TagInput/TagInput.js.map +1 -1
  250. package/dist/components/Text/Text.d.ts +9 -0
  251. package/dist/components/Text/Text.d.ts.map +1 -1
  252. package/dist/components/Text/Text.js +9 -0
  253. package/dist/components/Text/Text.js.map +1 -1
  254. package/dist/components/TextInline/TextInline.d.ts +15 -4
  255. package/dist/components/TextInline/TextInline.d.ts.map +1 -1
  256. package/dist/components/TextInline/TextInline.js +11 -0
  257. package/dist/components/TextInline/TextInline.js.map +1 -1
  258. package/dist/components/Textarea/Textarea.d.ts +12 -0
  259. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  260. package/dist/components/Textarea/Textarea.js +13 -1
  261. package/dist/components/Textarea/Textarea.js.map +1 -1
  262. package/dist/components/TimePicker/TimeColumn.d.ts +10 -1
  263. package/dist/components/TimePicker/TimeColumn.d.ts.map +1 -1
  264. package/dist/components/TimePicker/TimeColumn.js +8 -1
  265. package/dist/components/TimePicker/TimeColumn.js.map +1 -1
  266. package/dist/components/TimePicker/TimePicker.d.ts +34 -2
  267. package/dist/components/TimePicker/TimePicker.d.ts.map +1 -1
  268. package/dist/components/TimePicker/TimePicker.js +118 -15
  269. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  270. package/dist/components/TimePicker/TimeSegments.d.ts +50 -0
  271. package/dist/components/TimePicker/TimeSegments.d.ts.map +1 -0
  272. package/dist/components/TimePicker/TimeSegments.js +93 -0
  273. package/dist/components/TimePicker/TimeSegments.js.map +1 -0
  274. package/dist/components/TimePicker/timepicker.hooks.d.ts +0 -4
  275. package/dist/components/TimePicker/timepicker.hooks.d.ts.map +1 -1
  276. package/dist/components/TimePicker/timepicker.hooks.js +1 -23
  277. package/dist/components/TimePicker/timepicker.hooks.js.map +1 -1
  278. package/dist/components/TimePicker/timepicker.types.d.ts +14 -15
  279. package/dist/components/TimePicker/timepicker.types.d.ts.map +1 -1
  280. package/dist/components/TimePicker/timepicker.types.js +4 -3
  281. package/dist/components/TimePicker/timepicker.types.js.map +1 -1
  282. package/dist/components/Toast/Toast.d.ts +27 -0
  283. package/dist/components/Toast/Toast.d.ts.map +1 -1
  284. package/dist/components/Toast/Toast.js +28 -1
  285. package/dist/components/Toast/Toast.js.map +1 -1
  286. package/dist/components/Toggle/Toggle.d.ts +31 -12
  287. package/dist/components/Toggle/Toggle.d.ts.map +1 -1
  288. package/dist/components/Toggle/Toggle.js +19 -31
  289. package/dist/components/Toggle/Toggle.js.map +1 -1
  290. package/dist/components/Toggle/index.d.ts +1 -1
  291. package/dist/components/Toggle/index.d.ts.map +1 -1
  292. package/dist/components/Toggle/index.js +1 -1
  293. package/dist/components/Toggle/index.js.map +1 -1
  294. package/dist/components/ToggleGroup/ToggleGroup.d.ts +17 -0
  295. package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  296. package/dist/components/ToggleGroup/ToggleGroup.js +17 -0
  297. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  298. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  299. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts.map +1 -1
  300. package/dist/components/ToggleGroup/ToggleGroupItem.js +7 -6
  301. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  302. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts +4 -3
  303. package/dist/components/ToggleGroup/ToggleGroupMultiple.d.ts.map +1 -1
  304. package/dist/components/ToggleGroup/ToggleGroupMultiple.js +2 -2
  305. package/dist/components/ToggleGroup/ToggleGroupMultiple.js.map +1 -1
  306. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts +4 -3
  307. package/dist/components/ToggleGroup/ToggleGroupSingle.d.ts.map +1 -1
  308. package/dist/components/ToggleGroup/ToggleGroupSingle.js +2 -2
  309. package/dist/components/ToggleGroup/ToggleGroupSingle.js.map +1 -1
  310. package/dist/components/ToggleGroup/toggleGroup.types.d.ts +12 -3
  311. package/dist/components/ToggleGroup/toggleGroup.types.d.ts.map +1 -1
  312. package/dist/components/Tooltip/Tooltip.d.ts +6 -0
  313. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  314. package/dist/components/Tooltip/Tooltip.js +6 -0
  315. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  316. package/dist/date-time/index.d.ts +2 -0
  317. package/dist/date-time/index.d.ts.map +1 -1
  318. package/dist/date-time/index.js +9 -1
  319. package/dist/date-time/index.js.map +1 -1
  320. package/dist/date-time/iso.d.ts +261 -0
  321. package/dist/date-time/iso.d.ts.map +1 -0
  322. package/dist/date-time/iso.js +358 -0
  323. package/dist/date-time/iso.js.map +1 -0
  324. package/dist/date-time/now.d.ts +7 -6
  325. package/dist/date-time/now.d.ts.map +1 -1
  326. package/dist/date-time/now.js +3 -3
  327. package/dist/date-time/now.js.map +1 -1
  328. package/dist/internal/PickerField.d.ts +45 -0
  329. package/dist/internal/PickerField.d.ts.map +1 -0
  330. package/dist/internal/PickerField.js +24 -0
  331. package/dist/internal/PickerField.js.map +1 -0
  332. package/dist/internal/SegmentedField.d.ts +98 -0
  333. package/dist/internal/SegmentedField.d.ts.map +1 -0
  334. package/dist/internal/SegmentedField.js +315 -0
  335. package/dist/internal/SegmentedField.js.map +1 -0
  336. package/dist/internal/index.d.ts +2 -0
  337. package/dist/internal/index.d.ts.map +1 -1
  338. package/dist/internal/index.js +2 -0
  339. package/dist/internal/index.js.map +1 -1
  340. package/dist/theme/index.d.ts +4 -3
  341. package/dist/theme/index.d.ts.map +1 -1
  342. package/dist/theme/index.js +3 -2
  343. package/dist/theme/index.js.map +1 -1
  344. package/dist/theme/schema.d.ts +49 -33
  345. package/dist/theme/schema.d.ts.map +1 -1
  346. package/dist/theme/schema.js +30 -21
  347. package/dist/theme/schema.js.map +1 -1
  348. package/package.json +11 -59
  349. package/src/components/Badge/Badge.tsx +87 -49
  350. package/src/components/Badge/index.ts +10 -1
  351. package/src/components/BarChart/BarChart.tsx +37 -30
  352. package/src/components/Button/Button.tsx +129 -106
  353. package/src/components/Button/index.ts +10 -1
  354. package/src/components/Calendar/Calendar.tsx +104 -401
  355. package/src/components/Calendar/CalendarView.tsx +454 -0
  356. package/src/components/Calendar/calendar.types.ts +104 -29
  357. package/src/components/Calendar/index.ts +16 -17
  358. package/src/components/Card/Card.tsx +15 -2
  359. package/src/components/Checkbox/Checkbox.tsx +22 -2
  360. package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -0
  361. package/src/components/Code/Editor/Editor.tsx +2 -2
  362. package/src/components/Code/Editor/themes.ts +50 -32
  363. package/src/components/Code/ValidationStatus/ValidationStatus.tsx +6 -3
  364. package/src/components/DatePicker/DatePicker.tsx +369 -42
  365. package/src/components/DatePicker/DateSegments.tsx +125 -0
  366. package/src/components/DatePicker/datepicker.types.ts +58 -39
  367. package/src/components/DatePicker/index.ts +11 -3
  368. package/src/components/DateRangePicker/DateRangePicker.tsx +38 -24
  369. package/src/components/DateRangePicker/daterangepicker.types.ts +29 -23
  370. package/src/components/DateRangePicker/index.ts +9 -1
  371. package/src/components/DateTimePicker/DateTimePicker.tsx +189 -88
  372. package/src/components/DateTimePicker/DateTimeSegments.tsx +113 -0
  373. package/src/components/DateTimePicker/datetimepicker.types.ts +29 -19
  374. package/src/components/DateTimePicker/index.ts +9 -1
  375. package/src/components/DateTimeRangePicker/DateTimeRangePicker.tsx +251 -126
  376. package/src/components/DateTimeRangePicker/datetimerangepicker.types.ts +31 -20
  377. package/src/components/DateTimeRangePicker/index.ts +9 -0
  378. package/src/components/Field/Field.tsx +25 -26
  379. package/src/components/FormField/FormField.tsx +15 -0
  380. package/src/components/HoverCard/HoverCard.tsx +6 -0
  381. package/src/components/Input/Input.tsx +19 -4
  382. package/src/components/LineChart/LineChart.tsx +164 -141
  383. package/src/components/Markdown/Markdown.tsx +21 -3
  384. package/src/components/Message/Message.tsx +83 -17
  385. package/src/components/Message/index.ts +1 -1
  386. package/src/components/Modal/Modal.tsx +157 -86
  387. package/src/components/Modal/components/ModalContext.tsx +14 -0
  388. package/src/components/Modal/components/ModalHeader.tsx +15 -3
  389. package/src/components/Popover/Popover.tsx +36 -0
  390. package/src/components/Popover/components/PopoverBody.tsx +6 -1
  391. package/src/components/Popover/components/PopoverContext.tsx +1 -0
  392. package/src/components/Popover/components/PopoverTrigger.tsx +2 -1
  393. package/src/components/ProgressBar/ProgressBar.tsx +46 -28
  394. package/src/components/RadioButton/RadioButton.tsx +34 -3
  395. package/src/components/RadioButtonGroup/RadioButtonGroup.tsx +32 -0
  396. package/src/components/SearchInput/SearchInput.tsx +13 -2
  397. package/src/components/Select/Select.tsx +75 -19
  398. package/src/components/Select/SelectDropdown.tsx +45 -12
  399. package/src/components/Select/SelectTrigger.tsx +31 -8
  400. package/src/components/Select/useSelectKeyboard.ts +20 -10
  401. package/src/components/Separator/Separator.tsx +10 -0
  402. package/src/components/Sheet/Sheet.tsx +114 -83
  403. package/src/components/Sheet/components/SheetContext.tsx +10 -0
  404. package/src/components/Sheet/components/SheetFooter.tsx +1 -1
  405. package/src/components/Sheet/components/SheetHeader.tsx +18 -3
  406. package/src/components/Sparkline/Sparkline.tsx +40 -36
  407. package/src/components/Spinner/Spinner.tsx +28 -3
  408. package/src/components/Switch/Switch.tsx +27 -4
  409. package/src/components/Tabs/Tabs.tsx +6 -0
  410. package/src/components/Tabs/components/TabsList.tsx +5 -3
  411. package/src/components/Tabs/components/TabsPanels.tsx +5 -3
  412. package/src/components/Tabs/components/TabsTrigger.tsx +22 -5
  413. package/src/components/TagChip/TagChip.tsx +27 -18
  414. package/src/components/TagInput/TagInput.tsx +16 -11
  415. package/src/components/Text/Text.tsx +9 -0
  416. package/src/components/TextInline/TextInline.tsx +11 -0
  417. package/src/components/Textarea/Textarea.tsx +13 -1
  418. package/src/components/TimePicker/TimeColumn.tsx +24 -1
  419. package/src/components/TimePicker/TimePicker.tsx +157 -51
  420. package/src/components/TimePicker/TimeSegments.tsx +131 -0
  421. package/src/components/TimePicker/timepicker.hooks.ts +1 -24
  422. package/src/components/TimePicker/timepicker.types.ts +14 -16
  423. package/src/components/Toast/Toast.tsx +28 -1
  424. package/src/components/Toggle/Toggle.tsx +34 -32
  425. package/src/components/Toggle/index.ts +1 -1
  426. package/src/components/ToggleGroup/ToggleGroup.tsx +17 -0
  427. package/src/components/ToggleGroup/ToggleGroupItem.tsx +13 -8
  428. package/src/components/ToggleGroup/ToggleGroupMultiple.tsx +3 -1
  429. package/src/components/ToggleGroup/ToggleGroupSingle.tsx +3 -1
  430. package/src/components/ToggleGroup/toggleGroup.types.ts +12 -3
  431. package/src/components/Tooltip/Tooltip.tsx +6 -0
  432. package/src/date-time/index.ts +61 -1
  433. package/src/date-time/iso.ts +511 -0
  434. package/src/date-time/now.ts +10 -9
  435. package/src/internal/PickerField.tsx +90 -0
  436. package/src/internal/SegmentedField.tsx +445 -0
  437. package/src/internal/index.ts +2 -0
  438. package/src/theme/index.ts +11 -9
  439. package/src/theme/recipes/badge.css +140 -0
  440. package/src/theme/recipes/button.css +167 -0
  441. package/src/theme/recipes/card.css +26 -0
  442. package/src/theme/recipes/checkbox.css +44 -0
  443. package/src/theme/recipes/field.css +14 -0
  444. package/src/theme/recipes/index.css +28 -0
  445. package/src/theme/recipes/input.css +29 -0
  446. package/src/theme/recipes/message.css +47 -0
  447. package/src/theme/recipes/modal.css +31 -0
  448. package/src/theme/recipes/radio-button.css +42 -0
  449. package/src/theme/recipes/search-input.css +16 -0
  450. package/src/theme/recipes/select.css +105 -0
  451. package/src/theme/recipes/sheet.css +34 -0
  452. package/src/theme/recipes/spinner.css +17 -0
  453. package/src/theme/recipes/switch.css +39 -0
  454. package/src/theme/recipes/tabs.css +41 -0
  455. package/src/theme/recipes/tag-chip.css +27 -0
  456. package/src/theme/recipes/textarea.css +20 -0
  457. package/src/theme/recipes/toggle.css +92 -0
  458. package/src/theme/schema.ts +59 -58
  459. package/src/theme/tokens.css +824 -0
  460. package/dist/components/Avatar/Avatar.d.ts +0 -6
  461. package/dist/components/Avatar/Avatar.d.ts.map +0 -1
  462. package/dist/components/Avatar/Avatar.js +0 -11
  463. package/dist/components/Avatar/Avatar.js.map +0 -1
  464. package/dist/components/Avatar/index.d.ts +0 -2
  465. package/dist/components/Avatar/index.d.ts.map +0 -1
  466. package/dist/components/Avatar/index.js +0 -2
  467. package/dist/components/Avatar/index.js.map +0 -1
  468. package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -12
  469. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  470. package/dist/components/Breadcrumb/Breadcrumb.js +0 -19
  471. package/dist/components/Breadcrumb/Breadcrumb.js.map +0 -1
  472. package/dist/components/Breadcrumb/index.d.ts +0 -2
  473. package/dist/components/Breadcrumb/index.d.ts.map +0 -1
  474. package/dist/components/Breadcrumb/index.js +0 -2
  475. package/dist/components/Breadcrumb/index.js.map +0 -1
  476. package/dist/components/ColorDot/ColorDot.d.ts +0 -13
  477. package/dist/components/ColorDot/ColorDot.d.ts.map +0 -1
  478. package/dist/components/ColorDot/ColorDot.js +0 -34
  479. package/dist/components/ColorDot/ColorDot.js.map +0 -1
  480. package/dist/components/ColorDot/index.d.ts +0 -2
  481. package/dist/components/ColorDot/index.d.ts.map +0 -1
  482. package/dist/components/ColorDot/index.js +0 -2
  483. package/dist/components/ColorDot/index.js.map +0 -1
  484. package/dist/components/EmptyState/EmptyState.d.ts +0 -15
  485. package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
  486. package/dist/components/EmptyState/EmptyState.js +0 -7
  487. package/dist/components/EmptyState/EmptyState.js.map +0 -1
  488. package/dist/components/EmptyState/index.d.ts +0 -2
  489. package/dist/components/EmptyState/index.d.ts.map +0 -1
  490. package/dist/components/EmptyState/index.js +0 -2
  491. package/dist/components/EmptyState/index.js.map +0 -1
  492. package/dist/components/HeatMap/HeatMapCalendar.d.ts +0 -11
  493. package/dist/components/HeatMap/HeatMapCalendar.d.ts.map +0 -1
  494. package/dist/components/HeatMap/HeatMapCalendar.js +0 -68
  495. package/dist/components/HeatMap/HeatMapCalendar.js.map +0 -1
  496. package/dist/components/HeatMap/HeatMapMatrix.d.ts +0 -12
  497. package/dist/components/HeatMap/HeatMapMatrix.d.ts.map +0 -1
  498. package/dist/components/HeatMap/HeatMapMatrix.js +0 -35
  499. package/dist/components/HeatMap/HeatMapMatrix.js.map +0 -1
  500. package/dist/components/HeatMap/heat-map.utils.d.ts +0 -10
  501. package/dist/components/HeatMap/heat-map.utils.d.ts.map +0 -1
  502. package/dist/components/HeatMap/heat-map.utils.js +0 -10
  503. package/dist/components/HeatMap/heat-map.utils.js.map +0 -1
  504. package/dist/components/HeatMap/index.d.ts +0 -4
  505. package/dist/components/HeatMap/index.d.ts.map +0 -1
  506. package/dist/components/HeatMap/index.js +0 -3
  507. package/dist/components/HeatMap/index.js.map +0 -1
  508. package/dist/components/MetricList/MetricList.d.ts +0 -9
  509. package/dist/components/MetricList/MetricList.d.ts.map +0 -1
  510. package/dist/components/MetricList/MetricList.js +0 -6
  511. package/dist/components/MetricList/MetricList.js.map +0 -1
  512. package/dist/components/MetricList/MetricRow.d.ts +0 -13
  513. package/dist/components/MetricList/MetricRow.d.ts.map +0 -1
  514. package/dist/components/MetricList/MetricRow.js +0 -13
  515. package/dist/components/MetricList/MetricRow.js.map +0 -1
  516. package/dist/components/MetricList/index.d.ts +0 -3
  517. package/dist/components/MetricList/index.d.ts.map +0 -1
  518. package/dist/components/MetricList/index.js +0 -3
  519. package/dist/components/MetricList/index.js.map +0 -1
  520. package/dist/components/NavBottom/NavBottom.d.ts +0 -15
  521. package/dist/components/NavBottom/NavBottom.d.ts.map +0 -1
  522. package/dist/components/NavBottom/NavBottom.js +0 -19
  523. package/dist/components/NavBottom/NavBottom.js.map +0 -1
  524. package/dist/components/NavBottom/index.d.ts +0 -3
  525. package/dist/components/NavBottom/index.d.ts.map +0 -1
  526. package/dist/components/NavBottom/index.js +0 -2
  527. package/dist/components/NavBottom/index.js.map +0 -1
  528. package/dist/components/NavSide/NavItem.d.ts +0 -9
  529. package/dist/components/NavSide/NavItem.d.ts.map +0 -1
  530. package/dist/components/NavSide/NavItem.js +0 -13
  531. package/dist/components/NavSide/NavItem.js.map +0 -1
  532. package/dist/components/NavSide/NavSide.d.ts +0 -15
  533. package/dist/components/NavSide/NavSide.d.ts.map +0 -1
  534. package/dist/components/NavSide/NavSide.js +0 -10
  535. package/dist/components/NavSide/NavSide.js.map +0 -1
  536. package/dist/components/NavSide/index.d.ts +0 -3
  537. package/dist/components/NavSide/index.d.ts.map +0 -1
  538. package/dist/components/NavSide/index.js +0 -2
  539. package/dist/components/NavSide/index.js.map +0 -1
  540. package/dist/components/NavSide/types.d.ts +0 -38
  541. package/dist/components/NavSide/types.d.ts.map +0 -1
  542. package/dist/components/NavSide/types.js +0 -2
  543. package/dist/components/NavSide/types.js.map +0 -1
  544. package/dist/components/Pagination/Pagination.d.ts +0 -35
  545. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  546. package/dist/components/Pagination/Pagination.js +0 -26
  547. package/dist/components/Pagination/Pagination.js.map +0 -1
  548. package/dist/components/Pagination/index.d.ts +0 -3
  549. package/dist/components/Pagination/index.d.ts.map +0 -1
  550. package/dist/components/Pagination/index.js +0 -2
  551. package/dist/components/Pagination/index.js.map +0 -1
  552. package/dist/components/Skeleton/Skeleton.d.ts +0 -3
  553. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  554. package/dist/components/Skeleton/Skeleton.js +0 -7
  555. package/dist/components/Skeleton/Skeleton.js.map +0 -1
  556. package/dist/components/Skeleton/index.d.ts +0 -2
  557. package/dist/components/Skeleton/index.d.ts.map +0 -1
  558. package/dist/components/Skeleton/index.js +0 -2
  559. package/dist/components/Skeleton/index.js.map +0 -1
  560. package/dist/components/StatsCard/StatsCard.d.ts +0 -17
  561. package/dist/components/StatsCard/StatsCard.d.ts.map +0 -1
  562. package/dist/components/StatsCard/StatsCard.js +0 -13
  563. package/dist/components/StatsCard/StatsCard.js.map +0 -1
  564. package/dist/components/StatsCard/index.d.ts +0 -2
  565. package/dist/components/StatsCard/index.d.ts.map +0 -1
  566. package/dist/components/StatsCard/index.js +0 -2
  567. package/dist/components/StatsCard/index.js.map +0 -1
  568. package/dist/styles.css +0 -2
  569. package/dist/theme.generated.css +0 -438
  570. package/src/components/Avatar/Avatar.tsx +0 -19
  571. package/src/components/Avatar/index.ts +0 -1
  572. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -47
  573. package/src/components/Breadcrumb/index.ts +0 -5
  574. package/src/components/ColorDot/ColorDot.tsx +0 -50
  575. package/src/components/ColorDot/index.ts +0 -1
  576. package/src/components/EmptyState/EmptyState.tsx +0 -29
  577. package/src/components/EmptyState/index.ts +0 -1
  578. package/src/components/HeatMap/HeatMapCalendar.tsx +0 -127
  579. package/src/components/HeatMap/HeatMapMatrix.tsx +0 -75
  580. package/src/components/HeatMap/heat-map.utils.ts +0 -15
  581. package/src/components/HeatMap/index.ts +0 -3
  582. package/src/components/MetricList/MetricList.tsx +0 -13
  583. package/src/components/MetricList/MetricRow.tsx +0 -30
  584. package/src/components/MetricList/index.ts +0 -2
  585. package/src/components/NavBottom/NavBottom.tsx +0 -53
  586. package/src/components/NavBottom/index.ts +0 -3
  587. package/src/components/NavSide/NavItem.tsx +0 -39
  588. package/src/components/NavSide/NavSide.tsx +0 -40
  589. package/src/components/NavSide/index.ts +0 -2
  590. package/src/components/NavSide/types.ts +0 -36
  591. package/src/components/Pagination/Pagination.tsx +0 -86
  592. package/src/components/Pagination/index.ts +0 -2
  593. package/src/components/Skeleton/Skeleton.tsx +0 -7
  594. package/src/components/Skeleton/index.ts +0 -1
  595. package/src/components/StatsCard/StatsCard.tsx +0 -40
  596. package/src/components/StatsCard/index.ts +0 -1
  597. package/src/styles/base.css +0 -41
  598. package/src/theme/palette.json +0 -100
  599. package/src/theme/palette.schema.json +0 -40
  600. package/src/theme/theme.json +0 -349
  601. package/src/theme/theme.schema.json +0 -876
  602. package/src/theme/typography.json +0 -7
  603. package/src/theme/typography.schema.json +0 -36
  604. package/tailwind.config.ts +0 -261
@@ -28,6 +28,15 @@
28
28
  * const display = formatDateShort(tomorrow); // 'Jan 16'
29
29
  */
30
30
  export { Temporal } from "@js-temporal/polyfill";
31
+ export { adaptDisabledDates,
32
+ // ISO-native arithmetic (no Temporal needed at the call site)
33
+ addDaysISO, addHoursISO, addMinutesISO, addMonthsISO, compareISO, endOfMonthISO, endOfWeekISO, endOfYearISO,
34
+ // Widening: ISO string -> Temporal
35
+ fromISODate, fromISODateOrUndefined, fromISODateRange, fromISOInstant, fromISOInstantOrUndefined, fromISOInstantRange, fromISOTime, fromISOTimeOrUndefined,
36
+ // Strict boundary guards
37
+ isDateString, isInstantString, isTimeString, isWeekendISO, startOfMonthISO, startOfWeekISO, startOfYearISO,
38
+ // Narrowing: string | Temporal -> canonical ISO
39
+ toISODate, toISODateOrUndefined, toISODateRange, toISOInstant, toISOInstantOrUndefined, toISOInstantRange, toISOTime, toISOTimeOrUndefined, weekdayISO, } from "./iso.js";
31
40
  // =============================================================================
32
41
  // Parsing: ISO 8601 string → Temporal
33
42
  // =============================================================================
@@ -108,7 +117,6 @@ export { changeTimezone, plainDateTimeToZonedDateTime, plainDateToZonedDateTime,
108
117
  // until: dateRange?.to ? serialize(dateRange.to) : undefined,
109
118
  // };
110
119
  //
111
- // See: packages/web/src/api/activity-log/useActivityLog.ts for reference implementation
112
120
  // =============================================================================
113
121
  // =============================================================================
114
122
  // Duration
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/date-time/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/date-time/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * ISO 8601 string types — the public boundary of every date/time component.
3
+ *
4
+ * Components accept and emit canonical ISO strings, never Temporal objects. That
5
+ * keeps the engine (Temporal today, native Temporal or something else tomorrow)
6
+ * an implementation detail, and it means a consumer never has to adopt a date
7
+ * library to render a date picker.
8
+ *
9
+ * Two properties this module guarantees, which the components rely on:
10
+ *
11
+ * 1. **Canonical form.** Every value produced by `toISO*` is normalised via
12
+ * Temporal, so precision is fixed: dates are `YYYY-MM-DD`, times are
13
+ * `HH:MM:SS`, instants are `YYYY-MM-DDTHH:MM:SSZ`. Consumer input is *not*
14
+ * canonical — `"10:30"` and `"10:30:00"` are both valid input — so always
15
+ * normalise on entry rather than comparing raw props.
16
+ *
17
+ * 2. **Lexicographic order == chronological order**, but only once canonical.
18
+ * `"2026-08-26T00:30:00.250Z" < "2026-08-26T00:30Z"` sorts wrong as raw
19
+ * strings; both normalise to a form where `<` is correct. Compare with
20
+ * {@link compareISO}, never with `<` on a raw prop.
21
+ */
22
+ import { Temporal } from "@js-temporal/polyfill";
23
+ import type { WeekStartsOn } from "./boundaries.js";
24
+ /** Any numeric segment of an ISO string. */
25
+ type N = `${number}`;
26
+ /**
27
+ * An ISO 8601 calendar date: `YYYY-MM-DD`.
28
+ *
29
+ * The template literal rejects the obvious mistakes at compile time for literal
30
+ * values (a datetime passed where a date belongs, or outright garbage). It
31
+ * cannot check a value that arrives as a plain `string` — use
32
+ * {@link toISODate} for those.
33
+ *
34
+ * @example
35
+ * const d: ISODate = "2026-08-26"; // ok
36
+ * const d: ISODate = "2026-08-26T10:00"; // Error
37
+ */
38
+ export type ISODate = `${N}-${N}-${N}`;
39
+ /**
40
+ * An ISO 8601 wall-clock time: `HH:MM` or `HH:MM:SS`.
41
+ *
42
+ * Both precisions are accepted as input; components always emit `HH:MM:SS`.
43
+ */
44
+ export type ISOTime = `${N}:${N}` | `${N}:${N}:${N}`;
45
+ /** An ISO 8601 timezone-naive datetime: `YYYY-MM-DDTHH:MM:SS`. */
46
+ export type ISODateTime = `${ISODate}T${ISOTime}`;
47
+ /**
48
+ * An ISO 8601 absolute instant in UTC: `YYYY-MM-DDTHH:MM:SSZ`.
49
+ *
50
+ * The trailing `Z` is required. A numeric offset (`+10:00`) is a valid instant
51
+ * to Temporal but is rejected here, so that one instant has exactly one
52
+ * representation and string comparison stays meaningful.
53
+ */
54
+ export type ISOInstant = `${ISODate}T${string}Z`;
55
+ /** A date range, either end of which may be unset. */
56
+ export type ISODateRange = {
57
+ from: ISODate | undefined;
58
+ to: ISODate | undefined;
59
+ };
60
+ /** An instant range, either end of which may be unset. */
61
+ export type ISOInstantRange = {
62
+ from: ISOInstant | undefined;
63
+ to: ISOInstant | undefined;
64
+ };
65
+ /**
66
+ * Day of week by name.
67
+ *
68
+ * Named rather than numbered on purpose: `weekStartsOn` counts from 0 = Sunday
69
+ * while ISO-8601 `dayOfWeek` counts from 1 = Monday, and two numeric day props
70
+ * with different origins in the same object is a bug waiting to be filed.
71
+ */
72
+ export type Weekday = "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun";
73
+ /**
74
+ * Which dates a calendar should refuse.
75
+ *
76
+ * The declarative forms cover the cases that would otherwise force a consumer
77
+ * to do date arithmetic; the predicate remains as an escape hatch.
78
+ *
79
+ * @example
80
+ * disabled="2026-08-26" // one date
81
+ * disabled={["2026-08-26", "2026-08-27"]} // several
82
+ * disabled={{ before: "2026-01-01" }} // everything earlier
83
+ * disabled={{ from: "2026-08-01", to: "2026-08-07" }} // an inclusive span
84
+ * disabled={{ dayOfWeek: ["sat", "sun"] }} // weekends
85
+ * disabled={(date) => date.endsWith("-01")} // anything else
86
+ */
87
+ export type DisabledDates = ISODate | readonly ISODate[] | {
88
+ before: ISODate;
89
+ } | {
90
+ after: ISODate;
91
+ } | {
92
+ from: ISODate;
93
+ to: ISODate;
94
+ } | {
95
+ dayOfWeek: readonly Weekday[];
96
+ } | ((date: ISODate) => boolean);
97
+ /**
98
+ * Normalise a date to canonical `YYYY-MM-DD`.
99
+ *
100
+ * Accepts an ISO date string or a `Temporal.PlainDate`. Throws on anything that
101
+ * is not a valid date, and on a datetime string — a value carrying a time is a
102
+ * caller mistake here, not something to silently truncate.
103
+ */
104
+ export declare function toISODate(value: string | Temporal.PlainDate): ISODate;
105
+ /** {@link toISODate}, passing `undefined` through. */
106
+ export declare function toISODateOrUndefined(value: string | Temporal.PlainDate | null | undefined): ISODate | undefined;
107
+ /**
108
+ * Normalise a time to canonical `HH:MM:SS`.
109
+ *
110
+ * Accepts `HH:MM`, `HH:MM:SS`, or a `Temporal.PlainTime`. Rejects a datetime,
111
+ * which `Temporal.PlainTime.from` would otherwise happily accept.
112
+ */
113
+ export declare function toISOTime(value: string | Temporal.PlainTime): ISOTime;
114
+ /** {@link toISOTime}, passing `undefined` through. */
115
+ export declare function toISOTimeOrUndefined(value: string | Temporal.PlainTime | null | undefined): ISOTime | undefined;
116
+ /**
117
+ * Normalise an instant to canonical `YYYY-MM-DDTHH:MM:SSZ` (UTC).
118
+ *
119
+ * Accepts any ISO instant — including one written with a numeric offset — and
120
+ * converts it to the `Z` form, so equal instants always compare equal as
121
+ * strings.
122
+ */
123
+ export declare function toISOInstant(value: string | Temporal.Instant): ISOInstant;
124
+ /** {@link toISOInstant}, passing `undefined` through. */
125
+ export declare function toISOInstantOrUndefined(value: string | Temporal.Instant | null | undefined): ISOInstant | undefined;
126
+ /** Normalise a date range, dropping ends that are unset. */
127
+ export declare function toISODateRange(range: {
128
+ from?: string | Temporal.PlainDate | undefined;
129
+ to?: string | Temporal.PlainDate | undefined;
130
+ } | null | undefined): ISODateRange | undefined;
131
+ /** Normalise an instant range, dropping ends that are unset. */
132
+ export declare function toISOInstantRange(range: {
133
+ from?: string | Temporal.Instant | undefined;
134
+ to?: string | Temporal.Instant | undefined;
135
+ } | null | undefined): ISOInstantRange | undefined;
136
+ /**
137
+ * Parse an {@link ISODate} to the `Temporal.PlainDate` the internals work in.
138
+ *
139
+ * Rejects a value carrying a time, exactly as {@link toISODate} does. The
140
+ * template literal type already catches that for a literal, but a value arriving
141
+ * as `string` from an API is unchecked — and `Temporal.PlainDate.from` would
142
+ * silently truncate `"2026-08-26T10:00:00"` to `2026-08-26`, which is the kind
143
+ * of quiet wrong answer this boundary exists to prevent.
144
+ */
145
+ export declare function fromISODate(value: ISODate | string): Temporal.PlainDate;
146
+ /** {@link fromISODate}, passing `undefined` through. */
147
+ export declare function fromISODateOrUndefined(value: ISODate | string | null | undefined): Temporal.PlainDate | undefined;
148
+ /**
149
+ * Parse an {@link ISOTime} to `Temporal.PlainTime`.
150
+ *
151
+ * Rejects a datetime, which `Temporal.PlainTime.from` would otherwise accept by
152
+ * discarding the date half.
153
+ */
154
+ export declare function fromISOTime(value: ISOTime | string): Temporal.PlainTime;
155
+ /** {@link fromISOTime}, passing `undefined` through. */
156
+ export declare function fromISOTimeOrUndefined(value: ISOTime | string | null | undefined): Temporal.PlainTime | undefined;
157
+ /** Parse an {@link ISOInstant} to `Temporal.Instant`. */
158
+ export declare function fromISOInstant(value: ISOInstant | string): Temporal.Instant;
159
+ /** {@link fromISOInstant}, passing `undefined` through. */
160
+ export declare function fromISOInstantOrUndefined(value: ISOInstant | string | null | undefined): Temporal.Instant | undefined;
161
+ /**
162
+ * A date range in Temporal terms.
163
+ *
164
+ * Structurally identical to each picker's internal `DateRangeValue`. Declared
165
+ * here so the widening helpers below can live alongside their narrowing
166
+ * counterparts without `date-time` importing from `components`.
167
+ */
168
+ export type TemporalDateRange = {
169
+ from: Temporal.PlainDate | undefined;
170
+ to: Temporal.PlainDate | undefined;
171
+ };
172
+ /** An instant range in Temporal terms. */
173
+ export type TemporalInstantRange = {
174
+ from: Temporal.Instant | undefined;
175
+ to: Temporal.Instant | undefined;
176
+ };
177
+ /** Widen an {@link ISODateRange} for the internals. Inverse of {@link toISODateRange}. */
178
+ export declare function fromISODateRange(range: ISODateRange | undefined): TemporalDateRange | undefined;
179
+ /** Widen an {@link ISOInstantRange} for the internals. Inverse of {@link toISOInstantRange}. */
180
+ export declare function fromISOInstantRange(range: ISOInstantRange | undefined): TemporalInstantRange | undefined;
181
+ /**
182
+ * Whether `value` is a canonical-parseable ISO date, with no time component.
183
+ *
184
+ * Stricter than `isISODate` from `./validate`, which accepts a datetime because
185
+ * `Temporal.PlainDate.from` does. Use this one at a boundary.
186
+ */
187
+ export declare function isDateString(value: unknown): value is ISODate;
188
+ /** Whether `value` is an ISO time, with no date component. */
189
+ export declare function isTimeString(value: unknown): value is ISOTime;
190
+ /** Whether `value` is an ISO instant (any offset form; `Z` not required). */
191
+ export declare function isInstantString(value: unknown): value is ISOInstant;
192
+ /**
193
+ * Compare two ISO strings of the same kind chronologically.
194
+ *
195
+ * Normalises first, so mixed input precision (`"10:30"` vs `"10:30:00"`) and
196
+ * mixed instant offsets compare correctly — which raw `<` does not.
197
+ *
198
+ * @returns negative if `a` is earlier, 0 if equal, positive if `a` is later.
199
+ */
200
+ export declare function compareISO(a: string, b: string): number;
201
+ /** Shift a date by whole days. Negative moves backwards. */
202
+ export declare function addDaysISO(date: ISODate, days: number): ISODate;
203
+ /** Shift a date by whole months, clamping the day to the target month's length. */
204
+ export declare function addMonthsISO(date: ISODate, months: number): ISODate;
205
+ /** The first day of `date`'s month. */
206
+ export declare function startOfMonthISO(date: ISODate): ISODate;
207
+ /** The last day of `date`'s month. */
208
+ export declare function endOfMonthISO(date: ISODate): ISODate;
209
+ /** The first day of `date`'s week. `weekStartsOn` counts from 0 = Sunday. */
210
+ export declare function startOfWeekISO(date: ISODate, weekStartsOn?: WeekStartsOn): ISODate;
211
+ /** The last day of `date`'s week. `weekStartsOn` counts from 0 = Sunday. */
212
+ export declare function endOfWeekISO(date: ISODate, weekStartsOn?: WeekStartsOn): ISODate;
213
+ /**
214
+ * Shift an instant by whole minutes. Negative moves backwards.
215
+ *
216
+ * Instant arithmetic, unlike the date helpers above, is exact — there are no
217
+ * calendar boundaries to clamp against.
218
+ */
219
+ export declare function addMinutesISO(instant: ISOInstant, minutes: number): ISOInstant;
220
+ /** Shift an instant by whole hours. Negative moves backwards. */
221
+ export declare function addHoursISO(instant: ISOInstant, hours: number): ISOInstant;
222
+ /** The first day of `date`'s year. */
223
+ export declare function startOfYearISO(date: ISODate): ISODate;
224
+ /** The last day of `date`'s year. */
225
+ export declare function endOfYearISO(date: ISODate): ISODate;
226
+ /**
227
+ * Which day of the week a date falls on, by name.
228
+ *
229
+ * The reason a consumer can filter dates without reaching for Temporal — see
230
+ * {@link isWeekendISO} for the common case.
231
+ *
232
+ * @example
233
+ * presets.filter((date) => weekdayISO(date) !== "sun")
234
+ */
235
+ export declare function weekdayISO(date: ISODate): Weekday;
236
+ /** Whether a date falls on a Saturday or Sunday. */
237
+ export declare function isWeekendISO(date: ISODate): boolean;
238
+ /**
239
+ * The Temporal-shaped matcher union consumed by `calendar.hooks`.
240
+ *
241
+ * Declared here rather than imported to keep `date-time` free of component
242
+ * imports; `calendar.types` re-exports it under its historical name.
243
+ */
244
+ export type TemporalDisabledMatcher = Temporal.PlainDate | Temporal.PlainDate[] | ((date: Temporal.PlainDate) => boolean) | {
245
+ before: Temporal.PlainDate;
246
+ } | {
247
+ after: Temporal.PlainDate;
248
+ } | {
249
+ from: Temporal.PlainDate;
250
+ to: Temporal.PlainDate;
251
+ };
252
+ /**
253
+ * Convert the public `disabled` prop into internal matchers.
254
+ *
255
+ * Call this once per render behind a `useMemo` keyed on the prop — the result
256
+ * holds Temporal objects, which have no value identity, so recomputing it every
257
+ * render would invalidate every downstream `useCallback`.
258
+ */
259
+ export declare function adaptDisabledDates(disabled: DisabledDates | DisabledDates[] | undefined): TemporalDisabledMatcher | TemporalDisabledMatcher[] | undefined;
260
+ export {};
261
+ //# sourceMappingURL=iso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iso.d.ts","sourceRoot":"","sources":["../../src/date-time/iso.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,358 @@
1
+ /**
2
+ * ISO 8601 string types — the public boundary of every date/time component.
3
+ *
4
+ * Components accept and emit canonical ISO strings, never Temporal objects. That
5
+ * keeps the engine (Temporal today, native Temporal or something else tomorrow)
6
+ * an implementation detail, and it means a consumer never has to adopt a date
7
+ * library to render a date picker.
8
+ *
9
+ * Two properties this module guarantees, which the components rely on:
10
+ *
11
+ * 1. **Canonical form.** Every value produced by `toISO*` is normalised via
12
+ * Temporal, so precision is fixed: dates are `YYYY-MM-DD`, times are
13
+ * `HH:MM:SS`, instants are `YYYY-MM-DDTHH:MM:SSZ`. Consumer input is *not*
14
+ * canonical — `"10:30"` and `"10:30:00"` are both valid input — so always
15
+ * normalise on entry rather than comparing raw props.
16
+ *
17
+ * 2. **Lexicographic order == chronological order**, but only once canonical.
18
+ * `"2026-08-26T00:30:00.250Z" < "2026-08-26T00:30Z"` sorts wrong as raw
19
+ * strings; both normalise to a form where `<` is correct. Compare with
20
+ * {@link compareISO}, never with `<` on a raw prop.
21
+ */
22
+ import { Temporal } from "@js-temporal/polyfill";
23
+ /** ISO-8601 day numbers, indexed by {@link Weekday}. 1 = Monday. */
24
+ const WEEKDAY_NUMBER = {
25
+ mon: 1,
26
+ tue: 2,
27
+ wed: 3,
28
+ thu: 4,
29
+ fri: 5,
30
+ sat: 6,
31
+ sun: 7,
32
+ };
33
+ // =============================================================================
34
+ // Narrowing: string | Temporal -> canonical branded ISO
35
+ // =============================================================================
36
+ /**
37
+ * Normalise a date to canonical `YYYY-MM-DD`.
38
+ *
39
+ * Accepts an ISO date string or a `Temporal.PlainDate`. Throws on anything that
40
+ * is not a valid date, and on a datetime string — a value carrying a time is a
41
+ * caller mistake here, not something to silently truncate.
42
+ */
43
+ export function toISODate(value) {
44
+ if (value instanceof Temporal.PlainDate)
45
+ return value.toString();
46
+ if (/[T ]/.test(value)) {
47
+ throw new RangeError(`Expected an ISO date (YYYY-MM-DD), got a datetime: ${value}`);
48
+ }
49
+ return Temporal.PlainDate.from(value).toString();
50
+ }
51
+ /** {@link toISODate}, passing `undefined` through. */
52
+ export function toISODateOrUndefined(value) {
53
+ return value === null || value === undefined ? undefined : toISODate(value);
54
+ }
55
+ /**
56
+ * Normalise a time to canonical `HH:MM:SS`.
57
+ *
58
+ * Accepts `HH:MM`, `HH:MM:SS`, or a `Temporal.PlainTime`. Rejects a datetime,
59
+ * which `Temporal.PlainTime.from` would otherwise happily accept.
60
+ */
61
+ export function toISOTime(value) {
62
+ if (value instanceof Temporal.PlainTime)
63
+ return value.toString();
64
+ if (/[T ]/.test(value)) {
65
+ throw new RangeError(`Expected an ISO time (HH:MM or HH:MM:SS), got a datetime: ${value}`);
66
+ }
67
+ return Temporal.PlainTime.from(value).toString();
68
+ }
69
+ /** {@link toISOTime}, passing `undefined` through. */
70
+ export function toISOTimeOrUndefined(value) {
71
+ return value === null || value === undefined ? undefined : toISOTime(value);
72
+ }
73
+ /**
74
+ * Normalise an instant to canonical `YYYY-MM-DDTHH:MM:SSZ` (UTC).
75
+ *
76
+ * Accepts any ISO instant — including one written with a numeric offset — and
77
+ * converts it to the `Z` form, so equal instants always compare equal as
78
+ * strings.
79
+ */
80
+ export function toISOInstant(value) {
81
+ const instant = value instanceof Temporal.Instant ? value : Temporal.Instant.from(value);
82
+ return instant.toString();
83
+ }
84
+ /** {@link toISOInstant}, passing `undefined` through. */
85
+ export function toISOInstantOrUndefined(value) {
86
+ return value === null || value === undefined ? undefined : toISOInstant(value);
87
+ }
88
+ /** Normalise a date range, dropping ends that are unset. */
89
+ export function toISODateRange(range) {
90
+ if (!range)
91
+ return undefined;
92
+ return { from: toISODateOrUndefined(range.from), to: toISODateOrUndefined(range.to) };
93
+ }
94
+ /** Normalise an instant range, dropping ends that are unset. */
95
+ export function toISOInstantRange(range) {
96
+ if (!range)
97
+ return undefined;
98
+ return { from: toISOInstantOrUndefined(range.from), to: toISOInstantOrUndefined(range.to) };
99
+ }
100
+ // =============================================================================
101
+ // Widening: branded ISO -> Temporal (for component internals)
102
+ // =============================================================================
103
+ /**
104
+ * Parse an {@link ISODate} to the `Temporal.PlainDate` the internals work in.
105
+ *
106
+ * Rejects a value carrying a time, exactly as {@link toISODate} does. The
107
+ * template literal type already catches that for a literal, but a value arriving
108
+ * as `string` from an API is unchecked — and `Temporal.PlainDate.from` would
109
+ * silently truncate `"2026-08-26T10:00:00"` to `2026-08-26`, which is the kind
110
+ * of quiet wrong answer this boundary exists to prevent.
111
+ */
112
+ export function fromISODate(value) {
113
+ if (/[T ]/.test(value)) {
114
+ throw new RangeError(`Expected an ISO date (YYYY-MM-DD), got a datetime: ${value}`);
115
+ }
116
+ return Temporal.PlainDate.from(value);
117
+ }
118
+ /** {@link fromISODate}, passing `undefined` through. */
119
+ export function fromISODateOrUndefined(value) {
120
+ return value === null || value === undefined ? undefined : fromISODate(value);
121
+ }
122
+ /**
123
+ * Parse an {@link ISOTime} to `Temporal.PlainTime`.
124
+ *
125
+ * Rejects a datetime, which `Temporal.PlainTime.from` would otherwise accept by
126
+ * discarding the date half.
127
+ */
128
+ export function fromISOTime(value) {
129
+ if (/[T ]/.test(value)) {
130
+ throw new RangeError(`Expected an ISO time (HH:MM or HH:MM:SS), got a datetime: ${value}`);
131
+ }
132
+ return Temporal.PlainTime.from(value);
133
+ }
134
+ /** {@link fromISOTime}, passing `undefined` through. */
135
+ export function fromISOTimeOrUndefined(value) {
136
+ return value === null || value === undefined ? undefined : fromISOTime(value);
137
+ }
138
+ /** Parse an {@link ISOInstant} to `Temporal.Instant`. */
139
+ export function fromISOInstant(value) {
140
+ return Temporal.Instant.from(value);
141
+ }
142
+ /** {@link fromISOInstant}, passing `undefined` through. */
143
+ export function fromISOInstantOrUndefined(value) {
144
+ return value === null || value === undefined ? undefined : Temporal.Instant.from(value);
145
+ }
146
+ /** Widen an {@link ISODateRange} for the internals. Inverse of {@link toISODateRange}. */
147
+ export function fromISODateRange(range) {
148
+ if (!range)
149
+ return undefined;
150
+ return { from: fromISODateOrUndefined(range.from), to: fromISODateOrUndefined(range.to) };
151
+ }
152
+ /** Widen an {@link ISOInstantRange} for the internals. Inverse of {@link toISOInstantRange}. */
153
+ export function fromISOInstantRange(range) {
154
+ if (!range)
155
+ return undefined;
156
+ return { from: fromISOInstantOrUndefined(range.from), to: fromISOInstantOrUndefined(range.to) };
157
+ }
158
+ // =============================================================================
159
+ // Validation
160
+ // =============================================================================
161
+ /**
162
+ * Whether `value` is a canonical-parseable ISO date, with no time component.
163
+ *
164
+ * Stricter than `isISODate` from `./validate`, which accepts a datetime because
165
+ * `Temporal.PlainDate.from` does. Use this one at a boundary.
166
+ */
167
+ export function isDateString(value) {
168
+ if (typeof value !== "string" || /[T ]/.test(value))
169
+ return false;
170
+ try {
171
+ Temporal.PlainDate.from(value);
172
+ return true;
173
+ }
174
+ catch {
175
+ return false;
176
+ }
177
+ }
178
+ /** Whether `value` is an ISO time, with no date component. */
179
+ export function isTimeString(value) {
180
+ if (typeof value !== "string" || /[T ]/.test(value))
181
+ return false;
182
+ try {
183
+ Temporal.PlainTime.from(value);
184
+ return true;
185
+ }
186
+ catch {
187
+ return false;
188
+ }
189
+ }
190
+ /** Whether `value` is an ISO instant (any offset form; `Z` not required). */
191
+ export function isInstantString(value) {
192
+ if (typeof value !== "string")
193
+ return false;
194
+ try {
195
+ Temporal.Instant.from(value);
196
+ return true;
197
+ }
198
+ catch {
199
+ return false;
200
+ }
201
+ }
202
+ // =============================================================================
203
+ // Comparison
204
+ // =============================================================================
205
+ /**
206
+ * Compare two ISO strings of the same kind chronologically.
207
+ *
208
+ * Normalises first, so mixed input precision (`"10:30"` vs `"10:30:00"`) and
209
+ * mixed instant offsets compare correctly — which raw `<` does not.
210
+ *
211
+ * @returns negative if `a` is earlier, 0 if equal, positive if `a` is later.
212
+ */
213
+ export function compareISO(a, b) {
214
+ if (isDateString(a) && isDateString(b)) {
215
+ return Temporal.PlainDate.compare(fromISODate(a), fromISODate(b));
216
+ }
217
+ if (isTimeString(a) && isTimeString(b)) {
218
+ return Temporal.PlainTime.compare(fromISOTime(a), fromISOTime(b));
219
+ }
220
+ return Temporal.Instant.compare(fromISOInstant(a), fromISOInstant(b));
221
+ }
222
+ // =============================================================================
223
+ // ISO-native arithmetic
224
+ // =============================================================================
225
+ //
226
+ // Enough to build the `presets` and `disabled` values a consumer actually needs
227
+ // without reaching for Temporal. Anything more involved is what
228
+ // `@sixthshift/design-system/date-time` is for.
229
+ //
230
+ // `todayISO()` and `nowISO()` live in ./now alongside their Temporal siblings.
231
+ /** Shift a date by whole days. Negative moves backwards. */
232
+ export function addDaysISO(date, days) {
233
+ return fromISODate(date).add({ days }).toString();
234
+ }
235
+ /** Shift a date by whole months, clamping the day to the target month's length. */
236
+ export function addMonthsISO(date, months) {
237
+ return fromISODate(date).add({ months }).toString();
238
+ }
239
+ /** The first day of `date`'s month. */
240
+ export function startOfMonthISO(date) {
241
+ return fromISODate(date).with({ day: 1 }).toString();
242
+ }
243
+ /** The last day of `date`'s month. */
244
+ export function endOfMonthISO(date) {
245
+ const plain = fromISODate(date);
246
+ return plain.with({ day: plain.daysInMonth }).toString();
247
+ }
248
+ /** The first day of `date`'s week. `weekStartsOn` counts from 0 = Sunday. */
249
+ export function startOfWeekISO(date, weekStartsOn = 0) {
250
+ const plain = fromISODate(date);
251
+ // Temporal's dayOfWeek is 1 = Monday..7 = Sunday; shift into 0 = Sunday..6.
252
+ const currentDay = plain.dayOfWeek % 7;
253
+ const diff = (currentDay - weekStartsOn + 7) % 7;
254
+ return plain.subtract({ days: diff }).toString();
255
+ }
256
+ /** The last day of `date`'s week. `weekStartsOn` counts from 0 = Sunday. */
257
+ export function endOfWeekISO(date, weekStartsOn = 0) {
258
+ return addDaysISO(startOfWeekISO(date, weekStartsOn), 6);
259
+ }
260
+ /**
261
+ * Shift an instant by whole minutes. Negative moves backwards.
262
+ *
263
+ * Instant arithmetic, unlike the date helpers above, is exact — there are no
264
+ * calendar boundaries to clamp against.
265
+ */
266
+ export function addMinutesISO(instant, minutes) {
267
+ return fromISOInstant(instant).add({ minutes }).toString();
268
+ }
269
+ /** Shift an instant by whole hours. Negative moves backwards. */
270
+ export function addHoursISO(instant, hours) {
271
+ return fromISOInstant(instant).add({ hours }).toString();
272
+ }
273
+ /** The first day of `date`'s year. */
274
+ export function startOfYearISO(date) {
275
+ return fromISODate(date).with({ month: 1, day: 1 }).toString();
276
+ }
277
+ /** The last day of `date`'s year. */
278
+ export function endOfYearISO(date) {
279
+ return fromISODate(date).with({ month: 12, day: 31 }).toString();
280
+ }
281
+ /** ISO-8601 day numbers to {@link Weekday} names. Index 0 is unused; 1 = Monday. */
282
+ const WEEKDAY_NAME = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
283
+ /**
284
+ * Which day of the week a date falls on, by name.
285
+ *
286
+ * The reason a consumer can filter dates without reaching for Temporal — see
287
+ * {@link isWeekendISO} for the common case.
288
+ *
289
+ * @example
290
+ * presets.filter((date) => weekdayISO(date) !== "sun")
291
+ */
292
+ export function weekdayISO(date) {
293
+ // Temporal's dayOfWeek is 1 = Monday..7 = Sunday.
294
+ return WEEKDAY_NAME[fromISODate(date).dayOfWeek - 1];
295
+ }
296
+ /** Whether a date falls on a Saturday or Sunday. */
297
+ export function isWeekendISO(date) {
298
+ const day = weekdayISO(date);
299
+ return day === "sat" || day === "sun";
300
+ }
301
+ // =============================================================================
302
+ // Disabled-date adaptation
303
+ // =============================================================================
304
+ /**
305
+ * Convert one public {@link DisabledDates} matcher into the Temporal-shaped
306
+ * matcher the calendar internals evaluate.
307
+ *
308
+ * `dayOfWeek` has no declarative Temporal equivalent, so it becomes a predicate.
309
+ */
310
+ /**
311
+ * Narrow the array form out of {@link DisabledDates}.
312
+ *
313
+ * `Array.isArray` narrows to `any[]`, which does not remove a `readonly T[]`
314
+ * member from a union — so the object branches below would still see it.
315
+ */
316
+ function isDateList(matcher) {
317
+ return Array.isArray(matcher);
318
+ }
319
+ function adaptMatcher(matcher) {
320
+ if (typeof matcher === "string")
321
+ return fromISODate(matcher);
322
+ if (isDateList(matcher))
323
+ return matcher.map((date) => fromISODate(date));
324
+ if (typeof matcher === "function") {
325
+ return (date) => matcher(date.toString());
326
+ }
327
+ if ("dayOfWeek" in matcher) {
328
+ const wanted = new Set(matcher.dayOfWeek.map((day) => WEEKDAY_NUMBER[day]));
329
+ return (date) => wanted.has(date.dayOfWeek);
330
+ }
331
+ if ("before" in matcher)
332
+ return { before: fromISODate(matcher.before) };
333
+ if ("after" in matcher)
334
+ return { after: fromISODate(matcher.after) };
335
+ return { from: fromISODate(matcher.from), to: fromISODate(matcher.to) };
336
+ }
337
+ /**
338
+ * Convert the public `disabled` prop into internal matchers.
339
+ *
340
+ * Call this once per render behind a `useMemo` keyed on the prop — the result
341
+ * holds Temporal objects, which have no value identity, so recomputing it every
342
+ * render would invalidate every downstream `useCallback`.
343
+ */
344
+ export function adaptDisabledDates(disabled) {
345
+ if (disabled === undefined)
346
+ return undefined;
347
+ // A bare `ISODate[]` is itself one matcher, not a list of them. An array of
348
+ // anything else is a list. `["2026-08-26"]` is therefore adapted as a single
349
+ // array-matcher, which evaluates identically either way.
350
+ if (Array.isArray(disabled)) {
351
+ if (disabled.every((entry) => typeof entry === "string")) {
352
+ return adaptMatcher(disabled);
353
+ }
354
+ return disabled.map(adaptMatcher);
355
+ }
356
+ return adaptMatcher(disabled);
357
+ }
358
+ //# sourceMappingURL=iso.js.map