@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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Meta, Title, Subtitle, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as FABStories from './FAB.stories.svelte';
|
|
3
|
+
|
|
4
|
+
<Meta of={FABStories} />
|
|
5
|
+
|
|
6
|
+
<Title />
|
|
7
|
+
|
|
8
|
+
<Subtitle>FABs help people take the primary action on a screen.</Subtitle>
|
|
9
|
+
|
|
10
|
+
[FAB spec](https://m3.material.io/components/floating-action-button/specs) ·
|
|
11
|
+
[Extended FAB spec](https://m3.material.io/components/extended-fab/specs) ·
|
|
12
|
+
[FAB menu spec](https://m3.material.io/components/fab-menu/specs) ·
|
|
13
|
+
`import { FAB, FABMenuItem } from '@noxlovette/material';`
|
|
14
|
+
|
|
15
|
+
<Canvas of={FABStories.Playground} />
|
|
16
|
+
|
|
17
|
+
<Controls of={FABStories.Playground} />
|
|
18
|
+
|
|
19
|
+
## Sizes
|
|
20
|
+
|
|
21
|
+
| `size` | FAB | Icon | Corners | Extended: label, padding, gap |
|
|
22
|
+
| --------- | ---- | ---- | ------- | ----------------------------- |
|
|
23
|
+
| `regular` | 56dp | 24dp | 16dp | title medium, 16dp, 8dp |
|
|
24
|
+
| `medium` | 80dp | 28dp | 20dp | title large, 26dp, 12dp |
|
|
25
|
+
| `large` | 96dp | 36dp | 28dp | headline small, 28dp, 16dp |
|
|
26
|
+
| `small` | 40dp | 24dp | 12dp | none |
|
|
27
|
+
|
|
28
|
+
`small` is the baseline small FAB, which M3 no longer recommends. FABs sit at elevation 3 and
|
|
29
|
+
rise to 4 on hover. Keep 16dp from the window edges.
|
|
30
|
+
|
|
31
|
+
<Canvas of={FABStories.Sizes} />
|
|
32
|
+
|
|
33
|
+
## Colour
|
|
34
|
+
|
|
35
|
+
`primary-container` (default), `secondary-container` and `tertiary-container`, or the stronger
|
|
36
|
+
`primary`, `secondary` and `tertiary`. The state layer always takes the icon's colour.
|
|
37
|
+
|
|
38
|
+
<Canvas of={FABStories.Colours} />
|
|
39
|
+
|
|
40
|
+
## FAB and extended FAB
|
|
41
|
+
|
|
42
|
+
Give the FAB a `label` and it becomes an extended FAB where there's room. The two transform
|
|
43
|
+
into each other with the space available, so `expanded` is responsive:
|
|
44
|
+
|
|
45
|
+
- **Default:** a FAB on compact windows, an extended FAB from medium windows up
|
|
46
|
+
(`{ small: false, medium: true }`).
|
|
47
|
+
- **In a `Rail`:** a FAB while the rail is collapsed, an extended FAB while it's expanded.
|
|
48
|
+
- **Your own:** pass `true`, `false`, or per-window values; toggle it to collapse the label
|
|
49
|
+
while the page scrolls.
|
|
50
|
+
|
|
51
|
+
The label slides open and shut on the spatial spring. It also names the FAB for assistive
|
|
52
|
+
technology when collapsed; a FAB without a label needs an `aria-label`.
|
|
53
|
+
|
|
54
|
+
<Canvas of={FABStories.Extended} />
|
|
55
|
+
|
|
56
|
+
<Canvas of={FABStories.Responsive} />
|
|
57
|
+
|
|
58
|
+
## FAB menu
|
|
59
|
+
|
|
60
|
+
`withMenu` opens up to six `FABMenuItem`s above the FAB, which springs into a 56dp round close
|
|
61
|
+
button in the same top trailing corner. The close button is 56dp whatever the FAB's size, as
|
|
62
|
+
M3 specifies, so a medium or large FAB shrinks into it. The items grow out of it one after
|
|
63
|
+
another, nearest first. Items are 56dp pills 4dp apart, 8dp above the close
|
|
64
|
+
button, in the FAB's colour set: a primary, secondary or tertiary close button with items in the
|
|
65
|
+
matching container colour. The menu takes arrow keys, Escape and outside clicks.
|
|
66
|
+
|
|
67
|
+
<Canvas of={FABStories.FabMenu} />
|
|
68
|
+
|
|
69
|
+
## Container transform
|
|
70
|
+
|
|
71
|
+
Pass a `surface` snippet and the FAB opens into it: the FAB's container grows from its corner
|
|
72
|
+
into the surface and turns from the FAB's colour into the surface's, and the content fades in
|
|
73
|
+
once it has room (M3's container transform, with a persistent container). It shrinks back on
|
|
74
|
+
Escape, an outside click, or the snippet's `close()`, and focus returns to the FAB. Keep the
|
|
75
|
+
FAB's icon in the surface, as on the "Compose new" row below, so the icon persists too.
|
|
76
|
+
|
|
77
|
+
<Canvas of={FABStories.ContainerTransform} />
|
|
78
|
+
|
|
79
|
+
## Migrating
|
|
80
|
+
|
|
81
|
+
`config` is now `color`, with the Expressive names: the old `primary` is now `primary-container`
|
|
82
|
+
(the default). `size` gains `medium`. `FABMenuItem` loses `variant`; items follow the FAB's
|
|
83
|
+
colour. `expanded` now defaults to responsive instead of `false`, so a labelled FAB extends on
|
|
84
|
+
wider windows; pass `expanded={false}` to keep the old behaviour.
|
|
@@ -2,26 +2,31 @@
|
|
|
2
2
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
3
|
import FAB from './FAB.svelte';
|
|
4
4
|
import FABMenuItem from './FABMenuItem.svelte';
|
|
5
|
+
import ListItem from '../containers/list/ListItem.svelte';
|
|
6
|
+
import List from '../containers/list/List.svelte';
|
|
7
|
+
import Icon from '../../utils/icon/Icon.svelte';
|
|
8
|
+
|
|
9
|
+
const colors = [
|
|
10
|
+
'primary-container',
|
|
11
|
+
'secondary-container',
|
|
12
|
+
'tertiary-container',
|
|
13
|
+
'primary',
|
|
14
|
+
'secondary',
|
|
15
|
+
'tertiary'
|
|
16
|
+
] as const;
|
|
5
17
|
|
|
6
18
|
const { Story } = defineMeta({
|
|
7
19
|
title: 'Buttons/FAB',
|
|
8
20
|
component: FAB,
|
|
9
21
|
argTypes: {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
options: ['primary', 'secondary', 'tertiary']
|
|
13
|
-
},
|
|
14
|
-
size: {
|
|
15
|
-
control: 'select',
|
|
16
|
-
options: ['small', 'regular', 'large']
|
|
17
|
-
},
|
|
22
|
+
color: { control: 'select', options: colors },
|
|
23
|
+
size: { control: 'select', options: ['small', 'regular', 'medium', 'large'] },
|
|
18
24
|
expanded: { control: 'boolean' },
|
|
19
|
-
label: { control: 'text' },
|
|
20
25
|
disabled: { control: 'boolean' },
|
|
21
26
|
loading: { control: 'boolean' }
|
|
22
27
|
},
|
|
23
28
|
args: {
|
|
24
|
-
|
|
29
|
+
color: 'primary-container',
|
|
25
30
|
size: 'regular',
|
|
26
31
|
expanded: false,
|
|
27
32
|
label: 'Compose',
|
|
@@ -32,28 +37,102 @@
|
|
|
32
37
|
});
|
|
33
38
|
</script>
|
|
34
39
|
|
|
35
|
-
<
|
|
40
|
+
<script lang="ts">
|
|
41
|
+
let extended = $state(true);
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<Story name="Playground">
|
|
45
|
+
{#snippet template(args)}
|
|
46
|
+
<FAB {...args} iconProps={{ name: 'edit' }} />
|
|
47
|
+
{/snippet}
|
|
48
|
+
</Story>
|
|
36
49
|
|
|
37
50
|
<Story name="Sizes" asChild>
|
|
38
|
-
<div class="
|
|
39
|
-
<FAB size="
|
|
40
|
-
<FAB size="
|
|
41
|
-
<FAB size="large"
|
|
51
|
+
<div class="gap-spacing-300 p-spacing-300 flex items-end">
|
|
52
|
+
<FAB size="regular" aria-label="Compose" iconProps={{ name: 'edit' }} />
|
|
53
|
+
<FAB size="medium" aria-label="Compose" iconProps={{ name: 'edit' }} />
|
|
54
|
+
<FAB size="large" aria-label="Compose" iconProps={{ name: 'edit' }} />
|
|
55
|
+
<FAB size="small" aria-label="Compose (baseline small)" iconProps={{ name: 'edit' }} />
|
|
56
|
+
</div>
|
|
57
|
+
</Story>
|
|
58
|
+
|
|
59
|
+
<Story name="Colours" asChild>
|
|
60
|
+
<div class="gap-spacing-300 p-spacing-300 flex flex-wrap">
|
|
61
|
+
{#each colors as color (color)}
|
|
62
|
+
<FAB {color} aria-label={color} iconProps={{ name: 'edit' }} />
|
|
63
|
+
{/each}
|
|
42
64
|
</div>
|
|
43
65
|
</Story>
|
|
44
66
|
|
|
45
67
|
<Story name="Extended" asChild>
|
|
46
|
-
<div class="flex flex-
|
|
47
|
-
<FAB
|
|
68
|
+
<div class="gap-spacing-300 p-spacing-300 flex flex-col items-start">
|
|
69
|
+
<FAB expanded label="Compose" iconProps={{ name: 'edit' }} />
|
|
70
|
+
<FAB size="medium" expanded label="Compose" iconProps={{ name: 'edit' }} />
|
|
71
|
+
<FAB size="large" expanded label="Compose" iconProps={{ name: 'edit' }} />
|
|
48
72
|
</div>
|
|
49
73
|
</Story>
|
|
50
74
|
|
|
51
|
-
<Story name="
|
|
52
|
-
<div class="
|
|
53
|
-
<
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
75
|
+
<Story name="Responsive" asChild>
|
|
76
|
+
<div class="gap-spacing-300 p-spacing-300 flex flex-col items-start">
|
|
77
|
+
<label class="md-sys-typescale-body-medium gap-spacing-100 flex items-center">
|
|
78
|
+
<input type="checkbox" bind:checked={extended} /> Extended
|
|
79
|
+
</label>
|
|
80
|
+
<FAB expanded={extended} label="Create" iconProps={{ name: 'add' }} />
|
|
81
|
+
<p class="md-sys-typescale-body-medium text-md-sys-color-on-surface-variant max-w-md">
|
|
82
|
+
By default a labelled FAB is a FAB on compact windows and extended from medium windows up;
|
|
83
|
+
resize the preview to see it transform.
|
|
84
|
+
</p>
|
|
85
|
+
<FAB label="Create" iconProps={{ name: 'add' }} />
|
|
58
86
|
</div>
|
|
59
87
|
</Story>
|
|
88
|
+
|
|
89
|
+
<Story
|
|
90
|
+
name="FAB menu"
|
|
91
|
+
exportName="FabMenu"
|
|
92
|
+
parameters={{ docs: { story: { inline: false, height: '28rem' } } }}
|
|
93
|
+
>
|
|
94
|
+
{#snippet template()}
|
|
95
|
+
<div class="end-spacing-200 bottom-spacing-200 gap-spacing-200 fixed flex">
|
|
96
|
+
<FAB
|
|
97
|
+
withMenu
|
|
98
|
+
size="medium"
|
|
99
|
+
color="tertiary-container"
|
|
100
|
+
aria-label="New"
|
|
101
|
+
iconProps={{ name: 'add' }}
|
|
102
|
+
>
|
|
103
|
+
<FABMenuItem iconProps={{ name: 'chat' }}>Message</FABMenuItem>
|
|
104
|
+
<FABMenuItem iconProps={{ name: 'folder' }}>Folder</FABMenuItem>
|
|
105
|
+
<FABMenuItem iconProps={{ name: 'upload' }}>Upload</FABMenuItem>
|
|
106
|
+
</FAB>
|
|
107
|
+
<FAB withMenu aria-label="New" iconProps={{ name: 'add' }}>
|
|
108
|
+
<FABMenuItem iconProps={{ name: 'chat' }}>Message</FABMenuItem>
|
|
109
|
+
<FABMenuItem iconProps={{ name: 'folder' }}>Folder</FABMenuItem>
|
|
110
|
+
<FABMenuItem iconProps={{ name: 'upload' }}>Upload</FABMenuItem>
|
|
111
|
+
</FAB>
|
|
112
|
+
</div>
|
|
113
|
+
{/snippet}
|
|
114
|
+
</Story>
|
|
115
|
+
|
|
116
|
+
<Story
|
|
117
|
+
name="Container transform"
|
|
118
|
+
parameters={{ docs: { story: { inline: false, height: '32rem' } } }}
|
|
119
|
+
>
|
|
120
|
+
{#snippet template()}
|
|
121
|
+
<div class="end-spacing-200 bottom-spacing-200 fixed">
|
|
122
|
+
<FAB label="Compose" iconProps={{ name: 'edit' }} expanded={false}>
|
|
123
|
+
{#snippet surface({ close })}
|
|
124
|
+
<List>
|
|
125
|
+
{#each ['Lily MacDonald', 'So Duri', 'Ziad Aouad'] as name (name)}
|
|
126
|
+
<ListItem headline={name} onclick={close}>
|
|
127
|
+
{#snippet leading()}<Icon name="person" />{/snippet}
|
|
128
|
+
</ListItem>
|
|
129
|
+
{/each}
|
|
130
|
+
<ListItem headline="Compose new" onclick={close}>
|
|
131
|
+
{#snippet leading()}<Icon name="edit" />{/snippet}
|
|
132
|
+
</ListItem>
|
|
133
|
+
</List>
|
|
134
|
+
{/snippet}
|
|
135
|
+
</FAB>
|
|
136
|
+
</div>
|
|
137
|
+
{/snippet}
|
|
138
|
+
</Story>
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import FAB from './FAB.svelte';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const FAB: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
16
|
-
[evt: string]: CustomEvent<any>;
|
|
17
|
-
}, {}, {}, string>;
|
|
18
|
-
type FAB = InstanceType<typeof FAB>;
|
|
2
|
+
declare const FAB: import("svelte").Component<Record<string, never>, {}, "">;
|
|
3
|
+
type FAB = ReturnType<typeof FAB>;
|
|
19
4
|
export default FAB;
|