zenkit-css 1.2.3 → 1.3.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 (73) hide show
  1. package/dist/zenkit.css +6106 -0
  2. package/dist/zenkit.css.map +1 -1
  3. package/dist/zenkit.min.css +1 -1
  4. package/dist/zenkit.min.css.map +1 -1
  5. package/package.json +1 -1
  6. package/scss/components/_actionicon.scss +141 -0
  7. package/scss/components/_angleslider.scss +75 -0
  8. package/scss/components/_appbar.scss +96 -0
  9. package/scss/components/_appshell.scss +137 -0
  10. package/scss/components/_backdrop.scss +66 -0
  11. package/scss/components/_backgroundimage.scss +81 -0
  12. package/scss/components/_blockquote.scss +70 -0
  13. package/scss/components/_center.scss +33 -0
  14. package/scss/components/_chart.scss +100 -0
  15. package/scss/components/_checkboxcard.scss +105 -0
  16. package/scss/components/_checkboxgroup.scss +45 -0
  17. package/scss/components/_collapse.scss +76 -0
  18. package/scss/components/_colorinput.scss +103 -0
  19. package/scss/components/_colorswatch.scss +94 -0
  20. package/scss/components/_combobox.scss +157 -0
  21. package/scss/components/_contextmenu.scss +150 -0
  22. package/scss/components/_copybutton.scss +117 -0
  23. package/scss/components/_datagrid.scss +200 -0
  24. package/scss/components/_datalist.scss +104 -0
  25. package/scss/components/_datetimepicker.scss +123 -0
  26. package/scss/components/_dialog.scss +176 -0
  27. package/scss/components/_dropzone.scss +159 -0
  28. package/scss/components/_filebutton.scss +64 -0
  29. package/scss/components/_fileinput.scss +157 -0
  30. package/scss/components/_floatcomponent.scss +128 -0
  31. package/scss/components/_floatingindicator.scss +49 -0
  32. package/scss/components/_gauge.scss +143 -0
  33. package/scss/components/_group.scss +100 -0
  34. package/scss/components/_heading.scss +143 -0
  35. package/scss/components/_highlight.scss +60 -0
  36. package/scss/components/_indicator.scss +171 -0
  37. package/scss/components/_infinitescroll.scss +53 -0
  38. package/scss/components/_jsoninput.scss +124 -0
  39. package/scss/components/_label.scss +77 -0
  40. package/scss/components/_loadingoverlay.scss +80 -0
  41. package/scss/components/_mark.scss +72 -0
  42. package/scss/components/_monthpicker.scss +141 -0
  43. package/scss/components/_multiselect.scss +192 -0
  44. package/scss/components/_navlink.scss +127 -0
  45. package/scss/components/_overlay.scss +97 -0
  46. package/scss/components/_paper.scss +98 -0
  47. package/scss/components/_pill.scss +141 -0
  48. package/scss/components/_radiocard.scss +122 -0
  49. package/scss/components/_rangeslider.scss +146 -0
  50. package/scss/components/_richtexteditor.scss +222 -0
  51. package/scss/components/_ringprogress.scss +101 -0
  52. package/scss/components/_scrollshadow.scss +152 -0
  53. package/scss/components/_semicircleprogress.scss +116 -0
  54. package/scss/components/_separator.scss +126 -0
  55. package/scss/components/_simplegrid.scss +129 -0
  56. package/scss/components/_skipnavlink.scss +51 -0
  57. package/scss/components/_slider.scss +199 -0
  58. package/scss/components/_sortable.scss +115 -0
  59. package/scss/components/_sparkline.scss +124 -0
  60. package/scss/components/_splitbutton.scss +153 -0
  61. package/scss/components/_spoiler.scss +73 -0
  62. package/scss/components/_stepper.scss +153 -0
  63. package/scss/components/_tableofcontents.scss +107 -0
  64. package/scss/components/_tagsinput.scss +158 -0
  65. package/scss/components/_textcomponent.scss +183 -0
  66. package/scss/components/_themeicon.scss +121 -0
  67. package/scss/components/_togglegroup.scss +137 -0
  68. package/scss/components/_toolbar.scss +140 -0
  69. package/scss/components/_unstyledbutton.scss +43 -0
  70. package/scss/components/_user.scss +118 -0
  71. package/scss/components/_virtuallist.scss +118 -0
  72. package/scss/components/_yearpicker.scss +145 -0
  73. package/scss/zenkit.scss +75 -0
@@ -0,0 +1,100 @@
1
+ // ========================================
2
+ // Chart Component
3
+ // ========================================
4
+
5
+ .chart {
6
+ --zk-chart-bg: var(--zk-bg-primary);
7
+ --zk-chart-border-color: var(--zk-border-color);
8
+ --zk-chart-text-color: var(--zk-text-primary);
9
+ --zk-chart-grid-color: var(--zk-border-color);
10
+
11
+ position: relative;
12
+ width: 100%;
13
+ background: var(--zk-chart-bg);
14
+ border: 1px solid var(--zk-chart-border-color);
15
+ border-radius: var(--zk-radius-md);
16
+ padding: 1rem;
17
+
18
+ &-container {
19
+ position: relative;
20
+ width: 100%;
21
+ height: 100%;
22
+ min-height: 200px;
23
+ }
24
+
25
+ &-title {
26
+ font-size: 1rem;
27
+ font-weight: 600;
28
+ color: var(--zk-chart-text-color);
29
+ margin-bottom: 0.5rem;
30
+ }
31
+
32
+ &-subtitle {
33
+ font-size: 0.875rem;
34
+ color: var(--zk-text-muted);
35
+ margin-bottom: 1rem;
36
+ }
37
+
38
+ &-legend {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ gap: 1rem;
42
+ margin-top: 1rem;
43
+ justify-content: center;
44
+
45
+ &-item {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 0.5rem;
49
+ font-size: 0.875rem;
50
+ color: var(--zk-text-secondary);
51
+ }
52
+
53
+ &-color {
54
+ width: 12px;
55
+ height: 12px;
56
+ border-radius: 2px;
57
+ }
58
+ }
59
+
60
+ &-tooltip {
61
+ position: absolute;
62
+ background: var(--zk-bg-primary);
63
+ border: 1px solid var(--zk-border-color);
64
+ border-radius: var(--zk-radius-sm);
65
+ padding: 0.5rem 0.75rem;
66
+ font-size: 0.75rem;
67
+ box-shadow: var(--zk-shadow-md);
68
+ pointer-events: none;
69
+ z-index: 100;
70
+ white-space: nowrap;
71
+ }
72
+
73
+ // Responsive
74
+ &-responsive {
75
+ aspect-ratio: 16 / 9;
76
+
77
+ .chart-container {
78
+ position: absolute;
79
+ inset: 0;
80
+ }
81
+ }
82
+
83
+ // Loading state
84
+ &-loading {
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ min-height: 200px;
89
+ }
90
+
91
+ // Empty state
92
+ &-empty {
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ justify-content: center;
97
+ min-height: 200px;
98
+ color: var(--zk-text-muted);
99
+ }
100
+ }
@@ -0,0 +1,105 @@
1
+ // ========================================
2
+ // CheckboxCard Component
3
+ // ========================================
4
+
5
+ .checkbox-card {
6
+ --zk-checkbox-card-bg: var(--zk-bg-primary);
7
+ --zk-checkbox-card-border-color: var(--zk-border-color);
8
+ --zk-checkbox-card-hover-border-color: var(--zk-primary);
9
+ --zk-checkbox-card-checked-border-color: var(--zk-primary);
10
+ --zk-checkbox-card-checked-bg: var(--zk-primary-light);
11
+
12
+ display: block;
13
+ position: relative;
14
+ padding: 1rem;
15
+ background: var(--zk-checkbox-card-bg);
16
+ border: 2px solid var(--zk-checkbox-card-border-color);
17
+ border-radius: var(--zk-radius-md);
18
+ cursor: pointer;
19
+ transition: all 0.2s ease;
20
+
21
+ &:hover {
22
+ border-color: var(--zk-checkbox-card-hover-border-color);
23
+ }
24
+
25
+ // Hidden input
26
+ &-input {
27
+ position: absolute;
28
+ opacity: 0;
29
+ width: 0;
30
+ height: 0;
31
+
32
+ &:checked + .checkbox-card-content {
33
+ border-color: var(--zk-checkbox-card-checked-border-color);
34
+ background: var(--zk-checkbox-card-checked-bg);
35
+ }
36
+
37
+ &:focus-visible + .checkbox-card-content {
38
+ outline: 2px solid var(--zk-primary);
39
+ outline-offset: 2px;
40
+ }
41
+
42
+ &:disabled + .checkbox-card-content {
43
+ opacity: 0.5;
44
+ cursor: not-allowed;
45
+ }
46
+ }
47
+
48
+ &-content {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: 0.5rem;
52
+ }
53
+
54
+ &-indicator {
55
+ position: absolute;
56
+ top: 0.75rem;
57
+ right: 0.75rem;
58
+ width: 20px;
59
+ height: 20px;
60
+ border: 2px solid var(--zk-border-color);
61
+ border-radius: 4px;
62
+ display: flex;
63
+ align-items: center;
64
+ justify-content: center;
65
+ transition: all 0.2s ease;
66
+
67
+ &-checked {
68
+ background: var(--zk-primary);
69
+ border-color: var(--zk-primary);
70
+ color: #fff;
71
+ }
72
+ }
73
+
74
+ &-title {
75
+ font-weight: 600;
76
+ color: var(--zk-text-primary);
77
+ }
78
+
79
+ &-description {
80
+ font-size: 0.875rem;
81
+ color: var(--zk-text-muted);
82
+ }
83
+
84
+ &-icon {
85
+ width: 40px;
86
+ height: 40px;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ background: var(--zk-bg-secondary);
91
+ border-radius: var(--zk-radius-sm);
92
+ margin-bottom: 0.5rem;
93
+ }
94
+
95
+ // Group
96
+ &-group {
97
+ display: flex;
98
+ flex-wrap: wrap;
99
+ gap: 1rem;
100
+
101
+ &-vertical {
102
+ flex-direction: column;
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,45 @@
1
+ // ========================================
2
+ // CheckboxGroup Component
3
+ // ========================================
4
+
5
+ .checkbox-group {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 0.75rem;
9
+
10
+ &-horizontal {
11
+ flex-direction: row;
12
+ flex-wrap: wrap;
13
+ }
14
+
15
+ &-label {
16
+ font-size: 0.875rem;
17
+ font-weight: 500;
18
+ color: var(--zk-text-primary);
19
+ margin-bottom: 0.25rem;
20
+ }
21
+
22
+ &-description {
23
+ font-size: 0.75rem;
24
+ color: var(--zk-text-muted);
25
+ margin-bottom: 0.5rem;
26
+ }
27
+
28
+ &-error {
29
+ font-size: 0.75rem;
30
+ color: var(--zk-danger);
31
+ margin-top: 0.25rem;
32
+ }
33
+
34
+ &-items {
35
+ display: flex;
36
+ flex-direction: column;
37
+ gap: 0.5rem;
38
+ }
39
+
40
+ &-horizontal &-items {
41
+ flex-direction: row;
42
+ flex-wrap: wrap;
43
+ gap: 1rem;
44
+ }
45
+ }
@@ -0,0 +1,76 @@
1
+ // ========================================
2
+ // Collapse Component
3
+ // ========================================
4
+
5
+ .collapse {
6
+ display: none;
7
+ overflow: hidden;
8
+ transition: height 0.35s ease;
9
+
10
+ &.show {
11
+ display: block;
12
+ }
13
+
14
+ &.collapsing {
15
+ display: block;
16
+ height: 0;
17
+ overflow: hidden;
18
+ }
19
+
20
+ // Horizontal collapse
21
+ &-horizontal {
22
+ width: 0;
23
+ height: auto;
24
+ transition: width 0.35s ease;
25
+
26
+ &.show {
27
+ width: auto;
28
+ }
29
+
30
+ &.collapsing {
31
+ width: 0;
32
+ height: auto;
33
+ }
34
+ }
35
+ }
36
+
37
+ // Collapsible wrapper component
38
+ .collapsible {
39
+ --zk-collapsible-bg: var(--zk-bg-primary);
40
+ --zk-collapsible-border-color: var(--zk-border-color);
41
+
42
+ border: 1px solid var(--zk-collapsible-border-color);
43
+ border-radius: var(--zk-radius-md);
44
+ background: var(--zk-collapsible-bg);
45
+
46
+ &-trigger {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ width: 100%;
51
+ padding: 1rem;
52
+ background: transparent;
53
+ border: none;
54
+ cursor: pointer;
55
+ font-size: 1rem;
56
+ font-weight: 500;
57
+ color: var(--zk-text-primary);
58
+ text-align: left;
59
+
60
+ &:hover {
61
+ background: var(--zk-bg-secondary);
62
+ }
63
+
64
+ &-icon {
65
+ transition: transform 0.2s ease;
66
+ }
67
+
68
+ &[aria-expanded="true"] &-icon {
69
+ transform: rotate(180deg);
70
+ }
71
+ }
72
+
73
+ &-content {
74
+ padding: 0 1rem 1rem;
75
+ }
76
+ }
@@ -0,0 +1,103 @@
1
+ // ========================================
2
+ // ColorInput Component
3
+ // ========================================
4
+
5
+ .color-input {
6
+ --zk-color-input-swatch-size: 24px;
7
+
8
+ display: flex;
9
+ align-items: center;
10
+ gap: 0.5rem;
11
+
12
+ &-wrapper {
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: 0.25rem;
16
+ }
17
+
18
+ &-label {
19
+ font-size: 0.875rem;
20
+ font-weight: 500;
21
+ color: var(--zk-text-primary);
22
+ }
23
+
24
+ &-field {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 0.5rem;
28
+ padding: 0.5rem 0.75rem;
29
+ background: var(--zk-bg-primary);
30
+ border: 1px solid var(--zk-border-color);
31
+ border-radius: var(--zk-radius-md);
32
+ transition: border-color 0.2s ease;
33
+
34
+ &:focus-within {
35
+ border-color: var(--zk-primary);
36
+ box-shadow: 0 0 0 3px rgba(var(--zk-primary-rgb), 0.1);
37
+ }
38
+ }
39
+
40
+ &-swatch {
41
+ width: var(--zk-color-input-swatch-size);
42
+ height: var(--zk-color-input-swatch-size);
43
+ border-radius: var(--zk-radius-sm);
44
+ border: 1px solid var(--zk-border-color);
45
+ cursor: pointer;
46
+ flex-shrink: 0;
47
+ }
48
+
49
+ &-text {
50
+ flex: 1;
51
+ border: none;
52
+ background: transparent;
53
+ font-size: 0.875rem;
54
+ color: var(--zk-text-primary);
55
+ outline: none;
56
+ font-family: monospace;
57
+ text-transform: uppercase;
58
+ }
59
+
60
+ &-format {
61
+ font-size: 0.75rem;
62
+ color: var(--zk-text-muted);
63
+ text-transform: uppercase;
64
+ }
65
+
66
+ // Swatches
67
+ &-swatches {
68
+ display: flex;
69
+ flex-wrap: wrap;
70
+ gap: 0.25rem;
71
+ margin-top: 0.5rem;
72
+ }
73
+
74
+ &-swatch-option {
75
+ width: 24px;
76
+ height: 24px;
77
+ border-radius: var(--zk-radius-sm);
78
+ border: 2px solid transparent;
79
+ cursor: pointer;
80
+ transition: transform 0.1s ease;
81
+
82
+ &:hover {
83
+ transform: scale(1.1);
84
+ }
85
+
86
+ &-selected {
87
+ border-color: var(--zk-primary);
88
+ }
89
+ }
90
+
91
+ // Disabled
92
+ &-disabled {
93
+ opacity: 0.5;
94
+ pointer-events: none;
95
+ }
96
+
97
+ // Error
98
+ &-error {
99
+ .color-input-field {
100
+ border-color: var(--zk-danger);
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,94 @@
1
+ // ========================================
2
+ // ColorSwatch Component
3
+ // ========================================
4
+
5
+ .color-swatch {
6
+ --zk-swatch-size: 24px;
7
+ --zk-swatch-radius: var(--zk-radius-sm);
8
+
9
+ display: inline-flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ width: var(--zk-swatch-size);
13
+ height: var(--zk-swatch-size);
14
+ border-radius: var(--zk-swatch-radius);
15
+ border: 1px solid rgba(0, 0, 0, 0.1);
16
+ cursor: pointer;
17
+ transition: transform 0.1s ease, box-shadow 0.1s ease;
18
+ position: relative;
19
+
20
+ &:hover {
21
+ transform: scale(1.1);
22
+ box-shadow: var(--zk-shadow-md);
23
+ }
24
+
25
+ // Sizes
26
+ &-xs {
27
+ --zk-swatch-size: 16px;
28
+ }
29
+
30
+ &-sm {
31
+ --zk-swatch-size: 20px;
32
+ }
33
+
34
+ &-md {
35
+ --zk-swatch-size: 24px;
36
+ }
37
+
38
+ &-lg {
39
+ --zk-swatch-size: 32px;
40
+ }
41
+
42
+ &-xl {
43
+ --zk-swatch-size: 40px;
44
+ }
45
+
46
+ // Shapes
47
+ &-circle {
48
+ --zk-swatch-radius: 50%;
49
+ }
50
+
51
+ &-square {
52
+ --zk-swatch-radius: 0;
53
+ }
54
+
55
+ // Selected state
56
+ &-selected {
57
+ box-shadow: 0 0 0 2px var(--zk-bg-primary), 0 0 0 4px var(--zk-primary);
58
+ }
59
+
60
+ // With alpha (checkerboard)
61
+ &-alpha {
62
+ background-image: linear-gradient(45deg, #ccc 25%, transparent 25%),
63
+ linear-gradient(-45deg, #ccc 25%, transparent 25%),
64
+ linear-gradient(45deg, transparent 75%, #ccc 75%),
65
+ linear-gradient(-45deg, transparent 75%, #ccc 75%);
66
+ background-size: 8px 8px;
67
+ background-position: 0 0, 0 4px, 4px -4px, -4px 0px;
68
+
69
+ &::after {
70
+ content: "";
71
+ position: absolute;
72
+ inset: 0;
73
+ border-radius: inherit;
74
+ background: inherit;
75
+ }
76
+ }
77
+
78
+ // Disabled
79
+ &-disabled {
80
+ opacity: 0.5;
81
+ cursor: not-allowed;
82
+
83
+ &:hover {
84
+ transform: none;
85
+ }
86
+ }
87
+
88
+ // Group
89
+ &-group {
90
+ display: flex;
91
+ flex-wrap: wrap;
92
+ gap: 0.5rem;
93
+ }
94
+ }
@@ -0,0 +1,157 @@
1
+ // ========================================
2
+ // Combobox Component
3
+ // ========================================
4
+
5
+ .combobox {
6
+ --zk-combobox-bg: var(--zk-bg-primary);
7
+ --zk-combobox-border-color: var(--zk-border-color);
8
+ --zk-combobox-focus-border-color: var(--zk-primary);
9
+
10
+ position: relative;
11
+ width: 100%;
12
+
13
+ &-input-wrapper {
14
+ position: relative;
15
+ display: flex;
16
+ align-items: center;
17
+ }
18
+
19
+ &-input {
20
+ width: 100%;
21
+ padding: 0.5rem 2.5rem 0.5rem 0.75rem;
22
+ font-size: 0.875rem;
23
+ background: var(--zk-combobox-bg);
24
+ border: 1px solid var(--zk-combobox-border-color);
25
+ border-radius: var(--zk-radius-md);
26
+ color: var(--zk-text-primary);
27
+ outline: none;
28
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
29
+
30
+ &:focus {
31
+ border-color: var(--zk-combobox-focus-border-color);
32
+ box-shadow: 0 0 0 3px rgba(var(--zk-primary-rgb), 0.1);
33
+ }
34
+
35
+ &::placeholder {
36
+ color: var(--zk-text-muted);
37
+ }
38
+ }
39
+
40
+ &-button {
41
+ position: absolute;
42
+ right: 0.5rem;
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ width: 24px;
47
+ height: 24px;
48
+ background: transparent;
49
+ border: none;
50
+ cursor: pointer;
51
+ color: var(--zk-text-muted);
52
+
53
+ &:hover {
54
+ color: var(--zk-text-primary);
55
+ }
56
+ }
57
+
58
+ &-clear {
59
+ position: absolute;
60
+ right: 2rem;
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ width: 20px;
65
+ height: 20px;
66
+ background: transparent;
67
+ border: none;
68
+ cursor: pointer;
69
+ color: var(--zk-text-muted);
70
+ border-radius: 50%;
71
+
72
+ &:hover {
73
+ background: var(--zk-bg-secondary);
74
+ color: var(--zk-text-primary);
75
+ }
76
+ }
77
+
78
+ &-dropdown {
79
+ position: absolute;
80
+ top: 100%;
81
+ left: 0;
82
+ right: 0;
83
+ margin-top: 0.25rem;
84
+ background: var(--zk-combobox-bg);
85
+ border: 1px solid var(--zk-combobox-border-color);
86
+ border-radius: var(--zk-radius-md);
87
+ box-shadow: var(--zk-shadow-lg);
88
+ max-height: 300px;
89
+ overflow-y: auto;
90
+ z-index: 1050;
91
+
92
+ &:empty {
93
+ display: none;
94
+ }
95
+ }
96
+
97
+ &-option {
98
+ padding: 0.5rem 0.75rem;
99
+ cursor: pointer;
100
+ font-size: 0.875rem;
101
+ color: var(--zk-text-primary);
102
+ transition: background-color 0.1s ease;
103
+
104
+ &:hover,
105
+ &-active {
106
+ background: var(--zk-bg-secondary);
107
+ }
108
+
109
+ &-selected {
110
+ background: rgba(var(--zk-primary-rgb), 0.1);
111
+ color: var(--zk-primary);
112
+ }
113
+
114
+ &-disabled {
115
+ opacity: 0.5;
116
+ cursor: not-allowed;
117
+ }
118
+ }
119
+
120
+ &-group {
121
+ &-label {
122
+ padding: 0.5rem 0.75rem;
123
+ font-size: 0.75rem;
124
+ font-weight: 600;
125
+ color: var(--zk-text-muted);
126
+ text-transform: uppercase;
127
+ }
128
+ }
129
+
130
+ &-empty {
131
+ padding: 1rem;
132
+ text-align: center;
133
+ color: var(--zk-text-muted);
134
+ font-size: 0.875rem;
135
+ }
136
+
137
+ // Loading
138
+ &-loading {
139
+ padding: 1rem;
140
+ display: flex;
141
+ align-items: center;
142
+ justify-content: center;
143
+ }
144
+
145
+ // Disabled
146
+ &-disabled {
147
+ opacity: 0.5;
148
+ pointer-events: none;
149
+ }
150
+
151
+ // Error
152
+ &-error {
153
+ .combobox-input {
154
+ border-color: var(--zk-danger);
155
+ }
156
+ }
157
+ }