@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
@@ -1,8 +1,8 @@
1
1
  export declare const card: import("tailwind-variants").TVReturnType<{
2
2
  type: {
3
- elevated: string;
4
- filled: string;
5
- outlined: string;
3
+ elevated: "shadow-elevation-1 bg-md-sys-color-surface-container-low";
4
+ filled: "bg-md-sys-color-surface-container-high";
5
+ outlined: "bg-md-sys-color-surface outline-1 outline-md-sys-color-outline-variant";
6
6
  };
7
7
  padding: {
8
8
  none: {
@@ -19,16 +19,20 @@ export declare const card: import("tailwind-variants").TVReturnType<{
19
19
  };
20
20
  };
21
21
  hoverable: {
22
- true: string;
22
+ true: "";
23
+ };
24
+ selected: {
25
+ true: "outline-3 outline-md-sys-color-primary";
26
+ false: "focus:outline-3 focus:outline-md-sys-color-secondary";
23
27
  };
24
28
  }, {
25
29
  base: string;
26
30
  icon: string;
27
31
  }, undefined, {
28
32
  type: {
29
- elevated: string;
30
- filled: string;
31
- outlined: string;
33
+ elevated: "shadow-elevation-1 bg-md-sys-color-surface-container-low";
34
+ filled: "bg-md-sys-color-surface-container-high";
35
+ outlined: "bg-md-sys-color-surface outline-1 outline-md-sys-color-outline-variant";
32
36
  };
33
37
  padding: {
34
38
  none: {
@@ -45,16 +49,20 @@ export declare const card: import("tailwind-variants").TVReturnType<{
45
49
  };
46
50
  };
47
51
  hoverable: {
48
- true: string;
52
+ true: "";
53
+ };
54
+ selected: {
55
+ true: "outline-3 outline-md-sys-color-primary";
56
+ false: "focus:outline-3 focus:outline-md-sys-color-secondary";
49
57
  };
50
58
  }, {
51
59
  base: string;
52
60
  icon: string;
53
- }, import("tailwind-variants").TVReturnType<{
61
+ }, import("tailwind-variants").TVReturnTypeLike<{
54
62
  type: {
55
- elevated: string;
56
- filled: string;
57
- outlined: string;
63
+ elevated: "shadow-elevation-1 bg-md-sys-color-surface-container-low";
64
+ filled: "bg-md-sys-color-surface-container-high";
65
+ outlined: "bg-md-sys-color-surface outline-1 outline-md-sys-color-outline-variant";
58
66
  };
59
67
  padding: {
60
68
  none: {
@@ -71,9 +79,13 @@ export declare const card: import("tailwind-variants").TVReturnType<{
71
79
  };
72
80
  };
73
81
  hoverable: {
74
- true: string;
82
+ true: "";
83
+ };
84
+ selected: {
85
+ true: "outline-3 outline-md-sys-color-primary";
86
+ false: "focus:outline-3 focus:outline-md-sys-color-secondary";
75
87
  };
76
88
  }, {
77
89
  base: string;
78
90
  icon: string;
79
- }, undefined, unknown, unknown, undefined>>;
91
+ }>>;
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const card = tv({
3
3
  slots: {
4
- base: 'relative flex flex-col rounded-lg disabled:opacity-[0.38] disabled:bg-sys-color-surface-variant state-layer before:rounded-lg focus:outline-3 focus:outline-md-sys-color-secondary [transition:box-shadow_var(--md-sys-motion-duration,200ms)_var(--md-sys-motion-timing-function,cubic-bezier(0.34,0.8,0.34,1))]',
4
+ base: 'relative flex flex-col rounded-lg disabled:opacity-[0.38] disabled:bg-md-sys-color-surface-variant state-layer before:rounded-lg [transition:box-shadow_var(--md-sys-motion-duration,200ms)_var(--md-sys-motion-timing-function,cubic-bezier(0.34,0.8,0.34,1))]',
5
5
  icon: 'size-6 text-[24px] text-md-sys-color-primary'
6
6
  },
7
7
  variants: {
@@ -18,6 +18,10 @@ export const card = tv({
18
18
  },
19
19
  hoverable: {
20
20
  true: ''
21
+ },
22
+ selected: {
23
+ true: 'outline-3 outline-md-sys-color-primary',
24
+ false: 'focus:outline-3 focus:outline-md-sys-color-secondary'
21
25
  }
22
26
  },
23
27
  compoundVariants: [
@@ -30,7 +30,45 @@ export type CardProps = CardVariants & HTMLAttributes<HTMLDivElement> & HTMLAnch
30
30
  padding?: CardVariants['padding'];
31
31
  /**
32
32
  * Whether the card should show a state layer on hover.
33
- * Defaults to true if `href` is provided.
33
+ * Defaults to true if `href`, `onselect`, or `ondelete` is provided.
34
34
  */
35
35
  hoverable?: boolean;
36
+ /**
37
+ * Whether the card is in a selected state. Purely visual — shows a
38
+ * `primary`-colored outline unconditionally, distinct from the `secondary`
39
+ * outline shown on plain keyboard focus, so the two states stay visually
40
+ * distinguishable. Selection state itself is owned by the consumer, not
41
+ * the card, e.g. `selected={selectedId === item.id}`.
42
+ * @default false
43
+ */
44
+ selected?: boolean;
45
+ /**
46
+ * Called when the card's surface is clicked, or when Enter/Space is pressed
47
+ * while the card itself (not a nested control) has focus. Providing this
48
+ * makes the card keyboard-focusable (`tabindex`, and — for non-link cards —
49
+ * `role="button"` + `aria-pressed`). Typically closes over the represented
50
+ * item's id: `onselect={() => (selectedId = item.id)}`.
51
+ *
52
+ * Nested interactive elements (buttons, form controls) should call
53
+ * `event.stopPropagation()` in their own handlers if they shouldn't also
54
+ * trigger selection — the whole card surface is clickable.
55
+ */
56
+ onselect?: () => void;
57
+ /**
58
+ * Called when Delete/Backspace is pressed while the card itself (not a
59
+ * nested form control) has focus. Typically deletes the represented item:
60
+ * `ondelete={() => remove(item.id)}`.
61
+ */
62
+ ondelete?: () => void;
63
+ /**
64
+ * Called when focus moves from somewhere inside the card to somewhere
65
+ * outside it entirely. Unlike the native `blur`/`focusout` (which fire
66
+ * on every focus change between the card's own inner elements, e.g.
67
+ * tabbing between two fields in the same card), this only fires once
68
+ * focus actually leaves the card's subtree — checked via
69
+ * `event.relatedTarget` containment. Useful for autosaving inline-edited
70
+ * content once the user is done with this card:
71
+ * `onleave={() => save(item)}`.
72
+ */
73
+ onleave?: () => void;
36
74
  };
@@ -0,0 +1,64 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Chip from './Chip.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Chips/Chip',
7
+ component: Chip,
8
+ argTypes: {
9
+ variant: {
10
+ control: 'select',
11
+ options: ['assist', 'filter', 'input', 'suggestion']
12
+ },
13
+ elevated: { control: 'boolean' },
14
+ selected: { control: 'boolean' },
15
+ disabled: { control: 'boolean' }
16
+ },
17
+ args: {
18
+ variant: 'assist',
19
+ elevated: false,
20
+ selected: false,
21
+ disabled: false
22
+ }
23
+ });
24
+
25
+ let filterSelected = $state(true);
26
+ </script>
27
+
28
+ <Story name="Playground">Chip</Story>
29
+
30
+ <Story name="Assist" asChild>
31
+ <div class="flex flex-wrap items-center gap-4 p-6">
32
+ <Chip variant="assist" iconProps={{ name: 'calendar_today' }}>Set reminder</Chip>
33
+ <Chip variant="assist" elevated iconProps={{ name: 'calendar_today' }}>Set reminder</Chip>
34
+ <Chip variant="assist" disabled iconProps={{ name: 'calendar_today' }}>Set reminder</Chip>
35
+ </div>
36
+ </Story>
37
+
38
+ <Story name="Filter" asChild>
39
+ <div class="flex flex-wrap items-center gap-4 p-6">
40
+ <Chip variant="filter" bind:selected={filterSelected}>Filter chip</Chip>
41
+ <Chip variant="filter" iconProps={{ name: 'star' }}>Starred</Chip>
42
+ <Chip variant="filter" elevated selected>Elevated selected</Chip>
43
+ <Chip variant="filter" disabled>Disabled</Chip>
44
+ </div>
45
+ </Story>
46
+
47
+ <Story name="Input" asChild>
48
+ <div class="flex flex-wrap items-center gap-4 p-6">
49
+ <Chip variant="input" iconProps={{ name: 'person' }} onRemove={() => {}}>Ada Lovelace</Chip>
50
+ <Chip variant="input" onRemove={() => {}}>No avatar</Chip>
51
+ <Chip variant="input" selected iconProps={{ name: 'person' }} onRemove={() => {}}>Selected</Chip
52
+ >
53
+ <Chip variant="input" disabled iconProps={{ name: 'person' }} onRemove={() => {}}>Disabled</Chip
54
+ >
55
+ </div>
56
+ </Story>
57
+
58
+ <Story name="Suggestion" asChild>
59
+ <div class="flex flex-wrap items-center gap-4 p-6">
60
+ <Chip variant="suggestion">Try this</Chip>
61
+ <Chip variant="suggestion" elevated>Elevated</Chip>
62
+ <Chip variant="suggestion" disabled>Disabled</Chip>
63
+ </div>
64
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Chip from './Chip.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 Chip: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Chip = InstanceType<typeof Chip>;
19
+ export default Chip;
@@ -0,0 +1,115 @@
1
+ <!--
2
+ @component
3
+ Chips help people enter information, make selections, filter content, or trigger actions.
4
+
5
+ - Assist: Represents a smart or automated action, such as adding an event to a calendar
6
+ - Filter: Uses tags or descriptive words to filter content; supports a selected state
7
+ - Input: Represents a discrete piece of information entered by a user, and can be removed
8
+ - Suggestion: Helps narrow a user's intent by presenting dynamically generated suggestions
9
+
10
+ @see https://m3.material.io/components/chips/overview
11
+ -->
12
+ <script lang="ts">
13
+ import type { ChipProps } from './types.js';
14
+ import { Icon, Layer } from '../../utils/index.js';
15
+ import { chip } from './theme.js';
16
+ import clsx from 'clsx';
17
+ import { Button, Toggle, type ButtonRootProps, type ToggleRootProps } from 'bits-ui';
18
+ import type { HTMLAttributes } from 'svelte/elements';
19
+
20
+ let {
21
+ children,
22
+ variant = 'assist',
23
+ elevated = false,
24
+ selected = $bindable(false),
25
+ onPressedChange,
26
+ disabled = false,
27
+ iconProps,
28
+ avatar,
29
+ onRemove,
30
+ formaction,
31
+ class: className,
32
+ ...restProps
33
+ }: ChipProps = $props();
34
+
35
+ const isFilter = $derived(variant === 'filter');
36
+ const isElevated = $derived(variant === 'input' ? false : elevated);
37
+ const isSelected = $derived(variant === 'filter' || variant === 'input' ? selected : false);
38
+ const showCheck = $derived(isFilter && selected);
39
+
40
+ const { base, icon, label, trailing, checkIcon } = $derived(
41
+ chip({ variant, elevated: isElevated, selected: isSelected, disabled })
42
+ );
43
+ const chipCls = $derived(base({ class: clsx(className) }));
44
+ </script>
45
+
46
+ {#snippet leading()}
47
+ {#if showCheck}
48
+ <svg
49
+ viewBox="0 0 24 24"
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ class={checkIcon()}
52
+ fill="currentColor"
53
+ >
54
+ <path d="M9.55 18 3.85 12.3 5.275 10.875 9.55 15.15 18.725 5.975 20.15 7.4Z" />
55
+ </svg>
56
+ {:else if avatar}
57
+ {@render avatar()}
58
+ {:else if iconProps}
59
+ <Icon size="xs" class={icon()} {...iconProps} />
60
+ {/if}
61
+ {/snippet}
62
+
63
+ {#if isFilter}
64
+ <Toggle.Root
65
+ bind:pressed={selected}
66
+ {onPressedChange}
67
+ {disabled}
68
+ class={chipCls}
69
+ data-cy="m3-chip"
70
+ {...restProps as ToggleRootProps}
71
+ >
72
+ {@render leading()}
73
+ <span class={label()}>{@render children()}</span>
74
+ <Layer />
75
+ </Toggle.Root>
76
+ {:else if variant === 'input'}
77
+ <div
78
+ class={chipCls}
79
+ data-cy="m3-chip"
80
+ aria-disabled={disabled}
81
+ data-disabled={disabled ? true : undefined}
82
+ {...restProps as HTMLAttributes<HTMLDivElement>}
83
+ >
84
+ {@render leading()}
85
+ <span class={label()}>{@render children()}</span>
86
+ {#if onRemove}
87
+ <button
88
+ type="button"
89
+ class={trailing()}
90
+ {disabled}
91
+ onclick={(e) => {
92
+ e.stopPropagation();
93
+ onRemove?.();
94
+ }}
95
+ aria-label="Remove"
96
+ >
97
+ <Icon size="xs" name="close" />
98
+ <Layer />
99
+ </button>
100
+ {/if}
101
+ <Layer />
102
+ </div>
103
+ {:else}
104
+ <Button.Root
105
+ {disabled}
106
+ {formaction}
107
+ class={chipCls}
108
+ data-cy="m3-chip"
109
+ {...restProps as ButtonRootProps}
110
+ >
111
+ {@render leading()}
112
+ <span class={label()}>{@render children()}</span>
113
+ <Layer />
114
+ </Button.Root>
115
+ {/if}
@@ -0,0 +1,14 @@
1
+ import type { ChipProps } from './types.js';
2
+ /**
3
+ * Chips help people enter information, make selections, filter content, or trigger actions.
4
+ *
5
+ * - Assist: Represents a smart or automated action, such as adding an event to a calendar
6
+ * - Filter: Uses tags or descriptive words to filter content; supports a selected state
7
+ * - Input: Represents a discrete piece of information entered by a user, and can be removed
8
+ * - Suggestion: Helps narrow a user's intent by presenting dynamically generated suggestions
9
+ *
10
+ * @see https://m3.material.io/components/chips/overview
11
+ */
12
+ declare const Chip: import("svelte").Component<ChipProps, {}, "selected">;
13
+ type Chip = ReturnType<typeof Chip>;
14
+ export default Chip;
@@ -0,0 +1,3 @@
1
+ export * from './theme.js';
2
+ export * from './types.js';
3
+ export { default as Chip } from './Chip.svelte';
@@ -0,0 +1,6 @@
1
+ // THIS FILE IS AUTO-GENERATED BY scripts/generate-components-index.ts - DO NOT EDIT MANUALLY
2
+ // re-export TS/JS modules from this folder
3
+ export * from './theme.js';
4
+ export * from './types.js';
5
+ // default exports for components in this folder
6
+ export { default as Chip } from './Chip.svelte';
@@ -0,0 +1,78 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export type ChipVariants = VariantProps<typeof chip>;
3
+ export declare const chip: import("tailwind-variants").TVReturnType<{
4
+ variant: {
5
+ assist: "";
6
+ filter: "";
7
+ input: "";
8
+ suggestion: "";
9
+ };
10
+ elevated: {
11
+ true: "";
12
+ false: "";
13
+ };
14
+ selected: {
15
+ true: "";
16
+ false: "";
17
+ };
18
+ disabled: {
19
+ true: "";
20
+ false: "";
21
+ };
22
+ }, {
23
+ base: string;
24
+ icon: string;
25
+ label: string;
26
+ trailing: string;
27
+ checkIcon: string;
28
+ }, undefined, {
29
+ variant: {
30
+ assist: "";
31
+ filter: "";
32
+ input: "";
33
+ suggestion: "";
34
+ };
35
+ elevated: {
36
+ true: "";
37
+ false: "";
38
+ };
39
+ selected: {
40
+ true: "";
41
+ false: "";
42
+ };
43
+ disabled: {
44
+ true: "";
45
+ false: "";
46
+ };
47
+ }, {
48
+ base: string;
49
+ icon: string;
50
+ label: string;
51
+ trailing: string;
52
+ checkIcon: string;
53
+ }, import("tailwind-variants").TVReturnTypeLike<{
54
+ variant: {
55
+ assist: "";
56
+ filter: "";
57
+ input: "";
58
+ suggestion: "";
59
+ };
60
+ elevated: {
61
+ true: "";
62
+ false: "";
63
+ };
64
+ selected: {
65
+ true: "";
66
+ false: "";
67
+ };
68
+ disabled: {
69
+ true: "";
70
+ false: "";
71
+ };
72
+ }, {
73
+ base: string;
74
+ icon: string;
75
+ label: string;
76
+ trailing: string;
77
+ checkIcon: string;
78
+ }>>;
@@ -0,0 +1,72 @@
1
+ import { tv } from 'tailwind-variants';
2
+ export const chip = tv({
3
+ slots: {
4
+ base: 'md-component-button-base group inline-flex h-8 max-w-max items-center justify-center gap-2 rounded-sm before:rounded-sm px-4 md-sys-typescale-label-large font-medium',
5
+ icon: 'shrink-0',
6
+ label: '',
7
+ trailing: 'relative -mr-2 ml-1 inline-flex size-[18px] shrink-0 items-center justify-center rounded-full',
8
+ checkIcon: 'size-4 shrink-0'
9
+ },
10
+ variants: {
11
+ variant: {
12
+ assist: '',
13
+ filter: '',
14
+ input: '',
15
+ suggestion: ''
16
+ },
17
+ elevated: {
18
+ true: '',
19
+ false: ''
20
+ },
21
+ selected: {
22
+ true: '',
23
+ false: ''
24
+ },
25
+ disabled: {
26
+ true: '',
27
+ false: ''
28
+ }
29
+ },
30
+ compoundVariants: [
31
+ {
32
+ elevated: false,
33
+ selected: false,
34
+ class: {
35
+ base: 'bg-md-sys-color-surface text-md-sys-color-on-surface-variant outline outline-md-sys-color-outline-variant'
36
+ }
37
+ },
38
+ {
39
+ elevated: true,
40
+ selected: false,
41
+ class: {
42
+ base: 'bg-md-sys-color-surface-container-low text-md-sys-color-on-surface-variant shadow-elevation-1 hover:shadow-elevation-2'
43
+ }
44
+ },
45
+ {
46
+ selected: true,
47
+ class: {
48
+ base: 'bg-md-sys-color-secondary-container text-md-sys-color-on-secondary-container'
49
+ }
50
+ },
51
+ {
52
+ variant: 'assist',
53
+ selected: false,
54
+ class: { icon: 'text-md-sys-color-primary' }
55
+ },
56
+ {
57
+ disabled: true,
58
+ class: {
59
+ base: 'cursor-not-allowed bg-md-sys-color-on-surface/10 text-md-sys-color-on-surface/38 outline-md-sys-color-on-surface/12 hover:shadow-elevation-1',
60
+ icon: 'text-md-sys-color-on-surface/38',
61
+ trailing: 'text-md-sys-color-on-surface/38 pointer-events-none',
62
+ checkIcon: 'text-md-sys-color-on-surface/38'
63
+ }
64
+ }
65
+ ],
66
+ defaultVariants: {
67
+ variant: 'assist',
68
+ elevated: false,
69
+ selected: false,
70
+ disabled: false
71
+ }
72
+ });
@@ -0,0 +1,43 @@
1
+ import type { AnchorButtonAttributes, IconProps } from '../../utils/index.js';
2
+ import type { Snippet } from 'svelte';
3
+ import type { ChipVariants } from './theme.js';
4
+ export type ChipProps = ChipVariants & AnchorButtonAttributes & {
5
+ /**
6
+ * The semantic type of chip.
7
+ * - 'assist': Represents a smart or automated action.
8
+ * - 'filter': Toggles filtering of content; supports a selected state with a leading checkmark.
9
+ * - 'input': Represents a discrete piece of information entered by the user; supports removal.
10
+ * - 'suggestion': Presents a dynamically generated suggestion.
11
+ */
12
+ variant?: ChipVariants['variant'];
13
+ /**
14
+ * Whether the chip's container is elevated (shadow) instead of flat/outlined.
15
+ * Not applicable to 'input' chips, which are always flat.
16
+ */
17
+ elevated?: ChipVariants['elevated'];
18
+ /**
19
+ * Whether the chip is selected. Bindable.
20
+ * Meaningful for 'filter' chips (drives the toggle + checkmark) and 'input' chips (highlight only).
21
+ */
22
+ selected?: boolean;
23
+ /** Callback fired when a 'filter' chip's selected state changes via interaction. */
24
+ onPressedChange?: (selected: boolean) => void;
25
+ /** Whether the chip is disabled. */
26
+ disabled?: boolean;
27
+ /** Configuration for the leading icon. */
28
+ iconProps?: IconProps;
29
+ /**
30
+ * Custom leading content (e.g. an avatar image) rendered instead of `iconProps`.
31
+ * Typically used by 'input' chips to represent a contact or entity.
32
+ */
33
+ avatar?: Snippet;
34
+ /**
35
+ * Called when the trailing remove icon is activated.
36
+ * Providing this renders the trailing remove affordance on 'input' chips.
37
+ */
38
+ onRemove?: () => void;
39
+ /** The label content of the chip. */
40
+ children: Snippet;
41
+ /** The `formaction` attribute for the chip when used in a form. */
42
+ formaction?: string;
43
+ };
@@ -0,0 +1,36 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import ActionRail from './ActionRail.svelte';
4
+ import Toolbar from '../../toolbar/Toolbar.svelte';
5
+ import ToolbarButton from '../../toolbar/ToolbarButton.svelte';
6
+ import ToolbarDivider from '../../toolbar/ToolbarDivider.svelte';
7
+
8
+ const { Story } = defineMeta({
9
+ title: 'Containers/Action Rail',
10
+ component: ActionRail,
11
+ argTypes: {
12
+ anchor: {
13
+ control: 'select',
14
+ options: ['viewport', 'parent', 'sticky']
15
+ }
16
+ },
17
+ args: {
18
+ anchor: 'parent'
19
+ }
20
+ });
21
+ </script>
22
+
23
+ <Story name="Playground">
24
+ {#snippet template(args)}
25
+ <div class="bg-md-sys-color-surface-variant relative h-[420px] overflow-hidden rounded-2xl">
26
+ <ActionRail anchor={args.anchor}>
27
+ <Toolbar orientation="vertical">
28
+ <ToolbarButton iconProps={{ name: 'edit' }} />
29
+ <ToolbarButton iconProps={{ name: 'share' }} />
30
+ <ToolbarDivider />
31
+ <ToolbarButton iconProps={{ name: 'delete' }} />
32
+ </Toolbar>
33
+ </ActionRail>
34
+ </div>
35
+ {/snippet}
36
+ </Story>
@@ -1,4 +1,4 @@
1
- import SinglePane from './SinglePane.svelte';
1
+ import ActionRail from './ActionRail.svelte';
2
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
3
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
4
  $$bindings?: Bindings;
@@ -12,8 +12,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
12
12
  };
13
13
  z_$$bindings?: Bindings;
14
14
  }
15
- declare const SinglePane: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ declare const ActionRail: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
16
  [evt: string]: CustomEvent<any>;
17
17
  }, {}, {}, string>;
18
- type SinglePane = InstanceType<typeof SinglePane>;
19
- export default SinglePane;
18
+ type ActionRail = InstanceType<typeof ActionRail>;
19
+ export default ActionRail;
@@ -0,0 +1,35 @@
1
+ <!--
2
+ @component
3
+ Material 3 Action Rail.
4
+
5
+ A rightmost, sticky container for hosting a vertical `Toolbar` (or other grouped
6
+ actions) alongside page content. This is the M3 spec's newer "rail as a toolbar
7
+ host" role — distinct from `Rail` (the navigation-rail component under `nav/`).
8
+ Because it holds actions rather than destinations, it renders a plain container
9
+ and is intentionally NOT wrapped in bits-ui's `NavigationMenu` — `Toolbar.svelte`
10
+ (bits-ui `Toolbar.Root`) already supplies the correct `role="toolbar"` semantics
11
+ for whatever is placed inside.
12
+
13
+ @see https://m3.material.io/components/toolbars
14
+ -->
15
+ <script lang="ts">
16
+ import clsx from 'clsx';
17
+ import { actionRail } from './theme.js';
18
+ import type { ActionRailProps } from './types.js';
19
+
20
+ let {
21
+ children,
22
+ anchor = 'sticky',
23
+ top = 0,
24
+ bottom = 0,
25
+ class: className,
26
+ ...rest
27
+ }: ActionRailProps = $props();
28
+
29
+ const { base } = $derived(actionRail({ anchor }));
30
+ const cssVars = $derived(`--action-rail-top: ${top}px; --action-rail-bottom: ${bottom}px;`);
31
+ </script>
32
+
33
+ <div class={base({ class: clsx(className) })} style={cssVars} {...rest}>
34
+ {@render children()}
35
+ </div>
@@ -0,0 +1,17 @@
1
+ import type { ActionRailProps } from './types.js';
2
+ /**
3
+ * Material 3 Action Rail.
4
+ *
5
+ * A rightmost, sticky container for hosting a vertical `Toolbar` (or other grouped
6
+ * actions) alongside page content. This is the M3 spec's newer "rail as a toolbar
7
+ * host" role — distinct from `Rail` (the navigation-rail component under `nav/`).
8
+ * Because it holds actions rather than destinations, it renders a plain container
9
+ * and is intentionally NOT wrapped in bits-ui's `NavigationMenu` — `Toolbar.svelte`
10
+ * (bits-ui `Toolbar.Root`) already supplies the correct `role="toolbar"` semantics
11
+ * for whatever is placed inside.
12
+ *
13
+ * @see https://m3.material.io/components/toolbars
14
+ */
15
+ declare const ActionRail: import("svelte").Component<ActionRailProps, {}, "">;
16
+ type ActionRail = ReturnType<typeof ActionRail>;
17
+ export default ActionRail;