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
@@ -20,6 +20,24 @@ type Props = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
20
20
  * at the rail edge and left only the arrow showing.
21
21
  */
22
22
  fixed?: boolean;
23
+ /**
24
+ * On a touch screen a tap on the trigger opens the tooltip, and the
25
+ * trigger still does what it does. It stays until a second tap, a tap
26
+ * elsewhere, Escape, scrolling or focus leaving: the tap also puts
27
+ * focus on the trigger, and a tooltip that went by itself while its
28
+ * trigger still had focus would be gone before it was read. Give a
29
+ * number of milliseconds to have it close by itself after that long
30
+ * as well, for a button whose tooltip is in the way of what the tap
31
+ * did. A mouse and a keyboard are not affected.
32
+ */
33
+ touchDuration?: number;
34
+ /**
35
+ * `material` (default): the bubble is the thick glass overlay material
36
+ * with body text and no arrow. `inverted`: the 8.1 bubble, a dark fill
37
+ * with light text (`--color-tooltip-bg` / `--color-tooltip-fg`) and an
38
+ * arrow.
39
+ */
40
+ tone?: "material" | "inverted";
23
41
  class?: string;
24
42
  children?: Snippet;
25
43
  };
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import {
4
+ mergeZabiStrings,
5
+ outerZabiStrings,
6
+ provideZabiStrings,
7
+ type ZabiStrings,
8
+ } from "../util/zabi-strings.js";
9
+
10
+ /**
11
+ * Sets the library's own words for everything inside it: put it around
12
+ * the app, once, with the texts in the app's language.
13
+ *
14
+ * ```svelte
15
+ * <ZabiStringsProvider strings={{
16
+ * common: { close: "Stäng", back: "Tillbaka" },
17
+ * select: { placeholder: "Välj", searchPlaceholder: "Sök" },
18
+ * }}>
19
+ * {@render children()}
20
+ * </ZabiStringsProvider>
21
+ * ```
22
+ *
23
+ * Each component still takes its own `strings` and single-text props,
24
+ * and those win. A provider inside another replaces only the words it
25
+ * gives. It renders nothing of its own: no element is added to the page.
26
+ */
27
+ interface Props {
28
+ /** One entry per component, and `common` for the words many share. See `ZabiStrings`. */
29
+ strings?: ZabiStrings;
30
+ children?: Snippet;
31
+ }
32
+
33
+ let { strings, children }: Props = $props();
34
+
35
+ const outer = outerZabiStrings();
36
+ const merged = $derived(mergeZabiStrings(outer?.current, strings));
37
+
38
+ provideZabiStrings({
39
+ get current() {
40
+ return merged;
41
+ },
42
+ });
43
+ </script>
44
+
45
+ {@render children?.()}
@@ -0,0 +1,27 @@
1
+ import type { Snippet } from "svelte";
2
+ import { type ZabiStrings } from "../util/zabi-strings.js";
3
+ /**
4
+ * Sets the library's own words for everything inside it: put it around
5
+ * the app, once, with the texts in the app's language.
6
+ *
7
+ * ```svelte
8
+ * <ZabiStringsProvider strings={{
9
+ * common: { close: "Stäng", back: "Tillbaka" },
10
+ * select: { placeholder: "Välj", searchPlaceholder: "Sök" },
11
+ * }}>
12
+ * {@render children()}
13
+ * </ZabiStringsProvider>
14
+ * ```
15
+ *
16
+ * Each component still takes its own `strings` and single-text props,
17
+ * and those win. A provider inside another replaces only the words it
18
+ * gives. It renders nothing of its own: no element is added to the page.
19
+ */
20
+ interface Props {
21
+ /** One entry per component, and `common` for the words many share. See `ZabiStrings`. */
22
+ strings?: ZabiStrings;
23
+ children?: Snippet;
24
+ }
25
+ declare const ZabiStringsProvider: import("svelte").Component<Props, {}, "">;
26
+ type ZabiStringsProvider = ReturnType<typeof ZabiStringsProvider>;
27
+ export default ZabiStringsProvider;
@@ -1,14 +1,27 @@
1
1
  export { default as Toggle } from './Toggle.svelte';
2
2
  export { default as Badge } from './Badge.svelte';
3
+ export { default as Stat } from './Stat.svelte';
4
+ export { default as SpeechBubble } from './SpeechBubble.svelte';
5
+ export { default as Sparkline } from './Sparkline.svelte';
6
+ export { default as Chip } from './Chip.svelte';
3
7
  export { default as Button } from './Button.svelte';
4
8
  export { default as IconButton } from './IconButton.svelte';
9
+ export { default as Block } from './Block.svelte';
5
10
  export { default as Card } from './Card.svelte';
6
11
  export { default as CardHeader } from './CardHeader.svelte';
7
12
  export { default as CardContent } from './CardContent.svelte';
8
13
  export { default as CardFooter } from './CardFooter.svelte';
9
14
  export { default as Input } from './Input.svelte';
15
+ export { default as CodeField } from './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 './Textarea.svelte';
19
+ export type { TextareaCount } from '../util/field.js';
20
+ export { default as PickerField } from './PickerField.svelte';
11
21
  export { default as Select } from './Select.svelte';
22
+ export { DEFAULT_SELECT_STRINGS } from '../util/select.js';
23
+ export type { SelectStrings, SelectPresentation } from '../util/select.js';
24
+ export { default as Slider } from './Slider.svelte';
12
25
  export { default as ColorPicker } from './ColorPicker.svelte';
13
26
  export { default as List } from './List.svelte';
14
27
  export { default as ListItem } from './ListItem.svelte';
@@ -19,4 +32,29 @@ export { default as Divider } from './Divider.svelte';
19
32
  export { default as Container } from './Container.svelte';
20
33
  export { default as Text } from './Text.svelte';
21
34
  export { default as Table } from './Table.svelte';
35
+ export { default as Toast } from './Toast.svelte';
36
+ export { default as Tooltip } from './Tooltip.svelte';
37
+ export { default as Progress } from './Progress.svelte';
38
+ export { default as Skeleton } from './Skeleton.svelte';
39
+ export { default as SkeletonGroup } from './SkeletonGroup.svelte';
40
+ export { DEFAULT_SKELETON_STRINGS } from '../util/skeleton.js';
41
+ export type { SkeletonStrings } from '../util/skeleton.js';
42
+ export { default as CodeBlock } from './CodeBlock.svelte';
43
+ export { default as FeatureCard } from './FeatureCard.svelte';
44
+ export { default as OptimizedImage } from './OptimizedImage.svelte';
45
+ export { default as Checkbox } from './Checkbox.svelte';
22
46
  export { default as Radio } from './Radio.svelte';
47
+ export { default as Spinner } from './Spinner.svelte';
48
+ export { default as Rating } from './Rating.svelte';
49
+ export type { ProgressStrings } from '../util/progress.js';
50
+ export type { RatingStrings } from '../util/rating.js';
51
+ export { default as FloatingActionButton } from './FloatingActionButton.svelte';
52
+ export { default as DateField } from './DateField.svelte';
53
+ export { default as Avatar } from './Avatar.svelte';
54
+ export type { AvatarSize } from '../util/avatar.js';
55
+ export { default as TimeField } from './TimeField.svelte';
56
+ export { DEFAULT_COLOR_PICKER_STRINGS } from '../util/ready-made-strings.js';
57
+ export type { ColorPickerStrings } from '../util/ready-made-strings.js';
58
+ export { default as ZabiStringsProvider } from './ZabiStringsProvider.svelte';
59
+ export { DEFAULT_ZABI_COMMON_STRINGS, getZabiStrings } from '../util/zabi-strings.js';
60
+ export type { ZabiStrings, ZabiCommonStrings, ZabiStringsContext, AlertTexts, CodeBlockTexts, ImageUploadTexts, ToastTexts, UnsavedChangesBarTexts } from '../util/zabi-strings.js';
@@ -1,14 +1,24 @@
1
1
  export { default as Toggle } from './Toggle.svelte';
2
2
  export { default as Badge } from './Badge.svelte';
3
+ export { default as Stat } from './Stat.svelte';
4
+ export { default as SpeechBubble } from './SpeechBubble.svelte';
5
+ export { default as Sparkline } from './Sparkline.svelte';
6
+ export { default as Chip } from './Chip.svelte';
3
7
  export { default as Button } from './Button.svelte';
4
8
  export { default as IconButton } from './IconButton.svelte';
9
+ export { default as Block } from './Block.svelte';
5
10
  export { default as Card } from './Card.svelte';
6
11
  export { default as CardHeader } from './CardHeader.svelte';
7
12
  export { default as CardContent } from './CardContent.svelte';
8
13
  export { default as CardFooter } from './CardFooter.svelte';
9
14
  export { default as Input } from './Input.svelte';
15
+ export { default as CodeField } from './CodeField.svelte';
16
+ export { DEFAULT_CODE_FIELD_STRINGS } from '../util/code-field.js';
10
17
  export { default as Textarea } from './Textarea.svelte';
18
+ export { default as PickerField } from './PickerField.svelte';
11
19
  export { default as Select } from './Select.svelte';
20
+ export { DEFAULT_SELECT_STRINGS } from '../util/select.js';
21
+ export { default as Slider } from './Slider.svelte';
12
22
  export { default as ColorPicker } from './ColorPicker.svelte';
13
23
  export { default as List } from './List.svelte';
14
24
  export { default as ListItem } from './ListItem.svelte';
@@ -19,4 +29,23 @@ export { default as Divider } from './Divider.svelte';
19
29
  export { default as Container } from './Container.svelte';
20
30
  export { default as Text } from './Text.svelte';
21
31
  export { default as Table } from './Table.svelte';
32
+ export { default as Toast } from './Toast.svelte';
33
+ export { default as Tooltip } from './Tooltip.svelte';
34
+ export { default as Progress } from './Progress.svelte';
35
+ export { default as Skeleton } from './Skeleton.svelte';
36
+ export { default as SkeletonGroup } from './SkeletonGroup.svelte';
37
+ export { DEFAULT_SKELETON_STRINGS } from '../util/skeleton.js';
38
+ export { default as CodeBlock } from './CodeBlock.svelte';
39
+ export { default as FeatureCard } from './FeatureCard.svelte';
40
+ export { default as OptimizedImage } from './OptimizedImage.svelte';
41
+ export { default as Checkbox } from './Checkbox.svelte';
22
42
  export { default as Radio } from './Radio.svelte';
43
+ export { default as Spinner } from './Spinner.svelte';
44
+ export { default as Rating } from './Rating.svelte';
45
+ export { default as FloatingActionButton } from './FloatingActionButton.svelte';
46
+ export { default as DateField } from './DateField.svelte';
47
+ export { default as Avatar } from './Avatar.svelte';
48
+ export { default as TimeField } from './TimeField.svelte';
49
+ export { DEFAULT_COLOR_PICKER_STRINGS } from '../util/ready-made-strings.js';
50
+ export { default as ZabiStringsProvider } from './ZabiStringsProvider.svelte';
51
+ export { DEFAULT_ZABI_COMMON_STRINGS, getZabiStrings } from '../util/zabi-strings.js';
@@ -6,20 +6,62 @@
6
6
  export declare const SELECTION_CONTROL_LABEL_ROW_INTERACTION = "selection-control-label-row-interaction";
7
7
  /** With `app.css`: `:checked` ring for radio list rows. */
8
8
  export declare const SELECTION_CONTROL_OPTION_ROW = "selection-control-option-row";
9
- /** Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`. */
9
+ /**
10
+ * Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`.
11
+ *
12
+ * On a coarse pointer the row is 44px tall and takes that room in the layout
13
+ * (`my-0`): with the negative margin kept, two rows 8px apart overlapped by
14
+ * 8px, and a tap in the overlap went to the lower one.
15
+ */
10
16
  export declare const SELECTION_CONTROL_LABEL_ROW_BASE: string;
11
17
  export declare const SELECTION_CONTROL_LABEL_ROW: string;
12
18
  /** Radio option row: stacked label/description; `p-2` only (no `-m-2`) so vertical gaps stay even. */
13
19
  export declare const RADIO_GROUP_OPTION_LABEL_ROW: string;
14
- /** Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states. */
15
- export declare const SELECTION_CONTROL_SHELL_STATE = "group/control relative inline-flex items-center justify-center w-5 h-5 transition-all duration-200 border-2 group-active:scale-95 border-base-400 bg-transparent group-hover:border-brand-500 group-hover:bg-brand-50 has-[:checked]:border-brand-500 has-[:checked]:bg-brand-500 has-[:checked]:group-hover:bg-brand-600 has-[:checked]:group-hover:border-brand-600 has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
20
+ /**
21
+ * Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states.
22
+ * The checked fill is the primary action fill, so a ticked box and a primary
23
+ * button are the same colour; it used to be a step paler (2.8:1 on the page).
24
+ *
25
+ * The unchecked edge is the only thing that says a control is here, so it is
26
+ * the control boundary (3:1 on every surface, both themes); it was a fixed
27
+ * ramp step, 2.5:1 in light and 1.9 to 2.3:1 in dark.
28
+ *
29
+ * In forced colours every fill is gone, so a ticked box would read as an
30
+ * unticked one. `selection-control-shell` and `selection-control-dot` are the
31
+ * hooks for the rules in `app.css` that draw the ticked state as a system
32
+ * colour pair (`Highlight` / `HighlightText`) and the disabled one in `GrayText`.
33
+ *
34
+ * The pressed dip and the hover fills are for a control that can be used.
35
+ * The row around a disabled input still matches `:active` and `:hover`, so
36
+ * without that a disabled box dipped under a finger and lit up under the
37
+ * mouse. The unchecked ones are limited to `not-has-[:disabled]`; the checked
38
+ * hover is undone by a rule with one more `has-` in it, which outweighs it.
39
+ */
40
+ export declare const SELECTION_CONTROL_SHELL_STATE = "selection-control-shell group/control relative inline-flex shrink-0 items-center justify-center w-5 h-5 transition-all duration-200 border-2 not-has-[:disabled]:group-active:scale-95 border-control-border bg-transparent not-has-[:disabled]:group-hover:border-brand-500 not-has-[:disabled]:group-hover:bg-brand-50 has-[:checked]:border-action-primary has-[:checked]:bg-action-primary has-[:checked]:group-hover:bg-action-primary-hover has-[:checked]:group-hover:border-action-primary-hover has-[:disabled]:has-[:checked]:group-hover:bg-action-primary has-[:disabled]:has-[:checked]:group-hover:border-action-primary has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
16
41
  export type SelectionControlShape = "square" | "circle";
17
42
  export declare function selectionControlShellClasses(shape: SelectionControlShape): string;
18
43
  /** Radio circle control; `mt-0.5` aligns with multi-line labels. */
19
44
  export declare const RADIO_GROUP_CONTROL_SHELL: string;
20
- /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). */
45
+ /**
46
+ * The real input, stretched over the 20px box and transparent, so a press on
47
+ * the box lands on the input itself. It used to be `sr-only`: a 1px box under
48
+ * the ring overlay, where a click aimed at the input (a test's
49
+ * `getByRole("checkbox").check()`, a pointer-driven assistive tool) hit the
50
+ * overlay instead. Everything drawn over it lets the press through.
51
+ *
52
+ * 2px out on each side: the shell's border is outside its padding box.
53
+ *
54
+ * On a coarse pointer it is 44 by 44px, centred on the box (12px further out
55
+ * on each side), so the input itself is the touch target and not only the
56
+ * row around it. The row is 44px tall there, so the inputs of two rows never
57
+ * reach each other. The 44 is in px and the centring is by halves: in rem it
58
+ * grew with the text (88px at 200%, 34px out on each side of a 20px box, and
59
+ * past the screen's edge from a box at the end of a row, Z-128).
60
+ */
61
+ export declare const SELECTION_CONTROL_INPUT = "absolute -top-0.5 -left-0.5 m-0 size-5 cursor-pointer appearance-none opacity-0 disabled:cursor-not-allowed pointer-coarse:top-1/2 pointer-coarse:left-1/2 pointer-coarse:size-[44px] pointer-coarse:-translate-x-1/2 pointer-coarse:-translate-y-1/2";
62
+ /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). Lets a press through to the input. */
21
63
  export declare function selectionControlRingOverlayClasses(shape: SelectionControlShape): string;
22
64
  /** Radio row: circle overlay + `pointer-events-none` so clicks hit the input. */
23
65
  export declare const RADIO_GROUP_RING_OVERLAY: string;
24
66
  /** Checked radio dot (shared with `Radio.svelte`). */
25
- export declare const RADIO_CHECKED_DOT_CLASSES = "absolute size-2 rounded-full bg-base-50 pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
67
+ export declare const RADIO_CHECKED_DOT_CLASSES = "selection-control-dot absolute size-2 rounded-full bg-action-primary-text pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
@@ -6,25 +6,67 @@
6
6
  export const SELECTION_CONTROL_LABEL_ROW_INTERACTION = "selection-control-label-row-interaction";
7
7
  /** With `app.css`: `:checked` ring for radio list rows. */
8
8
  export const SELECTION_CONTROL_OPTION_ROW = "selection-control-option-row";
9
- /** Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`. */
10
- export const SELECTION_CONTROL_LABEL_ROW_BASE = `p-2 -m-2 group ${SELECTION_CONTROL_LABEL_ROW_INTERACTION}`.trim();
9
+ /**
10
+ * Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`.
11
+ *
12
+ * On a coarse pointer the row is 44px tall and takes that room in the layout
13
+ * (`my-0`): with the negative margin kept, two rows 8px apart overlapped by
14
+ * 8px, and a tap in the overlap went to the lower one.
15
+ */
16
+ export const SELECTION_CONTROL_LABEL_ROW_BASE = `p-2 -m-2 pointer-coarse:my-0 pointer-coarse:min-h-11 group ${SELECTION_CONTROL_LABEL_ROW_INTERACTION}`.trim();
11
17
  export const SELECTION_CONTROL_LABEL_ROW = `flex items-center gap-2 ${SELECTION_CONTROL_LABEL_ROW_BASE}`;
12
18
  /** Radio option row: stacked label/description; `p-2` only (no `-m-2`) so vertical gaps stay even. */
13
- export const RADIO_GROUP_OPTION_LABEL_ROW = `flex items-start gap-2 p-2 group ${SELECTION_CONTROL_LABEL_ROW_INTERACTION} ${SELECTION_CONTROL_OPTION_ROW}`.trim();
14
- /** Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states. */
15
- export const SELECTION_CONTROL_SHELL_STATE = "group/control relative inline-flex items-center justify-center w-5 h-5 transition-all duration-200 border-2 group-active:scale-95 border-base-400 bg-transparent group-hover:border-brand-500 group-hover:bg-brand-50 has-[:checked]:border-brand-500 has-[:checked]:bg-brand-500 has-[:checked]:group-hover:bg-brand-600 has-[:checked]:group-hover:border-brand-600 has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
19
+ export const RADIO_GROUP_OPTION_LABEL_ROW = `flex items-start gap-2 p-2 pointer-coarse:min-h-11 group ${SELECTION_CONTROL_LABEL_ROW_INTERACTION} ${SELECTION_CONTROL_OPTION_ROW}`.trim();
20
+ /**
21
+ * Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states.
22
+ * The checked fill is the primary action fill, so a ticked box and a primary
23
+ * button are the same colour; it used to be a step paler (2.8:1 on the page).
24
+ *
25
+ * The unchecked edge is the only thing that says a control is here, so it is
26
+ * the control boundary (3:1 on every surface, both themes); it was a fixed
27
+ * ramp step, 2.5:1 in light and 1.9 to 2.3:1 in dark.
28
+ *
29
+ * In forced colours every fill is gone, so a ticked box would read as an
30
+ * unticked one. `selection-control-shell` and `selection-control-dot` are the
31
+ * hooks for the rules in `app.css` that draw the ticked state as a system
32
+ * colour pair (`Highlight` / `HighlightText`) and the disabled one in `GrayText`.
33
+ *
34
+ * The pressed dip and the hover fills are for a control that can be used.
35
+ * The row around a disabled input still matches `:active` and `:hover`, so
36
+ * without that a disabled box dipped under a finger and lit up under the
37
+ * mouse. The unchecked ones are limited to `not-has-[:disabled]`; the checked
38
+ * hover is undone by a rule with one more `has-` in it, which outweighs it.
39
+ */
40
+ export const SELECTION_CONTROL_SHELL_STATE = "selection-control-shell group/control relative inline-flex shrink-0 items-center justify-center w-5 h-5 transition-all duration-200 border-2 not-has-[:disabled]:group-active:scale-95 border-control-border bg-transparent not-has-[:disabled]:group-hover:border-brand-500 not-has-[:disabled]:group-hover:bg-brand-50 has-[:checked]:border-action-primary has-[:checked]:bg-action-primary has-[:checked]:group-hover:bg-action-primary-hover has-[:checked]:group-hover:border-action-primary-hover has-[:disabled]:has-[:checked]:group-hover:bg-action-primary has-[:disabled]:has-[:checked]:group-hover:border-action-primary has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
16
41
  export function selectionControlShellClasses(shape) {
17
42
  const rounding = shape === "circle" ? "rounded-full" : "rounded";
18
43
  return `${SELECTION_CONTROL_SHELL_STATE} ${rounding}`.trim();
19
44
  }
20
45
  /** Radio circle control; `mt-0.5` aligns with multi-line labels. */
21
- export const RADIO_GROUP_CONTROL_SHELL = `${SELECTION_CONTROL_SHELL_STATE} mt-0.5 shrink-0 rounded-full`.trim();
22
- /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). */
46
+ export const RADIO_GROUP_CONTROL_SHELL = `${SELECTION_CONTROL_SHELL_STATE} mt-0.5 rounded-full`.trim();
47
+ /**
48
+ * The real input, stretched over the 20px box and transparent, so a press on
49
+ * the box lands on the input itself. It used to be `sr-only`: a 1px box under
50
+ * the ring overlay, where a click aimed at the input (a test's
51
+ * `getByRole("checkbox").check()`, a pointer-driven assistive tool) hit the
52
+ * overlay instead. Everything drawn over it lets the press through.
53
+ *
54
+ * 2px out on each side: the shell's border is outside its padding box.
55
+ *
56
+ * On a coarse pointer it is 44 by 44px, centred on the box (12px further out
57
+ * on each side), so the input itself is the touch target and not only the
58
+ * row around it. The row is 44px tall there, so the inputs of two rows never
59
+ * reach each other. The 44 is in px and the centring is by halves: in rem it
60
+ * grew with the text (88px at 200%, 34px out on each side of a 20px box, and
61
+ * past the screen's edge from a box at the end of a row, Z-128).
62
+ */
63
+ export const SELECTION_CONTROL_INPUT = "absolute -top-0.5 -left-0.5 m-0 size-5 cursor-pointer appearance-none opacity-0 disabled:cursor-not-allowed pointer-coarse:top-1/2 pointer-coarse:left-1/2 pointer-coarse:size-[44px] pointer-coarse:-translate-x-1/2 pointer-coarse:-translate-y-1/2";
64
+ /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). Lets a press through to the input. */
23
65
  export function selectionControlRingOverlayClasses(shape) {
24
66
  const rounding = shape === "circle" ? "rounded-full" : "rounded";
25
- return `absolute inset-0 ${rounding}`.trim();
67
+ return `pointer-events-none absolute inset-0 ${rounding}`.trim();
26
68
  }
27
69
  /** Radio row: circle overlay + `pointer-events-none` so clicks hit the input. */
28
- export const RADIO_GROUP_RING_OVERLAY = `pointer-events-none ${selectionControlRingOverlayClasses("circle")}`;
70
+ export const RADIO_GROUP_RING_OVERLAY = selectionControlRingOverlayClasses("circle");
29
71
  /** Checked radio dot (shared with `Radio.svelte`). */
30
- export const RADIO_CHECKED_DOT_CLASSES = "absolute size-2 rounded-full bg-base-50 pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
72
+ export const RADIO_CHECKED_DOT_CLASSES = "selection-control-dot absolute size-2 rounded-full bg-action-primary-text pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
@@ -1,14 +1,27 @@
1
1
  export { default as Toggle } from './Toggle.svelte';
2
2
  export { default as Badge } from './Badge.svelte';
3
+ export { default as Stat } from './Stat.svelte';
4
+ export { default as SpeechBubble } from './SpeechBubble.svelte';
5
+ export { default as Sparkline } from './Sparkline.svelte';
6
+ export { default as Chip } from './Chip.svelte';
3
7
  export { default as Button } from './Button.svelte';
4
8
  export { default as IconButton } from './IconButton.svelte';
9
+ export { default as Block } from './Block.svelte';
5
10
  export { default as Card } from './Card.svelte';
6
11
  export { default as CardHeader } from './CardHeader.svelte';
7
12
  export { default as CardContent } from './CardContent.svelte';
8
13
  export { default as CardFooter } from './CardFooter.svelte';
9
14
  export { default as Input } from './Input.svelte';
15
+ export { default as CodeField } from './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 './Textarea.svelte';
19
+ export type { TextareaCount } from '../util/field.js';
20
+ export { default as PickerField } from './PickerField.svelte';
11
21
  export { default as Select } from './Select.svelte';
22
+ export { DEFAULT_SELECT_STRINGS } from '../util/select.js';
23
+ export type { SelectStrings, SelectPresentation } from '../util/select.js';
24
+ export { default as Slider } from './Slider.svelte';
12
25
  export { default as ColorPicker } from './ColorPicker.svelte';
13
26
  export { default as List } from './List.svelte';
14
27
  export { default as ListItem } from './ListItem.svelte';
@@ -19,5 +32,30 @@ export { default as Divider } from './Divider.svelte';
19
32
  export { default as Container } from './Container.svelte';
20
33
  export { default as Text } from './Text.svelte';
21
34
  export { default as Table } from './Table.svelte';
35
+ export { default as Toast } from './Toast.svelte';
36
+ export { default as Tooltip } from './Tooltip.svelte';
37
+ export { default as Progress } from './Progress.svelte';
38
+ export { default as Skeleton } from './Skeleton.svelte';
39
+ export { default as SkeletonGroup } from './SkeletonGroup.svelte';
40
+ export { DEFAULT_SKELETON_STRINGS } from '../util/skeleton.js';
41
+ export type { SkeletonStrings } from '../util/skeleton.js';
42
+ export { default as CodeBlock } from './CodeBlock.svelte';
43
+ export { default as FeatureCard } from './FeatureCard.svelte';
44
+ export { default as OptimizedImage } from './OptimizedImage.svelte';
45
+ export { default as Checkbox } from './Checkbox.svelte';
22
46
  export { default as Radio } from './Radio.svelte';
47
+ export { default as Spinner } from './Spinner.svelte';
48
+ export { default as Rating } from './Rating.svelte';
49
+ export type { ProgressStrings } from '../util/progress.js';
50
+ export type { RatingStrings } from '../util/rating.js';
51
+ export { default as FloatingActionButton } from './FloatingActionButton.svelte';
52
+ export { default as DateField } from './DateField.svelte';
53
+ export { default as Avatar } from './Avatar.svelte';
54
+ export type { AvatarSize } from '../util/avatar.js';
55
+ export { default as TimeField } from './TimeField.svelte';
56
+ export { DEFAULT_COLOR_PICKER_STRINGS } from '../util/ready-made-strings.js';
57
+ export type { ColorPickerStrings } from '../util/ready-made-strings.js';
58
+ export { default as ZabiStringsProvider } from './ZabiStringsProvider.svelte';
59
+ export { DEFAULT_ZABI_COMMON_STRINGS, getZabiStrings } from '../util/zabi-strings.js';
60
+ export type { ZabiStrings, ZabiCommonStrings, ZabiStringsContext, AlertTexts, CodeBlockTexts, ImageUploadTexts, ToastTexts, UnsavedChangesBarTexts } from '../util/zabi-strings.js';
23
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/index.ts"],"names":[],"mappings":"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"}
@@ -6,21 +6,63 @@
6
6
  export declare const SELECTION_CONTROL_LABEL_ROW_INTERACTION = "selection-control-label-row-interaction";
7
7
  /** With `app.css`: `:checked` ring for radio list rows. */
8
8
  export declare const SELECTION_CONTROL_OPTION_ROW = "selection-control-option-row";
9
- /** Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`. */
9
+ /**
10
+ * Control + label row; `p-2 -m-2` aligns hit area with text; `group` is not valid inside `@apply`.
11
+ *
12
+ * On a coarse pointer the row is 44px tall and takes that room in the layout
13
+ * (`my-0`): with the negative margin kept, two rows 8px apart overlapped by
14
+ * 8px, and a tap in the overlap went to the lower one.
15
+ */
10
16
  export declare const SELECTION_CONTROL_LABEL_ROW_BASE: string;
11
17
  export declare const SELECTION_CONTROL_LABEL_ROW: string;
12
18
  /** Radio option row: stacked label/description; `p-2` only (no `-m-2`) so vertical gaps stay even. */
13
19
  export declare const RADIO_GROUP_OPTION_LABEL_ROW: string;
14
- /** Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states. */
15
- export declare const SELECTION_CONTROL_SHELL_STATE = "group/control relative inline-flex items-center justify-center w-5 h-5 transition-all duration-200 border-2 group-active:scale-95 border-base-400 bg-transparent group-hover:border-brand-500 group-hover:bg-brand-50 has-[:checked]:border-brand-500 has-[:checked]:bg-brand-500 has-[:checked]:group-hover:bg-brand-600 has-[:checked]:group-hover:border-brand-600 has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
20
+ /**
21
+ * Control shell: border/fill/hover/checked/disabled. `group/control` drives inner mark states.
22
+ * The checked fill is the primary action fill, so a ticked box and a primary
23
+ * button are the same colour; it used to be a step paler (2.8:1 on the page).
24
+ *
25
+ * The unchecked edge is the only thing that says a control is here, so it is
26
+ * the control boundary (3:1 on every surface, both themes); it was a fixed
27
+ * ramp step, 2.5:1 in light and 1.9 to 2.3:1 in dark.
28
+ *
29
+ * In forced colours every fill is gone, so a ticked box would read as an
30
+ * unticked one. `selection-control-shell` and `selection-control-dot` are the
31
+ * hooks for the rules in `app.css` that draw the ticked state as a system
32
+ * colour pair (`Highlight` / `HighlightText`) and the disabled one in `GrayText`.
33
+ *
34
+ * The pressed dip and the hover fills are for a control that can be used.
35
+ * The row around a disabled input still matches `:active` and `:hover`, so
36
+ * without that a disabled box dipped under a finger and lit up under the
37
+ * mouse. The unchecked ones are limited to `not-has-[:disabled]`; the checked
38
+ * hover is undone by a rule with one more `has-` in it, which outweighs it.
39
+ */
40
+ export declare const SELECTION_CONTROL_SHELL_STATE = "selection-control-shell group/control relative inline-flex shrink-0 items-center justify-center w-5 h-5 transition-all duration-200 border-2 not-has-[:disabled]:group-active:scale-95 border-control-border bg-transparent not-has-[:disabled]:group-hover:border-brand-500 not-has-[:disabled]:group-hover:bg-brand-50 has-[:checked]:border-action-primary has-[:checked]:bg-action-primary has-[:checked]:group-hover:bg-action-primary-hover has-[:checked]:group-hover:border-action-primary-hover has-[:disabled]:has-[:checked]:group-hover:bg-action-primary has-[:disabled]:has-[:checked]:group-hover:border-action-primary has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed";
16
41
  export type SelectionControlShape = "square" | "circle";
17
42
  export declare function selectionControlShellClasses(shape: SelectionControlShape): string;
18
43
  /** Radio circle control; `mt-0.5` aligns with multi-line labels. */
19
44
  export declare const RADIO_GROUP_CONTROL_SHELL: string;
20
- /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). */
45
+ /**
46
+ * The real input, stretched over the 20px box and transparent, so a press on
47
+ * the box lands on the input itself. It used to be `sr-only`: a 1px box under
48
+ * the ring overlay, where a click aimed at the input (a test's
49
+ * `getByRole("checkbox").check()`, a pointer-driven assistive tool) hit the
50
+ * overlay instead. Everything drawn over it lets the press through.
51
+ *
52
+ * 2px out on each side: the shell's border is outside its padding box.
53
+ *
54
+ * On a coarse pointer it is 44 by 44px, centred on the box (12px further out
55
+ * on each side), so the input itself is the touch target and not only the
56
+ * row around it. The row is 44px tall there, so the inputs of two rows never
57
+ * reach each other. The 44 is in px and the centring is by halves: in rem it
58
+ * grew with the text (88px at 200%, 34px out on each side of a 20px box, and
59
+ * past the screen's edge from a box at the end of a row, Z-128).
60
+ */
61
+ export declare const SELECTION_CONTROL_INPUT = "absolute -top-0.5 -left-0.5 m-0 size-5 cursor-pointer appearance-none opacity-0 disabled:cursor-not-allowed pointer-coarse:top-1/2 pointer-coarse:left-1/2 pointer-coarse:size-[44px] pointer-coarse:-translate-x-1/2 pointer-coarse:-translate-y-1/2";
62
+ /** Full-bleed ring behind the mark (same geometry as SelectionControl inner ring). Lets a press through to the input. */
21
63
  export declare function selectionControlRingOverlayClasses(shape: SelectionControlShape): string;
22
64
  /** Radio row: circle overlay + `pointer-events-none` so clicks hit the input. */
23
65
  export declare const RADIO_GROUP_RING_OVERLAY: string;
24
66
  /** Checked radio dot (shared with `Radio.svelte`). */
25
- export declare const RADIO_CHECKED_DOT_CLASSES = "absolute size-2 rounded-full bg-base-50 pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
67
+ export declare const RADIO_CHECKED_DOT_CLASSES = "selection-control-dot absolute size-2 rounded-full bg-action-primary-text pointer-events-none z-10 opacity-0 group-has-checked/control:opacity-100";
26
68
  //# sourceMappingURL=selection-control.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selection-control.styles.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/selection-control.styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,eAAO,MAAM,uCAAuC,4CACP,CAAC;AAE9C,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E,uGAAuG;AACvG,eAAO,MAAM,gCAAgC,QACyB,CAAC;AAEvE,eAAO,MAAM,2BAA2B,QAAgE,CAAC;AAEzG,sGAAsG;AACtG,eAAO,MAAM,4BAA4B,QAC+E,CAAC;AAEzH,mGAAmG;AACnG,eAAO,MAAM,6BAA6B,waAC+X,CAAC;AAE1a,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAGjF;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,QAAyE,CAAC;AAEhH,sFAAsF;AACtF,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,qBAAqB,GAC7B,MAAM,CAGR;AAED,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,QAAwE,CAAC;AAE9G,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,qHACgF,CAAC"}
1
+ {"version":3,"file":"selection-control.styles.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/selection-control.styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yEAAyE;AACzE,eAAO,MAAM,uCAAuC,4CACP,CAAC;AAE9C,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,QACqE,CAAC;AAEnH,eAAO,MAAM,2BAA2B,QAAgE,CAAC;AAEzG,sGAAsG;AACtG,eAAO,MAAM,4BAA4B,QACuG,CAAC;AAEjJ;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,6BAA6B,yqBACgoB,CAAC;AAE3qB,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAGjF;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,QAAgE,CAAC;AAEvG;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,0PACuN,CAAC;AAE5P,yHAAyH;AACzH,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,qBAAqB,GAC7B,MAAM,CAGR;AAED,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,QAA+C,CAAC;AAErF,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,uJACkH,CAAC"}