@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.
- package/bin/material-claude-skill.js +31 -0
- package/claude-skill/material-design/SKILL.md +68 -0
- package/claude-skill/material-design/references/accessibility-checklist.md +29 -0
- package/claude-skill/material-design/references/component-patterns.md +55 -0
- package/claude-skill/material-design/references/motion-guide.md +163 -0
- package/claude-skill/material-design/references/tokens-and-styles.md +68 -0
- package/dist/animation/Shapes.stories.svelte +10 -6
- package/dist/animation/TransitionPatterns.stories.svelte +30 -20
- package/dist/animation/containerTransform.d.ts +4 -2
- package/dist/animation/containerTransform.js +4 -2
- package/dist/animation/enterExit.js +5 -2
- package/dist/animation/skeleton.d.ts +1 -1
- package/dist/animation/skeleton.js +1 -1
- package/dist/components/badge/Badge.mdx +70 -0
- package/dist/components/badge/Badge.stories.svelte +38 -20
- package/dist/components/badge/Badge.svelte +12 -5
- package/dist/components/badge/theme.d.ts +30 -7
- package/dist/components/badge/theme.js +25 -5
- package/dist/components/badge/types.d.ts +18 -4
- package/dist/components/buttons/Button.mdx +85 -0
- package/dist/components/buttons/Button.stories.svelte +62 -27
- package/dist/components/buttons/Button.svelte +29 -25
- package/dist/components/buttons/Button.svelte.d.ts +11 -9
- package/dist/components/buttons/ButtonIcon.mdx +52 -0
- package/dist/components/buttons/ButtonIcon.stories.svelte +72 -48
- package/dist/components/buttons/ButtonIcon.svelte +58 -36
- package/dist/components/buttons/ButtonIcon.svelte.d.ts +9 -7
- package/dist/components/buttons/FAB.mdx +84 -0
- package/dist/components/buttons/FAB.stories.svelte +103 -24
- package/dist/components/buttons/FAB.stories.svelte.d.ts +2 -17
- package/dist/components/buttons/FAB.svelte +353 -29
- package/dist/components/buttons/FAB.svelte.d.ts +11 -6
- package/dist/components/buttons/FABMenu.svelte +27 -8
- package/dist/components/buttons/FABMenu.svelte.d.ts +7 -3
- package/dist/components/buttons/FABMenuItem.svelte +20 -16
- package/dist/components/buttons/FABMenuItem.svelte.d.ts +3 -3
- package/dist/components/buttons/Toggle.stories.svelte +31 -23
- package/dist/components/buttons/Toggle.stories.svelte.d.ts +2 -17
- package/dist/components/buttons/Toggle.svelte +28 -25
- package/dist/components/buttons/Toggle.svelte.d.ts +5 -5
- package/dist/components/buttons/button-group/ButtonGroup.mdx +39 -0
- package/dist/components/buttons/button-group/ButtonGroup.stories.svelte +62 -43
- package/dist/components/buttons/button-group/ButtonGroup.stories.svelte.d.ts +2 -17
- package/dist/components/buttons/button-group/ButtonGroup.svelte +102 -8
- package/dist/components/buttons/button-group/ButtonGroup.svelte.d.ts +6 -7
- package/dist/components/buttons/button-group/theme.d.ts +46 -16
- package/dist/components/buttons/button-group/theme.js +14 -9
- package/dist/components/buttons/button-group/types.d.ts +13 -7
- package/dist/components/buttons/connected/ConnectedButtonGroup.mdx +43 -0
- package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte +56 -74
- package/dist/components/buttons/connected/ConnectedButtonGroup.stories.svelte.d.ts +2 -17
- package/dist/components/buttons/connected/ConnectedButtonGroup.svelte +16 -4
- package/dist/components/buttons/connected/ConnectedButtonGroup.svelte.d.ts +4 -4
- package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte +35 -8
- package/dist/components/buttons/connected/ConnectedButtonGroupItem.svelte.d.ts +2 -3
- package/dist/components/buttons/connected/theme.d.ts +34 -19
- package/dist/components/buttons/connected/theme.js +33 -10
- package/dist/components/buttons/connected/types.d.ts +36 -9
- package/dist/components/buttons/shapeMorph.d.ts +26 -0
- package/dist/components/buttons/shapeMorph.js +142 -0
- package/dist/components/buttons/split-button/SplitButton.mdx +48 -0
- package/dist/components/buttons/split-button/SplitButton.stories.svelte +9 -14
- package/dist/components/buttons/split-button/SplitButton.svelte +66 -49
- package/dist/components/buttons/split-button/SplitButton.svelte.d.ts +6 -11
- package/dist/components/buttons/split-button/theme.d.ts +111 -18
- package/dist/components/buttons/split-button/theme.js +75 -17
- package/dist/components/buttons/split-button/types.d.ts +24 -18
- package/dist/components/buttons/theme.d.ts +423 -231
- package/dist/components/buttons/theme.js +287 -381
- package/dist/components/buttons/types.d.ts +130 -125
- package/dist/components/cards/Card.mdx +44 -0
- package/dist/components/cards/Card.stories.svelte +11 -11
- package/dist/components/cards/theme.js +6 -6
- package/dist/components/chips/Chip.mdx +68 -0
- package/dist/components/chips/Chip.stories.svelte +4 -4
- package/dist/components/chips/theme.d.ts +1 -1
- package/dist/components/chips/theme.js +4 -4
- package/dist/components/containers/action-rail/ActionRail.stories.svelte +1 -0
- package/dist/components/containers/action-rail/theme.d.ts +1 -1
- package/dist/components/containers/action-rail/theme.js +2 -2
- package/dist/components/containers/app/theme.d.ts +1 -1
- package/dist/components/containers/app/theme.js +1 -1
- package/dist/components/containers/bottom-sheet/BottomSheet.mdx +64 -0
- package/dist/components/containers/bottom-sheet/BottomSheet.stories.svelte +108 -12
- package/dist/components/containers/bottom-sheet/BottomSheet.svelte +179 -109
- package/dist/components/containers/bottom-sheet/BottomSheet.svelte.d.ts +10 -5
- package/dist/components/containers/bottom-sheet/index.d.ts +1 -0
- package/dist/components/containers/bottom-sheet/index.js +1 -0
- package/dist/components/containers/bottom-sheet/theme.d.ts +45 -0
- package/dist/components/containers/bottom-sheet/theme.js +42 -0
- package/dist/components/containers/bottom-sheet/types.d.ts +37 -5
- package/dist/components/containers/carousel/Carousel.mdx +80 -0
- package/dist/components/containers/carousel/Carousel.stories.svelte +131 -0
- package/dist/components/containers/carousel/Carousel.stories.svelte.d.ts +4 -0
- package/dist/components/containers/carousel/Carousel.svelte +194 -0
- package/dist/components/containers/carousel/Carousel.svelte.d.ts +25 -0
- package/dist/components/containers/carousel/index.d.ts +3 -0
- package/dist/components/containers/{stack → carousel}/index.js +1 -2
- package/dist/components/containers/carousel/keylines.d.ts +32 -0
- package/dist/components/containers/carousel/keylines.js +88 -0
- package/dist/components/containers/carousel/theme.d.ts +162 -0
- package/dist/components/containers/carousel/theme.js +67 -0
- package/dist/components/containers/carousel/types.d.ts +52 -0
- package/dist/components/containers/context-menu/ContextMenu.stories.svelte +1 -0
- package/dist/components/containers/context-menu/ContextMenu.svelte +2 -2
- package/dist/components/containers/context-menu/ContextMenu.svelte.d.ts +1 -1
- package/dist/components/containers/context-menu/theme.d.ts +1 -1
- package/dist/components/containers/context-menu/theme.js +11 -11
- package/dist/components/containers/dialogue/Dialogue.mdx +65 -0
- package/dist/components/containers/dialogue/Dialogue.stories.svelte +4 -4
- package/dist/components/containers/dialogue/Dialogue.svelte +2 -2
- package/dist/components/containers/dialogue/theme.d.ts +1 -1
- package/dist/components/containers/dialogue/theme.js +4 -4
- package/dist/components/containers/dialogue/types.d.ts +1 -1
- package/dist/components/containers/divider/Divider.stories.svelte +2 -1
- package/dist/components/containers/divider/Divider.svelte +2 -2
- package/dist/components/containers/divider/theme.d.ts +7 -7
- package/dist/components/containers/divider/theme.js +3 -3
- package/dist/components/containers/index.d.ts +1 -1
- package/dist/components/containers/index.js +1 -1
- package/dist/components/containers/link-preview/theme.d.ts +1 -1
- package/dist/components/containers/link-preview/theme.js +3 -3
- package/dist/components/containers/list/List.svelte +18 -0
- package/dist/components/containers/list/List.svelte.d.ts +4 -0
- package/dist/components/containers/list/ListItem.mdx +100 -0
- package/dist/components/containers/list/ListItem.stories.svelte +177 -42
- package/dist/components/containers/list/ListItem.stories.svelte.d.ts +2 -17
- package/dist/components/containers/list/ListItem.svelte +92 -37
- package/dist/components/containers/list/ListItem.svelte.d.ts +1 -1
- package/dist/components/containers/list/context.d.ts +6 -0
- package/dist/components/containers/list/context.js +4 -0
- package/dist/components/containers/list/index.d.ts +1 -0
- package/dist/components/containers/list/index.js +1 -0
- package/dist/components/containers/list/theme.d.ts +487 -12
- package/dist/components/containers/list/theme.js +141 -14
- package/dist/components/containers/list/types.d.ts +39 -5
- package/dist/components/containers/menu/Menu.mdx +52 -0
- package/dist/components/containers/menu/Menu.stories.svelte +14 -14
- package/dist/components/containers/menu/Menu.svelte +2 -2
- package/dist/components/containers/menu/MenuGroup.svelte +1 -1
- package/dist/components/containers/menu/MenuGroup.svelte.d.ts +1 -1
- package/dist/components/containers/menu/MenuSub.svelte +1 -1
- package/dist/components/containers/menu/menu-item/MenuItem.svelte +1 -1
- package/dist/components/containers/menu/theme.d.ts +1 -1
- package/dist/components/containers/menu/theme.js +9 -9
- package/dist/components/containers/pane/DraggablePane.stories.svelte +4 -3
- package/dist/components/containers/pane/DraggablePane.svelte +2 -2
- package/dist/components/containers/pane/Pane.stories.svelte +11 -10
- package/dist/components/containers/pane/Pane.svelte +24 -2
- package/dist/components/containers/pane/PaneGrid.stories.svelte +19 -18
- package/dist/components/containers/pane/PaneGrid.svelte +3 -2
- package/dist/components/containers/pane/PaneGrid.svelte.d.ts +2 -1
- package/dist/components/containers/pane/PaneHandle.svelte +48 -2
- package/dist/components/containers/pane/PaneHandle.svelte.d.ts +4 -0
- package/dist/components/containers/pane/resizeStore.svelte.d.ts +10 -1
- package/dist/components/containers/pane/resizeStore.svelte.js +13 -2
- package/dist/components/containers/pane/theme.d.ts +1 -1
- package/dist/components/containers/pane/theme.js +131 -47
- package/dist/components/containers/pane/types.d.ts +3 -2
- package/dist/components/containers/popover/Popover.mdx +45 -0
- package/dist/components/containers/popover/Popover.stories.svelte +1 -1
- package/dist/components/containers/popover/Popover.svelte +1 -1
- package/dist/components/containers/popover/theme.d.ts +1 -1
- package/dist/components/containers/popover/theme.js +4 -4
- package/dist/components/containers/scroll-area/theme.js +3 -3
- package/dist/components/containers/side-sheet/SideSheet.mdx +71 -0
- package/dist/components/containers/side-sheet/SideSheet.stories.svelte +113 -17
- package/dist/components/containers/side-sheet/SideSheet.svelte +113 -66
- package/dist/components/containers/side-sheet/SideSheet.svelte.d.ts +8 -7
- package/dist/components/containers/side-sheet/index.d.ts +1 -0
- package/dist/components/containers/side-sheet/index.js +1 -0
- package/dist/components/containers/side-sheet/theme.d.ts +108 -0
- package/dist/components/containers/side-sheet/theme.js +72 -0
- package/dist/components/containers/side-sheet/types.d.ts +35 -7
- package/dist/components/date/DateField.stories.svelte +4 -3
- package/dist/components/date/DateField.svelte +11 -2
- package/dist/components/date/DateRangeField.stories.svelte +4 -3
- package/dist/components/date/DateRangeField.svelte +12 -3
- package/dist/components/date/theme.d.ts +8 -8
- package/dist/components/date/theme.js +32 -32
- package/dist/components/forms/checkbox/Checkbox.mdx +35 -0
- package/dist/components/forms/checkbox/Checkbox.stories.svelte +2 -2
- package/dist/components/forms/checkbox/Checkbox.svelte +1 -1
- package/dist/components/forms/checkbox/theme.d.ts +1 -1
- package/dist/components/forms/checkbox/theme.js +4 -4
- package/dist/components/forms/command/Command.stories.svelte +1 -0
- package/dist/components/forms/command/theme.d.ts +1 -1
- package/dist/components/forms/command/theme.js +10 -10
- package/dist/components/forms/pin/theme.d.ts +1 -1
- package/dist/components/forms/pin/theme.js +5 -5
- package/dist/components/forms/radio-group/RadioGroup.svelte +1 -1
- package/dist/components/forms/radio-group/theme.d.ts +1 -1
- package/dist/components/forms/radio-group/theme.js +6 -6
- package/dist/components/forms/search/Search.mdx +38 -0
- package/dist/components/forms/search/Search.stories.svelte +19 -9
- package/dist/components/forms/search/Search.svelte +40 -17
- package/dist/components/forms/search/Search.svelte.d.ts +2 -2
- package/dist/components/forms/search/theme.d.ts +46 -13
- package/dist/components/forms/search/theme.js +14 -9
- package/dist/components/forms/search/types.d.ts +18 -12
- package/dist/components/forms/select/Select.mdx +53 -0
- package/dist/components/forms/select/Select.stories.svelte +4 -4
- package/dist/components/forms/select/Select.svelte +12 -4
- package/dist/components/forms/select/SelectItem.svelte +1 -1
- package/dist/components/forms/select/theme.d.ts +1 -1
- package/dist/components/forms/select/theme.js +14 -14
- package/dist/components/forms/slider/Slider.mdx +85 -0
- package/dist/components/forms/slider/Slider.stories.svelte +7 -7
- package/dist/components/forms/slider/Slider.svelte +46 -28
- package/dist/components/forms/slider/theme.d.ts +15 -1
- package/dist/components/forms/slider/theme.js +29 -18
- package/dist/components/forms/slider/types.d.ts +3 -2
- package/dist/components/forms/switch/Switch.mdx +38 -0
- package/dist/components/forms/switch/Switch.stories.svelte +3 -3
- package/dist/components/forms/switch/theme.d.ts +1 -1
- package/dist/components/forms/switch/theme.js +7 -7
- package/dist/components/forms/textfield/Textfield.mdx +53 -0
- package/dist/components/forms/textfield/Textfield.stories.svelte +6 -6
- package/dist/components/forms/textfield/Textfield.svelte +1 -0
- package/dist/components/forms/textfield/theme.d.ts +1 -1
- package/dist/components/forms/textfield/theme.js +20 -20
- package/dist/components/forms/toggle-group/theme.d.ts +1 -1
- package/dist/components/forms/toggle-group/theme.js +3 -3
- package/dist/components/forms/tooltip/Tooltip.stories.svelte +1 -0
- package/dist/components/forms/tooltip/theme.d.ts +1 -1
- package/dist/components/forms/tooltip/theme.js +4 -4
- package/dist/components/misc/Avatar.stories.svelte +5 -4
- package/dist/components/misc/ThemeSettings.svelte +9 -9
- package/dist/components/misc/ThemeSwitcher.svelte +3 -3
- package/dist/components/misc/theme.js +5 -5
- package/dist/components/nav/appbar/AppBar.mdx +71 -0
- package/dist/components/nav/appbar/AppBar.stories.svelte +93 -3
- package/dist/components/nav/appbar/AppBar.stories.svelte.d.ts +2 -17
- package/dist/components/nav/appbar/AppBar.svelte +90 -37
- package/dist/components/nav/appbar/AppBar.svelte.d.ts +9 -2
- package/dist/components/nav/appbar/theme.d.ts +86 -19
- package/dist/components/nav/appbar/theme.js +160 -24
- package/dist/components/nav/appbar/types.d.ts +46 -9
- package/dist/components/nav/breadcrumb/Breadcrumb.stories.svelte +1 -0
- package/dist/components/nav/breadcrumb/theme.d.ts +1 -1
- package/dist/components/nav/breadcrumb/theme.js +6 -6
- package/dist/components/nav/navbar/Navbar.mdx +38 -0
- package/dist/components/nav/navbar/Navbar.svelte +1 -1
- package/dist/components/nav/navbar/NavbarItem.svelte +12 -9
- package/dist/components/nav/navbar/theme.d.ts +3 -3
- package/dist/components/nav/navbar/theme.js +7 -7
- package/dist/components/nav/rail/Rail.mdx +73 -0
- package/dist/components/nav/rail/Rail.stories.svelte +3 -7
- package/dist/components/nav/rail/Rail.svelte +5 -2
- package/dist/components/nav/rail/RailItem.svelte +12 -9
- package/dist/components/nav/rail/theme.d.ts +1 -1
- package/dist/components/nav/rail/theme.js +14 -14
- package/dist/components/nav/rail/types.d.ts +8 -1
- package/dist/components/nav/tabs/Tabs.mdx +62 -0
- package/dist/components/nav/tabs/Tabs.stories.svelte +1 -1
- package/dist/components/nav/tabs/theme.d.ts +1 -1
- package/dist/components/nav/tabs/theme.js +5 -5
- package/dist/components/pill/Pill.mdx +32 -0
- package/dist/components/pill/Pill.stories.svelte +1 -1
- package/dist/components/pill/theme.d.ts +2 -2
- package/dist/components/pill/theme.js +2 -2
- package/dist/components/progress/LinearProgress.svelte +2 -2
- package/dist/components/progress/Progress.mdx +50 -0
- package/dist/components/progress/Progress.stories.svelte +6 -6
- package/dist/components/snackbar/Snackbar.mdx +52 -0
- package/dist/components/snackbar/Snackbar.stories.svelte +5 -5
- package/dist/components/snackbar/Snackbar.svelte +1 -1
- package/dist/components/snackbar/theme.d.ts +4 -4
- package/dist/components/snackbar/theme.js +5 -5
- package/dist/components/table/Table.stories.svelte +1 -0
- package/dist/components/table/TableHeader.svelte +1 -1
- package/dist/components/table/theme.d.ts +1 -1
- package/dist/components/table/theme.js +4 -4
- package/dist/components/time/TimeField.stories.svelte +3 -2
- package/dist/components/time/TimeField.svelte +2 -2
- package/dist/components/time/TimepickerInput.svelte +1 -1
- package/dist/components/time/theme.d.ts +1 -1
- package/dist/components/time/theme.js +6 -6
- package/dist/components/toolbar/Toolbar.stories.svelte +1 -0
- package/dist/components/toolbar/Toolbar.svelte +1 -1
- package/dist/components/toolbar/Toolbar.svelte.d.ts +1 -1
- package/dist/components/toolbar/theme.d.ts +1 -1
- package/dist/components/toolbar/theme.js +15 -15
- package/dist/components/typography/Typography.mdx +67 -0
- package/dist/components/typography/body/Body.stories.svelte +2 -1
- package/dist/components/typography/body/theme.d.ts +16 -13
- package/dist/components/typography/body/theme.js +20 -5
- package/dist/components/typography/body/types.d.ts +2 -1
- package/dist/components/typography/display/Display.stories.svelte +2 -1
- package/dist/components/typography/display/theme.d.ts +16 -13
- package/dist/components/typography/display/theme.js +20 -5
- package/dist/components/typography/display/types.d.ts +2 -1
- package/dist/components/typography/headline/Headline.stories.svelte +2 -1
- package/dist/components/typography/headline/theme.d.ts +16 -13
- package/dist/components/typography/headline/theme.js +20 -5
- package/dist/components/typography/headline/types.d.ts +2 -1
- package/dist/components/typography/kbd/Kbd.stories.svelte +2 -1
- package/dist/components/typography/kbd/theme.d.ts +5 -5
- package/dist/components/typography/kbd/theme.js +3 -3
- package/dist/components/typography/label/Label.stories.svelte +2 -1
- package/dist/components/typography/label/theme.d.ts +15 -12
- package/dist/components/typography/label/theme.js +20 -5
- package/dist/components/typography/label/types.d.ts +2 -1
- package/dist/components/typography/title/Title.stories.svelte +2 -1
- package/dist/components/typography/title/theme.d.ts +16 -13
- package/dist/components/typography/title/theme.js +20 -5
- package/dist/components/typography/title/types.d.ts +2 -1
- package/dist/index.css +2 -0
- package/dist/styles/component.css +78 -175
- package/dist/styles/elevation.css +9 -0
- package/dist/styles/layers.css +33 -0
- package/dist/styles/spacing.css +29 -0
- package/dist/styles/typescale.css +635 -20
- package/dist/utils/Layer.svelte +1 -1
- package/dist/utils/icon/Icon.svelte +8 -6
- package/dist/utils/icon/theme.d.ts +1 -1
- package/dist/utils/icon/theme.js +1 -1
- package/dist/utils/tv.d.ts +6 -0
- package/dist/utils/tv.js +12 -0
- package/package.json +19 -15
- package/dist/components/containers/stack/HStack.svelte +0 -23
- package/dist/components/containers/stack/HStack.svelte.d.ts +0 -5
- package/dist/components/containers/stack/VStack.svelte +0 -23
- package/dist/components/containers/stack/VStack.svelte.d.ts +0 -5
- package/dist/components/containers/stack/index.d.ts +0 -4
- package/dist/components/containers/stack/theme.d.ts +0 -66
- package/dist/components/containers/stack/theme.js +0 -26
- package/dist/components/containers/stack/types.d.ts +0 -12
- /package/dist/components/containers/{stack → carousel}/types.js +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { tv } from '
|
|
1
|
+
import { tv } from '../../../utils/tv.js';
|
|
2
2
|
export const rail = tv({
|
|
3
3
|
slots: {
|
|
4
|
-
base: 'py-
|
|
5
|
-
items: 'flex flex-col gap-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
85
|
-
iconContainer: 'h-
|
|
86
|
-
icon: 'size-
|
|
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
|
-
/**
|
|
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
|
|
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 '
|
|
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 '
|
|
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-
|
|
22
|
+
icon: 'size-spacing-300 text-[24px]'
|
|
23
23
|
},
|
|
24
24
|
variants: {
|
|
25
25
|
variant: {
|
|
26
26
|
primary: {
|
|
27
|
-
base: 'h-
|
|
27
|
+
base: 'h-spacing-800 gap-spacing-50 py-spacing-150'
|
|
28
28
|
},
|
|
29
29
|
secondary: {
|
|
30
|
-
base: 'h-
|
|
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
|
|
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 '
|
|
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-
|
|
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 '
|
|
1
|
+
import { tv } from '../../utils/tv.js';
|
|
2
2
|
export const pill = tv({
|
|
3
|
-
base: 'relative inline-flex items-center justify-center px-
|
|
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 '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 '
|
|
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-
|
|
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-
|
|
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-
|
|
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 '
|
|
1
|
+
import { tv } from '../../utils/tv.js';
|
|
2
2
|
export const snackbar = tv({
|
|
3
3
|
slots: {
|
|
4
|
-
base: 'rounded-xs relative min-h-
|
|
5
|
-
label: 'text-md-sys-color-inverse-primary md-sys-typescale-label-large px-
|
|
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-
|
|
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-
|
|
12
|
+
true: 'fixed bottom-20 md:bottom-spacing-300 left-1/2 -translate-x-1/2',
|
|
13
13
|
false: ''
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -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
|
|
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 { tv } from '
|
|
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-
|
|
10
|
-
header: 'px-
|
|
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
|
|
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
|
|
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="
|
|
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-
|
|
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 '
|
|
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]: {
|