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,278 @@
1
+ // ========================================
2
+ // ZenKit - Affix Component
3
+ // Sticky wrapper / Fixed position helper
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Affix Container
10
+ // ----------------------------------------
11
+ .affix {
12
+ // Default state - flows normally
13
+ }
14
+
15
+ // ----------------------------------------
16
+ // Affix Fixed State
17
+ // ----------------------------------------
18
+ .affix-fixed {
19
+ position: fixed;
20
+ z-index: $z-sticky;
21
+ }
22
+
23
+ // Fixed positions
24
+ .affix-fixed-top {
25
+ top: 0;
26
+ }
27
+
28
+ .affix-fixed-bottom {
29
+ bottom: 0;
30
+ }
31
+
32
+ // ----------------------------------------
33
+ // Affix with Offset
34
+ // ----------------------------------------
35
+ // These are typically set dynamically via JS, but providing CSS utility classes
36
+
37
+ .affix-offset-8 {
38
+ &.affix-fixed-top { top: 8px; }
39
+ &.affix-fixed-bottom { bottom: 8px; }
40
+ }
41
+
42
+ .affix-offset-16 {
43
+ &.affix-fixed-top { top: 16px; }
44
+ &.affix-fixed-bottom { bottom: 16px; }
45
+ }
46
+
47
+ .affix-offset-24 {
48
+ &.affix-fixed-top { top: 24px; }
49
+ &.affix-fixed-bottom { bottom: 24px; }
50
+ }
51
+
52
+ .affix-offset-32 {
53
+ &.affix-fixed-top { top: 32px; }
54
+ &.affix-fixed-bottom { bottom: 32px; }
55
+ }
56
+
57
+ .affix-offset-48 {
58
+ &.affix-fixed-top { top: 48px; }
59
+ &.affix-fixed-bottom { bottom: 48px; }
60
+ }
61
+
62
+ .affix-offset-64 {
63
+ &.affix-fixed-top { top: 64px; }
64
+ &.affix-fixed-bottom { bottom: 64px; }
65
+ }
66
+
67
+ // ----------------------------------------
68
+ // Affix Placeholder
69
+ // ----------------------------------------
70
+ // Used to prevent layout shift when element becomes fixed
71
+ .affix-placeholder {
72
+ // Height is set dynamically via JS
73
+ }
74
+
75
+ // ----------------------------------------
76
+ // Affix Transitions
77
+ // ----------------------------------------
78
+ .affix-animated {
79
+ transition: top 0.2s ease, bottom 0.2s ease;
80
+ }
81
+
82
+ // ----------------------------------------
83
+ // Affix Shadow (visual feedback)
84
+ // ----------------------------------------
85
+ .affix-shadow {
86
+ &.affix-fixed {
87
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
88
+ }
89
+ }
90
+
91
+ .affix-shadow-bottom {
92
+ &.affix-fixed {
93
+ box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15);
94
+ }
95
+ }
96
+
97
+ // ----------------------------------------
98
+ // Affix Full Width
99
+ // ----------------------------------------
100
+ .affix-full-width {
101
+ &.affix-fixed {
102
+ left: 0;
103
+ right: 0;
104
+ }
105
+ }
106
+
107
+ // ----------------------------------------
108
+ // Affix Container Bound
109
+ // ----------------------------------------
110
+ // When affix is bound to a specific container
111
+ .affix-container {
112
+ position: relative;
113
+ }
114
+
115
+ .affix-absolute {
116
+ position: absolute;
117
+ }
118
+
119
+ .affix-absolute-top {
120
+ top: 0;
121
+ }
122
+
123
+ .affix-absolute-bottom {
124
+ bottom: 0;
125
+ }
126
+
127
+ // ----------------------------------------
128
+ // Affix Background
129
+ // ----------------------------------------
130
+ .affix-bg {
131
+ &.affix-fixed {
132
+ background-color: var(--bg-primary);
133
+ }
134
+ }
135
+
136
+ .affix-bg-blur {
137
+ &.affix-fixed {
138
+ background-color: rgba(var(--bg-primary-rgb, 255, 255, 255), 0.8);
139
+ backdrop-filter: blur(8px);
140
+ }
141
+ }
142
+
143
+ // ----------------------------------------
144
+ // Affix Border
145
+ // ----------------------------------------
146
+ .affix-border-bottom {
147
+ &.affix-fixed {
148
+ border-bottom: 1px solid var(--border-color);
149
+ }
150
+ }
151
+
152
+ .affix-border-top {
153
+ &.affix-fixed {
154
+ border-top: 1px solid var(--border-color);
155
+ }
156
+ }
157
+
158
+ // ----------------------------------------
159
+ // Affix Padding
160
+ // ----------------------------------------
161
+ .affix-padding {
162
+ &.affix-fixed {
163
+ padding: 0.75rem 1rem;
164
+ }
165
+ }
166
+
167
+ // ----------------------------------------
168
+ // Affix Common Use Cases
169
+ // ----------------------------------------
170
+ // Sticky header
171
+ .affix-header {
172
+ &.affix-fixed {
173
+ top: 0;
174
+ left: 0;
175
+ right: 0;
176
+ background-color: var(--bg-primary);
177
+ border-bottom: 1px solid var(--border-color);
178
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
179
+ }
180
+ }
181
+
182
+ // Sticky sidebar
183
+ .affix-sidebar {
184
+ &.affix-fixed {
185
+ width: inherit;
186
+ max-width: inherit;
187
+ }
188
+ }
189
+
190
+ // Sticky footer / action bar
191
+ .affix-action-bar {
192
+ &.affix-fixed {
193
+ bottom: 0;
194
+ left: 0;
195
+ right: 0;
196
+ background-color: var(--bg-primary);
197
+ border-top: 1px solid var(--border-color);
198
+ box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
199
+ padding: 0.75rem 1rem;
200
+ }
201
+ }
202
+
203
+ // ----------------------------------------
204
+ // Affix Z-Index Variants
205
+ // ----------------------------------------
206
+ .affix-z-dropdown {
207
+ &.affix-fixed {
208
+ z-index: $z-dropdown;
209
+ }
210
+ }
211
+
212
+ .affix-z-fixed {
213
+ &.affix-fixed {
214
+ z-index: $z-fixed;
215
+ }
216
+ }
217
+
218
+ .affix-z-modal {
219
+ &.affix-fixed {
220
+ z-index: $z-modal;
221
+ }
222
+ }
223
+
224
+ // ----------------------------------------
225
+ // Affix Responsive
226
+ // ----------------------------------------
227
+ @media (max-width: 767.98px) {
228
+ .affix-mobile-disabled {
229
+ &.affix-fixed {
230
+ position: static;
231
+ }
232
+ }
233
+ }
234
+
235
+ @media (min-width: 768px) {
236
+ .affix-desktop-only {
237
+ &.affix-fixed {
238
+ position: fixed;
239
+ }
240
+ }
241
+ }
242
+
243
+ // ----------------------------------------
244
+ // Affix Hide on Scroll
245
+ // ----------------------------------------
246
+ .affix-hide-on-scroll-down {
247
+ &.affix-fixed {
248
+ transition: transform 0.3s ease;
249
+ }
250
+
251
+ &.is-hidden {
252
+ transform: translateY(-100%);
253
+ }
254
+ }
255
+
256
+ .affix-hide-on-scroll-up {
257
+ &.affix-fixed {
258
+ transition: transform 0.3s ease;
259
+ }
260
+
261
+ &.is-hidden {
262
+ transform: translateY(100%);
263
+ }
264
+ }
265
+
266
+ // ----------------------------------------
267
+ // Affix Shrink on Scroll
268
+ // ----------------------------------------
269
+ .affix-shrink {
270
+ &.affix-fixed {
271
+ transition: padding 0.3s ease;
272
+ }
273
+
274
+ &.is-shrunk {
275
+ padding-top: 0.5rem;
276
+ padding-bottom: 0.5rem;
277
+ }
278
+ }
@@ -0,0 +1,175 @@
1
+ // ========================================
2
+ // ZenKit - Alerts
3
+ // ========================================
4
+
5
+ @use '../abstracts/variables' as *;
6
+ @use '../abstracts/mixins' as *;
7
+
8
+ // ----------------------------------------
9
+ // Base Alert
10
+ // ----------------------------------------
11
+ .alert {
12
+ position: relative;
13
+ display: flex;
14
+ align-items: flex-start;
15
+ gap: 0.75rem;
16
+ padding: 1rem 1.25rem;
17
+ margin-bottom: 1rem;
18
+ border: $border-width solid transparent;
19
+ border-radius: var(--radius);
20
+
21
+ p:last-child {
22
+ margin-bottom: 0;
23
+ }
24
+ }
25
+
26
+ // ----------------------------------------
27
+ // Alert Variants
28
+ // ----------------------------------------
29
+ .alert-primary {
30
+ color: var(--primary-900);
31
+ background-color: var(--primary-50);
32
+ border-color: var(--primary-200);
33
+ }
34
+
35
+ .alert-secondary {
36
+ color: var(--gray-800);
37
+ background-color: var(--gray-100);
38
+ border-color: var(--gray-200);
39
+ }
40
+
41
+ .alert-success {
42
+ color: $success-dark;
43
+ background-color: var(--success-light);
44
+ border-color: $success;
45
+ }
46
+
47
+ .alert-danger {
48
+ color: $danger-dark;
49
+ background-color: var(--danger-light);
50
+ border-color: $danger;
51
+ }
52
+
53
+ .alert-warning {
54
+ color: $warning-dark;
55
+ background-color: var(--warning-light);
56
+ border-color: $warning;
57
+ }
58
+
59
+ .alert-info {
60
+ color: $info-dark;
61
+ background-color: var(--info-light);
62
+ border-color: $info;
63
+ }
64
+
65
+ // ----------------------------------------
66
+ // Alert Title
67
+ // ----------------------------------------
68
+ .alert-title {
69
+ margin-bottom: 0.25rem;
70
+ font-weight: $font-weight-semibold;
71
+ }
72
+
73
+ // ----------------------------------------
74
+ // Alert Icon
75
+ // ----------------------------------------
76
+ .alert-icon {
77
+ flex-shrink: 0;
78
+ width: 1.25rem;
79
+ height: 1.25rem;
80
+ margin-top: 0.125rem;
81
+ }
82
+
83
+ // ----------------------------------------
84
+ // Alert Dismiss Button
85
+ // ----------------------------------------
86
+ .alert-dismiss {
87
+ position: absolute;
88
+ top: 0.75rem;
89
+ right: 0.75rem;
90
+ display: flex;
91
+ align-items: center;
92
+ justify-content: center;
93
+ width: 1.5rem;
94
+ height: 1.5rem;
95
+ padding: 0;
96
+ background: transparent;
97
+ border: none;
98
+ border-radius: var(--radius-sm);
99
+ color: currentColor;
100
+ opacity: 0.5;
101
+ cursor: pointer;
102
+ transition: opacity var(--transition-fast) ease-in-out;
103
+
104
+ &:hover {
105
+ opacity: 1;
106
+ }
107
+
108
+ svg {
109
+ width: 1rem;
110
+ height: 1rem;
111
+ }
112
+ }
113
+
114
+ .alert-dismissible {
115
+ padding-right: 3rem;
116
+ }
117
+
118
+ // ----------------------------------------
119
+ // Alert with Border Left
120
+ // ----------------------------------------
121
+ .alert-border-left {
122
+ border-left-width: 4px;
123
+ border-radius: 0 var(--radius) var(--radius) 0;
124
+ }
125
+
126
+ // ----------------------------------------
127
+ // Alert Solid Variants
128
+ // ----------------------------------------
129
+ .alert-solid-primary {
130
+ color: var(--white);
131
+ background-color: var(--primary);
132
+ border-color: var(--primary);
133
+ }
134
+
135
+ .alert-solid-success {
136
+ color: var(--white);
137
+ background-color: var(--success);
138
+ border-color: var(--success);
139
+ }
140
+
141
+ .alert-solid-danger {
142
+ color: var(--white);
143
+ background-color: var(--danger);
144
+ border-color: var(--danger);
145
+ }
146
+
147
+ .alert-solid-warning {
148
+ color: var(--gray-900);
149
+ background-color: var(--warning);
150
+ border-color: var(--warning);
151
+ }
152
+
153
+ .alert-solid-info {
154
+ color: var(--white);
155
+ background-color: var(--info);
156
+ border-color: var(--info);
157
+ }
158
+
159
+ // ----------------------------------------
160
+ // Alert Link
161
+ // ----------------------------------------
162
+ .alert-link {
163
+ font-weight: $font-weight-semibold;
164
+ text-decoration: underline;
165
+
166
+ &:hover {
167
+ text-decoration: none;
168
+ }
169
+ }
170
+
171
+ .alert-primary .alert-link { color: var(--primary-800); }
172
+ .alert-success .alert-link { color: $success-dark; }
173
+ .alert-danger .alert-link { color: $danger-dark; }
174
+ .alert-warning .alert-link { color: $warning-dark; }
175
+ .alert-info .alert-link { color: $info-dark; }