@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.
Files changed (106) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -3
  3. package/dist/oc-colors.css +4429 -0
  4. package/dist/oc-theme.css +69 -0
  5. package/dist/omnia.css +465436 -0
  6. package/dist/omnia.min.css +2 -0
  7. package/dist/omnia.starter.css +13461 -0
  8. package/dist/omnia.starter.min.css +1 -0
  9. package/dist/tokens/omnia.dtcg.json +1496 -0
  10. package/dist/tokens/omnia.tokens.json +580 -0
  11. package/dist/tokens/omnia_tokens.py +189 -0
  12. package/package.json +63 -6
  13. package/scss/base/_reset.scss +88 -0
  14. package/scss/config/omniacss.config.scss +114 -0
  15. package/scss/config/omniacss.fonts.scss +34 -0
  16. package/scss/functions/_functions.scss +407 -0
  17. package/scss/json/html-colors.json +1998 -0
  18. package/scss/json/omnia-colors.json +500 -0
  19. package/scss/json/ral-colors.json +3430 -0
  20. package/scss/layout/_media_query.scss +18 -0
  21. package/scss/omnia_colors.scss +7 -0
  22. package/scss/omnia_main.scss +143 -0
  23. package/scss/profiles/omnia_main.hsl.scss +12 -0
  24. package/scss/profiles/omnia_main.oklab.scss +12 -0
  25. package/scss/profiles/omnia_main.oklch.scss +12 -0
  26. package/scss/utilities/_accessibility.scss +42 -0
  27. package/scss/utilities/_alignment.scss +861 -0
  28. package/scss/utilities/_anchor_positioning.scss +65 -0
  29. package/scss/utilities/_animation_properties.scss +143 -0
  30. package/scss/utilities/_aspect.scss +73 -0
  31. package/scss/utilities/_backgrounds.scss +49 -0
  32. package/scss/utilities/_borders_extended.scss +97 -0
  33. package/scss/utilities/_borders_outlines.scss +161 -0
  34. package/scss/utilities/_clamp.scss +111 -0
  35. package/scss/utilities/_colors_html.scss +341 -0
  36. package/scss/utilities/_colors_mix.scss +84 -0
  37. package/scss/utilities/_colors_omnia.scss +315 -0
  38. package/scss/utilities/_colors_ral.scss +151 -0
  39. package/scss/utilities/_colors_tokens.scss +87 -0
  40. package/scss/utilities/_container.scss +58 -0
  41. package/scss/utilities/_containment.scss +82 -0
  42. package/scss/utilities/_corner_shape.scss +30 -0
  43. package/scss/utilities/_css_functions.scss +34 -0
  44. package/scss/utilities/_dark_mode.scss +117 -0
  45. package/scss/utilities/_display.scss +58 -0
  46. package/scss/utilities/_drop_shadow_colors.scss +26 -0
  47. package/scss/utilities/_effects.scss +50 -0
  48. package/scss/utilities/_effects_advanced.scss +102 -0
  49. package/scss/utilities/_experimental_css.scss +149 -0
  50. package/scss/utilities/_filters.scss +89 -0
  51. package/scss/utilities/_flexbox.scss +318 -0
  52. package/scss/utilities/_font_variants.scss +139 -0
  53. package/scss/utilities/_fonts.scss +276 -0
  54. package/scss/utilities/_gap.scss +104 -0
  55. package/scss/utilities/_gradient_stops.scss +48 -0
  56. package/scss/utilities/_gradients.scss +99 -0
  57. package/scss/utilities/_grid.scss +673 -0
  58. package/scss/utilities/_index.scss +22 -0
  59. package/scss/utilities/_interactivity.scss +198 -0
  60. package/scss/utilities/_layering.scss +24 -0
  61. package/scss/utilities/_layout_extras.scss +171 -0
  62. package/scss/utilities/_layout_flow.scss +210 -0
  63. package/scss/utilities/_mask_extras.scss +62 -0
  64. package/scss/utilities/_motion_transforms.scss +167 -0
  65. package/scss/utilities/_overflow.scss +41 -0
  66. package/scss/utilities/_position.scss +49 -0
  67. package/scss/utilities/_responsive.scss +272 -0
  68. package/scss/utilities/_scroll_animations.scss +80 -0
  69. package/scss/utilities/_scroll_spacing.scss +33 -0
  70. package/scss/utilities/_scrollbar.scss +50 -0
  71. package/scss/utilities/_shadow_tokens.scss +21 -0
  72. package/scss/utilities/_shapes.scss +72 -0
  73. package/scss/utilities/_sizing.scss +458 -0
  74. package/scss/utilities/_sizing_logical.scss +99 -0
  75. package/scss/utilities/_space_divide.scss +85 -0
  76. package/scss/utilities/_spacing_margin.scss +199 -0
  77. package/scss/utilities/_spacing_padding.scss +195 -0
  78. package/scss/utilities/_starting_style.scss +53 -0
  79. package/scss/utilities/_state_variants.scss +196 -0
  80. package/scss/utilities/_svg.scss +100 -0
  81. package/scss/utilities/_table.scss +46 -0
  82. package/scss/utilities/_table_advanced.scss +19 -0
  83. package/scss/utilities/_text.scss +1331 -0
  84. package/scss/utilities/_transforms_3d.scss +76 -0
  85. package/scss/utilities/_typography_advanced.scss +124 -0
  86. package/scss/utilities/_typography_modern.scss +83 -0
  87. package/scss/utilities/_view_transitions.scss +64 -0
  88. package/scss/utilities/_writing_modes.scss +72 -0
  89. package/scss/variables/_color_tone.scss +39 -0
  90. package/scss/variables/_hulp.scss +108 -0
  91. package/scss/variables/_mixins.scss +40 -0
  92. package/scss/variables/_modifiers.scss +32 -0
  93. package/scss/variables/_variables.scss +302 -0
  94. package/scss/variables/_variables_colors_html.scss +2019 -0
  95. package/scss/variables/_variables_colors_omnia.scss +465 -0
  96. package/scss/variables/_variables_colors_ral.scss +3472 -0
  97. package/scss/variables/_variables_effects.scss +109 -0
  98. package/scss/variables/_variables_flex_grid.scss +427 -0
  99. package/scss/variables/_variables_layout.scss +591 -0
  100. package/scss/variables/_variables_typography.scss +550 -0
  101. package/src/engine.mjs +258 -0
  102. package/src/postcss.mjs +43 -0
  103. package/src/starter-classes.mjs +124 -0
  104. package/src/tokens.mjs +377 -0
  105. package/src/variants.mjs +278 -0
  106. package/tokens/semantic.json +80 -0
@@ -0,0 +1,82 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_containment.scss
3
+ // Description: Container queries, containment and content-visibility utilities (CSS Containment Level 2/3).
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.3.0
7
+ // Framework: OmniaCSS
8
+ // Purpose: Generate .container-*, .cq-name-*, .contain-*, .content-{auto,visible,hidden}, .contain-intrinsic-*
9
+ // and container query variants (.cq-xs\:flex, .cq-md\:grid-cols-3, ...).
10
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries
11
+ // Note: .cq-inline / .cq-normal stay in _container.scss (backwards compatible aliases).
12
+ // Map: container-type -> container-name -> contain -> content-visibility -> intrinsic size -> @container variants
13
+
14
+ /* Container type — makes an element a query container */
15
+ .container-normal { container-type: normal; }
16
+ .container-size { container-type: size; }
17
+ .container-inline-size { container-type: inline-size; }
18
+ .container-scroll-state { container-type: scroll-state; }
19
+ .cq-size { container-type: size; }
20
+ .cq-scroll-state { container-type: scroll-state; }
21
+
22
+ /* Container name — target a specific container in @container rules */
23
+ .cq-name-none { container-name: none; }
24
+ .cq-name-main { container-name: main; }
25
+ .cq-name-sidebar { container-name: sidebar; }
26
+ .cq-name-card { container-name: card; }
27
+
28
+ /* Contain — isolate layout, paint, style and size calculations */
29
+ .contain-none { contain: none; }
30
+ .contain-strict { contain: strict; }
31
+ .contain-content { contain: content; }
32
+ .contain-size { contain: size; }
33
+ .contain-inline-size { contain: inline-size; }
34
+ .contain-layout { contain: layout; }
35
+ .contain-style { contain: style; }
36
+ .contain-paint { contain: paint; }
37
+
38
+ /* Content visibility — skip rendering work for off-screen content */
39
+ .content-visible { content-visibility: visible; }
40
+ .content-auto { content-visibility: auto; }
41
+ .content-hidden { content-visibility: hidden; }
42
+
43
+ /* Contain intrinsic size — placeholder size for content-visibility: auto */
44
+ .contain-intrinsic-none { contain-intrinsic-size: none; }
45
+ .contain-intrinsic-auto-sm { contain-intrinsic-size: auto 200px; }
46
+ .contain-intrinsic-auto-md { contain-intrinsic-size: auto 500px; }
47
+ .contain-intrinsic-auto-lg { contain-intrinsic-size: auto 1000px; }
48
+
49
+ // ---------------------------------------------------------------------------
50
+ // Container query variants — same idea as _responsive.scss, but based on the
51
+ // nearest query container (.container-inline-size / .cq-inline) instead of
52
+ // the viewport. Pattern: .cq-{size}\:{utility}
53
+ // ---------------------------------------------------------------------------
54
+ $_cq-breakpoints: (
55
+ 'xs': 20rem,
56
+ 'sm': 24rem,
57
+ 'md': 28rem,
58
+ 'lg': 32rem,
59
+ 'xl': 36rem
60
+ );
61
+
62
+ @each $prefix, $min-width in $_cq-breakpoints {
63
+ @container (min-width: #{$min-width}) {
64
+ // Display
65
+ .cq-#{$prefix}\:block { display: block; }
66
+ .cq-#{$prefix}\:hidden { display: none; }
67
+ .cq-#{$prefix}\:flex { display: flex; }
68
+ .cq-#{$prefix}\:grid { display: grid; }
69
+ .cq-#{$prefix}\:inline-flex { display: inline-flex; }
70
+
71
+ // Flex direction
72
+ .cq-#{$prefix}\:flex-row { flex-direction: row; }
73
+ .cq-#{$prefix}\:flex-col { flex-direction: column; }
74
+
75
+ // Grid template columns (1-6)
76
+ @for $i from 1 through 6 {
77
+ .cq-#{$prefix}\:grid-cols-#{$i} {
78
+ grid-template-columns: repeat(#{$i}, minmax(0, 1fr));
79
+ }
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,30 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_corner_shape.scss
3
+ // Description: corner-shape utilities — shape of box corners within border-radius (CSS Borders Level 4).
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.2.1
7
+ // Framework: OmniaCSS
8
+ // Purpose: Generate .corner-* classes for corner-shape (round, scoop, bevel, notch, square, squircle).
9
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/corner-shape
10
+ // Note: corner-shape only has effect when border-radius is set (e.g. use with .rounded-lg).
11
+
12
+ /* Corner shape — modifies the shape of rounded corners (border-radius). Experimental; check browser support. */
13
+ .corner-round {
14
+ corner-shape: round;
15
+ }
16
+ .corner-scoop {
17
+ corner-shape: scoop;
18
+ }
19
+ .corner-bevel {
20
+ corner-shape: bevel;
21
+ }
22
+ .corner-notch {
23
+ corner-shape: notch;
24
+ }
25
+ .corner-square {
26
+ corner-shape: square;
27
+ }
28
+ .corner-squircle {
29
+ corner-shape: squircle;
30
+ }
@@ -0,0 +1,34 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_css_functions.scss
3
+ // Description: Utilities built on modern CSS functions: tree counting (sibling-index(), sibling-count()) for
4
+ // staggered motion and fanned layouts, and color-mix() alpha steps of currentColor.
5
+ // Copyright: 2021-2026 Birdycom
6
+ // Author: Serge Cools
7
+ // Version: 0.8.2
8
+ // Framework: OmniaCSS
9
+ // Purpose: Progressive enhancement — without sibling-index() the delay/rotation is invalid and falls back to 0.
10
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/sibling-index
11
+ // Map: stagger -> fan -> currentColor alpha
12
+
13
+ /* Stagger — each child waits (index - 1) × --oc-stagger before its transition or animation starts */
14
+ @each $ms in (30, 60, 100, 150, 250) {
15
+ .stagger-#{$ms} { --oc-stagger: #{$ms}ms; }
16
+ }
17
+ .delay-stagger { transition-delay: calc((sibling-index() - 1) * var(--oc-stagger, 60ms)); }
18
+ .delay-stagger-reverse { transition-delay: calc((sibling-count() - sibling-index()) * var(--oc-stagger, 60ms)); }
19
+ .animate-delay-stagger { animation-delay: calc((sibling-index() - 1) * var(--oc-stagger, 60ms)); }
20
+
21
+ /* Fan — rotate siblings around the middle one, like cards in a hand (set on each child) */
22
+ .fan {
23
+ rotate: calc((sibling-index() - (sibling-count() + 1) / 2) * var(--oc-fan, 6deg));
24
+ transform-origin: 50% 140%;
25
+ }
26
+ @each $deg in (3, 6, 10, 15) {
27
+ .fan-#{$deg} { --oc-fan: #{$deg}deg; }
28
+ }
29
+
30
+ /* currentColor alpha — tint a background or border with the text color (works with every text-* color) */
31
+ @each $n in (5, 10, 15, 20, 30, 40, 50, 60, 70, 80) {
32
+ .bg-current-#{$n} { background-color: color-mix(in oklch, currentColor $n * 1%, transparent); }
33
+ .border-current-#{$n} { border-color: color-mix(in oklch, currentColor $n * 1%, transparent); }
34
+ }
@@ -0,0 +1,117 @@
1
+ // File: src/scss/utilities/_dark_mode.scss
2
+ // Description: Dark mode variant utilities using dark: prefix.
3
+ // Supports two strategies:
4
+ // 1. Class-based: add .dark class to <html> or <body>
5
+ // 2. Media-based: prefers-color-scheme: dark (automatic)
6
+ // Default strategy: class-based (.dark ancestor selector)
7
+ // Pattern: .dark .dark\:{utility} e.g. dark\:bg-gray-900, dark\:text-white
8
+ // Copyright: 2021-2026 Birdycom
9
+ // Autor: Serge Cools
10
+ // Version: 0.1.6
11
+ // Framework: OmniaCSS
12
+ @use "shadow_tokens" as *;
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Class-based dark mode (.dark ancestor on html/body)
16
+ // Usage: <html class="dark"> or toggle via JS
17
+ // ---------------------------------------------------------------------------
18
+
19
+ // Background colors for dark mode
20
+ .dark .dark\:bg-black { background-color: var(--color-black-60); }
21
+ .dark .dark\:bg-white { background-color: var(--color-white-2); }
22
+ .dark .dark\:bg-gray-50 { background-color: var(--color-snow-50); }
23
+ .dark .dark\:bg-gray-100 { background-color: var(--color-linen-30); }
24
+ .dark .dark\:bg-gray-200 { background-color: var(--color-silver-2); }
25
+ .dark .dark\:bg-gray-300 { background-color: var(--color-silver-20); }
26
+ .dark .dark\:bg-gray-400 { background-color: var(--color-gray-20); }
27
+ .dark .dark\:bg-gray-500 { background-color: var(--color-black-2); }
28
+ .dark .dark\:bg-gray-600 { background-color: var(--color-duskblue-20); }
29
+ .dark .dark\:bg-gray-700 { background-color: var(--color-shallowblue-30); }
30
+ .dark .dark\:bg-gray-800 { background-color: var(--color-shallowblue-40); }
31
+ .dark .dark\:bg-gray-900 { background-color: var(--color-shallowblue-50); }
32
+ .dark .dark\:bg-gray-950 { background-color: var(--color-black-40); }
33
+ .dark .dark\:bg-transparent { background-color: transparent; }
34
+
35
+ // Semantic surface colors for dark mode
36
+ .dark .dark\:bg-surface { background-color: var(--color-shallowblue-50); }
37
+ .dark .dark\:bg-surface-soft { background-color: var(--color-shallowblue-40); }
38
+ .dark .dark\:bg-surface-raised { background-color: var(--color-shallowblue-30); }
39
+
40
+ // Text colors for dark mode
41
+ .dark .dark\:text-white { color: var(--color-white-2); }
42
+ .dark .dark\:text-black { color: var(--color-black-60); }
43
+ .dark .dark\:text-gray-50 { color: var(--color-snow-50); }
44
+ .dark .dark\:text-gray-100 { color: var(--color-linen-30); }
45
+ .dark .dark\:text-gray-200 { color: var(--color-silver-2); }
46
+ .dark .dark\:text-gray-300 { color: var(--color-silver-20); }
47
+ .dark .dark\:text-gray-400 { color: var(--color-gray-20); }
48
+ .dark .dark\:text-gray-500 { color: var(--color-black-2); }
49
+ .dark .dark\:text-gray-600 { color: var(--color-duskblue-20); }
50
+ .dark .dark\:text-gray-700 { color: var(--color-shallowblue-30); }
51
+ .dark .dark\:text-gray-800 { color: var(--color-shallowblue-40); }
52
+ .dark .dark\:text-gray-900 { color: var(--color-shallowblue-50); }
53
+
54
+ // Semantic text colors
55
+ .dark .dark\:text-muted { color: var(--color-gray-20); }
56
+ .dark .dark\:text-soft { color: var(--color-silver-20); }
57
+ .dark .dark\:text-primary { color: var(--color-silver-2); }
58
+
59
+ // Border colors for dark mode
60
+ .dark .dark\:border-gray-200 { border-color: var(--color-silver-2); }
61
+ .dark .dark\:border-gray-300 { border-color: var(--color-silver-20); }
62
+ .dark .dark\:border-gray-500 { border-color: var(--color-black-2); }
63
+ .dark .dark\:border-gray-600 { border-color: var(--color-duskblue-20); }
64
+ .dark .dark\:border-gray-700 { border-color: var(--color-shallowblue-30); }
65
+ .dark .dark\:border-gray-800 { border-color: var(--color-shallowblue-40); }
66
+ .dark .dark\:border-transparent { border-color: transparent; }
67
+
68
+ // Opacity for dark mode
69
+ .dark .dark\:opacity-0 { opacity: 0; }
70
+ .dark .dark\:opacity-25 { opacity: 0.25; }
71
+ .dark .dark\:opacity-50 { opacity: 0.5; }
72
+ .dark .dark\:opacity-75 { opacity: 0.75; }
73
+ .dark .dark\:opacity-100 { opacity: 1; }
74
+
75
+ // Shadow utilities for dark mode (softer shadows on dark backgrounds)
76
+ .dark .dark\:shadow-none { box-shadow: none; }
77
+ .dark .dark\:shadow-sm { box-shadow: #{$oc-dark-shadow-sm}; }
78
+ .dark .dark\:shadow-md { box-shadow: #{$oc-dark-shadow-md}; }
79
+ .dark .dark\:shadow-lg { box-shadow: #{$oc-dark-shadow-lg}; }
80
+
81
+ // Ring / outline for dark mode
82
+ .dark .dark\:outline-gray-600 { outline-color: var(--color-duskblue-20); }
83
+ .dark .dark\:outline-gray-700 { outline-color: var(--color-shallowblue-30); }
84
+
85
+ // Display overrides (e.g. show/hide elements in dark mode)
86
+ .dark .dark\:hidden { display: none; }
87
+ .dark .dark\:block { display: block; }
88
+
89
+ // ---------------------------------------------------------------------------
90
+ // Media-based dark mode (automatic, respects OS preference)
91
+ // These use @media (prefers-color-scheme: dark) for auto-detection.
92
+ // Classes use the auto-dark: prefix.
93
+ // ---------------------------------------------------------------------------
94
+
95
+ @media (prefers-color-scheme: dark) {
96
+ // Background
97
+ .auto-dark\:bg-gray-800 { background-color: var(--color-shallowblue-40); }
98
+ .auto-dark\:bg-gray-900 { background-color: var(--color-shallowblue-50); }
99
+ .auto-dark\:bg-gray-950 { background-color: var(--color-black-40); }
100
+ .auto-dark\:bg-surface { background-color: var(--color-shallowblue-50); }
101
+
102
+ // Text
103
+ .auto-dark\:text-white { color: var(--color-white-2); }
104
+ .auto-dark\:text-gray-100 { color: var(--color-linen-30); }
105
+ .auto-dark\:text-gray-200 { color: var(--color-silver-2); }
106
+ .auto-dark\:text-gray-300 { color: var(--color-silver-20); }
107
+ .auto-dark\:text-muted { color: var(--color-gray-20); }
108
+
109
+ // Border
110
+ .auto-dark\:border-gray-700 { border-color: var(--color-shallowblue-30); }
111
+ .auto-dark\:border-gray-800 { border-color: var(--color-shallowblue-40); }
112
+
113
+ // Shadow
114
+ .auto-dark\:shadow-none { box-shadow: none; }
115
+ }
116
+
117
+ /* End dark mode utilities */
@@ -0,0 +1,58 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_flexbox.scss
3
+ // Description: CSS Display properties
4
+ // Copyright: 2021-2022 Birdycom
5
+ // Autor: Serge Cools
6
+ // Version: 0.2.0
7
+ // Framework: OmniaCSS
8
+ // Properties: display
9
+ // Values: inline, block, contents, inline-block, list-item, run-in, none
10
+
11
+ @use '../utilities/' as *;
12
+
13
+ /* The Display properties */
14
+
15
+ ///
16
+ /// The Display Property
17
+ /// @group Display
18
+ ///
19
+
20
+ ///
21
+ /// Definition and Usage
22
+ /// The display property specifies the display behavior (the type of rendering box) of an element.
23
+ ///
24
+ /// In HTML, the default display property value is taken from the HTML specifications or /// from the browser/user default style sheet. The default value in XML is inline,
25
+ /// including SVG elements.
26
+ /// @group Display
27
+ /// @name display
28
+ /// @link src/scss/utilities/_display.scss
29
+ /// @since 1.0.0
30
+ /// @author Serge Cools
31
+ ///
32
+ /// Applies to: all elements
33
+ ///
34
+ /// @require $display
35
+ /// @example scss - display class
36
+ /// .block {
37
+ /// display: block;
38
+ /// }
39
+ /// @example html - use display class
40
+ /// <div class="block">
41
+ ///
42
+ /// </div>
43
+ @each $display-prop in $display {
44
+ .#{$display-prop}{
45
+
46
+ display: $display-prop;
47
+
48
+ }
49
+ }
50
+ /* Box-sizing — controls how the total width and height is calculated. */
51
+
52
+ // box-border: width and height include padding and border (most common)
53
+ .box-border { box-sizing: border-box; }
54
+
55
+ // box-content: width and height exclude padding and border (browser default)
56
+ .box-content { box-sizing: content-box; }
57
+
58
+ /* End Display property */
@@ -0,0 +1,26 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_drop_shadow_colors.scss
3
+ // Description: Color classes for the drop-shadow filter (.drop-shadow-sm … -lg read --oc-shadow-color).
4
+ // Copyright: 2021-2026 Birdycom
5
+ // Author: Serge Cools
6
+ // Version: 0.4.0
7
+ // Framework: OmniaCSS
8
+ // Purpose: Generate .drop-shadow-current, .drop-shadow-transparent and .drop-shadow-{omnia color} (also hover: via the engine).
9
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/drop-shadow
10
+ // Note: class="drop-shadow-lg drop-shadow-vividblue" — the color class only sets --oc-shadow-color,
11
+ // the size class draws the shadow with a 25-30% alpha of that color.
12
+ // Map: keywords -> every Omnia color
13
+
14
+ @use "sass:string";
15
+ @use '../utilities/' as *;
16
+
17
+ .drop-shadow-current { --oc-shadow-color: currentcolor; }
18
+ .drop-shadow-transparent { --oc-shadow-color: transparent; }
19
+
20
+ @each $group, $families in $omnia-colors {
21
+ @each $family, $colors in $families {
22
+ @each $color, $props in $colors {
23
+ .drop-shadow-#{string.to-lower-case(#{$color})} { --oc-shadow-color: var(--color-#{string.to-lower-case(#{$color})}-50); }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,50 @@
1
+ // SCSS Document
2
+ // File: src/utilities/_effects.scss
3
+ // Description: CSS effects properties
4
+ // Copyright: 2021-2022 Birdycom
5
+ // Autor: Serge Cools
6
+ // Version: 0.2.0
7
+ // Framework: OmniaCSS
8
+ // Properties: opacity, box shadow
9
+ // Values: Decoration
10
+
11
+ @use '../utilities/' as *;
12
+
13
+ /* The Opacity properties */
14
+
15
+ ///
16
+ /// The Text Decoration Property
17
+ /// @group Opacity
18
+ ///
19
+
20
+ ///
21
+ /// The text-decoration-line property sets the Text decoration.
22
+ /// @group Opacity
23
+ /// @name opacity
24
+ /// @link src/scss/utilities/_variables_text.scss
25
+ /// @since 1.0.0
26
+ /// @author Serge Cools
27
+ ///
28
+ /// Applies to: all elements
29
+ ///
30
+ /// @require {variable} $opacity
31
+ /// @example scss - opacity class
32
+ /// @each $opacity-prop, $opacity-value in $opacity {
33
+ /// .#{$opacity-prop}{
34
+ /// opacity: $opacity-value
35
+ /// }
36
+ /// }
37
+ /// @example html - use text decoration line class
38
+ /// <div class="underline opacity-50">
39
+ /// <p>this line have text decoration line </p>
40
+ /// </div>
41
+ /// <div class="hover:underline">
42
+ /// <p>this line have text decoration line </p>
43
+ /// </div>
44
+ @each $opacity-prop, $opacity-value in $opacity {
45
+ .#{$opacity-prop}{
46
+
47
+ opacity: $opacity-value
48
+
49
+ }
50
+ }
@@ -0,0 +1,102 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_effects_advanced.scss
3
+ // Map: box-shadow -> text-shadow -> blend -> mask
4
+ @use "sass:string";
5
+ @use "shadow_tokens" as *;
6
+
7
+ /* Box shadow */
8
+ .shadow-none { box-shadow: none; }
9
+ // Shadows are light-dark() aware: on a dark color-scheme the shadow alpha is much stronger and a faint
10
+ // light ring + top highlight lifts the surface edge, so elevation stays visible on dark backgrounds.
11
+ .shadow-sm { box-shadow: 0 1px 2px 0 oc-sh(0.08, 0.6) + $oc-shadow-edge; }
12
+ .shadow { box-shadow: 0 1px 3px 0 oc-sh(0.12, 0.65), 0 1px 2px -1px oc-sh(0.1, 0.55) + $oc-shadow-edge; }
13
+ .shadow-md { box-shadow: 0 4px 6px -1px oc-sh(0.15, 0.7), 0 2px 4px -2px oc-sh(0.12, 0.6) + $oc-shadow-edge; }
14
+ .shadow-lg { box-shadow: 0 10px 15px -3px oc-sh(0.18, 0.75), 0 4px 6px -4px oc-sh(0.14, 0.65) + $oc-shadow-edge-hi; }
15
+ .shadow-xl { box-shadow: 0 20px 25px -5px oc-sh(0.22, 0.8), 0 8px 10px -6px oc-sh(0.16, 0.7) + $oc-shadow-edge-hi; }
16
+ .shadow-2xl { box-shadow: 0 25px 50px -12px oc-sh(0.35, 0.9) + $oc-shadow-edge-hi; }
17
+ .shadow-inner { box-shadow: inset 0 2px 4px 0 oc-sh(0.12, 0.6); }
18
+ /* Colored shadows: set the shadow color (Omnia palette) for any .shadow-* class — clearly visible on dark backgrounds */
19
+ .shadow-blue { --oc-shadow-color: var(--color-vividblue-80); }
20
+ .shadow-cyan { --oc-shadow-color: var(--color-skycyan-80); }
21
+ .shadow-purple { --oc-shadow-color: var(--color-purple-20); }
22
+ .shadow-green { --oc-shadow-color: var(--color-green-40); }
23
+ .shadow-red { --oc-shadow-color: var(--color-red-40); }
24
+ .shadow-black { --oc-shadow-color: var(--color-black-50); }
25
+ /* Glow: soft colored light around the element (uses the shadow color, default Omnia blue) */
26
+ .shadow-glow { box-shadow: 0 0 0 1px oklch(from var(--oc-shadow-color, var(--color-vividblue-80)) l c h / 0.35), 0 0 32px -4px oklch(from var(--oc-shadow-color, var(--color-vividblue-80)) l c h / 0.6); }
27
+ .hover\:shadow-lg:hover { box-shadow: 0 10px 15px -3px oc-sh(0.18, 0.75), 0 4px 6px -4px oc-sh(0.14, 0.65) + $oc-shadow-edge-hi; }
28
+ .hover\:shadow-glow:hover { box-shadow: 0 0 0 1px oklch(from var(--oc-shadow-color, var(--color-vividblue-80)) l c h / 0.35), 0 0 32px -4px oklch(from var(--oc-shadow-color, var(--color-vividblue-80)) l c h / 0.6); }
29
+
30
+ /* Text shadow */
31
+ .text-shadow-none { text-shadow: none; }
32
+ .text-shadow-sm { text-shadow: 0 1px 1px oklch(from var(--oc-shadow-color, var(--color-black-50)) l c h / 0.25); }
33
+ .text-shadow { text-shadow: 0 1px 2px oklch(from var(--oc-shadow-color, var(--color-black-50)) l c h / 0.35); }
34
+ .text-shadow-md { text-shadow: 0 2px 4px oklch(from var(--oc-shadow-color, var(--color-black-50)) l c h / 0.4); }
35
+ .text-shadow-lg { text-shadow: 0 4px 8px oklch(from var(--oc-shadow-color, var(--color-black-50)) l c h / 0.45); }
36
+
37
+ /* Mix blend mode */
38
+ .mix-blend-normal { mix-blend-mode: normal; }
39
+ .mix-blend-multiply { mix-blend-mode: multiply; }
40
+ .mix-blend-screen { mix-blend-mode: screen; }
41
+ .mix-blend-overlay { mix-blend-mode: overlay; }
42
+ .mix-blend-darken { mix-blend-mode: darken; }
43
+ .mix-blend-lighten { mix-blend-mode: lighten; }
44
+ .mix-blend-color-dodge { mix-blend-mode: color-dodge; }
45
+ .mix-blend-color-burn { mix-blend-mode: color-burn; }
46
+ .mix-blend-hard-light { mix-blend-mode: hard-light; }
47
+ .mix-blend-soft-light { mix-blend-mode: soft-light; }
48
+ .mix-blend-difference { mix-blend-mode: difference; }
49
+ .mix-blend-exclusion { mix-blend-mode: exclusion; }
50
+ .mix-blend-hue { mix-blend-mode: hue; }
51
+ .mix-blend-saturation { mix-blend-mode: saturation; }
52
+ .mix-blend-color { mix-blend-mode: color; }
53
+ .mix-blend-luminosity { mix-blend-mode: luminosity; }
54
+
55
+ /* Background blend mode */
56
+ .bg-blend-normal { background-blend-mode: normal; }
57
+ .bg-blend-multiply { background-blend-mode: multiply; }
58
+ .bg-blend-screen { background-blend-mode: screen; }
59
+ .bg-blend-overlay { background-blend-mode: overlay; }
60
+ .bg-blend-darken { background-blend-mode: darken; }
61
+ .bg-blend-lighten { background-blend-mode: lighten; }
62
+ .bg-blend-color-dodge { background-blend-mode: color-dodge; }
63
+ .bg-blend-color-burn { background-blend-mode: color-burn; }
64
+ .bg-blend-hard-light { background-blend-mode: hard-light; }
65
+ .bg-blend-soft-light { background-blend-mode: soft-light; }
66
+ .bg-blend-difference { background-blend-mode: difference; }
67
+ .bg-blend-exclusion { background-blend-mode: exclusion; }
68
+
69
+ /* Mask family */
70
+ .mask-none { mask-image: none; -webkit-mask-image: none; }
71
+ .mask-image-linear { mask-image: linear-gradient(to right, transparent, black); -webkit-mask-image: linear-gradient(to right, transparent, black); }
72
+ .mask-image-radial { mask-image: radial-gradient(circle, black 50%, transparent 70%); -webkit-mask-image: radial-gradient(circle, black 50%, transparent 70%); }
73
+
74
+ .mask-clip-border { mask-clip: border-box; -webkit-mask-clip: border; }
75
+ .mask-clip-padding { mask-clip: padding-box; -webkit-mask-clip: padding; }
76
+ .mask-clip-content { mask-clip: content-box; -webkit-mask-clip: content; }
77
+
78
+ .mask-origin-border { mask-origin: border-box; -webkit-mask-origin: border-box; }
79
+ .mask-origin-padding { mask-origin: padding-box; -webkit-mask-origin: padding-box; }
80
+ .mask-origin-content { mask-origin: content-box; -webkit-mask-origin: content-box; }
81
+
82
+ .mask-position-center { mask-position: center; -webkit-mask-position: center; }
83
+ .mask-position-top { mask-position: top; -webkit-mask-position: top; }
84
+ .mask-position-bottom { mask-position: bottom; -webkit-mask-position: bottom; }
85
+
86
+ .mask-repeat { mask-repeat: repeat; -webkit-mask-repeat: repeat; }
87
+ .mask-no-repeat { mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; }
88
+
89
+ .mask-size-auto { mask-size: auto; -webkit-mask-size: auto; }
90
+ .mask-size-contain { mask-size: contain; -webkit-mask-size: contain; }
91
+ .mask-size-cover { mask-size: cover; -webkit-mask-size: cover; }
92
+
93
+ .mask-mode-alpha { mask-mode: alpha; }
94
+ .mask-mode-luminance { mask-mode: luminance; }
95
+
96
+ .mask-type-alpha { mask-type: alpha; }
97
+ .mask-type-luminance { mask-type: luminance; }
98
+
99
+ .mask-composite-add { mask-composite: add; -webkit-mask-composite: source-over; }
100
+ .mask-composite-subtract { mask-composite: subtract; -webkit-mask-composite: source-out; }
101
+ .mask-composite-intersect { mask-composite: intersect; -webkit-mask-composite: source-in; }
102
+ .mask-composite-exclude { mask-composite: exclude; -webkit-mask-composite: xor; }
@@ -0,0 +1,149 @@
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_experimental_css.scss
3
+ // Description: Newest CSS features that are (still) implemented in one browser engine: gap decorations,
4
+ // caret shape/animation, interactivity, interest invokers, scroll targets, reading-order, overlay,
5
+ // text-size-adjust, object-view-box, text-decoration-inset, view-transition-group and per-corner shapes.
6
+ // Copyright: 2021-2026 Birdycom
7
+ // Author: Serge Cools
8
+ // Version: 0.3.0
9
+ // Framework: OmniaCSS
10
+ // Purpose: Progressive enhancement only — every class is ignored by browsers without support.
11
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_gaps
12
+ // Map: gap decorations -> caret -> interactivity -> interest delay -> scroll targets -> reading-order -> overlay
13
+ // -> text-size-adjust -> object-view-box -> text-decoration-inset -> view-transition-group -> per-corner shapes
14
+ // -> intrinsic sizes -> mask border -> shape-image-threshold -> font-width
15
+
16
+ /* Gap decorations — lines drawn in the gaps of grid, flex and multi-column layouts */
17
+ .rule-solid { rule-style: solid; }
18
+ .rule-dashed { rule-style: dashed; }
19
+ .rule-dotted { rule-style: dotted; }
20
+ .rule-1 { rule-width: 1px; }
21
+ .rule-2 { rule-width: 2px; }
22
+ .rule-current { rule-color: currentcolor; }
23
+ .row-rule-solid { row-rule-style: solid; }
24
+ .row-rule-1 { row-rule-width: 1px; }
25
+ .row-rule-current { row-rule-color: currentcolor; }
26
+ .rule-break-none { rule-break: none; }
27
+ .rule-break-spanning-item { rule-break: spanning-item; }
28
+ .rule-break-intersection { rule-break: intersection; }
29
+ .rule-inset-0 { rule-inset: 0; }
30
+ .rule-inset-2 { rule-inset: 0.5rem; }
31
+ .column-rule-solid-1 { column-rule: 1px solid currentcolor; }
32
+
33
+ /* Caret shape and animation (text input cursor) */
34
+ .caret-shape-auto { caret-shape: auto; }
35
+ .caret-shape-bar { caret-shape: bar; }
36
+ .caret-shape-block { caret-shape: block; }
37
+ .caret-shape-underscore { caret-shape: underscore; }
38
+ .caret-animation-auto { caret-animation: auto; }
39
+ .caret-animation-manual { caret-animation: manual; }
40
+
41
+ /* Interactivity — make a subtree inert from CSS */
42
+ .interactivity-auto { interactivity: auto; }
43
+ .interactivity-inert { interactivity: inert; }
44
+
45
+ /* Interest invokers (hover/focus to show a popover) */
46
+ .interest-delay-0 { interest-delay: 0s; }
47
+ .interest-delay-short { interest-delay: 0.2s 0.1s; }
48
+ .interest-delay-normal { interest-delay: normal; }
49
+
50
+ /* Scroll targets — initial scroll position and scroll-spy groups */
51
+ .scroll-initial-target-nearest { scroll-initial-target: nearest; }
52
+ .scroll-initial-target-none { scroll-initial-target: none; }
53
+ .scroll-target-group-auto { scroll-target-group: auto; }
54
+ .scroll-target-group-none { scroll-target-group: none; }
55
+
56
+ /* Reading order of individual items (works with reading-flow on the parent) */
57
+ .reading-order-first { reading-order: -1; }
58
+ .reading-order-0 { reading-order: 0; }
59
+ .reading-order-last { reading-order: 1; }
60
+
61
+ /* Overlay (top layer) — transition it with .transition-discrete for exit animations */
62
+ .overlay-auto { overlay: auto; }
63
+ .overlay-none { overlay: none; }
64
+
65
+ /* Text size adjust (mobile text inflation) */
66
+ .text-size-adjust-none { -webkit-text-size-adjust: none; text-size-adjust: none; }
67
+ .text-size-adjust-auto { -webkit-text-size-adjust: auto; text-size-adjust: auto; }
68
+ .text-size-adjust-100 { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
69
+
70
+ /* Object view box — crop/zoom a replaced element */
71
+ .object-view-box-none { object-view-box: none; }
72
+ .object-view-box-center { object-view-box: inset(25%); }
73
+
74
+ /* Text decoration inset — shorten underlines at both ends */
75
+ .decoration-inset-0 { text-decoration-inset: 0; }
76
+ .decoration-inset-auto { text-decoration-inset: auto; }
77
+ .decoration-inset-2 { text-decoration-inset: 0.125em; }
78
+
79
+ /* View transition group */
80
+ .vt-group-normal { view-transition-group: normal; }
81
+ .vt-group-contain { view-transition-group: contain; }
82
+ .vt-group-nearest { view-transition-group: nearest; }
83
+
84
+ /* Per-corner shapes (combine with .round-*) */
85
+ .corner-t-bevel { corner-top-shape: bevel; }
86
+ .corner-b-bevel { corner-bottom-shape: bevel; }
87
+ .corner-l-scoop { corner-left-shape: scoop; }
88
+ .corner-r-scoop { corner-right-shape: scoop; }
89
+ .corner-tl-notch { corner-top-left-shape: notch; }
90
+ .corner-tr-notch { corner-top-right-shape: notch; }
91
+ .corner-bl-squircle { corner-bottom-left-shape: squircle; }
92
+ .corner-br-squircle { corner-bottom-right-shape: squircle; }
93
+
94
+ /* Intrinsic sizes per axis (with content-visibility: auto) */
95
+ .contain-intrinsic-w-auto-md { contain-intrinsic-width: auto 300px; }
96
+ .contain-intrinsic-h-auto-md { contain-intrinsic-height: auto 500px; }
97
+ .contain-intrinsic-inline-auto-md { contain-intrinsic-inline-size: auto 300px; }
98
+ .contain-intrinsic-block-auto-md { contain-intrinsic-block-size: auto 500px; }
99
+
100
+ /* Mask border and shape image threshold */
101
+ .mask-border-none { mask-border: none; }
102
+ .mask-border-gradient {
103
+ mask-border-source: linear-gradient(#000, transparent);
104
+ mask-border-slice: 30 fill;
105
+ mask-border-width: 30px;
106
+ mask-border-repeat: stretch;
107
+ mask-border-outset: 0;
108
+ }
109
+ .shape-image-threshold-0 { shape-image-threshold: 0; }
110
+ .shape-image-threshold-50 { shape-image-threshold: 0.5; }
111
+
112
+ /* Font width (new name of font-stretch) */
113
+ .font-width-condensed { font-width: condensed; }
114
+ .font-width-normal { font-width: normal; }
115
+ .font-width-expanded { font-width: expanded; }
116
+
117
+ /* Gap decoration shorthands and longhands */
118
+ .rule-line { rule: 1px solid currentcolor; }
119
+ .row-rule-line { row-rule: 1px solid currentcolor; }
120
+ .column-rule-break-intersection { column-rule-break: intersection; }
121
+ .row-rule-break-intersection { row-rule-break: intersection; }
122
+ .column-rule-inset-2 { column-rule-inset: 0.5rem; }
123
+ .row-rule-inset-2 { row-rule-inset: 0.5rem; }
124
+ .rule-overlap-row { rule-overlap: row-over-column; }
125
+ .rule-overlap-column { rule-overlap: column-over-row; }
126
+ .rule-visibility-around { rule-visibility-items: around; }
127
+
128
+ /* Multi-column wrapping into rows */
129
+ .column-wrap-wrap { column-wrap: wrap; }
130
+ .column-height-sm { column-height: 10rem; }
131
+
132
+ /* Logical per-corner shapes */
133
+ .corner-ss-bevel { corner-start-start-shape: bevel; }
134
+ .corner-ee-bevel { corner-end-end-shape: bevel; }
135
+ .corner-inline-start-scoop { corner-inline-start-shape: scoop; }
136
+ .corner-block-end-notch { corner-block-end-shape: notch; }
137
+
138
+ /* Misc newest */
139
+ .font-synthesis-position-none { font-synthesis-position: none; }
140
+ .decoration-skip-spaces-all { text-decoration-skip-spaces: all; }
141
+ .decoration-skip-spaces-none { text-decoration-skip-spaces: none; }
142
+ .text-fit-grow { text-fit: grow; }
143
+ .text-fit-shrink { text-fit: shrink; }
144
+ .vt-scope-all { view-transition-scope: all; }
145
+ .interest-delay-start-0 { interest-delay-start: 0s; }
146
+ .interest-delay-end-0 { interest-delay-end: 0s; }
147
+ .stroke-color-current { stroke-color: currentcolor; }
148
+ .speak-as-spell-out { speak-as: spell-out; }
149
+ .speak-as-digits { speak-as: digits; }