tera-system-ui 0.1.64 → 0.1.67

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 (361) hide show
  1. package/dist/COMPONENT_API.md +2 -539
  2. package/dist/components/accordion/Accordion.d.ts +24 -0
  3. package/dist/components/accordion/Accordion.js +4 -0
  4. package/dist/components/accordion/components/Accordion.svelte +2 -8
  5. package/dist/components/accordion/components/AccordionContent.svelte +5 -12
  6. package/dist/components/accordion/components/AccordionItem.svelte +3 -9
  7. package/dist/components/accordion/components/AccordionTrigger.svelte +5 -15
  8. package/dist/components/ai/ChatBubble.svelte +35 -0
  9. package/dist/components/ai/ChatBubble.svelte.d.ts +12 -0
  10. package/dist/components/ai/PromptInput.svelte +58 -0
  11. package/dist/components/ai/PromptInput.svelte.d.ts +13 -0
  12. package/dist/components/ai/StreamText.svelte +41 -0
  13. package/dist/components/ai/StreamText.svelte.d.ts +11 -0
  14. package/dist/components/ai/SuggestionChips.svelte +34 -0
  15. package/dist/components/ai/SuggestionChips.svelte.d.ts +10 -0
  16. package/dist/components/ai/ThinkingLoader.svelte +34 -0
  17. package/dist/components/ai/ThinkingLoader.svelte.d.ts +11 -0
  18. package/dist/components/ai/index.d.ts +5 -0
  19. package/dist/components/ai/index.js +5 -0
  20. package/dist/components/alert/Alert.svelte +47 -0
  21. package/dist/components/alert/Alert.svelte.d.ts +15 -0
  22. package/dist/components/alert/index.d.ts +1 -0
  23. package/dist/components/alert/index.js +1 -0
  24. package/dist/components/avatar/Avatar.svelte +9 -25
  25. package/dist/components/badge/Badge.d.ts +52 -0
  26. package/dist/components/badge/Badge.js +22 -0
  27. package/dist/components/badge/Badge.svelte +22 -0
  28. package/dist/components/badge/Badge.svelte.d.ts +4 -0
  29. package/dist/components/badge/index.d.ts +2 -0
  30. package/dist/components/badge/index.js +1 -0
  31. package/dist/components/brand-logo/BrandLogo.svelte +12 -10
  32. package/dist/components/button/Button.d.ts +2 -2
  33. package/dist/components/button/Button.js +12 -12
  34. package/dist/components/button/Button.svelte +7 -34
  35. package/dist/components/card/Card.d.ts +68 -0
  36. package/dist/components/card/Card.js +28 -0
  37. package/dist/components/card/Card.svelte +33 -0
  38. package/dist/components/card/Card.svelte.d.ts +4 -0
  39. package/dist/components/card/index.d.ts +2 -0
  40. package/dist/components/card/index.js +1 -0
  41. package/dist/components/checkbox/Checkbox.d.ts +25 -4
  42. package/dist/components/checkbox/Checkbox.js +4 -0
  43. package/dist/components/checkbox/Checkbox.svelte +13 -16
  44. package/dist/components/checkbox/Checkbox.svelte.d.ts +2 -2
  45. package/dist/components/combobox/Combobox.d.ts +45 -9
  46. package/dist/components/combobox/Combobox.js +5 -7
  47. package/dist/components/combobox/Combobox.svelte +226 -8
  48. package/dist/components/combobox/Combobox.svelte.d.ts +2 -2
  49. package/dist/components/combobox/index.d.ts +1 -1
  50. package/dist/components/command/components/command-empty.svelte +3 -8
  51. package/dist/components/command/components/command-group.svelte +3 -13
  52. package/dist/components/command/components/command-input.svelte +5 -13
  53. package/dist/components/command/components/command-item.svelte +3 -9
  54. package/dist/components/command/components/command-link-item.svelte +3 -8
  55. package/dist/components/command/components/command-list.svelte +3 -8
  56. package/dist/components/command/components/command-separator.svelte +3 -8
  57. package/dist/components/command/components/command-shortcut.svelte +2 -10
  58. package/dist/components/command/components/command.svelte +29 -42
  59. package/dist/components/date-range-picker/DateRangePicker.svelte +490 -0
  60. package/dist/components/date-range-picker/DateRangePicker.svelte.d.ts +4 -0
  61. package/dist/components/date-range-picker/DateRangePicker.types.d.ts +38 -0
  62. package/dist/components/date-range-picker/DateRangePicker.types.js +1 -0
  63. package/dist/components/date-range-picker/index.d.ts +2 -0
  64. package/dist/components/date-range-picker/index.js +1 -0
  65. package/dist/components/dialog/Dialog.d.ts +43 -121
  66. package/dist/components/dialog/Dialog.js +1 -39
  67. package/dist/components/dialog/Dialog.svelte +103 -113
  68. package/dist/components/dialog/Dialog.svelte.d.ts +1 -2
  69. package/dist/components/dialog/dialog.scss +21 -24
  70. package/dist/components/drawer/Drawer.svelte +63 -0
  71. package/dist/components/drawer/Drawer.svelte.d.ts +16 -0
  72. package/dist/components/drawer/index.d.ts +1 -0
  73. package/dist/components/drawer/index.js +1 -0
  74. package/dist/components/dropdown-menu/DropdownMenu.d.ts +51 -24
  75. package/dist/components/dropdown-menu/DropdownMenu.js +1 -15
  76. package/dist/components/dropdown-menu/components/DropdownMenu.svelte +36 -34
  77. package/dist/components/dropdown-menu/components/DropdownMenu.svelte.d.ts +1 -1
  78. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte +8 -12
  79. package/dist/components/dropdown-menu/components/DropdownMenuGroup.svelte.d.ts +2 -4
  80. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte +11 -12
  81. package/dist/components/dropdown-menu/components/DropdownMenuHeader.svelte.d.ts +2 -4
  82. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte +27 -30
  83. package/dist/components/dropdown-menu/components/DropdownMenuItem.svelte.d.ts +1 -1
  84. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte +9 -11
  85. package/dist/components/dropdown-menu/components/DropdownMenuSeparator.svelte.d.ts +2 -4
  86. package/dist/components/fonts/TeraFontMono.svelte +4 -4
  87. package/dist/components/fonts/TeraFontMono.svelte.d.ts +1 -0
  88. package/dist/components/fonts/TeraFontSansSerif.svelte +4 -4
  89. package/dist/components/fonts/TeraFontSansSerif.svelte.d.ts +1 -1
  90. package/dist/components/header/Header.svelte +6 -9
  91. package/dist/components/header/header.scss +1 -1
  92. package/dist/components/icons/IconArrowBigRightFilled.svelte +3 -7
  93. package/dist/components/icons/IconBook.svelte +3 -6
  94. package/dist/components/icons/IconBookmarkPlus.svelte +3 -6
  95. package/dist/components/icons/IconCalculator.svelte +3 -6
  96. package/dist/components/icons/IconCheck.svelte +3 -6
  97. package/dist/components/icons/IconChevronDown.svelte +3 -6
  98. package/dist/components/icons/IconCoin.svelte +3 -6
  99. package/dist/components/icons/IconCoinConvert.svelte +2 -5
  100. package/dist/components/icons/IconCopy.svelte +3 -6
  101. package/dist/components/icons/IconCopyCheckFilled.svelte +3 -6
  102. package/dist/components/icons/IconHamburger.svelte +3 -6
  103. package/dist/components/icons/IconLanguage.svelte +3 -6
  104. package/dist/components/icons/IconLoader2.svelte +3 -6
  105. package/dist/components/icons/IconLogout.svelte +3 -6
  106. package/dist/components/icons/IconMoon.svelte +3 -6
  107. package/dist/components/icons/IconPointFilled.svelte +3 -6
  108. package/dist/components/icons/IconSearch.svelte +3 -6
  109. package/dist/components/icons/IconSettings.svelte +3 -6
  110. package/dist/components/icons/IconSun.svelte +3 -6
  111. package/dist/components/icons/IconSwitchHorizontal.svelte +3 -6
  112. package/dist/components/icons/IconSwitchVertical.svelte +3 -6
  113. package/dist/components/icons/IconTransform.svelte +3 -6
  114. package/dist/components/icons/IconX.svelte +3 -6
  115. package/dist/components/input/Input.d.ts +2 -2
  116. package/dist/components/input/Input.js +10 -10
  117. package/dist/components/input/Input.svelte +10 -26
  118. package/dist/components/label/Label.d.ts +2 -2
  119. package/dist/components/label/Label.js +2 -2
  120. package/dist/components/label/Label.svelte +4 -12
  121. package/dist/components/language-picker-button/LanguagePickerButton.svelte +23 -42
  122. package/dist/components/light-dark-toggle/LightDarkToggle.svelte +21 -26
  123. package/dist/components/marketing/FeatureCard.svelte +37 -0
  124. package/dist/components/marketing/FeatureCard.svelte.d.ts +13 -0
  125. package/dist/components/marketing/PricingCard.svelte +48 -0
  126. package/dist/components/marketing/PricingCard.svelte.d.ts +15 -0
  127. package/dist/components/marketing/StatBlock.svelte +14 -0
  128. package/dist/components/marketing/StatBlock.svelte.d.ts +10 -0
  129. package/dist/components/marketing/TestimonialCard.svelte +24 -0
  130. package/dist/components/marketing/TestimonialCard.svelte.d.ts +12 -0
  131. package/dist/components/marketing/index.d.ts +4 -0
  132. package/dist/components/marketing/index.js +4 -0
  133. package/dist/components/popover/Popover.d.ts +32 -13
  134. package/dist/components/popover/Popover.js +1 -7
  135. package/dist/components/popover/Popover.svelte +40 -158
  136. package/dist/components/popover/Popover.svelte.d.ts +2 -2
  137. package/dist/components/popover-responsive/PopoverResponsive.d.ts +18 -7
  138. package/dist/components/popover-responsive/PopoverResponsive.js +1 -7
  139. package/dist/components/popover-responsive/PopoverResponsive.svelte +25 -87
  140. package/dist/components/popover-responsive/PopoverResponsive.svelte.d.ts +2 -11
  141. package/dist/components/select/Select.d.ts +60 -23
  142. package/dist/components/select/Select.js +14 -35
  143. package/dist/components/select/Select.svelte +157 -28
  144. package/dist/components/select/Select.svelte.d.ts +2 -3
  145. package/dist/components/select/index.d.ts +1 -1
  146. package/dist/components/side-navigation/SideNavigation.svelte +73 -96
  147. package/dist/components/side-navigation/SideNavigationItem.svelte +2 -2
  148. package/dist/components/side-navigation/SideNavigationLayout.svelte +3 -5
  149. package/dist/components/side-navigation/sidenav.scss +17 -13
  150. package/dist/components/skeleton/Skeleton.svelte +48 -0
  151. package/dist/components/skeleton/Skeleton.svelte.d.ts +12 -0
  152. package/dist/components/skeleton/index.d.ts +1 -0
  153. package/dist/components/skeleton/index.js +1 -0
  154. package/dist/components/slider/Slider.d.ts +25 -15
  155. package/dist/components/slider/Slider.js +1 -7
  156. package/dist/components/slider/Slider.svelte +38 -164
  157. package/dist/components/slider/Slider.svelte.d.ts +1 -1
  158. package/dist/components/spinner/Spinner.svelte +39 -0
  159. package/dist/components/spinner/Spinner.svelte.d.ts +10 -0
  160. package/dist/components/spinner/index.d.ts +1 -0
  161. package/dist/components/spinner/index.js +1 -0
  162. package/dist/components/star-rating/StarRating.svelte +33 -49
  163. package/dist/components/switch/Switch.d.ts +19 -4
  164. package/dist/components/switch/Switch.js +4 -0
  165. package/dist/components/switch/Switch.svelte +13 -17
  166. package/dist/components/switch/Switch.svelte.d.ts +2 -2
  167. package/dist/components/table/Table.svelte +68 -0
  168. package/dist/components/table/Table.svelte.d.ts +40 -0
  169. package/dist/components/table/index.d.ts +1 -0
  170. package/dist/components/table/index.js +1 -0
  171. package/dist/components/tabs/Tabs.svelte.d.ts +45 -16
  172. package/dist/components/tabs/Tabs.svelte.js +8 -18
  173. package/dist/components/tabs/components/Tabs.svelte +27 -33
  174. package/dist/components/tabs/components/Tabs.svelte.d.ts +1 -1
  175. package/dist/components/tabs/components/TabsContent.svelte +13 -36
  176. package/dist/components/tabs/components/TabsContent.svelte.d.ts +2 -5
  177. package/dist/components/tabs/components/TabsItem.svelte +43 -32
  178. package/dist/components/tabs/components/TabsItem.svelte.d.ts +2 -5
  179. package/dist/components/tabs/components/TabsList.svelte +90 -58
  180. package/dist/components/tabs/components/TabsList.svelte.d.ts +2 -4
  181. package/dist/components/tera-ui-context/TeraUiContext.svelte +13 -26
  182. package/dist/components/text-area/TextArea.d.ts +2 -2
  183. package/dist/components/text-area/TextArea.js +9 -9
  184. package/dist/components/text-area/TextArea.svelte +41 -65
  185. package/dist/components/toast/ToastContainer.svelte +50 -0
  186. package/dist/components/toast/ToastContainer.svelte.d.ts +18 -0
  187. package/dist/components/toast/index.d.ts +3 -0
  188. package/dist/components/toast/index.js +2 -0
  189. package/dist/components/toast/toast.svelte.d.ts +22 -0
  190. package/dist/components/toast/toast.svelte.js +18 -0
  191. package/dist/components/tooltip/Tooltip.d.ts +23 -0
  192. package/dist/components/tooltip/Tooltip.js +1 -0
  193. package/dist/components/tooltip/Tooltip.svelte +30 -0
  194. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  195. package/dist/components/tooltip/index.d.ts +2 -0
  196. package/dist/components/tooltip/index.js +1 -0
  197. package/dist/components/user-avatar-with-menu/UserAvatarWithMenu.svelte +48 -69
  198. package/dist/index.d.ts +19 -2
  199. package/dist/index.js +12 -0
  200. package/dist/llms/accordion.md +90 -0
  201. package/dist/llms/ai.md +110 -0
  202. package/dist/llms/alert.md +29 -0
  203. package/dist/llms/avatar.md +34 -0
  204. package/dist/llms/badge.md +31 -0
  205. package/dist/llms/brand-logo.md +30 -0
  206. package/dist/llms/button.md +37 -0
  207. package/dist/llms/card.md +32 -0
  208. package/dist/llms/checkbox.md +35 -0
  209. package/dist/llms/colors.md +161 -0
  210. package/dist/llms/combobox.md +40 -0
  211. package/dist/llms/command.md +7 -0
  212. package/dist/llms/date-range-picker.md +36 -0
  213. package/dist/llms/dialog.md +45 -0
  214. package/dist/llms/drawer.md +30 -0
  215. package/dist/llms/dropdown-menu.md +112 -0
  216. package/dist/llms/fonts.md +7 -0
  217. package/dist/llms/header.md +26 -0
  218. package/dist/llms/icons.md +43 -0
  219. package/dist/llms/index.md +65 -0
  220. package/dist/llms/input.md +37 -0
  221. package/dist/llms/label.md +30 -0
  222. package/dist/llms/language-picker-button.md +30 -0
  223. package/dist/llms/light-dark-toggle.md +26 -0
  224. package/dist/llms/marketing.md +95 -0
  225. package/dist/llms/popover-responsive.md +32 -0
  226. package/dist/llms/popover.md +40 -0
  227. package/dist/llms/select.md +44 -0
  228. package/dist/llms/side-navigation.md +30 -0
  229. package/dist/llms/skeleton.md +28 -0
  230. package/dist/llms/slider.md +36 -0
  231. package/dist/llms/spinner.md +25 -0
  232. package/dist/llms/star-rating.md +31 -0
  233. package/dist/llms/switch.md +33 -0
  234. package/dist/llms/table.md +30 -0
  235. package/dist/llms/tabs.md +92 -0
  236. package/dist/llms/tera-ui-context.md +30 -0
  237. package/dist/llms/text-area.md +39 -0
  238. package/dist/llms/toast.md +7 -0
  239. package/dist/llms/tooltip.md +32 -0
  240. package/dist/llms/user-avatar-with-menu.md +28 -0
  241. package/dist/paraglide/README.md +72 -3
  242. package/dist/paraglide/messages/_index.d.ts +105 -7
  243. package/dist/paraglide/messages/_index.js +437 -7
  244. package/dist/paraglide/messages/ar.d.ts +23 -0
  245. package/dist/paraglide/messages/ar.js +38 -0
  246. package/dist/paraglide/messages/bg.d.ts +23 -0
  247. package/dist/paraglide/messages/bg.js +38 -0
  248. package/dist/paraglide/messages/bn.d.ts +23 -0
  249. package/dist/paraglide/messages/bn.js +38 -0
  250. package/dist/paraglide/messages/ca.d.ts +23 -0
  251. package/dist/paraglide/messages/ca.js +38 -0
  252. package/dist/paraglide/messages/cs.d.ts +23 -0
  253. package/dist/paraglide/messages/cs.js +38 -0
  254. package/dist/paraglide/messages/da.d.ts +23 -0
  255. package/dist/paraglide/messages/da.js +38 -0
  256. package/dist/paraglide/messages/de.d.ts +23 -0
  257. package/dist/paraglide/messages/de.js +38 -0
  258. package/dist/paraglide/messages/el.d.ts +23 -0
  259. package/dist/paraglide/messages/el.js +38 -0
  260. package/dist/paraglide/messages/en.d.ts +23 -0
  261. package/dist/paraglide/messages/en.js +38 -0
  262. package/dist/paraglide/messages/es.d.ts +23 -0
  263. package/dist/paraglide/messages/es.js +38 -0
  264. package/dist/paraglide/messages/fi.d.ts +23 -0
  265. package/dist/paraglide/messages/fi.js +38 -0
  266. package/dist/paraglide/messages/fr.d.ts +23 -0
  267. package/dist/paraglide/messages/fr.js +38 -0
  268. package/dist/paraglide/messages/he.d.ts +23 -0
  269. package/dist/paraglide/messages/he.js +38 -0
  270. package/dist/paraglide/messages/hi.d.ts +23 -0
  271. package/dist/paraglide/messages/hi.js +38 -0
  272. package/dist/paraglide/messages/hu.d.ts +23 -0
  273. package/dist/paraglide/messages/hu.js +38 -0
  274. package/dist/paraglide/messages/id.d.ts +23 -0
  275. package/dist/paraglide/messages/id.js +38 -0
  276. package/dist/paraglide/messages/it.d.ts +23 -0
  277. package/dist/paraglide/messages/it.js +38 -0
  278. package/dist/paraglide/messages/ja.d.ts +23 -0
  279. package/dist/paraglide/messages/ja.js +38 -0
  280. package/dist/paraglide/messages/ko.d.ts +23 -0
  281. package/dist/paraglide/messages/ko.js +38 -0
  282. package/dist/paraglide/messages/lt.d.ts +23 -0
  283. package/dist/paraglide/messages/lt.js +38 -0
  284. package/dist/paraglide/messages/lv.d.ts +23 -0
  285. package/dist/paraglide/messages/lv.js +38 -0
  286. package/dist/paraglide/messages/ms.d.ts +23 -0
  287. package/dist/paraglide/messages/ms.js +38 -0
  288. package/dist/paraglide/messages/nl.d.ts +23 -0
  289. package/dist/paraglide/messages/nl.js +38 -0
  290. package/dist/paraglide/messages/no.d.ts +23 -0
  291. package/dist/paraglide/messages/no.js +38 -0
  292. package/dist/paraglide/messages/pl.d.ts +23 -0
  293. package/dist/paraglide/messages/pl.js +38 -0
  294. package/dist/paraglide/messages/pt.d.ts +23 -0
  295. package/dist/paraglide/messages/pt.js +38 -0
  296. package/dist/paraglide/messages/ro.d.ts +23 -0
  297. package/dist/paraglide/messages/ro.js +38 -0
  298. package/dist/paraglide/messages/ru.d.ts +23 -0
  299. package/dist/paraglide/messages/ru.js +38 -0
  300. package/dist/paraglide/messages/sk.d.ts +23 -0
  301. package/dist/paraglide/messages/sk.js +38 -0
  302. package/dist/paraglide/messages/sl.d.ts +23 -0
  303. package/dist/paraglide/messages/sl.js +38 -0
  304. package/dist/paraglide/messages/sq.d.ts +23 -0
  305. package/dist/paraglide/messages/sq.js +38 -0
  306. package/dist/paraglide/messages/sr.d.ts +23 -0
  307. package/dist/paraglide/messages/sr.js +38 -0
  308. package/dist/paraglide/messages/sv.d.ts +23 -0
  309. package/dist/paraglide/messages/sv.js +38 -0
  310. package/dist/paraglide/messages/sw.d.ts +23 -0
  311. package/dist/paraglide/messages/sw.js +38 -0
  312. package/dist/paraglide/messages/ta.d.ts +23 -0
  313. package/dist/paraglide/messages/ta.js +38 -0
  314. package/dist/paraglide/messages/te.d.ts +23 -0
  315. package/dist/paraglide/messages/te.js +38 -0
  316. package/dist/paraglide/messages/th.d.ts +23 -0
  317. package/dist/paraglide/messages/th.js +38 -0
  318. package/dist/paraglide/messages/tl.d.ts +23 -0
  319. package/dist/paraglide/messages/tl.js +38 -0
  320. package/dist/paraglide/messages/tr.d.ts +23 -0
  321. package/dist/paraglide/messages/tr.js +38 -0
  322. package/dist/paraglide/messages/uk.d.ts +23 -0
  323. package/dist/paraglide/messages/uk.js +38 -0
  324. package/dist/paraglide/messages/vi.d.ts +23 -0
  325. package/dist/paraglide/messages/vi.js +38 -0
  326. package/dist/paraglide/messages/zh-CN.d.ts +23 -0
  327. package/dist/paraglide/messages/zh-CN.js +38 -0
  328. package/dist/paraglide/messages/zh-TW.d.ts +23 -0
  329. package/dist/paraglide/messages/zh-TW.js +38 -0
  330. package/dist/paraglide/registry.d.ts +13 -0
  331. package/dist/paraglide/registry.js +15 -0
  332. package/dist/paraglide/runtime.d.ts +243 -126
  333. package/dist/paraglide/runtime.js +473 -148
  334. package/dist/paraglide/server.d.ts +13 -20
  335. package/dist/paraglide/server.js +92 -40
  336. package/dist/stories/ComponentOverview.stories.svelte +533 -0
  337. package/dist/stories/ComponentOverview.stories.svelte.d.ts +6 -0
  338. package/dist/themes/tera-ui-base.css +664 -470
  339. package/dist/themes/theme-ai.css +100 -0
  340. package/dist/themes/theme-marketing.css +91 -0
  341. package/dist/themes/theme-professional.css +41 -0
  342. package/package.json +35 -29
  343. package/dist/paraglide/messages/text_account_settings.d.ts +0 -4
  344. package/dist/paraglide/messages/text_account_settings.js +0 -239
  345. package/dist/paraglide/messages/text_calces_documentation.d.ts +0 -4
  346. package/dist/paraglide/messages/text_calces_documentation.js +0 -239
  347. package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +0 -4
  348. package/dist/paraglide/messages/text_calces_scientific_calculator.js +0 -239
  349. package/dist/paraglide/messages/text_currency_converter.d.ts +0 -4
  350. package/dist/paraglide/messages/text_currency_converter.js +0 -239
  351. package/dist/paraglide/messages/text_logout.d.ts +0 -4
  352. package/dist/paraglide/messages/text_logout.js +0 -239
  353. package/dist/paraglide/messages/text_select_language.d.ts +0 -4
  354. package/dist/paraglide/messages/text_select_language.js +0 -239
  355. package/dist/paraglide/messages/text_unit_converter.d.ts +0 -4
  356. package/dist/paraglide/messages/text_unit_converter.js +0 -239
  357. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/.meta.json +0 -3
  358. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/README.md +0 -103
  359. package/dist/tera-i18n/projects/tera-system-ui/project.inlang/project_id +0 -1
  360. package/dist/themes/tw-preset.cjs +0 -160
  361. package/dist/themes/tw-preset.d.cts +0 -157
@@ -0,0 +1,490 @@
1
+ <script lang="ts">import { DateRangeField, Popover as PopoverPrimitive, RangeCalendar as CalendarPrimitive } from 'bits-ui';
2
+ import { CalendarDate } from '@internationalized/date';
3
+ import IconCalendar from "@tabler/icons-svelte/icons/calendar";
4
+ import IconChevronLeft from "@tabler/icons-svelte/icons/chevron-left";
5
+ import IconChevronRight from "@tabler/icons-svelte/icons/chevron-right";
6
+ import { IconX } from '../icons/index.js';
7
+ import { cn } from '../../utils/utils.js';
8
+ import { untrack } from 'svelte';
9
+ import { innerWidth } from 'svelte/reactivity/window';
10
+ import { Dialog } from '../dialog/index.js';
11
+ let { dateRange = $bindable([]), onchange, enableTime = false, placeholder = 'Select date range', disabled = false, class: className, minValue, maxValue, isDateDisabled, numberOfMonths: numberOfMonthsProp, weekStartsOn, } = $props();
12
+ const isDesktop = $derived((innerWidth.current ?? 768) >= 768);
13
+ let open = $state(false);
14
+ // ── Date-field value: drives DateRangeField segments ──────────────────
15
+ function toCalendarDate(date) {
16
+ return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
17
+ }
18
+ function fromCalendarDate(date, timeStr) {
19
+ const [h, m] = timeStr.split(':').map(Number);
20
+ return new Date(date.year, date.month - 1, date.day, h, m);
21
+ }
22
+ const [initD0, initD1] = dateRange;
23
+ let fieldValue = $state({
24
+ start: initD0 ? toCalendarDate(initD0) : undefined,
25
+ end: initD1 ? toCalendarDate(initD1) : undefined,
26
+ });
27
+ // ── Pending: temporary calendar state while picker is open ────────────
28
+ let pendingRange = $state({ start: undefined, end: undefined });
29
+ let startTime = $state('00:00');
30
+ let endTime = $state('23:59');
31
+ // Derived: highlight whichever quick-select preset matches the current
32
+ // pendingRange (works for manual picks, quick-select clicks, and pre-set values).
33
+ const activeQuickSelect = $derived.by(() => {
34
+ if (!pendingRange.start || !pendingRange.end)
35
+ return null;
36
+ const ps = pendingRange.start;
37
+ const pe = pendingRange.end;
38
+ for (const { key } of quickRanges) {
39
+ const { start, end } = getQuickRange(key);
40
+ if (ps.compare(toCalendarDate(start)) === 0 &&
41
+ pe.compare(toCalendarDate(end)) === 0) {
42
+ return key;
43
+ }
44
+ }
45
+ return null;
46
+ });
47
+ const hasRange = $derived(dateRange.length >= 2);
48
+ const canApply = $derived(!!pendingRange.start && !!pendingRange.end);
49
+ // ── Field direct-edit handler ─────────────────────────────────────────
50
+ function handleFieldChange(range) {
51
+ if (!range)
52
+ return;
53
+ fieldValue = range;
54
+ if (range.start && range.end) {
55
+ const result = [
56
+ fromCalendarDate(range.start, enableTime ? startTime : '00:00'),
57
+ fromCalendarDate(range.end, enableTime ? endTime : '23:59'),
58
+ ];
59
+ dateRange = result;
60
+ onchange?.(result);
61
+ }
62
+ else if (!range.start && !range.end && dateRange.length > 0) {
63
+ dateRange = [];
64
+ onchange?.([]);
65
+ }
66
+ }
67
+ // ── Picker open: copy fieldValue → pendingRange ───────────────────────
68
+ function initPendingState() {
69
+ pendingRange = { start: fieldValue.start, end: fieldValue.end };
70
+ const [d0, d1] = dateRange;
71
+ if (enableTime && d0 && d1) {
72
+ const sh = d0.getHours(), sm = d0.getMinutes();
73
+ const eh = d1.getHours(), em = d1.getMinutes();
74
+ startTime = `${String(sh).padStart(2, '0')}:${String(sm).padStart(2, '0')}`;
75
+ endTime = `${String(eh).padStart(2, '0')}:${String(em).padStart(2, '0')}`;
76
+ }
77
+ else {
78
+ startTime = '00:00';
79
+ endTime = '23:59';
80
+ }
81
+ }
82
+ $effect(() => {
83
+ if (open)
84
+ untrack(initPendingState);
85
+ });
86
+ // ── Apply / Reset ─────────────────────────────────────────────────────
87
+ function applyRange() {
88
+ if (!pendingRange.start || !pendingRange.end)
89
+ return;
90
+ const start = pendingRange.start;
91
+ const end = pendingRange.end;
92
+ fieldValue = { start, end };
93
+ const result = [
94
+ fromCalendarDate(start, enableTime ? startTime : '00:00'),
95
+ fromCalendarDate(end, enableTime ? endTime : '23:59'),
96
+ ];
97
+ dateRange = result;
98
+ onchange?.(result);
99
+ open = false;
100
+ }
101
+ function resetRange() {
102
+ fieldValue = { start: undefined, end: undefined };
103
+ dateRange = [];
104
+ onchange?.([]);
105
+ open = false;
106
+ }
107
+ // ── Quick select ──────────────────────────────────────────────────────
108
+ function applyQuickSelect(key) {
109
+ const { start, end } = getQuickRange(key);
110
+ pendingRange = { start: toCalendarDate(start), end: toCalendarDate(end) };
111
+ }
112
+ function getQuickRange(key) {
113
+ const now = new Date();
114
+ const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
115
+ switch (key) {
116
+ case 'today':
117
+ return { start: new Date(today), end: new Date(today) };
118
+ case 'yesterday': {
119
+ const y = new Date(today);
120
+ y.setDate(today.getDate() - 1);
121
+ return { start: y, end: new Date(y) };
122
+ }
123
+ case 'thisWeek': {
124
+ const dow = today.getDay();
125
+ const mon = new Date(today);
126
+ mon.setDate(today.getDate() - (dow === 0 ? 6 : dow - 1));
127
+ return { start: mon, end: new Date(today) };
128
+ }
129
+ case 'last7': {
130
+ const s = new Date(today);
131
+ s.setDate(today.getDate() - 6);
132
+ return { start: s, end: new Date(today) };
133
+ }
134
+ case 'last30': {
135
+ const s = new Date(today);
136
+ s.setDate(today.getDate() - 29);
137
+ return { start: s, end: new Date(today) };
138
+ }
139
+ case 'thisMonth':
140
+ return {
141
+ start: new Date(today.getFullYear(), today.getMonth(), 1),
142
+ end: new Date(today.getFullYear(), today.getMonth() + 1, 0)
143
+ };
144
+ case 'lastMonth':
145
+ return {
146
+ start: new Date(today.getFullYear(), today.getMonth() - 1, 1),
147
+ end: new Date(today.getFullYear(), today.getMonth(), 0)
148
+ };
149
+ case 'thisQuarter': {
150
+ const q = Math.floor(today.getMonth() / 3);
151
+ return {
152
+ start: new Date(today.getFullYear(), q * 3, 1),
153
+ end: new Date(today.getFullYear(), q * 3 + 3, 0)
154
+ };
155
+ }
156
+ case 'last3Months':
157
+ return {
158
+ start: new Date(today.getFullYear(), today.getMonth() - 3, today.getDate()),
159
+ end: new Date(today)
160
+ };
161
+ default:
162
+ return { start: new Date(today), end: new Date(today) };
163
+ }
164
+ }
165
+ const quickRanges = [
166
+ { key: 'today', label: 'Today' },
167
+ { key: 'yesterday', label: 'Yesterday' },
168
+ { key: 'thisWeek', label: 'This week' },
169
+ { key: 'last7', label: 'Last 7 days' },
170
+ { key: 'last30', label: 'Last 30 days' },
171
+ { key: 'thisMonth', label: 'This month' },
172
+ { key: 'lastMonth', label: 'Last month' },
173
+ { key: 'thisQuarter', label: 'This quarter' },
174
+ { key: 'last3Months', label: 'Last 3 months' },
175
+ ];
176
+ // ── Styles ────────────────────────────────────────────────────────────
177
+ const triggerStyles = $derived(cn('inline-flex items-center gap-2 h-9 px-3 rounded-md text-sm w-full', 'border border-border-default bg-surface-control', 'focus-within:border-interactive-hover focus-within:shadow-focus', 'data-[state=open]:border-interactive-hover data-[state=open]:shadow-focus', 'transition-[border-color,box-shadow] ease-ui duration-150', 'cursor-text', disabled && 'opacity-50 pointer-events-none'));
178
+ const iconBtnStyles = cn('inline-flex items-center justify-center size-6 rounded shrink-0 cursor-pointer', 'text-text-tertiary hover:bg-surface-hover hover:text-text-primary', 'transition-colors ease-ui duration-100');
179
+ const segmentStyles = cn('inline-block rounded-sm px-0.5 text-sm tabular-nums caret-transparent select-none outline-none', 'text-text-primary', 'data-[placeholder]:text-text-tertiary', 'focus:bg-primary-100 focus:text-primary-700 dark:focus:bg-primary-950 dark:focus:text-primary-300');
180
+ const dayStyles = cn('inline-flex items-center justify-center size-full rounded-md text-sm cursor-pointer select-none', 'transition-colors ease-ui duration-100', 'hover:bg-surface-hover text-text-primary', 'data-[outside-month]:opacity-0 data-[outside-month]:pointer-events-none', 'data-[today]:ring-1 data-[today]:ring-inset data-[today]:ring-border-default', 'data-[selected]:bg-primary-600 data-[selected]:text-white data-[selected]:hover:bg-primary-500 data-[selected]:ring-0', 'data-[range-middle]:bg-primary-100 data-[range-middle]:text-primary-700 data-[range-middle]:rounded-none data-[range-middle]:hover:bg-primary-200', 'dark:data-[range-middle]:bg-primary-950 dark:data-[range-middle]:text-primary-300 dark:data-[range-middle]:hover:bg-primary-900', 'data-[range-start]:rounded-r-none', 'data-[range-end]:rounded-l-none', 'data-[disabled]:opacity-30 data-[disabled]:pointer-events-none', 'data-[unavailable]:opacity-30 data-[unavailable]:pointer-events-none');
181
+ const popoverContentStyles = cn('z-50 overflow-hidden bg-surface rounded-container border border-border-default shadow-lg', 'animate-in fade-in zoom-in-95 duration-150', 'data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:zoom-out-95');
182
+ </script>
183
+
184
+ <!-- ─── Shared snippets ──────────────────────────────────────────────────── -->
185
+
186
+ {#snippet dateField()}
187
+ <DateRangeField.Root
188
+ bind:value={fieldValue}
189
+ onValueChange={handleFieldChange}
190
+ {disabled}
191
+ class="drp-field flex items-center gap-0.5 min-w-0 flex-1"
192
+ >
193
+ <DateRangeField.Input type="start" class="flex items-center gap-0">
194
+ {#snippet children({segments})}
195
+ {#each segments as {part, value}, si (si)}
196
+ {#if part === 'literal'}
197
+ <span class="text-text-tertiary text-sm select-none">{value}</span>
198
+ {:else}
199
+ <DateRangeField.Segment {part} class={segmentStyles}>{value}</DateRangeField.Segment>
200
+ {/if}
201
+ {/each}
202
+ {/snippet}
203
+ </DateRangeField.Input>
204
+
205
+ <span class="text-text-tertiary text-sm mx-1.5 select-none shrink-0">–</span>
206
+
207
+ <DateRangeField.Input type="end" class="flex items-center gap-0">
208
+ {#snippet children({segments})}
209
+ {#each segments as {part, value}, si (si)}
210
+ {#if part === 'literal'}
211
+ <span class="text-text-tertiary text-sm select-none">{value}</span>
212
+ {:else}
213
+ <DateRangeField.Segment {part} class={segmentStyles}>{value}</DateRangeField.Segment>
214
+ {/if}
215
+ {/each}
216
+ {/snippet}
217
+ </DateRangeField.Input>
218
+ </DateRangeField.Root>
219
+ {/snippet}
220
+
221
+ {#snippet calendarGrid(numberOfMonths: number)}
222
+ <CalendarPrimitive.Root
223
+ bind:value={pendingRange}
224
+ {numberOfMonths}
225
+ weekdayFormat="short"
226
+ fixedWeeks
227
+ {minValue}
228
+ {maxValue}
229
+ isDateDisabled={isDateDisabled ? (d) => isDateDisabled(d as CalendarDate) : undefined}
230
+ weekStartsOn={weekStartsOn}
231
+ >
232
+ {#snippet children({months, weekdays})}
233
+ <div class={cn('flex justify-center', numberOfMonths > 1 && 'gap-6')}>
234
+ {#each months as month, i (month.value.toString())}
235
+ <div class="flex flex-col gap-2">
236
+ <!-- Month heading -->
237
+ <div class="flex items-center justify-between gap-2">
238
+ {#if i === 0}
239
+ <CalendarPrimitive.PrevButton
240
+ class="inline-flex items-center justify-center size-7 rounded-md text-text-tertiary
241
+ hover:bg-surface-hover hover:text-text-primary
242
+ transition-colors ease-ui duration-100
243
+ disabled:opacity-30 disabled:pointer-events-none"
244
+ >
245
+ <IconChevronLeft class="size-4"/>
246
+ </CalendarPrimitive.PrevButton>
247
+ {:else}
248
+ <div class="size-7 shrink-0"></div>
249
+ {/if}
250
+
251
+ <span class="text-sm font-medium text-text-primary whitespace-nowrap">
252
+ {new Date(month.value.year, month.value.month - 1)
253
+ .toLocaleDateString('en-US', {month: 'long', year: 'numeric'})}
254
+ </span>
255
+
256
+ {#if i === months.length - 1}
257
+ <CalendarPrimitive.NextButton
258
+ class="inline-flex items-center justify-center size-7 rounded-md text-text-tertiary
259
+ hover:bg-surface-hover hover:text-text-primary
260
+ transition-colors ease-ui duration-100
261
+ disabled:opacity-30 disabled:pointer-events-none"
262
+ >
263
+ <IconChevronRight class="size-4"/>
264
+ </CalendarPrimitive.NextButton>
265
+ {:else}
266
+ <div class="size-7 shrink-0"></div>
267
+ {/if}
268
+ </div>
269
+
270
+ <!-- Grid -->
271
+ <CalendarPrimitive.Grid class="w-full border-collapse">
272
+ <CalendarPrimitive.GridHead>
273
+ <CalendarPrimitive.GridRow class="flex">
274
+ {#each weekdays as day (day)}
275
+ <CalendarPrimitive.HeadCell
276
+ class="w-9 h-8 text-xs font-medium text-text-tertiary flex items-center justify-center"
277
+ >
278
+ {day}
279
+ </CalendarPrimitive.HeadCell>
280
+ {/each}
281
+ </CalendarPrimitive.GridRow>
282
+ </CalendarPrimitive.GridHead>
283
+ <CalendarPrimitive.GridBody>
284
+ {#each month.weeks as weekDates, wi (wi)}
285
+ <CalendarPrimitive.GridRow class="flex mt-0.5">
286
+ {#each weekDates as date (date.toString())}
287
+ <CalendarPrimitive.Cell
288
+ {date}
289
+ month={month.value}
290
+ class="relative size-9 p-0 text-center"
291
+ >
292
+ <CalendarPrimitive.Day class={dayStyles}/>
293
+ </CalendarPrimitive.Cell>
294
+ {/each}
295
+ </CalendarPrimitive.GridRow>
296
+ {/each}
297
+ </CalendarPrimitive.GridBody>
298
+ </CalendarPrimitive.Grid>
299
+ </div>
300
+ {/each}
301
+ </div>
302
+ {/snippet}
303
+ </CalendarPrimitive.Root>
304
+ {/snippet}
305
+
306
+ {#snippet timePickers()}
307
+ <div class="border-t border-border-default px-4 py-3 flex items-center gap-2">
308
+ <span class="text-xs font-medium text-text-tertiary w-9 shrink-0">Start</span>
309
+ <input
310
+ type="time"
311
+ bind:value={startTime}
312
+ class="h-7 px-2 text-sm text-text-primary border border-border-default rounded-md bg-surface-control
313
+ focus:border-interactive-hover focus:shadow-focus outline-none
314
+ transition-[border-color,box-shadow] ease-ui duration-150"
315
+ />
316
+ <span class="text-text-tertiary mx-1 shrink-0">→</span>
317
+ <span class="text-xs font-medium text-text-tertiary w-6 shrink-0">End</span>
318
+ <input
319
+ type="time"
320
+ bind:value={endTime}
321
+ class="h-7 px-2 text-sm text-text-primary border border-border-default rounded-md bg-surface-control
322
+ focus:border-interactive-hover focus:shadow-focus outline-none
323
+ transition-[border-color,box-shadow] ease-ui duration-150"
324
+ />
325
+ </div>
326
+ {/snippet}
327
+
328
+ {#snippet pickerFooter()}
329
+ <div class="border-t border-border-default px-4 py-3 flex items-center justify-between gap-3">
330
+ <button
331
+ class="inline-flex items-center h-8 px-3 text-sm rounded-md cursor-pointer
332
+ border border-border-default bg-surface-control text-text-primary
333
+ hover:text-interactive-hover hover:border-interactive-hover
334
+ transition-[border-color,color] ease-ui duration-150"
335
+ onclick={resetRange}
336
+ >
337
+ Reset
338
+ </button>
339
+ <button
340
+ disabled={!canApply}
341
+ class="inline-flex items-center h-8 px-4 text-sm rounded-md cursor-pointer
342
+ bg-primary-600 text-white border border-primary-600
343
+ hover:bg-primary-500 hover:border-primary-500
344
+ disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none
345
+ transition-[background-color,border-color,opacity] ease-ui duration-150"
346
+ onclick={applyRange}
347
+ >
348
+ Apply
349
+ </button>
350
+ </div>
351
+ {/snippet}
352
+
353
+ <!-- ─── Root ─────────────────────────────────────────────────────────────── -->
354
+
355
+ <div class={cn('inline-flex w-full', className)}>
356
+ {#if isDesktop}
357
+ <!-- ── DESKTOP: Popover anchored to the whole trigger container ── -->
358
+ <PopoverPrimitive.Root bind:open>
359
+ <PopoverPrimitive.Trigger class={triggerStyles}>
360
+ {#snippet child({props: triggerProps})}
361
+ <!--
362
+ Intercept clicks: only toggle the popover when clicking
363
+ outside the date-field area (calendar icon, empty space).
364
+ -->
365
+ <div
366
+ {...triggerProps}
367
+ onclick={(e) => {
368
+ if (!(e.target as HTMLElement).closest('.drp-field')) {
369
+ (triggerProps.onclick as EventListener | undefined)?.(e);
370
+ }
371
+ }}
372
+ class={triggerStyles}
373
+ >
374
+ {@render dateField()}
375
+
376
+ <div class="flex items-center gap-1 shrink-0 ml-1">
377
+ <IconCalendar class="size-4 text-text-tertiary pointer-events-none"/>
378
+ {#if hasRange}
379
+ <button
380
+ type="button"
381
+ class={iconBtnStyles}
382
+ aria-label="Clear date range"
383
+ onclick={(e) => { e.stopPropagation(); resetRange(); }}
384
+ >
385
+ <IconX class="size-3"/>
386
+ </button>
387
+ {/if}
388
+ </div>
389
+ </div>
390
+ {/snippet}
391
+ </PopoverPrimitive.Trigger>
392
+
393
+ <PopoverPrimitive.Portal>
394
+ <PopoverPrimitive.Content sideOffset={4} align="start" class={popoverContentStyles}>
395
+ <div class="flex">
396
+ <!-- Quick-select sidebar -->
397
+ <div class="border-r border-border-default p-2 flex flex-col gap-0.5 w-36 shrink-0">
398
+ <p class="px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-text-tertiary">
399
+ Quick Select
400
+ </p>
401
+ {#each quickRanges as range (range.key)}
402
+ <button
403
+ class={cn(
404
+ 'w-full text-left px-2 py-1.5 rounded text-sm cursor-pointer',
405
+ 'transition-colors ease-ui duration-100',
406
+ activeQuickSelect === range.key
407
+ ? 'bg-interactive/10 text-interactive font-medium'
408
+ : 'text-text-primary hover:bg-surface-hover',
409
+ )}
410
+ onclick={() => applyQuickSelect(range.key)}
411
+ >
412
+ {range.label}
413
+ </button>
414
+ {/each}
415
+ </div>
416
+
417
+ <!-- Calendar + time + footer -->
418
+ <div class="flex flex-col min-w-0">
419
+ <div class="p-4">
420
+ {@render calendarGrid(numberOfMonthsProp ?? 2)}
421
+ </div>
422
+ {#if enableTime}{@render timePickers()}{/if}
423
+ {@render pickerFooter()}
424
+ </div>
425
+ </div>
426
+ </PopoverPrimitive.Content>
427
+ </PopoverPrimitive.Portal>
428
+ </PopoverPrimitive.Root>
429
+
430
+ {:else}
431
+ <!-- ── MOBILE: plain trigger → Dialog (bottom-sheet style) ─────── -->
432
+ <div class={triggerStyles}>
433
+ {@render dateField()}
434
+
435
+ <div class="flex items-center gap-1 shrink-0 ml-1">
436
+ <button
437
+ class={iconBtnStyles}
438
+ aria-label="Open date picker"
439
+ onclick={() => (open = true)}
440
+ >
441
+ <IconCalendar class="size-4"/>
442
+ </button>
443
+ {#if hasRange}
444
+ <button class={iconBtnStyles} aria-label="Clear date range" onclick={resetRange}>
445
+ <IconX class="size-3"/>
446
+ </button>
447
+ {/if}
448
+ </div>
449
+ </div>
450
+
451
+ <Dialog bind:open size="sm" closeButton={false} padding="none">
452
+ <div class="flex flex-col">
453
+ <!-- Dialog header -->
454
+ <div class="flex items-center justify-between px-4 py-3 border-b border-border-default shrink-0">
455
+ <span class="text-sm font-semibold text-text-primary">Select Date Range</span>
456
+ <button class={iconBtnStyles} aria-label="Close" onclick={() => (open = false)}>
457
+ <IconX class="size-4"/>
458
+ </button>
459
+ </div>
460
+
461
+ <!-- Horizontal quick-select pills -->
462
+ <div class="flex gap-1.5 px-3 py-2.5 overflow-x-auto border-b border-border-default shrink-0"
463
+ style="scrollbar-width:none;-ms-overflow-style:none;">
464
+ {#each quickRanges as range (range.key)}
465
+ <button
466
+ class={cn(
467
+ 'shrink-0 px-2.5 py-1 rounded-full text-xs border cursor-pointer whitespace-nowrap',
468
+ 'transition-colors ease-ui duration-100',
469
+ activeQuickSelect === range.key
470
+ ? 'bg-interactive/10 text-interactive border-interactive font-medium'
471
+ : 'border-border-default text-text-secondary hover:border-interactive hover:text-interactive',
472
+ )}
473
+ onclick={() => applyQuickSelect(range.key)}
474
+ >
475
+ {range.label}
476
+ </button>
477
+ {/each}
478
+ </div>
479
+
480
+ <!-- Single-month calendar -->
481
+ <div class="p-4 overflow-auto">
482
+ {@render calendarGrid(1)}
483
+ </div>
484
+
485
+ {#if enableTime}{@render timePickers()}{/if}
486
+ {@render pickerFooter()}
487
+ </div>
488
+ </Dialog>
489
+ {/if}
490
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { DateRangePickerProps } from './DateRangePicker.types.js';
2
+ declare const DateRangePicker: import("svelte").Component<DateRangePickerProps, {}, "dateRange">;
3
+ type DateRangePicker = ReturnType<typeof DateRangePicker>;
4
+ export default DateRangePicker;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @component DateRangePicker - Date range picker with quick-select presets, optional time support, and popover/drawer UI.
3
+ * Built on BitsUI RangeCalendar and Popover primitives.
4
+ */
5
+ import type { CalendarDate } from "@internationalized/date";
6
+ export interface DateRangePickerProps {
7
+ /** The currently selected date range as a two-element array [start, end]. Bindable. */
8
+ dateRange?: Date[];
9
+ /** Called when the user applies a new date range. */
10
+ onchange?: (date: Date[]) => void;
11
+ /** When true, shows hour and minute pickers alongside the calendar. */
12
+ enableTime?: boolean;
13
+ /** Placeholder text shown in the trigger when no range is selected. */
14
+ placeholder?: string;
15
+ /** Prevents all interaction. */
16
+ disabled?: boolean;
17
+ /** Additional CSS classes for the trigger button. */
18
+ class?: string;
19
+ /**
20
+ * Earliest selectable date.
21
+ * Use `import { CalendarDate } from '@internationalized/date'` to construct values.
22
+ */
23
+ minValue?: CalendarDate;
24
+ /**
25
+ * Latest selectable date.
26
+ * Use `import { CalendarDate } from '@internationalized/date'` to construct values.
27
+ */
28
+ maxValue?: CalendarDate;
29
+ /** Returns true for dates that should be shown as disabled and unselectable. */
30
+ isDateDisabled?: (date: CalendarDate) => boolean;
31
+ /** Number of calendar months shown side-by-side (desktop only). Defaults to 2. */
32
+ numberOfMonths?: 1 | 2;
33
+ /**
34
+ * Day of the week the calendar grid starts on.
35
+ * 0 = Sunday, 1 = Monday, … 6 = Saturday.
36
+ */
37
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
38
+ }
@@ -0,0 +1,2 @@
1
+ export { default as DateRangePicker } from './DateRangePicker.svelte';
2
+ export type { DateRangePickerProps } from './DateRangePicker.types.js';
@@ -0,0 +1 @@
1
+ export { default as DateRangePicker } from './DateRangePicker.svelte';