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,438 @@
1
+ // ========================================
2
+ // ZenKit - Anchor Component
3
+ // Table of contents / Anchor navigation
4
+ // ========================================
5
+
6
+ @use '../abstracts/variables' as *;
7
+
8
+ // ----------------------------------------
9
+ // Anchor Container
10
+ // ----------------------------------------
11
+ .anchor {
12
+ position: relative;
13
+ padding-left: 2px;
14
+ }
15
+
16
+ // ----------------------------------------
17
+ // Anchor Ink (Active Indicator Line)
18
+ // ----------------------------------------
19
+ .anchor-ink {
20
+ position: absolute;
21
+ top: 0;
22
+ left: 0;
23
+ height: 100%;
24
+ width: 2px;
25
+ background-color: var(--border-color);
26
+ }
27
+
28
+ .anchor-ink-ball {
29
+ position: absolute;
30
+ left: 50%;
31
+ width: 8px;
32
+ height: 8px;
33
+ background-color: var(--bg-primary);
34
+ border: 2px solid var(--primary);
35
+ border-radius: 50%;
36
+ transform: translateX(-50%);
37
+ transition: top 0.2s ease;
38
+ }
39
+
40
+ // Alternative: Line indicator
41
+ .anchor-ink-line {
42
+ position: absolute;
43
+ left: 0;
44
+ width: 2px;
45
+ height: 20px;
46
+ background-color: var(--primary);
47
+ transition: top 0.2s ease;
48
+ }
49
+
50
+ // ----------------------------------------
51
+ // Anchor Links Container
52
+ // ----------------------------------------
53
+ .anchor-links {
54
+ padding-left: 1rem;
55
+ margin: 0;
56
+ list-style: none;
57
+ }
58
+
59
+ // ----------------------------------------
60
+ // Anchor Link
61
+ // ----------------------------------------
62
+ .anchor-link {
63
+ margin-bottom: 0.25rem;
64
+ }
65
+
66
+ .anchor-link-title {
67
+ display: block;
68
+ padding: 0.375rem 0;
69
+ font-size: 0.875rem;
70
+ color: var(--text-primary);
71
+ text-decoration: none;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ transition: color 0.15s ease;
76
+
77
+ &:hover {
78
+ color: var(--primary);
79
+ }
80
+
81
+ .anchor-link.is-active > & {
82
+ color: var(--primary);
83
+ font-weight: 500;
84
+ }
85
+ }
86
+
87
+ // ----------------------------------------
88
+ // Anchor Nested Links
89
+ // ----------------------------------------
90
+ .anchor-link .anchor-links {
91
+ padding-left: 1rem;
92
+ margin-top: 0.25rem;
93
+ }
94
+
95
+ .anchor-link .anchor-link .anchor-link-title {
96
+ font-size: 0.8125rem;
97
+ }
98
+
99
+ .anchor-link .anchor-link .anchor-link .anchor-link-title {
100
+ font-size: 0.75rem;
101
+ }
102
+
103
+ // ----------------------------------------
104
+ // Anchor Horizontal
105
+ // ----------------------------------------
106
+ .anchor-horizontal {
107
+ display: flex;
108
+ align-items: center;
109
+ padding-left: 0;
110
+ padding-bottom: 2px;
111
+ border-bottom: 2px solid var(--border-color);
112
+
113
+ .anchor-ink {
114
+ top: auto;
115
+ bottom: 0;
116
+ left: 0;
117
+ width: 100%;
118
+ height: 2px;
119
+ }
120
+
121
+ .anchor-ink-line {
122
+ top: auto;
123
+ bottom: 0;
124
+ width: 40px;
125
+ height: 2px;
126
+ transition: left 0.2s ease;
127
+ }
128
+
129
+ .anchor-links {
130
+ display: flex;
131
+ padding-left: 0;
132
+ gap: 1.5rem;
133
+ }
134
+
135
+ .anchor-link {
136
+ margin-bottom: 0;
137
+ }
138
+
139
+ .anchor-link-title {
140
+ padding: 0.5rem 0;
141
+ }
142
+
143
+ .anchor-link .anchor-links {
144
+ display: none;
145
+ }
146
+ }
147
+
148
+ // ----------------------------------------
149
+ // Anchor Fixed
150
+ // ----------------------------------------
151
+ .anchor-fixed {
152
+ position: fixed;
153
+ z-index: $z-sticky;
154
+ }
155
+
156
+ .anchor-fixed-top {
157
+ top: 1rem;
158
+ }
159
+
160
+ .anchor-fixed-right {
161
+ right: 1rem;
162
+ }
163
+
164
+ // ----------------------------------------
165
+ // Anchor Affix Wrapper
166
+ // ----------------------------------------
167
+ .anchor-wrapper {
168
+ position: relative;
169
+ }
170
+
171
+ .anchor-wrapper-affix {
172
+ position: fixed;
173
+ z-index: $z-sticky;
174
+ }
175
+
176
+ // ----------------------------------------
177
+ // Anchor Sizes
178
+ // ----------------------------------------
179
+ .anchor-sm {
180
+ .anchor-link-title {
181
+ padding: 0.25rem 0;
182
+ font-size: 0.75rem;
183
+ }
184
+
185
+ .anchor-link .anchor-link .anchor-link-title {
186
+ font-size: 0.6875rem;
187
+ }
188
+
189
+ .anchor-links {
190
+ padding-left: 0.75rem;
191
+ }
192
+ }
193
+
194
+ .anchor-lg {
195
+ .anchor-link-title {
196
+ padding: 0.5rem 0;
197
+ font-size: 1rem;
198
+ }
199
+
200
+ .anchor-link .anchor-link .anchor-link-title {
201
+ font-size: 0.875rem;
202
+ }
203
+
204
+ .anchor-links {
205
+ padding-left: 1.25rem;
206
+ }
207
+ }
208
+
209
+ // ----------------------------------------
210
+ // Anchor Without Ink
211
+ // ----------------------------------------
212
+ .anchor-no-ink {
213
+ padding-left: 0;
214
+
215
+ .anchor-ink {
216
+ display: none;
217
+ }
218
+
219
+ .anchor-links {
220
+ padding-left: 0;
221
+ }
222
+
223
+ .anchor-link .anchor-links {
224
+ padding-left: 1rem;
225
+ }
226
+ }
227
+
228
+ // ----------------------------------------
229
+ // Anchor Bordered
230
+ // ----------------------------------------
231
+ .anchor-bordered {
232
+ padding: 1rem;
233
+ background-color: var(--bg-secondary);
234
+ border: 1px solid var(--border-color);
235
+ border-radius: $border-radius;
236
+
237
+ .anchor-ink {
238
+ left: 1rem;
239
+ }
240
+
241
+ .anchor-links {
242
+ padding-left: 1.5rem;
243
+ }
244
+ }
245
+
246
+ // ----------------------------------------
247
+ // Anchor Card Style
248
+ // ----------------------------------------
249
+ .anchor-card {
250
+ padding: 1rem;
251
+ background-color: var(--bg-primary);
252
+ border: 1px solid var(--border-color);
253
+ border-radius: $border-radius;
254
+ box-shadow: $shadow-sm;
255
+ }
256
+
257
+ .anchor-card-title {
258
+ margin-bottom: 0.75rem;
259
+ padding-bottom: 0.75rem;
260
+ font-size: 0.875rem;
261
+ font-weight: 600;
262
+ color: var(--text-primary);
263
+ border-bottom: 1px solid var(--border-color);
264
+ }
265
+
266
+ // ----------------------------------------
267
+ // Anchor Replace URL
268
+ // ----------------------------------------
269
+ // This is handled by JS, no specific CSS needed
270
+
271
+ // ----------------------------------------
272
+ // Anchor Target Offset
273
+ // ----------------------------------------
274
+ // Applied via JS scroll offset calculation
275
+
276
+ // ----------------------------------------
277
+ // Anchor Click Highlight
278
+ // ----------------------------------------
279
+ .anchor-highlight-target {
280
+ animation: anchor-highlight 2s ease-out;
281
+ }
282
+
283
+ @keyframes anchor-highlight {
284
+ 0% {
285
+ background-color: rgba(var(--primary-rgb), 0.3);
286
+ }
287
+ 100% {
288
+ background-color: transparent;
289
+ }
290
+ }
291
+
292
+ // ----------------------------------------
293
+ // Anchor Direction (RTL Support)
294
+ // ----------------------------------------
295
+ .anchor-rtl {
296
+ padding-left: 0;
297
+ padding-right: 2px;
298
+
299
+ .anchor-ink {
300
+ left: auto;
301
+ right: 0;
302
+ }
303
+
304
+ .anchor-links {
305
+ padding-left: 0;
306
+ padding-right: 1rem;
307
+ }
308
+
309
+ .anchor-link .anchor-links {
310
+ padding-left: 0;
311
+ padding-right: 1rem;
312
+ }
313
+ }
314
+
315
+ // ----------------------------------------
316
+ // Anchor Indicators Variants
317
+ // ----------------------------------------
318
+ // Dot indicator
319
+ .anchor-dot {
320
+ .anchor-ink-ball {
321
+ width: 6px;
322
+ height: 6px;
323
+ background-color: var(--primary);
324
+ border: none;
325
+ }
326
+ }
327
+
328
+ // Square indicator
329
+ .anchor-square {
330
+ .anchor-ink-ball {
331
+ width: 6px;
332
+ height: 6px;
333
+ background-color: var(--primary);
334
+ border: none;
335
+ border-radius: 0;
336
+ }
337
+ }
338
+
339
+ // ----------------------------------------
340
+ // Anchor Sticky Behavior
341
+ // ----------------------------------------
342
+ .anchor-sticky {
343
+ position: sticky;
344
+ top: 1rem;
345
+ max-height: calc(100vh - 2rem);
346
+ overflow-y: auto;
347
+ }
348
+
349
+ // ----------------------------------------
350
+ // Anchor Scrollspy Styles
351
+ // ----------------------------------------
352
+ // These classes are toggled by JS based on scroll position
353
+
354
+ .anchor-link[data-depth="1"] .anchor-link-title {
355
+ font-weight: 500;
356
+ }
357
+
358
+ .anchor-link[data-depth="2"] .anchor-link-title {
359
+ padding-left: 0.5rem;
360
+ }
361
+
362
+ .anchor-link[data-depth="3"] .anchor-link-title {
363
+ padding-left: 1rem;
364
+ }
365
+
366
+ // ----------------------------------------
367
+ // Anchor Progress Indicator
368
+ // ----------------------------------------
369
+ .anchor-progress {
370
+ position: relative;
371
+
372
+ &::before {
373
+ content: '';
374
+ position: absolute;
375
+ top: 0;
376
+ left: 0;
377
+ width: 2px;
378
+ height: var(--anchor-progress, 0%);
379
+ background-color: var(--primary);
380
+ transition: height 0.1s ease;
381
+ }
382
+ }
383
+
384
+ // ----------------------------------------
385
+ // Anchor Compact Mode
386
+ // ----------------------------------------
387
+ .anchor-compact {
388
+ .anchor-link-title {
389
+ padding: 0.25rem 0;
390
+ font-size: 0.8125rem;
391
+ }
392
+
393
+ .anchor-links {
394
+ padding-left: 0.75rem;
395
+ }
396
+ }
397
+
398
+ // ----------------------------------------
399
+ // Anchor Responsive
400
+ // ----------------------------------------
401
+ @media (max-width: 991.98px) {
402
+ .anchor-hide-mobile {
403
+ display: none;
404
+ }
405
+ }
406
+
407
+ // Mobile bottom bar anchor
408
+ .anchor-mobile-bar {
409
+ position: fixed;
410
+ bottom: 0;
411
+ left: 0;
412
+ right: 0;
413
+ z-index: $z-fixed;
414
+ padding: 0.75rem 1rem;
415
+ background-color: var(--bg-primary);
416
+ border-top: 1px solid var(--border-color);
417
+ box-shadow: $shadow-lg;
418
+
419
+ .anchor-links {
420
+ display: flex;
421
+ overflow-x: auto;
422
+ gap: 1rem;
423
+ padding-left: 0;
424
+ -webkit-overflow-scrolling: touch;
425
+
426
+ &::-webkit-scrollbar {
427
+ display: none;
428
+ }
429
+ }
430
+
431
+ .anchor-link-title {
432
+ white-space: nowrap;
433
+ }
434
+
435
+ .anchor-link .anchor-links {
436
+ display: none;
437
+ }
438
+ }