@astryx-vue/core 0.3.0 → 0.4.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 (512) hide show
  1. package/dist/AlertDialog/index.js +1 -1
  2. package/dist/{AlertDialog-RAVA_cT1.js → AlertDialog-C2inDZWG.js} +5 -5
  3. package/dist/AppShell/index.d.ts +1 -1
  4. package/dist/AppShell/index.js +1 -1
  5. package/dist/{AppShell-0wTvOo3H.js → AppShell-awAKicsc.js} +3 -3
  6. package/dist/Avatar/index.js +1 -1
  7. package/dist/{Avatar-pPZ4dI_s.js → Avatar-DXBjJ88C.js} +47 -34
  8. package/dist/AvatarGroup/index.d.ts +1 -1
  9. package/dist/AvatarGroup/index.js +1 -1
  10. package/dist/{AvatarGroup-B--NQSB3.js → AvatarGroup-kpAeKLNq.js} +57 -13
  11. package/dist/Banner/index.d.ts +1 -1
  12. package/dist/Banner/index.js +1 -1
  13. package/dist/{Banner-GbGxrqQO.js → Banner-BdvuyzAe.js} +71 -35
  14. package/dist/Blockquote/index.js +1 -1
  15. package/dist/Blockquote-DRoKdcxZ.js +27 -0
  16. package/dist/BottomSheet/index.d.ts +1 -1
  17. package/dist/BottomSheet/index.js +2 -2
  18. package/dist/{BottomSheet-pt7m4CvC.js → BottomSheet-B4sc3F1S.js} +286 -140
  19. package/dist/{BottomSheet-JYMB_Ofl.js → BottomSheet-m54uCMJN.js} +20 -4
  20. package/dist/Breadcrumbs/index.d.ts +2 -2
  21. package/dist/Breadcrumbs/index.js +2 -2
  22. package/dist/Breadcrumbs-D4ZzHEB0.js +223 -0
  23. package/dist/Button/index.d.ts +1 -1
  24. package/dist/Button/index.js +1 -1
  25. package/dist/{Button-B6Hj_O_s.js → Button-ONOoHdkg.js} +25 -15
  26. package/dist/ButtonGroup/index.d.ts +1 -1
  27. package/dist/ButtonGroup/index.js +1 -1
  28. package/dist/ButtonGroup-DnkSZ9a5.js +87 -0
  29. package/dist/{ButtonTooltip-nWWrth8j.js → ButtonTooltip-CNKOQHYR.js} +7 -4
  30. package/dist/Calendar/index.d.ts +1 -1
  31. package/dist/Calendar/index.js +1 -1
  32. package/dist/{Calendar-B7vIowKq.js → Calendar-CjK-JUDM.js} +5 -5
  33. package/dist/Card/index.d.ts +2 -2
  34. package/dist/Carousel/index.js +1 -1
  35. package/dist/{Carousel-CA8zpD9v.js → Carousel-D262qigj.js} +8 -8
  36. package/dist/Chat/index.d.ts +1 -1
  37. package/dist/Chat/index.js +1 -1
  38. package/dist/{Chat-Bmna9EOA.js → Chat-DD_mlIP3.js} +165 -101
  39. package/dist/CheckboxIndicator/index.js +1 -1
  40. package/dist/{CheckboxIndicator-D37cm2Rh.js → CheckboxIndicator-fH4d-JE1.js} +9 -3
  41. package/dist/CheckboxInput/index.d.ts +1 -1
  42. package/dist/CheckboxInput/index.js +1 -1
  43. package/dist/{CheckboxInput-BS9J6edf.js → CheckboxInput-D8vTmAMZ.js} +20 -12
  44. package/dist/CheckboxList/index.d.ts +1 -1
  45. package/dist/CheckboxList/index.js +1 -1
  46. package/dist/{CheckboxList-CX1i_jVP.js → CheckboxList-DCvHewHB.js} +155 -38
  47. package/dist/Citation/index.js +1 -1
  48. package/dist/{Citation-Djgwa0ko.js → Citation-C69BgxW3.js} +8 -3
  49. package/dist/ClickableCard/index.d.ts +1 -1
  50. package/dist/ClickableCard/index.js +1 -1
  51. package/dist/{ClickableCard-DUsC-j03.js → ClickableCard-ChAfiw9T.js} +9 -6
  52. package/dist/Code/index.d.ts +1 -1
  53. package/dist/Code/index.js +3 -3
  54. package/dist/{Code-XnPuGxey.js → Code-Bg7GBdxy.js} +2 -1
  55. package/dist/{CodeBlock-D0BFubut.js → CodeBlock-DsbwTBiT.js} +8 -8
  56. package/dist/Collapsible/index.d.ts +1 -1
  57. package/dist/Collapsible/index.js +1 -1
  58. package/dist/{Collapsible-Cov3Pyq5.js → Collapsible-Bdj0WYpb.js} +13 -11
  59. package/dist/CommandPalette/index.d.ts +1 -1
  60. package/dist/CommandPalette/index.js +1 -1
  61. package/dist/{CommandPalette-YHsUNg3V.js → CommandPalette-CZ7CZglZ.js} +147 -67
  62. package/dist/ComplexSelector/index.d.ts +1 -1
  63. package/dist/ComplexSelector/index.js +1 -1
  64. package/dist/{ComplexSelector-DWLdKPGI.js → ComplexSelector-CIz6DDmY.js} +114 -28
  65. package/dist/ContextMenu/index.d.ts +2 -2
  66. package/dist/ContextMenu/index.js +2 -2
  67. package/dist/{ContextMenu-Bq9b3Ti5.js → ContextMenu-CxoiRh_h.js} +297 -179
  68. package/dist/DateInput/index.d.ts +1 -1
  69. package/dist/DateInput/index.js +1 -1
  70. package/dist/{DateInput-DT518j5E.js → DateInput-C67HCOU-.js} +563 -72
  71. package/dist/DateRangeInput/index.d.ts +1 -1
  72. package/dist/DateRangeInput/index.js +1 -1
  73. package/dist/{DateRangeInput-Bqi5tlIA.js → DateRangeInput-Dsf5Tyf-.js} +91 -26
  74. package/dist/DateTimeInput/index.d.ts +1 -1
  75. package/dist/DateTimeInput/index.js +1 -1
  76. package/dist/DateTimeInput-tfM1y5nZ.js +562 -0
  77. package/dist/Dialog/index.d.ts +1 -1
  78. package/dist/Dialog/index.js +2 -2
  79. package/dist/{Dialog-BiOSKQso.js → Dialog-DT1GzCrB.js} +28 -11
  80. package/dist/{Dialog-FGHfDu5M.js → Dialog-fhyxB00e.js} +32 -5
  81. package/dist/Divider/index.d.ts +1 -1
  82. package/dist/Divider/index.js +1 -1
  83. package/dist/{Divider-BtwnL18I.js → Divider-mOZ6vIQw.js} +5 -1
  84. package/dist/DropdownMenu/index.d.ts +2 -2
  85. package/dist/DropdownMenu/index.js +3 -3
  86. package/dist/{DropdownMenu-CoOQVlRp.js → DropdownMenu-C6wBC18g.js} +84 -56
  87. package/dist/{DropdownMenu-DEb2dSSP.js → DropdownMenu-G-pWSiBk.js} +479 -264
  88. package/dist/{DropdownMenuRadioItem.vue-CXEURBcq.d.ts → DropdownMenuRadioItem.vue-Qd-8Rg4Q.d.ts} +236 -230
  89. package/dist/EmptyState/index.js +1 -1
  90. package/dist/{EmptyState-C_GH7IV5.js → EmptyState-CmOQf2SH.js} +2 -2
  91. package/dist/Field/index.d.ts +4 -3
  92. package/dist/Field/index.js +4 -3
  93. package/dist/{Field-D5gUEGw4.js → Field-JIxT3xCh.js} +5 -4
  94. package/dist/FieldIcon-BFSHZEs_.js +40 -0
  95. package/dist/{FieldInfoTip-Ds-sW_jY.js → FieldInfoTip-BbgLt4ug.js} +4 -4
  96. package/dist/{FieldLabel-BNeXRuGH.js → FieldLabel-CHqp1y3z.js} +13 -8
  97. package/dist/FieldStatus/index.d.ts +1 -1
  98. package/dist/FieldStatus/index.js +1 -1
  99. package/dist/{FieldStatus-MjY19ERl.js → FieldStatus-DaAB3TIt.js} +1 -1
  100. package/dist/FileInput/index.d.ts +1 -1
  101. package/dist/FileInput/index.js +1 -1
  102. package/dist/{FileInput-BpdiO1V8.js → FileInput-Bi1uty-F.js} +108 -31
  103. package/dist/FormLayout/index.d.ts +1 -1
  104. package/dist/FormLayout/index.js +1 -1
  105. package/dist/{FormLayout-D47FjiOq.js → FormLayout-B9dUB6Ps.js} +1 -1
  106. package/dist/Heading/index.d.ts +1 -1
  107. package/dist/Heading/index.js +1 -1
  108. package/dist/{Heading-BnwWEWkp.js → Heading-BzBunfN7.js} +1 -1
  109. package/dist/HoverCard/index.js +1 -1
  110. package/dist/{HoverCard-ycY50pRN.js → HoverCard-BpJhT0sn.js} +35 -22
  111. package/dist/Icon/index.d.ts +4 -4
  112. package/dist/Icon/index.js +1 -1
  113. package/dist/{Icon-bteSId7T.js → Icon-KDnUyY7f.js} +12 -20
  114. package/dist/IconButton/index.js +1 -1
  115. package/dist/{IconButton-DDNgNl7B.js → IconButton-DI-XBbtV.js} +1 -1
  116. package/dist/Indicator/index.d.ts +2 -2
  117. package/dist/Indicator/index.js +2 -1
  118. package/dist/InputClearButton-CfSIqc-V.js +40 -0
  119. package/dist/InputGroup/index.d.ts +1 -1
  120. package/dist/InputGroup/index.js +2 -2
  121. package/dist/{InputGroup-CA03Smrs.js → InputGroup-D3F-QnET.js} +2 -2
  122. package/dist/InternationalizationProvider/index.d.ts +1 -1
  123. package/dist/InternationalizationProvider/index.js +1 -1
  124. package/dist/{InternationalizationProvider-DJay_w3B.js → InternationalizationProvider-CVV5QDgp.js} +5 -9
  125. package/dist/{Item-KhFKX9St.js → Item-DWMIjN8n.js} +34 -9
  126. package/dist/Kbd/index.js +1 -1
  127. package/dist/{Kbd-BB-Dw6zE.js → Kbd-CV3LO2Ge.js} +18 -2
  128. package/dist/LayerContentBoundary-CvsKxwwm.js +27 -0
  129. package/dist/LayerProvider/index.js +1 -1
  130. package/dist/{LayerProvider-D9NsQFzL.js → LayerProvider-B6zpMBWC.js} +15 -3
  131. package/dist/Layout/index.d.ts +1 -1
  132. package/dist/Layout/index.js +2 -2
  133. package/dist/{Layout-C6RHllr-.js → Layout-JJRCG7Mf.js} +1 -1
  134. package/dist/{LayoutPanel-DXOsaeQb.js → LayoutPanel-zM5vjrKS.js} +12 -8
  135. package/dist/Lightbox/index.js +1 -1
  136. package/dist/{Lightbox-DTF9EdTG.js → Lightbox-CjXhbDPc.js} +14 -12
  137. package/dist/Link/index.js +1 -1
  138. package/dist/{Link-BqHCtiyt.js → Link-ClNkTN1Q.js} +29 -12
  139. package/dist/List/index.d.ts +1 -1
  140. package/dist/List/index.js +2 -2
  141. package/dist/{ListItem-8RWT8XAG.js → ListItem-BQXMu1Tb.js} +1 -1
  142. package/dist/Markdown/index.d.ts +5 -2
  143. package/dist/Markdown/index.js +4 -2
  144. package/dist/Markdown/parser/index.d.ts +4 -0
  145. package/dist/Markdown/parser/index.js +2 -0
  146. package/dist/Markdown/plugin-protocol/index.d.ts +35 -0
  147. package/dist/Markdown/plugin-protocol/index.js +107 -0
  148. package/dist/Markdown/plugin-renderer/index.d.ts +31 -0
  149. package/dist/Markdown/plugin-renderer/index.js +42 -0
  150. package/dist/{Markdown-CvtN7HnF.js → Markdown-EIBrwQrb.js} +195 -524
  151. package/dist/MediaTheme-DlLqYhDy.js +433 -0
  152. package/dist/MetadataList/index.js +1 -1
  153. package/dist/{MetadataList-B-OelQlt.js → MetadataList-DLlSLX1n.js} +15 -7
  154. package/dist/MobileNav/index.js +1 -1
  155. package/dist/{MobileNavToggle-DxGz0xKA.js → MobileNavToggle-DgJYyzT6.js} +52 -17
  156. package/dist/MoreMenu/index.d.ts +1 -1
  157. package/dist/MoreMenu/index.js +1 -1
  158. package/dist/{MoreMenu-Dlb7MLlW.js → MoreMenu-C8BEt6-O.js} +74 -61
  159. package/dist/MultiSelector/index.d.ts +1 -1
  160. package/dist/MultiSelector/index.js +1 -1
  161. package/dist/MultiSelector-C7NCAtwW.js +1456 -0
  162. package/dist/{NavDisclosure-C_fugrQ3.js → NavDisclosure-Bq9DTZLO.js} +29 -7
  163. package/dist/{NavHeadingSurface-B3yJspSN.js → NavHeadingSurface-DQXisuaX.js} +29 -26
  164. package/dist/NavItem/index.d.ts +1 -1
  165. package/dist/NavItem/index.js +2 -2
  166. package/dist/{NavItem-BBIGSvDj.js → NavItem-BPb3yfgz.js} +17 -4
  167. package/dist/NavMenu/index.d.ts +1 -1
  168. package/dist/NavMenu/index.js +3 -3
  169. package/dist/{NavMenu-ThXguZAz.js → NavMenu-BYIDzjix.js} +42 -15
  170. package/dist/{NavMenuItem-BvJNsDFC.js → NavMenuItem-D3FO90GR.js} +14 -12
  171. package/dist/NumberInput/index.d.ts +1 -1
  172. package/dist/NumberInput/index.js +1 -1
  173. package/dist/NumberInput-3u3NZWnv.js +727 -0
  174. package/dist/Outline/index.d.ts +2 -2
  175. package/dist/Outline/index.js +2 -2
  176. package/dist/{Outline-755h-lMP.js → Outline-8szj9eXu.js} +91 -6
  177. package/dist/OverflowList/index.d.ts +2 -2
  178. package/dist/OverflowList/index.js +1 -1
  179. package/dist/{OverflowList-NmrSMbxb.js → OverflowList-BizpEwH8.js} +23 -6
  180. package/dist/Pagination/index.d.ts +1 -1
  181. package/dist/Pagination/index.js +1 -1
  182. package/dist/{Pagination-DqwNQFRp.js → Pagination-Cihr1CjD.js} +2 -2
  183. package/dist/PickerWheel-CSwUYfes.js +69 -0
  184. package/dist/Popover/index.d.ts +1 -1
  185. package/dist/Popover/index.js +1 -1
  186. package/dist/{Popover-DJf8POzL.js → Popover-78dFjTb9.js} +20 -15
  187. package/dist/PowerSearch/index.d.ts +1 -1
  188. package/dist/PowerSearch/index.js +1 -1
  189. package/dist/{PowerSearch-DvjiPqMZ.js → PowerSearch-BHx91ypY.js} +778 -590
  190. package/dist/ProgressBar/index.d.ts +1 -1
  191. package/dist/ProgressBar/index.js +1 -1
  192. package/dist/{ProgressBar-CVLzdoBK.js → ProgressBar-VP4JS7vm.js} +10 -7
  193. package/dist/Radio/index.d.ts +1 -1
  194. package/dist/Radio/index.js +1 -1
  195. package/dist/{RadioGroup-Bfu6JSNV.js → RadioGroup-DeSIRrgt.js} +94 -26
  196. package/dist/RadioList/index.d.ts +1 -1
  197. package/dist/RadioList/index.js +1 -1
  198. package/dist/{RadioList-xY1cwLdZ.js → RadioList-Co2lmetC.js} +57 -8
  199. package/dist/Resizable/index.d.ts +1 -1
  200. package/dist/Resizable/index.js +1 -1
  201. package/dist/{ResizeHandle-q4nD_586.js → ResizeHandle-DjLZ2pcq.js} +103 -50
  202. package/dist/ScrollableArea/index.d.ts +1 -1
  203. package/dist/ScrollableArea/index.js +1 -1
  204. package/dist/{ScrollableArea-D4dCJv9I.js → ScrollableArea-0u6RWtGG.js} +1 -1
  205. package/dist/SegmentedControl/index.d.ts +1 -1
  206. package/dist/SegmentedControl/index.js +1 -1
  207. package/dist/{SegmentedControl-ChHmFrrC.js → SegmentedControl-D1wWGBZo.js} +11 -5
  208. package/dist/SelectableCard/index.d.ts +1 -1
  209. package/dist/SelectableCard/index.js +1 -1
  210. package/dist/{SelectableCard-Cku4dRzc.js → SelectableCard-BEqnhPaX.js} +16 -11
  211. package/dist/Selector/index.d.ts +1 -1
  212. package/dist/Selector/index.js +1 -1
  213. package/dist/Selector-swa3RNQI.js +1049 -0
  214. package/dist/SideNav/index.d.ts +1 -1
  215. package/dist/SideNav/index.js +1 -1
  216. package/dist/{SideNav-BF8mYDxl.js → SideNav-BH6XKsW2.js} +56 -42
  217. package/dist/Slider/index.d.ts +1 -1
  218. package/dist/Slider/index.js +1 -1
  219. package/dist/{Slider-DWobsPgm.js → Slider-DG2YXll8.js} +172 -46
  220. package/dist/Spinner/index.js +1 -1
  221. package/dist/Spinner-BY8iQz--.js +200 -0
  222. package/dist/Stack/index.js +2 -2
  223. package/dist/{Stack-CTsTFfar.js → Stack-Bb_h60t3.js} +1 -1
  224. package/dist/{Stack-kQlYbbL4.js → Stack-Bp-XN9J4.js} +12 -7
  225. package/dist/StatusDot/index.d.ts +1 -1
  226. package/dist/StatusDot/index.js +1 -1
  227. package/dist/{StatusDot-BPUhMOff.js → StatusDot-BS_ohXhd.js} +8 -4
  228. package/dist/Stepper/index.d.ts +1 -1
  229. package/dist/Stepper/index.js +1 -1
  230. package/dist/{Stepper-CE8dHysu.js → Stepper-FtkTq5qR.js} +127 -113
  231. package/dist/Switch/index.d.ts +1 -1
  232. package/dist/Switch/index.js +1 -1
  233. package/dist/{Switch-DaVPRxvN.js → Switch-0JKvJluV.js} +38 -22
  234. package/dist/TabList/index.d.ts +2 -2
  235. package/dist/TabList/index.js +1 -1
  236. package/dist/{TabList-DIkK9sgK.js → TabList-cpjvnbhx.js} +205 -63
  237. package/dist/Table/index.d.ts +3 -3
  238. package/dist/Table/index.js +1 -1
  239. package/dist/{Table-fecqnm7P.js → Table-fWs_ZQBF.js} +735 -461
  240. package/dist/Text/index.d.ts +1 -1
  241. package/dist/Text/index.js +1 -1
  242. package/dist/{Text-CV3LmscH.js → Text-CmTOgYXf.js} +1 -1
  243. package/dist/TextArea/index.d.ts +1 -1
  244. package/dist/TextArea/index.js +1 -1
  245. package/dist/{TextArea-Ab5Sw60T.js → TextArea-CwSfEjT1.js} +110 -50
  246. package/dist/TextInput/index.d.ts +1 -1
  247. package/dist/TextInput/index.js +1 -1
  248. package/dist/{TextInput-zFT1_qgI.js → TextInput-CavITage.js} +71 -38
  249. package/dist/Theme/index.d.ts +3 -3
  250. package/dist/Theme/index.js +3 -2
  251. package/dist/Theme-BbDT8B_C.js +2125 -0
  252. package/dist/Thumbnail/index.js +1 -1
  253. package/dist/{Thumbnail-C3NnJUFG.js → Thumbnail-DpJnaNbg.js} +17 -14
  254. package/dist/{TimeField-CoHDGmsP.js → TimeField-DefNjDIT.js} +297 -40
  255. package/dist/TimeInput/index.d.ts +1 -1
  256. package/dist/TimeInput/index.js +1 -1
  257. package/dist/{TimeInput-D2k3Ux3p.js → TimeInput-j5vzN8MG.js} +78 -9
  258. package/dist/Timer/index.js +1 -1
  259. package/dist/{Timer-avMQk5DN.js → Timer-CH7GsEVu.js} +1 -1
  260. package/dist/Timestamp/index.d.ts +1 -1
  261. package/dist/Timestamp/index.js +1 -1
  262. package/dist/{Timestamp-xpQKCk0d.js → Timestamp-dtT4yADD.js} +9 -9
  263. package/dist/Toast/index.d.ts +1 -1
  264. package/dist/Toast/index.js +1 -1
  265. package/dist/Toast-igtJYSw0.js +685 -0
  266. package/dist/ToggleButton/index.d.ts +1 -1
  267. package/dist/ToggleButton/index.js +1 -1
  268. package/dist/{ToggleButton-B-C-Q7XP.js → ToggleButton-cLjh9W-x.js} +5 -4
  269. package/dist/Token/index.d.ts +1 -1
  270. package/dist/Token/index.js +1 -1
  271. package/dist/{Token-DsntTYhQ.js → Token-DhsAtAH6.js} +32 -17
  272. package/dist/Tokenizer/index.d.ts +1 -1
  273. package/dist/Tokenizer/index.js +1 -1
  274. package/dist/{Tokenizer-B5C_qY7t.js → Tokenizer-BGdj78UK.js} +107 -23
  275. package/dist/Toolbar/index.d.ts +2 -2
  276. package/dist/Toolbar/index.js +1 -1
  277. package/dist/{Toolbar-BrgvvTCk.js → Toolbar-C0pMWL4S.js} +1 -1
  278. package/dist/Tooltip/index.d.ts +1 -1
  279. package/dist/Tooltip/index.js +1 -1
  280. package/dist/{Tooltip-C4Vaqd3G.js → Tooltip-sAM8i1eO.js} +23 -19
  281. package/dist/TopNav/index.d.ts +1 -1
  282. package/dist/TopNav/index.js +1 -1
  283. package/dist/{TopNav-Ciq0l1w7.js → TopNav-Dw0m387B.js} +23 -22
  284. package/dist/TreeList/index.d.ts +1 -1
  285. package/dist/TreeList/index.js +1 -1
  286. package/dist/{TreeList-BUz-KZJd.js → TreeList-Bunn7u3T.js} +129 -46
  287. package/dist/Typeahead/index.d.ts +1 -1
  288. package/dist/Typeahead/index.js +2 -2
  289. package/dist/{Typeahead-JP9RT87x.js → Typeahead-DRyf2HEh.js} +123 -26
  290. package/dist/{TypeaheadMenu-DBW6rHeO.js → TypeaheadMenu-BY5__sPC.js} +141 -51
  291. package/dist/{announce-Cnio10Wk.js → announce-B210eJVf.js} +17 -2
  292. package/dist/characters-rcDbGt71.d.ts +29 -0
  293. package/dist/characters-wTnzjkkR.js +58 -0
  294. package/dist/{colorMode-CBgdgDSn.js → colorMode-BxqfDP4P.js} +1 -4
  295. package/dist/composables/index.d.ts +5 -4
  296. package/dist/composables/index.js +23 -18
  297. package/dist/{composables-CbKx9C1Y.js → composables-CnsDaMuU.js} +167 -197
  298. package/dist/context-B6UElI5X.js +5 -0
  299. package/dist/context-CM-cjGg_.js +1425 -0
  300. package/dist/{context-Cfjh8te1.js → context-Cfml4jaK.js} +5 -3
  301. package/dist/context-IvbU9c3T.js +8 -0
  302. package/dist/context-pjBxaMSh.js +28 -0
  303. package/dist/fieldParts--SyRZVQG.js +44 -0
  304. package/dist/fieldParts-LXpQMKE8.d.ts +27 -0
  305. package/dist/{focus-CpficIgf.js → focus-l8jVTcqd.js} +1 -1
  306. package/dist/hoverIntent-DMHGb85c.js +115 -0
  307. package/dist/{index-ClNU2Th8.d.ts → index-3t5RAfNP.d.ts} +6 -2
  308. package/dist/{index-B9e52paP.d.ts → index-5LVG3QyV.d.ts} +1 -1
  309. package/dist/{index-CsNi1I8j.d.ts → index-B08-Uxhv.d.ts} +4 -2
  310. package/dist/{index-TXcNH86P.d.ts → index-B1eCxBCY.d.ts} +1 -1
  311. package/dist/{index-Cn-sSds-.d.ts → index-B1t1oQWH.d.ts} +24 -1
  312. package/dist/{index-BkjSF265.d.ts → index-BEZ4ezJk.d.ts} +3 -3
  313. package/dist/{index-yT1yiiww.d.ts → index-BI6jikpA.d.ts} +23 -11
  314. package/dist/{index-DeQwYJbg.d.ts → index-BNaRK-s5.d.ts} +10 -1
  315. package/dist/{index-D97pQbua.d.ts → index-BV2D2x_u.d.ts} +1 -1
  316. package/dist/{index-Crp3NFLW.d.ts → index-BZKgbyN9.d.ts} +1 -1
  317. package/dist/{index-Bu8NA2SD.d.ts → index-BaxM-pFP.d.ts} +12 -3
  318. package/dist/{index-BVKivP59.d.ts → index-Bgk1Rj2A.d.ts} +32 -3
  319. package/dist/index-BkUkm6Al.d.ts +11 -0
  320. package/dist/index-Bo-ofFyg.d.ts +166 -0
  321. package/dist/{index-B1WJxt-n.d.ts → index-C-tFz2Yx.d.ts} +17 -7
  322. package/dist/{index-DWh2WC8W.d.ts → index-C4Cjz6OK.d.ts} +2 -2
  323. package/dist/{index-CqE4Bf3Q.d.ts → index-C732aNMY.d.ts} +18 -4
  324. package/dist/{index-B7yhzGUT.d.ts → index-C7sam-SB.d.ts} +2 -2
  325. package/dist/{index-BrJzFA5X.d.ts → index-C90l2rH1.d.ts} +1 -1
  326. package/dist/{index-vP0EtrJJ.d.ts → index-C9gAlDt_.d.ts} +6 -3
  327. package/dist/index-CKUfpmFL.d.ts +375 -0
  328. package/dist/{index-CL1T2j4y.d.ts → index-CL8JvxHW.d.ts} +3 -3
  329. package/dist/{index-IBAInumL.d.ts → index-CMme-xmL.d.ts} +19 -6
  330. package/dist/{index-gW0HW02U.d.ts → index-COxy6LEW.d.ts} +1 -1
  331. package/dist/{index-12QYAbiz.d.ts → index-CRrSHbok.d.ts} +3 -2
  332. package/dist/{index-B42oE_F-.d.ts → index-CT5OEUxd.d.ts} +17 -4
  333. package/dist/{index-DG52Bg0W.d.ts → index-CTf3SK0b.d.ts} +6 -0
  334. package/dist/{index-Cde5JvtX.d.ts → index-CUVmtB5-.d.ts} +13 -6
  335. package/dist/{index-DXpSFlPG.d.ts → index-CWaSYtk9.d.ts} +4 -4
  336. package/dist/{index-CVn0GBdB.d.ts → index-Ca8VIE4l.d.ts} +1 -1
  337. package/dist/{index-Cyb9Du5Z.d.ts → index-CfR2Z0uG.d.ts} +1 -1
  338. package/dist/{index-Byar3h1e.d.ts → index-D05JGsT3.d.ts} +6 -3
  339. package/dist/{index-hCpxKePE.d.ts → index-D5N9ikrS.d.ts} +1 -1
  340. package/dist/{index-CkKPMIeX.d.ts → index-D7XRtUTY.d.ts} +9 -0
  341. package/dist/{index-i0tNFWfz.d.ts → index-D8lv2BiD.d.ts} +3 -1
  342. package/dist/{index-TntQsADQ.d.ts → index-DEm3kRBO.d.ts} +4 -3
  343. package/dist/{index-0QGtSf3r.d.ts → index-DFLPv9io.d.ts} +4 -3
  344. package/dist/{index-C2nbK2AA.d.ts → index-DLAG3m9W.d.ts} +13 -3
  345. package/dist/{index-D41_xqjs.d.ts → index-DTuhnqHb.d.ts} +16 -9
  346. package/dist/{index-B3Fomy15.d.ts → index-DbiZvj1P.d.ts} +4 -4
  347. package/dist/{index-C5e-7Obr.d.ts → index-Dj1_1t3j.d.ts} +19 -6
  348. package/dist/{index-DIXAzTKL.d.ts → index-DxxudRgB.d.ts} +1 -1
  349. package/dist/{index-BhpAUzUr.d.ts → index-Dy746dfn.d.ts} +1 -1
  350. package/dist/{index-GI9xIV9l.d.ts → index-JL4auphT.d.ts} +2 -2
  351. package/dist/{index-DVmgNb78.d.ts → index-TA1zVibb.d.ts} +4 -4
  352. package/dist/{index-DUaLJO7l.d.ts → index-UA93Im7H.d.ts} +155 -109
  353. package/dist/{index-COgrQZIL.d.ts → index-YKCx03zD.d.ts} +2 -2
  354. package/dist/{index-XuAAcYiP.d.ts → index-f3d9cVtj.d.ts} +1 -1
  355. package/dist/{index-T2FOcOuI.d.ts → index-jOwU3YoR.d.ts} +400 -90
  356. package/dist/{index-CICeEoZV.d.ts → index-pNtfr-RW.d.ts} +1 -1
  357. package/dist/{index-B4OOtNP8.d.ts → index-pYh4gqgl.d.ts} +1 -1
  358. package/dist/index.d.ts +81 -75
  359. package/dist/index.js +150 -136
  360. package/dist/inlineSize-BNe8wggI.js +66 -0
  361. package/dist/inputPresentation-BOyHkCDr.js +62 -0
  362. package/dist/interactionModality-ACpTMhak.js +44 -0
  363. package/dist/isApplePlatform-B1ju6F5B.js +27 -0
  364. package/dist/isRenderable-BnKHIqfd.js +21 -0
  365. package/dist/layerDepth-CNDh-IHb.js +181 -0
  366. package/dist/link-DuuA2eCL.js +30 -0
  367. package/dist/loadCatalog-CsZFr9dg.js +424 -0
  368. package/dist/loadCatalog-opk5hs94.d.ts +803 -0
  369. package/dist/locale/index.d.ts +2 -2
  370. package/dist/locale/index.js +4 -3
  371. package/dist/locale-D1Z3K290.js +343 -0
  372. package/dist/modalOutlet-CUOcrhIu.js +56 -0
  373. package/dist/optionAction-Cg7xQLUA.d.ts +6 -0
  374. package/dist/{power-search-DrDfcoL1.d.ts → power-search-gHLIYXs5.d.ts} +2 -0
  375. package/dist/protocol-DHxY0NI8.js +113 -0
  376. package/dist/protocol-DwUmpC5G.d.ts +240 -0
  377. package/dist/publicParser-B6XMcsB2.d.ts +141 -0
  378. package/dist/publicParser-DWUMCx7j.js +1437 -0
  379. package/dist/resizableChannel-3vivrEcT.js +20 -0
  380. package/dist/safeUrl-CsvfcZ9m.js +54 -0
  381. package/dist/scopedProvide-C-Df7c15.js +30 -0
  382. package/dist/scrollKeyboardDelegation-D7cumnOl.js +238 -0
  383. package/dist/scrollLock-C3aT4-0z.js +102 -0
  384. package/dist/{searchResultMessage-hXXNOFJP.js → searchResultMessage-DtyScdZs.js} +5 -14
  385. package/dist/{semantic-CKH9XVqa.d.ts → semantic-BF_AjLvk.d.ts} +6 -3
  386. package/dist/slug-DAK6hdbr.js +17 -0
  387. package/dist/syntaxContext-DmIfNNtb.js +4 -0
  388. package/dist/triggerVariant-BsL8jMHs.js +16 -0
  389. package/dist/{types-0Q_SJv_F.d.ts → types-Bb7OGivY.d.ts} +6 -1
  390. package/dist/{types-CwyibrRB.d.ts → types-C5GQ2KCK.d.ts} +23 -3
  391. package/dist/{types-gKsEkk2g.d.ts → types-CsqwQkf1.d.ts} +143 -10
  392. package/dist/upstreamMap-ocuIRfI2.js +893 -0
  393. package/dist/{useAnchoredListbox-DwztMNjP.js → useAnchoredListbox-DGxxKHZb.js} +2 -2
  394. package/dist/{useAsyncSource-xpQovjV_.d.ts → useAsyncSource-aGzrvRkI.d.ts} +3 -0
  395. package/dist/{useClickableContainer-DyNpnSEa.js → useClickableContainer-CdGp_Cev.js} +1 -1
  396. package/dist/{useClipboard-BDfbEsWd.js → useClipboard-Dk8cS810.js} +1 -1
  397. package/dist/useHoverLayerDismiss-kYJ_NqL4.js +27 -0
  398. package/dist/{useIndicator-i1NORM7W.js → useIndicator-D9Y0dJsm.js} +5 -23
  399. package/dist/{useInputContainer-CpgDe2-4.js → useInputContainer-CLcYrby4.js} +1 -1
  400. package/dist/{useInputStatusIcon-DBOwxV4x.js → useInputStatusIcon-CWkCeMyX.js} +2 -2
  401. package/dist/useLayerMountTarget-BmZyeKWE.js +156 -0
  402. package/dist/{useListFocus-D0iOJl39.js → useListFocus-ChxLg0b4.js} +3 -2
  403. package/dist/{useMenuDrillIn-DzKGkTho.js → useMenuDrillIn-DhUnPvKs.js} +6 -5
  404. package/dist/useMenuHover-Djreu23i.js +170 -0
  405. package/dist/useMenuPress-8foxY8z4.js +764 -0
  406. package/dist/{useMergedRefs-CfHHlCsn.js → useMergedRefs-Cb6_w93m.js} +24 -4
  407. package/dist/{useNumberField-4-dIGVed.js → useNumberField-Dk1BE3-K.js} +3 -3
  408. package/dist/useOptionActionGrid-CkJcuvaU.js +97 -0
  409. package/dist/{usePositionedLayer-Cru9_00b.js → usePositionedLayer-B7cvG-_v.js} +43 -49
  410. package/dist/usePressFeedback-BJCpjEpv.js +319 -0
  411. package/dist/{useResizable-DDwPpPe6.d.ts → useResizable-1MHPNaRD.d.ts} +19 -1
  412. package/dist/{useResizable-B3ahKLoZ.js → useResizable-I3BCiLSL.js} +72 -40
  413. package/dist/useResolvedLabelHidden-B2rlWiaI.js +30 -0
  414. package/dist/{useRestoreFocus-Djw9RUIf.js → useRestoreFocus-XEKs5-gp.js} +49 -7
  415. package/dist/useScrollOverflow-DuMoGXmm.js +67 -0
  416. package/dist/useScrollableArea-BE8b3qm7.js +222 -0
  417. package/dist/{useTimeValue-6ufHM15W.js → useTimeValue-BJd0xBhG.js} +4 -22
  418. package/dist/useTranslator-PEXMxDpv.js +35 -0
  419. package/dist/{useTypeahead-PAK8lMYz.js → useTypeahead-BvtflkRk.js} +4 -5
  420. package/dist/utils/index.d.ts +3 -0
  421. package/dist/utils/index.js +5 -0
  422. package/dist/{utils-D33VQDnk.js → utils-ClVseK2w.js} +29 -2
  423. package/dist/utils-z3Q6BGIJ.js +819 -0
  424. package/locales/SOURCE.json +1 -1
  425. package/package.json +18 -2
  426. package/reset.css +364 -1
  427. package/styles/avatar-group.css +9 -1
  428. package/styles/badge.css +8 -5
  429. package/styles/banner.css +125 -26
  430. package/styles/blockquote.css +1 -0
  431. package/styles/bordered-control.css +1 -1
  432. package/styles/bottom-sheet.css +74 -6
  433. package/styles/breadcrumbs.css +16 -2
  434. package/styles/button-group.css +3 -1
  435. package/styles/button.css +53 -11
  436. package/styles/card.css +1 -1
  437. package/styles/chat.css +16 -6
  438. package/styles/checkbox-input.css +10 -0
  439. package/styles/clickable-card.css +10 -3
  440. package/styles/collapsible.css +12 -5
  441. package/styles/command-palette.css +29 -14
  442. package/styles/complex-selector.css +24 -5
  443. package/styles/context-menu.css +3 -3
  444. package/styles/date-input.css +111 -1
  445. package/styles/dialog-header.css +4 -1
  446. package/styles/dialog.css +7 -0
  447. package/styles/dropdown-menu.css +12 -3
  448. package/styles/field.css +5 -0
  449. package/styles/form-layout.css +1 -0
  450. package/styles/heading.css +18 -8
  451. package/styles/icon.css +9 -9
  452. package/styles/kbd.css +1 -1
  453. package/styles/layer.css +72 -0
  454. package/styles/list.css +9 -2
  455. package/styles/metadata-list.css +1 -0
  456. package/styles/mobile-nav.css +4 -1
  457. package/styles/multi-selector.css +48 -1
  458. package/styles/nav-item.css +9 -2
  459. package/styles/nav-menu.css +12 -2
  460. package/styles/number-input.css +9 -1
  461. package/styles/overflow-list.css +1 -1
  462. package/styles/popover.css +2 -1
  463. package/styles/power-search.css +5 -3
  464. package/styles/pressable.css +63 -22
  465. package/styles/progress-bar.css +15 -3
  466. package/styles/radio.css +16 -0
  467. package/styles/resize-handle.css +42 -0
  468. package/styles/segmented-control.css +12 -4
  469. package/styles/selector.css +53 -1
  470. package/styles/side-nav.css +19 -0
  471. package/styles/slider.css +4 -3
  472. package/styles/spinner.css +48 -42
  473. package/styles/stepper.css +58 -4
  474. package/styles/switch.css +26 -0
  475. package/styles/tab-list.css +132 -3
  476. package/styles/table.css +88 -11
  477. package/styles/text-area.css +7 -1
  478. package/styles/text-input.css +1 -1
  479. package/styles/text.css +6 -6
  480. package/styles/thumbnail.css +11 -3
  481. package/styles/time-input.css +8 -0
  482. package/styles/toast.css +37 -3
  483. package/styles/token.css +2 -2
  484. package/styles/tokenizer.css +1 -1
  485. package/styles/toolbar.css +4 -1
  486. package/styles/tree-list.css +1 -1
  487. package/styles/typeahead.css +34 -1
  488. package/styles.css +1 -0
  489. package/dist/Blockquote-DFqBv_oJ.js +0 -18
  490. package/dist/Breadcrumbs-DIm4figq.js +0 -141
  491. package/dist/ButtonGroup-ySQWanDP.js +0 -125
  492. package/dist/DateTimeInput-A7m2O3bg.js +0 -268
  493. package/dist/FieldIcon--NTgW5IU.js +0 -44
  494. package/dist/MultiSelector-BtAUfQ3t.js +0 -990
  495. package/dist/NumberInput-AZ9x3oja.js +0 -473
  496. package/dist/Selector-DJ2BhUTV.js +0 -677
  497. package/dist/Spinner-9cYUCnDy.js +0 -84
  498. package/dist/Theme-CtaUWo4g.js +0 -1246
  499. package/dist/Toast-BuqIZV5z.js +0 -322
  500. package/dist/context-4PuqD1Ic.js +0 -4
  501. package/dist/context-D5-MwxnN.js +0 -4
  502. package/dist/context-iABt_ueM.js +0 -976
  503. package/dist/index-BH9PzQ1F.d.ts +0 -87
  504. package/dist/link-C4_WogdF.js +0 -18
  505. package/dist/loadCatalog-BGHKG_9N.d.ts +0 -457
  506. package/dist/loadCatalog-CXKqEB9s.js +0 -877
  507. package/dist/locale-DgkZEMTn.js +0 -105
  508. package/dist/platform-B_9W_aHW.js +0 -33
  509. package/dist/scrollLock-BzIvIimL.js +0 -42
  510. package/dist/useMenuPress-D-FRNrBW.js +0 -573
  511. package/dist/useScrollableArea-DDk_CluT.js +0 -172
  512. /package/dist/{index-lgvUFSCO.d.ts → index-CryFtTT6.d.ts} +0 -0
@@ -0,0 +1,819 @@
1
+ //#region src/utils/chainEventHandlers.ts
2
+ /**
3
+ * 把多个事件处理函数串成一个。每个函数都会按参数顺序执行。
4
+ *
5
+ * 和「前一个调用了 preventDefault 就跳过后面」不同:组件自己的处理函数
6
+ * 不能把事件藏起来,调用方也不能用 preventDefault 取消组件的行为。
7
+ */
8
+ function chainEventHandlers(...handlers) {
9
+ return (event) => {
10
+ for (const handler of handlers) handler?.(event);
11
+ };
12
+ }
13
+ //#endregion
14
+ //#region src/utils/plainDate.ts
15
+ function plainDateCreate(year, month, day) {
16
+ if (!Number.isInteger(year) || year < 1) throw new RangeError(`year must be a positive integer, got ${year}`);
17
+ if (!Number.isInteger(month) || month < 1 || month > 12) throw new RangeError(`month must be 1–12, got ${month}`);
18
+ const maxDay = getDaysInMonth(year, month);
19
+ if (!Number.isInteger(day) || day < 1 || day > maxDay) throw new RangeError(`day must be 1–${maxDay} for ${year}-${String(month).padStart(2, "0")}, got ${day}`);
20
+ return {
21
+ year,
22
+ month,
23
+ day
24
+ };
25
+ }
26
+ function plainDateFromISO(str) {
27
+ const [year, month, day] = str.split("-").map(Number);
28
+ return plainDateCreate(year, month, day);
29
+ }
30
+ function plainDateToISO(pd) {
31
+ return `${String(pd.year).padStart(4, "0")}-${String(pd.month).padStart(2, "0")}-${String(pd.day).padStart(2, "0")}`;
32
+ }
33
+ function plainDateToDate(pd) {
34
+ const d = new Date(0, 0, 1);
35
+ d.setFullYear(pd.year, pd.month - 1, pd.day);
36
+ return d;
37
+ }
38
+ function plainDateFromDate(d) {
39
+ return {
40
+ year: d.getFullYear(),
41
+ month: d.getMonth() + 1,
42
+ day: d.getDate()
43
+ };
44
+ }
45
+ function plainDateToday() {
46
+ return plainDateFromDate(/* @__PURE__ */ new Date());
47
+ }
48
+ function getDaysInMonth(year, month) {
49
+ if (month === 2) return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0 ? 29 : 28;
50
+ return [
51
+ 0,
52
+ 31,
53
+ 0,
54
+ 31,
55
+ 30,
56
+ 31,
57
+ 30,
58
+ 31,
59
+ 31,
60
+ 30,
61
+ 31,
62
+ 30,
63
+ 31
64
+ ][month];
65
+ }
66
+ function plainDateDayOfWeek(pd) {
67
+ return plainDateToDate(pd).getDay();
68
+ }
69
+ function plainDateAddMonths(pd, n) {
70
+ const totalMonths = pd.year * 12 + (pd.month - 1) + n;
71
+ const year = Math.floor(totalMonths / 12);
72
+ const month = (totalMonths % 12 + 12) % 12 + 1;
73
+ return {
74
+ year,
75
+ month,
76
+ day: Math.min(pd.day, getDaysInMonth(year, month))
77
+ };
78
+ }
79
+ function plainDateAddDays(pd, n) {
80
+ const d = plainDateToDate(pd);
81
+ d.setDate(d.getDate() + n);
82
+ return plainDateFromDate(d);
83
+ }
84
+ /**
85
+ * `Date.UTC` with years 0-99 kept as given; `Date.UTC` itself reads them as
86
+ * 1900-1999.
87
+ */
88
+ function utcTime(year, monthIndex, day, hour = 0, minute = 0, second = 0) {
89
+ const d = /* @__PURE__ */ new Date(0);
90
+ d.setUTCFullYear(year, monthIndex, day);
91
+ d.setUTCHours(hour, minute, second);
92
+ return d.getTime();
93
+ }
94
+ /**
95
+ * Whole calendar days from `a` to `b`, ignoring time of day. Positive when
96
+ * `b` is after `a`, negative when before. Uses UTC midnight so DST shifts
97
+ * never add or drop a day.
98
+ */
99
+ function plainDateDiffDays(a, b) {
100
+ const msPerDay = 864e5;
101
+ const aUTC = utcTime(a.year, a.month - 1, a.day);
102
+ const bUTC = utcTime(b.year, b.month - 1, b.day);
103
+ return Math.round((bUTC - aUTC) / msPerDay);
104
+ }
105
+ /**
106
+ * The wall-clock fields an instant reads as in a given zone.
107
+ *
108
+ * A fixed `'en-US'` locale with `hourCycle: 'h23'` keeps the parts numeric and
109
+ * stable whatever locale the viewer has, so callers can assemble machine
110
+ * shapes (`YYYY-MM-DD`, `HH:mm:ss`) from them. Exported for Timestamp, whose
111
+ * `system_*` formats are built from these fields rather than through `Intl`
112
+ * formatting.
113
+ */
114
+ function getTimeZoneParts(instant, timezoneID) {
115
+ const parts = new Intl.DateTimeFormat("en-US", {
116
+ timeZone: timezoneID,
117
+ year: "numeric",
118
+ month: "2-digit",
119
+ day: "2-digit",
120
+ hour: "2-digit",
121
+ minute: "2-digit",
122
+ second: "2-digit",
123
+ hourCycle: "h23",
124
+ calendar: "gregory"
125
+ }).formatToParts(new Date(instant));
126
+ const lookup = Object.fromEntries(parts.filter((part) => part.type !== "literal").map((part) => [part.type, Number(part.value)]));
127
+ return {
128
+ year: lookup.year,
129
+ month: lookup.month,
130
+ day: lookup.day,
131
+ hour: lookup.hour,
132
+ minute: lookup.minute,
133
+ second: lookup.second
134
+ };
135
+ }
136
+ function getTimezoneOffsetMS(timezoneID, instant) {
137
+ const parts = getTimeZoneParts(instant, timezoneID);
138
+ return utcTime(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second) - instant;
139
+ }
140
+ const DAY_MS = 864e5;
141
+ function plainDateToInstant(date, timezoneID, hour = 0, minute = 0) {
142
+ const wallTime = utcTime(date.year, date.month - 1, date.day, hour, minute);
143
+ const offsetBefore = getTimezoneOffsetMS(timezoneID, wallTime - DAY_MS);
144
+ const offsetAfter = getTimezoneOffsetMS(timezoneID, wallTime + DAY_MS);
145
+ const candidates = [offsetBefore, offsetAfter].map((offset) => wallTime - offset).filter((instant, index) => getTimezoneOffsetMS(timezoneID, instant) === (index === 0 ? offsetBefore : offsetAfter));
146
+ return candidates.length > 0 ? Math.min(...candidates) : wallTime - offsetBefore;
147
+ }
148
+ function plainDateFromInstant(instant, timezoneID) {
149
+ const parts = getTimeZoneParts(instant, timezoneID);
150
+ return plainDateCreate(parts.year, parts.month, parts.day);
151
+ }
152
+ function compare(a, b) {
153
+ if (a.year !== b.year) return a.year - b.year;
154
+ if (a.month !== b.month) return a.month - b.month;
155
+ return a.day - b.day;
156
+ }
157
+ function plainDateIsBefore(a, b) {
158
+ return compare(a, b) < 0;
159
+ }
160
+ function plainDateIsAfter(a, b) {
161
+ return compare(a, b) > 0;
162
+ }
163
+ function plainDateIsEqual(a, b) {
164
+ return compare(a, b) === 0;
165
+ }
166
+ function plainDateMax(a, b) {
167
+ return compare(a, b) >= 0 ? a : b;
168
+ }
169
+ function plainDateMin(a, b) {
170
+ return compare(a, b) <= 0 ? a : b;
171
+ }
172
+ function plainDateIsInRange(pd, range) {
173
+ return compare(pd, range[0]) >= 0 && compare(pd, range[1]) <= 0;
174
+ }
175
+ function plainDateSetFirstOfMonth(pd) {
176
+ return {
177
+ year: pd.year,
178
+ month: pd.month,
179
+ day: 1
180
+ };
181
+ }
182
+ function plainDateSetStartOfWeek(pd, weekStartsOn) {
183
+ return plainDateAddDays(pd, -((plainDateDayOfWeek(pd) - weekStartsOn + 7) % 7));
184
+ }
185
+ function plainDateSetEndOfWeekExclusive(pd, weekStartsOn) {
186
+ return plainDateAddDays(plainDateSetStartOfWeek(pd, weekStartsOn), 7);
187
+ }
188
+ function plainDateGetWeekNumber(pd) {
189
+ const d = plainDateToDate(pd);
190
+ const dayNum = d.getDay() || 7;
191
+ d.setDate(d.getDate() + 4 - dayNum);
192
+ const yearStart = plainDateToDate({
193
+ year: d.getFullYear(),
194
+ month: 1,
195
+ day: 1
196
+ });
197
+ return Math.ceil(((d.getTime() - yearStart.getTime()) / 864e5 + 1) / 7);
198
+ }
199
+ const DATE_FORMAT_WITH_WEEKDAY = {
200
+ weekday: "long",
201
+ year: "numeric",
202
+ month: "long",
203
+ day: "numeric"
204
+ };
205
+ const DATE_FORMAT_SHORT_WITH_WEEKDAY = {
206
+ weekday: "short",
207
+ month: "short",
208
+ day: "numeric",
209
+ year: "numeric"
210
+ };
211
+ const DATE_FORMAT_LONG = {
212
+ year: "numeric",
213
+ month: "long",
214
+ day: "numeric"
215
+ };
216
+ const DATE_FORMAT_MONTH_YEAR = {
217
+ year: "numeric",
218
+ month: "long"
219
+ };
220
+ const DATE_FORMAT_WEEKDAY_ONLY = { weekday: "short" };
221
+ const DATE_FORMAT_MONTH_ONLY = { month: "long" };
222
+ const DATE_FORMAT_SHORT = {
223
+ month: "short",
224
+ day: "numeric"
225
+ };
226
+ const DATE_FORMAT_SHORT_WITH_YEAR = {
227
+ month: "short",
228
+ day: "numeric",
229
+ year: "numeric"
230
+ };
231
+ /**
232
+ * Format a `PlainDate` for display.
233
+ *
234
+ * The locale defaults to the same `'en'` fallback as `useLocale()`, avoiding
235
+ * runtime-dependent output when no provider locale is available. Astryx date
236
+ * APIs currently model Gregorian dates, so this helper defaults to Gregorian
237
+ * when `options.calendar` is omitted. The explicit option remains supported for
238
+ * compatibility with the public `Intl.DateTimeFormatOptions` signature; it is a
239
+ * display-only escape hatch and does not change PlainDate arithmetic, parsing,
240
+ * serialization, or any Astryx component's calendar semantics.
241
+ */
242
+ function plainDateFormat(pd, options, locale = "en") {
243
+ return new Intl.DateTimeFormat(locale, {
244
+ ...options,
245
+ calendar: options.calendar ?? "gregory"
246
+ }).format(plainDateToDate(pd));
247
+ }
248
+ /**
249
+ * The locale's name for the "week of year" date field ("week", "Woche", "週"),
250
+ * from CLDR through `Intl.DisplayNames`. Calendar names its week-number
251
+ * column header with it, so no catalog string is needed for a word the
252
+ * platform already carries in every locale.
253
+ *
254
+ * `Intl.DisplayNames` with `type: 'dateTimeField'` is inside the Baseline − 2
255
+ * support tier (Chrome 106, Safari 15.4, Firefox 110). Should a host lack it
256
+ * or return nothing, the field's English CLDR name stands in rather than an
257
+ * empty header.
258
+ */
259
+ function plainDateWeekFieldName(locale = "en") {
260
+ try {
261
+ const name = new Intl.DisplayNames(locale, { type: "dateTimeField" }).of("weekOfYear");
262
+ if (name != null && name !== "") return name;
263
+ } catch {}
264
+ return "week";
265
+ }
266
+ /**
267
+ * Intl option bags for the locale-aware shared date members. `system_date` is
268
+ * intentionally absent — it is emitted as a fixed ISO `YYYY-MM-DD` string, not
269
+ * via `Intl` — and is handled directly by {@link formatSharedDate}.
270
+ *
271
+ * This is the single source of truth consumed by both Timestamp's
272
+ * `formatTimestamp` switch and DateInput's display path, so the two never
273
+ * drift for the members they share.
274
+ */
275
+ const SHARED_DATE_FORMAT_OPTIONS = {
276
+ date: DATE_FORMAT_SHORT_WITH_YEAR,
277
+ date_long: DATE_FORMAT_LONG,
278
+ date_weekday: DATE_FORMAT_SHORT_WITH_WEEKDAY
279
+ };
280
+ /**
281
+ * Renders a {@link PlainDate} using one of the {@link SharedDateFormat}
282
+ * members. The shared entry point DateInput uses for the named-format path;
283
+ * Timestamp maps the same members onto {@link SHARED_DATE_FORMAT_OPTIONS} in
284
+ * its own `formatTimestamp` switch (its input is a `Date`, not a `PlainDate`).
285
+ */
286
+ function formatSharedDate(pd, format, locale = "en") {
287
+ if (format === "system_date") return plainDateToISO(pd);
288
+ return plainDateFormat(pd, SHARED_DATE_FORMAT_OPTIONS[format], locale);
289
+ }
290
+ //#endregion
291
+ //#region src/utils/dateParser.ts
292
+ /**
293
+ * Detects if the locale uses day-first date format (DD/MM/YYYY).
294
+ * US and a few others use month-first (MM/DD/YYYY).
295
+ */
296
+ function isLocaleDayFirst(locale = "en") {
297
+ const parts = new Intl.DateTimeFormat(locale, { calendar: "gregory" }).formatToParts(new Date(2e3, 0, 15));
298
+ return parts.findIndex((p) => p.type === "day") < parts.findIndex((p) => p.type === "month");
299
+ }
300
+ /**
301
+ * Parses user input into a PlainDate.
302
+ *
303
+ * Supports ISO dates, English month names, and ASCII numeric dates with or
304
+ * without a year. For ambiguous ASCII numeric input where both fields are at
305
+ * most 12, `locale` selects month-first versus day-first order. It does not
306
+ * localize month-name parsing, accept non-ASCII digits, or provide a general
307
+ * locale-aware parser.
308
+ *
309
+ * @returns PlainDate if valid, null if unparseable
310
+ */
311
+ function parseDateInput(input, locale = "en") {
312
+ const trimmed = input.trim();
313
+ if (!trimmed) return null;
314
+ const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
315
+ const isoMatch = trimmed.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
316
+ if (isoMatch) {
317
+ const [, year, month, day] = isoMatch;
318
+ return tryCreatePlainDate(+year, +month, +day);
319
+ }
320
+ const monthFirstWithYearMatch = trimmed.match(/^([A-Z]+)\s+(\d{1,2}),?\s+(\d{4})$/i);
321
+ if (monthFirstWithYearMatch) {
322
+ const [, monthName, day, year] = monthFirstWithYearMatch;
323
+ const month = parseMonthName(monthName);
324
+ if (month !== null) return tryCreatePlainDate(+year, month, +day);
325
+ }
326
+ const dayFirstWithYearMatch = trimmed.match(/^(\d{1,2})\s+([A-Z]+),?\s+(\d{4})$/i);
327
+ if (dayFirstWithYearMatch) {
328
+ const [, day, monthName, year] = dayFirstWithYearMatch;
329
+ const month = parseMonthName(monthName);
330
+ if (month !== null) return tryCreatePlainDate(+year, month, +day);
331
+ }
332
+ const monthFirstNoYearMatch = trimmed.match(/^([A-Z]+)\s+(\d{1,2})$/i);
333
+ if (monthFirstNoYearMatch) {
334
+ const [, monthName, day] = monthFirstNoYearMatch;
335
+ const month = parseMonthName(monthName);
336
+ if (month !== null) return tryCreatePlainDate(currentYear, month, +day);
337
+ }
338
+ const dayFirstNoYearMatch = trimmed.match(/^(\d{1,2})\s+([A-Z]+)$/i);
339
+ if (dayFirstNoYearMatch) {
340
+ const [, day, monthName] = dayFirstNoYearMatch;
341
+ const month = parseMonthName(monthName);
342
+ if (month !== null) return tryCreatePlainDate(currentYear, month, +day);
343
+ }
344
+ const numericWithYearMatch = trimmed.match(/^(\d{1,2})([-/.])(\d{1,2})([-/.])(\d{4})$/);
345
+ if (numericWithYearMatch) {
346
+ const [, first, sep1, second, sep2, year] = numericWithYearMatch;
347
+ if (sep1 !== sep2) return null;
348
+ return parseNumericDate(+first, +second, +year, locale);
349
+ }
350
+ const numericNoYearMatch = trimmed.match(/^(\d{1,2})[-/.](\d{1,2})$/);
351
+ if (numericNoYearMatch) {
352
+ const [, first, second] = numericNoYearMatch;
353
+ return parseNumericDate(+first, +second, currentYear, locale);
354
+ }
355
+ if (/^\d+$/.test(trimmed)) return null;
356
+ const parsed = new Date(trimmed);
357
+ if (!Number.isNaN(parsed.getTime())) {
358
+ const fromDate = plainDateFromDate(parsed);
359
+ return tryCreatePlainDate(fromDate.year, fromDate.month, fromDate.day);
360
+ }
361
+ return null;
362
+ }
363
+ function parseNumericDate(first, second, year, locale) {
364
+ let day;
365
+ let month;
366
+ if (first > 12 && second <= 12) {
367
+ day = first;
368
+ month = second;
369
+ } else if (second > 12 && first <= 12) {
370
+ month = first;
371
+ day = second;
372
+ } else if (first > 12 && second > 12) return null;
373
+ else if (isLocaleDayFirst(locale)) {
374
+ day = first;
375
+ month = second;
376
+ } else {
377
+ month = first;
378
+ day = second;
379
+ }
380
+ return tryCreatePlainDate(year, month, day);
381
+ }
382
+ function parseMonthName(name) {
383
+ return {
384
+ january: 1,
385
+ jan: 1,
386
+ february: 2,
387
+ feb: 2,
388
+ march: 3,
389
+ mar: 3,
390
+ april: 4,
391
+ apr: 4,
392
+ may: 5,
393
+ june: 6,
394
+ jun: 6,
395
+ july: 7,
396
+ jul: 7,
397
+ august: 8,
398
+ aug: 8,
399
+ september: 9,
400
+ sep: 9,
401
+ sept: 9,
402
+ october: 10,
403
+ oct: 10,
404
+ november: 11,
405
+ nov: 11,
406
+ december: 12,
407
+ dec: 12
408
+ }[name.toLowerCase()] ?? null;
409
+ }
410
+ function tryCreatePlainDate(year, month, day) {
411
+ try {
412
+ return plainDateCreate(year, month, day);
413
+ } catch {
414
+ return null;
415
+ }
416
+ }
417
+ //#endregion
418
+ //#region src/utils/dateTypes.ts
419
+ /** Weekday names indexed by {@link DayOfWeek} (0 = Sunday). */
420
+ const WEEKDAY_NAMES = [
421
+ "sun",
422
+ "mon",
423
+ "tue",
424
+ "wed",
425
+ "thu",
426
+ "fri",
427
+ "sat"
428
+ ];
429
+ /**
430
+ * Normalize a weekday to its numeric {@link DayOfWeek}. Accepts either a
431
+ * number (0–6) or a three-letter day name ('sun'–'sat', case-insensitive),
432
+ * so APIs like `weekStartsOn` can take whichever is more readable at the
433
+ * call site. Unrecognized values fall back to 0 (Sunday).
434
+ */
435
+ function normalizeDayOfWeek(value) {
436
+ if (typeof value === "number") return value;
437
+ const index = WEEKDAY_NAMES.indexOf(value.toLowerCase());
438
+ return index === -1 ? 0 : index;
439
+ }
440
+ //#endregion
441
+ //#region src/utils/groupItems.ts
442
+ /** 读出条目上的组名。不是字符串就不算分组。空字符串仍算一个组名。 */
443
+ function getItemGroup(item) {
444
+ const aux = item.auxiliaryData;
445
+ if (aux == null || typeof aux !== "object") return void 0;
446
+ const group = aux.group;
447
+ return typeof group === "string" ? group : void 0;
448
+ }
449
+ /**
450
+ * 按 `auxiliaryData.group` 分组,组的先后跟它们第一次出现的顺序。
451
+ * 没有任何组名时,返回一组 `heading: null`。
452
+ */
453
+ function groupItems(items, { ungroupedFirst = false } = {}) {
454
+ if (!items.some((item) => getItemGroup(item) != null)) return [{
455
+ heading: null,
456
+ items: [...items]
457
+ }];
458
+ const groupOrder = [];
459
+ const groups = /* @__PURE__ */ new Map();
460
+ const ungrouped = [];
461
+ for (const item of items) {
462
+ const group = getItemGroup(item);
463
+ if (group != null) {
464
+ const list = groups.get(group);
465
+ if (list) list.push(item);
466
+ else {
467
+ groupOrder.push(group);
468
+ groups.set(group, [item]);
469
+ }
470
+ } else ungrouped.push(item);
471
+ }
472
+ const namedGroups = groupOrder.map((heading) => ({
473
+ heading,
474
+ items: groups.get(heading) ?? []
475
+ }));
476
+ const ungroupedGroup = ungrouped.length > 0 ? [{
477
+ heading: null,
478
+ items: ungrouped
479
+ }] : [];
480
+ return ungroupedFirst ? [...ungroupedGroup, ...namedGroups] : [...namedGroups, ...ungroupedGroup];
481
+ }
482
+ //#endregion
483
+ //#region src/utils/inputAria.ts
484
+ function joinAriaIDs(...values) {
485
+ const ids = values.flatMap((value) => typeof value === "string" ? value.trim().split(/\s+/) : []).filter(Boolean);
486
+ if (ids.length === 0) return;
487
+ return Array.from(new Set(ids)).join(" ");
488
+ }
489
+ /**
490
+ * Builds ARIA label/description wiring for an input.
491
+ *
492
+ * Standalone inputs keep their normal native label association. Grouped inputs
493
+ * are named by the visible InputGroup label plus their own input label, and
494
+ * inherit group description/status text in addition to input-local text.
495
+ */
496
+ function getInputARIA(labelID, describedByIDs = [], inputGroup) {
497
+ return {
498
+ ariaLabelledBy: inputGroup ? joinAriaIDs(inputGroup.labelID, labelID) : void 0,
499
+ ariaDescribedBy: joinAriaIDs(inputGroup?.describedByIDs, ...describedByIDs)
500
+ };
501
+ }
502
+ //#endregion
503
+ //#region src/utils/parseStyleKey.ts
504
+ /** 把驼峰属性名变成主题用的 data 属性名,例如 listStyle → data-list-style。 */
505
+ function themeDataAttributeName(prop) {
506
+ return `data-${prop.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase()}`;
507
+ }
508
+ /** 双引号 CSS 属性选择器里的值转义。 */
509
+ function escapeAttributeValue(value) {
510
+ let escaped = "";
511
+ for (const char of value) {
512
+ const codePoint = char.codePointAt(0) ?? 0;
513
+ if (char === "\"" || char === "\\" || codePoint < 32 || codePoint === 127) escaped += `\\${(codePoint === 0 ? 65533 : codePoint).toString(16)} `;
514
+ else escaped += char;
515
+ }
516
+ return escaped;
517
+ }
518
+ /**
519
+ * 把组件样式键编成 data 属性选择器后缀。
520
+ *
521
+ * `prop:value` 选择 `[data-prop="value"]`。裸状态选择 `[data-state="state"]`。
522
+ * `+` 把多个条件接在同一个组件目标上。轴名留在选择器里,避免不同属性的相同值撞在一起。
523
+ *
524
+ * @example
525
+ * parseStyleKey('base') // ''
526
+ * parseStyleKey('variant:secondary') // '[data-variant="secondary"]'
527
+ * parseStyleKey('checked+disabled') // '[data-checked="checked"][data-disabled="disabled"]'
528
+ */
529
+ function parseStyleKey(key) {
530
+ if (key === "base") return "";
531
+ return key.split("+").map((part) => {
532
+ const separator = part.indexOf(":");
533
+ const prop = separator === -1 ? part : part.slice(0, separator);
534
+ const value = separator === -1 ? part : part.slice(separator + 1);
535
+ return `[${themeDataAttributeName(prop)}="${escapeAttributeValue(value)}"]`;
536
+ }).join("");
537
+ }
538
+ //#endregion
539
+ //#region src/utils/sharedResizeObserver.ts
540
+ let observer = null;
541
+ const callbacks = /* @__PURE__ */ new Map();
542
+ /**
543
+ * The shared observer, or null where the API does not exist (jsdom, an old
544
+ * browser). Callers still get the one-shot measurement `observeResize` fires
545
+ * on registration; live resize updates are the part that needs the API.
546
+ */
547
+ function getObserver() {
548
+ if (typeof ResizeObserver === "undefined") return null;
549
+ if (!observer) observer = new ResizeObserver((entries) => {
550
+ for (const entry of entries) {
551
+ const targetCallbacks = callbacks.get(entry.target);
552
+ if (targetCallbacks) for (const cb of [...targetCallbacks.keys()]) cb(entry);
553
+ }
554
+ });
555
+ return observer;
556
+ }
557
+ /**
558
+ * Observe an element's size via a shared ResizeObserver singleton.
559
+ *
560
+ * Fires the callback once synchronously on registration (with a
561
+ * synthetic entry) so callers don't need separate initial-measurement
562
+ * logic. Subsequent callbacks fire on actual resizes.
563
+ *
564
+ * Returns an unsubscribe function that removes only this registration, leaving
565
+ * every other observer of the same element intact — prefer it over
566
+ * `unobserveResize(element)`, which drops them all. The shared observer is
567
+ * destroyed when the last element is unobserved.
568
+ *
569
+ * @example
570
+ * ```
571
+ * const unsubscribe = observeResize(element, (entry) => {
572
+ * console.log(entry.contentBoxSize);
573
+ * });
574
+ *
575
+ * // Cleanup:
576
+ * unsubscribe();
577
+ * ```
578
+ */
579
+ function observeResize(element, callback) {
580
+ const existing = callbacks.get(element);
581
+ if (existing) existing.set(callback, (existing.get(callback) ?? 0) + 1);
582
+ else callbacks.set(element, /* @__PURE__ */ new Map([[callback, 1]]));
583
+ getObserver()?.observe(element);
584
+ callback({ target: element });
585
+ let isSubscribed = true;
586
+ return () => {
587
+ if (!isSubscribed) return;
588
+ isSubscribed = false;
589
+ unobserveResize(element, callback);
590
+ };
591
+ }
592
+ /**
593
+ * Stop observing an element.
594
+ *
595
+ * Pass the callback to remove only that registration — the unsubscribe returned
596
+ * by `observeResize` does this for you. Omitting it removes EVERY callback on
597
+ * the element, which silences peers that are still mounted, so it is only
598
+ * correct for a caller that owns the element outright.
599
+ *
600
+ * If no elements remain, the shared observer is disconnected and released for
601
+ * garbage collection.
602
+ */
603
+ function unobserveResize(element, callback) {
604
+ const targetCallbacks = callbacks.get(element);
605
+ if (callback != null) {
606
+ const registrationCount = targetCallbacks?.get(callback);
607
+ if (targetCallbacks == null || registrationCount == null) return;
608
+ if (registrationCount > 1) {
609
+ targetCallbacks.set(callback, registrationCount - 1);
610
+ return;
611
+ }
612
+ targetCallbacks.delete(callback);
613
+ if (targetCallbacks.size > 0) return;
614
+ }
615
+ callbacks.delete(element);
616
+ if (observer) {
617
+ observer.unobserve(element);
618
+ if (callbacks.size === 0) {
619
+ observer.disconnect();
620
+ observer = null;
621
+ }
622
+ }
623
+ }
624
+ //#endregion
625
+ //#region src/utils/timeParser.ts
626
+ /**
627
+ * Validates and creates an ISOTimeString from a string.
628
+ * Returns null if the string is not a valid time format.
629
+ */
630
+ function createISOTimeString(value) {
631
+ const parsed = parseISOTime(value);
632
+ if (!parsed) return null;
633
+ return formatISOTime(parsed, value.split(":").length === 3);
634
+ }
635
+ /**
636
+ * Parses an ISO time string into a ParsedTime object.
637
+ * Accepts HH:MM or HH:MM:SS format.
638
+ */
639
+ function parseISOTime(time) {
640
+ if (!time) return null;
641
+ const parts = time.split(":");
642
+ if (parts.length < 2 || parts.length > 3) return null;
643
+ const hour = parseInt(parts[0], 10);
644
+ const minute = parseInt(parts[1], 10);
645
+ const second = parts.length === 3 ? parseInt(parts[2], 10) : 0;
646
+ if (Number.isNaN(hour) || Number.isNaN(minute) || Number.isNaN(second) || hour < 0 || hour > 23 || minute < 0 || minute > 59 || second < 0 || second > 59) return null;
647
+ return {
648
+ hour,
649
+ minute,
650
+ second
651
+ };
652
+ }
653
+ /**
654
+ * Formats a ParsedTime object into an ISOTimeString.
655
+ */
656
+ function formatISOTime(time, includeSeconds = false) {
657
+ const hh = time.hour.toString().padStart(2, "0");
658
+ const mm = time.minute.toString().padStart(2, "0");
659
+ if (includeSeconds) return `${hh}:${mm}:${time.second.toString().padStart(2, "0")}`;
660
+ return `${hh}:${mm}`;
661
+ }
662
+ /**
663
+ * Formats a time for display in 12-hour format.
664
+ * Example: "14:30" -> "2:30 PM"
665
+ */
666
+ function formatDisplayTime12h(time, includeSeconds = false) {
667
+ if (!time) return "";
668
+ const parsed = parseISOTime(time);
669
+ if (!parsed) return "";
670
+ const hour12 = parsed.hour === 0 ? 12 : parsed.hour > 12 ? parsed.hour - 12 : parsed.hour;
671
+ const meridiem = parsed.hour < 12 ? "AM" : "PM";
672
+ const mm = parsed.minute.toString().padStart(2, "0");
673
+ if (includeSeconds) return `${hour12}:${mm}:${parsed.second.toString().padStart(2, "0")} ${meridiem}`;
674
+ return `${hour12}:${mm} ${meridiem}`;
675
+ }
676
+ /**
677
+ * Formats a time for display in 24-hour format.
678
+ * Example: "14:30" -> "14:30"
679
+ */
680
+ function formatDisplayTime24h(time, includeSeconds = false) {
681
+ if (!time) return "";
682
+ const parsed = parseISOTime(time);
683
+ if (!parsed) return "";
684
+ const hh = parsed.hour.toString().padStart(2, "0");
685
+ const mm = parsed.minute.toString().padStart(2, "0");
686
+ if (includeSeconds) return `${hh}:${mm}:${parsed.second.toString().padStart(2, "0")}`;
687
+ return `${hh}:${mm}`;
688
+ }
689
+ /**
690
+ * Parses user input into an ISOTimeString.
691
+ * Accepts various formats:
692
+ * - "2:30 PM", "2:30pm", "2:30 pm"
693
+ * - "14:30", "1430"
694
+ * - "2pm", "2 PM"
695
+ */
696
+ function parseTimeInput(input, includeSeconds = false) {
697
+ if (!input) return null;
698
+ const trimmed = input.trim().toLowerCase();
699
+ const isPM = /p\.?m?\.?\s*$/i.test(trimmed);
700
+ const isAM = /a\.?m?\.?\s*$/i.test(trimmed);
701
+ const hasMeridiem = isPM || isAM;
702
+ const timeStr = trimmed.replace(/\s*[ap]\.?m?\.?\s*$/i, "").trim();
703
+ const convertHourTo24Hour = (hour) => {
704
+ if (!hasMeridiem) return hour;
705
+ if (hour < 1 || hour > 12) return null;
706
+ if (isPM && hour !== 12) return hour + 12;
707
+ if (isAM && hour === 12) return 0;
708
+ return hour;
709
+ };
710
+ if (/^\d{1,2}$/.test(timeStr)) {
711
+ const hour = parseInt(timeStr, 10);
712
+ if (hasMeridiem) {
713
+ const hour24 = convertHourTo24Hour(hour);
714
+ if (hour24 === null) return null;
715
+ return formatISOTime({
716
+ hour: hour24,
717
+ minute: 0,
718
+ second: 0
719
+ }, includeSeconds);
720
+ }
721
+ if (hour >= 0 && hour <= 23 && !hasMeridiem) return formatISOTime({
722
+ hour,
723
+ minute: 0,
724
+ second: 0
725
+ }, includeSeconds);
726
+ return null;
727
+ }
728
+ if (/^\d{4}$/.test(timeStr)) {
729
+ const hour = parseInt(timeStr.slice(0, 2), 10);
730
+ const minute = parseInt(timeStr.slice(2, 4), 10);
731
+ const hour24 = convertHourTo24Hour(hour);
732
+ if (hour24 !== null && hour24 >= 0 && hour24 <= 23 && minute >= 0 && minute <= 59) return formatISOTime({
733
+ hour: hour24,
734
+ minute,
735
+ second: 0
736
+ }, includeSeconds);
737
+ return null;
738
+ }
739
+ if (/^\d{6}$/.test(timeStr)) {
740
+ const hour = parseInt(timeStr.slice(0, 2), 10);
741
+ const minute = parseInt(timeStr.slice(2, 4), 10);
742
+ const second = parseInt(timeStr.slice(4, 6), 10);
743
+ const hour24 = convertHourTo24Hour(hour);
744
+ if (hour24 !== null && hour24 >= 0 && hour24 <= 23 && minute >= 0 && minute <= 59 && second >= 0 && second <= 59) return formatISOTime({
745
+ hour: hour24,
746
+ minute,
747
+ second
748
+ }, includeSeconds);
749
+ return null;
750
+ }
751
+ const colonParts = timeStr.split(":");
752
+ if (colonParts.length >= 2 && colonParts.length <= 3) {
753
+ let hour = parseInt(colonParts[0], 10);
754
+ const minute = parseInt(colonParts[1], 10);
755
+ const second = colonParts.length === 3 ? parseInt(colonParts[2], 10) : 0;
756
+ if (Number.isNaN(hour) || Number.isNaN(minute) || Number.isNaN(second)) return null;
757
+ if (minute < 0 || minute > 59 || second < 0 || second > 59) return null;
758
+ if (hasMeridiem) {
759
+ if (hour < 1 || hour > 12) return null;
760
+ if (isPM && hour !== 12) hour += 12;
761
+ if (isAM && hour === 12) hour = 0;
762
+ } else if (hour < 0 || hour > 23) return null;
763
+ return formatISOTime({
764
+ hour,
765
+ minute,
766
+ second
767
+ }, includeSeconds);
768
+ }
769
+ return null;
770
+ }
771
+ /**
772
+ * Compares two times. Returns:
773
+ * - negative if a < b
774
+ * - 0 if a === b
775
+ * - positive if a > b
776
+ */
777
+ function compareTime(a, b) {
778
+ if (!a && !b) return 0;
779
+ if (!a) return -1;
780
+ if (!b) return 1;
781
+ const parsedA = parseISOTime(a);
782
+ const parsedB = parseISOTime(b);
783
+ if (!parsedA && !parsedB) return 0;
784
+ if (!parsedA) return -1;
785
+ if (!parsedB) return 1;
786
+ return parsedA.hour * 3600 + parsedA.minute * 60 + parsedA.second - (parsedB.hour * 3600 + parsedB.minute * 60 + parsedB.second);
787
+ }
788
+ /**
789
+ * Clamps a time to a min/max range.
790
+ */
791
+ function clampTime(time, min, max, includeSeconds = false) {
792
+ if (!parseISOTime(time)) return time;
793
+ if (min && compareTime(time, min) < 0) {
794
+ const parsedMin = parseISOTime(min);
795
+ if (parsedMin) return formatISOTime(parsedMin, includeSeconds);
796
+ }
797
+ if (max && compareTime(time, max) > 0) {
798
+ const parsedMax = parseISOTime(max);
799
+ if (parsedMax) return formatISOTime(parsedMax, includeSeconds);
800
+ }
801
+ return time;
802
+ }
803
+ /**
804
+ * Adjusts a time by adding/subtracting minutes.
805
+ */
806
+ function adjustTime(time, deltaMinutes, includeSeconds = false) {
807
+ const parsed = parseISOTime(time);
808
+ if (!parsed) return time;
809
+ if (!Number.isFinite(deltaMinutes)) return time;
810
+ let totalMinutes = parsed.hour * 60 + parsed.minute + deltaMinutes;
811
+ totalMinutes = (totalMinutes % 1440 + 1440) % 1440;
812
+ return formatISOTime({
813
+ hour: Math.floor(totalMinutes / 60),
814
+ minute: totalMinutes % 60,
815
+ second: parsed.second
816
+ }, includeSeconds);
817
+ }
818
+ //#endregion
819
+ export { plainDateWeekFieldName as $, plainDateAddDays as A, plainDateIsAfter as B, DATE_FORMAT_SHORT_WITH_YEAR as C, formatSharedDate as D, SHARED_DATE_FORMAT_OPTIONS as E, plainDateFormat as F, plainDateMin as G, plainDateIsEqual as H, plainDateFromDate as I, plainDateSetStartOfWeek as J, plainDateSetEndOfWeekExclusive as K, plainDateFromISO as L, plainDateCreate as M, plainDateDayOfWeek as N, getDaysInMonth as O, plainDateDiffDays as P, plainDateToday as Q, plainDateFromInstant as R, DATE_FORMAT_SHORT_WITH_WEEKDAY as S, DATE_FORMAT_WITH_WEEKDAY as T, plainDateIsInRange as U, plainDateIsBefore as V, plainDateMax as W, plainDateToISO as X, plainDateToDate as Y, plainDateToInstant as Z, parseDateInput as _, formatDisplayTime12h as a, DATE_FORMAT_MONTH_YEAR as b, observeResize as c, getInputARIA as d, chainEventHandlers as et, joinAriaIDs as f, isLocaleDayFirst as g, normalizeDayOfWeek as h, createISOTimeString as i, plainDateAddMonths as j, getTimeZoneParts as k, unobserveResize as l, groupItems as m, clampTime as n, formatDisplayTime24h as o, getItemGroup as p, plainDateSetFirstOfMonth as q, compareTime as r, parseTimeInput as s, adjustTime as t, parseStyleKey as u, DATE_FORMAT_LONG as v, DATE_FORMAT_WEEKDAY_ONLY as w, DATE_FORMAT_SHORT as x, DATE_FORMAT_MONTH_ONLY as y, plainDateGetWeekNumber as z };