@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
@@ -1,14 +0,0 @@
1
- interface Props {
2
- /**
3
- * The input components to be merged.
4
- */
5
- children: import('svelte').Snippet;
6
- /**
7
- * Additional CSS classes for the container.
8
- */
9
- class?: string;
10
- }
11
- /** InputMerger is a container that groups multiple input components together visually. */
12
- declare const InputMerger: import("svelte").Component<Props, {}, "">;
13
- type InputMerger = ReturnType<typeof InputMerger>;
14
- export default InputMerger;
@@ -1,2 +0,0 @@
1
- export * from './theme.js';
2
- export { default as InputMerger } from './InputMerger.svelte';
@@ -1 +0,0 @@
1
- export declare const inputMerger: import("tailwind-variants").TVReturnType<{} | {} | {}, undefined, "grid max-h-max w-full shrink gap-2 rounded-none border-x-0 border-md-sys-color-outline-variant px-0 py-2 md:rounded-2xl md:border-x-2 md:px-2.5", {} | {}, undefined, import("tailwind-variants").TVReturnType<unknown, undefined, "grid max-h-max w-full shrink gap-2 rounded-none border-x-0 border-md-sys-color-outline-variant px-0 py-2 md:rounded-2xl md:border-x-2 md:px-2.5", unknown, unknown, undefined>>;
@@ -1,4 +0,0 @@
1
- import { tv } from 'tailwind-variants';
2
- export const inputMerger = tv({
3
- base: 'grid max-h-max w-full shrink gap-2 rounded-none border-x-0 border-md-sys-color-outline-variant px-0 py-2 md:rounded-2xl md:border-x-2 md:px-2.5'
4
- });
@@ -1,67 +0,0 @@
1
- <script module lang="ts">
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import SinglePane from './SinglePane.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Containers/Single Pane',
7
- component: SinglePane,
8
- argTypes: {
9
- centered: {
10
- control: 'select',
11
- options: ['none', 'narrow', 'medium']
12
- },
13
- padding: {
14
- control: 'select',
15
- options: ['none', 'sm', 'md', 'lg']
16
- },
17
- gap: {
18
- control: 'select',
19
- options: ['none', 'sm', 'md', 'lg', 'xl']
20
- },
21
- background: { control: 'boolean' },
22
- full: { control: 'boolean' },
23
- rounded: { control: 'boolean' }
24
- },
25
- args: {
26
- centered: 'medium',
27
- padding: 'md',
28
- gap: 'md',
29
- background: true,
30
- full: false,
31
- rounded: true
32
- }
33
- });
34
- </script>
35
-
36
- <Story name="Playground">
37
- {#snippet template(args)}
38
- <SinglePane
39
- centered={args.centered}
40
- padding={args.padding}
41
- gap={args.gap}
42
- background={args.background}
43
- full={args.full}
44
- rounded={args.rounded}
45
- >
46
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">Block one</div>
47
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">Block two</div>
48
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">Block three</div>
49
- </SinglePane>
50
- {/snippet}
51
- </Story>
52
-
53
- <Story name="Centered Widths" asChild>
54
- <div class="flex flex-col gap-6">
55
- <SinglePane centered="narrow" background={false}>
56
- <div class="bg-md-sys-color-secondary-container rounded-lg p-4 text-sm">narrow</div>
57
- </SinglePane>
58
- <SinglePane centered="medium" background={false}>
59
- <div class="bg-md-sys-color-secondary-container rounded-lg p-4 text-sm">medium</div>
60
- </SinglePane>
61
- <SinglePane centered="none" background={false}>
62
- <div class="bg-md-sys-color-secondary-container rounded-lg p-4 text-sm">
63
- none (full width)
64
- </div>
65
- </SinglePane>
66
- </div>
67
- </Story>
@@ -1,32 +0,0 @@
1
- <!--
2
- @component
3
- SinglePane provides a centered or full-width container for content.
4
- -->
5
- <script lang="ts">
6
- import clsx from 'clsx';
7
- import { singlePane } from './theme.js';
8
- import type { SinglePaneProps } from './types.js';
9
-
10
- const {
11
- children,
12
- centered = 'none',
13
- background = true,
14
- full = true,
15
- padding = 'md',
16
- gap = 'md',
17
- rounded = true,
18
- class: className,
19
- contentClass,
20
- ...rest
21
- }: SinglePaneProps = $props();
22
-
23
- const { base, content } = $derived(
24
- singlePane({ padding, gap, centered, full, background, rounded })
25
- );
26
- </script>
27
-
28
- <div class={base({ class: clsx(className) })} {...rest}>
29
- <div class={content({ class: clsx(contentClass) })}>
30
- {@render children()}
31
- </div>
32
- </div>
@@ -1,5 +0,0 @@
1
- import type { SinglePaneProps } from './types.js';
2
- /** SinglePane provides a centered or full-width container for content. */
3
- declare const SinglePane: import("svelte").Component<SinglePaneProps, {}, "">;
4
- type SinglePane = ReturnType<typeof SinglePane>;
5
- export default SinglePane;
@@ -1,124 +0,0 @@
1
- <script module lang="ts">
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import SplitPane from './SplitPane.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Containers/Split Pane',
7
- component: SplitPane,
8
- argTypes: {
9
- anchor: {
10
- control: 'select',
11
- options: ['viewport', 'parent', 'sticky']
12
- },
13
- resizable: { control: 'boolean' },
14
- leftWidth: { control: 'number' },
15
- minLeft: { control: 'number' },
16
- maxLeft: { control: 'number' },
17
- full: { control: 'boolean' },
18
- rounded: { control: 'boolean' },
19
- mobilePane: {
20
- control: 'select',
21
- options: ['left', 'right']
22
- }
23
- },
24
- args: {
25
- anchor: 'parent',
26
- resizable: true,
27
- leftWidth: 320,
28
- minLeft: 240,
29
- maxLeft: 560,
30
- full: false,
31
- rounded: true,
32
- mobilePane: 'right'
33
- }
34
- });
35
- </script>
36
-
37
- <!--
38
- Playground uses anchor="parent" (bounded/relative container) since it's the
39
- only mode that demos meaningfully inside Storybook's iframe canvas — "viewport"
40
- fixes to the true browser edge and "sticky" needs a real scrolling page.
41
- -->
42
- <Story name="Playground">
43
- {#snippet template(args)}
44
- <div
45
- class="relative h-[420px] overflow-hidden rounded-lg border border-md-sys-color-outline-variant"
46
- >
47
- <SplitPane {...args}>
48
- {#snippet left()}
49
- <div class="p-4">
50
- <p class="md-sys-typescale-title-small mb-2">Left pane</p>
51
- <p class="text-md-sys-color-on-surface-variant text-sm">
52
- Drag the handle to resize. Persisted to localStorage when resizable.
53
- </p>
54
- </div>
55
- {/snippet}
56
- {#snippet right()}
57
- <div class="p-4">
58
- <p class="md-sys-typescale-title-small mb-2">Right pane</p>
59
- <p class="text-md-sys-color-on-surface-variant text-sm">Main content area.</p>
60
- </div>
61
- {/snippet}
62
- </SplitPane>
63
- </div>
64
- {/snippet}
65
- </Story>
66
-
67
- <!--
68
- anchor="viewport" — left pane fixes to the true browser edge. Meant for a
69
- full-page app layout where SplitPane is the outermost positioned element
70
- (e.g. the root Rail). Shown here at a reduced height so the fixed left pane
71
- is still visible inside the story canvas.
72
- -->
73
- <Story name="Anchor Viewport" asChild>
74
- <div
75
- class="relative h-[420px] overflow-hidden rounded-lg border border-md-sys-color-outline-variant"
76
- >
77
- <SplitPane anchor="viewport" resizable={false} leftWidth={280}>
78
- {#snippet left()}
79
- <div class="p-4">
80
- <p class="md-sys-typescale-title-small mb-2">Fixed to viewport edge</p>
81
- <p class="text-md-sys-color-on-surface-variant text-sm">
82
- In a real page this pane is position: fixed to the true left edge of the browser.
83
- </p>
84
- </div>
85
- {/snippet}
86
- {#snippet right()}
87
- <div class="p-4">
88
- <p class="text-md-sys-color-on-surface-variant text-sm">Right / main content.</p>
89
- </div>
90
- {/snippet}
91
- </SplitPane>
92
- </div>
93
- </Story>
94
-
95
- <!--
96
- anchor="sticky" — left/right sit in normal flex flow and the left pane
97
- sticks (position: sticky) as the page scrolls. Used for a sidebar nested
98
- inside other already-offset content, e.g. the docs secondary nav. Paired
99
- with resizable={false} for a static, non-draggable sidebar. Needs a tall
100
- scrollable right pane to demonstrate the sticky behaviour.
101
- -->
102
- <Story name="Anchor Sticky" asChild>
103
- <div class="h-[420px] overflow-y-auto rounded-lg border border-md-sys-color-outline-variant">
104
- <SplitPane anchor="sticky" resizable={false} leftWidth={240} rounded={false}>
105
- {#snippet left()}
106
- <div class="p-4">
107
- <p class="md-sys-typescale-title-small mb-2">Sticky nav</p>
108
- <p class="text-md-sys-color-on-surface-variant text-sm">
109
- Stays pinned to the top of the viewport while the right pane scrolls past it.
110
- </p>
111
- </div>
112
- {/snippet}
113
- {#snippet right()}
114
- <div class="flex flex-col gap-4 p-4">
115
- {#each Array(12) as _, i}
116
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
117
- Scrollable content block {i + 1}
118
- </div>
119
- {/each}
120
- </div>
121
- {/snippet}
122
- </SplitPane>
123
- </div>
124
- </Story>
@@ -1,144 +0,0 @@
1
- <!--
2
- @component
3
- SplitPane provides a two-column layout. Set `resizable={false}` for a static,
4
- non-draggable sidebar (e.g. a docs nav) instead of a user-resizable split.
5
- -->
6
- <script lang="ts">
7
- import type { SplitPaneProps } from './types.js';
8
- import { splitPane } from './theme.js';
9
- import { onDestroy, onMount } from 'svelte';
10
- import clsx from 'clsx';
11
-
12
- let dragging = $state(false);
13
-
14
- let {
15
- left,
16
- right,
17
- leftWidth = $bindable(396),
18
- full = true,
19
- rounded = true,
20
- resizable = true,
21
- minLeft = 280,
22
- maxLeft = 720,
23
- storageKey = 'splitpane:leftWidth',
24
- persist = true,
25
- onPaddingChange,
26
- anchor = 'viewport',
27
- mobilePane = 'right',
28
- class: className,
29
- leftClass,
30
- rightClass
31
- }: SplitPaneProps = $props();
32
-
33
- const {
34
- base,
35
- left: lCls,
36
- right: rCls,
37
- handle: hCls,
38
- handleGrip
39
- } = $derived(splitPane({ full, anchor, rounded }));
40
-
41
- const leftMobileClass = $derived(
42
- mobilePane === 'left' ? 'block w-full md:w-[var(--splitpane-left-width)]' : ''
43
- );
44
- const rightMobileClass = $derived(mobilePane === 'left' ? 'hidden md:flex' : '');
45
-
46
- const leftOffset = $derived(anchor === 'viewport' ? 'var(--splitpane-offset, 0px)' : '0px');
47
- const handleOffset = $derived(
48
- anchor === 'viewport'
49
- ? 'calc(var(--splitpane-left-width) + var(--splitpane-offset, 0px))'
50
- : 'var(--splitpane-left-width)'
51
- );
52
-
53
- const clampWidth = (next: number) => Math.min(maxLeft, Math.max(minLeft, next));
54
-
55
- const footerPaddingOffset = 80;
56
-
57
- let dragStartX = 0;
58
- let dragStartWidth = 0;
59
- let mounted = false;
60
-
61
- const startDrag = (event: PointerEvent) => {
62
- dragging = true;
63
- dragStartX = event.clientX;
64
- dragStartWidth = leftWidth;
65
- (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);
66
- };
67
-
68
- const moveDrag = (event: PointerEvent) => {
69
- if (!dragging) return;
70
- const delta = event.clientX - dragStartX;
71
- leftWidth = clampWidth(dragStartWidth + delta);
72
- };
73
-
74
- const endDrag = () => {
75
- dragging = false;
76
- };
77
-
78
- onMount(() => {
79
- mounted = true;
80
-
81
- if (resizable && persist && typeof localStorage !== 'undefined') {
82
- const stored = Number(localStorage.getItem(storageKey));
83
- if (!Number.isNaN(stored)) {
84
- leftWidth = clampWidth(stored);
85
- }
86
- }
87
-
88
- onPaddingChange?.(leftWidth + footerPaddingOffset);
89
- });
90
-
91
- onDestroy(() => {
92
- onPaddingChange?.(0);
93
- });
94
-
95
- $effect(() => {
96
- if (!mounted) return;
97
- onPaddingChange?.(leftWidth + footerPaddingOffset);
98
- });
99
-
100
- $effect(() => {
101
- if (!resizable || !persist || typeof localStorage === 'undefined') return;
102
- localStorage.setItem(storageKey, String(leftWidth));
103
- });
104
- </script>
105
-
106
- <div class={base({ class: clsx(className) })} style={`--splitpane-left-width: ${leftWidth}px;`}>
107
- <!-- LEFT PANE -->
108
- <div
109
- class={lCls({ class: clsx(leftClass, leftMobileClass) })}
110
- style={mobilePane === 'left'
111
- ? `left: ${leftOffset};`
112
- : `width: var(--splitpane-left-width); left: ${leftOffset};`}
113
- >
114
- {@render left()}
115
- </div>
116
-
117
- <!-- DRAG HANDLE -->
118
- {#if resizable}
119
- <div
120
- class={hCls()}
121
- role="separator"
122
- aria-orientation="vertical"
123
- aria-valuenow={leftWidth}
124
- aria-valuemin={minLeft}
125
- aria-valuemax={maxLeft}
126
- style={anchor === 'sticky' ? undefined : `left: ${handleOffset};`}
127
- onpointerdown={startDrag}
128
- onpointermove={moveDrag}
129
- onpointerup={endDrag}
130
- onpointercancel={endDrag}
131
- >
132
- <div
133
- class={handleGrip({
134
- class: clsx(dragging && 'w-0.5')
135
- })}
136
- ></div>
137
- </div>
138
- {/if}
139
-
140
- <!-- RIGHT PANE -->
141
- <div class={rCls({ class: clsx(rightClass, rightMobileClass) })}>
142
- {@render right()}
143
- </div>
144
- </div>
@@ -1,8 +0,0 @@
1
- import type { SplitPaneProps } from './types.js';
2
- /**
3
- * SplitPane provides a two-column layout. Set `resizable={false}` for a static,
4
- * non-draggable sidebar (e.g. a docs nav) instead of a user-resizable split.
5
- */
6
- declare const SplitPane: import("svelte").Component<SplitPaneProps, {}, "leftWidth">;
7
- type SplitPane = ReturnType<typeof SplitPane>;
8
- export default SplitPane;
@@ -1,113 +0,0 @@
1
- <script module lang="ts">
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import SupportingPane from './SupportingPane.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Containers/Supporting Pane',
7
- component: SupportingPane,
8
- argTypes: {
9
- anchor: {
10
- control: 'select',
11
- options: ['viewport', 'parent']
12
- },
13
- position: {
14
- control: 'select',
15
- options: ['left', 'right']
16
- },
17
- centered: { control: 'boolean' },
18
- rounded: { control: 'boolean' },
19
- full: { control: 'boolean' },
20
- gap: {
21
- control: 'select',
22
- options: ['none', 'sm', 'md', 'lg']
23
- },
24
- collapsible: { control: 'boolean' },
25
- supportingWidth: { control: 'number' },
26
- mobileSheet: { control: 'boolean' }
27
- },
28
- args: {
29
- anchor: 'parent',
30
- position: 'right',
31
- centered: false,
32
- rounded: false,
33
- full: false,
34
- gap: 'md',
35
- collapsible: false,
36
- supportingWidth: 320,
37
- mobileSheet: false
38
- }
39
- });
40
- </script>
41
-
42
- <!--
43
- anchor="parent" demos meaningfully in a bounded box (classic sticky-while-
44
- scrolling-the-page behaviour). anchor="viewport" — used by the docs pages'
45
- own "On this page" TOC — fixes the supporting pane to the true browser edge,
46
- which only reads correctly on a real scrolling page, not inside Storybook's
47
- iframe canvas.
48
- -->
49
- <Story name="Playground">
50
- {#snippet template(args)}
51
- <SupportingPane {...args}>
52
- {#snippet main()}
53
- <div class="flex flex-col gap-4 p-4">
54
- {#each Array(6) as _, i}
55
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
56
- Main content block {i + 1}
57
- </div>
58
- {/each}
59
- </div>
60
- {/snippet}
61
- {#snippet supporting()}
62
- <div class="bg-md-sys-color-surface-container rounded-lg p-4">
63
- <p class="md-sys-typescale-title-small mb-2">Supporting content</p>
64
- <p class="text-md-sys-color-on-surface-variant text-sm">
65
- Fixed-width side panel — e.g. a table of contents or contextual actions.
66
- </p>
67
- </div>
68
- {/snippet}
69
- </SupportingPane>
70
- {/snippet}
71
- </Story>
72
-
73
- <Story name="Collapsible" asChild>
74
- <SupportingPane anchor="parent" position="right" collapsible>
75
- {#snippet main()}
76
- <div class="flex flex-col gap-4 p-4">
77
- {#each Array(4) as _, i}
78
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
79
- Main content block {i + 1}
80
- </div>
81
- {/each}
82
- </div>
83
- {/snippet}
84
- {#snippet supporting()}
85
- <div class="bg-md-sys-color-surface-container rounded-lg p-4">
86
- <p class="md-sys-typescale-title-small mb-2">Collapsible panel</p>
87
- <p class="text-md-sys-color-on-surface-variant text-sm">
88
- A toggle button appears over the main pane to hide/show this panel (desktop only).
89
- </p>
90
- </div>
91
- {/snippet}
92
- </SupportingPane>
93
- </Story>
94
-
95
- <Story name="Position Left" asChild>
96
- <SupportingPane anchor="parent" position="left">
97
- {#snippet main()}
98
- <div class="flex flex-col gap-4 p-4">
99
- {#each Array(4) as _, i}
100
- <div class="bg-md-sys-color-surface-container-high rounded-lg p-6">
101
- Main content block {i + 1}
102
- </div>
103
- {/each}
104
- </div>
105
- {/snippet}
106
- {#snippet supporting()}
107
- <div class="bg-md-sys-color-surface-container rounded-lg p-4">
108
- <p class="md-sys-typescale-title-small mb-2">Supporting content</p>
109
- <p class="text-md-sys-color-on-surface-variant text-sm">Panel rendered on the left.</p>
110
- </div>
111
- {/snippet}
112
- </SupportingPane>
113
- </Story>