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,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
+ }
@@ -0,0 +1,270 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /*
4
+ Built-in recipes follow semantic mobile DOM order. Wider arrangements use
5
+ named areas so visual placement never changes keyboard or reading order.
6
+ */
7
+
8
+ @layer ly.recipes {
9
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]),
10
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
11
+ :where(.ly-docs, [data-ly-recipe="docs"]),
12
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]),
13
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]),
14
+ :where(.ly-gallery, [data-ly-recipe="gallery"]),
15
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
16
+ container-name: ly-recipe;
17
+ container-type: inline-size;
18
+ min-inline-size: 0;
19
+ }
20
+
21
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]),
22
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
23
+ :where(.ly-docs, [data-ly-recipe="docs"]),
24
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]),
25
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
26
+ display: grid;
27
+ grid-template-columns: minmax(0, 1fr);
28
+ gap: var(--ly-gap);
29
+ }
30
+
31
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
32
+ min-block-size: 100svh;
33
+ grid-template-areas:
34
+ "header"
35
+ "sidebar"
36
+ "main"
37
+ "aside"
38
+ "footer";
39
+ grid-template-rows: auto auto minmax(0, 1fr) auto auto;
40
+ }
41
+
42
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
43
+ grid-template-areas:
44
+ "header"
45
+ "nav"
46
+ "main"
47
+ "aside"
48
+ "footer";
49
+ }
50
+
51
+ :where(.ly-docs, [data-ly-recipe="docs"]) {
52
+ grid-template-areas:
53
+ "header"
54
+ "nav"
55
+ "main"
56
+ "aside"
57
+ "footer";
58
+ }
59
+
60
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
61
+ grid-template-areas:
62
+ "primary"
63
+ "secondary"
64
+ "actions";
65
+ }
66
+
67
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
68
+ grid-template-areas:
69
+ "content"
70
+ "media"
71
+ "actions";
72
+ align-items: var(--ly-split-hero-align, center);
73
+ }
74
+
75
+ :where(.ly-gallery, [data-ly-recipe="gallery"]),
76
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
77
+ display: grid;
78
+ gap: var(--ly-grid-gap);
79
+ }
80
+
81
+ :where(.ly-gallery, [data-ly-recipe="gallery"]) {
82
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
83
+ }
84
+
85
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
86
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
87
+ }
88
+
89
+ :where(.ly-gallery, [data-ly-recipe="gallery"]) > *,
90
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) > * {
91
+ min-inline-size: 0;
92
+ }
93
+
94
+ :where(.ly-area--header, [data-ly-area="header"]) {
95
+ grid-area: header;
96
+ min-inline-size: 0;
97
+ }
98
+
99
+ :where(.ly-area--nav, [data-ly-area="nav"]) {
100
+ grid-area: nav;
101
+ min-inline-size: 0;
102
+ }
103
+
104
+ :where(.ly-area--main, [data-ly-area="main"]) {
105
+ grid-area: main;
106
+ min-inline-size: 0;
107
+ }
108
+
109
+ :where(.ly-area--aside, [data-ly-area="aside"]) {
110
+ grid-area: aside;
111
+ min-inline-size: 0;
112
+ }
113
+
114
+ :where(.ly-area--footer, [data-ly-area="footer"]) {
115
+ grid-area: footer;
116
+ min-inline-size: 0;
117
+ }
118
+
119
+ :where(.ly-area--content, [data-ly-area="content"]) {
120
+ grid-area: content;
121
+ min-inline-size: 0;
122
+ }
123
+
124
+ :where(.ly-area--media, [data-ly-area="media"]) {
125
+ grid-area: media;
126
+ min-inline-size: 0;
127
+ }
128
+
129
+ :where(.ly-area--actions, [data-ly-area="actions"]) {
130
+ grid-area: actions;
131
+ min-inline-size: 0;
132
+ }
133
+
134
+ :where(.ly-area--primary, [data-ly-area="primary"]) {
135
+ grid-area: primary;
136
+ min-inline-size: 0;
137
+ }
138
+
139
+ :where(.ly-area--secondary, [data-ly-area="secondary"]) {
140
+ grid-area: secondary;
141
+ min-inline-size: 0;
142
+ }
143
+
144
+ .ly-app-header {
145
+ grid-area: header;
146
+ min-inline-size: 0;
147
+ }
148
+
149
+ .ly-app-sidebar {
150
+ grid-area: sidebar;
151
+ min-inline-size: 0;
152
+ }
153
+
154
+ .ly-app-main {
155
+ grid-area: main;
156
+ min-inline-size: 0;
157
+ }
158
+
159
+ .ly-app-aside {
160
+ grid-area: aside;
161
+ min-inline-size: 0;
162
+ }
163
+
164
+ .ly-app-footer {
165
+ grid-area: footer;
166
+ min-inline-size: 0;
167
+ }
168
+
169
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"])
170
+ > :where(.ly-area--nav, [data-ly-area="nav"]) {
171
+ grid-area: sidebar;
172
+ }
173
+
174
+ /*
175
+ A recipe responds to its nearest ancestor container and then becomes the
176
+ containment scope for nested compositions. Standalone roots keep the safe
177
+ mobile template when no ancestor container is present.
178
+ */
179
+ @container (min-width: 48rem) {
180
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
181
+ grid-template-areas:
182
+ "header header"
183
+ "sidebar main"
184
+ "aside main"
185
+ "footer footer";
186
+ grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
187
+ }
188
+
189
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
190
+ grid-template-areas:
191
+ "header header"
192
+ "nav nav"
193
+ "main aside"
194
+ "footer footer";
195
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
196
+ }
197
+
198
+ :where(.ly-docs, [data-ly-recipe="docs"]) {
199
+ grid-template-areas:
200
+ "header header"
201
+ "nav main"
202
+ "nav aside"
203
+ "footer footer";
204
+ grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
205
+ }
206
+
207
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
208
+ grid-template-areas:
209
+ "primary secondary"
210
+ "actions actions";
211
+ grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.7fr) minmax(0, 1fr);
212
+ }
213
+
214
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
215
+ grid-template-areas:
216
+ "content media"
217
+ "actions media";
218
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
219
+ }
220
+
221
+ :where(.ly-gallery, [data-ly-recipe="gallery"]) {
222
+ --ly-gallery-min: 14rem;
223
+ }
224
+
225
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
226
+ --ly-card-grid-min: 18rem;
227
+ }
228
+ }
229
+
230
+ @container (min-width: 64rem) {
231
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
232
+ grid-template-areas:
233
+ "sidebar header header"
234
+ "sidebar main aside"
235
+ "sidebar footer footer";
236
+ grid-template-columns:
237
+ minmax(min(100%, var(--ly-recipe-rail)), auto)
238
+ minmax(0, 1fr)
239
+ minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
240
+ }
241
+
242
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
243
+ :where(.ly-docs, [data-ly-recipe="docs"]) {
244
+ grid-template-areas:
245
+ "nav header header"
246
+ "nav main aside"
247
+ "nav footer footer";
248
+ grid-template-columns:
249
+ minmax(min(100%, var(--ly-recipe-rail)), auto)
250
+ minmax(0, 1fr)
251
+ minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
252
+ }
253
+
254
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
255
+ grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.45fr) minmax(0, 1fr);
256
+ }
257
+
258
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
259
+ grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
260
+ }
261
+
262
+ :where(.ly-gallery, [data-ly-recipe="gallery"]) {
263
+ --ly-gallery-min: 16rem;
264
+ }
265
+
266
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
267
+ --ly-card-grid-min: 20rem;
268
+ }
269
+ }
270
+ }