layout-style-css 2.1.0 → 3.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 (79) hide show
  1. package/README.md +124 -145
  2. package/dist/core.css +2 -1
  3. package/dist/foundation.css +194 -0
  4. package/dist/layout-style-css.css +527 -941
  5. package/dist/layout-style-css.min.css +1 -1
  6. package/dist/personalities/bauhaus.css +13 -39
  7. package/dist/personalities/bento.css +16 -37
  8. package/dist/personalities/brutalism.css +13 -30
  9. package/dist/personalities/cyberpunk.css +12 -29
  10. package/dist/personalities/f-pattern.css +16 -42
  11. package/dist/personalities/maximalist.css +16 -45
  12. package/dist/personalities/minimal-saas.css +7 -31
  13. package/dist/personalities/mondrian.css +12 -37
  14. package/dist/personalities/neumorphism.css +15 -39
  15. package/dist/personalities/retro-glass.css +14 -39
  16. package/dist/personalities/retrofuturism.css +12 -29
  17. package/dist/personalities/split-screen.css +24 -36
  18. package/dist/personalities/synthwave.css +13 -41
  19. package/dist/personalities/tactile.css +15 -32
  20. package/dist/personalities/y2k.css +13 -30
  21. package/dist/personalities/z-pattern.css +16 -43
  22. package/dist/personalities.css +1 -1
  23. package/dist/primitives.css +27 -63
  24. package/dist/recipes.css +92 -167
  25. package/dist/utilities.css +39 -104
  26. package/dist/wrappers.css +28 -108
  27. package/package.json +12 -24
  28. package/CHANGELOG.md +0 -90
  29. package/CONTRIBUTING.md +0 -55
  30. package/SECURITY.md +0 -50
  31. package/demo/assets/apple-touch-icon.svg +0 -7
  32. package/demo/assets/favicon.svg +0 -7
  33. package/demo/assets/social-card.png +0 -0
  34. package/demo/browserconfig.xml +0 -9
  35. package/demo/demo.css +0 -523
  36. package/demo/demo.js +0 -605
  37. package/demo/index.html +0 -325
  38. package/demo/robots.txt +0 -4
  39. package/demo/site.webmanifest +0 -23
  40. package/demo/sitemap.xml +0 -9
  41. package/dist/integrations/ui-style-kit.css +0 -175
  42. package/dist/legacy.css +0 -787
  43. package/docs/wiki/Contributing.md +0 -36
  44. package/docs/wiki/Demo-And-GitHub-Pages.md +0 -53
  45. package/docs/wiki/Getting-Started.md +0 -51
  46. package/docs/wiki/Home.md +0 -33
  47. package/docs/wiki/Installation-And-CDN.md +0 -72
  48. package/docs/wiki/Layout-Primitives.md +0 -48
  49. package/docs/wiki/Layout-Recipes.md +0 -49
  50. package/docs/wiki/Layout-Styles.md +0 -33
  51. package/docs/wiki/Migrating-To-2.0.md +0 -186
  52. package/docs/wiki/Release-And-Publishing.md +0 -77
  53. package/docs/wiki/Security-And-Support.md +0 -36
  54. package/docs/wiki/UI-Style-Kit-Compatibility.md +0 -49
  55. package/docs/wiki/_Sidebar.md +0 -15
  56. package/styles/core.css +0 -6
  57. package/styles/integrations/ui-style-kit.css +0 -175
  58. package/styles/legacy.css +0 -173
  59. package/styles/personalities/bauhaus.css +0 -46
  60. package/styles/personalities/bento.css +0 -43
  61. package/styles/personalities/brutalism.css +0 -36
  62. package/styles/personalities/cyberpunk.css +0 -36
  63. package/styles/personalities/f-pattern.css +0 -48
  64. package/styles/personalities/maximalist.css +0 -51
  65. package/styles/personalities/minimal-saas.css +0 -37
  66. package/styles/personalities/mondrian.css +0 -44
  67. package/styles/personalities/neumorphism.css +0 -46
  68. package/styles/personalities/retro-glass.css +0 -44
  69. package/styles/personalities/retrofuturism.css +0 -36
  70. package/styles/personalities/split-screen.css +0 -41
  71. package/styles/personalities/synthwave.css +0 -48
  72. package/styles/personalities/tactile.css +0 -39
  73. package/styles/personalities/y2k.css +0 -36
  74. package/styles/personalities/z-pattern.css +0 -49
  75. package/styles/personalities.css +0 -18
  76. package/styles/primitives.css +0 -219
  77. package/styles/recipes.css +0 -270
  78. package/styles/utilities.css +0 -162
  79. package/styles/wrappers.css +0 -174
package/dist/wrappers.css CHANGED
@@ -1,127 +1,45 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities;
2
2
 
3
- /*
4
- Shared structural tokens and wrapper geometry. Theme, type, borders, shadows,
5
- and interactive states remain outside Layout Style's ownership boundary.
6
- */
7
-
8
- @layer ly.tokens {
9
- :where(.ly-root) {
10
- --ly-space-0: 0;
11
- --ly-space-1: 0.25rem;
12
- --ly-space-2: 0.5rem;
13
- --ly-space-3: 0.75rem;
14
- --ly-space-4: 1rem;
15
- --ly-space-5: 1.5rem;
16
- --ly-space-6: 2rem;
17
- --ly-space-7: 3rem;
18
- --ly-space-8: 4rem;
19
- --ly-space-9: 6rem;
20
-
21
- --ly-wrapper-compact: 40rem;
22
- --ly-wrapper-prose: 68ch;
23
- --ly-wrapper-content: 72rem;
24
- --ly-wrapper-wide: 112rem;
25
- --ly-wrapper-max: var(--ly-wrapper-content);
26
- --ly-page-padding-inline: clamp(1rem, 4vw, 3rem);
27
- --ly-safe-area-inline: max(
28
- env(safe-area-inset-left, 0px),
29
- env(safe-area-inset-right, 0px)
30
- );
31
- --ly-wrapper-gutter: max(var(--ly-page-padding-inline), var(--ly-safe-area-inline));
32
-
33
- --ly-section-padding-block: clamp(3rem, 7vw, 6rem);
34
- --ly-gap: var(--ly-space-5);
35
- --ly-grid-gap: var(--ly-gap);
36
- --ly-stack-gap: var(--ly-space-4);
37
- --ly-cluster-gap: var(--ly-space-3);
38
- --ly-cover-min: 100svh;
39
- --ly-switcher-threshold: 42rem;
40
- --ly-sidebar-size: 18rem;
41
- --ly-sidebar-content-min: 50%;
42
- --ly-grid-columns: 12;
43
- --ly-grid-min: 16rem;
44
- --ly-pane-size: 22rem;
45
- --ly-media-size: 14rem;
46
- --ly-reel-item-min: 16rem;
47
- --ly-reel-item-max: 28rem;
48
- --ly-scroll-max: 70svh;
49
- --ly-frame-ratio: 16 / 9;
50
-
51
- --ly-recipe-rail: 18rem;
52
- --ly-recipe-aside: 22rem;
53
- --ly-card-grid-min: 16rem;
54
- --ly-gallery-min: 12rem;
55
- --ly-card-size-sm: 10rem;
56
- --ly-card-size-md: 14rem;
57
- --ly-card-size-lg: 18rem;
58
- --ly-header-height: 4.5rem;
59
- --ly-z-header: 20;
60
-
61
- /* V1 token aliases remain available so legacy selectors can preserve sizing. */
62
- --ly-container-sm: var(--ly-wrapper-compact);
63
- --ly-container-md: 56rem;
64
- --ly-container-lg: var(--ly-wrapper-content);
65
- --ly-container-xl: 88rem;
66
- --ly-container-wide: var(--ly-wrapper-wide);
67
- --ly-container-max: var(--ly-container-lg);
68
- --ly-content-readable: var(--ly-wrapper-prose);
69
- --ly-carousel-item-min: var(--ly-reel-item-min);
70
- --ly-carousel-item-max: var(--ly-reel-item-max);
71
- --ly-sidebar-min: 14rem;
72
- --ly-sidebar-width: var(--ly-recipe-rail);
73
- --ly-sidebar-max: var(--ly-recipe-aside);
74
- --ly-pane-fixed: var(--ly-pane-size);
75
- --ly-z-sidebar: 10;
76
- }
77
- }
78
-
79
- @layer ly.reset {
80
- :where(.ly-root),
81
- :where(.ly-root *) {
82
- box-sizing: border-box;
83
- }
84
-
85
- :where(.ly-root) {
86
- min-inline-size: 0;
87
- margin: 0;
88
- }
89
-
90
- :where(.ly-root img),
91
- :where(.ly-root svg),
92
- :where(.ly-root video),
93
- :where(.ly-root canvas) {
94
- max-inline-size: 100%;
95
- }
96
- }
3
+ /* Wrappers provide fluid measures and become the nearest responsive scope. */
97
4
 
98
5
  @layer ly.wrappers {
99
6
  .ly-wrapper {
100
- /* Personalities provide only the plain-wrapper default; explicit variants stay authoritative. */
101
7
  --ly-wrapper-max: var(--ly-personality-wrapper-max, var(--ly-wrapper-content));
8
+ --ly-wrapper-fluid-gutter: clamp(1rem, 3vw, 3rem);
9
+ --ly-wrapper-local-gutter: max(
10
+ var(--ly-wrapper-fluid-gutter),
11
+ var(--ly-safe-area-inline)
12
+ );
102
13
 
103
- /* Symmetric safe-area compensation keeps logical gutters stable in either direction. */
104
- container-name: ly-wrapper;
14
+ container-name: ly-scope;
105
15
  container-type: inline-size;
106
- inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-gutter) * 2)));
16
+ inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-local-gutter) * 2)));
17
+ max-inline-size: 100%;
107
18
  margin-inline: auto;
108
- padding-inline: var(--ly-wrapper-gutter);
19
+ padding-inline: var(--ly-wrapper-local-gutter);
20
+ }
21
+
22
+ /* Container-relative gutters enhance the universally valid viewport fallback. */
23
+ @supports (width: 1cqi) {
24
+ .ly-wrapper {
25
+ --ly-wrapper-fluid-gutter: clamp(1rem, 3cqi, 3rem);
26
+ }
109
27
  }
110
28
 
111
29
  .ly-wrapper--compact {
112
- --ly-wrapper-max: 40rem;
30
+ --ly-wrapper-max: var(--ly-wrapper-compact);
113
31
  }
114
32
 
115
33
  .ly-wrapper--prose {
116
- --ly-wrapper-max: 68ch;
34
+ --ly-wrapper-max: var(--ly-wrapper-prose);
117
35
  }
118
36
 
119
37
  .ly-wrapper--content {
120
- --ly-wrapper-max: 72rem;
38
+ --ly-wrapper-max: var(--ly-wrapper-content);
121
39
  }
122
40
 
123
41
  .ly-wrapper--wide {
124
- --ly-wrapper-max: 112rem;
42
+ --ly-wrapper-max: var(--ly-wrapper-wide);
125
43
  }
126
44
 
127
45
  .ly-wrapper--full {
@@ -129,18 +47,19 @@
129
47
  }
130
48
 
131
49
  .ly-wrapper--breakout {
50
+ --ly-wrapper-max: 100%;
132
51
  --ly-breakout-content-size: min(
133
52
  var(--ly-wrapper-content),
134
- calc(100% - (var(--ly-wrapper-gutter) * 2))
53
+ calc(100% - (var(--ly-wrapper-local-gutter) * 2))
135
54
  );
136
55
  --ly-breakout-feature-size: min(
137
56
  var(--ly-wrapper-wide),
138
- calc(100% - (var(--ly-wrapper-gutter) * 2))
57
+ calc(100% - (var(--ly-wrapper-local-gutter) * 2))
139
58
  );
140
59
 
141
60
  display: grid;
142
61
  grid-template-columns:
143
- [full-start] minmax(min(100%, var(--ly-wrapper-gutter)), 1fr)
62
+ [full-start] minmax(min(100%, var(--ly-wrapper-local-gutter)), 1fr)
144
63
  [feature-start] minmax(
145
64
  0,
146
65
  calc((var(--ly-breakout-feature-size) - var(--ly-breakout-content-size)) / 2)
@@ -150,7 +69,7 @@
150
69
  0,
151
70
  calc((var(--ly-breakout-feature-size) - var(--ly-breakout-content-size)) / 2)
152
71
  )
153
- [feature-end] minmax(min(100%, var(--ly-wrapper-gutter)), 1fr) [full-end];
72
+ [feature-end] minmax(min(100%, var(--ly-wrapper-local-gutter)), 1fr) [full-end];
154
73
  inline-size: 100%;
155
74
  padding-inline: 0;
156
75
  }
@@ -158,6 +77,7 @@
158
77
  .ly-wrapper--breakout > * {
159
78
  grid-column: content;
160
79
  min-inline-size: 0;
80
+ max-inline-size: 100%;
161
81
  }
162
82
 
163
83
  .ly-wrapper--breakout > :where(.ly-lane--content, [data-ly-lane="content"]) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "layout-style-css",
3
- "version": "2.1.0",
3
+ "version": "3.0.0",
4
4
  "description": "Dependency-free structural CSS for responsive wrappers, composition primitives, recipes, utilities, and layout personalities.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -60,39 +60,27 @@
60
60
  },
61
61
  "exports": {
62
62
  ".": "./dist/layout-style-css.css",
63
- "./css": "./dist/layout-style-css.css",
64
- "./css.css": "./dist/layout-style-css.css",
65
- "./min": "./dist/layout-style-css.min.css",
66
63
  "./min.css": "./dist/layout-style-css.min.css",
67
64
  "./core.css": "./dist/core.css",
65
+ "./foundation.css": "./dist/foundation.css",
68
66
  "./wrappers.css": "./dist/wrappers.css",
69
67
  "./primitives.css": "./dist/primitives.css",
70
68
  "./recipes.css": "./dist/recipes.css",
71
69
  "./utilities.css": "./dist/utilities.css",
72
70
  "./personalities.css": "./dist/personalities.css",
73
71
  "./personalities/*.css": "./dist/personalities/*.css",
74
- "./integrations/ui-style-kit.css": "./dist/integrations/ui-style-kit.css",
75
- "./legacy.css": "./dist/legacy.css",
76
72
  "./package.json": "./package.json"
77
73
  },
78
74
  "files": [
79
- "dist",
80
- "styles",
81
- "docs/wiki",
82
- "demo/index.html",
83
- "demo/demo.css",
84
- "demo/demo.js",
85
- "demo/assets/apple-touch-icon.svg",
86
- "demo/assets/favicon.svg",
87
- "demo/assets/social-card.png",
88
- "demo/browserconfig.xml",
89
- "demo/robots.txt",
90
- "demo/site.webmanifest",
91
- "demo/sitemap.xml",
92
- "README.md",
93
- "CHANGELOG.md",
94
- "CONTRIBUTING.md",
95
- "SECURITY.md",
96
- "LICENSE"
75
+ "dist/layout-style-css.css",
76
+ "dist/layout-style-css.min.css",
77
+ "dist/core.css",
78
+ "dist/foundation.css",
79
+ "dist/wrappers.css",
80
+ "dist/primitives.css",
81
+ "dist/recipes.css",
82
+ "dist/utilities.css",
83
+ "dist/personalities.css",
84
+ "dist/personalities/*.css"
97
85
  ]
98
86
  }
package/CHANGELOG.md DELETED
@@ -1,90 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to `layout-style-css` are documented here. This project follows semantic versioning.
4
-
5
- ## [2.1.0] - 2026-07-20
6
-
7
- ### Changed
8
-
9
- - Updated the ecosystem demo and documentation to use `ui-style-kit-css@2.1.0` visual CSS, `ui-style-kit-css/interactive-surface-theme.css`, `interactive-surface-css@1.5.0` state core, and Layout core as the canonical import order.
10
- - Kept `layout-style-css/integrations/ui-style-kit.css` available as a frozen deprecated structural bridge for legacy UI-prefixed layout aliases.
11
- - Updated release metadata and the GitHub Pages demo to identify the 2.1.0 package line.
12
-
13
- ### Tests
14
-
15
- - Switched demo fixtures to consume the staged UI Style Kit 2.1 manifest, visual bundle, and token bridge while locking Interactive Surface to the released 1.5.0 package.
16
-
17
- ## [2.0.0] - 2026-07-19
18
-
19
- ### Breaking
20
-
21
- - Rebuilt the package as a dependency-free, container-first layout system requiring Node.js 20 or newer for development scripts.
22
- - Replaced size-tier wrappers with compact, prose, content, wide, full, and breakout semantics; wrappers now include fluid logical gutters and safe-area compensation.
23
- - Standardized personalities, recipes, and regions on `data-ly-layout`, `data-ly-recipe`, and `data-ly-area`.
24
- - Replaced root personality exports and companion `all-with-ui-kit*` aggregates with focused modules under `personalities/` and `integrations/`.
25
- - Moved v1 containers, root hooks, columns, and recipe aliases into the opt-in `legacy.css` bundle for the v2 line; removal is scheduled for v3.
26
-
27
- ### Added
28
-
29
- - Added stack, cluster, center, cover, switcher, sidebar, grid, split, panes, media, reel, frame, and bounded-scroll primitives.
30
- - Added seven functional recipes that preserve mobile DOM, reading, and focus order while rearranging named areas at `48rem` and `64rem` container thresholds.
31
- - Made every `data-ly-recipe` value a complete alternative to its matching class and kept explicit wrapper measures authoritative under all personalities.
32
- - Added sixteen spatially distinct personalities across left-rail, right-rail, three-zone, mosaic, and equal-split families.
33
- - Added explicit base, medium-container, and large-container order escape hatches with accessibility guidance.
34
- - Added a maintainable interactive layout lab with allowlisted query state, copyable snippets, ecosystem modes, and rendered coverage at 375px, 768px, 1280px, and 1440px.
35
- - Added a complete 1.x-to-2.0 migration guide, Node.js 20/22 CI, and Chromium, Firefox, and WebKit release verification.
36
-
37
- ### Integration
38
-
39
- - Pinned `ui-style-kit-css@2.0.1` and `interactive-surface-css@1.4.0` as development fixtures only; the default package has no companion imports, peer dependencies, or runtime dependencies.
40
- - Documented the all-three import order as UI Style Kit bridge, Interactive Surface `state-core.css`, Layout integration bridge, then Layout core.
41
- - Kept the upcoming UI Style Kit revision as a follow-up outside this release.
42
- - Preserved structural v1 `.ly-content` and `.ly-divider` compatibility while leaving the removed paint-owned `.ly-surface--raised` selector to UI Style Kit or application themes.
43
-
44
- ## [1.1.2] - 2026-07-08
45
-
46
- ### Fixed
47
-
48
- - Reissued the release metadata, package lock, README install examples, wiki checklist, and publish workflow recovery tag under `1.1.2`.
49
- - Kept the additive `1.1.1` CSS and documentation contract intact while moving the publish target to a clean patch version.
50
-
51
- ## [1.1.1] - 2026-07-05
52
-
53
- ### Added
54
-
55
- - Added versioned wiki documentation under `docs/wiki` for installation, layout primitives, recipes, UI Style Kit compatibility, demo deployment, publishing, security, and contribution workflows.
56
- - Added UI Style Kit-compatible structural aliases for `saas`, `bento`, `max`, `bau`, `tactile`, `neo`, `retro`, `brutal`, `cyber`, `y2k`, and `rg` prefixes.
57
- - Added layout recipe helpers for button groups, card grids, card sizing, galleries, and carousels.
58
- - Added F-Pattern, Z-Pattern, Split-Screen, Mondrian, and Synthwave layout styles.
59
- - Added `layout-style-css/all-with-ui-kit-and-interactive-surface.css` for the three-library import path.
60
- - Added direct `./dist/*.css` package exports for consumers that need generated dist files.
61
- - Added `CHANGELOG.md`, `CONTRIBUTING.md`, and `SECURITY.md` to the release documentation set.
62
-
63
- ### Changed
64
-
65
- - Reworked the demo mobile controls into a compact drawer so the sticky header does not consume the mobile viewport.
66
- - Expanded the demo to cover app shell, wrappers, split layouts, sidebars, panes, button groups, card grids, card sizes, galleries, carousels, frames, and scroll areas.
67
- - Updated README examples to use exported CSS entrypoints and valid CDN links.
68
- - Updated npm release metadata, package file allowlist, and release verification scripts for the `1.1.1` package.
69
- - Updated the npm publish workflow to publish from `release.published` events and explicit `workflow_dispatch` tags.
70
-
71
- ### Fixed
72
-
73
- - Fixed README quick-start imports that referenced non-exported paths.
74
- - Fixed malformed UI Style Kit CDN link markup in the README.
75
- - Clarified responsive column utility documentation so class groups do not imply bare numeric class names.
76
- - Preserved GitHub Pages artifact generation with a Pages-root `index.html`.
77
- - Fixed the release automation path so draft releases can be published before the npm workflow runs.
78
-
79
- ### Security
80
-
81
- - Kept the layout CSS contract free of visual properties owned by `ui-style-kit-css`.
82
- - Kept the package CSS-only at runtime with no network calls, dynamic script execution, or secret handling.
83
- - Added release verification coverage for npm pack contents and documentation completeness.
84
-
85
- ## [1.0.0]
86
-
87
- ### Added
88
-
89
- - Initial public release of layout primitives, layout style files, generated dist bundles, and demo coverage.
90
-
package/CONTRIBUTING.md DELETED
@@ -1,55 +0,0 @@
1
- # Contributing
2
-
3
- Thanks for improving `layout-style-css`. This repository is a CSS layout library, so changes should keep structure, spacing, responsive behavior, and package contracts separate from visual styling.
4
-
5
- ## Local Setup
6
-
7
- ```bash
8
- npm install
9
- npm run build
10
- npm run lint
11
- npm run check:demo-js
12
- npm test
13
- ```
14
-
15
- Run the full release gate before opening a release PR:
16
-
17
- ```bash
18
- npm run release:verify
19
- ```
20
-
21
- ## Development Rules
22
-
23
- - Keep authored CSS in `styles/`.
24
- - Regenerate `dist/` with `npm run build`; do not hand-edit generated dist files.
25
- - Keep public layout classes prefixed with `ly-`.
26
- - Leave colors, typography, borders, shadows, native controls, focus states, themes, and modes to `ui-style-kit-css`.
27
- - Add structural aliases in `styles/integrations/ui-style-kit.css` only when they map to layout primitives or layout recipes.
28
- - Preserve semantic mobile DOM, reading, and focus order; built-in recipes must use named areas instead of `order`.
29
- - Test container behavior below and above `48rem` and `64rem`.
30
- - Update README, `docs/wiki`, and `CHANGELOG.md` when a public class, export, recipe, release workflow, or package behavior changes.
31
-
32
- ## Testing Expectations
33
-
34
- Every change that affects public behavior should update or preserve:
35
-
36
- - `test/layout-css-contract.test.mjs` for package, CSS, docs, and tarball contracts.
37
- - `test/release-docs-contract.test.mjs` for current documentation and workflow contracts.
38
- - `test/demo-smoke.test.mjs` for rendered demo behavior.
39
- - `test/pages-artifact.test.mjs` for GitHub Pages output.
40
- - `stylelint` for authored CSS formatting.
41
-
42
- ## Review Checklist
43
-
44
- - The package remains publishable as a public npm library.
45
- - The npm tarball contains only intended release files.
46
- - README examples use exported package entrypoints.
47
- - Documentation links resolve to versioned files.
48
- - Demo controls remain compact on mobile and tablet viewports.
49
- - Chromium, Firefox, and WebKit pass for release-facing rendered changes.
50
- - New CSS does not introduce UI Style Kit-owned visual declarations.
51
-
52
- ## Wiki Updates
53
-
54
- The source for the project wiki is `docs/wiki/`. If GitHub Wiki is enabled for the repository, mirror those files into the wiki remote after the main branch documentation is merged.
55
-
package/SECURITY.md DELETED
@@ -1,50 +0,0 @@
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 +0,0 @@
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,7 +0,0 @@
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>
Binary file
@@ -1,9 +0,0 @@
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>