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,46 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: bauhaus. A left rail anchors an intentionally asymmetric grid. */
4
+
5
+ @layer ly.personalities.bauhaus {
6
+ :where(.ly-root[data-ly-layout="bauhaus"]) {
7
+ --ly-recipe-rail: 14rem;
8
+ --ly-recipe-aside: 18rem;
9
+ --ly-grid-columns: 6;
10
+ --ly-grid-min: 13rem;
11
+ --ly-personality-wrapper-max: 96rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ /* Cap the fallback rail until the wider personality template is eligible. */
19
+ @container ly-personality (min-width: 48rem) {
20
+ :where(.ly-root[data-ly-layout="bauhaus"])
21
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
22
+ grid-template-columns: minmax(min(100%, 14rem), 0.3fr) minmax(0, 1fr);
23
+ }
24
+ }
25
+
26
+ @container ly-personality (min-width: 52rem) {
27
+ :where(.ly-root[data-ly-layout="bauhaus"])
28
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
29
+ grid-template-areas:
30
+ "sidebar header header aside"
31
+ "sidebar main main aside"
32
+ "sidebar footer footer footer";
33
+ grid-template-rows: auto minmax(0, 1fr) auto;
34
+ grid-template-columns:
35
+ minmax(min(100%, 14rem), 0.24fr)
36
+ minmax(0, 0.7fr)
37
+ minmax(0, 1.3fr)
38
+ minmax(min(100%, 18rem), 0.3fr);
39
+ }
40
+
41
+ :where(.ly-root[data-ly-layout="bauhaus"]) .ly-grid > :nth-child(3n + 1) {
42
+ grid-column: span 2;
43
+ grid-row: span 2;
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,43 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: bento. A full-width shell and staggered spans form modular tiles. */
4
+
5
+ @layer ly.personalities.bento {
6
+ :where(.ly-root[data-ly-layout="bento"]) {
7
+ --ly-grid-columns: 6;
8
+ --ly-grid-min: 12rem;
9
+ --ly-card-grid-min: 13rem;
10
+ --ly-personality-wrapper-max: 112rem;
11
+
12
+ container-name: ly-personality;
13
+ container-type: inline-size;
14
+ min-inline-size: 0;
15
+ }
16
+
17
+ @container ly-personality (min-width: 48rem) {
18
+ :where(.ly-root[data-ly-layout="bento"])
19
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
20
+ grid-template-areas:
21
+ "header header header"
22
+ "sidebar main main"
23
+ "aside main main"
24
+ "footer footer footer";
25
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
26
+ grid-template-columns:
27
+ minmax(min(100%, 14rem), 0.3fr)
28
+ minmax(0, 1fr)
29
+ minmax(0, 1fr);
30
+ }
31
+
32
+ :where(.ly-root[data-ly-layout="bento"]) .ly-grid > :nth-child(6n + 1) {
33
+ grid-column: span 2;
34
+ grid-row: span 2;
35
+ }
36
+
37
+ :where(.ly-root[data-ly-layout="bento"])
38
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"])
39
+ > :nth-child(6n + 1) {
40
+ grid-column: span 2;
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,36 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: brutalism. A blunt right rail counters a broad primary plane. */
4
+
5
+ @layer ly.personalities.brutalism {
6
+ :where(.ly-root[data-ly-layout="brutalism"]) {
7
+ --ly-recipe-rail: 18rem;
8
+ --ly-recipe-aside: 16rem;
9
+ --ly-grid-columns: 6;
10
+ --ly-grid-min: 14rem;
11
+ --ly-personality-wrapper-max: 100rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="brutalism"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "header header sidebar"
23
+ "main aside sidebar"
24
+ "footer footer sidebar";
25
+ grid-template-rows: auto minmax(0, 1fr) auto;
26
+ grid-template-columns:
27
+ minmax(0, 1.3fr)
28
+ minmax(min(100%, 16rem), 0.7fr)
29
+ minmax(min(100%, 18rem), 0.34fr);
30
+ }
31
+
32
+ :where(.ly-root[data-ly-layout="brutalism"]) .ly-grid > :nth-child(3n) {
33
+ grid-column: span 2;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: cyberpunk. A narrow command rail fronts a dense three-lane shell. */
4
+
5
+ @layer ly.personalities.cyberpunk {
6
+ :where(.ly-root[data-ly-layout="cyberpunk"]) {
7
+ --ly-recipe-rail: 13rem;
8
+ --ly-recipe-aside: 19rem;
9
+ --ly-grid-columns: 8;
10
+ --ly-grid-min: 12rem;
11
+ --ly-personality-wrapper-max: 112rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 44rem) {
19
+ :where(.ly-root[data-ly-layout="cyberpunk"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "sidebar header aside"
23
+ "sidebar main aside"
24
+ "sidebar footer aside";
25
+ grid-template-rows: auto minmax(0, 1fr) auto;
26
+ grid-template-columns:
27
+ minmax(min(100%, 13rem), 0.2fr)
28
+ minmax(0, 1fr)
29
+ minmax(min(100%, 19rem), 0.32fr);
30
+ }
31
+
32
+ :where(.ly-root[data-ly-layout="cyberpunk"]) .ly-grid > :nth-child(4n + 2) {
33
+ grid-column: span 3;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,48 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: f-pattern. A left rail supports a wide first-reading column. */
4
+
5
+ @layer ly.personalities.f_pattern {
6
+ :where(.ly-root[data-ly-layout="f-pattern"]) {
7
+ --ly-recipe-rail: 16rem;
8
+ --ly-recipe-aside: 18rem;
9
+ --ly-grid-columns: 6;
10
+ --ly-grid-min: 14rem;
11
+ --ly-personality-wrapper-max: 92rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="f-pattern"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
22
+ }
23
+ }
24
+
25
+ @container ly-personality (min-width: 56rem) {
26
+ :where(.ly-root[data-ly-layout="f-pattern"])
27
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
+ grid-template-areas:
29
+ "sidebar header header"
30
+ "sidebar main aside"
31
+ "sidebar footer aside";
32
+ grid-template-rows: auto minmax(0, 1fr) auto;
33
+ grid-template-columns:
34
+ minmax(min(100%, 16rem), 0.26fr)
35
+ minmax(0, 1.35fr)
36
+ minmax(min(100%, 18rem), 0.65fr);
37
+ }
38
+
39
+ :where(.ly-root[data-ly-layout="f-pattern"]) .ly-grid > :nth-child(3n + 1) {
40
+ grid-column: span 2;
41
+ }
42
+
43
+ :where(.ly-root[data-ly-layout="f-pattern"])
44
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
45
+ grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,51 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: maximalist. A full-bleed four-track mosaic favors dramatic spans. */
4
+
5
+ @layer ly.personalities.maximalist {
6
+ :where(.ly-root[data-ly-layout="maximalist"]) {
7
+ --ly-grid-columns: 12;
8
+ --ly-grid-min: 10rem;
9
+ --ly-personality-wrapper-max: 100%;
10
+ --ly-card-grid-min: 12rem;
11
+
12
+ container-name: ly-personality;
13
+ container-type: inline-size;
14
+ min-inline-size: 0;
15
+ }
16
+
17
+ @container ly-personality (min-width: 48rem) {
18
+ :where(.ly-root[data-ly-layout="maximalist"])
19
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
20
+ grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
21
+ }
22
+ }
23
+
24
+ @container ly-personality (min-width: 56rem) {
25
+ :where(.ly-root[data-ly-layout="maximalist"])
26
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
27
+ grid-template-areas:
28
+ "header header header header"
29
+ "main main sidebar aside"
30
+ "main main footer footer";
31
+ grid-template-rows: auto minmax(0, 1fr) auto;
32
+ grid-template-columns:
33
+ minmax(0, 1.4fr)
34
+ minmax(0, 0.6fr)
35
+ minmax(min(100%, 15rem), 0.32fr)
36
+ minmax(min(100%, 18rem), 0.38fr);
37
+ }
38
+
39
+ :where(.ly-root[data-ly-layout="maximalist"]) .ly-grid > :nth-child(7n + 1) {
40
+ grid-column: span 3;
41
+ grid-row: span 2;
42
+ }
43
+
44
+ :where(.ly-root[data-ly-layout="maximalist"])
45
+ :where(.ly-gallery, [data-ly-recipe="gallery"])
46
+ > :nth-child(5n + 1) {
47
+ grid-column: span 2;
48
+ grid-row: span 2;
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,37 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: minimal-saas. A measured left rail keeps work areas predictable. */
4
+
5
+ @layer ly.personalities.minimal_saas {
6
+ :where(.ly-root[data-ly-layout="minimal-saas"]) {
7
+ --ly-recipe-rail: 15rem;
8
+ --ly-recipe-aside: 16rem;
9
+ --ly-grid-columns: 4;
10
+ --ly-grid-min: 16rem;
11
+ --ly-personality-wrapper-max: 88rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ /* Named areas rearrange the shell without changing its mobile DOM or focus order. */
19
+ @container ly-personality (min-width: 48rem) {
20
+ :where(.ly-root[data-ly-layout="minimal-saas"])
21
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
22
+ grid-template-areas:
23
+ "sidebar header header"
24
+ "sidebar main aside"
25
+ "sidebar footer footer";
26
+ grid-template-rows: auto minmax(0, 1fr) auto;
27
+ grid-template-columns:
28
+ minmax(min(100%, 15rem), 0.24fr)
29
+ minmax(0, 1fr)
30
+ minmax(min(100%, 16rem), 0.28fr);
31
+ }
32
+
33
+ :where(.ly-root[data-ly-layout="minimal-saas"]) .ly-grid > :nth-child(4n + 1) {
34
+ grid-column: span 2;
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,44 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: mondrian. Unequal zones and spanning blocks create a strict mosaic. */
4
+
5
+ @layer ly.personalities.mondrian {
6
+ :where(.ly-root[data-ly-layout="mondrian"]) {
7
+ --ly-recipe-rail: 13rem;
8
+ --ly-recipe-aside: 18rem;
9
+ --ly-grid-columns: 10;
10
+ --ly-grid-min: 11rem;
11
+ --ly-personality-wrapper-max: 112rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="mondrian"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
22
+ }
23
+ }
24
+
25
+ @container ly-personality (min-width: 52rem) {
26
+ :where(.ly-root[data-ly-layout="mondrian"])
27
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
+ grid-template-areas:
29
+ "sidebar header header"
30
+ "sidebar main aside"
31
+ "footer footer aside";
32
+ grid-template-rows: auto minmax(0, 1fr) auto;
33
+ grid-template-columns:
34
+ minmax(min(100%, 13rem), 0.22fr)
35
+ minmax(0, 1.45fr)
36
+ minmax(min(100%, 18rem), 0.55fr);
37
+ }
38
+
39
+ :where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
40
+ grid-column: span 2;
41
+ grid-row: span 2;
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,46 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: neumorphism. A calm right rail preserves a compact workspace. */
4
+
5
+ @layer ly.personalities.neumorphism {
6
+ :where(.ly-root[data-ly-layout="neumorphism"]) {
7
+ --ly-recipe-rail: 17rem;
8
+ --ly-recipe-aside: 19rem;
9
+ --ly-grid-columns: 4;
10
+ --ly-grid-min: 17rem;
11
+ --ly-personality-wrapper-max: 84rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="neumorphism"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
22
+ }
23
+ }
24
+
25
+ @container ly-personality (min-width: 52rem) {
26
+ :where(.ly-root[data-ly-layout="neumorphism"])
27
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
+ grid-template-areas:
29
+ "header sidebar"
30
+ "main sidebar"
31
+ "aside sidebar"
32
+ "footer sidebar";
33
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
34
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.3fr);
35
+ }
36
+
37
+ :where(.ly-root[data-ly-layout="neumorphism"]) .ly-grid > :nth-child(4n + 1) {
38
+ grid-column: span 2;
39
+ }
40
+
41
+ :where(.ly-root[data-ly-layout="neumorphism"])
42
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
43
+ grid-template-columns: minmax(0, 0.58fr) minmax(min(100%, 19rem), 0.42fr);
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,44 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: retro-glass. A stepped right rail floats beside a wide stage. */
4
+
5
+ @layer ly.personalities.retro_glass {
6
+ :where(.ly-root[data-ly-layout="retro-glass"]) {
7
+ --ly-recipe-rail: 18rem;
8
+ --ly-recipe-aside: 20rem;
9
+ --ly-grid-columns: 8;
10
+ --ly-grid-min: 15rem;
11
+ --ly-personality-wrapper-max: 104rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="retro-glass"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
22
+ }
23
+ }
24
+
25
+ @container ly-personality (min-width: 56rem) {
26
+ :where(.ly-root[data-ly-layout="retro-glass"])
27
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
+ grid-template-areas:
29
+ "header header sidebar"
30
+ "main main sidebar"
31
+ "aside footer footer";
32
+ grid-template-rows: auto minmax(0, 1fr) auto;
33
+ grid-template-columns:
34
+ minmax(0, 1.25fr)
35
+ minmax(0, 0.75fr)
36
+ minmax(min(100%, 18rem), 0.32fr);
37
+ }
38
+
39
+ :where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
40
+ grid-column: span 2;
41
+ grid-row: span 2;
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,36 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: retrofuturism. Twin rails frame a focused central work zone. */
4
+
5
+ @layer ly.personalities.retrofuturism {
6
+ :where(.ly-root[data-ly-layout="retrofuturism"]) {
7
+ --ly-recipe-rail: 14rem;
8
+ --ly-recipe-aside: 17rem;
9
+ --ly-grid-columns: 6;
10
+ --ly-grid-min: 14rem;
11
+ --ly-personality-wrapper-max: 106rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="retrofuturism"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "sidebar header aside"
23
+ "sidebar main aside"
24
+ "sidebar footer aside";
25
+ grid-template-rows: auto minmax(0, 1fr) auto;
26
+ grid-template-columns:
27
+ minmax(min(100%, 14rem), 0.24fr)
28
+ minmax(0, 1fr)
29
+ minmax(min(100%, 17rem), 0.3fr);
30
+ }
31
+
32
+ :where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
33
+ grid-column: span 2;
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,41 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: split-screen. Equal tracks keep two primary experiences in balance. */
4
+
5
+ @layer ly.personalities.split_screen {
6
+ :where(.ly-root[data-ly-layout="split-screen"]) {
7
+ --ly-grid-columns: 2;
8
+ --ly-grid-min: 20rem;
9
+ --ly-personality-wrapper-max: 100%;
10
+ --ly-split-primary: 1fr;
11
+ --ly-split-secondary: 1fr;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="split-screen"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "header header"
23
+ "main sidebar"
24
+ "aside sidebar"
25
+ "footer footer";
26
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
27
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
28
+ }
29
+
30
+ :where(.ly-root[data-ly-layout="split-screen"])
31
+ :where(
32
+ .ly-split,
33
+ .ly-split-hero,
34
+ [data-ly-recipe="split-hero"],
35
+ .ly-list-detail,
36
+ [data-ly-recipe="list-detail"]
37
+ ) {
38
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,48 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: synthwave. A cinematic center stage sits between support zones. */
4
+
5
+ @layer ly.personalities.synthwave {
6
+ :where(.ly-root[data-ly-layout="synthwave"]) {
7
+ --ly-recipe-rail: 16rem;
8
+ --ly-recipe-aside: 20rem;
9
+ --ly-grid-columns: 12;
10
+ --ly-grid-min: 14rem;
11
+ --ly-reel-item-max: 34rem;
12
+ --ly-personality-wrapper-max: 112rem;
13
+
14
+ container-name: ly-personality;
15
+ container-type: inline-size;
16
+ min-inline-size: 0;
17
+ }
18
+
19
+ @container ly-personality (min-width: 48rem) {
20
+ :where(.ly-root[data-ly-layout="synthwave"])
21
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
22
+ grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
23
+ }
24
+ }
25
+
26
+ @container ly-personality (min-width: 64rem) {
27
+ :where(.ly-root[data-ly-layout="synthwave"])
28
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
29
+ grid-template-areas:
30
+ "header header header"
31
+ "sidebar main aside"
32
+ "footer footer footer";
33
+ grid-template-rows: auto minmax(0, 1fr) auto;
34
+ grid-template-columns:
35
+ minmax(min(100%, 16rem), 0.28fr)
36
+ minmax(0, 1fr)
37
+ minmax(min(100%, 20rem), 0.34fr);
38
+ }
39
+
40
+ :where(.ly-root[data-ly-layout="synthwave"]) .ly-grid > :nth-child(4n + 1) {
41
+ grid-column: span 3;
42
+ }
43
+
44
+ :where(.ly-root[data-ly-layout="synthwave"]) .ly-reel {
45
+ grid-auto-columns: minmax(min(100%, 20rem), var(--ly-reel-item-max));
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,39 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: tactile. A compact left rail leaves a broad, steady work lane. */
4
+
5
+ @layer ly.personalities.tactile {
6
+ :where(.ly-root[data-ly-layout="tactile"]) {
7
+ --ly-recipe-rail: 17rem;
8
+ --ly-recipe-aside: 20rem;
9
+ --ly-grid-columns: 5;
10
+ --ly-grid-min: 15rem;
11
+ --ly-personality-wrapper-max: 82rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="tactile"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "sidebar header"
23
+ "sidebar main"
24
+ "sidebar aside"
25
+ "sidebar footer";
26
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
27
+ grid-template-columns: minmax(min(100%, 17rem), 0.28fr) minmax(0, 1fr);
28
+ }
29
+
30
+ :where(.ly-root[data-ly-layout="tactile"]) .ly-grid > :nth-child(5n + 2) {
31
+ grid-column: span 2;
32
+ }
33
+
34
+ :where(.ly-root[data-ly-layout="tactile"])
35
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
36
+ grid-template-columns: minmax(min(100%, 20rem), 0.42fr) minmax(0, 0.58fr);
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,36 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: y2k. A tall right rail frames a reversed supporting workspace. */
4
+
5
+ @layer ly.personalities.y2k {
6
+ :where(.ly-root[data-ly-layout="y2k"]) {
7
+ --ly-recipe-rail: 16rem;
8
+ --ly-recipe-aside: 18rem;
9
+ --ly-grid-columns: 5;
10
+ --ly-grid-min: 13rem;
11
+ --ly-personality-wrapper-max: 90rem;
12
+
13
+ container-name: ly-personality;
14
+ container-type: inline-size;
15
+ min-inline-size: 0;
16
+ }
17
+
18
+ @container ly-personality (min-width: 48rem) {
19
+ :where(.ly-root[data-ly-layout="y2k"])
20
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
+ grid-template-areas:
22
+ "header header sidebar"
23
+ "aside main sidebar"
24
+ "footer footer sidebar";
25
+ grid-template-rows: auto minmax(0, 1fr) auto;
26
+ grid-template-columns:
27
+ minmax(min(100%, 18rem), 0.34fr)
28
+ minmax(0, 1fr)
29
+ minmax(min(100%, 16rem), 0.28fr);
30
+ }
31
+
32
+ :where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
33
+ grid-column: span 3;
34
+ }
35
+ }
36
+ }