@birdycom/omniacss 0.11.0 → 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 (47) 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/tokens/omnia.dtcg.json +2 -2
  8. package/dist/tokens/omnia.tokens.json +1 -1
  9. package/dist/tokens/omnia_tokens.py +2 -2
  10. package/package.json +63 -63
  11. package/scss/utilities/_anchor_positioning.scss +65 -65
  12. package/scss/utilities/_animation_properties.scss +143 -143
  13. package/scss/utilities/_borders_extended.scss +97 -97
  14. package/scss/utilities/_borders_outlines.scss +161 -161
  15. package/scss/utilities/_containment.scss +82 -82
  16. package/scss/utilities/_css_functions.scss +34 -34
  17. package/scss/utilities/_dark_mode.scss +117 -117
  18. package/scss/utilities/_drop_shadow_colors.scss +26 -26
  19. package/scss/utilities/_experimental_css.scss +149 -149
  20. package/scss/utilities/_flexbox.scss +317 -317
  21. package/scss/utilities/_font_variants.scss +139 -139
  22. package/scss/utilities/_gap.scss +103 -103
  23. package/scss/utilities/_gradient_stops.scss +48 -48
  24. package/scss/utilities/_grid.scss +672 -672
  25. package/scss/utilities/_layout_extras.scss +171 -171
  26. package/scss/utilities/_layout_flow.scss +210 -210
  27. package/scss/utilities/_mask_extras.scss +62 -62
  28. package/scss/utilities/_motion_transforms.scss +167 -167
  29. package/scss/utilities/_scroll_animations.scss +80 -80
  30. package/scss/utilities/_scrollbar.scss +2 -1
  31. package/scss/utilities/_shadow_tokens.scss +21 -21
  32. package/scss/utilities/_shapes.scss +72 -72
  33. package/scss/utilities/_sizing_logical.scss +99 -99
  34. package/scss/utilities/_starting_style.scss +53 -53
  35. package/scss/utilities/_state_variants.scss +196 -196
  36. package/scss/utilities/_svg.scss +100 -100
  37. package/scss/utilities/_table_advanced.scss +19 -19
  38. package/scss/utilities/_typography_advanced.scss +124 -124
  39. package/scss/utilities/_typography_modern.scss +83 -83
  40. package/scss/utilities/_view_transitions.scss +64 -64
  41. package/scss/utilities/_writing_modes.scss +72 -72
  42. package/scss/variables/_hulp.scss +107 -107
  43. package/scss/variables/_variables_effects.scss +108 -108
  44. package/src/postcss.mjs +43 -43
  45. package/src/tokens.mjs +377 -377
  46. package/src/variants.mjs +278 -278
  47. package/tokens/semantic.json +80 -80
@@ -1,196 +1,196 @@
1
- // File: src/scss/utilities/_state_variants.scss
2
- // Description: Hover, focus, active and focus-visible state variants for
3
- // utilities that don't already have them via $pseudoclasses map.
4
- // Note: Colors and text-decoration already have pseudo-class variants
5
- // (generated in _colors_omnia.scss, _colors_html.scss, _text.scss).
6
- // This file covers the remaining utilities.
7
- // Copyright: 2021-2026 Birdycom
8
- // Autor: Serge Cools
9
- // Version: 0.1.6
10
- // Framework: OmniaCSS
11
- @use "shadow_tokens" as *;
12
-
13
- // ---------------------------------------------------------------------------
14
- // State map: pseudo-class -> CSS selector suffix
15
- // ---------------------------------------------------------------------------
16
- $_states: (
17
- 'hover': ':hover',
18
- 'focus': ':focus',
19
- 'active': ':active',
20
- 'focus-visible': ':focus-visible'
21
- );
22
-
23
- @each $state, $pseudo in $_states {
24
-
25
- // -----------------------------------------------------------------------
26
- // Opacity state variants
27
- // -----------------------------------------------------------------------
28
- .#{$state}\:opacity-0#{$pseudo} { opacity: 0; }
29
- .#{$state}\:opacity-5#{$pseudo} { opacity: 0.05; }
30
- .#{$state}\:opacity-10#{$pseudo} { opacity: 0.1; }
31
- .#{$state}\:opacity-20#{$pseudo} { opacity: 0.2; }
32
- .#{$state}\:opacity-25#{$pseudo} { opacity: 0.25; }
33
- .#{$state}\:opacity-30#{$pseudo} { opacity: 0.3; }
34
- .#{$state}\:opacity-40#{$pseudo} { opacity: 0.4; }
35
- .#{$state}\:opacity-50#{$pseudo} { opacity: 0.5; }
36
- .#{$state}\:opacity-60#{$pseudo} { opacity: 0.6; }
37
- .#{$state}\:opacity-70#{$pseudo} { opacity: 0.7; }
38
- .#{$state}\:opacity-75#{$pseudo} { opacity: 0.75; }
39
- .#{$state}\:opacity-80#{$pseudo} { opacity: 0.8; }
40
- .#{$state}\:opacity-90#{$pseudo} { opacity: 0.9; }
41
- .#{$state}\:opacity-100#{$pseudo} { opacity: 1; }
42
-
43
- // -----------------------------------------------------------------------
44
- // Box-shadow state variants
45
- // -----------------------------------------------------------------------
46
- .#{$state}\:shadow-none#{$pseudo} { box-shadow: none; }
47
- .#{$state}\:shadow-sm#{$pseudo} { box-shadow: #{$oc-shadow-sm}; }
48
- .#{$state}\:shadow-md#{$pseudo} { box-shadow: #{$oc-shadow-md}; }
49
- .#{$state}\:shadow-lg#{$pseudo} { box-shadow: #{$oc-shadow-lg}; }
50
- .#{$state}\:shadow-xl#{$pseudo} { box-shadow: #{$oc-shadow-xl}; }
51
-
52
- // -----------------------------------------------------------------------
53
- // Scale (transform) state variants
54
- // -----------------------------------------------------------------------
55
- .#{$state}\:scale-95#{$pseudo} { transform: scale(0.95); }
56
- .#{$state}\:scale-100#{$pseudo} { transform: scale(1); }
57
- .#{$state}\:scale-105#{$pseudo} { transform: scale(1.05); }
58
- .#{$state}\:scale-110#{$pseudo} { transform: scale(1.1); }
59
- .#{$state}\:scale-125#{$pseudo} { transform: scale(1.25); }
60
-
61
- // Translate
62
- .#{$state}\:translate-y-0#{$pseudo} { transform: translateY(0); }
63
- .#{$state}\:translate-y-1#{$pseudo} { transform: translateY(-0.25rem); }
64
- .#{$state}\:-translate-y-1#{$pseudo} { transform: translateY(-0.25rem); }
65
-
66
- // Rotate
67
- .#{$state}\:rotate-0#{$pseudo} { transform: rotate(0deg); }
68
- .#{$state}\:rotate-1#{$pseudo} { transform: rotate(1deg); }
69
- .#{$state}\:rotate-2#{$pseudo} { transform: rotate(2deg); }
70
- .#{$state}\:rotate-3#{$pseudo} { transform: rotate(3deg); }
71
- .#{$state}\:rotate-6#{$pseudo} { transform: rotate(6deg); }
72
- .#{$state}\:rotate-12#{$pseudo} { transform: rotate(12deg); }
73
- .#{$state}\:rotate-45#{$pseudo} { transform: rotate(45deg); }
74
- .#{$state}\:rotate-90#{$pseudo} { transform: rotate(90deg); }
75
- .#{$state}\:rotate-180#{$pseudo} { transform: rotate(180deg); }
76
-
77
- // -----------------------------------------------------------------------
78
- // Border-color state variants (neutral palette)
79
- // -----------------------------------------------------------------------
80
- .#{$state}\:border-transparent#{$pseudo} { border-color: transparent; }
81
- .#{$state}\:border-gray-200#{$pseudo} { border-color: var(--color-silver-2); }
82
- .#{$state}\:border-gray-300#{$pseudo} { border-color: var(--color-silver-20); }
83
- .#{$state}\:border-gray-400#{$pseudo} { border-color: var(--color-gray-20); }
84
- .#{$state}\:border-gray-500#{$pseudo} { border-color: var(--color-black-2); }
85
- .#{$state}\:border-gray-600#{$pseudo} { border-color: var(--color-duskblue-20); }
86
- .#{$state}\:border-gray-700#{$pseudo} { border-color: var(--color-shallowblue-30); }
87
-
88
- // Accent border colors
89
- .#{$state}\:border-blue-500#{$pseudo} { border-color: var(--color-vividblue-70); }
90
- .#{$state}\:border-red-500#{$pseudo} { border-color: var(--color-red-50); }
91
- .#{$state}\:border-green-500#{$pseudo} { border-color: var(--color-green-10); }
92
-
93
- // -----------------------------------------------------------------------
94
- // Background color state variants (neutral palette)
95
- // -----------------------------------------------------------------------
96
- .#{$state}\:bg-transparent#{$pseudo} { background-color: transparent; }
97
- .#{$state}\:bg-white#{$pseudo} { background-color: var(--color-white-2); }
98
- .#{$state}\:bg-gray-50#{$pseudo} { background-color: var(--color-snow-50); }
99
- .#{$state}\:bg-gray-100#{$pseudo} { background-color: var(--color-linen-30); }
100
- .#{$state}\:bg-gray-200#{$pseudo} { background-color: var(--color-silver-2); }
101
- .#{$state}\:bg-gray-700#{$pseudo} { background-color: var(--color-shallowblue-30); }
102
- .#{$state}\:bg-gray-800#{$pseudo} { background-color: var(--color-shallowblue-40); }
103
- .#{$state}\:bg-gray-900#{$pseudo} { background-color: var(--color-shallowblue-50); }
104
-
105
- // -----------------------------------------------------------------------
106
- // Text color state variants (neutral palette)
107
- // -----------------------------------------------------------------------
108
- .#{$state}\:text-white#{$pseudo} { color: var(--color-white-2); }
109
- .#{$state}\:text-gray-100#{$pseudo} { color: var(--color-linen-30); }
110
- .#{$state}\:text-gray-300#{$pseudo} { color: var(--color-silver-20); }
111
- .#{$state}\:text-gray-500#{$pseudo} { color: var(--color-black-2); }
112
- .#{$state}\:text-gray-700#{$pseudo} { color: var(--color-shallowblue-30); }
113
- .#{$state}\:text-gray-900#{$pseudo} { color: var(--color-shallowblue-50); }
114
- .#{$state}\:text-blue-500#{$pseudo} { color: var(--color-vividblue-70); }
115
- .#{$state}\:text-red-500#{$pseudo} { color: var(--color-red-50); }
116
-
117
- // -----------------------------------------------------------------------
118
- // Ring (outline-based focus ring)
119
- // -----------------------------------------------------------------------
120
- .#{$state}\:ring-0#{$pseudo} { box-shadow: 0 0 0 0px transparent; }
121
- .#{$state}\:ring-1#{$pseudo} { box-shadow: 0 0 0 1px oklch(from var(--color-vividblue-80) l c h / 0.5); }
122
- .#{$state}\:ring-2#{$pseudo} { box-shadow: 0 0 0 2px oklch(from var(--color-vividblue-80) l c h / 0.5); }
123
- .#{$state}\:ring-4#{$pseudo} { box-shadow: 0 0 0 4px oklch(from var(--color-vividblue-80) l c h / 0.3); }
124
-
125
- // -----------------------------------------------------------------------
126
- // Outline state variants
127
- // -----------------------------------------------------------------------
128
- .#{$state}\:outline-none#{$pseudo} { outline: 2px solid transparent; outline-offset: 2px; }
129
- .#{$state}\:outline#{$pseudo} { outline-style: solid; }
130
-
131
- // -----------------------------------------------------------------------
132
- // Display state variants
133
- // -----------------------------------------------------------------------
134
- .#{$state}\:hidden#{$pseudo} { display: none; }
135
- .#{$state}\:block#{$pseudo} { display: block; }
136
- .#{$state}\:inline#{$pseudo} { display: inline; }
137
-
138
- // -----------------------------------------------------------------------
139
- // Visibility state variants
140
- // -----------------------------------------------------------------------
141
- .#{$state}\:visible#{$pseudo} { visibility: visible; }
142
- .#{$state}\:invisible#{$pseudo} { visibility: hidden; }
143
-
144
- // -----------------------------------------------------------------------
145
- // Cursor state variants
146
- // -----------------------------------------------------------------------
147
- .#{$state}\:cursor-pointer#{$pseudo} { cursor: pointer; }
148
- .#{$state}\:cursor-default#{$pseudo} { cursor: default; }
149
- .#{$state}\:cursor-not-allowed#{$pseudo} { cursor: not-allowed; }
150
-
151
- // -----------------------------------------------------------------------
152
- // Decoration (text-decoration) state variants
153
- // -----------------------------------------------------------------------
154
- .#{$state}\:underline#{$pseudo} { text-decoration-line: underline; }
155
- .#{$state}\:no-underline#{$pseudo} { text-decoration-line: none; }
156
- .#{$state}\:line-through#{$pseudo} { text-decoration-line: line-through; }
157
-
158
- // -----------------------------------------------------------------------
159
- // Font weight state variants
160
- // -----------------------------------------------------------------------
161
- .#{$state}\:font-bold#{$pseudo} { font-weight: 700; }
162
- .#{$state}\:font-semibold#{$pseudo} { font-weight: 600; }
163
- .#{$state}\:font-normal#{$pseudo} { font-weight: 400; }
164
-
165
- } // end @each state
166
-
167
- // ---------------------------------------------------------------------------
168
- // Disabled state (uses attribute selector, not pseudo-class prefix)
169
- // ---------------------------------------------------------------------------
170
- .disabled\:opacity-50:disabled,
171
- .disabled\:opacity-50[disabled] { opacity: 0.5; }
172
-
173
- .disabled\:cursor-not-allowed:disabled,
174
- .disabled\:cursor-not-allowed[disabled] { cursor: not-allowed; }
175
-
176
- .disabled\:pointer-events-none:disabled,
177
- .disabled\:pointer-events-none[disabled] { pointer-events: none; }
178
-
179
- // ---------------------------------------------------------------------------
180
- // Group hover (parent .group hover triggers child state change)
181
- // Pattern: .group:hover .group-hover\:{utility}
182
- // ---------------------------------------------------------------------------
183
- .group:hover .group-hover\:opacity-100 { opacity: 1; }
184
- .group:hover .group-hover\:opacity-75 { opacity: 0.75; }
185
- .group:hover .group-hover\:opacity-50 { opacity: 0.5; }
186
- .group:hover .group-hover\:visible { visibility: visible; }
187
- .group:hover .group-hover\:invisible { visibility: hidden; }
188
- .group:hover .group-hover\:block { display: block; }
189
- .group:hover .group-hover\:hidden { display: none; }
190
- .group:hover .group-hover\:scale-105 { transform: scale(1.05); }
191
- .group:hover .group-hover\:scale-110 { transform: scale(1.1); }
192
- .group:hover .group-hover\:text-white { color: var(--color-white-2); }
193
- .group:hover .group-hover\:underline { text-decoration-line: underline; }
194
- .group:hover .group-hover\:no-underline { text-decoration-line: none; }
195
-
196
- /* End state variant utilities */
1
+ // File: src/scss/utilities/_state_variants.scss
2
+ // Description: Hover, focus, active and focus-visible state variants for
3
+ // utilities that don't already have them via $pseudoclasses map.
4
+ // Note: Colors and text-decoration already have pseudo-class variants
5
+ // (generated in _colors_omnia.scss, _colors_html.scss, _text.scss).
6
+ // This file covers the remaining utilities.
7
+ // Copyright: 2021-2026 Birdycom
8
+ // Autor: Serge Cools
9
+ // Version: 0.1.6
10
+ // Framework: OmniaCSS
11
+ @use "shadow_tokens" as *;
12
+
13
+ // ---------------------------------------------------------------------------
14
+ // State map: pseudo-class -> CSS selector suffix
15
+ // ---------------------------------------------------------------------------
16
+ $_states: (
17
+ 'hover': ':hover',
18
+ 'focus': ':focus',
19
+ 'active': ':active',
20
+ 'focus-visible': ':focus-visible'
21
+ );
22
+
23
+ @each $state, $pseudo in $_states {
24
+
25
+ // -----------------------------------------------------------------------
26
+ // Opacity state variants
27
+ // -----------------------------------------------------------------------
28
+ .#{$state}\:opacity-0#{$pseudo} { opacity: 0; }
29
+ .#{$state}\:opacity-5#{$pseudo} { opacity: 0.05; }
30
+ .#{$state}\:opacity-10#{$pseudo} { opacity: 0.1; }
31
+ .#{$state}\:opacity-20#{$pseudo} { opacity: 0.2; }
32
+ .#{$state}\:opacity-25#{$pseudo} { opacity: 0.25; }
33
+ .#{$state}\:opacity-30#{$pseudo} { opacity: 0.3; }
34
+ .#{$state}\:opacity-40#{$pseudo} { opacity: 0.4; }
35
+ .#{$state}\:opacity-50#{$pseudo} { opacity: 0.5; }
36
+ .#{$state}\:opacity-60#{$pseudo} { opacity: 0.6; }
37
+ .#{$state}\:opacity-70#{$pseudo} { opacity: 0.7; }
38
+ .#{$state}\:opacity-75#{$pseudo} { opacity: 0.75; }
39
+ .#{$state}\:opacity-80#{$pseudo} { opacity: 0.8; }
40
+ .#{$state}\:opacity-90#{$pseudo} { opacity: 0.9; }
41
+ .#{$state}\:opacity-100#{$pseudo} { opacity: 1; }
42
+
43
+ // -----------------------------------------------------------------------
44
+ // Box-shadow state variants
45
+ // -----------------------------------------------------------------------
46
+ .#{$state}\:shadow-none#{$pseudo} { box-shadow: none; }
47
+ .#{$state}\:shadow-sm#{$pseudo} { box-shadow: #{$oc-shadow-sm}; }
48
+ .#{$state}\:shadow-md#{$pseudo} { box-shadow: #{$oc-shadow-md}; }
49
+ .#{$state}\:shadow-lg#{$pseudo} { box-shadow: #{$oc-shadow-lg}; }
50
+ .#{$state}\:shadow-xl#{$pseudo} { box-shadow: #{$oc-shadow-xl}; }
51
+
52
+ // -----------------------------------------------------------------------
53
+ // Scale (transform) state variants
54
+ // -----------------------------------------------------------------------
55
+ .#{$state}\:scale-95#{$pseudo} { transform: scale(0.95); }
56
+ .#{$state}\:scale-100#{$pseudo} { transform: scale(1); }
57
+ .#{$state}\:scale-105#{$pseudo} { transform: scale(1.05); }
58
+ .#{$state}\:scale-110#{$pseudo} { transform: scale(1.1); }
59
+ .#{$state}\:scale-125#{$pseudo} { transform: scale(1.25); }
60
+
61
+ // Translate
62
+ .#{$state}\:translate-y-0#{$pseudo} { transform: translateY(0); }
63
+ .#{$state}\:translate-y-1#{$pseudo} { transform: translateY(-0.25rem); }
64
+ .#{$state}\:-translate-y-1#{$pseudo} { transform: translateY(-0.25rem); }
65
+
66
+ // Rotate
67
+ .#{$state}\:rotate-0#{$pseudo} { transform: rotate(0deg); }
68
+ .#{$state}\:rotate-1#{$pseudo} { transform: rotate(1deg); }
69
+ .#{$state}\:rotate-2#{$pseudo} { transform: rotate(2deg); }
70
+ .#{$state}\:rotate-3#{$pseudo} { transform: rotate(3deg); }
71
+ .#{$state}\:rotate-6#{$pseudo} { transform: rotate(6deg); }
72
+ .#{$state}\:rotate-12#{$pseudo} { transform: rotate(12deg); }
73
+ .#{$state}\:rotate-45#{$pseudo} { transform: rotate(45deg); }
74
+ .#{$state}\:rotate-90#{$pseudo} { transform: rotate(90deg); }
75
+ .#{$state}\:rotate-180#{$pseudo} { transform: rotate(180deg); }
76
+
77
+ // -----------------------------------------------------------------------
78
+ // Border-color state variants (neutral palette)
79
+ // -----------------------------------------------------------------------
80
+ .#{$state}\:border-transparent#{$pseudo} { border-color: transparent; }
81
+ .#{$state}\:border-gray-200#{$pseudo} { border-color: var(--color-silver-2); }
82
+ .#{$state}\:border-gray-300#{$pseudo} { border-color: var(--color-silver-20); }
83
+ .#{$state}\:border-gray-400#{$pseudo} { border-color: var(--color-gray-20); }
84
+ .#{$state}\:border-gray-500#{$pseudo} { border-color: var(--color-black-2); }
85
+ .#{$state}\:border-gray-600#{$pseudo} { border-color: var(--color-duskblue-20); }
86
+ .#{$state}\:border-gray-700#{$pseudo} { border-color: var(--color-shallowblue-30); }
87
+
88
+ // Accent border colors
89
+ .#{$state}\:border-blue-500#{$pseudo} { border-color: var(--color-vividblue-70); }
90
+ .#{$state}\:border-red-500#{$pseudo} { border-color: var(--color-red-50); }
91
+ .#{$state}\:border-green-500#{$pseudo} { border-color: var(--color-green-10); }
92
+
93
+ // -----------------------------------------------------------------------
94
+ // Background color state variants (neutral palette)
95
+ // -----------------------------------------------------------------------
96
+ .#{$state}\:bg-transparent#{$pseudo} { background-color: transparent; }
97
+ .#{$state}\:bg-white#{$pseudo} { background-color: var(--color-white-2); }
98
+ .#{$state}\:bg-gray-50#{$pseudo} { background-color: var(--color-snow-50); }
99
+ .#{$state}\:bg-gray-100#{$pseudo} { background-color: var(--color-linen-30); }
100
+ .#{$state}\:bg-gray-200#{$pseudo} { background-color: var(--color-silver-2); }
101
+ .#{$state}\:bg-gray-700#{$pseudo} { background-color: var(--color-shallowblue-30); }
102
+ .#{$state}\:bg-gray-800#{$pseudo} { background-color: var(--color-shallowblue-40); }
103
+ .#{$state}\:bg-gray-900#{$pseudo} { background-color: var(--color-shallowblue-50); }
104
+
105
+ // -----------------------------------------------------------------------
106
+ // Text color state variants (neutral palette)
107
+ // -----------------------------------------------------------------------
108
+ .#{$state}\:text-white#{$pseudo} { color: var(--color-white-2); }
109
+ .#{$state}\:text-gray-100#{$pseudo} { color: var(--color-linen-30); }
110
+ .#{$state}\:text-gray-300#{$pseudo} { color: var(--color-silver-20); }
111
+ .#{$state}\:text-gray-500#{$pseudo} { color: var(--color-black-2); }
112
+ .#{$state}\:text-gray-700#{$pseudo} { color: var(--color-shallowblue-30); }
113
+ .#{$state}\:text-gray-900#{$pseudo} { color: var(--color-shallowblue-50); }
114
+ .#{$state}\:text-blue-500#{$pseudo} { color: var(--color-vividblue-70); }
115
+ .#{$state}\:text-red-500#{$pseudo} { color: var(--color-red-50); }
116
+
117
+ // -----------------------------------------------------------------------
118
+ // Ring (outline-based focus ring)
119
+ // -----------------------------------------------------------------------
120
+ .#{$state}\:ring-0#{$pseudo} { box-shadow: 0 0 0 0px transparent; }
121
+ .#{$state}\:ring-1#{$pseudo} { box-shadow: 0 0 0 1px oklch(from var(--color-vividblue-80) l c h / 0.5); }
122
+ .#{$state}\:ring-2#{$pseudo} { box-shadow: 0 0 0 2px oklch(from var(--color-vividblue-80) l c h / 0.5); }
123
+ .#{$state}\:ring-4#{$pseudo} { box-shadow: 0 0 0 4px oklch(from var(--color-vividblue-80) l c h / 0.3); }
124
+
125
+ // -----------------------------------------------------------------------
126
+ // Outline state variants
127
+ // -----------------------------------------------------------------------
128
+ .#{$state}\:outline-none#{$pseudo} { outline: 2px solid transparent; outline-offset: 2px; }
129
+ .#{$state}\:outline#{$pseudo} { outline-style: solid; }
130
+
131
+ // -----------------------------------------------------------------------
132
+ // Display state variants
133
+ // -----------------------------------------------------------------------
134
+ .#{$state}\:hidden#{$pseudo} { display: none; }
135
+ .#{$state}\:block#{$pseudo} { display: block; }
136
+ .#{$state}\:inline#{$pseudo} { display: inline; }
137
+
138
+ // -----------------------------------------------------------------------
139
+ // Visibility state variants
140
+ // -----------------------------------------------------------------------
141
+ .#{$state}\:visible#{$pseudo} { visibility: visible; }
142
+ .#{$state}\:invisible#{$pseudo} { visibility: hidden; }
143
+
144
+ // -----------------------------------------------------------------------
145
+ // Cursor state variants
146
+ // -----------------------------------------------------------------------
147
+ .#{$state}\:cursor-pointer#{$pseudo} { cursor: pointer; }
148
+ .#{$state}\:cursor-default#{$pseudo} { cursor: default; }
149
+ .#{$state}\:cursor-not-allowed#{$pseudo} { cursor: not-allowed; }
150
+
151
+ // -----------------------------------------------------------------------
152
+ // Decoration (text-decoration) state variants
153
+ // -----------------------------------------------------------------------
154
+ .#{$state}\:underline#{$pseudo} { text-decoration-line: underline; }
155
+ .#{$state}\:no-underline#{$pseudo} { text-decoration-line: none; }
156
+ .#{$state}\:line-through#{$pseudo} { text-decoration-line: line-through; }
157
+
158
+ // -----------------------------------------------------------------------
159
+ // Font weight state variants
160
+ // -----------------------------------------------------------------------
161
+ .#{$state}\:font-bold#{$pseudo} { font-weight: 700; }
162
+ .#{$state}\:font-semibold#{$pseudo} { font-weight: 600; }
163
+ .#{$state}\:font-normal#{$pseudo} { font-weight: 400; }
164
+
165
+ } // end @each state
166
+
167
+ // ---------------------------------------------------------------------------
168
+ // Disabled state (uses attribute selector, not pseudo-class prefix)
169
+ // ---------------------------------------------------------------------------
170
+ .disabled\:opacity-50:disabled,
171
+ .disabled\:opacity-50[disabled] { opacity: 0.5; }
172
+
173
+ .disabled\:cursor-not-allowed:disabled,
174
+ .disabled\:cursor-not-allowed[disabled] { cursor: not-allowed; }
175
+
176
+ .disabled\:pointer-events-none:disabled,
177
+ .disabled\:pointer-events-none[disabled] { pointer-events: none; }
178
+
179
+ // ---------------------------------------------------------------------------
180
+ // Group hover (parent .group hover triggers child state change)
181
+ // Pattern: .group:hover .group-hover\:{utility}
182
+ // ---------------------------------------------------------------------------
183
+ .group:hover .group-hover\:opacity-100 { opacity: 1; }
184
+ .group:hover .group-hover\:opacity-75 { opacity: 0.75; }
185
+ .group:hover .group-hover\:opacity-50 { opacity: 0.5; }
186
+ .group:hover .group-hover\:visible { visibility: visible; }
187
+ .group:hover .group-hover\:invisible { visibility: hidden; }
188
+ .group:hover .group-hover\:block { display: block; }
189
+ .group:hover .group-hover\:hidden { display: none; }
190
+ .group:hover .group-hover\:scale-105 { transform: scale(1.05); }
191
+ .group:hover .group-hover\:scale-110 { transform: scale(1.1); }
192
+ .group:hover .group-hover\:text-white { color: var(--color-white-2); }
193
+ .group:hover .group-hover\:underline { text-decoration-line: underline; }
194
+ .group:hover .group-hover\:no-underline { text-decoration-line: none; }
195
+
196
+ /* End state variant utilities */
@@ -1,100 +1,100 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_svg.scss
3
- // Map: fill -> stroke -> stroke-width -> rules/opacity -> dashes/caps/joins -> paint-order/vector-effect/rendering
4
- // -> text-anchor/baselines -> markers/stops/flood/lighting
5
-
6
- /* Fill */
7
- .fill-none { fill: none; }
8
- .fill-current { fill: currentColor; }
9
- .fill-black { fill: var(--color-black-50); }
10
- .fill-white { fill: var(--color-white-50); }
11
- .fill-blue-500 { fill: var(--color-vividblue-70); }
12
- .fill-red-500 { fill: var(--color-red-50); }
13
- .fill-green-500 { fill: var(--color-green-10); }
14
-
15
- /* Stroke */
16
- .stroke-none { stroke: none; }
17
- .stroke-current { stroke: currentColor; }
18
- .stroke-black { stroke: var(--color-black-50); }
19
- .stroke-white { stroke: var(--color-white-50); }
20
- .stroke-blue-500 { stroke: var(--color-vividblue-70); }
21
- .stroke-red-500 { stroke: var(--color-red-50); }
22
- .stroke-green-500 { stroke: var(--color-green-10); }
23
-
24
- /* Stroke width */
25
- .stroke-0 { stroke-width: 0; }
26
- .stroke-1 { stroke-width: 1; }
27
- .stroke-2 { stroke-width: 2; }
28
- .stroke-3 { stroke-width: 3; }
29
- .stroke-4 { stroke-width: 4; }
30
- .stroke-8 { stroke-width: 8; }
31
-
32
- /* Fill and stroke rules / opacity */
33
- .fill-rule-nonzero { fill-rule: nonzero; }
34
- .fill-rule-evenodd { fill-rule: evenodd; }
35
- .clip-rule-nonzero { clip-rule: nonzero; }
36
- .clip-rule-evenodd { clip-rule: evenodd; }
37
- .fill-opacity-0 { fill-opacity: 0; }
38
- .fill-opacity-50 { fill-opacity: 0.5; }
39
- .fill-opacity-100 { fill-opacity: 1; }
40
- .stroke-opacity-0 { stroke-opacity: 0; }
41
- .stroke-opacity-50 { stroke-opacity: 0.5; }
42
- .stroke-opacity-100 { stroke-opacity: 1; }
43
-
44
- /* Stroke dashes, caps and joins */
45
- .stroke-dash-none { stroke-dasharray: none; }
46
- .stroke-dash-2 { stroke-dasharray: 2 2; }
47
- .stroke-dash-4 { stroke-dasharray: 4 4; }
48
- .stroke-dash-8 { stroke-dasharray: 8 4; }
49
- .stroke-dash-dot { stroke-dasharray: 0 4; }
50
- .stroke-dashoffset-0 { stroke-dashoffset: 0; }
51
- .stroke-dashoffset-4 { stroke-dashoffset: 4; }
52
- .stroke-dashoffset-8 { stroke-dashoffset: 8; }
53
- .stroke-cap-butt { stroke-linecap: butt; }
54
- .stroke-cap-round { stroke-linecap: round; }
55
- .stroke-cap-square { stroke-linecap: square; }
56
- .stroke-join-miter { stroke-linejoin: miter; }
57
- .stroke-join-round { stroke-linejoin: round; }
58
- .stroke-join-bevel { stroke-linejoin: bevel; }
59
- .stroke-miterlimit-4 { stroke-miterlimit: 4; }
60
- .stroke-miterlimit-10 { stroke-miterlimit: 10; }
61
-
62
- /* Paint order, vector effect, rendering */
63
- .paint-order-normal { paint-order: normal; }
64
- .paint-order-stroke { paint-order: stroke fill markers; }
65
- .vector-effect-none { vector-effect: none; }
66
- .vector-effect-non-scaling { vector-effect: non-scaling-stroke; }
67
- .shape-rendering-auto { shape-rendering: auto; }
68
- .shape-rendering-crisp { shape-rendering: crispEdges; }
69
- .shape-rendering-geometric { shape-rendering: geometricPrecision; }
70
- .color-interpolation-srgb { color-interpolation: sRGB; }
71
- .color-interpolation-linear { color-interpolation: linearRGB; }
72
- .color-interpolation-filters-srgb { color-interpolation-filters: sRGB; }
73
- .color-interpolation-filters-linear { color-interpolation-filters: linearRGB; }
74
-
75
- /* SVG text alignment */
76
- .text-anchor-start { text-anchor: start; }
77
- .text-anchor-middle { text-anchor: middle; }
78
- .text-anchor-end { text-anchor: end; }
79
- .dominant-baseline-auto { dominant-baseline: auto; }
80
- .dominant-baseline-middle { dominant-baseline: middle; }
81
- .dominant-baseline-central { dominant-baseline: central; }
82
- .dominant-baseline-hanging { dominant-baseline: hanging; }
83
- .alignment-baseline-middle { alignment-baseline: middle; }
84
- .alignment-baseline-central { alignment-baseline: central; }
85
- .baseline-shift-sub { baseline-shift: sub; }
86
- .baseline-shift-super { baseline-shift: super; }
87
- .baseline-source-first { baseline-source: first; }
88
- .baseline-source-last { baseline-source: last; }
89
-
90
- /* Markers, gradient stops, filter lighting */
91
- .marker-none { marker: none; }
92
- .marker-start-none { marker-start: none; }
93
- .marker-mid-none { marker-mid: none; }
94
- .marker-end-none { marker-end: none; }
95
- .stop-color-current { stop-color: currentColor; }
96
- .stop-opacity-0 { stop-opacity: 0; }
97
- .stop-opacity-100 { stop-opacity: 1; }
98
- .flood-color-current { flood-color: currentColor; }
99
- .flood-opacity-50 { flood-opacity: 0.5; }
100
- .lighting-color-current { lighting-color: currentColor; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_svg.scss
3
+ // Map: fill -> stroke -> stroke-width -> rules/opacity -> dashes/caps/joins -> paint-order/vector-effect/rendering
4
+ // -> text-anchor/baselines -> markers/stops/flood/lighting
5
+
6
+ /* Fill */
7
+ .fill-none { fill: none; }
8
+ .fill-current { fill: currentColor; }
9
+ .fill-black { fill: var(--color-black-50); }
10
+ .fill-white { fill: var(--color-white-50); }
11
+ .fill-blue-500 { fill: var(--color-vividblue-70); }
12
+ .fill-red-500 { fill: var(--color-red-50); }
13
+ .fill-green-500 { fill: var(--color-green-10); }
14
+
15
+ /* Stroke */
16
+ .stroke-none { stroke: none; }
17
+ .stroke-current { stroke: currentColor; }
18
+ .stroke-black { stroke: var(--color-black-50); }
19
+ .stroke-white { stroke: var(--color-white-50); }
20
+ .stroke-blue-500 { stroke: var(--color-vividblue-70); }
21
+ .stroke-red-500 { stroke: var(--color-red-50); }
22
+ .stroke-green-500 { stroke: var(--color-green-10); }
23
+
24
+ /* Stroke width */
25
+ .stroke-0 { stroke-width: 0; }
26
+ .stroke-1 { stroke-width: 1; }
27
+ .stroke-2 { stroke-width: 2; }
28
+ .stroke-3 { stroke-width: 3; }
29
+ .stroke-4 { stroke-width: 4; }
30
+ .stroke-8 { stroke-width: 8; }
31
+
32
+ /* Fill and stroke rules / opacity */
33
+ .fill-rule-nonzero { fill-rule: nonzero; }
34
+ .fill-rule-evenodd { fill-rule: evenodd; }
35
+ .clip-rule-nonzero { clip-rule: nonzero; }
36
+ .clip-rule-evenodd { clip-rule: evenodd; }
37
+ .fill-opacity-0 { fill-opacity: 0; }
38
+ .fill-opacity-50 { fill-opacity: 0.5; }
39
+ .fill-opacity-100 { fill-opacity: 1; }
40
+ .stroke-opacity-0 { stroke-opacity: 0; }
41
+ .stroke-opacity-50 { stroke-opacity: 0.5; }
42
+ .stroke-opacity-100 { stroke-opacity: 1; }
43
+
44
+ /* Stroke dashes, caps and joins */
45
+ .stroke-dash-none { stroke-dasharray: none; }
46
+ .stroke-dash-2 { stroke-dasharray: 2 2; }
47
+ .stroke-dash-4 { stroke-dasharray: 4 4; }
48
+ .stroke-dash-8 { stroke-dasharray: 8 4; }
49
+ .stroke-dash-dot { stroke-dasharray: 0 4; }
50
+ .stroke-dashoffset-0 { stroke-dashoffset: 0; }
51
+ .stroke-dashoffset-4 { stroke-dashoffset: 4; }
52
+ .stroke-dashoffset-8 { stroke-dashoffset: 8; }
53
+ .stroke-cap-butt { stroke-linecap: butt; }
54
+ .stroke-cap-round { stroke-linecap: round; }
55
+ .stroke-cap-square { stroke-linecap: square; }
56
+ .stroke-join-miter { stroke-linejoin: miter; }
57
+ .stroke-join-round { stroke-linejoin: round; }
58
+ .stroke-join-bevel { stroke-linejoin: bevel; }
59
+ .stroke-miterlimit-4 { stroke-miterlimit: 4; }
60
+ .stroke-miterlimit-10 { stroke-miterlimit: 10; }
61
+
62
+ /* Paint order, vector effect, rendering */
63
+ .paint-order-normal { paint-order: normal; }
64
+ .paint-order-stroke { paint-order: stroke fill markers; }
65
+ .vector-effect-none { vector-effect: none; }
66
+ .vector-effect-non-scaling { vector-effect: non-scaling-stroke; }
67
+ .shape-rendering-auto { shape-rendering: auto; }
68
+ .shape-rendering-crisp { shape-rendering: crispEdges; }
69
+ .shape-rendering-geometric { shape-rendering: geometricPrecision; }
70
+ .color-interpolation-srgb { color-interpolation: sRGB; }
71
+ .color-interpolation-linear { color-interpolation: linearRGB; }
72
+ .color-interpolation-filters-srgb { color-interpolation-filters: sRGB; }
73
+ .color-interpolation-filters-linear { color-interpolation-filters: linearRGB; }
74
+
75
+ /* SVG text alignment */
76
+ .text-anchor-start { text-anchor: start; }
77
+ .text-anchor-middle { text-anchor: middle; }
78
+ .text-anchor-end { text-anchor: end; }
79
+ .dominant-baseline-auto { dominant-baseline: auto; }
80
+ .dominant-baseline-middle { dominant-baseline: middle; }
81
+ .dominant-baseline-central { dominant-baseline: central; }
82
+ .dominant-baseline-hanging { dominant-baseline: hanging; }
83
+ .alignment-baseline-middle { alignment-baseline: middle; }
84
+ .alignment-baseline-central { alignment-baseline: central; }
85
+ .baseline-shift-sub { baseline-shift: sub; }
86
+ .baseline-shift-super { baseline-shift: super; }
87
+ .baseline-source-first { baseline-source: first; }
88
+ .baseline-source-last { baseline-source: last; }
89
+
90
+ /* Markers, gradient stops, filter lighting */
91
+ .marker-none { marker: none; }
92
+ .marker-start-none { marker-start: none; }
93
+ .marker-mid-none { marker-mid: none; }
94
+ .marker-end-none { marker-end: none; }
95
+ .stop-color-current { stop-color: currentColor; }
96
+ .stop-opacity-0 { stop-opacity: 0; }
97
+ .stop-opacity-100 { stop-opacity: 1; }
98
+ .flood-color-current { flood-color: currentColor; }
99
+ .flood-opacity-50 { flood-opacity: 0.5; }
100
+ .lighting-color-current { lighting-color: currentColor; }
@@ -1,19 +1,19 @@
1
- // SCSS Document
2
- // File: src/scss/utilities/_table_advanced.scss
3
- // Map: border-collapse -> border-spacing -> table-layout -> caption-side
4
-
5
- /* Table behavior utilities */
6
- .border-collapse { border-collapse: collapse; }
7
- .border-separate { border-collapse: separate; }
8
-
9
- .border-spacing-0 { border-spacing: 0; }
10
- .border-spacing-1 { border-spacing: 0.25rem; }
11
- .border-spacing-2 { border-spacing: 0.5rem; }
12
- .border-spacing-4 { border-spacing: 1rem; }
13
- .border-spacing-8 { border-spacing: 2rem; }
14
-
15
- .table-auto { table-layout: auto; }
16
- .table-fixed { table-layout: fixed; }
17
-
18
- .caption-top { caption-side: top; }
19
- .caption-bottom { caption-side: bottom; }
1
+ // SCSS Document
2
+ // File: src/scss/utilities/_table_advanced.scss
3
+ // Map: border-collapse -> border-spacing -> table-layout -> caption-side
4
+
5
+ /* Table behavior utilities */
6
+ .border-collapse { border-collapse: collapse; }
7
+ .border-separate { border-collapse: separate; }
8
+
9
+ .border-spacing-0 { border-spacing: 0; }
10
+ .border-spacing-1 { border-spacing: 0.25rem; }
11
+ .border-spacing-2 { border-spacing: 0.5rem; }
12
+ .border-spacing-4 { border-spacing: 1rem; }
13
+ .border-spacing-8 { border-spacing: 2rem; }
14
+
15
+ .table-auto { table-layout: auto; }
16
+ .table-fixed { table-layout: fixed; }
17
+
18
+ .caption-top { caption-side: top; }
19
+ .caption-bottom { caption-side: bottom; }