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,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
+ }
@@ -0,0 +1,49 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Layout style: z-pattern. A right rail closes a diagonal reading progression. */
4
+
5
+ @layer ly.personalities.z_pattern {
6
+ :where(.ly-root[data-ly-layout="z-pattern"]) {
7
+ --ly-recipe-rail: 17rem;
8
+ --ly-recipe-aside: 19rem;
9
+ --ly-grid-columns: 8;
10
+ --ly-grid-min: 14rem;
11
+ --ly-personality-wrapper-max: 108rem;
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="z-pattern"])
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: 60rem) {
26
+ :where(.ly-root[data-ly-layout="z-pattern"])
27
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
+ grid-template-areas:
29
+ "header header sidebar"
30
+ "main aside sidebar"
31
+ "footer aside sidebar";
32
+ grid-template-rows: auto minmax(0, 1fr) auto;
33
+ grid-template-columns:
34
+ minmax(0, 1.45fr)
35
+ minmax(min(100%, 19rem), 0.55fr)
36
+ minmax(min(100%, 17rem), 0.3fr);
37
+ }
38
+
39
+ :where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
40
+ grid-column: span 2;
41
+ align-self: end;
42
+ }
43
+
44
+ :where(.ly-root[data-ly-layout="z-pattern"])
45
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
46
+ grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,18 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ @import url("./personalities/minimal-saas.css");
4
+ @import url("./personalities/bento.css");
5
+ @import url("./personalities/maximalist.css");
6
+ @import url("./personalities/bauhaus.css");
7
+ @import url("./personalities/tactile.css");
8
+ @import url("./personalities/neumorphism.css");
9
+ @import url("./personalities/retrofuturism.css");
10
+ @import url("./personalities/brutalism.css");
11
+ @import url("./personalities/cyberpunk.css");
12
+ @import url("./personalities/y2k.css");
13
+ @import url("./personalities/retro-glass.css");
14
+ @import url("./personalities/f-pattern.css");
15
+ @import url("./personalities/z-pattern.css");
16
+ @import url("./personalities/split-screen.css");
17
+ @import url("./personalities/mondrian.css");
18
+ @import url("./personalities/synthwave.css");
@@ -0,0 +1,219 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /* Reusable composition primitives own flow and sizing only. */
4
+
5
+ @layer ly.primitives {
6
+ .ly-page {
7
+ min-block-size: 100svh;
8
+ }
9
+
10
+ .ly-header,
11
+ .ly-footer,
12
+ .ly-main,
13
+ .ly-section,
14
+ .ly-surface {
15
+ min-inline-size: 0;
16
+ min-block-size: 0;
17
+ }
18
+
19
+ .ly-header {
20
+ min-block-size: var(--ly-header-height);
21
+ }
22
+
23
+ .ly-header--sticky {
24
+ position: sticky;
25
+ inset-block-start: 0;
26
+ z-index: var(--ly-z-header);
27
+ }
28
+
29
+ .ly-section {
30
+ padding-block: var(--ly-section-padding-block);
31
+ }
32
+
33
+ .ly-section--compact {
34
+ --ly-section-padding-block: var(--ly-space-7);
35
+ }
36
+
37
+ .ly-section--flush {
38
+ --ly-section-padding-block: 0;
39
+ }
40
+
41
+ .ly-readable {
42
+ max-inline-size: var(--ly-wrapper-prose);
43
+ }
44
+
45
+ .ly-stack {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: var(--ly-stack-gap);
49
+ }
50
+
51
+ .ly-cluster {
52
+ display: flex;
53
+ flex-wrap: wrap;
54
+ align-items: center;
55
+ gap: var(--ly-cluster-gap);
56
+ }
57
+
58
+ .ly-center {
59
+ inline-size: min(100%, var(--ly-center-max, var(--ly-wrapper-content)));
60
+ margin-inline: auto;
61
+ }
62
+
63
+ .ly-cover {
64
+ display: flex;
65
+ flex-direction: column;
66
+ min-block-size: var(--ly-cover-min);
67
+ padding-block: var(--ly-cover-padding, var(--ly-space-5));
68
+ }
69
+
70
+ .ly-cover > :where(.ly-cover__center, [data-ly-cover-center]) {
71
+ margin-block: auto;
72
+ }
73
+
74
+ .ly-switcher {
75
+ display: flex;
76
+ flex-wrap: wrap;
77
+ gap: var(--ly-gap);
78
+ }
79
+
80
+ .ly-switcher > * {
81
+ flex-basis: calc((var(--ly-switcher-threshold) - 100%) * 999);
82
+ flex-grow: 1;
83
+ min-inline-size: 0;
84
+ }
85
+
86
+ .ly-sidebar {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ gap: var(--ly-gap);
90
+ }
91
+
92
+ .ly-sidebar > :where(.ly-sidebar__side, [data-ly-sidebar="side"]) {
93
+ flex-basis: var(--ly-sidebar-size);
94
+ flex-grow: 1;
95
+ }
96
+
97
+ .ly-sidebar > :where(.ly-sidebar__content, [data-ly-sidebar="content"]) {
98
+ flex-basis: 0;
99
+ flex-grow: 999;
100
+ min-inline-size: min(100%, var(--ly-sidebar-content-min));
101
+ }
102
+
103
+ .ly-grid {
104
+ display: grid;
105
+ grid-template-columns: repeat(var(--ly-grid-columns), minmax(0, 1fr));
106
+ gap: var(--ly-grid-gap);
107
+ }
108
+
109
+ .ly-grid--auto {
110
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
111
+ }
112
+
113
+ .ly-grid > *,
114
+ .ly-split > *,
115
+ .ly-panes > *,
116
+ .ly-media > * {
117
+ min-inline-size: 0;
118
+ }
119
+
120
+ .ly-split {
121
+ display: grid;
122
+ grid-template-columns: minmax(0, 1fr);
123
+ gap: var(--ly-gap);
124
+ align-items: var(--ly-split-align, center);
125
+ }
126
+
127
+ .ly-panes {
128
+ display: grid;
129
+ grid-template-columns: minmax(0, 1fr);
130
+ gap: var(--ly-gap);
131
+ }
132
+
133
+ .ly-media {
134
+ display: grid;
135
+ grid-template-areas:
136
+ "media"
137
+ "content"
138
+ "actions";
139
+ grid-template-columns: minmax(0, 1fr);
140
+ gap: var(--ly-gap);
141
+ align-items: var(--ly-media-align, start);
142
+ }
143
+
144
+ .ly-media > :where(.ly-media__asset, [data-ly-media="asset"]) {
145
+ grid-area: media;
146
+ }
147
+
148
+ .ly-media > :where(.ly-media__content, [data-ly-media="content"]) {
149
+ grid-area: content;
150
+ }
151
+
152
+ .ly-media > :where(.ly-media__actions, [data-ly-media="actions"]) {
153
+ grid-area: actions;
154
+ }
155
+
156
+ .ly-reel {
157
+ display: grid;
158
+ grid-auto-flow: column;
159
+ grid-auto-columns: minmax(min(100%, var(--ly-reel-item-min)), var(--ly-reel-item-max));
160
+ gap: var(--ly-grid-gap);
161
+ overflow-x: auto;
162
+ overflow-inline: auto;
163
+ overscroll-behavior-inline: contain;
164
+ scroll-snap-type: inline proximity;
165
+ }
166
+
167
+ .ly-reel > * {
168
+ min-inline-size: 0;
169
+ scroll-snap-align: start;
170
+ }
171
+
172
+ .ly-frame {
173
+ aspect-ratio: var(--ly-frame-ratio);
174
+ overflow: hidden;
175
+ }
176
+
177
+ .ly-frame > * {
178
+ inline-size: 100%;
179
+ block-size: 100%;
180
+ object-fit: cover;
181
+ }
182
+
183
+ .ly-scroll {
184
+ min-block-size: 0;
185
+ max-block-size: var(--ly-scroll-max);
186
+ overflow: auto;
187
+ overscroll-behavior: contain;
188
+ }
189
+
190
+ /* Unsupported container-query browsers retain this safe DOM-order stack. */
191
+ }
192
+
193
+ @layer ly.primitives {
194
+ @container (min-width: 48rem) {
195
+ .ly-split {
196
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
197
+ }
198
+
199
+ .ly-panes--2 {
200
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-pane-size)), 0.7fr);
201
+ }
202
+
203
+ .ly-media {
204
+ grid-template-areas:
205
+ "media content"
206
+ "media actions";
207
+ grid-template-columns: minmax(min(100%, var(--ly-media-size)), auto) minmax(0, 1fr);
208
+ }
209
+ }
210
+
211
+ @container (min-width: 64rem) {
212
+ .ly-panes--3 {
213
+ grid-template-columns:
214
+ minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr)
215
+ minmax(0, 1fr)
216
+ minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr);
217
+ }
218
+ }
219
+ }