@dxlbnl/ui 0.1.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.
- package/README.md +94 -0
- package/dist/components/cards/Card.stories.svelte +82 -0
- package/dist/components/cards/Card.stories.svelte.d.ts +19 -0
- package/dist/components/cards/Card.svelte +28 -0
- package/dist/components/cards/Card.svelte.d.ts +12 -0
- package/dist/components/cards/NoteCard.stories.svelte +94 -0
- package/dist/components/cards/NoteCard.stories.svelte.d.ts +19 -0
- package/dist/components/cards/NoteCard.svelte +89 -0
- package/dist/components/cards/NoteCard.svelte.d.ts +18 -0
- package/dist/components/cards/ProductCard.stories.svelte +98 -0
- package/dist/components/cards/ProductCard.stories.svelte.d.ts +19 -0
- package/dist/components/cards/ProductCard.svelte +150 -0
- package/dist/components/cards/ProductCard.svelte.d.ts +22 -0
- package/dist/components/cards/ProjectCard.stories.svelte +88 -0
- package/dist/components/cards/ProjectCard.stories.svelte.d.ts +19 -0
- package/dist/components/cards/ProjectCard.svelte +109 -0
- package/dist/components/cards/ProjectCard.svelte.d.ts +20 -0
- package/dist/components/cards/index.d.ts +4 -0
- package/dist/components/cards/index.js +4 -0
- package/dist/components/data/Accordion.stories.svelte +316 -0
- package/dist/components/data/Accordion.stories.svelte.d.ts +19 -0
- package/dist/components/data/Accordion.svelte +23 -0
- package/dist/components/data/Accordion.svelte.d.ts +9 -0
- package/dist/components/data/AccordionItem.svelte +112 -0
- package/dist/components/data/AccordionItem.svelte.d.ts +11 -0
- package/dist/components/data/Table.composition.stories.svelte +67 -0
- package/dist/components/data/Table.composition.stories.svelte.d.ts +19 -0
- package/dist/components/data/Table.stories.svelte +137 -0
- package/dist/components/data/Table.stories.svelte.d.ts +19 -0
- package/dist/components/data/Table.svelte +83 -0
- package/dist/components/data/Table.svelte.d.ts +14 -0
- package/dist/components/data/Tabs.stories.svelte +386 -0
- package/dist/components/data/Tabs.stories.svelte.d.ts +19 -0
- package/dist/components/data/Tabs.svelte +142 -0
- package/dist/components/data/Tabs.svelte.d.ts +19 -0
- package/dist/components/data/index.d.ts +4 -0
- package/dist/components/data/index.js +4 -0
- package/dist/components/feedback/Modal.stories.svelte +192 -0
- package/dist/components/feedback/Modal.stories.svelte.d.ts +4 -0
- package/dist/components/feedback/Modal.svelte +185 -0
- package/dist/components/feedback/Modal.svelte.d.ts +19 -0
- package/dist/components/feedback/Toast.stories.svelte +203 -0
- package/dist/components/feedback/Toast.stories.svelte.d.ts +19 -0
- package/dist/components/feedback/Toast.svelte +109 -0
- package/dist/components/feedback/Toast.svelte.d.ts +15 -0
- package/dist/components/feedback/ToastRegion.stories.svelte +193 -0
- package/dist/components/feedback/ToastRegion.stories.svelte.d.ts +19 -0
- package/dist/components/feedback/ToastRegion.svelte +102 -0
- package/dist/components/feedback/ToastRegion.svelte.d.ts +9 -0
- package/dist/components/feedback/index.d.ts +3 -0
- package/dist/components/feedback/index.js +3 -0
- package/dist/components/forms/Checkbox.stories.svelte +103 -0
- package/dist/components/forms/Checkbox.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Checkbox.svelte +150 -0
- package/dist/components/forms/Checkbox.svelte.d.ts +11 -0
- package/dist/components/forms/Field.stories.svelte +113 -0
- package/dist/components/forms/Field.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Field.svelte +77 -0
- package/dist/components/forms/Field.svelte.d.ts +17 -0
- package/dist/components/forms/Input.stories.svelte +58 -0
- package/dist/components/forms/Input.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Input.svelte +64 -0
- package/dist/components/forms/Input.svelte.d.ts +9 -0
- package/dist/components/forms/InputWrap.composition.stories.svelte +32 -0
- package/dist/components/forms/InputWrap.composition.stories.svelte.d.ts +19 -0
- package/dist/components/forms/InputWrap.stories.svelte +53 -0
- package/dist/components/forms/InputWrap.stories.svelte.d.ts +19 -0
- package/dist/components/forms/InputWrap.svelte +128 -0
- package/dist/components/forms/InputWrap.svelte.d.ts +21 -0
- package/dist/components/forms/Radio.stories.svelte +70 -0
- package/dist/components/forms/Radio.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Radio.svelte +109 -0
- package/dist/components/forms/Radio.svelte.d.ts +9 -0
- package/dist/components/forms/RadioGroup.stories.svelte +115 -0
- package/dist/components/forms/RadioGroup.stories.svelte.d.ts +19 -0
- package/dist/components/forms/RadioGroup.svelte +116 -0
- package/dist/components/forms/RadioGroup.svelte.d.ts +24 -0
- package/dist/components/forms/Select.stories.svelte +168 -0
- package/dist/components/forms/Select.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Select.svelte +262 -0
- package/dist/components/forms/Select.svelte.d.ts +23 -0
- package/dist/components/forms/Switch.stories.svelte +86 -0
- package/dist/components/forms/Switch.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Switch.svelte +113 -0
- package/dist/components/forms/Switch.svelte.d.ts +11 -0
- package/dist/components/forms/Textarea.stories.svelte +40 -0
- package/dist/components/forms/Textarea.stories.svelte.d.ts +19 -0
- package/dist/components/forms/Textarea.svelte +66 -0
- package/dist/components/forms/Textarea.svelte.d.ts +9 -0
- package/dist/components/forms/field-context.d.ts +7 -0
- package/dist/components/forms/field-context.js +1 -0
- package/dist/components/forms/index.d.ts +9 -0
- package/dist/components/forms/index.js +9 -0
- package/dist/components/layout/Container.stories.svelte +67 -0
- package/dist/components/layout/Container.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Container.svelte +52 -0
- package/dist/components/layout/Container.svelte.d.ts +14 -0
- package/dist/components/layout/Grid.stories.svelte +109 -0
- package/dist/components/layout/Grid.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Grid.svelte +54 -0
- package/dist/components/layout/Grid.svelte.d.ts +19 -0
- package/dist/components/layout/Inline.stories.svelte +136 -0
- package/dist/components/layout/Inline.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Inline.svelte +46 -0
- package/dist/components/layout/Inline.svelte.d.ts +19 -0
- package/dist/components/layout/Prose.stories.svelte +423 -0
- package/dist/components/layout/Prose.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Prose.svelte +176 -0
- package/dist/components/layout/Prose.svelte.d.ts +12 -0
- package/dist/components/layout/Rule.stories.svelte +80 -0
- package/dist/components/layout/Rule.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Rule.svelte +33 -0
- package/dist/components/layout/Rule.svelte.d.ts +9 -0
- package/dist/components/layout/Spread.stories.svelte +118 -0
- package/dist/components/layout/Spread.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Spread.svelte +38 -0
- package/dist/components/layout/Spread.svelte.d.ts +16 -0
- package/dist/components/layout/Stack.stories.svelte +90 -0
- package/dist/components/layout/Stack.stories.svelte.d.ts +19 -0
- package/dist/components/layout/Stack.svelte +37 -0
- package/dist/components/layout/Stack.svelte.d.ts +16 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/navigation/Breadcrumb.stories.svelte +122 -0
- package/dist/components/navigation/Breadcrumb.stories.svelte.d.ts +19 -0
- package/dist/components/navigation/Breadcrumb.svelte +70 -0
- package/dist/components/navigation/Breadcrumb.svelte.d.ts +13 -0
- package/dist/components/navigation/Nav.stories.svelte +323 -0
- package/dist/components/navigation/Nav.stories.svelte.d.ts +19 -0
- package/dist/components/navigation/Nav.svelte +257 -0
- package/dist/components/navigation/Nav.svelte.d.ts +21 -0
- package/dist/components/navigation/index.d.ts +2 -0
- package/dist/components/navigation/index.js +2 -0
- package/dist/components/patterns/ActivityRow.stories.svelte +45 -0
- package/dist/components/patterns/ActivityRow.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/ActivityRow.svelte +69 -0
- package/dist/components/patterns/ActivityRow.svelte.d.ts +16 -0
- package/dist/components/patterns/Alert.stories.svelte +63 -0
- package/dist/components/patterns/Alert.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/Alert.svelte +91 -0
- package/dist/components/patterns/Alert.svelte.d.ts +16 -0
- package/dist/components/patterns/CtaBlock.stories.svelte +62 -0
- package/dist/components/patterns/CtaBlock.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/CtaBlock.svelte +80 -0
- package/dist/components/patterns/CtaBlock.svelte.d.ts +16 -0
- package/dist/components/patterns/KvList.stories.svelte +48 -0
- package/dist/components/patterns/KvList.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/KvList.svelte +65 -0
- package/dist/components/patterns/KvList.svelte.d.ts +15 -0
- package/dist/components/patterns/PageHero.stories.svelte +62 -0
- package/dist/components/patterns/PageHero.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/PageHero.svelte +62 -0
- package/dist/components/patterns/PageHero.svelte.d.ts +14 -0
- package/dist/components/patterns/ProgressBar.stories.svelte +83 -0
- package/dist/components/patterns/ProgressBar.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/ProgressBar.svelte +71 -0
- package/dist/components/patterns/ProgressBar.svelte.d.ts +13 -0
- package/dist/components/patterns/SectionFoot.stories.svelte +37 -0
- package/dist/components/patterns/SectionFoot.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/SectionFoot.svelte +70 -0
- package/dist/components/patterns/SectionFoot.svelte.d.ts +15 -0
- package/dist/components/patterns/SectionHead.stories.svelte +67 -0
- package/dist/components/patterns/SectionHead.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/SectionHead.svelte +54 -0
- package/dist/components/patterns/SectionHead.svelte.d.ts +14 -0
- package/dist/components/patterns/StatCard.stories.svelte +59 -0
- package/dist/components/patterns/StatCard.stories.svelte.d.ts +19 -0
- package/dist/components/patterns/StatCard.svelte +57 -0
- package/dist/components/patterns/StatCard.svelte.d.ts +15 -0
- package/dist/components/patterns/index.d.ts +9 -0
- package/dist/components/patterns/index.js +9 -0
- package/dist/components/primitives/Button.stories.svelte +132 -0
- package/dist/components/primitives/Button.stories.svelte.d.ts +19 -0
- package/dist/components/primitives/Button.svelte +142 -0
- package/dist/components/primitives/Button.svelte.d.ts +16 -0
- package/dist/components/primitives/Heading.stories.svelte +137 -0
- package/dist/components/primitives/Heading.stories.svelte.d.ts +19 -0
- package/dist/components/primitives/Heading.svelte +107 -0
- package/dist/components/primitives/Heading.svelte.d.ts +23 -0
- package/dist/components/primitives/Led.stories.svelte +63 -0
- package/dist/components/primitives/Led.stories.svelte.d.ts +19 -0
- package/dist/components/primitives/Led.svelte +65 -0
- package/dist/components/primitives/Led.svelte.d.ts +11 -0
- package/dist/components/primitives/TagPill.stories.svelte +90 -0
- package/dist/components/primitives/TagPill.stories.svelte.d.ts +19 -0
- package/dist/components/primitives/TagPill.svelte +44 -0
- package/dist/components/primitives/TagPill.svelte.d.ts +9 -0
- package/dist/components/primitives/Text.stories.svelte +252 -0
- package/dist/components/primitives/Text.stories.svelte.d.ts +19 -0
- package/dist/components/primitives/Text.svelte +101 -0
- package/dist/components/primitives/Text.svelte.d.ts +25 -0
- package/dist/components/primitives/index.d.ts +5 -0
- package/dist/components/primitives/index.js +5 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/stores/toast.d.ts +19 -0
- package/dist/stores/toast.js +22 -0
- package/dist/storybook-utils.d.ts +11 -0
- package/dist/storybook-utils.js +29 -0
- package/dist/tokens/ColorSwatch.svelte +73 -0
- package/dist/tokens/ColorSwatch.svelte.d.ts +10 -0
- package/dist/tokens/layout.css +144 -0
- package/dist/tokens/patterns.css +281 -0
- package/dist/tokens/tokens.css +96 -0
- package/dist/tokens/tokens.stories.svelte +107 -0
- package/dist/tokens/tokens.stories.svelte.d.ts +18 -0
- package/dist/tokens/typography.css +159 -0
- package/package.json +62 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Grid from "./Grid.svelte";
|
|
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
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
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 Grid: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {}, string>;
|
|
18
|
+
type Grid = InstanceType<typeof Grid>;
|
|
19
|
+
export default Grid;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements'
|
|
3
|
+
import type { Snippet } from 'svelte'
|
|
4
|
+
|
|
5
|
+
type GapSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'
|
|
6
|
+
type GridCols = 1 | 2 | 3 | 4 | 'auto'
|
|
7
|
+
|
|
8
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/** HTML element to render as. @default 'div' */
|
|
10
|
+
as?: string
|
|
11
|
+
/** Number of equal columns, or `'auto'` for responsive auto-fill. @default 3 */
|
|
12
|
+
cols?: GridCols
|
|
13
|
+
/** Space between grid cells. @default 'sm' */
|
|
14
|
+
gap?: GapSize
|
|
15
|
+
/** Minimum column width used when `cols` is `'auto'`. @default '240px' */
|
|
16
|
+
minColWidth?: string
|
|
17
|
+
children?: Snippet
|
|
18
|
+
[key: string]: unknown
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let { as = 'div', cols = 3, gap = 'sm', minColWidth = '240px', children, ...rest }: Props = $props()
|
|
22
|
+
|
|
23
|
+
const gapMap: Record<GapSize, string> = {
|
|
24
|
+
none: '0',
|
|
25
|
+
xs: 'var(--u)',
|
|
26
|
+
sm: 'var(--u2)',
|
|
27
|
+
md: 'var(--u2)',
|
|
28
|
+
lg: 'var(--u4)',
|
|
29
|
+
xl: 'var(--u5)',
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const colsTemplate = $derived(
|
|
33
|
+
cols === 'auto'
|
|
34
|
+
? `repeat(auto-fill, minmax(${minColWidth}, 1fr))`
|
|
35
|
+
: cols === 1
|
|
36
|
+
? '1fr'
|
|
37
|
+
: `repeat(${cols}, 1fr)`
|
|
38
|
+
)
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<svelte:element
|
|
42
|
+
this={as}
|
|
43
|
+
class="grid-layout"
|
|
44
|
+
style="grid-template-columns: {colsTemplate}; gap: {gapMap[gap]};"
|
|
45
|
+
{...rest}
|
|
46
|
+
>
|
|
47
|
+
{@render children?.()}
|
|
48
|
+
</svelte:element>
|
|
49
|
+
|
|
50
|
+
<style>
|
|
51
|
+
.grid-layout {
|
|
52
|
+
display: grid;
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
type GapSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
type GridCols = 1 | 2 | 3 | 4 | 'auto';
|
|
5
|
+
interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
/** HTML element to render as. @default 'div' */
|
|
7
|
+
as?: string;
|
|
8
|
+
/** Number of equal columns, or `'auto'` for responsive auto-fill. @default 3 */
|
|
9
|
+
cols?: GridCols;
|
|
10
|
+
/** Space between grid cells. @default 'sm' */
|
|
11
|
+
gap?: GapSize;
|
|
12
|
+
/** Minimum column width used when `cols` is `'auto'`. @default '240px' */
|
|
13
|
+
minColWidth?: string;
|
|
14
|
+
children?: Snippet;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
declare const Grid: import("svelte").Component<Props, {}, "">;
|
|
18
|
+
type Grid = ReturnType<typeof Grid>;
|
|
19
|
+
export default Grid;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import { expect, within } from "storybook/test";
|
|
4
|
+
import Inline from "./Inline.svelte";
|
|
5
|
+
import Button from "../primitives/Button.svelte";
|
|
6
|
+
import TagPill from "../primitives/TagPill.svelte";
|
|
7
|
+
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
title: "Layout/Inline",
|
|
10
|
+
component: Inline,
|
|
11
|
+
tags: ["autodocs"],
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Story name="Tag Row" args={{ gap: "sm", "aria-label": "test-label" }}
|
|
16
|
+
play={async ({ canvasElement }) => {
|
|
17
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
18
|
+
await expect(root).toBeVisible();
|
|
19
|
+
const style = getComputedStyle(root);
|
|
20
|
+
await expect(style.display).toBe("flex");
|
|
21
|
+
await expect(style.flexWrap).toBe("wrap");
|
|
22
|
+
await expect(style.alignItems).toBe("center");
|
|
23
|
+
// gap="sm" is non-zero
|
|
24
|
+
const gap = style.gap || style.columnGap;
|
|
25
|
+
await expect(gap).not.toBe("0px");
|
|
26
|
+
// aria-label forwarded via ...rest
|
|
27
|
+
await expect(root.getAttribute("aria-label")).toBe("test-label");
|
|
28
|
+
}}>
|
|
29
|
+
<TagPill>Utility</TagPill>
|
|
30
|
+
<TagPill variant="amber">Featured</TagPill>
|
|
31
|
+
<TagPill variant="cyan">New</TagPill>
|
|
32
|
+
<TagPill>Power Supply</TagPill>
|
|
33
|
+
<TagPill variant="amber">Latest</TagPill>
|
|
34
|
+
</Story>
|
|
35
|
+
|
|
36
|
+
<Story name="None Gap" args={{ gap: "none" }}
|
|
37
|
+
play={async ({ canvasElement }) => {
|
|
38
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
39
|
+
const style = getComputedStyle(root);
|
|
40
|
+
const gap = style.gap || style.columnGap;
|
|
41
|
+
await expect(gap === "0px" || gap === "0").toBe(true);
|
|
42
|
+
}}>
|
|
43
|
+
<TagPill>Alpha</TagPill>
|
|
44
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
45
|
+
</Story>
|
|
46
|
+
|
|
47
|
+
<Story name="Button Row" args={{ gap: "md" }}
|
|
48
|
+
play={async ({ canvasElement }) => {
|
|
49
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
50
|
+
const buttons = root.querySelectorAll("button");
|
|
51
|
+
await expect(buttons.length).toBe(2);
|
|
52
|
+
}}>
|
|
53
|
+
<Button variant="ghost">View All →</Button>
|
|
54
|
+
<Button variant="primary">Order Now</Button>
|
|
55
|
+
</Story>
|
|
56
|
+
|
|
57
|
+
<Story name="Large Gap" args={{ gap: "lg" }}
|
|
58
|
+
play={async ({ canvasElement }) => {
|
|
59
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
60
|
+
const style = getComputedStyle(root);
|
|
61
|
+
const gap = style.gap || style.columnGap;
|
|
62
|
+
await expect(gap.includes("32px")).toBe(true);
|
|
63
|
+
}}>
|
|
64
|
+
<TagPill>Alpha</TagPill>
|
|
65
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
66
|
+
<TagPill variant="cyan">Gamma</TagPill>
|
|
67
|
+
</Story>
|
|
68
|
+
|
|
69
|
+
<!-- B27 AC-3: default (no align prop) keeps align-items: center -->
|
|
70
|
+
<Story name="Align Default"
|
|
71
|
+
play={async ({ canvasElement }) => {
|
|
72
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
73
|
+
// No align prop passed — default must be "center"
|
|
74
|
+
await expect(getComputedStyle(root).alignItems).toBe("center");
|
|
75
|
+
// data-align should be "center" (the resolved default)
|
|
76
|
+
await expect(root.dataset.align).toBe("center");
|
|
77
|
+
}}>
|
|
78
|
+
<TagPill>Alpha</TagPill>
|
|
79
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
80
|
+
</Story>
|
|
81
|
+
|
|
82
|
+
<!-- B27 AC-7: align="baseline" produces align-items: baseline -->
|
|
83
|
+
<!-- B27 AC-2: data-align attribute is forwarded to the root element -->
|
|
84
|
+
<Story name="Align Baseline" args={{ gap: "sm", align: "baseline" }}
|
|
85
|
+
play={async ({ canvasElement }) => {
|
|
86
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
87
|
+
await expect(getComputedStyle(root).alignItems).toBe("baseline");
|
|
88
|
+
await expect(root.dataset.align).toBe("baseline");
|
|
89
|
+
}}>
|
|
90
|
+
<span style="font-size: 24px;">Big</span>
|
|
91
|
+
<span style="font-size: 12px;">Small</span>
|
|
92
|
+
</Story>
|
|
93
|
+
|
|
94
|
+
<!-- B27 AC-4: align="start" produces align-items: flex-start -->
|
|
95
|
+
<Story name="Align Start" args={{ align: "start" }}
|
|
96
|
+
play={async ({ canvasElement }) => {
|
|
97
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
98
|
+
await expect(getComputedStyle(root).alignItems).toBe("flex-start");
|
|
99
|
+
await expect(root.dataset.align).toBe("start");
|
|
100
|
+
}}>
|
|
101
|
+
<TagPill>Alpha</TagPill>
|
|
102
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
103
|
+
</Story>
|
|
104
|
+
|
|
105
|
+
<!-- B27 AC-5: align="center" explicit produces align-items: center -->
|
|
106
|
+
<Story name="Align Center" args={{ align: "center" }}
|
|
107
|
+
play={async ({ canvasElement }) => {
|
|
108
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
109
|
+
await expect(getComputedStyle(root).alignItems).toBe("center");
|
|
110
|
+
await expect(root.dataset.align).toBe("center");
|
|
111
|
+
}}>
|
|
112
|
+
<TagPill>Alpha</TagPill>
|
|
113
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
114
|
+
</Story>
|
|
115
|
+
|
|
116
|
+
<!-- B27 AC-6: align="end" produces align-items: flex-end -->
|
|
117
|
+
<Story name="Align End" args={{ align: "end" }}
|
|
118
|
+
play={async ({ canvasElement }) => {
|
|
119
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
120
|
+
await expect(getComputedStyle(root).alignItems).toBe("flex-end");
|
|
121
|
+
await expect(root.dataset.align).toBe("end");
|
|
122
|
+
}}>
|
|
123
|
+
<TagPill>Alpha</TagPill>
|
|
124
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
125
|
+
</Story>
|
|
126
|
+
|
|
127
|
+
<!-- B27 AC-8: align="stretch" produces align-items: stretch -->
|
|
128
|
+
<Story name="Align Stretch" args={{ align: "stretch" }}
|
|
129
|
+
play={async ({ canvasElement }) => {
|
|
130
|
+
const root = canvasElement.firstElementChild as HTMLElement;
|
|
131
|
+
await expect(getComputedStyle(root).alignItems).toBe("stretch");
|
|
132
|
+
await expect(root.dataset.align).toBe("stretch");
|
|
133
|
+
}}>
|
|
134
|
+
<TagPill>Alpha</TagPill>
|
|
135
|
+
<TagPill variant="amber">Beta</TagPill>
|
|
136
|
+
</Story>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Inline from "./Inline.svelte";
|
|
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
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
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 Inline: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
16
|
+
[evt: string]: CustomEvent<any>;
|
|
17
|
+
}, {}, {}, string>;
|
|
18
|
+
type Inline = InstanceType<typeof Inline>;
|
|
19
|
+
export default Inline;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ClassValue } from 'svelte/elements'
|
|
3
|
+
import type { Snippet } from 'svelte'
|
|
4
|
+
|
|
5
|
+
type GapSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'
|
|
6
|
+
type AlignValue = 'start' | 'center' | 'end' | 'baseline' | 'stretch'
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
/** HTML element to render as. @default 'div' */
|
|
10
|
+
as?: string
|
|
11
|
+
/** Space between children. @default 'sm' */
|
|
12
|
+
gap?: GapSize
|
|
13
|
+
/** Cross-axis alignment. @default 'center' */
|
|
14
|
+
align?: AlignValue
|
|
15
|
+
children?: Snippet
|
|
16
|
+
class?: ClassValue | null
|
|
17
|
+
style?: string | null
|
|
18
|
+
[key: string]: unknown
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let { as = 'div', gap = 'sm', align = 'center', children, class: klass = '', ...rest }: Props = $props()
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<svelte:element this={as} class={['inline', klass]} data-gap={gap} data-align={align} {...rest}>
|
|
25
|
+
{@render children?.()}
|
|
26
|
+
</svelte:element>
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
.inline {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-wrap: wrap;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.inline[data-gap="none"] { gap: 0; }
|
|
35
|
+
.inline[data-gap="xs"] { gap: var(--u); }
|
|
36
|
+
.inline[data-gap="sm"] { gap: var(--u2); }
|
|
37
|
+
.inline[data-gap="md"] { gap: var(--u3); }
|
|
38
|
+
.inline[data-gap="lg"] { gap: var(--u4); }
|
|
39
|
+
.inline[data-gap="xl"] { gap: var(--u5); }
|
|
40
|
+
|
|
41
|
+
.inline[data-align="start"] { align-items: flex-start; }
|
|
42
|
+
.inline[data-align="center"] { align-items: center; }
|
|
43
|
+
.inline[data-align="end"] { align-items: flex-end; }
|
|
44
|
+
.inline[data-align="baseline"] { align-items: baseline; }
|
|
45
|
+
.inline[data-align="stretch"] { align-items: stretch; }
|
|
46
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ClassValue } from 'svelte/elements';
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
type GapSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
type AlignValue = 'start' | 'center' | 'end' | 'baseline' | 'stretch';
|
|
5
|
+
interface Props {
|
|
6
|
+
/** HTML element to render as. @default 'div' */
|
|
7
|
+
as?: string;
|
|
8
|
+
/** Space between children. @default 'sm' */
|
|
9
|
+
gap?: GapSize;
|
|
10
|
+
/** Cross-axis alignment. @default 'center' */
|
|
11
|
+
align?: AlignValue;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
class?: ClassValue | null;
|
|
14
|
+
style?: string | null;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
declare const Inline: import("svelte").Component<Props, {}, "">;
|
|
18
|
+
type Inline = ReturnType<typeof Inline>;
|
|
19
|
+
export default Inline;
|