layout-style-css 2.0.0 → 2.1.1

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 (62) hide show
  1. package/CHANGELOG.md +79 -50
  2. package/CONTRIBUTING.md +43 -43
  3. package/LICENSE +21 -21
  4. package/README.md +19 -14
  5. package/SECURITY.md +39 -39
  6. package/demo/assets/apple-touch-icon.svg +7 -7
  7. package/demo/assets/favicon.svg +7 -7
  8. package/demo/browserconfig.xml +9 -9
  9. package/demo/demo.js +128 -43
  10. package/demo/index.html +20 -18
  11. package/demo/robots.txt +4 -4
  12. package/demo/site.webmanifest +23 -23
  13. package/demo/sitemap.xml +9 -9
  14. package/dist/integrations/ui-style-kit.css +162 -162
  15. package/dist/layout-style-css.css +147 -104
  16. package/dist/layout-style-css.min.css +1 -1
  17. package/dist/legacy.css +137 -102
  18. package/dist/personalities/bauhaus.css +10 -7
  19. package/dist/personalities/bento.css +15 -12
  20. package/dist/personalities/brutalism.css +8 -5
  21. package/dist/personalities/cyberpunk.css +8 -5
  22. package/dist/personalities/f-pattern.css +14 -11
  23. package/dist/personalities/maximalist.css +17 -14
  24. package/dist/personalities/minimal-saas.css +8 -6
  25. package/dist/personalities/mondrian.css +10 -7
  26. package/dist/personalities/neumorphism.css +2 -2
  27. package/dist/personalities/retro-glass.css +10 -7
  28. package/dist/personalities/retrofuturism.css +8 -5
  29. package/dist/personalities/split-screen.css +1 -1
  30. package/dist/personalities/synthwave.css +2 -2
  31. package/dist/personalities/tactile.css +1 -1
  32. package/dist/personalities/y2k.css +8 -5
  33. package/dist/personalities/z-pattern.css +15 -12
  34. package/dist/recipes.css +10 -2
  35. package/docs/wiki/Demo-And-GitHub-Pages.md +1 -1
  36. package/docs/wiki/Getting-Started.md +1 -1
  37. package/docs/wiki/Home.md +4 -4
  38. package/docs/wiki/Installation-And-CDN.md +8 -9
  39. package/docs/wiki/Layout-Recipes.md +1 -1
  40. package/docs/wiki/Layout-Styles.md +1 -1
  41. package/docs/wiki/Migrating-To-2.0.md +7 -7
  42. package/docs/wiki/Release-And-Publishing.md +10 -8
  43. package/docs/wiki/UI-Style-Kit-Compatibility.md +8 -9
  44. package/package.json +78 -78
  45. package/styles/integrations/ui-style-kit.css +162 -162
  46. package/styles/personalities/bauhaus.css +10 -7
  47. package/styles/personalities/bento.css +15 -12
  48. package/styles/personalities/brutalism.css +8 -5
  49. package/styles/personalities/cyberpunk.css +8 -5
  50. package/styles/personalities/f-pattern.css +14 -11
  51. package/styles/personalities/maximalist.css +17 -14
  52. package/styles/personalities/minimal-saas.css +8 -6
  53. package/styles/personalities/mondrian.css +10 -7
  54. package/styles/personalities/neumorphism.css +2 -2
  55. package/styles/personalities/retro-glass.css +10 -7
  56. package/styles/personalities/retrofuturism.css +8 -5
  57. package/styles/personalities/split-screen.css +1 -1
  58. package/styles/personalities/synthwave.css +2 -2
  59. package/styles/personalities/tactile.css +1 -1
  60. package/styles/personalities/y2k.css +8 -5
  61. package/styles/personalities/z-pattern.css +15 -12
  62. package/styles/recipes.css +10 -2
@@ -1,70 +1,70 @@
1
1
  @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
2
 
3
3
  /*
4
- Compatibility bridge for ui-style-kit-css.
5
- This bridge intentionally does not map color, type, border, or shadow tokens.
4
+ Compatibility bridge for ui-style-kit-css.
5
+ This bridge intentionally does not map color, type, border, or shadow tokens.
6
6
  ui-style-kit-css owns those visuals; layout-style-css owns structure.
7
- */
8
-
7
+ */
8
+
9
9
  @layer ly.integrations.ui_style_kit {
10
- :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
11
- --ly-ui-style-kit-bridge: 1;
12
-
13
- /*
14
- Normalize UI kit root background geometry without redefining its paint.
15
- Patterned theme layers should fill the viewport once instead of tiling.
16
- */
17
- min-block-size: 100svh;
18
- background-attachment: fixed;
19
- background-position: center;
20
- background-repeat: no-repeat;
21
- background-size: 100% 100%;
22
- }
23
-
24
- :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
25
- --ly-ui-style-kit-bridge-style: minimal-saas;
26
- }
27
-
28
- :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
29
- --ly-ui-style-kit-bridge-style: bento;
30
- }
31
-
32
- :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
33
- --ly-ui-style-kit-bridge-style: maximalist;
34
- }
35
-
36
- :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
37
- --ly-ui-style-kit-bridge-style: bauhaus;
38
- }
39
-
40
- :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
41
- --ly-ui-style-kit-bridge-style: tactile;
42
- }
43
-
44
- :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
45
- --ly-ui-style-kit-bridge-style: neumorphism;
46
- }
47
-
48
- :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
49
- --ly-ui-style-kit-bridge-style: retrofuturism;
50
- }
51
-
52
- :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
53
- --ly-ui-style-kit-bridge-style: brutalism;
54
- }
55
-
56
- :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
57
- --ly-ui-style-kit-bridge-style: cyberpunk;
58
- }
59
-
60
- :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
61
- --ly-ui-style-kit-bridge-style: y2k;
62
- }
63
-
64
- :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
65
- --ly-ui-style-kit-bridge-style: retro-glass;
66
- }
67
-
10
+ :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
11
+ --ly-ui-style-kit-bridge: 1;
12
+
13
+ /*
14
+ Normalize UI kit root background geometry without redefining its paint.
15
+ Patterned theme layers should fill the viewport once instead of tiling.
16
+ */
17
+ min-block-size: 100svh;
18
+ background-attachment: fixed;
19
+ background-position: center;
20
+ background-repeat: no-repeat;
21
+ background-size: 100% 100%;
22
+ }
23
+
24
+ :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
25
+ --ly-ui-style-kit-bridge-style: minimal-saas;
26
+ }
27
+
28
+ :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
29
+ --ly-ui-style-kit-bridge-style: bento;
30
+ }
31
+
32
+ :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
33
+ --ly-ui-style-kit-bridge-style: maximalist;
34
+ }
35
+
36
+ :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
37
+ --ly-ui-style-kit-bridge-style: bauhaus;
38
+ }
39
+
40
+ :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
41
+ --ly-ui-style-kit-bridge-style: tactile;
42
+ }
43
+
44
+ :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
45
+ --ly-ui-style-kit-bridge-style: neumorphism;
46
+ }
47
+
48
+ :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
49
+ --ly-ui-style-kit-bridge-style: retrofuturism;
50
+ }
51
+
52
+ :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
53
+ --ly-ui-style-kit-bridge-style: brutalism;
54
+ }
55
+
56
+ :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
57
+ --ly-ui-style-kit-bridge-style: cyberpunk;
58
+ }
59
+
60
+ :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
61
+ --ly-ui-style-kit-bridge-style: y2k;
62
+ }
63
+
64
+ :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
65
+ --ly-ui-style-kit-bridge-style: retro-glass;
66
+ }
67
+
68
68
  :where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
69
69
  /* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
70
70
  container-name: ly-wrapper;
@@ -72,104 +72,104 @@
72
72
  inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-gutter) * 2)));
73
73
  margin-inline: auto;
74
74
  padding-inline: var(--ly-wrapper-gutter);
75
- }
76
-
77
- :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
78
- padding-block: var(--ly-section-padding-block);
79
- }
80
-
81
- :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
82
- display: flex;
83
- flex-direction: column;
84
- gap: var(--ly-stack-gap);
85
- }
86
-
87
- :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
88
- display: flex;
89
- flex-wrap: wrap;
90
- align-items: center;
91
- gap: var(--ly-cluster-gap);
92
- }
93
-
94
- :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
95
- display: grid;
96
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
97
- gap: var(--ly-grid-gap);
98
- }
99
-
100
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
101
- display: grid;
102
- grid-template-columns: 1fr;
103
- gap: var(--ly-gap);
104
- align-items: var(--ly-split-align, center);
105
- }
106
-
107
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
108
- min-width: 0;
109
- }
110
-
111
- :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) {
112
- display: flex;
113
- flex-wrap: wrap;
114
- align-items: center;
115
- gap: var(--ly-cluster-gap);
116
- }
117
-
118
- :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) > * {
119
- flex: 0 1 auto;
120
- min-width: min(100%, var(--ly-button-min, 8rem));
121
- }
122
-
123
- :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) {
124
- display: grid;
125
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
126
- gap: var(--ly-grid-gap);
127
- }
128
-
129
- :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) > * {
130
- min-width: 0;
131
- }
132
-
133
- :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) {
134
- min-block-size: var(--ly-card-size-sm);
135
- }
136
-
137
- :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) {
138
- min-block-size: var(--ly-card-size-md);
139
- }
140
-
141
- :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) {
142
- min-block-size: var(--ly-card-size-lg);
143
- }
144
-
145
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
146
- display: grid;
147
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
148
- gap: var(--ly-grid-gap);
149
- }
150
-
151
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
152
- min-width: 0;
153
- }
154
-
155
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
156
- display: grid;
157
- grid-auto-flow: column;
158
- grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
159
- gap: var(--ly-grid-gap);
160
- overflow-x: auto;
161
- overscroll-behavior-inline: contain;
162
- scroll-snap-type: x proximity;
163
- }
164
-
165
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
166
- min-width: 0;
167
- scroll-snap-align: start;
168
- }
169
-
75
+ }
76
+
77
+ :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
78
+ padding-block: var(--ly-section-padding-block);
79
+ }
80
+
81
+ :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: var(--ly-stack-gap);
85
+ }
86
+
87
+ :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ align-items: center;
91
+ gap: var(--ly-cluster-gap);
92
+ }
93
+
94
+ :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
97
+ gap: var(--ly-grid-gap);
98
+ }
99
+
100
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
101
+ display: grid;
102
+ grid-template-columns: 1fr;
103
+ gap: var(--ly-gap);
104
+ align-items: var(--ly-split-align, center);
105
+ }
106
+
107
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
108
+ min-width: 0;
109
+ }
110
+
111
+ :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) {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ align-items: center;
115
+ gap: var(--ly-cluster-gap);
116
+ }
117
+
118
+ :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) > * {
119
+ flex: 0 1 auto;
120
+ min-width: min(100%, var(--ly-button-min, 8rem));
121
+ }
122
+
123
+ :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) {
124
+ display: grid;
125
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
126
+ gap: var(--ly-grid-gap);
127
+ }
128
+
129
+ :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) > * {
130
+ min-width: 0;
131
+ }
132
+
133
+ :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) {
134
+ min-block-size: var(--ly-card-size-sm);
135
+ }
136
+
137
+ :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) {
138
+ min-block-size: var(--ly-card-size-md);
139
+ }
140
+
141
+ :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) {
142
+ min-block-size: var(--ly-card-size-lg);
143
+ }
144
+
145
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
146
+ display: grid;
147
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
148
+ gap: var(--ly-grid-gap);
149
+ }
150
+
151
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
152
+ min-width: 0;
153
+ }
154
+
155
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
156
+ display: grid;
157
+ grid-auto-flow: column;
158
+ grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
159
+ gap: var(--ly-grid-gap);
160
+ overflow-x: auto;
161
+ overscroll-behavior-inline: contain;
162
+ scroll-snap-type: x proximity;
163
+ }
164
+
165
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
166
+ min-width: 0;
167
+ scroll-snap-align: start;
168
+ }
169
+
170
170
  @container (min-width: 48rem) {
171
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
172
- grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
173
- }
174
- }
175
- }
171
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
172
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
173
+ }
174
+ }
175
+ }