@noxlovette/material 0.3.3 → 0.4.1

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 (289) 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/{containers/merger → chips}/index.js +2 -1
  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/theme.d.ts +14 -14
  83. package/dist/components/containers/list/theme.js +1 -1
  84. package/dist/components/containers/menu/Menu.stories.svelte +105 -3
  85. package/dist/components/containers/menu/Menu.stories.svelte.d.ts +2 -17
  86. package/dist/components/containers/menu/Menu.svelte +9 -7
  87. package/dist/components/containers/menu/MenuCheckboxItem.svelte +55 -0
  88. package/dist/components/containers/menu/MenuCheckboxItem.svelte.d.ts +25 -0
  89. package/dist/components/containers/menu/MenuGroup.svelte +43 -0
  90. package/dist/components/containers/menu/MenuGroup.svelte.d.ts +28 -0
  91. package/dist/components/containers/menu/MenuRadioGroup.svelte +39 -0
  92. package/dist/components/containers/menu/MenuRadioGroup.svelte.d.ts +27 -0
  93. package/dist/components/containers/menu/MenuRadioItem.svelte +49 -0
  94. package/dist/components/containers/menu/MenuRadioItem.svelte.d.ts +17 -0
  95. package/dist/components/containers/menu/MenuSub.svelte +91 -0
  96. package/dist/components/containers/menu/MenuSub.svelte.d.ts +29 -0
  97. package/dist/components/containers/menu/index.d.ts +7 -0
  98. package/dist/components/containers/menu/index.js +8 -0
  99. package/dist/components/containers/menu/menu-item/MenuItem.svelte +71 -0
  100. package/dist/components/containers/{menu-item → menu/menu-item}/MenuItem.svelte.d.ts +2 -1
  101. package/dist/components/containers/{menu-item → menu/menu-item}/types.d.ts +5 -1
  102. package/dist/components/containers/menu/menu-item/types.js +1 -0
  103. package/dist/components/containers/menu/theme.d.ts +68 -0
  104. package/dist/components/containers/menu/theme.js +36 -0
  105. package/dist/components/containers/menu/types.d.ts +113 -2
  106. package/dist/components/containers/pane/DraggablePane.stories.svelte +199 -0
  107. package/dist/components/containers/pane/DraggablePane.stories.svelte.d.ts +4 -0
  108. package/dist/components/containers/pane/DraggablePane.svelte +533 -0
  109. package/dist/components/containers/pane/DraggablePane.svelte.d.ts +29 -0
  110. package/dist/components/containers/pane/Pane.stories.svelte +104 -0
  111. package/dist/components/containers/pane/Pane.stories.svelte.d.ts +19 -0
  112. package/dist/components/containers/pane/Pane.svelte +78 -0
  113. package/dist/components/containers/pane/Pane.svelte.d.ts +18 -0
  114. package/dist/components/containers/pane/PaneGrid.stories.svelte +134 -0
  115. package/dist/components/containers/pane/PaneGrid.stories.svelte.d.ts +19 -0
  116. package/dist/components/containers/pane/PaneGrid.svelte +43 -0
  117. package/dist/components/containers/pane/PaneGrid.svelte.d.ts +13 -0
  118. package/dist/components/containers/pane/PaneHandle.svelte +90 -0
  119. package/dist/components/containers/pane/PaneHandle.svelte.d.ts +12 -0
  120. package/dist/components/containers/pane/dragStore.svelte.d.ts +16 -0
  121. package/dist/components/containers/pane/dragStore.svelte.js +38 -0
  122. package/dist/components/containers/pane/index.d.ts +8 -0
  123. package/dist/components/containers/pane/index.js +11 -0
  124. package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -0
  125. package/dist/components/containers/pane/resizeStore.svelte.js +30 -0
  126. package/dist/components/containers/pane/theme.d.ts +571 -0
  127. package/dist/components/containers/pane/theme.js +211 -0
  128. package/dist/components/containers/pane/types.d.ts +249 -0
  129. package/dist/components/containers/pane/types.js +1 -0
  130. package/dist/components/containers/popover/Popover.stories.svelte +4 -4
  131. package/dist/components/containers/popover/Popover.svelte +3 -1
  132. package/dist/components/containers/popover/theme.d.ts +20 -20
  133. package/dist/components/containers/popover/types.d.ts +6 -2
  134. package/dist/components/containers/scroll-area/theme.d.ts +2 -2
  135. package/dist/components/containers/side-sheet/SideSheet.stories.svelte +16 -24
  136. package/dist/components/containers/side-sheet/SideSheet.svelte +73 -7
  137. package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +5 -0
  138. package/dist/components/containers/stack/theme.d.ts +44 -44
  139. package/dist/components/date/DateField.stories.svelte +57 -0
  140. package/dist/components/{containers/panes/SplitPane.stories.svelte.d.ts → date/DateField.stories.svelte.d.ts} +4 -4
  141. package/dist/components/date/DateField.svelte +11 -2
  142. package/dist/components/date/DateRangeField.stories.svelte +53 -0
  143. package/dist/components/{containers/panes/SupportingPane.stories.svelte.d.ts → date/DateRangeField.stories.svelte.d.ts} +4 -4
  144. package/dist/components/date/DateRangeField.svelte +2 -1
  145. package/dist/components/date/theme.d.ts +73 -4
  146. package/dist/components/date/theme.js +95 -26
  147. package/dist/components/date/types.d.ts +5 -0
  148. package/dist/components/forms/checkbox/Checkbox.svelte +7 -9
  149. package/dist/components/forms/checkbox/theme.d.ts +8 -8
  150. package/dist/components/forms/checkbox/theme.js +31 -9
  151. package/dist/components/forms/command/theme.d.ts +35 -35
  152. package/dist/components/forms/pin/theme.d.ts +2 -2
  153. package/dist/components/forms/radio-group/theme.d.ts +2 -2
  154. package/dist/components/forms/search/theme.d.ts +8 -8
  155. package/dist/components/forms/select/Select.svelte +3 -2
  156. package/dist/components/forms/select/theme.d.ts +26 -2
  157. package/dist/components/forms/select/theme.js +56 -22
  158. package/dist/components/forms/slider/theme.d.ts +20 -20
  159. package/dist/components/forms/switch/theme.d.ts +2 -2
  160. package/dist/components/forms/textfield/Textfield.stories.svelte +22 -0
  161. package/dist/components/forms/textfield/Textfield.svelte +10 -1
  162. package/dist/components/forms/textfield/theme.d.ts +44 -2
  163. package/dist/components/forms/textfield/theme.js +56 -16
  164. package/dist/components/forms/toggle-group/ToggleGroup.svelte +2 -2
  165. package/dist/components/forms/toggle-group/ToggleGroup.svelte.d.ts +2 -2
  166. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte +1 -1
  167. package/dist/components/forms/toggle-group/ToggleGroupItem.svelte.d.ts +1 -1
  168. package/dist/components/forms/toggle-group/theme.d.ts +16 -16
  169. package/dist/components/forms/toggle-group/types.d.ts +2 -2
  170. package/dist/components/forms/tooltip/Tooltip.svelte +1 -1
  171. package/dist/components/forms/tooltip/theme.d.ts +2 -2
  172. package/dist/components/index.d.ts +1 -0
  173. package/dist/components/index.js +1 -0
  174. package/dist/components/misc/Avatar.stories.svelte +8 -0
  175. package/dist/components/misc/Avatar.svelte +35 -10
  176. package/dist/components/misc/DicebearAvatarBuilder.d.ts +59 -0
  177. package/dist/components/misc/DicebearAvatarBuilder.js +115 -0
  178. package/dist/components/misc/ThemeSettings.svelte +1 -1
  179. package/dist/components/misc/ThemeSwitcher.svelte +2 -2
  180. package/dist/components/misc/dicebearStyles.d.ts +21 -0
  181. package/dist/components/misc/dicebearStyles.js +169 -0
  182. package/dist/components/misc/index.d.ts +3 -0
  183. package/dist/components/misc/index.js +3 -0
  184. package/dist/components/misc/materialAvatarPalette.d.ts +6 -0
  185. package/dist/components/misc/materialAvatarPalette.js +44 -0
  186. package/dist/components/misc/theme.d.ts +20 -2
  187. package/dist/components/misc/theme.js +7 -1
  188. package/dist/components/misc/types.d.ts +20 -2
  189. package/dist/components/nav/appbar/AppBar.stories.svelte +1 -1
  190. package/dist/components/nav/appbar/AppBar.svelte +46 -15
  191. package/dist/components/nav/appbar/AppBar.svelte.d.ts +5 -0
  192. package/dist/components/nav/appbar/theme.d.ts +20 -14
  193. package/dist/components/nav/appbar/theme.js +11 -7
  194. package/dist/components/nav/appbar/types.d.ts +3 -1
  195. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +50 -0
  196. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte.d.ts +19 -0
  197. package/dist/components/nav/breadcrumb/Breadcrumb.svelte +46 -0
  198. package/dist/components/nav/breadcrumb/Breadcrumb.svelte.d.ts +13 -0
  199. package/dist/components/nav/breadcrumb/index.d.ts +3 -0
  200. package/dist/components/nav/breadcrumb/index.js +6 -0
  201. package/dist/components/nav/breadcrumb/theme.d.ts +84 -0
  202. package/dist/components/nav/breadcrumb/theme.js +35 -0
  203. package/dist/components/nav/breadcrumb/types.d.ts +14 -0
  204. package/dist/components/nav/breadcrumb/types.js +1 -0
  205. package/dist/components/nav/index.d.ts +1 -0
  206. package/dist/components/nav/index.js +1 -0
  207. package/dist/components/nav/navbar/theme.d.ts +19 -19
  208. package/dist/components/nav/rail/Rail.stories.svelte +1 -5
  209. package/dist/components/nav/rail/Rail.svelte +3 -25
  210. package/dist/components/nav/rail/theme.d.ts +4 -4
  211. package/dist/components/nav/rail/types.d.ts +0 -5
  212. package/dist/components/nav/tabs/TabHolder.svelte +2 -1
  213. package/dist/components/nav/tabs/theme.d.ts +21 -21
  214. package/dist/components/nav/tabs/theme.js +6 -0
  215. package/dist/components/nav/tabs/types.d.ts +2 -2
  216. package/dist/components/pill/theme.d.ts +35 -35
  217. package/dist/components/snackbar/theme.d.ts +8 -8
  218. package/dist/components/table/Table.stories.svelte +267 -0
  219. package/dist/components/table/Table.stories.svelte.d.ts +19 -0
  220. package/dist/components/table/Table.svelte +1 -1
  221. package/dist/components/table/TableBody.svelte +16 -3
  222. package/dist/components/table/TableBody.svelte.d.ts +5 -1
  223. package/dist/components/table/TableRow.svelte +1 -1
  224. package/dist/components/table/theme.d.ts +2 -2
  225. package/dist/components/table/theme.js +2 -2
  226. package/dist/components/table/types.d.ts +7 -0
  227. package/dist/components/time/theme.d.ts +29 -29
  228. package/dist/components/toolbar/Toolbar.stories.svelte +71 -0
  229. package/dist/components/toolbar/Toolbar.stories.svelte.d.ts +19 -0
  230. package/dist/components/toolbar/Toolbar.svelte +19 -3
  231. package/dist/components/toolbar/Toolbar.svelte.d.ts +8 -2
  232. package/dist/components/toolbar/ToolbarButton.svelte +28 -4
  233. package/dist/components/toolbar/ToolbarDivider.svelte +4 -3
  234. package/dist/components/toolbar/ToolbarGroup.svelte +7 -2
  235. package/dist/components/toolbar/ToolbarGroupItem.svelte +29 -4
  236. package/dist/components/toolbar/ToolbarSection.svelte +35 -0
  237. package/dist/components/toolbar/ToolbarSection.svelte.d.ts +9 -0
  238. package/dist/components/toolbar/ToolbarSpacer.svelte +18 -0
  239. package/dist/components/toolbar/ToolbarSpacer.svelte.d.ts +9 -0
  240. package/dist/components/toolbar/index.d.ts +2 -0
  241. package/dist/components/toolbar/index.js +2 -0
  242. package/dist/components/toolbar/theme.d.ts +36 -21
  243. package/dist/components/toolbar/theme.js +27 -11
  244. package/dist/components/toolbar/types.d.ts +37 -4
  245. package/dist/components/typography/body/theme.d.ts +14 -14
  246. package/dist/components/typography/display/theme.d.ts +14 -14
  247. package/dist/components/typography/headline/theme.d.ts +14 -14
  248. package/dist/components/typography/kbd/Kbd.stories.svelte +1 -1
  249. package/dist/components/typography/kbd/theme.d.ts +8 -8
  250. package/dist/components/typography/label/theme.d.ts +14 -14
  251. package/dist/components/typography/title/theme.d.ts +14 -14
  252. package/dist/styles/component.css +126 -4
  253. package/dist/styles/motion.css +6 -3
  254. package/dist/utils/Layer.svelte +7 -3
  255. package/dist/utils/Theme.svelte +20 -20
  256. package/dist/utils/ThemeScript.svelte +1 -1
  257. package/dist/utils/icon/theme.d.ts +14 -14
  258. package/dist/utils/theme.svelte.js +1 -1
  259. package/package.json +39 -38
  260. package/bin/install-skill.js +0 -29
  261. package/dist/components/buttons/button-group/ButtonGroupItem.svelte +0 -41
  262. package/dist/components/buttons/button-group/ButtonGroupItem.svelte.d.ts +0 -8
  263. package/dist/components/buttons/connected/ConnectedButtons.svelte +0 -14
  264. package/dist/components/buttons/connected/ConnectedButtons.svelte.d.ts +0 -8
  265. package/dist/components/containers/menu-item/MenuItem.svelte +0 -74
  266. package/dist/components/containers/merger/InputMerger.svelte +0 -24
  267. package/dist/components/containers/merger/InputMerger.svelte.d.ts +0 -14
  268. package/dist/components/containers/merger/index.d.ts +0 -2
  269. package/dist/components/containers/merger/theme.d.ts +0 -1
  270. package/dist/components/containers/merger/theme.js +0 -4
  271. package/dist/components/containers/panes/SinglePane.stories.svelte +0 -67
  272. package/dist/components/containers/panes/SinglePane.svelte +0 -32
  273. package/dist/components/containers/panes/SinglePane.svelte.d.ts +0 -5
  274. package/dist/components/containers/panes/SplitPane.stories.svelte +0 -124
  275. package/dist/components/containers/panes/SplitPane.svelte +0 -144
  276. package/dist/components/containers/panes/SplitPane.svelte.d.ts +0 -8
  277. package/dist/components/containers/panes/SupportingPane.stories.svelte +0 -113
  278. package/dist/components/containers/panes/SupportingPane.svelte +0 -175
  279. package/dist/components/containers/panes/SupportingPane.svelte.d.ts +0 -9
  280. package/dist/components/containers/panes/index.d.ts +0 -5
  281. package/dist/components/containers/panes/theme.d.ts +0 -490
  282. package/dist/components/containers/panes/theme.js +0 -185
  283. package/dist/components/containers/panes/types.d.ts +0 -108
  284. package/dist/components/nav/rail/RailNavContext.svelte +0 -14
  285. package/dist/components/nav/rail/RailNavContext.svelte.d.ts +0 -8
  286. /package/dist/components/{containers/menu-item → buttons/split-button}/types.js +0 -0
  287. /package/dist/components/{containers/panes → chips}/types.js +0 -0
  288. /package/dist/components/containers/{menu-item → menu/menu-item}/index.d.ts +0 -0
  289. /package/dist/components/containers/{menu-item → menu/menu-item}/index.js +0 -0
@@ -2,16 +2,16 @@ import { type VariantProps } from 'tailwind-variants';
2
2
  export type LinkPreviewVariants = VariantProps<typeof linkPreview>;
3
3
  export declare const linkPreview: import("tailwind-variants").TVReturnType<{
4
4
  [key: string]: {
5
- [key: string]: import("tailwind-merge").ClassNameValue | {
6
- base?: import("tailwind-merge").ClassNameValue;
7
- content?: import("tailwind-merge").ClassNameValue;
5
+ [key: string]: import("tailwind-variants").ClassValue | {
6
+ base?: import("tailwind-variants").ClassValue;
7
+ content?: import("tailwind-variants").ClassValue;
8
8
  };
9
9
  };
10
10
  } | {
11
11
  [x: string]: {
12
- [x: string]: import("tailwind-merge").ClassNameValue | {
13
- base?: import("tailwind-merge").ClassNameValue;
14
- content?: import("tailwind-merge").ClassNameValue;
12
+ [x: string]: import("tailwind-variants").ClassValue | {
13
+ base?: import("tailwind-variants").ClassValue;
14
+ content?: import("tailwind-variants").ClassValue;
15
15
  };
16
16
  };
17
17
  } | {}, {
@@ -19,15 +19,15 @@ export declare const linkPreview: import("tailwind-variants").TVReturnType<{
19
19
  content: string;
20
20
  }, undefined, {
21
21
  [key: string]: {
22
- [key: string]: import("tailwind-merge").ClassNameValue | {
23
- base?: import("tailwind-merge").ClassNameValue;
24
- content?: import("tailwind-merge").ClassNameValue;
22
+ [key: string]: import("tailwind-variants").ClassValue | {
23
+ base?: import("tailwind-variants").ClassValue;
24
+ content?: import("tailwind-variants").ClassValue;
25
25
  };
26
26
  };
27
27
  } | {}, {
28
28
  base: string;
29
29
  content: string;
30
- }, import("tailwind-variants").TVReturnType<unknown, {
30
+ }, import("tailwind-variants").TVReturnTypeLike<unknown, {
31
31
  base: string;
32
32
  content: string;
33
- }, undefined, unknown, unknown, undefined>>;
33
+ }>>;
@@ -1,8 +1,8 @@
1
1
  export declare const listiem: import("tailwind-variants").TVReturnType<{
2
2
  lines: {
3
- 1: string;
4
- 2: string;
5
- 3: string;
3
+ 1: "h-14";
4
+ 2: "h-18";
5
+ 3: "h-22";
6
6
  };
7
7
  selected: {
8
8
  true: {
@@ -10,7 +10,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
10
10
  headline: string;
11
11
  trailing: string;
12
12
  };
13
- false: string;
13
+ false: "";
14
14
  };
15
15
  }, {
16
16
  base: string;
@@ -22,9 +22,9 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
22
22
  trailing: string;
23
23
  }, undefined, {
24
24
  lines: {
25
- 1: string;
26
- 2: string;
27
- 3: string;
25
+ 1: "h-14";
26
+ 2: "h-18";
27
+ 3: "h-22";
28
28
  };
29
29
  selected: {
30
30
  true: {
@@ -32,7 +32,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
32
32
  headline: string;
33
33
  trailing: string;
34
34
  };
35
- false: string;
35
+ false: "";
36
36
  };
37
37
  }, {
38
38
  base: string;
@@ -42,11 +42,11 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
42
42
  headline: string;
43
43
  supporting: string;
44
44
  trailing: string;
45
- }, import("tailwind-variants").TVReturnType<{
45
+ }, import("tailwind-variants").TVReturnTypeLike<{
46
46
  lines: {
47
- 1: string;
48
- 2: string;
49
- 3: string;
47
+ 1: "h-14";
48
+ 2: "h-18";
49
+ 3: "h-22";
50
50
  };
51
51
  selected: {
52
52
  true: {
@@ -54,7 +54,7 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
54
54
  headline: string;
55
55
  trailing: string;
56
56
  };
57
- false: string;
57
+ false: "";
58
58
  };
59
59
  }, {
60
60
  base: string;
@@ -64,4 +64,4 @@ export declare const listiem: import("tailwind-variants").TVReturnType<{
64
64
  headline: string;
65
65
  supporting: string;
66
66
  trailing: string;
67
- }, undefined, unknown, unknown, undefined>>;
67
+ }>>;
@@ -7,7 +7,7 @@ export const listiem = tv({
7
7
  overline: 'md-sys-typescale-label-small line-clamp-1',
8
8
  headline: 'text-md-sys-color-on-surface md-sys-typescale-body-large line-clamp-1',
9
9
  supporting: 'md-sys-typescale-body-medium line-clamp-2',
10
- trailing: 'size-6 text-[24px] inline-flex items-start ml-auto'
10
+ trailing: 'inline-flex ml-auto'
11
11
  },
12
12
  variants: {
13
13
  lines: {
@@ -7,7 +7,12 @@
7
7
  <script module lang="ts">
8
8
  import { defineMeta } from '@storybook/addon-svelte-csf';
9
9
  import Menu from './Menu.svelte';
10
- import MenuItem from '../menu-item/MenuItem.svelte';
10
+ import MenuItem from './menu-item/MenuItem.svelte';
11
+ import MenuGroup from './MenuGroup.svelte';
12
+ import MenuRadioGroup from './MenuRadioGroup.svelte';
13
+ import MenuRadioItem from './MenuRadioItem.svelte';
14
+ import MenuCheckboxItem from './MenuCheckboxItem.svelte';
15
+ import MenuSub from './MenuSub.svelte';
11
16
  import ButtonIcon from '../../buttons/ButtonIcon.svelte';
12
17
  import { Divider } from '../../../index.js';
13
18
 
@@ -25,6 +30,14 @@
25
30
  });
26
31
  </script>
27
32
 
33
+ <script lang="ts">
34
+ let sortBy = $state('name');
35
+ let showHidden = $state(true);
36
+ let showExtensions = $state(false);
37
+ let kitchenSinkSort = $state('date');
38
+ let kitchenSinkWordWrap = $state(true);
39
+ </script>
40
+
28
41
  <Story name="Playground">
29
42
  {#snippet template(args)}
30
43
  <div class="p-6">
@@ -40,8 +53,8 @@
40
53
  <Story name="With Custom Trigger" asChild>
41
54
  <div class="p-6">
42
55
  <Menu align="end">
43
- {#snippet trigger()}
44
- <ButtonIcon iconProps={{ name: 'more_vert' }} variant="text" />
56
+ {#snippet trigger(triggerProps)}
57
+ <ButtonIcon iconProps={{ name: 'more_vert' }} variant="text" {...triggerProps} />
45
58
  {/snippet}
46
59
  <MenuItem iconProps={{ name: 'edit' }}>Edit</MenuItem>
47
60
  <MenuItem iconProps={{ name: 'archive' }} helper="Move to archive folder">Archive</MenuItem>
@@ -60,3 +73,92 @@
60
73
  </Menu>
61
74
  </div>
62
75
  </Story>
76
+
77
+ <Story name="With Groups" asChild>
78
+ <div class="p-6">
79
+ <Menu label="Sort by">
80
+ <MenuGroup heading="Name">
81
+ <MenuItem>A to Z</MenuItem>
82
+ <MenuItem>Z to A</MenuItem>
83
+ </MenuGroup>
84
+ <Divider class="my-1" />
85
+ <MenuGroup heading="Date">
86
+ <MenuItem>Newest first</MenuItem>
87
+ <MenuItem>Oldest first</MenuItem>
88
+ </MenuGroup>
89
+ </Menu>
90
+ </div>
91
+ </Story>
92
+
93
+ <Story name="With Checkboxes" asChild>
94
+ <div class="p-6">
95
+ <Menu label="View">
96
+ <MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
97
+ <MenuCheckboxItem bind:checked={showExtensions}>Show file extensions</MenuCheckboxItem>
98
+ <MenuCheckboxItem disabled>Show system files</MenuCheckboxItem>
99
+ </Menu>
100
+ </div>
101
+ </Story>
102
+
103
+ <Story name="With Radio Group" asChild>
104
+ <div class="p-6">
105
+ <Menu label="Sort by">
106
+ <MenuRadioGroup bind:value={sortBy}>
107
+ <MenuRadioItem value="name">Name</MenuRadioItem>
108
+ <MenuRadioItem value="date">Date modified</MenuRadioItem>
109
+ <MenuRadioItem value="size">Size</MenuRadioItem>
110
+ </MenuRadioGroup>
111
+ </Menu>
112
+ </div>
113
+ </Story>
114
+
115
+ <Story name="With Submenu" asChild>
116
+ <div class="p-6">
117
+ <Menu label="File">
118
+ <MenuItem iconProps={{ name: 'draft' }}>New</MenuItem>
119
+ <MenuItem iconProps={{ name: 'folder' }}>Open</MenuItem>
120
+ <MenuSub iconProps={{ name: 'ios_share' }}>
121
+ Share
122
+ {#snippet submenu()}
123
+ <MenuItem iconProps={{ name: 'mail' }}>Email</MenuItem>
124
+ <MenuItem iconProps={{ name: 'link' }}>Copy link</MenuItem>
125
+ <MenuSub iconProps={{ name: 'chat' }}>
126
+ Message
127
+ {#snippet submenu()}
128
+ <MenuItem>SMS</MenuItem>
129
+ <MenuItem>Direct message</MenuItem>
130
+ {/snippet}
131
+ </MenuSub>
132
+ {/snippet}
133
+ </MenuSub>
134
+ <Divider class="my-1" />
135
+ <MenuItem iconProps={{ name: 'delete' }}>Delete</MenuItem>
136
+ </Menu>
137
+ </div>
138
+ </Story>
139
+
140
+ <Story name="Kitchen Sink" asChild>
141
+ <div class="p-6">
142
+ <Menu label="Document">
143
+ <MenuGroup heading="Sort by">
144
+ <MenuRadioGroup bind:value={kitchenSinkSort}>
145
+ <MenuRadioItem value="name">Name</MenuRadioItem>
146
+ <MenuRadioItem value="date">Date modified</MenuRadioItem>
147
+ </MenuRadioGroup>
148
+ </MenuGroup>
149
+ <Divider class="my-1" />
150
+ <MenuGroup heading="View">
151
+ <MenuCheckboxItem bind:checked={kitchenSinkWordWrap}>Word wrap</MenuCheckboxItem>
152
+ </MenuGroup>
153
+ <Divider class="my-1" />
154
+ <MenuSub iconProps={{ name: 'ios_share' }}>
155
+ Share
156
+ {#snippet submenu()}
157
+ <MenuItem iconProps={{ name: 'mail' }}>Email</MenuItem>
158
+ <MenuItem iconProps={{ name: 'link' }}>Copy link</MenuItem>
159
+ {/snippet}
160
+ </MenuSub>
161
+ <MenuItem iconProps={{ name: 'delete' }} disabled>Delete</MenuItem>
162
+ </Menu>
163
+ </div>
164
+ </Story>
@@ -1,19 +1,4 @@
1
1
  import Menu from './Menu.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 Menu: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
- [evt: string]: CustomEvent<any>;
17
- }, {}, {}, string>;
18
- type Menu = InstanceType<typeof Menu>;
2
+ declare const Menu: import("svelte").Component<Record<string, never>, {}, "">;
3
+ type Menu = ReturnType<typeof Menu>;
19
4
  export default Menu;
@@ -35,22 +35,24 @@ Contrast with `MenuItem` (a single interactive row inside the panel) and
35
35
 
36
36
  <DropdownMenu.Root bind:open>
37
37
  <DropdownMenu.Trigger>
38
- {#if trigger}
39
- {@render trigger()}
40
- {:else}
41
- <Button variant="filled" type="button">{label}</Button>
42
- {/if}
38
+ {#snippet child({ props })}
39
+ {#if trigger}
40
+ {@render trigger(props)}
41
+ {:else}
42
+ <Button variant="filled" {...props}>{label}</Button>
43
+ {/if}
44
+ {/snippet}
43
45
  </DropdownMenu.Trigger>
44
46
 
45
47
  <DropdownMenu.Portal>
46
- <DropdownMenu.Content forceMount {align} sideOffset={4} class="z-[100]">
48
+ <DropdownMenu.Content forceMount {align} sideOffset={4} class="z-100">
47
49
  {#snippet child({ wrapperProps, props, open: isOpen })}
48
50
  {#if isOpen}
49
51
  <div {...wrapperProps} class={wrapperProps.class as any}>
50
52
  <div
51
53
  {...props}
52
54
  class={clsx(
53
- 'bg-md-sys-color-surface-container-high shadow-elevation-3 ring-md-sys-color-outline/10 max-w-sm min-w-48 overflow-hidden rounded-xl py-2 ring-1',
55
+ 'bg-md-sys-color-surface-container-high shadow-elevation-3 ring-md-sys-color-outline/10 max-w-sm min-w-48 gap-1 overflow-y-auto rounded-lg px-2 py-1',
54
56
  props.class as any,
55
57
  contentClass
56
58
  )}
@@ -0,0 +1,55 @@
1
+ <!--
2
+ @component
3
+ A toggleable option inside a `Menu`.
4
+
5
+ Wraps bits-ui's `DropdownMenu.CheckboxItem`. Unlike `MenuRadioItem`, its
6
+ checked state is independent of any sibling item, so any number of
7
+ `MenuCheckboxItem`s can be checked at once. Renders a leading checkbox
8
+ indicator that fills in when checked.
9
+
10
+ @example
11
+ ```svelte
12
+ <script>
13
+ let showHidden = $state(false);
14
+ </script>
15
+
16
+ <Menu label="View">
17
+ <MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
18
+ </Menu>
19
+ ```
20
+
21
+ @see https://m3.material.io/components/menus/guidelines
22
+ -->
23
+ <script lang="ts">
24
+ import { DropdownMenu } from 'bits-ui';
25
+ import Icon from '../../../utils/icon/Icon.svelte';
26
+ import Layer from '../../../utils/Layer.svelte';
27
+ import { menu as menuCls } from './theme.js';
28
+ import type { MenuCheckboxItemProps } from './types.js';
29
+
30
+ let {
31
+ checked = $bindable(false),
32
+ onCheckedChange,
33
+ disabled = false,
34
+ closeOnSelect = true,
35
+ helper,
36
+ children,
37
+ class: className
38
+ }: MenuCheckboxItemProps = $props();
39
+ </script>
40
+
41
+ <DropdownMenu.CheckboxItem bind:checked {onCheckedChange} {disabled} {closeOnSelect}>
42
+ {#snippet child({ props, checked })}
43
+ {@const cls = menuCls({ checked })}
44
+ <div {...props} class={cls.item({ class: className })}>
45
+ <Icon name={checked ? 'check_box' : 'check_box_outline_blank'} class={cls.indicator()} />
46
+ <div class={cls.itemContent()}>
47
+ {@render children()}
48
+ {#if helper}
49
+ <span class={cls.helper()}>{helper}</span>
50
+ {/if}
51
+ </div>
52
+ <Layer />
53
+ </div>
54
+ {/snippet}
55
+ </DropdownMenu.CheckboxItem>
@@ -0,0 +1,25 @@
1
+ import type { MenuCheckboxItemProps } from './types.js';
2
+ /**
3
+ * A toggleable option inside a `Menu`.
4
+ *
5
+ * Wraps bits-ui's `DropdownMenu.CheckboxItem`. Unlike `MenuRadioItem`, its
6
+ * checked state is independent of any sibling item, so any number of
7
+ * `MenuCheckboxItem`s can be checked at once. Renders a leading checkbox
8
+ * indicator that fills in when checked.
9
+ *
10
+ * @example
11
+ * ```svelte
12
+ * <script>
13
+ * let showHidden = $state(false);
14
+ * </script>
15
+ *
16
+ * <Menu label="View">
17
+ * <MenuCheckboxItem bind:checked={showHidden}>Show hidden files</MenuCheckboxItem>
18
+ * </Menu>
19
+ * ```
20
+ *
21
+ * @see https://m3.material.io/components/menus/guidelines
22
+ */
23
+ declare const MenuCheckboxItem: import("svelte").Component<MenuCheckboxItemProps, {}, "checked">;
24
+ type MenuCheckboxItem = ReturnType<typeof MenuCheckboxItem>;
25
+ export default MenuCheckboxItem;
@@ -0,0 +1,43 @@
1
+ <!--
2
+ @component
3
+ Groups related rows inside a `Menu` under an optional heading.
4
+
5
+ Wraps bits-ui's `DropdownMenu.Group` (and `DropdownMenu.GroupHeading` when
6
+ `heading` is supplied) so screen readers announce the rows as a labelled
7
+ set. Purely organizational — it renders no interactive behavior of its own.
8
+
9
+ @example
10
+ ```svelte
11
+ <Menu label="Sort by">
12
+ <MenuGroup heading="Name">
13
+ <MenuItem>A to Z</MenuItem>
14
+ <MenuItem>Z to A</MenuItem>
15
+ </MenuGroup>
16
+ <Divider class="my-1" />
17
+ <MenuGroup heading="Date">
18
+ <MenuItem>Newest first</MenuItem>
19
+ <MenuItem>Oldest first</MenuItem>
20
+ </MenuGroup>
21
+ </Menu>
22
+ ```
23
+
24
+ @see https://m3.material.io/components/menus/guidelines
25
+ -->
26
+ <script lang="ts">
27
+ import { DropdownMenu } from 'bits-ui';
28
+ import { menu as menuCls } from './theme.js';
29
+ import type { MenuGroupProps } from './types.js';
30
+
31
+ let { heading, children, class: className }: MenuGroupProps = $props();
32
+
33
+ const cls = $derived(menuCls());
34
+ </script>
35
+
36
+ <DropdownMenu.Group class={className}>
37
+ {#if heading}
38
+ <DropdownMenu.GroupHeading class={cls.groupHeading()}>
39
+ {heading}
40
+ </DropdownMenu.GroupHeading>
41
+ {/if}
42
+ {@render children()}
43
+ </DropdownMenu.Group>
@@ -0,0 +1,28 @@
1
+ import type { MenuGroupProps } from './types.js';
2
+ /**
3
+ * Groups related rows inside a `Menu` under an optional heading.
4
+ *
5
+ * Wraps bits-ui's `DropdownMenu.Group` (and `DropdownMenu.GroupHeading` when
6
+ * `heading` is supplied) so screen readers announce the rows as a labelled
7
+ * set. Purely organizational — it renders no interactive behavior of its own.
8
+ *
9
+ * @example
10
+ * ```svelte
11
+ * <Menu label="Sort by">
12
+ * <MenuGroup heading="Name">
13
+ * <MenuItem>A to Z</MenuItem>
14
+ * <MenuItem>Z to A</MenuItem>
15
+ * </MenuGroup>
16
+ * <Divider class="my-1" />
17
+ * <MenuGroup heading="Date">
18
+ * <MenuItem>Newest first</MenuItem>
19
+ * <MenuItem>Oldest first</MenuItem>
20
+ * </MenuGroup>
21
+ * </Menu>
22
+ * ```
23
+ *
24
+ * @see https://m3.material.io/components/menus/guidelines
25
+ */
26
+ declare const MenuGroup: import("svelte").Component<MenuGroupProps, {}, "">;
27
+ type MenuGroup = ReturnType<typeof MenuGroup>;
28
+ export default MenuGroup;
@@ -0,0 +1,39 @@
1
+ <!--
2
+ @component
3
+ Restricts a set of `MenuRadioItem`s to a single selected value at a time.
4
+
5
+ Wraps bits-ui's `DropdownMenu.RadioGroup`. Bind `value` to drive the
6
+ selection externally, or leave it uncontrolled and read `onValueChange`.
7
+
8
+ @example
9
+ ```svelte
10
+ <script>
11
+ let sortBy = $state('name');
12
+ </script>
13
+
14
+ <Menu label="Sort by">
15
+ <MenuRadioGroup bind:value={sortBy}>
16
+ <MenuRadioItem value="name">Name</MenuRadioItem>
17
+ <MenuRadioItem value="date">Date modified</MenuRadioItem>
18
+ <MenuRadioItem value="size">Size</MenuRadioItem>
19
+ </MenuRadioGroup>
20
+ </Menu>
21
+ ```
22
+
23
+ @see https://m3.material.io/components/menus/guidelines
24
+ -->
25
+ <script lang="ts">
26
+ import { DropdownMenu } from 'bits-ui';
27
+ import type { MenuRadioGroupProps } from './types.js';
28
+
29
+ let {
30
+ value = $bindable(''),
31
+ onValueChange,
32
+ children,
33
+ class: className
34
+ }: MenuRadioGroupProps = $props();
35
+ </script>
36
+
37
+ <DropdownMenu.RadioGroup bind:value {onValueChange} class={className}>
38
+ {@render children()}
39
+ </DropdownMenu.RadioGroup>
@@ -0,0 +1,27 @@
1
+ import type { MenuRadioGroupProps } from './types.js';
2
+ /**
3
+ * Restricts a set of `MenuRadioItem`s to a single selected value at a time.
4
+ *
5
+ * Wraps bits-ui's `DropdownMenu.RadioGroup`. Bind `value` to drive the
6
+ * selection externally, or leave it uncontrolled and read `onValueChange`.
7
+ *
8
+ * @example
9
+ * ```svelte
10
+ * <script>
11
+ * let sortBy = $state('name');
12
+ * </script>
13
+ *
14
+ * <Menu label="Sort by">
15
+ * <MenuRadioGroup bind:value={sortBy}>
16
+ * <MenuRadioItem value="name">Name</MenuRadioItem>
17
+ * <MenuRadioItem value="date">Date modified</MenuRadioItem>
18
+ * <MenuRadioItem value="size">Size</MenuRadioItem>
19
+ * </MenuRadioGroup>
20
+ * </Menu>
21
+ * ```
22
+ *
23
+ * @see https://m3.material.io/components/menus/guidelines
24
+ */
25
+ declare const MenuRadioGroup: import("svelte").Component<MenuRadioGroupProps, {}, "value">;
26
+ type MenuRadioGroup = ReturnType<typeof MenuRadioGroup>;
27
+ export default MenuRadioGroup;
@@ -0,0 +1,49 @@
1
+ <!--
2
+ @component
3
+ A single selectable option inside a `MenuRadioGroup`.
4
+
5
+ Wraps bits-ui's `DropdownMenu.RadioItem`. Only one radio item within the
6
+ same `MenuRadioGroup` can be checked at a time; selecting one unchecks any
7
+ previously-checked sibling. Renders a leading radio indicator that fills
8
+ in when selected.
9
+
10
+ Contrast with `MenuCheckboxItem`, whose checked state is independent of any
11
+ sibling item.
12
+
13
+ @see https://m3.material.io/components/menus/guidelines
14
+ -->
15
+ <script lang="ts">
16
+ import { DropdownMenu } from 'bits-ui';
17
+ import Icon from '../../../utils/icon/Icon.svelte';
18
+ import Layer from '../../../utils/Layer.svelte';
19
+ import { menu as menuCls } from './theme.js';
20
+ import type { MenuRadioItemProps } from './types.js';
21
+
22
+ let {
23
+ value,
24
+ disabled = false,
25
+ closeOnSelect = true,
26
+ helper,
27
+ children,
28
+ class: className
29
+ }: MenuRadioItemProps = $props();
30
+ </script>
31
+
32
+ <DropdownMenu.RadioItem {value} {disabled} {closeOnSelect}>
33
+ {#snippet child({ props, checked })}
34
+ {@const cls = menuCls({ checked })}
35
+ <div {...props} class={cls.item({ class: className })}>
36
+ <Icon
37
+ name={checked ? 'radio_button_checked' : 'radio_button_unchecked'}
38
+ class={cls.indicator()}
39
+ />
40
+ <div class={cls.itemContent()}>
41
+ {@render children()}
42
+ {#if helper}
43
+ <span class={cls.helper()}>{helper}</span>
44
+ {/if}
45
+ </div>
46
+ <Layer />
47
+ </div>
48
+ {/snippet}
49
+ </DropdownMenu.RadioItem>
@@ -0,0 +1,17 @@
1
+ import type { MenuRadioItemProps } from './types.js';
2
+ /**
3
+ * A single selectable option inside a `MenuRadioGroup`.
4
+ *
5
+ * Wraps bits-ui's `DropdownMenu.RadioItem`. Only one radio item within the
6
+ * same `MenuRadioGroup` can be checked at a time; selecting one unchecks any
7
+ * previously-checked sibling. Renders a leading radio indicator that fills
8
+ * in when selected.
9
+ *
10
+ * Contrast with `MenuCheckboxItem`, whose checked state is independent of any
11
+ * sibling item.
12
+ *
13
+ * @see https://m3.material.io/components/menus/guidelines
14
+ */
15
+ declare const MenuRadioItem: import("svelte").Component<MenuRadioItemProps, {}, "">;
16
+ type MenuRadioItem = ReturnType<typeof MenuRadioItem>;
17
+ export default MenuRadioItem;