@teseor/css 1.14.3 → 1.15.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/package.json +1 -1
- package/src/base/root.docs.html +20 -0
- package/src/base/typography/typography.docs.html +161 -0
- package/src/components/actions/button/button.docs.html +76 -0
- package/src/components/actions/button/button.visual.spec.ts +3 -3
- package/src/components/actions/button-group/button-group.docs.html +47 -0
- package/src/components/actions/button-group/button-group.visual.spec.ts +3 -3
- package/src/components/actions/close-button/close-button.docs.html +77 -0
- package/src/components/actions/close-button/close-button.visual.spec.ts +3 -3
- package/src/components/content/divider/divider.docs.html +27 -0
- package/src/components/content/divider/divider.visual.spec.ts +3 -3
- package/src/components/content/scroll-area/scroll-area-visual.png +0 -0
- package/src/components/content/scroll-area/scroll-area.docs.html +130 -0
- package/src/components/content/scroll-area/scroll-area.visual.spec.ts +3 -3
- package/src/components/content/spacer/spacer.docs.html +23 -0
- package/src/components/content/spacer/spacer.visual.spec.ts +3 -3
- package/src/components/data-display/avatar/avatar.docs.html +67 -0
- package/src/components/data-display/avatar/avatar.visual.spec.ts +3 -3
- package/src/components/data-display/badge/badge.docs.html +39 -0
- package/src/components/data-display/badge/badge.visual.spec.ts +3 -3
- package/src/components/data-display/card/card-visual.png +0 -0
- package/src/components/data-display/card/card.docs.html +36 -0
- package/src/components/data-display/card/card.visual.spec.ts +3 -3
- package/src/components/data-display/data-list/data-list-visual.png +0 -0
- package/src/components/data-display/data-list/data-list.docs.html +97 -0
- package/src/components/data-display/data-list/data-list.visual.spec.ts +3 -3
- package/src/components/data-display/icon/icon.docs.html +72 -0
- package/src/components/data-display/icon/icon.visual.spec.ts +3 -3
- package/src/components/data-display/image/image-visual.png +0 -0
- package/src/components/data-display/image/image.docs.html +67 -0
- package/src/components/data-display/image/image.visual.spec.ts +3 -3
- package/src/components/data-display/stat/stat.docs.html +35 -0
- package/src/components/data-display/stat/stat.visual.spec.ts +3 -3
- package/src/components/data-display/status/status.docs.html +67 -0
- package/src/components/data-display/status/status.visual.spec.ts +3 -3
- package/src/components/data-display/table/table.docs.html +73 -0
- package/src/components/data-display/table/table.visual.spec.ts +3 -3
- package/src/components/data-display/tag/tag.docs.html +42 -0
- package/src/components/data-display/tag/tag.visual.spec.ts +3 -3
- package/src/components/disclosure/accordion/accordion.docs.html +83 -0
- package/src/components/disclosure/accordion/accordion.visual.spec.ts +3 -3
- package/src/components/disclosure/disclosure/disclosure.docs.html +51 -0
- package/src/components/disclosure/disclosure/disclosure.visual.spec.ts +3 -3
- package/src/components/feedback/alert/alert.docs.html +90 -0
- package/src/components/feedback/alert/alert.visual.spec.ts +3 -3
- package/src/components/feedback/progress/progress.docs.html +65 -0
- package/src/components/feedback/progress/progress.visual.spec.ts +3 -3
- package/src/components/feedback/progress-circle/progress-circle.docs.html +65 -0
- package/src/components/feedback/progress-circle/progress-circle.visual.spec.ts +3 -3
- package/src/components/feedback/skeleton/skeleton.docs.html +40 -0
- package/src/components/feedback/skeleton/skeleton.visual.spec.ts +3 -3
- package/src/components/feedback/spinner/spinner.docs.html +28 -0
- package/src/components/feedback/spinner/spinner.visual.spec.ts +3 -3
- package/src/components/feedback/toast/toast-visual.png +0 -0
- package/src/components/feedback/toast/toast.docs.html +109 -0
- package/src/components/feedback/toast/toast.visual.spec.ts +3 -3
- package/src/components/forms/checkbox/checkbox.docs.html +33 -0
- package/src/components/forms/checkbox/checkbox.visual.spec.ts +3 -3
- package/src/components/forms/checkbox-group/checkbox-group.docs.html +104 -0
- package/src/components/forms/checkbox-group/checkbox-group.visual.spec.ts +3 -3
- package/src/components/forms/field/field.docs.html +63 -0
- package/src/components/forms/field/field.visual.spec.ts +3 -3
- package/src/components/forms/fieldset/fieldset.docs.html +122 -0
- package/src/components/forms/fieldset/fieldset.visual.spec.ts +3 -3
- package/src/components/forms/form/form.docs.html +132 -0
- package/src/components/forms/form/form.visual.spec.ts +3 -3
- package/src/components/forms/form-error/form-error.docs.html +18 -0
- package/src/components/forms/form-error/form-error.visual.spec.ts +3 -3
- package/src/components/forms/form-helper/form-helper.docs.html +42 -0
- package/src/components/forms/form-helper/form-helper.visual.spec.ts +3 -3
- package/src/components/forms/input/input-visual.png +0 -0
- package/src/components/forms/input/input.docs.html +69 -0
- package/src/components/forms/input/input.visual.spec.ts +3 -3
- package/src/components/forms/label/label-visual.png +0 -0
- package/src/components/forms/label/label.docs.html +29 -0
- package/src/components/forms/label/label.visual.spec.ts +3 -3
- package/src/components/forms/number-input/number-input-visual.png +0 -0
- package/src/components/forms/number-input/number-input.docs.html +100 -0
- package/src/components/forms/number-input/number-input.visual.spec.ts +3 -3
- package/src/components/forms/password-input/password-input-visual.png +0 -0
- package/src/components/forms/password-input/password-input.docs.html +88 -0
- package/src/components/forms/password-input/password-input.visual.spec.ts +3 -3
- package/src/components/forms/radio/radio.docs.html +52 -0
- package/src/components/forms/radio/radio.visual.spec.ts +3 -3
- package/src/components/forms/radio-group/radio-group.docs.html +100 -0
- package/src/components/forms/radio-group/radio-group.visual.spec.ts +3 -3
- package/src/components/forms/search-input/search-input-visual.png +0 -0
- package/src/components/forms/search-input/search-input.docs.html +87 -0
- package/src/components/forms/search-input/search-input.visual.spec.ts +3 -3
- package/src/components/forms/select/select-visual.png +0 -0
- package/src/components/forms/select/select.docs.html +70 -0
- package/src/components/forms/select/select.visual.spec.ts +3 -3
- package/src/components/forms/slider/slider-visual.png +0 -0
- package/src/components/forms/slider/slider.docs.html +25 -0
- package/src/components/forms/slider/slider.visual.spec.ts +3 -3
- package/src/components/forms/textarea/textarea-visual.png +0 -0
- package/src/components/forms/textarea/textarea.docs.html +39 -0
- package/src/components/forms/textarea/textarea.visual.spec.ts +3 -3
- package/src/components/forms/toggle/toggle.docs.html +64 -0
- package/src/components/forms/toggle/toggle.visual.spec.ts +3 -3
- package/src/components/navigation/breadcrumb/breadcrumb.docs.html +60 -0
- package/src/components/navigation/breadcrumb/breadcrumb.visual.spec.ts +3 -3
- package/src/components/navigation/dropdown-menu/dropdown-menu-visual.png +0 -0
- package/src/components/navigation/dropdown-menu/dropdown-menu.docs.html +106 -0
- package/src/components/navigation/dropdown-menu/dropdown-menu.visual.spec.ts +3 -3
- package/src/components/navigation/menu/menu.docs.html +122 -0
- package/src/components/navigation/menu/menu.visual.spec.ts +3 -3
- package/src/components/navigation/nav/nav.docs.html +74 -0
- package/src/components/navigation/nav/nav.visual.spec.ts +3 -3
- package/src/components/navigation/pagination/pagination-visual.png +0 -0
- package/src/components/navigation/pagination/pagination.docs.html +116 -0
- package/src/components/navigation/pagination/pagination.visual.spec.ts +3 -3
- package/src/components/navigation/tabs/tabs.docs.html +66 -0
- package/src/components/navigation/tabs/tabs.visual.spec.ts +3 -3
- package/src/components/overlays/dialog/dialog.docs.html +61 -0
- package/src/components/overlays/dialog/dialog.visual.spec.ts +3 -3
- package/src/components/overlays/drawer/drawer-visual.png +0 -0
- package/src/components/overlays/drawer/drawer.docs.html +90 -0
- package/src/components/overlays/drawer/drawer.visual.spec.ts +3 -3
- package/src/components/overlays/modal/modal.docs.html +69 -0
- package/src/components/overlays/modal/modal.visual.spec.ts +3 -3
- package/src/components/overlays/overlay/overlay.docs.html +30 -0
- package/src/components/overlays/overlay/overlay.visual.spec.ts +3 -3
- package/src/components/overlays/popover/popover.docs.html +41 -0
- package/src/components/overlays/popover/popover.visual.spec.ts +3 -3
- package/src/components/overlays/tooltip/tooltip.docs.html +33 -0
- package/src/components/overlays/tooltip/tooltip.visual.spec.ts +3 -3
- package/src/components/typography/blockquote/blockquote.docs.html +24 -0
- package/src/components/typography/blockquote/blockquote.visual.spec.ts +3 -3
- package/src/components/typography/code/code-visual.png +0 -0
- package/src/components/typography/code/code.docs.html +23 -0
- package/src/components/typography/code/code.visual.spec.ts +3 -3
- package/src/components/typography/code-block/code-block-visual.png +0 -0
- package/src/components/typography/code-block/code-block.docs.html +87 -0
- package/src/components/typography/code-block/code-block.visual.spec.ts +3 -3
- package/src/components/typography/heading/heading-visual.png +0 -0
- package/src/components/typography/heading/heading.docs.html +26 -0
- package/src/components/typography/heading/heading.visual.spec.ts +3 -3
- package/src/components/typography/kbd/kbd.docs.html +16 -0
- package/src/components/typography/kbd/kbd.visual.spec.ts +3 -3
- package/src/components/typography/link/link.docs.html +33 -0
- package/src/components/typography/link/link.visual.spec.ts +3 -3
- package/src/components/typography/list/list.docs.html +79 -0
- package/src/components/typography/list/list.visual.spec.ts +3 -3
- package/src/components/typography/mark/mark.docs.html +12 -0
- package/src/components/typography/mark/mark.visual.spec.ts +3 -3
- package/src/config/guides/accessibility.docs.html +108 -0
- package/src/config/guides/getting-started.docs.html +47 -0
- package/src/config/guides/theming.docs.html +71 -0
- package/src/config/tokens/colors/colors.docs.html +75 -0
- package/src/config/tokens/design-tokens.docs.html +116 -0
- package/src/config/tokens/grid/grid.docs.html +12 -0
- package/src/config/tokens/spacing/spacing.docs.html +33 -0
- package/src/debug/debug.docs.html +29 -0
- package/src/layout/app-shell/app-shell-visual.png +0 -0
- package/src/layout/app-shell/app-shell.docs.html +102 -0
- package/src/layout/app-shell/app-shell.visual.spec.ts +3 -3
- package/src/layout/aspect-ratio/aspect-ratio.docs.html +41 -0
- package/src/layout/aspect-ratio/aspect-ratio.visual.spec.ts +3 -3
- package/src/layout/box/box-visual.png +0 -0
- package/src/layout/box/box.docs.html +27 -0
- package/src/layout/box/box.visual.spec.ts +3 -3
- package/src/layout/center/center.docs.html +26 -0
- package/src/layout/center/center.visual.spec.ts +3 -3
- package/src/layout/column/column.docs.html +32 -0
- package/src/layout/column/column.visual.spec.ts +3 -3
- package/src/layout/container/container.docs.html +37 -0
- package/src/layout/content/content-visual.png +0 -0
- package/src/layout/content/content.docs.html +38 -0
- package/src/layout/content/content.visual.spec.ts +7 -3
- package/src/layout/footer/footer-visual.png +0 -0
- package/src/layout/footer/footer.docs.html +73 -0
- package/src/layout/footer/footer.visual.spec.ts +7 -3
- package/src/layout/grid/grid.docs.html +87 -0
- package/src/layout/grid/grid.visual.spec.ts +3 -3
- package/src/layout/main/main.docs.html +31 -0
- package/src/layout/nav-rail/nav-rail-visual.png +0 -0
- package/src/layout/nav-rail/nav-rail.docs.html +42 -0
- package/src/layout/nav-rail/nav-rail.visual.spec.ts +7 -3
- package/src/layout/page-header/page-header.docs.html +52 -0
- package/src/layout/page-header/page-header.visual.spec.ts +7 -3
- package/src/layout/row/row.docs.html +47 -0
- package/src/layout/row/row.visual.spec.ts +3 -3
- package/src/layout/sidebar/sidebar-visual.png +0 -0
- package/src/layout/sidebar/sidebar.docs.html +30 -0
- package/src/layout/sidebar/sidebar.visual.spec.ts +7 -3
- package/src/layout/sidebar-nav/sidebar-nav.docs.html +235 -0
- package/src/layout/sidebar-nav/sidebar-nav.visual.spec.ts +7 -3
- package/src/layout/topbar/topbar-visual.png +0 -0
- package/src/layout/topbar/topbar.docs.html +64 -0
- package/src/layout/topbar/topbar.visual.spec.ts +7 -3
- package/src/utilities/container/container.docs.html +34 -0
- package/src/utilities/display/display.docs.html +30 -0
- package/src/utilities/scroll-animation/scroll-animation.docs.html +32 -0
- package/src/utilities/scroll-snap/scroll-snap.docs.html +80 -0
- package/src/utilities/spacing/spacing.docs.html +29 -0
- package/src/utilities/text/text.docs.html +66 -0
- package/src/utilities/view-transition/view-transition.docs.html +52 -0
- package/src/utilities/visually-hidden/visually-hidden.docs.html +18 -0
- package/src/base/root.docs.json +0 -35
- package/src/base/typography/typography.docs.json +0 -328
- package/src/components/actions/button/button.docs.json +0 -264
- package/src/components/actions/button-group/button-group.docs.json +0 -151
- package/src/components/actions/close-button/close-button.docs.json +0 -265
- package/src/components/content/divider/divider.docs.json +0 -113
- package/src/components/content/scroll-area/scroll-area.docs.json +0 -273
- package/src/components/content/spacer/spacer.docs.json +0 -102
- package/src/components/data-display/avatar/avatar.docs.json +0 -245
- package/src/components/data-display/badge/badge.docs.json +0 -114
- package/src/components/data-display/card/card.docs.json +0 -229
- package/src/components/data-display/data-list/data-list.docs.json +0 -259
- package/src/components/data-display/icon/icon.docs.json +0 -307
- package/src/components/data-display/image/image.docs.json +0 -337
- package/src/components/data-display/stat/stat.docs.json +0 -114
- package/src/components/data-display/status/status.docs.json +0 -147
- package/src/components/data-display/table/table.docs.json +0 -184
- package/src/components/data-display/tag/tag.docs.json +0 -146
- package/src/components/disclosure/accordion/accordion.docs.json +0 -206
- package/src/components/disclosure/disclosure/disclosure.docs.json +0 -154
- package/src/components/feedback/alert/alert.docs.json +0 -325
- package/src/components/feedback/progress/progress.docs.json +0 -315
- package/src/components/feedback/progress-circle/progress-circle.docs.json +0 -378
- package/src/components/feedback/skeleton/skeleton.docs.json +0 -142
- package/src/components/feedback/spinner/spinner.docs.json +0 -121
- package/src/components/feedback/toast/toast.docs.json +0 -418
- package/src/components/forms/checkbox/checkbox.docs.json +0 -166
- package/src/components/forms/checkbox-group/checkbox-group.docs.json +0 -339
- package/src/components/forms/field/field.docs.json +0 -276
- package/src/components/forms/fieldset/fieldset.docs.json +0 -520
- package/src/components/forms/form/form.docs.json +0 -482
- package/src/components/forms/form-error/form-error.docs.json +0 -61
- package/src/components/forms/form-helper/form-helper.docs.json +0 -151
- package/src/components/forms/input/input.docs.json +0 -306
- package/src/components/forms/label/label.docs.json +0 -110
- package/src/components/forms/number-input/number-input.docs.json +0 -311
- package/src/components/forms/password-input/password-input.docs.json +0 -316
- package/src/components/forms/radio/radio.docs.json +0 -236
- package/src/components/forms/radio-group/radio-group.docs.json +0 -351
- package/src/components/forms/search-input/search-input.docs.json +0 -293
- package/src/components/forms/select/select.docs.json +0 -231
- package/src/components/forms/slider/slider.docs.json +0 -144
- package/src/components/forms/textarea/textarea.docs.json +0 -229
- package/src/components/forms/toggle/toggle.docs.json +0 -229
- package/src/components/navigation/breadcrumb/breadcrumb.docs.json +0 -240
- package/src/components/navigation/dropdown-menu/dropdown-menu.docs.json +0 -290
- package/src/components/navigation/menu/menu.docs.json +0 -326
- package/src/components/navigation/nav/nav.docs.json +0 -304
- package/src/components/navigation/pagination/pagination.docs.json +0 -483
- package/src/components/navigation/tabs/tabs.docs.json +0 -243
- package/src/components/overlays/dialog/dialog.docs.json +0 -200
- package/src/components/overlays/drawer/drawer.docs.json +0 -307
- package/src/components/overlays/modal/modal.docs.json +0 -252
- package/src/components/overlays/overlay/overlay.docs.json +0 -138
- package/src/components/overlays/popover/popover.docs.json +0 -154
- package/src/components/overlays/tooltip/tooltip.docs.json +0 -133
- package/src/components/typography/blockquote/blockquote.docs.json +0 -89
- package/src/components/typography/code/code.docs.json +0 -104
- package/src/components/typography/code-block/code-block.docs.json +0 -308
- package/src/components/typography/heading/heading.docs.json +0 -120
- package/src/components/typography/kbd/kbd.docs.json +0 -61
- package/src/components/typography/link/link.docs.json +0 -149
- package/src/components/typography/list/list.docs.json +0 -296
- package/src/components/typography/mark/mark.docs.json +0 -60
- package/src/config/guides/accessibility.docs.json +0 -126
- package/src/config/guides/getting-started.docs.json +0 -106
- package/src/config/guides/theming.docs.json +0 -289
- package/src/config/tokens/colors/colors.docs.json +0 -316
- package/src/config/tokens/design-tokens.docs.json +0 -239
- package/src/config/tokens/grid/grid.docs.json +0 -54
- package/src/config/tokens/spacing/spacing.docs.json +0 -114
- package/src/debug/debug.docs.json +0 -96
- package/src/layout/app-shell/app-shell.docs.json +0 -155
- package/src/layout/aspect-ratio/aspect-ratio.docs.json +0 -193
- package/src/layout/box/box.docs.json +0 -93
- package/src/layout/center/center.docs.json +0 -63
- package/src/layout/column/column.docs.json +0 -157
- package/src/layout/container/container.docs.json +0 -85
- package/src/layout/content/content.docs.json +0 -82
- package/src/layout/footer/footer.docs.json +0 -119
- package/src/layout/grid/grid.docs.json +0 -493
- package/src/layout/main/main.docs.json +0 -87
- package/src/layout/nav-rail/nav-rail.docs.json +0 -76
- package/src/layout/page-header/page-header.docs.json +0 -124
- package/src/layout/row/row.docs.json +0 -237
- package/src/layout/sidebar/sidebar.docs.json +0 -63
- package/src/layout/sidebar-nav/sidebar-nav.docs.json +0 -833
- package/src/layout/topbar/topbar.docs.json +0 -110
- package/src/utilities/container/container.docs.json +0 -121
- package/src/utilities/display/display.docs.json +0 -83
- package/src/utilities/scroll-animation/scroll-animation.docs.json +0 -100
- package/src/utilities/scroll-snap/scroll-snap.docs.json +0 -333
- package/src/utilities/spacing/spacing.docs.json +0 -133
- package/src/utilities/text/text.docs.json +0 -191
- package/src/utilities/view-transition/view-transition.docs.json +0 -63
- package/src/utilities/visually-hidden/visually-hidden.docs.json +0 -44
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Colors
|
|
3
|
+
type: token
|
|
4
|
+
id: colors
|
|
5
|
+
description: HSL-based color system with primitive and semantic tokens. Semantic tokens adapt to light/dark themes.
|
|
6
|
+
skipValidation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @text_colors | column -->
|
|
10
|
+
<!-- Use for typography and icons. -->
|
|
11
|
+
<p style="color: var(--ui-color-text)">--ui-color-text: Default text</p>
|
|
12
|
+
<p style="color: var(--ui-color-text-muted)">--ui-color-text-muted: Secondary text, captions</p>
|
|
13
|
+
<p class="ui-p-1" style="color: var(--ui-color-text-inverse); background: var(--ui-color-neutral-900); border-radius: var(--ui-radius-sm)">--ui-color-text-inverse: Text on dark backgrounds</p>
|
|
14
|
+
|
|
15
|
+
<!-- @background_colors | column -->
|
|
16
|
+
<!-- Use for surfaces, cards, and containers. -->
|
|
17
|
+
<div class="ui-p-2" style="background: var(--ui-color-bg); border: 1px solid var(--ui-color-border); border-radius: var(--ui-radius-md)">--ui-color-bg: Base background</div>
|
|
18
|
+
<div class="ui-p-2" style="background: var(--ui-color-bg-subtle); border-radius: var(--ui-radius-md)">--ui-color-bg-subtle: Subtle emphasis</div>
|
|
19
|
+
<div class="ui-p-2" style="background: var(--ui-color-bg-muted); border-radius: var(--ui-radius-md)">--ui-color-bg-muted: Stronger emphasis, code blocks</div>
|
|
20
|
+
|
|
21
|
+
<!-- @border_colors | column -->
|
|
22
|
+
<!-- Use for dividers, inputs, and card borders. -->
|
|
23
|
+
<div class="ui-p-2" style="border: 2px solid var(--ui-color-border); border-radius: var(--ui-radius-md)">--ui-color-border: Default borders</div>
|
|
24
|
+
<div class="ui-p-2" style="border: 2px solid var(--ui-color-border-strong); border-radius: var(--ui-radius-md)">--ui-color-border-strong: Emphasized borders</div>
|
|
25
|
+
|
|
26
|
+
<!-- @interactive_colors | column -->
|
|
27
|
+
<!-- Use for links, buttons, and interactive elements. -->
|
|
28
|
+
<p style="color: var(--ui-color-interactive)">--ui-color-interactive: Links, primary actions</p>
|
|
29
|
+
<p style="color: var(--ui-color-interactive-hover)">--ui-color-interactive-hover: Hover state</p>
|
|
30
|
+
<div class="ui-p-1" style="display: inline-block; outline: 3px solid var(--ui-color-focus); outline-offset: 2px; border-radius: var(--ui-radius-sm)">--ui-color-focus: Focus rings</div>
|
|
31
|
+
|
|
32
|
+
<!-- @status_colors -->
|
|
33
|
+
<!-- Use for feedback, alerts, and validation. -->
|
|
34
|
+
<div class="ui-row ui-row--sm">
|
|
35
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-success); border-radius: var(--ui-radius-sm)"></div>
|
|
36
|
+
<span>--ui-color-success</span>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="ui-row ui-row--sm">
|
|
39
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-warning); border-radius: var(--ui-radius-sm)"></div>
|
|
40
|
+
<span>--ui-color-warning</span>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="ui-row ui-row--sm">
|
|
43
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-danger); border-radius: var(--ui-radius-sm)"></div>
|
|
44
|
+
<span>--ui-color-danger</span>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<!-- @primary_scale -->
|
|
48
|
+
<!-- Brand color with light and dark variants. -->
|
|
49
|
+
<div class="ui-row ui-row--sm">
|
|
50
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-primary-light); border-radius: var(--ui-radius-sm)"></div>
|
|
51
|
+
<span>--ui-color-primary-light</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="ui-row ui-row--sm">
|
|
54
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-primary); border-radius: var(--ui-radius-sm)"></div>
|
|
55
|
+
<span>--ui-color-primary</span>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="ui-row ui-row--sm">
|
|
58
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-primary-dark); border-radius: var(--ui-radius-sm)"></div>
|
|
59
|
+
<span>--ui-color-primary-dark</span>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<!-- @neutral_scale -->
|
|
63
|
+
<!-- Gray scale for text, backgrounds, and borders. Derived from primary hue for subtle warmth. -->
|
|
64
|
+
<div class="ui-row ui-row--sm" style="flex-wrap: wrap">
|
|
65
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-50); border: 1px solid var(--ui-color-border); border-radius: var(--ui-radius-sm)"></div>
|
|
66
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-100); border-radius: var(--ui-radius-sm)"></div>
|
|
67
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-200); border-radius: var(--ui-radius-sm)"></div>
|
|
68
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-300); border-radius: var(--ui-radius-sm)"></div>
|
|
69
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-400); border-radius: var(--ui-radius-sm)"></div>
|
|
70
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-500); border-radius: var(--ui-radius-sm)"></div>
|
|
71
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-600); border-radius: var(--ui-radius-sm)"></div>
|
|
72
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-700); border-radius: var(--ui-radius-sm)"></div>
|
|
73
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-800); border-radius: var(--ui-radius-sm)"></div>
|
|
74
|
+
<div style="width: var(--ui-space-4); height: var(--ui-row-2); background: var(--ui-color-neutral-900); border-radius: var(--ui-radius-sm)"></div>
|
|
75
|
+
</div>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Design Tokens
|
|
3
|
+
type: token
|
|
4
|
+
id: design-tokens
|
|
5
|
+
description: Borders, radius, shadows, motion, z-index, and semantic tokens that form the visual foundation
|
|
6
|
+
skipValidation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @borders | row -->
|
|
10
|
+
<!-- Border width tokens derived from the 8px unit. -->
|
|
11
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-sm) solid var(--ui-color-border-strong)"></div>
|
|
12
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-md) solid var(--ui-color-border-strong)"></div>
|
|
13
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-2); border: var(--ui-border-width-lg) solid var(--ui-color-border-strong)"></div>
|
|
14
|
+
|
|
15
|
+
<!-- @radius | row -->
|
|
16
|
+
<!-- Border radius tokens derived from the 8px unit. -->
|
|
17
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
18
|
+
<div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-sm)"></div>
|
|
19
|
+
<small>sm (4px)</small>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
22
|
+
<div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-md)"></div>
|
|
23
|
+
<small>md (8px)</small>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
26
|
+
<div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-lg)"></div>
|
|
27
|
+
<small>lg (16px)</small>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
30
|
+
<div style="width: var(--ui-row-3); height: var(--ui-row-3); background: var(--ui-color-primary); border-radius: var(--ui-radius-full)"></div>
|
|
31
|
+
<small>full</small>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- @shadows | row -->
|
|
35
|
+
<!-- Elevation shadows using the primary hue for tinted depth. -->
|
|
36
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
37
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-sm)"></div>
|
|
38
|
+
<small>sm</small>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
41
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-md)"></div>
|
|
42
|
+
<small>md</small>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
45
|
+
<div style="width: var(--ui-space-8); height: var(--ui-row-3); background: var(--ui-color-bg); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-lg)"></div>
|
|
46
|
+
<small>lg</small>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<!-- @motion -->
|
|
50
|
+
<!-- Duration and easing tokens. All durations drop to 0ms when prefers-reduced-motion is active. -->
|
|
51
|
+
:root {
|
|
52
|
+
--ui-duration-instant: 50ms;
|
|
53
|
+
--ui-duration-fast: 100ms;
|
|
54
|
+
--ui-duration-base: 150ms;
|
|
55
|
+
--ui-duration-normal: 200ms;
|
|
56
|
+
--ui-duration-slow: 250ms;
|
|
57
|
+
--ui-duration-slower: 400ms;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@media (prefers-reduced-motion: reduce) {
|
|
61
|
+
:root {
|
|
62
|
+
--ui-duration-instant: 0ms;
|
|
63
|
+
--ui-duration-fast: 0ms;
|
|
64
|
+
/* ...all set to 0ms */
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
:root {
|
|
68
|
+
--ui-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
69
|
+
--ui-ease-in: cubic-bezier(0.4, 0, 1, 1);
|
|
70
|
+
--ui-ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
71
|
+
--ui-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
<!-- @z_index -->
|
|
75
|
+
<!-- Layering scale with gaps to allow insertion without renumbering. -->
|
|
76
|
+
:root {
|
|
77
|
+
--ui-z-base: 0;
|
|
78
|
+
--ui-z-sticky: 100;
|
|
79
|
+
--ui-z-dropdown: 200;
|
|
80
|
+
--ui-z-overlay: 300;
|
|
81
|
+
--ui-z-modal: 400;
|
|
82
|
+
--ui-z-popover: 500;
|
|
83
|
+
--ui-z-tooltip: 600;
|
|
84
|
+
--ui-z-toast: 700;
|
|
85
|
+
--ui-z-drawer: 800;
|
|
86
|
+
--ui-z-debug: 9999;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
<!-- @semantic_colors -->
|
|
90
|
+
<!-- Context-aware color tokens that resolve automatically in light and dark mode via light-dark(). -->
|
|
91
|
+
:root {
|
|
92
|
+
color-scheme: light dark;
|
|
93
|
+
--ui-color-text: light-dark(var(--ui-color-neutral-900), var(--ui-color-neutral-100));
|
|
94
|
+
--ui-color-text-muted: light-dark(var(--ui-color-neutral-500), var(--ui-color-neutral-400));
|
|
95
|
+
--ui-color-bg: light-dark(var(--ui-color-neutral-50), var(--ui-color-neutral-900));
|
|
96
|
+
--ui-color-bg-subtle: light-dark(var(--ui-color-neutral-100), var(--ui-color-neutral-800));
|
|
97
|
+
}
|
|
98
|
+
:root {
|
|
99
|
+
--ui-color-border: light-dark(var(--ui-color-neutral-200), var(--ui-color-neutral-700));
|
|
100
|
+
--ui-color-border-strong: light-dark(var(--ui-color-neutral-300), var(--ui-color-neutral-600));
|
|
101
|
+
--ui-color-interactive: var(--ui-color-primary);
|
|
102
|
+
--ui-color-interactive-hover: var(--ui-color-primary-dark);
|
|
103
|
+
--ui-color-focus: var(--ui-color-primary-light);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
<!-- @semantic_spacing -->
|
|
107
|
+
<!-- Named spacing aliases that map to the numeric spacing scale for consistent layout patterns. -->
|
|
108
|
+
:root {
|
|
109
|
+
--ui-spacing-xs: var(--ui-space-1); /* 8px */
|
|
110
|
+
--ui-spacing-sm: var(--ui-space-2); /* 16px */
|
|
111
|
+
--ui-spacing-md: var(--ui-space-4); /* 32px */
|
|
112
|
+
--ui-spacing-lg: var(--ui-space-6); /* 48px */
|
|
113
|
+
--ui-spacing-xl: var(--ui-space-8); /* 64px */
|
|
114
|
+
--ui-spacing-gutter: var(--ui-space-4); /* 32px */
|
|
115
|
+
--ui-spacing-section: var(--ui-space-8);/* 64px */
|
|
116
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Grid System
|
|
3
|
+
type: token
|
|
4
|
+
id: grid
|
|
5
|
+
description: All spacing and heights align to the 8px grid.
|
|
6
|
+
skipValidation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @default | column -->
|
|
10
|
+
<div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-1); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-1 (16px)</div>
|
|
11
|
+
<div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-2); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-2 (32px)</div>
|
|
12
|
+
<div style="background: var(--ui-color-primary); color: var(--ui-color-text-inverse); height: var(--ui-row-3); display: flex; align-items: center; padding: 0 var(--ui-space-2)">row-3 (48px)</div>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Spacing
|
|
3
|
+
type: token
|
|
4
|
+
id: spacing
|
|
5
|
+
description: Spacing tokens based on the 8px unit.
|
|
6
|
+
skipValidation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @default | row -->
|
|
10
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
11
|
+
<div style="width: var(--ui-space-1); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
12
|
+
<small>space-1</small>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
15
|
+
<div style="width: var(--ui-space-2); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
16
|
+
<small>space-2</small>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
19
|
+
<div style="width: var(--ui-space-3); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
20
|
+
<small>space-3</small>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
23
|
+
<div style="width: var(--ui-space-4); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
24
|
+
<small>space-4</small>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
27
|
+
<div style="width: var(--ui-space-6); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
28
|
+
<small>space-6</small>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="ui-column ui-column--xs" style="align-items: center">
|
|
31
|
+
<div style="width: var(--ui-space-8); height: var(--ui-space-4); background: var(--ui-color-primary)"></div>
|
|
32
|
+
<small>space-8</small>
|
|
33
|
+
</div>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Debug
|
|
3
|
+
type: utility
|
|
4
|
+
id: debug
|
|
5
|
+
description: Visual debugging overlays for grid alignment, baseline rhythm, and element boundaries
|
|
6
|
+
skipValidation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @grid_overlay -->
|
|
10
|
+
<!-- Shows the 8px unit grid. Add the class to any container. -->
|
|
11
|
+
<div class="ui-debug-grid" style="height: var(--ui-row-6); position: relative"></div>
|
|
12
|
+
|
|
13
|
+
<!-- @row_grid -->
|
|
14
|
+
<!-- Shows both 8px unit lines and stronger row (16px) lines. -->
|
|
15
|
+
<div class="ui-debug-grid-rows" style="height: var(--ui-row-6); position: relative"></div>
|
|
16
|
+
|
|
17
|
+
<!-- @baseline -->
|
|
18
|
+
<!-- Horizontal baseline grid for verifying text alignment. -->
|
|
19
|
+
<div class="ui-debug-baseline" style="height: var(--ui-row-6); position: relative"></div>
|
|
20
|
+
|
|
21
|
+
<!-- @outline -->
|
|
22
|
+
<!-- Outlines all child elements to reveal layout boundaries. -->
|
|
23
|
+
<div class="ui-debug-outline">
|
|
24
|
+
<div class="ui-row ui-row--sm">
|
|
25
|
+
<div style="padding: var(--ui-space-1)">A</div>
|
|
26
|
+
<div style="padding: var(--ui-space-1)">B</div>
|
|
27
|
+
<div style="padding: var(--ui-space-1)">C</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
Binary file
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Layout
|
|
3
|
+
type: primitive
|
|
4
|
+
id: layout
|
|
5
|
+
description: Layout primitives for app shells with sidebars and content containers.
|
|
6
|
+
api: app-shell.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @app_shell_sidebar_main -->
|
|
10
|
+
<!-- This page uses the layout primitives: -->
|
|
11
|
+
<body class="ui-app-shell">
|
|
12
|
+
<aside class="ui-sidebar">
|
|
13
|
+
<!-- sidebar content -->
|
|
14
|
+
</aside>
|
|
15
|
+
<main class="ui-main">
|
|
16
|
+
<div class="ui-container">
|
|
17
|
+
<!-- page content -->
|
|
18
|
+
</div>
|
|
19
|
+
</main>
|
|
20
|
+
</body>
|
|
21
|
+
|
|
22
|
+
<!-- @with_topbar -->
|
|
23
|
+
<!-- Add a fixed topbar by setting --topbar-height on app-shell. Sidebar and main offset automatically. -->
|
|
24
|
+
<body class="ui-app-shell" style="--topbar-height: var(--ui-row-3)">
|
|
25
|
+
<header class="ui-topbar ui-topbar--fixed ui-topbar--bordered">
|
|
26
|
+
<div class="ui-topbar__start"><strong>App</strong></div>
|
|
27
|
+
<div class="ui-topbar__end">User</div>
|
|
28
|
+
</header>
|
|
29
|
+
<aside class="ui-sidebar">Sidebar</aside>
|
|
30
|
+
<main class="ui-main">
|
|
31
|
+
<div class="ui-container">Content</div>
|
|
32
|
+
</main>
|
|
33
|
+
</body>
|
|
34
|
+
|
|
35
|
+
<!-- @sidebar_widths | column -->
|
|
36
|
+
<div class="ui-row ui-row--sm">
|
|
37
|
+
<code>.ui-sidebar--sm</code>
|
|
38
|
+
<span>192px (24 units)</span>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="ui-row ui-row--sm">
|
|
41
|
+
<code>.ui-sidebar--md</code>
|
|
42
|
+
<span>240px (30 units) - default</span>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="ui-row ui-row--sm">
|
|
45
|
+
<code>.ui-sidebar--lg</code>
|
|
46
|
+
<span>320px (40 units)</span>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<!-- @sidebar_position -->
|
|
50
|
+
<!-- By default, sidebar is on the start (left in LTR). Use .ui-sidebar--end for right-side: -->
|
|
51
|
+
<aside class="ui-sidebar ui-sidebar--end">...</aside>
|
|
52
|
+
<main class="ui-main ui-main--sidebar-end">...</main>
|
|
53
|
+
|
|
54
|
+
<!-- @container_widths | column -->
|
|
55
|
+
<div class="ui-row ui-row--sm">
|
|
56
|
+
<code>.ui-container--sm</code>
|
|
57
|
+
<span>640px (80 units)</span>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="ui-row ui-row--sm">
|
|
60
|
+
<code>.ui-container--md</code>
|
|
61
|
+
<span>800px (100 units)</span>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="ui-row ui-row--sm">
|
|
64
|
+
<code>.ui-container--lg</code>
|
|
65
|
+
<span>960px (120 units) - default</span>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="ui-row ui-row--sm">
|
|
68
|
+
<code>.ui-container--xl</code>
|
|
69
|
+
<span>1280px (160 units)</span>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="ui-row ui-row--sm">
|
|
72
|
+
<code>.ui-container--full</code>
|
|
73
|
+
<span>No max width</span>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<!-- @with_footer -->
|
|
77
|
+
<!-- Place footer inside the content area, after the container. -->
|
|
78
|
+
<body class="ui-app-shell">
|
|
79
|
+
<main class="ui-main ui-main--full">
|
|
80
|
+
<div class="ui-container">Content</div>
|
|
81
|
+
<footer class="ui-footer ui-footer--bordered">
|
|
82
|
+
<div class="ui-footer__start"><small>Brand</small></div>
|
|
83
|
+
<div class="ui-footer__end"><small>v1.0.0</small></div>
|
|
84
|
+
</footer>
|
|
85
|
+
</main>
|
|
86
|
+
</body>
|
|
87
|
+
|
|
88
|
+
<!-- @topbar_variants -->
|
|
89
|
+
<!-- Sticky stays in flow, raised adds shadow. -->
|
|
90
|
+
<header class="ui-topbar ui-topbar--sticky ui-topbar--bordered">...</header>
|
|
91
|
+
<header class="ui-topbar ui-topbar--raised">...</header>
|
|
92
|
+
|
|
93
|
+
<!-- @footer_variants -->
|
|
94
|
+
<!-- Sticky, fixed, and raised options. -->
|
|
95
|
+
<footer class="ui-footer ui-footer--sticky ui-footer--bordered">...</footer>
|
|
96
|
+
<footer class="ui-footer ui-footer--fixed">...</footer>
|
|
97
|
+
<footer class="ui-footer ui-footer--raised">...</footer>
|
|
98
|
+
|
|
99
|
+
<!-- @centered_container -->
|
|
100
|
+
<div class="ui-container ui-container--center">
|
|
101
|
+
<!-- centered content with max-width -->
|
|
102
|
+
</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { expect, test } from '@playwright/test';
|
|
3
|
-
import { saveForLostPixel,
|
|
3
|
+
import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
|
|
4
4
|
|
|
5
|
-
const DOCS_PATH = resolve(__dirname, 'app-shell.docs.
|
|
5
|
+
const DOCS_PATH = resolve(__dirname, 'app-shell.docs.html');
|
|
6
6
|
|
|
7
7
|
test.describe('app-shell visual regression', () => {
|
|
8
8
|
test('all variations', async ({ page }) => {
|
|
9
|
-
await
|
|
9
|
+
await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
|
|
10
10
|
await saveForLostPixel(page, 'app-shell');
|
|
11
11
|
await expect(page.locator('body')).toHaveScreenshot('app-shell.visual.png');
|
|
12
12
|
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Aspect Ratio
|
|
3
|
+
type: primitive
|
|
4
|
+
id: aspect-ratio
|
|
5
|
+
description: Constrains a container to a specific aspect ratio. Media children fill the container automatically.
|
|
6
|
+
api: aspect-ratio.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @presets -->
|
|
10
|
+
<div class="ui-row ui-row--md">
|
|
11
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
|
|
12
|
+
<span style="padding: var(--ui-space-2)">square</span>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
|
|
15
|
+
<span style="padding: var(--ui-space-2)">video</span>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--photo" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
|
|
18
|
+
<span style="padding: var(--ui-space-2)">photo</span>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--wide" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
|
|
21
|
+
<span style="padding: var(--ui-space-2)">wide</span>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--portrait" style="inline-size: 160px; background: var(--ui-color-bg-muted)">
|
|
24
|
+
<span style="padding: var(--ui-space-2)">portrait</span>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- @with_media -->
|
|
29
|
+
<div class="ui-row ui-row--md">
|
|
30
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--video" style="inline-size: 240px">
|
|
31
|
+
<div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">img (video)</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="ui-aspect-ratio ui-aspect-ratio--square" style="inline-size: 240px">
|
|
34
|
+
<div style="inline-size: 100%; block-size: 100%; background: var(--ui-color-primary); color: var(--ui-color-on-primary); display: grid; place-items: center">img (square)</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<!-- @custom_ratio -->
|
|
39
|
+
<div class="ui-aspect-ratio" style="--ui-aspect-ratio: 2.35 / 1; inline-size: 320px; background: var(--ui-color-bg-muted)">
|
|
40
|
+
<span style="padding: var(--ui-space-2)">2.35:1 (cinemascope)</span>
|
|
41
|
+
</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { expect, test } from '@playwright/test';
|
|
3
|
-
import { saveForLostPixel,
|
|
3
|
+
import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
|
|
4
4
|
|
|
5
|
-
const DOCS_PATH = resolve(__dirname, 'aspect-ratio.docs.
|
|
5
|
+
const DOCS_PATH = resolve(__dirname, 'aspect-ratio.docs.html');
|
|
6
6
|
|
|
7
7
|
test.describe('aspect-ratio visual regression', () => {
|
|
8
8
|
test('all variations', async ({ page }) => {
|
|
9
|
-
await
|
|
9
|
+
await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
|
|
10
10
|
// skip validateGridRhythm: aspect-ratio controls proportions, not fixed heights
|
|
11
11
|
await saveForLostPixel(page, 'aspect-ratio');
|
|
12
12
|
await expect(page.locator('body')).toHaveScreenshot('aspect-ratio.visual.png');
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Box
|
|
3
|
+
type: primitive
|
|
4
|
+
id: box
|
|
5
|
+
description: Base container with style props. Foundation for layout primitives.
|
|
6
|
+
api: box.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @default -->
|
|
10
|
+
<div class="ui-box">Content</div>
|
|
11
|
+
|
|
12
|
+
<!-- @padding | column -->
|
|
13
|
+
<div class="ui-box ui-box--p-1 ui-box--bg-subtle">Padding 1</div>
|
|
14
|
+
<div class="ui-box ui-box--p-2 ui-box--bg-subtle">Padding 2</div>
|
|
15
|
+
<div class="ui-box ui-box--p-3 ui-box--bg-subtle">Padding 3</div>
|
|
16
|
+
<div class="ui-box ui-box--p-4 ui-box--bg-subtle">Padding 4</div>
|
|
17
|
+
|
|
18
|
+
<!-- @background | column -->
|
|
19
|
+
<div class="ui-box ui-box--p-2 ui-box--bg-subtle">Subtle background</div>
|
|
20
|
+
<div class="ui-box ui-box--p-2 ui-box--bg-muted">Muted background</div>
|
|
21
|
+
|
|
22
|
+
<!-- @rounded | row -->
|
|
23
|
+
<div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded">Rounded</div>
|
|
24
|
+
<div class="ui-box ui-box--p-3 ui-box--bg-subtle ui-box--rounded-lg">Rounded lg</div>
|
|
25
|
+
|
|
26
|
+
<!-- @custom_via_css_variables -->
|
|
27
|
+
<div class="ui-box" style="--box-padding: var(--ui-space-3); --box-bg: var(--ui-color-primary); --box-color: white; --box-radius: var(--ui-radius-lg);">Custom box</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { expect, test } from '@playwright/test';
|
|
3
|
-
import { saveForLostPixel,
|
|
3
|
+
import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
|
|
4
4
|
|
|
5
|
-
const DOCS_PATH = resolve(__dirname, 'box.docs.
|
|
5
|
+
const DOCS_PATH = resolve(__dirname, 'box.docs.html');
|
|
6
6
|
|
|
7
7
|
test.describe('box visual regression', () => {
|
|
8
8
|
test('all variations', async ({ page }) => {
|
|
9
|
-
await
|
|
9
|
+
await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
|
|
10
10
|
await saveForLostPixel(page, 'box');
|
|
11
11
|
await expect(page.locator('body')).toHaveScreenshot('box.visual.png');
|
|
12
12
|
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Center
|
|
3
|
+
type: primitive
|
|
4
|
+
id: center
|
|
5
|
+
description: Centers content horizontally and vertically.
|
|
6
|
+
api: center.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @basic -->
|
|
10
|
+
<!-- Centers children both horizontally and vertically using flexbox. -->
|
|
11
|
+
<div class="ui-center" style="height: var(--ui-row-4); background: var(--ui-color-bg-muted)">
|
|
12
|
+
<span>Centered content</span>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- @column_direction -->
|
|
16
|
+
<!-- Stack centered children vertically. -->
|
|
17
|
+
<div class="ui-center ui-center--column" style="height: var(--ui-row-6); background: var(--ui-color-bg-muted)">
|
|
18
|
+
<span>First line</span>
|
|
19
|
+
<span>Second line</span>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<!-- @full_page_center -->
|
|
23
|
+
<!-- Center content within a full viewport area, useful for loading or empty states. -->
|
|
24
|
+
<div class="ui-center" style="height: var(--ui-row-8); background: var(--ui-color-bg-muted)">
|
|
25
|
+
<p>No results found</p>
|
|
26
|
+
</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { expect, test } from '@playwright/test';
|
|
3
|
-
import { saveForLostPixel,
|
|
3
|
+
import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
|
|
4
4
|
|
|
5
|
-
const DOCS_PATH = resolve(__dirname, 'center.docs.
|
|
5
|
+
const DOCS_PATH = resolve(__dirname, 'center.docs.html');
|
|
6
6
|
|
|
7
7
|
test.describe('center visual regression', () => {
|
|
8
8
|
test('all variations', async ({ page }) => {
|
|
9
|
-
await
|
|
9
|
+
await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
|
|
10
10
|
await saveForLostPixel(page, 'center');
|
|
11
11
|
await expect(page.locator('body')).toHaveScreenshot('center.visual.png');
|
|
12
12
|
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Column
|
|
3
|
+
type: primitive
|
|
4
|
+
id: column
|
|
5
|
+
description: Vertical layout with consistent gap.
|
|
6
|
+
api: column.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @basic -->
|
|
10
|
+
<div class="ui-column ui-column--sm">
|
|
11
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 1</div>
|
|
12
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 2</div>
|
|
13
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-2)">Item 3</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!-- @sizes -->
|
|
17
|
+
<div class="ui-column ui-column--xs">
|
|
18
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs gap</div>
|
|
19
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xs gap</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="ui-column ui-column--md">
|
|
22
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">md gap</div>
|
|
23
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">md gap</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="ui-column ui-column--lg">
|
|
26
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg gap</div>
|
|
27
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">lg gap</div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="ui-column ui-column--xl">
|
|
30
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xl gap</div>
|
|
31
|
+
<div style="background: var(--ui-color-bg-muted); padding: var(--ui-space-1)">xl gap</div>
|
|
32
|
+
</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { expect, test } from '@playwright/test';
|
|
3
|
-
import { saveForLostPixel,
|
|
3
|
+
import { saveForLostPixel, setupVisualTestFromHtmlDocs } from '../../../test-utils';
|
|
4
4
|
|
|
5
|
-
const DOCS_PATH = resolve(__dirname, 'column.docs.
|
|
5
|
+
const DOCS_PATH = resolve(__dirname, 'column.docs.html');
|
|
6
6
|
|
|
7
7
|
test.describe('column visual regression', () => {
|
|
8
8
|
test('all variations', async ({ page }) => {
|
|
9
|
-
await
|
|
9
|
+
await setupVisualTestFromHtmlDocs(page, DOCS_PATH);
|
|
10
10
|
await saveForLostPixel(page, 'column');
|
|
11
11
|
await expect(page.locator('body')).toHaveScreenshot('column.visual.png');
|
|
12
12
|
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Container
|
|
3
|
+
type: primitive
|
|
4
|
+
id: container
|
|
5
|
+
description: Content wrapper with max-width and inline padding. Centers page content with consistent margins.
|
|
6
|
+
api: container.api.json
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<!-- @default -->
|
|
10
|
+
<!-- Constrains content to a max width with horizontal padding. -->
|
|
11
|
+
<div class="ui-container" style="background: var(--ui-color-bg-muted)">
|
|
12
|
+
<p>Content within a container</p>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- @centered -->
|
|
16
|
+
<!-- Centers the container horizontally with auto margins. -->
|
|
17
|
+
<div class="ui-container ui-container--center" style="background: var(--ui-color-bg-muted)">
|
|
18
|
+
<p>Centered container</p>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<!-- @sizes | column -->
|
|
22
|
+
<!-- Width presets for different layout needs. -->
|
|
23
|
+
<div class="ui-container ui-container--sm ui-container--center" style="background: var(--ui-color-bg-muted)">
|
|
24
|
+
<p>Small</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="ui-container ui-container--md ui-container--center" style="background: var(--ui-color-bg-muted)">
|
|
27
|
+
<p>Medium</p>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="ui-container ui-container--lg ui-container--center" style="background: var(--ui-color-bg-muted)">
|
|
30
|
+
<p>Large (default)</p>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="ui-container ui-container--xl ui-container--center" style="background: var(--ui-color-bg-muted)">
|
|
33
|
+
<p>Extra large</p>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="ui-container ui-container--full" style="background: var(--ui-color-bg-muted)">
|
|
36
|
+
<p>Full width</p>
|
|
37
|
+
</div>
|
|
Binary file
|