layout-style-css 1.1.2 → 2.0.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +33 -8
  2. package/CONTRIBUTING.md +12 -7
  3. package/README.md +231 -636
  4. package/SECURITY.md +11 -6
  5. package/demo/demo.css +523 -0
  6. package/demo/demo.js +520 -0
  7. package/demo/index.html +323 -976
  8. package/demo/site.webmanifest +1 -1
  9. package/demo/sitemap.xml +1 -1
  10. package/dist/core.css +6 -0
  11. package/dist/{layout-ui-style-kit-bridge.css → integrations/ui-style-kit.css} +13 -8
  12. package/dist/layout-style-css.css +1473 -1903
  13. package/dist/layout-style-css.min.css +1 -1
  14. package/dist/legacy.css +787 -0
  15. package/dist/personalities/bauhaus.css +46 -0
  16. package/dist/personalities/bento.css +43 -0
  17. package/dist/personalities/brutalism.css +36 -0
  18. package/dist/personalities/cyberpunk.css +36 -0
  19. package/dist/personalities/f-pattern.css +48 -0
  20. package/dist/personalities/maximalist.css +51 -0
  21. package/dist/personalities/minimal-saas.css +37 -0
  22. package/dist/personalities/mondrian.css +44 -0
  23. package/dist/personalities/neumorphism.css +46 -0
  24. package/dist/personalities/retro-glass.css +44 -0
  25. package/dist/personalities/retrofuturism.css +36 -0
  26. package/dist/personalities/split-screen.css +41 -0
  27. package/dist/personalities/synthwave.css +48 -0
  28. package/dist/personalities/tactile.css +39 -0
  29. package/dist/personalities/y2k.css +36 -0
  30. package/dist/personalities/z-pattern.css +49 -0
  31. package/dist/personalities.css +18 -0
  32. package/dist/primitives.css +219 -0
  33. package/dist/recipes.css +270 -0
  34. package/dist/utilities.css +162 -0
  35. package/dist/wrappers.css +174 -0
  36. package/docs/wiki/Contributing.md +36 -30
  37. package/docs/wiki/Demo-And-GitHub-Pages.md +53 -39
  38. package/docs/wiki/Getting-Started.md +51 -68
  39. package/docs/wiki/Home.md +33 -48
  40. package/docs/wiki/Installation-And-CDN.md +73 -58
  41. package/docs/wiki/Layout-Primitives.md +48 -57
  42. package/docs/wiki/Layout-Recipes.md +49 -80
  43. package/docs/wiki/Layout-Styles.md +33 -43
  44. package/docs/wiki/Migrating-To-2.0.md +186 -0
  45. package/docs/wiki/Release-And-Publishing.md +75 -69
  46. package/docs/wiki/Security-And-Support.md +36 -34
  47. package/docs/wiki/UI-Style-Kit-Compatibility.md +50 -54
  48. package/docs/wiki/_Sidebar.md +15 -14
  49. package/package.json +36 -45
  50. package/styles/core.css +6 -0
  51. package/styles/{layout-ui-style-kit-bridge.css → integrations/ui-style-kit.css} +13 -8
  52. package/styles/legacy.css +173 -0
  53. package/styles/personalities/bauhaus.css +46 -0
  54. package/styles/personalities/bento.css +43 -0
  55. package/styles/personalities/brutalism.css +36 -0
  56. package/styles/personalities/cyberpunk.css +36 -0
  57. package/styles/personalities/f-pattern.css +48 -0
  58. package/styles/personalities/maximalist.css +51 -0
  59. package/styles/personalities/minimal-saas.css +37 -0
  60. package/styles/personalities/mondrian.css +44 -0
  61. package/styles/personalities/neumorphism.css +46 -0
  62. package/styles/personalities/retro-glass.css +44 -0
  63. package/styles/personalities/retrofuturism.css +36 -0
  64. package/styles/personalities/split-screen.css +41 -0
  65. package/styles/personalities/synthwave.css +48 -0
  66. package/styles/personalities/tactile.css +39 -0
  67. package/styles/personalities/y2k.css +36 -0
  68. package/styles/personalities/z-pattern.css +49 -0
  69. package/styles/personalities.css +18 -0
  70. package/styles/primitives.css +219 -0
  71. package/styles/recipes.css +270 -0
  72. package/styles/utilities.css +162 -0
  73. package/styles/wrappers.css +174 -0
  74. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +0 -3
  75. package/dist/layout-all-with-ui-kit.css +0 -2
  76. package/dist/layout-all.css +0 -18
  77. package/dist/layout-base.css +0 -539
  78. package/dist/layout-style-bauhaus.css +0 -70
  79. package/dist/layout-style-bento.css +0 -76
  80. package/dist/layout-style-brutalism.css +0 -70
  81. package/dist/layout-style-cyberpunk.css +0 -70
  82. package/dist/layout-style-f-pattern.css +0 -76
  83. package/dist/layout-style-maximalist.css +0 -93
  84. package/dist/layout-style-minimal-saas.css +0 -67
  85. package/dist/layout-style-mondrian.css +0 -77
  86. package/dist/layout-style-neumorphism.css +0 -72
  87. package/dist/layout-style-retro-glass.css +0 -82
  88. package/dist/layout-style-retrofuturism.css +0 -71
  89. package/dist/layout-style-split-screen.css +0 -62
  90. package/dist/layout-style-synthwave.css +0 -88
  91. package/dist/layout-style-tactile.css +0 -70
  92. package/dist/layout-style-y2k.css +0 -72
  93. package/dist/layout-style-z-pattern.css +0 -76
  94. package/styles/layout-base.css +0 -539
  95. package/styles/layout-style-bauhaus.css +0 -70
  96. package/styles/layout-style-bento.css +0 -76
  97. package/styles/layout-style-brutalism.css +0 -70
  98. package/styles/layout-style-cyberpunk.css +0 -70
  99. package/styles/layout-style-f-pattern.css +0 -76
  100. package/styles/layout-style-maximalist.css +0 -93
  101. package/styles/layout-style-minimal-saas.css +0 -67
  102. package/styles/layout-style-mondrian.css +0 -77
  103. package/styles/layout-style-neumorphism.css +0 -72
  104. package/styles/layout-style-retro-glass.css +0 -82
  105. package/styles/layout-style-retrofuturism.css +0 -71
  106. package/styles/layout-style-split-screen.css +0 -62
  107. package/styles/layout-style-synthwave.css +0 -88
  108. package/styles/layout-style-tactile.css +0 -70
  109. package/styles/layout-style-y2k.css +0 -72
  110. 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.0.1` and `interactive-surface-css@1.4.0` are exact development and integration fixtures, not consumer dependencies.
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.0.0
17
+ npm install ui-style-kit-css@2.0.1 interactive-surface-css@1.4.0
18
+ ```
19
+
20
+ The upcoming UI Style Kit revision is a separate follow-up, not part of the Layout Style CSS 2.0 release.
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/with-bridge.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/with-bridge.css";
72
+ import "interactive-surface-css/state-core.css";
73
+ import "layout-style-css/integrations/ui-style-kit.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,75 @@
1
- # Release And Publishing
2
-
3
- This page is the release checklist for `layout-style-css@1.1.2`.
4
-
5
- ## Version Contract
6
-
7
- - `package.json` version is `1.1.2`.
8
- - `package-lock.json` is synchronized with `1.1.2`.
9
- - `CHANGELOG.md` contains a `1.1.2` entry.
10
- - README and wiki docs link to the current public API.
11
-
12
- ## Verification
13
-
14
- Run:
15
-
16
- ```bash
17
- npm run build
18
- npm run lint
19
- npm test
20
- npm run check
21
- npm run release:verify
22
- npm audit --audit-level=moderate
23
- git diff --check
24
- ```
25
-
26
- Expected result: every command exits with status `0`. `git diff --check` may print line-ending warnings on Windows, but it must not report whitespace errors.
27
-
28
- ## Publish
29
-
30
- Before publishing, confirm npm does not already have the target version:
31
-
32
- ```bash
33
- npm view layout-style-css@1.1.2 version --json
34
- ```
35
-
36
- Publish:
37
-
38
- ```bash
39
- npm login
40
- npm publish --access public
41
- ```
42
-
43
- Verify:
44
-
45
- ```bash
46
- npm view layout-style-css@1.1.2
47
- ```
48
-
49
- ## Tag
50
-
51
- Tag the release:
52
-
53
- ```bash
54
- git tag v1.1.2
55
- git push origin v1.1.2
56
- ```
57
-
58
- The npm publish workflow runs when the `v1.1.2` GitHub release is published. If the release event needs to be replayed, run the `Node.js Package` workflow manually from the default branch with `release_tag` set to `v1.1.2`.
59
-
60
- ## GitHub Wiki Mirror
61
-
62
- If the repository wiki is enabled, mirror `docs/wiki/*.md` into:
63
-
64
- ```txt
65
- https://github.com/Foscat/Layout-Style-CSS.wiki.git
66
- ```
67
-
68
- The wiki remote was not available during local preparation, so the versioned source remains the authoritative documentation until the remote is initialized.
69
-
1
+ # Release And Publishing
2
+
3
+ This checklist prepares `layout-style-css@2.0.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.0.0`.
8
+ - Node.js 20 and 22 pass standalone CI.
9
+ - `CHANGELOG.md` contains the dated breaking-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
+ ## Tag And Version Validation
39
+
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.0.0`.
41
+
42
+ After separate approval, an operator may check registry availability:
43
+
44
+ ```bash
45
+ npm view layout-style-css@2.0.0 version --json
46
+ ```
47
+
48
+ The eventual release sequence is:
49
+
50
+ ```bash
51
+ git tag v2.0.0
52
+ git push origin v2.0.0
53
+ ```
54
+
55
+ Publishing the `v2.0.0` GitHub release triggers the npm workflow. A separately approved recovery run may use `release_tag` set to `v2.0.0`.
56
+
57
+ ## Workflow Safety
58
+
59
+ 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.
60
+
61
+ Before `npm ci` can execute package lifecycle code, the workflow:
62
+
63
+ 1. rejects release inputs that are not strict `v`-prefixed semantic-version tags;
64
+ 2. checks out the exact `refs/tags/<release_tag>` namespace without persisted credentials;
65
+ 3. verifies `HEAD` equals the tag's peeled commit;
66
+ 4. fetches `origin/main` and requires the tag commit to be reachable from protected main; and
67
+ 5. requires the package version to equal the tag.
68
+
69
+ 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.
70
+
71
+ 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.
72
+
73
+ ## Wiki Mirror
74
+
75
+ 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 a CSS-only package. The package does not execute runtime JavaScript, call external services, read secrets, or process user input.
4
-
5
- ## Supported Versions
6
-
7
- | Version | Supported |
8
- | --- | --- |
9
- | `1.1.x` | Yes |
10
- | `1.0.x` | Security fixes only when practical |
11
-
12
- ## Report A Security Issue
13
-
14
- Use GitHub security advisories when available. If advisories are not enabled, open a minimal GitHub issue that requests a private coordination path and avoids public exploit details.
15
-
16
- Include:
17
-
18
- - affected version
19
- - affected package export or CSS selector
20
- - reproduction steps
21
- - expected impact
22
- - whether the issue affects package consumers, the demo, or GitHub Pages deployment
23
-
24
- ## Security Checks
25
-
26
- Before release:
27
-
28
- ```bash
29
- npm audit --audit-level=moderate
30
- npm run release:verify
31
- ```
32
-
33
- The package contract tests check package exports, README import examples, npm tarball contents, generated CSS, demo smoke behavior, and GitHub Pages artifact structure.
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,50 @@
1
- # UI Style Kit Compatibility
2
-
3
- `layout-style-css` is built to pair with `ui-style-kit-css@2.0.1` while keeping each package responsible for one layer.
4
-
5
- ## Ownership Boundary
6
-
7
- | Package | Owns |
8
- | --- | --- |
9
- | `ui-style-kit-css` | colors, typography, borders, shadows, native controls, component paint, focus states, themes, modes |
10
- | `layout-style-css` | wrappers, shells, grid behavior, panes, sidebars, spacing, layout recipes, layout personalities |
11
-
12
- ## One Import Pairing
13
-
14
- ```js
15
- import "layout-style-css/all-with-ui-kit.css";
16
- ```
17
-
18
- This imports UI Style Kit and all layout files. Use `layout-style-css/all-with-ui-kit-and-interactive-surface.css` when Interactive Surface is also required.
19
-
20
- ## Prefix Aliases
21
-
22
- The bridge maps UI-style structural names to layout primitives for these prefixes:
23
-
24
- ```txt
25
- saas, bento, max, bau, tactile, neo, retro, brutal, cyber, y2k, rg
26
- ```
27
-
28
- | Alias pattern | Layout primitive |
29
- | --- | --- |
30
- | `<prefix>-container` | `.ly-wrapper` |
31
- | `<prefix>-section` | `.ly-section` |
32
- | `<prefix>-stack` | `.ly-stack` |
33
- | `<prefix>-cluster` | `.ly-cluster` |
34
- | `<prefix>-grid` | `.ly-grid` |
35
- | `<prefix>-split` | `.ly-split` |
36
- | `<prefix>-button-group` | `.ly-button-group` |
37
- | `<prefix>-card-grid` | `.ly-card-grid` |
38
- | `<prefix>-card-sm`, `<prefix>-card-md`, `<prefix>-card-lg` | `.ly-card-sm`, `.ly-card-md`, `.ly-card-lg` |
39
- | `<prefix>-gallery` | `.ly-gallery` |
40
- | `<prefix>-carousel` | `.ly-carousel` |
41
-
42
- Visual component aliases such as `<prefix>-button`, `<prefix>-card`, and `<prefix>-panel` remain owned by UI Style Kit.
43
-
44
- ## Integration Example
45
-
46
- ```html
47
- <section class="saas-container saas-section">
48
- <div class="saas-card-grid">
49
- <article class="saas-card saas-card-md">Plan</article>
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.0.1` is an exact development fixture used to verify the optional bridge; it is not a runtime or peer dependency. The UI Style Kit revision is a follow-up, not part of this release.
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/with-bridge.css";
19
+ import "layout-style-css/integrations/ui-style-kit.css";
20
+ import "layout-style-css";
21
+ ```
22
+
23
+ All three libraries:
24
+
25
+ ```js
26
+ import "ui-style-kit-css/with-bridge.css";
27
+ import "interactive-surface-css/state-core.css";
28
+ import "layout-style-css/integrations/ui-style-kit.css";
29
+ import "layout-style-css";
30
+ ```
31
+
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.
33
+
34
+ ## Structural Aliases
35
+
36
+ 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.
37
+
38
+ Visual component names remain owned by UI Style Kit. The bridge does not map color, typography, border, shadow, theme, or interaction tokens.
39
+
40
+ 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.
41
+
42
+ ## Compatibility Baseline
43
+
44
+ | Library | Verified fixture | Consumer requirement |
45
+ | --- | --- | --- |
46
+ | Layout Style CSS | `2.0.0` | Required for this API |
47
+ | UI Style Kit CSS | `2.0.1` | Optional |
48
+ | Interactive Surface CSS | `1.4.0` `state-core.css` | Optional |
49
+
50
+ Current evergreen Chromium, Firefox, and WebKit are covered by the release gate.
@@ -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
- - [Demo And GitHub Pages](Demo-And-GitHub-Pages.md)
11
- - [Release And Publishing](Release-And-Publishing.md)
12
- - [Security And Support](Security-And-Support.md)
13
- - [Contributing](Contributing.md)
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
+