@noxlovette/material 0.3.2 → 0.4.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 (299) hide show
  1. package/README.md +1 -0
  2. package/dist/actions/index.d.ts +1 -0
  3. package/dist/actions/index.js +1 -0
  4. package/dist/actions/rovingFocusGroup.d.ts +20 -0
  5. package/dist/actions/rovingFocusGroup.js +82 -0
  6. package/dist/components/badge/theme.d.ts +8 -8
  7. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte +83 -0
  8. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte.d.ts +19 -0
  9. package/dist/components/buttons/button-group/ButtonGroup.svelte +10 -29
  10. package/dist/components/buttons/button-group/ButtonGroup.svelte.d.ts +7 -3
  11. package/dist/components/buttons/button-group/index.d.ts +0 -1
  12. package/dist/components/buttons/button-group/index.js +3 -1
  13. package/dist/components/buttons/button-group/theme.d.ts +17 -103
  14. package/dist/components/buttons/button-group/theme.js +7 -35
  15. package/dist/components/buttons/button-group/types.d.ts +9 -20
  16. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte +118 -0
  17. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte.d.ts +19 -0
  18. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte +52 -0
  19. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte.d.ts +12 -0
  20. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte +37 -0
  21. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte.d.ts +9 -0
  22. package/dist/components/buttons/connected/index.d.ts +3 -1
  23. package/dist/components/buttons/connected/index.js +3 -1
  24. package/dist/components/buttons/connected/theme.d.ts +125 -0
  25. package/dist/components/buttons/connected/theme.js +38 -0
  26. package/dist/components/buttons/connected/types.d.ts +32 -13
  27. package/dist/components/buttons/index.d.ts +1 -0
  28. package/dist/components/buttons/index.js +1 -0
  29. package/dist/components/buttons/split-button/SplitButton.stories.svelte +103 -0
  30. package/dist/components/buttons/split-button/SplitButton.stories.svelte.d.ts +19 -0
  31. package/dist/components/buttons/split-button/SplitButton.svelte +104 -0
  32. package/dist/components/buttons/split-button/SplitButton.svelte.d.ts +19 -0
  33. package/dist/components/buttons/split-button/index.d.ts +3 -0
  34. package/dist/components/{containers/panes → buttons/split-button}/index.js +1 -3
  35. package/dist/components/buttons/split-button/theme.d.ts +35 -0
  36. package/dist/components/buttons/split-button/theme.js +26 -0
  37. package/dist/components/buttons/split-button/types.d.ts +33 -0
  38. package/dist/components/buttons/theme.d.ts +142 -142
  39. package/dist/components/buttons/theme.js +2 -2
  40. package/dist/components/cards/Card.stories.svelte +58 -0
  41. package/dist/components/cards/Card.stories.svelte.d.ts +2 -17
  42. package/dist/components/cards/Card.svelte +76 -8
  43. package/dist/components/cards/theme.d.ts +26 -14
  44. package/dist/components/cards/theme.js +5 -1
  45. package/dist/components/cards/types.d.ts +39 -1
  46. package/dist/components/chips/Chip.stories.svelte +64 -0
  47. package/dist/components/chips/Chip.stories.svelte.d.ts +19 -0
  48. package/dist/components/chips/Chip.svelte +115 -0
  49. package/dist/components/chips/Chip.svelte.d.ts +14 -0
  50. package/dist/components/chips/index.d.ts +3 -0
  51. package/dist/components/chips/index.js +6 -0
  52. package/dist/components/chips/theme.d.ts +78 -0
  53. package/dist/components/chips/theme.js +72 -0
  54. package/dist/components/chips/types.d.ts +43 -0
  55. package/dist/components/containers/action-rail/ActionRail.stories.svelte +36 -0
  56. package/dist/components/containers/{panes/SinglePane.stories.svelte.d.ts → action-rail/ActionRail.stories.svelte.d.ts} +4 -4
  57. package/dist/components/containers/action-rail/ActionRail.svelte +35 -0
  58. package/dist/components/containers/action-rail/ActionRail.svelte.d.ts +17 -0
  59. package/dist/components/containers/action-rail/index.d.ts +3 -0
  60. package/dist/components/containers/action-rail/index.js +6 -0
  61. package/dist/components/containers/action-rail/theme.d.ts +45 -0
  62. package/dist/components/containers/action-rail/theme.js +26 -0
  63. package/dist/components/containers/action-rail/types.d.ts +20 -0
  64. package/dist/components/containers/action-rail/types.js +1 -0
  65. package/dist/components/containers/app/App.svelte +6 -6
  66. package/dist/components/containers/app/App.svelte.d.ts +4 -2
  67. package/dist/components/containers/app/theme.d.ts +1 -1
  68. package/dist/components/containers/app/types.d.ts +9 -4
  69. package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +1 -1
  70. package/dist/components/containers/bottom-sheet/BottomSheet.svelte +1 -1
  71. package/dist/components/containers/context-menu/ContextMenu.stories.svelte +44 -0
  72. package/dist/components/containers/context-menu/ContextMenu.svelte +21 -5
  73. package/dist/components/containers/context-menu/ContextMenu.svelte.d.ts +11 -0
  74. package/dist/components/containers/context-menu/theme.d.ts +20 -2
  75. package/dist/components/containers/context-menu/theme.js +31 -8
  76. package/dist/components/containers/context-menu/types.d.ts +14 -2
  77. package/dist/components/containers/dialogue/theme.d.ts +20 -20
  78. package/dist/components/containers/divider/theme.d.ts +17 -17
  79. package/dist/components/containers/index.d.ts +2 -3
  80. package/dist/components/containers/index.js +2 -3
  81. package/dist/components/containers/link-preview/theme.d.ts +11 -11
  82. package/dist/components/containers/list/ListItem.stories.svelte +100 -0
  83. package/dist/components/containers/list/ListItem.stories.svelte.d.ts +19 -0
  84. package/dist/components/containers/list/theme.d.ts +14 -14
  85. package/dist/components/containers/list/theme.js +3 -3
  86. package/dist/components/containers/menu/Menu.stories.svelte +105 -3
  87. package/dist/components/containers/menu/Menu.stories.svelte.d.ts +2 -17
  88. package/dist/components/containers/menu/Menu.svelte +9 -7
  89. package/dist/components/containers/menu/MenuCheckboxItem.svelte +55 -0
  90. package/dist/components/containers/menu/MenuCheckboxItem.svelte.d.ts +25 -0
  91. package/dist/components/containers/menu/MenuGroup.svelte +43 -0
  92. package/dist/components/containers/menu/MenuGroup.svelte.d.ts +28 -0
  93. package/dist/components/containers/menu/MenuRadioGroup.svelte +39 -0
  94. package/dist/components/containers/menu/MenuRadioGroup.svelte.d.ts +27 -0
  95. package/dist/components/containers/menu/MenuRadioItem.svelte +49 -0
  96. package/dist/components/containers/menu/MenuRadioItem.svelte.d.ts +17 -0
  97. package/dist/components/containers/menu/MenuSub.svelte +91 -0
  98. package/dist/components/containers/menu/MenuSub.svelte.d.ts +29 -0
  99. package/dist/components/containers/menu/index.d.ts +7 -0
  100. package/dist/components/containers/menu/index.js +8 -0
  101. package/dist/components/containers/menu/menu-item/MenuItem.svelte +71 -0
  102. package/dist/components/containers/{menu-item → menu/menu-item}/MenuItem.svelte.d.ts +2 -1
  103. package/dist/components/containers/{menu-item → menu/menu-item}/types.d.ts +5 -1
  104. package/dist/components/containers/menu/menu-item/types.js +1 -0
  105. package/dist/components/containers/menu/theme.d.ts +68 -0
  106. package/dist/components/containers/menu/theme.js +36 -0
  107. package/dist/components/containers/menu/types.d.ts +113 -2
  108. package/dist/components/containers/pane/DraggablePane.stories.svelte +199 -0
  109. package/dist/components/containers/pane/DraggablePane.stories.svelte.d.ts +4 -0
  110. package/dist/components/containers/pane/DraggablePane.svelte +533 -0
  111. package/dist/components/containers/pane/DraggablePane.svelte.d.ts +29 -0
  112. package/dist/components/containers/pane/Pane.stories.svelte +104 -0
  113. package/dist/components/containers/pane/Pane.stories.svelte.d.ts +19 -0
  114. package/dist/components/containers/pane/Pane.svelte +78 -0
  115. package/dist/components/containers/pane/Pane.svelte.d.ts +18 -0
  116. package/dist/components/containers/pane/PaneGrid.stories.svelte +134 -0
  117. package/dist/components/containers/pane/PaneGrid.stories.svelte.d.ts +19 -0
  118. package/dist/components/containers/pane/PaneGrid.svelte +43 -0
  119. package/dist/components/containers/pane/PaneGrid.svelte.d.ts +13 -0
  120. package/dist/components/containers/pane/PaneHandle.svelte +90 -0
  121. package/dist/components/containers/pane/PaneHandle.svelte.d.ts +12 -0
  122. package/dist/components/containers/pane/dragStore.svelte.d.ts +16 -0
  123. package/dist/components/containers/pane/dragStore.svelte.js +38 -0
  124. package/dist/components/containers/pane/index.d.ts +8 -0
  125. package/dist/components/containers/pane/index.js +11 -0
  126. package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -0
  127. package/dist/components/containers/pane/resizeStore.svelte.js +30 -0
  128. package/dist/components/containers/pane/theme.d.ts +571 -0
  129. package/dist/components/containers/pane/theme.js +211 -0
  130. package/dist/components/containers/pane/types.d.ts +249 -0
  131. package/dist/components/containers/pane/types.js +1 -0
  132. package/dist/components/containers/popover/Popover.stories.svelte +4 -4
  133. package/dist/components/containers/popover/Popover.svelte +3 -1
  134. package/dist/components/containers/popover/theme.d.ts +20 -20
  135. package/dist/components/containers/popover/types.d.ts +6 -2
  136. package/dist/components/containers/scroll-area/theme.d.ts +2 -2
  137. package/dist/components/containers/side-sheet/SideSheet.stories.svelte +16 -24
  138. package/dist/components/containers/side-sheet/SideSheet.svelte +73 -7
  139. package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +5 -0
  140. package/dist/components/containers/stack/theme.d.ts +44 -44
  141. package/dist/components/date/DateField.stories.svelte +57 -0
  142. package/dist/components/{containers/panes/SplitPane.stories.svelte.d.ts → date/DateField.stories.svelte.d.ts} +4 -4
  143. package/dist/components/date/DateField.svelte +11 -2
  144. package/dist/components/date/DateRangeField.stories.svelte +53 -0
  145. package/dist/components/{containers/panes/SupportingPane.stories.svelte.d.ts → date/DateRangeField.stories.svelte.d.ts} +4 -4
  146. package/dist/components/date/DateRangeField.svelte +2 -1
  147. package/dist/components/date/theme.d.ts +73 -4
  148. package/dist/components/date/theme.js +95 -26
  149. package/dist/components/date/types.d.ts +5 -0
  150. package/dist/components/forms/checkbox/Checkbox.svelte +7 -9
  151. package/dist/components/forms/checkbox/theme.d.ts +8 -8
  152. package/dist/components/forms/checkbox/theme.js +31 -9
  153. package/dist/components/forms/command/Command.stories.svelte +86 -0
  154. package/dist/components/forms/command/Command.stories.svelte.d.ts +19 -0
  155. package/dist/components/forms/command/theme.d.ts +35 -35
  156. package/dist/components/forms/command/theme.js +4 -4
  157. package/dist/components/forms/pin/theme.d.ts +2 -2
  158. package/dist/components/forms/radio-group/theme.d.ts +2 -2
  159. package/dist/components/forms/search/theme.d.ts +8 -8
  160. package/dist/components/forms/select/Select.svelte +3 -2
  161. package/dist/components/forms/select/theme.d.ts +26 -2
  162. package/dist/components/forms/select/theme.js +56 -22
  163. package/dist/components/forms/slider/theme.d.ts +20 -20
  164. package/dist/components/forms/switch/theme.d.ts +2 -2
  165. package/dist/components/forms/textfield/Textfield.stories.svelte +22 -0
  166. package/dist/components/forms/textfield/Textfield.svelte +10 -1
  167. package/dist/components/forms/textfield/theme.d.ts +44 -2
  168. package/dist/components/forms/textfield/theme.js +56 -16
  169. package/dist/components/forms/toggle-group/ToggleGroup.svelte +2 -2
  170. package/dist/components/forms/toggle-group/ToggleGroup.svelte.d.ts +2 -2
  171. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte +1 -1
  172. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte.d.ts +1 -1
  173. package/dist/components/forms/toggle-group/theme.d.ts +16 -16
  174. package/dist/components/forms/toggle-group/types.d.ts +2 -2
  175. package/dist/components/forms/tooltip/Tooltip.stories.svelte +90 -0
  176. package/dist/components/forms/tooltip/Tooltip.stories.svelte.d.ts +19 -0
  177. package/dist/components/forms/tooltip/Tooltip.svelte +5 -4
  178. package/dist/components/forms/tooltip/theme.d.ts +5 -2
  179. package/dist/components/forms/tooltip/theme.js +6 -5
  180. package/dist/components/index.d.ts +1 -0
  181. package/dist/components/index.js +1 -0
  182. package/dist/components/misc/Avatar.stories.svelte +63 -0
  183. package/dist/components/misc/Avatar.stories.svelte.d.ts +19 -0
  184. package/dist/components/misc/Avatar.svelte +35 -10
  185. package/dist/components/misc/DicebearAvatarBuilder.d.ts +59 -0
  186. package/dist/components/misc/DicebearAvatarBuilder.js +115 -0
  187. package/dist/components/misc/ThemeSettings.svelte +1 -1
  188. package/dist/components/misc/ThemeSwitcher.svelte +2 -2
  189. package/dist/components/misc/dicebearStyles.d.ts +21 -0
  190. package/dist/components/misc/dicebearStyles.js +169 -0
  191. package/dist/components/misc/index.d.ts +3 -0
  192. package/dist/components/misc/index.js +3 -0
  193. package/dist/components/misc/materialAvatarPalette.d.ts +6 -0
  194. package/dist/components/misc/materialAvatarPalette.js +44 -0
  195. package/dist/components/misc/theme.d.ts +20 -2
  196. package/dist/components/misc/theme.js +9 -3
  197. package/dist/components/misc/types.d.ts +20 -2
  198. package/dist/components/nav/appbar/AppBar.stories.svelte +1 -1
  199. package/dist/components/nav/appbar/AppBar.svelte +46 -15
  200. package/dist/components/nav/appbar/AppBar.svelte.d.ts +5 -0
  201. package/dist/components/nav/appbar/theme.d.ts +20 -14
  202. package/dist/components/nav/appbar/theme.js +11 -7
  203. package/dist/components/nav/appbar/types.d.ts +3 -1
  204. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +50 -0
  205. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte.d.ts +19 -0
  206. package/dist/components/nav/breadcrumb/Breadcrumb.svelte +46 -0
  207. package/dist/components/nav/breadcrumb/Breadcrumb.svelte.d.ts +13 -0
  208. package/dist/components/nav/breadcrumb/index.d.ts +3 -0
  209. package/dist/components/nav/breadcrumb/index.js +6 -0
  210. package/dist/components/nav/breadcrumb/theme.d.ts +84 -0
  211. package/dist/components/nav/breadcrumb/theme.js +35 -0
  212. package/dist/components/nav/breadcrumb/types.d.ts +14 -0
  213. package/dist/components/nav/breadcrumb/types.js +1 -0
  214. package/dist/components/nav/index.d.ts +1 -0
  215. package/dist/components/nav/index.js +1 -0
  216. package/dist/components/nav/navbar/theme.d.ts +19 -19
  217. package/dist/components/nav/rail/Rail.stories.svelte +1 -5
  218. package/dist/components/nav/rail/Rail.svelte +3 -25
  219. package/dist/components/nav/rail/theme.d.ts +4 -4
  220. package/dist/components/nav/rail/types.d.ts +0 -5
  221. package/dist/components/nav/tabs/TabHolder.svelte +2 -1
  222. package/dist/components/nav/tabs/theme.d.ts +21 -21
  223. package/dist/components/nav/tabs/theme.js +6 -0
  224. package/dist/components/nav/tabs/types.d.ts +2 -2
  225. package/dist/components/pill/theme.d.ts +35 -35
  226. package/dist/components/snackbar/theme.d.ts +8 -8
  227. package/dist/components/table/Table.stories.svelte +267 -0
  228. package/dist/components/table/Table.stories.svelte.d.ts +19 -0
  229. package/dist/components/table/Table.svelte +1 -1
  230. package/dist/components/table/TableBody.svelte +16 -3
  231. package/dist/components/table/TableBody.svelte.d.ts +5 -1
  232. package/dist/components/table/TableRow.svelte +1 -1
  233. package/dist/components/table/theme.d.ts +2 -2
  234. package/dist/components/table/theme.js +2 -2
  235. package/dist/components/table/types.d.ts +7 -0
  236. package/dist/components/time/theme.d.ts +29 -29
  237. package/dist/components/time/theme.js +2 -2
  238. package/dist/components/toolbar/Toolbar.stories.svelte +71 -0
  239. package/dist/components/toolbar/Toolbar.stories.svelte.d.ts +19 -0
  240. package/dist/components/toolbar/Toolbar.svelte +19 -3
  241. package/dist/components/toolbar/Toolbar.svelte.d.ts +8 -2
  242. package/dist/components/toolbar/ToolbarButton.svelte +28 -4
  243. package/dist/components/toolbar/ToolbarDivider.svelte +4 -3
  244. package/dist/components/toolbar/ToolbarGroup.svelte +7 -2
  245. package/dist/components/toolbar/ToolbarGroupItem.svelte +29 -4
  246. package/dist/components/toolbar/ToolbarSection.svelte +35 -0
  247. package/dist/components/toolbar/ToolbarSection.svelte.d.ts +9 -0
  248. package/dist/components/toolbar/ToolbarSpacer.svelte +18 -0
  249. package/dist/components/toolbar/ToolbarSpacer.svelte.d.ts +9 -0
  250. package/dist/components/toolbar/index.d.ts +2 -0
  251. package/dist/components/toolbar/index.js +2 -0
  252. package/dist/components/toolbar/theme.d.ts +36 -21
  253. package/dist/components/toolbar/theme.js +27 -11
  254. package/dist/components/toolbar/types.d.ts +37 -4
  255. package/dist/components/typography/body/theme.d.ts +14 -14
  256. package/dist/components/typography/display/theme.d.ts +14 -14
  257. package/dist/components/typography/headline/theme.d.ts +14 -14
  258. package/dist/components/typography/kbd/Kbd.stories.svelte +41 -0
  259. package/dist/components/typography/kbd/Kbd.stories.svelte.d.ts +19 -0
  260. package/dist/components/typography/kbd/theme.d.ts +9 -9
  261. package/dist/components/typography/kbd/theme.js +2 -2
  262. package/dist/components/typography/label/theme.d.ts +14 -14
  263. package/dist/components/typography/title/theme.d.ts +14 -14
  264. package/dist/styles/component.css +126 -4
  265. package/dist/styles/motion.css +6 -3
  266. package/dist/utils/Layer.svelte +7 -3
  267. package/dist/utils/Theme.svelte +20 -20
  268. package/dist/utils/ThemeScript.svelte +1 -1
  269. package/dist/utils/icon/theme.d.ts +14 -14
  270. package/package.json +38 -37
  271. package/bin/install-skill.js +0 -29
  272. package/dist/components/buttons/button-group/ButtonGroupItem.svelte +0 -41
  273. package/dist/components/buttons/button-group/ButtonGroupItem.svelte.d.ts +0 -8
  274. package/dist/components/buttons/connected/ConnectedButtons.svelte +0 -14
  275. package/dist/components/buttons/connected/ConnectedButtons.svelte.d.ts +0 -8
  276. package/dist/components/containers/menu-item/MenuItem.svelte +0 -74
  277. package/dist/components/containers/merger/InputMerger.svelte +0 -29
  278. package/dist/components/containers/merger/InputMerger.svelte.d.ts +0 -14
  279. package/dist/components/containers/merger/index.d.ts +0 -1
  280. package/dist/components/containers/merger/index.js +0 -3
  281. package/dist/components/containers/panes/SinglePane.stories.svelte +0 -67
  282. package/dist/components/containers/panes/SinglePane.svelte +0 -32
  283. package/dist/components/containers/panes/SinglePane.svelte.d.ts +0 -5
  284. package/dist/components/containers/panes/SplitPane.stories.svelte +0 -124
  285. package/dist/components/containers/panes/SplitPane.svelte +0 -144
  286. package/dist/components/containers/panes/SplitPane.svelte.d.ts +0 -8
  287. package/dist/components/containers/panes/SupportingPane.stories.svelte +0 -113
  288. package/dist/components/containers/panes/SupportingPane.svelte +0 -175
  289. package/dist/components/containers/panes/SupportingPane.svelte.d.ts +0 -9
  290. package/dist/components/containers/panes/index.d.ts +0 -5
  291. package/dist/components/containers/panes/theme.d.ts +0 -490
  292. package/dist/components/containers/panes/theme.js +0 -185
  293. package/dist/components/containers/panes/types.d.ts +0 -108
  294. package/dist/components/nav/rail/RailNavContext.svelte +0 -14
  295. package/dist/components/nav/rail/RailNavContext.svelte.d.ts +0 -8
  296. /package/dist/components/{containers/menu-item → buttons/split-button}/types.js +0 -0
  297. /package/dist/components/{containers/panes → chips}/types.js +0 -0
  298. /package/dist/components/containers/{menu-item → menu/menu-item}/index.d.ts +0 -0
  299. /package/dist/components/containers/{menu-item → menu/menu-item}/index.js +0 -0
@@ -0,0 +1,71 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Toolbar from './Toolbar.svelte';
4
+ import ToolbarButton from './ToolbarButton.svelte';
5
+ import ToolbarDivider from './ToolbarDivider.svelte';
6
+ import ToolbarGroup from './ToolbarGroup.svelte';
7
+ import ToolbarGroupItem from './ToolbarGroupItem.svelte';
8
+ import ToolbarSection from './ToolbarSection.svelte';
9
+ import ToolbarSpacer from './ToolbarSpacer.svelte';
10
+
11
+ const { Story } = defineMeta({
12
+ title: 'Toolbar/Toolbar',
13
+ component: Toolbar
14
+ });
15
+ </script>
16
+
17
+ <Story name="Playground" asChild>
18
+ <Toolbar>
19
+ <ToolbarButton iconProps={{ name: 'format_bold' }} />
20
+ <ToolbarButton iconProps={{ name: 'format_italic' }} />
21
+ <ToolbarDivider />
22
+ <ToolbarButton iconProps={{ name: 'format_underlined' }} />
23
+ </Toolbar>
24
+ </Story>
25
+
26
+ <Story name="Sections">
27
+ {#snippet template()}
28
+ <div class="w-120">
29
+ <Toolbar sections class="w-full">
30
+ <ToolbarSection>
31
+ <ToolbarButton iconProps={{ name: 'format_bold' }} />
32
+ <ToolbarButton iconProps={{ name: 'format_italic' }} />
33
+ </ToolbarSection>
34
+ <ToolbarSpacer />
35
+ <ToolbarSection>
36
+ <ToolbarButton iconProps={{ name: 'share' }} />
37
+ <ToolbarButton iconProps={{ name: 'settings' }} />
38
+ </ToolbarSection>
39
+ </Toolbar>
40
+ </div>
41
+ {/snippet}
42
+ </Story>
43
+
44
+ <Story name="Vertical" asChild>
45
+ <Toolbar orientation="vertical">
46
+ <ToolbarGroup type="single">
47
+ <ToolbarGroupItem value="bold" iconProps={{ name: 'format_bold' }} />
48
+ <ToolbarGroupItem value="italic" iconProps={{ name: 'format_italic' }} />
49
+ </ToolbarGroup>
50
+ <ToolbarDivider />
51
+ <ToolbarButton iconProps={{ name: 'format_underlined' }} />
52
+ </Toolbar>
53
+ </Story>
54
+
55
+ <Story name="VerticalSections">
56
+ {#snippet template()}
57
+ <div class="h-120">
58
+ <Toolbar orientation="vertical" sections class="h-full">
59
+ <ToolbarSection>
60
+ <ToolbarButton iconProps={{ name: 'format_bold' }} />
61
+ <ToolbarButton iconProps={{ name: 'format_italic' }} />
62
+ </ToolbarSection>
63
+ <ToolbarSpacer />
64
+ <ToolbarSection>
65
+ <ToolbarButton iconProps={{ name: 'share' }} />
66
+ <ToolbarButton iconProps={{ name: 'settings' }} />
67
+ </ToolbarSection>
68
+ </Toolbar>
69
+ </div>
70
+ {/snippet}
71
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Toolbar from './Toolbar.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Toolbar: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Toolbar = InstanceType<typeof Toolbar>;
19
+ export default Toolbar;
@@ -4,11 +4,17 @@ Toolbar provides a horizontal (or vertical) container for grouped actions.
4
4
 
5
5
  - variant="floating" — elevated, rounded, inline (default)
6
6
  - variant="docked" — full-width, flat, anchored to top/bottom
7
- - variant="mobile" — fixed above the bottom Navbar (bottom-20), full-width
8
- - ghost — renders a h-16 spacer after the toolbar to prevent content scroll-under (pair with variant="mobile")
7
+ - ghost — renders a h-16 spacer after the toolbar to prevent content scroll-under
9
8
  - color="standard" — surface-container background
10
9
  - color="vibrant" — secondary-container background with inverted toggle selection
11
10
  - fab snippet — renders a FAB at the trailing edge (canonical for docked bottom bars)
11
+ - sections — splits the pill/bar into independently painted surfaces: root becomes a
12
+ plain flex layout and `children` render raw, so compose it from
13
+ `ToolbarSection` clusters (each gets its own bg/shape/elevation),
14
+ separated by `ToolbarSpacer` — a plain marker gap, the same size as
15
+ the toolbar's normal item spacing, not a flex-growing push to opposite
16
+ edges. Default (false) renders one implicit ToolbarSection around all
17
+ of `children`, unchanged from before.
12
18
 
13
19
  @see https://m3.material.io/components/toolbars
14
20
  -->
@@ -27,6 +33,7 @@ Toolbar provides a horizontal (or vertical) container for grouped actions.
27
33
  loop = true,
28
34
  variant = 'floating',
29
35
  color = 'standard',
36
+ sections = false,
30
37
  class: className,
31
38
  ...restProps
32
39
  }: ToolbarProps = $props();
@@ -37,6 +44,9 @@ Toolbar provides a horizontal (or vertical) container for grouped actions.
37
44
  },
38
45
  get orientation() {
39
46
  return orientation;
47
+ },
48
+ get variant() {
49
+ return variant;
40
50
  }
41
51
  };
42
52
  setContext('toolbar', toolbarCtx);
@@ -45,7 +55,13 @@ Toolbar provides a horizontal (or vertical) container for grouped actions.
45
55
  </script>
46
56
 
47
57
  <Toolbar.Root {orientation} {loop} class={cls.root({ class: clsx(className) })} {...restProps}>
48
- {@render children?.()}
58
+ {#if sections}
59
+ {@render children?.()}
60
+ {:else}
61
+ <div class={cls.segment()}>
62
+ {@render children?.()}
63
+ </div>
64
+ {/if}
49
65
  {#if fab}
50
66
  <div class={cls.fabSlot()}>
51
67
  {@render fab()}
@@ -5,11 +5,17 @@ import type { ToolbarProps } from './types.js';
5
5
  *
6
6
  * - variant="floating" — elevated, rounded, inline (default)
7
7
  * - variant="docked" — full-width, flat, anchored to top/bottom
8
- * - variant="mobile" — fixed above the bottom Navbar (bottom-20), full-width
9
- * - ghost — renders a h-16 spacer after the toolbar to prevent content scroll-under (pair with variant="mobile")
8
+ * - ghost — renders a h-16 spacer after the toolbar to prevent content scroll-under
10
9
  * - color="standard" — surface-container background
11
10
  * - color="vibrant" — secondary-container background with inverted toggle selection
12
11
  * - fab snippet — renders a FAB at the trailing edge (canonical for docked bottom bars)
12
+ * - sections — splits the pill/bar into independently painted surfaces: root becomes a
13
+ * plain flex layout and `children` render raw, so compose it from
14
+ * `ToolbarSection` clusters (each gets its own bg/shape/elevation),
15
+ * separated by `ToolbarSpacer` — a plain marker gap, the same size as
16
+ * the toolbar's normal item spacing, not a flex-growing push to opposite
17
+ * edges. Default (false) renders one implicit ToolbarSection around all
18
+ * of `children`, unchanged from before.
13
19
  *
14
20
  * @see https://m3.material.io/components/toolbars
15
21
  */
@@ -11,10 +11,14 @@ Color is inherited from the parent Toolbar via context.
11
11
  import { toolbarButton } from './theme.js';
12
12
  import type { ToolbarButtonProps } from './types.js';
13
13
  import type { ToolbarColor } from './types.js';
14
+ import Tooltip from '../forms/tooltip/Tooltip.svelte';
14
15
 
15
16
  let {
16
17
  iconProps,
18
+ avatar,
17
19
  disabled = false,
20
+ tooltipContent,
21
+ triggerClass = '',
18
22
  class: className,
19
23
  ...restProps
20
24
  }: ToolbarButtonProps = $props();
@@ -24,9 +28,29 @@ Color is inherited from the parent Toolbar via context.
24
28
  );
25
29
  const color = $derived(toolbarCtx?.color ?? 'standard');
26
30
  const { base, icon } = $derived(toolbarButton({ color }));
31
+
32
+ const btnCls = $derived(base({ class: clsx(className) }));
27
33
  </script>
28
34
 
29
- <Toolbar.Button {disabled} class={base({ class: clsx(className) })} {...restProps}>
30
- <Icon {...iconProps} class={icon()} />
31
- <Layer />
32
- </Toolbar.Button>
35
+ <Tooltip {triggerClass} variant="snack" supportingText={tooltipContent}>
36
+ {#snippet trigger({
37
+ class: triggerClass_,
38
+ type: _tooltipType,
39
+ onclick: _tooltipOnclick,
40
+ ...triggerAttrs
41
+ })}
42
+ <Toolbar.Button
43
+ {disabled}
44
+ class={clsx(btnCls, triggerClass_ as string)}
45
+ {...restProps}
46
+ {...triggerAttrs}
47
+ >
48
+ {#if avatar}
49
+ {@render avatar()}
50
+ {:else if iconProps}
51
+ <Icon {...iconProps} class={icon()} />
52
+ {/if}
53
+ <Layer />
54
+ </Toolbar.Button>
55
+ {/snippet}
56
+ </Tooltip>
@@ -1,12 +1,13 @@
1
1
  <script lang="ts">
2
2
  import { getContext } from 'svelte';
3
- import { toolbar } from './theme.js';
3
+ import { toolbar, type ToolbarVariants } from './theme.js';
4
4
 
5
5
  const toolbarCtx = getContext<
6
- { color: string; orientation: 'horizontal' | 'vertical' } | undefined
6
+ | { color: string; orientation: 'horizontal' | 'vertical'; variant: ToolbarVariants['variant'] }
7
+ | undefined
7
8
  >('toolbar');
8
9
  const orientation = $derived(toolbarCtx?.orientation ?? 'horizontal');
9
- const cls = $derived(toolbar({ orientation }));
10
+ const cls = $derived(toolbar({ orientation, variant: toolbarCtx?.variant }));
10
11
 
11
12
  // separator runs perpendicular to the toolbar flow
12
13
  const ariaOrientation = $derived(orientation === 'horizontal' ? 'vertical' : 'horizontal');
@@ -5,12 +5,17 @@ A toggle group within a Toolbar. Manages single or multiple selection.
5
5
  <script lang="ts">
6
6
  import { Toolbar } from 'bits-ui';
7
7
  import clsx from 'clsx';
8
- import { toolbar } from './theme.js';
8
+ import { getContext } from 'svelte';
9
+ import { toolbar, type ToolbarVariants } from './theme.js';
9
10
  import type { ToolbarGroupProps } from './types.js';
10
11
 
11
12
  let { children, disabled = false, class: className, ...restProps }: ToolbarGroupProps = $props();
12
13
 
13
- const cls = toolbar();
14
+ const toolbarCtx = getContext<{ orientation: ToolbarVariants['orientation'] } | undefined>(
15
+ 'toolbar'
16
+ );
17
+
18
+ const cls = $derived(toolbar({ orientation: toolbarCtx?.orientation }));
14
19
  </script>
15
20
 
16
21
  <Toolbar.Group {disabled} class={cls.group({ class: clsx(className) })} {...restProps}>
@@ -12,11 +12,15 @@ Color is inherited from the parent Toolbar via context.
12
12
  import { toolbarGroupItem } from './theme.js';
13
13
  import type { ToolbarGroupItemProps } from './types.js';
14
14
  import type { ToolbarColor } from './types.js';
15
+ import Tooltip from '../forms/tooltip/Tooltip.svelte';
15
16
 
16
17
  let {
17
18
  iconProps,
19
+ avatar,
18
20
  value,
19
21
  disabled = false,
22
+ tooltipContent,
23
+ triggerClass = '',
20
24
  class: className,
21
25
  ...restProps
22
26
  }: ToolbarGroupItemProps = $props();
@@ -26,9 +30,30 @@ Color is inherited from the parent Toolbar via context.
26
30
  );
27
31
  const color = $derived(toolbarCtx?.color ?? 'standard');
28
32
  const { base, icon } = $derived(toolbarGroupItem({ color }));
33
+
34
+ const btnCls = $derived(base({ class: clsx(className) }));
29
35
  </script>
30
36
 
31
- <Toolbar.GroupItem {value} {disabled} class={base({ class: clsx(className) })} {...restProps}>
32
- <Icon {...iconProps} class={icon()} />
33
- <Layer />
34
- </Toolbar.GroupItem>
37
+ <Tooltip {triggerClass} variant="snack" supportingText={tooltipContent}>
38
+ {#snippet trigger({
39
+ class: triggerClass_,
40
+ type: _tooltipType,
41
+ onclick: _tooltipOnclick,
42
+ ...triggerAttrs
43
+ })}
44
+ <Toolbar.GroupItem
45
+ {value}
46
+ {disabled}
47
+ class={clsx(btnCls, triggerClass_ as string)}
48
+ {...restProps}
49
+ {...triggerAttrs}
50
+ >
51
+ {#if avatar}
52
+ {@render avatar()}
53
+ {:else if iconProps}
54
+ <Icon {...iconProps} class={icon()} />
55
+ {/if}
56
+ <Layer />
57
+ </Toolbar.GroupItem>
58
+ {/snippet}
59
+ </Tooltip>
@@ -0,0 +1,35 @@
1
+ <!--
2
+ @component
3
+ One independently painted cluster within a `<Toolbar sections>` — gets its own bg/shape/
4
+ elevation matching the parent Toolbar's variant/color. Combine with ToolbarSpacer to split
5
+ one toolbar into two or more visually separate surfaces.
6
+ -->
7
+ <script lang="ts">
8
+ import clsx from 'clsx';
9
+ import { getContext } from 'svelte';
10
+ import { toolbar, type ToolbarVariants } from './theme.js';
11
+ import type { ToolbarSectionProps } from './types.js';
12
+
13
+ let { children, class: className, ...restProps }: ToolbarSectionProps = $props();
14
+
15
+ const toolbarCtx = getContext<
16
+ | {
17
+ color: ToolbarVariants['color'];
18
+ orientation: ToolbarVariants['orientation'];
19
+ variant: ToolbarVariants['variant'];
20
+ }
21
+ | undefined
22
+ >('toolbar');
23
+
24
+ const cls = $derived(
25
+ toolbar({
26
+ orientation: toolbarCtx?.orientation,
27
+ variant: toolbarCtx?.variant,
28
+ color: toolbarCtx?.color
29
+ })
30
+ );
31
+ </script>
32
+
33
+ <div class={cls.segment({ class: clsx(className) })} {...restProps}>
34
+ {@render children?.()}
35
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { ToolbarSectionProps } from './types.js';
2
+ /**
3
+ * One independently painted cluster within a `<Toolbar sections>` — gets its own bg/shape/
4
+ * elevation matching the parent Toolbar's variant/color. Combine with ToolbarSpacer to split
5
+ * one toolbar into two or more visually separate surfaces.
6
+ */
7
+ declare const ToolbarSection: import("svelte").Component<ToolbarSectionProps, {}, "">;
8
+ type ToolbarSection = ReturnType<typeof ToolbarSection>;
9
+ export default ToolbarSection;
@@ -0,0 +1,18 @@
1
+ <!--
2
+ @component
3
+ A plain marker gap between `ToolbarSection`s under `<Toolbar sections>` — visually the same
4
+ as the toolbar's normal item spacing, it does not grow, so sections stay adjacent rather than
5
+ being pushed apart to opposite edges. (For pushing trailing children to the far edge of a
6
+ single segment, use `fabSlot`/the `fab` prop instead — that's a flex-`ml-auto` push, not this.)
7
+ -->
8
+ <script lang="ts">
9
+ import clsx from 'clsx';
10
+ import { toolbar } from './theme.js';
11
+ import type { ToolbarSpacerProps } from './types.js';
12
+
13
+ let { class: className, ...restProps }: ToolbarSpacerProps = $props();
14
+
15
+ const cls = toolbar();
16
+ </script>
17
+
18
+ <div class={cls.spacer({ class: clsx(className) })} {...restProps}></div>
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A plain marker gap between `ToolbarSection`s under `<Toolbar sections>` — visually the same
3
+ * as the toolbar's normal item spacing, it does not grow, so sections stay adjacent rather than
4
+ * being pushed apart to opposite edges. (For pushing trailing children to the far edge of a
5
+ * single segment, use `fabSlot`/the `fab` prop instead — that's a flex-`ml-auto` push, not this.)
6
+ */
7
+ declare const ToolbarSpacer: import("svelte").Component<import("../../index.js").DivAttrs, {}, "">;
8
+ type ToolbarSpacer = ReturnType<typeof ToolbarSpacer>;
9
+ export default ToolbarSpacer;
@@ -5,3 +5,5 @@ export { default as ToolbarButton } from './ToolbarButton.svelte';
5
5
  export { default as ToolbarDivider } from './ToolbarDivider.svelte';
6
6
  export { default as ToolbarGroup } from './ToolbarGroup.svelte';
7
7
  export { default as ToolbarGroupItem } from './ToolbarGroupItem.svelte';
8
+ export { default as ToolbarSection } from './ToolbarSection.svelte';
9
+ export { default as ToolbarSpacer } from './ToolbarSpacer.svelte';
@@ -8,3 +8,5 @@ export { default as ToolbarButton } from './ToolbarButton.svelte';
8
8
  export { default as ToolbarDivider } from './ToolbarDivider.svelte';
9
9
  export { default as ToolbarGroup } from './ToolbarGroup.svelte';
10
10
  export { default as ToolbarGroupItem } from './ToolbarGroupItem.svelte';
11
+ export { default as ToolbarSection } from './ToolbarSection.svelte';
12
+ export { default as ToolbarSpacer } from './ToolbarSpacer.svelte';
@@ -6,111 +6,126 @@ export declare const toolbar: import("tailwind-variants").TVReturnType<{
6
6
  orientation: {
7
7
  horizontal: {
8
8
  root: string;
9
+ segment: string;
10
+ group: string;
9
11
  divider: string;
10
12
  };
11
13
  vertical: {
12
14
  root: string;
15
+ segment: string;
16
+ group: string;
13
17
  divider: string;
14
18
  };
15
19
  };
16
20
  variant: {
17
21
  floating: {
18
22
  root: string;
23
+ segment: string;
19
24
  };
20
25
  docked: {
21
26
  root: string;
22
- };
23
- mobile: {
24
- root: string;
27
+ segment: string;
25
28
  };
26
29
  };
27
30
  color: {
28
31
  standard: {
29
- root: string;
32
+ segment: string;
30
33
  };
31
34
  vibrant: {
32
- root: string;
35
+ segment: string;
33
36
  };
34
37
  };
35
38
  }, {
36
39
  root: string;
40
+ segment: string;
37
41
  group: string;
38
42
  divider: string;
43
+ spacer: string;
39
44
  fabSlot: string;
40
45
  ghost: string;
41
46
  }, undefined, {
42
47
  orientation: {
43
48
  horizontal: {
44
49
  root: string;
50
+ segment: string;
51
+ group: string;
45
52
  divider: string;
46
53
  };
47
54
  vertical: {
48
55
  root: string;
56
+ segment: string;
57
+ group: string;
49
58
  divider: string;
50
59
  };
51
60
  };
52
61
  variant: {
53
62
  floating: {
54
63
  root: string;
64
+ segment: string;
55
65
  };
56
66
  docked: {
57
67
  root: string;
58
- };
59
- mobile: {
60
- root: string;
68
+ segment: string;
61
69
  };
62
70
  };
63
71
  color: {
64
72
  standard: {
65
- root: string;
73
+ segment: string;
66
74
  };
67
75
  vibrant: {
68
- root: string;
76
+ segment: string;
69
77
  };
70
78
  };
71
79
  }, {
72
80
  root: string;
81
+ segment: string;
73
82
  group: string;
74
83
  divider: string;
84
+ spacer: string;
75
85
  fabSlot: string;
76
86
  ghost: string;
77
- }, import("tailwind-variants").TVReturnType<{
87
+ }, import("tailwind-variants").TVReturnTypeLike<{
78
88
  orientation: {
79
89
  horizontal: {
80
90
  root: string;
91
+ segment: string;
92
+ group: string;
81
93
  divider: string;
82
94
  };
83
95
  vertical: {
84
96
  root: string;
97
+ segment: string;
98
+ group: string;
85
99
  divider: string;
86
100
  };
87
101
  };
88
102
  variant: {
89
103
  floating: {
90
104
  root: string;
105
+ segment: string;
91
106
  };
92
107
  docked: {
93
108
  root: string;
94
- };
95
- mobile: {
96
- root: string;
109
+ segment: string;
97
110
  };
98
111
  };
99
112
  color: {
100
113
  standard: {
101
- root: string;
114
+ segment: string;
102
115
  };
103
116
  vibrant: {
104
- root: string;
117
+ segment: string;
105
118
  };
106
119
  };
107
120
  }, {
108
121
  root: string;
122
+ segment: string;
109
123
  group: string;
110
124
  divider: string;
125
+ spacer: string;
111
126
  fabSlot: string;
112
127
  ghost: string;
113
- }, undefined, unknown, unknown, undefined>>;
128
+ }>>;
114
129
  export declare const toolbarButton: import("tailwind-variants").TVReturnType<{
115
130
  color: {
116
131
  standard: {
@@ -135,7 +150,7 @@ export declare const toolbarButton: import("tailwind-variants").TVReturnType<{
135
150
  }, {
136
151
  base: string;
137
152
  icon: string;
138
- }, import("tailwind-variants").TVReturnType<{
153
+ }, import("tailwind-variants").TVReturnTypeLike<{
139
154
  color: {
140
155
  standard: {
141
156
  base: string;
@@ -147,7 +162,7 @@ export declare const toolbarButton: import("tailwind-variants").TVReturnType<{
147
162
  }, {
148
163
  base: string;
149
164
  icon: string;
150
- }, undefined, unknown, unknown, undefined>>;
165
+ }>>;
151
166
  export declare const toolbarGroupItem: import("tailwind-variants").TVReturnType<{
152
167
  color: {
153
168
  standard: {
@@ -172,7 +187,7 @@ export declare const toolbarGroupItem: import("tailwind-variants").TVReturnType<
172
187
  }, {
173
188
  base: string;
174
189
  icon: string;
175
- }, import("tailwind-variants").TVReturnType<{
190
+ }, import("tailwind-variants").TVReturnTypeLike<{
176
191
  color: {
177
192
  standard: {
178
193
  base: string;
@@ -184,4 +199,4 @@ export declare const toolbarGroupItem: import("tailwind-variants").TVReturnType<
184
199
  }, {
185
200
  base: string;
186
201
  icon: string;
187
- }, undefined, unknown, unknown, undefined>>;
202
+ }>>;
@@ -1,27 +1,43 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const toolbar = tv({
3
3
  slots: {
4
- root: 'items-center gap-0.5 px-2',
5
- group: 'inline-flex items-center gap-0.5',
4
+ // Layout/position only — no paint. Holds one implicit `segment` by default, or,
5
+ // with `sections`, whatever ToolbarSection/ToolbarSpacer children the consumer supplies.
6
+ root: 'flex items-center gap-2',
7
+ // The pill/bar surface itself — bg, shape, elevation, chrome padding. Toolbar renders
8
+ // exactly one of these around `children` by default; ToolbarSection renders one per
9
+ // cluster when `sections` splits the toolbar into independently painted groups.
10
+ segment: 'inline-flex items-center gap-1 p-2 justify-between',
11
+ group: 'inline-flex items-center gap-1',
6
12
  divider: 'shrink-0 bg-md-sys-color-outline-variant',
13
+ // A marker gap between ToolbarSections under `sections` — same size as `root`'s own
14
+ // `gap-2`, it does not grow, so it doesn't push sections apart to opposite edges.
15
+ spacer: '',
7
16
  fabSlot: 'ml-auto flex items-center ps-2',
8
17
  ghost: 'h-16 w-full shrink-0 pointer-events-none'
9
18
  },
10
19
  variants: {
11
20
  orientation: {
12
- horizontal: { root: 'flex-row', divider: 'mx-1 h-6 w-px' },
13
- vertical: { root: 'flex-col h-auto w-14 py-2 px-1', divider: 'my-1 h-px w-6' }
21
+ horizontal: {
22
+ root: 'flex-row',
23
+ segment: 'flex-row h-13',
24
+ group: 'flex-row',
25
+ divider: 'mx-1 h-6 w-px'
26
+ },
27
+ vertical: {
28
+ root: 'flex-col h-max',
29
+ segment: 'flex-col w-14',
30
+ group: 'flex-col',
31
+ divider: 'my-1 h-px w-6'
32
+ }
14
33
  },
15
34
  variant: {
16
- floating: { root: 'inline-flex rounded-2xl shadow-elevation-1 py-1' },
17
- docked: { root: 'flex w-full rounded-none py-3' },
18
- mobile: {
19
- root: 'flex w-full rounded-none py-3 fixed bottom-20 left-0 z-10 shadow-elevation-2'
20
- }
35
+ floating: { root: 'inline-flex', segment: 'rounded-full shadow-elevation-1' },
36
+ docked: { root: 'fixed left-0 z-10 w-full', segment: 'w-full rounded-none' }
21
37
  },
22
38
  color: {
23
- standard: { root: 'bg-md-sys-color-surface-container' },
24
- vibrant: { root: 'bg-md-sys-color-secondary-container' }
39
+ standard: { segment: 'bg-md-sys-color-surface-container' },
40
+ vibrant: { segment: 'bg-md-sys-color-secondary-container' }
25
41
  }
26
42
  },
27
43
  defaultVariants: {