@noxlovette/material 0.3.3 → 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 (288) 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/package.json +38 -37
  259. package/bin/install-skill.js +0 -29
  260. package/dist/components/buttons/button-group/ButtonGroupItem.svelte +0 -41
  261. package/dist/components/buttons/button-group/ButtonGroupItem.svelte.d.ts +0 -8
  262. package/dist/components/buttons/connected/ConnectedButtons.svelte +0 -14
  263. package/dist/components/buttons/connected/ConnectedButtons.svelte.d.ts +0 -8
  264. package/dist/components/containers/menu-item/MenuItem.svelte +0 -74
  265. package/dist/components/containers/merger/InputMerger.svelte +0 -24
  266. package/dist/components/containers/merger/InputMerger.svelte.d.ts +0 -14
  267. package/dist/components/containers/merger/index.d.ts +0 -2
  268. package/dist/components/containers/merger/theme.d.ts +0 -1
  269. package/dist/components/containers/merger/theme.js +0 -4
  270. package/dist/components/containers/panes/SinglePane.stories.svelte +0 -67
  271. package/dist/components/containers/panes/SinglePane.svelte +0 -32
  272. package/dist/components/containers/panes/SinglePane.svelte.d.ts +0 -5
  273. package/dist/components/containers/panes/SplitPane.stories.svelte +0 -124
  274. package/dist/components/containers/panes/SplitPane.svelte +0 -144
  275. package/dist/components/containers/panes/SplitPane.svelte.d.ts +0 -8
  276. package/dist/components/containers/panes/SupportingPane.stories.svelte +0 -113
  277. package/dist/components/containers/panes/SupportingPane.svelte +0 -175
  278. package/dist/components/containers/panes/SupportingPane.svelte.d.ts +0 -9
  279. package/dist/components/containers/panes/index.d.ts +0 -5
  280. package/dist/components/containers/panes/theme.d.ts +0 -490
  281. package/dist/components/containers/panes/theme.js +0 -185
  282. package/dist/components/containers/panes/types.d.ts +0 -108
  283. package/dist/components/nav/rail/RailNavContext.svelte +0 -14
  284. package/dist/components/nav/rail/RailNavContext.svelte.d.ts +0 -8
  285. /package/dist/components/{containers/menu-item → buttons/split-button}/types.js +0 -0
  286. /package/dist/components/{containers/panes → chips}/types.js +0 -0
  287. /package/dist/components/containers/{menu-item → menu/menu-item}/index.d.ts +0 -0
  288. /package/dist/components/containers/{menu-item → menu/menu-item}/index.js +0 -0
@@ -2,20 +2,86 @@
2
2
  @component
3
3
  Side sheets are supplementary surfaces which are anchored to the edge of the screen.
4
4
 
5
+ Like BottomSheet, SideSheet owns its own overlay: it renders as a native `<dialog>` pinned to
6
+ the right edge of the screen, dims the rest of the app behind a backdrop, and slides in/out.
7
+ Mounting it calls `showModal()` immediately, so visibility is controlled by conditionally
8
+ rendering the component ({#if open}<SideSheet ...>{/if}).
9
+
5
10
  @see https://m3.material.io/components/side-sheets/guidelines
6
11
  -->
7
12
  <script lang="ts">
8
13
  import type { SideSheetProps } from './types.js';
14
+ import type { TransitionConfig } from 'svelte/transition';
9
15
  import ButtonIcon from '../../buttons/ButtonIcon.svelte';
16
+ import { easeEmphasizedAccel, easeEmphasizedDecel } from '../../../animation/easing.js';
17
+ import { outroClass } from '../../../animation/outroClass.js';
10
18
 
11
19
  let { headline, children, close }: SideSheetProps = $props();
20
+
21
+ const open = (node: HTMLDialogElement) => node.showModal();
22
+
23
+ const slideAnim = (
24
+ node: HTMLDialogElement,
25
+ options: { duration: number; easing: typeof easeEmphasizedDecel }
26
+ ): TransitionConfig => {
27
+ const width = node.getBoundingClientRect().width;
28
+ return {
29
+ duration: options.duration,
30
+ easing: options.easing,
31
+ css: (t) => `transform: translateX(${(1 - t) * width}px)`
32
+ };
33
+ };
12
34
  </script>
13
35
 
14
- <div class="flex flex-col">
15
- <div class="flex items-center justify-between p-6">
16
- <span class="md-sys-typescale-title-large text-md-sys-color-on-surface-variant">{headline}</span
17
- >
18
- <ButtonIcon type="button" variant="text" iconProps={{ name: 'close' }} onclick={close} />
36
+ <dialog
37
+ class="bg-md-sys-color-surface-container-low fixed inset-y-0 right-0 left-auto m-0 h-full w-full max-w-sm rounded-l-md"
38
+ use:open
39
+ use:outroClass
40
+ oncancel={(e) => {
41
+ e.preventDefault();
42
+ close();
43
+ }}
44
+ onmousedown={(e) => {
45
+ if (e.target != e.currentTarget) return;
46
+ close();
47
+ }}
48
+ in:slideAnim={{ easing: easeEmphasizedDecel, duration: 400 }}
49
+ out:slideAnim={{ easing: easeEmphasizedAccel, duration: 300 }}
50
+ >
51
+ <div class="flex h-full flex-col">
52
+ <div class="flex items-center justify-between p-6">
53
+ <span class="md-sys-typescale-title-large text-md-sys-color-on-surface-variant"
54
+ >{headline}</span
55
+ >
56
+ <ButtonIcon type="button" variant="text" iconProps={{ name: 'close' }} onclick={close} />
57
+ </div>
58
+ {@render children()}
19
59
  </div>
20
- {@render children()}
21
- </div>
60
+ </dialog>
61
+
62
+ <style>
63
+ dialog::backdrop {
64
+ background-color: rgba(0, 0, 0, 0.5);
65
+ animation: backdrop 400ms;
66
+ }
67
+ dialog:global(.leaving)::backdrop {
68
+ background-color: transparent;
69
+ animation: backdropReverse 400ms;
70
+ }
71
+ @keyframes backdrop {
72
+ from {
73
+ background-color: transparent;
74
+ }
75
+ to {
76
+ background-color: rgba(0, 0, 0, 0.5);
77
+ }
78
+ }
79
+ @keyframes backdropReverse {
80
+ from {
81
+ background-color: rgba(0, 0, 0, 0.5);
82
+ }
83
+ to {
84
+ background-color: transparent;
85
+ }
86
+ }
87
+ </style>
@@ -2,6 +2,11 @@ import type { SideSheetProps } from './types.js';
2
2
  /**
3
3
  * Side sheets are supplementary surfaces which are anchored to the edge of the screen.
4
4
  *
5
+ * Like BottomSheet, SideSheet owns its own overlay: it renders as a native `<dialog>` pinned to
6
+ * the right edge of the screen, dims the rest of the app behind a backdrop, and slides in/out.
7
+ * Mounting it calls `showModal()` immediately, so visibility is controlled by conditionally
8
+ * rendering the component ({#if open}<SideSheet ...>{/if}).
9
+ *
5
10
  * @see https://m3.material.io/components/side-sheets/guidelines
6
11
  */
7
12
  declare const SideSheet: import("svelte").Component<SideSheetProps, {}, "">;
@@ -2,65 +2,65 @@ import { type VariantProps } from 'tailwind-variants';
2
2
  export type StackVariants = VariantProps<typeof stack>;
3
3
  export declare const stack: import("tailwind-variants").TVReturnType<{
4
4
  type: {
5
- vstack: string;
6
- hstack: string;
7
- vFlip: string;
8
- hFlip: string;
9
- zstaack: string;
5
+ vstack: "flex-row";
6
+ hstack: "flex-col";
7
+ vFlip: "md:flex-row flex-col";
8
+ hFlip: "md:flex-col flex-row";
9
+ zstaack: "flex";
10
10
  };
11
11
  size: {
12
- full: string;
13
- w: string;
14
- h: string;
12
+ full: "size-full";
13
+ w: "w-full";
14
+ h: "h-full";
15
15
  };
16
16
  gap: {
17
- none: string;
18
- xs: string;
19
- sm: string;
20
- md: string;
21
- lg: string;
22
- xl: string;
17
+ none: "gap-0";
18
+ xs: "gap-1";
19
+ sm: "gap-2";
20
+ md: "gap-3";
21
+ lg: "gap-4";
22
+ xl: "gap-6";
23
23
  };
24
24
  }, undefined, "flex relative", {
25
25
  type: {
26
- vstack: string;
27
- hstack: string;
28
- vFlip: string;
29
- hFlip: string;
30
- zstaack: string;
26
+ vstack: "flex-row";
27
+ hstack: "flex-col";
28
+ vFlip: "md:flex-row flex-col";
29
+ hFlip: "md:flex-col flex-row";
30
+ zstaack: "flex";
31
31
  };
32
32
  size: {
33
- full: string;
34
- w: string;
35
- h: string;
33
+ full: "size-full";
34
+ w: "w-full";
35
+ h: "h-full";
36
36
  };
37
37
  gap: {
38
- none: string;
39
- xs: string;
40
- sm: string;
41
- md: string;
42
- lg: string;
43
- xl: string;
38
+ none: "gap-0";
39
+ xs: "gap-1";
40
+ sm: "gap-2";
41
+ md: "gap-3";
42
+ lg: "gap-4";
43
+ xl: "gap-6";
44
44
  };
45
- }, undefined, import("tailwind-variants").TVReturnType<{
45
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
46
46
  type: {
47
- vstack: string;
48
- hstack: string;
49
- vFlip: string;
50
- hFlip: string;
51
- zstaack: string;
47
+ vstack: "flex-row";
48
+ hstack: "flex-col";
49
+ vFlip: "md:flex-row flex-col";
50
+ hFlip: "md:flex-col flex-row";
51
+ zstaack: "flex";
52
52
  };
53
53
  size: {
54
- full: string;
55
- w: string;
56
- h: string;
54
+ full: "size-full";
55
+ w: "w-full";
56
+ h: "h-full";
57
57
  };
58
58
  gap: {
59
- none: string;
60
- xs: string;
61
- sm: string;
62
- md: string;
63
- lg: string;
64
- xl: string;
59
+ none: "gap-0";
60
+ xs: "gap-1";
61
+ sm: "gap-2";
62
+ md: "gap-3";
63
+ lg: "gap-4";
64
+ xl: "gap-6";
65
65
  };
66
- }, undefined, "flex relative", unknown, unknown, undefined>>;
66
+ }, undefined>>;
@@ -0,0 +1,57 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import DateField from './DateField.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Date/DateField',
7
+ component: DateField,
8
+ argTypes: {
9
+ label: { control: 'text' },
10
+ variant: { control: 'select', options: ['filled', 'outlined'] },
11
+ disabled: { control: 'boolean' },
12
+ error: { control: 'boolean' },
13
+ required: { control: 'boolean' }
14
+ },
15
+ args: {
16
+ label: 'Date of birth',
17
+ variant: 'outlined',
18
+ disabled: false,
19
+ error: false,
20
+ required: false
21
+ }
22
+ });
23
+ </script>
24
+
25
+ <Story name="Playground">
26
+ {#snippet template(args)}
27
+ <div class="max-w-sm p-6">
28
+ <DateField {...args} />
29
+ </div>
30
+ {/snippet}
31
+ </Story>
32
+
33
+ <Story name="Outlined States" asChild>
34
+ <div class="flex max-w-sm flex-col gap-6 p-6">
35
+ <DateField variant="outlined" label="Default" />
36
+ <DateField variant="outlined" label="Required" required />
37
+ <DateField variant="outlined" label="Error" error>
38
+ {#snippet supportingText()}
39
+ This field is required.
40
+ {/snippet}
41
+ </DateField>
42
+ <DateField variant="outlined" label="Disabled" disabled />
43
+ </div>
44
+ </Story>
45
+
46
+ <Story name="Filled States" asChild>
47
+ <div class="flex max-w-sm flex-col gap-6 p-6">
48
+ <DateField variant="filled" label="Default" />
49
+ <DateField variant="filled" label="Required" required />
50
+ <DateField variant="filled" label="Error" error>
51
+ {#snippet supportingText()}
52
+ This field is required.
53
+ {/snippet}
54
+ </DateField>
55
+ <DateField variant="filled" label="Disabled" disabled />
56
+ </div>
57
+ </Story>
@@ -1,4 +1,4 @@
1
- import SplitPane from './SplitPane.svelte';
1
+ import DateField from './DateField.svelte';
2
2
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
3
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
4
  $$bindings?: Bindings;
@@ -12,8 +12,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
12
12
  };
13
13
  z_$$bindings?: Bindings;
14
14
  }
15
- declare const SplitPane: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ declare const DateField: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
16
  [evt: string]: CustomEvent<any>;
17
17
  }, {}, {}, string>;
18
- type SplitPane = InstanceType<typeof SplitPane>;
19
- export default SplitPane;
18
+ type DateField = InstanceType<typeof DateField>;
19
+ export default DateField;
@@ -19,12 +19,13 @@ DateField is a text field that allows users to enter a date or pick it from a ca
19
19
  required = false,
20
20
  disabled = false,
21
21
  error = false,
22
+ variant = 'outlined',
22
23
  supportingText,
23
24
  name,
24
25
  leadingIconProps
25
26
  }: DateFieldProps & { leadingIconProps?: any } = $props();
26
27
 
27
- const cls = $derived(dateField({ disabled, error }));
28
+ const cls = $derived(dateField({ disabled, error, variant }));
28
29
  </script>
29
30
 
30
31
  <DatePicker.Root
@@ -45,7 +46,7 @@ DateField is a text field that allows users to enter a date or pick it from a ca
45
46
  <div class={cls.inputWrapper()}>
46
47
  <DatePicker.Input class={cls.input()} {name} id={id ?? undefined}>
47
48
  {#snippet children({ segments })}
48
- <div class="flex w-full flex-col pt-4 tabular-nums">
49
+ <div class={cls.segments()}>
49
50
  <div class="flex items-center justify-between">
50
51
  <div class="flex">
51
52
  {#each segments as { part, value }}
@@ -86,6 +87,14 @@ DateField is a text field that allows users to enter a date or pick it from a ca
86
87
  <DatePicker.Trigger class={cls.trailingIcon({ class: 'flex items-center justify-center' })}>
87
88
  <Icon name="calendar_month" />
88
89
  </DatePicker.Trigger>
90
+
91
+ {#if variant === 'outlined'}
92
+ <fieldset class={cls.fieldset()} aria-hidden="true">
93
+ <legend class={cls.legend()}>
94
+ <span class={cls.legendLabel()}>{label}{required ? '*' : ''}</span>
95
+ </legend>
96
+ </fieldset>
97
+ {/if}
89
98
  </div>
90
99
 
91
100
  {#if supportingText}
@@ -0,0 +1,53 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import DateRangeField from './DateRangeField.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Date/DateRangeField',
7
+ component: DateRangeField,
8
+ argTypes: {
9
+ variant: { control: 'select', options: ['filled', 'outlined'] },
10
+ disabled: { control: 'boolean' },
11
+ error: { control: 'boolean' },
12
+ required: { control: 'boolean' }
13
+ },
14
+ args: {
15
+ variant: 'outlined',
16
+ disabled: false,
17
+ error: false,
18
+ required: false
19
+ }
20
+ });
21
+ </script>
22
+
23
+ <Story name="Playground">
24
+ {#snippet template(args)}
25
+ <div class="max-w-sm p-6">
26
+ <DateRangeField {...args} />
27
+ </div>
28
+ {/snippet}
29
+ </Story>
30
+
31
+ <Story name="Outlined States" asChild>
32
+ <div class="flex max-w-sm flex-col gap-6 p-6">
33
+ <DateRangeField variant="outlined" />
34
+ <DateRangeField variant="outlined" error>
35
+ {#snippet supportingText()}
36
+ This field is required.
37
+ {/snippet}
38
+ </DateRangeField>
39
+ <DateRangeField variant="outlined" disabled />
40
+ </div>
41
+ </Story>
42
+
43
+ <Story name="Filled States" asChild>
44
+ <div class="flex max-w-sm flex-col gap-6 p-6">
45
+ <DateRangeField variant="filled" />
46
+ <DateRangeField variant="filled" error>
47
+ {#snippet supportingText()}
48
+ This field is required.
49
+ {/snippet}
50
+ </DateRangeField>
51
+ <DateRangeField variant="filled" disabled />
52
+ </div>
53
+ </Story>
@@ -1,4 +1,4 @@
1
- import SupportingPane from './SupportingPane.svelte';
1
+ import DateRangeField from './DateRangeField.svelte';
2
2
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
3
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
4
  $$bindings?: Bindings;
@@ -12,8 +12,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
12
12
  };
13
13
  z_$$bindings?: Bindings;
14
14
  }
15
- declare const SupportingPane: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ declare const DateRangeField: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
16
  [evt: string]: CustomEvent<any>;
17
17
  }, {}, {}, string>;
18
- type SupportingPane = InstanceType<typeof SupportingPane>;
19
- export default SupportingPane;
18
+ type DateRangeField = InstanceType<typeof DateRangeField>;
19
+ export default DateRangeField;
@@ -22,12 +22,13 @@ segment inputs and a shared calendar popover.
22
22
  required = false,
23
23
  disabled = false,
24
24
  error = false,
25
+ variant = 'outlined',
25
26
  supportingText,
26
27
  name,
27
28
  leadingIconProps
28
29
  }: DateRangeFieldProps & { leadingIconProps?: any } = $props();
29
30
 
30
- const cls = $derived(dateRangeField({ disabled, error }));
31
+ const cls = $derived(dateRangeField({ disabled, error, variant }));
31
32
  </script>
32
33
 
33
34
  <DateRangePicker.Root
@@ -2,6 +2,14 @@ import { type VariantProps } from 'tailwind-variants';
2
2
  export type DateFieldVariants = VariantProps<typeof dateField>;
3
3
  export type DateRangeFieldVariants = VariantProps<typeof dateRangeField>;
4
4
  export declare const dateRangeField: import("tailwind-variants").TVReturnType<{
5
+ variant: {
6
+ filled: {
7
+ base: string;
8
+ };
9
+ outlined: {
10
+ base: string;
11
+ };
12
+ };
5
13
  error: {
6
14
  true: {
7
15
  base: string;
@@ -28,6 +36,14 @@ export declare const dateRangeField: import("tailwind-variants").TVReturnType<{
28
36
  requiredAsterisk: string;
29
37
  supportingText: string;
30
38
  }, undefined, {
39
+ variant: {
40
+ filled: {
41
+ base: string;
42
+ };
43
+ outlined: {
44
+ base: string;
45
+ };
46
+ };
31
47
  error: {
32
48
  true: {
33
49
  base: string;
@@ -53,7 +69,15 @@ export declare const dateRangeField: import("tailwind-variants").TVReturnType<{
53
69
  label: string;
54
70
  requiredAsterisk: string;
55
71
  supportingText: string;
56
- }, import("tailwind-variants").TVReturnType<{
72
+ }, import("tailwind-variants").TVReturnTypeLike<{
73
+ variant: {
74
+ filled: {
75
+ base: string;
76
+ };
77
+ outlined: {
78
+ base: string;
79
+ };
80
+ };
57
81
  error: {
58
82
  true: {
59
83
  base: string;
@@ -79,8 +103,17 @@ export declare const dateRangeField: import("tailwind-variants").TVReturnType<{
79
103
  label: string;
80
104
  requiredAsterisk: string;
81
105
  supportingText: string;
82
- }, undefined, unknown, unknown, undefined>>;
106
+ }>>;
83
107
  export declare const dateField: import("tailwind-variants").TVReturnType<{
108
+ variant: {
109
+ filled: {
110
+ base: string;
111
+ segments: string;
112
+ };
113
+ outlined: {
114
+ label: string;
115
+ };
116
+ };
84
117
  error: {
85
118
  true: {
86
119
  base: string;
@@ -89,23 +122,38 @@ export declare const dateField: import("tailwind-variants").TVReturnType<{
89
122
  supportingText: string;
90
123
  leadingIcon: string;
91
124
  trailingIcon: string;
125
+ fieldset: string;
92
126
  };
93
127
  };
94
128
  disabled: {
95
129
  true: {
96
130
  base: string;
131
+ fieldset: string;
97
132
  };
98
133
  };
99
134
  }, {
100
135
  base: string;
101
136
  inputWrapper: string;
102
137
  input: string;
138
+ segments: string;
103
139
  leadingIcon: string;
104
140
  trailingIcon: string;
105
141
  label: string;
106
142
  requiredAsterisk: string;
107
143
  supportingText: string;
144
+ fieldset: string;
145
+ legend: string;
146
+ legendLabel: string;
108
147
  }, undefined, {
148
+ variant: {
149
+ filled: {
150
+ base: string;
151
+ segments: string;
152
+ };
153
+ outlined: {
154
+ label: string;
155
+ };
156
+ };
109
157
  error: {
110
158
  true: {
111
159
  base: string;
@@ -114,23 +162,38 @@ export declare const dateField: import("tailwind-variants").TVReturnType<{
114
162
  supportingText: string;
115
163
  leadingIcon: string;
116
164
  trailingIcon: string;
165
+ fieldset: string;
117
166
  };
118
167
  };
119
168
  disabled: {
120
169
  true: {
121
170
  base: string;
171
+ fieldset: string;
122
172
  };
123
173
  };
124
174
  }, {
125
175
  base: string;
126
176
  inputWrapper: string;
127
177
  input: string;
178
+ segments: string;
128
179
  leadingIcon: string;
129
180
  trailingIcon: string;
130
181
  label: string;
131
182
  requiredAsterisk: string;
132
183
  supportingText: string;
133
- }, import("tailwind-variants").TVReturnType<{
184
+ fieldset: string;
185
+ legend: string;
186
+ legendLabel: string;
187
+ }, import("tailwind-variants").TVReturnTypeLike<{
188
+ variant: {
189
+ filled: {
190
+ base: string;
191
+ segments: string;
192
+ };
193
+ outlined: {
194
+ label: string;
195
+ };
196
+ };
134
197
  error: {
135
198
  true: {
136
199
  base: string;
@@ -139,20 +202,26 @@ export declare const dateField: import("tailwind-variants").TVReturnType<{
139
202
  supportingText: string;
140
203
  leadingIcon: string;
141
204
  trailingIcon: string;
205
+ fieldset: string;
142
206
  };
143
207
  };
144
208
  disabled: {
145
209
  true: {
146
210
  base: string;
211
+ fieldset: string;
147
212
  };
148
213
  };
149
214
  }, {
150
215
  base: string;
151
216
  inputWrapper: string;
152
217
  input: string;
218
+ segments: string;
153
219
  leadingIcon: string;
154
220
  trailingIcon: string;
155
221
  label: string;
156
222
  requiredAsterisk: string;
157
223
  supportingText: string;
158
- }, undefined, unknown, unknown, undefined>>;
224
+ fieldset: string;
225
+ legend: string;
226
+ legendLabel: string;
227
+ }>>;