layout-style-css 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -50
- package/CONTRIBUTING.md +43 -43
- package/LICENSE +21 -21
- package/README.md +19 -14
- package/SECURITY.md +39 -39
- 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.js +128 -43
- package/demo/index.html +20 -18
- package/demo/robots.txt +4 -4
- package/demo/site.webmanifest +23 -23
- package/demo/sitemap.xml +9 -9
- package/dist/integrations/ui-style-kit.css +162 -162
- package/dist/layout-style-css.css +147 -104
- package/dist/layout-style-css.min.css +1 -1
- package/dist/legacy.css +137 -102
- package/dist/personalities/bauhaus.css +10 -7
- package/dist/personalities/bento.css +15 -12
- package/dist/personalities/brutalism.css +8 -5
- package/dist/personalities/cyberpunk.css +8 -5
- package/dist/personalities/f-pattern.css +14 -11
- package/dist/personalities/maximalist.css +17 -14
- package/dist/personalities/minimal-saas.css +8 -6
- package/dist/personalities/mondrian.css +10 -7
- package/dist/personalities/neumorphism.css +2 -2
- package/dist/personalities/retro-glass.css +10 -7
- package/dist/personalities/retrofuturism.css +8 -5
- package/dist/personalities/split-screen.css +1 -1
- package/dist/personalities/synthwave.css +2 -2
- package/dist/personalities/tactile.css +1 -1
- package/dist/personalities/y2k.css +8 -5
- package/dist/personalities/z-pattern.css +15 -12
- package/dist/recipes.css +10 -2
- package/docs/wiki/Demo-And-GitHub-Pages.md +1 -1
- package/docs/wiki/Getting-Started.md +1 -1
- package/docs/wiki/Home.md +4 -4
- package/docs/wiki/Installation-And-CDN.md +8 -9
- package/docs/wiki/Layout-Recipes.md +1 -1
- package/docs/wiki/Layout-Styles.md +1 -1
- package/docs/wiki/Migrating-To-2.0.md +7 -7
- package/docs/wiki/Release-And-Publishing.md +10 -8
- package/docs/wiki/UI-Style-Kit-Compatibility.md +8 -9
- package/package.json +78 -78
- package/styles/integrations/ui-style-kit.css +162 -162
- package/styles/personalities/bauhaus.css +10 -7
- package/styles/personalities/bento.css +15 -12
- package/styles/personalities/brutalism.css +8 -5
- package/styles/personalities/cyberpunk.css +8 -5
- package/styles/personalities/f-pattern.css +14 -11
- package/styles/personalities/maximalist.css +17 -14
- package/styles/personalities/minimal-saas.css +8 -6
- package/styles/personalities/mondrian.css +10 -7
- package/styles/personalities/neumorphism.css +2 -2
- package/styles/personalities/retro-glass.css +10 -7
- package/styles/personalities/retrofuturism.css +8 -5
- package/styles/personalities/split-screen.css +1 -1
- package/styles/personalities/synthwave.css +2 -2
- package/styles/personalities/tactile.css +1 -1
- package/styles/personalities/y2k.css +8 -5
- package/styles/personalities/z-pattern.css +15 -12
- package/styles/recipes.css +10 -2
|
@@ -14,14 +14,29 @@
|
|
|
14
14
|
min-inline-size: 0;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
@container
|
|
17
|
+
@container (min-width: 48rem) {
|
|
18
18
|
:where(.ly-root[data-ly-layout="maximalist"])
|
|
19
19
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
20
20
|
grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
@container
|
|
24
|
+
@container (min-width: 56rem) {
|
|
25
|
+
:where(.ly-root[data-ly-layout="maximalist"]) .ly-grid > :nth-child(7n + 1) {
|
|
26
|
+
grid-column: span 3;
|
|
27
|
+
grid-row: span 2;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:where(.ly-root[data-ly-layout="maximalist"])
|
|
31
|
+
:where(.ly-gallery, [data-ly-recipe="gallery"])
|
|
32
|
+
> :nth-child(5n + 1) {
|
|
33
|
+
grid-column: span 2;
|
|
34
|
+
grid-row: span 2;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* The four-track shell waits for a locally feasible allocation. */
|
|
39
|
+
@container (min-width: 64rem) {
|
|
25
40
|
:where(.ly-root[data-ly-layout="maximalist"])
|
|
26
41
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
27
42
|
grid-template-areas:
|
|
@@ -35,17 +50,5 @@
|
|
|
35
50
|
minmax(min(100%, 15rem), 0.32fr)
|
|
36
51
|
minmax(min(100%, 18rem), 0.38fr);
|
|
37
52
|
}
|
|
38
|
-
|
|
39
|
-
:where(.ly-root[data-ly-layout="maximalist"]) .ly-grid > :nth-child(7n + 1) {
|
|
40
|
-
grid-column: span 3;
|
|
41
|
-
grid-row: span 2;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
:where(.ly-root[data-ly-layout="maximalist"])
|
|
45
|
-
:where(.ly-gallery, [data-ly-recipe="gallery"])
|
|
46
|
-
> :nth-child(5n + 1) {
|
|
47
|
-
grid-column: span 2;
|
|
48
|
-
grid-row: span 2;
|
|
49
|
-
}
|
|
50
53
|
}
|
|
51
54
|
}
|
|
@@ -15,8 +15,14 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
|
+
:where(.ly-root[data-ly-layout="minimal-saas"]) .ly-grid > :nth-child(4n + 1) {
|
|
20
|
+
grid-column: span 2;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
25
|
+
@container (min-width: 64rem) {
|
|
20
26
|
:where(.ly-root[data-ly-layout="minimal-saas"])
|
|
21
27
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
22
28
|
grid-template-areas:
|
|
@@ -29,9 +35,5 @@
|
|
|
29
35
|
minmax(0, 1fr)
|
|
30
36
|
minmax(min(100%, 16rem), 0.28fr);
|
|
31
37
|
}
|
|
32
|
-
|
|
33
|
-
:where(.ly-root[data-ly-layout="minimal-saas"]) .ly-grid > :nth-child(4n + 1) {
|
|
34
|
-
grid-column: span 2;
|
|
35
|
-
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -15,14 +15,22 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
19
|
:where(.ly-root[data-ly-layout="mondrian"])
|
|
20
20
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
21
|
grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
@container
|
|
25
|
+
@container (min-width: 52rem) {
|
|
26
|
+
:where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
|
|
27
|
+
grid-column: span 2;
|
|
28
|
+
grid-row: span 2;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
33
|
+
@container (min-width: 64rem) {
|
|
26
34
|
:where(.ly-root[data-ly-layout="mondrian"])
|
|
27
35
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
28
36
|
grid-template-areas:
|
|
@@ -35,10 +43,5 @@
|
|
|
35
43
|
minmax(0, 1.45fr)
|
|
36
44
|
minmax(min(100%, 18rem), 0.55fr);
|
|
37
45
|
}
|
|
38
|
-
|
|
39
|
-
:where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
|
|
40
|
-
grid-column: span 2;
|
|
41
|
-
grid-row: span 2;
|
|
42
|
-
}
|
|
43
46
|
}
|
|
44
47
|
}
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
19
|
:where(.ly-root[data-ly-layout="neumorphism"])
|
|
20
20
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
21
|
grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
@container
|
|
25
|
+
@container (min-width: 52rem) {
|
|
26
26
|
:where(.ly-root[data-ly-layout="neumorphism"])
|
|
27
27
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
28
28
|
grid-template-areas:
|
|
@@ -15,14 +15,22 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
19
|
:where(.ly-root[data-ly-layout="retro-glass"])
|
|
20
20
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
21
|
grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
@container
|
|
25
|
+
@container (min-width: 56rem) {
|
|
26
|
+
:where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
|
|
27
|
+
grid-column: span 2;
|
|
28
|
+
grid-row: span 2;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
33
|
+
@container (min-width: 64rem) {
|
|
26
34
|
:where(.ly-root[data-ly-layout="retro-glass"])
|
|
27
35
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
28
36
|
grid-template-areas:
|
|
@@ -35,10 +43,5 @@
|
|
|
35
43
|
minmax(0, 0.75fr)
|
|
36
44
|
minmax(min(100%, 18rem), 0.32fr);
|
|
37
45
|
}
|
|
38
|
-
|
|
39
|
-
:where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
|
|
40
|
-
grid-column: span 2;
|
|
41
|
-
grid-row: span 2;
|
|
42
|
-
}
|
|
43
46
|
}
|
|
44
47
|
}
|
|
@@ -15,7 +15,14 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
|
+
:where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
|
|
20
|
+
grid-column: span 2;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
25
|
+
@container (min-width: 64rem) {
|
|
19
26
|
:where(.ly-root[data-ly-layout="retrofuturism"])
|
|
20
27
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
28
|
grid-template-areas:
|
|
@@ -28,9 +35,5 @@
|
|
|
28
35
|
minmax(0, 1fr)
|
|
29
36
|
minmax(min(100%, 17rem), 0.3fr);
|
|
30
37
|
}
|
|
31
|
-
|
|
32
|
-
:where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
|
|
33
|
-
grid-column: span 2;
|
|
34
|
-
}
|
|
35
38
|
}
|
|
36
39
|
}
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
min-inline-size: 0;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
@container
|
|
19
|
+
@container (min-width: 48rem) {
|
|
20
20
|
:where(.ly-root[data-ly-layout="synthwave"])
|
|
21
21
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
22
22
|
grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
@container
|
|
26
|
+
@container (min-width: 64rem) {
|
|
27
27
|
:where(.ly-root[data-ly-layout="synthwave"])
|
|
28
28
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
29
29
|
grid-template-areas:
|
|
@@ -15,7 +15,14 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
|
+
:where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
|
|
20
|
+
grid-column: span 3;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
25
|
+
@container (min-width: 64rem) {
|
|
19
26
|
:where(.ly-root[data-ly-layout="y2k"])
|
|
20
27
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
28
|
grid-template-areas:
|
|
@@ -28,9 +35,5 @@
|
|
|
28
35
|
minmax(0, 1fr)
|
|
29
36
|
minmax(min(100%, 16rem), 0.28fr);
|
|
30
37
|
}
|
|
31
|
-
|
|
32
|
-
:where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
|
|
33
|
-
grid-column: span 3;
|
|
34
|
-
}
|
|
35
38
|
}
|
|
36
39
|
}
|
|
@@ -15,14 +15,27 @@
|
|
|
15
15
|
min-inline-size: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
@container
|
|
18
|
+
@container (min-width: 48rem) {
|
|
19
19
|
:where(.ly-root[data-ly-layout="z-pattern"])
|
|
20
20
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
21
21
|
grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
@container
|
|
25
|
+
@container (min-width: 60rem) {
|
|
26
|
+
:where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
|
|
27
|
+
grid-column: span 2;
|
|
28
|
+
align-self: end;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:where(.ly-root[data-ly-layout="z-pattern"])
|
|
32
|
+
:where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
|
|
33
|
+
grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* The three-track shell waits for a locally feasible allocation. */
|
|
38
|
+
@container (min-width: 64rem) {
|
|
26
39
|
:where(.ly-root[data-ly-layout="z-pattern"])
|
|
27
40
|
:where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
|
|
28
41
|
grid-template-areas:
|
|
@@ -35,15 +48,5 @@
|
|
|
35
48
|
minmax(min(100%, 19rem), 0.55fr)
|
|
36
49
|
minmax(min(100%, 17rem), 0.3fr);
|
|
37
50
|
}
|
|
38
|
-
|
|
39
|
-
:where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
|
|
40
|
-
grid-column: span 2;
|
|
41
|
-
align-self: end;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
:where(.ly-root[data-ly-layout="z-pattern"])
|
|
45
|
-
:where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
|
|
46
|
-
grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
|
|
47
|
-
}
|
|
48
51
|
}
|
|
49
52
|
}
|
package/dist/recipes.css
CHANGED
|
@@ -239,8 +239,7 @@
|
|
|
239
239
|
minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
:where(.ly-dashboard, [data-ly-recipe="dashboard"])
|
|
243
|
-
:where(.ly-docs, [data-ly-recipe="docs"]) {
|
|
242
|
+
:where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
|
|
244
243
|
grid-template-areas:
|
|
245
244
|
"nav header header"
|
|
246
245
|
"nav main aside"
|
|
@@ -251,6 +250,15 @@
|
|
|
251
250
|
minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
|
|
252
251
|
}
|
|
253
252
|
|
|
253
|
+
:where(.ly-docs, [data-ly-recipe="docs"]) {
|
|
254
|
+
grid-template-areas:
|
|
255
|
+
"nav header"
|
|
256
|
+
"nav main"
|
|
257
|
+
"nav aside"
|
|
258
|
+
"nav footer";
|
|
259
|
+
grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
|
|
260
|
+
}
|
|
261
|
+
|
|
254
262
|
:where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
|
|
255
263
|
grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.45fr) minmax(0, 1fr);
|
|
256
264
|
}
|
|
@@ -37,7 +37,7 @@ The smoke suite verifies:
|
|
|
37
37
|
- bounded scrolling
|
|
38
38
|
- accessible mobile controls
|
|
39
39
|
- layout-only, Layout plus UI, and all-three ecosystem modes
|
|
40
|
-
- pinned `ui-style-kit-css@2.0
|
|
40
|
+
- pinned `ui-style-kit-css@2.1.0` visual, token bridge, and manifest behavior plus released `interactive-surface-css@1.5.0`
|
|
41
41
|
|
|
42
42
|
The demo query parser uses explicit allowlists and writes generated imports and markup with `textContent`.
|
|
43
43
|
|
package/docs/wiki/Home.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Layout Style CSS Wiki
|
|
2
2
|
|
|
3
|
-
Version 2.
|
|
3
|
+
Version 2.1.1 is a container-first, dependency-free layout library. It ships semantic wrappers, composition primitives, seven recipes, sixteen layout personalities, focused exports, a v2-only compatibility bundle, and refreshed ecosystem fixtures for UI Style Kit CSS 2.1 and Interactive Surface CSS 1.5.
|
|
4
4
|
|
|
5
5
|
## Start Here
|
|
6
6
|
|
|
@@ -22,12 +22,12 @@ Version 2.0.0 is a container-first, dependency-free layout library. It ships sem
|
|
|
22
22
|
|
|
23
23
|
Layout Style CSS owns spatial behavior: containment, wrappers, flow, grids, areas, spans, sizing, and responsive arrangement. UI Style Kit owns visual paint. Interactive Surface owns interaction-state styling.
|
|
24
24
|
|
|
25
|
-
The package has no runtime or peer dependencies. `ui-style-kit-css@2.0
|
|
25
|
+
The package has no runtime or peer dependencies. `ui-style-kit-css@2.1.0` and `interactive-surface-css@1.5.0` are released registry fixtures used to prove optional integration.
|
|
26
26
|
|
|
27
27
|
## Supported Baseline
|
|
28
28
|
|
|
29
29
|
- Node.js 20 or newer for package development
|
|
30
30
|
- Current evergreen Chromium, Firefox, and WebKit
|
|
31
|
-
- Mobile-first DOM order with core thresholds at `48rem` and `64rem`,
|
|
31
|
+
- Mobile-first DOM order with core thresholds at `48rem` and `64rem`, nearest-container personality overrides, and `64rem` feasibility gates for three- and four-track application shells
|
|
32
32
|
|
|
33
|
-
The UI
|
|
33
|
+
The deprecated UI structural bridge remains available for existing UI-prefixed layout aliases, but canonical 2.1 examples use UI Style Kit visual CSS, the UI token bridge, Interactive Surface `state-core.css`, and Layout core.
|
|
@@ -5,7 +5,7 @@ Layout Style CSS 2.0 is dependency-free and has no peer dependency contract. Nod
|
|
|
5
5
|
## npm
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install layout-style-css@2.
|
|
8
|
+
npm install layout-style-css@2.1.1
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Focused Exports
|
|
@@ -37,32 +37,31 @@ import "layout-style-css";
|
|
|
37
37
|
Layout plus UI Style Kit:
|
|
38
38
|
|
|
39
39
|
```js
|
|
40
|
-
import "ui-style-kit-css/
|
|
41
|
-
import "layout-style-css/integrations/ui-style-kit.css";
|
|
40
|
+
import "ui-style-kit-css/visual.css";
|
|
42
41
|
import "layout-style-css";
|
|
43
42
|
```
|
|
44
43
|
|
|
45
44
|
All three libraries, in required order:
|
|
46
45
|
|
|
47
46
|
```js
|
|
48
|
-
import "ui-style-kit-css/
|
|
47
|
+
import "ui-style-kit-css/visual.css";
|
|
48
|
+
import "ui-style-kit-css/interactive-surface-theme.css";
|
|
49
49
|
import "interactive-surface-css/state-core.css";
|
|
50
|
-
import "layout-style-css/integrations/ui-style-kit.css";
|
|
51
50
|
import "layout-style-css";
|
|
52
51
|
```
|
|
53
52
|
|
|
54
|
-
`ui-style-kit-css@2.0
|
|
53
|
+
The first import block is deprecated compatibility for legacy UI-prefixed structural aliases. Canonical 2.1 imports use the released `ui-style-kit-css@2.1.0` visual CSS, `ui-style-kit-css/interactive-surface-theme.css`, released `interactive-surface-css@1.5.0` state core, and Layout core.
|
|
55
54
|
|
|
56
55
|
## CDN
|
|
57
56
|
|
|
58
57
|
Layout only:
|
|
59
58
|
|
|
60
59
|
```html
|
|
61
|
-
<link rel="stylesheet" href="https://unpkg.com/layout-style-css@2.
|
|
62
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layout-style-css@2.
|
|
60
|
+
<link rel="stylesheet" href="https://unpkg.com/layout-style-css@2.1.1/dist/layout-style-css.min.css">
|
|
61
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layout-style-css@2.1.1/dist/layout-style-css.min.css">
|
|
63
62
|
```
|
|
64
63
|
|
|
65
|
-
For optional companions, preserve the same order as the package imports: UI Style Kit
|
|
64
|
+
For optional companions, preserve the same order as the package imports: UI Style Kit visual CSS, UI Style Kit `interactive-surface-theme.css`, Interactive Surface 1.5.0 `state-core.css`, then Layout core. Load `layout-style-css/integrations/ui-style-kit.css` only for deprecated structural aliases.
|
|
66
65
|
|
|
67
66
|
## Browser Baseline
|
|
68
67
|
|
|
@@ -36,7 +36,7 @@ Place regions in the order that makes sense on a narrow screen. The recipe uses
|
|
|
36
36
|
|
|
37
37
|
## Content And Media Recipes
|
|
38
38
|
|
|
39
|
-
`docs` creates a documentation shell. `list-detail` arranges primary, secondary, and action regions. `split-hero` arranges content, media, and actions. `gallery` and `card-grid` create responsive repeated-item grids.
|
|
39
|
+
`docs` creates a documentation shell. At `64rem`, its navigation spans the left column while `header`, `main`, `aside`, and `footer` remain in source order and stack in the right column; Dashboard retains its three-column wide shell. `list-detail` arranges primary, secondary, and action regions. `split-hero` arranges content, media, and actions. `gallery` and `card-grid` create responsive repeated-item grids.
|
|
40
40
|
|
|
41
41
|
```html
|
|
42
42
|
<section class="ly-split-hero" data-ly-recipe="split-hero">
|
|
@@ -27,7 +27,7 @@ V2 calls spatial styles “personalities” and selects them with the canonical
|
|
|
27
27
|
| Mosaic | `maximalist` | Staggered editorial spans and broad measure. |
|
|
28
28
|
| Equal split | `split-screen` | Two equally weighted primary regions. |
|
|
29
29
|
|
|
30
|
-
Every personality changes at least two structural characteristics, such as area placement, shell direction, grid/span rhythm, wrapper measure, or responsive threshold. Personalities never set UI paint or change DOM order.
|
|
30
|
+
Every personality changes at least two structural characteristics, such as area placement, shell direction, grid/span rhythm, wrapper measure, or responsive threshold. Enhancements query the nearest inline-size container: grid rhythms retain their authored thresholds, safe two-track application shells retain their authored thresholds, and three- or four-track application shells wait until the local allocation reaches `64rem`. Personalities never set UI paint or change DOM order.
|
|
31
31
|
|
|
32
32
|
The v1 `data-layout`, `layout-style`, `.ly-layout-*`, and `.ly-style-*` hooks are available only through `layout-style-css/legacy.css`. New code must use `data-ly-layout`.
|
|
33
33
|
|
|
@@ -6,18 +6,18 @@ Version 2.0 rebuilds Layout Style CSS as a container-first, dependency-free stru
|
|
|
6
6
|
|
|
7
7
|
- Development and release scripts require Node.js 20 or newer.
|
|
8
8
|
- The package has no runtime dependencies and no peer dependencies.
|
|
9
|
-
- `ui-style-kit-css@2.0
|
|
9
|
+
- `ui-style-kit-css@2.1.0` and `interactive-surface-css@1.5.0` are released registry fixtures; neither is a consumer dependency.
|
|
10
10
|
- Current evergreen Chromium, Firefox, and WebKit are supported.
|
|
11
11
|
- Responsive recipes use core thresholds at `48rem` and `64rem`; personalities may add personality-specific thresholds.
|
|
12
12
|
|
|
13
13
|
Install companions explicitly only when the application uses them:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npm install layout-style-css@2.
|
|
17
|
-
npm install ui-style-kit-css@2.0
|
|
16
|
+
npm install layout-style-css@2.1.1
|
|
17
|
+
npm install ui-style-kit-css@2.1.0 interactive-surface-css@1.5.0
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Layout Style CSS 2.1 keeps the v2 layout contract and updates the optional companion fixture path to UI Style Kit visual CSS, its Interactive Surface token bridge, and Interactive Surface 1.5 state core.
|
|
21
21
|
|
|
22
22
|
## Export Changes
|
|
23
23
|
|
|
@@ -60,7 +60,7 @@ import "layout-style-css";
|
|
|
60
60
|
Layout plus UI Style Kit:
|
|
61
61
|
|
|
62
62
|
```js
|
|
63
|
-
import "ui-style-kit-css/
|
|
63
|
+
import "ui-style-kit-css/visual.css";
|
|
64
64
|
import "layout-style-css/integrations/ui-style-kit.css";
|
|
65
65
|
import "layout-style-css";
|
|
66
66
|
```
|
|
@@ -68,9 +68,9 @@ import "layout-style-css";
|
|
|
68
68
|
All three libraries must be imported in this exact order:
|
|
69
69
|
|
|
70
70
|
```js
|
|
71
|
-
import "ui-style-kit-css/
|
|
71
|
+
import "ui-style-kit-css/visual.css";
|
|
72
|
+
import "ui-style-kit-css/interactive-surface-theme.css";
|
|
72
73
|
import "interactive-surface-css/state-core.css";
|
|
73
|
-
import "layout-style-css/integrations/ui-style-kit.css";
|
|
74
74
|
import "layout-style-css";
|
|
75
75
|
```
|
|
76
76
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Release And Publishing
|
|
2
2
|
|
|
3
|
-
This checklist prepares `layout-style-css@2.
|
|
3
|
+
This checklist prepares `layout-style-css@2.1.1`. Publishing, tagging, pushing, and creating a GitHub release require separate explicit approval.
|
|
4
4
|
|
|
5
5
|
## Version Contract
|
|
6
6
|
|
|
7
|
-
- `package.json` and `package-lock.json` identify `2.
|
|
7
|
+
- `package.json` and `package-lock.json` identify `2.1.1`.
|
|
8
8
|
- Node.js 20 and 22 pass standalone CI.
|
|
9
|
-
- `CHANGELOG.md` contains the dated
|
|
9
|
+
- `CHANGELOG.md` contains the dated 2.1.1 release entry.
|
|
10
10
|
- README, migration guide, wiki, demo, exports, and tarball describe the same v2 API.
|
|
11
11
|
- No peer or runtime dependencies are present.
|
|
12
12
|
|
|
@@ -35,24 +35,26 @@ git diff --check
|
|
|
35
35
|
|
|
36
36
|
`release:verify` runs build, lint, JavaScript syntax, static contracts, the Pages artifact, Chromium, Firefox, WebKit, the intentional tarball listing, `npm audit --audit-level=moderate`, and an npm publish dry run. It does not publish.
|
|
37
37
|
|
|
38
|
+
`prepublishOnly` runs `npm run release:verify`, so a direct `npm publish` still has the full release verification gate.
|
|
39
|
+
|
|
38
40
|
## Tag And Version Validation
|
|
39
41
|
|
|
40
|
-
The publish workflow checks out the selected tag and fails unless it equals `v${package.version}`. For this release the only valid tag is `v2.
|
|
42
|
+
The publish workflow checks out the selected tag and fails unless it equals `v${package.version}`. For this release the only valid tag is `v2.1.1`.
|
|
41
43
|
|
|
42
44
|
After separate approval, an operator may check registry availability:
|
|
43
45
|
|
|
44
46
|
```bash
|
|
45
|
-
npm view layout-style-css@2.
|
|
47
|
+
npm view layout-style-css@2.1.1 version --json
|
|
46
48
|
```
|
|
47
49
|
|
|
48
50
|
The eventual release sequence is:
|
|
49
51
|
|
|
50
52
|
```bash
|
|
51
|
-
git tag v2.
|
|
52
|
-
git push origin v2.
|
|
53
|
+
git tag v2.1.1
|
|
54
|
+
git push origin v2.1.1
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
Publishing the `v2.
|
|
57
|
+
Publishing the `v2.1.1` GitHub release triggers the npm workflow. A separately approved recovery run may use `release_tag` set to `v2.1.1`.
|
|
56
58
|
|
|
57
59
|
## Workflow Safety
|
|
58
60
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UI Style Kit Compatibility
|
|
2
2
|
|
|
3
|
-
Layout Style CSS is dependency-free. `ui-style-kit-css@2.0
|
|
3
|
+
Layout Style CSS is dependency-free. `ui-style-kit-css@2.1.0` is the released visual fixture for 2.1 ecosystem verification and is not a runtime or peer dependency.
|
|
4
4
|
|
|
5
5
|
## Ownership Boundary
|
|
6
6
|
|
|
@@ -15,21 +15,20 @@ Layout Style CSS is dependency-free. `ui-style-kit-css@2.0.1` is an exact develo
|
|
|
15
15
|
Layout plus UI:
|
|
16
16
|
|
|
17
17
|
```js
|
|
18
|
-
import "ui-style-kit-css/
|
|
19
|
-
import "layout-style-css/integrations/ui-style-kit.css";
|
|
18
|
+
import "ui-style-kit-css/visual.css";
|
|
20
19
|
import "layout-style-css";
|
|
21
20
|
```
|
|
22
21
|
|
|
23
22
|
All three libraries:
|
|
24
23
|
|
|
25
24
|
```js
|
|
26
|
-
import "ui-style-kit-css/
|
|
25
|
+
import "ui-style-kit-css/visual.css";
|
|
26
|
+
import "ui-style-kit-css/interactive-surface-theme.css";
|
|
27
27
|
import "interactive-surface-css/state-core.css";
|
|
28
|
-
import "layout-style-css/integrations/ui-style-kit.css";
|
|
29
28
|
import "layout-style-css";
|
|
30
29
|
```
|
|
31
30
|
|
|
32
|
-
The Layout integration bridge contains structural mappings but no package imports. The removed `all-with-ui-kit*` aggregates have no v2 replacement because dependency ownership stays with the application.
|
|
31
|
+
The Layout integration bridge contains structural mappings but no package imports. It remains available as deprecated compatibility for legacy UI-prefixed structural aliases. The removed `all-with-ui-kit*` aggregates have no v2 replacement because dependency ownership stays with the application.
|
|
33
32
|
|
|
34
33
|
## Structural Aliases
|
|
35
34
|
|
|
@@ -43,8 +42,8 @@ The removed v1 `.ly-surface--raised` selector is not restored by `legacy.css`; i
|
|
|
43
42
|
|
|
44
43
|
| Library | Verified fixture | Consumer requirement |
|
|
45
44
|
| --- | --- | --- |
|
|
46
|
-
| Layout Style CSS | `2.
|
|
47
|
-
| UI Style Kit CSS | `2.0
|
|
48
|
-
| Interactive Surface CSS | `1.
|
|
45
|
+
| Layout Style CSS | `2.1.1` | Required for this API |
|
|
46
|
+
| UI Style Kit CSS | `2.1.0` visual CSS and manifest | Optional released fixture |
|
|
47
|
+
| Interactive Surface CSS | `1.5.0` `state-core.css` | Optional released fixture |
|
|
49
48
|
|
|
50
49
|
Current evergreen Chromium, Firefox, and WebKit are covered by the release gate.
|