zabi-components 8.0.0 → 9.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 (456) hide show
  1. package/CHANGELOG.md +2935 -0
  2. package/README.md +243 -10
  3. package/THEME.md +162 -332
  4. package/THEMING.md +1419 -259
  5. package/dist/atoms/ActionPanel.svelte +15 -5
  6. package/dist/atoms/Avatar.svelte +120 -0
  7. package/dist/atoms/Avatar.svelte.d.ts +46 -0
  8. package/dist/atoms/Badge.svelte +71 -13
  9. package/dist/atoms/Badge.svelte.d.ts +8 -2
  10. package/dist/atoms/Block.svelte +74 -0
  11. package/dist/atoms/Block.svelte.d.ts +29 -0
  12. package/dist/atoms/Button.svelte +217 -30
  13. package/dist/atoms/Button.svelte.d.ts +33 -4
  14. package/dist/atoms/Card.svelte +182 -26
  15. package/dist/atoms/Card.svelte.d.ts +55 -3
  16. package/dist/atoms/CardHeader.svelte +16 -4
  17. package/dist/atoms/Checkbox.svelte +81 -21
  18. package/dist/atoms/Checkbox.svelte.d.ts +31 -2
  19. package/dist/atoms/Chip.svelte +351 -0
  20. package/dist/atoms/Chip.svelte.d.ts +57 -0
  21. package/dist/atoms/CodeBlock.svelte +20 -2
  22. package/dist/atoms/CodeBlock.svelte.d.ts +4 -0
  23. package/dist/atoms/CodeField.svelte +385 -0
  24. package/dist/atoms/CodeField.svelte.d.ts +61 -0
  25. package/dist/atoms/ColorPicker.svelte +260 -49
  26. package/dist/atoms/ColorPicker.svelte.d.ts +3 -0
  27. package/dist/atoms/Container.svelte +16 -8
  28. package/dist/atoms/DateField.svelte +145 -0
  29. package/dist/atoms/DateField.svelte.d.ts +81 -0
  30. package/dist/atoms/FieldMessages.svelte +69 -0
  31. package/dist/atoms/FieldMessages.svelte.d.ts +23 -0
  32. package/dist/atoms/FloatingActionButton.svelte +176 -0
  33. package/dist/atoms/FloatingActionButton.svelte.d.ts +51 -0
  34. package/dist/atoms/Heading.svelte +63 -5
  35. package/dist/atoms/Heading.svelte.d.ts +14 -0
  36. package/dist/atoms/IconButton.svelte +294 -26
  37. package/dist/atoms/IconButton.svelte.d.ts +62 -4
  38. package/dist/atoms/Input.svelte +259 -53
  39. package/dist/atoms/Input.svelte.d.ts +33 -2
  40. package/dist/atoms/List.svelte +5 -1
  41. package/dist/atoms/ListItem.svelte +70 -13
  42. package/dist/atoms/ListItem.svelte.d.ts +11 -0
  43. package/dist/atoms/PickerField.svelte +239 -0
  44. package/dist/atoms/PickerField.svelte.d.ts +67 -0
  45. package/dist/atoms/Progress.svelte +99 -19
  46. package/dist/atoms/Progress.svelte.d.ts +15 -1
  47. package/dist/atoms/Radio.svelte +51 -3
  48. package/dist/atoms/Radio.svelte.d.ts +30 -2
  49. package/dist/atoms/Rating.svelte +620 -0
  50. package/dist/atoms/Rating.svelte.d.ts +77 -0
  51. package/dist/atoms/Select.svelte +438 -98
  52. package/dist/atoms/Select.svelte.d.ts +61 -3
  53. package/dist/atoms/SelectionControl.svelte +193 -23
  54. package/dist/atoms/SelectionControl.svelte.d.ts +29 -3
  55. package/dist/atoms/Skeleton.svelte +114 -18
  56. package/dist/atoms/Skeleton.svelte.d.ts +30 -3
  57. package/dist/atoms/SkeletonGroup.svelte +43 -0
  58. package/dist/atoms/SkeletonGroup.svelte.d.ts +20 -0
  59. package/dist/atoms/Slider.svelte +344 -0
  60. package/dist/atoms/Slider.svelte.d.ts +40 -0
  61. package/dist/atoms/Sparkline.svelte +109 -0
  62. package/dist/atoms/Sparkline.svelte.d.ts +27 -0
  63. package/dist/atoms/SpeechBubble.svelte +187 -0
  64. package/dist/atoms/SpeechBubble.svelte.d.ts +33 -0
  65. package/dist/atoms/Spinner.svelte +57 -0
  66. package/dist/atoms/Spinner.svelte.d.ts +19 -0
  67. package/dist/atoms/Stat.svelte +72 -0
  68. package/dist/atoms/Stat.svelte.d.ts +19 -0
  69. package/dist/atoms/Table.svelte +151 -6
  70. package/dist/atoms/Table.svelte.d.ts +15 -3
  71. package/dist/atoms/TemporalField.svelte +472 -0
  72. package/dist/atoms/TemporalField.svelte.d.ts +48 -0
  73. package/dist/atoms/Text.svelte +23 -11
  74. package/dist/atoms/Text.svelte.d.ts +6 -3
  75. package/dist/atoms/Textarea.svelte +150 -44
  76. package/dist/atoms/Textarea.svelte.d.ts +35 -2
  77. package/dist/atoms/ThemeToggle.svelte +223 -44
  78. package/dist/atoms/ThemeToggle.svelte.d.ts +26 -3
  79. package/dist/atoms/TimeColumn.svelte +150 -0
  80. package/dist/atoms/TimeColumn.svelte.d.ts +25 -0
  81. package/dist/atoms/TimeField.svelte +151 -0
  82. package/dist/atoms/TimeField.svelte.d.ts +85 -0
  83. package/dist/atoms/Toast.svelte +22 -8
  84. package/dist/atoms/Toast.svelte.d.ts +2 -0
  85. package/dist/atoms/Toggle.svelte +98 -14
  86. package/dist/atoms/Toggle.svelte.d.ts +26 -2
  87. package/dist/atoms/Tooltip.svelte +528 -24
  88. package/dist/atoms/Tooltip.svelte.d.ts +18 -0
  89. package/dist/atoms/ZabiStringsProvider.svelte +45 -0
  90. package/dist/atoms/ZabiStringsProvider.svelte.d.ts +27 -0
  91. package/dist/atoms/index.d.ts +38 -0
  92. package/dist/atoms/index.js +29 -0
  93. package/dist/atoms/selection-control.styles.d.ts +47 -5
  94. package/dist/atoms/selection-control.styles.js +52 -10
  95. package/dist/components/atoms/index.d.ts +38 -0
  96. package/dist/components/atoms/index.d.ts.map +1 -1
  97. package/dist/components/atoms/selection-control.styles.d.ts +47 -5
  98. package/dist/components/atoms/selection-control.styles.d.ts.map +1 -1
  99. package/dist/components/index.d.ts +104 -2
  100. package/dist/components/index.d.ts.map +1 -1
  101. package/dist/components/map.d.ts +11 -0
  102. package/dist/components/map.d.ts.map +1 -0
  103. package/dist/components/molecules/index.d.ts +51 -0
  104. package/dist/components/molecules/index.d.ts.map +1 -1
  105. package/dist/components/molecules/toast-store.d.ts +83 -7
  106. package/dist/components/molecules/toast-store.d.ts.map +1 -1
  107. package/dist/components/organisms/index.d.ts +10 -0
  108. package/dist/components/organisms/index.d.ts.map +1 -1
  109. package/dist/components/types/variants.d.ts +24 -1
  110. package/dist/components/types/variants.d.ts.map +1 -1
  111. package/dist/components/util/app-shell.d.ts +79 -0
  112. package/dist/components/util/app-shell.d.ts.map +1 -0
  113. package/dist/components/util/avatar.d.ts +39 -0
  114. package/dist/components/util/avatar.d.ts.map +1 -0
  115. package/dist/components/util/bottom-sheet.d.ts +30 -0
  116. package/dist/components/util/bottom-sheet.d.ts.map +1 -0
  117. package/dist/components/util/bottom-tab-bar.d.ts +41 -0
  118. package/dist/components/util/bottom-tab-bar.d.ts.map +1 -0
  119. package/dist/components/util/calendar.d.ts +56 -0
  120. package/dist/components/util/calendar.d.ts.map +1 -0
  121. package/dist/components/util/chart.d.ts +140 -0
  122. package/dist/components/util/chart.d.ts.map +1 -0
  123. package/dist/components/util/chip.d.ts +66 -0
  124. package/dist/components/util/chip.d.ts.map +1 -0
  125. package/dist/components/util/cn.d.ts.map +1 -1
  126. package/dist/components/util/code-field.d.ts +63 -0
  127. package/dist/components/util/code-field.d.ts.map +1 -0
  128. package/dist/components/util/collapsible.d.ts +64 -0
  129. package/dist/components/util/collapsible.d.ts.map +1 -0
  130. package/dist/components/util/confirm-dialog.d.ts +12 -0
  131. package/dist/components/util/confirm-dialog.d.ts.map +1 -0
  132. package/dist/components/util/date.d.ts +96 -0
  133. package/dist/components/util/date.d.ts.map +1 -0
  134. package/dist/components/util/display-voice.d.ts +10 -0
  135. package/dist/components/util/display-voice.d.ts.map +1 -0
  136. package/dist/components/util/drawer.d.ts +13 -0
  137. package/dist/components/util/drawer.d.ts.map +1 -0
  138. package/dist/components/util/dropdown.d.ts +47 -0
  139. package/dist/components/util/dropdown.d.ts.map +1 -0
  140. package/dist/components/util/field-control.d.ts +30 -0
  141. package/dist/components/util/field-control.d.ts.map +1 -0
  142. package/dist/components/util/field.d.ts +45 -0
  143. package/dist/components/util/field.d.ts.map +1 -0
  144. package/dist/components/util/fit-in-viewport.d.ts +201 -0
  145. package/dist/components/util/fit-in-viewport.d.ts.map +1 -0
  146. package/dist/components/util/focus-utils.d.ts +77 -2
  147. package/dist/components/util/focus-utils.d.ts.map +1 -1
  148. package/dist/components/util/hydration.d.ts +45 -0
  149. package/dist/components/util/hydration.d.ts.map +1 -0
  150. package/dist/components/util/keyboard-inset.d.ts +18 -0
  151. package/dist/components/util/keyboard-inset.d.ts.map +1 -0
  152. package/dist/components/util/map-view.d.ts +144 -0
  153. package/dist/components/util/map-view.d.ts.map +1 -0
  154. package/dist/components/util/media-grid.d.ts +51 -0
  155. package/dist/components/util/media-grid.d.ts.map +1 -0
  156. package/dist/components/util/media.d.ts +6 -0
  157. package/dist/components/util/media.d.ts.map +1 -0
  158. package/dist/components/util/overlay-chrome.d.ts +53 -0
  159. package/dist/components/util/overlay-chrome.d.ts.map +1 -0
  160. package/dist/components/util/overlay.d.ts +72 -0
  161. package/dist/components/util/overlay.d.ts.map +1 -0
  162. package/dist/components/util/photo.d.ts +234 -0
  163. package/dist/components/util/photo.d.ts.map +1 -0
  164. package/dist/components/util/portal.d.ts +23 -0
  165. package/dist/components/util/portal.d.ts.map +1 -0
  166. package/dist/components/util/progress.d.ts +19 -0
  167. package/dist/components/util/progress.d.ts.map +1 -0
  168. package/dist/components/util/pull-to-refresh.d.ts +27 -0
  169. package/dist/components/util/pull-to-refresh.d.ts.map +1 -0
  170. package/dist/components/util/radio-keys.d.ts +25 -0
  171. package/dist/components/util/radio-keys.d.ts.map +1 -0
  172. package/dist/components/util/rating.d.ts +23 -0
  173. package/dist/components/util/rating.d.ts.map +1 -0
  174. package/dist/components/util/ready-made-strings.d.ts +77 -0
  175. package/dist/components/util/ready-made-strings.d.ts.map +1 -0
  176. package/dist/components/util/scroll-edge.d.ts +33 -0
  177. package/dist/components/util/scroll-edge.d.ts.map +1 -0
  178. package/dist/components/util/scroll-padding.d.ts +20 -0
  179. package/dist/components/util/scroll-padding.d.ts.map +1 -0
  180. package/dist/components/util/segmented-control.d.ts +16 -0
  181. package/dist/components/util/segmented-control.d.ts.map +1 -0
  182. package/dist/components/util/select.d.ts +41 -0
  183. package/dist/components/util/select.d.ts.map +1 -0
  184. package/dist/components/util/sheet-drag.d.ts +84 -0
  185. package/dist/components/util/sheet-drag.d.ts.map +1 -0
  186. package/dist/components/util/sidebar.d.ts +63 -0
  187. package/dist/components/util/sidebar.d.ts.map +1 -0
  188. package/dist/components/util/skeleton.d.ts +15 -0
  189. package/dist/components/util/skeleton.d.ts.map +1 -0
  190. package/dist/components/util/sliding-indicator.d.ts +25 -0
  191. package/dist/components/util/sliding-indicator.d.ts.map +1 -0
  192. package/dist/components/util/sortable-list.d.ts +65 -0
  193. package/dist/components/util/sortable-list.d.ts.map +1 -0
  194. package/dist/components/util/stepper.d.ts +40 -0
  195. package/dist/components/util/stepper.d.ts.map +1 -0
  196. package/dist/components/util/swipeable-list-item.d.ts +36 -0
  197. package/dist/components/util/swipeable-list-item.d.ts.map +1 -0
  198. package/dist/components/util/temporal-field.d.ts +89 -0
  199. package/dist/components/util/temporal-field.d.ts.map +1 -0
  200. package/dist/components/util/theme-mode.d.ts +80 -0
  201. package/dist/components/util/theme-mode.d.ts.map +1 -0
  202. package/dist/components/util/toaster.d.ts +133 -0
  203. package/dist/components/util/toaster.d.ts.map +1 -0
  204. package/dist/components/util/tone-surface.d.ts +34 -0
  205. package/dist/components/util/tone-surface.d.ts.map +1 -0
  206. package/dist/components/util/tooltip.d.ts +10 -0
  207. package/dist/components/util/tooltip.d.ts.map +1 -0
  208. package/dist/components/util/top-navbar.d.ts +35 -0
  209. package/dist/components/util/top-navbar.d.ts.map +1 -0
  210. package/dist/components/util/touch-target.d.ts +31 -0
  211. package/dist/components/util/touch-target.d.ts.map +1 -0
  212. package/dist/components/util/zabi-strings.d.ts +142 -0
  213. package/dist/components/util/zabi-strings.d.ts.map +1 -0
  214. package/dist/create-theme/cli.js +173 -0
  215. package/dist/create-theme/index.d.ts +190 -0
  216. package/dist/create-theme/index.js +1034 -0
  217. package/dist/create-theme/lib/ramp-math.js +128 -0
  218. package/dist/create-theme/lib/resolve.js +238 -0
  219. package/dist/create-theme/theme-data.js +2644 -0
  220. package/dist/index.d.ts +104 -2
  221. package/dist/index.js +75 -2
  222. package/dist/map.d.ts +10 -0
  223. package/dist/map.js +9 -0
  224. package/dist/molecules/Alert.svelte +63 -16
  225. package/dist/molecules/Alert.svelte.d.ts +14 -1
  226. package/dist/molecules/AppBar.svelte +674 -0
  227. package/dist/molecules/AppBar.svelte.d.ts +131 -0
  228. package/dist/molecules/AvatarGroup.svelte +116 -0
  229. package/dist/molecules/AvatarGroup.svelte.d.ts +40 -0
  230. package/dist/molecules/BarChart.svelte +381 -0
  231. package/dist/molecules/BarChart.svelte.d.ts +45 -0
  232. package/dist/molecules/BottomSheet.svelte +608 -0
  233. package/dist/molecules/BottomSheet.svelte.d.ts +109 -0
  234. package/dist/molecules/BottomTabBar.svelte +403 -0
  235. package/dist/molecules/BottomTabBar.svelte.d.ts +98 -0
  236. package/dist/molecules/Calendar.svelte +597 -0
  237. package/dist/molecules/Calendar.svelte.d.ts +72 -0
  238. package/dist/molecules/ChipGroup.svelte +325 -0
  239. package/dist/molecules/ChipGroup.svelte.d.ts +41 -0
  240. package/dist/molecules/Collapsible.svelte +347 -0
  241. package/dist/molecules/Collapsible.svelte.d.ts +61 -0
  242. package/dist/molecules/CollapsibleGroup.svelte +136 -0
  243. package/dist/molecules/CollapsibleGroup.svelte.d.ts +14 -0
  244. package/dist/molecules/ComponentDemo.svelte +16 -4
  245. package/dist/molecules/ComponentDemo.svelte.d.ts +3 -0
  246. package/dist/molecules/ConfirmDialog.svelte +257 -0
  247. package/dist/molecules/ConfirmDialog.svelte.d.ts +58 -0
  248. package/dist/molecules/ContactForm.svelte +34 -17
  249. package/dist/molecules/ContactForm.svelte.d.ts +8 -0
  250. package/dist/molecules/Drawer.svelte +415 -0
  251. package/dist/molecules/Drawer.svelte.d.ts +55 -0
  252. package/dist/molecules/Dropdown.svelte +517 -48
  253. package/dist/molecules/Dropdown.svelte.d.ts +47 -6
  254. package/dist/molecules/DropdownItem.svelte +122 -0
  255. package/dist/molecules/DropdownItem.svelte.d.ts +28 -0
  256. package/dist/molecules/EmptyState.svelte +55 -10
  257. package/dist/molecules/EmptyState.svelte.d.ts +8 -0
  258. package/dist/molecules/FormField.svelte +9 -1
  259. package/dist/molecules/FormField.svelte.d.ts +2 -0
  260. package/dist/molecules/Header.svelte +1 -1
  261. package/dist/molecules/ImageUpload.svelte +492 -69
  262. package/dist/molecules/ImageUpload.svelte.d.ts +82 -2
  263. package/dist/molecules/LineChart.svelte +459 -0
  264. package/dist/molecules/LineChart.svelte.d.ts +53 -0
  265. package/dist/molecules/MapView.svelte +565 -0
  266. package/dist/molecules/MapView.svelte.d.ts +88 -0
  267. package/dist/molecules/MediaGrid.svelte +527 -0
  268. package/dist/molecules/MediaGrid.svelte.d.ts +77 -0
  269. package/dist/molecules/Modal.svelte +293 -72
  270. package/dist/molecules/Modal.svelte.d.ts +51 -2
  271. package/dist/molecules/NavigationMenuContent.svelte +58 -1
  272. package/dist/molecules/NavigationMenuItem.svelte +0 -1
  273. package/dist/molecules/NavigationMenuLink.svelte +1 -1
  274. package/dist/molecules/NavigationMenuList.svelte +10 -3
  275. package/dist/molecules/NavigationMenuTrigger.svelte +2 -2
  276. package/dist/molecules/Page.svelte +32 -2
  277. package/dist/molecules/Page.svelte.d.ts +11 -0
  278. package/dist/molecules/PhotoGrid.svelte +523 -0
  279. package/dist/molecules/PhotoGrid.svelte.d.ts +73 -0
  280. package/dist/molecules/PhotoViewer.svelte +1213 -0
  281. package/dist/molecules/PhotoViewer.svelte.d.ts +74 -0
  282. package/dist/molecules/PieChart.svelte +421 -0
  283. package/dist/molecules/PieChart.svelte.d.ts +51 -0
  284. package/dist/molecules/PropsTable.svelte +22 -10
  285. package/dist/molecules/PropsTable.svelte.d.ts +3 -0
  286. package/dist/molecules/PullToRefresh.svelte +263 -0
  287. package/dist/molecules/PullToRefresh.svelte.d.ts +52 -0
  288. package/dist/molecules/RadioGroup.svelte +72 -18
  289. package/dist/molecules/RadioGroup.svelte.d.ts +19 -3
  290. package/dist/molecules/Section.svelte +1 -1
  291. package/dist/molecules/SegmentedControl.svelte +456 -0
  292. package/dist/molecules/SegmentedControl.svelte.d.ts +40 -0
  293. package/dist/molecules/SidebarBrandHeader.svelte +11 -1
  294. package/dist/molecules/SidebarBrandHeader.svelte.d.ts +3 -0
  295. package/dist/molecules/SidebarFooter.svelte +30 -7
  296. package/dist/molecules/SidebarFooter.svelte.d.ts +3 -0
  297. package/dist/molecules/SidebarNavSection.svelte +1 -1
  298. package/dist/molecules/SlideUp.svelte +220 -61
  299. package/dist/molecules/SlideUp.svelte.d.ts +26 -0
  300. package/dist/molecules/SortableList.svelte +633 -0
  301. package/dist/molecules/SortableList.svelte.d.ts +69 -0
  302. package/dist/molecules/Stepper.svelte +562 -0
  303. package/dist/molecules/Stepper.svelte.d.ts +39 -0
  304. package/dist/molecules/StickyActionBar.svelte +250 -0
  305. package/dist/molecules/StickyActionBar.svelte.d.ts +78 -0
  306. package/dist/molecules/SwipeableListItem.svelte +334 -0
  307. package/dist/molecules/SwipeableListItem.svelte.d.ts +54 -0
  308. package/dist/molecules/Tabs.svelte +310 -9
  309. package/dist/molecules/Tabs.svelte.d.ts +7 -0
  310. package/dist/molecules/Toaster.svelte +514 -5
  311. package/dist/molecules/Toaster.svelte.d.ts +153 -2
  312. package/dist/molecules/ToasterToast.svelte +495 -77
  313. package/dist/molecules/ToasterToast.svelte.d.ts +15 -0
  314. package/dist/molecules/UnsavedChangesBar.svelte +223 -0
  315. package/dist/molecules/UnsavedChangesBar.svelte.d.ts +43 -0
  316. package/dist/molecules/index.d.ts +51 -0
  317. package/dist/molecules/index.js +31 -0
  318. package/dist/molecules/toast-store.d.ts +83 -7
  319. package/dist/molecules/toast-store.js +25 -1
  320. package/dist/organisms/AppNavigation.svelte +440 -0
  321. package/dist/organisms/AppNavigation.svelte.d.ts +72 -0
  322. package/dist/organisms/AppShell.svelte +696 -0
  323. package/dist/organisms/AppShell.svelte.d.ts +157 -0
  324. package/dist/organisms/AppShellHeaderPart.svelte +163 -0
  325. package/dist/organisms/AppShellHeaderPart.svelte.d.ts +57 -0
  326. package/dist/organisms/SidebarAccountPanel.svelte +107 -12
  327. package/dist/organisms/SidebarAccountPanel.svelte.d.ts +19 -0
  328. package/dist/organisms/SidebarNavigation.svelte +111 -43
  329. package/dist/organisms/SidebarNavigation.svelte.d.ts +29 -1
  330. package/dist/organisms/SidebarPanel.svelte +34 -17
  331. package/dist/organisms/SidebarPanel.svelte.d.ts +1 -0
  332. package/dist/organisms/SidebarShell.svelte +164 -14
  333. package/dist/organisms/SidebarShell.svelte.d.ts +56 -2
  334. package/dist/organisms/TopNavbar.svelte +353 -39
  335. package/dist/organisms/TopNavbar.svelte.d.ts +47 -0
  336. package/dist/organisms/TopNavbarSheetContent.svelte +145 -0
  337. package/dist/organisms/TopNavbarSheetContent.svelte.d.ts +24 -0
  338. package/dist/organisms/index.d.ts +10 -0
  339. package/dist/organisms/index.js +7 -0
  340. package/dist/types/components.d.ts +21 -1
  341. package/dist/types/components.d.ts.map +1 -1
  342. package/dist/types/index.d.ts +1093 -26
  343. package/dist/types/index.d.ts.map +1 -1
  344. package/dist/types/variants.ts +28 -1
  345. package/dist/util/app-shell.d.ts +78 -0
  346. package/dist/util/app-shell.js +97 -0
  347. package/dist/util/avatar.d.ts +38 -0
  348. package/dist/util/avatar.js +52 -0
  349. package/dist/util/bottom-sheet.d.ts +29 -0
  350. package/dist/util/bottom-sheet.js +43 -0
  351. package/dist/util/bottom-tab-bar.d.ts +40 -0
  352. package/dist/util/bottom-tab-bar.js +54 -0
  353. package/dist/util/calendar.d.ts +55 -0
  354. package/dist/util/calendar.js +74 -0
  355. package/dist/util/chart.d.ts +139 -0
  356. package/dist/util/chart.js +305 -0
  357. package/dist/util/chip.d.ts +65 -0
  358. package/dist/util/chip.js +58 -0
  359. package/dist/util/cn.js +28 -2
  360. package/dist/util/code-field.d.ts +62 -0
  361. package/dist/util/code-field.js +112 -0
  362. package/dist/util/collapsible.d.ts +63 -0
  363. package/dist/util/collapsible.js +23 -0
  364. package/dist/util/confirm-dialog.d.ts +11 -0
  365. package/dist/util/confirm-dialog.js +2 -0
  366. package/dist/util/date.d.ts +95 -0
  367. package/dist/util/date.js +237 -0
  368. package/dist/util/display-voice.d.ts +9 -0
  369. package/dist/util/display-voice.js +9 -0
  370. package/dist/util/drawer.d.ts +12 -0
  371. package/dist/util/drawer.js +7 -0
  372. package/dist/util/dropdown.d.ts +46 -0
  373. package/dist/util/dropdown.js +21 -0
  374. package/dist/util/field-control.d.ts +29 -0
  375. package/dist/util/field-control.js +32 -0
  376. package/dist/util/field.d.ts +44 -0
  377. package/dist/util/field.js +38 -0
  378. package/dist/util/fit-in-viewport.d.ts +200 -0
  379. package/dist/util/fit-in-viewport.js +399 -0
  380. package/dist/util/focus-utils.d.ts +77 -2
  381. package/dist/util/focus-utils.js +186 -9
  382. package/dist/util/hydration.d.ts +44 -0
  383. package/dist/util/hydration.js +58 -0
  384. package/dist/util/keyboard-inset.d.ts +17 -0
  385. package/dist/util/keyboard-inset.js +53 -0
  386. package/dist/util/map-view.d.ts +143 -0
  387. package/dist/util/map-view.js +121 -0
  388. package/dist/util/media-grid.d.ts +50 -0
  389. package/dist/util/media-grid.js +81 -0
  390. package/dist/util/media.d.ts +5 -0
  391. package/dist/util/media.js +10 -0
  392. package/dist/util/overlay-chrome.d.ts +52 -0
  393. package/dist/util/overlay-chrome.js +56 -0
  394. package/dist/util/overlay.d.ts +71 -0
  395. package/dist/util/overlay.js +240 -0
  396. package/dist/util/photo.d.ts +233 -0
  397. package/dist/util/photo.js +209 -0
  398. package/dist/util/portal.d.ts +22 -0
  399. package/dist/util/portal.js +50 -0
  400. package/dist/util/progress.d.ts +18 -0
  401. package/dist/util/progress.js +17 -0
  402. package/dist/util/pull-to-refresh.d.ts +26 -0
  403. package/dist/util/pull-to-refresh.js +30 -0
  404. package/dist/util/radio-keys.d.ts +24 -0
  405. package/dist/util/radio-keys.js +49 -0
  406. package/dist/util/rating.d.ts +22 -0
  407. package/dist/util/rating.js +26 -0
  408. package/dist/util/ready-made-strings.d.ts +76 -0
  409. package/dist/util/ready-made-strings.js +67 -0
  410. package/dist/util/scroll-edge.d.ts +32 -0
  411. package/dist/util/scroll-edge.js +87 -0
  412. package/dist/util/scroll-padding.d.ts +19 -0
  413. package/dist/util/scroll-padding.js +44 -0
  414. package/dist/util/segmented-control.d.ts +15 -0
  415. package/dist/util/segmented-control.js +1 -0
  416. package/dist/util/select.d.ts +40 -0
  417. package/dist/util/select.js +63 -0
  418. package/dist/util/sheet-drag.d.ts +83 -0
  419. package/dist/util/sheet-drag.js +311 -0
  420. package/dist/util/sidebar.d.ts +62 -0
  421. package/dist/util/sidebar.js +38 -0
  422. package/dist/util/skeleton.d.ts +14 -0
  423. package/dist/util/skeleton.js +22 -0
  424. package/dist/util/sliding-indicator.d.ts +24 -0
  425. package/dist/util/sliding-indicator.js +44 -0
  426. package/dist/util/sortable-list.d.ts +64 -0
  427. package/dist/util/sortable-list.js +53 -0
  428. package/dist/util/stepper.d.ts +39 -0
  429. package/dist/util/stepper.js +38 -0
  430. package/dist/util/swipeable-list-item.d.ts +35 -0
  431. package/dist/util/swipeable-list-item.js +32 -0
  432. package/dist/util/temporal-field.d.ts +88 -0
  433. package/dist/util/temporal-field.js +136 -0
  434. package/dist/util/theme-mode.d.ts +79 -0
  435. package/dist/util/theme-mode.js +121 -0
  436. package/dist/util/toaster.d.ts +132 -0
  437. package/dist/util/toaster.js +130 -0
  438. package/dist/util/tone-surface.d.ts +33 -0
  439. package/dist/util/tone-surface.js +35 -0
  440. package/dist/util/tooltip.d.ts +9 -0
  441. package/dist/util/tooltip.js +18 -0
  442. package/dist/util/top-navbar.d.ts +34 -0
  443. package/dist/util/top-navbar.js +28 -0
  444. package/dist/util/touch-target.d.ts +30 -0
  445. package/dist/util/touch-target.js +30 -0
  446. package/dist/util/zabi-strings.d.ts +141 -0
  447. package/dist/util/zabi-strings.js +105 -0
  448. package/dist/zabi-components-colors.css +11 -2
  449. package/dist/zabi-components-theme-dark-only.css +870 -258
  450. package/dist/zabi-components-theme-dark.css +870 -258
  451. package/dist/zabi-components-theme-only.css +2419 -368
  452. package/dist/zabi-components-theme.css +2419 -368
  453. package/dist/zabi-components.css +6032 -711
  454. package/docs/lucide-icons.md +40 -17
  455. package/docs/theme-imports.md +81 -11
  456. package/package.json +45 -8
package/dist/index.d.ts CHANGED
@@ -1,19 +1,32 @@
1
1
  export { default as Toggle } from './atoms/Toggle.svelte';
2
2
  export { default as Badge } from './atoms/Badge.svelte';
3
+ export { default as Stat } from './atoms/Stat.svelte';
4
+ export { default as SpeechBubble } from './atoms/SpeechBubble.svelte';
5
+ export { default as Sparkline } from './atoms/Sparkline.svelte';
6
+ export { default as Chip } from './atoms/Chip.svelte';
3
7
  export { default as Button } from './atoms/Button.svelte';
4
8
  export { default as IconButton } from './atoms/IconButton.svelte';
9
+ export { default as Block } from './atoms/Block.svelte';
5
10
  export { default as Card } from './atoms/Card.svelte';
6
11
  export { default as CardHeader } from './atoms/CardHeader.svelte';
7
12
  export { default as CardContent } from './atoms/CardContent.svelte';
8
13
  export { default as CardFooter } from './atoms/CardFooter.svelte';
9
14
  export { default as Input } from './atoms/Input.svelte';
15
+ export { default as CodeField } from './atoms/CodeField.svelte';
16
+ export { DEFAULT_CODE_FIELD_STRINGS } from './util/code-field.js';
17
+ export type { CodeFieldMode, CodeFieldSize, CodeFieldStrings } from './util/code-field.js';
10
18
  export { default as Textarea } from './atoms/Textarea.svelte';
19
+ export type { TextareaCount } from './util/field.js';
20
+ export { default as PickerField } from './atoms/PickerField.svelte';
11
21
  export { default as Select } from './atoms/Select.svelte';
22
+ export { default as Slider } from './atoms/Slider.svelte';
12
23
  export { default as ColorPicker } from './atoms/ColorPicker.svelte';
13
24
  export { default as List } from './atoms/List.svelte';
14
25
  export { default as ListItem } from './atoms/ListItem.svelte';
15
26
  export { default as Heading } from './atoms/Heading.svelte';
16
27
  export { default as ThemeToggle } from './atoms/ThemeToggle.svelte';
28
+ export { DEFAULT_THEME_STORAGE_KEY, THEME_MODES, getStoredThemeMode, getThemeMode, isThemeDark, isThemeMode, setThemeMode, storeThemeMode, themeInitScript, } from './util/theme-mode.js';
29
+ export type { SetThemeModeOptions, ThemeMode, ThemeToggleLabels } from './util/theme-mode.js';
17
30
  export { default as Divider } from './atoms/Divider.svelte';
18
31
  export { default as Container } from './atoms/Container.svelte';
19
32
  export { default as Text } from './atoms/Text.svelte';
@@ -22,26 +35,43 @@ export { default as Toast } from './atoms/Toast.svelte';
22
35
  export { default as Tooltip } from './atoms/Tooltip.svelte';
23
36
  export { default as Progress } from './atoms/Progress.svelte';
24
37
  export { default as Skeleton } from './atoms/Skeleton.svelte';
38
+ export { default as SkeletonGroup } from './atoms/SkeletonGroup.svelte';
39
+ export { DEFAULT_SKELETON_STRINGS } from './util/skeleton.js';
40
+ export type { SkeletonStrings } from './util/skeleton.js';
25
41
  export { default as Checkbox } from './atoms/Checkbox.svelte';
26
42
  export { default as Radio } from './atoms/Radio.svelte';
27
43
  export { default as CodeBlock } from './atoms/CodeBlock.svelte';
28
44
  export { default as FeatureCard } from './atoms/FeatureCard.svelte';
29
45
  export { default as OptimizedImage } from './atoms/OptimizedImage.svelte';
30
46
  export { default as ActionPanel } from './atoms/ActionPanel.svelte';
47
+ export { default as Spinner } from './atoms/Spinner.svelte';
48
+ export { default as Rating } from './atoms/Rating.svelte';
49
+ export type { ProgressStrings } from './util/progress.js';
50
+ export type { RatingStrings } from './util/rating.js';
51
+ export { default as FloatingActionButton } from './atoms/FloatingActionButton.svelte';
52
+ export { default as DateField } from './atoms/DateField.svelte';
53
+ export { default as TimeField } from './atoms/TimeField.svelte';
31
54
  export { default as Alert } from './molecules/Alert.svelte';
32
55
  export { default as ComponentDemo } from './molecules/ComponentDemo.svelte';
33
56
  export { default as ContactForm } from './molecules/ContactForm.svelte';
34
57
  export { default as Dropdown } from './molecules/Dropdown.svelte';
58
+ export { default as DropdownItem } from './molecules/DropdownItem.svelte';
59
+ export type { DropdownItemIcon, DropdownItemTone, DropdownOption, } from './util/dropdown.js';
35
60
  export { default as Form } from './molecules/Form.svelte';
36
61
  export { default as FormField } from './molecules/FormField.svelte';
37
62
  export { default as Header } from './molecules/Header.svelte';
38
63
  export { default as EmptyState } from './molecules/EmptyState.svelte';
39
64
  export { default as Toaster } from './molecules/Toaster.svelte';
40
65
  export { default as ImageUpload } from './molecules/ImageUpload.svelte';
66
+ export { default as MediaGrid } from './molecules/MediaGrid.svelte';
67
+ export type { MediaGridItemType, MediaGridKey, MediaGridSelectDetail, MediaGridStrings, } from './util/media-grid.js';
41
68
  export { default as Modal } from './molecules/Modal.svelte';
42
69
  export { default as SlideUp } from './molecules/SlideUp.svelte';
43
70
  export { default as Tabs } from './molecules/Tabs.svelte';
44
71
  export { default as RadioGroup } from './molecules/RadioGroup.svelte';
72
+ export { default as ChipGroup } from './molecules/ChipGroup.svelte';
73
+ export { default as SegmentedControl } from './molecules/SegmentedControl.svelte';
74
+ export type { SegmentedControlIcon, SegmentedControlOption, } from './util/segmented-control.js';
45
75
  export { default as NavigationMenu } from './molecules/NavigationMenu.svelte';
46
76
  export { default as NavigationMenuList } from './molecules/NavigationMenuList.svelte';
47
77
  export { default as NavigationMenuItem } from './molecules/NavigationMenuItem.svelte';
@@ -53,14 +83,72 @@ export { default as Section } from './molecules/Section.svelte';
53
83
  export { default as SidebarBrandHeader } from './molecules/SidebarBrandHeader.svelte';
54
84
  export { default as SidebarFooter } from './molecules/SidebarFooter.svelte';
55
85
  export { default as SidebarNavSection } from './molecules/SidebarNavSection.svelte';
56
- export { toastStore, pushToast, dismissToast, type ToastItem, type ToastLevel, } from './molecules/toast-store.js';
86
+ export { default as SortableList } from './molecules/SortableList.svelte';
87
+ export type { SortableListAnnouncement, SortableListReorderDetail, SortableListRow, SortableListStrings, } from './util/sortable-list.js';
88
+ export { default as Collapsible } from './molecules/Collapsible.svelte';
89
+ export { default as SwipeableListItem } from './molecules/SwipeableListItem.svelte';
90
+ export { DEFAULT_SWIPEABLE_LIST_ITEM_STRINGS } from './util/swipeable-list-item.js';
91
+ export type { SwipeableListItemAction, SwipeableListItemStrings } from './util/swipeable-list-item.js';
92
+ export { default as PullToRefresh } from './molecules/PullToRefresh.svelte';
93
+ export { DEFAULT_PULL_TO_REFRESH_STRINGS } from './util/pull-to-refresh.js';
94
+ export type { PullToRefreshStrings } from './util/pull-to-refresh.js';
95
+ export { default as CollapsibleGroup } from './molecules/CollapsibleGroup.svelte';
96
+ export type { CollapsibleHeadingLevel, CollapsibleTriggerProps, CollapsibleTriggerState, } from './util/collapsible.js';
97
+ export { default as ConfirmDialog } from './molecules/ConfirmDialog.svelte';
98
+ export type { ConfirmDialogCancelReason, ConfirmDialogResult, ConfirmDialogVariant, } from './util/confirm-dialog.js';
99
+ export { default as Drawer } from './molecules/Drawer.svelte';
100
+ export type { DrawerCloseReason, DrawerSide, DrawerSize, } from './util/drawer.js';
101
+ export { default as UnsavedChangesBar } from './molecules/UnsavedChangesBar.svelte';
102
+ export { default as AppBar } from './molecules/AppBar.svelte';
103
+ export { default as BottomTabBar } from './molecules/BottomTabBar.svelte';
104
+ export type { BottomTabBarIcon, BottomTabBarItem, } from './util/bottom-tab-bar.js';
105
+ export { default as BottomSheet } from './molecules/BottomSheet.svelte';
106
+ export type { BottomSheetCloseReason, BottomSheetSnap, } from './util/bottom-sheet.js';
107
+ export { default as StickyActionBar } from './molecules/StickyActionBar.svelte';
108
+ export { default as Calendar } from './molecules/Calendar.svelte';
109
+ export type { CalendarEvent, CalendarStrings, CalendarTone, } from './util/calendar.js';
110
+ export { default as PhotoGrid } from './molecules/PhotoGrid.svelte';
111
+ export { default as PhotoViewer } from './molecules/PhotoViewer.svelte';
112
+ export type { Photo, PhotoGridSelectDetail, PhotoGridStrings, PhotoKey, PhotoStatus, PhotoViewerAction, PhotoViewerCloseReason, PhotoViewerStrings, } from './util/photo.js';
113
+ export { default as Avatar } from './atoms/Avatar.svelte';
114
+ export { default as AvatarGroup } from './molecules/AvatarGroup.svelte';
115
+ export { DEFAULT_AVATAR_GROUP_STRINGS } from './util/avatar.js';
116
+ export type { AvatarGroupStrings, AvatarPerson, AvatarSize } from './util/avatar.js';
117
+ export { default as LineChart } from './molecules/LineChart.svelte';
118
+ export { default as BarChart } from './molecules/BarChart.svelte';
119
+ export { default as PieChart } from './molecules/PieChart.svelte';
120
+ export type { ChartColor, ChartColorName, ChartDatum, ChartFormat, ChartSeries, } from './util/chart.js';
121
+ export { default as Stepper } from './molecules/Stepper.svelte';
122
+ export type { StepperItem, StepperLayout, StepperStep, StepperStepState, StepperStrings, } from './util/stepper.js';
123
+ export { toastStore, pushToast, dismissToast, focusToasts, type ToastItem, type ToastAction, type ToastLevel, } from './molecules/toast-store.js';
124
+ export { DEFAULT_TOASTER_STRINGS, TOAST_DURATIONS } from './util/toaster.js';
125
+ export type { ToasterStrings, ToasterMode, ToastPauseChange, ToastDuration } from './util/toaster.js';
126
+ export { DEFAULT_SELECT_STRINGS } from './util/select.js';
127
+ export type { SelectStrings, SelectPresentation } from './util/select.js';
128
+ export { DEFAULT_TOP_NAVBAR_STRINGS } from './util/top-navbar.js';
129
+ export type { TopNavbarStrings, TopNavbarPlace } from './util/top-navbar.js';
130
+ export { getTopNavbarPlace } from './util/top-navbar.js';
131
+ export { DEFAULT_SIDEBAR_ACCOUNT_PANEL_STRINGS, DEFAULT_SIDEBAR_BRAND_HEADER_STRINGS, DEFAULT_SIDEBAR_FOOTER_STRINGS, DEFAULT_SIDEBAR_NAVIGATION_STRINGS, } from './util/sidebar.js';
132
+ export type { SidebarAccountPanelStrings, SidebarBrandHeaderStrings, SidebarFooterStrings, SidebarNavigationStrings, } from './util/sidebar.js';
133
+ export { DEFAULT_COLOR_PICKER_STRINGS, DEFAULT_COMPONENT_DEMO_STRINGS, DEFAULT_CONTACT_FORM_STRINGS, DEFAULT_PROPS_TABLE_STRINGS, } from './util/ready-made-strings.js';
134
+ export type { ColorPickerStrings, ComponentDemoStrings, ContactFormStrings, PropsTableStrings, } from './util/ready-made-strings.js';
57
135
  export { default as TopNavbar } from './organisms/TopNavbar.svelte';
58
136
  export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
59
137
  export { default as SidebarShell } from './organisms/SidebarShell.svelte';
60
138
  export { default as SidebarAccountPanel } from './organisms/SidebarAccountPanel.svelte';
61
139
  export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
140
+ export { default as AppShell } from './organisms/AppShell.svelte';
141
+ export { default as AppShellHeaderPart } from './organisms/AppShellHeaderPart.svelte';
142
+ export { default as AppNavigation } from './organisms/AppNavigation.svelte';
143
+ export { APP_SHELL_RAIL_MIN_WIDTH, APP_SHELL_SIDEBAR_MIN_WIDTH, } from './util/app-shell.js';
144
+ export type { AppShellNavigationContext, AppShellNavigationMode, AppShellNavigationPlacement, } from './util/app-shell.js';
62
145
  import { generateId } from './util/ssr-safe.js';
63
146
  export { generateId };
147
+ /**
148
+ * Dates and times for reading, in the page's language: what a DateField or a
149
+ * TimeField holds (`2026-10-06`, `19:00`) as "6 okt. 2026" and "19:00".
150
+ */
151
+ export { formatDate, formatTime } from './util/date.js';
64
152
  export declare const createId: (prefix?: string) => string;
65
153
  export declare const cn: (...classes: (string | undefined | null | false)[]) => string;
66
154
  export declare const getFormData: (form: HTMLFormElement) => Record<string, unknown>;
@@ -70,4 +158,18 @@ export declare const isBrowser: () => boolean;
70
158
  export declare const safeWindow: () => Window | undefined;
71
159
  export declare const safeDocument: () => Document | undefined;
72
160
  export declare const safeLocalStorage: () => Storage | undefined;
73
- export { Sun, Moon, Monitor, Grip, GripVertical, ChevronUp, ChevronDown, ChevronRight, Zap, Briefcase, Clipboard, Settings, } from '@lucide/svelte';
161
+ export { default as Sun } from '@lucide/svelte/icons/sun';
162
+ export { default as Moon } from '@lucide/svelte/icons/moon';
163
+ export { default as Monitor } from '@lucide/svelte/icons/monitor';
164
+ export { default as Grip } from '@lucide/svelte/icons/grip';
165
+ export { default as GripVertical } from '@lucide/svelte/icons/grip-vertical';
166
+ export { default as ChevronUp } from '@lucide/svelte/icons/chevron-up';
167
+ export { default as ChevronDown } from '@lucide/svelte/icons/chevron-down';
168
+ export { default as ChevronRight } from '@lucide/svelte/icons/chevron-right';
169
+ export { default as Zap } from '@lucide/svelte/icons/zap';
170
+ export { default as Briefcase } from '@lucide/svelte/icons/briefcase';
171
+ export { default as Clipboard } from '@lucide/svelte/icons/clipboard';
172
+ export { default as Settings } from '@lucide/svelte/icons/settings';
173
+ export { default as ZabiStringsProvider } from './atoms/ZabiStringsProvider.svelte';
174
+ export { DEFAULT_ZABI_COMMON_STRINGS, getZabiStrings } from './util/zabi-strings.js';
175
+ export type { ZabiStrings, ZabiCommonStrings, ZabiStringsContext, AlertTexts, CodeBlockTexts, ImageUploadTexts, ToastTexts, UnsavedChangesBarTexts } from './util/zabi-strings.js';
package/dist/index.js CHANGED
@@ -1,19 +1,29 @@
1
1
  export { default as Toggle } from './atoms/Toggle.svelte';
2
2
  export { default as Badge } from './atoms/Badge.svelte';
3
+ export { default as Stat } from './atoms/Stat.svelte';
4
+ export { default as SpeechBubble } from './atoms/SpeechBubble.svelte';
5
+ export { default as Sparkline } from './atoms/Sparkline.svelte';
6
+ export { default as Chip } from './atoms/Chip.svelte';
3
7
  export { default as Button } from './atoms/Button.svelte';
4
8
  export { default as IconButton } from './atoms/IconButton.svelte';
9
+ export { default as Block } from './atoms/Block.svelte';
5
10
  export { default as Card } from './atoms/Card.svelte';
6
11
  export { default as CardHeader } from './atoms/CardHeader.svelte';
7
12
  export { default as CardContent } from './atoms/CardContent.svelte';
8
13
  export { default as CardFooter } from './atoms/CardFooter.svelte';
9
14
  export { default as Input } from './atoms/Input.svelte';
15
+ export { default as CodeField } from './atoms/CodeField.svelte';
16
+ export { DEFAULT_CODE_FIELD_STRINGS } from './util/code-field.js';
10
17
  export { default as Textarea } from './atoms/Textarea.svelte';
18
+ export { default as PickerField } from './atoms/PickerField.svelte';
11
19
  export { default as Select } from './atoms/Select.svelte';
20
+ export { default as Slider } from './atoms/Slider.svelte';
12
21
  export { default as ColorPicker } from './atoms/ColorPicker.svelte';
13
22
  export { default as List } from './atoms/List.svelte';
14
23
  export { default as ListItem } from './atoms/ListItem.svelte';
15
24
  export { default as Heading } from './atoms/Heading.svelte';
16
25
  export { default as ThemeToggle } from './atoms/ThemeToggle.svelte';
26
+ export { DEFAULT_THEME_STORAGE_KEY, THEME_MODES, getStoredThemeMode, getThemeMode, isThemeDark, isThemeMode, setThemeMode, storeThemeMode, themeInitScript, } from './util/theme-mode.js';
17
27
  export { default as Divider } from './atoms/Divider.svelte';
18
28
  export { default as Container } from './atoms/Container.svelte';
19
29
  export { default as Text } from './atoms/Text.svelte';
@@ -22,26 +32,37 @@ export { default as Toast } from './atoms/Toast.svelte';
22
32
  export { default as Tooltip } from './atoms/Tooltip.svelte';
23
33
  export { default as Progress } from './atoms/Progress.svelte';
24
34
  export { default as Skeleton } from './atoms/Skeleton.svelte';
35
+ export { default as SkeletonGroup } from './atoms/SkeletonGroup.svelte';
36
+ export { DEFAULT_SKELETON_STRINGS } from './util/skeleton.js';
25
37
  export { default as Checkbox } from './atoms/Checkbox.svelte';
26
38
  export { default as Radio } from './atoms/Radio.svelte';
27
39
  export { default as CodeBlock } from './atoms/CodeBlock.svelte';
28
40
  export { default as FeatureCard } from './atoms/FeatureCard.svelte';
29
41
  export { default as OptimizedImage } from './atoms/OptimizedImage.svelte';
30
42
  export { default as ActionPanel } from './atoms/ActionPanel.svelte';
43
+ export { default as Spinner } from './atoms/Spinner.svelte';
44
+ export { default as Rating } from './atoms/Rating.svelte';
45
+ export { default as FloatingActionButton } from './atoms/FloatingActionButton.svelte';
46
+ export { default as DateField } from './atoms/DateField.svelte';
47
+ export { default as TimeField } from './atoms/TimeField.svelte';
31
48
  export { default as Alert } from './molecules/Alert.svelte';
32
49
  export { default as ComponentDemo } from './molecules/ComponentDemo.svelte';
33
50
  export { default as ContactForm } from './molecules/ContactForm.svelte';
34
51
  export { default as Dropdown } from './molecules/Dropdown.svelte';
52
+ export { default as DropdownItem } from './molecules/DropdownItem.svelte';
35
53
  export { default as Form } from './molecules/Form.svelte';
36
54
  export { default as FormField } from './molecules/FormField.svelte';
37
55
  export { default as Header } from './molecules/Header.svelte';
38
56
  export { default as EmptyState } from './molecules/EmptyState.svelte';
39
57
  export { default as Toaster } from './molecules/Toaster.svelte';
40
58
  export { default as ImageUpload } from './molecules/ImageUpload.svelte';
59
+ export { default as MediaGrid } from './molecules/MediaGrid.svelte';
41
60
  export { default as Modal } from './molecules/Modal.svelte';
42
61
  export { default as SlideUp } from './molecules/SlideUp.svelte';
43
62
  export { default as Tabs } from './molecules/Tabs.svelte';
44
63
  export { default as RadioGroup } from './molecules/RadioGroup.svelte';
64
+ export { default as ChipGroup } from './molecules/ChipGroup.svelte';
65
+ export { default as SegmentedControl } from './molecules/SegmentedControl.svelte';
45
66
  export { default as NavigationMenu } from './molecules/NavigationMenu.svelte';
46
67
  export { default as NavigationMenuList } from './molecules/NavigationMenuList.svelte';
47
68
  export { default as NavigationMenuItem } from './molecules/NavigationMenuItem.svelte';
@@ -53,14 +74,53 @@ export { default as Section } from './molecules/Section.svelte';
53
74
  export { default as SidebarBrandHeader } from './molecules/SidebarBrandHeader.svelte';
54
75
  export { default as SidebarFooter } from './molecules/SidebarFooter.svelte';
55
76
  export { default as SidebarNavSection } from './molecules/SidebarNavSection.svelte';
56
- export { toastStore, pushToast, dismissToast, } from './molecules/toast-store.js';
77
+ export { default as SortableList } from './molecules/SortableList.svelte';
78
+ export { default as Collapsible } from './molecules/Collapsible.svelte';
79
+ export { default as SwipeableListItem } from './molecules/SwipeableListItem.svelte';
80
+ export { DEFAULT_SWIPEABLE_LIST_ITEM_STRINGS } from './util/swipeable-list-item.js';
81
+ export { default as PullToRefresh } from './molecules/PullToRefresh.svelte';
82
+ export { DEFAULT_PULL_TO_REFRESH_STRINGS } from './util/pull-to-refresh.js';
83
+ export { default as CollapsibleGroup } from './molecules/CollapsibleGroup.svelte';
84
+ export { default as ConfirmDialog } from './molecules/ConfirmDialog.svelte';
85
+ export { default as Drawer } from './molecules/Drawer.svelte';
86
+ export { default as UnsavedChangesBar } from './molecules/UnsavedChangesBar.svelte';
87
+ export { default as AppBar } from './molecules/AppBar.svelte';
88
+ export { default as BottomTabBar } from './molecules/BottomTabBar.svelte';
89
+ export { default as BottomSheet } from './molecules/BottomSheet.svelte';
90
+ export { default as StickyActionBar } from './molecules/StickyActionBar.svelte';
91
+ export { default as Calendar } from './molecules/Calendar.svelte';
92
+ export { default as PhotoGrid } from './molecules/PhotoGrid.svelte';
93
+ export { default as PhotoViewer } from './molecules/PhotoViewer.svelte';
94
+ export { default as Avatar } from './atoms/Avatar.svelte';
95
+ export { default as AvatarGroup } from './molecules/AvatarGroup.svelte';
96
+ export { DEFAULT_AVATAR_GROUP_STRINGS } from './util/avatar.js';
97
+ export { default as LineChart } from './molecules/LineChart.svelte';
98
+ export { default as BarChart } from './molecules/BarChart.svelte';
99
+ export { default as PieChart } from './molecules/PieChart.svelte';
100
+ export { default as Stepper } from './molecules/Stepper.svelte';
101
+ export { toastStore, pushToast, dismissToast, focusToasts, } from './molecules/toast-store.js';
102
+ export { DEFAULT_TOASTER_STRINGS, TOAST_DURATIONS } from './util/toaster.js';
103
+ export { DEFAULT_SELECT_STRINGS } from './util/select.js';
104
+ export { DEFAULT_TOP_NAVBAR_STRINGS } from './util/top-navbar.js';
105
+ export { getTopNavbarPlace } from './util/top-navbar.js';
106
+ export { DEFAULT_SIDEBAR_ACCOUNT_PANEL_STRINGS, DEFAULT_SIDEBAR_BRAND_HEADER_STRINGS, DEFAULT_SIDEBAR_FOOTER_STRINGS, DEFAULT_SIDEBAR_NAVIGATION_STRINGS, } from './util/sidebar.js';
107
+ export { DEFAULT_COLOR_PICKER_STRINGS, DEFAULT_COMPONENT_DEMO_STRINGS, DEFAULT_CONTACT_FORM_STRINGS, DEFAULT_PROPS_TABLE_STRINGS, } from './util/ready-made-strings.js';
57
108
  export { default as TopNavbar } from './organisms/TopNavbar.svelte';
58
109
  export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
59
110
  export { default as SidebarShell } from './organisms/SidebarShell.svelte';
60
111
  export { default as SidebarAccountPanel } from './organisms/SidebarAccountPanel.svelte';
61
112
  export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
113
+ export { default as AppShell } from './organisms/AppShell.svelte';
114
+ export { default as AppShellHeaderPart } from './organisms/AppShellHeaderPart.svelte';
115
+ export { default as AppNavigation } from './organisms/AppNavigation.svelte';
116
+ export { APP_SHELL_RAIL_MIN_WIDTH, APP_SHELL_SIDEBAR_MIN_WIDTH, } from './util/app-shell.js';
62
117
  import { generateId } from './util/ssr-safe.js';
63
118
  export { generateId };
119
+ /**
120
+ * Dates and times for reading, in the page's language: what a DateField or a
121
+ * TimeField holds (`2026-10-06`, `19:00`) as "6 okt. 2026" and "19:00".
122
+ */
123
+ export { formatDate, formatTime } from './util/date.js';
64
124
  export const createId = (prefix = 'id') => generateId(prefix);
65
125
  export const cn = (...classes) => classes.filter(Boolean).join(' ');
66
126
  export const getFormData = (form) => {
@@ -86,4 +146,17 @@ export const safeDocument = () => {
86
146
  export const safeLocalStorage = () => {
87
147
  return typeof window !== 'undefined' ? localStorage : undefined;
88
148
  };
89
- export { Sun, Moon, Monitor, Grip, GripVertical, ChevronUp, ChevronDown, ChevronRight, Zap, Briefcase, Clipboard, Settings, } from '@lucide/svelte';
149
+ export { default as Sun } from '@lucide/svelte/icons/sun';
150
+ export { default as Moon } from '@lucide/svelte/icons/moon';
151
+ export { default as Monitor } from '@lucide/svelte/icons/monitor';
152
+ export { default as Grip } from '@lucide/svelte/icons/grip';
153
+ export { default as GripVertical } from '@lucide/svelte/icons/grip-vertical';
154
+ export { default as ChevronUp } from '@lucide/svelte/icons/chevron-up';
155
+ export { default as ChevronDown } from '@lucide/svelte/icons/chevron-down';
156
+ export { default as ChevronRight } from '@lucide/svelte/icons/chevron-right';
157
+ export { default as Zap } from '@lucide/svelte/icons/zap';
158
+ export { default as Briefcase } from '@lucide/svelte/icons/briefcase';
159
+ export { default as Clipboard } from '@lucide/svelte/icons/clipboard';
160
+ export { default as Settings } from '@lucide/svelte/icons/settings';
161
+ export { default as ZabiStringsProvider } from './atoms/ZabiStringsProvider.svelte';
162
+ export { DEFAULT_ZABI_COMMON_STRINGS, getZabiStrings } from './util/zabi-strings.js';
package/dist/map.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `zabi-components/map`: the map, apart from everything else.
3
+ *
4
+ * `MapView` needs `maplibre-gl` (the app's own dependency) and loads it when
5
+ * it is mounted. It is in no other entry of the package, so importing a
6
+ * component from `zabi-components` brings none of the map, script or CSS.
7
+ */
8
+ export { default as MapView } from './molecules/MapView.svelte';
9
+ export { MAP_FIT_MAX_ZOOM, MAP_MARKER_TAP, MAP_VIEW_STRINGS, clusterMarkers, mapViewSupported, } from './util/map-view.js';
10
+ export type { MapInset, MapLngLat, MapMarker, MapPixel, MapPoint, MapPointKey, MapViewPosition, MapViewStatus, MapViewStrings, } from './util/map-view.js';
package/dist/map.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `zabi-components/map`: the map, apart from everything else.
3
+ *
4
+ * `MapView` needs `maplibre-gl` (the app's own dependency) and loads it when
5
+ * it is mounted. It is in no other entry of the package, so importing a
6
+ * component from `zabi-components` brings none of the map, script or CSS.
7
+ */
8
+ export { default as MapView } from './molecules/MapView.svelte';
9
+ export { MAP_FIT_MAX_ZOOM, MAP_MARKER_TAP, MAP_VIEW_STRINGS, clusterMarkers, mapViewSupported, } from './util/map-view.js';
@@ -1,18 +1,37 @@
1
1
  <script lang="ts">
2
- import { Check, TriangleAlert, X, Info, Zap } from "@lucide/svelte";
2
+ import { DEFAULT_ALERT_TEXTS, zabiStringsFor } from "../util/zabi-strings.js";
3
+ import Check from "@lucide/svelte/icons/check";
4
+ import TriangleAlert from "@lucide/svelte/icons/triangle-alert";
5
+ import X from "@lucide/svelte/icons/x";
6
+ import Info from "@lucide/svelte/icons/info";
7
+ import Zap from "@lucide/svelte/icons/zap";
3
8
  import type { ExtendedSemanticVariant } from "../types/variants.js";
4
9
  import { cn } from "../util/cn.js";
5
- type AlertVisualVariant = Exclude<ExtendedSemanticVariant, "default">;
10
+ import { TOUCH_HIT_AREA } from "../util/touch-target.js";
11
+ /** The shared variants plus the theme's brand tint, which only an alert has. */
12
+ type AlertVariant = ExtendedSemanticVariant | "brand";
13
+ type AlertVisualVariant = Exclude<AlertVariant, "default">;
6
14
 
7
15
  interface Props {
8
- variant?: ExtendedSemanticVariant;
16
+ variant?: AlertVariant;
9
17
  title?: string;
10
18
  message?: string;
11
19
  closable?: boolean;
20
+ /** Accessible name of the dismiss button a `closable` alert has. */
21
+ closeLabel?: string;
12
22
  /** Visible state; `closable` dismiss sets it to `false`. Supports `bind:open`. */
13
23
  open?: boolean;
14
24
  /** Shrink to content instead of filling the container. */
15
25
  inline?: boolean;
26
+ /**
27
+ * Draws the tinted edge. `false` makes it transparent and keeps the
28
+ * 1px, so the box is the same size either way. The width itself
29
+ * follows `--zabi-alert-border-width`, which is read through a
30
+ * fallback and declared nowhere: an app (or any ancestor) sets it to
31
+ * `0px` once and every alert under it has no edge, with no prop on
32
+ * each. Default `true`, the edge an alert always had.
33
+ */
34
+ bordered?: boolean;
16
35
  class?: string;
17
36
  /** @deprecated use `class` — kept so 7.x call sites keep working. */
18
37
  className?: string;
@@ -24,8 +43,10 @@
24
43
  title = "",
25
44
  message = "",
26
45
  closable = false,
27
- open = $bindable(true),
46
+ closeLabel: closeLabelGiven,
47
+ open = $bindable<Exclude<Props["open"], undefined>>(),
28
48
  inline = false,
49
+ bordered = true,
29
50
  class: classProp = "",
30
51
  className = "",
31
52
  onclick,
@@ -33,6 +54,21 @@
33
54
  ...restProps
34
55
  }: Props & { children?: any } = $props();
35
56
 
57
+ /** Each text: the prop, else the app-wide word from a `ZabiStringsProvider` above this one, else English. */
58
+ const provided = zabiStringsFor("alert");
59
+ const closeLabel = $derived(closeLabelGiven ?? provided()?.closeLabel ?? DEFAULT_ALERT_TEXTS.closeLabel);
60
+
61
+ // No fallback on a bindable prop: Svelte refuses `bind:…={undefined}` on
62
+ // one that has a fallback (`props_invalid_value`), and a page that throws
63
+ // while it hydrates never becomes interactive. The default is applied
64
+ // here instead: at once, for the server and the first render, and again
65
+ // whenever a parent hands back `undefined`.
66
+ const applyDefaults = () => {
67
+ if (open === undefined) open = true;
68
+ };
69
+ applyDefaults();
70
+ $effect.pre(applyDefaults);
71
+
36
72
  function handleDismiss(event: MouseEvent) {
37
73
  open = false;
38
74
  if (onclick) {
@@ -58,35 +94,42 @@
58
94
  neutral: "bg-neutral-subtle border-neutral-border text-neutral-text",
59
95
  energetic:
60
96
  "bg-energetic-subtle border-energetic-border text-energetic-text",
97
+ // The primary brand tint. The accent is the link role, guarded on
98
+ // this fill (as Badge's brand label is); read from the token, not
99
+ // `text-link`, which darkens on hover and an alert is not a link.
100
+ brand: "bg-action-primary-subtle border-action-primary-border text-(color:--color-link)",
61
101
  });
62
102
 
63
103
  let alertRole = $derived(
64
- variant === "success" || variant === "info" ? "status" : "alert",
104
+ variant === "success" || variant === "info" || variant === "brand"
105
+ ? "status"
106
+ : "alert",
65
107
  );
66
108
  </script>
67
109
 
68
110
  {#snippet icon()}
69
111
  {#if visualVariant === "info"}
70
- <Info size={20} aria-hidden="true" />
112
+ <Info size={20} strokeWidth={2.5} aria-hidden="true" />
71
113
  {:else if visualVariant === "success"}
72
- <Check size={20} aria-hidden="true" />
114
+ <Check size={20} strokeWidth={2.5} aria-hidden="true" />
73
115
  {:else if visualVariant === "warning"}
74
- <TriangleAlert size={20} aria-hidden="true" />
116
+ <TriangleAlert size={20} strokeWidth={2.5} aria-hidden="true" />
75
117
  {:else if visualVariant === "error"}
76
- <X size={20} aria-hidden="true" />
77
- {:else if visualVariant === "neutral"}
78
- <Info size={20} aria-hidden="true" />
118
+ <X size={20} strokeWidth={2.5} aria-hidden="true" />
119
+ {:else if visualVariant === "neutral" || visualVariant === "brand"}
120
+ <Info size={20} strokeWidth={2.5} aria-hidden="true" />
79
121
  {:else}
80
- <Zap size={20} aria-hidden="true" />
122
+ <Zap size={20} strokeWidth={2.5} aria-hidden="true" />
81
123
  {/if}
82
124
  {/snippet}
83
125
 
84
126
  {#if open}
85
127
  <div
86
128
  class={cn(
87
- 'relative rounded-container p-4 border',
129
+ 'relative rounded-container p-4 border-[length:var(--zabi-alert-border-width,1px)]',
88
130
  inline ? 'inline-block' : 'block w-full',
89
131
  alertClasses[visualVariant],
132
+ !bordered && 'border-transparent',
90
133
  'transition-colors duration-150 motion-reduce:transition-none',
91
134
  classProp,
92
135
  className,
@@ -96,17 +139,21 @@
96
139
  {...restProps}
97
140
  >
98
141
  {#if closable}
142
+ <!-- At the end edge (`end-2`), so it is on the left in a right-to-left
143
+ layout, and the text keeps clear of it on that side (`pe-8`).
144
+ Nested corners: 0.5rem (`end-2 top-2`) and the 1px border inside
145
+ the alert's corner, so the radius is the alert's less that gap. -->
99
146
  <button
100
147
  onclick={handleDismiss}
101
- class="absolute right-2 top-2 z-10 flex size-6 cursor-pointer items-center justify-center rounded-control text-description transition-colors duration-150 hover:bg-surface-hover hover:text-body motion-reduce:transition-none focus-ring--muted"
102
- aria-label="Dismiss alert"
148
+ class="absolute end-2 top-2 z-10 flex size-6 cursor-pointer items-center justify-center rounded-[calc(var(--radius-container)-0.5rem-var(--zabi-alert-border-width,1px))] text-description transition-colors duration-150 hover:bg-surface-hover hover:text-body active:bg-surface-active motion-reduce:transition-none focus-ring focus-ring--muted {TOUCH_HIT_AREA}"
149
+ aria-label={closeLabel}
103
150
  type="button"
104
151
  >
105
152
  <X size={16} aria-hidden="true" />
106
153
  </button>
107
154
  {/if}
108
155
 
109
- <div class="flex items-start gap-3 {closable ? 'pr-8' : ''}">
156
+ <div class="flex items-start gap-3 {closable ? 'pe-8' : ''}">
110
157
  <div class="shrink-0 mt-0.5">
111
158
  {@render icon()}
112
159
  </div>
@@ -1,13 +1,26 @@
1
1
  import type { ExtendedSemanticVariant } from "../types/variants.js";
2
+ /** The shared variants plus the theme's brand tint, which only an alert has. */
3
+ type AlertVariant = ExtendedSemanticVariant | "brand";
2
4
  interface Props {
3
- variant?: ExtendedSemanticVariant;
5
+ variant?: AlertVariant;
4
6
  title?: string;
5
7
  message?: string;
6
8
  closable?: boolean;
9
+ /** Accessible name of the dismiss button a `closable` alert has. */
10
+ closeLabel?: string;
7
11
  /** Visible state; `closable` dismiss sets it to `false`. Supports `bind:open`. */
8
12
  open?: boolean;
9
13
  /** Shrink to content instead of filling the container. */
10
14
  inline?: boolean;
15
+ /**
16
+ * Draws the tinted edge. `false` makes it transparent and keeps the
17
+ * 1px, so the box is the same size either way. The width itself
18
+ * follows `--zabi-alert-border-width`, which is read through a
19
+ * fallback and declared nowhere: an app (or any ancestor) sets it to
20
+ * `0px` once and every alert under it has no edge, with no prop on
21
+ * each. Default `true`, the edge an alert always had.
22
+ */
23
+ bordered?: boolean;
11
24
  class?: string;
12
25
  /** @deprecated use `class` — kept so 7.x call sites keep working. */
13
26
  className?: string;