@birdycom/omniacss 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +44 -44
  3. package/dist/oc-theme.css +1 -1
  4. package/dist/omnia.css +2 -1
  5. package/dist/omnia.min.css +1 -1
  6. package/dist/omnia.starter.css +2 -0
  7. package/dist/omnia.starter.min.css +1 -1
  8. package/dist/tokens/omnia.dtcg.json +2 -2
  9. package/dist/tokens/omnia.tokens.json +1 -1
  10. package/dist/tokens/omnia_tokens.py +2 -2
  11. package/package.json +63 -63
  12. package/scss/utilities/_anchor_positioning.scss +65 -65
  13. package/scss/utilities/_animation_properties.scss +143 -143
  14. package/scss/utilities/_borders_extended.scss +97 -97
  15. package/scss/utilities/_borders_outlines.scss +161 -161
  16. package/scss/utilities/_containment.scss +82 -82
  17. package/scss/utilities/_css_functions.scss +34 -34
  18. package/scss/utilities/_dark_mode.scss +117 -117
  19. package/scss/utilities/_drop_shadow_colors.scss +26 -26
  20. package/scss/utilities/_experimental_css.scss +149 -149
  21. package/scss/utilities/_flexbox.scss +317 -317
  22. package/scss/utilities/_font_variants.scss +139 -139
  23. package/scss/utilities/_gap.scss +103 -103
  24. package/scss/utilities/_gradient_stops.scss +48 -48
  25. package/scss/utilities/_grid.scss +672 -672
  26. package/scss/utilities/_layout_extras.scss +171 -171
  27. package/scss/utilities/_layout_flow.scss +210 -210
  28. package/scss/utilities/_mask_extras.scss +62 -62
  29. package/scss/utilities/_motion_transforms.scss +167 -167
  30. package/scss/utilities/_scroll_animations.scss +80 -80
  31. package/scss/utilities/_scrollbar.scss +2 -1
  32. package/scss/utilities/_shadow_tokens.scss +21 -21
  33. package/scss/utilities/_shapes.scss +72 -72
  34. package/scss/utilities/_sizing_logical.scss +99 -99
  35. package/scss/utilities/_starting_style.scss +53 -53
  36. package/scss/utilities/_state_variants.scss +196 -196
  37. package/scss/utilities/_svg.scss +100 -100
  38. package/scss/utilities/_table_advanced.scss +19 -19
  39. package/scss/utilities/_typography_advanced.scss +124 -124
  40. package/scss/utilities/_typography_modern.scss +83 -83
  41. package/scss/utilities/_view_transitions.scss +64 -64
  42. package/scss/utilities/_writing_modes.scss +72 -72
  43. package/scss/variables/_hulp.scss +107 -107
  44. package/scss/variables/_variables_effects.scss +108 -108
  45. package/src/postcss.mjs +43 -43
  46. package/src/tokens.mjs +377 -377
  47. package/src/variants.mjs +278 -278
  48. package/tokens/semantic.json +80 -80
@@ -1,124 +1,124 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_typography_advanced.scss
3
- // Map: smoothing/stretch/clamp/list-image/text-overflow/wrap/indent/overflow-wrap/hyphens/content/quotes/counters/line-height keywords
4
-
5
- /* Font smoothing */
6
- .antialiased {
7
- -webkit-font-smoothing: antialiased;
8
- -moz-osx-font-smoothing: grayscale;
9
- }
10
- .subpixel-antialiased {
11
- -webkit-font-smoothing: auto;
12
- -moz-osx-font-smoothing: auto;
13
- }
14
-
15
- /* Font stretch */
16
- .font-stretch-ultra-condensed { font-stretch: ultra-condensed; }
17
- .font-stretch-extra-condensed { font-stretch: extra-condensed; }
18
- .font-stretch-condensed { font-stretch: condensed; }
19
- .font-stretch-semi-condensed { font-stretch: semi-condensed; }
20
- .font-stretch-normal { font-stretch: normal; }
21
- .font-stretch-semi-expanded { font-stretch: semi-expanded; }
22
- .font-stretch-expanded { font-stretch: expanded; }
23
- .font-stretch-extra-expanded { font-stretch: extra-expanded; }
24
- .font-stretch-ultra-expanded { font-stretch: ultra-expanded; }
25
-
26
- /* Line clamp */
27
- .line-clamp-none {
28
- overflow: visible;
29
- display: block;
30
- -webkit-box-orient: horizontal;
31
- -webkit-line-clamp: unset;
32
- }
33
- .line-clamp-1,
34
- .line-clamp-2,
35
- .line-clamp-3,
36
- .line-clamp-4,
37
- .line-clamp-5,
38
- .line-clamp-6 {
39
- overflow: hidden;
40
- display: -webkit-box;
41
- -webkit-box-orient: vertical;
42
- }
43
- .line-clamp-1 { -webkit-line-clamp: 1; }
44
- .line-clamp-2 { -webkit-line-clamp: 2; }
45
- .line-clamp-3 { -webkit-line-clamp: 3; }
46
- .line-clamp-4 { -webkit-line-clamp: 4; }
47
- .line-clamp-5 { -webkit-line-clamp: 5; }
48
- .line-clamp-6 { -webkit-line-clamp: 6; }
49
-
50
- /* List style image */
51
- .list-image-none { list-style-image: none; }
52
- .list-image-check { list-style-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%23059669' d='M10.3 3.3 5 8.6 1.7 5.3l1.1-1.1L5 6.4l4.2-4.2z'/%3E%3C/svg%3E"); }
53
- .list-image-dot { list-style-image: url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%228%22 height=%228%22%3E%3Ccircle cx=%224%22 cy=%224%22 r=%223%22 fill=%22%233b82f6%22/%3E%3C/svg%3E'); }
54
-
55
- /* Text overflow */
56
- .truncate {
57
- overflow: hidden;
58
- text-overflow: ellipsis;
59
- white-space: nowrap;
60
- }
61
- .text-ellipsis { text-overflow: ellipsis; }
62
- .text-clip { text-overflow: clip; }
63
-
64
- /* Text wrap */
65
- .text-wrap { text-wrap: wrap; }
66
- .text-nowrap { text-wrap: nowrap; }
67
- .text-balance { text-wrap: balance; }
68
- .text-pretty { text-wrap: pretty; }
69
-
70
- /* Text indent */
71
- .indent-0 { text-indent: 0; }
72
- .indent-1 { text-indent: 0.25rem; }
73
- .indent-2 { text-indent: 0.5rem; }
74
- .indent-4 { text-indent: 1rem; }
75
- .indent-8 { text-indent: 2rem; }
76
-
77
- /* Overflow wrap */
78
- .wrap-normal { overflow-wrap: normal; }
79
- .wrap-break-word { overflow-wrap: break-word; }
80
- .wrap-anywhere { overflow-wrap: anywhere; }
81
-
82
- /* Hyphens */
83
- .hyphens-none { hyphens: none; }
84
- .hyphens-manual { hyphens: manual; }
85
- .hyphens-auto { hyphens: auto; }
86
-
87
- /* Content helpers */
88
- .content-none::before,
89
- .content-none::after { content: none; }
90
- .content-empty::before,
91
- .content-empty::after { content: ""; }
92
- .content-open-quote::before { content: open-quote; }
93
- .content-close-quote::after { content: close-quote; }
94
- .content-attr::before { content: attr(data-oc-content); }
95
-
96
- /* Quotes */
97
- .quotes-none { quotes: none; }
98
- .quotes-auto { quotes: auto; }
99
- .quotes-french { quotes: "\00AB" "\00BB" "\2039" "\203A"; }
100
- .quotes-german { quotes: "\201E" "\201C" "\201A" "\2018"; }
101
- .quotes-english { quotes: "\201C" "\201D" "\2018" "\2019"; }
102
-
103
- /* Counters — reset/increment the "oc" counter and print it with ::before */
104
- .counter-reset { counter-reset: oc; }
105
- .counter-reset-none { counter-reset: none; }
106
- .counter-increment { counter-increment: oc; }
107
- .counter-increment-none { counter-increment: none; }
108
- .counter-set-0 { counter-set: oc 0; }
109
- .content-counter::before { content: counter(oc) ". "; }
110
- .content-counters::before { content: counters(oc, ".") " "; }
111
-
112
- /* List style type — newer predefined counter styles */
113
- .list-disclosure-open { list-style-type: disclosure-open; }
114
- .list-disclosure-closed { list-style-type: disclosure-closed; }
115
- .list-l-armenian { list-style-type: lower-armenian; }
116
- .list-cjk-decimal { list-style-type: cjk-decimal; }
117
-
118
- /* Line height keywords — unitless, scale with the font size (the .lineheight-{n} classes are fixed rem values) */
119
- .lineheight-none { line-height: 1; }
120
- .lineheight-tight { line-height: 1.25; }
121
- .lineheight-snug { line-height: 1.375; }
122
- .lineheight-relaxed { line-height: 1.625; }
123
- .lineheight-loose { line-height: 2; }
124
- .lineheight-normal { line-height: normal; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_typography_advanced.scss
3
+ // Map: smoothing/stretch/clamp/list-image/text-overflow/wrap/indent/overflow-wrap/hyphens/content/quotes/counters/line-height keywords
4
+
5
+ /* Font smoothing */
6
+ .antialiased {
7
+ -webkit-font-smoothing: antialiased;
8
+ -moz-osx-font-smoothing: grayscale;
9
+ }
10
+ .subpixel-antialiased {
11
+ -webkit-font-smoothing: auto;
12
+ -moz-osx-font-smoothing: auto;
13
+ }
14
+
15
+ /* Font stretch */
16
+ .font-stretch-ultra-condensed { font-stretch: ultra-condensed; }
17
+ .font-stretch-extra-condensed { font-stretch: extra-condensed; }
18
+ .font-stretch-condensed { font-stretch: condensed; }
19
+ .font-stretch-semi-condensed { font-stretch: semi-condensed; }
20
+ .font-stretch-normal { font-stretch: normal; }
21
+ .font-stretch-semi-expanded { font-stretch: semi-expanded; }
22
+ .font-stretch-expanded { font-stretch: expanded; }
23
+ .font-stretch-extra-expanded { font-stretch: extra-expanded; }
24
+ .font-stretch-ultra-expanded { font-stretch: ultra-expanded; }
25
+
26
+ /* Line clamp */
27
+ .line-clamp-none {
28
+ overflow: visible;
29
+ display: block;
30
+ -webkit-box-orient: horizontal;
31
+ -webkit-line-clamp: unset;
32
+ }
33
+ .line-clamp-1,
34
+ .line-clamp-2,
35
+ .line-clamp-3,
36
+ .line-clamp-4,
37
+ .line-clamp-5,
38
+ .line-clamp-6 {
39
+ overflow: hidden;
40
+ display: -webkit-box;
41
+ -webkit-box-orient: vertical;
42
+ }
43
+ .line-clamp-1 { -webkit-line-clamp: 1; }
44
+ .line-clamp-2 { -webkit-line-clamp: 2; }
45
+ .line-clamp-3 { -webkit-line-clamp: 3; }
46
+ .line-clamp-4 { -webkit-line-clamp: 4; }
47
+ .line-clamp-5 { -webkit-line-clamp: 5; }
48
+ .line-clamp-6 { -webkit-line-clamp: 6; }
49
+
50
+ /* List style image */
51
+ .list-image-none { list-style-image: none; }
52
+ .list-image-check { list-style-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%23059669' d='M10.3 3.3 5 8.6 1.7 5.3l1.1-1.1L5 6.4l4.2-4.2z'/%3E%3C/svg%3E"); }
53
+ .list-image-dot { list-style-image: url('data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%228%22 height=%228%22%3E%3Ccircle cx=%224%22 cy=%224%22 r=%223%22 fill=%22%233b82f6%22/%3E%3C/svg%3E'); }
54
+
55
+ /* Text overflow */
56
+ .truncate {
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ white-space: nowrap;
60
+ }
61
+ .text-ellipsis { text-overflow: ellipsis; }
62
+ .text-clip { text-overflow: clip; }
63
+
64
+ /* Text wrap */
65
+ .text-wrap { text-wrap: wrap; }
66
+ .text-nowrap { text-wrap: nowrap; }
67
+ .text-balance { text-wrap: balance; }
68
+ .text-pretty { text-wrap: pretty; }
69
+
70
+ /* Text indent */
71
+ .indent-0 { text-indent: 0; }
72
+ .indent-1 { text-indent: 0.25rem; }
73
+ .indent-2 { text-indent: 0.5rem; }
74
+ .indent-4 { text-indent: 1rem; }
75
+ .indent-8 { text-indent: 2rem; }
76
+
77
+ /* Overflow wrap */
78
+ .wrap-normal { overflow-wrap: normal; }
79
+ .wrap-break-word { overflow-wrap: break-word; }
80
+ .wrap-anywhere { overflow-wrap: anywhere; }
81
+
82
+ /* Hyphens */
83
+ .hyphens-none { hyphens: none; }
84
+ .hyphens-manual { hyphens: manual; }
85
+ .hyphens-auto { hyphens: auto; }
86
+
87
+ /* Content helpers */
88
+ .content-none::before,
89
+ .content-none::after { content: none; }
90
+ .content-empty::before,
91
+ .content-empty::after { content: ""; }
92
+ .content-open-quote::before { content: open-quote; }
93
+ .content-close-quote::after { content: close-quote; }
94
+ .content-attr::before { content: attr(data-oc-content); }
95
+
96
+ /* Quotes */
97
+ .quotes-none { quotes: none; }
98
+ .quotes-auto { quotes: auto; }
99
+ .quotes-french { quotes: "\00AB" "\00BB" "\2039" "\203A"; }
100
+ .quotes-german { quotes: "\201E" "\201C" "\201A" "\2018"; }
101
+ .quotes-english { quotes: "\201C" "\201D" "\2018" "\2019"; }
102
+
103
+ /* Counters — reset/increment the "oc" counter and print it with ::before */
104
+ .counter-reset { counter-reset: oc; }
105
+ .counter-reset-none { counter-reset: none; }
106
+ .counter-increment { counter-increment: oc; }
107
+ .counter-increment-none { counter-increment: none; }
108
+ .counter-set-0 { counter-set: oc 0; }
109
+ .content-counter::before { content: counter(oc) ". "; }
110
+ .content-counters::before { content: counters(oc, ".") " "; }
111
+
112
+ /* List style type — newer predefined counter styles */
113
+ .list-disclosure-open { list-style-type: disclosure-open; }
114
+ .list-disclosure-closed { list-style-type: disclosure-closed; }
115
+ .list-l-armenian { list-style-type: lower-armenian; }
116
+ .list-cjk-decimal { list-style-type: cjk-decimal; }
117
+
118
+ /* Line height keywords — unitless, scale with the font size (the .lineheight-{n} classes are fixed rem values) */
119
+ .lineheight-none { line-height: 1; }
120
+ .lineheight-tight { line-height: 1.25; }
121
+ .lineheight-snug { line-height: 1.375; }
122
+ .lineheight-relaxed { line-height: 1.625; }
123
+ .lineheight-loose { line-height: 2; }
124
+ .lineheight-normal { line-height: normal; }
@@ -1,83 +1,83 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_typography_modern.scss
3
- // Description: Modern typography utilities — text-box trimming, whitespace collapsing, CJK spacing,
4
- // initial letters, emphasis marks and font rendering controls.
5
- // Copyright: 2021-2026 Birdycom
6
- // Author: Serge Cools
7
- // Version: 0.3.0
8
- // Framework: OmniaCSS
9
- // Purpose: Generate .text-box-*, .text-stable, .whitespace-collapse-*, .text-spacing-trim-*, .text-autospace-*,
10
- // .hanging-*, .initial-letter-*, .emphasis-*, .font-optical-*, .font-kerning-*, .tab-* and .break-auto-phrase.
11
- // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/text-box
12
- // Note: complements _typography_advanced.scss (text-wrap, line-clamp, hyphens, ...).
13
- // Map: text-box -> text-wrap-style -> white-space-collapse -> CJK spacing -> hanging punctuation
14
- // -> initial-letter -> text-emphasis -> font rendering -> tab-size -> word-break
15
-
16
- /* Text box — trim the space above cap height and below the baseline */
17
- .text-box-normal { text-box: normal; }
18
- .text-box-trim { text-box: trim-both cap alphabetic; }
19
- .text-box-trim-start { text-box-trim: trim-start; text-box-edge: cap alphabetic; }
20
- .text-box-trim-end { text-box-trim: trim-end; text-box-edge: cap alphabetic; }
21
- .text-box-trim-ex { text-box: trim-both ex alphabetic; }
22
-
23
- /* Text wrap style */
24
- .text-stable { text-wrap-style: stable; }
25
- .text-wrap-auto { text-wrap-style: auto; }
26
-
27
- /* White space collapse */
28
- .whitespace-collapse { white-space-collapse: collapse; }
29
- .whitespace-preserve { white-space-collapse: preserve; }
30
- .whitespace-preserve-breaks { white-space-collapse: preserve-breaks; }
31
- .whitespace-preserve-spaces { white-space-collapse: preserve-spaces; }
32
- .whitespace-break-spaces { white-space-collapse: break-spaces; }
33
-
34
- /* Text spacing trim (CJK punctuation) */
35
- .text-spacing-trim-normal { text-spacing-trim: normal; }
36
- .text-spacing-trim-auto { text-spacing-trim: auto; }
37
- .text-spacing-trim-space-all { text-spacing-trim: space-all; }
38
- .text-spacing-trim-space-first { text-spacing-trim: space-first; }
39
-
40
- /* Text autospace (space between CJK and Latin/numbers) */
41
- .text-autospace-normal { text-autospace: normal; }
42
- .text-autospace-auto { text-autospace: auto; }
43
- .text-autospace-none { text-autospace: no-autospace; }
44
-
45
- /* Hanging punctuation */
46
- .hanging-none { hanging-punctuation: none; }
47
- .hanging-first { hanging-punctuation: first; }
48
- .hanging-last { hanging-punctuation: last; }
49
- .hanging-first-last { hanging-punctuation: first allow-end last; }
50
-
51
- /* Initial letter (drop caps) — applied to ::first-letter */
52
- .initial-letter-normal::first-letter { initial-letter: normal; }
53
- .initial-letter-2::first-letter { initial-letter: 2; }
54
- .initial-letter-3::first-letter { initial-letter: 3; }
55
- .initial-letter-3-2::first-letter { initial-letter: 3 2; }
56
-
57
- /* Text emphasis */
58
- .emphasis-none { text-emphasis: none; }
59
- .emphasis-dot { text-emphasis: filled dot; }
60
- .emphasis-circle { text-emphasis: filled circle; }
61
- .emphasis-open-circle { text-emphasis: open circle; }
62
- .emphasis-sesame { text-emphasis: filled sesame; }
63
- .emphasis-triangle { text-emphasis: filled triangle; }
64
- .emphasis-over { text-emphasis-position: over right; }
65
- .emphasis-under { text-emphasis-position: under right; }
66
-
67
- /* Font rendering */
68
- .font-optical-auto { font-optical-sizing: auto; }
69
- .font-optical-none { font-optical-sizing: none; }
70
- .font-kerning-auto { font-kerning: auto; }
71
- .font-kerning-normal { font-kerning: normal; }
72
- .font-kerning-none { font-kerning: none; }
73
- .font-synthesis-none { font-synthesis: none; }
74
- .font-palette-light { font-palette: light; }
75
- .font-palette-dark { font-palette: dark; }
76
-
77
- /* Tab size */
78
- .tab-2 { tab-size: 2; }
79
- .tab-4 { tab-size: 4; }
80
- .tab-8 { tab-size: 8; }
81
-
82
- /* Word break — phrase-aware line breaking (Japanese) */
83
- .break-auto-phrase { word-break: auto-phrase; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_typography_modern.scss
3
+ // Description: Modern typography utilities — text-box trimming, whitespace collapsing, CJK spacing,
4
+ // initial letters, emphasis marks and font rendering controls.
5
+ // Copyright: 2021-2026 Birdycom
6
+ // Author: Serge Cools
7
+ // Version: 0.3.0
8
+ // Framework: OmniaCSS
9
+ // Purpose: Generate .text-box-*, .text-stable, .whitespace-collapse-*, .text-spacing-trim-*, .text-autospace-*,
10
+ // .hanging-*, .initial-letter-*, .emphasis-*, .font-optical-*, .font-kerning-*, .tab-* and .break-auto-phrase.
11
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/text-box
12
+ // Note: complements _typography_advanced.scss (text-wrap, line-clamp, hyphens, ...).
13
+ // Map: text-box -> text-wrap-style -> white-space-collapse -> CJK spacing -> hanging punctuation
14
+ // -> initial-letter -> text-emphasis -> font rendering -> tab-size -> word-break
15
+
16
+ /* Text box — trim the space above cap height and below the baseline */
17
+ .text-box-normal { text-box: normal; }
18
+ .text-box-trim { text-box: trim-both cap alphabetic; }
19
+ .text-box-trim-start { text-box-trim: trim-start; text-box-edge: cap alphabetic; }
20
+ .text-box-trim-end { text-box-trim: trim-end; text-box-edge: cap alphabetic; }
21
+ .text-box-trim-ex { text-box: trim-both ex alphabetic; }
22
+
23
+ /* Text wrap style */
24
+ .text-stable { text-wrap-style: stable; }
25
+ .text-wrap-auto { text-wrap-style: auto; }
26
+
27
+ /* White space collapse */
28
+ .whitespace-collapse { white-space-collapse: collapse; }
29
+ .whitespace-preserve { white-space-collapse: preserve; }
30
+ .whitespace-preserve-breaks { white-space-collapse: preserve-breaks; }
31
+ .whitespace-preserve-spaces { white-space-collapse: preserve-spaces; }
32
+ .whitespace-break-spaces { white-space-collapse: break-spaces; }
33
+
34
+ /* Text spacing trim (CJK punctuation) */
35
+ .text-spacing-trim-normal { text-spacing-trim: normal; }
36
+ .text-spacing-trim-auto { text-spacing-trim: auto; }
37
+ .text-spacing-trim-space-all { text-spacing-trim: space-all; }
38
+ .text-spacing-trim-space-first { text-spacing-trim: space-first; }
39
+
40
+ /* Text autospace (space between CJK and Latin/numbers) */
41
+ .text-autospace-normal { text-autospace: normal; }
42
+ .text-autospace-auto { text-autospace: auto; }
43
+ .text-autospace-none { text-autospace: no-autospace; }
44
+
45
+ /* Hanging punctuation */
46
+ .hanging-none { hanging-punctuation: none; }
47
+ .hanging-first { hanging-punctuation: first; }
48
+ .hanging-last { hanging-punctuation: last; }
49
+ .hanging-first-last { hanging-punctuation: first allow-end last; }
50
+
51
+ /* Initial letter (drop caps) — applied to ::first-letter */
52
+ .initial-letter-normal::first-letter { initial-letter: normal; }
53
+ .initial-letter-2::first-letter { initial-letter: 2; }
54
+ .initial-letter-3::first-letter { initial-letter: 3; }
55
+ .initial-letter-3-2::first-letter { initial-letter: 3 2; }
56
+
57
+ /* Text emphasis */
58
+ .emphasis-none { text-emphasis: none; }
59
+ .emphasis-dot { text-emphasis: filled dot; }
60
+ .emphasis-circle { text-emphasis: filled circle; }
61
+ .emphasis-open-circle { text-emphasis: open circle; }
62
+ .emphasis-sesame { text-emphasis: filled sesame; }
63
+ .emphasis-triangle { text-emphasis: filled triangle; }
64
+ .emphasis-over { text-emphasis-position: over right; }
65
+ .emphasis-under { text-emphasis-position: under right; }
66
+
67
+ /* Font rendering */
68
+ .font-optical-auto { font-optical-sizing: auto; }
69
+ .font-optical-none { font-optical-sizing: none; }
70
+ .font-kerning-auto { font-kerning: auto; }
71
+ .font-kerning-normal { font-kerning: normal; }
72
+ .font-kerning-none { font-kerning: none; }
73
+ .font-synthesis-none { font-synthesis: none; }
74
+ .font-palette-light { font-palette: light; }
75
+ .font-palette-dark { font-palette: dark; }
76
+
77
+ /* Tab size */
78
+ .tab-2 { tab-size: 2; }
79
+ .tab-4 { tab-size: 4; }
80
+ .tab-8 { tab-size: 8; }
81
+
82
+ /* Word break — phrase-aware line breaking (Japanese) */
83
+ .break-auto-phrase { word-break: auto-phrase; }
@@ -1,64 +1,64 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_view_transitions.scss
3
- // Description: View Transitions utilities — name and group elements for animated view changes.
4
- // Copyright: 2021-2026 Birdycom
5
- // Author: Serge Cools
6
- // Version: 0.3.0
7
- // Framework: OmniaCSS
8
- // Purpose: Generate .vt-name-*, .vt-class-* classes and the opt-in mixin for cross-document transitions.
9
- // Reference: https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API
10
- // Note: @view-transition { navigation: auto; } is a global at-rule. It is NOT emitted by default;
11
- // include the mixin view-transition-navigation() in your own stylesheet to opt in.
12
- // Map: view-transition-name -> view-transition-class -> pseudo-element animations -> opt-in mixin
13
-
14
- /* View transition name — each name must be unique on the page */
15
- .vt-name-none { view-transition-name: none; }
16
- .vt-name-auto { view-transition-name: auto; }
17
- .vt-name-match-element { view-transition-name: match-element; }
18
- .vt-name-hero { view-transition-name: hero; }
19
- .vt-name-header { view-transition-name: header; }
20
- .vt-name-main { view-transition-name: main; }
21
- .vt-name-media { view-transition-name: media; }
22
-
23
- /* View transition class — share transition styles between named elements */
24
- .vt-class-card { view-transition-class: card; }
25
- .vt-class-fade { view-transition-class: fade; }
26
- .vt-class-slide { view-transition-class: slide; }
27
-
28
- /* Preset animations for the classes above */
29
- ::view-transition-group(*.fade) {
30
- animation-duration: 200ms;
31
- }
32
- ::view-transition-old(*.slide) {
33
- animation: oc-vt-slide-out 250ms ease-in both;
34
- }
35
- ::view-transition-new(*.slide) {
36
- animation: oc-vt-slide-in 250ms ease-out both;
37
- }
38
-
39
- @keyframes oc-vt-slide-out {
40
- to { opacity: 0; transform: translateX(-2rem); }
41
- }
42
- @keyframes oc-vt-slide-in {
43
- from { opacity: 0; transform: translateX(2rem); }
44
- }
45
-
46
- /* Respect reduced motion */
47
- @media (prefers-reduced-motion: reduce) {
48
- ::view-transition-group(*),
49
- ::view-transition-old(*),
50
- ::view-transition-new(*) {
51
- animation: none !important;
52
- }
53
- }
54
-
55
- /// Opt in to cross-document (MPA) view transitions.
56
- /// @group ViewTransitions
57
- /// @example scss
58
- /// @use 'utilities/view_transitions' as vt;
59
- /// @include vt.view-transition-navigation;
60
- @mixin view-transition-navigation {
61
- @view-transition {
62
- navigation: auto;
63
- }
64
- }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_view_transitions.scss
3
+ // Description: View Transitions utilities — name and group elements for animated view changes.
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.3.0
7
+ // Framework: OmniaCSS
8
+ // Purpose: Generate .vt-name-*, .vt-class-* classes and the opt-in mixin for cross-document transitions.
9
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API
10
+ // Note: @view-transition { navigation: auto; } is a global at-rule. It is NOT emitted by default;
11
+ // include the mixin view-transition-navigation() in your own stylesheet to opt in.
12
+ // Map: view-transition-name -> view-transition-class -> pseudo-element animations -> opt-in mixin
13
+
14
+ /* View transition name — each name must be unique on the page */
15
+ .vt-name-none { view-transition-name: none; }
16
+ .vt-name-auto { view-transition-name: auto; }
17
+ .vt-name-match-element { view-transition-name: match-element; }
18
+ .vt-name-hero { view-transition-name: hero; }
19
+ .vt-name-header { view-transition-name: header; }
20
+ .vt-name-main { view-transition-name: main; }
21
+ .vt-name-media { view-transition-name: media; }
22
+
23
+ /* View transition class — share transition styles between named elements */
24
+ .vt-class-card { view-transition-class: card; }
25
+ .vt-class-fade { view-transition-class: fade; }
26
+ .vt-class-slide { view-transition-class: slide; }
27
+
28
+ /* Preset animations for the classes above */
29
+ ::view-transition-group(*.fade) {
30
+ animation-duration: 200ms;
31
+ }
32
+ ::view-transition-old(*.slide) {
33
+ animation: oc-vt-slide-out 250ms ease-in both;
34
+ }
35
+ ::view-transition-new(*.slide) {
36
+ animation: oc-vt-slide-in 250ms ease-out both;
37
+ }
38
+
39
+ @keyframes oc-vt-slide-out {
40
+ to { opacity: 0; transform: translateX(-2rem); }
41
+ }
42
+ @keyframes oc-vt-slide-in {
43
+ from { opacity: 0; transform: translateX(2rem); }
44
+ }
45
+
46
+ /* Respect reduced motion */
47
+ @media (prefers-reduced-motion: reduce) {
48
+ ::view-transition-group(*),
49
+ ::view-transition-old(*),
50
+ ::view-transition-new(*) {
51
+ animation: none !important;
52
+ }
53
+ }
54
+
55
+ /// Opt in to cross-document (MPA) view transitions.
56
+ /// @group ViewTransitions
57
+ /// @example scss
58
+ /// @use 'utilities/view_transitions' as vt;
59
+ /// @include vt.view-transition-navigation;
60
+ @mixin view-transition-navigation {
61
+ @view-transition {
62
+ navigation: auto;
63
+ }
64
+ }