layout-style-css 3.0.2 → 3.2.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 (47) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +35 -14
  3. package/dist/core.css +1 -1
  4. package/dist/foundation.css +168 -24
  5. package/dist/layout-style-css.css +486 -159
  6. package/dist/layout-style-css.min.css +1 -1
  7. package/dist/personalities/bauhaus.css +4 -11
  8. package/dist/personalities/bento.css +1 -11
  9. package/dist/personalities/brutalism.css +3 -11
  10. package/dist/personalities/cyberpunk.css +2 -2
  11. package/dist/personalities/data-terminal.css +13 -0
  12. package/dist/personalities/editorial.css +14 -0
  13. package/dist/personalities/f-pattern.css +4 -4
  14. package/dist/personalities/industrial-hmi.css +11 -0
  15. package/dist/personalities/maximalist.css +2 -11
  16. package/dist/personalities/minimal-saas.css +1 -1
  17. package/dist/personalities/mondrian.css +2 -2
  18. package/dist/personalities/neumorphism.css +4 -13
  19. package/dist/personalities/retro-glass.css +11 -11
  20. package/dist/personalities/retrofuturism.css +2 -2
  21. package/dist/personalities/split-screen.css +6 -6
  22. package/dist/personalities/synthwave.css +2 -2
  23. package/dist/personalities/tactile.css +4 -13
  24. package/dist/personalities/technical-blueprint.css +13 -0
  25. package/dist/personalities/y2k.css +9 -9
  26. package/dist/personalities/z-pattern.css +4 -4
  27. package/dist/personalities.css +5 -1
  28. package/dist/primitives.css +122 -4
  29. package/dist/recipes.css +84 -1
  30. package/dist/utilities.css +14 -35
  31. package/dist/wrappers.css +5 -1
  32. package/docs/wiki/Demo-And-GitHub-Pages.md +4 -2
  33. package/docs/wiki/Getting-Started.md +11 -4
  34. package/docs/wiki/Home.md +7 -2
  35. package/docs/wiki/Installation-And-CDN.md +6 -5
  36. package/docs/wiki/Layout-Personality-Reference.md +67 -0
  37. package/docs/wiki/Layout-Primitives.md +16 -3
  38. package/docs/wiki/Layout-Recipes.md +3 -1
  39. package/docs/wiki/Layout-Styles.md +10 -23
  40. package/docs/wiki/Migrating-To-3.1.md +62 -0
  41. package/docs/wiki/Migrating-To-3.2.md +70 -0
  42. package/docs/wiki/Release-And-Publishing.md +6 -6
  43. package/docs/wiki/UI-Style-Kit-Compatibility.md +6 -0
  44. package/docs/wiki/_Sidebar.md +3 -0
  45. package/manifest.json +48 -28
  46. package/package.json +3 -3
  47. package/personalities.json +76 -14
@@ -0,0 +1,62 @@
1
+ # Migrating To 3.1
2
+
3
+ Layout Style CSS 3.1 is additive: no package export, recipe, area, personality, or recipe threshold was removed or renamed. The refinements make density, gap locality, Wrapper intent, and Scroll constraints explicit.
4
+
5
+ ## Section Rhythm And Density
6
+
7
+ Normal density is now the conservative zero-configuration rhythm. The former larger marketing rhythm is available through spacious density:
8
+
9
+ ```html
10
+ <!-- Former normal marketing rhythm -->
11
+ <main class="ly-root" data-ly-density="spacious">
12
+ <section class="ly-section">Campaign overview</section>
13
+ </main>
14
+ ```
15
+
16
+ Use compact density for task-heavy application regions and normal for conventional content. Density can be set at the root or reset on a nested subtree:
17
+
18
+ ```html
19
+ <!-- Task-oriented application workspace -->
20
+ <main class="ly-wrapper ly-wrapper--workspace" data-ly-density="compact">
21
+ <section class="ly-section">Inventory workspace</section>
22
+ </main>
23
+ ```
24
+
25
+ The public values are `data-ly-density="compact"`, `data-ly-density="normal"`, and `data-ly-density="spacious"`. A nested value intentionally resets inherited gap and section tokens.
26
+
27
+ ## Gap Locality
28
+
29
+ `.ly-gap-0` through `.ly-gap-9` now set `gap` only on the element carrying the class. Descendant Stacks, Clusters, Grids, and recipes keep their defaults. Move shared spacing intent to the public inherited variables:
30
+
31
+ ```html
32
+ <!-- Intentional inherited spacing context -->
33
+ <section style="--ly-gap: var(--ly-space-7); --ly-grid-gap: var(--ly-gap);">
34
+ <div class="ly-grid"><article>Primary</article><article>Secondary</article></div>
35
+ </section>
36
+ ```
37
+
38
+ Use a local utility when only one composition changes, for example `class="ly-grid ly-gap-9"`.
39
+
40
+ ## Scroll Constraints
41
+
42
+ Base `.ly-scroll` now owns overflow without choosing a maximum height. Add the modifier that matches the container contract:
43
+
44
+ ```html
45
+ <!-- Former 3.0.x Scroll behavior -->
46
+ <div class="ly-scroll ly-scroll--viewport">Viewport-relative activity log</div>
47
+
48
+ <!-- Stable application-controlled Scroll cap -->
49
+ <div class="ly-scroll ly-scroll--bounded" style="--ly-scroll-max: 32rem">
50
+ Application-controlled activity log
51
+ </div>
52
+ ```
53
+
54
+ `ly-scroll--viewport` consumes `--ly-scroll-viewport-max` and adapts at the `44rem` and `30rem` viewport-height tiers. `ly-scroll--bounded` consumes `--ly-scroll-max` and remains stable unless the application overrides it.
55
+
56
+ ## Structured Threshold Metadata
57
+
58
+ The generic threshold arrays remain available. `manifest.json` now also publishes recipe ownership under `thresholds.recipes`, so tooling can distinguish the medium and wide tiers for App Shell and Dashboard from each recipe's single wide tier. Release validation requires every public geometry token to be consumed by runtime CSS.
59
+
60
+ ## Compatibility
61
+
62
+ All 13 package exports and the `42rem`, `44rem`, `48rem`, `52rem`, and `72rem` recipe thresholds remain unchanged. Existing markup without a density attribute uses normal density. Legacy demo links containing `?density=comfortable` normalize to `normal`.
@@ -0,0 +1,70 @@
1
+ # Migrating To 3.2
2
+
3
+ Layout Style CSS 3.2 is additive: existing v3 selectors, package exports, semantic areas, automatic recipe thresholds, and manual-responsive behavior are retained. The release expands composition APIs, makes automatic content tracks more resilient, and grows the layout personality inventory from sixteen to twenty.
4
+
5
+ ## Mosaic
6
+
7
+ Use `.ly-mosaic` for deliberate heterogeneous tile geometry. It starts as one column, becomes six columns at `42rem`, and becomes twelve columns at `72rem`, based on the nearest `ly-scope` container.
8
+
9
+ ```html
10
+ <section class="ly-mosaic">
11
+ <article class="ly-span-6 ly-row-span-2">Primary canvas</article>
12
+ <article class="ly-span-4">Signal health</article>
13
+ <article class="ly-span-full">System status</article>
14
+ </section>
15
+ ```
16
+
17
+ Span utilities collapse below their supported tier, and Mosaic never uses dense auto-placement. DOM, reading, keyboard, and focus order remain authoritative. Set `data-ly-responsive="manual"` on the Mosaic when application CSS owns its columns.
18
+
19
+ ## Action Bar
20
+
21
+ Use `.ly-action-bar` with `data-ly-actions="start"` and `data-ly-actions="end"` groups for workflow controls. The groups wrap in DOM order; the end group moves to the logical edge when space allows.
22
+
23
+ ```html
24
+ <div class="ly-action-bar ly-action-bar--sticky">
25
+ <div data-ly-actions="start"><button>Save draft</button></div>
26
+ <div data-ly-actions="end"><button>Publish</button></div>
27
+ </div>
28
+ ```
29
+
30
+ The sticky modifier uses `--ly-sticky-position`, honors the block-end safe area, and becomes normal flow in the shallow-height tier so required actions remain reachable.
31
+
32
+ ## Area-Aware App Shell
33
+
34
+ The automatic, feature-detected area-aware App Shell no longer reserves empty columns when the direct-child sidebar, aside, or both are absent. Full five-area shells retain their personality-approved topology. Browsers without the required selector support keep the safe shared layout, and `data-ly-responsive="manual"` remains application-owned.
35
+
36
+ ## Content Resilience
37
+
38
+ - `--ly-recipe-main-min: 20rem` now guards automatic App Shell, Dashboard, and Docs primary tracks.
39
+ - Both List Detail tracks retain the `--ly-pane-min` floor.
40
+ - Both Split Hero tracks retain the `--ly-split-min` floor.
41
+ - `.ly-scroll` now exposes horizontal as well as vertical overflow with reachable scrollbars instead of clipping legitimate wide content.
42
+ - Long labels, paragraphs, URLs, tables, code, and diagram-like content remain reachable rather than being hidden to preserve a desktop composition.
43
+
44
+ UI Style Kit 2.4 companion fixtures should allow their content boxes to shrink and wrap while leaving deliberate wide tables, code, or technical canvases inside `.ly-scroll`. Do not apply generic `overflow: hidden` to a required structural region.
45
+
46
+ ## New Personality IDs
47
+
48
+ - `technical-blueprint`: full-width engineering canvas with a `2.2fr / 0.8fr` Split bias.
49
+ - `data-terminal`: dense full-width data composition with `10rem` grid, card, and gallery minima.
50
+ - `industrial-hmi`: full-width supervisory shell with a `7rem` rail and `32rem` aside.
51
+ - `editorial`: `108rem` publication composition with a `1.65fr / 0.75fr` Split and `4 / 5` Frame.
52
+
53
+ See [Layout Personality Reference](Layout-Personality-Reference.md) for the canonical twenty-profile geometry and visual-preset pairings.
54
+
55
+ ## Existing Geometry Changes
56
+
57
+ - Bento removes its old four-track App Shell and remains a canonical Mosaic profile.
58
+ - Maximalist reduces its profile gap to `--ly-space-3` while preserving dense card and gallery minima.
59
+ - Bauhaus reduces its gap to `--ly-space-2`, removes its old shell, and adds a `0.7fr / 1.3fr` Split bias.
60
+ - Tactile moves to the `96rem` workspace measure and removes its old sidebar/aside stacking topology.
61
+ - Neumorphism removes its persistent-right-sidebar topology and increases its aside preference to `22rem`.
62
+ - Brutalism becomes full width, uses `--ly-space-1`, and removes its persistent-right-sidebar topology.
63
+ - Y2K becomes full width with a global header/footer and persistent dual rails.
64
+ - Retro Glass becomes full width with a global header/footer and dual-rail desktop workbench.
65
+
66
+ Retrofuturism, Cyberpunk, Split Screen, Mondrian, Synthwave, and the other profiles not listed above preserve their approved topology and defining recipe biases.
67
+
68
+ ## Pairing Metadata
69
+
70
+ Every entry in `layout-style-css/personalities.json` now has both `recommendedVisualPresets` and additive `compatibleVisualPresets` arrays. These values are guidance only: changing `data-ly-layout` never changes the independently selected `data-ui`, `data-theme`, `data-mode`, or density.
@@ -1,6 +1,6 @@
1
1
  # Release And Publishing
2
2
 
3
- This guide describes the release gate for `layout-style-css@3.0.2`. Running verification does not publish, tag, push, create a GitHub Release, or change the npm registry.
3
+ This guide describes the release gate for `layout-style-css@3.2.0`. Running verification does not publish, tag, push, create a GitHub Release, or change the npm registry.
4
4
 
5
5
  ## Local Candidate Gate
6
6
 
@@ -23,20 +23,20 @@ The package's `prepublishOnly` script runs `npm run release:verify`, so a direct
23
23
 
24
24
  The immutable cross-repository pins require this exact remote sequence:
25
25
 
26
- 1. Push a stable UI bootstrap ref containing `33e3c834aec62b85650dd14aea9d7d388abef191`.
26
+ 1. Use the published UI Style Kit 2.4.0 fixture ref containing `835aa4474c49b7b766d3f5a923f023725bc14331`.
27
27
  2. Push and merge Interactive Surface CSS and Layout Style CSS with merge commits so their reviewed commit SHAs remain reachable.
28
28
  3. Update and verify the final UI companion pins against those merged companion commits.
29
29
  4. Push the final UI branch, rerun its ecosystem preflight, and merge UI with a merge commit.
30
30
  5. Do not squash, rebase, or delete the only remote refs until every pinned commit is reachable through merged ancestry.
31
31
 
32
- The bootstrap SHA is deliberately stable: companion workflows use it to load the reviewed preflight implementation before the final UI commit can reference the companion heads.
32
+ The UI fixture SHA is deliberately stable: companion workflows use it to load the reviewed preflight implementation and final 2.4.0 package contract before Layout Style CSS is published.
33
33
 
34
34
  ## Candidate Inspection
35
35
 
36
36
  Confirm:
37
37
 
38
- - package version is `3.0.2`
39
- - intended tag would be `v3.0.2`
38
+ - package version is `3.2.0`
39
+ - intended tag would be `v3.2.0`
40
40
  - runtime and peer dependencies are empty
41
41
  - exact exports and tarball files match the v3 contract
42
42
  - generated CSS matches authored sources
@@ -50,7 +50,7 @@ Only after explicit approval:
50
50
  1. Commit the verified candidate.
51
51
  2. Push the intended branch.
52
52
  3. Merge through the repository's normal review policy.
53
- 4. Create the exact `v3.0.2` tag from the protected release commit.
53
+ 4. Create the exact `v3.2.0` tag from the protected release commit.
54
54
  5. Publish the GitHub Release.
55
55
  6. Let the protected npm workflow verify the tag and publish with provenance.
56
56
  7. Confirm the GitHub Release, tag, and npm registry state independently.
@@ -35,6 +35,12 @@ Put canonical structural hooks in markup:
35
35
 
36
36
  The `ly-*` hooks control structure. Companion classes and data attributes can paint or animate the same elements without taking over layout.
37
37
 
38
+ ## Pairing Guidance
39
+
40
+ `layout-style-css/personalities.json` publishes independent `recommendedVisualPresets` and `compatibleVisualPresets` arrays. The Layout Lab displays both for the selected personality but never changes the user's `data-ui` selection. See [Layout Personality Reference](Layout-Personality-Reference.md) for the complete matrix.
41
+
42
+ For UI Style Kit 2.4 content, allow long labels and paragraphs to wrap and keep required structural regions shrink-safe. Put legitimately wide tables, code, or technical canvases inside `.ly-scroll`; do not conceal them with generic clipping.
43
+
38
44
  ## v3 Boundary
39
45
 
40
46
  The deprecated v2 UI-prefixed structural bridge is not shipped. Migrate bridge aliases to canonical Layout hooks; do not copy the bridge into application CSS. See [Migrating To 3.0](Migrating-To-3.0.md).
@@ -4,8 +4,11 @@
4
4
  - [Layout Primitives](Layout-Primitives)
5
5
  - [Layout Recipes](Layout-Recipes)
6
6
  - [Layout Styles](Layout-Styles)
7
+ - [Layout Personality Reference](Layout-Personality-Reference)
7
8
  - [Companion Compatibility](UI-Style-Kit-Compatibility)
8
9
  - [Migrating To 3.0](Migrating-To-3.0)
10
+ - [Migrating To 3.1](Migrating-To-3.1)
11
+ - [Migrating To 3.2](Migrating-To-3.2)
9
12
  - [Demo And GitHub Pages](Demo-And-GitHub-Pages)
10
13
  - [Release And Publishing](Release-And-Publishing)
11
14
  - [Security And Support](Security-And-Support)
package/manifest.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "breakingChange": "increment-schemaVersion-before-removing-or-renaming-fields"
6
6
  },
7
7
  "name": "layout-style-css",
8
- "version": "3.0.2",
8
+ "version": "3.2.0",
9
9
  "entrypoints": {
10
10
  "default": "./dist/layout-style-css.css",
11
11
  "minified": "./dist/layout-style-css.min.css",
@@ -23,42 +23,47 @@
23
23
  "stable": [".ly-root", ".ly-wrapper"],
24
24
  "deprecated": []
25
25
  },
26
- "wrappers": ["compact", "prose", "content", "wide", "full", "breakout"],
27
- "primitives": ["page", "header", "footer", "main", "section", "surface", "readable", "stack", "cluster", "center", "cover", "switcher", "sidebar", "grid", "split", "panes", "media", "reel", "frame", "scroll"],
26
+ "wrappers": ["compact", "prose", "content", "workspace", "wide", "full", "breakout"],
27
+ "primitives": ["page", "header", "footer", "main", "section", "surface", "readable", "stack", "cluster", "center", "cover", "switcher", "sidebar", "grid", "mosaic", "action-bar", "split", "panes", "media", "reel", "frame", "scroll"],
28
28
  "recipes": ["app-shell", "dashboard", "docs", "list-detail", "split-hero", "gallery", "card-grid"],
29
29
  "areas": ["header", "nav", "sidebar", "main", "aside", "footer", "content", "media", "actions", "primary", "secondary"],
30
- "personalities": ["minimal-saas", "bento", "maximalist", "bauhaus", "tactile", "neumorphism", "retrofuturism", "brutalism", "cyberpunk", "y2k", "retro-glass", "f-pattern", "z-pattern", "split-screen", "mondrian", "synthwave"],
30
+ "personalities": ["minimal-saas", "bento", "maximalist", "bauhaus", "tactile", "neumorphism", "retrofuturism", "brutalism", "cyberpunk", "y2k", "retro-glass", "f-pattern", "z-pattern", "split-screen", "mondrian", "synthwave", "technical-blueprint", "data-terminal", "industrial-hmi", "editorial"],
31
31
  "personalityPairings": [
32
- { "id": "minimal-saas", "label": "Minimal SaaS", "visualCompatibility": "native", "recommendedVisualPresets": ["minimal-saas"] },
33
- { "id": "bento", "label": "Bento", "visualCompatibility": "native", "recommendedVisualPresets": ["bento"] },
34
- { "id": "maximalist", "label": "Maximalist", "visualCompatibility": "native", "recommendedVisualPresets": ["maximalist"] },
35
- { "id": "bauhaus", "label": "Bauhaus", "visualCompatibility": "native", "recommendedVisualPresets": ["bauhaus"] },
36
- { "id": "tactile", "label": "Tactile", "visualCompatibility": "native", "recommendedVisualPresets": ["tactile"] },
37
- { "id": "neumorphism", "label": "Neumorphism", "visualCompatibility": "native", "recommendedVisualPresets": ["neumorphism"] },
38
- { "id": "retrofuturism", "label": "Retrofuturism", "visualCompatibility": "native", "recommendedVisualPresets": ["retrofuturism"] },
39
- { "id": "brutalism", "label": "Brutalism", "visualCompatibility": "native", "recommendedVisualPresets": ["brutalism"] },
40
- { "id": "cyberpunk", "label": "Cyberpunk", "visualCompatibility": "native", "recommendedVisualPresets": ["cyberpunk"] },
41
- { "id": "y2k", "label": "Y2K", "visualCompatibility": "native", "recommendedVisualPresets": ["y2k"] },
42
- { "id": "retro-glass", "label": "Retro Glass", "visualCompatibility": "native", "recommendedVisualPresets": ["retro-glass"] },
43
- { "id": "f-pattern", "label": "F-pattern", "visualCompatibility": "any", "recommendedVisualPresets": [] },
44
- { "id": "z-pattern", "label": "Z-pattern", "visualCompatibility": "any", "recommendedVisualPresets": [] },
45
- { "id": "split-screen", "label": "Split Screen", "visualCompatibility": "any", "recommendedVisualPresets": [] },
46
- { "id": "mondrian", "label": "Mondrian", "visualCompatibility": "any", "recommendedVisualPresets": [] },
32
+ { "id": "minimal-saas", "label": "Minimal SaaS", "visualCompatibility": "native", "recommendedVisualPresets": ["minimal-saas"], "compatibleVisualPresets": ["organic-modern"] },
33
+ { "id": "bento", "label": "Bento", "visualCompatibility": "native", "recommendedVisualPresets": ["bento"], "compatibleVisualPresets": [] },
34
+ { "id": "maximalist", "label": "Maximalist", "visualCompatibility": "native", "recommendedVisualPresets": ["maximalist"], "compatibleVisualPresets": [] },
35
+ { "id": "bauhaus", "label": "Bauhaus", "visualCompatibility": "native", "recommendedVisualPresets": ["bauhaus"], "compatibleVisualPresets": ["art-deco"] },
36
+ { "id": "tactile", "label": "Tactile", "visualCompatibility": "native", "recommendedVisualPresets": ["tactile"], "compatibleVisualPresets": ["clay"] },
37
+ { "id": "neumorphism", "label": "Neumorphism", "visualCompatibility": "native", "recommendedVisualPresets": ["neumorphism"], "compatibleVisualPresets": [] },
38
+ { "id": "retrofuturism", "label": "Retrofuturism", "visualCompatibility": "native", "recommendedVisualPresets": ["retrofuturism"], "compatibleVisualPresets": [] },
39
+ { "id": "brutalism", "label": "Brutalism", "visualCompatibility": "native", "recommendedVisualPresets": ["brutalism"], "compatibleVisualPresets": [] },
40
+ { "id": "cyberpunk", "label": "Cyberpunk", "visualCompatibility": "native", "recommendedVisualPresets": ["cyberpunk"], "compatibleVisualPresets": [] },
41
+ { "id": "y2k", "label": "Y2K", "visualCompatibility": "native", "recommendedVisualPresets": ["y2k"], "compatibleVisualPresets": [] },
42
+ { "id": "retro-glass", "label": "Retro Glass", "visualCompatibility": "native", "recommendedVisualPresets": ["retro-glass"], "compatibleVisualPresets": [] },
43
+ { "id": "f-pattern", "label": "F-pattern", "visualCompatibility": "any", "recommendedVisualPresets": [], "compatibleVisualPresets": [] },
44
+ { "id": "z-pattern", "label": "Z-pattern", "visualCompatibility": "any", "recommendedVisualPresets": [], "compatibleVisualPresets": [] },
45
+ { "id": "split-screen", "label": "Split Screen", "visualCompatibility": "any", "recommendedVisualPresets": [], "compatibleVisualPresets": [] },
46
+ { "id": "mondrian", "label": "Mondrian", "visualCompatibility": "any", "recommendedVisualPresets": [], "compatibleVisualPresets": [] },
47
47
  {
48
48
  "id": "synthwave",
49
49
  "label": "Synthwave",
50
50
  "visualCompatibility": "recommended",
51
51
  "recommendedVisualPresets": ["cyberpunk", "retrofuturism"],
52
+ "compatibleVisualPresets": [],
52
53
  "visualVerification": {
53
54
  "method": "rendered-computed-style",
54
55
  "test": "test/demo-smoke.test.mjs",
55
56
  "computedProperties": {
56
- "cyberpunk": { "boxShadow": "0px 0px 18px" },
57
- "retrofuturism": { "boxShadow": "0px 10px 30px" }
57
+ "cyberpunk": { "boxShadow": "0px 0px 12px" },
58
+ "retrofuturism": { "boxShadow": "0px 2.88px 6.72px" }
58
59
  },
59
60
  "assertion": "A visible browser contract fixture renders each preset's distinct article box-shadow while data-ly-layout remains synthwave."
60
61
  }
61
- }
62
+ },
63
+ { "id": "technical-blueprint", "label": "Technical Blueprint", "visualCompatibility": "native", "recommendedVisualPresets": ["technical-blueprint"], "compatibleVisualPresets": [] },
64
+ { "id": "data-terminal", "label": "Data Terminal", "visualCompatibility": "native", "recommendedVisualPresets": ["data-terminal"], "compatibleVisualPresets": ["neo-noir"] },
65
+ { "id": "industrial-hmi", "label": "Industrial HMI", "visualCompatibility": "recommended", "recommendedVisualPresets": ["industrial-utility"], "compatibleVisualPresets": [] },
66
+ { "id": "editorial", "label": "Editorial", "visualCompatibility": "recommended", "recommendedVisualPresets": ["editorial-luxe", "paper-editorial"], "compatibleVisualPresets": [] }
62
67
  ],
63
68
  "containers": {
64
69
  "names": ["ly-scope"],
@@ -66,23 +71,37 @@
66
71
  },
67
72
  "thresholds": {
68
73
  "containerMinWidths": ["42rem", "44rem", "48rem", "52rem", "72rem"],
69
- "viewportMaxHeights": ["44rem", "30rem"]
74
+ "viewportMaxHeights": ["44rem", "30rem"],
75
+ "recipes": {
76
+ "splitHero": { "wide": "42rem" },
77
+ "listDetail": { "wide": "44rem" },
78
+ "docs": { "wide": "48rem" },
79
+ "appShell": { "medium": "52rem", "wide": "72rem" },
80
+ "dashboard": { "medium": "52rem", "wide": "72rem" }
81
+ },
82
+ "compositions": {
83
+ "mosaic": { "medium": "42rem", "wide": "72rem" }
84
+ }
70
85
  },
71
86
  "tokens": {
72
87
  "geometry": [
73
88
  "--ly-space-0", "--ly-space-1", "--ly-space-2", "--ly-space-3", "--ly-space-4",
74
89
  "--ly-space-5", "--ly-space-6", "--ly-space-7", "--ly-space-8", "--ly-space-9",
75
- "--ly-wrapper-compact", "--ly-wrapper-prose", "--ly-wrapper-content", "--ly-wrapper-wide",
90
+ "--ly-wrapper-compact", "--ly-wrapper-prose", "--ly-wrapper-content", "--ly-wrapper-workspace",
91
+ "--ly-wrapper-wide",
76
92
  "--ly-page-padding-inline", "--ly-safe-area-inline", "--ly-safe-area-block-start",
77
93
  "--ly-safe-area-block-end", "--ly-wrapper-gutter", "--ly-wrapper-max", "--ly-profile-gap",
78
94
  "--ly-gap", "--ly-grid-gap", "--ly-stack-gap", "--ly-cluster-gap",
79
95
  "--ly-section-padding-block", "--ly-section-padding-block-compact", "--ly-header-height",
80
96
  "--ly-sticky-position", "--ly-cover-min",
81
- "--ly-shell-min", "--ly-scroll-max", "--ly-switcher-threshold", "--ly-sidebar-size",
82
- "--ly-sidebar-content-min", "--ly-grid-columns", "--ly-grid-min", "--ly-split-min",
97
+ "--ly-shell-min", "--ly-scroll-max", "--ly-scroll-viewport-max", "--ly-switcher-threshold",
98
+ "--ly-sidebar-size",
99
+ "--ly-sidebar-content-min", "--ly-grid-columns", "--ly-grid-min", "--ly-mosaic-medium-columns",
100
+ "--ly-mosaic-wide-columns", "--ly-split-min",
83
101
  "--ly-pane-min", "--ly-pane-size", "--ly-media-min", "--ly-media-size", "--ly-reel-item-min",
84
102
  "--ly-reel-item-max", "--ly-frame-ratio", "--ly-split-primary", "--ly-split-secondary",
85
- "--ly-recipe-rail", "--ly-recipe-aside", "--ly-gallery-min", "--ly-card-grid-min",
103
+ "--ly-recipe-main-min", "--ly-recipe-rail", "--ly-recipe-aside", "--ly-gallery-min",
104
+ "--ly-card-grid-min",
86
105
  "--ly-app-shell-medium-areas", "--ly-app-shell-medium-columns", "--ly-app-shell-wide-areas",
87
106
  "--ly-app-shell-wide-columns", "--ly-dashboard-medium-areas", "--ly-dashboard-medium-columns",
88
107
  "--ly-dashboard-wide-areas", "--ly-dashboard-wide-columns", "--ly-docs-wide-areas",
@@ -90,7 +109,8 @@
90
109
  "--ly-split-hero-wide-areas", "--ly-split-hero-wide-columns", "--ly-center-max",
91
110
  "--ly-cover-padding", "--ly-z-header", "--ly-split-align", "--ly-media-align",
92
111
  "--ly-split-hero-align"
93
- ]
112
+ ],
113
+ "extensionOnly": []
94
114
  },
95
115
  "companions": {
96
116
  "ui-style-kit-css": ">=2.1.0 <3.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "layout-style-css",
3
- "version": "3.0.2",
3
+ "version": "3.2.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",
@@ -59,10 +59,10 @@
59
59
  "css-tree": "3.2.1",
60
60
  "interactive-surface-css": "1.5.0",
61
61
  "stylelint": "17.14.0",
62
- "ui-style-kit-css": "2.1.0"
62
+ "ui-style-kit-css": "2.4.0"
63
63
  },
64
64
  "overrides": {
65
- "fast-uri": "3.1.5",
65
+ "fast-uri": "3.1.7",
66
66
  "js-yaml": "4.3.1",
67
67
  "nanoid": "3.3.18",
68
68
  "postcss": "8.5.23"
@@ -4,6 +4,7 @@
4
4
  "selector": "data-ly-layout",
5
5
  "independentSelectors": [
6
6
  "data-ly-layout",
7
+ "data-ly-density",
7
8
  "data-ui",
8
9
  "data-theme",
9
10
  "data-mode"
@@ -15,6 +16,9 @@
15
16
  "visualCompatibility": "native",
16
17
  "recommendedVisualPresets": [
17
18
  "minimal-saas"
19
+ ],
20
+ "compatibleVisualPresets": [
21
+ "organic-modern"
18
22
  ]
19
23
  },
20
24
  {
@@ -23,7 +27,8 @@
23
27
  "visualCompatibility": "native",
24
28
  "recommendedVisualPresets": [
25
29
  "bento"
26
- ]
30
+ ],
31
+ "compatibleVisualPresets": []
27
32
  },
28
33
  {
29
34
  "id": "maximalist",
@@ -31,7 +36,8 @@
31
36
  "visualCompatibility": "native",
32
37
  "recommendedVisualPresets": [
33
38
  "maximalist"
34
- ]
39
+ ],
40
+ "compatibleVisualPresets": []
35
41
  },
36
42
  {
37
43
  "id": "bauhaus",
@@ -39,6 +45,9 @@
39
45
  "visualCompatibility": "native",
40
46
  "recommendedVisualPresets": [
41
47
  "bauhaus"
48
+ ],
49
+ "compatibleVisualPresets": [
50
+ "art-deco"
42
51
  ]
43
52
  },
44
53
  {
@@ -47,6 +56,9 @@
47
56
  "visualCompatibility": "native",
48
57
  "recommendedVisualPresets": [
49
58
  "tactile"
59
+ ],
60
+ "compatibleVisualPresets": [
61
+ "clay"
50
62
  ]
51
63
  },
52
64
  {
@@ -55,7 +67,8 @@
55
67
  "visualCompatibility": "native",
56
68
  "recommendedVisualPresets": [
57
69
  "neumorphism"
58
- ]
70
+ ],
71
+ "compatibleVisualPresets": []
59
72
  },
60
73
  {
61
74
  "id": "retrofuturism",
@@ -63,7 +76,8 @@
63
76
  "visualCompatibility": "native",
64
77
  "recommendedVisualPresets": [
65
78
  "retrofuturism"
66
- ]
79
+ ],
80
+ "compatibleVisualPresets": []
67
81
  },
68
82
  {
69
83
  "id": "brutalism",
@@ -71,7 +85,8 @@
71
85
  "visualCompatibility": "native",
72
86
  "recommendedVisualPresets": [
73
87
  "brutalism"
74
- ]
88
+ ],
89
+ "compatibleVisualPresets": []
75
90
  },
76
91
  {
77
92
  "id": "cyberpunk",
@@ -79,7 +94,8 @@
79
94
  "visualCompatibility": "native",
80
95
  "recommendedVisualPresets": [
81
96
  "cyberpunk"
82
- ]
97
+ ],
98
+ "compatibleVisualPresets": []
83
99
  },
84
100
  {
85
101
  "id": "y2k",
@@ -87,7 +103,8 @@
87
103
  "visualCompatibility": "native",
88
104
  "recommendedVisualPresets": [
89
105
  "y2k"
90
- ]
106
+ ],
107
+ "compatibleVisualPresets": []
91
108
  },
92
109
  {
93
110
  "id": "retro-glass",
@@ -95,31 +112,36 @@
95
112
  "visualCompatibility": "native",
96
113
  "recommendedVisualPresets": [
97
114
  "retro-glass"
98
- ]
115
+ ],
116
+ "compatibleVisualPresets": []
99
117
  },
100
118
  {
101
119
  "id": "f-pattern",
102
120
  "label": "F-pattern",
103
121
  "visualCompatibility": "any",
104
- "recommendedVisualPresets": []
122
+ "recommendedVisualPresets": [],
123
+ "compatibleVisualPresets": []
105
124
  },
106
125
  {
107
126
  "id": "z-pattern",
108
127
  "label": "Z-pattern",
109
128
  "visualCompatibility": "any",
110
- "recommendedVisualPresets": []
129
+ "recommendedVisualPresets": [],
130
+ "compatibleVisualPresets": []
111
131
  },
112
132
  {
113
133
  "id": "split-screen",
114
134
  "label": "Split Screen",
115
135
  "visualCompatibility": "any",
116
- "recommendedVisualPresets": []
136
+ "recommendedVisualPresets": [],
137
+ "compatibleVisualPresets": []
117
138
  },
118
139
  {
119
140
  "id": "mondrian",
120
141
  "label": "Mondrian",
121
142
  "visualCompatibility": "any",
122
- "recommendedVisualPresets": []
143
+ "recommendedVisualPresets": [],
144
+ "compatibleVisualPresets": []
123
145
  },
124
146
  {
125
147
  "id": "synthwave",
@@ -129,19 +151,59 @@
129
151
  "cyberpunk",
130
152
  "retrofuturism"
131
153
  ],
154
+ "compatibleVisualPresets": [],
132
155
  "visualVerification": {
133
156
  "method": "rendered-computed-style",
134
157
  "test": "test/demo-smoke.test.mjs",
135
158
  "computedProperties": {
136
159
  "cyberpunk": {
137
- "boxShadow": "0px 0px 18px"
160
+ "boxShadow": "0px 0px 12px"
138
161
  },
139
162
  "retrofuturism": {
140
- "boxShadow": "0px 10px 30px"
163
+ "boxShadow": "0px 2.88px 6.72px"
141
164
  }
142
165
  },
143
166
  "assertion": "A visible browser contract fixture renders each preset's distinct article box-shadow while data-ly-layout remains synthwave."
144
167
  }
168
+ },
169
+ {
170
+ "id": "technical-blueprint",
171
+ "label": "Technical Blueprint",
172
+ "visualCompatibility": "native",
173
+ "recommendedVisualPresets": [
174
+ "technical-blueprint"
175
+ ],
176
+ "compatibleVisualPresets": []
177
+ },
178
+ {
179
+ "id": "data-terminal",
180
+ "label": "Data Terminal",
181
+ "visualCompatibility": "native",
182
+ "recommendedVisualPresets": [
183
+ "data-terminal"
184
+ ],
185
+ "compatibleVisualPresets": [
186
+ "neo-noir"
187
+ ]
188
+ },
189
+ {
190
+ "id": "industrial-hmi",
191
+ "label": "Industrial HMI",
192
+ "visualCompatibility": "recommended",
193
+ "recommendedVisualPresets": [
194
+ "industrial-utility"
195
+ ],
196
+ "compatibleVisualPresets": []
197
+ },
198
+ {
199
+ "id": "editorial",
200
+ "label": "Editorial",
201
+ "visualCompatibility": "recommended",
202
+ "recommendedVisualPresets": [
203
+ "editorial-luxe",
204
+ "paper-editorial"
205
+ ],
206
+ "compatibleVisualPresets": []
145
207
  }
146
208
  ]
147
209
  }