layout-style-css 1.0.0 → 1.1.2
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.
- package/CHANGELOG.md +53 -0
- package/CONTRIBUTING.md +50 -0
- package/README.md +205 -16
- package/SECURITY.md +45 -0
- package/demo/assets/social-card.png +0 -0
- package/demo/index.html +358 -82
- package/dist/layout-all.css +5 -0
- package/dist/layout-base.css +67 -0
- package/dist/layout-style-css.css +571 -0
- package/dist/layout-style-css.min.css +1 -1
- package/dist/layout-style-f-pattern.css +76 -0
- package/dist/layout-style-mondrian.css +77 -0
- package/dist/layout-style-split-screen.css +62 -0
- package/dist/layout-style-synthwave.css +88 -0
- package/dist/layout-style-z-pattern.css +76 -0
- package/dist/layout-ui-style-kit-bridge.css +115 -0
- package/docs/wiki/Contributing.md +30 -0
- package/docs/wiki/Demo-And-GitHub-Pages.md +39 -0
- package/docs/wiki/Getting-Started.md +68 -0
- package/docs/wiki/Home.md +48 -0
- package/docs/wiki/Installation-And-CDN.md +58 -0
- package/docs/wiki/Layout-Primitives.md +57 -0
- package/docs/wiki/Layout-Recipes.md +80 -0
- package/docs/wiki/Layout-Styles.md +43 -0
- package/docs/wiki/Release-And-Publishing.md +69 -0
- package/docs/wiki/Security-And-Support.md +34 -0
- package/docs/wiki/UI-Style-Kit-Compatibility.md +54 -0
- package/docs/wiki/_Sidebar.md +14 -0
- package/package.json +12 -2
- package/styles/layout-base.css +67 -0
- package/styles/layout-style-f-pattern.css +76 -0
- package/styles/layout-style-mondrian.css +77 -0
- package/styles/layout-style-split-screen.css +62 -0
- package/styles/layout-style-synthwave.css +88 -0
- package/styles/layout-style-z-pattern.css +76 -0
- package/styles/layout-ui-style-kit-bridge.css +115 -0
- package/demo/assets/social-card.svg +0 -17
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Layout style: z-pattern.
|
|
3
|
+
Header-first scan path that moves from broad lead content to a right-side
|
|
4
|
+
support rail. Visual identity remains owned by ui-style-kit-css.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@layer ly.styles.z_pattern {
|
|
8
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) {
|
|
9
|
+
--ly-container-max: 100rem;
|
|
10
|
+
--ly-page-padding-inline: clamp(1rem, 3.4vw, 3rem);
|
|
11
|
+
--ly-section-padding-block: clamp(2rem, 5.5vw, 5rem);
|
|
12
|
+
--ly-sidebar-width: clamp(14rem, 20vw, 21rem);
|
|
13
|
+
--ly-grid-min: 15rem;
|
|
14
|
+
--ly-gap: clamp(1rem, 2.4vw, 2rem);
|
|
15
|
+
--ly-grid-gap: var(--ly-gap);
|
|
16
|
+
--ly-stack-gap: clamp(0.875rem, 1.9vw, 1.5rem);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-app-main {
|
|
20
|
+
padding-block: clamp(1rem, 2.6vw, 2.5rem);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-container,
|
|
24
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-wrapper {
|
|
25
|
+
width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-section {
|
|
29
|
+
padding-block: var(--ly-section-padding-block);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-grid--auto {
|
|
33
|
+
grid-auto-rows: minmax(8rem, auto);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@media (min-width: 48rem) {
|
|
37
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-app-shell {
|
|
38
|
+
grid-template-areas:
|
|
39
|
+
"header header"
|
|
40
|
+
"main sidebar";
|
|
41
|
+
grid-template-columns: minmax(0, 1.18fr) minmax(min(100%, 15rem), 0.42fr);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-app-sidebar {
|
|
45
|
+
display: block;
|
|
46
|
+
position: sticky;
|
|
47
|
+
top: var(--ly-space-4);
|
|
48
|
+
height: calc(100svh - (var(--ly-space-4) * 2));
|
|
49
|
+
overflow: auto;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-grid--auto > :nth-child(4n + 2) {
|
|
53
|
+
grid-column: span 2;
|
|
54
|
+
min-height: 12rem;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-sidebar-layout {
|
|
58
|
+
grid-template-columns: minmax(0, 1fr) minmax(min(100%, 15rem), 0.36fr);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-split {
|
|
62
|
+
grid-template-columns: minmax(0, 0.92fr) minmax(min(100%, 19rem), 1.08fr);
|
|
63
|
+
align-items: end;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-panes--two {
|
|
67
|
+
grid-template-columns: minmax(0, 1.25fr) minmax(min(100%, 17rem), 0.75fr);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@media (min-width: 80rem) {
|
|
72
|
+
:where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-panes--three {
|
|
73
|
+
grid-template-columns: minmax(0, 1.1fr) minmax(min(100%, 15rem), 0.55fr) minmax(min(100%, 14rem), 0.35fr);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -7,6 +7,16 @@
|
|
|
7
7
|
@layer ly.bridge {
|
|
8
8
|
:where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
|
|
9
9
|
--ly-ui-style-kit-bridge: 1;
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
Normalize UI kit root background geometry without redefining its paint.
|
|
13
|
+
Patterned theme layers should fill the viewport once instead of tiling.
|
|
14
|
+
*/
|
|
15
|
+
min-block-size: 100svh;
|
|
16
|
+
background-attachment: fixed;
|
|
17
|
+
background-position: center;
|
|
18
|
+
background-repeat: no-repeat;
|
|
19
|
+
background-size: 100% 100%;
|
|
10
20
|
}
|
|
11
21
|
|
|
12
22
|
:where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
|
|
@@ -52,4 +62,109 @@
|
|
|
52
62
|
:where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
|
|
53
63
|
--ly-ui-style-kit-bridge-style: retro-glass;
|
|
54
64
|
}
|
|
65
|
+
|
|
66
|
+
:where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
|
|
67
|
+
/* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
|
|
68
|
+
width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
|
|
69
|
+
margin-inline: auto;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
|
|
73
|
+
padding-block: var(--ly-section-padding-block);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
|
|
77
|
+
display: flex;
|
|
78
|
+
flex-direction: column;
|
|
79
|
+
gap: var(--ly-stack-gap);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
:where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-wrap: wrap;
|
|
85
|
+
align-items: center;
|
|
86
|
+
gap: var(--ly-cluster-gap);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
|
|
90
|
+
display: grid;
|
|
91
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
|
|
92
|
+
gap: var(--ly-grid-gap);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
|
|
96
|
+
display: grid;
|
|
97
|
+
grid-template-columns: 1fr;
|
|
98
|
+
gap: var(--ly-gap);
|
|
99
|
+
align-items: var(--ly-split-align, center);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
:where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
|
|
103
|
+
min-width: 0;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
:where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex-wrap: wrap;
|
|
109
|
+
align-items: center;
|
|
110
|
+
gap: var(--ly-cluster-gap);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
:where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) > * {
|
|
114
|
+
flex: 0 1 auto;
|
|
115
|
+
min-width: min(100%, var(--ly-button-min, 8rem));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
:where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) {
|
|
119
|
+
display: grid;
|
|
120
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
|
|
121
|
+
gap: var(--ly-grid-gap);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
:where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) > * {
|
|
125
|
+
min-width: 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
:where(.saas-card-sm, .bento-card-sm, .max-card-sm, .bau-card-sm, .tactile-card-sm, .neo-card-sm, .retro-card-sm, .brutal-card-sm, .cyber-card-sm, .y2k-card-sm, .rg-card-sm) {
|
|
129
|
+
min-block-size: var(--ly-card-size-sm);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:where(.saas-card-md, .bento-card-md, .max-card-md, .bau-card-md, .tactile-card-md, .neo-card-md, .retro-card-md, .brutal-card-md, .cyber-card-md, .y2k-card-md, .rg-card-md) {
|
|
133
|
+
min-block-size: var(--ly-card-size-md);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
:where(.saas-card-lg, .bento-card-lg, .max-card-lg, .bau-card-lg, .tactile-card-lg, .neo-card-lg, .retro-card-lg, .brutal-card-lg, .cyber-card-lg, .y2k-card-lg, .rg-card-lg) {
|
|
137
|
+
min-block-size: var(--ly-card-size-lg);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
:where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
|
|
141
|
+
display: grid;
|
|
142
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
|
|
143
|
+
gap: var(--ly-grid-gap);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
|
|
147
|
+
min-width: 0;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
:where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
|
|
151
|
+
display: grid;
|
|
152
|
+
grid-auto-flow: column;
|
|
153
|
+
grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
|
|
154
|
+
gap: var(--ly-grid-gap);
|
|
155
|
+
overflow-x: auto;
|
|
156
|
+
overscroll-behavior-inline: contain;
|
|
157
|
+
scroll-snap-type: x proximity;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
|
|
161
|
+
min-width: 0;
|
|
162
|
+
scroll-snap-align: start;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@media (min-width: 48rem) {
|
|
166
|
+
:where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
|
|
167
|
+
grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
55
170
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
|
|
2
|
-
<title id="title">layout-style-css social card</title>
|
|
3
|
-
<desc id="desc">A shell-first CSS layout card showing independent UI and layout tracks.</desc>
|
|
4
|
-
<rect width="1200" height="630" fill="#111827"/>
|
|
5
|
-
<rect x="72" y="72" width="210" height="486" rx="36" fill="#7dd3fc"/>
|
|
6
|
-
<rect x="330" y="72" width="798" height="180" rx="36" fill="#fbbf24"/>
|
|
7
|
-
<rect x="330" y="306" width="360" height="252" rx="36" fill="#f472b6"/>
|
|
8
|
-
<rect x="750" y="306" width="378" height="252" rx="36" fill="#a7f3d0"/>
|
|
9
|
-
<text x="116" y="154" fill="#111827" font-family="Arial, sans-serif" font-size="38" font-weight="700">Layout</text>
|
|
10
|
-
<text x="116" y="204" fill="#111827" font-family="Arial, sans-serif" font-size="38" font-weight="700">Style</text>
|
|
11
|
-
<text x="116" y="254" fill="#111827" font-family="Arial, sans-serif" font-size="38" font-weight="700">Library</text>
|
|
12
|
-
<text x="378" y="162" fill="#111827" font-family="Arial, sans-serif" font-size="56" font-weight="700">Shells without visual ownership</text>
|
|
13
|
-
<text x="378" y="414" fill="#111827" font-family="Arial, sans-serif" font-size="34">UI Style Kit controls</text>
|
|
14
|
-
<text x="378" y="462" fill="#111827" font-family="Arial, sans-serif" font-size="34">color, type, borders</text>
|
|
15
|
-
<text x="798" y="414" fill="#111827" font-family="Arial, sans-serif" font-size="34">Layout Library controls</text>
|
|
16
|
-
<text x="798" y="462" fill="#111827" font-family="Arial, sans-serif" font-size="34">size, shape, position</text>
|
|
17
|
-
</svg>
|