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,400 @@
1
+ // ========================================
2
+ // ZenKit - FloatButton Component
3
+ // Floating action button (FAB)
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // FloatButton Container / Group
10
+ // ----------------------------------------
11
+ .float-button-group {
12
+ position: fixed;
13
+ z-index: $z-fixed;
14
+ display: flex;
15
+ flex-direction: column-reverse;
16
+ align-items: center;
17
+ gap: 1rem;
18
+ }
19
+
20
+ // Group positions
21
+ .float-button-group-right {
22
+ right: 24px;
23
+ bottom: 48px;
24
+ }
25
+
26
+ .float-button-group-left {
27
+ left: 24px;
28
+ bottom: 48px;
29
+ }
30
+
31
+ .float-button-group-right-top {
32
+ right: 24px;
33
+ top: 48px;
34
+ flex-direction: column;
35
+ }
36
+
37
+ .float-button-group-left-top {
38
+ left: 24px;
39
+ top: 48px;
40
+ flex-direction: column;
41
+ }
42
+
43
+ // ----------------------------------------
44
+ // FloatButton Base
45
+ // ----------------------------------------
46
+ .float-button {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ width: 40px;
51
+ height: 40px;
52
+ padding: 0;
53
+ color: var(--text-muted);
54
+ background-color: var(--bg-primary);
55
+ border: none;
56
+ border-radius: 50%;
57
+ box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08),
58
+ 0 3px 6px -4px rgba(0, 0, 0, 0.12),
59
+ 0 9px 28px 8px rgba(0, 0, 0, 0.05);
60
+ cursor: pointer;
61
+ transition: all 0.3s ease;
62
+
63
+ &:hover {
64
+ color: var(--primary);
65
+ transform: scale(1.05);
66
+ box-shadow: 0 8px 20px 0 rgba(0, 0, 0, 0.12),
67
+ 0 4px 8px -4px rgba(0, 0, 0, 0.15),
68
+ 0 12px 32px 8px rgba(0, 0, 0, 0.08);
69
+ }
70
+
71
+ &:active {
72
+ transform: scale(0.98);
73
+ }
74
+ }
75
+
76
+ // Standalone float button
77
+ .float-button-single {
78
+ position: fixed;
79
+ z-index: $z-fixed;
80
+ }
81
+
82
+ .float-button-single-right {
83
+ right: 24px;
84
+ bottom: 48px;
85
+ }
86
+
87
+ .float-button-single-left {
88
+ left: 24px;
89
+ bottom: 48px;
90
+ }
91
+
92
+ // ----------------------------------------
93
+ // FloatButton Icon
94
+ // ----------------------------------------
95
+ .float-button-icon {
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ font-size: 1rem;
100
+ }
101
+
102
+ // ----------------------------------------
103
+ // FloatButton Variants
104
+ // ----------------------------------------
105
+ // Primary
106
+ .float-button-primary {
107
+ color: #fff;
108
+ background-color: var(--primary);
109
+
110
+ &:hover {
111
+ color: #fff;
112
+ background-color: var(--primary-dark);
113
+ }
114
+ }
115
+
116
+ // Default (with border)
117
+ .float-button-default {
118
+ border: 1px solid var(--border-color);
119
+
120
+ &:hover {
121
+ border-color: var(--primary);
122
+ }
123
+ }
124
+
125
+ // Circle (emphasized)
126
+ .float-button-circle {
127
+ width: 56px;
128
+ height: 56px;
129
+
130
+ .float-button-icon {
131
+ font-size: 1.5rem;
132
+ }
133
+ }
134
+
135
+ // Square
136
+ .float-button-square {
137
+ border-radius: $border-radius;
138
+ }
139
+
140
+ // ----------------------------------------
141
+ // FloatButton Sizes
142
+ // ----------------------------------------
143
+ .float-button-sm {
144
+ width: 32px;
145
+ height: 32px;
146
+
147
+ .float-button-icon {
148
+ font-size: 0.875rem;
149
+ }
150
+ }
151
+
152
+ .float-button-lg {
153
+ width: 56px;
154
+ height: 56px;
155
+
156
+ .float-button-icon {
157
+ font-size: 1.5rem;
158
+ }
159
+ }
160
+
161
+ // ----------------------------------------
162
+ // FloatButton with Text
163
+ // ----------------------------------------
164
+ .float-button-with-text {
165
+ width: auto;
166
+ min-width: 40px;
167
+ height: auto;
168
+ min-height: 40px;
169
+ padding: 0.75rem 1rem;
170
+ border-radius: 20px;
171
+ gap: 0.5rem;
172
+ }
173
+
174
+ .float-button-text {
175
+ font-size: 0.875rem;
176
+ font-weight: 500;
177
+ white-space: nowrap;
178
+ }
179
+
180
+ // ----------------------------------------
181
+ // FloatButton Description
182
+ // ----------------------------------------
183
+ .float-button-with-description {
184
+ width: auto;
185
+ min-width: 56px;
186
+ height: auto;
187
+ padding: 0.75rem 1rem;
188
+ flex-direction: column;
189
+ gap: 0.25rem;
190
+ border-radius: $border-radius-lg;
191
+ }
192
+
193
+ .float-button-description {
194
+ font-size: 0.75rem;
195
+ color: var(--text-muted);
196
+ }
197
+
198
+ // ----------------------------------------
199
+ // FloatButton Badge
200
+ // ----------------------------------------
201
+ .float-button-badge {
202
+ position: relative;
203
+ }
204
+
205
+ .float-button-badge-dot {
206
+ position: absolute;
207
+ top: 2px;
208
+ right: 2px;
209
+ width: 8px;
210
+ height: 8px;
211
+ background-color: var(--danger);
212
+ border: 2px solid var(--bg-primary);
213
+ border-radius: 50%;
214
+ }
215
+
216
+ .float-button-badge-count {
217
+ position: absolute;
218
+ top: -4px;
219
+ right: -4px;
220
+ min-width: 18px;
221
+ height: 18px;
222
+ padding: 0 5px;
223
+ font-size: 0.625rem;
224
+ font-weight: 600;
225
+ color: #fff;
226
+ background-color: var(--danger);
227
+ border: 2px solid var(--bg-primary);
228
+ border-radius: 9px;
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ }
233
+
234
+ // ----------------------------------------
235
+ // FloatButton Trigger (Expandable)
236
+ // ----------------------------------------
237
+ .float-button-trigger {
238
+ position: relative;
239
+ }
240
+
241
+ .float-button-trigger-icon {
242
+ transition: transform 0.3s ease;
243
+
244
+ .float-button-group.is-open & {
245
+ transform: rotate(45deg);
246
+ }
247
+ }
248
+
249
+ // ----------------------------------------
250
+ // FloatButton Menu
251
+ // ----------------------------------------
252
+ .float-button-menu {
253
+ display: flex;
254
+ flex-direction: column-reverse;
255
+ gap: 0.75rem;
256
+ opacity: 0;
257
+ visibility: hidden;
258
+ transform: scale(0.5);
259
+ transform-origin: bottom center;
260
+ transition: all 0.3s ease;
261
+
262
+ .float-button-group.is-open & {
263
+ opacity: 1;
264
+ visibility: visible;
265
+ transform: scale(1);
266
+ }
267
+ }
268
+
269
+ .float-button-menu-item {
270
+ position: relative;
271
+ transform: translateY(10px);
272
+ opacity: 0;
273
+ transition: all 0.2s ease;
274
+
275
+ .float-button-group.is-open & {
276
+ transform: translateY(0);
277
+ opacity: 1;
278
+ }
279
+
280
+ // Staggered animation
281
+ @for $i from 1 through 5 {
282
+ &:nth-child(#{$i}) {
283
+ transition-delay: #{$i * 0.05}s;
284
+ }
285
+ }
286
+ }
287
+
288
+ // ----------------------------------------
289
+ // FloatButton Tooltip
290
+ // ----------------------------------------
291
+ .float-button-tooltip {
292
+ position: relative;
293
+
294
+ &::before {
295
+ content: attr(data-tooltip);
296
+ position: absolute;
297
+ right: calc(100% + 8px);
298
+ top: 50%;
299
+ transform: translateY(-50%);
300
+ padding: 0.375rem 0.75rem;
301
+ font-size: 0.75rem;
302
+ color: #fff;
303
+ background-color: rgba(0, 0, 0, 0.75);
304
+ border-radius: $border-radius-sm;
305
+ white-space: nowrap;
306
+ opacity: 0;
307
+ visibility: hidden;
308
+ transition: opacity 0.15s ease, visibility 0.15s ease;
309
+ pointer-events: none;
310
+ }
311
+
312
+ &:hover::before {
313
+ opacity: 1;
314
+ visibility: visible;
315
+ }
316
+ }
317
+
318
+ .float-button-group-left .float-button-tooltip::before {
319
+ right: auto;
320
+ left: calc(100% + 8px);
321
+ }
322
+
323
+ // ----------------------------------------
324
+ // FloatButton Dark Theme
325
+ // ----------------------------------------
326
+ .float-button-dark {
327
+ color: rgba(255, 255, 255, 0.85);
328
+ background-color: #1f1f1f;
329
+
330
+ &:hover {
331
+ color: #fff;
332
+ background-color: #333;
333
+ }
334
+ }
335
+
336
+ // ----------------------------------------
337
+ // FloatButton Loading
338
+ // ----------------------------------------
339
+ .float-button-loading {
340
+ pointer-events: none;
341
+
342
+ .float-button-icon {
343
+ animation: spin 1s linear infinite;
344
+ }
345
+ }
346
+
347
+ @keyframes spin {
348
+ to { transform: rotate(360deg); }
349
+ }
350
+
351
+ // ----------------------------------------
352
+ // FloatButton Shape Variants
353
+ // ----------------------------------------
354
+ .float-button-group-horizontal {
355
+ flex-direction: row;
356
+ gap: 0.75rem;
357
+
358
+ .float-button-menu {
359
+ flex-direction: row;
360
+ transform-origin: right center;
361
+ }
362
+ }
363
+
364
+ // ----------------------------------------
365
+ // FloatButton Responsive
366
+ // ----------------------------------------
367
+ @media (max-width: 575.98px) {
368
+ .float-button-group-right,
369
+ .float-button-single-right {
370
+ right: 16px;
371
+ bottom: 32px;
372
+ }
373
+
374
+ .float-button-group-left,
375
+ .float-button-single-left {
376
+ left: 16px;
377
+ bottom: 32px;
378
+ }
379
+
380
+ .float-button-hide-mobile {
381
+ display: none;
382
+ }
383
+ }
384
+
385
+ // ----------------------------------------
386
+ // FloatButton in Container
387
+ // ----------------------------------------
388
+ .float-button-container {
389
+ position: absolute;
390
+ }
391
+
392
+ // ----------------------------------------
393
+ // FloatButton Divider
394
+ // ----------------------------------------
395
+ .float-button-divider {
396
+ width: 24px;
397
+ height: 1px;
398
+ background-color: var(--border-color);
399
+ margin: 0.25rem 0;
400
+ }