@noxlovette/material 0.5.1 → 0.6.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 (329) hide show
  1. package/bin/material-claude-skill.js +31 -0
  2. package/claude-skill/material-design/SKILL.md +68 -0
  3. package/claude-skill/material-design/references/accessibility-checklist.md +29 -0
  4. package/claude-skill/material-design/references/component-patterns.md +55 -0
  5. package/claude-skill/material-design/references/motion-guide.md +163 -0
  6. package/claude-skill/material-design/references/tokens-and-styles.md +68 -0
  7. package/dist/animation/Shapes.stories.svelte +10 -6
  8. package/dist/animation/TransitionPatterns.stories.svelte +30 -20
  9. package/dist/animation/containerTransform.d.ts +4 -2
  10. package/dist/animation/containerTransform.js +4 -2
  11. package/dist/animation/enterExit.js +5 -2
  12. package/dist/animation/skeleton.d.ts +1 -1
  13. package/dist/animation/skeleton.js +1 -1
  14. package/dist/components/badge/Badge.mdx +70 -0
  15. package/dist/components/badge/Badge.stories.svelte +38 -20
  16. package/dist/components/badge/Badge.svelte +12 -5
  17. package/dist/components/badge/theme.d.ts +30 -7
  18. package/dist/components/badge/theme.js +25 -5
  19. package/dist/components/badge/types.d.ts +18 -4
  20. package/dist/components/buttons/Button.mdx +85 -0
  21. package/dist/components/buttons/Button.stories.svelte +62 -27
  22. package/dist/components/buttons/Button.svelte +29 -25
  23. package/dist/components/buttons/Button.svelte.d.ts +11 -9
  24. package/dist/components/buttons/ButtonIcon.mdx +52 -0
  25. package/dist/components/buttons/ButtonIcon.stories.svelte +72 -48
  26. package/dist/components/buttons/ButtonIcon.svelte +58 -36
  27. package/dist/components/buttons/ButtonIcon.svelte.d.ts +9 -7
  28. package/dist/components/buttons/FAB.mdx +84 -0
  29. package/dist/components/buttons/FAB.stories.svelte +103 -24
  30. package/dist/components/buttons/FAB.stories.svelte.d.ts +2 -17
  31. package/dist/components/buttons/FAB.svelte +353 -29
  32. package/dist/components/buttons/FAB.svelte.d.ts +11 -6
  33. package/dist/components/buttons/FABMenu.svelte +27 -8
  34. package/dist/components/buttons/FABMenu.svelte.d.ts +7 -3
  35. package/dist/components/buttons/FABMenuItem.svelte +20 -16
  36. package/dist/components/buttons/FABMenuItem.svelte.d.ts +3 -3
  37. package/dist/components/buttons/Toggle.stories.svelte +31 -23
  38. package/dist/components/buttons/Toggle.stories.svelte.d.ts +2 -17
  39. package/dist/components/buttons/Toggle.svelte +28 -25
  40. package/dist/components/buttons/Toggle.svelte.d.ts +5 -5
  41. package/dist/components/buttons/button-group/ButtonGroup.mdx +39 -0
  42. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte +62 -43
  43. package/dist/components/buttons/button-group/ButtonGroup.stories.svelte.d.ts +2 -17
  44. package/dist/components/buttons/button-group/ButtonGroup.svelte +102 -8
  45. package/dist/components/buttons/button-group/ButtonGroup.svelte.d.ts +6 -7
  46. package/dist/components/buttons/button-group/theme.d.ts +46 -16
  47. package/dist/components/buttons/button-group/theme.js +14 -9
  48. package/dist/components/buttons/button-group/types.d.ts +13 -7
  49. package/dist/components/buttons/connected/ConnectedButtonGroup.mdx +43 -0
  50. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte +56 -74
  51. package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte.d.ts +2 -17
  52. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte +16 -4
  53. package/dist/components/buttons/connected/ConnectedButtonGroup.svelte.d.ts +4 -4
  54. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte +35 -8
  55. package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte.d.ts +2 -3
  56. package/dist/components/buttons/connected/theme.d.ts +34 -19
  57. package/dist/components/buttons/connected/theme.js +33 -10
  58. package/dist/components/buttons/connected/types.d.ts +36 -9
  59. package/dist/components/buttons/shapeMorph.d.ts +26 -0
  60. package/dist/components/buttons/shapeMorph.js +142 -0
  61. package/dist/components/buttons/split-button/SplitButton.mdx +48 -0
  62. package/dist/components/buttons/split-button/SplitButton.stories.svelte +9 -14
  63. package/dist/components/buttons/split-button/SplitButton.svelte +66 -49
  64. package/dist/components/buttons/split-button/SplitButton.svelte.d.ts +6 -11
  65. package/dist/components/buttons/split-button/theme.d.ts +111 -18
  66. package/dist/components/buttons/split-button/theme.js +75 -17
  67. package/dist/components/buttons/split-button/types.d.ts +24 -18
  68. package/dist/components/buttons/theme.d.ts +423 -231
  69. package/dist/components/buttons/theme.js +287 -381
  70. package/dist/components/buttons/types.d.ts +130 -125
  71. package/dist/components/cards/Card.mdx +44 -0
  72. package/dist/components/cards/Card.stories.svelte +11 -11
  73. package/dist/components/cards/theme.js +6 -6
  74. package/dist/components/chips/Chip.mdx +68 -0
  75. package/dist/components/chips/Chip.stories.svelte +4 -4
  76. package/dist/components/chips/theme.d.ts +1 -1
  77. package/dist/components/chips/theme.js +4 -4
  78. package/dist/components/containers/action-rail/ActionRail.stories.svelte +1 -0
  79. package/dist/components/containers/action-rail/theme.d.ts +1 -1
  80. package/dist/components/containers/action-rail/theme.js +2 -2
  81. package/dist/components/containers/app/theme.d.ts +1 -1
  82. package/dist/components/containers/app/theme.js +1 -1
  83. package/dist/components/containers/bottom-sheet/BottomSheet.mdx +64 -0
  84. package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +108 -12
  85. package/dist/components/containers/bottom-sheet/BottomSheet.svelte +179 -109
  86. package/dist/components/containers/bottom-sheet/BottomSheet.svelte.d.ts +10 -5
  87. package/dist/components/containers/bottom-sheet/index.d.ts +1 -0
  88. package/dist/components/containers/bottom-sheet/index.js +1 -0
  89. package/dist/components/containers/bottom-sheet/theme.d.ts +45 -0
  90. package/dist/components/containers/bottom-sheet/theme.js +42 -0
  91. package/dist/components/containers/bottom-sheet/types.d.ts +37 -5
  92. package/dist/components/containers/carousel/Carousel.mdx +80 -0
  93. package/dist/components/containers/carousel/Carousel.stories.svelte +131 -0
  94. package/dist/components/containers/carousel/Carousel.stories.svelte.d.ts +4 -0
  95. package/dist/components/containers/carousel/Carousel.svelte +194 -0
  96. package/dist/components/containers/carousel/Carousel.svelte.d.ts +25 -0
  97. package/dist/components/containers/carousel/index.d.ts +3 -0
  98. package/dist/components/containers/{stack → carousel}/index.js +1 -2
  99. package/dist/components/containers/carousel/keylines.d.ts +32 -0
  100. package/dist/components/containers/carousel/keylines.js +88 -0
  101. package/dist/components/containers/carousel/theme.d.ts +162 -0
  102. package/dist/components/containers/carousel/theme.js +67 -0
  103. package/dist/components/containers/carousel/types.d.ts +52 -0
  104. package/dist/components/containers/context-menu/ContextMenu.stories.svelte +1 -0
  105. package/dist/components/containers/context-menu/ContextMenu.svelte +2 -2
  106. package/dist/components/containers/context-menu/ContextMenu.svelte.d.ts +1 -1
  107. package/dist/components/containers/context-menu/theme.d.ts +1 -1
  108. package/dist/components/containers/context-menu/theme.js +11 -11
  109. package/dist/components/containers/dialogue/Dialogue.mdx +65 -0
  110. package/dist/components/containers/dialogue/Dialogue.stories.svelte +4 -4
  111. package/dist/components/containers/dialogue/Dialogue.svelte +2 -2
  112. package/dist/components/containers/dialogue/theme.d.ts +1 -1
  113. package/dist/components/containers/dialogue/theme.js +4 -4
  114. package/dist/components/containers/dialogue/types.d.ts +1 -1
  115. package/dist/components/containers/divider/Divider.stories.svelte +2 -1
  116. package/dist/components/containers/divider/Divider.svelte +2 -2
  117. package/dist/components/containers/divider/theme.d.ts +7 -7
  118. package/dist/components/containers/divider/theme.js +3 -3
  119. package/dist/components/containers/index.d.ts +1 -1
  120. package/dist/components/containers/index.js +1 -1
  121. package/dist/components/containers/link-preview/theme.d.ts +1 -1
  122. package/dist/components/containers/link-preview/theme.js +3 -3
  123. package/dist/components/containers/list/List.svelte +18 -0
  124. package/dist/components/containers/list/List.svelte.d.ts +4 -0
  125. package/dist/components/containers/list/ListItem.mdx +100 -0
  126. package/dist/components/containers/list/ListItem.stories.svelte +177 -42
  127. package/dist/components/containers/list/ListItem.stories.svelte.d.ts +2 -17
  128. package/dist/components/containers/list/ListItem.svelte +92 -37
  129. package/dist/components/containers/list/ListItem.svelte.d.ts +1 -1
  130. package/dist/components/containers/list/context.d.ts +6 -0
  131. package/dist/components/containers/list/context.js +4 -0
  132. package/dist/components/containers/list/index.d.ts +1 -0
  133. package/dist/components/containers/list/index.js +1 -0
  134. package/dist/components/containers/list/theme.d.ts +487 -12
  135. package/dist/components/containers/list/theme.js +141 -14
  136. package/dist/components/containers/list/types.d.ts +39 -5
  137. package/dist/components/containers/menu/Menu.mdx +52 -0
  138. package/dist/components/containers/menu/Menu.stories.svelte +14 -14
  139. package/dist/components/containers/menu/Menu.svelte +2 -2
  140. package/dist/components/containers/menu/MenuGroup.svelte +1 -1
  141. package/dist/components/containers/menu/MenuGroup.svelte.d.ts +1 -1
  142. package/dist/components/containers/menu/MenuSub.svelte +1 -1
  143. package/dist/components/containers/menu/menu-item/MenuItem.svelte +1 -1
  144. package/dist/components/containers/menu/theme.d.ts +1 -1
  145. package/dist/components/containers/menu/theme.js +9 -9
  146. package/dist/components/containers/pane/DraggablePane.stories.svelte +4 -3
  147. package/dist/components/containers/pane/DraggablePane.svelte +2 -2
  148. package/dist/components/containers/pane/Pane.stories.svelte +11 -10
  149. package/dist/components/containers/pane/Pane.svelte +24 -2
  150. package/dist/components/containers/pane/PaneGrid.stories.svelte +19 -18
  151. package/dist/components/containers/pane/PaneGrid.svelte +3 -2
  152. package/dist/components/containers/pane/PaneGrid.svelte.d.ts +2 -1
  153. package/dist/components/containers/pane/PaneHandle.svelte +48 -2
  154. package/dist/components/containers/pane/PaneHandle.svelte.d.ts +4 -0
  155. package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -1
  156. package/dist/components/containers/pane/resizeStore.svelte.js +13 -2
  157. package/dist/components/containers/pane/theme.d.ts +1 -1
  158. package/dist/components/containers/pane/theme.js +131 -47
  159. package/dist/components/containers/pane/types.d.ts +3 -2
  160. package/dist/components/containers/popover/Popover.mdx +45 -0
  161. package/dist/components/containers/popover/Popover.stories.svelte +1 -1
  162. package/dist/components/containers/popover/Popover.svelte +1 -1
  163. package/dist/components/containers/popover/theme.d.ts +1 -1
  164. package/dist/components/containers/popover/theme.js +4 -4
  165. package/dist/components/containers/scroll-area/theme.js +3 -3
  166. package/dist/components/containers/side-sheet/SideSheet.mdx +71 -0
  167. package/dist/components/containers/side-sheet/SideSheet.stories.svelte +113 -17
  168. package/dist/components/containers/side-sheet/SideSheet.svelte +113 -66
  169. package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +8 -7
  170. package/dist/components/containers/side-sheet/index.d.ts +1 -0
  171. package/dist/components/containers/side-sheet/index.js +1 -0
  172. package/dist/components/containers/side-sheet/theme.d.ts +108 -0
  173. package/dist/components/containers/side-sheet/theme.js +72 -0
  174. package/dist/components/containers/side-sheet/types.d.ts +35 -7
  175. package/dist/components/date/DateField.stories.svelte +4 -3
  176. package/dist/components/date/DateField.svelte +11 -2
  177. package/dist/components/date/DateRangeField.stories.svelte +4 -3
  178. package/dist/components/date/DateRangeField.svelte +12 -3
  179. package/dist/components/date/theme.d.ts +8 -8
  180. package/dist/components/date/theme.js +32 -32
  181. package/dist/components/forms/checkbox/Checkbox.mdx +35 -0
  182. package/dist/components/forms/checkbox/Checkbox.stories.svelte +2 -2
  183. package/dist/components/forms/checkbox/Checkbox.svelte +1 -1
  184. package/dist/components/forms/checkbox/theme.d.ts +1 -1
  185. package/dist/components/forms/checkbox/theme.js +4 -4
  186. package/dist/components/forms/command/Command.stories.svelte +1 -0
  187. package/dist/components/forms/command/theme.d.ts +1 -1
  188. package/dist/components/forms/command/theme.js +10 -10
  189. package/dist/components/forms/pin/theme.d.ts +1 -1
  190. package/dist/components/forms/pin/theme.js +5 -5
  191. package/dist/components/forms/radio-group/RadioGroup.svelte +1 -1
  192. package/dist/components/forms/radio-group/theme.d.ts +1 -1
  193. package/dist/components/forms/radio-group/theme.js +6 -6
  194. package/dist/components/forms/search/Search.mdx +38 -0
  195. package/dist/components/forms/search/Search.stories.svelte +19 -9
  196. package/dist/components/forms/search/Search.svelte +40 -17
  197. package/dist/components/forms/search/Search.svelte.d.ts +2 -2
  198. package/dist/components/forms/search/theme.d.ts +46 -13
  199. package/dist/components/forms/search/theme.js +14 -9
  200. package/dist/components/forms/search/types.d.ts +18 -12
  201. package/dist/components/forms/select/Select.mdx +53 -0
  202. package/dist/components/forms/select/Select.stories.svelte +4 -4
  203. package/dist/components/forms/select/Select.svelte +12 -4
  204. package/dist/components/forms/select/SelectItem.svelte +1 -1
  205. package/dist/components/forms/select/theme.d.ts +1 -1
  206. package/dist/components/forms/select/theme.js +14 -14
  207. package/dist/components/forms/slider/Slider.mdx +85 -0
  208. package/dist/components/forms/slider/Slider.stories.svelte +7 -7
  209. package/dist/components/forms/slider/Slider.svelte +46 -28
  210. package/dist/components/forms/slider/theme.d.ts +15 -1
  211. package/dist/components/forms/slider/theme.js +29 -18
  212. package/dist/components/forms/slider/types.d.ts +3 -2
  213. package/dist/components/forms/switch/Switch.mdx +38 -0
  214. package/dist/components/forms/switch/Switch.stories.svelte +3 -3
  215. package/dist/components/forms/switch/theme.d.ts +1 -1
  216. package/dist/components/forms/switch/theme.js +7 -7
  217. package/dist/components/forms/textfield/Textfield.mdx +53 -0
  218. package/dist/components/forms/textfield/Textfield.stories.svelte +6 -6
  219. package/dist/components/forms/textfield/Textfield.svelte +1 -0
  220. package/dist/components/forms/textfield/theme.d.ts +1 -1
  221. package/dist/components/forms/textfield/theme.js +20 -20
  222. package/dist/components/forms/toggle-group/theme.d.ts +1 -1
  223. package/dist/components/forms/toggle-group/theme.js +3 -3
  224. package/dist/components/forms/tooltip/Tooltip.stories.svelte +1 -0
  225. package/dist/components/forms/tooltip/theme.d.ts +1 -1
  226. package/dist/components/forms/tooltip/theme.js +4 -4
  227. package/dist/components/misc/Avatar.stories.svelte +5 -4
  228. package/dist/components/misc/ThemeSettings.svelte +9 -9
  229. package/dist/components/misc/ThemeSwitcher.svelte +3 -3
  230. package/dist/components/misc/theme.js +5 -5
  231. package/dist/components/nav/appbar/AppBar.mdx +71 -0
  232. package/dist/components/nav/appbar/AppBar.stories.svelte +93 -3
  233. package/dist/components/nav/appbar/AppBar.stories.svelte.d.ts +2 -17
  234. package/dist/components/nav/appbar/AppBar.svelte +90 -37
  235. package/dist/components/nav/appbar/AppBar.svelte.d.ts +9 -2
  236. package/dist/components/nav/appbar/theme.d.ts +86 -19
  237. package/dist/components/nav/appbar/theme.js +160 -24
  238. package/dist/components/nav/appbar/types.d.ts +46 -9
  239. package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +1 -0
  240. package/dist/components/nav/breadcrumb/theme.d.ts +1 -1
  241. package/dist/components/nav/breadcrumb/theme.js +6 -6
  242. package/dist/components/nav/navbar/Navbar.mdx +38 -0
  243. package/dist/components/nav/navbar/Navbar.svelte +1 -1
  244. package/dist/components/nav/navbar/NavbarItem.svelte +12 -9
  245. package/dist/components/nav/navbar/theme.d.ts +3 -3
  246. package/dist/components/nav/navbar/theme.js +7 -7
  247. package/dist/components/nav/rail/Rail.mdx +73 -0
  248. package/dist/components/nav/rail/Rail.stories.svelte +3 -7
  249. package/dist/components/nav/rail/Rail.svelte +5 -2
  250. package/dist/components/nav/rail/RailItem.svelte +12 -9
  251. package/dist/components/nav/rail/theme.d.ts +1 -1
  252. package/dist/components/nav/rail/theme.js +14 -14
  253. package/dist/components/nav/rail/types.d.ts +8 -1
  254. package/dist/components/nav/tabs/Tabs.mdx +62 -0
  255. package/dist/components/nav/tabs/Tabs.stories.svelte +1 -1
  256. package/dist/components/nav/tabs/theme.d.ts +1 -1
  257. package/dist/components/nav/tabs/theme.js +5 -5
  258. package/dist/components/pill/Pill.mdx +32 -0
  259. package/dist/components/pill/Pill.stories.svelte +1 -1
  260. package/dist/components/pill/theme.d.ts +2 -2
  261. package/dist/components/pill/theme.js +2 -2
  262. package/dist/components/progress/LinearProgress.svelte +2 -2
  263. package/dist/components/progress/Progress.mdx +50 -0
  264. package/dist/components/progress/Progress.stories.svelte +6 -6
  265. package/dist/components/snackbar/Snackbar.mdx +52 -0
  266. package/dist/components/snackbar/Snackbar.stories.svelte +5 -5
  267. package/dist/components/snackbar/Snackbar.svelte +1 -1
  268. package/dist/components/snackbar/theme.d.ts +4 -4
  269. package/dist/components/snackbar/theme.js +5 -5
  270. package/dist/components/table/Table.stories.svelte +1 -0
  271. package/dist/components/table/TableHeader.svelte +1 -1
  272. package/dist/components/table/theme.d.ts +1 -1
  273. package/dist/components/table/theme.js +4 -4
  274. package/dist/components/time/TimeField.stories.svelte +3 -2
  275. package/dist/components/time/TimeField.svelte +2 -2
  276. package/dist/components/time/TimepickerInput.svelte +1 -1
  277. package/dist/components/time/theme.d.ts +1 -1
  278. package/dist/components/time/theme.js +6 -6
  279. package/dist/components/toolbar/Toolbar.stories.svelte +1 -0
  280. package/dist/components/toolbar/Toolbar.svelte +1 -1
  281. package/dist/components/toolbar/Toolbar.svelte.d.ts +1 -1
  282. package/dist/components/toolbar/theme.d.ts +1 -1
  283. package/dist/components/toolbar/theme.js +15 -15
  284. package/dist/components/typography/Typography.mdx +67 -0
  285. package/dist/components/typography/body/Body.stories.svelte +2 -1
  286. package/dist/components/typography/body/theme.d.ts +16 -13
  287. package/dist/components/typography/body/theme.js +20 -5
  288. package/dist/components/typography/body/types.d.ts +2 -1
  289. package/dist/components/typography/display/Display.stories.svelte +2 -1
  290. package/dist/components/typography/display/theme.d.ts +16 -13
  291. package/dist/components/typography/display/theme.js +20 -5
  292. package/dist/components/typography/display/types.d.ts +2 -1
  293. package/dist/components/typography/headline/Headline.stories.svelte +2 -1
  294. package/dist/components/typography/headline/theme.d.ts +16 -13
  295. package/dist/components/typography/headline/theme.js +20 -5
  296. package/dist/components/typography/headline/types.d.ts +2 -1
  297. package/dist/components/typography/kbd/Kbd.stories.svelte +2 -1
  298. package/dist/components/typography/kbd/theme.d.ts +5 -5
  299. package/dist/components/typography/kbd/theme.js +3 -3
  300. package/dist/components/typography/label/Label.stories.svelte +2 -1
  301. package/dist/components/typography/label/theme.d.ts +15 -12
  302. package/dist/components/typography/label/theme.js +20 -5
  303. package/dist/components/typography/label/types.d.ts +2 -1
  304. package/dist/components/typography/title/Title.stories.svelte +2 -1
  305. package/dist/components/typography/title/theme.d.ts +16 -13
  306. package/dist/components/typography/title/theme.js +20 -5
  307. package/dist/components/typography/title/types.d.ts +2 -1
  308. package/dist/index.css +2 -0
  309. package/dist/styles/component.css +78 -175
  310. package/dist/styles/elevation.css +9 -0
  311. package/dist/styles/layers.css +33 -0
  312. package/dist/styles/spacing.css +29 -0
  313. package/dist/styles/typescale.css +635 -20
  314. package/dist/utils/Layer.svelte +1 -1
  315. package/dist/utils/icon/Icon.svelte +8 -6
  316. package/dist/utils/icon/theme.d.ts +1 -1
  317. package/dist/utils/icon/theme.js +1 -1
  318. package/dist/utils/tv.d.ts +6 -0
  319. package/dist/utils/tv.js +12 -0
  320. package/package.json +19 -15
  321. package/dist/components/containers/stack/HStack.svelte +0 -23
  322. package/dist/components/containers/stack/HStack.svelte.d.ts +0 -5
  323. package/dist/components/containers/stack/VStack.svelte +0 -23
  324. package/dist/components/containers/stack/VStack.svelte.d.ts +0 -5
  325. package/dist/components/containers/stack/index.d.ts +0 -4
  326. package/dist/components/containers/stack/theme.d.ts +0 -66
  327. package/dist/components/containers/stack/theme.js +0 -26
  328. package/dist/components/containers/stack/types.d.ts +0 -12
  329. /package/dist/components/containers/{stack → carousel}/types.js +0 -0
@@ -1,25 +1,25 @@
1
- import { tv } from 'tailwind-variants';
1
+ import { tv } from '../../../utils/tv.js';
2
2
  export const rail = tv({
3
3
  slots: {
4
- base: 'py-12 hidden bg-md-sys-color-surface-container z-40 flex-col md:flex gap-6 transition-[width,padding,background-color] md-sys-motion-spatial',
5
- items: 'flex flex-col gap-3 pt-6 scrollbar-none w-full overflow-x-hidden',
4
+ base: 'py-spacing-600 hidden bg-md-sys-color-surface-container z-layer-rail flex-col md:flex gap-spacing-300 transition-[width,padding,background-color] md-sys-motion-spatial',
5
+ items: 'flex flex-col gap-spacing-150 pt-spacing-300 scrollbar-none w-full overflow-x-hidden',
6
6
  ghost: 'hidden md:block shrink-0 transition-[width] md-sys-motion-spatial',
7
- scrim: 'hidden md:block lg:hidden inset-0'
7
+ scrim: 'hidden md:block lg:hidden inset-spacing-0'
8
8
  },
9
9
  variants: {
10
10
  anchor: {
11
11
  viewport: {
12
- base: 'fixed top-[var(--rail-top,0px)] bottom-0 left-0',
12
+ base: 'fixed top-[var(--rail-top,0px)] bottom-spacing-0 left-spacing-0',
13
13
  scrim: 'fixed'
14
14
  },
15
15
  parent: {
16
- base: 'absolute top-[var(--rail-top,0px)] bottom-0 left-0',
16
+ base: 'absolute top-[var(--rail-top,0px)] bottom-spacing-0 left-spacing-0',
17
17
  scrim: 'absolute'
18
18
  }
19
19
  },
20
20
  expanded: {
21
21
  true: {
22
- base: 'pl-9 w-60 items-start bg-md-sys-color-surface-container-highest lg:bg-md-sys-color-surface-container rounded-r-lg',
22
+ base: 'pl-spacing-450 w-60 items-start bg-md-sys-color-surface-container-highest lg:bg-md-sys-color-surface-container rounded-r-lg',
23
23
  ghost: 'w-24 lg:w-60'
24
24
  },
25
25
  false: {
@@ -42,7 +42,7 @@ export const rail = tv({
42
42
  export const railElement = tv({
43
43
  slots: {
44
44
  base: 'group relative z-30 flex w-full transition-all md-sys-motion-spatial',
45
- content: 'flex items-center min-w-0 rounded-full gap-0.5 py-1.5 transition-all md-sys-motion-spatial',
45
+ content: 'flex items-center min-w-spacing-0 rounded-full gap-spacing-25 py-spacing-75 transition-all md-sys-motion-spatial',
46
46
  iconContainer: 'relative rounded-full items-center justify-center inline-flex transition-all md-sys-motion-spatial',
47
47
  icon: 'text-[24px] transition-all md-sys-motion-spatial',
48
48
  label: 'transition-all md-sys-motion-spatial whitespace-nowrap'
@@ -62,14 +62,14 @@ export const railElement = tv({
62
62
  expanded: {
63
63
  true: {
64
64
  base: 'justify-start',
65
- content: 'p-4 gap-3',
65
+ content: 'p-spacing-200 gap-spacing-150',
66
66
  iconContainer: '',
67
67
  label: 'md-sys-typescale-label-large'
68
68
  },
69
69
  false: {
70
70
  base: 'text-center justify-center',
71
71
  content: 'flex-col',
72
- iconContainer: 'py-1.5 px-4',
72
+ iconContainer: 'py-spacing-75 px-spacing-200',
73
73
  label: 'md-sys-typescale-label-medium'
74
74
  }
75
75
  },
@@ -80,10 +80,10 @@ export const railElement = tv({
80
80
  },
81
81
  mobile: {
82
82
  true: {
83
- base: 'flex-1 flex-col items-center justify-center h-full min-w-0 max-w-[168px]',
84
- content: 'py-0 gap-1 items-center justify-center w-full',
85
- iconContainer: 'h-8 w-16 py-0 px-0',
86
- icon: 'size-6',
83
+ base: 'flex-1 flex-col items-center justify-center h-full min-w-spacing-0 max-w-[168px]',
84
+ content: 'py-spacing-0 gap-spacing-50 items-center justify-center w-full',
85
+ iconContainer: 'h-spacing-400 w-spacing-800 py-spacing-0 px-spacing-0',
86
+ icon: 'size-spacing-300',
87
87
  label: 'truncate w-full text-center'
88
88
  },
89
89
  false: {}
@@ -41,6 +41,13 @@ export type RailProps = RailVariants & HTMLAttributes<HTMLDivElement> & {
41
41
  anchor?: RailVariants['anchor'];
42
42
  /** Top offset in px for viewport/parent anchor (e.g. height of a top bar). Default 0. */
43
43
  railTop?: number;
44
- /** Render a bottom navbar on mobile. */
44
+ /** Tooltip and accessible name of the toggle while collapsed. Default 'Expand navigation'. */
45
+ expandLabel?: string;
46
+ /** Tooltip and accessible name of the toggle while expanded. Default 'Collapse navigation'. */
47
+ collapseLabel?: string;
48
+ /**
49
+ * @deprecated No effect: Rail no longer renders a navigation bar below `md`. Mount a `Navbar`
50
+ * next to it for small windows.
51
+ */
45
52
  withNavbar?: boolean;
46
53
  };
@@ -0,0 +1,62 @@
1
+ import { Meta, Title, Subtitle, Canvas, Controls } from '@storybook/addon-docs/blocks';
2
+ import * as TabsStories from './Tabs.stories.svelte';
3
+
4
+ <Meta of={TabsStories} />
5
+
6
+ <Title />
7
+
8
+ <Subtitle>Tabs organise related content across views at the same level.</Subtitle>
9
+
10
+ [M3 spec](https://m3.material.io/components/tabs/specs) ·
11
+ `import { TabHolder, TabContent } from '@noxlovette/material';`
12
+
13
+ <Canvas of={TabsStories.Playground} />
14
+
15
+ <Controls of={TabsStories.Playground} />
16
+
17
+ ## Anatomy
18
+
19
+ - **`TabHolder`** renders the tab row from an `items` array, plus the sliding active indicator.
20
+ - **`Tab`** is one trigger, rendered by `TabHolder` for each item: an `<a>` when the item has
21
+ `href`, a `<button>` otherwise.
22
+ - **`TabContent`** is the panel matched to a tab by `value`, for content tabs only.
23
+
24
+ ## Content tabs
25
+
26
+ Give each item a `value` and a matching `TabContent`:
27
+
28
+ ```svelte
29
+ <TabHolder
30
+ bind:value
31
+ items={[
32
+ { value: 'flights', name: 'Flights', iconProps: { name: 'flight' } },
33
+ { value: 'trips', name: 'Trips', iconProps: { name: 'luggage' } }
34
+ ]}
35
+ />
36
+
37
+ <TabContent value="flights">Flights panel</TabContent>
38
+ <TabContent value="trips">Trips panel</TabContent>
39
+ ```
40
+
41
+ ## Navigation tabs
42
+
43
+ Give each item an `href` instead of a `value`, and leave out `TabContent`. The tabs then route
44
+ between pages.
45
+
46
+ <Canvas of={TabsStories.NavigationTabsHref} />
47
+
48
+ ## Motion
49
+
50
+ Tabs are peers, so switching panels runs the M3 lateral transition: the new panel pushes the old
51
+ one out toward the selected tab's side. The indicator slides on the fast spatial spring. Nothing
52
+ needs configuring.
53
+
54
+ Navigation tabs have no panels inside `TabHolder`, so animate the route change yourself with
55
+ `lateral()` from `@noxlovette/material`.
56
+
57
+ ## Accessibility
58
+
59
+ - **Keyboard.** Arrow keys move between tabs. With `activationMode="automatic"`, focus selects;
60
+ with `manual`, Enter or Space does.
61
+ - **Selection.** The active tab gets `aria-selected`; the indicator is decoration.
62
+ - **Disabled tabs** are skipped by the arrow keys.
@@ -32,7 +32,7 @@
32
32
 
33
33
  <Story name="Playground">
34
34
  {#snippet template(args)}
35
- <div class="flex flex-col gap-4">
35
+ <div class="gap-spacing-200 flex flex-col">
36
36
  <TabHolder {...args} {items}>
37
37
  <TabContent value="flights"><Body>Flights panel content.</Body></TabContent>
38
38
  <TabContent value="trips"><Body>Trips panel content.</Body></TabContent>
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../../utils/tv.js';
2
2
  export type TabVariants = VariantProps<typeof tab>;
3
3
  export type TabHolderVariants = VariantProps<typeof tabHolder>;
4
4
  export declare const tabHolder: import("tailwind-variants").TVReturnType<{
@@ -1,8 +1,8 @@
1
- import { tv } from 'tailwind-variants';
1
+ import { tv } from '../../../utils/tv.js';
2
2
  export const tabHolder = tv({
3
3
  slots: {
4
4
  base: 'relative flex w-full bg-md-sys-color-surface',
5
- bar: 'absolute bottom-0 h-[3px] rounded-t-full bg-md-sys-color-primary transition-transform md-sys-motion-fast-spatial'
5
+ bar: 'absolute bottom-spacing-0 h-[3px] rounded-t-full bg-md-sys-color-primary transition-transform md-sys-motion-fast-spatial'
6
6
  },
7
7
  variants: {
8
8
  rounded: {
@@ -19,15 +19,15 @@ export const tab = tv({
19
19
  'data-[state=inactive]:text-md-sys-color-on-surface-variant'
20
20
  ].join(' '),
21
21
  label: 'md-sys-typescale-title-small',
22
- icon: 'size-6 text-[24px]'
22
+ icon: 'size-spacing-300 text-[24px]'
23
23
  },
24
24
  variants: {
25
25
  variant: {
26
26
  primary: {
27
- base: 'h-16 gap-1 py-3'
27
+ base: 'h-spacing-800 gap-spacing-50 py-spacing-150'
28
28
  },
29
29
  secondary: {
30
- base: 'h-12 py-3',
30
+ base: 'h-spacing-600 py-spacing-150',
31
31
  icon: 'hidden'
32
32
  }
33
33
  },
@@ -0,0 +1,32 @@
1
+ import { Meta, Title, Subtitle, Canvas, Controls } from '@storybook/addon-docs/blocks';
2
+ import * as PillStories from './Pill.stories.svelte';
3
+
4
+ <Meta of={PillStories} />
5
+
6
+ <Title />
7
+
8
+ <Subtitle>A small rounded label for short static text: a status, a count, a category.</Subtitle>
9
+
10
+ `import { Pill } from '@noxlovette/material';`
11
+
12
+ <Canvas of={PillStories.Playground} />
13
+
14
+ <Controls of={PillStories.Playground} />
15
+
16
+ ## Pill or Chip
17
+
18
+ `Pill` is not an M3 component. It renders a plain `<div>` with no click handler, remove button or
19
+ selected state. For anything the user interacts with, use `Chip`, which implements M3 chips.
20
+
21
+ ## Variants
22
+
23
+ The system variants (`primary`, `secondary-container`, and so on) use M3 color roles, so they
24
+ follow the theme. `yellow` and `green` are fixed colors for status labels like "New" or "Beta"
25
+ that should look the same in every theme.
26
+
27
+ <Canvas of={PillStories.Variants} />
28
+
29
+ ## Accessibility
30
+
31
+ - **Not a control.** A pill has no role and isn't focusable, so never make one clickable.
32
+ - **Contrast.** Each system variant pairs a container with its `on-*` role.
@@ -32,7 +32,7 @@
32
32
  <Story name="Playground">New</Story>
33
33
 
34
34
  <Story name="Variants" asChild>
35
- <div class="flex flex-wrap items-center gap-3 p-6">
35
+ <div class="gap-spacing-150 p-spacing-300 flex flex-wrap items-center">
36
36
  <Pill variant="primary">Primary</Pill>
37
37
  <Pill variant="secondary">Secondary</Pill>
38
38
  <Pill variant="tertiary">Tertiary</Pill>
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../utils/tv.js';
2
2
  export type PillVariants = VariantProps<typeof pill>;
3
3
  export declare const pill: import("tailwind-variants").TVReturnType<{
4
4
  variant: {
@@ -14,7 +14,7 @@ export declare const pill: import("tailwind-variants").TVReturnType<{
14
14
  yellow: "bg-yellow-400 text-yellow-950 dark:bg-yellow-300 dark:text-yellow-950";
15
15
  green: "bg-green-600 text-white dark:bg-green-500 dark:text-green-950";
16
16
  };
17
- }, undefined, "relative inline-flex items-center justify-center px-4 py-1.5 md-sys-typescale-label-large select-none rounded-full whitespace-nowrap", {
17
+ }, undefined, "relative inline-flex items-center justify-center px-spacing-200 py-spacing-75 md-sys-typescale-label-large select-none rounded-full whitespace-nowrap", {
18
18
  variant: {
19
19
  primary: "md-component-button-filled-primary";
20
20
  secondary: "md-component-button-filled-secondary";
@@ -1,6 +1,6 @@
1
- import { tv } from 'tailwind-variants';
1
+ import { tv } from '../../utils/tv.js';
2
2
  export const pill = tv({
3
- base: 'relative inline-flex items-center justify-center px-4 py-1.5 md-sys-typescale-label-large select-none rounded-full whitespace-nowrap',
3
+ base: 'relative inline-flex items-center justify-center px-spacing-200 py-spacing-75 md-sys-typescale-label-large select-none rounded-full whitespace-nowrap',
4
4
  variants: {
5
5
  variant: {
6
6
  primary: 'md-component-button-filled-primary',
@@ -11,7 +11,7 @@ The track always keeps a gap either side of the bar.
11
11
  -->
12
12
  <script lang="ts">
13
13
  import clsx from 'clsx';
14
- import { tv } from 'tailwind-variants';
14
+ import { tv } from '../../utils/tv.js';
15
15
  import { Progress } from 'bits-ui';
16
16
  import { animate, type AnimationPlaybackControls } from 'motion';
17
17
  import { springTokens, springTransition } from '../../animation/spring.js';
@@ -35,7 +35,7 @@ The track always keeps a gap either side of the bar.
35
35
  const linearProgress = tv({
36
36
  slots: {
37
37
  container: 'relative overflow-hidden',
38
- segment: 'absolute inset-y-0 rounded-full',
38
+ segment: 'absolute inset-y-spacing-0 rounded-full',
39
39
  bar: 'bg-md-sys-color-primary',
40
40
  track: 'bg-md-sys-color-secondary-container'
41
41
  }
@@ -0,0 +1,50 @@
1
+ import { Meta, Title, Subtitle, Canvas } from '@storybook/addon-docs/blocks';
2
+ import * as ProgressStories from './Progress.stories.svelte';
3
+
4
+ <Meta of={ProgressStories} />
5
+
6
+ <Title />
7
+
8
+ <Subtitle>Progress indicators show the status of an ongoing process.</Subtitle>
9
+
10
+ [M3 spec](https://m3.material.io/components/progress-indicators/specs) ·
11
+ `import { CircularProgress, LinearProgress, WavyLinearProgress } from '@noxlovette/material';`
12
+
13
+ ## Three components
14
+
15
+ There's no shared `variant` prop. Pick the component for the shape you need:
16
+
17
+ - **`CircularProgress`** and **`LinearProgress`** are M3's circular and linear indicators.
18
+ - **`WavyLinearProgress`** is this library's own sine-wave linear indicator, inspired by M3
19
+ Expressive but not a literal reproduction of the spec.
20
+
21
+ All three take the same `percent`: a number from 0 to 100 for a determinate indicator, or
22
+ omitted (or `null`) for an indeterminate one.
23
+
24
+ ```svelte
25
+ <CircularProgress percent={uploadPercent} />
26
+ <LinearProgress percent={uploadPercent} class="w-full" />
27
+
28
+ <!-- Indeterminate: omit percent -->
29
+ <CircularProgress />
30
+ ```
31
+
32
+ <Canvas of={ProgressStories.CircularDeterminate} />
33
+
34
+ <Canvas of={ProgressStories.CircularIndeterminate} />
35
+
36
+ <Canvas of={ProgressStories.LinearDeterminate} />
37
+
38
+ <Canvas of={ProgressStories.WavyDeterminate} />
39
+
40
+ ## Motion
41
+
42
+ A determinate indicator springs to each new `percent` on a critically damped spring, so progress
43
+ never visibly runs backwards. Indeterminate indicators animate continuously.
44
+
45
+ ## Accessibility
46
+
47
+ - **Role.** Each renders `role="progressbar"`, with `aria-valuenow` set from `percent` and left
48
+ out when indeterminate.
49
+ - **Label.** None of them says what is loading. Give each an `aria-label`, or put visible text
50
+ next to it.
@@ -23,42 +23,42 @@
23
23
 
24
24
  <Story name="Circular (Determinate)">
25
25
  {#snippet template(args)}
26
- <div class="flex items-center justify-center p-6">
26
+ <div class="p-spacing-300 flex items-center justify-center">
27
27
  <CircularProgress percent={args.percent} />
28
28
  </div>
29
29
  {/snippet}
30
30
  </Story>
31
31
 
32
32
  <Story name="Circular (Indeterminate)" asChild>
33
- <div class="flex items-center justify-center p-6">
33
+ <div class="p-spacing-300 flex items-center justify-center">
34
34
  <CircularProgress />
35
35
  </div>
36
36
  </Story>
37
37
 
38
38
  <Story name="Linear (Determinate)">
39
39
  {#snippet template(args)}
40
- <div class="flex items-center p-6">
40
+ <div class="p-spacing-300 flex items-center">
41
41
  <LinearProgress percent={args.percent} class="w-full max-w-sm" />
42
42
  </div>
43
43
  {/snippet}
44
44
  </Story>
45
45
 
46
46
  <Story name="Linear (Indeterminate)" asChild>
47
- <div class="flex items-center p-6">
47
+ <div class="p-spacing-300 flex items-center">
48
48
  <LinearProgress class="w-full max-w-sm" />
49
49
  </div>
50
50
  </Story>
51
51
 
52
52
  <Story name="Wavy (Determinate)">
53
53
  {#snippet template(args)}
54
- <div class="flex items-center p-6">
54
+ <div class="p-spacing-300 flex items-center">
55
55
  <WavyLinearProgress percent={args.percent} class="w-full max-w-sm" />
56
56
  </div>
57
57
  {/snippet}
58
58
  </Story>
59
59
 
60
60
  <Story name="Wavy (Indeterminate)" asChild>
61
- <div class="flex items-center p-6">
61
+ <div class="p-spacing-300 flex items-center">
62
62
  <WavyLinearProgress class="w-full max-w-sm" />
63
63
  </div>
64
64
  </Story>
@@ -0,0 +1,52 @@
1
+ import { Meta, Title, Subtitle, Canvas, Controls } from '@storybook/addon-docs/blocks';
2
+ import * as SnackbarStories from './Snackbar.stories.svelte';
3
+
4
+ <Meta of={SnackbarStories} />
5
+
6
+ <Title />
7
+
8
+ <Subtitle>
9
+ Snackbars show a brief message about an app process at the bottom of the screen.
10
+ </Subtitle>
11
+
12
+ [M3 spec](https://m3.material.io/components/snackbar/specs) ·
13
+ `import { Snackbar } from '@noxlovette/material';`
14
+
15
+ <Canvas of={SnackbarStories.Playground} />
16
+
17
+ <Controls of={SnackbarStories.Playground} />
18
+
19
+ ## Showing a snackbar
20
+
21
+ There's no `toast()` function or queue. Mount one `Snackbar`, bind its `message`, and assign to
22
+ that state to show it:
23
+
24
+ ```svelte
25
+ <script lang="ts">
26
+ import { Snackbar } from '@noxlovette/material';
27
+
28
+ let snackbarMessage = $state('');
29
+ </script>
30
+
31
+ <button onclick={() => (snackbarMessage = 'Changes saved.')}>Save</button>
32
+
33
+ <Snackbar bind:message={snackbarMessage} label="Undo" callback={undoSave} />
34
+ ```
35
+
36
+ When `message` becomes non-empty (a string or a snippet), the snackbar slides in. After 4
37
+ seconds it hides and resets a string `message` to `''`, so the same text can be shown again. With
38
+ `static`, it stays until the user closes it.
39
+
40
+ `label` and `callback` add an action button.
41
+
42
+ <Canvas of={SnackbarStories.Triggered} />
43
+
44
+ <Canvas of={SnackbarStories.WithAction} />
45
+
46
+ ## Accessibility
47
+
48
+ - **Timing.** A non-static snackbar disappears on its own, so never make it the only place
49
+ critical information appears.
50
+ - **Dismiss.** `showClose` (on by default) renders a close button labelled "Dismiss snackbar".
51
+ - **One at a time.** Mount one snackbar per region and drive it through one binding; stacking
52
+ instances isn't supported.
@@ -9,10 +9,6 @@
9
9
  <script module lang="ts">
10
10
  import { defineMeta } from '@storybook/addon-svelte-csf';
11
11
  import Snackbar from './Snackbar.svelte';
12
- </script>
13
-
14
- <script lang="ts">
15
- import Button from '../buttons/Button.svelte';
16
12
 
17
13
  const { Story } = defineMeta({
18
14
  title: 'Feedback/Snackbar',
@@ -28,6 +24,10 @@
28
24
  static: false
29
25
  }
30
26
  });
27
+ </script>
28
+
29
+ <script lang="ts">
30
+ import Button from '../buttons/Button.svelte';
31
31
 
32
32
  let playgroundMessage = $state('This is a snackbar message.');
33
33
  let triggeredMessage = $state('');
@@ -50,7 +50,7 @@
50
50
  </Story>
51
51
 
52
52
  <Story name="Triggered" asChild>
53
- <div class="relative flex min-h-32 flex-col items-center justify-center gap-4">
53
+ <div class="gap-spacing-200 relative flex min-h-32 flex-col items-center justify-center">
54
54
  <Button
55
55
  variant="tonal"
56
56
  onclick={() => {
@@ -88,7 +88,7 @@ Snackbars provide brief messages about app processes at the bottom of the screen
88
88
 
89
89
  {#if showClose}
90
90
  <button
91
- class="relative rounded-full p-1"
91
+ class="p-spacing-50 relative rounded-full"
92
92
  onclick={() => {
93
93
  dismissed = true;
94
94
  if (typeof message === 'string') {
@@ -1,8 +1,8 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../utils/tv.js';
2
2
  export type SnackBarVariants = VariantProps<typeof snackbar>;
3
3
  export declare const snackbar: import("tailwind-variants").TVReturnType<{
4
4
  fixed: {
5
- true: "fixed bottom-20 md:bottom-6 left-1/2 -translate-x-1/2";
5
+ true: "fixed bottom-20 md:bottom-spacing-300 left-1/2 -translate-x-1/2";
6
6
  false: "";
7
7
  };
8
8
  }, {
@@ -13,7 +13,7 @@ export declare const snackbar: import("tailwind-variants").TVReturnType<{
13
13
  icon: string;
14
14
  }, undefined, {
15
15
  fixed: {
16
- true: "fixed bottom-20 md:bottom-6 left-1/2 -translate-x-1/2";
16
+ true: "fixed bottom-20 md:bottom-spacing-300 left-1/2 -translate-x-1/2";
17
17
  false: "";
18
18
  };
19
19
  }, {
@@ -24,7 +24,7 @@ export declare const snackbar: import("tailwind-variants").TVReturnType<{
24
24
  icon: string;
25
25
  }, import("tailwind-variants").TVReturnTypeLike<{
26
26
  fixed: {
27
- true: "fixed bottom-20 md:bottom-6 left-1/2 -translate-x-1/2";
27
+ true: "fixed bottom-20 md:bottom-spacing-300 left-1/2 -translate-x-1/2";
28
28
  false: "";
29
29
  };
30
30
  }, {
@@ -1,15 +1,15 @@
1
- import { tv } from 'tailwind-variants';
1
+ import { tv } from '../../utils/tv.js';
2
2
  export const snackbar = tv({
3
3
  slots: {
4
- base: 'rounded-xs relative min-h-12 md:max-h-17 flex z-[100] items-center bg-md-sys-color-inverse-surface shadow-elevation-3 pr-2 pl-4 justify-between h-max py-3',
5
- label: 'text-md-sys-color-inverse-primary md-sys-typescale-label-large px-3 cursor-pointer ',
4
+ base: 'rounded-xs relative min-h-spacing-600 md:max-h-17 flex z-layer-snackbar items-center bg-md-sys-color-inverse-surface shadow-elevation-3 pr-spacing-100 pl-spacing-200 justify-between h-max py-spacing-150',
5
+ label: 'text-md-sys-color-inverse-primary md-sys-typescale-label-large px-spacing-150 cursor-pointer ',
6
6
  actionWrapper: 'flex items-center z-40',
7
7
  supportingText: 'text-md-sys-color-inverse-on-surface md-sys-typescale-body-medium max-w-[60ch] ',
8
- icon: 'size-6 text-[24px] text-md-sys-color-inverse-on-surface mr-1 ml-3'
8
+ icon: 'size-spacing-300 text-[24px] text-md-sys-color-inverse-on-surface mr-spacing-50 ml-spacing-150'
9
9
  },
10
10
  variants: {
11
11
  fixed: {
12
- true: 'fixed bottom-20 md:bottom-6 left-1/2 -translate-x-1/2',
12
+ true: 'fixed bottom-20 md:bottom-spacing-300 left-1/2 -translate-x-1/2',
13
13
  false: ''
14
14
  }
15
15
  }
@@ -11,6 +11,7 @@
11
11
 
12
12
  const { Story } = defineMeta({
13
13
  title: 'Table/Table',
14
+ tags: ['autodocs'],
14
15
  component: Table,
15
16
  argTypes: {
16
17
  rounded: { control: 'boolean' }
@@ -25,7 +25,7 @@ and `sortDirection` props. Defaults to `scope="col"`.
25
25
  </script>
26
26
 
27
27
  <th {scope} class={header({ class: clsx(className) })} {...restProps}>
28
- <span class="inline-flex items-center gap-1">
28
+ <span class="gap-spacing-50 inline-flex items-center">
29
29
  {@render children?.()}
30
30
  {#if sortable}
31
31
  <span
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../utils/tv.js';
2
2
  export declare const table: import("tailwind-variants").TVReturnType<{
3
3
  hoverable: {
4
4
  true: {
@@ -1,4 +1,4 @@
1
- import { tv } from 'tailwind-variants';
1
+ import { tv } from '../../utils/tv.js';
2
2
  export const table = tv({
3
3
  slots: {
4
4
  root: 'w-full border-collapse text-left md-sys-typescale-body-medium text-md-sys-color-on-surface',
@@ -6,8 +6,8 @@ export const table = tv({
6
6
  body: '[&_tr:last-child]:border-b-0',
7
7
  foot: 'border-t border-md-sys-color-outline-variant',
8
8
  row: 'border-b border-md-sys-color-outline-variant transition-colors md-sys-motion-fast-effects focus-visible:outline focus-visible:-outline-offset-2 focus-visible:outline-md-sys-color-primary',
9
- cell: 'px-4 py-3 align-middle',
10
- header: 'px-4 py-4 align-middle md-sys-typescale-label-large text-md-sys-color-on-surface font-medium whitespace-nowrap'
9
+ cell: 'px-spacing-200 py-spacing-150 align-middle',
10
+ header: 'px-spacing-200 py-spacing-200 align-middle md-sys-typescale-label-large text-md-sys-color-on-surface whitespace-nowrap'
11
11
  },
12
12
  variants: {
13
13
  hoverable: {
@@ -43,7 +43,7 @@ export const table = tv({
43
43
  },
44
44
  sticky: {
45
45
  true: {
46
- head: 'sticky top-0 z-10 bg-md-sys-color-surface-container-high shadow-[0_1px_0_0_var(--md-sys-color-outline-variant)]'
46
+ head: 'sticky top-spacing-0 z-10 bg-md-sys-color-surface-container-high shadow-[0_1px_0_0_var(--md-sys-color-outline-variant)]'
47
47
  }
48
48
  }
49
49
  }
@@ -9,6 +9,7 @@
9
9
 
10
10
  const { Story } = defineMeta({
11
11
  title: 'Time/TimeField',
12
+ tags: ['autodocs'],
12
13
  component: TimeField,
13
14
  argTypes: {
14
15
  label: { control: 'text' },
@@ -28,14 +29,14 @@
28
29
 
29
30
  <Story name="Playground">
30
31
  {#snippet template(args)}
31
- <div class="max-w-xs p-8">
32
+ <div class="p-spacing-400 max-w-xs">
32
33
  <TimeField {...args} />
33
34
  </div>
34
35
  {/snippet}
35
36
  </Story>
36
37
 
37
38
  <Story name="Near Bottom Edge" asChild>
38
- <div class="flex min-h-dvh max-w-xs flex-col justify-end p-8">
39
+ <div class="p-spacing-400 flex min-h-dvh max-w-xs flex-col justify-end">
39
40
  <TimeField label="Time" value="18:45" />
40
41
  </div>
41
42
  </Story>
@@ -77,7 +77,7 @@ It combines a Material 3 Textfield with a TimepickerInput for intuitive time sel
77
77
  <button
78
78
  {...props}
79
79
  title="time-overlay"
80
- class="absolute inset-0 cursor-pointer disabled:cursor-not-allowed"
80
+ class="inset-spacing-0 absolute cursor-pointer disabled:cursor-not-allowed"
81
81
  type="button"
82
82
  data-cy="calendar-time-toggle"
83
83
  ></button>
@@ -92,7 +92,7 @@ It combines a Material 3 Textfield with a TimepickerInput for intuitive time sel
92
92
  align="start"
93
93
  sideOffset={12}
94
94
  collisionPadding={8}
95
- class="z-100"
95
+ class="z-layer-popup"
96
96
  >
97
97
  {#snippet child({ wrapperProps, props, open })}
98
98
  <div {...wrapperProps}>
@@ -63,7 +63,7 @@ It follows the Material 3 design for time input pickers.
63
63
  </TimeField.Root>
64
64
 
65
65
  <div class={cls.buttonDiv()}>
66
- <ButtonIcon type="button" iconProps={{ name: 'schedule' }} />
66
+ <ButtonIcon variant="standard" type="button" iconProps={{ name: 'schedule' }} />
67
67
  <div>
68
68
  <Button variant="text" type="button" onclick={() => close()}>{cancelText}</Button>
69
69
  <Button
@@ -1,4 +1,4 @@
1
- import { type VariantProps } from 'tailwind-variants';
1
+ import { type VariantProps } from '../../utils/tv.js';
2
2
  export type TimepickerVariants = VariantProps<typeof timepicker>;
3
3
  export declare const timepicker: import("tailwind-variants").TVReturnType<{
4
4
  [key: string]: {