@getvitops/generator 1.0.0 → 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.
- package/CHANGELOG.md +743 -0
- package/README.md +8 -1
- package/assets/bricks/elements/icon.php +102 -0
- package/assets/bricks/elements/split.php +8 -5
- package/assets/bricks/load.php +91 -0
- package/assets/css/animation.css +145 -34
- package/assets/css/global.css +19 -3
- package/assets/css/index.css +8 -0
- package/assets/css/layout-utilities.css +764 -0
- package/assets/css/layout.css +50 -584
- package/assets/css/patterns/consent.css +117 -0
- package/assets/css/patterns/details.css +1 -1
- package/assets/css/patterns/reveal.css +92 -0
- package/assets/css/patterns/subgrid.css +7 -2
- package/assets/css/patterns/theme-editor.css +37 -0
- package/assets/css/utilities.css +19 -98
- package/assets/js/consent.js +1 -0
- package/assets/js/deferred.js +1 -1
- package/assets/js/editor.js +1 -1
- package/dist/index.d.mts +668 -252
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +956 -133
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -3
- package/schema.json +3 -3
- package/site.schema.json +554 -506
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════════════════
|
|
2
|
+
LAYOUT UTILITIES — rhythm overrides, track placement, splits, flex direction,
|
|
3
|
+
alignment, text-align.
|
|
4
|
+
|
|
5
|
+
Mapped to `vitops.utilities` (CHUNK_LAYER, packages/generator/src/generate.ts).
|
|
6
|
+
That is the whole reason this file is separate from layout.css: these are
|
|
7
|
+
single-purpose utilities and must beat the patterns in `vitops.components` —
|
|
8
|
+
`class="split flex-col"`, `class="table text-center"`, `class="media
|
|
9
|
+
items-center"` — which they could not do while they shared a partial with
|
|
10
|
+
`.split`/`.rhythm`/`.centered` and the layer was decided per FILE.
|
|
11
|
+
|
|
12
|
+
Container-gated (unnamed @container): resolve against the nearest
|
|
13
|
+
container-type ancestor. Bare = base/mobile; sm- md- lg- xl- widen up.
|
|
14
|
+
Breakpoints: sm 30rem · md 48rem · lg 64rem · xl 80rem.
|
|
15
|
+
|
|
16
|
+
ORDER WITHIN THIS FILE still matters, because everything here shares one
|
|
17
|
+
layer. One relationship is load-bearing:
|
|
18
|
+
|
|
19
|
+
`.<bp>-split-<a>-<b>` MUST come after `.flex-col`
|
|
20
|
+
|
|
21
|
+
so `class="split flex-col md-split-1-2"` un-stacks at the breakpoint. Its
|
|
22
|
+
counterpart in the tailwind format is Tailwind's own rule that a variant sorts
|
|
23
|
+
after the un-varianted utility, which is stable (measured, tailwindcss@4.3.3).
|
|
24
|
+
|
|
25
|
+
What is NOT a contract: bare `.split-1-2` vs `.flex-col`. Here the ratio loses,
|
|
26
|
+
because `flex-col` is an explicit instruction to stack and a bare ratio is not
|
|
27
|
+
an instruction to un-stack. In tailwind the winner depends on Tailwind's
|
|
28
|
+
property-based sort of custom utilities — measured to FLIP when a declaration
|
|
29
|
+
is added to the utility body — so the two formats may disagree. Writing both
|
|
30
|
+
on one element is contradictory input; don't. Use a breakpoint-scoped ratio.
|
|
31
|
+
|
|
32
|
+
`.<bp>-split` (bare, no ratio) deliberately does not exist: `@utility` cannot
|
|
33
|
+
live in a layer, so once `.split` became a component tailwind could no longer
|
|
34
|
+
produce `@md:split`. `md-flex-row` says "become a row at md" in every format.
|
|
35
|
+
═══════════════════════════════════════════════════════════════════════════ */
|
|
36
|
+
|
|
37
|
+
/* Manual rhythm overrides (apply to the second element of a pair). In
|
|
38
|
+
`vitops.utilities`, so these beat both `.rhythm`'s sibling margins and any
|
|
39
|
+
pattern that sets a margin on the same element (e.g. details.css's
|
|
40
|
+
`> summary + *`). */
|
|
41
|
+
.m-h-p {
|
|
42
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-h-p));
|
|
43
|
+
}
|
|
44
|
+
.m-p-p {
|
|
45
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-p-p));
|
|
46
|
+
}
|
|
47
|
+
.m-p-h {
|
|
48
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-p-h));
|
|
49
|
+
}
|
|
50
|
+
.m-h-h {
|
|
51
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-h-h));
|
|
52
|
+
}
|
|
53
|
+
.m-p-list {
|
|
54
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-p-list));
|
|
55
|
+
}
|
|
56
|
+
.m-list-p {
|
|
57
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-list-p));
|
|
58
|
+
}
|
|
59
|
+
.m-li-li {
|
|
60
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-li-li));
|
|
61
|
+
}
|
|
62
|
+
.m-text-media {
|
|
63
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-text-media));
|
|
64
|
+
}
|
|
65
|
+
.m-media-text {
|
|
66
|
+
margin-top: calc(var(--rhythm-base) * var(--rhythm-media-text));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.m-0 {
|
|
70
|
+
margin-top: 0;
|
|
71
|
+
}
|
|
72
|
+
.m-xs {
|
|
73
|
+
margin-top: calc(var(--rhythm-base) * 0.25);
|
|
74
|
+
}
|
|
75
|
+
.m-s {
|
|
76
|
+
margin-top: calc(var(--rhythm-base) * 0.5);
|
|
77
|
+
}
|
|
78
|
+
.m-m {
|
|
79
|
+
margin-top: calc(var(--rhythm-base) * 1);
|
|
80
|
+
}
|
|
81
|
+
.m-l {
|
|
82
|
+
margin-top: calc(var(--rhythm-base) * 1.5);
|
|
83
|
+
}
|
|
84
|
+
.m-xl {
|
|
85
|
+
margin-top: calc(var(--rhythm-base) * 2);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Bare placement. .measure restates the default (redundant but parser-visible). */
|
|
89
|
+
.measure {
|
|
90
|
+
grid-column: measure;
|
|
91
|
+
}
|
|
92
|
+
.breakout {
|
|
93
|
+
grid-column: breakout;
|
|
94
|
+
}
|
|
95
|
+
.spotlight {
|
|
96
|
+
grid-column: spotlight;
|
|
97
|
+
}
|
|
98
|
+
.fullbleed {
|
|
99
|
+
grid-column: fullbleed;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* Promotion variants (base = measure; widen past each container breakpoint) */
|
|
103
|
+
@container (min-width: 30rem) {
|
|
104
|
+
.sm-measure {
|
|
105
|
+
grid-column: measure;
|
|
106
|
+
}
|
|
107
|
+
.sm-breakout {
|
|
108
|
+
grid-column: breakout;
|
|
109
|
+
}
|
|
110
|
+
.sm-spotlight {
|
|
111
|
+
grid-column: spotlight;
|
|
112
|
+
}
|
|
113
|
+
.sm-fullbleed {
|
|
114
|
+
grid-column: fullbleed;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
@container (min-width: 48rem) {
|
|
118
|
+
.md-measure {
|
|
119
|
+
grid-column: measure;
|
|
120
|
+
}
|
|
121
|
+
.md-breakout {
|
|
122
|
+
grid-column: breakout;
|
|
123
|
+
}
|
|
124
|
+
.md-spotlight {
|
|
125
|
+
grid-column: spotlight;
|
|
126
|
+
}
|
|
127
|
+
.md-fullbleed {
|
|
128
|
+
grid-column: fullbleed;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
@container (min-width: 64rem) {
|
|
132
|
+
.lg-measure {
|
|
133
|
+
grid-column: measure;
|
|
134
|
+
}
|
|
135
|
+
.lg-breakout {
|
|
136
|
+
grid-column: breakout;
|
|
137
|
+
}
|
|
138
|
+
.lg-spotlight {
|
|
139
|
+
grid-column: spotlight;
|
|
140
|
+
}
|
|
141
|
+
.lg-fullbleed {
|
|
142
|
+
grid-column: fullbleed;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
@container (min-width: 80rem) {
|
|
146
|
+
.xl-measure {
|
|
147
|
+
grid-column: measure;
|
|
148
|
+
}
|
|
149
|
+
.xl-breakout {
|
|
150
|
+
grid-column: breakout;
|
|
151
|
+
}
|
|
152
|
+
.xl-spotlight {
|
|
153
|
+
grid-column: spotlight;
|
|
154
|
+
}
|
|
155
|
+
.xl-fullbleed {
|
|
156
|
+
grid-column: fullbleed;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
.split-1-2 {
|
|
160
|
+
flex-direction: row;
|
|
161
|
+
--_split-a: 1;
|
|
162
|
+
--_split-b: 2;
|
|
163
|
+
}
|
|
164
|
+
.split-2-1 {
|
|
165
|
+
flex-direction: row;
|
|
166
|
+
--_split-a: 2;
|
|
167
|
+
--_split-b: 1;
|
|
168
|
+
}
|
|
169
|
+
.split-1-3 {
|
|
170
|
+
flex-direction: row;
|
|
171
|
+
--_split-a: 1;
|
|
172
|
+
--_split-b: 3;
|
|
173
|
+
}
|
|
174
|
+
.split-3-1 {
|
|
175
|
+
flex-direction: row;
|
|
176
|
+
--_split-a: 3;
|
|
177
|
+
--_split-b: 1;
|
|
178
|
+
}
|
|
179
|
+
.split-1-4 {
|
|
180
|
+
flex-direction: row;
|
|
181
|
+
--_split-a: 1;
|
|
182
|
+
--_split-b: 4;
|
|
183
|
+
}
|
|
184
|
+
.split-4-1 {
|
|
185
|
+
flex-direction: row;
|
|
186
|
+
--_split-a: 4;
|
|
187
|
+
--_split-b: 1;
|
|
188
|
+
}
|
|
189
|
+
.split-2-3 {
|
|
190
|
+
flex-direction: row;
|
|
191
|
+
--_split-a: 2;
|
|
192
|
+
--_split-b: 3;
|
|
193
|
+
}
|
|
194
|
+
.split-3-2 {
|
|
195
|
+
flex-direction: row;
|
|
196
|
+
--_split-a: 3;
|
|
197
|
+
--_split-b: 2;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* ── Stacking is `.flex-col`. There is no split-specific class for it, on
|
|
201
|
+
purpose — a `.split-stack` would be `.flex-col` under another name, and a
|
|
202
|
+
second spelling for one declaration is a thing to keep in step forever.
|
|
203
|
+
|
|
204
|
+
class="split flex-col md-split-1-2" → stacked below 48rem, 1:2 above
|
|
205
|
+
|
|
206
|
+
`.flex-col` beats `.split` by LAYER — `.split` is a pattern in
|
|
207
|
+
`vitops.components`, this file is `vitops.utilities` — and `.md-split-1-2`
|
|
208
|
+
beats `.flex-col` by sitting later in this file (see the section header).
|
|
209
|
+
Nothing resets the ratio while stacked and nothing needs to:
|
|
210
|
+
a percentage flex-basis resolved against an auto-height COLUMN container
|
|
211
|
+
behaves as `content`, so the pair sizes to its content and the ratio goes
|
|
212
|
+
inert. (It does apply if you give the split a definite block-size — a ratio
|
|
213
|
+
in the block axis, which is what asking for one on a fixed-height column
|
|
214
|
+
means.)
|
|
215
|
+
|
|
216
|
+
── Reversal. `order`, not `row-reverse`, so it reverses on WHATEVER axis the
|
|
217
|
+
split is currently on: `split-reverse` swaps the two columns in a row and the
|
|
218
|
+
two rows in a stack. That is the point — it decides which panel comes first,
|
|
219
|
+
and "first" is a question you mostly care about when stacked. Scope it to a
|
|
220
|
+
breakpoint (`md-split-reverse`) if you want the swap only once there are two
|
|
221
|
+
columns, e.g. media first in source so it leads on mobile, on the right at
|
|
222
|
+
width. Ratios stay attached to SOURCE order, not visual position: in
|
|
223
|
+
`split-2-1 split-reverse` the first child is still the 2, now on the right.
|
|
224
|
+
|
|
225
|
+
ACCESSIBILITY. Visual order now disagrees with DOM order, and focus order
|
|
226
|
+
follows the DOM — so a keyboard user tabs through a reversed split in the
|
|
227
|
+
order it is written, not the order it is seen (WCAG 2.4.3). The rule that
|
|
228
|
+
keeps that from mattering: put focusable content in ONLY ONE of the two
|
|
229
|
+
panels. `reading-flow` is the real fix and is declared below, but support is
|
|
230
|
+
still thin, so it is an enhancement rather than something to rely on. */
|
|
231
|
+
.split-reverse {
|
|
232
|
+
/* Aligns focus/reading order with visual order where supported. Unknown
|
|
233
|
+
properties are ignored, so this is inert elsewhere — the one-focusable-panel
|
|
234
|
+
rule above is what actually holds today. */
|
|
235
|
+
reading-flow: flex-visual;
|
|
236
|
+
}
|
|
237
|
+
.split-reverse > :first-child {
|
|
238
|
+
order: 1;
|
|
239
|
+
}
|
|
240
|
+
/* ── Auto-fit grid: cards wrap into as many equal columns as fit, each at least
|
|
241
|
+
--grid-min wide. Unlike .split (explicit fractions) the column count is
|
|
242
|
+
content-driven. ── */
|
|
243
|
+
.grid-auto {
|
|
244
|
+
display: grid;
|
|
245
|
+
gap: var(--grid-gap, 1rem);
|
|
246
|
+
grid-template-columns: repeat(auto-fit, minmax(var(--grid-min, 13rem), 1fr));
|
|
247
|
+
|
|
248
|
+
/* Spacing between items is the grid's job, not the flow's — neutralise the
|
|
249
|
+
`.rhythm :where(ul, ol) > li + li` margin, which reaches into any list
|
|
250
|
+
inside a prose container. `.subgrid` already does this; a `<ul class="grid-auto">`
|
|
251
|
+
needs it just as much, and the symptom is easy to misread: every item bar
|
|
252
|
+
the FIRST gets a top margin, the grid stretches the row to the tallest, and
|
|
253
|
+
the first cell alone looks vertically offset. */
|
|
254
|
+
&:is(ul, ol) > li + li {
|
|
255
|
+
margin-block-start: 0;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* ── Flex direction (display + direction; tiered classes set both) ── */
|
|
260
|
+
.flex {
|
|
261
|
+
display: flex;
|
|
262
|
+
/* Set direction explicitly (not just `display:flex`): hosts like Bricks' block
|
|
263
|
+
element default `flex-direction: column`, which would otherwise win. `.flex-col`
|
|
264
|
+
still overrides. */
|
|
265
|
+
flex-direction: row;
|
|
266
|
+
--_flex-direction: row;
|
|
267
|
+
}
|
|
268
|
+
/* Each direction class also publishes --_flex-direction so descendants (e.g. .group)
|
|
269
|
+
can read the container's axis via a style query and adapt when it flips responsively. */
|
|
270
|
+
.flex-row {
|
|
271
|
+
flex-direction: row;
|
|
272
|
+
--_flex-direction: row;
|
|
273
|
+
}
|
|
274
|
+
.flex-col {
|
|
275
|
+
flex-direction: column;
|
|
276
|
+
--_flex-direction: column;
|
|
277
|
+
}
|
|
278
|
+
/* The reversals. These are named in TW_CLASH — i.e. the tailwind format has
|
|
279
|
+
always deferred to Tailwind's own `flex-row-reverse` — but css/bricks never
|
|
280
|
+
defined them, so a mirrored row was inexpressible in framework classes in the
|
|
281
|
+
two formats that had no fallback. `--_flex-direction` reports the AXIS, which
|
|
282
|
+
is what a style query cares about; the reversal is not part of it. */
|
|
283
|
+
.flex-row-reverse {
|
|
284
|
+
flex-direction: row-reverse;
|
|
285
|
+
--_flex-direction: row;
|
|
286
|
+
}
|
|
287
|
+
.flex-col-reverse {
|
|
288
|
+
flex-direction: column-reverse;
|
|
289
|
+
--_flex-direction: column;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
@container (min-width: 30rem) {
|
|
293
|
+
.sm-flex {
|
|
294
|
+
display: flex;
|
|
295
|
+
}
|
|
296
|
+
.sm-flex-row {
|
|
297
|
+
display: flex;
|
|
298
|
+
flex-direction: row;
|
|
299
|
+
--_flex-direction: row;
|
|
300
|
+
}
|
|
301
|
+
.sm-flex-col {
|
|
302
|
+
display: flex;
|
|
303
|
+
flex-direction: column;
|
|
304
|
+
--_flex-direction: column;
|
|
305
|
+
}
|
|
306
|
+
.sm-flex-row-reverse {
|
|
307
|
+
display: flex;
|
|
308
|
+
flex-direction: row-reverse;
|
|
309
|
+
--_flex-direction: row;
|
|
310
|
+
}
|
|
311
|
+
.sm-flex-col-reverse {
|
|
312
|
+
display: flex;
|
|
313
|
+
flex-direction: column-reverse;
|
|
314
|
+
--_flex-direction: column;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
@container (min-width: 48rem) {
|
|
318
|
+
.md-flex {
|
|
319
|
+
display: flex;
|
|
320
|
+
}
|
|
321
|
+
.md-flex-row {
|
|
322
|
+
display: flex;
|
|
323
|
+
flex-direction: row;
|
|
324
|
+
--_flex-direction: row;
|
|
325
|
+
}
|
|
326
|
+
.md-flex-col {
|
|
327
|
+
display: flex;
|
|
328
|
+
flex-direction: column;
|
|
329
|
+
--_flex-direction: column;
|
|
330
|
+
}
|
|
331
|
+
.md-flex-row-reverse {
|
|
332
|
+
display: flex;
|
|
333
|
+
flex-direction: row-reverse;
|
|
334
|
+
--_flex-direction: row;
|
|
335
|
+
}
|
|
336
|
+
.md-flex-col-reverse {
|
|
337
|
+
display: flex;
|
|
338
|
+
flex-direction: column-reverse;
|
|
339
|
+
--_flex-direction: column;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
@container (min-width: 64rem) {
|
|
343
|
+
.lg-flex {
|
|
344
|
+
display: flex;
|
|
345
|
+
}
|
|
346
|
+
.lg-flex-row {
|
|
347
|
+
display: flex;
|
|
348
|
+
flex-direction: row;
|
|
349
|
+
--_flex-direction: row;
|
|
350
|
+
}
|
|
351
|
+
.lg-flex-col {
|
|
352
|
+
display: flex;
|
|
353
|
+
flex-direction: column;
|
|
354
|
+
--_flex-direction: column;
|
|
355
|
+
}
|
|
356
|
+
.lg-flex-row-reverse {
|
|
357
|
+
display: flex;
|
|
358
|
+
flex-direction: row-reverse;
|
|
359
|
+
--_flex-direction: row;
|
|
360
|
+
}
|
|
361
|
+
.lg-flex-col-reverse {
|
|
362
|
+
display: flex;
|
|
363
|
+
flex-direction: column-reverse;
|
|
364
|
+
--_flex-direction: column;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
@container (min-width: 80rem) {
|
|
368
|
+
.xl-flex {
|
|
369
|
+
display: flex;
|
|
370
|
+
}
|
|
371
|
+
.xl-flex-row {
|
|
372
|
+
display: flex;
|
|
373
|
+
flex-direction: row;
|
|
374
|
+
--_flex-direction: row;
|
|
375
|
+
}
|
|
376
|
+
.xl-flex-col {
|
|
377
|
+
display: flex;
|
|
378
|
+
flex-direction: column;
|
|
379
|
+
--_flex-direction: column;
|
|
380
|
+
}
|
|
381
|
+
.xl-flex-row-reverse {
|
|
382
|
+
display: flex;
|
|
383
|
+
flex-direction: row-reverse;
|
|
384
|
+
--_flex-direction: row;
|
|
385
|
+
}
|
|
386
|
+
.xl-flex-col-reverse {
|
|
387
|
+
display: flex;
|
|
388
|
+
flex-direction: column-reverse;
|
|
389
|
+
--_flex-direction: column;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
@container (min-width: 30rem) {
|
|
394
|
+
.sm-split-1-2 {
|
|
395
|
+
flex-direction: row;
|
|
396
|
+
--_split-a: 1;
|
|
397
|
+
--_split-b: 2;
|
|
398
|
+
}
|
|
399
|
+
.sm-split-2-1 {
|
|
400
|
+
flex-direction: row;
|
|
401
|
+
--_split-a: 2;
|
|
402
|
+
--_split-b: 1;
|
|
403
|
+
}
|
|
404
|
+
.sm-split-1-3 {
|
|
405
|
+
flex-direction: row;
|
|
406
|
+
--_split-a: 1;
|
|
407
|
+
--_split-b: 3;
|
|
408
|
+
}
|
|
409
|
+
.sm-split-3-1 {
|
|
410
|
+
flex-direction: row;
|
|
411
|
+
--_split-a: 3;
|
|
412
|
+
--_split-b: 1;
|
|
413
|
+
}
|
|
414
|
+
.sm-split-1-4 {
|
|
415
|
+
flex-direction: row;
|
|
416
|
+
--_split-a: 1;
|
|
417
|
+
--_split-b: 4;
|
|
418
|
+
}
|
|
419
|
+
.sm-split-4-1 {
|
|
420
|
+
flex-direction: row;
|
|
421
|
+
--_split-a: 4;
|
|
422
|
+
--_split-b: 1;
|
|
423
|
+
}
|
|
424
|
+
.sm-split-2-3 {
|
|
425
|
+
flex-direction: row;
|
|
426
|
+
--_split-a: 2;
|
|
427
|
+
--_split-b: 3;
|
|
428
|
+
}
|
|
429
|
+
.sm-split-3-2 {
|
|
430
|
+
flex-direction: row;
|
|
431
|
+
--_split-a: 3;
|
|
432
|
+
--_split-b: 2;
|
|
433
|
+
}
|
|
434
|
+
.sm-split-reverse {
|
|
435
|
+
reading-flow: flex-visual;
|
|
436
|
+
}
|
|
437
|
+
.sm-split-reverse > :first-child {
|
|
438
|
+
order: 1;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
@container (min-width: 48rem) {
|
|
442
|
+
.md-split-1-2 {
|
|
443
|
+
flex-direction: row;
|
|
444
|
+
--_split-a: 1;
|
|
445
|
+
--_split-b: 2;
|
|
446
|
+
}
|
|
447
|
+
.md-split-2-1 {
|
|
448
|
+
flex-direction: row;
|
|
449
|
+
--_split-a: 2;
|
|
450
|
+
--_split-b: 1;
|
|
451
|
+
}
|
|
452
|
+
.md-split-1-3 {
|
|
453
|
+
flex-direction: row;
|
|
454
|
+
--_split-a: 1;
|
|
455
|
+
--_split-b: 3;
|
|
456
|
+
}
|
|
457
|
+
.md-split-3-1 {
|
|
458
|
+
flex-direction: row;
|
|
459
|
+
--_split-a: 3;
|
|
460
|
+
--_split-b: 1;
|
|
461
|
+
}
|
|
462
|
+
.md-split-1-4 {
|
|
463
|
+
flex-direction: row;
|
|
464
|
+
--_split-a: 1;
|
|
465
|
+
--_split-b: 4;
|
|
466
|
+
}
|
|
467
|
+
.md-split-4-1 {
|
|
468
|
+
flex-direction: row;
|
|
469
|
+
--_split-a: 4;
|
|
470
|
+
--_split-b: 1;
|
|
471
|
+
}
|
|
472
|
+
.md-split-2-3 {
|
|
473
|
+
flex-direction: row;
|
|
474
|
+
--_split-a: 2;
|
|
475
|
+
--_split-b: 3;
|
|
476
|
+
}
|
|
477
|
+
.md-split-3-2 {
|
|
478
|
+
flex-direction: row;
|
|
479
|
+
--_split-a: 3;
|
|
480
|
+
--_split-b: 2;
|
|
481
|
+
}
|
|
482
|
+
.md-split-reverse {
|
|
483
|
+
reading-flow: flex-visual;
|
|
484
|
+
}
|
|
485
|
+
.md-split-reverse > :first-child {
|
|
486
|
+
order: 1;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
@container (min-width: 64rem) {
|
|
490
|
+
.lg-split-1-2 {
|
|
491
|
+
flex-direction: row;
|
|
492
|
+
--_split-a: 1;
|
|
493
|
+
--_split-b: 2;
|
|
494
|
+
}
|
|
495
|
+
.lg-split-2-1 {
|
|
496
|
+
flex-direction: row;
|
|
497
|
+
--_split-a: 2;
|
|
498
|
+
--_split-b: 1;
|
|
499
|
+
}
|
|
500
|
+
.lg-split-1-3 {
|
|
501
|
+
flex-direction: row;
|
|
502
|
+
--_split-a: 1;
|
|
503
|
+
--_split-b: 3;
|
|
504
|
+
}
|
|
505
|
+
.lg-split-3-1 {
|
|
506
|
+
flex-direction: row;
|
|
507
|
+
--_split-a: 3;
|
|
508
|
+
--_split-b: 1;
|
|
509
|
+
}
|
|
510
|
+
.lg-split-1-4 {
|
|
511
|
+
flex-direction: row;
|
|
512
|
+
--_split-a: 1;
|
|
513
|
+
--_split-b: 4;
|
|
514
|
+
}
|
|
515
|
+
.lg-split-4-1 {
|
|
516
|
+
flex-direction: row;
|
|
517
|
+
--_split-a: 4;
|
|
518
|
+
--_split-b: 1;
|
|
519
|
+
}
|
|
520
|
+
.lg-split-2-3 {
|
|
521
|
+
flex-direction: row;
|
|
522
|
+
--_split-a: 2;
|
|
523
|
+
--_split-b: 3;
|
|
524
|
+
}
|
|
525
|
+
.lg-split-3-2 {
|
|
526
|
+
flex-direction: row;
|
|
527
|
+
--_split-a: 3;
|
|
528
|
+
--_split-b: 2;
|
|
529
|
+
}
|
|
530
|
+
.lg-split-reverse {
|
|
531
|
+
reading-flow: flex-visual;
|
|
532
|
+
}
|
|
533
|
+
.lg-split-reverse > :first-child {
|
|
534
|
+
order: 1;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
@container (min-width: 80rem) {
|
|
538
|
+
.xl-split-1-2 {
|
|
539
|
+
flex-direction: row;
|
|
540
|
+
--_split-a: 1;
|
|
541
|
+
--_split-b: 2;
|
|
542
|
+
}
|
|
543
|
+
.xl-split-2-1 {
|
|
544
|
+
flex-direction: row;
|
|
545
|
+
--_split-a: 2;
|
|
546
|
+
--_split-b: 1;
|
|
547
|
+
}
|
|
548
|
+
.xl-split-1-3 {
|
|
549
|
+
flex-direction: row;
|
|
550
|
+
--_split-a: 1;
|
|
551
|
+
--_split-b: 3;
|
|
552
|
+
}
|
|
553
|
+
.xl-split-3-1 {
|
|
554
|
+
flex-direction: row;
|
|
555
|
+
--_split-a: 3;
|
|
556
|
+
--_split-b: 1;
|
|
557
|
+
}
|
|
558
|
+
.xl-split-1-4 {
|
|
559
|
+
flex-direction: row;
|
|
560
|
+
--_split-a: 1;
|
|
561
|
+
--_split-b: 4;
|
|
562
|
+
}
|
|
563
|
+
.xl-split-4-1 {
|
|
564
|
+
flex-direction: row;
|
|
565
|
+
--_split-a: 4;
|
|
566
|
+
--_split-b: 1;
|
|
567
|
+
}
|
|
568
|
+
.xl-split-2-3 {
|
|
569
|
+
flex-direction: row;
|
|
570
|
+
--_split-a: 2;
|
|
571
|
+
--_split-b: 3;
|
|
572
|
+
}
|
|
573
|
+
.xl-split-3-2 {
|
|
574
|
+
flex-direction: row;
|
|
575
|
+
--_split-a: 3;
|
|
576
|
+
--_split-b: 2;
|
|
577
|
+
}
|
|
578
|
+
.xl-split-reverse {
|
|
579
|
+
reading-flow: flex-visual;
|
|
580
|
+
}
|
|
581
|
+
.xl-split-reverse > :first-child {
|
|
582
|
+
order: 1;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/* ── Alignment (flex parents) + text-align. Bare classes, then shared tiers.
|
|
587
|
+
Names mirror Tailwind: items-* (align-items), justify-* (justify-content),
|
|
588
|
+
text-* (text-align). ── */
|
|
589
|
+
.items-start {
|
|
590
|
+
align-items: flex-start;
|
|
591
|
+
}
|
|
592
|
+
.items-center {
|
|
593
|
+
align-items: center;
|
|
594
|
+
}
|
|
595
|
+
.items-end {
|
|
596
|
+
align-items: flex-end;
|
|
597
|
+
}
|
|
598
|
+
.items-stretch {
|
|
599
|
+
align-items: stretch;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
.justify-start {
|
|
603
|
+
justify-content: flex-start;
|
|
604
|
+
}
|
|
605
|
+
.justify-center {
|
|
606
|
+
justify-content: center;
|
|
607
|
+
}
|
|
608
|
+
.justify-end {
|
|
609
|
+
justify-content: flex-end;
|
|
610
|
+
}
|
|
611
|
+
.justify-between {
|
|
612
|
+
justify-content: space-between;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
.text-start {
|
|
616
|
+
text-align: start;
|
|
617
|
+
}
|
|
618
|
+
.text-center {
|
|
619
|
+
text-align: center;
|
|
620
|
+
}
|
|
621
|
+
.text-end {
|
|
622
|
+
text-align: end;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
@container (min-width: 30rem) {
|
|
626
|
+
.sm-items-start {
|
|
627
|
+
align-items: flex-start;
|
|
628
|
+
}
|
|
629
|
+
.sm-items-center {
|
|
630
|
+
align-items: center;
|
|
631
|
+
}
|
|
632
|
+
.sm-items-end {
|
|
633
|
+
align-items: flex-end;
|
|
634
|
+
}
|
|
635
|
+
.sm-items-stretch {
|
|
636
|
+
align-items: stretch;
|
|
637
|
+
}
|
|
638
|
+
.sm-justify-start {
|
|
639
|
+
justify-content: flex-start;
|
|
640
|
+
}
|
|
641
|
+
.sm-justify-center {
|
|
642
|
+
justify-content: center;
|
|
643
|
+
}
|
|
644
|
+
.sm-justify-end {
|
|
645
|
+
justify-content: flex-end;
|
|
646
|
+
}
|
|
647
|
+
.sm-justify-between {
|
|
648
|
+
justify-content: space-between;
|
|
649
|
+
}
|
|
650
|
+
.sm-text-start {
|
|
651
|
+
text-align: start;
|
|
652
|
+
}
|
|
653
|
+
.sm-text-center {
|
|
654
|
+
text-align: center;
|
|
655
|
+
}
|
|
656
|
+
.sm-text-end {
|
|
657
|
+
text-align: end;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
@container (min-width: 48rem) {
|
|
661
|
+
.md-items-start {
|
|
662
|
+
align-items: flex-start;
|
|
663
|
+
}
|
|
664
|
+
.md-items-center {
|
|
665
|
+
align-items: center;
|
|
666
|
+
}
|
|
667
|
+
.md-items-end {
|
|
668
|
+
align-items: flex-end;
|
|
669
|
+
}
|
|
670
|
+
.md-items-stretch {
|
|
671
|
+
align-items: stretch;
|
|
672
|
+
}
|
|
673
|
+
.md-justify-start {
|
|
674
|
+
justify-content: flex-start;
|
|
675
|
+
}
|
|
676
|
+
.md-justify-center {
|
|
677
|
+
justify-content: center;
|
|
678
|
+
}
|
|
679
|
+
.md-justify-end {
|
|
680
|
+
justify-content: flex-end;
|
|
681
|
+
}
|
|
682
|
+
.md-justify-between {
|
|
683
|
+
justify-content: space-between;
|
|
684
|
+
}
|
|
685
|
+
.md-text-start {
|
|
686
|
+
text-align: start;
|
|
687
|
+
}
|
|
688
|
+
.md-text-center {
|
|
689
|
+
text-align: center;
|
|
690
|
+
}
|
|
691
|
+
.md-text-end {
|
|
692
|
+
text-align: end;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
@container (min-width: 64rem) {
|
|
696
|
+
.lg-items-start {
|
|
697
|
+
align-items: flex-start;
|
|
698
|
+
}
|
|
699
|
+
.lg-items-center {
|
|
700
|
+
align-items: center;
|
|
701
|
+
}
|
|
702
|
+
.lg-items-end {
|
|
703
|
+
align-items: flex-end;
|
|
704
|
+
}
|
|
705
|
+
.lg-items-stretch {
|
|
706
|
+
align-items: stretch;
|
|
707
|
+
}
|
|
708
|
+
.lg-justify-start {
|
|
709
|
+
justify-content: flex-start;
|
|
710
|
+
}
|
|
711
|
+
.lg-justify-center {
|
|
712
|
+
justify-content: center;
|
|
713
|
+
}
|
|
714
|
+
.lg-justify-end {
|
|
715
|
+
justify-content: flex-end;
|
|
716
|
+
}
|
|
717
|
+
.lg-justify-between {
|
|
718
|
+
justify-content: space-between;
|
|
719
|
+
}
|
|
720
|
+
.lg-text-start {
|
|
721
|
+
text-align: start;
|
|
722
|
+
}
|
|
723
|
+
.lg-text-center {
|
|
724
|
+
text-align: center;
|
|
725
|
+
}
|
|
726
|
+
.lg-text-end {
|
|
727
|
+
text-align: end;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
@container (min-width: 80rem) {
|
|
731
|
+
.xl-items-start {
|
|
732
|
+
align-items: flex-start;
|
|
733
|
+
}
|
|
734
|
+
.xl-items-center {
|
|
735
|
+
align-items: center;
|
|
736
|
+
}
|
|
737
|
+
.xl-items-end {
|
|
738
|
+
align-items: flex-end;
|
|
739
|
+
}
|
|
740
|
+
.xl-items-stretch {
|
|
741
|
+
align-items: stretch;
|
|
742
|
+
}
|
|
743
|
+
.xl-justify-start {
|
|
744
|
+
justify-content: flex-start;
|
|
745
|
+
}
|
|
746
|
+
.xl-justify-center {
|
|
747
|
+
justify-content: center;
|
|
748
|
+
}
|
|
749
|
+
.xl-justify-end {
|
|
750
|
+
justify-content: flex-end;
|
|
751
|
+
}
|
|
752
|
+
.xl-justify-between {
|
|
753
|
+
justify-content: space-between;
|
|
754
|
+
}
|
|
755
|
+
.xl-text-start {
|
|
756
|
+
text-align: start;
|
|
757
|
+
}
|
|
758
|
+
.xl-text-center {
|
|
759
|
+
text-align: center;
|
|
760
|
+
}
|
|
761
|
+
.xl-text-end {
|
|
762
|
+
text-align: end;
|
|
763
|
+
}
|
|
764
|
+
}
|