zenkit-css 1.2.3 → 1.4.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 (81) hide show
  1. package/dist/zenkit.css +7014 -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/_absolutecenter.scss +46 -0
  7. package/scss/components/_actionicon.scss +141 -0
  8. package/scss/components/_angleslider.scss +75 -0
  9. package/scss/components/_appbar.scss +96 -0
  10. package/scss/components/_appshell.scss +137 -0
  11. package/scss/components/_backdrop.scss +66 -0
  12. package/scss/components/_backgroundimage.scss +81 -0
  13. package/scss/components/_blockquote.scss +70 -0
  14. package/scss/components/_burger.scss +127 -0
  15. package/scss/components/_center.scss +33 -0
  16. package/scss/components/_chart.scss +100 -0
  17. package/scss/components/_checkboxcard.scss +105 -0
  18. package/scss/components/_checkboxgroup.scss +45 -0
  19. package/scss/components/_collapse.scss +76 -0
  20. package/scss/components/_colorinput.scss +103 -0
  21. package/scss/components/_colorswatch.scss +94 -0
  22. package/scss/components/_combobox.scss +157 -0
  23. package/scss/components/_contextmenu.scss +150 -0
  24. package/scss/components/_copybutton.scss +117 -0
  25. package/scss/components/_datagrid.scss +200 -0
  26. package/scss/components/_datalist.scss +104 -0
  27. package/scss/components/_datetimepicker.scss +123 -0
  28. package/scss/components/_dialog.scss +176 -0
  29. package/scss/components/_disclosure.scss +182 -0
  30. package/scss/components/_dropzone.scss +159 -0
  31. package/scss/components/_filebutton.scss +64 -0
  32. package/scss/components/_fileinput.scss +157 -0
  33. package/scss/components/_floatcomponent.scss +128 -0
  34. package/scss/components/_floatingindicator.scss +49 -0
  35. package/scss/components/_gauge.scss +143 -0
  36. package/scss/components/_group.scss +100 -0
  37. package/scss/components/_heading.scss +143 -0
  38. package/scss/components/_highlight.scss +60 -0
  39. package/scss/components/_indicator.scss +171 -0
  40. package/scss/components/_infinitescroll.scss +53 -0
  41. package/scss/components/_jsoninput.scss +124 -0
  42. package/scss/components/_label.scss +77 -0
  43. package/scss/components/_linkoverlay.scss +74 -0
  44. package/scss/components/_listbox.scss +188 -0
  45. package/scss/components/_loadingoverlay.scss +80 -0
  46. package/scss/components/_mark.scss +72 -0
  47. package/scss/components/_monthpicker.scss +141 -0
  48. package/scss/components/_multiselect.scss +192 -0
  49. package/scss/components/_navlink.scss +127 -0
  50. package/scss/components/_overlay.scss +97 -0
  51. package/scss/components/_paper.scss +98 -0
  52. package/scss/components/_pill.scss +141 -0
  53. package/scss/components/_pillsinput.scss +138 -0
  54. package/scss/components/_radiocard.scss +122 -0
  55. package/scss/components/_rangecalendar.scss +267 -0
  56. package/scss/components/_rangeslider.scss +146 -0
  57. package/scss/components/_richtexteditor.scss +222 -0
  58. package/scss/components/_ringprogress.scss +101 -0
  59. package/scss/components/_scrollshadow.scss +152 -0
  60. package/scss/components/_semicircleprogress.scss +116 -0
  61. package/scss/components/_separator.scss +126 -0
  62. package/scss/components/_simplegrid.scss +129 -0
  63. package/scss/components/_skipnavlink.scss +51 -0
  64. package/scss/components/_slider.scss +199 -0
  65. package/scss/components/_sortable.scss +115 -0
  66. package/scss/components/_sparkline.scss +124 -0
  67. package/scss/components/_splitbutton.scss +153 -0
  68. package/scss/components/_spoiler.scss +73 -0
  69. package/scss/components/_stepper.scss +153 -0
  70. package/scss/components/_tableofcontents.scss +107 -0
  71. package/scss/components/_tagsinput.scss +158 -0
  72. package/scss/components/_textcomponent.scss +183 -0
  73. package/scss/components/_themeicon.scss +121 -0
  74. package/scss/components/_togglegroup.scss +137 -0
  75. package/scss/components/_toggletip.scss +159 -0
  76. package/scss/components/_toolbar.scss +140 -0
  77. package/scss/components/_unstyledbutton.scss +43 -0
  78. package/scss/components/_user.scss +118 -0
  79. package/scss/components/_virtuallist.scss +118 -0
  80. package/scss/components/_yearpicker.scss +145 -0
  81. package/scss/zenkit.scss +87 -0
@@ -0,0 +1,127 @@
1
+ // ========================================
2
+ // NavLink Component
3
+ // ========================================
4
+
5
+ .navlink {
6
+ --zk-navlink-bg: transparent;
7
+ --zk-navlink-hover-bg: var(--zk-bg-secondary);
8
+ --zk-navlink-active-bg: rgba(var(--zk-primary-rgb), 0.1);
9
+ --zk-navlink-active-color: var(--zk-primary);
10
+ --zk-navlink-color: var(--zk-text-primary);
11
+
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 0.75rem;
15
+ padding: 0.625rem 1rem;
16
+ text-decoration: none;
17
+ color: var(--zk-navlink-color);
18
+ background: var(--zk-navlink-bg);
19
+ border-radius: var(--zk-radius-md);
20
+ font-size: 0.875rem;
21
+ cursor: pointer;
22
+ transition: all 0.15s ease;
23
+ border: none;
24
+ width: 100%;
25
+ text-align: left;
26
+
27
+ &:hover {
28
+ background: var(--zk-navlink-hover-bg);
29
+ }
30
+
31
+ &-active {
32
+ background: var(--zk-navlink-active-bg);
33
+ color: var(--zk-navlink-active-color);
34
+ font-weight: 500;
35
+
36
+ &:hover {
37
+ background: var(--zk-navlink-active-bg);
38
+ }
39
+ }
40
+
41
+ &-icon {
42
+ width: 20px;
43
+ height: 20px;
44
+ flex-shrink: 0;
45
+ color: var(--zk-text-muted);
46
+ }
47
+
48
+ &-active &-icon {
49
+ color: var(--zk-navlink-active-color);
50
+ }
51
+
52
+ &-label {
53
+ flex: 1;
54
+ overflow: hidden;
55
+ text-overflow: ellipsis;
56
+ white-space: nowrap;
57
+ }
58
+
59
+ &-description {
60
+ font-size: 0.75rem;
61
+ color: var(--zk-text-muted);
62
+ margin-top: 0.125rem;
63
+ }
64
+
65
+ &-right-section {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 0.25rem;
69
+ color: var(--zk-text-muted);
70
+ }
71
+
72
+ &-chevron {
73
+ width: 16px;
74
+ height: 16px;
75
+ transition: transform 0.2s ease;
76
+ }
77
+
78
+ &-expanded &-chevron {
79
+ transform: rotate(90deg);
80
+ }
81
+
82
+ // Nested links
83
+ &-children {
84
+ padding-left: 2.75rem;
85
+ }
86
+
87
+ &-nested {
88
+ margin-left: 1rem;
89
+ }
90
+
91
+ // Disabled
92
+ &-disabled {
93
+ opacity: 0.5;
94
+ cursor: not-allowed;
95
+ pointer-events: none;
96
+ }
97
+
98
+ // Variants
99
+ &-light {
100
+ --zk-navlink-hover-bg: var(--zk-bg-secondary);
101
+ --zk-navlink-active-bg: rgba(var(--zk-primary-rgb), 0.1);
102
+ }
103
+
104
+ &-filled {
105
+ --zk-navlink-active-bg: var(--zk-primary);
106
+ --zk-navlink-active-color: #fff;
107
+
108
+ &.navlink-active .navlink-icon {
109
+ color: #fff;
110
+ }
111
+ }
112
+
113
+ &-subtle {
114
+ --zk-navlink-hover-bg: transparent;
115
+ --zk-navlink-active-bg: transparent;
116
+
117
+ &:hover {
118
+ color: var(--zk-primary);
119
+ }
120
+ }
121
+
122
+ // Compact
123
+ &-compact {
124
+ padding: 0.375rem 0.75rem;
125
+ font-size: 0.8125rem;
126
+ }
127
+ }
@@ -0,0 +1,97 @@
1
+ // ========================================
2
+ // Overlay Component (Mantine-style)
3
+ // ========================================
4
+
5
+ .overlay {
6
+ --zk-overlay-bg: rgba(0, 0, 0, 0.6);
7
+ --zk-overlay-blur: 0;
8
+ --zk-overlay-z-index: 200;
9
+
10
+ position: absolute;
11
+ inset: 0;
12
+ background: var(--zk-overlay-bg);
13
+ backdrop-filter: blur(var(--zk-overlay-blur));
14
+ z-index: var(--zk-overlay-z-index);
15
+
16
+ // Fixed position
17
+ &-fixed {
18
+ position: fixed;
19
+ }
20
+
21
+ // With center content
22
+ &-center {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ }
27
+
28
+ // Opacity variants
29
+ &-opacity-10 {
30
+ --zk-overlay-bg: rgba(0, 0, 0, 0.1);
31
+ }
32
+ &-opacity-20 {
33
+ --zk-overlay-bg: rgba(0, 0, 0, 0.2);
34
+ }
35
+ &-opacity-30 {
36
+ --zk-overlay-bg: rgba(0, 0, 0, 0.3);
37
+ }
38
+ &-opacity-40 {
39
+ --zk-overlay-bg: rgba(0, 0, 0, 0.4);
40
+ }
41
+ &-opacity-50 {
42
+ --zk-overlay-bg: rgba(0, 0, 0, 0.5);
43
+ }
44
+ &-opacity-60 {
45
+ --zk-overlay-bg: rgba(0, 0, 0, 0.6);
46
+ }
47
+ &-opacity-70 {
48
+ --zk-overlay-bg: rgba(0, 0, 0, 0.7);
49
+ }
50
+ &-opacity-80 {
51
+ --zk-overlay-bg: rgba(0, 0, 0, 0.8);
52
+ }
53
+ &-opacity-90 {
54
+ --zk-overlay-bg: rgba(0, 0, 0, 0.9);
55
+ }
56
+
57
+ // Blur variants
58
+ &-blur-xs {
59
+ --zk-overlay-blur: 2px;
60
+ }
61
+ &-blur-sm {
62
+ --zk-overlay-blur: 4px;
63
+ }
64
+ &-blur-md {
65
+ --zk-overlay-blur: 8px;
66
+ }
67
+ &-blur-lg {
68
+ --zk-overlay-blur: 12px;
69
+ }
70
+ &-blur-xl {
71
+ --zk-overlay-blur: 16px;
72
+ }
73
+
74
+ // Color variants
75
+ &-white {
76
+ --zk-overlay-bg: rgba(255, 255, 255, 0.6);
77
+ }
78
+
79
+ &-gradient {
80
+ background: linear-gradient(
81
+ 180deg,
82
+ rgba(0, 0, 0, 0) 0%,
83
+ rgba(0, 0, 0, 0.6) 100%
84
+ );
85
+ }
86
+
87
+ // Radius (for non-full overlays)
88
+ &-radius-sm {
89
+ border-radius: var(--zk-radius-sm);
90
+ }
91
+ &-radius-md {
92
+ border-radius: var(--zk-radius-md);
93
+ }
94
+ &-radius-lg {
95
+ border-radius: var(--zk-radius-lg);
96
+ }
97
+ }
@@ -0,0 +1,98 @@
1
+ // ========================================
2
+ // Paper Component
3
+ // ========================================
4
+
5
+ .paper {
6
+ --zk-paper-bg: var(--zk-bg-primary);
7
+ --zk-paper-shadow: none;
8
+ --zk-paper-radius: var(--zk-radius-md);
9
+ --zk-paper-padding: 1rem;
10
+
11
+ background: var(--zk-paper-bg);
12
+ border-radius: var(--zk-paper-radius);
13
+ box-shadow: var(--zk-paper-shadow);
14
+ padding: var(--zk-paper-padding);
15
+
16
+ // Shadow variants
17
+ &-shadow-xs {
18
+ --zk-paper-shadow: var(--zk-shadow-xs);
19
+ }
20
+
21
+ &-shadow-sm {
22
+ --zk-paper-shadow: var(--zk-shadow-sm);
23
+ }
24
+
25
+ &-shadow-md {
26
+ --zk-paper-shadow: var(--zk-shadow-md);
27
+ }
28
+
29
+ &-shadow-lg {
30
+ --zk-paper-shadow: var(--zk-shadow-lg);
31
+ }
32
+
33
+ &-shadow-xl {
34
+ --zk-paper-shadow: var(--zk-shadow-xl);
35
+ }
36
+
37
+ // With border
38
+ &-with-border {
39
+ border: 1px solid var(--zk-border-color);
40
+ }
41
+
42
+ // Radius variants
43
+ &-radius-none {
44
+ --zk-paper-radius: 0;
45
+ }
46
+
47
+ &-radius-xs {
48
+ --zk-paper-radius: var(--zk-radius-xs);
49
+ }
50
+
51
+ &-radius-sm {
52
+ --zk-paper-radius: var(--zk-radius-sm);
53
+ }
54
+
55
+ &-radius-md {
56
+ --zk-paper-radius: var(--zk-radius-md);
57
+ }
58
+
59
+ &-radius-lg {
60
+ --zk-paper-radius: var(--zk-radius-lg);
61
+ }
62
+
63
+ &-radius-xl {
64
+ --zk-paper-radius: var(--zk-radius-xl);
65
+ }
66
+
67
+ // Padding variants
68
+ &-p-0 {
69
+ --zk-paper-padding: 0;
70
+ }
71
+
72
+ &-p-xs {
73
+ --zk-paper-padding: 0.5rem;
74
+ }
75
+
76
+ &-p-sm {
77
+ --zk-paper-padding: 0.75rem;
78
+ }
79
+
80
+ &-p-md {
81
+ --zk-paper-padding: 1rem;
82
+ }
83
+
84
+ &-p-lg {
85
+ --zk-paper-padding: 1.5rem;
86
+ }
87
+
88
+ &-p-xl {
89
+ --zk-paper-padding: 2rem;
90
+ }
91
+ }
92
+
93
+ // Dark mode
94
+ [data-theme="dark"] {
95
+ .paper {
96
+ --zk-paper-bg: var(--zk-bg-secondary);
97
+ }
98
+ }
@@ -0,0 +1,141 @@
1
+ // ========================================
2
+ // Pill Component (Mantine-style)
3
+ // ========================================
4
+
5
+ .pill {
6
+ --zk-pill-height: 24px;
7
+ --zk-pill-font-size: 0.75rem;
8
+ --zk-pill-padding: 0 0.625rem;
9
+ --zk-pill-bg: var(--zk-bg-secondary);
10
+ --zk-pill-color: var(--zk-text-primary);
11
+
12
+ display: inline-flex;
13
+ align-items: center;
14
+ height: var(--zk-pill-height);
15
+ padding: var(--zk-pill-padding);
16
+ font-size: var(--zk-pill-font-size);
17
+ font-weight: 500;
18
+ background: var(--zk-pill-bg);
19
+ color: var(--zk-pill-color);
20
+ border-radius: calc(var(--zk-pill-height) / 2);
21
+ white-space: nowrap;
22
+ user-select: none;
23
+ gap: 0.25rem;
24
+
25
+ &-label {
26
+ overflow: hidden;
27
+ text-overflow: ellipsis;
28
+ }
29
+
30
+ &-remove {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ width: 16px;
35
+ height: 16px;
36
+ margin-left: 0.125rem;
37
+ margin-right: -0.25rem;
38
+ background: transparent;
39
+ border: none;
40
+ border-radius: 50%;
41
+ cursor: pointer;
42
+ color: inherit;
43
+ opacity: 0.6;
44
+ transition: opacity 0.15s ease, background-color 0.15s ease;
45
+
46
+ &:hover {
47
+ opacity: 1;
48
+ background: rgba(0, 0, 0, 0.1);
49
+ }
50
+ }
51
+
52
+ // Sizes
53
+ &-xs {
54
+ --zk-pill-height: 18px;
55
+ --zk-pill-font-size: 0.625rem;
56
+ --zk-pill-padding: 0 0.5rem;
57
+ }
58
+
59
+ &-sm {
60
+ --zk-pill-height: 22px;
61
+ --zk-pill-font-size: 0.6875rem;
62
+ }
63
+
64
+ &-md {
65
+ --zk-pill-height: 24px;
66
+ --zk-pill-font-size: 0.75rem;
67
+ }
68
+
69
+ &-lg {
70
+ --zk-pill-height: 28px;
71
+ --zk-pill-font-size: 0.8125rem;
72
+ --zk-pill-padding: 0 0.75rem;
73
+ }
74
+
75
+ &-xl {
76
+ --zk-pill-height: 34px;
77
+ --zk-pill-font-size: 0.875rem;
78
+ --zk-pill-padding: 0 1rem;
79
+ }
80
+
81
+ // With left section (icon)
82
+ &-with-icon {
83
+ padding-left: 0.375rem;
84
+ }
85
+
86
+ // Variants
87
+ &-filled {
88
+ --zk-pill-bg: var(--zk-primary);
89
+ --zk-pill-color: #fff;
90
+ }
91
+
92
+ &-outline {
93
+ --zk-pill-bg: transparent;
94
+ border: 1px solid var(--zk-border-color);
95
+ }
96
+
97
+ // Disabled
98
+ &-disabled {
99
+ opacity: 0.5;
100
+ cursor: not-allowed;
101
+
102
+ .pill-remove {
103
+ pointer-events: none;
104
+ }
105
+ }
106
+ }
107
+
108
+ // PillsInput specific
109
+ .pills-input {
110
+ display: flex;
111
+ flex-wrap: wrap;
112
+ align-items: center;
113
+ gap: 0.375rem;
114
+ min-height: 36px;
115
+ padding: 0.25rem 0.5rem;
116
+ background: var(--zk-bg-primary);
117
+ border: 1px solid var(--zk-border-color);
118
+ border-radius: var(--zk-radius-md);
119
+ cursor: text;
120
+
121
+ &:focus-within {
122
+ border-color: var(--zk-primary);
123
+ box-shadow: 0 0 0 3px rgba(var(--zk-primary-rgb), 0.1);
124
+ }
125
+
126
+ &-field {
127
+ flex: 1;
128
+ min-width: 60px;
129
+ padding: 0.25rem;
130
+ border: none;
131
+ background: transparent;
132
+ font-size: 0.875rem;
133
+ outline: none;
134
+ }
135
+
136
+ &-disabled {
137
+ opacity: 0.5;
138
+ cursor: not-allowed;
139
+ pointer-events: none;
140
+ }
141
+ }
@@ -0,0 +1,138 @@
1
+ // ========================================
2
+ // PillsInput Component (Mantine-style)
3
+ // ========================================
4
+
5
+ .pills-input {
6
+ --zk-pills-input-min-height: 36px;
7
+ --zk-pills-input-padding: 0.25rem 0.5rem;
8
+ --zk-pills-input-gap: 0.375rem;
9
+
10
+ display: flex;
11
+ flex-wrap: wrap;
12
+ align-items: center;
13
+ gap: var(--zk-pills-input-gap);
14
+ min-height: var(--zk-pills-input-min-height);
15
+ padding: var(--zk-pills-input-padding);
16
+ background: var(--zk-bg-primary);
17
+ border: 1px solid var(--zk-border-color);
18
+ border-radius: var(--zk-radius-md);
19
+ cursor: text;
20
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
21
+
22
+ &:hover:not(&-disabled) {
23
+ border-color: var(--zk-border-hover);
24
+ }
25
+
26
+ &:focus-within {
27
+ border-color: var(--zk-primary);
28
+ box-shadow: 0 0 0 3px rgba(var(--zk-primary-rgb), 0.1);
29
+ }
30
+
31
+ // Input field
32
+ &-field {
33
+ flex: 1;
34
+ min-width: 60px;
35
+ padding: 0.25rem;
36
+ border: none;
37
+ background: transparent;
38
+ font-size: 0.875rem;
39
+ color: var(--zk-text-primary);
40
+ outline: none;
41
+
42
+ &::placeholder {
43
+ color: var(--zk-text-muted);
44
+ }
45
+ }
46
+
47
+ // Sizes
48
+ &-xs {
49
+ --zk-pills-input-min-height: 28px;
50
+ --zk-pills-input-padding: 0.125rem 0.375rem;
51
+ --zk-pills-input-gap: 0.25rem;
52
+
53
+ .pills-input-field {
54
+ font-size: 0.75rem;
55
+ }
56
+ }
57
+
58
+ &-sm {
59
+ --zk-pills-input-min-height: 32px;
60
+ --zk-pills-input-padding: 0.1875rem 0.4375rem;
61
+
62
+ .pills-input-field {
63
+ font-size: 0.8125rem;
64
+ }
65
+ }
66
+
67
+ &-md {
68
+ --zk-pills-input-min-height: 36px;
69
+ }
70
+
71
+ &-lg {
72
+ --zk-pills-input-min-height: 42px;
73
+ --zk-pills-input-padding: 0.375rem 0.625rem;
74
+ --zk-pills-input-gap: 0.5rem;
75
+
76
+ .pills-input-field {
77
+ font-size: 1rem;
78
+ }
79
+ }
80
+
81
+ &-xl {
82
+ --zk-pills-input-min-height: 50px;
83
+ --zk-pills-input-padding: 0.5rem 0.75rem;
84
+ --zk-pills-input-gap: 0.5rem;
85
+
86
+ .pills-input-field {
87
+ font-size: 1.125rem;
88
+ }
89
+ }
90
+
91
+ // States
92
+ &-disabled {
93
+ opacity: 0.5;
94
+ cursor: not-allowed;
95
+ pointer-events: none;
96
+ background: var(--zk-bg-secondary);
97
+ }
98
+
99
+ &-error {
100
+ border-color: var(--zk-danger);
101
+
102
+ &:focus-within {
103
+ border-color: var(--zk-danger);
104
+ box-shadow: 0 0 0 3px rgba(var(--zk-danger-rgb), 0.1);
105
+ }
106
+ }
107
+
108
+ &-readonly {
109
+ background: var(--zk-bg-secondary);
110
+ cursor: default;
111
+ }
112
+
113
+ // Variants
114
+ &-filled {
115
+ background: var(--zk-bg-secondary);
116
+ border-color: transparent;
117
+
118
+ &:hover:not(.pills-input-disabled) {
119
+ background: var(--zk-bg-tertiary);
120
+ }
121
+
122
+ &:focus-within {
123
+ background: var(--zk-bg-primary);
124
+ border-color: var(--zk-primary);
125
+ }
126
+ }
127
+
128
+ &-unstyled {
129
+ background: transparent;
130
+ border: none;
131
+ padding: 0;
132
+ min-height: auto;
133
+
134
+ &:focus-within {
135
+ box-shadow: none;
136
+ }
137
+ }
138
+ }
@@ -0,0 +1,122 @@
1
+ // ========================================
2
+ // RadioCard Component
3
+ // ========================================
4
+
5
+ .radio-card {
6
+ --zk-radio-card-bg: var(--zk-bg-primary);
7
+ --zk-radio-card-border-color: var(--zk-border-color);
8
+ --zk-radio-card-checked-border-color: var(--zk-primary);
9
+ --zk-radio-card-checked-bg: rgba(var(--zk-primary-rgb), 0.05);
10
+
11
+ display: block;
12
+ position: relative;
13
+ padding: 1rem;
14
+ background: var(--zk-radio-card-bg);
15
+ border: 2px solid var(--zk-radio-card-border-color);
16
+ border-radius: var(--zk-radius-md);
17
+ cursor: pointer;
18
+ transition: all 0.2s ease;
19
+
20
+ &:hover {
21
+ border-color: var(--zk-primary);
22
+ }
23
+
24
+ // Hidden input
25
+ &-input {
26
+ position: absolute;
27
+ opacity: 0;
28
+ width: 0;
29
+ height: 0;
30
+
31
+ &:checked + .radio-card-content {
32
+ .radio-card-indicator {
33
+ border-color: var(--zk-primary);
34
+
35
+ &::after {
36
+ transform: scale(1);
37
+ }
38
+ }
39
+ }
40
+
41
+ &:focus-visible + .radio-card-content {
42
+ outline: 2px solid var(--zk-primary);
43
+ outline-offset: 2px;
44
+ }
45
+
46
+ &:disabled + .radio-card-content {
47
+ opacity: 0.5;
48
+ cursor: not-allowed;
49
+ }
50
+ }
51
+
52
+ &-checked {
53
+ border-color: var(--zk-radio-card-checked-border-color);
54
+ background: var(--zk-radio-card-checked-bg);
55
+ }
56
+
57
+ &-content {
58
+ display: flex;
59
+ gap: 0.75rem;
60
+ }
61
+
62
+ &-indicator {
63
+ position: relative;
64
+ width: 20px;
65
+ height: 20px;
66
+ border: 2px solid var(--zk-border-color);
67
+ border-radius: 50%;
68
+ flex-shrink: 0;
69
+ transition: border-color 0.2s ease;
70
+
71
+ &::after {
72
+ content: "";
73
+ position: absolute;
74
+ top: 50%;
75
+ left: 50%;
76
+ width: 10px;
77
+ height: 10px;
78
+ background: var(--zk-primary);
79
+ border-radius: 50%;
80
+ transform: translate(-50%, -50%) scale(0);
81
+ transition: transform 0.2s ease;
82
+ }
83
+ }
84
+
85
+ &-body {
86
+ flex: 1;
87
+ }
88
+
89
+ &-title {
90
+ font-weight: 600;
91
+ color: var(--zk-text-primary);
92
+ margin-bottom: 0.25rem;
93
+ }
94
+
95
+ &-description {
96
+ font-size: 0.875rem;
97
+ color: var(--zk-text-muted);
98
+ }
99
+
100
+ &-icon {
101
+ width: 40px;
102
+ height: 40px;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ background: var(--zk-bg-secondary);
107
+ border-radius: var(--zk-radius-sm);
108
+ margin-bottom: 0.5rem;
109
+ color: var(--zk-primary);
110
+ }
111
+
112
+ // Group
113
+ &-group {
114
+ display: flex;
115
+ flex-wrap: wrap;
116
+ gap: 1rem;
117
+
118
+ &-vertical {
119
+ flex-direction: column;
120
+ }
121
+ }
122
+ }