@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
@@ -7,23 +7,23 @@ export type ButtonIconVariants = VariantProps<typeof buttonIcon>;
7
7
  export type FABMenuItemVariants = VariantProps<typeof fabMenuItem>;
8
8
  export declare const button: import("tailwind-variants").TVReturnType<{
9
9
  variant: {
10
- elevated: string;
11
- filled: string;
12
- tonal: string;
13
- outlined: string;
14
- text: string;
15
- bare: string;
10
+ elevated: "";
11
+ filled: "";
12
+ tonal: "";
13
+ outlined: "";
14
+ text: "";
15
+ bare: "";
16
16
  };
17
17
  color: {
18
- default: string;
19
- primary: string;
20
- secondary: string;
21
- tertiary: string;
22
- error: string;
18
+ default: "";
19
+ primary: "";
20
+ secondary: "";
21
+ tertiary: "";
22
+ error: "";
23
23
  };
24
24
  usage: {
25
- selection: string;
26
- default: string;
25
+ selection: "";
26
+ default: "";
27
27
  };
28
28
  size: {
29
29
  xs: {
@@ -48,35 +48,35 @@ export declare const button: import("tailwind-variants").TVReturnType<{
48
48
  };
49
49
  };
50
50
  shape: {
51
- round: string;
52
- square: string;
51
+ round: "";
52
+ square: "[--btn-shape-override:0.375rem]";
53
53
  };
54
54
  selected: {
55
- true: string;
56
- false: string;
55
+ true: "";
56
+ false: "";
57
57
  };
58
58
  }, {
59
59
  base: string;
60
60
  icon: string;
61
61
  }, undefined, {
62
62
  variant: {
63
- elevated: string;
64
- filled: string;
65
- tonal: string;
66
- outlined: string;
67
- text: string;
68
- bare: string;
63
+ elevated: "";
64
+ filled: "";
65
+ tonal: "";
66
+ outlined: "";
67
+ text: "";
68
+ bare: "";
69
69
  };
70
70
  color: {
71
- default: string;
72
- primary: string;
73
- secondary: string;
74
- tertiary: string;
75
- error: string;
71
+ default: "";
72
+ primary: "";
73
+ secondary: "";
74
+ tertiary: "";
75
+ error: "";
76
76
  };
77
77
  usage: {
78
- selection: string;
79
- default: string;
78
+ selection: "";
79
+ default: "";
80
80
  };
81
81
  size: {
82
82
  xs: {
@@ -101,35 +101,35 @@ export declare const button: import("tailwind-variants").TVReturnType<{
101
101
  };
102
102
  };
103
103
  shape: {
104
- round: string;
105
- square: string;
104
+ round: "";
105
+ square: "[--btn-shape-override:0.375rem]";
106
106
  };
107
107
  selected: {
108
- true: string;
109
- false: string;
108
+ true: "";
109
+ false: "";
110
110
  };
111
111
  }, {
112
112
  base: string;
113
113
  icon: string;
114
- }, import("tailwind-variants").TVReturnType<{
114
+ }, import("tailwind-variants").TVReturnTypeLike<{
115
115
  variant: {
116
- elevated: string;
117
- filled: string;
118
- tonal: string;
119
- outlined: string;
120
- text: string;
121
- bare: string;
116
+ elevated: "";
117
+ filled: "";
118
+ tonal: "";
119
+ outlined: "";
120
+ text: "";
121
+ bare: "";
122
122
  };
123
123
  color: {
124
- default: string;
125
- primary: string;
126
- secondary: string;
127
- tertiary: string;
128
- error: string;
124
+ default: "";
125
+ primary: "";
126
+ secondary: "";
127
+ tertiary: "";
128
+ error: "";
129
129
  };
130
130
  usage: {
131
- selection: string;
132
- default: string;
131
+ selection: "";
132
+ default: "";
133
133
  };
134
134
  size: {
135
135
  xs: {
@@ -154,32 +154,32 @@ export declare const button: import("tailwind-variants").TVReturnType<{
154
154
  };
155
155
  };
156
156
  shape: {
157
- round: string;
158
- square: string;
157
+ round: "";
158
+ square: "[--btn-shape-override:0.375rem]";
159
159
  };
160
160
  selected: {
161
- true: string;
162
- false: string;
161
+ true: "";
162
+ false: "";
163
163
  };
164
164
  }, {
165
165
  base: string;
166
166
  icon: string;
167
- }, undefined, unknown, unknown, undefined>>;
167
+ }>>;
168
168
  export declare const buttonIcon: import("tailwind-variants").TVReturnType<{
169
169
  variant: {
170
- elevated: string;
171
- filled: string;
172
- tonal: string;
173
- outlined: string;
174
- text: string;
175
- bare: string;
170
+ elevated: "";
171
+ filled: "";
172
+ tonal: "";
173
+ outlined: "";
174
+ text: "";
175
+ bare: "";
176
176
  };
177
177
  color: {
178
- default: string;
179
- primary: string;
180
- secondary: string;
181
- tertiary: string;
182
- error: string;
178
+ default: "";
179
+ primary: "";
180
+ secondary: "";
181
+ tertiary: "";
182
+ error: "";
183
183
  };
184
184
  size: {
185
185
  xs: {
@@ -204,40 +204,40 @@ export declare const buttonIcon: import("tailwind-variants").TVReturnType<{
204
204
  };
205
205
  };
206
206
  width: {
207
- narrow: string;
208
- wide: string;
209
- default: string;
207
+ narrow: "";
208
+ wide: "";
209
+ default: "aspect-square";
210
210
  };
211
211
  shape: {
212
- round: string;
213
- square: string;
212
+ round: "";
213
+ square: "[--btn-shape-override:0.75rem]";
214
214
  };
215
215
  selected: {
216
- true: string;
217
- false: string;
216
+ true: "";
217
+ false: "";
218
218
  };
219
219
  variation: {
220
- toggle: string;
221
- default: string;
220
+ toggle: "";
221
+ default: "";
222
222
  };
223
223
  }, {
224
224
  base: string;
225
225
  icon: string;
226
226
  }, undefined, {
227
227
  variant: {
228
- elevated: string;
229
- filled: string;
230
- tonal: string;
231
- outlined: string;
232
- text: string;
233
- bare: string;
228
+ elevated: "";
229
+ filled: "";
230
+ tonal: "";
231
+ outlined: "";
232
+ text: "";
233
+ bare: "";
234
234
  };
235
235
  color: {
236
- default: string;
237
- primary: string;
238
- secondary: string;
239
- tertiary: string;
240
- error: string;
236
+ default: "";
237
+ primary: "";
238
+ secondary: "";
239
+ tertiary: "";
240
+ error: "";
241
241
  };
242
242
  size: {
243
243
  xs: {
@@ -262,40 +262,40 @@ export declare const buttonIcon: import("tailwind-variants").TVReturnType<{
262
262
  };
263
263
  };
264
264
  width: {
265
- narrow: string;
266
- wide: string;
267
- default: string;
265
+ narrow: "";
266
+ wide: "";
267
+ default: "aspect-square";
268
268
  };
269
269
  shape: {
270
- round: string;
271
- square: string;
270
+ round: "";
271
+ square: "[--btn-shape-override:0.75rem]";
272
272
  };
273
273
  selected: {
274
- true: string;
275
- false: string;
274
+ true: "";
275
+ false: "";
276
276
  };
277
277
  variation: {
278
- toggle: string;
279
- default: string;
278
+ toggle: "";
279
+ default: "";
280
280
  };
281
281
  }, {
282
282
  base: string;
283
283
  icon: string;
284
- }, import("tailwind-variants").TVReturnType<{
284
+ }, import("tailwind-variants").TVReturnTypeLike<{
285
285
  variant: {
286
- elevated: string;
287
- filled: string;
288
- tonal: string;
289
- outlined: string;
290
- text: string;
291
- bare: string;
286
+ elevated: "";
287
+ filled: "";
288
+ tonal: "";
289
+ outlined: "";
290
+ text: "";
291
+ bare: "";
292
292
  };
293
293
  color: {
294
- default: string;
295
- primary: string;
296
- secondary: string;
297
- tertiary: string;
298
- error: string;
294
+ default: "";
295
+ primary: "";
296
+ secondary: "";
297
+ tertiary: "";
298
+ error: "";
299
299
  };
300
300
  size: {
301
301
  xs: {
@@ -320,26 +320,26 @@ export declare const buttonIcon: import("tailwind-variants").TVReturnType<{
320
320
  };
321
321
  };
322
322
  width: {
323
- narrow: string;
324
- wide: string;
325
- default: string;
323
+ narrow: "";
324
+ wide: "";
325
+ default: "aspect-square";
326
326
  };
327
327
  shape: {
328
- round: string;
329
- square: string;
328
+ round: "";
329
+ square: "[--btn-shape-override:0.75rem]";
330
330
  };
331
331
  selected: {
332
- true: string;
333
- false: string;
332
+ true: "";
333
+ false: "";
334
334
  };
335
335
  variation: {
336
- toggle: string;
337
- default: string;
336
+ toggle: "";
337
+ default: "";
338
338
  };
339
339
  }, {
340
340
  base: string;
341
341
  icon: string;
342
- }, undefined, unknown, unknown, undefined>>;
342
+ }>>;
343
343
  export declare const fab: import("tailwind-variants").TVReturnType<{
344
344
  config: {
345
345
  primary: {
@@ -359,8 +359,8 @@ export declare const fab: import("tailwind-variants").TVReturnType<{
359
359
  };
360
360
  };
361
361
  expanded: {
362
- true: string;
363
- false: string;
362
+ true: "gap-3 px-4";
363
+ false: "aspect-square";
364
364
  };
365
365
  size: {
366
366
  small: {
@@ -402,8 +402,8 @@ export declare const fab: import("tailwind-variants").TVReturnType<{
402
402
  };
403
403
  };
404
404
  expanded: {
405
- true: string;
406
- false: string;
405
+ true: "gap-3 px-4";
406
+ false: "aspect-square";
407
407
  };
408
408
  size: {
409
409
  small: {
@@ -426,7 +426,7 @@ export declare const fab: import("tailwind-variants").TVReturnType<{
426
426
  base: string;
427
427
  icon: string;
428
428
  label: string;
429
- }, import("tailwind-variants").TVReturnType<{
429
+ }, import("tailwind-variants").TVReturnTypeLike<{
430
430
  config: {
431
431
  primary: {
432
432
  base: string;
@@ -445,8 +445,8 @@ export declare const fab: import("tailwind-variants").TVReturnType<{
445
445
  };
446
446
  };
447
447
  expanded: {
448
- true: string;
449
- false: string;
448
+ true: "gap-3 px-4";
449
+ false: "aspect-square";
450
450
  };
451
451
  size: {
452
452
  small: {
@@ -469,57 +469,57 @@ export declare const fab: import("tailwind-variants").TVReturnType<{
469
469
  base: string;
470
470
  icon: string;
471
471
  label: string;
472
- }, undefined, unknown, unknown, undefined>>;
472
+ }>>;
473
473
  export declare const fabMenu: import("tailwind-variants").TVReturnType<{
474
474
  [key: string]: {
475
- [key: string]: import("tailwind-merge").ClassNameValue | {
476
- base?: import("tailwind-merge").ClassNameValue;
475
+ [key: string]: import("tailwind-variants").ClassValue | {
476
+ base?: import("tailwind-variants").ClassValue;
477
477
  };
478
478
  };
479
479
  } | {
480
480
  [x: string]: {
481
- [x: string]: import("tailwind-merge").ClassNameValue | {
482
- base?: import("tailwind-merge").ClassNameValue;
481
+ [x: string]: import("tailwind-variants").ClassValue | {
482
+ base?: import("tailwind-variants").ClassValue;
483
483
  };
484
484
  };
485
485
  } | {}, {
486
486
  base: string;
487
487
  }, undefined, {
488
488
  [key: string]: {
489
- [key: string]: import("tailwind-merge").ClassNameValue | {
490
- base?: import("tailwind-merge").ClassNameValue;
489
+ [key: string]: import("tailwind-variants").ClassValue | {
490
+ base?: import("tailwind-variants").ClassValue;
491
491
  };
492
492
  };
493
493
  } | {}, {
494
494
  base: string;
495
- }, import("tailwind-variants").TVReturnType<unknown, {
495
+ }, import("tailwind-variants").TVReturnTypeLike<unknown, {
496
496
  base: string;
497
- }, undefined, unknown, unknown, undefined>>;
497
+ }>>;
498
498
  export declare const fabMenuItem: import("tailwind-variants").TVReturnType<{
499
499
  variant: {
500
- primary: string;
501
- secondary: string;
502
- tertiary: string;
500
+ primary: "md-component-button-filled-primary";
501
+ secondary: "md-component-button-tonal-secondary";
502
+ tertiary: "md-component-button-outline-tertiary";
503
503
  };
504
504
  }, {
505
505
  base: string;
506
506
  icon: string;
507
507
  }, undefined, {
508
508
  variant: {
509
- primary: string;
510
- secondary: string;
511
- tertiary: string;
509
+ primary: "md-component-button-filled-primary";
510
+ secondary: "md-component-button-tonal-secondary";
511
+ tertiary: "md-component-button-outline-tertiary";
512
512
  };
513
513
  }, {
514
514
  base: string;
515
515
  icon: string;
516
- }, import("tailwind-variants").TVReturnType<{
516
+ }, import("tailwind-variants").TVReturnTypeLike<{
517
517
  variant: {
518
- primary: string;
519
- secondary: string;
520
- tertiary: string;
518
+ primary: "md-component-button-filled-primary";
519
+ secondary: "md-component-button-tonal-secondary";
520
+ tertiary: "md-component-button-outline-tertiary";
521
521
  };
522
522
  }, {
523
523
  base: string;
524
524
  icon: string;
525
- }, undefined, unknown, unknown, undefined>>;
525
+ }>>;
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const button = tv({
3
3
  slots: {
4
- base: 'md-component-button-base md-btn-morph group max-w-max',
4
+ base: 'md-component-button-base relative md-btn-morph group max-w-max',
5
5
  icon: 'inline-flex items-center justify-center leading-none'
6
6
  },
7
7
  variants: {
@@ -205,7 +205,7 @@ export const button = tv({
205
205
  });
206
206
  export const buttonIcon = tv({
207
207
  slots: {
208
- base: 'md-component-button-base md-btn-morph group max-w-max',
208
+ base: 'md-component-button-base relative md-btn-morph group max-w-max',
209
209
  icon: 'inline-flex items-center justify-center leading-none'
210
210
  },
211
211
  variants: {
@@ -1,6 +1,7 @@
1
1
  <script module lang="ts">
2
2
  import { defineMeta } from '@storybook/addon-svelte-csf';
3
3
  import Card from './Card.svelte';
4
+ import { Button } from '../buttons/index.js';
4
5
 
5
6
  const { Story } = defineMeta({
6
7
  title: 'Cards/Card',
@@ -24,6 +25,17 @@
24
25
  href: undefined
25
26
  }
26
27
  });
28
+
29
+ const selectableItems = [
30
+ { id: 1, title: 'Q3 roadmap', body: 'Planning doc for the next quarter.' },
31
+ { id: 2, title: 'Design review', body: 'Notes from the Tuesday sync.' },
32
+ { id: 3, title: 'Onboarding guide', body: 'Draft for new hires.' }
33
+ ];
34
+ </script>
35
+
36
+ <script lang="ts">
37
+ let items = $state(selectableItems);
38
+ let selectedId = $state<number | null>(null);
27
39
  </script>
28
40
 
29
41
  <Story name="Playground">
@@ -70,3 +82,49 @@
70
82
  </p>
71
83
  </Card>
72
84
  </Story>
85
+
86
+ <Story name="Selectable" asChild>
87
+ <div class="flex flex-wrap gap-4 p-6">
88
+ {#each items as item (item.id)}
89
+ <Card
90
+ type="outlined"
91
+ class="w-56"
92
+ selected={selectedId === item.id}
93
+ onselect={() => (selectedId = item.id)}
94
+ ondelete={() => {
95
+ items = items.filter((i) => i.id !== item.id);
96
+ if (selectedId === item.id) selectedId = null;
97
+ }}
98
+ >
99
+ <p class="md-sys-typescale-title-medium mb-1">{item.title}</p>
100
+ <p class="text-md-sys-color-on-surface-variant text-sm">{item.body}</p>
101
+ </Card>
102
+ {/each}
103
+ </div>
104
+ </Story>
105
+
106
+ <Story name="Selectable With Nested Button" asChild>
107
+ <div class="flex flex-wrap gap-4 p-6">
108
+ <Card
109
+ type="outlined"
110
+ class="w-64"
111
+ onselect={() => console.log('card selected')}
112
+ ondelete={() => console.log('card deleted')}
113
+ >
114
+ <p class="md-sys-typescale-title-medium mb-1">Card with an action</p>
115
+ <p class="text-md-sys-color-on-surface-variant mb-3 text-sm">
116
+ Clicking the card selects it. The button below calls
117
+ <code>event.stopPropagation()</code> so it doesn't also trigger selection.
118
+ </p>
119
+ <Button
120
+ variant="text"
121
+ onclick={(event: MouseEvent) => {
122
+ event.stopPropagation();
123
+ console.log('button clicked, card not selected');
124
+ }}
125
+ >
126
+ Open
127
+ </Button>
128
+ </Card>
129
+ </div>
130
+ </Story>
@@ -1,19 +1,4 @@
1
1
  import Card from './Card.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 Card: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
- [evt: string]: CustomEvent<any>;
17
- }, {}, {}, string>;
18
- type Card = InstanceType<typeof Card>;
2
+ declare const Card: import("svelte").Component<Record<string, never>, {}, "">;
3
+ type Card = ReturnType<typeof Card>;
19
4
  export default Card;
@@ -20,21 +20,89 @@ and serve as an entry point to more detailed information.
20
20
  padding = 'md',
21
21
  class: className,
22
22
  href,
23
- hoverable = !!href,
23
+ onselect,
24
+ ondelete,
25
+ onleave,
26
+ hoverable = !!href || !!onselect || !!ondelete,
27
+ selected = false,
28
+ onclick: onclickProp,
29
+ onkeydown: onkeydownProp,
30
+ onfocusout: onfocusoutProp,
24
31
  ...restProps
25
32
  }: CardProps = $props();
26
33
 
27
- const { base } = $derived(card({ type, hoverable, padding }));
34
+ const selectable = $derived(!!onselect || !!ondelete);
35
+
36
+ const { base } = $derived(card({ type, hoverable, padding, selected }));
37
+
38
+ const handleClick: (event: MouseEvent) => void = (event) => {
39
+ (onclickProp as ((event: MouseEvent) => void) | undefined)?.(event);
40
+ onselect?.();
41
+ };
42
+
43
+ const handleKeydown: (event: KeyboardEvent) => void = (event) => {
44
+ (onkeydownProp as ((event: KeyboardEvent) => void) | undefined)?.(event);
45
+ if (event.target !== event.currentTarget) return;
46
+ if (onselect && (event.key === 'Enter' || event.key === ' ')) {
47
+ event.preventDefault();
48
+ onselect();
49
+ } else if (ondelete && (event.key === 'Delete' || event.key === 'Backspace')) {
50
+ event.preventDefault();
51
+ ondelete();
52
+ }
53
+ };
54
+
55
+ const handleFocusOut: (event: FocusEvent) => void = (event) => {
56
+ (onfocusoutProp as ((event: FocusEvent) => void) | undefined)?.(event);
57
+ if (!onleave) return;
58
+ const currentTarget = event.currentTarget as HTMLElement;
59
+ const relatedTarget = event.relatedTarget as Node | null;
60
+ if (relatedTarget && currentTarget.contains(relatedTarget)) return;
61
+ onleave();
62
+ };
28
63
  </script>
29
64
 
65
+ {#snippet content()}
66
+ {#if hoverable}<Layer />{/if}
67
+ {@render children?.()}
68
+ {/snippet}
69
+
30
70
  {#if href}
31
- <a {href} class={base({ class: clsx(className) })} data-cy="m3-card" {...restProps}>
32
- {#if hoverable}<Layer />{/if}
33
- {@render children?.()}
71
+ <a
72
+ {href}
73
+ class={base({ class: clsx(className) })}
74
+ data-cy="m3-card"
75
+ tabindex={selectable ? 0 : undefined}
76
+ {...restProps}
77
+ onclick={handleClick}
78
+ onkeydown={handleKeydown}
79
+ onfocusout={handleFocusOut}
80
+ >
81
+ {@render content()}
34
82
  </a>
83
+ {:else if selectable}
84
+ <div
85
+ class={base({ class: clsx(className) })}
86
+ data-cy="m3-card"
87
+ role="button"
88
+ tabindex={0}
89
+ aria-pressed={selected}
90
+ {...restProps}
91
+ onclick={handleClick}
92
+ onkeydown={handleKeydown}
93
+ onfocusout={handleFocusOut}
94
+ >
95
+ {@render content()}
96
+ </div>
35
97
  {:else}
36
- <div class={base({ class: clsx(className) })} data-cy="m3-card" {...restProps}>
37
- {#if hoverable}<Layer />{/if}
38
- {@render children?.()}
98
+ <div
99
+ class={base({ class: clsx(className) })}
100
+ data-cy="m3-card"
101
+ {...restProps}
102
+ onclick={handleClick}
103
+ onkeydown={handleKeydown}
104
+ onfocusout={handleFocusOut}
105
+ >
106
+ {@render content()}
39
107
  </div>
40
108
  {/if}