layout-style-css 1.1.2 → 2.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/CHANGELOG.md +81 -44
- package/CONTRIBUTING.md +55 -50
- package/LICENSE +21 -21
- package/README.md +236 -636
- package/SECURITY.md +50 -45
- package/demo/assets/apple-touch-icon.svg +7 -7
- package/demo/assets/favicon.svg +7 -7
- package/demo/browserconfig.xml +9 -9
- package/demo/demo.css +523 -0
- package/demo/demo.js +605 -0
- package/demo/index.html +325 -976
- package/demo/robots.txt +4 -4
- package/demo/site.webmanifest +23 -23
- package/demo/sitemap.xml +9 -9
- package/dist/core.css +6 -0
- package/{styles/layout-ui-style-kit-bridge.css → dist/integrations/ui-style-kit.css} +175 -170
- package/dist/layout-style-css.css +1473 -1903
- package/dist/layout-style-css.min.css +1 -1
- package/dist/legacy.css +787 -0
- package/dist/personalities/bauhaus.css +46 -0
- package/dist/personalities/bento.css +43 -0
- package/dist/personalities/brutalism.css +36 -0
- package/dist/personalities/cyberpunk.css +36 -0
- package/dist/personalities/f-pattern.css +48 -0
- package/dist/personalities/maximalist.css +51 -0
- package/dist/personalities/minimal-saas.css +37 -0
- package/dist/personalities/mondrian.css +44 -0
- package/dist/personalities/neumorphism.css +46 -0
- package/dist/personalities/retro-glass.css +44 -0
- package/dist/personalities/retrofuturism.css +36 -0
- package/dist/personalities/split-screen.css +41 -0
- package/dist/personalities/synthwave.css +48 -0
- package/dist/personalities/tactile.css +39 -0
- package/dist/personalities/y2k.css +36 -0
- package/dist/personalities/z-pattern.css +49 -0
- package/dist/personalities.css +18 -0
- package/dist/primitives.css +219 -0
- package/dist/recipes.css +270 -0
- package/dist/utilities.css +162 -0
- package/dist/wrappers.css +174 -0
- package/docs/wiki/Contributing.md +36 -30
- package/docs/wiki/Demo-And-GitHub-Pages.md +53 -39
- package/docs/wiki/Getting-Started.md +51 -68
- package/docs/wiki/Home.md +33 -48
- package/docs/wiki/Installation-And-CDN.md +72 -58
- package/docs/wiki/Layout-Primitives.md +48 -57
- package/docs/wiki/Layout-Recipes.md +49 -80
- package/docs/wiki/Layout-Styles.md +33 -43
- package/docs/wiki/Migrating-To-2.0.md +186 -0
- package/docs/wiki/Release-And-Publishing.md +77 -69
- package/docs/wiki/Security-And-Support.md +36 -34
- package/docs/wiki/UI-Style-Kit-Compatibility.md +49 -54
- package/docs/wiki/_Sidebar.md +15 -14
- package/package.json +98 -107
- package/styles/core.css +6 -0
- package/{dist/layout-ui-style-kit-bridge.css → styles/integrations/ui-style-kit.css} +175 -170
- package/styles/legacy.css +173 -0
- package/styles/personalities/bauhaus.css +46 -0
- package/styles/personalities/bento.css +43 -0
- package/styles/personalities/brutalism.css +36 -0
- package/styles/personalities/cyberpunk.css +36 -0
- package/styles/personalities/f-pattern.css +48 -0
- package/styles/personalities/maximalist.css +51 -0
- package/styles/personalities/minimal-saas.css +37 -0
- package/styles/personalities/mondrian.css +44 -0
- package/styles/personalities/neumorphism.css +46 -0
- package/styles/personalities/retro-glass.css +44 -0
- package/styles/personalities/retrofuturism.css +36 -0
- package/styles/personalities/split-screen.css +41 -0
- package/styles/personalities/synthwave.css +48 -0
- package/styles/personalities/tactile.css +39 -0
- package/styles/personalities/y2k.css +36 -0
- package/styles/personalities/z-pattern.css +49 -0
- package/styles/personalities.css +18 -0
- package/styles/primitives.css +219 -0
- package/styles/recipes.css +270 -0
- package/styles/utilities.css +162 -0
- package/styles/wrappers.css +174 -0
- package/dist/layout-all-with-ui-kit-and-interactive-surface.css +0 -3
- package/dist/layout-all-with-ui-kit.css +0 -2
- package/dist/layout-all.css +0 -18
- package/dist/layout-base.css +0 -539
- package/dist/layout-style-bauhaus.css +0 -70
- package/dist/layout-style-bento.css +0 -76
- package/dist/layout-style-brutalism.css +0 -70
- package/dist/layout-style-cyberpunk.css +0 -70
- package/dist/layout-style-f-pattern.css +0 -76
- package/dist/layout-style-maximalist.css +0 -93
- package/dist/layout-style-minimal-saas.css +0 -67
- package/dist/layout-style-mondrian.css +0 -77
- package/dist/layout-style-neumorphism.css +0 -72
- package/dist/layout-style-retro-glass.css +0 -82
- package/dist/layout-style-retrofuturism.css +0 -71
- package/dist/layout-style-split-screen.css +0 -62
- package/dist/layout-style-synthwave.css +0 -88
- package/dist/layout-style-tactile.css +0 -70
- package/dist/layout-style-y2k.css +0 -72
- package/dist/layout-style-z-pattern.css +0 -76
- package/styles/layout-base.css +0 -539
- package/styles/layout-style-bauhaus.css +0 -70
- package/styles/layout-style-bento.css +0 -76
- package/styles/layout-style-brutalism.css +0 -70
- package/styles/layout-style-cyberpunk.css +0 -70
- package/styles/layout-style-f-pattern.css +0 -76
- package/styles/layout-style-maximalist.css +0 -93
- package/styles/layout-style-minimal-saas.css +0 -67
- package/styles/layout-style-mondrian.css +0 -77
- package/styles/layout-style-neumorphism.css +0 -72
- package/styles/layout-style-retro-glass.css +0 -82
- package/styles/layout-style-retrofuturism.css +0 -71
- package/styles/layout-style-split-screen.css +0 -62
- package/styles/layout-style-synthwave.css +0 -88
- package/styles/layout-style-tactile.css +0 -70
- package/styles/layout-style-y2k.css +0 -72
- package/styles/layout-style-z-pattern.css +0 -76
package/SECURITY.md
CHANGED
|
@@ -1,45 +1,50 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
`layout-style-css` is a CSS-only layout package. It does not execute JavaScript at runtime, make network requests, process user input, store credentials, or read secrets.
|
|
4
|
-
|
|
5
|
-
## Supported Versions
|
|
6
|
-
|
|
7
|
-
| Version | Supported |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| `
|
|
10
|
-
| `1.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- affected
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
`layout-style-css` is a CSS-only layout package. It does not execute JavaScript at runtime, make network requests, process user input, store credentials, or read secrets.
|
|
4
|
+
|
|
5
|
+
## Supported Versions
|
|
6
|
+
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `2.x` | Yes |
|
|
10
|
+
| `1.1.x` | Migration support only |
|
|
11
|
+
| `1.0.x` | No |
|
|
12
|
+
|
|
13
|
+
## Reporting A Vulnerability
|
|
14
|
+
|
|
15
|
+
Use GitHub security advisories for private reports when available. If advisories are not enabled, open a minimal GitHub issue that avoids public exploit details and asks for a private coordination path.
|
|
16
|
+
|
|
17
|
+
Please include:
|
|
18
|
+
|
|
19
|
+
- affected version and package entrypoint
|
|
20
|
+
- affected selector, file, or demo behavior
|
|
21
|
+
- reproduction steps
|
|
22
|
+
- expected impact
|
|
23
|
+
- whether the issue affects package consumers, the demo, or GitHub Pages deployment
|
|
24
|
+
|
|
25
|
+
## Security Model
|
|
26
|
+
|
|
27
|
+
The primary security risks for this package are supply-chain and documentation risks:
|
|
28
|
+
|
|
29
|
+
- incorrect package exports that make consumers import unexpected files
|
|
30
|
+
- malformed CDN examples that point to wrong assets
|
|
31
|
+
- accidental runtime JavaScript or network behavior in docs or demo code
|
|
32
|
+
- package contents that include secrets, build caches, or unrelated local files
|
|
33
|
+
- CSS that hides important controls or breaks keyboard-visible flows in the demo
|
|
34
|
+
|
|
35
|
+
The release gate verifies package contents, README imports, documentation links, CSS contracts, GitHub Pages artifact structure, and rendered behavior in Chromium, Firefox, and WebKit.
|
|
36
|
+
|
|
37
|
+
## Dependency Checks
|
|
38
|
+
|
|
39
|
+
Run the local dependency audit before publishing:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm audit --audit-level=moderate
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The package also uses `npm run release:verify` to run build, lint, static, Pages, cross-browser, pack dry-run, and publish dry-run checks.
|
|
46
|
+
|
|
47
|
+
The npm workflow validates a strict tag, exact peeled commit, protected-main ancestry, and package version before dependency lifecycle code runs. Publishing requires the protected `npm` GitHub Environment, emits npm provenance, and exposes `NODE_AUTH_TOKEN` only to the publish step. npm trusted publishing and immutable commit SHA pins for GitHub Actions remain follow-up hardening work.
|
|
48
|
+
|
|
49
|
+
The demo's two exact-version companion CDN fixtures use SHA-384 subresource integrity with anonymous CORS. Their hashes are derived from the pinned local development fixtures and enforced by the rendered smoke contract.
|
|
50
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 180" role="img" aria-labelledby="title">
|
|
2
|
-
<title id="title">layout-style-css app icon</title>
|
|
3
|
-
<rect width="180" height="180" rx="40" fill="#111827"/>
|
|
4
|
-
<rect x="30" y="34" width="40" height="112" rx="12" fill="#7dd3fc"/>
|
|
5
|
-
<rect x="88" y="34" width="62" height="44" rx="12" fill="#fbbf24"/>
|
|
6
|
-
<rect x="88" y="100" width="62" height="46" rx="12" fill="#f472b6"/>
|
|
7
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 180" role="img" aria-labelledby="title">
|
|
2
|
+
<title id="title">layout-style-css app icon</title>
|
|
3
|
+
<rect width="180" height="180" rx="40" fill="#111827"/>
|
|
4
|
+
<rect x="30" y="34" width="40" height="112" rx="12" fill="#7dd3fc"/>
|
|
5
|
+
<rect x="88" y="34" width="62" height="44" rx="12" fill="#fbbf24"/>
|
|
6
|
+
<rect x="88" y="100" width="62" height="46" rx="12" fill="#f472b6"/>
|
|
7
|
+
</svg>
|
package/demo/assets/favicon.svg
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title">
|
|
2
|
-
<title id="title">layout-style-css favicon</title>
|
|
3
|
-
<rect width="64" height="64" rx="14" fill="#111827"/>
|
|
4
|
-
<rect x="10" y="12" width="14" height="40" rx="4" fill="#7dd3fc"/>
|
|
5
|
-
<rect x="30" y="12" width="24" height="16" rx="4" fill="#fbbf24"/>
|
|
6
|
-
<rect x="30" y="36" width="24" height="16" rx="4" fill="#f472b6"/>
|
|
7
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title">
|
|
2
|
+
<title id="title">layout-style-css favicon</title>
|
|
3
|
+
<rect width="64" height="64" rx="14" fill="#111827"/>
|
|
4
|
+
<rect x="10" y="12" width="14" height="40" rx="4" fill="#7dd3fc"/>
|
|
5
|
+
<rect x="30" y="12" width="24" height="16" rx="4" fill="#fbbf24"/>
|
|
6
|
+
<rect x="30" y="36" width="24" height="16" rx="4" fill="#f472b6"/>
|
|
7
|
+
</svg>
|
package/demo/browserconfig.xml
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<browserconfig>
|
|
3
|
-
<msapplication>
|
|
4
|
-
<tile>
|
|
5
|
-
<square150x150logo src="./assets/apple-touch-icon.svg"/>
|
|
6
|
-
<TileColor>#111827</TileColor>
|
|
7
|
-
</tile>
|
|
8
|
-
</msapplication>
|
|
9
|
-
</browserconfig>
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<browserconfig>
|
|
3
|
+
<msapplication>
|
|
4
|
+
<tile>
|
|
5
|
+
<square150x150logo src="./assets/apple-touch-icon.svg"/>
|
|
6
|
+
<TileColor>#111827</TileColor>
|
|
7
|
+
</tile>
|
|
8
|
+
</msapplication>
|
|
9
|
+
</browserconfig>
|
package/demo/demo.css
ADDED
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Demo paint is intentionally local: the published layout modules continue to
|
|
3
|
+
own structure only, while the lab remains legible in layout-only mode.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--demo-bg: #f1f5f9;
|
|
8
|
+
--demo-panel: #ffffff;
|
|
9
|
+
--demo-panel-strong: #e2e8f0;
|
|
10
|
+
--demo-text: #172033;
|
|
11
|
+
--demo-muted: #526079;
|
|
12
|
+
--demo-line: #b8c3d3;
|
|
13
|
+
--demo-accent: #4f46e5;
|
|
14
|
+
--demo-accent-soft: #e0e7ff;
|
|
15
|
+
--demo-danger: #b42318;
|
|
16
|
+
--demo-radius: 1rem;
|
|
17
|
+
--demo-shadow: 0 1rem 3rem rgb(15 23 42 / 0.12);
|
|
18
|
+
--demo-density-gap: 1rem;
|
|
19
|
+
--demo-region-padding: 1rem;
|
|
20
|
+
color-scheme: light;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
body[data-mode="dark"] {
|
|
24
|
+
--demo-bg: #101827;
|
|
25
|
+
--demo-panel: #172033;
|
|
26
|
+
--demo-panel-strong: #273449;
|
|
27
|
+
--demo-text: #f8fafc;
|
|
28
|
+
--demo-muted: #cbd5e1;
|
|
29
|
+
--demo-line: #46556d;
|
|
30
|
+
--demo-accent: #a5b4fc;
|
|
31
|
+
--demo-accent-soft: #312e81;
|
|
32
|
+
--demo-shadow: 0 1rem 3rem rgb(0 0 0 / 0.38);
|
|
33
|
+
color-scheme: dark;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
body[data-mode="contrast"] {
|
|
37
|
+
--demo-bg: #000000;
|
|
38
|
+
--demo-panel: #000000;
|
|
39
|
+
--demo-panel-strong: #1a1a1a;
|
|
40
|
+
--demo-text: #ffffff;
|
|
41
|
+
--demo-muted: #ffffff;
|
|
42
|
+
--demo-line: #ffffff;
|
|
43
|
+
--demo-accent: #ffeb3b;
|
|
44
|
+
--demo-accent-soft: #322f00;
|
|
45
|
+
color-scheme: dark;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
body[data-density="compact"] {
|
|
49
|
+
--demo-density-gap: 0.5rem;
|
|
50
|
+
--demo-region-padding: 0.75rem;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
body[data-density="spacious"] {
|
|
54
|
+
--demo-density-gap: 1.5rem;
|
|
55
|
+
--demo-region-padding: 1.5rem;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
html {
|
|
59
|
+
min-inline-size: 20rem;
|
|
60
|
+
scroll-behavior: smooth;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
body {
|
|
64
|
+
min-block-size: 100svh;
|
|
65
|
+
margin: 0;
|
|
66
|
+
overflow-x: clip;
|
|
67
|
+
background: var(--demo-bg);
|
|
68
|
+
color: var(--demo-text);
|
|
69
|
+
font-family:
|
|
70
|
+
Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
71
|
+
sans-serif;
|
|
72
|
+
line-height: 1.5;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
body * {
|
|
76
|
+
box-sizing: border-box;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
button,
|
|
80
|
+
select {
|
|
81
|
+
min-block-size: 2.75rem;
|
|
82
|
+
max-inline-size: 100%;
|
|
83
|
+
font: inherit;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
button {
|
|
87
|
+
cursor: pointer;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
button:focus-visible,
|
|
91
|
+
select:focus-visible,
|
|
92
|
+
a:focus-visible {
|
|
93
|
+
outline: 0.1875rem solid var(--demo-accent);
|
|
94
|
+
outline-offset: 0.1875rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
select {
|
|
98
|
+
inline-size: 100%;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
h1,
|
|
102
|
+
h2,
|
|
103
|
+
h3,
|
|
104
|
+
p,
|
|
105
|
+
pre {
|
|
106
|
+
margin-block: 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
h1,
|
|
110
|
+
h2,
|
|
111
|
+
h3,
|
|
112
|
+
p,
|
|
113
|
+
code,
|
|
114
|
+
strong,
|
|
115
|
+
span,
|
|
116
|
+
label {
|
|
117
|
+
overflow-wrap: anywhere;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
h1 {
|
|
121
|
+
max-inline-size: 18ch;
|
|
122
|
+
font-size: clamp(2rem, 4vw, 4.5rem);
|
|
123
|
+
line-height: 0.98;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
h2 {
|
|
127
|
+
font-size: clamp(1.25rem, 2.5vw, 2rem);
|
|
128
|
+
line-height: 1.1;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
h3 {
|
|
132
|
+
font-size: 1rem;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.demo-skip-link {
|
|
136
|
+
position: fixed;
|
|
137
|
+
inset-block-start: 0.5rem;
|
|
138
|
+
inset-inline-start: 0.5rem;
|
|
139
|
+
z-index: 100;
|
|
140
|
+
padding: 0.75rem 1rem;
|
|
141
|
+
translate: 0 -150%;
|
|
142
|
+
background: var(--demo-panel);
|
|
143
|
+
color: var(--demo-text);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.demo-skip-link:focus {
|
|
147
|
+
translate: 0;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.demo-topbar {
|
|
151
|
+
position: sticky;
|
|
152
|
+
inset-block-start: 0;
|
|
153
|
+
z-index: 20;
|
|
154
|
+
display: flex;
|
|
155
|
+
flex-wrap: wrap;
|
|
156
|
+
align-items: center;
|
|
157
|
+
justify-content: space-between;
|
|
158
|
+
gap: 0.75rem;
|
|
159
|
+
min-block-size: 4.5rem;
|
|
160
|
+
padding:
|
|
161
|
+
max(0.75rem, env(safe-area-inset-top, 0px))
|
|
162
|
+
max(1rem, env(safe-area-inset-right, 0px))
|
|
163
|
+
0.75rem
|
|
164
|
+
max(1rem, env(safe-area-inset-left, 0px));
|
|
165
|
+
border-block-end: 1px solid var(--demo-line);
|
|
166
|
+
background: color-mix(in srgb, var(--demo-panel) 92%, transparent);
|
|
167
|
+
backdrop-filter: blur(1rem);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.demo-brand,
|
|
171
|
+
.demo-controls-heading,
|
|
172
|
+
.demo-section-heading,
|
|
173
|
+
.demo-code-card-heading,
|
|
174
|
+
.demo-topbar-actions {
|
|
175
|
+
display: flex;
|
|
176
|
+
align-items: center;
|
|
177
|
+
justify-content: space-between;
|
|
178
|
+
gap: 0.75rem;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.demo-brand {
|
|
182
|
+
align-items: flex-start;
|
|
183
|
+
flex-direction: column;
|
|
184
|
+
gap: 0.125rem;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.demo-kicker {
|
|
188
|
+
color: var(--demo-muted);
|
|
189
|
+
font-size: 0.75rem;
|
|
190
|
+
font-weight: 750;
|
|
191
|
+
letter-spacing: 0.12em;
|
|
192
|
+
text-transform: uppercase;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.demo-status,
|
|
196
|
+
.demo-copy-status,
|
|
197
|
+
#containerReadout {
|
|
198
|
+
color: var(--demo-muted);
|
|
199
|
+
font-size: 0.875rem;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.demo-status {
|
|
203
|
+
padding: 0.4rem 0.7rem;
|
|
204
|
+
border: 1px solid var(--demo-line);
|
|
205
|
+
border-radius: 999px;
|
|
206
|
+
background: var(--demo-accent-soft);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
body[data-ecosystem="layout-only"] .demo-status {
|
|
210
|
+
border-style: dashed;
|
|
211
|
+
background: var(--demo-panel-strong);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
body[data-ecosystem="all-three"] .demo-status {
|
|
215
|
+
box-shadow: inset 0 0 0 0.125rem color-mix(in srgb, var(--demo-accent) 30%, transparent);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.demo-page {
|
|
219
|
+
display: grid;
|
|
220
|
+
inline-size: min(calc(100% - 2rem), 112rem);
|
|
221
|
+
margin-inline: auto;
|
|
222
|
+
padding-block: clamp(1rem, 3vw, 2rem) 4rem;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.demo-controls,
|
|
226
|
+
.demo-intro,
|
|
227
|
+
.demo-lab,
|
|
228
|
+
.demo-code-card {
|
|
229
|
+
border: 1px solid var(--demo-line);
|
|
230
|
+
border-radius: var(--demo-radius);
|
|
231
|
+
background: var(--demo-panel);
|
|
232
|
+
box-shadow: var(--demo-shadow);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.demo-controls {
|
|
236
|
+
min-inline-size: 0;
|
|
237
|
+
padding: 1rem;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.demo-controls-heading {
|
|
241
|
+
margin-block-end: 1rem;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.demo-controls-grid {
|
|
245
|
+
display: grid;
|
|
246
|
+
gap: 0.875rem;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.demo-controls-grid label {
|
|
250
|
+
display: grid;
|
|
251
|
+
gap: 0.35rem;
|
|
252
|
+
min-inline-size: 0;
|
|
253
|
+
color: var(--demo-muted);
|
|
254
|
+
font-size: 0.8125rem;
|
|
255
|
+
font-weight: 700;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.demo-controls-grid select {
|
|
259
|
+
padding-inline: 0.625rem;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.demo-main {
|
|
263
|
+
display: grid;
|
|
264
|
+
min-inline-size: 0;
|
|
265
|
+
gap: clamp(1rem, 3vw, 2rem);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.demo-intro {
|
|
269
|
+
display: grid;
|
|
270
|
+
grid-template-columns: minmax(0, 1fr);
|
|
271
|
+
gap: 1.5rem;
|
|
272
|
+
padding: clamp(1.25rem, 4vw, 3rem);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.demo-intro > div:first-child {
|
|
276
|
+
display: grid;
|
|
277
|
+
gap: 1rem;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.demo-intro p {
|
|
281
|
+
max-inline-size: 68ch;
|
|
282
|
+
color: var(--demo-muted);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.demo-state-panel {
|
|
286
|
+
display: grid;
|
|
287
|
+
align-content: center;
|
|
288
|
+
gap: 0.75rem;
|
|
289
|
+
min-inline-size: 0;
|
|
290
|
+
padding: 1rem;
|
|
291
|
+
border: 1px solid var(--demo-line);
|
|
292
|
+
border-radius: calc(var(--demo-radius) * 0.75);
|
|
293
|
+
background: var(--demo-panel-strong);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.demo-lab {
|
|
297
|
+
min-inline-size: 0;
|
|
298
|
+
padding: clamp(1rem, 2vw, 1.5rem);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.demo-section-heading {
|
|
302
|
+
flex-wrap: wrap;
|
|
303
|
+
margin-block-end: 1rem;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.demo-preview-frame {
|
|
307
|
+
--demo-container-inline-size: 100%;
|
|
308
|
+
|
|
309
|
+
container-name: demo-preview;
|
|
310
|
+
container-type: inline-size;
|
|
311
|
+
inline-size: min(100%, var(--demo-container-inline-size));
|
|
312
|
+
min-inline-size: 0;
|
|
313
|
+
margin-inline: auto;
|
|
314
|
+
overflow: clip;
|
|
315
|
+
border: 1px dashed var(--demo-line);
|
|
316
|
+
border-radius: calc(var(--demo-radius) * 0.85);
|
|
317
|
+
background: var(--demo-bg);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* The nested root lets personalities respond to preview width, not viewport width. */
|
|
321
|
+
.demo-preview-root {
|
|
322
|
+
min-block-size: 0;
|
|
323
|
+
min-inline-size: 0;
|
|
324
|
+
padding-block: 0.75rem;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.demo-preview-root > .ly-wrapper {
|
|
328
|
+
/* The width control represents the queried content box exactly at 48rem/64rem. */
|
|
329
|
+
--ly-wrapper-gutter: 0px;
|
|
330
|
+
|
|
331
|
+
min-inline-size: 0;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.demo-recipe {
|
|
335
|
+
min-block-size: 30rem;
|
|
336
|
+
min-inline-size: 0;
|
|
337
|
+
gap: var(--demo-density-gap);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.demo-recipe:is(.ly-gallery, [data-ly-recipe="gallery"]),
|
|
341
|
+
.demo-recipe:is(.ly-card-grid, [data-ly-recipe="card-grid"]) {
|
|
342
|
+
min-block-size: auto;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.demo-recipe:is(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
346
|
+
min-block-size: 32rem;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.demo-region {
|
|
350
|
+
display: grid;
|
|
351
|
+
align-content: start;
|
|
352
|
+
min-block-size: 5rem;
|
|
353
|
+
min-inline-size: 0;
|
|
354
|
+
gap: 0.75rem;
|
|
355
|
+
padding: var(--demo-region-padding);
|
|
356
|
+
overflow: hidden;
|
|
357
|
+
border: 1px solid var(--demo-line);
|
|
358
|
+
border-radius: calc(var(--demo-radius) * 0.65);
|
|
359
|
+
background: var(--demo-panel);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.demo-region[data-ly-area="main"],
|
|
363
|
+
.demo-region[data-ly-area="secondary"],
|
|
364
|
+
.demo-region[data-ly-area="content"] {
|
|
365
|
+
background: var(--demo-accent-soft);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.demo-region > button {
|
|
369
|
+
justify-self: start;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.demo-grid-item {
|
|
373
|
+
min-block-size: 8rem;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.demo-list-scroll {
|
|
377
|
+
--ly-scroll-max: 10rem;
|
|
378
|
+
|
|
379
|
+
display: grid;
|
|
380
|
+
gap: 0.5rem;
|
|
381
|
+
padding-inline-end: 0.25rem;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.demo-list-scroll p {
|
|
385
|
+
padding: 0.5rem;
|
|
386
|
+
background: var(--demo-panel-strong);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.demo-code-grid {
|
|
390
|
+
display: grid;
|
|
391
|
+
grid-template-columns: minmax(0, 1fr);
|
|
392
|
+
gap: 1rem;
|
|
393
|
+
min-inline-size: 0;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.demo-code-heading {
|
|
397
|
+
grid-column: 1 / -1;
|
|
398
|
+
margin-block-end: 0;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.demo-code-card {
|
|
402
|
+
display: grid;
|
|
403
|
+
align-content: start;
|
|
404
|
+
min-inline-size: 0;
|
|
405
|
+
gap: 1rem;
|
|
406
|
+
padding: 1rem;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
.demo-code-card-heading {
|
|
410
|
+
flex-wrap: wrap;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.demo-code-card pre {
|
|
414
|
+
max-block-size: 22rem;
|
|
415
|
+
min-inline-size: 0;
|
|
416
|
+
margin: 0;
|
|
417
|
+
padding: 1rem;
|
|
418
|
+
overflow: auto;
|
|
419
|
+
border-radius: calc(var(--demo-radius) * 0.65);
|
|
420
|
+
background: #0f172a;
|
|
421
|
+
color: #e2e8f0;
|
|
422
|
+
font-size: 0.8rem;
|
|
423
|
+
tab-size: 2;
|
|
424
|
+
white-space: pre;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.demo-copy-status[data-copy-state="error"] {
|
|
428
|
+
color: var(--demo-danger);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.demo-backdrop[hidden],
|
|
432
|
+
.demo-controls[hidden] {
|
|
433
|
+
display: none;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
@media (min-width: 48rem) {
|
|
437
|
+
.demo-intro {
|
|
438
|
+
grid-template-columns: minmax(0, 1.5fr) minmax(14rem, 0.5fr);
|
|
439
|
+
align-items: end;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.demo-code-grid {
|
|
443
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
@media (min-width: 64rem) {
|
|
448
|
+
#demoControlsToggle,
|
|
449
|
+
#demoControlsClose {
|
|
450
|
+
display: none;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.demo-page {
|
|
454
|
+
grid-template-columns: minmax(13rem, 14rem) minmax(0, 1fr);
|
|
455
|
+
align-items: start;
|
|
456
|
+
gap: 1.5rem;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.demo-controls {
|
|
460
|
+
position: sticky;
|
|
461
|
+
inset-block-start: 6rem;
|
|
462
|
+
display: block;
|
|
463
|
+
max-block-size: calc(100svh - 7rem);
|
|
464
|
+
overflow: auto;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
@media (max-width: 63.999rem) {
|
|
469
|
+
.demo-page {
|
|
470
|
+
inline-size: min(calc(100% - 1rem), 72rem);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.demo-status {
|
|
474
|
+
display: none;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
.demo-controls {
|
|
478
|
+
position: fixed;
|
|
479
|
+
inset-block: 0;
|
|
480
|
+
inset-inline-end: 0;
|
|
481
|
+
z-index: 40;
|
|
482
|
+
inline-size: min(24rem, calc(100% - 1rem));
|
|
483
|
+
max-block-size: 100svh;
|
|
484
|
+
padding:
|
|
485
|
+
max(1rem, env(safe-area-inset-top, 0px))
|
|
486
|
+
max(1rem, env(safe-area-inset-right, 0px))
|
|
487
|
+
max(1rem, env(safe-area-inset-bottom, 0px))
|
|
488
|
+
1rem;
|
|
489
|
+
overflow: auto;
|
|
490
|
+
border-radius: var(--demo-radius) 0 0 var(--demo-radius);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.demo-backdrop {
|
|
494
|
+
position: fixed;
|
|
495
|
+
inset: 0;
|
|
496
|
+
z-index: 30;
|
|
497
|
+
background: rgb(15 23 42 / 0.72);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
@media (max-width: 34rem) {
|
|
502
|
+
.demo-topbar-actions,
|
|
503
|
+
#demoControlsToggle {
|
|
504
|
+
inline-size: 100%;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.demo-intro,
|
|
508
|
+
.demo-lab {
|
|
509
|
+
border-radius: calc(var(--demo-radius) * 0.75);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.demo-section-heading,
|
|
513
|
+
.demo-code-card-heading {
|
|
514
|
+
align-items: flex-start;
|
|
515
|
+
flex-direction: column;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
@media (prefers-reduced-motion: reduce) {
|
|
520
|
+
html {
|
|
521
|
+
scroll-behavior: auto;
|
|
522
|
+
}
|
|
523
|
+
}
|