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
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Migrating To 2.0
|
|
2
|
+
|
|
3
|
+
Version 2.0 rebuilds Layout Style CSS as a container-first, dependency-free structural layout system. This guide maps the complete 1.x public surface to v2 and identifies the compatibility window.
|
|
4
|
+
|
|
5
|
+
## Runtime And Tooling Contract
|
|
6
|
+
|
|
7
|
+
- Development and release scripts require Node.js 20 or newer.
|
|
8
|
+
- The package has no runtime dependencies and no peer dependencies.
|
|
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
|
+
- Current evergreen Chromium, Firefox, and WebKit are supported.
|
|
11
|
+
- Responsive recipes use core thresholds at `48rem` and `64rem`; personalities may add personality-specific thresholds.
|
|
12
|
+
|
|
13
|
+
Install companions explicitly only when the application uses them:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install layout-style-css@2.1.0
|
|
17
|
+
npm install ui-style-kit-css@2.1.0 interactive-surface-css@1.5.0
|
|
18
|
+
```
|
|
19
|
+
|
|
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
|
+
|
|
22
|
+
## Export Changes
|
|
23
|
+
|
|
24
|
+
The v2 package exports are focused and companion-free:
|
|
25
|
+
|
|
26
|
+
| V2 import | Purpose |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `layout-style-css` | Default full bundle: core plus all personalities. |
|
|
29
|
+
| `layout-style-css/min.css` | Minified full bundle. |
|
|
30
|
+
| `layout-style-css/core.css` | Wrappers, primitives, recipes, and utilities. |
|
|
31
|
+
| `layout-style-css/wrappers.css` | Tokens, reset, safe-area gutters, and wrappers. |
|
|
32
|
+
| `layout-style-css/primitives.css` | Composition primitives. |
|
|
33
|
+
| `layout-style-css/recipes.css` | Functional recipes and named areas. |
|
|
34
|
+
| `layout-style-css/utilities.css` | Structural and order utilities. |
|
|
35
|
+
| `layout-style-css/personalities.css` | All personalities. |
|
|
36
|
+
| `layout-style-css/personalities/minimal-saas.css` | One personality; replace the filename with any of the sixteen names. |
|
|
37
|
+
| `layout-style-css/integrations/ui-style-kit.css` | Import-free UI Style Kit structural bridge. |
|
|
38
|
+
| `layout-style-css/legacy.css` | Full v2 bundle plus v1 selector aliases. |
|
|
39
|
+
|
|
40
|
+
The following v1 exports were removed from the default contract:
|
|
41
|
+
|
|
42
|
+
- `layout-style-css/base.css` and the old `layout-base.css` dist file
|
|
43
|
+
- `layout-style-css/bridge.css` and `layout-ui-style-kit-bridge.css`
|
|
44
|
+
- `layout-style-css/all.css`
|
|
45
|
+
- `layout-style-css/all-with-ui-kit.css`
|
|
46
|
+
- `layout-style-css/all-with-ui-kit-and-interactive-surface.css`
|
|
47
|
+
- duplicated root personality exports such as `layout-style-css/minimal-saas.css`
|
|
48
|
+
- root dist files named `layout-style-*.css`
|
|
49
|
+
|
|
50
|
+
Replace a root personality import with its `personalities/` path. Replace old aggregates with explicit companion imports and the v2 default or focused core.
|
|
51
|
+
|
|
52
|
+
## Import Recipes
|
|
53
|
+
|
|
54
|
+
Standalone Layout Style CSS:
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
import "layout-style-css";
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Layout plus UI Style Kit:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
import "ui-style-kit-css/visual.css";
|
|
64
|
+
import "layout-style-css/integrations/ui-style-kit.css";
|
|
65
|
+
import "layout-style-css";
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
All three libraries must be imported in this exact order:
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
import "ui-style-kit-css/visual.css";
|
|
72
|
+
import "ui-style-kit-css/interactive-surface-theme.css";
|
|
73
|
+
import "interactive-surface-css/state-core.css";
|
|
74
|
+
import "layout-style-css";
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The first layer supplies UI paint, the second interaction states, the third structural name mappings, and the fourth the layout system. The Layout integration file contains no package imports.
|
|
78
|
+
|
|
79
|
+
## Wrapper Mapping
|
|
80
|
+
|
|
81
|
+
V2 wrapper names communicate intent rather than a generic size tier. `.ly-wrapper` now defaults to the `72rem` content measure and establishes an inline-size container. A personality may change that plain-wrapper default, but an explicit compact, prose, content, wide, full, or breakout variant always wins.
|
|
82
|
+
|
|
83
|
+
| 1.x selector | V2 selector | V2 measure or behavior |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| `.ly-container`, `.ly-wrapper` | `.ly-wrapper` or `.ly-wrapper--content` | Default `72rem` content wrapper |
|
|
86
|
+
| `.ly-container--sm`, `.ly-wrapper--sm` | `.ly-wrapper--compact` | `40rem` |
|
|
87
|
+
| `.ly-container--md`, `.ly-wrapper--md` | Local `--ly-wrapper-max: 56rem` override, or temporary `legacy.css` | No canonical v2 tier |
|
|
88
|
+
| `.ly-wrapper--readable` | `.ly-wrapper--prose` | `68ch` |
|
|
89
|
+
| `.ly-container--lg`, `.ly-wrapper--lg` | `.ly-wrapper--content` | `72rem` |
|
|
90
|
+
| `.ly-container--xl`, `.ly-wrapper--xl` | `.ly-wrapper--wide` | `112rem` in the new semantic scale |
|
|
91
|
+
| `.ly-container--wide`, `.ly-wrapper--wide` | `.ly-wrapper--wide` | `112rem` |
|
|
92
|
+
| `.ly-container--fluid`, `.ly-wrapper--fluid` | `.ly-wrapper--full` | Full available width with safe-area gutters |
|
|
93
|
+
| No v1 equivalent | `.ly-wrapper--breakout` | Content, feature, and full-width lanes |
|
|
94
|
+
|
|
95
|
+
The v1 medium `56rem` and extra-large `88rem` measures do not have canonical v2 names. Use a local `--ly-wrapper-max` override if those exact measures are product requirements, or load `legacy.css` while migrating.
|
|
96
|
+
|
|
97
|
+
Breakout markup defaults to the content lane:
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<div class="ly-wrapper ly-wrapper--breakout">
|
|
101
|
+
<article data-ly-lane="content">Article</article>
|
|
102
|
+
<figure data-ly-lane="feature">Feature media</figure>
|
|
103
|
+
<section data-ly-lane="full">Full-width stage</section>
|
|
104
|
+
</div>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Every wrapper uses fluid logical gutters and safe-area insets. Test the containing element around the `48rem` and `64rem` core thresholds and around any selected personality threshold; viewport width alone no longer determines layout changes.
|
|
108
|
+
|
|
109
|
+
## Canonical Hooks
|
|
110
|
+
|
|
111
|
+
V2 standardizes three attributes:
|
|
112
|
+
|
|
113
|
+
- `data-ly-layout` selects one of the sixteen personalities.
|
|
114
|
+
- `data-ly-recipe` identifies `app-shell`, `dashboard`, `docs`, `list-detail`, `split-hero`, `gallery`, or `card-grid`.
|
|
115
|
+
- `data-ly-area` identifies `header`, `nav`, `main`, `aside`, `footer`, `content`, `media`, `actions`, `primary`, or `secondary`.
|
|
116
|
+
|
|
117
|
+
Every `data-ly-recipe` value is a complete alternative to its matching recipe class. For example, `data-ly-recipe="dashboard"` works without `.ly-dashboard`; applications may keep the class API, use the attribute API, or include both during migration.
|
|
118
|
+
|
|
119
|
+
```html
|
|
120
|
+
<body class="ly-root" data-ly-layout="minimal-saas">
|
|
121
|
+
<div class="ly-dashboard" data-ly-recipe="dashboard">
|
|
122
|
+
<header data-ly-area="header">Header</header>
|
|
123
|
+
<nav data-ly-area="nav">Navigation</nav>
|
|
124
|
+
<main data-ly-area="main">Main</main>
|
|
125
|
+
<aside data-ly-area="aside">Aside</aside>
|
|
126
|
+
<footer data-ly-area="footer">Footer</footer>
|
|
127
|
+
</div>
|
|
128
|
+
</body>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The v1 personality hooks `data-layout`, `layout-style`, `.ly-layout-*`, and `.ly-style-*` are legacy-only. Move the personality value to `data-ly-layout` on `.ly-root`.
|
|
132
|
+
|
|
133
|
+
## Primitive And Recipe Mapping
|
|
134
|
+
|
|
135
|
+
The v2 composition set is stack, cluster, center, cover, switcher, sidebar, grid, split, panes, media, reel, frame, and bounded scroll.
|
|
136
|
+
|
|
137
|
+
| 1.x API | V2 API |
|
|
138
|
+
| --- | --- |
|
|
139
|
+
| `.ly-row` plus `.ly-col-*` | `.ly-grid` plus `.ly-cols-*` and `.ly-span-*`, or `.ly-cluster` for wrapping flow |
|
|
140
|
+
| `.ly-carousel` | `.ly-reel` |
|
|
141
|
+
| `.ly-scroll-area` | `.ly-scroll` |
|
|
142
|
+
| `.ly-sidebar-layout` | `.ly-sidebar` or the `docs` recipe |
|
|
143
|
+
| `.ly-panes--two` | `.ly-panes--2` |
|
|
144
|
+
| `.ly-panes--three` | `.ly-panes--3` |
|
|
145
|
+
| Ad hoc shell class combinations | A matching `data-ly-recipe` root with named `data-ly-area` children |
|
|
146
|
+
| `.ly-button-group` | `.ly-cluster` |
|
|
147
|
+
| `.ly-card-grid` | `data-ly-recipe="card-grid"` or `.ly-card-grid` |
|
|
148
|
+
| `.ly-gallery` | `data-ly-recipe="gallery"` or `.ly-gallery` |
|
|
149
|
+
| `.ly-content` | V2 primitives and recipe areas already apply shrink safety; `legacy.css` preserves the structural `min-inline-size: 0` alias for ad hoc v1 content regions. |
|
|
150
|
+
| `.ly-divider` | Replace spacing with a stack gap or spacing utility and source the visual divider from UI Style Kit or the application theme. `legacy.css` preserves only its `1px` minimum block geometry and block spacing, never paint. |
|
|
151
|
+
| `.ly-surface--raised` | Removed. Raised radius, border, background, and shadow treatment belongs to UI Style Kit or application theme styling, so `legacy.css` intentionally does not restore this selector. |
|
|
152
|
+
|
|
153
|
+
The v1 column, carousel, button-group, sidebar, pane, card-size, app-area, scroll, content, and structural divider aliases remain functional only through `legacy.css`. The paint-owned `.ly-surface--raised` API is removed rather than aliased.
|
|
154
|
+
|
|
155
|
+
## Mobile Order And Accessibility
|
|
156
|
+
|
|
157
|
+
DOM order is authoritative on mobile and must match the intended reading order and focus order. Built-in recipes never use CSS `order`; they rearrange named grid areas at wider containers without changing source order.
|
|
158
|
+
|
|
159
|
+
V2 provides `.ly-order-first`, `.ly-order-normal`, `.ly-order-last`, and `.ly-order-1` through `.ly-order-6`. Equivalent `ly-md-order-*` and `ly-lg-order-*` utilities activate at the `48rem` and `64rem` container thresholds.
|
|
160
|
+
|
|
161
|
+
These utilities are explicit escape hatches. They can make visual order disagree with assistive-technology reading order or keyboard focus order. Prefer semantic source order. When an escape hatch is unavoidable, test the complete keyboard sequence, screen-reader reading order, and mobile fallback.
|
|
162
|
+
|
|
163
|
+
## Temporary Legacy Bundle
|
|
164
|
+
|
|
165
|
+
Use one import during an incremental migration:
|
|
166
|
+
|
|
167
|
+
```js
|
|
168
|
+
import "layout-style-css/legacy.css";
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`legacy.css` imports the full v2 bundle and adds functional aliases for old wrapper names, root hooks, layout aliases, 12-column utilities, carousel, button groups, sidebar layouts, pane names, card sizing, app regions, scroll areas, `.ly-content`, and structural `.ly-divider` geometry. It does not restore `.ly-surface--raised`, companion imports, or removed package exports.
|
|
172
|
+
|
|
173
|
+
Legacy compatibility is supported for the v2 line only and is scheduled for removal in v3. Treat it as a transition tool: migrate markup and imports before upgrading to the next major version.
|
|
174
|
+
|
|
175
|
+
## Migration Checklist
|
|
176
|
+
|
|
177
|
+
1. Upgrade the development runtime to Node.js 20 or newer.
|
|
178
|
+
2. Remove companion packages from peer assumptions and install only the layers the application uses.
|
|
179
|
+
3. Replace removed aggregate and root personality imports with focused v2 exports.
|
|
180
|
+
4. Change wrapper size names to semantic wrapper names.
|
|
181
|
+
5. Move personality selection to `data-ly-layout`.
|
|
182
|
+
6. Add `data-ly-recipe` and `data-ly-area` hooks while preserving correct mobile source order.
|
|
183
|
+
7. Replace v1 column and recipe aliases, or temporarily switch to `legacy.css`.
|
|
184
|
+
8. Audit every base, `ly-md-*`, and `ly-lg-*` order utility for reading and focus-order impact.
|
|
185
|
+
9. Test below and above both core container thresholds and the selected personality threshold in Chromium, Firefox, and WebKit.
|
|
186
|
+
10. Remove `legacy.css` before the v3 upgrade.
|
|
@@ -1,69 +1,77 @@
|
|
|
1
|
-
# Release And Publishing
|
|
2
|
-
|
|
3
|
-
This
|
|
4
|
-
|
|
5
|
-
## Version Contract
|
|
6
|
-
|
|
7
|
-
- `package.json`
|
|
8
|
-
-
|
|
9
|
-
- `CHANGELOG.md` contains
|
|
10
|
-
- README
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
git
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
# Release And Publishing
|
|
2
|
+
|
|
3
|
+
This checklist prepares `layout-style-css@2.1.0`. Publishing, tagging, pushing, and creating a GitHub release require separate explicit approval.
|
|
4
|
+
|
|
5
|
+
## Version Contract
|
|
6
|
+
|
|
7
|
+
- `package.json` and `package-lock.json` identify `2.1.0`.
|
|
8
|
+
- Node.js 20 and 22 pass standalone CI.
|
|
9
|
+
- `CHANGELOG.md` contains the dated 2.1.0 release entry.
|
|
10
|
+
- README, migration guide, wiki, demo, exports, and tarball describe the same v2 API.
|
|
11
|
+
- No peer or runtime dependencies are present.
|
|
12
|
+
|
|
13
|
+
## Local Verification
|
|
14
|
+
|
|
15
|
+
Install all Playwright engines once:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx playwright install chromium firefox webkit
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Then run:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run build
|
|
25
|
+
npm run lint
|
|
26
|
+
npm run check:demo-js
|
|
27
|
+
npm run test:static
|
|
28
|
+
npm run test:demo:quick
|
|
29
|
+
npm run test:demo:all
|
|
30
|
+
npm run test:pages
|
|
31
|
+
npm run pack:dry-run
|
|
32
|
+
npm run release:verify
|
|
33
|
+
git diff --check
|
|
34
|
+
```
|
|
35
|
+
|
|
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
|
+
|
|
38
|
+
`prepublishOnly` runs `npm run release:verify`, so a direct `npm publish` still has the full release verification gate.
|
|
39
|
+
|
|
40
|
+
## Tag And Version Validation
|
|
41
|
+
|
|
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.0`.
|
|
43
|
+
|
|
44
|
+
After separate approval, an operator may check registry availability:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm view layout-style-css@2.1.0 version --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The eventual release sequence is:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git tag v2.1.0
|
|
54
|
+
git push origin v2.1.0
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Publishing the `v2.1.0` GitHub release triggers the npm workflow. A separately approved recovery run may use `release_tag` set to `v2.1.0`.
|
|
58
|
+
|
|
59
|
+
## Workflow Safety
|
|
60
|
+
|
|
61
|
+
Create a GitHub Environment named `npm` and configure required reviewers before enabling the publish job. Environment approval is the final human authorization boundary for npm releases.
|
|
62
|
+
|
|
63
|
+
Before `npm ci` can execute package lifecycle code, the workflow:
|
|
64
|
+
|
|
65
|
+
1. rejects release inputs that are not strict `v`-prefixed semantic-version tags;
|
|
66
|
+
2. checks out the exact `refs/tags/<release_tag>` namespace without persisted credentials;
|
|
67
|
+
3. verifies `HEAD` equals the tag's peeled commit;
|
|
68
|
+
4. fetches `origin/main` and requires the tag commit to be reachable from protected main; and
|
|
69
|
+
5. requires the package version to equal the tag.
|
|
70
|
+
|
|
71
|
+
The workflow installs Chromium, Firefox, and WebKit, runs full release verification, and publishes with npm provenance. `NODE_AUTH_TOKEN` exists only on the final publish step. Migrating to npm trusted publishing should remove that long-lived secret in a follow-up.
|
|
72
|
+
|
|
73
|
+
The workflow actions remain major-version references. Pinning every third-party action to an immutable commit SHA is a documented security follow-up and should be performed with an automated update process. Do not bypass a failed trust, version, browser, audit, tarball, or documentation contract.
|
|
74
|
+
|
|
75
|
+
## Wiki Mirror
|
|
76
|
+
|
|
77
|
+
The versioned `docs/wiki/` source is authoritative. If GitHub Wiki is enabled, mirror these Markdown files only after the release documentation has passed the local contract suite.
|
|
@@ -1,34 +1,36 @@
|
|
|
1
|
-
# Security And Support
|
|
2
|
-
|
|
3
|
-
`layout-style-css` is
|
|
4
|
-
|
|
5
|
-
## Supported Versions
|
|
6
|
-
|
|
7
|
-
| Version | Supported |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| `
|
|
10
|
-
| `1.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
npm
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
# Security And Support
|
|
2
|
+
|
|
3
|
+
`layout-style-css` is dependency-free runtime CSS. It executes no consumer JavaScript, calls no services, reads no secrets, and processes no user input. The demo JavaScript uses allowlisted query values and `textContent` for generated snippets.
|
|
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
|
+
The v2 `legacy.css` compatibility bundle is scheduled for removal in v3.
|
|
14
|
+
|
|
15
|
+
## Browser Baseline
|
|
16
|
+
|
|
17
|
+
Current evergreen Chromium, Firefox, and WebKit are supported. The mobile DOM-order fallback remains usable when container queries are unavailable, but current browser engines are the tested contract.
|
|
18
|
+
|
|
19
|
+
## Report A Security Issue
|
|
20
|
+
|
|
21
|
+
Use GitHub security advisories when available. Otherwise, open a minimal issue requesting a private coordination path without publishing exploit details.
|
|
22
|
+
|
|
23
|
+
Include the affected version, export or selector, reproduction, expected impact, and whether the issue affects package consumers, the demo, or GitHub Pages.
|
|
24
|
+
|
|
25
|
+
## Release Checks
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm audit --audit-level=moderate
|
|
29
|
+
npm run release:verify
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The release gate checks authored/generated parity, structural ownership, documentation, tarball contents, Pages output, and the Chromium, Firefox, and WebKit rendered matrices.
|
|
33
|
+
|
|
34
|
+
The npm publish workflow also enforces a strict tag namespace, exact tag/HEAD identity, protected-main ancestry, package-version alignment, an `npm` GitHub Environment with required reviewers, and npm provenance. The registry token is scoped to the final publish step. Replacing it with npm trusted publishing and pinning GitHub Actions to an immutable commit SHA remain explicit hardening follow-ups.
|
|
35
|
+
|
|
36
|
+
The demo protects its two exact-version companion CDN fixtures with SHA-384 subresource integrity and anonymous CORS; rendered tests recompute those hashes from the pinned local fixtures.
|
|
@@ -1,54 +1,49 @@
|
|
|
1
|
-
# UI Style Kit Compatibility
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Ownership Boundary
|
|
6
|
-
|
|
7
|
-
| Package | Owns |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| `
|
|
10
|
-
| `
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<article class="saas-card saas-card-md">Plan</article>
|
|
51
|
-
</div>
|
|
52
|
-
</section>
|
|
53
|
-
```
|
|
54
|
-
|
|
1
|
+
# UI Style Kit Compatibility
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
## Ownership Boundary
|
|
6
|
+
|
|
7
|
+
| Package | Owns |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `layout-style-css` | Wrappers, containment, flow, areas, grids, spans, recipes, and spatial personalities. |
|
|
10
|
+
| `ui-style-kit-css` | Color, typography, borders, shadows, native controls, component paint, themes, and modes. |
|
|
11
|
+
| `interactive-surface-css` | Interaction-state styling. |
|
|
12
|
+
|
|
13
|
+
## Explicit Imports
|
|
14
|
+
|
|
15
|
+
Layout plus UI:
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import "ui-style-kit-css/visual.css";
|
|
19
|
+
import "layout-style-css";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
All three libraries:
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
import "ui-style-kit-css/visual.css";
|
|
26
|
+
import "ui-style-kit-css/interactive-surface-theme.css";
|
|
27
|
+
import "interactive-surface-css/state-core.css";
|
|
28
|
+
import "layout-style-css";
|
|
29
|
+
```
|
|
30
|
+
|
|
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.
|
|
32
|
+
|
|
33
|
+
## Structural Aliases
|
|
34
|
+
|
|
35
|
+
The bridge supports the `saas`, `bento`, `max`, `bau`, `tactile`, `neo`, `retro`, `brutal`, `cyber`, `y2k`, and `rg` prefixes for container, section, stack, cluster, grid, split, button-group, card-grid, card-size, gallery, and carousel structure.
|
|
36
|
+
|
|
37
|
+
Visual component names remain owned by UI Style Kit. The bridge does not map color, typography, border, shadow, theme, or interaction tokens.
|
|
38
|
+
|
|
39
|
+
The removed v1 `.ly-surface--raised` selector is not restored by `legacy.css`; its radius and raised paint belong to UI Style Kit or application theme styling. Likewise, the legacy `.ly-divider` alias supplies structural size and spacing only, leaving the visible separator to the UI layer.
|
|
40
|
+
|
|
41
|
+
## Compatibility Baseline
|
|
42
|
+
|
|
43
|
+
| Library | Verified fixture | Consumer requirement |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| Layout Style CSS | `2.1.0` | 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 |
|
|
48
|
+
|
|
49
|
+
Current evergreen Chromium, Firefox, and WebKit are covered by the release gate.
|
package/docs/wiki/_Sidebar.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
# Wiki Navigation
|
|
2
|
-
|
|
3
|
-
- [Home](Home.md)
|
|
4
|
-
- [Getting Started](Getting-Started.md)
|
|
5
|
-
- [Installation And CDN](Installation-And-CDN.md)
|
|
6
|
-
- [Layout Primitives](Layout-Primitives.md)
|
|
7
|
-
- [Layout Recipes](Layout-Recipes.md)
|
|
8
|
-
- [Layout Styles](Layout-Styles.md)
|
|
9
|
-
- [UI Style Kit Compatibility](UI-Style-Kit-Compatibility.md)
|
|
10
|
-
- [
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
14
|
-
|
|
1
|
+
# Wiki Navigation
|
|
2
|
+
|
|
3
|
+
- [Home](Home.md)
|
|
4
|
+
- [Getting Started](Getting-Started.md)
|
|
5
|
+
- [Installation And CDN](Installation-And-CDN.md)
|
|
6
|
+
- [Layout Primitives](Layout-Primitives.md)
|
|
7
|
+
- [Layout Recipes](Layout-Recipes.md)
|
|
8
|
+
- [Layout Styles](Layout-Styles.md)
|
|
9
|
+
- [UI Style Kit Compatibility](UI-Style-Kit-Compatibility.md)
|
|
10
|
+
- [Migrating To 2.0](Migrating-To-2.0.md)
|
|
11
|
+
- [Demo And GitHub Pages](Demo-And-GitHub-Pages.md)
|
|
12
|
+
- [Release And Publishing](Release-And-Publishing.md)
|
|
13
|
+
- [Security And Support](Security-And-Support.md)
|
|
14
|
+
- [Contributing](Contributing.md)
|
|
15
|
+
|