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,733 @@
1
+ /* Native <details> disclosures (accordion + collapsible): the content slot is a grid
2
+ whose single row interpolates 0fr↔1fr — works in every engine, unlike ::details-content
3
+ (Firefox 143+) or interpolate-size height 0↔auto (Chromium-only). data-state carries the
4
+ visual state; the components hold the `open` attribute through the closing transition so
5
+ content stays rendered, then drop it when animations settle (JS times the unmount, CSS
6
+ owns the motion). @starting-style animates the enter from the just-mounted 0fr state. */
7
+ [data-slot='collapsible'] > [data-slot='collapsible-content'],
8
+ [data-slot='accordion-item'] > [data-slot='accordion-content'] {
9
+ display: grid;
10
+ grid-template-rows: 0fr;
11
+ overflow: clip;
12
+ transition: grid-template-rows var(--tw-duration, 200ms) var(--tw-ease, ease-out);
13
+ }
14
+
15
+ [data-slot='collapsible'][data-state='open'] > [data-slot='collapsible-content'],
16
+ [data-slot='accordion-item'][data-state='open'] > [data-slot='accordion-content'] {
17
+ grid-template-rows: 1fr;
18
+
19
+ @starting-style {
20
+ grid-template-rows: 0fr;
21
+ }
22
+ }
23
+
24
+ /* Each content slot wraps its children in a single element; min-height 0 lets the 0fr
25
+ track actually collapse it. */
26
+ [data-slot='collapsible-content'] > *,
27
+ [data-slot='accordion-content'] > * {
28
+ min-height: 0;
29
+ }
30
+
31
+ /* scrollbar-none covers only scrollbar-width; the webkit pseudo is still needed for Safari < 18.2. */
32
+ /* Popup surfaces (menu family content and sub-content, select/combobox content) stay mounted
33
+ through their exit; the engine sets the closed state inline and these utilities add the
34
+ motion. Closed is visibility:hidden, not display:none: Firefox cannot transition `display` at
35
+ all (BCD css.properties.display.is_transitionable — Chrome 117, Safari 18, Firefox never), so a
36
+ discrete display exit snaps there, while visibility transitions discretely in every engine and
37
+ stays visible until the exit ends. The entry slide is transition-only as well: closed gives
38
+ `translate` a zero duration and a full-length delay, so it jumps to its side offset only once
39
+ the surface is hidden, and open transitions it back to zero — enter slides, exit does not, as
40
+ before. Visibility itself transitions only on the way out: the entry flips it instantly,
41
+ because a hidden→visible transition is still hidden at its first frame (WebKit: for half of
42
+ it) and the focus scope's opening focus() lands exactly there.
43
+ Duration lists live under the state selectors on purpose: an adapter's `duration-*` class sets
44
+ a single transition-duration that would override a list at utility specificity, while the
45
+ attribute selectors still read its --tw-duration. */
46
+ @utility popup-surface {
47
+ --popup-duration: var(--tw-duration, var(--default-transition-duration));
48
+ transition-property: opacity, scale, translate, visibility;
49
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
50
+
51
+ &[data-state='open'] {
52
+ transition-duration: var(--popup-duration), var(--popup-duration), var(--popup-duration), 0s;
53
+ }
54
+ &[data-state='closed'] {
55
+ visibility: hidden;
56
+ opacity: 0;
57
+ scale: 0.95;
58
+ transition-duration: var(--popup-duration), var(--popup-duration), 0s, var(--popup-duration);
59
+ transition-delay: 0s, 0s, var(--popup-duration), 0s;
60
+ }
61
+ &[data-state='closed'][data-side='bottom'] {
62
+ translate: 0 -0.5rem;
63
+ }
64
+ &[data-state='closed'][data-side='top'] {
65
+ translate: 0 0.5rem;
66
+ }
67
+ &[data-state='closed'][data-side='left'],
68
+ &[data-state='closed'][data-side='inline-start'] {
69
+ translate: 0.5rem 0;
70
+ }
71
+ &[data-state='closed'][data-side='right'],
72
+ &[data-state='closed'][data-side='inline-end'] {
73
+ translate: -0.5rem 0;
74
+ }
75
+ }
76
+
77
+ /* Static (in-flow) content must leave the flow when closed, so the engine sets display:none
78
+ there; transitioning it discretely lets the exit play where display is transitionable. */
79
+ @utility popup-surface-static {
80
+ transition-property: opacity, scale, translate, visibility, display;
81
+ transition-behavior: allow-discrete;
82
+
83
+ &[data-state='open'] {
84
+ transition-duration: var(--popup-duration), var(--popup-duration), var(--popup-duration), 0s, 0s;
85
+ }
86
+ &[data-state='closed'] {
87
+ transition-duration: var(--popup-duration), var(--popup-duration), 0s, var(--popup-duration), var(--popup-duration);
88
+ transition-delay: 0s, 0s, var(--popup-duration), 0s, 0s;
89
+ }
90
+ }
91
+
92
+ /* Navigation menu surfaces, same always-mounted contract as popup-surface. Content enters are
93
+ keyframes, because they are asymmetric with the exit: every enter fades in, and a swap also
94
+ slides in from the previous item's side, while an exit fades and slides only on a swap
95
+ (data-motion=to-*) or in the viewport-less layout (the adapter's data-closed classes). Only
96
+ those two exits hold visibility: inside a viewport a plain close hides the content at once and
97
+ lets the viewport zoom out on its own, as the unmount did. */
98
+ @keyframes nav-content-in {
99
+ from {
100
+ opacity: 0;
101
+ }
102
+ }
103
+ @keyframes nav-content-in-from-start {
104
+ from {
105
+ opacity: 0;
106
+ translate: -13rem 0;
107
+ }
108
+ }
109
+ @keyframes nav-content-in-from-end {
110
+ from {
111
+ opacity: 0;
112
+ translate: 13rem 0;
113
+ }
114
+ }
115
+ @utility nav-content-surface {
116
+ --nav-duration: var(--tw-duration, var(--default-transition-duration));
117
+ --nav-ease: var(--tw-ease, var(--default-transition-timing-function));
118
+ transition-property: opacity, scale, translate, visibility;
119
+ transition-timing-function: var(--nav-ease);
120
+
121
+ &[data-state='open'] {
122
+ transition-duration: var(--nav-duration), var(--nav-duration), var(--nav-duration), 0s;
123
+ animation: nav-content-in var(--nav-duration) var(--nav-ease);
124
+ }
125
+ &[data-state='open'][data-motion='from-start'] {
126
+ animation-name: nav-content-in-from-start;
127
+ }
128
+ &[data-state='open'][data-motion='from-end'] {
129
+ animation-name: nav-content-in-from-end;
130
+ }
131
+ &[data-state='closed'] {
132
+ visibility: hidden;
133
+ transition-duration: var(--nav-duration), var(--nav-duration), var(--nav-duration), 0s;
134
+ }
135
+ &[data-state='closed']:is([data-motion='to-start'], [data-motion='to-end']),
136
+ [data-viewport='false'] &[data-state='closed'] {
137
+ transition-duration: var(--nav-duration);
138
+ }
139
+ &[data-motion='to-start'],
140
+ &[data-motion='to-end'] {
141
+ opacity: 0;
142
+ }
143
+ &[data-motion='to-start'] {
144
+ translate: -13rem 0;
145
+ }
146
+ &[data-motion='to-end'] {
147
+ translate: 13rem 0;
148
+ }
149
+ }
150
+ @utility nav-viewport-surface {
151
+ --nav-duration: var(--tw-duration, var(--default-transition-duration));
152
+ transition-property: scale, visibility;
153
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
154
+
155
+ &[data-state='open'] {
156
+ transition-duration: var(--nav-duration), 0s;
157
+ }
158
+ &[data-state='closed'] {
159
+ visibility: hidden;
160
+ scale: 0.9;
161
+ transition-duration: var(--nav-duration);
162
+ }
163
+ }
164
+ @utility nav-indicator-surface {
165
+ --nav-duration: var(--tw-duration, var(--default-transition-duration));
166
+ transition-property: opacity, visibility;
167
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
168
+
169
+ &[data-state='visible'] {
170
+ transition-duration: var(--nav-duration), 0s;
171
+ }
172
+ &[data-state='hidden'] {
173
+ visibility: hidden;
174
+ opacity: 0;
175
+ transition-duration: var(--nav-duration);
176
+ }
177
+ }
178
+
179
+ /* A JS-overlay backdrop that stays mounted: fades, and holds visibility through the fade-out. */
180
+ @utility overlay-surface {
181
+ --overlay-duration: var(--tw-duration, var(--default-transition-duration));
182
+ transition-property: opacity, visibility;
183
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
184
+
185
+ &[data-state='open'] {
186
+ transition-duration: var(--overlay-duration), 0s;
187
+ }
188
+ &[data-state='closed'] {
189
+ visibility: hidden;
190
+ opacity: 0;
191
+ transition-duration: var(--overlay-duration);
192
+ }
193
+ }
194
+
195
+ /* Text-selection guard. A drag that starts inside an open modal surface must not select the page
196
+ text behind it. This was a document pointer tracker (text-selection-layer) that set body
197
+ user-select:none for the length of an outward drag and kept a global layer stack to decide
198
+ which surface owned the drag; now the open surface flags itself and :has() covers its whole
199
+ open window instead — page text is unreachable then anyway (the scroll lock's pointer-events:
200
+ none on body). Descendants with their own user-select (select-none items) keep it. Safari
201
+ only reads the -webkit- form. */
202
+ body:has([data-text-selection-guard]) {
203
+ -webkit-user-select: none;
204
+ user-select: none;
205
+ }
206
+ [data-text-selection-guard] {
207
+ -webkit-user-select: text;
208
+ user-select: text;
209
+ }
210
+
211
+ @utility scrollbar-hidden {
212
+ scrollbar-width: none;
213
+ &::-webkit-scrollbar {
214
+ display: none;
215
+ }
216
+ }
217
+
218
+ @theme inline {
219
+ --text-2xs: 11px;
220
+ --text-3xs: 10px;
221
+ --animate-check-pop: check-pop 350ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
222
+ @keyframes check-pop {
223
+ from {
224
+ opacity: 0;
225
+ transform: scale(0.6);
226
+ }
227
+ }
228
+
229
+ --animate-caret-blink: caret-blink 1.25s ease-out infinite;
230
+
231
+ @keyframes caret-blink {
232
+ 0%,
233
+ 70%,
234
+ 100% {
235
+ opacity: 1;
236
+ }
237
+ 20%,
238
+ 50% {
239
+ opacity: 0;
240
+ }
241
+ }
242
+ }
243
+
244
+ /* Component animations — defined centrally; components only trigger them via animation-name. */
245
+
246
+ @keyframes fadeIn {
247
+ from {
248
+ opacity: 0;
249
+ }
250
+ to {
251
+ opacity: 1;
252
+ }
253
+ }
254
+
255
+ /* The exit keyframes keep `visibility: visible` while they run: the drawer and its overlay stay
256
+ mounted with visibility:hidden inline once closed, and a running animation outranks inline
257
+ style, so the surface hides exactly when its exit ends (vaul writes inline `transition`
258
+ shorthands while dragging, which a visibility transition would not survive). */
259
+ @keyframes fadeOut {
260
+ from {
261
+ visibility: visible;
262
+ }
263
+ to {
264
+ opacity: 0;
265
+ visibility: visible;
266
+ }
267
+ }
268
+
269
+ /* Draws an SVG stroke from invisible to full length — pair with pathLength="100" + [stroke-dasharray:100] [stroke-dashoffset:100]. */
270
+ @keyframes draw {
271
+ to {
272
+ stroke-dashoffset: 0;
273
+ }
274
+ }
275
+
276
+ @keyframes slideFromBottom {
277
+ from {
278
+ transform: translate3d(0, var(--initial-transform, 100%), 0);
279
+ }
280
+ to {
281
+ transform: translate3d(0, 0, 0);
282
+ }
283
+ }
284
+
285
+ @keyframes slideToBottom {
286
+ from {
287
+ visibility: visible;
288
+ }
289
+ to {
290
+ transform: translate3d(0, var(--initial-transform, 100%), 0);
291
+ visibility: visible;
292
+ }
293
+ }
294
+
295
+ @keyframes slideFromTop {
296
+ from {
297
+ transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
298
+ }
299
+ to {
300
+ transform: translate3d(0, 0, 0);
301
+ }
302
+ }
303
+
304
+ @keyframes slideToTop {
305
+ from {
306
+ visibility: visible;
307
+ }
308
+ to {
309
+ transform: translate3d(0, calc(var(--initial-transform, 100%) * -1), 0);
310
+ visibility: visible;
311
+ }
312
+ }
313
+
314
+ @keyframes slideFromLeft {
315
+ from {
316
+ transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
317
+ }
318
+ to {
319
+ transform: translate3d(0, 0, 0);
320
+ }
321
+ }
322
+
323
+ @keyframes slideToLeft {
324
+ from {
325
+ visibility: visible;
326
+ }
327
+ to {
328
+ transform: translate3d(calc(var(--initial-transform, 100%) * -1), 0, 0);
329
+ visibility: visible;
330
+ }
331
+ }
332
+
333
+ @keyframes slideFromRight {
334
+ from {
335
+ transform: translate3d(var(--initial-transform, 100%), 0, 0);
336
+ }
337
+ to {
338
+ transform: translate3d(0, 0, 0);
339
+ }
340
+ }
341
+
342
+ @keyframes slideToRight {
343
+ from {
344
+ visibility: visible;
345
+ }
346
+ to {
347
+ transform: translate3d(var(--initial-transform, 100%), 0, 0);
348
+ visibility: visible;
349
+ }
350
+ }
351
+
352
+ @keyframes swipe-out-left {
353
+ from {
354
+ transform: var(--y) translateX(var(--swipe-amount-x));
355
+ opacity: 1;
356
+ }
357
+ to {
358
+ transform: var(--y) translateX(calc(var(--swipe-amount-x) - 100%));
359
+ opacity: 0;
360
+ }
361
+ }
362
+
363
+ @keyframes swipe-out-right {
364
+ from {
365
+ transform: var(--y) translateX(var(--swipe-amount-x));
366
+ opacity: 1;
367
+ }
368
+ to {
369
+ transform: var(--y) translateX(calc(var(--swipe-amount-x) + 100%));
370
+ opacity: 0;
371
+ }
372
+ }
373
+
374
+ @keyframes swipe-out-up {
375
+ from {
376
+ transform: var(--y) translateY(var(--swipe-amount-y));
377
+ opacity: 1;
378
+ }
379
+ to {
380
+ transform: var(--y) translateY(calc(var(--swipe-amount-y) - 100%));
381
+ opacity: 0;
382
+ }
383
+ }
384
+
385
+ @keyframes swipe-out-down {
386
+ from {
387
+ transform: var(--y) translateY(var(--swipe-amount-y));
388
+ opacity: 1;
389
+ }
390
+ to {
391
+ transform: var(--y) translateY(calc(var(--swipe-amount-y) + 100%));
392
+ opacity: 0;
393
+ }
394
+ }
395
+
396
+ @keyframes sonner-fade-in {
397
+ 0% {
398
+ opacity: 0;
399
+ transform: scale(0.8);
400
+ }
401
+ 100% {
402
+ opacity: 1;
403
+ transform: scale(1);
404
+ }
405
+ }
406
+
407
+ @keyframes theme-spin-out {
408
+ 0% {
409
+ opacity: 1;
410
+ transform: rotate(0deg);
411
+ }
412
+ 50%,
413
+ 100% {
414
+ opacity: 0;
415
+ transform: rotate(180deg);
416
+ }
417
+ }
418
+
419
+ @keyframes theme-spin-in {
420
+ 0%,
421
+ 50% {
422
+ opacity: 0;
423
+ transform: rotate(180deg);
424
+ }
425
+ 100% {
426
+ opacity: 1;
427
+ transform: rotate(360deg);
428
+ }
429
+ }
430
+
431
+ /* Class-based dark mode, defined once for every consumer stylesheet. :where keeps dark: at the
432
+ utility's own specificity, so a same-specificity state utility (aria-expanded:, hover:) is not
433
+ outranked merely by being in dark mode. */
434
+ @custom-variant dark (&:where(.dark, .dark *));
435
+
436
+ /* Custom variants: one spelling per data-state value. These shadow Tailwind's built-in
437
+ data-open/data-closed/... (which match a bare [data-open] attribute nothing here renders).
438
+ data-disabled and data-active keep the ="false" guard: Toast, sidebar menu buttons and
439
+ pagination render the attribute as a boolean string. */
440
+ @custom-variant data-open {
441
+ &:where([data-state='open']) {
442
+ @slot;
443
+ }
444
+ }
445
+
446
+ @custom-variant data-closed {
447
+ &:where([data-state='closed']) {
448
+ @slot;
449
+ }
450
+ }
451
+
452
+ @custom-variant data-checked {
453
+ &:where([data-state='checked']) {
454
+ @slot;
455
+ }
456
+ }
457
+
458
+ @custom-variant data-unchecked {
459
+ &:where([data-state='unchecked']) {
460
+ @slot;
461
+ }
462
+ }
463
+
464
+ @custom-variant data-disabled {
465
+ &:where([data-disabled]:not([data-disabled='false'])) {
466
+ @slot;
467
+ }
468
+ }
469
+
470
+ @custom-variant data-active {
471
+ &:where([data-state='active']),
472
+ &:where([data-active]:not([data-active='false'])) {
473
+ @slot;
474
+ }
475
+ }
476
+
477
+ @custom-variant data-horizontal {
478
+ &:where([data-orientation='horizontal']) {
479
+ @slot;
480
+ }
481
+ }
482
+
483
+ @custom-variant data-vertical {
484
+ &:where([data-orientation='vertical']) {
485
+ @slot;
486
+ }
487
+ }
488
+
489
+ .label-selectable-card {
490
+ @apply gap-2 rounded-2xl border leading-snug group-data-disabled/field:opacity-50 has-data-checked:bg-border/30 *:data-[slot=field]:p-4;
491
+ }
492
+
493
+ .wrap-input-identity {
494
+ @apply relative flex h-9 w-full min-w-0 items-center rounded-md border border-border shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-border/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5;
495
+ }
496
+
497
+ /* Anchored JS surfaces (menu family, select/combobox): the engine positions the content itself
498
+ with position-area + position-try-fallbacks (internal/floating-layer). The content must keep
499
+ its intrinsic width for the fallback check to see an overflow — an absolutely positioned box
500
+ would otherwise shrink to the space beside a viewport edge and wrap instead of flipping.
501
+ Layered so a consumer's width utility still wins. */
502
+ @layer components {
503
+ [data-floating-content] {
504
+ width: max-content;
505
+ }
506
+ }
507
+
508
+ /* The last-resort position options for [data-floating-content]: when no side fits the whole
509
+ content, each side is re-tried with its block size capped to the side's space (minus the
510
+ engine's own margins), so the surface scrolls inside instead of overflowing the viewport. */
511
+ @position-try --bits-clamped {
512
+ max-block-size: calc(100% - var(--bits-floating-block-margins, 0px));
513
+ }
514
+
515
+ /* Native overlay anchor positioning — single source for the popover, tooltip, and
516
+ link-preview content surfaces. Tag the content element with `data-anchored`; side/align
517
+ come from `data-side` / `data-align`. Replaces the per-component <style> blocks that
518
+ each duplicated this. Tailwind has no anchor-positioning utilities, so this is raw CSS.
519
+
520
+ The whole block sits behind @supports: engines without anchor positioning (~18% 2026-07)
521
+ keep the UA popover default (fixed, inset 0, auto margins → centered on screen) instead of
522
+ an inset:auto mispositioned surface. TODO(widen): explicit anchor-name on the trigger +
523
+ position-anchor here would extend anchoring to Chrome 125–136, which lack the
524
+ showPopover({source}) implicit anchor (137+); needs per-instance names plumbed through the
525
+ trigger prop bags. */
526
+ @supports (anchor-name: --a) {
527
+ [data-anchored] {
528
+ position: fixed;
529
+ inset: auto;
530
+ margin: 0;
531
+ overflow: visible;
532
+
533
+ /* default (no data-side): above the trigger, centered */
534
+ bottom: anchor(top);
535
+ justify-self: anchor-center;
536
+ margin-bottom: 0.5rem;
537
+ position-try-fallbacks: flip-block;
538
+ }
539
+
540
+ [data-anchored][data-side='bottom'] {
541
+ bottom: auto;
542
+ top: anchor(bottom);
543
+ margin: 0.5rem 0 0;
544
+ }
545
+ [data-anchored][data-side='left'] {
546
+ bottom: auto;
547
+ right: anchor(left);
548
+ left: auto;
549
+ top: anchor(center);
550
+ justify-self: initial;
551
+ margin: 0 0.5rem 0 0;
552
+ }
553
+ [data-anchored][data-side='right'] {
554
+ bottom: auto;
555
+ left: anchor(right);
556
+ top: anchor(center);
557
+ justify-self: initial;
558
+ margin: 0 0 0 0.5rem;
559
+ }
560
+
561
+ [data-anchored][data-align='start'] {
562
+ justify-self: initial;
563
+ left: anchor(left);
564
+ }
565
+ [data-anchored][data-align='end'] {
566
+ justify-self: initial;
567
+ left: auto;
568
+ right: anchor(right);
569
+ }
570
+ }
571
+
572
+ /* An exiting anchored surface (still shown while its [data-state=closed] fade runs, hidden by
573
+ the deferred hidePopover) must not catch the pointer. Shared here, not restated per surface. */
574
+ [data-anchored][data-state='closed'] {
575
+ pointer-events: none;
576
+ }
577
+
578
+ /* Reserve the scrollbar gutter permanently (92% 2026-07): overlays that lock body scroll no
579
+ longer shift the layout, and body-scroll-lock's measurement branch becomes the fallback
580
+ for engines without support (Safari <18.2). Unlayered on purpose — wins over app resets. */
581
+ html {
582
+ scrollbar-gutter: stable;
583
+ }
584
+
585
+ /* Native modal surface — single source for the modal <dialog> adapters (Dialog.Content,
586
+ Sheet.Content). The skeleton (dialog/components/modal-surface.svelte) tags the element
587
+ with `data-modal-surface`. Replaces the per-adapter <style> copies of these rules. */
588
+
589
+ /* A closed <dialog> must stay hidden + non-interactive. Any display utility on the element
590
+ (Sheet's variant puts `flex` there) overrides the UA `dialog:not([open]){display:none}`,
591
+ so re-assert it unlayered (wins over layered Tailwind utilities). */
592
+ [data-modal-surface]:not([open]) {
593
+ display: none;
594
+ }
595
+
596
+ /* ::backdrop replaces the JS-rendered overlay <div> (was `bg-black/50`). Keyframe fade, not an
597
+ @starting-style / overlay / display transition — WebKit doesn't start those on top-layer
598
+ changes, which snapped the fade on iOS, and `overlay` is Chromium-only. The exit fade plays on
599
+ data-[state=closed] while the controller holds the dialog open, so it now runs in every engine
600
+ (it was Chromium-only before). Adapters match the fade to their own motion via
601
+ `--modal-backdrop-duration`. */
602
+ @keyframes modal-backdrop-fade-in {
603
+ from {
604
+ background-color: rgb(0 0 0 / 0);
605
+ }
606
+ }
607
+ @keyframes modal-backdrop-fade-out {
608
+ to {
609
+ background-color: rgb(0 0 0 / 0);
610
+ }
611
+ }
612
+ [data-modal-surface]::backdrop {
613
+ background-color: rgb(0 0 0 / 0.5);
614
+ }
615
+ [data-modal-surface][open][data-state='open']::backdrop {
616
+ animation: modal-backdrop-fade-in var(--modal-backdrop-duration, 200ms) ease;
617
+ }
618
+ [data-modal-surface][open][data-state='closed']::backdrop {
619
+ animation: modal-backdrop-fade-out var(--modal-backdrop-duration, 200ms) ease forwards;
620
+ }
621
+
622
+ /* LayerChart defaults for [data-slot=chart] — the static .lc-* overrides that shadcn-svelte
623
+ ships as ~30 arbitrary-variant classes on every chart-container instance. Kept here once
624
+ instead; new overrides from upstream chart pulls land in this block, not the container. */
625
+ [data-slot='chart'] .lc-root-container {
626
+ @apply w-full;
627
+ }
628
+
629
+ /* Stroke around dots/marks when hovering */
630
+ [data-slot='chart'] .lc-highlight-point {
631
+ @apply stroke-transparent opacity-100;
632
+ }
633
+
634
+ /* Default stroke color of lines */
635
+ [data-slot='chart'] .lc-line {
636
+ @apply stroke-border/50;
637
+ }
638
+
639
+ /* Hide the line intersecting the point when hovering */
640
+ [data-slot='chart'] .lc-highlight-line {
641
+ @apply stroke-0 opacity-100;
642
+ }
643
+
644
+ /* Hovering a point on a stacked series chart drops the opacity of the other series;
645
+ keep them fully visible */
646
+ [data-slot='chart'] .lc-area-path {
647
+ @apply opacity-100;
648
+ }
649
+
650
+ [data-slot='chart'] .lc-text {
651
+ @apply text-xs;
652
+ }
653
+ [data-slot='chart'] .lc-text-svg {
654
+ @apply overflow-visible;
655
+ }
656
+
657
+ /* No tick lines between the axis labels and the chart (saves disabling `tickMarks`
658
+ on the x/y axis of every chart) */
659
+ [data-slot='chart'] .lc-axis-tick {
660
+ @apply stroke-0;
661
+ }
662
+
663
+ /* No rule on the x/y axis: a grid line is already there and the rule renders after
664
+ the marks, overlapping them */
665
+ [data-slot='chart'] .lc-rule-x-line:not(.lc-grid-x-rule),
666
+ [data-slot='chart'] .lc-rule-y-line:not(.lc-grid-y-rule) {
667
+ @apply stroke-0;
668
+ }
669
+
670
+ [data-slot='chart'] .lc-grid-x-radial-line,
671
+ [data-slot='chart'] .lc-grid-x-radial-circle,
672
+ [data-slot='chart'] .lc-grid-y-radial-line,
673
+ [data-slot='chart'] .lc-grid-y-radial-circle {
674
+ @apply stroke-border;
675
+ }
676
+
677
+ /* Legend */
678
+ [data-slot='chart'] .lc-legend-swatch-button {
679
+ @apply items-center gap-1.5;
680
+ }
681
+ [data-slot='chart'] .lc-legend-swatch-group {
682
+ @apply items-center gap-4;
683
+ }
684
+ [data-slot='chart'] .lc-legend-swatch {
685
+ @apply size-2.5 rounded-xs;
686
+ }
687
+
688
+ /* Labels */
689
+ [data-slot='chart'] .lc-labels-text:not([fill]) {
690
+ @apply fill-foreground;
691
+ }
692
+ [data-slot='chart'] text {
693
+ @apply stroke-transparent;
694
+ }
695
+
696
+ /* Tick labels on the x/y axes */
697
+ [data-slot='chart'] .lc-axis-tick-label {
698
+ @apply fill-muted-foreground font-normal;
699
+ }
700
+
701
+ [data-slot='chart'] .lc-tooltip-rects-g,
702
+ [data-slot='chart'] .lc-layout-svg-g {
703
+ @apply fill-transparent;
704
+ }
705
+
706
+ /* Carousel edge treatment: a slide crossing the scroller's clip edge fades out/in instead of
707
+ hard-cutting its border at the corner. Scroll-driven (compositor, no JS); opacity only —
708
+ a transform here would skew the rect-based snap-offset measurements in carousel.svelte.
709
+ Engines without view() timelines keep the plain hard clip. Firefox: not shipped as of 2026-08
710
+ (flag: layout.css.scroll-driven-animations.enabled) — recheck ~mid-2027. */
711
+ @supports (animation-timeline: view()) {
712
+ [data-slot='carousel-content'] > [data-slot='carousel-item'] {
713
+ animation: carousel-edge-fade linear both;
714
+ animation-timeline: view(inline);
715
+ }
716
+ [data-slot='carousel-content'][data-orientation='vertical'] > [data-slot='carousel-item'] {
717
+ animation-timeline: view(block);
718
+ }
719
+ }
720
+ @keyframes carousel-edge-fade {
721
+ entry 0% {
722
+ opacity: 0.2;
723
+ }
724
+ entry 100% {
725
+ opacity: 1;
726
+ }
727
+ exit 0% {
728
+ opacity: 1;
729
+ }
730
+ exit 100% {
731
+ opacity: 0.2;
732
+ }
733
+ }