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,475 @@
1
+ // ========================================
2
+ // ZenKit - InputNumber Component
3
+ // Number input with +/- controls
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // InputNumber Wrapper
10
+ // ----------------------------------------
11
+ .input-number {
12
+ position: relative;
13
+ display: inline-flex;
14
+ width: 100%;
15
+ }
16
+
17
+ // ----------------------------------------
18
+ // InputNumber Field
19
+ // ----------------------------------------
20
+ .input-number-input {
21
+ width: 100%;
22
+ padding: 0.5rem 0.75rem;
23
+ padding-right: 2.5rem;
24
+ font-size: 1rem;
25
+ font-weight: 400;
26
+ line-height: 1.5;
27
+ color: var(--text-primary);
28
+ background-color: var(--bg-primary);
29
+ border: 1px solid var(--border-color);
30
+ border-radius: $border-radius;
31
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
32
+
33
+ // Hide native spin buttons
34
+ -moz-appearance: textfield;
35
+
36
+ &::-webkit-outer-spin-button,
37
+ &::-webkit-inner-spin-button {
38
+ -webkit-appearance: none;
39
+ margin: 0;
40
+ }
41
+
42
+ &:hover {
43
+ border-color: var(--primary);
44
+ }
45
+
46
+ &:focus {
47
+ border-color: var(--primary);
48
+ outline: 0;
49
+ box-shadow: 0 0 0 0.2rem rgba(var(--primary-rgb), 0.25);
50
+ }
51
+
52
+ &:disabled,
53
+ &.is-disabled {
54
+ background-color: var(--bg-secondary);
55
+ cursor: not-allowed;
56
+ opacity: 0.65;
57
+ }
58
+
59
+ &:read-only {
60
+ background-color: var(--bg-secondary);
61
+ }
62
+ }
63
+
64
+ // ----------------------------------------
65
+ // InputNumber Controls (Stacked - Default)
66
+ // ----------------------------------------
67
+ .input-number-controls {
68
+ position: absolute;
69
+ top: 1px;
70
+ right: 1px;
71
+ bottom: 1px;
72
+ display: flex;
73
+ flex-direction: column;
74
+ width: 1.75rem;
75
+ border-left: 1px solid var(--border-color);
76
+ border-radius: 0 $border-radius $border-radius 0;
77
+ overflow: hidden;
78
+ }
79
+
80
+ .input-number-btn {
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ flex: 1;
85
+ padding: 0;
86
+ color: var(--text-muted);
87
+ background-color: var(--bg-secondary);
88
+ border: none;
89
+ cursor: pointer;
90
+ transition: color 0.15s ease, background-color 0.15s ease;
91
+
92
+ &:hover {
93
+ color: var(--primary);
94
+ background-color: var(--bg-tertiary);
95
+ }
96
+
97
+ &:active {
98
+ background-color: var(--bg-tertiary);
99
+ }
100
+
101
+ &:disabled {
102
+ color: var(--text-muted);
103
+ cursor: not-allowed;
104
+ opacity: 0.5;
105
+ }
106
+ }
107
+
108
+ .input-number-btn-up {
109
+ border-bottom: 1px solid var(--border-color);
110
+ }
111
+
112
+ .input-number-btn-down {
113
+ // No additional styles needed
114
+ }
115
+
116
+ // ----------------------------------------
117
+ // InputNumber Controls (Side by Side)
118
+ // ----------------------------------------
119
+ .input-number-controls-horizontal {
120
+ position: static;
121
+ flex-direction: row;
122
+ width: auto;
123
+ border: none;
124
+ border-radius: 0;
125
+
126
+ .input-number-btn {
127
+ width: 2rem;
128
+ border-radius: 0;
129
+ }
130
+
131
+ .input-number-btn-down {
132
+ order: -1;
133
+ border-right: 1px solid var(--border-color);
134
+ border-radius: $border-radius 0 0 $border-radius;
135
+ }
136
+
137
+ .input-number-btn-up {
138
+ border-bottom: none;
139
+ border-left: 1px solid var(--border-color);
140
+ border-radius: 0 $border-radius $border-radius 0;
141
+ }
142
+ }
143
+
144
+ .input-number-horizontal {
145
+ .input-number-input {
146
+ padding-right: 0.75rem;
147
+ border-radius: 0;
148
+ text-align: center;
149
+ }
150
+ }
151
+
152
+ // ----------------------------------------
153
+ // InputNumber Controls (Outside)
154
+ // ----------------------------------------
155
+ .input-number-outside {
156
+ gap: 0.5rem;
157
+
158
+ .input-number-input {
159
+ padding-right: 0.75rem;
160
+ text-align: center;
161
+ border-radius: $border-radius;
162
+ }
163
+
164
+ .input-number-controls {
165
+ position: static;
166
+ flex-direction: row;
167
+ width: auto;
168
+ border: none;
169
+ gap: 0.5rem;
170
+ }
171
+
172
+ .input-number-btn {
173
+ width: 2.25rem;
174
+ height: 2.25rem;
175
+ border: 1px solid var(--border-color);
176
+ border-radius: $border-radius;
177
+ background-color: var(--bg-primary);
178
+
179
+ &:hover {
180
+ border-color: var(--primary);
181
+ }
182
+ }
183
+
184
+ .input-number-btn-up,
185
+ .input-number-btn-down {
186
+ border-bottom: 1px solid var(--border-color);
187
+ }
188
+ }
189
+
190
+ // ----------------------------------------
191
+ // InputNumber Sizes
192
+ // ----------------------------------------
193
+ .input-number-sm {
194
+ .input-number-input {
195
+ padding: 0.25rem 0.5rem;
196
+ padding-right: 2rem;
197
+ font-size: 0.875rem;
198
+ }
199
+
200
+ .input-number-controls {
201
+ width: 1.5rem;
202
+ }
203
+
204
+ &.input-number-horizontal .input-number-btn,
205
+ &.input-number-outside .input-number-btn {
206
+ width: 1.75rem;
207
+ height: 1.875rem;
208
+ }
209
+ }
210
+
211
+ .input-number-lg {
212
+ .input-number-input {
213
+ padding: 0.75rem 1rem;
214
+ padding-right: 3rem;
215
+ font-size: 1.125rem;
216
+ }
217
+
218
+ .input-number-controls {
219
+ width: 2.25rem;
220
+ }
221
+
222
+ &.input-number-horizontal .input-number-btn,
223
+ &.input-number-outside .input-number-btn {
224
+ width: 2.75rem;
225
+ height: 3rem;
226
+ }
227
+ }
228
+
229
+ // ----------------------------------------
230
+ // InputNumber States
231
+ // ----------------------------------------
232
+ .input-number-error {
233
+ .input-number-input {
234
+ border-color: var(--danger);
235
+
236
+ &:focus {
237
+ box-shadow: 0 0 0 0.2rem rgba(var(--danger-rgb), 0.25);
238
+ }
239
+ }
240
+ }
241
+
242
+ .input-number-warning {
243
+ .input-number-input {
244
+ border-color: var(--warning);
245
+
246
+ &:focus {
247
+ box-shadow: 0 0 0 0.2rem rgba(var(--warning-rgb), 0.25);
248
+ }
249
+ }
250
+ }
251
+
252
+ .input-number-success {
253
+ .input-number-input {
254
+ border-color: var(--success);
255
+
256
+ &:focus {
257
+ box-shadow: 0 0 0 0.2rem rgba(var(--success-rgb), 0.25);
258
+ }
259
+ }
260
+ }
261
+
262
+ // ----------------------------------------
263
+ // InputNumber Variants
264
+ // ----------------------------------------
265
+ // Borderless
266
+ .input-number-borderless {
267
+ .input-number-input {
268
+ border-color: transparent;
269
+ background-color: transparent;
270
+
271
+ &:hover,
272
+ &:focus {
273
+ border-color: transparent;
274
+ background-color: var(--bg-secondary);
275
+ box-shadow: none;
276
+ }
277
+ }
278
+
279
+ .input-number-controls {
280
+ border-left-color: transparent;
281
+ }
282
+
283
+ .input-number-btn {
284
+ background-color: transparent;
285
+ }
286
+ }
287
+
288
+ // Filled
289
+ .input-number-filled {
290
+ .input-number-input {
291
+ border-color: transparent;
292
+ background-color: var(--bg-secondary);
293
+
294
+ &:hover {
295
+ background-color: var(--bg-tertiary);
296
+ }
297
+
298
+ &:focus {
299
+ border-color: var(--primary);
300
+ background-color: var(--bg-primary);
301
+ }
302
+ }
303
+
304
+ .input-number-controls {
305
+ border-left-color: var(--border-color);
306
+ }
307
+ }
308
+
309
+ // ----------------------------------------
310
+ // InputNumber with Prefix/Suffix
311
+ // ----------------------------------------
312
+ .input-number-affix-wrapper {
313
+ display: flex;
314
+ align-items: center;
315
+ width: 100%;
316
+ background-color: var(--bg-primary);
317
+ border: 1px solid var(--border-color);
318
+ border-radius: $border-radius;
319
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
320
+
321
+ &:hover {
322
+ border-color: var(--primary);
323
+ }
324
+
325
+ &:focus-within {
326
+ border-color: var(--primary);
327
+ box-shadow: 0 0 0 0.2rem rgba(var(--primary-rgb), 0.25);
328
+ }
329
+
330
+ .input-number-input {
331
+ border: none;
332
+ background: transparent;
333
+ box-shadow: none;
334
+
335
+ &:focus {
336
+ box-shadow: none;
337
+ }
338
+ }
339
+
340
+ .input-number {
341
+ flex: 1;
342
+ }
343
+ }
344
+
345
+ .input-number-prefix,
346
+ .input-number-suffix {
347
+ display: flex;
348
+ align-items: center;
349
+ padding: 0 0.5rem;
350
+ color: var(--text-muted);
351
+ }
352
+
353
+ // ----------------------------------------
354
+ // InputNumber with Addon
355
+ // ----------------------------------------
356
+ .input-number-group {
357
+ display: flex;
358
+ width: 100%;
359
+ }
360
+
361
+ .input-number-addon {
362
+ display: flex;
363
+ align-items: center;
364
+ padding: 0.5rem 0.75rem;
365
+ font-size: 1rem;
366
+ color: var(--text-primary);
367
+ background-color: var(--bg-secondary);
368
+ border: 1px solid var(--border-color);
369
+ white-space: nowrap;
370
+ }
371
+
372
+ .input-number-addon-before {
373
+ border-right: none;
374
+ border-radius: $border-radius 0 0 $border-radius;
375
+ }
376
+
377
+ .input-number-addon-after {
378
+ border-left: none;
379
+ border-radius: 0 $border-radius $border-radius 0;
380
+ }
381
+
382
+ .input-number-group .input-number-input {
383
+ border-radius: 0;
384
+ }
385
+
386
+ .input-number-group .input-number:first-child .input-number-input {
387
+ border-radius: $border-radius 0 0 $border-radius;
388
+ }
389
+
390
+ .input-number-group .input-number:last-child .input-number-input {
391
+ border-radius: 0 $border-radius $border-radius 0;
392
+ }
393
+
394
+ // ----------------------------------------
395
+ // InputNumber Keyboard Control Indicator
396
+ // ----------------------------------------
397
+ .input-number-keyboard {
398
+ position: relative;
399
+
400
+ &::after {
401
+ content: '↑↓';
402
+ position: absolute;
403
+ top: 50%;
404
+ right: 0.5rem;
405
+ transform: translateY(-50%);
406
+ font-size: 0.625rem;
407
+ color: var(--text-muted);
408
+ opacity: 0;
409
+ transition: opacity 0.15s ease;
410
+ }
411
+
412
+ &:focus-within::after {
413
+ opacity: 1;
414
+ }
415
+
416
+ .input-number-input {
417
+ padding-right: 2rem;
418
+ }
419
+ }
420
+
421
+ // ----------------------------------------
422
+ // InputNumber Formatter Display
423
+ // ----------------------------------------
424
+ .input-number-formatted {
425
+ position: relative;
426
+
427
+ .input-number-display {
428
+ position: absolute;
429
+ top: 50%;
430
+ left: 0.75rem;
431
+ transform: translateY(-50%);
432
+ font-size: 1rem;
433
+ color: var(--text-primary);
434
+ pointer-events: none;
435
+ }
436
+
437
+ .input-number-input {
438
+ color: transparent;
439
+
440
+ &:focus {
441
+ color: var(--text-primary);
442
+ }
443
+
444
+ &:focus + .input-number-display {
445
+ display: none;
446
+ }
447
+ }
448
+ }
449
+
450
+ // ----------------------------------------
451
+ // InputNumber Read Only Display
452
+ // ----------------------------------------
453
+ .input-number-readonly-display {
454
+ display: flex;
455
+ align-items: center;
456
+ justify-content: center;
457
+ min-width: 3rem;
458
+ padding: 0.5rem 0.75rem;
459
+ font-size: 1rem;
460
+ font-weight: 500;
461
+ color: var(--text-primary);
462
+ }
463
+
464
+ // ----------------------------------------
465
+ // InputNumber Stepper Buttons Hidden
466
+ // ----------------------------------------
467
+ .input-number-no-controls {
468
+ .input-number-input {
469
+ padding-right: 0.75rem;
470
+ }
471
+
472
+ .input-number-controls {
473
+ display: none;
474
+ }
475
+ }