@neut/ui 0.0.17 → 0.0.18

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 (707) hide show
  1. package/dist/components/accordion/Accordion/Accordion.js +3 -0
  2. package/dist/components/accordion/Accordion/Accordion.js.map +1 -1
  3. package/dist/components/accordion/AccordionContent/AccordionContent.js +27 -21
  4. package/dist/components/accordion/AccordionContent/AccordionContent.js.map +1 -1
  5. package/dist/components/accordion/AccordionItem/AccordionItem.js +3 -0
  6. package/dist/components/accordion/AccordionItem/AccordionItem.js.map +1 -1
  7. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js +19 -18
  8. package/dist/components/accordion/AccordionTrigger/AccordionTrigger.js.map +1 -1
  9. package/dist/components/alert/Alert/Alert.js +8 -3
  10. package/dist/components/alert/Alert/Alert.js.map +1 -1
  11. package/dist/components/alert/AlertAction/AlertAction.js +8 -3
  12. package/dist/components/alert/AlertAction/AlertAction.js.map +1 -1
  13. package/dist/components/alert/AlertDescription/AlertDescription.js +8 -3
  14. package/dist/components/alert/AlertDescription/AlertDescription.js.map +1 -1
  15. package/dist/components/alert/AlertTitle/AlertTitle.js +8 -3
  16. package/dist/components/alert/AlertTitle/AlertTitle.js.map +1 -1
  17. package/dist/components/alert-dialog/AlertDialog/AlertDialog.d.ts +3 -1
  18. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js +6 -1
  19. package/dist/components/alert-dialog/AlertDialog/AlertDialog.js.map +1 -1
  20. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js +9 -7
  21. package/dist/components/alert-dialog/AlertDialogCancel/AlertDialogCancel.js.map +1 -1
  22. package/dist/components/alert-dialog/AlertDialogContent/AlertDialogContent.types.d.ts +9 -3
  23. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js +8 -3
  24. package/dist/components/alert-dialog/AlertDialogDescription/AlertDialogDescription.js.map +1 -1
  25. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js +8 -3
  26. package/dist/components/alert-dialog/AlertDialogFooter/AlertDialogFooter.js.map +1 -1
  27. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js +8 -3
  28. package/dist/components/alert-dialog/AlertDialogHeader/AlertDialogHeader.js.map +1 -1
  29. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js +8 -3
  30. package/dist/components/alert-dialog/AlertDialogMedia/AlertDialogMedia.js.map +1 -1
  31. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js +8 -3
  32. package/dist/components/alert-dialog/AlertDialogTitle/AlertDialogTitle.js.map +1 -1
  33. package/dist/components/aspect-ratio/AspectRatio.js +3 -0
  34. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  35. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js +15 -7
  36. package/dist/components/attachment/AttachmentTrigger/AttachmentTrigger.js.map +1 -1
  37. package/dist/components/avatar/Avatar/Avatar.context.d.ts +7 -0
  38. package/dist/components/avatar/Avatar/Avatar.context.js +1 -1
  39. package/dist/components/avatar/Avatar/Avatar.context.js.map +1 -1
  40. package/dist/components/avatar/Avatar/Avatar.js +7 -2
  41. package/dist/components/avatar/Avatar/Avatar.js.map +1 -1
  42. package/dist/components/avatar/AvatarBadge/AvatarBadge.js +8 -3
  43. package/dist/components/avatar/AvatarBadge/AvatarBadge.js.map +1 -1
  44. package/dist/components/avatar/AvatarFallback/AvatarFallback.js +10 -5
  45. package/dist/components/avatar/AvatarFallback/AvatarFallback.js.map +1 -1
  46. package/dist/components/avatar/AvatarGroup/AvatarGroup.js +8 -3
  47. package/dist/components/avatar/AvatarGroup/AvatarGroup.js.map +1 -1
  48. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js +8 -3
  49. package/dist/components/avatar/AvatarGroupCount/AvatarGroupCount.js.map +1 -1
  50. package/dist/components/avatar/AvatarImage/AvatarImage.js +19 -12
  51. package/dist/components/avatar/AvatarImage/AvatarImage.js.map +1 -1
  52. package/dist/components/badge/Badge.js +9 -4
  53. package/dist/components/badge/Badge.js.map +1 -1
  54. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js +8 -3
  55. package/dist/components/breadcrumb/BreadcrumbEllipsis/BreadcrumbEllipsis.js.map +1 -1
  56. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js +8 -3
  57. package/dist/components/breadcrumb/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
  58. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js +3 -0
  59. package/dist/components/breadcrumb/BreadcrumbLink/BreadcrumbLink.js.map +1 -1
  60. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js +8 -3
  61. package/dist/components/breadcrumb/BreadcrumbList/BreadcrumbList.js.map +1 -1
  62. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js +8 -3
  63. package/dist/components/breadcrumb/BreadcrumbPage/BreadcrumbPage.js.map +1 -1
  64. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js +8 -3
  65. package/dist/components/breadcrumb/BreadcrumbSeparator/BreadcrumbSeparator.js.map +1 -1
  66. package/dist/components/bubble/BubbleContent/BubbleContent.js +21 -10
  67. package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -1
  68. package/dist/components/button/Button.js +3 -0
  69. package/dist/components/button/Button.js.map +1 -1
  70. package/dist/components/button-group/ButtonGroup/ButtonGroup.js +3 -0
  71. package/dist/components/button-group/ButtonGroup/ButtonGroup.js.map +1 -1
  72. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js +16 -7
  73. package/dist/components/button-group/ButtonGroupText/ButtonGroupText.js.map +1 -1
  74. package/dist/components/calendar/Calendar/Calendar.d.ts +2 -3
  75. package/dist/components/calendar/Calendar/Calendar.js +89 -264
  76. package/dist/components/calendar/Calendar/Calendar.js.map +1 -1
  77. package/dist/components/calendar/Calendar/Calendar.options.d.ts +43 -0
  78. package/dist/components/calendar/Calendar/Calendar.options.js +38 -0
  79. package/dist/components/calendar/Calendar/Calendar.options.js.map +1 -0
  80. package/dist/components/calendar/Calendar/Calendar.selection.d.ts +16 -0
  81. package/dist/components/calendar/Calendar/Calendar.selection.js +50 -0
  82. package/dist/components/calendar/Calendar/Calendar.selection.js.map +1 -0
  83. package/dist/components/calendar/Calendar/Calendar.styles.d.ts +8 -0
  84. package/dist/components/calendar/Calendar/Calendar.styles.js +32 -0
  85. package/dist/components/calendar/Calendar/Calendar.styles.js.map +1 -0
  86. package/dist/components/calendar/Calendar/Calendar.utils.d.ts +3 -1
  87. package/dist/components/calendar/Calendar/Calendar.utils.js +4 -1
  88. package/dist/components/calendar/Calendar/Calendar.utils.js.map +1 -1
  89. package/dist/components/calendar/Calendar/CalendarDay.d.ts +28 -0
  90. package/dist/components/calendar/Calendar/CalendarDay.js +41 -0
  91. package/dist/components/calendar/Calendar/CalendarDay.js.map +1 -0
  92. package/dist/components/calendar/Calendar/CalendarMonth.d.ts +35 -0
  93. package/dist/components/calendar/Calendar/CalendarMonth.js +127 -0
  94. package/dist/components/calendar/Calendar/CalendarMonth.js.map +1 -0
  95. package/dist/components/calendar/Calendar/CalendarMonthCaption.d.ts +22 -0
  96. package/dist/components/calendar/Calendar/CalendarMonthCaption.js +103 -0
  97. package/dist/components/calendar/Calendar/CalendarMonthCaption.js.map +1 -0
  98. package/dist/components/calendar/index.js +3 -2
  99. package/dist/components/card/Card/Card.js +3 -0
  100. package/dist/components/card/Card/Card.js.map +1 -1
  101. package/dist/components/card/CardAction/CardAction.js +8 -3
  102. package/dist/components/card/CardAction/CardAction.js.map +1 -1
  103. package/dist/components/card/CardContent/CardContent.js +8 -3
  104. package/dist/components/card/CardContent/CardContent.js.map +1 -1
  105. package/dist/components/card/CardDescription/CardDescription.js +8 -3
  106. package/dist/components/card/CardDescription/CardDescription.js.map +1 -1
  107. package/dist/components/card/CardFooter/CardFooter.js +8 -3
  108. package/dist/components/card/CardFooter/CardFooter.js.map +1 -1
  109. package/dist/components/card/CardHeader/CardHeader.js +8 -3
  110. package/dist/components/card/CardHeader/CardHeader.js.map +1 -1
  111. package/dist/components/card/CardTitle/CardTitle.js +8 -3
  112. package/dist/components/card/CardTitle/CardTitle.js.map +1 -1
  113. package/dist/components/carousel/Carousel/Carousel.context.js +1 -1
  114. package/dist/components/carousel/Carousel/Carousel.context.js.map +1 -1
  115. package/dist/components/carousel/Carousel/Carousel.js +19 -12
  116. package/dist/components/carousel/Carousel/Carousel.js.map +1 -1
  117. package/dist/components/carousel/Carousel/useKeyboardNavigation.d.ts +11 -1
  118. package/dist/components/carousel/Carousel/useKeyboardNavigation.js +5 -4
  119. package/dist/components/carousel/Carousel/useKeyboardNavigation.js.map +1 -1
  120. package/dist/components/carousel/CarouselContent/CarouselContent.js +8 -3
  121. package/dist/components/carousel/CarouselContent/CarouselContent.js.map +1 -1
  122. package/dist/components/carousel/CarouselNext/CarouselNext.js +29 -16
  123. package/dist/components/carousel/CarouselNext/CarouselNext.js.map +1 -1
  124. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js +29 -16
  125. package/dist/components/carousel/CarouselPrevious/CarouselPrevious.js.map +1 -1
  126. package/dist/components/checkbox/Checkbox/Checkbox.js +32 -25
  127. package/dist/components/checkbox/Checkbox/Checkbox.js.map +1 -1
  128. package/dist/components/collapsible/Collapsible/Collapsible.context.js +1 -1
  129. package/dist/components/collapsible/Collapsible/Collapsible.context.js.map +1 -1
  130. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js +13 -12
  131. package/dist/components/collapsible/CollapsibleTrigger/CollapsibleTrigger.js.map +1 -1
  132. package/dist/components/combobox/Combobox/Combobox.js +52 -52
  133. package/dist/components/combobox/Combobox/Combobox.js.map +1 -1
  134. package/dist/components/combobox/Combobox/Combobox.types.d.ts +15 -6
  135. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js +7 -3
  136. package/dist/components/combobox/ComboboxChipsInput/ComboboxChipsInput.js.map +1 -1
  137. package/dist/components/combobox/ComboboxClear/ComboboxClear.js +1 -1
  138. package/dist/components/combobox/ComboboxClear/ComboboxClear.js.map +1 -1
  139. package/dist/components/combobox/ComboboxInput/ComboboxInput.js +26 -10
  140. package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
  141. package/dist/components/combobox/ComboboxItem/ComboboxItem.js +6 -5
  142. package/dist/components/combobox/ComboboxItem/ComboboxItem.js.map +1 -1
  143. package/dist/components/combobox/ComboboxList/ComboboxList.js +17 -11
  144. package/dist/components/combobox/ComboboxList/ComboboxList.js.map +1 -1
  145. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js +8 -1
  146. package/dist/components/combobox/ComboboxTrigger/ComboboxTrigger.js.map +1 -1
  147. package/dist/components/context-menu/ContextMenu/ContextMenu.js +10 -8
  148. package/dist/components/context-menu/ContextMenu/ContextMenu.js.map +1 -1
  149. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.d.ts +33 -0
  150. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js +41 -0
  151. package/dist/components/context-menu/ContextMenuContent/context-menu.highlight.js.map +1 -0
  152. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.d.ts +25 -0
  153. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js +20 -0
  154. package/dist/components/context-menu/ContextMenuContent/context-menu.popup-items.js.map +1 -0
  155. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.d.ts +31 -0
  156. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js +39 -0
  157. package/dist/components/context-menu/ContextMenuContent/context-menu.positioner.js.map +1 -0
  158. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js +70 -136
  159. package/dist/components/context-menu/ContextMenuContent/useContextMenuContent.js.map +1 -1
  160. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js +2 -1
  161. package/dist/components/context-menu/ContextMenuSub/ContextMenuSub.js.map +1 -1
  162. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js +20 -10
  163. package/dist/components/context-menu/ContextMenuTrigger/ContextMenuTrigger.js.map +1 -1
  164. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.d.ts +24 -0
  165. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js +26 -0
  166. package/dist/components/context-menu/ContextMenuTrigger/context-menu.long-press.js.map +1 -0
  167. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.d.ts +35 -0
  168. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js +17 -0
  169. package/dist/components/context-menu/ContextMenuTrigger/context-menu.trigger.utils.js.map +1 -0
  170. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.d.ts +9 -11
  171. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js +36 -33
  172. package/dist/components/context-menu/ContextMenuTrigger/useContextMenuTrigger.js.map +1 -1
  173. package/dist/components/context-menu/context-menu.keyboard.d.ts +29 -0
  174. package/dist/components/context-menu/context-menu.keyboard.js +52 -0
  175. package/dist/components/context-menu/context-menu.keyboard.js.map +1 -0
  176. package/dist/components/context-menu/context-menu.typeahead.d.ts +27 -0
  177. package/dist/components/context-menu/context-menu.typeahead.js +19 -0
  178. package/dist/components/context-menu/context-menu.typeahead.js.map +1 -0
  179. package/dist/components/context-menu/context-menu.utils.d.ts +5 -2
  180. package/dist/components/context-menu/context-menu.utils.js +17 -39
  181. package/dist/components/context-menu/context-menu.utils.js.map +1 -1
  182. package/dist/components/date-picker/DatePicker/DatePicker.js +6 -0
  183. package/dist/components/date-picker/DatePicker/DatePicker.js.map +1 -1
  184. package/dist/components/dialog/Dialog/Dialog.context.js +1 -1
  185. package/dist/components/dialog/Dialog/Dialog.context.js.map +1 -1
  186. package/dist/components/dialog/Dialog/Dialog.js +24 -15
  187. package/dist/components/dialog/Dialog/Dialog.js.map +1 -1
  188. package/dist/components/dialog/Dialog/Dialog.types.d.ts +5 -0
  189. package/dist/components/dialog/DialogClose/DialogClose.js +20 -19
  190. package/dist/components/dialog/DialogClose/DialogClose.js.map +1 -1
  191. package/dist/components/dialog/DialogContent/DialogContent.context.js +1 -1
  192. package/dist/components/dialog/DialogContent/DialogContent.context.js.map +1 -1
  193. package/dist/components/dialog/DialogDescription/DialogDescription.js +8 -3
  194. package/dist/components/dialog/DialogDescription/DialogDescription.js.map +1 -1
  195. package/dist/components/dialog/DialogFooter/DialogFooter.js +8 -3
  196. package/dist/components/dialog/DialogFooter/DialogFooter.js.map +1 -1
  197. package/dist/components/dialog/DialogHeader/DialogHeader.js +8 -3
  198. package/dist/components/dialog/DialogHeader/DialogHeader.js.map +1 -1
  199. package/dist/components/dialog/DialogOverlay/DialogOverlay.js +3 -0
  200. package/dist/components/dialog/DialogOverlay/DialogOverlay.js.map +1 -1
  201. package/dist/components/dialog/DialogSurface/DialogSurface.js +34 -26
  202. package/dist/components/dialog/DialogSurface/DialogSurface.js.map +1 -1
  203. package/dist/components/dialog/DialogTitle/DialogTitle.js +8 -3
  204. package/dist/components/dialog/DialogTitle/DialogTitle.js.map +1 -1
  205. package/dist/components/drawer/Drawer/Drawer.js +1 -1
  206. package/dist/components/drawer/Drawer/Drawer.js.map +1 -1
  207. package/dist/components/drawer/Drawer/create-change-event-details.js +4 -20
  208. package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -1
  209. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.d.ts +32 -0
  210. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js +36 -0
  211. package/dist/components/drawer/DrawerContent/drawer-swipe.utils.js.map +1 -0
  212. package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +3 -0
  213. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +22 -42
  214. package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -1
  215. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +1 -1
  216. package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -1
  217. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js +7 -7
  218. package/dist/components/dropdown-menu/DropdownMenuTrigger/DropdownMenuTrigger.js.map +1 -1
  219. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.d.ts +7 -1
  220. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js +10 -10
  221. package/dist/components/dropdown-menu/DropdownMenuTrigger/useDropdownMenuTrigger.js.map +1 -1
  222. package/dist/components/field/Field/Field.js +3 -0
  223. package/dist/components/field/Field/Field.js.map +1 -1
  224. package/dist/components/field/FieldContent/FieldContent.js +8 -3
  225. package/dist/components/field/FieldContent/FieldContent.js.map +1 -1
  226. package/dist/components/field/FieldDescription/FieldDescription.js +8 -3
  227. package/dist/components/field/FieldDescription/FieldDescription.js.map +1 -1
  228. package/dist/components/field/FieldError/FieldError.js +8 -3
  229. package/dist/components/field/FieldError/FieldError.js.map +1 -1
  230. package/dist/components/field/FieldGroup/FieldGroup.js +8 -3
  231. package/dist/components/field/FieldGroup/FieldGroup.js.map +1 -1
  232. package/dist/components/field/FieldLabel/FieldLabel.js +3 -0
  233. package/dist/components/field/FieldLabel/FieldLabel.js.map +1 -1
  234. package/dist/components/field/FieldLegend/FieldLegend.js +3 -0
  235. package/dist/components/field/FieldLegend/FieldLegend.js.map +1 -1
  236. package/dist/components/field/FieldSeparator/FieldSeparator.js +3 -0
  237. package/dist/components/field/FieldSeparator/FieldSeparator.js.map +1 -1
  238. package/dist/components/field/FieldSet/FieldSet.js +8 -3
  239. package/dist/components/field/FieldSet/FieldSet.js.map +1 -1
  240. package/dist/components/field/FieldTitle/FieldTitle.js +8 -3
  241. package/dist/components/field/FieldTitle/FieldTitle.js.map +1 -1
  242. package/dist/components/image/Image.utils.d.ts +14 -16
  243. package/dist/components/image/Image.utils.js +146 -190
  244. package/dist/components/image/Image.utils.js.map +1 -1
  245. package/dist/components/image/ImageElement.js +31 -27
  246. package/dist/components/image/ImageElement.js.map +1 -1
  247. package/dist/components/image/lib/blur.d.ts +31 -0
  248. package/dist/components/image/lib/blur.js +24 -0
  249. package/dist/components/image/lib/blur.js.map +1 -0
  250. package/dist/components/image/lib/dev-checks.d.ts +52 -0
  251. package/dist/components/image/lib/handle-loading.d.ts +13 -0
  252. package/dist/components/image/lib/handle-loading.js +20 -0
  253. package/dist/components/image/lib/handle-loading.js.map +1 -0
  254. package/dist/components/image/lib/loader.d.ts +39 -0
  255. package/dist/components/image/lib/loader.js +57 -0
  256. package/dist/components/image/lib/loader.js.map +1 -0
  257. package/dist/components/image/lib/static-import.d.ts +14 -0
  258. package/dist/components/image/lib/static-import.js +17 -0
  259. package/dist/components/image/lib/static-import.js.map +1 -0
  260. package/dist/components/input-group/InputGroup/InputGroup.js +8 -3
  261. package/dist/components/input-group/InputGroup/InputGroup.js.map +1 -1
  262. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js +3 -0
  263. package/dist/components/input-group/InputGroupAddon/InputGroupAddon.js.map +1 -1
  264. package/dist/components/input-group/InputGroupButton/InputGroupButton.js +3 -0
  265. package/dist/components/input-group/InputGroupButton/InputGroupButton.js.map +1 -1
  266. package/dist/components/input-group/InputGroupInput/InputGroupInput.js +3 -0
  267. package/dist/components/input-group/InputGroupInput/InputGroupInput.js.map +1 -1
  268. package/dist/components/input-group/InputGroupText/InputGroupText.js +8 -3
  269. package/dist/components/input-group/InputGroupText/InputGroupText.js.map +1 -1
  270. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js +3 -0
  271. package/dist/components/input-group/InputGroupTextarea/InputGroupTextarea.js.map +1 -1
  272. package/dist/components/item/Item/Item.js +9 -0
  273. package/dist/components/item/Item/Item.js.map +1 -1
  274. package/dist/components/item/ItemActions/ItemActions.js +8 -3
  275. package/dist/components/item/ItemActions/ItemActions.js.map +1 -1
  276. package/dist/components/item/ItemContent/ItemContent.js +8 -3
  277. package/dist/components/item/ItemContent/ItemContent.js.map +1 -1
  278. package/dist/components/item/ItemDescription/ItemDescription.js +8 -3
  279. package/dist/components/item/ItemDescription/ItemDescription.js.map +1 -1
  280. package/dist/components/item/ItemFooter/ItemFooter.js +8 -3
  281. package/dist/components/item/ItemFooter/ItemFooter.js.map +1 -1
  282. package/dist/components/item/ItemGroup/ItemGroup.js +8 -3
  283. package/dist/components/item/ItemGroup/ItemGroup.js.map +1 -1
  284. package/dist/components/item/ItemHeader/ItemHeader.js +8 -3
  285. package/dist/components/item/ItemHeader/ItemHeader.js.map +1 -1
  286. package/dist/components/item/ItemMedia/ItemMedia.js +3 -0
  287. package/dist/components/item/ItemMedia/ItemMedia.js.map +1 -1
  288. package/dist/components/item/ItemSeparator/ItemSeparator.js +3 -0
  289. package/dist/components/item/ItemSeparator/ItemSeparator.js.map +1 -1
  290. package/dist/components/item/ItemTitle/ItemTitle.js +8 -3
  291. package/dist/components/item/ItemTitle/ItemTitle.js.map +1 -1
  292. package/dist/components/kbd/Kbd.js +16 -6
  293. package/dist/components/kbd/Kbd.js.map +1 -1
  294. package/dist/components/label/Label.js +3 -0
  295. package/dist/components/label/Label.js.map +1 -1
  296. package/dist/components/marker/Marker/Marker.styles.d.ts +1 -1
  297. package/dist/components/message-scroller/message-scroller.anchoring.d.ts +60 -0
  298. package/dist/components/message-scroller/message-scroller.anchoring.js +139 -0
  299. package/dist/components/message-scroller/message-scroller.anchoring.js.map +1 -0
  300. package/dist/components/message-scroller/message-scroller.anchors.d.ts +12 -0
  301. package/dist/components/message-scroller/message-scroller.anchors.js +23 -0
  302. package/dist/components/message-scroller/message-scroller.anchors.js.map +1 -0
  303. package/dist/components/message-scroller/message-scroller.commands.d.ts +43 -0
  304. package/dist/components/message-scroller/message-scroller.commands.js +51 -0
  305. package/dist/components/message-scroller/message-scroller.commands.js.map +1 -0
  306. package/dist/components/message-scroller/message-scroller.dom-measure.d.ts +29 -0
  307. package/dist/components/message-scroller/message-scroller.dom-measure.js +37 -0
  308. package/dist/components/message-scroller/message-scroller.dom-measure.js.map +1 -0
  309. package/dist/components/message-scroller/message-scroller.measure.d.ts +27 -0
  310. package/dist/components/message-scroller/message-scroller.measure.js +21 -0
  311. package/dist/components/message-scroller/message-scroller.measure.js.map +1 -0
  312. package/dist/components/message-scroller/message-scroller.scroll-state.d.ts +54 -0
  313. package/dist/components/message-scroller/message-scroller.scroll-state.js +74 -0
  314. package/dist/components/message-scroller/message-scroller.scroll-state.js.map +1 -0
  315. package/dist/components/message-scroller/message-scroller.scroll-target.d.ts +27 -0
  316. package/dist/components/message-scroller/message-scroller.scroll-target.js +33 -0
  317. package/dist/components/message-scroller/message-scroller.scroll-target.js.map +1 -0
  318. package/dist/components/message-scroller/message-scroller.utils.d.ts +7 -0
  319. package/dist/components/message-scroller/message-scroller.utils.js +3 -2
  320. package/dist/components/message-scroller/message-scroller.utils.js.map +1 -1
  321. package/dist/components/message-scroller/message-scroller.visibility.d.ts +43 -0
  322. package/dist/components/message-scroller/message-scroller.visibility.js +82 -0
  323. package/dist/components/message-scroller/message-scroller.visibility.js.map +1 -0
  324. package/dist/components/message-scroller/useMessageScrollerEngine.js +87 -337
  325. package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -1
  326. package/dist/components/number-input/NumberInput/NumberInput.js +21 -19
  327. package/dist/components/number-input/NumberInput/NumberInput.js.map +1 -1
  328. package/dist/components/number-input/NumberInput/NumberInput.utils.d.ts +6 -2
  329. package/dist/components/number-input/NumberInput/NumberInput.utils.js +1 -3
  330. package/dist/components/number-input/NumberInput/NumberInput.utils.js.map +1 -1
  331. package/dist/components/number-input/NumberInput/create-change-event-details.d.ts +1 -2
  332. package/dist/components/number-input/NumberInput/create-change-event-details.js +4 -20
  333. package/dist/components/number-input/NumberInput/create-change-event-details.js.map +1 -1
  334. package/dist/components/pagination/Pagination/Pagination.js +8 -3
  335. package/dist/components/pagination/Pagination/Pagination.js.map +1 -1
  336. package/dist/components/pagination/PaginationContent/PaginationContent.js +8 -3
  337. package/dist/components/pagination/PaginationContent/PaginationContent.js.map +1 -1
  338. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js +8 -3
  339. package/dist/components/pagination/PaginationEllipsis/PaginationEllipsis.js.map +1 -1
  340. package/dist/components/pagination/PaginationLink/PaginationLink.js +3 -0
  341. package/dist/components/pagination/PaginationLink/PaginationLink.js.map +1 -1
  342. package/dist/components/pagination/PaginationNext/PaginationNext.js +3 -0
  343. package/dist/components/pagination/PaginationNext/PaginationNext.js.map +1 -1
  344. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js +3 -0
  345. package/dist/components/pagination/PaginationPrevious/PaginationPrevious.js.map +1 -1
  346. package/dist/components/popover/PopoverContent/PopoverContent.js +3 -0
  347. package/dist/components/popover/PopoverContent/PopoverContent.js.map +1 -1
  348. package/dist/components/progress/Progress/Progress.context.js +1 -1
  349. package/dist/components/progress/Progress/Progress.context.js.map +1 -1
  350. package/dist/components/progress/Progress/Progress.js +3 -0
  351. package/dist/components/progress/Progress/Progress.js.map +1 -1
  352. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js +3 -0
  353. package/dist/components/progress/ProgressIndicator/ProgressIndicator.js.map +1 -1
  354. package/dist/components/progress/ProgressLabel/ProgressLabel.js +8 -3
  355. package/dist/components/progress/ProgressLabel/ProgressLabel.js.map +1 -1
  356. package/dist/components/progress/ProgressTrack/ProgressTrack.js +3 -0
  357. package/dist/components/progress/ProgressTrack/ProgressTrack.js.map +1 -1
  358. package/dist/components/progress/ProgressValue/ProgressValue.js +8 -3
  359. package/dist/components/progress/ProgressValue/ProgressValue.js.map +1 -1
  360. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.d.ts +48 -0
  361. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js +23 -0
  362. package/dist/components/questionnaire/QuestionnaireChoice/questionnaire-choice.utils.js.map +1 -0
  363. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +62 -49
  364. package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -1
  365. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +4 -1
  366. package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -1
  367. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +1 -2
  368. package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -1
  369. package/dist/components/questionnaire/questionnaire.answers.d.ts +42 -0
  370. package/dist/components/questionnaire/questionnaire.answers.js +62 -0
  371. package/dist/components/questionnaire/questionnaire.answers.js.map +1 -0
  372. package/dist/components/questionnaire/questionnaire.aria.d.ts +34 -0
  373. package/dist/components/questionnaire/questionnaire.aria.js +28 -0
  374. package/dist/components/questionnaire/questionnaire.aria.js.map +1 -0
  375. package/dist/components/questionnaire/questionnaire.dom-watch.d.ts +9 -0
  376. package/dist/components/questionnaire/questionnaire.dom-watch.js +18 -0
  377. package/dist/components/questionnaire/questionnaire.dom-watch.js.map +1 -0
  378. package/dist/components/questionnaire/questionnaire.focus.d.ts +26 -0
  379. package/dist/components/questionnaire/questionnaire.focus.js +19 -0
  380. package/dist/components/questionnaire/questionnaire.focus.js.map +1 -0
  381. package/dist/components/questionnaire/questionnaire.item-view.d.ts +50 -0
  382. package/dist/components/questionnaire/questionnaire.item-view.js +36 -0
  383. package/dist/components/questionnaire/questionnaire.item-view.js.map +1 -0
  384. package/dist/components/questionnaire/questionnaire.keys.d.ts +29 -0
  385. package/dist/components/questionnaire/questionnaire.keys.js +34 -0
  386. package/dist/components/questionnaire/questionnaire.keys.js.map +1 -0
  387. package/dist/components/questionnaire/questionnaire.registry.d.ts +21 -0
  388. package/dist/components/questionnaire/questionnaire.registry.js +15 -0
  389. package/dist/components/questionnaire/questionnaire.registry.js.map +1 -0
  390. package/dist/components/questionnaire/questionnaire.shortcuts.d.ts +24 -0
  391. package/dist/components/questionnaire/questionnaire.shortcuts.js +31 -0
  392. package/dist/components/questionnaire/questionnaire.shortcuts.js.map +1 -0
  393. package/dist/components/questionnaire/questionnaire.utils.d.ts +17 -1
  394. package/dist/components/questionnaire/questionnaire.utils.js +5 -2
  395. package/dist/components/questionnaire/questionnaire.utils.js.map +1 -1
  396. package/dist/components/questionnaire/questionnaire.validation.d.ts +43 -0
  397. package/dist/components/questionnaire/questionnaire.validation.js +17 -0
  398. package/dist/components/questionnaire/questionnaire.validation.js.map +1 -0
  399. package/dist/components/questionnaire/useQuestionnaireItem.d.ts +0 -2
  400. package/dist/components/questionnaire/useQuestionnaireItem.js +83 -121
  401. package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -1
  402. package/dist/components/questionnaire/useQuestionnaireRoot.js +78 -99
  403. package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -1
  404. package/dist/components/radio-group/RadioGroup/RadioGroup.js +3 -0
  405. package/dist/components/radio-group/RadioGroup/RadioGroup.js.map +1 -1
  406. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js +3 -0
  407. package/dist/components/radio-group/RadioGroupItem/RadioGroupItem.js.map +1 -1
  408. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.d.ts +37 -0
  409. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js +37 -0
  410. package/dist/components/resizable/ResizableHandle/resizable.handle-drag.js.map +1 -0
  411. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.d.ts +24 -0
  412. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js +36 -0
  413. package/dist/components/resizable/ResizableHandle/resizable.handle-keys.js.map +1 -0
  414. package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +3 -4
  415. package/dist/components/resizable/ResizableHandle/useResizableHandle.js +30 -63
  416. package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -1
  417. package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +4 -2
  418. package/dist/components/resizable/ResizablePanel/ResizablePanel.js +23 -50
  419. package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -1
  420. package/dist/components/resizable/ResizablePanel/useResizablePanel.d.ts +30 -0
  421. package/dist/components/resizable/ResizablePanel/useResizablePanel.js +37 -0
  422. package/dist/components/resizable/ResizablePanel/useResizablePanel.js.map +1 -0
  423. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +4 -1
  424. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +10 -17
  425. package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -1
  426. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.d.ts +11 -0
  427. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js +17 -0
  428. package/dist/components/resizable/ResizablePanelGroup/useDragCursor.js.map +1 -0
  429. package/dist/components/resizable/resizable.collapse.d.ts +27 -0
  430. package/dist/components/resizable/resizable.collapse.js +24 -0
  431. package/dist/components/resizable/resizable.collapse.js.map +1 -0
  432. package/dist/components/resizable/resizable.commands.d.ts +32 -0
  433. package/dist/components/resizable/resizable.commands.js +40 -0
  434. package/dist/components/resizable/resizable.commands.js.map +1 -0
  435. package/dist/components/resizable/resizable.constraints.d.ts +23 -0
  436. package/dist/components/resizable/resizable.constraints.js +32 -0
  437. package/dist/components/resizable/resizable.constraints.js.map +1 -0
  438. package/dist/components/resizable/resizable.lifecycle.d.ts +35 -0
  439. package/dist/components/resizable/resizable.lifecycle.js +32 -0
  440. package/dist/components/resizable/resizable.lifecycle.js.map +1 -0
  441. package/dist/components/resizable/resizable.registry.d.ts +31 -0
  442. package/dist/components/resizable/resizable.registry.js +38 -0
  443. package/dist/components/resizable/resizable.registry.js.map +1 -0
  444. package/dist/components/resizable/resizable.reporting.d.ts +36 -0
  445. package/dist/components/resizable/resizable.reporting.js +33 -0
  446. package/dist/components/resizable/resizable.reporting.js.map +1 -0
  447. package/dist/components/resizable/resizable.resize.d.ts +47 -0
  448. package/dist/components/resizable/resizable.resize.js +28 -0
  449. package/dist/components/resizable/resizable.resize.js.map +1 -0
  450. package/dist/components/resizable/resizable.sizes.d.ts +31 -0
  451. package/dist/components/resizable/resizable.sizes.js +46 -0
  452. package/dist/components/resizable/resizable.sizes.js.map +1 -0
  453. package/dist/components/resizable/resizable.storage.d.ts +17 -0
  454. package/dist/components/resizable/resizable.storage.js +29 -0
  455. package/dist/components/resizable/resizable.storage.js.map +1 -0
  456. package/dist/components/resizable/resizable.utils.d.ts +10 -3
  457. package/dist/components/resizable/resizable.utils.js +16 -10
  458. package/dist/components/resizable/resizable.utils.js.map +1 -1
  459. package/dist/components/resizable/useResizablePanelGroup.js +62 -164
  460. package/dist/components/resizable/useResizablePanelGroup.js.map +1 -1
  461. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js +1 -1
  462. package/dist/components/scroll-area/ScrollArea/ScrollArea.context.js.map +1 -1
  463. package/dist/components/scroll-area/ScrollArea/ScrollArea.d.ts +9 -0
  464. package/dist/components/scroll-area/ScrollArea/ScrollArea.js +28 -39
  465. package/dist/components/scroll-area/ScrollArea/ScrollArea.js.map +1 -1
  466. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js +3 -3
  467. package/dist/components/scroll-area/ScrollArea/ScrollArea.utils.js.map +1 -1
  468. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.d.ts +22 -0
  469. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js +34 -0
  470. package/dist/components/scroll-area/ScrollArea/useScrollAreaMetrics.js.map +1 -0
  471. package/dist/components/scroll-area/ScrollBar/ScrollBar.d.ts +8 -0
  472. package/dist/components/scroll-area/ScrollBar/ScrollBar.js +38 -71
  473. package/dist/components/scroll-area/ScrollBar/ScrollBar.js.map +1 -1
  474. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.d.ts +56 -0
  475. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js +61 -0
  476. package/dist/components/scroll-area/ScrollBar/ScrollBar.utils.js.map +1 -0
  477. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.d.ts +25 -0
  478. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js +26 -0
  479. package/dist/components/scroll-area/ScrollBar/scroll-bar.thumb-drag.js.map +1 -0
  480. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.d.ts +19 -0
  481. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js +37 -0
  482. package/dist/components/scroll-area/ScrollBar/useScrollBarInteraction.js.map +1 -0
  483. package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +5 -7
  484. package/dist/components/scroll-arrows/ScrollArrowButton.js +14 -44
  485. package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
  486. package/dist/components/scroll-arrows/ScrollArrows.d.ts +4 -3
  487. package/dist/components/scroll-arrows/ScrollArrows.js +16 -22
  488. package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
  489. package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +7 -7
  490. package/dist/components/scroll-arrows/useHoverScroll.d.ts +29 -0
  491. package/dist/components/scroll-arrows/useHoverScroll.js +39 -0
  492. package/dist/components/scroll-arrows/useHoverScroll.js.map +1 -0
  493. package/dist/components/select/SelectContent/useSelectContent.js +3 -3
  494. package/dist/components/select/SelectGroup/SelectGroup.d.ts +8 -2
  495. package/dist/components/select/SelectGroup/SelectGroup.js +20 -6
  496. package/dist/components/select/SelectGroup/SelectGroup.js.map +1 -1
  497. package/dist/components/select/SelectGroup/SelectGroup.types.d.ts +9 -0
  498. package/dist/components/select/SelectGroup/index.d.ts +1 -0
  499. package/dist/components/select/SelectTrigger/SelectTrigger.js.map +1 -1
  500. package/dist/components/select/SelectTrigger/useSelectTrigger.js +1 -1
  501. package/dist/components/select/SelectTrigger/useSelectTrigger.js.map +1 -1
  502. package/dist/components/separator/Separator.js +3 -0
  503. package/dist/components/separator/Separator.js.map +1 -1
  504. package/dist/components/sheet/SheetClose/SheetClose.js +18 -17
  505. package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -1
  506. package/dist/components/sidebar/Sidebar/Sidebar.js +14 -6
  507. package/dist/components/sidebar/Sidebar/Sidebar.js.map +1 -1
  508. package/dist/components/sidebar/SidebarContent/SidebarContent.js +8 -3
  509. package/dist/components/sidebar/SidebarContent/SidebarContent.js.map +1 -1
  510. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js +8 -3
  511. package/dist/components/sidebar/SidebarFooter/SidebarFooter.js.map +1 -1
  512. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js +8 -3
  513. package/dist/components/sidebar/SidebarGroup/SidebarGroup.js.map +1 -1
  514. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js +3 -0
  515. package/dist/components/sidebar/SidebarGroupAction/SidebarGroupAction.js.map +1 -1
  516. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js +8 -3
  517. package/dist/components/sidebar/SidebarGroupContent/SidebarGroupContent.js.map +1 -1
  518. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js +3 -0
  519. package/dist/components/sidebar/SidebarGroupLabel/SidebarGroupLabel.js.map +1 -1
  520. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js +8 -3
  521. package/dist/components/sidebar/SidebarHeader/SidebarHeader.js.map +1 -1
  522. package/dist/components/sidebar/SidebarInput/SidebarInput.js +3 -0
  523. package/dist/components/sidebar/SidebarInput/SidebarInput.js.map +1 -1
  524. package/dist/components/sidebar/SidebarInset/SidebarInset.js +8 -3
  525. package/dist/components/sidebar/SidebarInset/SidebarInset.js.map +1 -1
  526. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js +8 -3
  527. package/dist/components/sidebar/SidebarMenu/SidebarMenu.js.map +1 -1
  528. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js +8 -3
  529. package/dist/components/sidebar/SidebarMenuBadge/SidebarMenuBadge.js.map +1 -1
  530. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js +6 -0
  531. package/dist/components/sidebar/SidebarMenuButton/SidebarMenuButton.js.map +1 -1
  532. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js +8 -3
  533. package/dist/components/sidebar/SidebarMenuItem/SidebarMenuItem.js.map +1 -1
  534. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js +8 -3
  535. package/dist/components/sidebar/SidebarMenuSkeleton/SidebarMenuSkeleton.js.map +1 -1
  536. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js +8 -3
  537. package/dist/components/sidebar/SidebarMenuSub/SidebarMenuSub.js.map +1 -1
  538. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js +3 -0
  539. package/dist/components/sidebar/SidebarMenuSubButton/SidebarMenuSubButton.js.map +1 -1
  540. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js +8 -3
  541. package/dist/components/sidebar/SidebarMenuSubItem/SidebarMenuSubItem.js.map +1 -1
  542. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js +1 -1
  543. package/dist/components/sidebar/SidebarProvider/SidebarProvider.context.js.map +1 -1
  544. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js +30 -27
  545. package/dist/components/sidebar/SidebarProvider/SidebarProvider.js.map +1 -1
  546. package/dist/components/sidebar/SidebarProvider/useIsMobile.d.ts +10 -0
  547. package/dist/components/sidebar/SidebarProvider/useIsMobile.js +14 -0
  548. package/dist/components/sidebar/SidebarProvider/useIsMobile.js.map +1 -0
  549. package/dist/components/sidebar/SidebarRail/SidebarRail.js +8 -3
  550. package/dist/components/sidebar/SidebarRail/SidebarRail.js.map +1 -1
  551. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js +3 -0
  552. package/dist/components/sidebar/SidebarSeparator/SidebarSeparator.js.map +1 -1
  553. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js +3 -0
  554. package/dist/components/sidebar/SidebarTrigger/SidebarTrigger.js.map +1 -1
  555. package/dist/components/skeleton/Skeleton.js +8 -3
  556. package/dist/components/skeleton/Skeleton.js.map +1 -1
  557. package/dist/components/slider/Slider/Slider.context.js +1 -1
  558. package/dist/components/slider/Slider/Slider.context.js.map +1 -1
  559. package/dist/components/slider/Slider/Slider.js +3 -0
  560. package/dist/components/slider/Slider/Slider.js.map +1 -1
  561. package/dist/components/slider/SliderControl/SliderControl.js +4 -1
  562. package/dist/components/slider/SliderControl/SliderControl.js.map +1 -1
  563. package/dist/components/slider/SliderIndicator/SliderIndicator.js +3 -0
  564. package/dist/components/slider/SliderIndicator/SliderIndicator.js.map +1 -1
  565. package/dist/components/slider/SliderThumb/SliderThumb.js +18 -3
  566. package/dist/components/slider/SliderThumb/SliderThumb.js.map +1 -1
  567. package/dist/components/slider/SliderThumb/useSliderThumb.d.ts +1 -0
  568. package/dist/components/slider/SliderThumb/useSliderThumb.js +3 -2
  569. package/dist/components/slider/SliderThumb/useSliderThumb.js.map +1 -1
  570. package/dist/components/slider/SliderTrack/SliderTrack.js +3 -0
  571. package/dist/components/slider/SliderTrack/SliderTrack.js.map +1 -1
  572. package/dist/components/spinner/Spinner.js +3 -0
  573. package/dist/components/spinner/Spinner.js.map +1 -1
  574. package/dist/components/switch/Switch.js +7 -0
  575. package/dist/components/switch/Switch.js.map +1 -1
  576. package/dist/components/tabs/Tabs/Tabs.context.js +1 -1
  577. package/dist/components/tabs/Tabs/Tabs.context.js.map +1 -1
  578. package/dist/components/tabs/Tabs/useTabsKeyboard.d.ts +7 -11
  579. package/dist/components/tabs/Tabs/useTabsKeyboard.js +8 -42
  580. package/dist/components/tabs/Tabs/useTabsKeyboard.js.map +1 -1
  581. package/dist/components/tabs/TabsList/TabsList.context.js +1 -1
  582. package/dist/components/tabs/TabsList/TabsList.context.js.map +1 -1
  583. package/dist/components/tabs/TabsList/TabsList.js +10 -10
  584. package/dist/components/tabs/TabsList/TabsList.js.map +1 -1
  585. package/dist/components/tabs/TabsTrigger/TabsTrigger.js +8 -8
  586. package/dist/components/tabs/TabsTrigger/TabsTrigger.js.map +1 -1
  587. package/dist/components/textarea/Textarea.js +8 -3
  588. package/dist/components/textarea/Textarea.js.map +1 -1
  589. package/dist/components/time-picker/TimePicker/create-change-event-details.d.ts +1 -2
  590. package/dist/components/time-picker/TimePicker/create-change-event-details.js +4 -20
  591. package/dist/components/time-picker/TimePicker/create-change-event-details.js.map +1 -1
  592. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js +1 -3
  593. package/dist/components/time-picker/TimePickerColumn/TimePickerColumn.js.map +1 -1
  594. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.d.ts +34 -0
  595. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js +43 -0
  596. package/dist/components/time-picker/TimePickerColumn/time-picker.column-utils.js.map +1 -0
  597. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js +34 -59
  598. package/dist/components/time-picker/TimePickerColumn/useTimePickerColumn.js.map +1 -1
  599. package/dist/components/toast/Toast/Toast.d.ts +8 -2
  600. package/dist/components/toast/Toast/Toast.js +92 -146
  601. package/dist/components/toast/Toast/Toast.js.map +1 -1
  602. package/dist/components/toast/Toast/Toast.types.d.ts +1 -1
  603. package/dist/components/toast/Toast/Toast.types.js.map +1 -1
  604. package/dist/components/toast/Toast/Toast.utils.d.ts +47 -0
  605. package/dist/components/toast/Toast/Toast.utils.js +47 -0
  606. package/dist/components/toast/Toast/Toast.utils.js.map +1 -0
  607. package/dist/components/toast/Toast/ToastActionButton.d.ts +16 -0
  608. package/dist/components/toast/Toast/ToastActionButton.js +27 -0
  609. package/dist/components/toast/Toast/ToastActionButton.js.map +1 -0
  610. package/dist/components/toast/Toast/ToastActions.d.ts +12 -0
  611. package/dist/components/toast/Toast/ToastActions.js +65 -0
  612. package/dist/components/toast/Toast/ToastActions.js.map +1 -0
  613. package/dist/components/toast/Toast/ToastCloseButton.d.ts +12 -0
  614. package/dist/components/toast/Toast/ToastCloseButton.js +26 -0
  615. package/dist/components/toast/Toast/ToastCloseButton.js.map +1 -0
  616. package/dist/components/toast/Toast/ToastContent.d.ts +8 -0
  617. package/dist/components/toast/Toast/ToastContent.js +30 -0
  618. package/dist/components/toast/Toast/ToastContent.js.map +1 -0
  619. package/dist/components/toast/Toast/ToastIcon.d.ts +14 -0
  620. package/dist/components/toast/Toast/ToastIcon.js +36 -0
  621. package/dist/components/toast/Toast/ToastIcon.js.map +1 -0
  622. package/dist/components/toast/Toast/useToastLifecycle.d.ts +29 -0
  623. package/dist/components/toast/Toast/useToastLifecycle.js +30 -0
  624. package/dist/components/toast/Toast/useToastLifecycle.js.map +1 -0
  625. package/dist/components/toast/Toaster/ToastViewport.d.ts +33 -0
  626. package/dist/components/toast/Toaster/ToastViewport.js +73 -0
  627. package/dist/components/toast/Toaster/ToastViewport.js.map +1 -0
  628. package/dist/components/toast/Toaster/Toaster.d.ts +4 -0
  629. package/dist/components/toast/Toaster/Toaster.js +64 -82
  630. package/dist/components/toast/Toaster/Toaster.js.map +1 -1
  631. package/dist/components/toast/Toaster/Toaster.utils.d.ts +15 -0
  632. package/dist/components/toast/Toaster/Toaster.utils.js +4 -1
  633. package/dist/components/toast/Toaster/Toaster.utils.js.map +1 -1
  634. package/dist/components/toast/Toaster/useToaster.d.ts +28 -0
  635. package/dist/components/toast/Toaster/useToaster.js +26 -0
  636. package/dist/components/toast/Toaster/useToaster.js.map +1 -0
  637. package/dist/components/toast/index.js +4 -3
  638. package/dist/components/toast/state/promise-toast.d.ts +17 -0
  639. package/dist/components/toast/state/promise-toast.js +33 -0
  640. package/dist/components/toast/state/promise-toast.js.map +1 -0
  641. package/dist/components/toast/state/store.d.ts +21 -0
  642. package/dist/components/toast/state/store.js +45 -0
  643. package/dist/components/toast/state/store.js.map +1 -0
  644. package/dist/components/toast/state/toast.d.ts +9 -10
  645. package/dist/components/toast/state/toast.js +30 -89
  646. package/dist/components/toast/state/toast.js.map +1 -1
  647. package/dist/components/toggle/Toggle/Toggle.js +2 -1
  648. package/dist/components/toggle/Toggle/Toggle.js.map +1 -1
  649. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +1 -1
  650. package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
  651. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +6 -2
  652. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +4 -20
  653. package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -1
  654. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +7 -10
  655. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +10 -40
  656. package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -1
  657. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +5 -5
  658. package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
  659. package/dist/components/tooltip/TooltipContent/usePresence.d.ts +27 -0
  660. package/dist/components/tooltip/TooltipContent/usePresence.js +24 -0
  661. package/dist/components/tooltip/TooltipContent/usePresence.js.map +1 -0
  662. package/dist/components/tooltip/TooltipContent/useTooltipContent.js +22 -35
  663. package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
  664. package/dist/hooks/useFontLoader.js +1 -1
  665. package/dist/hooks/useFontLoader.js.map +1 -1
  666. package/dist/hooks/useScrollLock.js +13 -16
  667. package/dist/hooks/useScrollLock.js.map +1 -1
  668. package/dist/index.js +328 -320
  669. package/dist/lib/positioner/index.d.ts +1 -0
  670. package/dist/lib/positioner/utils/dom.d.ts +8 -0
  671. package/dist/lib/positioner/utils/dom.js +1 -1
  672. package/dist/lib/positioner/utils/dom.js.map +1 -1
  673. package/dist/types/props.types.d.ts +1 -1
  674. package/dist/ui.css +1 -1
  675. package/dist/utils/call-event-handler.d.ts +16 -0
  676. package/dist/utils/call-event-handler.js +15 -0
  677. package/dist/utils/call-event-handler.js.map +1 -0
  678. package/dist/utils/clsx.d.ts +1 -1
  679. package/dist/utils/clsx.js +2 -7
  680. package/dist/utils/create-change-event-details.d.ts +25 -0
  681. package/dist/utils/create-change-event-details.js +25 -0
  682. package/dist/utils/create-change-event-details.js.map +1 -0
  683. package/dist/utils/get-style.d.ts +7 -9
  684. package/dist/utils/get-style.js +16 -0
  685. package/dist/utils/get-style.js.map +1 -0
  686. package/dist/utils/index.d.ts +8 -0
  687. package/dist/utils/index.js +7 -1
  688. package/dist/utils/number.d.ts +7 -0
  689. package/dist/utils/number.js +8 -0
  690. package/dist/utils/number.js.map +1 -0
  691. package/dist/utils/roving-navigation.d.ts +64 -0
  692. package/dist/utils/roving-navigation.js +66 -0
  693. package/dist/utils/roving-navigation.js.map +1 -0
  694. package/dist/utils/string.d.ts +17 -0
  695. package/dist/utils/string.js +11 -0
  696. package/dist/utils/string.js.map +1 -0
  697. package/package.json +18 -7
  698. package/dist/components/carousel/Carousel/Carousel.utils.d.ts +0 -0
  699. package/dist/components/field/FieldError/useFieldError.d.ts +0 -0
  700. package/dist/components/hover-card/hover-card.utils.d.ts +0 -6
  701. package/dist/components/tabs/Tabs/call-event-handler.d.ts +0 -5
  702. package/dist/components/tabs/Tabs/call-event-handler.js +0 -9
  703. package/dist/components/tabs/Tabs/call-event-handler.js.map +0 -1
  704. package/dist/components/toggle-group/call-event-handler.d.ts +0 -5
  705. package/dist/components/toggle-group/call-event-handler.js +0 -9
  706. package/dist/components/toggle-group/call-event-handler.js.map +0 -1
  707. package/dist/utils/clsx.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","names":["For","Show","createMemo","createSignal","mergeProps","splitProps","JSX","ChevronLeft","ChevronRight","buttonVariants","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","clsx","CalendarClassNames","CalendarMode","CalendarProps","CalendarSelected","DateRange","addDays","addMonths","eachDayOfInterval","endOfWeek","formatMonthYear","formatWeekday","getFirstDate","getISOWeekNumber","isAfter","isAfterOrSame","isBefore","isBeforeOrSame","isSameDay","resolveLocaleCode","startOfMonth","startOfWeek","defaultClassNames","Record","root","months","month","nav","button_previous","button_next","month_caption","dropdowns","dropdown_root","dropdown","caption_label","month_grid","weekdays","weekday","week","week_number_header","week_number","day","outside","disabled","hidden","today","range_start","range_middle","range_end","resolveInitialMonth","props","Date","defaultMonth","selected","defaultSelected","Calendar","Element","merged","mode","showOutsideDays","captionLayout","buttonVariant","weekStartsOn","numberOfMonths","local","rest","internalSelected","setInternalSelected","undefined","commitSelected","next","onSelect","internalMonth","setInternalMonth","currentMonth","setMonth","value","onMonthChange","moveMonth","delta","canPrev","min","canNext","max","monthList","count","Math","Array","from","length","_","i","localeCode","locale","monthOptions","year","filter","beforeMin","getFullYear","getMonth","afterMax","map","monthDate","String","label","Intl","DateTimeFormat","format","yearOptions","currentYear","startYear","endYear","slotClass","key","classNames","isDisabledDay","isRangeStart","range","isRangeEnd","to","isRangeMiddle","isDateSelected","isArray","some","d","selectDay","current","list","index","findIndex","splice","push","renderDay","_el$","_tmpl$","_el$2","firstChild","$$click","_$insert","getDate","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","toLocaleDateString","_v$7","_v$8","_v$9","_v$0","_v$1","variant","e","_$setAttribute","t","a","_$className","o","n","s","h","r","l","renderMonth","firstDay","lastDay","gridStart","gridEnd","days","weeks","slice","weekdayLabels","_el$3","_tmpl$3","_el$4","_el$5","_el$6","nextSibling","_el$7","_el$9","_el$0","_$createComponent","when","fallback","_el$10","_tmpl$4","children","_el$8","_tmpl$2","onValueChange","Number","class","each","option","showWeekNumber","_el$1","_el$11","_el$12","_el$13","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_el$14","_tmpl$5","_el$15","_$spread","_$mergeProps","style","dir","calendarClassNames","_$delegateEvents","mergeProps","buttonVariants","_$setAttribute","_$className","_$createComponent","_$mergeProps","_$delegateEvents","Button_styles_default","mergeProps$1","_tmpl$","_tmpl$2","_tmpl$3","_tmpl$4","_tmpl$5","defaultClassNames","resolveInitialMonth","props","getFirstDate","Calendar","merged","local","rest","splitProps","internalSelected","setInternalSelected","createSignal","selected","createMemo","commitSelected","next","internalMonth","setInternalMonth","startOfMonth","currentMonth","setMonth","value","moveMonth","addMonths","delta","canPrev","isAfter","canNext","isBefore","monthList","count","i","localeCode","resolveLocaleCode","monthOptions","beforeMin","year","afterMax","monthDate","yearOptions","currentYear","startYear","endYear","slotClass","clsx","key","isDisabledDay","day","isRangeStart","range","isSameDay","isRangeEnd","isRangeMiddle","isDateSelected","d","isAfterOrSame","isBeforeOrSame","selectDay","current","list","index","renderDay","_el$","_el$2","insert","effect","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_p$","setAttribute","className","renderMonth","firstDay","lastDay","addDays","gridStart","startOfWeek","gridEnd","endOfWeek","days","eachDayOfInterval","weeks","weekdayLabels","formatWeekday","_el$3","_el$4","_el$5","_el$6","_el$7","_el$9","_el$0","createComponent","ChevronLeft","\"class\"","ChevronRight","Show","_el$10","formatMonthYear","_el$8","Select","SelectTrigger","SelectValue","SelectContent","For","SelectItem","option","_el$1","_el$11","label","_el$12","_el$13","getISOWeekNumber","week","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_el$14","_el$15","spread","mergeProps","delegateEvents"],"sources":["../../../../src/components/calendar/Calendar/Calendar.tsx"],"sourcesContent":["import {\n For,\n Show,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { ChevronLeft, ChevronRight } from \"lucide-solid\";\nimport buttonVariants from \"~/components/button/Button.styles\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"~/components/select\";\nimport { clsx } from \"~/utils\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarProps,\n CalendarSelected,\n DateRange,\n} from \"./Calendar.types\";\nimport {\n addDays,\n addMonths,\n eachDayOfInterval,\n endOfWeek,\n formatMonthYear,\n formatWeekday,\n getFirstDate,\n getISOWeekNumber,\n isAfter,\n isAfterOrSame,\n isBefore,\n isBeforeOrSame,\n isSameDay,\n resolveLocaleCode,\n startOfMonth,\n startOfWeek,\n} from \"./Calendar.utils\";\n\nconst defaultClassNames: Record<keyof CalendarClassNames, string> = {\n root: \"group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n months: \"relative flex flex-row gap-4\",\n month: \"relative flex w-full flex-col gap-4\",\n nav: \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n button_previous:\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n button_next: \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n month_caption:\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n dropdowns:\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n dropdown_root: \"relative rounded-(--cell-radius)\",\n dropdown: \"absolute inset-0 bg-popover opacity-0\",\n caption_label: \"font-medium select-none text-sm\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n week: \"mt-2 flex w-full\",\n week_number_header: \"w-(--cell-size) select-none\",\n week_number: \"text-[0.8rem] text-muted-foreground select-none\",\n day: \"relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n outside: \"text-muted-foreground aria-selected:text-muted-foreground\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n today:\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n range_start:\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n range_middle: \"rounded-none\",\n range_end:\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n};\n\nfunction resolveInitialMonth(props: CalendarProps): Date {\n return (\n props.month ??\n props.defaultMonth ??\n getFirstDate(props.selected ?? props.defaultSelected) ??\n new Date()\n );\n}\n\n/**\n * 日历组件:react-day-picker 的 SolidJS 移植,覆盖 shadcn Base UI 版本\n * Calendar 中使用到的核心 props(mode/selected/onSelect/month/classNames 等)。\n * 支持 single、multiple、range 三种模式,以及 label/dropdown 两种标题布局。\n */\nexport function Calendar(props: CalendarProps): JSX.Element {\n const merged = mergeProps(\n {\n mode: \"single\" as CalendarMode,\n showOutsideDays: true,\n captionLayout: \"label\" as CalendarProps[\"captionLayout\"],\n buttonVariant: \"ghost\" as CalendarProps[\"buttonVariant\"],\n weekStartsOn: 0 as 0 | 1 | 2 | 3 | 4 | 5 | 6,\n numberOfMonths: 1,\n },\n props,\n );\n\n const [local, rest] = splitProps(merged, [\n \"mode\",\n \"selected\",\n \"defaultSelected\",\n \"onSelect\",\n \"month\",\n \"defaultMonth\",\n \"onMonthChange\",\n \"numberOfMonths\",\n \"showOutsideDays\",\n \"showWeekNumber\",\n \"weekStartsOn\",\n \"captionLayout\",\n \"locale\",\n \"buttonVariant\",\n \"classNames\",\n \"disabled\",\n \"min\",\n \"max\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n ]);\n\n const [internalSelected, setInternalSelected] =\n createSignal<CalendarSelected>(merged.defaultSelected);\n const selected = createMemo(() =>\n merged.selected !== undefined ? merged.selected : internalSelected(),\n );\n\n const commitSelected = (next: CalendarSelected) => {\n if (merged.selected === undefined) setInternalSelected(next);\n merged.onSelect?.(next);\n };\n\n const [internalMonth, setInternalMonth] = createSignal<Date>(\n startOfMonth(resolveInitialMonth(merged)),\n );\n const currentMonth = createMemo(() =>\n startOfMonth(merged.month ?? internalMonth()),\n );\n\n const setMonth = (next: Date) => {\n const value = startOfMonth(next);\n if (merged.month === undefined) setInternalMonth(value);\n merged.onMonthChange?.(value);\n };\n\n const moveMonth = (delta: number) =>\n setMonth(addMonths(currentMonth(), delta));\n\n const canPrev = () =>\n !merged.min ||\n isAfter(startOfMonth(currentMonth()), startOfMonth(merged.min));\n\n const canNext = () =>\n !merged.max ||\n isBefore(startOfMonth(currentMonth()), startOfMonth(merged.max));\n\n const monthList = createMemo(() => {\n const count = Math.max(1, merged.numberOfMonths ?? 1);\n return Array.from({ length: count }, (_, i) =>\n addMonths(currentMonth(), i),\n );\n });\n\n const localeCode = createMemo(() => resolveLocaleCode(merged.locale));\n\n const monthOptions = (year: number) =>\n Array.from({ length: 12 }, (_, i) => i)\n .filter((i) => {\n const beforeMin =\n !!merged.min &&\n (year < merged.min.getFullYear() ||\n (year === merged.min.getFullYear() && i < merged.min.getMonth()));\n const afterMax =\n !!merged.max &&\n (year > merged.max.getFullYear() ||\n (year === merged.max.getFullYear() && i > merged.max.getMonth()));\n return !beforeMin && !afterMax;\n })\n .map((i) => {\n const monthDate = new Date(2024, i, 1);\n return {\n value: String(i),\n label: new Intl.DateTimeFormat(localeCode(), {\n month: \"long\",\n }).format(monthDate),\n };\n });\n\n const yearOptions = createMemo(() => {\n const currentYear = new Date().getFullYear();\n const startYear = merged.min ? merged.min.getFullYear() : currentYear - 100;\n const endYear = merged.max ? merged.max.getFullYear() : currentYear + 100;\n return Array.from(\n { length: Math.max(0, endYear - startYear + 1) },\n (_, i) => startYear + i,\n );\n });\n\n const slotClass = (key: keyof CalendarClassNames) =>\n clsx(defaultClassNames[key], merged.classNames?.[key]);\n\n const isDisabledDay = (day: Date) => {\n if (merged.disabled === true) return true;\n if (typeof merged.disabled === \"function\") return merged.disabled(day);\n if (merged.min && isBefore(day, merged.min)) return true;\n if (merged.max && isAfter(day, merged.max)) return true;\n return false;\n };\n\n const isRangeStart = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return !!range?.from && isSameDay(day, range.from);\n };\n\n const isRangeEnd = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return !!range?.to && isSameDay(day, range.to);\n };\n\n const isRangeMiddle = (day: Date) => {\n const range = selected() as DateRange | undefined;\n return (\n !!range?.from &&\n !!range?.to &&\n isAfter(day, range.from) &&\n isBefore(day, range.to)\n );\n };\n\n const isDateSelected = (day: Date) => {\n const value = selected();\n if (merged.mode === \"single\") {\n return value instanceof Date && isSameDay(day, value);\n }\n if (merged.mode === \"multiple\") {\n return Array.isArray(value) && value.some((d) => isSameDay(d, day));\n }\n const range = value as DateRange | undefined;\n return (\n !!range &&\n ((range.from && isSameDay(day, range.from)) ||\n (range.to && isSameDay(day, range.to)) ||\n (!!range.from &&\n !!range.to &&\n isAfterOrSame(day, range.from) &&\n isBeforeOrSame(day, range.to)))\n );\n };\n\n const selectDay = (day: Date) => {\n if (isDisabledDay(day)) return;\n\n if (merged.mode === \"single\") {\n const current = selected();\n commitSelected(\n current instanceof Date && isSameDay(current, day) ? undefined : day,\n );\n return;\n }\n\n if (merged.mode === \"multiple\") {\n const current = selected();\n const list = Array.isArray(current) ? [...current] : [];\n const index = list.findIndex((d) => isSameDay(d, day));\n if (index >= 0) list.splice(index, 1);\n else list.push(day);\n commitSelected(list);\n return;\n }\n\n const range = selected() as DateRange | undefined;\n if (!range?.from || (range.from && range.to)) {\n commitSelected({ from: day });\n } else if (isBefore(day, range.from)) {\n commitSelected({ from: day, to: range.from });\n } else if (isSameDay(day, range.from)) {\n commitSelected({ from: day, to: day });\n } else {\n commitSelected({ from: range.from, to: day });\n }\n };\n\n const renderDay = (day: Date, monthDate: Date) => {\n return (\n <div\n aria-disabled={isDisabledDay(day)}\n data-selected={isDateSelected(day) ? \"true\" : undefined}\n class={clsx(\n slotClass(\"day\"),\n day.getMonth() !== monthDate.getMonth() && slotClass(\"outside\"),\n !merged.showOutsideDays &&\n day.getMonth() !== monthDate.getMonth() &&\n slotClass(\"hidden\"),\n isSameDay(day, new Date()) && slotClass(\"today\"),\n isDisabledDay(day) && slotClass(\"disabled\"),\n isRangeStart(day) && slotClass(\"range_start\"),\n isRangeMiddle(day) && slotClass(\"range_middle\"),\n isRangeEnd(day) && slotClass(\"range_end\"),\n )}\n >\n <button\n type=\"button\"\n disabled={isDisabledDay(day)}\n aria-pressed={isDateSelected(day)}\n data-day={day.toLocaleDateString(localeCode())}\n data-selected-single={\n merged.mode === \"single\" &&\n selected() instanceof Date &&\n isSameDay(day, selected() as Date)\n ? \"true\"\n : undefined\n }\n data-range-start={isRangeStart(day) ? \"true\" : undefined}\n data-range-end={isRangeEnd(day) ? \"true\" : undefined}\n data-range-middle={isRangeMiddle(day) ? \"true\" : undefined}\n onClick={() => selectDay(day)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal\",\n \"data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground\",\n \"data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground\",\n \"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground\",\n \"data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground\",\n \"data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground\",\n \"data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground\",\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n \"data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground\",\n day.getMonth() !== monthDate.getMonth() && \"text-muted-foreground\",\n )}\n >\n {day.getDate()}\n </button>\n </div>\n );\n };\n\n const renderMonth = (monthDate: Date) => {\n const firstDay = startOfMonth(monthDate);\n const lastDay = addDays(addMonths(monthDate, 1), -1);\n const gridStart = startOfWeek(firstDay, merged.weekStartsOn);\n const gridEnd = endOfWeek(lastDay, merged.weekStartsOn);\n const days = eachDayOfInterval(gridStart, gridEnd);\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n const weekdayLabels = Array.from({ length: 7 }, (_, i) =>\n formatWeekday(addDays(gridStart, i), localeCode()),\n );\n\n return (\n <div class={slotClass(\"month\")}>\n <div class={slotClass(\"nav\")}>\n <button\n type=\"button\"\n disabled={!canPrev()}\n aria-label=\"Previous month\"\n onClick={() => moveMonth(-1)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n slotClass(\"button_previous\"),\n )}\n >\n <ChevronLeft class=\"size-4\" />\n </button>\n <button\n type=\"button\"\n disabled={!canNext()}\n aria-label=\"Next month\"\n onClick={() => moveMonth(1)}\n class={clsx(\n buttonVariants({ variant: merged.buttonVariant }),\n slotClass(\"button_next\"),\n )}\n >\n <ChevronRight class=\"size-4\" />\n </button>\n </div>\n\n <div class={slotClass(\"month_caption\")}>\n <Show\n when={merged.captionLayout === \"dropdown\"}\n fallback={\n <span class={slotClass(\"caption_label\")}>\n {formatMonthYear(monthDate, localeCode())}\n </span>\n }\n >\n <div class={slotClass(\"dropdowns\")}>\n <Select\n value={String(monthDate.getMonth())}\n onValueChange={(value) => {\n setMonth(new Date(monthDate.getFullYear(), Number(value), 1));\n }}\n >\n <SelectTrigger\n variant=\"ghost\"\n class={clsx(\n \"h-(--cell-size) rounded-(--cell-radius) px-2 text-sm font-medium\",\n slotClass(\"dropdown_root\"),\n )}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent class=\"max-h-56\">\n <For each={monthOptions(monthDate.getFullYear())}>\n {(option) => (\n <SelectItem value={option.value}>\n {option.label}\n </SelectItem>\n )}\n </For>\n </SelectContent>\n </Select>\n\n <Select\n value={String(monthDate.getFullYear())}\n onValueChange={(value) => {\n setMonth(new Date(Number(value), monthDate.getMonth(), 1));\n }}\n >\n <SelectTrigger\n variant=\"ghost\"\n class={clsx(\n \"h-(--cell-size) rounded-(--cell-radius) px-2 text-sm font-medium tabular-nums\",\n slotClass(\"dropdown_root\"),\n )}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent class=\"max-h-56\">\n <For each={yearOptions()}>\n {(year) => (\n <SelectItem value={String(year)}>{year}</SelectItem>\n )}\n </For>\n </SelectContent>\n </Select>\n </div>\n </Show>\n </div>\n\n <div class={slotClass(\"month_grid\")}>\n <div class={slotClass(\"weekdays\")}>\n <Show when={merged.showWeekNumber}>\n <div class={slotClass(\"week_number_header\")} />\n </Show>\n <For each={weekdayLabels}>\n {(label) => <div class={slotClass(\"weekday\")}>{label}</div>}\n </For>\n </div>\n\n <For each={weeks}>\n {(week) => (\n <div class={slotClass(\"week\")}>\n <Show when={merged.showWeekNumber}>\n <div class={slotClass(\"week_number\")}>\n {getISOWeekNumber(week[0])}\n </div>\n </Show>\n <For each={week}>{(day) => renderDay(day, monthDate)}</For>\n </div>\n )}\n </For>\n </div>\n </div>\n );\n };\n\n return (\n <div\n data-slot=\"calendar\"\n class={clsx(slotClass(\"root\"), local.class)}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <div class={slotClass(\"months\")}>\n <For each={monthList()}>{(monthDate) => renderMonth(monthDate)}</For>\n </div>\n </div>\n );\n}\n\nexport { defaultClassNames as calendarClassNames };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.js","names":["For","createMemo","createSignal","mergeProps","splitProps","JSX","clsx","CalendarMonth","calendarClassNames","CalendarClassNames","CalendarMode","CalendarProps","CalendarSelected","buildMonthOptions","buildYearOptions","canMoveNext","canMovePrev","nextSelected","addMonths","resolveInitialMonth","resolveLocaleCode","startOfMonth","Calendar","props","Element","merged","mode","showOutsideDays","captionLayout","buttonVariant","weekStartsOn","numberOfMonths","local","rest","internalSelected","setInternalSelected","defaultSelected","selected","undefined","commitSelected","next","onSelect","internalMonth","setInternalMonth","Date","currentMonth","month","setMonth","value","onMonthChange","moveMonth","delta","canPrev","min","canNext","max","monthList","count","Math","Array","from","length","_","i","localeCode","locale","monthOptions","year","index","Intl","DateTimeFormat","format","yearOptions","getFullYear","slotClass","key","classNames","selectDay","day","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","class","classList","style","dir","_$insert","_$createComponent","each","children","monthDate","onMoveMonth","onSelectMonth","showWeekNumber","disabled","onSelectDay","_$effect","_$className","mergeProps","_$mergeProps","_$createComponent","_$className","mergeProps$1","_tmpl$","Calendar","merged","props","local","rest","splitProps","internalSelected","setInternalSelected","createSignal","selected","createMemo","commitSelected","next","internalMonth","setInternalMonth","startOfMonth","resolveInitialMonth","currentMonth","setMonth","value","moveMonth","addMonths","delta","canPrev","canMovePrev","canNext","canMoveNext","monthList","count","i","localeCode","resolveLocaleCode","monthOptions","buildMonthOptions","year","index","yearOptions","buildYearOptions","slotClass","clsx","calendarClassNames","key","selectDay","nextSelected","day","_el$","_el$2","spread","mergeProps","\"class\"","insert","createComponent","For","CalendarMonth","effect","className"],"sources":["../../../../src/components/calendar/Calendar/Calendar.tsx"],"sourcesContent":["import {\n For,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n type JSX,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport { calendarClassNames } from \"./Calendar.styles\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarProps,\n CalendarSelected,\n} from \"./Calendar.types\";\nimport {\n buildMonthOptions,\n buildYearOptions,\n canMoveNext,\n canMovePrev,\n} from \"./Calendar.options\";\nimport { nextSelected } from \"./Calendar.selection\";\nimport {\n addMonths,\n resolveInitialMonth,\n resolveLocaleCode,\n startOfMonth,\n} from \"./Calendar.utils\";\n\n/**\n * 日历组件:react-day-picker 的 SolidJS 移植,覆盖 shadcn Base UI 版本\n * Calendar 中使用到的核心 props(mode/selected/onSelect/month/classNames 等)。\n * 支持 single、multiple、range 三种模式,以及 label/dropdown 两种标题布局。\n */\nexport function Calendar(props: CalendarProps): JSX.Element {\n const merged = mergeProps(\n {\n mode: \"single\" as CalendarMode,\n showOutsideDays: true,\n captionLayout: \"label\" as CalendarProps[\"captionLayout\"],\n buttonVariant: \"ghost\" as CalendarProps[\"buttonVariant\"],\n weekStartsOn: 0 as 0 | 1 | 2 | 3 | 4 | 5 | 6,\n numberOfMonths: 1,\n },\n props,\n );\n\n const [local, rest] = splitProps(merged, [\n \"mode\",\n \"selected\",\n \"defaultSelected\",\n \"onSelect\",\n \"month\",\n \"defaultMonth\",\n \"onMonthChange\",\n \"numberOfMonths\",\n \"showOutsideDays\",\n \"showWeekNumber\",\n \"weekStartsOn\",\n \"captionLayout\",\n \"locale\",\n \"buttonVariant\",\n \"classNames\",\n \"disabled\",\n \"min\",\n \"max\",\n \"class\",\n \"classList\",\n \"style\",\n \"dir\",\n ]);\n\n const [internalSelected, setInternalSelected] =\n createSignal<CalendarSelected>(merged.defaultSelected);\n const selected = createMemo(() =>\n merged.selected !== undefined ? merged.selected : internalSelected(),\n );\n\n const commitSelected = (next: CalendarSelected) => {\n if (merged.selected === undefined) setInternalSelected(next);\n merged.onSelect?.(next);\n };\n\n const [internalMonth, setInternalMonth] = createSignal<Date>(\n startOfMonth(resolveInitialMonth(merged)),\n );\n const currentMonth = createMemo(() =>\n startOfMonth(merged.month ?? internalMonth()),\n );\n\n const setMonth = (next: Date) => {\n const value = startOfMonth(next);\n if (merged.month === undefined) setInternalMonth(value);\n merged.onMonthChange?.(value);\n };\n\n const moveMonth = (delta: number) =>\n setMonth(addMonths(currentMonth(), delta));\n\n const canPrev = () => canMovePrev(currentMonth(), merged.min);\n\n const canNext = () => canMoveNext(currentMonth(), merged.max);\n\n const monthList = createMemo(() => {\n // mergeProps 已把 numberOfMonths 默认成 1,这里只负责夹取下界\n const count = Math.max(1, merged.numberOfMonths);\n return Array.from({ length: count }, (_, i) =>\n addMonths(currentMonth(), i),\n );\n });\n\n const localeCode = createMemo(() => resolveLocaleCode(merged.locale));\n\n /** 月份下拉项:按 locale 格式化月份名 */\n const monthOptions = (year: number) =>\n buildMonthOptions(year, { min: merged.min, max: merged.max }, (index) =>\n new Intl.DateTimeFormat(localeCode(), { month: \"long\" }).format(\n new Date(2024, index, 1),\n ),\n );\n\n const yearOptions = createMemo(() =>\n buildYearOptions(\n { min: merged.min, max: merged.max },\n new Date().getFullYear(),\n ),\n );\n\n const slotClass = (key: keyof CalendarClassNames) =>\n clsx(calendarClassNames[key], merged.classNames?.[key]);\n\n // 禁用判定由 CalendarDay 负责(它同时决定按钮 disabled 与点击是否生效),\n // 这里不再重复守卫:唯一调用方只会在可选的日期上回调。\n const selectDay = (day: Date) => {\n commitSelected(nextSelected(merged.mode, selected(), day));\n };\n\n return (\n <div\n data-slot=\"calendar\"\n class={clsx(slotClass(\"root\"), local.class)}\n classList={local.classList}\n style={local.style}\n dir={local.dir}\n {...rest}\n >\n <div class={slotClass(\"months\")}>\n <For each={monthList()}>\n {(monthDate) => (\n <CalendarMonth\n monthDate={monthDate}\n canPrev={canPrev()}\n canNext={canNext()}\n onMoveMonth={moveMonth}\n captionLayout={merged.captionLayout}\n localeCode={localeCode()}\n monthOptions={monthOptions}\n yearOptions={yearOptions()}\n onSelectMonth={setMonth}\n showWeekNumber={merged.showWeekNumber}\n weekStartsOn={merged.weekStartsOn}\n mode={merged.mode}\n selected={selected()}\n showOutsideDays={merged.showOutsideDays}\n buttonVariant={merged.buttonVariant}\n disabled={merged.disabled}\n min={merged.min}\n max={merged.max}\n onSelectDay={selectDay}\n slotClass={slotClass}\n />\n )}\n </For>\n </div>\n </div>\n );\n}\n\nexport { calendarClassNames } from \"./Calendar.styles\";\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Calendar 的日期可用性与下拉选项计算。
3
+ *
4
+ * 单一职责:纯函数地判断「某天能不能选」,以及生成月份/年份下拉的选项列表。
5
+ * 不持有信号、不渲染,因此 `min` / `max` / `disabled` 的每种组合都能独立单测。
6
+ */
7
+ /** `disabled` prop 的三种形态 */
8
+ export type CalendarDisabled = boolean | ((day: Date) => boolean) | undefined;
9
+ export interface DateBounds {
10
+ min?: Date;
11
+ max?: Date;
12
+ }
13
+ /**
14
+ * 某天是否不可选。
15
+ * 优先级:`disabled === true` > `disabled(day)` 函数 > `min` / `max` 区间。
16
+ */
17
+ export declare function isDayDisabled(day: Date, { disabled, min, max }: DateBounds & {
18
+ disabled?: CalendarDisabled;
19
+ }): boolean;
20
+ export interface MonthOption {
21
+ /** 0–11 的月份索引字符串(直接给 Select 当 value) */
22
+ value: string;
23
+ /** 已按 locale 格式化过的月份名 */
24
+ label: string;
25
+ }
26
+ /**
27
+ * 生成某一年里可选的月份下拉项:落在 `min` / `max` 之外的月份被过滤掉。
28
+ * 传入的 `format` 用于本地化月份名(调用方注入,避免这里依赖 Intl 配置)。
29
+ */
30
+ export declare function buildMonthOptions(year: number, bounds: DateBounds, format: (monthIndex: number) => string): MonthOption[];
31
+ /**
32
+ * 生成年份下拉项:有 `min` / `max` 时夹到其年份,否则以前后 100 年为范围。
33
+ * `max < min` 时返回空数组(不产生负数长度)。
34
+ */
35
+ export declare function buildYearOptions(bounds: DateBounds, currentYear: number, span?: number): number[];
36
+ /** 是否还能往前翻月(`min` 已到达或超过当前月时不能) */
37
+ export declare function canMovePrev(currentMonth: Date, min: Date | undefined): boolean;
38
+ /** 是否还能往后翻月(`max` 已到达或早于当前月时不能) */
39
+ export declare function canMoveNext(currentMonth: Date, max: Date | undefined): boolean;
40
+ /**
41
+ * 把一段连续的日期切成「周列表」(每 7 天一组,最后不足 7 天也保留)。
42
+ */
43
+ export declare function chunkIntoWeeks(days: Date[]): Date[][];
@@ -0,0 +1,38 @@
1
+ import { isAfter as e, isBefore as t } from "./Calendar.utils.js";
2
+ //#region src/components/calendar/Calendar/Calendar.options.ts
3
+ function n(n, { disabled: r, min: i, max: a }) {
4
+ return r === !0 ? !0 : typeof r == "function" ? r(n) : !!(i && t(n, i) || a && e(n, a));
5
+ }
6
+ function r(e, t, n) {
7
+ let { min: r, max: i } = t;
8
+ return Array.from({ length: 12 }, (e, t) => t).filter((t) => {
9
+ let n = !!r && (e < r.getFullYear() || e === r.getFullYear() && t < r.getMonth()), a = !!i && (e > i.getFullYear() || e === i.getFullYear() && t > i.getMonth());
10
+ return !n && !a;
11
+ }).map((e) => ({
12
+ value: String(e),
13
+ label: n(e)
14
+ }));
15
+ }
16
+ function i(e, t, n = 100) {
17
+ let r = e.min ? e.min.getFullYear() : t - n, i = e.max ? e.max.getFullYear() : t + n;
18
+ return Array.from({ length: Math.max(0, i - r + 1) }, (e, t) => r + t);
19
+ }
20
+ function a(e, t) {
21
+ if (!t) return !0;
22
+ let n = new Date(e.getFullYear(), e.getMonth(), 1), r = new Date(t.getFullYear(), t.getMonth(), 1);
23
+ return n.getTime() > r.getTime();
24
+ }
25
+ function o(e, t) {
26
+ if (!t) return !0;
27
+ let n = new Date(e.getFullYear(), e.getMonth(), 1), r = new Date(t.getFullYear(), t.getMonth(), 1);
28
+ return n.getTime() < r.getTime();
29
+ }
30
+ function s(e) {
31
+ let t = [];
32
+ for (let n = 0; n < e.length; n += 7) t.push(e.slice(n, n + 7));
33
+ return t;
34
+ }
35
+ //#endregion
36
+ export { r as buildMonthOptions, i as buildYearOptions, o as canMoveNext, a as canMovePrev, s as chunkIntoWeeks, n as isDayDisabled };
37
+
38
+ //# sourceMappingURL=Calendar.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.options.js","names":["isDayDisabled","disabled","day","min","isBefore","max","isAfter","buildMonthOptions","bounds","index","beforeMin","year","afterMax","format","buildYearOptions","startYear","currentYear","span","endYear","i","canMovePrev","current","currentMonth","floor","canMoveNext","ceiling","chunkIntoWeeks","weeks","days"],"sources":["../../../../src/components/calendar/Calendar/Calendar.options.ts"],"sourcesContent":["/**\n * Calendar 的日期可用性与下拉选项计算。\n *\n * 单一职责:纯函数地判断「某天能不能选」,以及生成月份/年份下拉的选项列表。\n * 不持有信号、不渲染,因此 `min` / `max` / `disabled` 的每种组合都能独立单测。\n */\n\nimport { isAfter, isBefore } from \"./Calendar.utils\";\n\n/** `disabled` prop 的三种形态 */\nexport type CalendarDisabled = boolean | ((day: Date) => boolean) | undefined;\n\nexport interface DateBounds {\n min?: Date;\n max?: Date;\n}\n\n/**\n * 某天是否不可选。\n * 优先级:`disabled === true` > `disabled(day)` 函数 > `min` / `max` 区间。\n */\nexport function isDayDisabled(\n day: Date,\n { disabled, min, max }: DateBounds & { disabled?: CalendarDisabled },\n): boolean {\n if (disabled === true) return true;\n if (typeof disabled === \"function\") return disabled(day);\n if (min && isBefore(day, min)) return true;\n if (max && isAfter(day, max)) return true;\n return false;\n}\n\nexport interface MonthOption {\n /** 0–11 的月份索引字符串(直接给 Select 当 value) */\n value: string;\n /** 已按 locale 格式化过的月份名 */\n label: string;\n}\n\n/**\n * 生成某一年里可选的月份下拉项:落在 `min` / `max` 之外的月份被过滤掉。\n * 传入的 `format` 用于本地化月份名(调用方注入,避免这里依赖 Intl 配置)。\n */\nexport function buildMonthOptions(\n year: number,\n bounds: DateBounds,\n format: (monthIndex: number) => string,\n): MonthOption[] {\n const { min, max } = bounds;\n return Array.from({ length: 12 }, (_, index) => index)\n .filter((index) => {\n const beforeMin =\n !!min &&\n (year < min.getFullYear() ||\n (year === min.getFullYear() && index < min.getMonth()));\n const afterMax =\n !!max &&\n (year > max.getFullYear() ||\n (year === max.getFullYear() && index > max.getMonth()));\n return !beforeMin && !afterMax;\n })\n .map((index) => ({ value: String(index), label: format(index) }));\n}\n\n/**\n * 生成年份下拉项:有 `min` / `max` 时夹到其年份,否则以前后 100 年为范围。\n * `max < min` 时返回空数组(不产生负数长度)。\n */\nexport function buildYearOptions(\n bounds: DateBounds,\n currentYear: number,\n span = 100,\n): number[] {\n const startYear = bounds.min ? bounds.min.getFullYear() : currentYear - span;\n const endYear = bounds.max ? bounds.max.getFullYear() : currentYear + span;\n return Array.from(\n { length: Math.max(0, endYear - startYear + 1) },\n (_, i) => startYear + i,\n );\n}\n\n/** 是否还能往前翻月(`min` 已到达或超过当前月时不能) */\nexport function canMovePrev(\n currentMonth: Date,\n min: Date | undefined,\n): boolean {\n if (!min) return true;\n const current = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n 1,\n );\n const floor = new Date(min.getFullYear(), min.getMonth(), 1);\n return current.getTime() > floor.getTime();\n}\n\n/** 是否还能往后翻月(`max` 已到达或早于当前月时不能) */\nexport function canMoveNext(\n currentMonth: Date,\n max: Date | undefined,\n): boolean {\n if (!max) return true;\n const current = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n 1,\n );\n const ceiling = new Date(max.getFullYear(), max.getMonth(), 1);\n return current.getTime() < ceiling.getTime();\n}\n\n/**\n * 把一段连续的日期切成「周列表」(每 7 天一组,最后不足 7 天也保留)。\n */\nexport function chunkIntoWeeks(days: Date[]): Date[][] {\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n return weeks;\n}\n"],"mappings":";;AAqBA,SAAgBA,EACd,GACA,EAAE,aAAU,QAAK,UACR;CAKT,OAJIC,MAAa,KAAa,KAC1B,OAAOA,KAAa,aAAmBA,EAASC,CAAG,IAEvD,GADIC,KAAOC,EAASF,GAAKC,CAAG,KACxBE,KAAOC,EAAQJ,GAAKG,CAAG;AAE7B;AAaA,SAAgBE,EACd,GACA,GACA,GACe;CACf,IAAM,EAAE,QAAK,WAAQC;CACrB,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAUC,CAAK,CAAC,CACnD,QAAQ,MAAU;EACjB,IAAMC,IACJ,CAAC,CAACP,MACDQ,IAAOR,EAAI,YAAY,KACrBQ,MAASR,EAAI,YAAY,KAAKM,IAAQN,EAAI,SAAS,IAClDS,IACJ,CAAC,CAACP,MACDM,IAAON,EAAI,YAAY,KACrBM,MAASN,EAAI,YAAY,KAAKI,IAAQJ,EAAI,SAAS;EACxD,OAAO,CAACK,KAAa,CAACE;CACxB,CAAC,CAAC,CACD,KAAK,OAAW;EAAE,OAAO,OAAOH,CAAK;EAAG,OAAOI,EAAOJ,CAAK;CAAE,EAAE;AACpE;AAMA,SAAgBK,EACd,GACA,GACA,IAAO,KACG;CACV,IAAMC,IAAYP,EAAO,MAAMA,EAAO,IAAI,YAAY,IAAIQ,IAAcC,GAClEC,IAAUV,EAAO,MAAMA,EAAO,IAAI,YAAY,IAAIQ,IAAcC;CACtE,OAAO,MAAM,KACX,EAAE,QAAQ,KAAK,IAAI,GAAGC,IAAUH,IAAY,CAAC,EAAE,IAC9C,GAAG,MAAMA,IAAYI,CACxB;AACF;AAGA,SAAgBC,EACd,GACA,GACS;CACT,IAAI,CAACjB,GAAK,OAAO;CACjB,IAAMkB,IAAU,IAAI,KAClBC,EAAa,YAAY,GACzBA,EAAa,SAAS,GACtB,CACF,GACMC,IAAQ,IAAI,KAAKpB,EAAI,YAAY,GAAGA,EAAI,SAAS,GAAG,CAAC;CAC3D,OAAOkB,EAAQ,QAAQ,IAAIE,EAAM,QAAQ;AAC3C;AAGA,SAAgBC,EACd,GACA,GACS;CACT,IAAI,CAACnB,GAAK,OAAO;CACjB,IAAMgB,IAAU,IAAI,KAClBC,EAAa,YAAY,GACzBA,EAAa,SAAS,GACtB,CACF,GACMG,IAAU,IAAI,KAAKpB,EAAI,YAAY,GAAGA,EAAI,SAAS,GAAG,CAAC;CAC7D,OAAOgB,EAAQ,QAAQ,IAAII,EAAQ,QAAQ;AAC7C;AAKA,SAAgBC,EAAe,GAAwB;CACrD,IAAMC,IAAkB,CAAC;CACzB,KAAK,IAAIR,IAAI,GAAGA,IAAIS,EAAK,QAAQ,KAAK,GACpC,EAAM,KAAKA,EAAK,MAAMT,GAAGA,IAAI,CAAC,CAAC;CAEjC,OAAOQ;AACT"}
@@ -0,0 +1,16 @@
1
+ import { CalendarMode, CalendarSelected } from './Calendar.types';
2
+ /** 该日期是否是区间起点 */
3
+ export declare function isRangeStart(selected: CalendarSelected, day: Date): boolean;
4
+ /** 该日期是否是区间终点 */
5
+ export declare function isRangeEnd(selected: CalendarSelected, day: Date): boolean;
6
+ /** 该日期是否落在区间内部(不含两端) */
7
+ export declare function isRangeMiddle(selected: CalendarSelected, day: Date): boolean;
8
+ /**
9
+ * 该日期是否「处于选中状态」。
10
+ * 注意 range 模式下区间内部的日期也算选中(用于 `aria-pressed` 与 `data-selected`)。
11
+ */
12
+ export declare function isDateSelected(mode: CalendarMode, selected: CalendarSelected, day: Date): boolean;
13
+ /**
14
+ * 计算点击某一天之后的新选中值(不判断是否 disabled——调用方负责)。
15
+ */
16
+ export declare function nextSelected(mode: CalendarMode, selected: CalendarSelected, day: Date): CalendarSelected;
@@ -0,0 +1,50 @@
1
+ import { isAfter as e, isAfterOrSame as t, isBefore as n, isBeforeOrSame as r, isSameDay as i } from "./Calendar.utils.js";
2
+ //#region src/components/calendar/Calendar/Calendar.selection.ts
3
+ function a(e) {
4
+ if (!(!e || e instanceof Date || Array.isArray(e))) return e;
5
+ }
6
+ function o(e, t) {
7
+ let n = a(e);
8
+ return !!n?.from && i(t, n.from);
9
+ }
10
+ function s(e, t) {
11
+ let n = a(e);
12
+ return !!n?.to && i(t, n.to);
13
+ }
14
+ function c(t, r) {
15
+ let i = a(t);
16
+ return !!i?.from && !!i?.to && e(r, i.from) && n(r, i.to);
17
+ }
18
+ function l(e, n, o) {
19
+ if (e === "single") return n instanceof Date && i(o, n);
20
+ if (e === "multiple") return Array.isArray(n) && n.some((e) => i(e, o));
21
+ let s = a(n);
22
+ return s ? s.from && i(o, s.from) || s.to && i(o, s.to) ? !0 : !!s.from && !!s.to && t(o, s.from) && r(o, s.to) : !1;
23
+ }
24
+ function u(e, t) {
25
+ return e instanceof Date && i(e, t) ? void 0 : t;
26
+ }
27
+ function d(e, t) {
28
+ let n = Array.isArray(e) ? [...e] : [], r = n.findIndex((e) => i(e, t));
29
+ return r >= 0 ? n.splice(r, 1) : n.push(t), n;
30
+ }
31
+ function f(e, t) {
32
+ let r = a(e);
33
+ return !r?.from || r.from && r.to ? { from: t } : n(t, r.from) ? {
34
+ from: t,
35
+ to: r.from
36
+ } : i(t, r.from) ? {
37
+ from: t,
38
+ to: t
39
+ } : {
40
+ from: r.from,
41
+ to: t
42
+ };
43
+ }
44
+ function p(e, t, n) {
45
+ return e === "single" ? u(t, n) : e === "multiple" ? d(t, n) : f(t, n);
46
+ }
47
+ //#endregion
48
+ export { l as isDateSelected, s as isRangeEnd, c as isRangeMiddle, o as isRangeStart, p as nextSelected };
49
+
50
+ //# sourceMappingURL=Calendar.selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.selection.js","names":["asRange","selected","isRangeStart","range","isSameDay","day","isRangeEnd","isRangeMiddle","isAfter","isBefore","isDateSelected","mode","d","isAfterOrSame","isBeforeOrSame","nextSingle","nextMultiple","list","index","nextRange","nextSelected"],"sources":["../../../../src/components/calendar/Calendar/Calendar.selection.ts"],"sourcesContent":["/**\n * Calendar 的选中态算法。\n *\n * 单一职责:在「当前选中值 + 模式 + 日期」上做纯计算——\n * 某个日期是否被选中、是否落在范围区间内、点击后新的选中值是什么。\n * 不持有信号、不渲染,因此 `single` / `multiple` / `range` 三种模式的每个\n * 分支都能独立单测。\n */\n\nimport type {\n CalendarMode,\n CalendarSelected,\n DateRange,\n} from \"./Calendar.types\";\nimport {\n isAfter,\n isAfterOrSame,\n isBefore,\n isBeforeOrSame,\n isSameDay,\n} from \"./Calendar.utils\";\n\n/** 把选中值收窄成区间(非区间模式会得到 undefined 字段) */\nfunction asRange(selected: CalendarSelected): DateRange | undefined {\n if (!selected || selected instanceof Date || Array.isArray(selected)) {\n return undefined;\n }\n return selected;\n}\n\n/** 该日期是否是区间起点 */\nexport function isRangeStart(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return !!range?.from && isSameDay(day, range.from);\n}\n\n/** 该日期是否是区间终点 */\nexport function isRangeEnd(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return !!range?.to && isSameDay(day, range.to);\n}\n\n/** 该日期是否落在区间内部(不含两端) */\nexport function isRangeMiddle(selected: CalendarSelected, day: Date): boolean {\n const range = asRange(selected);\n return (\n !!range?.from &&\n !!range?.to &&\n isAfter(day, range.from) &&\n isBefore(day, range.to)\n );\n}\n\n/**\n * 该日期是否「处于选中状态」。\n * 注意 range 模式下区间内部的日期也算选中(用于 `aria-pressed` 与 `data-selected`)。\n */\nexport function isDateSelected(\n mode: CalendarMode,\n selected: CalendarSelected,\n day: Date,\n): boolean {\n if (mode === \"single\") {\n return selected instanceof Date && isSameDay(day, selected);\n }\n if (mode === \"multiple\") {\n return Array.isArray(selected) && selected.some((d) => isSameDay(d, day));\n }\n const range = asRange(selected);\n if (!range) return false;\n if (range.from && isSameDay(day, range.from)) return true;\n if (range.to && isSameDay(day, range.to)) return true;\n return (\n !!range.from &&\n !!range.to &&\n isAfterOrSame(day, range.from) &&\n isBeforeOrSame(day, range.to)\n );\n}\n\n/** single 模式:再次点击已选日期则取消选中 */\nfunction nextSingle(selected: CalendarSelected, day: Date): CalendarSelected {\n return selected instanceof Date && isSameDay(selected, day) ? undefined : day;\n}\n\n/** multiple 模式:在数组里切换该日期的存在性(保持原顺序追加) */\nfunction nextMultiple(selected: CalendarSelected, day: Date): CalendarSelected {\n const list = Array.isArray(selected) ? [...selected] : [];\n const index = list.findIndex((d) => isSameDay(d, day));\n if (index >= 0) {\n list.splice(index, 1);\n } else {\n list.push(day);\n }\n return list;\n}\n\n/**\n * range 模式:第一次点击设起点,第二次点击形成区间;\n * - 点击早于起点的日期 → 交换成 `{ from: day, to: from }`\n * - 点击与起点同一天 → `{ from: day, to: day }`\n * - 已有完整区间 → 重新开始(只设 from)\n */\nfunction nextRange(selected: CalendarSelected, day: Date): CalendarSelected {\n const range = asRange(selected);\n if (!range?.from || (range.from && range.to)) {\n return { from: day };\n }\n if (isBefore(day, range.from)) {\n return { from: day, to: range.from };\n }\n if (isSameDay(day, range.from)) {\n return { from: day, to: day };\n }\n return { from: range.from, to: day };\n}\n\n/**\n * 计算点击某一天之后的新选中值(不判断是否 disabled——调用方负责)。\n */\nexport function nextSelected(\n mode: CalendarMode,\n selected: CalendarSelected,\n day: Date,\n): CalendarSelected {\n if (mode === \"single\") return nextSingle(selected, day);\n if (mode === \"multiple\") return nextMultiple(selected, day);\n return nextRange(selected, day);\n}\n"],"mappings":";;AAuBA,SAASA,EAAQ,GAAmD;CAClE,IAAI,GAACC,KAAYA,aAAoB,QAAQ,MAAM,QAAQA,CAAQ,IAGnE,OAAOA;AACT;AAGA,SAAgBC,EAAa,GAA4B,GAAoB;CAC3E,IAAMC,IAAQH,EAAQC,CAAQ;CAC9B,OAAO,CAAC,CAACE,GAAO,QAAQC,EAAUC,GAAKF,EAAM,IAAI;AACnD;AAGA,SAAgBG,EAAW,GAA4B,GAAoB;CACzE,IAAMH,IAAQH,EAAQC,CAAQ;CAC9B,OAAO,CAAC,CAACE,GAAO,MAAMC,EAAUC,GAAKF,EAAM,EAAE;AAC/C;AAGA,SAAgBI,EAAc,GAA4B,GAAoB;CAC5E,IAAMJ,IAAQH,EAAQC,CAAQ;CAC9B,OACE,CAAC,CAACE,GAAO,QACT,CAAC,CAACA,GAAO,MACTK,EAAQH,GAAKF,EAAM,IAAI,KACvBM,EAASJ,GAAKF,EAAM,EAAE;AAE1B;AAMA,SAAgBO,EACd,GACA,GACA,GACS;CACT,IAAIC,MAAS,UACX,OAAOV,aAAoB,QAAQG,EAAUC,GAAKJ,CAAQ;CAE5D,IAAIU,MAAS,YACX,OAAO,MAAM,QAAQV,CAAQ,KAAKA,EAAS,MAAM,MAAMG,EAAUQ,GAAGP,CAAG,CAAC;CAE1E,IAAMF,IAAQH,EAAQC,CAAQ;CAI9B,OAHKE,IACDA,EAAM,QAAQC,EAAUC,GAAKF,EAAM,IAAI,KACvCA,EAAM,MAAMC,EAAUC,GAAKF,EAAM,EAAE,IAAU,KAE/C,CAAC,CAACA,EAAM,QACR,CAAC,CAACA,EAAM,MACRU,EAAcR,GAAKF,EAAM,IAAI,KAC7BW,EAAeT,GAAKF,EAAM,EAAE,IAPX;AASrB;AAGA,SAASY,EAAW,GAA4B,GAA6B;CAC3E,OAAOd,aAAoB,QAAQG,EAAUH,GAAUI,CAAG,IAAI,KAAA,IAAYA;AAC5E;AAGA,SAASW,EAAa,GAA4B,GAA6B;CAC7E,IAAMC,IAAO,MAAM,QAAQhB,CAAQ,IAAI,CAAC,GAAGA,CAAQ,IAAI,CAAC,GAClDiB,IAAQD,EAAK,WAAW,MAAMb,EAAUQ,GAAGP,CAAG,CAAC;CAMrD,OALIa,KAAS,IACXD,EAAK,OAAOC,GAAO,CAAC,IAEpBD,EAAK,KAAKZ,CAAG,GAERY;AACT;AAQA,SAASE,EAAU,GAA4B,GAA6B;CAC1E,IAAMhB,IAAQH,EAAQC,CAAQ;CAU9B,OATI,CAACE,GAAO,QAASA,EAAM,QAAQA,EAAM,KAChC,EAAE,MAAME,EAAI,IAEjBI,EAASJ,GAAKF,EAAM,IAAI,IACnB;EAAE,MAAME;EAAK,IAAIF,EAAM;CAAK,IAEjCC,EAAUC,GAAKF,EAAM,IAAI,IACpB;EAAE,MAAME;EAAK,IAAIA;CAAI,IAEvB;EAAE,MAAMF,EAAM;EAAM,IAAIE;CAAI;AACrC;AAKA,SAAgBe,EACd,GACA,GACA,GACkB;CAGlB,OAFIT,MAAS,WAAiBI,EAAWd,GAAUI,CAAG,IAClDM,MAAS,aAAmBK,EAAaf,GAAUI,CAAG,IACnDc,EAAUlB,GAAUI,CAAG;AAChC"}
@@ -0,0 +1,8 @@
1
+ import { CalendarClassNames } from './Calendar.types';
2
+ /**
3
+ * 各插槽的默认 Tailwind 类名。与 shadcn 的 `calendar.tsx` 对齐,
4
+ * 调用方可用 `classNames` 按 key 覆盖(见 `Calendar.tsx` 的 slotClass)。
5
+ */
6
+ export declare const calendarClassNames: Record<keyof CalendarClassNames, string>;
7
+ /** 兼容旧命名(对外公开的是 calendarClassNames) */
8
+ export { calendarClassNames as defaultClassNames };
@@ -0,0 +1,32 @@
1
+ //#region src/components/calendar/Calendar/Calendar.styles.ts
2
+ var e = {
3
+ root: "group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",
4
+ months: "relative flex flex-row gap-4",
5
+ month: "relative flex w-full flex-col gap-4",
6
+ nav: "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
7
+ button_previous: "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
8
+ button_next: "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
9
+ month_caption: "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
10
+ dropdowns: "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",
11
+ dropdown_root: "relative rounded-(--cell-radius)",
12
+ dropdown: "absolute inset-0 bg-popover opacity-0",
13
+ caption_label: "font-medium select-none text-sm",
14
+ month_grid: "w-full border-collapse",
15
+ weekdays: "flex",
16
+ weekday: "flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",
17
+ week: "mt-2 flex w-full",
18
+ week_number_header: "w-(--cell-size) select-none",
19
+ week_number: "text-[0.8rem] text-muted-foreground select-none",
20
+ day: "relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",
21
+ outside: "text-muted-foreground aria-selected:text-muted-foreground",
22
+ disabled: "text-muted-foreground opacity-50",
23
+ hidden: "invisible",
24
+ today: "rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none",
25
+ range_start: "relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted",
26
+ range_middle: "rounded-none",
27
+ range_end: "relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted"
28
+ };
29
+ //#endregion
30
+ export { e as calendarClassNames, e as defaultClassNames };
31
+
32
+ //# sourceMappingURL=Calendar.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.styles.js","names":["calendarClassNames"],"sources":["../../../../src/components/calendar/Calendar/Calendar.styles.ts"],"sourcesContent":["import type { CalendarClassNames } from \"./Calendar.types\";\n\n/**\n * 各插槽的默认 Tailwind 类名。与 shadcn 的 `calendar.tsx` 对齐,\n * 调用方可用 `classNames` 按 key 覆盖(见 `Calendar.tsx` 的 slotClass)。\n */\nexport const calendarClassNames: Record<keyof CalendarClassNames, string> = {\n root: \"group/calendar w-fit bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n months: \"relative flex flex-row gap-4\",\n month: \"relative flex w-full flex-col gap-4\",\n nav: \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n button_previous:\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n button_next: \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n month_caption:\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n dropdowns:\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n dropdown_root: \"relative rounded-(--cell-radius)\",\n dropdown: \"absolute inset-0 bg-popover opacity-0\",\n caption_label: \"font-medium select-none text-sm\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"flex\",\n weekday:\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n week: \"mt-2 flex w-full\",\n week_number_header: \"w-(--cell-size) select-none\",\n week_number: \"text-[0.8rem] text-muted-foreground select-none\",\n day: \"relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) [&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n outside: \"text-muted-foreground aria-selected:text-muted-foreground\",\n disabled: \"text-muted-foreground opacity-50\",\n hidden: \"invisible\",\n today:\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n range_start:\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n range_middle: \"rounded-none\",\n range_end:\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n};\n\n/** 兼容旧命名(对外公开的是 calendarClassNames) */\nexport { calendarClassNames as defaultClassNames };\n"],"mappings":";AAMA,IAAaA,IAA+D;CAC1E,MAAM;CACN,QAAQ;CACR,OAAO;CACP,KAAK;CACL,iBACE;CACF,aAAa;CACb,eACE;CACF,WACE;CACF,eAAe;CACf,UAAU;CACV,eAAe;CACf,YAAY;CACZ,UAAU;CACV,SACE;CACF,MAAM;CACN,oBAAoB;CACpB,aAAa;CACb,KAAK;CACL,SAAS;CACT,UAAU;CACV,QAAQ;CACR,OACE;CACF,aACE;CACF,cAAc;CACd,WACE;AACJ"}
@@ -1,4 +1,4 @@
1
- import { CalendarSelected } from './Calendar.types';
1
+ import { CalendarProps, CalendarSelected } from './Calendar.types';
2
2
  export declare function toDateOnly(date: Date): Date;
3
3
  export declare function startOfMonth(date: Date): Date;
4
4
  export declare function addMonths(date: Date, amount: number): Date;
@@ -19,3 +19,5 @@ export declare function formatWeekday(date: Date, locale?: string): string;
19
19
  export declare function formatMonthYear(date: Date, locale?: string): string;
20
20
  export declare function formatMonthShort(date: Date, locale?: string): string;
21
21
  export declare function getISOWeekNumber(date: Date): number;
22
+ /** 初始展示月份:受控 month > defaultMonth > 选中日期 > 今天 */
23
+ export declare function resolveInitialMonth(props: Pick<CalendarProps, "month" | "defaultMonth" | "selected" | "defaultSelected">): Date;
@@ -62,7 +62,10 @@ function g(e) {
62
62
  let r = new Date(Date.UTC(t.getUTCFullYear(), 0, 1));
63
63
  return Math.ceil(((t.getTime() - r.getTime()) / 864e5 + 1) / 7);
64
64
  }
65
+ function _(e) {
66
+ return e.month ?? e.defaultMonth ?? p(e.selected ?? e.defaultSelected) ?? /* @__PURE__ */ new Date();
67
+ }
65
68
  //#endregion
66
- export { r as addDays, n as addMonths, d as eachDayOfInterval, u as endOfWeek, h as formatMonthYear, m as formatWeekday, p as getFirstDate, g as getISOWeekNumber, o as isAfter, c as isAfterOrSame, a as isBefore, s as isBeforeOrSame, i as isSameDay, f as resolveLocaleCode, t as startOfMonth, l as startOfWeek, e as toDateOnly };
69
+ export { r as addDays, n as addMonths, d as eachDayOfInterval, u as endOfWeek, h as formatMonthYear, m as formatWeekday, p as getFirstDate, g as getISOWeekNumber, o as isAfter, c as isAfterOrSame, a as isBefore, s as isBeforeOrSame, i as isSameDay, _ as resolveInitialMonth, f as resolveLocaleCode, t as startOfMonth, l as startOfWeek, e as toDateOnly };
67
70
 
68
71
  //# sourceMappingURL=Calendar.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.utils.js","names":["toDateOnly","date","startOfMonth","addMonths","amount","addDays","isSameDay","a","b","isBefore","isAfter","isBeforeOrSame","isAfterOrSame","startOfWeek","day","weekStartsOn","endOfWeek","eachDayOfInterval","days","current","start","last","end","resolveLocaleCode","locale","getFirstDate","selected","formatWeekday","formatMonthYear","getISOWeekNumber","d","dayNum","yearStart"],"sources":["../../../../src/components/calendar/Calendar/Calendar.utils.ts"],"sourcesContent":["import type { CalendarSelected } from \"./Calendar.types\";\n\nexport function toDateOnly(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() < toDateOnly(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() > toDateOnly(b).getTime();\n}\n\nexport function isBeforeOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() <= toDateOnly(b).getTime();\n}\n\nexport function isAfterOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() >= toDateOnly(b).getTime();\n}\n\nexport function startOfWeek(date: Date, weekStartsOn = 0): Date {\n const day = toDateOnly(date);\n const diff = (day.getDay() - weekStartsOn + 7) % 7;\n return addDays(day, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn = 0): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = toDateOnly(start);\n const last = toDateOnly(end);\n while (current.getTime() <= last.getTime()) {\n days.push(current);\n current = addDays(current, 1);\n }\n return days;\n}\n\nexport function resolveLocaleCode(\n locale?: string | { code?: string },\n): string | undefined {\n if (!locale) return undefined;\n return typeof locale === \"string\" ? locale : locale.code;\n}\n\nexport function getFirstDate(selected: CalendarSelected): Date | undefined {\n if (selected instanceof Date) return selected;\n if (Array.isArray(selected)) return selected[0];\n if (selected?.from) return selected.from;\n if (selected?.to) return selected.to;\n return undefined;\n}\n\nexport function formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: \"short\" }).format(date);\n}\n\nexport function formatMonthYear(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatMonthShort(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { month: \"short\" }).format(date);\n}\n\nexport function getISOWeekNumber(date: Date): number {\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n const dayNum = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.utils.js","names":["toDateOnly","date","startOfMonth","addMonths","amount","addDays","isSameDay","a","b","isBefore","isAfter","isBeforeOrSame","isAfterOrSame","startOfWeek","day","weekStartsOn","endOfWeek","eachDayOfInterval","days","current","start","last","end","resolveLocaleCode","locale","getFirstDate","selected","formatWeekday","formatMonthYear","getISOWeekNumber","d","dayNum","yearStart","resolveInitialMonth","props"],"sources":["../../../../src/components/calendar/Calendar/Calendar.utils.ts"],"sourcesContent":["import type { CalendarProps, CalendarSelected } from \"./Calendar.types\";\n\nexport function toDateOnly(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() < toDateOnly(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() > toDateOnly(b).getTime();\n}\n\nexport function isBeforeOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() <= toDateOnly(b).getTime();\n}\n\nexport function isAfterOrSame(a: Date, b: Date): boolean {\n return toDateOnly(a).getTime() >= toDateOnly(b).getTime();\n}\n\nexport function startOfWeek(date: Date, weekStartsOn = 0): Date {\n const day = toDateOnly(date);\n const diff = (day.getDay() - weekStartsOn + 7) % 7;\n return addDays(day, -diff);\n}\n\nexport function endOfWeek(date: Date, weekStartsOn = 0): Date {\n return addDays(startOfWeek(date, weekStartsOn), 6);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = toDateOnly(start);\n const last = toDateOnly(end);\n while (current.getTime() <= last.getTime()) {\n days.push(current);\n current = addDays(current, 1);\n }\n return days;\n}\n\nexport function resolveLocaleCode(\n locale?: string | { code?: string },\n): string | undefined {\n if (!locale) return undefined;\n return typeof locale === \"string\" ? locale : locale.code;\n}\n\nexport function getFirstDate(selected: CalendarSelected): Date | undefined {\n if (selected instanceof Date) return selected;\n if (Array.isArray(selected)) return selected[0];\n if (selected?.from) return selected.from;\n if (selected?.to) return selected.to;\n return undefined;\n}\n\nexport function formatWeekday(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { weekday: \"short\" }).format(date);\n}\n\nexport function formatMonthYear(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatMonthShort(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { month: \"short\" }).format(date);\n}\n\nexport function getISOWeekNumber(date: Date): number {\n const d = new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n const dayNum = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n\n/** 初始展示月份:受控 month > defaultMonth > 选中日期 > 今天 */\nexport function resolveInitialMonth(\n props: Pick<\n CalendarProps,\n \"month\" | \"defaultMonth\" | \"selected\" | \"defaultSelected\"\n >,\n): Date {\n return (\n props.month ??\n props.defaultMonth ??\n getFirstDate(props.selected ?? props.defaultSelected) ??\n new Date()\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { ButtonVariant } from '../../button/Button.types';
2
+ import { CalendarClassNames, CalendarMode, CalendarSelected } from './Calendar.types';
3
+ export interface CalendarDayProps {
4
+ day: Date;
5
+ /** 该天所属的展示月份(用于判断 outside/hidden) */
6
+ monthDate: Date;
7
+ mode: CalendarMode;
8
+ selected: CalendarSelected;
9
+ showOutsideDays: boolean;
10
+ /** 缺省时用 Button 的默认变体 */
11
+ buttonVariant?: ButtonVariant;
12
+ /** 缺省时用运行环境的默认区域 */
13
+ localeCode?: string;
14
+ disabled?: boolean | ((date: Date) => boolean);
15
+ min?: Date;
16
+ max?: Date;
17
+ /** 按插槽 key 取最终类名(默认值 + 调用方覆盖) */
18
+ slotClass: (key: keyof CalendarClassNames) => string;
19
+ onSelect: (day: Date) => void;
20
+ }
21
+ /**
22
+ * 日历里的一格:根据 mode / selected / 边界推导出它自己的选中、区间与禁用状态,
23
+ * 并落成 `data-*`(下游样式依赖)+ 一个原生按钮。
24
+ *
25
+ * 状态推导全部复用 `Calendar.options` / `Calendar.selection` 的纯函数,
26
+ * 因此这一格不持有任何跨天的共享状态。
27
+ */
28
+ export declare function CalendarDay(props: CalendarDayProps): import('solid-js').JSX.Element;
@@ -0,0 +1,41 @@
1
+ import { clsx as e } from "../../../utils/clsx.js";
2
+ import t from "../../button/Button.styles.js";
3
+ import { isSameDay as n } from "./Calendar.utils.js";
4
+ import { isDayDisabled as r } from "./Calendar.options.js";
5
+ import { isDateSelected as i, isRangeEnd as a, isRangeMiddle as o, isRangeStart as s } from "./Calendar.selection.js";
6
+ import { className as c, delegateEvents as l, effect as u, insert as d, setAttribute as f, template as p } from "solid-js/web";
7
+ //#region src/components/calendar/Calendar/CalendarDay.tsx
8
+ var m = /*#__PURE__*/ p("<div><button type=button>");
9
+ function h(l) {
10
+ let p = () => r(l.day, {
11
+ disabled: l.disabled,
12
+ min: l.min,
13
+ max: l.max
14
+ }), h = () => i(l.mode, l.selected, l.day), g = () => l.day.getMonth() !== l.monthDate.getMonth(), _ = () => s(l.selected, l.day), v = () => a(l.selected, l.day), y = () => o(l.selected, l.day), b = () => l.mode === "single" && l.selected instanceof Date && n(l.day, l.selected);
15
+ return (() => {
16
+ var r = m(), i = r.firstChild;
17
+ return i.$$click = () => {
18
+ p() || l.onSelect(l.day);
19
+ }, d(i, () => l.day.getDate()), u((a) => {
20
+ var o = p(), s = h() ? "true" : void 0, u = e(l.slotClass("day"), g() && l.slotClass("outside"), !l.showOutsideDays && g() && l.slotClass("hidden"), n(l.day, /* @__PURE__ */ new Date()) && l.slotClass("today"), p() && l.slotClass("disabled"), _() && l.slotClass("range_start"), y() && l.slotClass("range_middle"), v() && l.slotClass("range_end")), d = p(), m = h(), x = l.day.toLocaleDateString(l.localeCode), S = b() ? "true" : void 0, C = _() ? "true" : void 0, w = v() ? "true" : void 0, T = y() ? "true" : void 0, E = e(t({ variant: l.buttonVariant }), "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal", "data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground", "data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground", "data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground", "data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground", "data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground", "data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground", "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground", "data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground", g() && "text-muted-foreground");
21
+ return o !== a.e && f(r, "aria-disabled", a.e = o), s !== a.t && f(r, "data-selected", a.t = s), u !== a.a && c(r, a.a = u), d !== a.o && (i.disabled = a.o = d), m !== a.i && f(i, "aria-pressed", a.i = m), x !== a.n && f(i, "data-day", a.n = x), S !== a.s && f(i, "data-selected-single", a.s = S), C !== a.h && f(i, "data-range-start", a.h = C), w !== a.r && f(i, "data-range-end", a.r = w), T !== a.d && f(i, "data-range-middle", a.d = T), E !== a.l && c(i, a.l = E), a;
22
+ }, {
23
+ e: void 0,
24
+ t: void 0,
25
+ a: void 0,
26
+ o: void 0,
27
+ i: void 0,
28
+ n: void 0,
29
+ s: void 0,
30
+ h: void 0,
31
+ r: void 0,
32
+ d: void 0,
33
+ l: void 0
34
+ }), r;
35
+ })();
36
+ }
37
+ l(["click"]);
38
+ //#endregion
39
+ export { h as CalendarDay };
40
+
41
+ //# sourceMappingURL=CalendarDay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendarDay.js","names":["buttonVariants","ButtonVariant","clsx","isDayDisabled","isDateSelected","isRangeEnd","isRangeMiddle","isRangeStart","CalendarClassNames","CalendarMode","CalendarSelected","isSameDay","CalendarDayProps","day","Date","monthDate","mode","selected","showOutsideDays","buttonVariant","localeCode","disabled","date","min","max","slotClass","key","onSelect","CalendarDay","props","isDisabled","isSelected","isOutside","getMonth","isRangeStartDay","isRangeEndDay","isRangeMiddleDay","isSingleSelected","_el$","_tmpl$","_el$2","firstChild","$$click","_$insert","getDate","_$effect","_p$","_v$","_v$2","undefined","_v$3","_v$4","_v$5","_v$6","toLocaleDateString","_v$7","_v$8","_v$9","_v$0","_v$1","variant","e","_$setAttribute","t","a","_$className","o","i","n","s","h","r","d","l","_$delegateEvents","buttonVariants","_$setAttribute","_$className","_$delegateEvents","Button_styles_default","_tmpl$","CalendarDay","isDisabled","isDayDisabled","props","isSelected","isDateSelected","isOutside","isRangeStartDay","isRangeStart","isRangeEndDay","isRangeEnd","isRangeMiddleDay","isRangeMiddle","isSingleSelected","isSameDay","_el$","_el$2","insert","effect","_v$","_v$2","_v$3","clsx","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_p$","setAttribute","className","delegateEvents"],"sources":["../../../../src/components/calendar/Calendar/CalendarDay.tsx"],"sourcesContent":["import buttonVariants from \"~/components/button/Button.styles\";\nimport type { ButtonVariant } from \"~/components/button/Button.types\";\nimport { clsx } from \"~/utils\";\nimport { isDayDisabled } from \"./Calendar.options\";\nimport {\n isDateSelected,\n isRangeEnd,\n isRangeMiddle,\n isRangeStart,\n} from \"./Calendar.selection\";\nimport type {\n CalendarClassNames,\n CalendarMode,\n CalendarSelected,\n} from \"./Calendar.types\";\nimport { isSameDay } from \"./Calendar.utils\";\n\nexport interface CalendarDayProps {\n day: Date;\n /** 该天所属的展示月份(用于判断 outside/hidden) */\n monthDate: Date;\n mode: CalendarMode;\n selected: CalendarSelected;\n showOutsideDays: boolean;\n /** 缺省时用 Button 的默认变体 */\n buttonVariant?: ButtonVariant;\n /** 缺省时用运行环境的默认区域 */\n localeCode?: string;\n disabled?: boolean | ((date: Date) => boolean);\n min?: Date;\n max?: Date;\n /** 按插槽 key 取最终类名(默认值 + 调用方覆盖) */\n slotClass: (key: keyof CalendarClassNames) => string;\n onSelect: (day: Date) => void;\n}\n\n/**\n * 日历里的一格:根据 mode / selected / 边界推导出它自己的选中、区间与禁用状态,\n * 并落成 `data-*`(下游样式依赖)+ 一个原生按钮。\n *\n * 状态推导全部复用 `Calendar.options` / `Calendar.selection` 的纯函数,\n * 因此这一格不持有任何跨天的共享状态。\n */\nexport function CalendarDay(props: CalendarDayProps) {\n const isDisabled = () =>\n isDayDisabled(props.day, {\n disabled: props.disabled,\n min: props.min,\n max: props.max,\n });\n const isSelected = () =>\n isDateSelected(props.mode, props.selected, props.day);\n const isOutside = () => props.day.getMonth() !== props.monthDate.getMonth();\n const isRangeStartDay = () => isRangeStart(props.selected, props.day);\n const isRangeEndDay = () => isRangeEnd(props.selected, props.day);\n const isRangeMiddleDay = () => isRangeMiddle(props.selected, props.day);\n const isSingleSelected = () =>\n props.mode === \"single\" &&\n props.selected instanceof Date &&\n isSameDay(props.day, props.selected);\n\n return (\n <div\n aria-disabled={isDisabled()}\n data-selected={isSelected() ? \"true\" : undefined}\n class={clsx(\n props.slotClass(\"day\"),\n isOutside() && props.slotClass(\"outside\"),\n !props.showOutsideDays && isOutside() && props.slotClass(\"hidden\"),\n isSameDay(props.day, new Date()) && props.slotClass(\"today\"),\n isDisabled() && props.slotClass(\"disabled\"),\n isRangeStartDay() && props.slotClass(\"range_start\"),\n isRangeMiddleDay() && props.slotClass(\"range_middle\"),\n isRangeEndDay() && props.slotClass(\"range_end\"),\n )}\n >\n <button\n type=\"button\"\n disabled={isDisabled()}\n aria-pressed={isSelected()}\n data-day={props.day.toLocaleDateString(props.localeCode)}\n data-selected-single={isSingleSelected() ? \"true\" : undefined}\n data-range-start={isRangeStartDay() ? \"true\" : undefined}\n data-range-end={isRangeEndDay() ? \"true\" : undefined}\n data-range-middle={isRangeMiddleDay() ? \"true\" : undefined}\n onClick={() => {\n if (!isDisabled()) props.onSelect(props.day);\n }}\n class={clsx(\n buttonVariants({ variant: props.buttonVariant }),\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal\",\n \"data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground\",\n \"data-[range-end=true]:hover:bg-primary data-[range-end=true]:hover:text-primary-foreground\",\n \"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground\",\n \"data-[range-middle=true]:hover:bg-muted data-[range-middle=true]:hover:text-foreground\",\n \"data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground\",\n \"data-[range-start=true]:hover:bg-primary data-[range-start=true]:hover:text-primary-foreground\",\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n \"data-[selected-single=true]:hover:bg-primary data-[selected-single=true]:hover:text-primary-foreground\",\n isOutside() && \"text-muted-foreground\",\n )}\n >\n {props.day.getDate()}\n </button>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { ButtonVariant } from '../../button/Button.types';
2
+ import { MonthOption } from './Calendar.options';
3
+ import { CalendarClassNames, CalendarMode, CalendarSelected } from './Calendar.types';
4
+ export interface CalendarMonthProps {
5
+ monthDate: Date;
6
+ /** 是否还能往前/往后翻月(由 Calendar 按 min/max 判定) */
7
+ canPrev: boolean;
8
+ canNext: boolean;
9
+ onMoveMonth: (delta: number) => void;
10
+ /** 缺省按 label(文本标题)处理 */
11
+ captionLayout?: "label" | "dropdown";
12
+ localeCode?: string;
13
+ /** 某一年份下可选的月份 */
14
+ monthOptions: (year: number) => MonthOption[];
15
+ yearOptions: number[];
16
+ onSelectMonth: (next: Date) => void;
17
+ showWeekNumber?: boolean;
18
+ weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
19
+ mode: CalendarMode;
20
+ selected: CalendarSelected;
21
+ showOutsideDays: boolean;
22
+ buttonVariant?: ButtonVariant;
23
+ disabled?: boolean | ((date: Date) => boolean);
24
+ min?: Date;
25
+ max?: Date;
26
+ onSelectDay: (day: Date) => void;
27
+ slotClass: (key: keyof CalendarClassNames) => string;
28
+ }
29
+ /**
30
+ * 一个月份的视图:翻月导航 + 标题(文本或下拉)+ 网格。
31
+ *
32
+ * 网格日期区间、周切分与星期表头都由纯函数算出来,本组件不持有跨月状态;
33
+ * 每一格交给 `CalendarDay`,标题交给 `CalendarMonthCaption`。
34
+ */
35
+ export declare function CalendarMonth(props: CalendarMonthProps): import('solid-js').JSX.Element;