zenkit-css 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +182 -0
  2. package/dist/zenkit.css +33721 -0
  3. package/dist/zenkit.css.map +1 -0
  4. package/dist/zenkit.min.css +1 -0
  5. package/dist/zenkit.min.css.map +1 -0
  6. package/package.json +41 -0
  7. package/scss/abstracts/_functions.scss +174 -0
  8. package/scss/abstracts/_mixins.scss +272 -0
  9. package/scss/abstracts/_variables.scss +216 -0
  10. package/scss/base/_reset.scss +130 -0
  11. package/scss/base/_root.scss +194 -0
  12. package/scss/base/_typography.scss +271 -0
  13. package/scss/components/_accordion.scss +200 -0
  14. package/scss/components/_affix.scss +278 -0
  15. package/scss/components/_alerts.scss +175 -0
  16. package/scss/components/_anchor.scss +438 -0
  17. package/scss/components/_autocomplete.scss +530 -0
  18. package/scss/components/_avatar.scss +256 -0
  19. package/scss/components/_backtop.scss +329 -0
  20. package/scss/components/_badges.scss +266 -0
  21. package/scss/components/_breadcrumb.scss +102 -0
  22. package/scss/components/_buttons.scss +340 -0
  23. package/scss/components/_calendar.scss +787 -0
  24. package/scss/components/_cards.scss +265 -0
  25. package/scss/components/_carousel.scss +306 -0
  26. package/scss/components/_cascader.scss +510 -0
  27. package/scss/components/_close-button.scss +106 -0
  28. package/scss/components/_colorpicker.scss +593 -0
  29. package/scss/components/_datepicker.scss +625 -0
  30. package/scss/components/_descriptions.scss +453 -0
  31. package/scss/components/_divider.scss +253 -0
  32. package/scss/components/_drawer.scss +485 -0
  33. package/scss/components/_dropdown.scss +323 -0
  34. package/scss/components/_empty.scss +321 -0
  35. package/scss/components/_floatbutton.scss +400 -0
  36. package/scss/components/_forms.scss +753 -0
  37. package/scss/components/_image.scss +497 -0
  38. package/scss/components/_inputnumber.scss +475 -0
  39. package/scss/components/_layout.scss +538 -0
  40. package/scss/components/_list-group.scss +227 -0
  41. package/scss/components/_list.scss +528 -0
  42. package/scss/components/_mentions.scss +479 -0
  43. package/scss/components/_menu.scss +510 -0
  44. package/scss/components/_message.scss +412 -0
  45. package/scss/components/_modal.scss +304 -0
  46. package/scss/components/_navbar.scss +329 -0
  47. package/scss/components/_notification.scss +499 -0
  48. package/scss/components/_offcanvas.scss +274 -0
  49. package/scss/components/_pagination.scss +176 -0
  50. package/scss/components/_placeholder.scss +237 -0
  51. package/scss/components/_popconfirm.scss +393 -0
  52. package/scss/components/_popover.scss +298 -0
  53. package/scss/components/_progress.scss +225 -0
  54. package/scss/components/_rating.scss +314 -0
  55. package/scss/components/_result.scss +383 -0
  56. package/scss/components/_segmented.scss +441 -0
  57. package/scss/components/_select.scss +412 -0
  58. package/scss/components/_spinners.scss +229 -0
  59. package/scss/components/_statistic.scss +336 -0
  60. package/scss/components/_steps.scss +343 -0
  61. package/scss/components/_tabs.scss +239 -0
  62. package/scss/components/_tag.scss +317 -0
  63. package/scss/components/_timeline.scss +341 -0
  64. package/scss/components/_timepicker.scss +468 -0
  65. package/scss/components/_toast.scss +279 -0
  66. package/scss/components/_tooltip.scss +305 -0
  67. package/scss/components/_tour.scss +488 -0
  68. package/scss/components/_transfer.scss +556 -0
  69. package/scss/components/_tree.scss +518 -0
  70. package/scss/components/_treeselect.scss +531 -0
  71. package/scss/components/_upload.scss +510 -0
  72. package/scss/components/_watermark.scss +314 -0
  73. package/scss/content/_figures.scss +38 -0
  74. package/scss/content/_images.scss +138 -0
  75. package/scss/content/_tables.scss +232 -0
  76. package/scss/layout/_container.scss +71 -0
  77. package/scss/layout/_grid.scss +258 -0
  78. package/scss/utilities/_animations.scss +494 -0
  79. package/scss/utilities/_borders.scss +246 -0
  80. package/scss/utilities/_colors.scss +194 -0
  81. package/scss/utilities/_display.scss +263 -0
  82. package/scss/utilities/_filters.scss +328 -0
  83. package/scss/utilities/_flex.scss +178 -0
  84. package/scss/utilities/_float.scss +70 -0
  85. package/scss/utilities/_grid-utils.scss +151 -0
  86. package/scss/utilities/_helpers.scss +479 -0
  87. package/scss/utilities/_interactions.scss +249 -0
  88. package/scss/utilities/_overflow.scss +204 -0
  89. package/scss/utilities/_position.scss +245 -0
  90. package/scss/utilities/_shadows.scss +67 -0
  91. package/scss/utilities/_sizing.scss +217 -0
  92. package/scss/utilities/_spacing.scss +207 -0
  93. package/scss/utilities/_text.scss +237 -0
  94. package/scss/utilities/_transforms.scss +368 -0
  95. package/scss/utilities/_visibility.scss +251 -0
  96. package/scss/zenkit.scss +121 -0
@@ -0,0 +1,246 @@
1
+ // ========================================
2
+ // ZenKit - Border Utilities
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Border Width
10
+ // ----------------------------------------
11
+ .border { border: $border-width solid var(--border); }
12
+ .border-0 { border-width: 0; }
13
+ .border-2 { border-width: 2px; }
14
+ .border-4 { border-width: 4px; }
15
+ .border-8 { border-width: 8px; }
16
+
17
+ .border-t { border-top: $border-width solid var(--border); }
18
+ .border-r { border-right: $border-width solid var(--border); }
19
+ .border-b { border-bottom: $border-width solid var(--border); }
20
+ .border-l { border-left: $border-width solid var(--border); }
21
+
22
+ .border-t-0 { border-top-width: 0; }
23
+ .border-r-0 { border-right-width: 0; }
24
+ .border-b-0 { border-bottom-width: 0; }
25
+ .border-l-0 { border-left-width: 0; }
26
+
27
+ .border-t-2 { border-top-width: 2px; }
28
+ .border-r-2 { border-right-width: 2px; }
29
+ .border-b-2 { border-bottom-width: 2px; }
30
+ .border-l-2 { border-left-width: 2px; }
31
+
32
+ .border-x {
33
+ border-left: $border-width solid var(--border);
34
+ border-right: $border-width solid var(--border);
35
+ }
36
+
37
+ .border-y {
38
+ border-top: $border-width solid var(--border);
39
+ border-bottom: $border-width solid var(--border);
40
+ }
41
+
42
+ // ----------------------------------------
43
+ // Border Color
44
+ // ----------------------------------------
45
+ .border-transparent { border-color: transparent; }
46
+ .border-current { border-color: currentColor; }
47
+ .border-inherit { border-color: inherit; }
48
+
49
+ .border-primary { border-color: var(--primary); }
50
+ .border-primary-200 { border-color: var(--primary-200); }
51
+ .border-primary-300 { border-color: var(--primary-300); }
52
+ .border-primary-500 { border-color: var(--primary-500); }
53
+ .border-primary-700 { border-color: var(--primary-700); }
54
+
55
+ .border-gray-100 { border-color: var(--gray-100); }
56
+ .border-gray-200 { border-color: var(--gray-200); }
57
+ .border-gray-300 { border-color: var(--gray-300); }
58
+ .border-gray-400 { border-color: var(--gray-400); }
59
+ .border-gray-500 { border-color: var(--gray-500); }
60
+ .border-gray-600 { border-color: var(--gray-600); }
61
+ .border-gray-700 { border-color: var(--gray-700); }
62
+ .border-gray-800 { border-color: var(--gray-800); }
63
+
64
+ .border-success { border-color: var(--success); }
65
+ .border-warning { border-color: var(--warning); }
66
+ .border-danger { border-color: var(--danger); }
67
+ .border-info { border-color: var(--info); }
68
+
69
+ .border-white { border-color: var(--white); }
70
+ .border-black { border-color: var(--black); }
71
+
72
+ // ----------------------------------------
73
+ // Border Style
74
+ // ----------------------------------------
75
+ .border-solid { border-style: solid; }
76
+ .border-dashed { border-style: dashed; }
77
+ .border-dotted { border-style: dotted; }
78
+ .border-double { border-style: double; }
79
+ .border-hidden { border-style: hidden; }
80
+ .border-none { border-style: none; }
81
+
82
+ // ----------------------------------------
83
+ // Border Radius
84
+ // ----------------------------------------
85
+ .rounded-none { border-radius: 0; }
86
+ .rounded-sm { border-radius: var(--radius-sm); }
87
+ .rounded { border-radius: var(--radius); }
88
+ .rounded-md { border-radius: var(--radius-md); }
89
+ .rounded-lg { border-radius: var(--radius-lg); }
90
+ .rounded-xl { border-radius: var(--radius-xl); }
91
+ .rounded-2xl { border-radius: var(--radius-2xl); }
92
+ .rounded-full { border-radius: var(--radius-full); }
93
+
94
+ // Top
95
+ .rounded-t-none { border-top-left-radius: 0; border-top-right-radius: 0; }
96
+ .rounded-t-sm { border-top-left-radius: var(--radius-sm); border-top-right-radius: var(--radius-sm); }
97
+ .rounded-t { border-top-left-radius: var(--radius); border-top-right-radius: var(--radius); }
98
+ .rounded-t-md { border-top-left-radius: var(--radius-md); border-top-right-radius: var(--radius-md); }
99
+ .rounded-t-lg { border-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg); }
100
+ .rounded-t-xl { border-top-left-radius: var(--radius-xl); border-top-right-radius: var(--radius-xl); }
101
+
102
+ // Bottom
103
+ .rounded-b-none { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
104
+ .rounded-b-sm { border-bottom-left-radius: var(--radius-sm); border-bottom-right-radius: var(--radius-sm); }
105
+ .rounded-b { border-bottom-left-radius: var(--radius); border-bottom-right-radius: var(--radius); }
106
+ .rounded-b-md { border-bottom-left-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }
107
+ .rounded-b-lg { border-bottom-left-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }
108
+ .rounded-b-xl { border-bottom-left-radius: var(--radius-xl); border-bottom-right-radius: var(--radius-xl); }
109
+
110
+ // Left
111
+ .rounded-l-none { border-top-left-radius: 0; border-bottom-left-radius: 0; }
112
+ .rounded-l-sm { border-top-left-radius: var(--radius-sm); border-bottom-left-radius: var(--radius-sm); }
113
+ .rounded-l { border-top-left-radius: var(--radius); border-bottom-left-radius: var(--radius); }
114
+ .rounded-l-md { border-top-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md); }
115
+ .rounded-l-lg { border-top-left-radius: var(--radius-lg); border-bottom-left-radius: var(--radius-lg); }
116
+
117
+ // Right
118
+ .rounded-r-none { border-top-right-radius: 0; border-bottom-right-radius: 0; }
119
+ .rounded-r-sm { border-top-right-radius: var(--radius-sm); border-bottom-right-radius: var(--radius-sm); }
120
+ .rounded-r { border-top-right-radius: var(--radius); border-bottom-right-radius: var(--radius); }
121
+ .rounded-r-md { border-top-right-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }
122
+ .rounded-r-lg { border-top-right-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }
123
+
124
+ // Individual corners
125
+ .rounded-tl-none { border-top-left-radius: 0; }
126
+ .rounded-tr-none { border-top-right-radius: 0; }
127
+ .rounded-bl-none { border-bottom-left-radius: 0; }
128
+ .rounded-br-none { border-bottom-right-radius: 0; }
129
+
130
+ .rounded-tl { border-top-left-radius: var(--radius); }
131
+ .rounded-tr { border-top-right-radius: var(--radius); }
132
+ .rounded-bl { border-bottom-left-radius: var(--radius); }
133
+ .rounded-br { border-bottom-right-radius: var(--radius); }
134
+
135
+ .rounded-tl-lg { border-top-left-radius: var(--radius-lg); }
136
+ .rounded-tr-lg { border-top-right-radius: var(--radius-lg); }
137
+ .rounded-bl-lg { border-bottom-left-radius: var(--radius-lg); }
138
+ .rounded-br-lg { border-bottom-right-radius: var(--radius-lg); }
139
+
140
+ // ----------------------------------------
141
+ // Divide
142
+ // ----------------------------------------
143
+ .divide-x > * + * {
144
+ border-left: $border-width solid var(--border);
145
+ }
146
+
147
+ .divide-y > * + * {
148
+ border-top: $border-width solid var(--border);
149
+ }
150
+
151
+ .divide-x-2 > * + * {
152
+ border-left-width: 2px;
153
+ }
154
+
155
+ .divide-y-2 > * + * {
156
+ border-top-width: 2px;
157
+ }
158
+
159
+ .divide-x-reverse > * + * {
160
+ border-right: $border-width solid var(--border);
161
+ border-left: 0;
162
+ }
163
+
164
+ .divide-y-reverse > * + * {
165
+ border-bottom: $border-width solid var(--border);
166
+ border-top: 0;
167
+ }
168
+
169
+ // Divide colors
170
+ .divide-primary > * + * { border-color: var(--primary); }
171
+ .divide-gray-200 > * + * { border-color: var(--gray-200); }
172
+ .divide-gray-300 > * + * { border-color: var(--gray-300); }
173
+
174
+ // ----------------------------------------
175
+ // Outline
176
+ // ----------------------------------------
177
+ .outline-none {
178
+ outline: 2px solid transparent;
179
+ outline-offset: 2px;
180
+ }
181
+
182
+ .outline {
183
+ outline-style: solid;
184
+ }
185
+
186
+ .outline-dashed {
187
+ outline-style: dashed;
188
+ }
189
+
190
+ .outline-dotted {
191
+ outline-style: dotted;
192
+ }
193
+
194
+ .outline-0 { outline-width: 0; }
195
+ .outline-1 { outline-width: 1px; }
196
+ .outline-2 { outline-width: 2px; }
197
+ .outline-4 { outline-width: 4px; }
198
+
199
+ .outline-offset-0 { outline-offset: 0; }
200
+ .outline-offset-1 { outline-offset: 1px; }
201
+ .outline-offset-2 { outline-offset: 2px; }
202
+ .outline-offset-4 { outline-offset: 4px; }
203
+
204
+ // ----------------------------------------
205
+ // Ring (Focus Ring)
206
+ // ----------------------------------------
207
+ .ring {
208
+ box-shadow: 0 0 0 3px rgba($primary, 0.3);
209
+ }
210
+
211
+ .ring-0 {
212
+ box-shadow: 0 0 0 0 transparent;
213
+ }
214
+
215
+ .ring-1 {
216
+ box-shadow: 0 0 0 1px var(--primary);
217
+ }
218
+
219
+ .ring-2 {
220
+ box-shadow: 0 0 0 2px var(--primary);
221
+ }
222
+
223
+ .ring-4 {
224
+ box-shadow: 0 0 0 4px var(--primary);
225
+ }
226
+
227
+ .ring-primary {
228
+ --ring-color: var(--primary);
229
+ }
230
+
231
+ .ring-gray-300 {
232
+ --ring-color: var(--gray-300);
233
+ }
234
+
235
+ .ring-offset-0 { --ring-offset: 0; }
236
+ .ring-offset-1 { --ring-offset: 1px; }
237
+ .ring-offset-2 { --ring-offset: 2px; }
238
+
239
+ // ----------------------------------------
240
+ // Border Opacity
241
+ // ----------------------------------------
242
+ .border-opacity-10 { --border-opacity: 0.1; }
243
+ .border-opacity-25 { --border-opacity: 0.25; }
244
+ .border-opacity-50 { --border-opacity: 0.5; }
245
+ .border-opacity-75 { --border-opacity: 0.75; }
246
+ .border-opacity-100 { --border-opacity: 1; }
@@ -0,0 +1,194 @@
1
+ // ========================================
2
+ // ZenKit - Color Utilities
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Text Colors
10
+ // ----------------------------------------
11
+ .text-primary { color: var(--primary); }
12
+ .text-primary-50 { color: var(--primary-50); }
13
+ .text-primary-100 { color: var(--primary-100); }
14
+ .text-primary-200 { color: var(--primary-200); }
15
+ .text-primary-300 { color: var(--primary-300); }
16
+ .text-primary-400 { color: var(--primary-400); }
17
+ .text-primary-500 { color: var(--primary-500); }
18
+ .text-primary-600 { color: var(--primary-600); }
19
+ .text-primary-700 { color: var(--primary-700); }
20
+ .text-primary-800 { color: var(--primary-800); }
21
+ .text-primary-900 { color: var(--primary-900); }
22
+
23
+ .text-gray-50 { color: var(--gray-50); }
24
+ .text-gray-100 { color: var(--gray-100); }
25
+ .text-gray-200 { color: var(--gray-200); }
26
+ .text-gray-300 { color: var(--gray-300); }
27
+ .text-gray-400 { color: var(--gray-400); }
28
+ .text-gray-500 { color: var(--gray-500); }
29
+ .text-gray-600 { color: var(--gray-600); }
30
+ .text-gray-700 { color: var(--gray-700); }
31
+ .text-gray-800 { color: var(--gray-800); }
32
+ .text-gray-900 { color: var(--gray-900); }
33
+
34
+ .text-success { color: var(--success); }
35
+ .text-warning { color: var(--warning); }
36
+ .text-danger { color: var(--danger); }
37
+ .text-info { color: var(--info); }
38
+
39
+ .text-white { color: var(--white); }
40
+ .text-black { color: var(--black); }
41
+
42
+ // Semantic text colors
43
+ .text-body { color: var(--text); }
44
+ .text-secondary { color: var(--text-secondary); }
45
+ .text-muted { color: var(--text-muted); }
46
+ .text-link { color: var(--link); }
47
+
48
+ .text-inherit { color: inherit; }
49
+ .text-current { color: currentColor; }
50
+ .text-transparent { color: transparent; }
51
+
52
+ // ----------------------------------------
53
+ // Background Colors
54
+ // ----------------------------------------
55
+ .bg-primary { background-color: var(--primary); }
56
+ .bg-primary-50 { background-color: var(--primary-50); }
57
+ .bg-primary-100 { background-color: var(--primary-100); }
58
+ .bg-primary-200 { background-color: var(--primary-200); }
59
+ .bg-primary-300 { background-color: var(--primary-300); }
60
+ .bg-primary-400 { background-color: var(--primary-400); }
61
+ .bg-primary-500 { background-color: var(--primary-500); }
62
+ .bg-primary-600 { background-color: var(--primary-600); }
63
+ .bg-primary-700 { background-color: var(--primary-700); }
64
+ .bg-primary-800 { background-color: var(--primary-800); }
65
+ .bg-primary-900 { background-color: var(--primary-900); }
66
+
67
+ .bg-gray-50 { background-color: var(--gray-50); }
68
+ .bg-gray-100 { background-color: var(--gray-100); }
69
+ .bg-gray-200 { background-color: var(--gray-200); }
70
+ .bg-gray-300 { background-color: var(--gray-300); }
71
+ .bg-gray-400 { background-color: var(--gray-400); }
72
+ .bg-gray-500 { background-color: var(--gray-500); }
73
+ .bg-gray-600 { background-color: var(--gray-600); }
74
+ .bg-gray-700 { background-color: var(--gray-700); }
75
+ .bg-gray-800 { background-color: var(--gray-800); }
76
+ .bg-gray-900 { background-color: var(--gray-900); }
77
+
78
+ .bg-success { background-color: var(--success); }
79
+ .bg-success-light { background-color: var(--success-light); }
80
+ .bg-warning { background-color: var(--warning); }
81
+ .bg-warning-light { background-color: var(--warning-light); }
82
+ .bg-danger { background-color: var(--danger); }
83
+ .bg-danger-light { background-color: var(--danger-light); }
84
+ .bg-info { background-color: var(--info); }
85
+ .bg-info-light { background-color: var(--info-light); }
86
+
87
+ .bg-white { background-color: var(--white); }
88
+ .bg-black { background-color: var(--black); }
89
+
90
+ // Semantic background colors
91
+ .bg-body { background-color: var(--bg); }
92
+ .bg-secondary { background-color: var(--bg-secondary); }
93
+ .bg-card { background-color: var(--bg-card); }
94
+ .bg-muted { background-color: var(--bg-muted); }
95
+
96
+ .bg-transparent { background-color: transparent; }
97
+ .bg-inherit { background-color: inherit; }
98
+
99
+ // ----------------------------------------
100
+ // Background Opacity
101
+ // ----------------------------------------
102
+ .bg-opacity-10 { --bg-opacity: 0.1; }
103
+ .bg-opacity-25 { --bg-opacity: 0.25; }
104
+ .bg-opacity-50 { --bg-opacity: 0.5; }
105
+ .bg-opacity-75 { --bg-opacity: 0.75; }
106
+ .bg-opacity-100 { --bg-opacity: 1; }
107
+
108
+ // ----------------------------------------
109
+ // Text Opacity
110
+ // ----------------------------------------
111
+ .text-opacity-25 { opacity: 0.25; }
112
+ .text-opacity-50 { opacity: 0.5; }
113
+ .text-opacity-75 { opacity: 0.75; }
114
+ .text-opacity-100 { opacity: 1; }
115
+
116
+ // ----------------------------------------
117
+ // Gradient Backgrounds
118
+ // ----------------------------------------
119
+ .bg-gradient-primary {
120
+ background: linear-gradient(135deg, var(--primary-500), var(--primary-700));
121
+ }
122
+
123
+ .bg-gradient-dark {
124
+ background: linear-gradient(135deg, var(--gray-700), var(--gray-900));
125
+ }
126
+
127
+ .bg-gradient-light {
128
+ background: linear-gradient(135deg, var(--gray-50), var(--gray-200));
129
+ }
130
+
131
+ .bg-gradient-success {
132
+ background: linear-gradient(135deg, $success, darken($success, 15%));
133
+ }
134
+
135
+ .bg-gradient-danger {
136
+ background: linear-gradient(135deg, $danger, darken($danger, 15%));
137
+ }
138
+
139
+ .bg-gradient-warning {
140
+ background: linear-gradient(135deg, $warning, darken($warning, 15%));
141
+ }
142
+
143
+ .bg-gradient-info {
144
+ background: linear-gradient(135deg, $info, darken($info, 15%));
145
+ }
146
+
147
+ // Gradient directions
148
+ .bg-gradient-to-t { background-image: linear-gradient(to top, var(--gradient-stops)); }
149
+ .bg-gradient-to-tr { background-image: linear-gradient(to top right, var(--gradient-stops)); }
150
+ .bg-gradient-to-r { background-image: linear-gradient(to right, var(--gradient-stops)); }
151
+ .bg-gradient-to-br { background-image: linear-gradient(to bottom right, var(--gradient-stops)); }
152
+ .bg-gradient-to-b { background-image: linear-gradient(to bottom, var(--gradient-stops)); }
153
+ .bg-gradient-to-bl { background-image: linear-gradient(to bottom left, var(--gradient-stops)); }
154
+ .bg-gradient-to-l { background-image: linear-gradient(to left, var(--gradient-stops)); }
155
+ .bg-gradient-to-tl { background-image: linear-gradient(to top left, var(--gradient-stops)); }
156
+
157
+ // Gradient color stops
158
+ .from-primary { --gradient-from: var(--primary); --gradient-stops: var(--gradient-from), var(--gradient-to, transparent); }
159
+ .from-gray-900 { --gradient-from: var(--gray-900); --gradient-stops: var(--gradient-from), var(--gradient-to, transparent); }
160
+ .from-transparent { --gradient-from: transparent; --gradient-stops: var(--gradient-from), var(--gradient-to, transparent); }
161
+
162
+ .to-primary { --gradient-to: var(--primary); }
163
+ .to-gray-900 { --gradient-to: var(--gray-900); }
164
+ .to-transparent { --gradient-to: transparent; }
165
+
166
+ // ----------------------------------------
167
+ // Hover Colors
168
+ // ----------------------------------------
169
+ .hover\:text-primary:hover { color: var(--primary); }
170
+ .hover\:text-white:hover { color: var(--white); }
171
+ .hover\:text-gray-900:hover { color: var(--gray-900); }
172
+
173
+ .hover\:bg-primary:hover { background-color: var(--primary); }
174
+ .hover\:bg-primary-700:hover { background-color: var(--primary-700); }
175
+ .hover\:bg-gray-100:hover { background-color: var(--gray-100); }
176
+ .hover\:bg-gray-200:hover { background-color: var(--gray-200); }
177
+
178
+ // ----------------------------------------
179
+ // Focus Colors
180
+ // ----------------------------------------
181
+ .focus\:text-primary:focus { color: var(--primary); }
182
+ .focus\:bg-primary:focus { background-color: var(--primary); }
183
+
184
+ // ----------------------------------------
185
+ // Dark Mode Specific
186
+ // ----------------------------------------
187
+ [data-theme="dark"] {
188
+ .dark\:text-white { color: var(--white); }
189
+ .dark\:text-gray-100 { color: var(--gray-100); }
190
+ .dark\:text-gray-400 { color: var(--gray-400); }
191
+
192
+ .dark\:bg-gray-800 { background-color: var(--gray-800); }
193
+ .dark\:bg-gray-900 { background-color: var(--gray-900); }
194
+ }
@@ -0,0 +1,263 @@
1
+ // ========================================
2
+ // ZenKit - Display Utilities
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Display
10
+ // ----------------------------------------
11
+ .d-none { display: none; }
12
+ .d-inline { display: inline; }
13
+ .d-inline-block { display: inline-block; }
14
+ .d-block { display: block; }
15
+ .d-flex { display: flex; }
16
+ .d-inline-flex { display: inline-flex; }
17
+ .d-grid { display: grid; }
18
+ .d-inline-grid { display: inline-grid; }
19
+ .d-table { display: table; }
20
+ .d-table-row { display: table-row; }
21
+ .d-table-cell { display: table-cell; }
22
+ .d-contents { display: contents; }
23
+
24
+ // ----------------------------------------
25
+ // Visibility
26
+ // ----------------------------------------
27
+ .visible { visibility: visible; }
28
+ .invisible { visibility: hidden; }
29
+
30
+ // ----------------------------------------
31
+ // Opacity
32
+ // ----------------------------------------
33
+ .opacity-0 { opacity: 0; }
34
+ .opacity-25 { opacity: 0.25; }
35
+ .opacity-50 { opacity: 0.5; }
36
+ .opacity-75 { opacity: 0.75; }
37
+ .opacity-100 { opacity: 1; }
38
+
39
+ // ----------------------------------------
40
+ // Overflow
41
+ // ----------------------------------------
42
+ .overflow-auto { overflow: auto; }
43
+ .overflow-hidden { overflow: hidden; }
44
+ .overflow-visible { overflow: visible; }
45
+ .overflow-scroll { overflow: scroll; }
46
+ .overflow-x-auto { overflow-x: auto; }
47
+ .overflow-x-hidden { overflow-x: hidden; }
48
+ .overflow-y-auto { overflow-y: auto; }
49
+ .overflow-y-hidden { overflow-y: hidden; }
50
+
51
+ // ----------------------------------------
52
+ // Position
53
+ // ----------------------------------------
54
+ .position-static { position: static; }
55
+ .position-relative { position: relative; }
56
+ .position-absolute { position: absolute; }
57
+ .position-fixed { position: fixed; }
58
+ .position-sticky { position: sticky; }
59
+
60
+ // Shorthand
61
+ .static { position: static; }
62
+ .relative { position: relative; }
63
+ .absolute { position: absolute; }
64
+ .fixed { position: fixed; }
65
+ .sticky { position: sticky; }
66
+
67
+ // ----------------------------------------
68
+ // Position Helpers
69
+ // ----------------------------------------
70
+ .inset-0 { inset: 0; }
71
+ .inset-auto { inset: auto; }
72
+ .top-0 { top: 0; }
73
+ .right-0 { right: 0; }
74
+ .bottom-0 { bottom: 0; }
75
+ .left-0 { left: 0; }
76
+ .top-50 { top: 50%; }
77
+ .left-50 { left: 50%; }
78
+ .top-100 { top: 100%; }
79
+ .left-100 { left: 100%; }
80
+ .right-50 { right: 50%; }
81
+ .right-100 { right: 100%; }
82
+ .bottom-50 { bottom: 50%; }
83
+ .bottom-100 { bottom: 100%; }
84
+
85
+ // Logical positions (RTL-friendly)
86
+ .start-0 { inset-inline-start: 0; }
87
+ .start-50 { inset-inline-start: 50%; }
88
+ .start-100 { inset-inline-start: 100%; }
89
+ .end-0 { inset-inline-end: 0; }
90
+ .end-50 { inset-inline-end: 50%; }
91
+ .end-100 { inset-inline-end: 100%; }
92
+
93
+ // ----------------------------------------
94
+ // Translate / Transform
95
+ // ----------------------------------------
96
+ .translate-middle {
97
+ transform: translate(-50%, -50%);
98
+ }
99
+
100
+ .translate-middle-x {
101
+ transform: translateX(-50%);
102
+ }
103
+
104
+ .translate-middle-y {
105
+ transform: translateY(-50%);
106
+ }
107
+
108
+ // ----------------------------------------
109
+ // Float
110
+ // ----------------------------------------
111
+ .float-left { float: left; }
112
+ .float-right { float: right; }
113
+ .float-none { float: none; }
114
+ .clearfix {
115
+ &::after {
116
+ display: block;
117
+ clear: both;
118
+ content: "";
119
+ }
120
+ }
121
+
122
+ // ----------------------------------------
123
+ // Z-Index
124
+ // ----------------------------------------
125
+ .z-0 { z-index: 0; }
126
+ .z-10 { z-index: 10; }
127
+ .z-20 { z-index: 20; }
128
+ .z-30 { z-index: 30; }
129
+ .z-40 { z-index: 40; }
130
+ .z-50 { z-index: 50; }
131
+ .z-auto { z-index: auto; }
132
+ .z-dropdown { z-index: var(--z-dropdown); }
133
+ .z-sticky { z-index: var(--z-sticky); }
134
+ .z-fixed { z-index: var(--z-fixed); }
135
+ .z-modal { z-index: var(--z-modal); }
136
+
137
+ // ----------------------------------------
138
+ // Responsive Display
139
+ // ----------------------------------------
140
+ @include sm {
141
+ .sm\:d-none { display: none; }
142
+ .sm\:d-inline { display: inline; }
143
+ .sm\:d-inline-block { display: inline-block; }
144
+ .sm\:d-block { display: block; }
145
+ .sm\:d-flex { display: flex; }
146
+ .sm\:d-inline-flex { display: inline-flex; }
147
+ .sm\:d-grid { display: grid; }
148
+ }
149
+
150
+ @include md {
151
+ .md\:d-none { display: none; }
152
+ .md\:d-inline { display: inline; }
153
+ .md\:d-inline-block { display: inline-block; }
154
+ .md\:d-block { display: block; }
155
+ .md\:d-flex { display: flex; }
156
+ .md\:d-inline-flex { display: inline-flex; }
157
+ .md\:d-grid { display: grid; }
158
+ }
159
+
160
+ @include lg {
161
+ .lg\:d-none { display: none; }
162
+ .lg\:d-inline { display: inline; }
163
+ .lg\:d-inline-block { display: inline-block; }
164
+ .lg\:d-block { display: block; }
165
+ .lg\:d-flex { display: flex; }
166
+ .lg\:d-inline-flex { display: inline-flex; }
167
+ .lg\:d-grid { display: grid; }
168
+ }
169
+
170
+ @include xl {
171
+ .xl\:d-none { display: none; }
172
+ .xl\:d-inline { display: inline; }
173
+ .xl\:d-inline-block { display: inline-block; }
174
+ .xl\:d-block { display: block; }
175
+ .xl\:d-flex { display: flex; }
176
+ .xl\:d-inline-flex { display: inline-flex; }
177
+ .xl\:d-grid { display: grid; }
178
+ }
179
+
180
+ // ----------------------------------------
181
+ // Print Utilities
182
+ // ----------------------------------------
183
+ @media print {
184
+ .d-print-none { display: none !important; }
185
+ .d-print-block { display: block !important; }
186
+ .d-print-inline { display: inline !important; }
187
+ .d-print-inline-block { display: inline-block !important; }
188
+ }
189
+
190
+ // ----------------------------------------
191
+ // Screen Reader Only
192
+ // ----------------------------------------
193
+ .sr-only {
194
+ position: absolute;
195
+ width: 1px;
196
+ height: 1px;
197
+ padding: 0;
198
+ margin: -1px;
199
+ overflow: hidden;
200
+ clip: rect(0, 0, 0, 0);
201
+ white-space: nowrap;
202
+ border: 0;
203
+ }
204
+
205
+ .sr-only-focusable {
206
+ &:active,
207
+ &:focus {
208
+ position: static;
209
+ width: auto;
210
+ height: auto;
211
+ overflow: visible;
212
+ clip: auto;
213
+ white-space: normal;
214
+ }
215
+ }
216
+
217
+ // ----------------------------------------
218
+ // RTL Support
219
+ // ----------------------------------------
220
+ .rtl { direction: rtl; }
221
+ .ltr { direction: ltr; }
222
+
223
+ // RTL-aware float
224
+ [dir="rtl"] {
225
+ .float-start { float: right; }
226
+ .float-end { float: left; }
227
+ }
228
+
229
+ [dir="ltr"],
230
+ :root:not([dir="rtl"]) {
231
+ .float-start { float: left; }
232
+ .float-end { float: right; }
233
+ }
234
+
235
+ // ----------------------------------------
236
+ // Prefers Color Scheme Detection
237
+ // ----------------------------------------
238
+ @media (prefers-color-scheme: dark) {
239
+ .dark\:d-none { display: none; }
240
+ .dark\:d-block { display: block; }
241
+ .dark\:d-flex { display: flex; }
242
+ }
243
+
244
+ @media (prefers-color-scheme: light) {
245
+ .light\:d-none { display: none; }
246
+ .light\:d-block { display: block; }
247
+ .light\:d-flex { display: flex; }
248
+ }
249
+
250
+ // ----------------------------------------
251
+ // Prefers Contrast
252
+ // ----------------------------------------
253
+ @media (prefers-contrast: more) {
254
+ .contrast\:border-2 { border-width: 2px !important; }
255
+ .contrast\:font-bold { font-weight: 700 !important; }
256
+ }
257
+
258
+ // ----------------------------------------
259
+ // Forced Colors Mode (High Contrast)
260
+ // ----------------------------------------
261
+ @media (forced-colors: active) {
262
+ .forced-colors\:visible { visibility: visible !important; }
263
+ }