@thi.ng/meta-css 0.5.0 → 0.6.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/README.md CHANGED
@@ -7,8 +7,9 @@
7
7
  ![npm downloads](https://img.shields.io/npm/dm/@thi.ng/meta-css.svg)
8
8
  [![Mastodon Follow](https://img.shields.io/mastodon/follow/109331703950160316?domain=https%3A%2F%2Fmastodon.thi.ng&style=social)](https://mastodon.thi.ng/@toxi)
9
9
 
10
- This project is part of the
11
- [@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo and anti-framework.
10
+ This is a standalone project, maintained as part of the
11
+ [@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo and
12
+ anti-framework.
12
13
 
13
14
  - [About](#about)
14
15
  - [Generating CSS frameworks](#generating-css-frameworks)
@@ -21,6 +22,7 @@ This project is part of the
21
22
  - [Properties](#properties)
22
23
  - [Key value generation](#key-value-generation)
23
24
  - [Media query definitions](#media-query-definitions)
25
+ - [Custom declarations](#custom-declarations)
24
26
  - [Converting meta stylesheets to CSS](#converting-meta-stylesheets-to-css)
25
27
  - [Meta-stylesheets syntax](#meta-stylesheets-syntax)
26
28
  - [Class identifiers & media query prefixes](#class-identifiers--media-query-prefixes)
@@ -44,42 +46,52 @@ This project is part of the
44
46
 
45
47
  Data-driven CSS framework codegen, transpiler & bundler.
46
48
 
47
- This toolchain and the overall workflow proposed by it is heavily building atop
48
- the concept of _CSS utility classes_ (as known from Tachyons, Turret or the
49
- newer Tailwind projects). How and where those CSS classes are applied is however
50
- a defining point of difference to other existing approaches. Furthermore, using
51
- JSON as data format for expressing generative rules and as intermediate format
52
- for generated frameworks, removes the need for any complex CSS-related
53
- dependencies and makes it trivial to build secondary tooling around (e.g. part
54
- of this readme is an auto-generated report of the included base framework
55
- specs).
49
+ This toolkit (started as experiment in 2016) and the overall design approach and
50
+ workflows proposed by it are heavily building atop the concept of _CSS utility
51
+ classes_ (as known from [Tachyons](https://tachyons.io/),
52
+ [Turret](https://turretcss.com/) or the newer
53
+ [Tailwind](https://tailwindcss.com/) projects). How and where those CSS classes
54
+ are defined and later applied is however a major defining point of difference to
55
+ these other existing approaches and will be explained in this document. To
56
+ remove the need for any complex & bloated CSS-related dependencies (parsers
57
+ etc.) and to simplify building secondary tooling (e.g. part of this readme is an
58
+ [auto-generated report of the included base framework
59
+ specs](#bundled-css-base-framework)), we're using JSON — rather than CSS — as
60
+ data format to: 1) express the _generative_ rules to define all the CSS classes,
61
+ declarations, media query criteria which are forming a framework and
62
+ 2) as intermediate data format for a generated CSS framework itself. **The
63
+ entire toolkit (incl. all bundled dependencies) is currently only 32KB!**
56
64
 
57
65
  This readme aims to provide a thorough overview of this toolchain and some
58
66
  concrete usage examples...
59
67
 
60
68
  Note: In all cases, final CSS generation itself is handled by
61
69
  [thi.ng/hiccup-css](https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-css/).
70
+ Please see its readme for further useful information.
62
71
 
63
- **👷🏻 This is all WIP!** Also see included & linked examples for basic usage...
72
+ **👷🏻 This is all WIP!** See included & [linked examples](#usage-examples) for
73
+ concrete usage...
64
74
 
65
75
  ## Generating CSS frameworks
66
76
 
67
- The `generate` command is used to generate custom frameworks with (likely)
68
- hundreds of CSS utility classes from a number of extremely compact, parametric
69
- JSON rule specs. This process generates all desired, combinatorial versions of
70
- various rules/declarations and exports them to another JSON file used as
71
- intermediary for the other commands provided by this toolchain. The
72
- [syntax/format of the generator rules](#framework-generation-specs--syntax) is explained
73
- further on. These rule specs can be split up into multiple files for better
74
- handling, can define [arbitrary media query criteria]() (all later combinable),
75
- shared lookup tables for colors, margins, sizes, timings etc.
76
-
77
- The package includes generator specs for a basic, fully customizable,
78
- [tachyons.io](https://tachyons.io)-derived [CSS
79
- framework](#bundled-css-base-framework). These specs and resulting framework are
80
- still being worked on and are used for some example projects in this repo, but
81
- are mostly intended as basic starting points for creating other custom
82
- frameworks (in the hope they'll be shared back similarly)...
77
+ The `generate` command is used to generate custom CSS frameworks with (likely)
78
+ hundreds of utility classes, all derived from a number of extremely compact,
79
+ parametric JSON rule specs. This process generates all desired, combinatorial
80
+ versions of various rules/declarations and exports them to a framework JSON file
81
+ used as intermediary stage for the other commands provided by this toolchain.
82
+ The [syntax/format of the generator rules](#framework-generation-specs--syntax)
83
+ is explained further on. These framework specs can be split up into multiple
84
+ files for better handling and organization, can define [CSS base
85
+ declarations](#custom-declarations) (e.g. for normalization purposes),
86
+ [arbitrary media query criteria](#media-query-definitions) (all later
87
+ combinable), shared lookup tables for colors, margins, sizes, timings etc.
88
+
89
+ The package includes dozens of generator specs for a basic, fully customizable,
90
+ Tachyons-derived [CSS framework](#bundled-css-base-framework). These specs and
91
+ resulting framework are still being worked on and are used for some example
92
+ projects in this repo, but are mostly intended as basic starting points for
93
+ creating other custom frameworks (_in the hope some useful specs will be shared back
94
+ similarly_)...
83
95
 
84
96
  ```text
85
97
  metacss generate --help
@@ -100,8 +112,8 @@ Main:
100
112
  ### Framework generation specs & syntax
101
113
 
102
114
  This section gives an overview of the JSON format used to generate CSS
103
- frameworks of dozens (usually hundreds) of utility classes, including many
104
- possible variations (per spec).
115
+ frameworks of dozens (usually hundreds or thousands) of utility classes,
116
+ including many possible variations (per spec).
105
117
 
106
118
  Generation specs use a simple JSON structure as shown below. The specs can be
107
119
  split over multiple files and will all be merged by the `generate` command of
@@ -117,14 +129,15 @@ the toolchain.
117
129
  // optional media queries and their criteria, will be merged from multiple spec files
118
130
  "media": {
119
131
  "large": { "min-width": "60rem" },
120
- "dark": { "prefers-color-scheme": "dark" }
132
+ "dark": { "prefers-color-scheme": "dark" },
133
+ "anim": { "prefers-reduced-motion": false }
121
134
  },
122
135
  // optional shared values/LUTs (arrays or objects)
123
- // tables are always local to the current spec file only...
136
+ // (local to the current file only)
124
137
  "tables": {
125
138
  "margins": [0, 0.25, 0.5, 1, 2, 4]
126
139
  },
127
- // optional shared variations
140
+ // optional shared variations (local to current file only)
128
141
  "vars": {
129
142
  "size": ["width", "height"]
130
143
  },
@@ -150,7 +163,7 @@ For each additional value added to the `margins` table, 7 more CSS classes will
150
163
  generated. The `name` (class) and `props` (CSS property name) are parametric and
151
164
  will be explained in more detail further below.
152
165
 
153
- ```json tangle:export/readme-margins.json
166
+ ```json tangle:export/readme-margins.mcss.json
154
167
  {
155
168
  "tables": {
156
169
  "margins": [0, 0.5, 1]
@@ -161,18 +174,18 @@ will be explained in more detail further below.
161
174
  "props": "margin<var>",
162
175
  "values": "margins",
163
176
  "unit": "rem",
164
- "var": ["a", "t", "r", "b", "l", "h", "v"]
177
+ "vars": ["a", "t", "r", "b", "l", "h", "v"]
165
178
  }
166
179
  ]
167
180
  }
168
181
  ```
169
182
 
170
- Assuming the above spec has been saved to file `myspecs.json`...
183
+ Assuming the above spec has been saved to file `margins.mcss.json`...
171
184
 
172
185
  ```bash
173
186
  # the generate cmd can merge specs from multiple input files
174
187
  # if no `--out` file is given, the result will go to stdout
175
- metacss generate --pretty myspecs.json
188
+ metacss generate --pretty margins.mcss.json
176
189
  ```
177
190
 
178
191
  ...this command (with the above spec) will generate the following output (here
@@ -221,26 +234,28 @@ An individual generator spec JSON object can contain the following keys:
221
234
 
222
235
  | **ID** | **Type** | **Description** |
223
236
  |----------|-------------------------|--------------------------------------------------------------|
237
+ | `key` | string, optional | Method for deriving keys from current value |
224
238
  | `name` | string | Parametric name for the generated CSS class(es) |
225
239
  | `props` | string or object | CSS property name(s), possibly parametric |
226
- | `values` | string, array or object | Values to be assigned to CSS properties, possibly parametric |
227
240
  | `unit` | string, optional | CSS unit to use for values |
228
- | `key` | string, optional | Method for deriving keys from current value |
229
- | `var` | string[], optional | Array of variation IDs (see section below) |
230
- | `user` | any, optional | Custom user data, comments, metadata etc. |
241
+ | `user` | any, optional | Custom, arbitrary user data, comments, metadata etc. |
242
+ | `values` | string, array or object | Values to be assigned to CSS properties, possibly parametric |
243
+ | `vars` | string[], optional | Array of variation IDs (see section below) |
231
244
 
232
245
  The number of generated CSS classes per spec is the number of items in `values`
233
246
  multiplied by the number of variations in `var` (if any).
234
247
 
235
248
  Any `user` data will be stored (as is) with each generated CSS class, but
236
- currently has no other direct use in the toolchain and is meant for additional
237
- user-defined tooling.
249
+ currently has no direct use in the toolchain and is purely intended for
250
+ additional user-defined custom tooling.
238
251
 
239
252
  #### Variations
240
253
 
241
254
  Variations can be requested by providing an array of valid variation IDs. If
242
- used, `<vid>` or `<var>` parameters must be used in the `name` or else naming
243
- conflicts will occur.
255
+ used, `<vid>` or `<var>` parameters **must** be used in the `name` or else
256
+ naming conflicts will occur.
257
+
258
+ The following variation presets are available:
244
259
 
245
260
  | **ID** | **Expanded values** |
246
261
  |------------|-----------------------|
@@ -259,26 +274,60 @@ conflicts will occur.
259
274
  | `"x"` | `["-x"]` |
260
275
  | `"y"` | `["-y"]` |
261
276
 
277
+ Custom, file-local variations can also be used (parameters in `name` and `props`
278
+ will be explained next), e.g.:
279
+
280
+ ```json tangle:export/readme-custom-vars.mcss.json
281
+ {
282
+ "vars": {
283
+ "svg": ["fill", "stroke"]
284
+ },
285
+ "specs": [
286
+ {
287
+ "name": "<var>-<k>",
288
+ "props": { "<var>": "<v>" },
289
+ "values": { "black": "#000", "white": "#fff", "current": "currentColor" },
290
+ "vars": ["svg"]
291
+ }
292
+ ]
293
+ }
294
+ ```
295
+
296
+ This spec will generate the following classes:
297
+
298
+ ```json
299
+ {
300
+ "fill-black": { "fill": "#000" },
301
+ "fill-white": { "fill": "#fff" },
302
+ "fill-current": { "fill": "currentColor" },
303
+ "stroke-black": { "stroke": "#000" },
304
+ "stroke-white": { "stroke": "#fff" },
305
+ "stroke-current": { "stroke": "currentColor" }
306
+ }
307
+ ```
308
+
262
309
  #### Parametric IDs
263
310
 
264
311
  The following parameters can (and should) be used in a spec's `name` and `props`
265
312
  to generate multiple pattern-based values (more examples below).
266
313
 
267
- - `<vid>` is a value from the ID column of the above variations table. If no
268
- variations are requested, its value will be an empty string.
269
- - `<var>` is one of the expanded values for the current variation (2nd column of
270
- variations table). If no variations are defined, this too will be an empty
271
- string.
314
+ - `<vid>` is the ID of the currently processed variation (e.g. a value from the
315
+ ID column in the above table). If no variations are requested, this value will
316
+ be an empty string.
317
+ - `<var>` is one of the expanded values for the current variation (e.g. 2nd
318
+ column of variations table). If no variations are defined, this too will be an
319
+ empty string.
272
320
  - `<v>` is the currently processed value of a spec's `values`.
273
- - `<k>` is the key (possibly derived) for the currently processed value of a
274
- spec's `values` and will depend on the type of `values` (see below)
321
+ - `<k>` is the (possibly derived) key for the currently processed value of a
322
+ spec's `values` collection and will depend on the type of `values` (see [key
323
+ value generation](#key-value-generation))
275
324
 
276
325
  #### Values
277
326
 
278
327
  The `values` are used to populate the `props` (CSS properties). If `values` is a
279
328
  string it will be used as table-name to look up in the current spec file's
280
- `tables`, an object storing values which should be shared among specs (only in
281
- the same file).
329
+ `tables`, an object storing value collections which should be shared among specs
330
+ (only in the same file).
282
331
 
283
332
  Other allowed types of `values`: string array, numeric array or object of
284
333
  key-value pairs (where values are strings or numbers too). The following
@@ -293,7 +342,7 @@ Using a named `tables` entry:
293
342
  },
294
343
  "specs": [
295
344
  {
296
- "name": "test<v>",
345
+ "name": "test-<v>",
297
346
  "props": "color",
298
347
  "values": "test"
299
348
  }
@@ -305,7 +354,7 @@ Using an array directly (here only showing the spec itself for brevity):
305
354
 
306
355
  ```json
307
356
  {
308
- "name": "test<v>",
357
+ "name": "test-<v>",
309
358
  "props": "color",
310
359
  "values": ["red", "green", "blue"]
311
360
  }
@@ -315,7 +364,7 @@ Using an object (ignoring the keys, only using the values here):
315
364
 
316
365
  ```json
317
366
  {
318
- "name": "test<v>",
367
+ "name": "test-<v>",
319
368
  "props": "color",
320
369
  "values": { "r": "red", "g": "green", "b": "blue"}
321
370
  }
@@ -363,13 +412,13 @@ Will result in these definitions:
363
412
 
364
413
  The `key` field is only used when `values` is resolving to an array. In this
365
414
  case this field determines how a "key" value (aka the `<k>` param for string
366
- interpolation, see below) will be derived for each value in `values`:
415
+ interpolation) will be derived for each value in `values`:
367
416
 
368
417
  | **`key`** | **`values`** | **Description** | **Examples** |
369
418
  |-----------|-----------------|-------------------------|--------------|
370
419
  | `v` | `[10, 20, ...]` | Actual array item value | 10, 20, ... |
371
420
  | `i` | `[10, 20, ...]` | Array item index | 0, 1,... |
372
- | `i1` | `[10, 20, ...]` | Array item index + 1 | 1, 2,... |
421
+ | `i+1` | `[10, 20, ...]` | Array item index + 1 | 1, 2,... |
373
422
 
374
423
  If `values` resolves to an object, the `<k>` param will always be the key of the
375
424
  currently processed value.
@@ -410,16 +459,37 @@ ALWAYS combined using `and`:
410
459
  See [media queries in the bundled base
411
460
  specs](https://github.com/thi-ng/umbrella/blob/982fff7bfcc48f108b6ad88f854ef00be4078510/packages/meta-css/specs/_info.json#L6-L24)
412
461
 
462
+ ### Custom declarations
463
+
464
+ Each of the JSON spec files can provide fixed CSS declarations via the `decls`
465
+ key. These declarations are to be given in
466
+ [thi.ng/hiccup-css](https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-css/)
467
+ format and are passed as is to the CSS serializer used by the `convert` and
468
+ `export` commands. Please see
469
+ [`/specs/normalize.mcss.json`](https://github.com/thi-ng/umbrella/blob/develop/packages/meta-css/specs/normalize.mcss.json)
470
+ for examples and the [thi.ng/hiccup-css
471
+ readme](https://github.com/thi-ng/umbrella/blob/develop/packages/hiccup-css/README.md)
472
+ for detailed reference.
473
+
474
+ ```json
475
+ {
476
+ "decls": [
477
+ [":root", { "font-size": "16px" }],
478
+ ["*", { "margin": 0 }]
479
+ ]
480
+ }
481
+ ```
482
+
413
483
  ## Converting meta stylesheets to CSS
414
484
 
415
485
  The `convert` command is used to compile & bundle actual CSS from user-provided
416
- MetaCSS stylesheets (`*.meta` files) and the JSON framework specs created by the
486
+ MetaCSS stylesheets (`.mcss` files) and the JSON framework specs created by the
417
487
  `generate` command. The meta-stylesheets support any CSS selectors, are nestable
418
488
  and compose full CSS declarations from lists of the utility classes in the
419
489
  generated framework.
420
490
 
421
491
  Each item (aka utility class name) can be prefixed with an arbitrary number of
422
- media query IDs (also custom defined in the framework): e.g. `dark:bg-black`
492
+ media query IDs (also custom defined in the framework): e.g. `dark:bg-color-black`
423
493
  might refer to a CSS class to set a black ground, with the `dark:` prefix
424
494
  referring to a defined media query which only applies this class when dark mode
425
495
  is enabled...
@@ -429,9 +499,8 @@ from multiple input files. **The resulting CSS will only contain referenced
429
499
  rules** and can be generated in minified or pretty printed formats (it's also
430
500
  possible to [force include CSS classes which are otherwise
431
501
  unreferenced](#force-inclusion-of-unreferenced-classes)). Additionally, multiple
432
- `.meta` stylesheets can be watched for changes (their definitions getting
433
- merged), and existing CSS files can be included (prepended) in the bundled
434
- output too.
502
+ `.mcss` stylesheets can be watched for changes (their definitions getting
503
+ merged), and existing CSS files can be included (prepended) in the output(s) too.
435
504
 
436
505
  ```text
437
506
  metacss convert --help
@@ -440,8 +509,10 @@ Usage: metacss convert [opts] input [...]
440
509
 
441
510
  Flags:
442
511
 
512
+ -b, --bundle Bundle inputs (see `out` option)
443
513
  -d, --no-decls Don't emit framework decls
444
514
  --no-header Don't emit generated header comment
515
+ --no-write Don't write files, use stdout only
445
516
  -p, --pretty Pretty print output
446
517
  -v, --verbose Display extra process information
447
518
  -w, --watch Watch input files for changes
@@ -457,6 +528,16 @@ Main:
457
528
  -s STR, --specs STR [required] Path to generated JSON defs
458
529
  ```
459
530
 
531
+ Notes:
532
+
533
+ - The `--no-write` flag is only used if `--bundle` is **disabled**
534
+ - The `--out` file arg is only used if `--bundle` is **enabled**
535
+
536
+ If bundling is disabled (default), each input `.mcss` file is converted
537
+ individually and results are written to the same directory, but using `.css` as
538
+ file extension (and unless `--no-write` is enabled). This behavior is intended
539
+ for local style definitions of web components.
540
+
460
541
  ### Meta-stylesheets syntax
461
542
 
462
543
  As mentioned earlier, the `convert` command transpiles meta-stylesheets into
@@ -480,8 +561,8 @@ selector {
480
561
 
481
562
  #### Class identifiers & media query prefixes
482
563
 
483
- As indicated by the above file structure, `*.meta` stylesheets purely consist of
484
- CSS selectors and the names of the generated framework-defined utility classes.
564
+ As indicated by the above file structure, `.mcss` stylesheets purely consist of
565
+ CSS selectors and the names of the utility classes defined in a generated framework.
485
566
  For example, using the [bundled framework specs](#bundled-css-base-framework),
486
567
  this simple meta-stylesheet `body { ma0 monospace blue }` creates a CSS rule for
487
568
  `body` with the definitions of the generated `ma0`, `monospace` and `blue`
@@ -498,11 +579,11 @@ body {
498
579
  #### Media query prefixes
499
580
 
500
581
  This toolchain doesn't pre-generate media-query-specific versions of any CSS
501
- class, and any class ID/token can be prefixed with any number of media query IDs
502
- (separated by `:`). These [media queries are defined as part of the framework
503
- generation specs](#media-query-definitions) and when used as a prefix, multiple
504
- query IDs can be combined freely. For example, the meta-stylesheet `a:hover {
505
- dark:bg-blue dark:anim:bg-anim2 }` will auto-create two separate CSS
582
+ class, and any utility class ID/token can be prefixed with any number of media
583
+ query IDs (separated by `:`). These [media queries are defined as part of the
584
+ framework generation specs](#media-query-definitions) and when used as a prefix,
585
+ multiple query IDs can be combined freely. For example, the meta-stylesheet
586
+ `a:hover { dark:bg-color-blue dark:anim:bg-anim2 }` will auto-create two separate CSS
506
587
  `@media`-query blocks for the query IDs `dark` and `(dark AND anim)`:
507
588
 
508
589
  ```css
@@ -521,44 +602,45 @@ dark:bg-blue dark:anim:bg-anim2 }` will auto-create two separate CSS
521
602
 
522
603
  A more detailed example, split over two files (for merging & bundling):
523
604
 
524
- readme.meta:
605
+ readme.mcss:
525
606
 
526
- ```text tangle:export/readme.meta
607
+ ```text tangle:export/readme.mcss
527
608
  body {
528
609
  // no margins
529
610
  ma0
530
611
  // default colors
531
- bg-white black
612
+ bg-color-white color-black
532
613
  // colors for dark mode
533
- dark:bg-black dark:white
614
+ dark:bg-color-black dark:color-white
534
615
  }
535
616
 
536
617
  #app { ma3 }
537
618
 
538
619
  .bt-group-v > a {
539
620
  db w-100 l:w-50 ph3 pv2 bwb1
540
- dark:bg-purple dark:white dark:b--black
541
- light:bg-light-blue light:black light:b--white
621
+ dark:bg-color-purple dark:color-white dark:b--color-black
622
+ light:bg-color-light-blue light:color-black light:b--color-white
542
623
 
543
624
  // nested selectors
544
625
  {
545
- :hover { bg-gold black anim:bg-anim2 }
626
+ :hover { bg-color-gold color-black anim:bg-anim2 }
546
627
  :first-child { brt3 }
547
628
  :last-child { brb3 bwb0 }
548
629
  }
549
630
  }
550
631
  ```
551
632
 
552
- readme2.meta:
633
+ readme2.mcss:
553
634
 
554
635
  We will merge the definitions in this file with the ones above (i.e. adding &
555
636
  overriding some of the declarations, here: a larger border radius):
556
637
 
557
- ```text tangle:export/readme2.meta
638
+ ```text tangle:export/readme2.mcss
558
639
  #app { pa2 }
559
640
 
560
641
  .bt-group-v > a {
561
642
  {
643
+ // override border radii
562
644
  :first-child { brt4 }
563
645
  :last-child { brb4 }
564
646
  }
@@ -568,10 +650,10 @@ overriding some of the declarations, here: a larger border radius):
568
650
  ```bash
569
651
  # if no --out dir is specified, writes result to stdout...
570
652
  # use previously generated framework for resolving all identifiers & media queries
571
- metacss convert --pretty --specs framework.json readme.meta readme2.meta
653
+ metacss convert --pretty --specs framework.json readme.mcss readme2.mcss
572
654
  ```
573
655
 
574
- Resulting CSS bundle output:
656
+ Resulting merged CSS bundle output:
575
657
 
576
658
  ```css
577
659
  /*! MetaCSS base v0.0.1 - generated by thi.ng/meta-css @ 2023-12-18T12:22:36.548Z */
@@ -665,7 +747,7 @@ verbatim and will **not** be transformed or reformatted in any way.
665
747
  ### Force inclusion of unreferenced classes
666
748
 
667
749
  Only the CSS classes (and their optionally associated media queries) referenced
668
- in a `.meta` stylesheet will appear in the export CSS bundle. This ensures that
750
+ in a `.mcss` stylesheet will appear in the export CSS bundle. This ensures that
669
751
  the resulting CSS will only contain what's actually used (same effect as
670
752
  tree-shaking, only vastly more efficient). However, this also means any CSS
671
753
  classes (and optionally, their media query qualifiers) which are otherwise
@@ -689,23 +771,13 @@ framework generation aspects of this toolchain. This command merely takes an
689
771
  existing generated framework JSON file and serializes it to a single CSS file,
690
772
  e.g. to be then used with other CSS tooling (e.g. `postcss`).
691
773
 
692
- ### Media query variations
693
-
694
- Users can choose to generate variations of all defined utility classes for any
695
- of the framework-defined media query IDs. This will create additional suffixed
696
- versions of all classes (with their appropriate media query wrappers) and cause
697
- a potentially massive output (depending on the overall number/complexity of the
698
- generated classes). Again, the idea is that the resulting CSS file will be
699
- post-processed with 3rd party CSS tooling...
700
-
701
- For example, if the framework contains a CSS class `w-50` (e.g. to set the width
702
- to 50%) and media queries for different screen sizes (e.g. named `ns`, `l`),
703
- then the export with said media queries will also generate classes `w-50-ns`
704
- and `w-50-l` (incl. their corresponding `@media` wrappers).
705
-
706
774
  As with the `convert` command, additional CSS files can also be included
707
775
  (prepended) in the output file.
708
776
 
777
+ If the `--only-decls` option is used, **only** the [framework
778
+ declarations](#custom-declarations) but none of the generated utility classes
779
+ will be exported.
780
+
709
781
  ```text
710
782
  metacss export --help
711
783
 
@@ -715,6 +787,7 @@ Flags:
715
787
 
716
788
  -d, --no-decls Don't emit framework decls
717
789
  --no-header Don't emit generated header comment
790
+ --only-decls Only emit framework decls
718
791
  -p, --pretty Pretty print output
719
792
  -v, --verbose Display extra process information
720
793
 
@@ -725,11 +798,25 @@ Main:
725
798
  -o STR, --out STR Output file (or stdout)
726
799
  ```
727
800
 
801
+ ### Media query variations
802
+
803
+ Users can choose to generate variations of all defined utility classes for any
804
+ of the framework-defined media query IDs. This will create additional suffixed
805
+ versions of all classes (with their appropriate media query wrappers) and cause
806
+ a potentially massive output (depending on the overall number/complexity of the
807
+ generated classes). Again, the idea is that the resulting CSS file will be
808
+ post-processed with 3rd party CSS tooling...
809
+
810
+ For example, if the framework contains a CSS class `w-50` (e.g. to set the width
811
+ to 50%) and media queries for different screen sizes (e.g. named `ns`, `l`),
812
+ then the export with said media queries will also generate classes `w-50-ns`
813
+ and `w-50-l` (incl. their corresponding `@media` wrappers).
814
+
728
815
  ## Bundled CSS base framework
729
816
 
730
- The package includes a large number of useful specs in [/specs](https://github.com/thi-ng/umbrella/blob/develop/packages/meta-css/specs/). These are provided as starting point to define your custom framework(s)...
817
+ The package includes a large number of useful specs in [/specs](https://github.com/thi-ng/umbrella/blob/develop/packages/meta-css/specs/). These are readily usable, but also are provided as starting point to define your own custom framework(s)...
731
818
 
732
- Currently available CSS classes in MetaCSS base v0.0.1:
819
+ Currently, there are 940 CSS utility classes defined in MetaCSS base v0.0.1:
733
820
 
734
821
  ### Classes by category
735
822
 
@@ -739,11 +826,11 @@ Currently available CSS classes in MetaCSS base v0.0.1:
739
826
 
740
827
  #### Animations / transitions <!-- notoc -->
741
828
 
742
- `bg-anim1` / `bg-anim2` / `bg-anim3` / `fadein1` / `fadein2` / `fadein3`
829
+ `anim-alternate` / `anim-alternate-reverse` / `anim-normal` / `anim-reverse` / `bg-anim1` / `bg-anim2` / `bg-anim3` / `fadein1` / `fadein2` / `fadein3` / `fadeout1` / `fadeout2` / `fadeout3` / `spin1` / `spin2` / `spin3`
743
830
 
744
831
  #### Aspect ratios <!-- notoc -->
745
832
 
746
- `aspect-ratio-16x9` / `aspect-ratio-1x1` / `aspect-ratio-3x4` / `aspect-ratio-4x3` / `aspect-ratio-4x6` / `aspect-ratio-6x4` / `aspect-ratio-9x16` / `aspect-ratio-object`
833
+ `aspect-ratio-1x1` / `aspect-ratio-1x2` / `aspect-ratio-2x1` / `aspect-ratio-2x3` / `aspect-ratio-3x2` / `aspect-ratio-3x4` / `aspect-ratio-4x3` / `aspect-ratio-5x7` / `aspect-ratio-7x5` / `aspect-ratio-9x16` / `aspect-ratio-16x9` / `bg-aspect-ratio-1x1` / `bg-aspect-ratio-1x2` / `bg-aspect-ratio-2x1` / `bg-aspect-ratio-2x3` / `bg-aspect-ratio-3x2` / `bg-aspect-ratio-3x4` / `bg-aspect-ratio-4x3` / `bg-aspect-ratio-5x7` / `bg-aspect-ratio-7x5` / `bg-aspect-ratio-9x16` / `bg-aspect-ratio-16x9` / `bg-aspect-ratio-object`
747
834
 
748
835
  #### Background <!-- notoc -->
749
836
 
@@ -751,15 +838,19 @@ Currently available CSS classes in MetaCSS base v0.0.1:
751
838
 
752
839
  #### Border radius <!-- notoc -->
753
840
 
754
- `br-100` / `br-pill` / `br0` / `br1` / `br2` / `br3` / `br4` / `brb0` / `brb1` / `brb2` / `brb3` / `brb4` / `brl0` / `brl1` / `brl2` / `brl3` / `brl4` / `brr0` / `brr1` / `brr2` / `brr3` / `brr4` / `brt0` / `brt1` / `brt2` / `brt3` / `brt4`
841
+ `br0` / `br1` / `br2` / `br3` / `br4` / `br-100` / `br-pill` / `brb0` / `brb1` / `brb2` / `brb3` / `brb4` / `brl0` / `brl1` / `brl2` / `brl3` / `brl4` / `brr0` / `brr1` / `brr2` / `brr3` / `brr4` / `brt0` / `brt1` / `brt2` / `brt3` / `brt4`
755
842
 
756
843
  #### Border width <!-- notoc -->
757
844
 
758
- `bw-1px` / `bw0` / `bw1` / `bw2` / `bw3` / `bw4` / `bw5` / `bwb-1px` / `bwb0` / `bwb1` / `bwb2` / `bwb3` / `bwb4` / `bwb5` / `bwl-1px` / `bwl0` / `bwl1` / `bwl2` / `bwl3` / `bwl4` / `bwl5` / `bwr-1px` / `bwr0` / `bwr1` / `bwr2` / `bwr3` / `bwr4` / `bwr5` / `bwt-1px` / `bwt0` / `bwt1` / `bwt2` / `bwt3` / `bwt4` / `bwt5`
845
+ `bw0` / `bw1` / `bw2` / `bw3` / `bw4` / `bw5` / `bw-1px` / `bwb0` / `bwb1` / `bwb2` / `bwb3` / `bwb4` / `bwb5` / `bwb-1px` / `bwl0` / `bwl1` / `bwl2` / `bwl3` / `bwl4` / `bwl5` / `bwl-1px` / `bwr0` / `bwr1` / `bwr2` / `bwr3` / `bwr4` / `bwr5` / `bwr-1px` / `bwt0` / `bwt1` / `bwt2` / `bwt3` / `bwt4` / `bwt5` / `bwt-1px`
759
846
 
760
847
  #### Colors <!-- notoc -->
761
848
 
762
- `b--black` / `b--blue` / `b--dark-blue` / `b--dark-gray` / `b--dark-green` / `b--dark-pink` / `b--dark-red` / `b--gold` / `b--gray` / `b--green` / `b--hot-pink` / `b--light-blue` / `b--light-gray` / `b--light-green` / `b--light-pink` / `b--light-purple` / `b--light-red` / `b--light-silver` / `b--light-yellow` / `b--lightest-blue` / `b--mid-gray` / `b--moon-gray` / `b--navy` / `b--near-black` / `b--near-white` / `b--orange` / `b--pink` / `b--purple` / `b--red` / `b--silver` / `b--transparent` / `b--vcol1` / `b--vcol10` / `b--vcol11` / `b--vcol12` / `b--vcol13` / `b--vcol14` / `b--vcol15` / `b--vcol16` / `b--vcol2` / `b--vcol3` / `b--vcol4` / `b--vcol5` / `b--vcol6` / `b--vcol7` / `b--vcol8` / `b--vcol9` / `b--washed-blue` / `b--washed-green` / `b--washed-red` / `b--washed-yellow` / `b--white` / `b--yellow` / `bg-black` / `bg-blue` / `bg-dark-blue` / `bg-dark-gray` / `bg-dark-green` / `bg-dark-pink` / `bg-dark-red` / `bg-gold` / `bg-gray` / `bg-green` / `bg-hot-pink` / `bg-light-blue` / `bg-light-gray` / `bg-light-green` / `bg-light-pink` / `bg-light-purple` / `bg-light-red` / `bg-light-silver` / `bg-light-yellow` / `bg-lightest-blue` / `bg-mid-gray` / `bg-moon-gray` / `bg-navy` / `bg-near-black` / `bg-near-white` / `bg-orange` / `bg-pink` / `bg-purple` / `bg-red` / `bg-silver` / `bg-transparent` / `bg-vcol1` / `bg-vcol10` / `bg-vcol11` / `bg-vcol12` / `bg-vcol13` / `bg-vcol14` / `bg-vcol15` / `bg-vcol16` / `bg-vcol2` / `bg-vcol3` / `bg-vcol4` / `bg-vcol5` / `bg-vcol6` / `bg-vcol7` / `bg-vcol8` / `bg-vcol9` / `bg-washed-blue` / `bg-washed-green` / `bg-washed-red` / `bg-washed-yellow` / `bg-white` / `bg-yellow` / `black` / `blue` / `dark-blue` / `dark-gray` / `dark-green` / `dark-pink` / `dark-red` / `gold` / `gray` / `green` / `hot-pink` / `light-blue` / `light-gray` / `light-green` / `light-pink` / `light-purple` / `light-red` / `light-silver` / `light-yellow` / `lightest-blue` / `mid-gray` / `moon-gray` / `navy` / `near-black` / `near-white` / `o-0` / `o-10` / `o-100` / `o-20` / `o-30` / `o-40` / `o-50` / `o-60` / `o-70` / `o-80` / `o-90` / `orange` / `pink` / `purple` / `red` / `silver` / `transparent` / `vcol1` / `vcol10` / `vcol11` / `vcol12` / `vcol13` / `vcol14` / `vcol15` / `vcol16` / `vcol2` / `vcol3` / `vcol4` / `vcol5` / `vcol6` / `vcol7` / `vcol8` / `vcol9` / `washed-blue` / `washed-green` / `washed-red` / `washed-yellow` / `white` / `yellow`
849
+ `b--color-black` / `b--color-blue` / `b--color-current` / `b--color-dark-blue` / `b--color-dark-gray` / `b--color-dark-green` / `b--color-dark-pink` / `b--color-dark-red` / `b--color-gold` / `b--color-gray` / `b--color-green` / `b--color-hot-pink` / `b--color-light-blue` / `b--color-light-gray` / `b--color-light-green` / `b--color-light-pink` / `b--color-light-purple` / `b--color-light-red` / `b--color-light-silver` / `b--color-light-yellow` / `b--color-lightest-blue` / `b--color-mid-gray` / `b--color-moon-gray` / `b--color-navy` / `b--color-near-black` / `b--color-near-white` / `b--color-orange` / `b--color-pink` / `b--color-purple` / `b--color-red` / `b--color-silver` / `b--color-transparent` / `b--color-washed-blue` / `b--color-washed-green` / `b--color-washed-red` / `b--color-washed-yellow` / `b--color-white` / `b--color-yellow` / `b--color1` / `b--color2` / `b--color3` / `b--color4` / `b--color5` / `b--color6` / `b--color7` / `b--color8` / `b--color9` / `b--color10` / `b--color11` / `b--color12` / `b--color13` / `b--color14` / `b--color15` / `b--color16` / `bg-color-black` / `bg-color-blue` / `bg-color-current` / `bg-color-dark-blue` / `bg-color-dark-gray` / `bg-color-dark-green` / `bg-color-dark-pink` / `bg-color-dark-red` / `bg-color-gold` / `bg-color-gray` / `bg-color-green` / `bg-color-hot-pink` / `bg-color-light-blue` / `bg-color-light-gray` / `bg-color-light-green` / `bg-color-light-pink` / `bg-color-light-purple` / `bg-color-light-red` / `bg-color-light-silver` / `bg-color-light-yellow` / `bg-color-lightest-blue` / `bg-color-mid-gray` / `bg-color-moon-gray` / `bg-color-navy` / `bg-color-near-black` / `bg-color-near-white` / `bg-color-orange` / `bg-color-pink` / `bg-color-purple` / `bg-color-red` / `bg-color-silver` / `bg-color-transparent` / `bg-color-washed-blue` / `bg-color-washed-green` / `bg-color-washed-red` / `bg-color-washed-yellow` / `bg-color-white` / `bg-color-yellow` / `bg-color1` / `bg-color2` / `bg-color3` / `bg-color4` / `bg-color5` / `bg-color6` / `bg-color7` / `bg-color8` / `bg-color9` / `bg-color10` / `bg-color11` / `bg-color12` / `bg-color13` / `bg-color14` / `bg-color15` / `bg-color16` / `color-black` / `color-blue` / `color-current` / `color-dark-blue` / `color-dark-gray` / `color-dark-green` / `color-dark-pink` / `color-dark-red` / `color-gold` / `color-gray` / `color-green` / `color-hot-pink` / `color-light-blue` / `color-light-gray` / `color-light-green` / `color-light-pink` / `color-light-purple` / `color-light-red` / `color-light-silver` / `color-light-yellow` / `color-lightest-blue` / `color-mid-gray` / `color-moon-gray` / `color-navy` / `color-near-black` / `color-near-white` / `color-orange` / `color-pink` / `color-purple` / `color-red` / `color-silver` / `color-transparent` / `color-washed-blue` / `color-washed-green` / `color-washed-red` / `color-washed-yellow` / `color-white` / `color-yellow` / `color1` / `color2` / `color3` / `color4` / `color5` / `color6` / `color7` / `color8` / `color9` / `color10` / `color11` / `color12` / `color13` / `color14` / `color15` / `color16` / `fill-color-black` / `fill-color-blue` / `fill-color-current` / `fill-color-dark-blue` / `fill-color-dark-gray` / `fill-color-dark-green` / `fill-color-dark-pink` / `fill-color-dark-red` / `fill-color-gold` / `fill-color-gray` / `fill-color-green` / `fill-color-hot-pink` / `fill-color-light-blue` / `fill-color-light-gray` / `fill-color-light-green` / `fill-color-light-pink` / `fill-color-light-purple` / `fill-color-light-red` / `fill-color-light-silver` / `fill-color-light-yellow` / `fill-color-lightest-blue` / `fill-color-mid-gray` / `fill-color-moon-gray` / `fill-color-navy` / `fill-color-near-black` / `fill-color-near-white` / `fill-color-orange` / `fill-color-pink` / `fill-color-purple` / `fill-color-red` / `fill-color-silver` / `fill-color-transparent` / `fill-color-washed-blue` / `fill-color-washed-green` / `fill-color-washed-red` / `fill-color-washed-yellow` / `fill-color-white` / `fill-color-yellow` / `fill-color1` / `fill-color2` / `fill-color3` / `fill-color4` / `fill-color5` / `fill-color6` / `fill-color7` / `fill-color8` / `fill-color9` / `fill-color10` / `fill-color11` / `fill-color12` / `fill-color13` / `fill-color14` / `fill-color15` / `fill-color16` / `o-0` / `o-10` / `o-20` / `o-30` / `o-40` / `o-50` / `o-60` / `o-70` / `o-80` / `o-90` / `o-100` / `stroke-color-black` / `stroke-color-blue` / `stroke-color-current` / `stroke-color-dark-blue` / `stroke-color-dark-gray` / `stroke-color-dark-green` / `stroke-color-dark-pink` / `stroke-color-dark-red` / `stroke-color-gold` / `stroke-color-gray` / `stroke-color-green` / `stroke-color-hot-pink` / `stroke-color-light-blue` / `stroke-color-light-gray` / `stroke-color-light-green` / `stroke-color-light-pink` / `stroke-color-light-purple` / `stroke-color-light-red` / `stroke-color-light-silver` / `stroke-color-light-yellow` / `stroke-color-lightest-blue` / `stroke-color-mid-gray` / `stroke-color-moon-gray` / `stroke-color-navy` / `stroke-color-near-black` / `stroke-color-near-white` / `stroke-color-orange` / `stroke-color-pink` / `stroke-color-purple` / `stroke-color-red` / `stroke-color-silver` / `stroke-color-transparent` / `stroke-color-washed-blue` / `stroke-color-washed-green` / `stroke-color-washed-red` / `stroke-color-washed-yellow` / `stroke-color-white` / `stroke-color-yellow` / `stroke-color1` / `stroke-color2` / `stroke-color3` / `stroke-color4` / `stroke-color5` / `stroke-color6` / `stroke-color7` / `stroke-color8` / `stroke-color9` / `stroke-color10` / `stroke-color11` / `stroke-color12` / `stroke-color13` / `stroke-color14` / `stroke-color15` / `stroke-color16`
850
+
851
+ #### Content <!-- notoc -->
852
+
853
+ `content-data-lang` / `content-href` / `content-id` / `content-name` / `content-slot` / `content-title`
763
854
 
764
855
  #### Cursors <!-- notoc -->
765
856
 
@@ -767,7 +858,11 @@ Currently available CSS classes in MetaCSS base v0.0.1:
767
858
 
768
859
  #### Display mode <!-- notoc -->
769
860
 
770
- `db` / `df` / `dg` / `di` / `dib` / `dif` / `dig` / `dn` / `dt` / `dtc` / `dtr`
861
+ `db` / `di` / `dib` / `dif` / `dig` / `dn` / `dt` / `dtc` / `dtr` / `flex` / `grid`
862
+
863
+ #### Flex layout <!-- notoc -->
864
+
865
+ `align-content-center` / `align-content-end` / `align-content-start` / `flex-column` / `flex-column-reverse` / `flex-grow0` / `flex-grow1` / `flex-nowrap` / `flex-row` / `flex-row-reverse` / `flex-shrink0` / `flex-shrink1` / `flex-wrap` / `flex-wrap-reverse` / `justify-content-center` / `justify-content-end` / `justify-content-start`
771
866
 
772
867
  #### Font families <!-- notoc -->
773
868
 
@@ -791,11 +886,11 @@ Currently available CSS classes in MetaCSS base v0.0.1:
791
886
 
792
887
  #### Grid layout <!-- notoc -->
793
888
 
794
- `align-items-center` / `align-items-end` / `align-items-start` / `align-items-stretch` / `align-self-center` / `align-self-end` / `align-self-start` / `align-self-stretch` / `gap-1px` / `gap-2px` / `gap-4px` / `gap-8px` / `gap0` / `gap1` / `gap2` / `gap3` / `gap4` / `gap5` / `grid-cols-1` / `grid-cols-10` / `grid-cols-2` / `grid-cols-3` / `grid-cols-4` / `grid-cols-5` / `grid-cols-6` / `grid-cols-7` / `grid-cols-8` / `grid-cols-9` / `grid-rows-1` / `grid-rows-10` / `grid-rows-2` / `grid-rows-3` / `grid-rows-4` / `grid-rows-5` / `grid-rows-6` / `grid-rows-7` / `grid-rows-8` / `grid-rows-9` / `justify-items-center` / `justify-items-end` / `justify-items-start` / `justify-items-stretch` / `justify-self-center` / `justify-self-end` / `justify-self-start` / `justify-self-stretch`
889
+ `align-items-center` / `align-items-end` / `align-items-start` / `align-items-stretch` / `align-self-center` / `align-self-end` / `align-self-start` / `align-self-stretch` / `gap0` / `gap1` / `gap2` / `gap3` / `gap4` / `gap5` / `gap-1px` / `gap-2px` / `gap-4px` / `gap-8px` / `grid-cols-1` / `grid-cols-2` / `grid-cols-3` / `grid-cols-4` / `grid-cols-5` / `grid-cols-6` / `grid-cols-7` / `grid-cols-8` / `grid-cols-9` / `grid-cols-10` / `grid-rows-1` / `grid-rows-2` / `grid-rows-3` / `grid-rows-4` / `grid-rows-5` / `grid-rows-6` / `grid-rows-7` / `grid-rows-8` / `grid-rows-9` / `grid-rows-10` / `justify-items-center` / `justify-items-end` / `justify-items-start` / `justify-items-stretch` / `justify-self-center` / `justify-self-end` / `justify-self-start` / `justify-self-stretch`
795
890
 
796
891
  #### Height <!-- notoc -->
797
892
 
798
- `h-10` / `h-100` / `h-16` / `h-17` / `h-20` / `h-25` / `h-30` / `h-33` / `h-34` / `h-40` / `h-50` / `h-60` / `h-66` / `h-67` / `h-70` / `h-75` / `h-80` / `h-83` / `h-84` / `h-90` / `h1` / `h2` / `h3` / `h4` / `h5`
893
+ `h1` / `h2` / `h3` / `h4` / `h5` / `h-10` / `h-16` / `h-17` / `h-20` / `h-25` / `h-30` / `h-33` / `h-34` / `h-40` / `h-50` / `h-60` / `h-66` / `h-67` / `h-70` / `h-75` / `h-80` / `h-83` / `h-84` / `h-90` / `h-100` / `vh-25` / `vh-50` / `vh-75` / `vh-100`
799
894
 
800
895
  #### Icons <!-- notoc -->
801
896
 
@@ -803,7 +898,7 @@ Currently available CSS classes in MetaCSS base v0.0.1:
803
898
 
804
899
  #### Letter spacing <!-- notoc -->
805
900
 
806
- `ls--1` / `ls--2` / `ls-0` / `ls-1` / `ls-2` / `ls-3`
901
+ `ls-0` / `ls-1` / `ls-2` / `ls-3` / `ls--1` / `ls--2`
807
902
 
808
903
  #### Line heights <!-- notoc -->
809
904
 
@@ -815,23 +910,23 @@ Currently available CSS classes in MetaCSS base v0.0.1:
815
910
 
816
911
  #### Margin <!-- notoc -->
817
912
 
818
- `center` / `ma0` / `ma1` / `ma2` / `ma3` / `ma4` / `mb0` / `mb1` / `mb2` / `mb3` / `mb4` / `mh0` / `mh1` / `mh2` / `mh3` / `mh4` / `ml0` / `ml1` / `ml2` / `ml3` / `ml4` / `mr0` / `mr1` / `mr2` / `mr3` / `mr4` / `mt0` / `mt1` / `mt2` / `mt3` / `mt4` / `mv0` / `mv1` / `mv2` / `mv3` / `mv4`
913
+ `center` / `ma0` / `ma1` / `ma2` / `ma3` / `ma4` / `ma5` / `mb0` / `mb1` / `mb2` / `mb3` / `mb4` / `mb5` / `mbe-0` / `mbe-1` / `mbe-2` / `mbe-3` / `mbe-4` / `mbe-5` / `mbs-0` / `mbs-1` / `mbs-2` / `mbs-3` / `mbs-4` / `mbs-5` / `mh0` / `mh1` / `mh2` / `mh3` / `mh4` / `mh5` / `ml0` / `ml1` / `ml2` / `ml3` / `ml4` / `ml5` / `mr0` / `mr1` / `mr2` / `mr3` / `mr4` / `mr5` / `mt0` / `mt1` / `mt2` / `mt3` / `mt4` / `mt5` / `mv0` / `mv1` / `mv2` / `mv3` / `mv4` / `mv5`
819
914
 
820
915
  #### Max. height <!-- notoc -->
821
916
 
822
- `maxh-10` / `maxh-100` / `maxh-16` / `maxh-17` / `maxh-20` / `maxh-25` / `maxh-30` / `maxh-33` / `maxh-34` / `maxh-40` / `maxh-50` / `maxh-60` / `maxh-66` / `maxh-67` / `maxh-70` / `maxh-75` / `maxh-80` / `maxh-83` / `maxh-84` / `maxh-90` / `maxh1` / `maxh2` / `maxh3` / `maxh4` / `maxh5`
917
+ `maxh1` / `maxh2` / `maxh3` / `maxh4` / `maxh5` / `maxh-10` / `maxh-16` / `maxh-17` / `maxh-20` / `maxh-25` / `maxh-30` / `maxh-33` / `maxh-34` / `maxh-40` / `maxh-50` / `maxh-60` / `maxh-66` / `maxh-67` / `maxh-70` / `maxh-75` / `maxh-80` / `maxh-83` / `maxh-84` / `maxh-90` / `maxh-100`
823
918
 
824
919
  #### Max. width <!-- notoc -->
825
920
 
826
- `maxw-10` / `maxw-100` / `maxw-16` / `maxw-17` / `maxw-20` / `maxw-25` / `maxw-30` / `maxw-33` / `maxw-34` / `maxw-40` / `maxw-50` / `maxw-60` / `maxw-66` / `maxw-67` / `maxw-70` / `maxw-75` / `maxw-80` / `maxw-83` / `maxw-84` / `maxw-90` / `maxw1` / `maxw2` / `maxw3` / `maxw4` / `maxw5`
921
+ `maxw1` / `maxw2` / `maxw3` / `maxw4` / `maxw5` / `maxw-10` / `maxw-16` / `maxw-17` / `maxw-20` / `maxw-25` / `maxw-30` / `maxw-33` / `maxw-34` / `maxw-40` / `maxw-50` / `maxw-60` / `maxw-66` / `maxw-67` / `maxw-70` / `maxw-75` / `maxw-80` / `maxw-83` / `maxw-84` / `maxw-90` / `maxw-100`
827
922
 
828
923
  #### Min. height <!-- notoc -->
829
924
 
830
- `minh-10` / `minh-100` / `minh-16` / `minh-17` / `minh-20` / `minh-25` / `minh-30` / `minh-33` / `minh-34` / `minh-40` / `minh-50` / `minh-60` / `minh-66` / `minh-67` / `minh-70` / `minh-75` / `minh-80` / `minh-83` / `minh-84` / `minh-90` / `minh1` / `minh2` / `minh3` / `minh4` / `minh5`
925
+ `minh1` / `minh2` / `minh3` / `minh4` / `minh5` / `minh-10` / `minh-16` / `minh-17` / `minh-20` / `minh-25` / `minh-30` / `minh-33` / `minh-34` / `minh-40` / `minh-50` / `minh-60` / `minh-66` / `minh-67` / `minh-70` / `minh-75` / `minh-80` / `minh-83` / `minh-84` / `minh-90` / `minh-100`
831
926
 
832
927
  #### Min. width <!-- notoc -->
833
928
 
834
- `minw-10` / `minw-100` / `minw-16` / `minw-17` / `minw-20` / `minw-25` / `minw-30` / `minw-33` / `minw-34` / `minw-40` / `minw-50` / `minw-60` / `minw-66` / `minw-67` / `minw-70` / `minw-75` / `minw-80` / `minw-83` / `minw-84` / `minw-90` / `minw1` / `minw2` / `minw3` / `minw4` / `minw5`
929
+ `minw1` / `minw2` / `minw3` / `minw4` / `minw5` / `minw-10` / `minw-16` / `minw-17` / `minw-20` / `minw-25` / `minw-30` / `minw-33` / `minw-34` / `minw-40` / `minw-50` / `minw-60` / `minw-66` / `minw-67` / `minw-70` / `minw-75` / `minw-80` / `minw-83` / `minw-84` / `minw-90` / `minw-100`
835
930
 
836
931
  #### Overflow <!-- notoc -->
837
932
 
@@ -839,11 +934,19 @@ Currently available CSS classes in MetaCSS base v0.0.1:
839
934
 
840
935
  #### Padding <!-- notoc -->
841
936
 
842
- `pa0` / `pa1` / `pa2` / `pa3` / `pa4` / `pb0` / `pb1` / `pb2` / `pb3` / `pb4` / `ph0` / `ph1` / `ph2` / `ph3` / `ph4` / `pl0` / `pl1` / `pl2` / `pl3` / `pl4` / `pr0` / `pr1` / `pr2` / `pr3` / `pr4` / `pt0` / `pt1` / `pt2` / `pt3` / `pt4` / `pv0` / `pv1` / `pv2` / `pv3` / `pv4`
937
+ `pa0` / `pa1` / `pa2` / `pa3` / `pa4` / `pa5` / `pb0` / `pb1` / `pb2` / `pb3` / `pb4` / `pb5` / `pbe-0` / `pbe-1` / `pbe-2` / `pbe-3` / `pbe-4` / `pbe-5` / `pbs-0` / `pbs-1` / `pbs-2` / `pbs-3` / `pbs-4` / `pbs-5` / `ph0` / `ph1` / `ph2` / `ph3` / `ph4` / `ph5` / `pl0` / `pl1` / `pl2` / `pl3` / `pl4` / `pl5` / `pr0` / `pr1` / `pr2` / `pr3` / `pr4` / `pr5` / `pt0` / `pt1` / `pt2` / `pt3` / `pt4` / `pt5` / `pv0` / `pv1` / `pv2` / `pv3` / `pv4` / `pv5`
843
938
 
844
939
  #### Positions <!-- notoc -->
845
940
 
846
- `absolute` / `bottom--1` / `bottom--2` / `bottom-0` / `bottom-1` / `bottom-2` / `fixed` / `left--1` / `left--2` / `left-0` / `left-1` / `left-2` / `relative` / `right--1` / `right--2` / `right-0` / `right-1` / `right-2` / `static` / `sticky` / `top--1` / `top--2` / `top-0` / `top-1` / `top-2`
941
+ `absolute` / `bottom-0` / `bottom-1` / `bottom-2` / `bottom--1` / `bottom--2` / `fixed` / `left-0` / `left-1` / `left-2` / `left--1` / `left--2` / `relative` / `right-0` / `right-1` / `right-2` / `right--1` / `right--2` / `static` / `sticky` / `top-0` / `top-1` / `top-2` / `top--1` / `top--2`
942
+
943
+ #### Print <!-- notoc -->
944
+
945
+ `break-after-avoid` / `break-after-avoid-column` / `break-after-avoid-page` / `break-after-column` / `break-after-left` / `break-after-page` / `break-after-recto` / `break-after-right` / `break-after-verso` / `break-before-avoid` / `break-before-avoid-column` / `break-before-avoid-page` / `break-before-column` / `break-before-left` / `break-before-page` / `break-before-recto` / `break-before-right` / `break-before-verso`
946
+
947
+ #### Scrolling <!-- notoc -->
948
+
949
+ `ss-always` / `ss-both` / `ss-center` / `ss-end` / `ss-normal` / `ss-start` / `ss-x` / `ss-y`
847
950
 
848
951
  #### Selection <!-- notoc -->
849
952
 
@@ -865,17 +968,13 @@ Currently available CSS classes in MetaCSS base v0.0.1:
865
968
 
866
969
  `ttc` / `ttfsk` / `ttfw` / `tti` / `ttl` / `ttn` / `ttu`
867
970
 
868
- #### Undefined <!-- notoc -->
869
-
870
- `vh-100` / `vh-25` / `vh-50` / `vh-75` / `vw-100` / `vw-25` / `vw-50` / `vw-75`
871
-
872
971
  #### Vertical align <!-- notoc -->
873
972
 
874
973
  `v-base` / `v-btm` / `v-mid` / `v-top`
875
974
 
876
975
  #### Visibility <!-- notoc -->
877
976
 
878
- `hidden` / `visible`
977
+ `collapse` / `hidden` / `visible`
879
978
 
880
979
  #### Whitespace <!-- notoc -->
881
980
 
@@ -883,7 +982,7 @@ Currently available CSS classes in MetaCSS base v0.0.1:
883
982
 
884
983
  #### Width <!-- notoc -->
885
984
 
886
- `w-10` / `w-100` / `w-16` / `w-17` / `w-20` / `w-25` / `w-30` / `w-33` / `w-34` / `w-40` / `w-50` / `w-60` / `w-66` / `w-67` / `w-70` / `w-75` / `w-80` / `w-83` / `w-84` / `w-90` / `w1` / `w2` / `w3` / `w4` / `w5`
985
+ `vw-25` / `vw-50` / `vw-75` / `vw-100` / `w1` / `w2` / `w3` / `w4` / `w5` / `w-10` / `w-16` / `w-17` / `w-20` / `w-25` / `w-30` / `w-33` / `w-34` / `w-40` / `w-50` / `w-60` / `w-66` / `w-67` / `w-70` / `w-75` / `w-80` / `w-83` / `w-84` / `w-90` / `w-100`
887
986
 
888
987
  #### Z-indices <!-- notoc -->
889
988
 
@@ -920,7 +1019,7 @@ distributed as CLI bundle with **no runtime dependencies**. The following
920
1019
  dependencies are only shown for informational purposes and are (partially)
921
1020
  included in the bundle.
922
1021
 
923
- Package sizes (brotli'd, pre-treeshake): ESM: 11.46 KB
1022
+ Package sizes (brotli'd, pre-treeshake): ESM: 11.77 KB
924
1023
 
925
1024
  ## Dependencies
926
1025
 
@@ -947,6 +1046,7 @@ directory are using this package:
947
1046
  | Screenshot | Description | Live demo | Source |
948
1047
  |:-----------------------------------------------------------------------------------------------------------------------|:-----------------------------------------|:------------------------------------------------------|:-----------------------------------------------------------------------------------|
949
1048
  | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/meta-css-basics.png" width="240"/> | Basic thi.ng/meta-css usage & testbed | [Demo](https://demo.thi.ng/umbrella/meta-css-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/meta-css-basics) |
1049
+ | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-dnd.png" width="240"/> | rdom drag & drop example | [Demo](https://demo.thi.ng/umbrella/rdom-dnd/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-dnd) |
950
1050
  | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-lazy-load.png" width="240"/> | Lazy loading components via @thi.ng/rdom | [Demo](https://demo.thi.ng/umbrella/rdom-lazy-load/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-lazy-load) |
951
1051
 
952
1052
  ## Authors
@@ -966,4 +1066,4 @@ If this project contributes to an academic publication, please cite it as:
966
1066
 
967
1067
  ## License
968
1068
 
969
- &copy; 2023 Karsten Schmidt // Apache License 2.0
1069
+ &copy; 2023 - 2024 Karsten Schmidt // Apache License 2.0