sheer-ui 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/package.json +369 -0
  4. package/src/lib/VENDORED.md +109 -0
  5. package/src/lib/assets/ui.css +733 -0
  6. package/src/lib/blocks/Appearance.svelte +104 -0
  7. package/src/lib/blocks/BoundaryFailed.svelte +33 -0
  8. package/src/lib/blocks/ErrorPage.svelte +65 -0
  9. package/src/lib/blocks/Footer.svelte +71 -0
  10. package/src/lib/blocks/Header.svelte +67 -0
  11. package/src/lib/blocks/Heading.svelte +86 -0
  12. package/src/lib/blocks/MobileNav.svelte +169 -0
  13. package/src/lib/blocks/PhoneInput.svelte +68 -0
  14. package/src/lib/blocks/Section.svelte +34 -0
  15. package/src/lib/blocks/alert-modal/AlertModal.svelte +83 -0
  16. package/src/lib/blocks/alert-modal/alert-modal.svelte.ts +81 -0
  17. package/src/lib/blocks/alert-modal/index.ts +2 -0
  18. package/src/lib/blocks/calendar.svelte +155 -0
  19. package/src/lib/blocks/copy-button/copy-button.svelte +43 -0
  20. package/src/lib/blocks/copy-button/copy.svelte.ts +52 -0
  21. package/src/lib/blocks/copy-button/index.ts +2 -0
  22. package/src/lib/blocks/date-picker/date-picker-with-presets.svelte +109 -0
  23. package/src/lib/blocks/date-picker/date-picker.svelte +91 -0
  24. package/src/lib/blocks/date-picker/index.ts +13 -0
  25. package/src/lib/blocks/date-picker/range-date-picker.svelte +128 -0
  26. package/src/lib/blocks/index.ts +12 -0
  27. package/src/lib/blocks/mockups/Browser.svelte +22 -0
  28. package/src/lib/blocks/mockups/Phone.svelte +44 -0
  29. package/src/lib/blocks/mockups/index.ts +2 -0
  30. package/src/lib/blocks/tab-nav/index.ts +1 -0
  31. package/src/lib/blocks/tab-nav/tab-nav.svelte +46 -0
  32. package/src/lib/blocks/time-picker/index.ts +16 -0
  33. package/src/lib/blocks/time-picker/time-input.svelte +118 -0
  34. package/src/lib/blocks/time-picker/time-picker.svelte +93 -0
  35. package/src/lib/blocks/time-picker/time-range-input.svelte +34 -0
  36. package/src/lib/blocks/time-picker/time-range-picker.svelte +180 -0
  37. package/src/lib/blocks/time-picker/time-slots.ts +61 -0
  38. package/src/lib/blocks/user-avatar/UserAvatar.svelte +36 -0
  39. package/src/lib/blocks/user-avatar/index.ts +1 -0
  40. package/src/lib/blocks/verification-code-field/VerificationCodeField.svelte +57 -0
  41. package/src/lib/blocks/verification-code-field/index.ts +1 -0
  42. package/src/lib/components/accordion/accordion.svelte.ts +43 -0
  43. package/src/lib/components/accordion/components/accordion-content.svelte +17 -0
  44. package/src/lib/components/accordion/components/accordion-item.svelte +58 -0
  45. package/src/lib/components/accordion/components/accordion-trigger.svelte +38 -0
  46. package/src/lib/components/accordion/components/accordion.svelte +24 -0
  47. package/src/lib/components/accordion/index.ts +11 -0
  48. package/src/lib/components/accordion/types.ts +19 -0
  49. package/src/lib/components/alert/alert-action.svelte +11 -0
  50. package/src/lib/components/alert/alert-description.svelte +18 -0
  51. package/src/lib/components/alert/alert-title.svelte +18 -0
  52. package/src/lib/components/alert/alert.svelte +37 -0
  53. package/src/lib/components/alert/index.ts +17 -0
  54. package/src/lib/components/avatar/avatar.svelte.ts +154 -0
  55. package/src/lib/components/avatar/components/avatar-fallback.svelte +38 -0
  56. package/src/lib/components/avatar/components/avatar-image.svelte +47 -0
  57. package/src/lib/components/avatar/components/avatar.svelte +57 -0
  58. package/src/lib/components/avatar/index.ts +9 -0
  59. package/src/lib/components/avatar/types.ts +46 -0
  60. package/src/lib/components/badge/badge.svelte +49 -0
  61. package/src/lib/components/badge/index.ts +1 -0
  62. package/src/lib/components/breadcrumb/breadcrumb-ellipsis.svelte +23 -0
  63. package/src/lib/components/breadcrumb/breadcrumb-item.svelte +11 -0
  64. package/src/lib/components/breadcrumb/breadcrumb-link.svelte +32 -0
  65. package/src/lib/components/breadcrumb/breadcrumb-list.svelte +15 -0
  66. package/src/lib/components/breadcrumb/breadcrumb-page.svelte +18 -0
  67. package/src/lib/components/breadcrumb/breadcrumb-separator.svelte +22 -0
  68. package/src/lib/components/breadcrumb/breadcrumb.svelte +10 -0
  69. package/src/lib/components/breadcrumb/index.ts +25 -0
  70. package/src/lib/components/button/button.svelte +55 -0
  71. package/src/lib/components/button/index.ts +12 -0
  72. package/src/lib/components/button/variants.ts +51 -0
  73. package/src/lib/components/calendar/calendar.svelte.ts +1081 -0
  74. package/src/lib/components/calendar/components/calendar-cell.svelte +34 -0
  75. package/src/lib/components/calendar/components/calendar-day.svelte +36 -0
  76. package/src/lib/components/calendar/components/calendar-grid-body.svelte +29 -0
  77. package/src/lib/components/calendar/components/calendar-grid-head.svelte +29 -0
  78. package/src/lib/components/calendar/components/calendar-grid-row.svelte +29 -0
  79. package/src/lib/components/calendar/components/calendar-grid.svelte +29 -0
  80. package/src/lib/components/calendar/components/calendar-head-cell.svelte +29 -0
  81. package/src/lib/components/calendar/components/calendar-header.svelte +29 -0
  82. package/src/lib/components/calendar/components/calendar-heading.svelte +33 -0
  83. package/src/lib/components/calendar/components/calendar-month-select.svelte +50 -0
  84. package/src/lib/components/calendar/components/calendar-next-button.svelte +37 -0
  85. package/src/lib/components/calendar/components/calendar-prev-button.svelte +37 -0
  86. package/src/lib/components/calendar/components/calendar-year-select.svelte +50 -0
  87. package/src/lib/components/calendar/components/calendar.svelte +123 -0
  88. package/src/lib/components/calendar/exports.ts +31 -0
  89. package/src/lib/components/calendar/index.ts +2 -0
  90. package/src/lib/components/calendar/types.ts +417 -0
  91. package/src/lib/components/card/card-action.svelte +15 -0
  92. package/src/lib/components/card/card-content.svelte +11 -0
  93. package/src/lib/components/card/card-description.svelte +11 -0
  94. package/src/lib/components/card/card-footer.svelte +11 -0
  95. package/src/lib/components/card/card-header.svelte +18 -0
  96. package/src/lib/components/card/card-title.svelte +11 -0
  97. package/src/lib/components/card/card.svelte +15 -0
  98. package/src/lib/components/card/index.ts +25 -0
  99. package/src/lib/components/carousel/carousel-arrow.svelte +42 -0
  100. package/src/lib/components/carousel/carousel-content.svelte +25 -0
  101. package/src/lib/components/carousel/carousel-dots.svelte +21 -0
  102. package/src/lib/components/carousel/carousel-item.svelte +21 -0
  103. package/src/lib/components/carousel/carousel-next.svelte +9 -0
  104. package/src/lib/components/carousel/carousel-previous.svelte +9 -0
  105. package/src/lib/components/carousel/carousel.svelte +245 -0
  106. package/src/lib/components/carousel/carouselState.svelte.ts +30 -0
  107. package/src/lib/components/carousel/index.ts +24 -0
  108. package/src/lib/components/chart/chart-container.svelte +52 -0
  109. package/src/lib/components/chart/chart-style.svelte +29 -0
  110. package/src/lib/components/chart/chart-tooltip.svelte +163 -0
  111. package/src/lib/components/chart/chart-utils.ts +50 -0
  112. package/src/lib/components/chart/index.ts +6 -0
  113. package/src/lib/components/checkbox/checkbox.svelte.ts +199 -0
  114. package/src/lib/components/checkbox/components/checkbox-group-label.svelte +29 -0
  115. package/src/lib/components/checkbox/components/checkbox-group.svelte +48 -0
  116. package/src/lib/components/checkbox/components/checkbox.svelte +85 -0
  117. package/src/lib/components/checkbox/index.ts +9 -0
  118. package/src/lib/components/checkbox/types.ts +131 -0
  119. package/src/lib/components/checkbox-native/checkbox.svelte +96 -0
  120. package/src/lib/components/checkbox-native/index.ts +8 -0
  121. package/src/lib/components/collapsible/components/collapsible-content.svelte +16 -0
  122. package/src/lib/components/collapsible/components/collapsible-trigger.svelte +14 -0
  123. package/src/lib/components/collapsible/components/collapsible.svelte +68 -0
  124. package/src/lib/components/collapsible/index.ts +9 -0
  125. package/src/lib/components/collapsible/types.ts +25 -0
  126. package/src/lib/components/combobox/components/combobox-arrow.svelte +8 -0
  127. package/src/lib/components/combobox/components/combobox-input.svelte +46 -0
  128. package/src/lib/components/combobox/components/combobox-trigger.svelte +44 -0
  129. package/src/lib/components/combobox/components/combobox.svelte +83 -0
  130. package/src/lib/components/combobox/index.ts +30 -0
  131. package/src/lib/components/combobox/select/components/select-content-static.svelte +56 -0
  132. package/src/lib/components/combobox/select/components/select-content.svelte +95 -0
  133. package/src/lib/components/combobox/select/components/select-group-heading.svelte +51 -0
  134. package/src/lib/components/combobox/select/components/select-group.svelte +51 -0
  135. package/src/lib/components/combobox/select/components/select-hidden-input.svelte +16 -0
  136. package/src/lib/components/combobox/select/components/select-item.svelte +86 -0
  137. package/src/lib/components/combobox/select/components/select-scroll-down-button.svelte +41 -0
  138. package/src/lib/components/combobox/select/components/select-scroll-up-button.svelte +34 -0
  139. package/src/lib/components/combobox/select/components/select-trigger.svelte +32 -0
  140. package/src/lib/components/combobox/select/components/select-value.svelte +40 -0
  141. package/src/lib/components/combobox/select/components/select-viewport.svelte +29 -0
  142. package/src/lib/components/combobox/select/components/select.svelte +92 -0
  143. package/src/lib/components/combobox/select/select.svelte.ts +1596 -0
  144. package/src/lib/components/combobox/select/types.ts +291 -0
  145. package/src/lib/components/combobox/types.ts +77 -0
  146. package/src/lib/components/command/command-dialog.svelte +42 -0
  147. package/src/lib/components/command/command.svelte.ts +1506 -0
  148. package/src/lib/components/command/components/_command-label.svelte +31 -0
  149. package/src/lib/components/command/components/command-empty.svelte +34 -0
  150. package/src/lib/components/command/components/command-group-heading.svelte +29 -0
  151. package/src/lib/components/command/components/command-group-items.svelte +31 -0
  152. package/src/lib/components/command/components/command-group.svelte +76 -0
  153. package/src/lib/components/command/components/command-input.svelte +55 -0
  154. package/src/lib/components/command/components/command-item.svelte +61 -0
  155. package/src/lib/components/command/components/command-link-item.svelte +61 -0
  156. package/src/lib/components/command/components/command-list.svelte +41 -0
  157. package/src/lib/components/command/components/command-loading.svelte +30 -0
  158. package/src/lib/components/command/components/command-separator.svelte +34 -0
  159. package/src/lib/components/command/components/command-viewport.svelte +29 -0
  160. package/src/lib/components/command/components/command.svelte +143 -0
  161. package/src/lib/components/command/compute-command-score.ts +207 -0
  162. package/src/lib/components/command/index.ts +29 -0
  163. package/src/lib/components/command/types.ts +222 -0
  164. package/src/lib/components/command/utils.ts +30 -0
  165. package/src/lib/components/context-menu/components/context-menu-content-static.svelte +22 -0
  166. package/src/lib/components/context-menu/components/context-menu-content.svelte +22 -0
  167. package/src/lib/components/context-menu/components/context-menu-trigger.svelte +46 -0
  168. package/src/lib/components/context-menu/components/context-menu.svelte +8 -0
  169. package/src/lib/components/context-menu/index.ts +39 -0
  170. package/src/lib/components/context-menu/types.ts +56 -0
  171. package/src/lib/components/data-table/column-helpers.ts +97 -0
  172. package/src/lib/components/data-table/data-table-checkbox.svelte +25 -0
  173. package/src/lib/components/data-table/data-table-sort-button.svelte +16 -0
  174. package/src/lib/components/data-table/flex-render.svelte +42 -0
  175. package/src/lib/components/data-table/index.ts +29 -0
  176. package/src/lib/components/data-table/render-helpers.ts +105 -0
  177. package/src/lib/components/data-table/table-cell.svelte +9 -0
  178. package/src/lib/components/data-table/table-column-header.svelte +51 -0
  179. package/src/lib/components/data-table/table-faceted-filter.svelte +109 -0
  180. package/src/lib/components/data-table/table-pagination.svelte +54 -0
  181. package/src/lib/components/data-table/table-priority-cell.svelte +22 -0
  182. package/src/lib/components/data-table/table-row-actions.svelte +29 -0
  183. package/src/lib/components/data-table/table-status-cell.svelte +34 -0
  184. package/src/lib/components/data-table/table-title-cell.svelte +24 -0
  185. package/src/lib/components/data-table/table-toolbar.svelte +55 -0
  186. package/src/lib/components/data-table/table-view-options.svelte +25 -0
  187. package/src/lib/components/date-field/components/date-field-hidden-input.svelte +9 -0
  188. package/src/lib/components/date-field/components/date-field-input.svelte +33 -0
  189. package/src/lib/components/date-field/components/date-field-label.svelte +29 -0
  190. package/src/lib/components/date-field/components/date-field-segment.svelte +29 -0
  191. package/src/lib/components/date-field/components/date-field.svelte +106 -0
  192. package/src/lib/components/date-field/date-field.svelte.ts +1474 -0
  193. package/src/lib/components/date-field/index.ts +11 -0
  194. package/src/lib/components/date-field/types.ts +165 -0
  195. package/src/lib/components/date-range-field/components/date-range-field-input.svelte +36 -0
  196. package/src/lib/components/date-range-field/components/date-range-field-label.svelte +29 -0
  197. package/src/lib/components/date-range-field/components/date-range-field.svelte +106 -0
  198. package/src/lib/components/date-range-field/date-range-field.svelte.ts +212 -0
  199. package/src/lib/components/date-range-field/index.ts +11 -0
  200. package/src/lib/components/date-range-field/types.ts +171 -0
  201. package/src/lib/components/dialog/components/dialog-close.svelte +31 -0
  202. package/src/lib/components/dialog/components/dialog-content-headless.svelte +104 -0
  203. package/src/lib/components/dialog/components/dialog-content.svelte +69 -0
  204. package/src/lib/components/dialog/components/dialog-description.svelte +29 -0
  205. package/src/lib/components/dialog/components/dialog-overlay.svelte +31 -0
  206. package/src/lib/components/dialog/components/dialog-title.svelte +30 -0
  207. package/src/lib/components/dialog/components/dialog-trigger.svelte +30 -0
  208. package/src/lib/components/dialog/components/dialog.svelte +21 -0
  209. package/src/lib/components/dialog/components/modal-surface.svelte +131 -0
  210. package/src/lib/components/dialog/dialog.svelte.ts +371 -0
  211. package/src/lib/components/dialog/index.ts +19 -0
  212. package/src/lib/components/dialog/types.ts +105 -0
  213. package/src/lib/components/drawer/drawer-close.svelte +7 -0
  214. package/src/lib/components/drawer/drawer-content.svelte +91 -0
  215. package/src/lib/components/drawer/drawer-description.svelte +8 -0
  216. package/src/lib/components/drawer/drawer-footer.svelte +11 -0
  217. package/src/lib/components/drawer/drawer-header.svelte +11 -0
  218. package/src/lib/components/drawer/drawer-nested.svelte +44 -0
  219. package/src/lib/components/drawer/drawer-overlay.svelte +60 -0
  220. package/src/lib/components/drawer/drawer-portal.svelte +10 -0
  221. package/src/lib/components/drawer/drawer-title.svelte +8 -0
  222. package/src/lib/components/drawer/drawer-trigger.svelte +7 -0
  223. package/src/lib/components/drawer/drawer.svelte +290 -0
  224. package/src/lib/components/drawer/index.ts +37 -0
  225. package/src/lib/components/dropdown-menu/components/dropdown-menu-content-static.svelte +22 -0
  226. package/src/lib/components/dropdown-menu/components/dropdown-menu-content.svelte +22 -0
  227. package/src/lib/components/dropdown-menu/index.ts +39 -0
  228. package/src/lib/components/dropdown-menu/types.ts +41 -0
  229. package/src/lib/components/empty/empty-content.svelte +15 -0
  230. package/src/lib/components/empty/empty-description.svelte +15 -0
  231. package/src/lib/components/empty/empty-header.svelte +15 -0
  232. package/src/lib/components/empty/empty-media.svelte +21 -0
  233. package/src/lib/components/empty/empty-title.svelte +11 -0
  234. package/src/lib/components/empty/empty.svelte +18 -0
  235. package/src/lib/components/empty/index.ts +22 -0
  236. package/src/lib/components/empty/variants.ts +16 -0
  237. package/src/lib/components/field/field-content.svelte +14 -0
  238. package/src/lib/components/field/field-description.svelte +19 -0
  239. package/src/lib/components/field/field-error.svelte +47 -0
  240. package/src/lib/components/field/field-group.svelte +17 -0
  241. package/src/lib/components/field/field-label.svelte +18 -0
  242. package/src/lib/components/field/field-legend.svelte +23 -0
  243. package/src/lib/components/field/field-separator.svelte +32 -0
  244. package/src/lib/components/field/field-set.svelte +14 -0
  245. package/src/lib/components/field/field-title.svelte +14 -0
  246. package/src/lib/components/field/field.svelte +36 -0
  247. package/src/lib/components/field/index.ts +32 -0
  248. package/src/lib/components/field/variants.ts +19 -0
  249. package/src/lib/components/input/file-input.svelte +26 -0
  250. package/src/lib/components/input/index.ts +12 -0
  251. package/src/lib/components/input/input.svelte +24 -0
  252. package/src/lib/components/input/variants.ts +28 -0
  253. package/src/lib/components/item/index.ts +34 -0
  254. package/src/lib/components/item/item-actions.svelte +11 -0
  255. package/src/lib/components/item/item-content.svelte +15 -0
  256. package/src/lib/components/item/item-description.svelte +18 -0
  257. package/src/lib/components/item/item-footer.svelte +11 -0
  258. package/src/lib/components/item/item-group.svelte +16 -0
  259. package/src/lib/components/item/item-header.svelte +11 -0
  260. package/src/lib/components/item/item-media.svelte +37 -0
  261. package/src/lib/components/item/item-separator.svelte +9 -0
  262. package/src/lib/components/item/item-title.svelte +15 -0
  263. package/src/lib/components/item/item.svelte +61 -0
  264. package/src/lib/components/kbd/index.ts +10 -0
  265. package/src/lib/components/kbd/kbd-group.svelte +11 -0
  266. package/src/lib/components/kbd/kbd.svelte +18 -0
  267. package/src/lib/components/label/exports.ts +2 -0
  268. package/src/lib/components/label/index.ts +2 -0
  269. package/src/lib/components/label/label.svelte +39 -0
  270. package/src/lib/components/label/label.svelte.ts +39 -0
  271. package/src/lib/components/label/types.ts +7 -0
  272. package/src/lib/components/link-preview/components/link-preview-content.svelte +60 -0
  273. package/src/lib/components/link-preview/components/link-preview-trigger.svelte +29 -0
  274. package/src/lib/components/link-preview/components/link-preview.svelte +34 -0
  275. package/src/lib/components/link-preview/exports.ts +11 -0
  276. package/src/lib/components/link-preview/index.ts +2 -0
  277. package/src/lib/components/link-preview/link-preview.svelte.ts +270 -0
  278. package/src/lib/components/link-preview/types.ts +102 -0
  279. package/src/lib/components/menu/components/menu-arrow.svelte +14 -0
  280. package/src/lib/components/menu/components/menu-checkbox-group.svelte +42 -0
  281. package/src/lib/components/menu/components/menu-checkbox-item.svelte +85 -0
  282. package/src/lib/components/menu/components/menu-content.svelte +98 -0
  283. package/src/lib/components/menu/components/menu-group-heading.svelte +47 -0
  284. package/src/lib/components/menu/components/menu-group.svelte +36 -0
  285. package/src/lib/components/menu/components/menu-item.svelte +58 -0
  286. package/src/lib/components/menu/components/menu-radio-group.svelte +44 -0
  287. package/src/lib/components/menu/components/menu-radio-item.svelte +65 -0
  288. package/src/lib/components/menu/components/menu-separator.svelte +38 -0
  289. package/src/lib/components/menu/components/menu-sub-content-static.svelte +8 -0
  290. package/src/lib/components/menu/components/menu-sub-content.svelte +133 -0
  291. package/src/lib/components/menu/components/menu-sub-trigger.svelte +60 -0
  292. package/src/lib/components/menu/components/menu-sub.svelte +23 -0
  293. package/src/lib/components/menu/components/menu-trigger.svelte +50 -0
  294. package/src/lib/components/menu/components/menu.svelte +58 -0
  295. package/src/lib/components/menu/exports.ts +38 -0
  296. package/src/lib/components/menu/menu.svelte.ts +1599 -0
  297. package/src/lib/components/menu/types.ts +285 -0
  298. package/src/lib/components/menu/utils.ts +68 -0
  299. package/src/lib/components/menubar/components/menubar-content-static.svelte +50 -0
  300. package/src/lib/components/menubar/components/menubar-content.svelte +54 -0
  301. package/src/lib/components/menubar/components/menubar-menu.svelte +34 -0
  302. package/src/lib/components/menubar/components/menubar-trigger.svelte +50 -0
  303. package/src/lib/components/menubar/components/menubar.svelte +57 -0
  304. package/src/lib/components/menubar/exports.ts +44 -0
  305. package/src/lib/components/menubar/index.ts +2 -0
  306. package/src/lib/components/menubar/menubar.svelte.ts +394 -0
  307. package/src/lib/components/menubar/types.ts +97 -0
  308. package/src/lib/components/meter/components/meter.svelte +41 -0
  309. package/src/lib/components/meter/exports.ts +2 -0
  310. package/src/lib/components/meter/index.ts +2 -0
  311. package/src/lib/components/meter/meter.svelte.ts +47 -0
  312. package/src/lib/components/meter/types.ts +28 -0
  313. package/src/lib/components/navigation-menu/components/navigation-menu-content-impl.svelte +85 -0
  314. package/src/lib/components/navigation-menu/components/navigation-menu-content.svelte +58 -0
  315. package/src/lib/components/navigation-menu/components/navigation-menu-indicator-impl.svelte +29 -0
  316. package/src/lib/components/navigation-menu/components/navigation-menu-indicator.svelte +56 -0
  317. package/src/lib/components/navigation-menu/components/navigation-menu-item.svelte +56 -0
  318. package/src/lib/components/navigation-menu/components/navigation-menu-link.svelte +64 -0
  319. package/src/lib/components/navigation-menu/components/navigation-menu-list.svelte +59 -0
  320. package/src/lib/components/navigation-menu/components/navigation-menu-sub.svelte +46 -0
  321. package/src/lib/components/navigation-menu/components/navigation-menu-trigger.svelte +80 -0
  322. package/src/lib/components/navigation-menu/components/navigation-menu-viewport.svelte +63 -0
  323. package/src/lib/components/navigation-menu/components/navigation-menu.svelte +80 -0
  324. package/src/lib/components/navigation-menu/index.ts +28 -0
  325. package/src/lib/components/navigation-menu/navigation-menu.svelte.ts +1092 -0
  326. package/src/lib/components/navigation-menu/types.ts +189 -0
  327. package/src/lib/components/pagination/components/pagination-next-button.svelte +60 -0
  328. package/src/lib/components/pagination/components/pagination-page.svelte +65 -0
  329. package/src/lib/components/pagination/components/pagination-prev-button.svelte +60 -0
  330. package/src/lib/components/pagination/components/pagination.svelte +65 -0
  331. package/src/lib/components/pagination/index.ts +11 -0
  332. package/src/lib/components/pagination/pagination.svelte.ts +275 -0
  333. package/src/lib/components/pagination/types.ts +100 -0
  334. package/src/lib/components/pin-input/components/pin-input-cell.svelte +49 -0
  335. package/src/lib/components/pin-input/components/pin-input.svelte +76 -0
  336. package/src/lib/components/pin-input/exports.ts +4 -0
  337. package/src/lib/components/pin-input/index.ts +2 -0
  338. package/src/lib/components/pin-input/pin-input.svelte.ts +541 -0
  339. package/src/lib/components/pin-input/types.ts +118 -0
  340. package/src/lib/components/pin-input/usePasswordManager.svelte.ts +122 -0
  341. package/src/lib/components/popover/components/popover-close.svelte +38 -0
  342. package/src/lib/components/popover/components/popover-content.svelte +70 -0
  343. package/src/lib/components/popover/components/popover-header.svelte +11 -0
  344. package/src/lib/components/popover/components/popover-title.svelte +11 -0
  345. package/src/lib/components/popover/components/popover-trigger.svelte +44 -0
  346. package/src/lib/components/popover/components/popover.svelte +26 -0
  347. package/src/lib/components/popover/exports.ts +13 -0
  348. package/src/lib/components/popover/index.ts +2 -0
  349. package/src/lib/components/popover/popover.svelte.ts +392 -0
  350. package/src/lib/components/popover/types.ts +92 -0
  351. package/src/lib/components/progress/components/progress.svelte +56 -0
  352. package/src/lib/components/progress/exports.ts +3 -0
  353. package/src/lib/components/progress/index.ts +2 -0
  354. package/src/lib/components/progress/progress.svelte.ts +58 -0
  355. package/src/lib/components/progress/types.ts +28 -0
  356. package/src/lib/components/radio-group/context.ts +13 -0
  357. package/src/lib/components/radio-group/index.ts +10 -0
  358. package/src/lib/components/radio-group/radio-group-item.svelte +67 -0
  359. package/src/lib/components/radio-group/radio-group.svelte +87 -0
  360. package/src/lib/components/range-calendar/components/range-calendar-cell.svelte +31 -0
  361. package/src/lib/components/range-calendar/components/range-calendar-day.svelte +33 -0
  362. package/src/lib/components/range-calendar/components/range-calendar.svelte +120 -0
  363. package/src/lib/components/range-calendar/exports.ts +31 -0
  364. package/src/lib/components/range-calendar/index.ts +2 -0
  365. package/src/lib/components/range-calendar/range-calendar.svelte.ts +739 -0
  366. package/src/lib/components/range-calendar/types.ts +258 -0
  367. package/src/lib/components/resizable/index.ts +15 -0
  368. package/src/lib/components/resizable/resizable-handle.svelte +30 -0
  369. package/src/lib/components/resizable/resizable-pane-group.svelte +19 -0
  370. package/src/lib/components/scroll-area/components/scroll-area-corner-impl.svelte +34 -0
  371. package/src/lib/components/scroll-area/components/scroll-area-corner.svelte +18 -0
  372. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-auto.svelte +15 -0
  373. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-hover.svelte +22 -0
  374. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-scroll.svelte +16 -0
  375. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-shared.svelte +19 -0
  376. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-visible.svelte +16 -0
  377. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-x.svelte +23 -0
  378. package/src/lib/components/scroll-area/components/scroll-area-scrollbar-y.svelte +24 -0
  379. package/src/lib/components/scroll-area/components/scroll-area-scrollbar.svelte +56 -0
  380. package/src/lib/components/scroll-area/components/scroll-area-thumb-impl.svelte +49 -0
  381. package/src/lib/components/scroll-area/components/scroll-area-thumb.svelte +21 -0
  382. package/src/lib/components/scroll-area/components/scroll-area-viewport.svelte +39 -0
  383. package/src/lib/components/scroll-area/components/scroll-area.svelte +82 -0
  384. package/src/lib/components/scroll-area/exports.ts +13 -0
  385. package/src/lib/components/scroll-area/index.ts +2 -0
  386. package/src/lib/components/scroll-area/scroll-area.svelte.ts +946 -0
  387. package/src/lib/components/scroll-area/types.ts +67 -0
  388. package/src/lib/components/select/index.ts +5 -0
  389. package/src/lib/components/select/select-opt-group.svelte +10 -0
  390. package/src/lib/components/select/select-option.svelte +15 -0
  391. package/src/lib/components/select/select.svelte +281 -0
  392. package/src/lib/components/separator/components/separator.svelte +49 -0
  393. package/src/lib/components/separator/index.ts +3 -0
  394. package/src/lib/components/separator/separator.svelte.ts +43 -0
  395. package/src/lib/components/separator/types.ts +22 -0
  396. package/src/lib/components/sheet/components/sheet-close.svelte +8 -0
  397. package/src/lib/components/sheet/components/sheet-content.svelte +108 -0
  398. package/src/lib/components/sheet/components/sheet-description.svelte +9 -0
  399. package/src/lib/components/sheet/components/sheet-footer.svelte +11 -0
  400. package/src/lib/components/sheet/components/sheet-header.svelte +11 -0
  401. package/src/lib/components/sheet/components/sheet-overlay.svelte +13 -0
  402. package/src/lib/components/sheet/components/sheet-title.svelte +9 -0
  403. package/src/lib/components/sheet/components/sheet-trigger.svelte +8 -0
  404. package/src/lib/components/sheet/index.ts +47 -0
  405. package/src/lib/components/sheet/variants.ts +20 -0
  406. package/src/lib/components/sidebar/constants.ts +6 -0
  407. package/src/lib/components/sidebar/context.svelte.ts +54 -0
  408. package/src/lib/components/sidebar/index.ts +77 -0
  409. package/src/lib/components/sidebar/sidebar-content.svelte +16 -0
  410. package/src/lib/components/sidebar/sidebar-desktop-surface.svelte +60 -0
  411. package/src/lib/components/sidebar/sidebar-footer.svelte +11 -0
  412. package/src/lib/components/sidebar/sidebar-group-action.svelte +34 -0
  413. package/src/lib/components/sidebar/sidebar-group-content.svelte +16 -0
  414. package/src/lib/components/sidebar/sidebar-group-label.svelte +34 -0
  415. package/src/lib/components/sidebar/sidebar-group.svelte +16 -0
  416. package/src/lib/components/sidebar/sidebar-header.svelte +11 -0
  417. package/src/lib/components/sidebar/sidebar-input.svelte +14 -0
  418. package/src/lib/components/sidebar/sidebar-inset.svelte +18 -0
  419. package/src/lib/components/sidebar/sidebar-menu-action.svelte +38 -0
  420. package/src/lib/components/sidebar/sidebar-menu-badge.svelte +19 -0
  421. package/src/lib/components/sidebar/sidebar-menu-button.svelte +99 -0
  422. package/src/lib/components/sidebar/sidebar-menu-item.svelte +21 -0
  423. package/src/lib/components/sidebar/sidebar-menu-skeleton.svelte +34 -0
  424. package/src/lib/components/sidebar/sidebar-menu-sub-button.svelte +40 -0
  425. package/src/lib/components/sidebar/sidebar-menu-sub-item.svelte +16 -0
  426. package/src/lib/components/sidebar/sidebar-menu-sub.svelte +19 -0
  427. package/src/lib/components/sidebar/sidebar-menu.svelte +21 -0
  428. package/src/lib/components/sidebar/sidebar-mobile-surface.svelte +48 -0
  429. package/src/lib/components/sidebar/sidebar-provider.svelte +60 -0
  430. package/src/lib/components/sidebar/sidebar-rail.svelte +36 -0
  431. package/src/lib/components/sidebar/sidebar-separator.svelte +9 -0
  432. package/src/lib/components/sidebar/sidebar-trigger.svelte +35 -0
  433. package/src/lib/components/sidebar/sidebar.svelte +30 -0
  434. package/src/lib/components/sidebar/types.ts +14 -0
  435. package/src/lib/components/skeleton/index.ts +7 -0
  436. package/src/lib/components/skeleton/skeleton.svelte +9 -0
  437. package/src/lib/components/slider/components/slider-range.svelte +37 -0
  438. package/src/lib/components/slider/components/slider-thumb-label.svelte +42 -0
  439. package/src/lib/components/slider/components/slider-thumb.svelte +46 -0
  440. package/src/lib/components/slider/components/slider-tick-label.svelte +42 -0
  441. package/src/lib/components/slider/components/slider-tick.svelte +28 -0
  442. package/src/lib/components/slider/components/slider.svelte +136 -0
  443. package/src/lib/components/slider/helpers.ts +249 -0
  444. package/src/lib/components/slider/index.ts +15 -0
  445. package/src/lib/components/slider/slider.svelte.ts +979 -0
  446. package/src/lib/components/slider/types.ts +294 -0
  447. package/src/lib/components/sonner/Toast.svelte +558 -0
  448. package/src/lib/components/sonner/Toaster.svelte +603 -0
  449. package/src/lib/components/sonner/index.ts +15 -0
  450. package/src/lib/components/sonner/toast-state.svelte.ts +217 -0
  451. package/src/lib/components/sonner/types.ts +384 -0
  452. package/src/lib/components/switch/index.ts +8 -0
  453. package/src/lib/components/switch/switch.svelte +78 -0
  454. package/src/lib/components/table/index.ts +28 -0
  455. package/src/lib/components/table/table-body.svelte +15 -0
  456. package/src/lib/components/table/table-caption.svelte +10 -0
  457. package/src/lib/components/table/table-cell.svelte +14 -0
  458. package/src/lib/components/table/table-footer.svelte +19 -0
  459. package/src/lib/components/table/table-head.svelte +17 -0
  460. package/src/lib/components/table/table-header.svelte +15 -0
  461. package/src/lib/components/table/table-row.svelte +14 -0
  462. package/src/lib/components/table/table.svelte +12 -0
  463. package/src/lib/components/tabs/components/tabs-content.svelte +30 -0
  464. package/src/lib/components/tabs/components/tabs-list.svelte +38 -0
  465. package/src/lib/components/tabs/components/tabs-trigger.svelte +51 -0
  466. package/src/lib/components/tabs/components/tabs.svelte +52 -0
  467. package/src/lib/components/tabs/index.ts +11 -0
  468. package/src/lib/components/tabs/tabs.svelte.ts +253 -0
  469. package/src/lib/components/tabs/types.ts +86 -0
  470. package/src/lib/components/textarea/index.ts +7 -0
  471. package/src/lib/components/textarea/textarea.svelte +23 -0
  472. package/src/lib/components/theme-toggle/index.ts +5 -0
  473. package/src/lib/components/theme-toggle/theme-toggle.svelte +49 -0
  474. package/src/lib/components/theme-toggle/theme.svelte.ts +81 -0
  475. package/src/lib/components/time-field/components/time-field-hidden-input.svelte +9 -0
  476. package/src/lib/components/time-field/components/time-field-input.svelte +33 -0
  477. package/src/lib/components/time-field/components/time-field-label.svelte +29 -0
  478. package/src/lib/components/time-field/components/time-field-segment.svelte +29 -0
  479. package/src/lib/components/time-field/components/time-field.svelte +99 -0
  480. package/src/lib/components/time-field/index.ts +11 -0
  481. package/src/lib/components/time-field/time-field.svelte.ts +1198 -0
  482. package/src/lib/components/time-field/types.ts +174 -0
  483. package/src/lib/components/time-range-field/components/time-range-field-input.svelte +36 -0
  484. package/src/lib/components/time-range-field/components/time-range-field-label.svelte +29 -0
  485. package/src/lib/components/time-range-field/components/time-range-field.svelte +104 -0
  486. package/src/lib/components/time-range-field/index.ts +11 -0
  487. package/src/lib/components/time-range-field/time-range-field.svelte.ts +235 -0
  488. package/src/lib/components/time-range-field/types.ts +181 -0
  489. package/src/lib/components/toggle/components/toggle.svelte +55 -0
  490. package/src/lib/components/toggle/index.ts +3 -0
  491. package/src/lib/components/toggle/toggle.svelte.ts +57 -0
  492. package/src/lib/components/toggle/types.ts +33 -0
  493. package/src/lib/components/toggle/variants.ts +25 -0
  494. package/src/lib/components/toggle-group/components/toggle-group-item.svelte +67 -0
  495. package/src/lib/components/toggle-group/components/toggle-group.svelte +109 -0
  496. package/src/lib/components/toggle-group/index.ts +7 -0
  497. package/src/lib/components/toggle-group/toggle-group.svelte.ts +235 -0
  498. package/src/lib/components/toggle-group/types.ts +89 -0
  499. package/src/lib/components/toolbar/components/toolbar-button.svelte +46 -0
  500. package/src/lib/components/toolbar/components/toolbar-group-item.svelte +56 -0
  501. package/src/lib/components/toolbar/components/toolbar-group.svelte +69 -0
  502. package/src/lib/components/toolbar/components/toolbar-link.svelte +39 -0
  503. package/src/lib/components/toolbar/components/toolbar.svelte +39 -0
  504. package/src/lib/components/toolbar/index.ts +13 -0
  505. package/src/lib/components/toolbar/toolbar.svelte.ts +373 -0
  506. package/src/lib/components/toolbar/types.ts +60 -0
  507. package/src/lib/components/tooltip/components/tooltip-content.svelte +81 -0
  508. package/src/lib/components/tooltip/components/tooltip-provider.svelte +26 -0
  509. package/src/lib/components/tooltip/components/tooltip-trigger.svelte +48 -0
  510. package/src/lib/components/tooltip/components/tooltip.svelte +55 -0
  511. package/src/lib/components/tooltip/index.ts +17 -0
  512. package/src/lib/components/tooltip/tooltip.svelte.ts +796 -0
  513. package/src/lib/components/tooltip/types.ts +175 -0
  514. package/src/lib/components/tooltip/utils.ts +1 -0
  515. package/src/lib/icons/google-icon.svelte +10 -0
  516. package/src/lib/icons/google-workspace.svelte +18 -0
  517. package/src/lib/icons/icon.d.ts +19 -0
  518. package/src/lib/icons/instagram.svelte +9 -0
  519. package/src/lib/icons/instantly.svelte +10 -0
  520. package/src/lib/icons/linkedin.svelte +9 -0
  521. package/src/lib/icons/mailshake.svelte +10 -0
  522. package/src/lib/icons/microsoft-365.svelte +7 -0
  523. package/src/lib/icons/passcode.svelte +12 -0
  524. package/src/lib/icons/replyio.svelte +10 -0
  525. package/src/lib/icons/smartlead.svelte +19 -0
  526. package/src/lib/icons/smtp.svelte +10 -0
  527. package/src/lib/icons/x-logo.svelte +9 -0
  528. package/src/lib/internal/animations-settled.svelte.ts +119 -0
  529. package/src/lib/internal/arrays.ts +253 -0
  530. package/src/lib/internal/attribute-types.ts +53 -0
  531. package/src/lib/internal/attrs.ts +64 -0
  532. package/src/lib/internal/body-scroll-lock.svelte.ts +330 -0
  533. package/src/lib/internal/create-id.ts +12 -0
  534. package/src/lib/internal/date-time/announcer.ts +74 -0
  535. package/src/lib/internal/date-time/calendar-helpers.svelte.ts +399 -0
  536. package/src/lib/internal/date-time/field/helpers.ts +431 -0
  537. package/src/lib/internal/date-time/field/parts.ts +15 -0
  538. package/src/lib/internal/date-time/field/range-field.svelte.ts +45 -0
  539. package/src/lib/internal/date-time/field/segments.ts +89 -0
  540. package/src/lib/internal/date-time/field/time-helpers.ts +311 -0
  541. package/src/lib/internal/date-time/formatter.ts +86 -0
  542. package/src/lib/internal/date-time/placeholders.ts +131 -0
  543. package/src/lib/internal/date-time/types.ts +121 -0
  544. package/src/lib/internal/date-time/utils.ts +243 -0
  545. package/src/lib/internal/dismissible-layer/index.ts +3 -0
  546. package/src/lib/internal/dismissible-layer/scheduler.ts +48 -0
  547. package/src/lib/internal/dismissible-layer/types.ts +57 -0
  548. package/src/lib/internal/dismissible-layer/use-dismissable-layer.svelte.ts +291 -0
  549. package/src/lib/internal/escape-layer/index.ts +3 -0
  550. package/src/lib/internal/escape-layer/types.ts +34 -0
  551. package/src/lib/internal/escape-layer/use-escape-layer.svelte.ts +91 -0
  552. package/src/lib/internal/floating-layer/components/floating-layer-arrow.svelte +35 -0
  553. package/src/lib/internal/floating-layer/components/floating-layer-content-static.svelte +19 -0
  554. package/src/lib/internal/floating-layer/components/floating-layer-content.svelte +52 -0
  555. package/src/lib/internal/floating-layer/components/floating-layer.svelte +12 -0
  556. package/src/lib/internal/floating-layer/components/index.ts +6 -0
  557. package/src/lib/internal/floating-layer/index.ts +2 -0
  558. package/src/lib/internal/floating-layer/types.ts +126 -0
  559. package/src/lib/internal/floating-layer/use-floating-layer.svelte.ts +471 -0
  560. package/src/lib/internal/focus-scope/focus-scope.svelte.ts +310 -0
  561. package/src/lib/internal/focus-scope/index.ts +4 -0
  562. package/src/lib/internal/focus-scope/types.ts +45 -0
  563. package/src/lib/internal/focus.ts +14 -0
  564. package/src/lib/internal/global-singleton.ts +10 -0
  565. package/src/lib/internal/group-value.svelte.ts +36 -0
  566. package/src/lib/internal/hover-intent-geometry.ts +96 -0
  567. package/src/lib/internal/index.ts +44 -0
  568. package/src/lib/internal/kbd.ts +60 -0
  569. package/src/lib/internal/layer-stack.ts +37 -0
  570. package/src/lib/internal/math.ts +11 -0
  571. package/src/lib/internal/merge-props.ts +7 -0
  572. package/src/lib/internal/native-dialog-controller.svelte.ts +102 -0
  573. package/src/lib/internal/native-popover.svelte.ts +173 -0
  574. package/src/lib/internal/open-cell.svelte.ts +41 -0
  575. package/src/lib/internal/paneforge/index.ts +5 -0
  576. package/src/lib/internal/paneforge/internal/constants.ts +2 -0
  577. package/src/lib/internal/paneforge/internal/helpers.ts +354 -0
  578. package/src/lib/internal/paneforge/internal/types.ts +33 -0
  579. package/src/lib/internal/paneforge/internal/utils/adjust-layout.ts +122 -0
  580. package/src/lib/internal/paneforge/internal/utils/aria.ts +36 -0
  581. package/src/lib/internal/paneforge/internal/utils/compare.ts +15 -0
  582. package/src/lib/internal/paneforge/internal/utils/is.ts +13 -0
  583. package/src/lib/internal/paneforge/internal/utils/resize.ts +31 -0
  584. package/src/lib/internal/paneforge/internal/utils/storage.ts +116 -0
  585. package/src/lib/internal/paneforge/internal/utils/style.ts +104 -0
  586. package/src/lib/internal/paneforge/pane-group.svelte +48 -0
  587. package/src/lib/internal/paneforge/pane-resizer.svelte +40 -0
  588. package/src/lib/internal/paneforge/pane.svelte +60 -0
  589. package/src/lib/internal/paneforge/paneforge.svelte.ts +821 -0
  590. package/src/lib/internal/paneforge/types.ts +179 -0
  591. package/src/lib/internal/popper-layer/index.ts +2 -0
  592. package/src/lib/internal/popper-layer/popper-content.svelte +19 -0
  593. package/src/lib/internal/popper-layer/popper-layer-inner.svelte +122 -0
  594. package/src/lib/internal/popper-layer/popper-layer.svelte +71 -0
  595. package/src/lib/internal/popper-layer/types.ts +65 -0
  596. package/src/lib/internal/portal/index.ts +2 -0
  597. package/src/lib/internal/portal/portal.svelte +61 -0
  598. package/src/lib/internal/prop-resolvers.ts +14 -0
  599. package/src/lib/internal/roving-focus-group.ts +147 -0
  600. package/src/lib/internal/roving-focus-item.svelte.ts +51 -0
  601. package/src/lib/internal/safe-polygon.svelte.ts +239 -0
  602. package/src/lib/internal/shared-state.svelte.ts +39 -0
  603. package/src/lib/internal/state-machine.ts +32 -0
  604. package/src/lib/internal/svelte-resize-observer.svelte.ts +37 -0
  605. package/src/lib/internal/tabbable.ts +398 -0
  606. package/src/lib/internal/table/core.ts +53 -0
  607. package/src/lib/internal/table/filter-fns.ts +10 -0
  608. package/src/lib/internal/table/index.ts +2 -0
  609. package/src/lib/internal/table/sorting-fns.ts +84 -0
  610. package/src/lib/internal/table/table.svelte.ts +330 -0
  611. package/src/lib/internal/table/types.ts +33 -0
  612. package/src/lib/internal/timeout-fn.svelte.ts +36 -0
  613. package/src/lib/internal/tools/box.svelte.ts +153 -0
  614. package/src/lib/internal/tools/index.ts +22 -0
  615. package/src/lib/internal/tools/types.ts +44 -0
  616. package/src/lib/internal/tools/utils/attach-ref.ts +74 -0
  617. package/src/lib/internal/tools/utils/compose-handlers.ts +36 -0
  618. package/src/lib/internal/tools/utils/dom-context.svelte.ts +63 -0
  619. package/src/lib/internal/tools/utils/dom.ts +62 -0
  620. package/src/lib/internal/tools/utils/events.ts +1 -0
  621. package/src/lib/internal/tools/utils/index.ts +5 -0
  622. package/src/lib/internal/tools/utils/strings.ts +28 -0
  623. package/src/lib/internal/typeahead.svelte.ts +48 -0
  624. package/src/lib/internal/types.ts +119 -0
  625. package/src/lib/internal/utils.ts +10 -0
  626. package/src/lib/internal/vaul/browser.ts +8 -0
  627. package/src/lib/internal/vaul/constants.ts +19 -0
  628. package/src/lib/internal/vaul/helpers.ts +39 -0
  629. package/src/lib/internal/vaul/types.ts +142 -0
  630. package/src/lib/internal/vaul/use-drawer-content.svelte.ts +219 -0
  631. package/src/lib/internal/vaul/use-drawer-root.svelte.ts +682 -0
  632. package/src/lib/internal/vaul/use-position-fixed.svelte.ts +142 -0
  633. package/src/lib/internal/vaul/use-prevent-scroll.svelte.ts +267 -0
  634. package/src/lib/internal/vaul/use-snap-points.svelte.ts +246 -0
  635. package/src/lib/time.ts +73 -0
@@ -0,0 +1,258 @@
1
+ import type { DateValue } from "@internationalized/date";
2
+ import type { OnChangeFn, WithChild, Without } from "../../internal/types.js";
3
+ import type { DateMatcher, DateRange, Month } from "../../internal/index.js";
4
+ import type { BitsPrimitiveDivAttributes } from "../../internal/attribute-types.js";
5
+
6
+ export type RangeCalendarRootSnippetProps = {
7
+ months: Month<DateValue>[];
8
+ weekdays: string[];
9
+ };
10
+
11
+ export type RangeCalendarRootPropsWithoutHTML = WithChild<
12
+ {
13
+ /**
14
+ * The value of the selected date range.
15
+ * @bindable
16
+ */
17
+ value?: DateRange;
18
+
19
+ /**
20
+ * A callback function called when the value changes.
21
+ */
22
+ onValueChange?: OnChangeFn<DateRange>;
23
+
24
+ /**
25
+ * The placeholder date, used to control the view of the
26
+ * calendar when no value is present.
27
+ *
28
+ * @default the current date
29
+ */
30
+ placeholder?: DateValue;
31
+
32
+ /**
33
+ * A callback function called when the placeholder value
34
+ * changes.
35
+ */
36
+ onPlaceholderChange?: OnChangeFn<DateValue>;
37
+
38
+ /**
39
+ * The minimum number of days that can be selected in a range.
40
+ *
41
+ * @default undefined
42
+ */
43
+ minDays?: number;
44
+
45
+ /**
46
+ * The maximum number of days that can be selected in a range.
47
+ *
48
+ * @default undefined
49
+ */
50
+ maxDays?: number;
51
+
52
+ /**
53
+ * Whether or not users can deselect a date once selected
54
+ * without selecting another date.
55
+ *
56
+ * @default false
57
+ */
58
+ preventDeselect?: boolean;
59
+
60
+ /**
61
+ * The minimum date that can be selected in the calendar.
62
+ */
63
+ minValue?: DateValue;
64
+
65
+ /**
66
+ * The maximum date that can be selected in the calendar.
67
+ */
68
+ maxValue?: DateValue;
69
+
70
+ /**
71
+ * Whether or not the calendar is disabled.
72
+ *
73
+ * @default false
74
+ */
75
+ disabled?: boolean;
76
+
77
+ /**
78
+ * Applicable only when `numberOfMonths` is greater than 1.
79
+ *
80
+ * Controls whether to use paged navigation for the next and previous buttons in the
81
+ * date picker. With paged navigation set to `true`, clicking the next/prev buttons
82
+ * changes all months in view. When set to `false`, it shifts the view by a single month.
83
+ *
84
+ * For example, with `pagedNavigation` set to `true` and 2 months displayed (January and
85
+ * February), clicking the next button changes the view to March and April. If `pagedNavigation`
86
+ * is `false`, the view shifts to February and March.
87
+ *
88
+ * @default false
89
+ */
90
+ pagedNavigation?: boolean;
91
+
92
+ /**
93
+ * The day of the week to start the calendar on, which must
94
+ * be a number between 0 and 6, where 0 is Sunday and 6 is
95
+ * Saturday.
96
+ *
97
+ * @default 0 (Sunday)
98
+ */
99
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
100
+
101
+ /**
102
+ * How the string representation of the weekdays provided via the `weekdays` state store
103
+ * should be formatted.
104
+ *
105
+ * ```md
106
+ * - "long": "Sunday", "Monday", "Tuesday", etc.
107
+ * - "short": "Sun", "Mon", "Tue", etc.
108
+ * - "narrow": "S", "M", "T", etc.
109
+ *```
110
+ *
111
+ * @default "narrow"
112
+ *
113
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#weekday
114
+ */
115
+ weekdayFormat?: Intl.DateTimeFormatOptions["weekday"];
116
+
117
+ /**
118
+ * A function that receives a date and returns `true` or `false` to indicate whether
119
+ * the date is disabled.
120
+ *
121
+ * @remarks
122
+ * Disabled dates cannot be focused or selected. Additionally, they are tagged
123
+ * with a data attribute to enable custom styling.
124
+ *
125
+ * `[data-disabled]` - applied to disabled dates
126
+ *
127
+ */
128
+ isDateDisabled?: DateMatcher;
129
+
130
+ /**
131
+ * Dates matching the provided matchers are marked as "unavailable." Unlike disabled dates,
132
+ * users can still focus and select unavailable dates. However, selecting an unavailable date
133
+ * renders the date picker as invalid.
134
+ *
135
+ * For example, in a calendar for booking appointments, you might mark already booked dates as
136
+ * unavailable. These dates could become available again before the appointment date, allowing
137
+ * users to select them to learn more about the appointment.
138
+ *
139
+ * `[data-unavailable]` - applied to unavailable dates
140
+ *
141
+ */
142
+ isDateUnavailable?: DateMatcher;
143
+
144
+ /**
145
+ * Display 6 weeks per month, regardless the month's number of weeks.
146
+ * This is useful for displaying a consistent calendar, where the size
147
+ * of the calendar doesn't change month to month.
148
+ *
149
+ * To display 6 weeks per month, you will need to render out the previous
150
+ * and next month's dates in the calendar as well.
151
+ *
152
+ * @default false
153
+ */
154
+ fixedWeeks?: boolean;
155
+
156
+ /**
157
+ * Determines the number of months to display on the calendar simultaneously.
158
+ * For navigation between months, refer to the `pagedNavigation` prop.
159
+ *
160
+ * @default 1
161
+ */
162
+ numberOfMonths?: number;
163
+
164
+ /**
165
+ * This label is exclusively used for accessibility, remaining hidden from the page.
166
+ * It's read by screen readers when the calendar is opened. The current month and year
167
+ * are automatically appended to the label, so you only need to provide the base label.
168
+ *
169
+ * For instance:
170
+ * - 'Date of birth' will be read as 'Date of birth, January 2021' if the current month is January 2021.
171
+ * - 'Appointment date' will be read as 'Appointment date, January 2021' if the current month is January 2021.
172
+ * - 'Booking date' will be read as 'Booking date, January 2021' if the current month is January 2021.
173
+ */
174
+ calendarLabel?: string;
175
+
176
+ /**
177
+ * The default locale setting.
178
+ *
179
+ * @default 'en'
180
+ */
181
+ locale?: string;
182
+
183
+ /**
184
+ * Whether the calendar is readonly. When true, the user will be able
185
+ * to focus and navigate the calendar, but will not be able to select
186
+ * dates. @see disabled for a similar prop that prevents focusing
187
+ * and selecting dates.
188
+ *
189
+ * @default false
190
+ */
191
+ readonly?: boolean;
192
+
193
+ /**
194
+ * Whether to disable the selection of days outside the current month. By default,
195
+ * days outside the current month are rendered to fill the calendar grid, but they
196
+ * are not selectable. Setting this prop to `true` will disable this behavior.
197
+ *
198
+ * @default false
199
+ */
200
+ disableDaysOutsideMonth?: boolean;
201
+
202
+ /**
203
+ * Whether to automatically reset the range if any date within the selected range
204
+ * becomes disabled. When true, the entire range will be cleared if a disabled
205
+ * date is found between the start and end dates.
206
+ *
207
+ * @default false
208
+ */
209
+ excludeDisabled?: boolean;
210
+
211
+ /**
212
+ * The format of the month names in the calendar.
213
+ *
214
+ * @default "long"
215
+ */
216
+ monthFormat?: Intl.DateTimeFormatOptions["month"] | ((month: number) => string);
217
+
218
+ /**
219
+ * The format of the year names in the calendar.
220
+ *
221
+ * @default "numeric"
222
+ */
223
+ yearFormat?: Intl.DateTimeFormatOptions["year"] | ((year: number) => string);
224
+ },
225
+ RangeCalendarRootSnippetProps
226
+ >;
227
+
228
+ export type RangeCalendarRootProps = RangeCalendarRootPropsWithoutHTML &
229
+ Without<BitsPrimitiveDivAttributes, RangeCalendarRootPropsWithoutHTML>;
230
+
231
+ export type {
232
+ CalendarPrevButtonProps as RangeCalendarPrevButtonProps,
233
+ CalendarPrevButtonPropsWithoutHTML as RangeCalendarPrevButtonPropsWithoutHTML,
234
+ CalendarNextButtonProps as RangeCalendarNextButtonProps,
235
+ CalendarNextButtonPropsWithoutHTML as RangeCalendarNextButtonPropsWithoutHTML,
236
+ CalendarHeadingProps as RangeCalendarHeadingProps,
237
+ CalendarHeadingPropsWithoutHTML as RangeCalendarHeadingPropsWithoutHTML,
238
+ CalendarGridProps as RangeCalendarGridProps,
239
+ CalendarGridPropsWithoutHTML as RangeCalendarGridPropsWithoutHTML,
240
+ CalendarCellProps as RangeCalendarCellProps,
241
+ CalendarCellPropsWithoutHTML as RangeCalendarCellPropsWithoutHTML,
242
+ CalendarDayProps as RangeCalendarDayProps,
243
+ CalendarDayPropsWithoutHTML as RangeCalendarDayPropsWithoutHTML,
244
+ CalendarGridBodyProps as RangeCalendarGridBodyProps,
245
+ CalendarGridBodyPropsWithoutHTML as RangeCalendarGridBodyPropsWithoutHTML,
246
+ CalendarGridHeadProps as RangeCalendarGridHeadProps,
247
+ CalendarGridHeadPropsWithoutHTML as RangeCalendarGridHeadPropsWithoutHTML,
248
+ CalendarGridRowProps as RangeCalendarGridRowProps,
249
+ CalendarGridRowPropsWithoutHTML as RangeCalendarGridRowPropsWithoutHTML,
250
+ CalendarHeadCellProps as RangeCalendarHeadCellProps,
251
+ CalendarHeadCellPropsWithoutHTML as RangeCalendarHeadCellPropsWithoutHTML,
252
+ CalendarHeaderProps as RangeCalendarHeaderProps,
253
+ CalendarHeaderPropsWithoutHTML as RangeCalendarHeaderPropsWithoutHTML,
254
+ CalendarMonthSelectProps as RangeCalendarMonthSelectProps,
255
+ CalendarMonthSelectPropsWithoutHTML as RangeCalendarMonthSelectPropsWithoutHTML,
256
+ CalendarYearSelectProps as RangeCalendarYearSelectProps,
257
+ CalendarYearSelectPropsWithoutHTML as RangeCalendarYearSelectPropsWithoutHTML,
258
+ } from "../calendar/types.js";
@@ -0,0 +1,15 @@
1
+ import Handle from './resizable-handle.svelte';
2
+ import PaneGroup from './resizable-pane-group.svelte';
3
+ import { Pane } from '../../internal/paneforge/index.js';
4
+
5
+ export {
6
+ PaneGroup,
7
+ Pane,
8
+ Handle,
9
+ //
10
+ PaneGroup as ResizablePaneGroup,
11
+ Pane as ResizablePane,
12
+ Handle as ResizableHandle,
13
+ };
14
+
15
+ export type { PaneGroupProps, PaneProps, PaneResizerProps } from '../../internal/paneforge/index.js';
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import GripVerticalIcon from '@lucide/svelte/icons/grip-vertical';
3
+ import * as ResizablePrimitive from '../../internal/paneforge/index.js';
4
+ import { join } from 'overrule';
5
+ import type { WithoutChildrenOrChild } from '../../internal/utils.js';
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ class: className,
10
+ withHandle = false,
11
+ ...restProps
12
+ }: WithoutChildrenOrChild<ResizablePrimitive.PaneResizerProps> & {
13
+ withHandle?: boolean;
14
+ } = $props();
15
+ </script>
16
+
17
+ <ResizablePrimitive.PaneResizer
18
+ bind:ref
19
+ data-slot="resizable-handle"
20
+ class={join(
21
+ 'bg-border focus-visible:ring-ring relative grid w-px place-items-center after:absolute after:inset-y-0 after:inset-s-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[direction=vertical]:h-px data-[direction=vertical]:w-full data-[direction=vertical]:after:inset-s-0 data-[direction=vertical]:after:h-1 data-[direction=vertical]:after:w-full data-[direction=vertical]:after:translate-x-0 data-[direction=vertical]:after:-translate-y-1/2 [&[data-direction=vertical]>div]:rotate-90',
22
+ className,
23
+ )}
24
+ {...restProps}>
25
+ {#if withHandle}
26
+ <div class="bg-border z-10 grid h-4 w-3 place-items-center rounded-xs border">
27
+ <GripVerticalIcon class="size-2.5" />
28
+ </div>
29
+ {/if}
30
+ </ResizablePrimitive.PaneResizer>
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import * as ResizablePrimitive from '../../internal/paneforge/index.js';
3
+ import { join } from 'overrule';
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ this: paneGroup = $bindable(),
8
+ class: className,
9
+ ...restProps
10
+ }: ResizablePrimitive.PaneGroupProps & {
11
+ this?: ResizablePrimitive.PaneGroup;
12
+ } = $props();
13
+ </script>
14
+
15
+ <ResizablePrimitive.PaneGroup
16
+ bind:this={paneGroup}
17
+ data-slot="resizable-pane-group"
18
+ class={join('flex h-full w-full data-[direction=vertical]:flex-col', className)}
19
+ {...restProps} />
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { boxWith } from '../../../internal/tools/index.js';
3
+ import { mergeProps } from '../../../internal/merge-props.js';
4
+ import type { ScrollAreaCornerProps } from '../types.js';
5
+ import { ScrollAreaCornerImplState } from '../scroll-area.svelte.js';
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ id,
10
+ children,
11
+ child,
12
+ ...restProps
13
+ }: Omit<ScrollAreaCornerProps, 'id'> & {
14
+ id: string;
15
+ } = $props();
16
+
17
+ const cornerState = ScrollAreaCornerImplState.create({
18
+ id: boxWith(() => id),
19
+ ref: boxWith(
20
+ () => ref,
21
+ (v) => (ref = v),
22
+ ),
23
+ });
24
+
25
+ const mergedProps = $derived(mergeProps(restProps, cornerState.props));
26
+ </script>
27
+
28
+ {#if child}
29
+ {@render child({ props: mergedProps })}
30
+ {:else}
31
+ <div {...mergedProps}>
32
+ {@render children?.()}
33
+ </div>
34
+ {/if}
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import type { ScrollAreaCornerProps } from '../types.js';
3
+ import { getScrollAreaRoot } from '../scroll-area.svelte.js';
4
+ import ScrollAreaCornerImpl from './scroll-area-corner-impl.svelte';
5
+ import { createId } from '../../../internal/create-id.js';
6
+
7
+ const uid = $props.id();
8
+
9
+ let { ref = $bindable(null), id = createId(uid), ...restProps }: ScrollAreaCornerProps = $props();
10
+
11
+ const scrollAreaState = getScrollAreaRoot();
12
+
13
+ const hasBothScrollbarsVisible = $derived(Boolean(scrollAreaState.scrollbarXNode && scrollAreaState.scrollbarYNode));
14
+ </script>
15
+
16
+ {#if scrollAreaState.opts.type.current !== 'scroll' && hasBothScrollbarsVisible}
17
+ <ScrollAreaCornerImpl {...restProps} {id} bind:ref />
18
+ {/if}
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { mergeProps } from '../../../internal/merge-props.js';
3
+ import { ScrollAreaScrollbarAutoState } from '../scroll-area.svelte.js';
4
+ import type { _ScrollbarStubProps } from '../types.js';
5
+ import ScrollAreaScrollbarVisible from './scroll-area-scrollbar-visible.svelte';
6
+
7
+ let { forceMount = false, ...restProps }: _ScrollbarStubProps = $props();
8
+
9
+ const scrollbarAutoState = ScrollAreaScrollbarAutoState.create();
10
+ const mergedProps = $derived(mergeProps(restProps, scrollbarAutoState.props));
11
+ </script>
12
+
13
+ {#if forceMount || scrollbarAutoState.isVisible}
14
+ <ScrollAreaScrollbarVisible {...mergedProps} />
15
+ {/if}
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { mergeProps } from '../../../internal/merge-props.js';
3
+ import { ScrollAreaScrollbarAutoState, ScrollAreaScrollbarHoverState } from '../scroll-area.svelte.js';
4
+ import type { _ScrollbarStubProps } from '../types.js';
5
+ import ScrollAreaScrollbarVisible from './scroll-area-scrollbar-visible.svelte';
6
+
7
+ let { forceMount = false, ...restProps }: _ScrollbarStubProps = $props();
8
+
9
+ const scrollbarHoverState = ScrollAreaScrollbarHoverState.create();
10
+ const scrollbarAutoState = ScrollAreaScrollbarAutoState.create();
11
+ const mergedProps = $derived(
12
+ mergeProps(restProps, scrollbarHoverState.props, scrollbarAutoState.props, {
13
+ 'data-state': scrollbarHoverState.isVisible ? 'visible' : 'hidden',
14
+ }),
15
+ );
16
+
17
+ const open = $derived(forceMount || (scrollbarHoverState.isVisible && scrollbarAutoState.isVisible));
18
+ </script>
19
+
20
+ {#if open}
21
+ <ScrollAreaScrollbarVisible {...mergedProps} />
22
+ {/if}
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { mergeProps } from '../../../internal/merge-props.js';
3
+ import { ScrollAreaScrollbarScrollState } from '../scroll-area.svelte.js';
4
+ import type { _ScrollbarStubProps } from '../types.js';
5
+ import ScrollAreaScrollbarVisible from './scroll-area-scrollbar-visible.svelte';
6
+
7
+ let { forceMount = false, ...restProps }: _ScrollbarStubProps = $props();
8
+
9
+ const scrollbarScrollState = ScrollAreaScrollbarScrollState.create();
10
+
11
+ const mergedProps = $derived(mergeProps(restProps, scrollbarScrollState.props));
12
+ </script>
13
+
14
+ {#if forceMount || !scrollbarScrollState.isHidden}
15
+ <ScrollAreaScrollbarVisible {...mergedProps} />
16
+ {/if}
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { mergeProps } from '../../../internal/merge-props.js';
3
+ import { ScrollAreaScrollbarSharedState } from '../scroll-area.svelte.js';
4
+ import type { _ScrollbarStubProps } from '../types.js';
5
+
6
+ let { child, children, ...restProps }: _ScrollbarStubProps = $props();
7
+
8
+ const scrollbarSharedState = ScrollAreaScrollbarSharedState.create();
9
+
10
+ const mergedProps = $derived(mergeProps(restProps, scrollbarSharedState.props));
11
+ </script>
12
+
13
+ {#if child}
14
+ {@render child({ props: mergedProps })}
15
+ {:else}
16
+ <div {...mergedProps}>
17
+ {@render children?.()}
18
+ </div>
19
+ {/if}
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import { ScrollAreaScrollbarVisibleState } from "../scroll-area.svelte.js";
3
+ import type { _ScrollbarStubProps } from "../types.js";
4
+ import ScrollAreaScrollbarX from "./scroll-area-scrollbar-x.svelte";
5
+ import ScrollAreaScrollbarY from "./scroll-area-scrollbar-y.svelte";
6
+
7
+ let { ...restProps }: Omit<_ScrollbarStubProps, "forceMount"> = $props();
8
+
9
+ const scrollbarVisibleState = ScrollAreaScrollbarVisibleState.create();
10
+ </script>
11
+
12
+ {#if scrollbarVisibleState.scrollbar.opts.orientation.current === "horizontal"}
13
+ <ScrollAreaScrollbarX {...restProps} />
14
+ {:else}
15
+ <ScrollAreaScrollbarY {...restProps} />
16
+ {/if}
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { boxWith } from '../../../internal/tools/index.js';
4
+ import { mergeProps } from '../../../internal/merge-props.js';
5
+ import { ScrollAreaScrollbarXState } from '../scroll-area.svelte.js';
6
+ import type { _ScrollbarStubProps } from '../types.js';
7
+ import ScrollAreaScrollbarShared from './scroll-area-scrollbar-shared.svelte';
8
+
9
+ let { ...restProps }: _ScrollbarStubProps = $props();
10
+
11
+ let isMounted = $state(false);
12
+ onMount(() => {
13
+ isMounted = true;
14
+ });
15
+
16
+ const scrollbarXState = ScrollAreaScrollbarXState.create({
17
+ mounted: boxWith(() => isMounted),
18
+ });
19
+ // oxlint-disable-next-line no-explicit-any
20
+ const mergedProps = $derived(mergeProps(restProps, scrollbarXState.props)) as any;
21
+ </script>
22
+
23
+ <ScrollAreaScrollbarShared {...mergedProps} />
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { boxWith } from '../../../internal/tools/index.js';
4
+ import { mergeProps } from '../../../internal/merge-props.js';
5
+ import { ScrollAreaScrollbarYState } from '../scroll-area.svelte.js';
6
+ import type { _ScrollbarStubProps } from '../types.js';
7
+ import ScrollAreaScrollbarShared from './scroll-area-scrollbar-shared.svelte';
8
+
9
+ let { ...restProps }: _ScrollbarStubProps = $props();
10
+
11
+ let isMounted = $state(false);
12
+ onMount(() => {
13
+ isMounted = true;
14
+ });
15
+
16
+ const scrollbarYState = ScrollAreaScrollbarYState.create({
17
+ mounted: boxWith(() => isMounted),
18
+ });
19
+
20
+ // oxlint-disable-next-line no-explicit-any
21
+ const mergedProps = $derived(mergeProps(restProps, scrollbarYState.props)) as any;
22
+ </script>
23
+
24
+ <ScrollAreaScrollbarShared {...mergedProps} />
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import { boxWith } from '../../../internal/tools/index.js';
3
+ import { mergeProps } from '../../../internal/merge-props.js';
4
+ import type { ScrollAreaScrollbarProps } from '../types.js';
5
+ import { ScrollAreaScrollbarState } from '../scroll-area.svelte.js';
6
+ import ScrollAreaScrollbarAuto from './scroll-area-scrollbar-auto.svelte';
7
+ import ScrollAreaScrollbarScroll from './scroll-area-scrollbar-scroll.svelte';
8
+ import ScrollAreaScrollbarHover from './scroll-area-scrollbar-hover.svelte';
9
+ import ScrollAreaScrollbarVisible from './scroll-area-scrollbar-visible.svelte';
10
+ import Thumb from './scroll-area-thumb.svelte';
11
+ import { createId } from '../../../internal/create-id.js';
12
+
13
+ const uid = $props.id();
14
+
15
+ let { ref = $bindable(null), id = createId(uid), orientation = 'vertical', children, ...restProps }: ScrollAreaScrollbarProps = $props();
16
+
17
+ const scrollbarState = ScrollAreaScrollbarState.create({
18
+ orientation: boxWith(() => orientation),
19
+ id: boxWith(() => id),
20
+ ref: boxWith(
21
+ () => ref,
22
+ (v) => (ref = v),
23
+ ),
24
+ });
25
+
26
+ const type = $derived(scrollbarState.root.opts.type.current);
27
+
28
+ const mergedProps = $derived(
29
+ mergeProps(
30
+ {
31
+ 'data-slot': 'scroll-area-scrollbar',
32
+ class: [
33
+ 'flex touch-none p-px transition-colors select-none',
34
+ orientation === 'vertical' && 'h-full w-2.5 border-s border-s-transparent',
35
+ orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent',
36
+ ],
37
+ },
38
+ restProps,
39
+ ),
40
+ );
41
+ </script>
42
+
43
+ {#snippet scrollbarChildren()}
44
+ {@render children?.()}
45
+ <Thumb data-slot="scroll-area-thumb" class="bg-border relative flex-1 rounded-full" />
46
+ {/snippet}
47
+
48
+ {#if type === 'hover'}
49
+ <ScrollAreaScrollbarHover {...mergedProps} {id} children={scrollbarChildren} />
50
+ {:else if type === 'scroll'}
51
+ <ScrollAreaScrollbarScroll {...mergedProps} {id} children={scrollbarChildren} />
52
+ {:else if type === 'auto'}
53
+ <ScrollAreaScrollbarAuto {...mergedProps} {id} children={scrollbarChildren} />
54
+ {:else if type === 'always'}
55
+ <ScrollAreaScrollbarVisible {...mergedProps} {id} children={scrollbarChildren} />
56
+ {/if}
@@ -0,0 +1,49 @@
1
+ <script lang="ts">
2
+ import { boxWith } from '../../../internal/tools/index.js';
3
+ import { mergeProps } from '../../../internal/merge-props.js';
4
+ import { onMount } from 'svelte';
5
+ import type { ScrollAreaThumbProps } from '../types.js';
6
+ import { ScrollAreaThumbImplState } from '../scroll-area.svelte.js';
7
+
8
+ let {
9
+ ref = $bindable(null),
10
+ id,
11
+ child,
12
+ children,
13
+ present,
14
+ ...restProps
15
+ }: Omit<ScrollAreaThumbProps, 'forceMount' | 'id'> & {
16
+ id: string;
17
+ present: boolean;
18
+ } = $props();
19
+
20
+ let isMounted = $state(false);
21
+ onMount(() => {
22
+ isMounted = true;
23
+ });
24
+
25
+ const thumbState = ScrollAreaThumbImplState.create({
26
+ id: boxWith(() => id),
27
+ ref: boxWith(
28
+ () => ref,
29
+ (v) => (ref = v),
30
+ ),
31
+ mounted: boxWith(() => isMounted),
32
+ });
33
+
34
+ const mergedProps = $derived(
35
+ mergeProps(restProps, thumbState.props, {
36
+ style: {
37
+ hidden: !present,
38
+ },
39
+ }),
40
+ );
41
+ </script>
42
+
43
+ {#if child}
44
+ {@render child({ props: mergedProps })}
45
+ {:else}
46
+ <div {...mergedProps}>
47
+ {@render children?.()}
48
+ </div>
49
+ {/if}
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import type { ScrollAreaThumbProps } from "../types.js";
3
+ import { getScrollAreaScrollbarVisible } from "../scroll-area.svelte.js";
4
+ import ScrollAreaThumbImpl from "./scroll-area-thumb-impl.svelte";
5
+ import { createId } from "../../../internal/create-id.js";
6
+
7
+ const uid = $props.id();
8
+
9
+ let {
10
+ id = createId(uid),
11
+ ref = $bindable(null),
12
+ forceMount = false,
13
+ ...restProps
14
+ }: ScrollAreaThumbProps = $props();
15
+
16
+ const scrollbarState = getScrollAreaScrollbarVisible();
17
+ </script>
18
+
19
+ {#if forceMount || scrollbarState.hasThumb}
20
+ <ScrollAreaThumbImpl {...restProps} {id} bind:ref present={scrollbarState.hasThumb} />
21
+ {/if}