@birdycom/omniacss 0.0.0-stage → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +44 -3
- package/dist/oc-colors.css +4429 -0
- package/dist/oc-theme.css +69 -0
- package/dist/omnia.css +465436 -0
- package/dist/omnia.min.css +2 -0
- package/dist/omnia.starter.css +13461 -0
- package/dist/omnia.starter.min.css +1 -0
- package/dist/tokens/omnia.dtcg.json +1496 -0
- package/dist/tokens/omnia.tokens.json +580 -0
- package/dist/tokens/omnia_tokens.py +189 -0
- package/package.json +63 -6
- package/scss/base/_reset.scss +88 -0
- package/scss/config/omniacss.config.scss +114 -0
- package/scss/config/omniacss.fonts.scss +34 -0
- package/scss/functions/_functions.scss +407 -0
- package/scss/json/html-colors.json +1998 -0
- package/scss/json/omnia-colors.json +500 -0
- package/scss/json/ral-colors.json +3430 -0
- package/scss/layout/_media_query.scss +18 -0
- package/scss/omnia_colors.scss +7 -0
- package/scss/omnia_main.scss +143 -0
- package/scss/profiles/omnia_main.hsl.scss +12 -0
- package/scss/profiles/omnia_main.oklab.scss +12 -0
- package/scss/profiles/omnia_main.oklch.scss +12 -0
- package/scss/utilities/_accessibility.scss +42 -0
- package/scss/utilities/_alignment.scss +861 -0
- package/scss/utilities/_anchor_positioning.scss +65 -0
- package/scss/utilities/_animation_properties.scss +143 -0
- package/scss/utilities/_aspect.scss +73 -0
- package/scss/utilities/_backgrounds.scss +49 -0
- package/scss/utilities/_borders_extended.scss +97 -0
- package/scss/utilities/_borders_outlines.scss +161 -0
- package/scss/utilities/_clamp.scss +111 -0
- package/scss/utilities/_colors_html.scss +341 -0
- package/scss/utilities/_colors_mix.scss +84 -0
- package/scss/utilities/_colors_omnia.scss +315 -0
- package/scss/utilities/_colors_ral.scss +151 -0
- package/scss/utilities/_colors_tokens.scss +87 -0
- package/scss/utilities/_container.scss +58 -0
- package/scss/utilities/_containment.scss +82 -0
- package/scss/utilities/_corner_shape.scss +30 -0
- package/scss/utilities/_css_functions.scss +34 -0
- package/scss/utilities/_dark_mode.scss +117 -0
- package/scss/utilities/_display.scss +58 -0
- package/scss/utilities/_drop_shadow_colors.scss +26 -0
- package/scss/utilities/_effects.scss +50 -0
- package/scss/utilities/_effects_advanced.scss +102 -0
- package/scss/utilities/_experimental_css.scss +149 -0
- package/scss/utilities/_filters.scss +89 -0
- package/scss/utilities/_flexbox.scss +318 -0
- package/scss/utilities/_font_variants.scss +139 -0
- package/scss/utilities/_fonts.scss +276 -0
- package/scss/utilities/_gap.scss +104 -0
- package/scss/utilities/_gradient_stops.scss +48 -0
- package/scss/utilities/_gradients.scss +99 -0
- package/scss/utilities/_grid.scss +673 -0
- package/scss/utilities/_index.scss +22 -0
- package/scss/utilities/_interactivity.scss +198 -0
- package/scss/utilities/_layering.scss +24 -0
- package/scss/utilities/_layout_extras.scss +171 -0
- package/scss/utilities/_layout_flow.scss +210 -0
- package/scss/utilities/_mask_extras.scss +62 -0
- package/scss/utilities/_motion_transforms.scss +167 -0
- package/scss/utilities/_overflow.scss +41 -0
- package/scss/utilities/_position.scss +49 -0
- package/scss/utilities/_responsive.scss +272 -0
- package/scss/utilities/_scroll_animations.scss +80 -0
- package/scss/utilities/_scroll_spacing.scss +33 -0
- package/scss/utilities/_scrollbar.scss +50 -0
- package/scss/utilities/_shadow_tokens.scss +21 -0
- package/scss/utilities/_shapes.scss +72 -0
- package/scss/utilities/_sizing.scss +458 -0
- package/scss/utilities/_sizing_logical.scss +99 -0
- package/scss/utilities/_space_divide.scss +85 -0
- package/scss/utilities/_spacing_margin.scss +199 -0
- package/scss/utilities/_spacing_padding.scss +195 -0
- package/scss/utilities/_starting_style.scss +53 -0
- package/scss/utilities/_state_variants.scss +196 -0
- package/scss/utilities/_svg.scss +100 -0
- package/scss/utilities/_table.scss +46 -0
- package/scss/utilities/_table_advanced.scss +19 -0
- package/scss/utilities/_text.scss +1331 -0
- package/scss/utilities/_transforms_3d.scss +76 -0
- package/scss/utilities/_typography_advanced.scss +124 -0
- package/scss/utilities/_typography_modern.scss +83 -0
- package/scss/utilities/_view_transitions.scss +64 -0
- package/scss/utilities/_writing_modes.scss +72 -0
- package/scss/variables/_color_tone.scss +39 -0
- package/scss/variables/_hulp.scss +108 -0
- package/scss/variables/_mixins.scss +40 -0
- package/scss/variables/_modifiers.scss +32 -0
- package/scss/variables/_variables.scss +302 -0
- package/scss/variables/_variables_colors_html.scss +2019 -0
- package/scss/variables/_variables_colors_omnia.scss +465 -0
- package/scss/variables/_variables_colors_ral.scss +3472 -0
- package/scss/variables/_variables_effects.scss +109 -0
- package/scss/variables/_variables_flex_grid.scss +427 -0
- package/scss/variables/_variables_layout.scss +591 -0
- package/scss/variables/_variables_typography.scss +550 -0
- package/src/engine.mjs +258 -0
- package/src/postcss.mjs +43 -0
- package/src/starter-classes.mjs +124 -0
- package/src/tokens.mjs +377 -0
- package/src/variants.mjs +278 -0
- package/tokens/semantic.json +80 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_transforms_3d.scss
|
|
3
|
+
// Description: 3D transforms and the axes that _motion_transforms.scss does not cover — rotate-x/y/z, scale-x/y/z/3d,
|
|
4
|
+
// translate-z/3d, extra translate steps (negative, fractions) and extra perspective values.
|
|
5
|
+
// Copyright: 2021-2026 Birdycom
|
|
6
|
+
// Author: Serge Cools
|
|
7
|
+
// Version: 0.4.0
|
|
8
|
+
// Framework: OmniaCSS
|
|
9
|
+
// Purpose: Generate .rotate-x-{deg}, .rotate-y-{deg}, .rotate-z-{deg} (and .-rotate-*), .scale-x-{n}, .scale-y-{n}, .scale-z-{n},
|
|
10
|
+
// .scale-3d, .translate-{x|y|z}-{n} (and .-translate-*), .translate-{x|y}-{fraction}, .translate-3d,
|
|
11
|
+
// .perspective-{px} and .perspective-origin-{corner}.
|
|
12
|
+
// Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/rotate3d
|
|
13
|
+
// Note: Rotate-x/y/z compose through custom properties on the transform property (together with skew);
|
|
14
|
+
// scale and translate keep using the individual scale / translate properties, like the 2D classes.
|
|
15
|
+
// For a visible 3D effect put .transform-3d and .perspective-* on the parent.
|
|
16
|
+
// Map: rotate 3D -> scale axes -> translate steps -> translate 3D -> perspective
|
|
17
|
+
|
|
18
|
+
@use "sass:string";
|
|
19
|
+
@use "sass:list";
|
|
20
|
+
|
|
21
|
+
$_rotate-3d: var(--oc-rotate-x,) var(--oc-rotate-y,) var(--oc-rotate-z,) skewX(var(--oc-skew-x, 0)) skewY(var(--oc-skew-y, 0));
|
|
22
|
+
|
|
23
|
+
/* Rotate around one axis */
|
|
24
|
+
@each $axis in (x, y, z) {
|
|
25
|
+
@each $deg in (0, 1, 2, 3, 6, 12, 15, 30, 45, 60, 90, 180) {
|
|
26
|
+
.rotate-#{$axis}-#{$deg} { --oc-rotate-#{$axis}: rotate#{string.to-upper-case($axis)}(#{$deg}deg); transform: $_rotate-3d; }
|
|
27
|
+
@if $deg != 0 {
|
|
28
|
+
.-rotate-#{$axis}-#{$deg} { --oc-rotate-#{$axis}: rotate#{string.to-upper-case($axis)}(-#{$deg}deg); transform: $_rotate-3d; }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Scale per axis */
|
|
34
|
+
$_scale-steps: ('0': 0, '50': .5, '75': .75, '90': .9, '95': .95, '100': 1, '105': 1.05, '110': 1.1, '125': 1.25, '150': 1.5);
|
|
35
|
+
@each $key, $value in $_scale-steps {
|
|
36
|
+
.scale-x-#{$key} { --oc-scale-x: #{$value}; scale: var(--oc-scale-x) var(--oc-scale-y, 1) var(--oc-scale-z,); }
|
|
37
|
+
.scale-y-#{$key} { --oc-scale-y: #{$value}; scale: var(--oc-scale-x, 1) var(--oc-scale-y) var(--oc-scale-z,); }
|
|
38
|
+
.scale-z-#{$key} { --oc-scale-z: #{$value}; scale: var(--oc-scale-x, 1) var(--oc-scale-y, 1) var(--oc-scale-z); }
|
|
39
|
+
}
|
|
40
|
+
.scale-3d { scale: var(--oc-scale-x, 1) var(--oc-scale-y, 1) var(--oc-scale-z, 1); }
|
|
41
|
+
|
|
42
|
+
/* Translate: more steps than 0/1/2/4/8/full, negative values and fractions of the element itself */
|
|
43
|
+
$_translate-steps: (3, 5, 6, 10, 12, 16, 20, 24, 32);
|
|
44
|
+
@each $axis in (x, y) {
|
|
45
|
+
$others: 'var(--oc-translate-x, 0) var(--oc-translate-y) var(--oc-translate-z, 0)';
|
|
46
|
+
@if $axis == x { $others: 'var(--oc-translate-x) var(--oc-translate-y, 0) var(--oc-translate-z, 0)'; }
|
|
47
|
+
@each $n in (1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32) {
|
|
48
|
+
@if list.index($_translate-steps, $n) {
|
|
49
|
+
.translate-#{$axis}-#{$n} { --oc-translate-#{$axis}: #{$n * 0.25}rem; translate: #{$others}; }
|
|
50
|
+
}
|
|
51
|
+
.-translate-#{$axis}-#{$n} { --oc-translate-#{$axis}: -#{$n * 0.25}rem; translate: #{$others}; }
|
|
52
|
+
}
|
|
53
|
+
.-translate-#{$axis}-full { --oc-translate-#{$axis}: -100%; translate: #{$others}; }
|
|
54
|
+
@each $name, $value in ('1\\/2': 50%, '1\\/3': 33.333333%, '2\\/3': 66.666667%, '1\\/4': 25%, '3\\/4': 75%) {
|
|
55
|
+
.translate-#{$axis}-#{$name} { --oc-translate-#{$axis}: #{$value}; translate: #{$others}; }
|
|
56
|
+
.-translate-#{$axis}-#{$name} { --oc-translate-#{$axis}: -#{$value}; translate: #{$others}; }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Translate along z (needs perspective on a parent) */
|
|
61
|
+
@each $n in (0, 1, 2, 4, 8, 12, 16, 24, 32) {
|
|
62
|
+
.translate-z-#{$n} { --oc-translate-z: #{$n * 0.25}rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y, 0) var(--oc-translate-z); }
|
|
63
|
+
@if $n != 0 {
|
|
64
|
+
.-translate-z-#{$n} { --oc-translate-z: -#{$n * 0.25}rem; translate: var(--oc-translate-x, 0) var(--oc-translate-y, 0) var(--oc-translate-z); }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
.translate-3d { translate: var(--oc-translate-x, 0) var(--oc-translate-y, 0) var(--oc-translate-z, 0); }
|
|
68
|
+
|
|
69
|
+
/* Perspective: more distances and corner origins */
|
|
70
|
+
@each $px in (100, 300, 800, 1200, 1500, 2000) {
|
|
71
|
+
.perspective-#{$px} { perspective: #{$px}px; }
|
|
72
|
+
}
|
|
73
|
+
.perspective-origin-top-left { perspective-origin: top left; }
|
|
74
|
+
.perspective-origin-top-right { perspective-origin: top right; }
|
|
75
|
+
.perspective-origin-bottom-left { perspective-origin: bottom left; }
|
|
76
|
+
.perspective-origin-bottom-right { perspective-origin: bottom right; }
|
|
@@ -0,0 +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; }
|
|
@@ -0,0 +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; }
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/utilities/_writing_modes.scss
|
|
3
|
+
// Description: Writing modes, direction, text orientation, unicode-bidi and logical inset/sizing utilities.
|
|
4
|
+
// Copyright: 2021-2026 Birdycom
|
|
5
|
+
// Author: Serge Cools
|
|
6
|
+
// Version: 0.3.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Purpose: Generate .write-*, .dir-*, .text-orient-*, .bidi-*, .start-* / .end-* / .inset-inline-* / .inset-block-*
|
|
9
|
+
// and .inline-size-* / .block-size-* classes.
|
|
10
|
+
// Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values
|
|
11
|
+
// Note: logical margin/padding live in _spacing_margin.scss / _spacing_padding.scss (.m-inline-*, .p-block-start-*).
|
|
12
|
+
// The older .writingmode-* classes in _text.scss remain available.
|
|
13
|
+
// Map: writing-mode -> direction -> text-orientation -> unicode-bidi -> logical inset -> logical sizing
|
|
14
|
+
|
|
15
|
+
/* Writing mode */
|
|
16
|
+
.write-horizontal { writing-mode: horizontal-tb; }
|
|
17
|
+
.write-vertical-rl { writing-mode: vertical-rl; }
|
|
18
|
+
.write-vertical-lr { writing-mode: vertical-lr; }
|
|
19
|
+
.write-sideways-rl { writing-mode: sideways-rl; }
|
|
20
|
+
.write-sideways-lr { writing-mode: sideways-lr; }
|
|
21
|
+
|
|
22
|
+
/* Direction */
|
|
23
|
+
.dir-ltr { direction: ltr; }
|
|
24
|
+
.dir-rtl { direction: rtl; }
|
|
25
|
+
|
|
26
|
+
/* Text orientation (vertical writing modes only) */
|
|
27
|
+
.text-orient-mixed { text-orientation: mixed; }
|
|
28
|
+
.text-orient-upright { text-orientation: upright; }
|
|
29
|
+
.text-orient-sideways { text-orientation: sideways; }
|
|
30
|
+
|
|
31
|
+
/* Unicode bidi */
|
|
32
|
+
.bidi-normal { unicode-bidi: normal; }
|
|
33
|
+
.bidi-embed { unicode-bidi: embed; }
|
|
34
|
+
.bidi-isolate { unicode-bidi: isolate; }
|
|
35
|
+
.bidi-override { unicode-bidi: bidi-override; }
|
|
36
|
+
.bidi-isolate-override { unicode-bidi: isolate-override; }
|
|
37
|
+
.bidi-plaintext { unicode-bidi: plaintext; }
|
|
38
|
+
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// Logical inset — follows writing-mode and direction (start = left in LTR, right in RTL)
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
$_logical-inset: (
|
|
43
|
+
'auto': auto,
|
|
44
|
+
'0': 0,
|
|
45
|
+
'1': 0.25rem,
|
|
46
|
+
'2': 0.5rem,
|
|
47
|
+
'4': 1rem,
|
|
48
|
+
'8': 2rem,
|
|
49
|
+
'full': 100%
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
/* Logical inset */
|
|
53
|
+
@each $key, $value in $_logical-inset {
|
|
54
|
+
.start-#{$key} { inset-inline-start: $value; }
|
|
55
|
+
.end-#{$key} { inset-inline-end: $value; }
|
|
56
|
+
.inset-inline-#{$key} { inset-inline: $value; }
|
|
57
|
+
.inset-block-#{$key} { inset-block: $value; }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Logical sizing — inline-size (width in horizontal-tb) and block-size (height in horizontal-tb) */
|
|
61
|
+
.inline-size-auto { inline-size: auto; }
|
|
62
|
+
.inline-size-full { inline-size: 100%; }
|
|
63
|
+
.inline-size-fit { inline-size: fit-content; }
|
|
64
|
+
.inline-size-min { inline-size: min-content; }
|
|
65
|
+
.inline-size-max { inline-size: max-content; }
|
|
66
|
+
.block-size-auto { block-size: auto; }
|
|
67
|
+
.block-size-full { block-size: 100%; }
|
|
68
|
+
.block-size-fit { block-size: fit-content; }
|
|
69
|
+
.block-size-min { block-size: min-content; }
|
|
70
|
+
.block-size-max { block-size: max-content; }
|
|
71
|
+
.max-inline-size-prose { max-inline-size: 65ch; }
|
|
72
|
+
.max-inline-size-full { max-inline-size: 100%; }
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// File: src/scss/variables/_color_tone.scss
|
|
2
|
+
// Description: Shared tone scale and oc-tone-color() for Omnia color steps.
|
|
3
|
+
// Used by _colors_omnia.scss and _colors_tokens.scss so tone logic lives in one place.
|
|
4
|
+
// Copyright: 2021-2026 Birdycom
|
|
5
|
+
// Framework: OmniaCSS
|
|
6
|
+
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "sass:color";
|
|
9
|
+
|
|
10
|
+
/// Tone scale for color steps 2..95 (light steps = lighter tint, high steps = darker shade).
|
|
11
|
+
/// Step 100 = base color (no scaling). Keys must match $opacitycolor values.
|
|
12
|
+
$oc-tone-scale: (
|
|
13
|
+
2: (lightness: 56%, chroma: -18%),
|
|
14
|
+
10: (lightness: 38%, chroma: -12%),
|
|
15
|
+
20: (lightness: 30%, chroma: -10%),
|
|
16
|
+
30: (lightness: 22%, chroma: -8%),
|
|
17
|
+
40: (lightness: 14%, chroma: -6%),
|
|
18
|
+
50: (lightness: 6%, chroma: -4%),
|
|
19
|
+
60: (lightness: -6%, chroma: 2%),
|
|
20
|
+
70: (lightness: -12%, chroma: 4%),
|
|
21
|
+
80: (lightness: -18%, chroma: 6%),
|
|
22
|
+
90: (lightness: -24%, chroma: 8%),
|
|
23
|
+
95: (lightness: -32%, chroma: 10%)
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
/// Returns a scaled (tone) version of the source color for the given step.
|
|
27
|
+
/// @param {color} $source-color - oklch/oklab color
|
|
28
|
+
/// @param {number} $step - 2, 10, 20, ... 95; 100 returns $source-color unchanged
|
|
29
|
+
@function oc-tone-color($source-color, $step) {
|
|
30
|
+
$tone: map.get($oc-tone-scale, $step);
|
|
31
|
+
@if $tone == null {
|
|
32
|
+
@return $source-color;
|
|
33
|
+
}
|
|
34
|
+
@return color.scale(
|
|
35
|
+
$source-color,
|
|
36
|
+
$lightness: map.get($tone, lightness),
|
|
37
|
+
$chroma: map.get($tone, chroma)
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/utilities/_hulp.scss
|
|
3
|
+
// Description: CSS hulp class (demo helpers only — no global element/id rules: they would leak into every page)
|
|
4
|
+
// Copyright: 2021-2023 Birdycom
|
|
5
|
+
// Autor: Serge Cools
|
|
6
|
+
// Version: 0.2.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Properties:
|
|
9
|
+
// Values:
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
.wrapbox-1 {
|
|
13
|
+
width: 10em;
|
|
14
|
+
margin: 0.5em;
|
|
15
|
+
white-space: normal;
|
|
16
|
+
vertical-align: top;
|
|
17
|
+
display: inline-block;
|
|
18
|
+
}
|
|
19
|
+
.wrapbox-2 {
|
|
20
|
+
width: 40em;
|
|
21
|
+
margin: 0.5em;
|
|
22
|
+
white-space: normal;
|
|
23
|
+
vertical-align: top;
|
|
24
|
+
display: inline-block;
|
|
25
|
+
}
|
|
26
|
+
.narrow {
|
|
27
|
+
padding: 10px;
|
|
28
|
+
border: 1px solid;
|
|
29
|
+
width: 500px;
|
|
30
|
+
margin: 0 auto;
|
|
31
|
+
font-size: 20px;
|
|
32
|
+
line-height: 1.5;
|
|
33
|
+
letter-spacing: 1px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* hulp for writing mode */
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/* Scoped (was a global th/td rule that leaked into every table): add .hulp-table to opt in. */
|
|
40
|
+
.hulp-table th {
|
|
41
|
+
background-color: var(--oc-muted, var(--color-frostblue-60));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.hulp-table td, .hulp-table th {
|
|
45
|
+
border: 1px solid var(--oc-border-strong, var(--color-mistblue-80));
|
|
46
|
+
padding: 3px;
|
|
47
|
+
}
|
|
48
|
+
/* End hulp for writing mode */
|
|
49
|
+
|
|
50
|
+
/* hulp for aspect ratio */
|
|
51
|
+
|
|
52
|
+
.output {
|
|
53
|
+
height: 300px;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
position: relative;
|
|
56
|
+
background-color: var(--background-primary);
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
padding: 1em;
|
|
59
|
+
}
|
|
60
|
+
.output section {
|
|
61
|
+
height: 100%;
|
|
62
|
+
text-align: center;
|
|
63
|
+
}
|
|
64
|
+
/* End hulp for aspect ratio */
|
|
65
|
+
|
|
66
|
+
/* hulp for alignment */
|
|
67
|
+
.box {
|
|
68
|
+
padding: 0.5rem;
|
|
69
|
+
background: linear-gradient(-45deg, var(--color-vividblue-60), var(--color-mistblue-30));
|
|
70
|
+
display: flex;
|
|
71
|
+
justify-content: center;
|
|
72
|
+
align-items: center;
|
|
73
|
+
}
|
|
74
|
+
.bg-stripes-sky{
|
|
75
|
+
background-color: oklch(from var(--color-skycyan-70) l c h / 0.1);
|
|
76
|
+
background-image: linear-gradient(135deg,oklch(from var(--color-skycyan-80) l c h / 0.5) 10%,transparent 0,transparent 50%,oklch(from var(--color-skycyan-80) l c h / 0.5) 0,oklch(from var(--color-skycyan-80) l c h / 0.5) 60%,transparent 0,transparent);
|
|
77
|
+
background-size: 7.07px 7.07px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.bg-stripes-fuchsia {
|
|
81
|
+
background-color: oklch(from var(--color-violet-60) l c h / 0.1);
|
|
82
|
+
background-image: linear-gradient(135deg,oklch(from var(--color-violet-70) l c h / 0.5) 10%,transparent 0,transparent 50%,oklch(from var(--color-violet-70) l c h / 0.5) 0,oklch(from var(--color-violet-70) l c h / 0.5) 60%,transparent 0,transparent);
|
|
83
|
+
background-size: 7.07px 7.07px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.bg-stripes-pink {
|
|
87
|
+
background-color: oklch(from var(--color-purple-2) l c h / 0.1);
|
|
88
|
+
background-image: linear-gradient(135deg,oklch(from var(--color-purple-10) l c h / 0.5) 10%,transparent 0,transparent 50%,oklch(from var(--color-purple-10) l c h / 0.5) 0,oklch(from var(--color-purple-10) l c h / 0.5) 60%,transparent 0,transparent);
|
|
89
|
+
background-size: 7.07px 7.07px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.bg-stripes-purple {
|
|
93
|
+
background-color: oklch(from var(--color-indigo-2) l c h / 0.1);
|
|
94
|
+
background-image: linear-gradient(135deg,oklch(from var(--color-indigo-10) l c h / 0.5) 10%,transparent 0,transparent 50%,oklch(from var(--color-indigo-10) l c h / 0.5) 0,oklch(from var(--color-indigo-10) l c h / 0.5) 60%,transparent 0,transparent);
|
|
95
|
+
background-size: 7.07px 7.07px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.leading-6 {
|
|
99
|
+
line-height: 1.5rem;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.rounded-lg {
|
|
103
|
+
border-radius: 0.5rem;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* .shadow-md / .shadow-lg live in utilities/_effects_advanced.scss (light-dark aware) */
|
|
107
|
+
|
|
108
|
+
/* End hulp for alignment */
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/variables/__mixins.scss
|
|
3
|
+
// Description: sass mixin
|
|
4
|
+
// Copyright: 2021-2022 Birdycom
|
|
5
|
+
// Autor: Serge Cools
|
|
6
|
+
// Version: 0.2.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
|
|
9
|
+
@use '../variables/_variables' as *;
|
|
10
|
+
@use "sass:map";
|
|
11
|
+
@use "sass:meta";
|
|
12
|
+
|
|
13
|
+
///
|
|
14
|
+
/// Below you will find the SASS mixins that we will use within our framework - file mixins.
|
|
15
|
+
/// @group Mixins
|
|
16
|
+
|
|
17
|
+
// start respond-to
|
|
18
|
+
/// to manage responsive breakpoints that you can use for containers
|
|
19
|
+
/// @group Mixins
|
|
20
|
+
/// @name respond-to
|
|
21
|
+
/// @link src/scss/variables/_mixins.scss
|
|
22
|
+
///
|
|
23
|
+
/// @since 1.0.0
|
|
24
|
+
/// @author Serge Cools
|
|
25
|
+
@mixin respond-to($breakpoint) {
|
|
26
|
+
// If the key exists in the map
|
|
27
|
+
@if map.has-key($breakpoints, $breakpoint) {
|
|
28
|
+
// Prints a media query based on the value
|
|
29
|
+
@media #{meta.inspect(map.get($breakpoints, $breakpoint))} {
|
|
30
|
+
@content;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// If the key doesn't exist in the map
|
|
35
|
+
@else {
|
|
36
|
+
@warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. "
|
|
37
|
+
+ "Available breakpoints are: #{map.keys($breakpoints)}.";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// end respond-to
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SCSS Document
|
|
2
|
+
// File: src/scss/variables/_modifiers.scss
|
|
3
|
+
// Description: Default string items for using in the CSS properties
|
|
4
|
+
// Copyright: 2021-2023 Birdycom
|
|
5
|
+
// Autor: Serge Cools
|
|
6
|
+
// Version: 0.2.0
|
|
7
|
+
// Framework: OmniaCSS
|
|
8
|
+
// Variables and strings:
|
|
9
|
+
|
|
10
|
+
///
|
|
11
|
+
/// Below you will find the list of all strings and arrays that we will use within our framework - file modifiers.
|
|
12
|
+
/// @group PseudoClasses
|
|
13
|
+
///
|
|
14
|
+
|
|
15
|
+
// Default Pseudo-classes
|
|
16
|
+
///
|
|
17
|
+
/// The different pseudo-classes: :hover, :focus, :active
|
|
18
|
+
/// @group pseudoclasses
|
|
19
|
+
///
|
|
20
|
+
/// @name pseudoclasses
|
|
21
|
+
///
|
|
22
|
+
/// @since 1.0.0
|
|
23
|
+
/// @author Serge Cools
|
|
24
|
+
///
|
|
25
|
+
///
|
|
26
|
+
$pseudoclasses: (
|
|
27
|
+
"": "", // normal
|
|
28
|
+
":hover": hover\:, // hover
|
|
29
|
+
":active": active\:, // active
|
|
30
|
+
":focus": focus\:, // focus
|
|
31
|
+
);
|
|
32
|
+
// end default pseudo-classes
|