kb-ui-vue 0.2.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 (225) hide show
  1. package/dist/components/Alert/Alert.vue.d.ts +26 -0
  2. package/dist/components/Alert/index.d.ts +4 -0
  3. package/dist/components/Avatar/Avatar.vue.d.ts +20 -0
  4. package/dist/components/Avatar/index.d.ts +4 -0
  5. package/dist/components/Badge/Badge.vue.d.ts +28 -0
  6. package/dist/components/Badge/index.d.ts +4 -0
  7. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +15 -0
  8. package/dist/components/Breadcrumb/index.d.ts +4 -0
  9. package/dist/components/Button/Button.vue.d.ts +32 -0
  10. package/dist/components/Button/index.d.ts +4 -0
  11. package/dist/components/Calendar/Calendar.vue.d.ts +12 -0
  12. package/dist/components/Calendar/index.d.ts +4 -0
  13. package/dist/components/Card/Card.vue.d.ts +23 -0
  14. package/dist/components/Card/index.d.ts +4 -0
  15. package/dist/components/Carousel/Carousel.vue.d.ts +18 -0
  16. package/dist/components/Carousel/index.d.ts +4 -0
  17. package/dist/components/Cascader/Cascader.vue.d.ts +21 -0
  18. package/dist/components/Cascader/index.d.ts +4 -0
  19. package/dist/components/Checkbox/Checkbox.vue.d.ts +27 -0
  20. package/dist/components/Checkbox/index.d.ts +4 -0
  21. package/dist/components/Collapse/Collapse.vue.d.ts +35 -0
  22. package/dist/components/Collapse/index.d.ts +4 -0
  23. package/dist/components/ColorPicker/ColorPicker.vue.d.ts +12 -0
  24. package/dist/components/ColorPicker/index.d.ts +4 -0
  25. package/dist/components/CountUp/CountUp.vue.d.ts +20 -0
  26. package/dist/components/CountUp/index.d.ts +4 -0
  27. package/dist/components/DatePicker/DatePicker.vue.d.ts +14 -0
  28. package/dist/components/DatePicker/index.d.ts +4 -0
  29. package/dist/components/Descriptions/Descriptions.vue.d.ts +19 -0
  30. package/dist/components/Descriptions/index.d.ts +4 -0
  31. package/dist/components/Dialog/Dialog.vue.d.ts +35 -0
  32. package/dist/components/Dialog/index.d.ts +4 -0
  33. package/dist/components/Divider/Divider.vue.d.ts +20 -0
  34. package/dist/components/Divider/index.d.ts +4 -0
  35. package/dist/components/Drawer/Drawer.vue.d.ts +31 -0
  36. package/dist/components/Drawer/index.d.ts +4 -0
  37. package/dist/components/Dropdown/Dropdown.vue.d.ts +31 -0
  38. package/dist/components/Dropdown/index.d.ts +4 -0
  39. package/dist/components/Empty/Empty.vue.d.ts +21 -0
  40. package/dist/components/Empty/index.d.ts +4 -0
  41. package/dist/components/Form/Form.vue.d.ts +38 -0
  42. package/dist/components/Form/FormItem.vue.d.ts +21 -0
  43. package/dist/components/Form/index.d.ts +5 -0
  44. package/dist/components/Grid/Col.vue.d.ts +20 -0
  45. package/dist/components/Grid/Row.vue.d.ts +22 -0
  46. package/dist/components/Grid/constants.d.ts +1 -0
  47. package/dist/components/Grid/index.d.ts +5 -0
  48. package/dist/components/Icon/Icon.vue.d.ts +10 -0
  49. package/dist/components/Icon/index.d.ts +4 -0
  50. package/dist/components/Input/Input.vue.d.ts +29 -0
  51. package/dist/components/Input/index.d.ts +4 -0
  52. package/dist/components/InputNumber/InputNumber.vue.d.ts +20 -0
  53. package/dist/components/InputNumber/index.d.ts +4 -0
  54. package/dist/components/InputPassword/InputPassword.vue.d.ts +16 -0
  55. package/dist/components/InputPassword/index.d.ts +4 -0
  56. package/dist/components/List/List.vue.d.ts +26 -0
  57. package/dist/components/List/index.d.ts +4 -0
  58. package/dist/components/Loading/Loading.vue.d.ts +12 -0
  59. package/dist/components/Loading/index.d.ts +4 -0
  60. package/dist/components/Message/Message.vue.d.ts +10 -0
  61. package/dist/components/Message/index.d.ts +16 -0
  62. package/dist/components/Notification/Notification.vue.d.ts +11 -0
  63. package/dist/components/Notification/index.d.ts +16 -0
  64. package/dist/components/Pagination/Pagination.vue.d.ts +18 -0
  65. package/dist/components/Pagination/index.d.ts +4 -0
  66. package/dist/components/Popconfirm/Popconfirm.vue.d.ts +28 -0
  67. package/dist/components/Popconfirm/index.d.ts +4 -0
  68. package/dist/components/Popover/Popover.vue.d.ts +28 -0
  69. package/dist/components/Popover/index.d.ts +4 -0
  70. package/dist/components/Progress/Progress.vue.d.ts +21 -0
  71. package/dist/components/Progress/index.d.ts +4 -0
  72. package/dist/components/Radio/Radio.vue.d.ts +27 -0
  73. package/dist/components/Radio/index.d.ts +4 -0
  74. package/dist/components/Rate/Rate.vue.d.ts +17 -0
  75. package/dist/components/Rate/index.d.ts +4 -0
  76. package/dist/components/Result/Result.vue.d.ts +21 -0
  77. package/dist/components/Result/index.d.ts +4 -0
  78. package/dist/components/Search/Search.vue.d.ts +18 -0
  79. package/dist/components/Search/index.d.ts +4 -0
  80. package/dist/components/Segmented/Segmented.vue.d.ts +19 -0
  81. package/dist/components/Segmented/index.d.ts +4 -0
  82. package/dist/components/Select/Select.vue.d.ts +26 -0
  83. package/dist/components/Select/index.d.ts +4 -0
  84. package/dist/components/Skeleton/Skeleton.vue.d.ts +22 -0
  85. package/dist/components/Skeleton/index.d.ts +4 -0
  86. package/dist/components/Slider/Slider.vue.d.ts +20 -0
  87. package/dist/components/Slider/index.d.ts +4 -0
  88. package/dist/components/Space/Space.vue.d.ts +24 -0
  89. package/dist/components/Space/index.d.ts +4 -0
  90. package/dist/components/Statistic/Statistic.vue.d.ts +29 -0
  91. package/dist/components/Statistic/index.d.ts +4 -0
  92. package/dist/components/Steps/Steps.vue.d.ts +15 -0
  93. package/dist/components/Steps/index.d.ts +4 -0
  94. package/dist/components/Switch/Switch.vue.d.ts +16 -0
  95. package/dist/components/Switch/index.d.ts +4 -0
  96. package/dist/components/Table/Table.vue.d.ts +34 -0
  97. package/dist/components/Table/index.d.ts +4 -0
  98. package/dist/components/Tabs/Tabs.vue.d.ts +30 -0
  99. package/dist/components/Tabs/index.d.ts +4 -0
  100. package/dist/components/Tag/Tag.vue.d.ts +28 -0
  101. package/dist/components/Tag/index.d.ts +4 -0
  102. package/dist/components/Textarea/Textarea.vue.d.ts +20 -0
  103. package/dist/components/Textarea/index.d.ts +4 -0
  104. package/dist/components/Timeline/Timeline.vue.d.ts +13 -0
  105. package/dist/components/Timeline/index.d.ts +4 -0
  106. package/dist/components/Tooltip/Tooltip.vue.d.ts +24 -0
  107. package/dist/components/Tooltip/index.d.ts +4 -0
  108. package/dist/components/Transfer/Transfer.vue.d.ts +18 -0
  109. package/dist/components/Transfer/index.d.ts +4 -0
  110. package/dist/components/Tree/Tree.vue.d.ts +17 -0
  111. package/dist/components/Tree/index.d.ts +4 -0
  112. package/dist/components/Upload/Upload.vue.d.ts +55 -0
  113. package/dist/components/Upload/index.d.ts +4 -0
  114. package/dist/components/Watermark/Watermark.vue.d.ts +28 -0
  115. package/dist/components/Watermark/index.d.ts +4 -0
  116. package/dist/index.cjs +1 -0
  117. package/dist/index.d.ts +117 -0
  118. package/dist/index.js +2410 -0
  119. package/dist/styles/Alert.css +68 -0
  120. package/dist/styles/Avatar.css +31 -0
  121. package/dist/styles/Badge.css +49 -0
  122. package/dist/styles/Breadcrumb.css +28 -0
  123. package/dist/styles/Button.css +108 -0
  124. package/dist/styles/Calendar.css +79 -0
  125. package/dist/styles/Card.css +40 -0
  126. package/dist/styles/Carousel.css +87 -0
  127. package/dist/styles/Cascader.css +75 -0
  128. package/dist/styles/Checkbox.css +62 -0
  129. package/dist/styles/Collapse.css +49 -0
  130. package/dist/styles/ColorPicker.css +36 -0
  131. package/dist/styles/CountUp.css +4 -0
  132. package/dist/styles/DatePicker.css +33 -0
  133. package/dist/styles/Descriptions.css +44 -0
  134. package/dist/styles/Dialog.css +42 -0
  135. package/dist/styles/Divider.css +37 -0
  136. package/dist/styles/Drawer.css +81 -0
  137. package/dist/styles/Dropdown.css +40 -0
  138. package/dist/styles/Empty.css +24 -0
  139. package/dist/styles/Form.css +33 -0
  140. package/dist/styles/Grid.css +194 -0
  141. package/dist/styles/Icon.css +5 -0
  142. package/dist/styles/Input.css +79 -0
  143. package/dist/styles/InputNumber.css +40 -0
  144. package/dist/styles/InputPassword.css +42 -0
  145. package/dist/styles/List.css +29 -0
  146. package/dist/styles/Loading.css +27 -0
  147. package/dist/styles/Message.css +32 -0
  148. package/dist/styles/Notification.css +50 -0
  149. package/dist/styles/Pagination.css +57 -0
  150. package/dist/styles/Popconfirm.css +53 -0
  151. package/dist/styles/Popover.css +54 -0
  152. package/dist/styles/Progress.css +38 -0
  153. package/dist/styles/Radio.css +60 -0
  154. package/dist/styles/Rate.css +21 -0
  155. package/dist/styles/Result.css +41 -0
  156. package/dist/styles/Search.css +46 -0
  157. package/dist/styles/Segmented.css +32 -0
  158. package/dist/styles/Select.css +108 -0
  159. package/dist/styles/Skeleton.css +40 -0
  160. package/dist/styles/Slider.css +46 -0
  161. package/dist/styles/Space.css +27 -0
  162. package/dist/styles/Statistic.css +31 -0
  163. package/dist/styles/Steps.css +83 -0
  164. package/dist/styles/Switch.css +39 -0
  165. package/dist/styles/Table.css +43 -0
  166. package/dist/styles/Tabs.css +41 -0
  167. package/dist/styles/Tag.css +71 -0
  168. package/dist/styles/Textarea.css +43 -0
  169. package/dist/styles/Timeline.css +70 -0
  170. package/dist/styles/Tooltip.css +42 -0
  171. package/dist/styles/Transfer.css +64 -0
  172. package/dist/styles/Tree.css +50 -0
  173. package/dist/styles/Upload.css +66 -0
  174. package/dist/styles/Watermark.css +17 -0
  175. package/dist/styles/all.css +103 -0
  176. package/dist/styles/dark.css +10 -0
  177. package/dist/styles/index.css +2953 -0
  178. package/dist/styles/themes/amber.css +14 -0
  179. package/dist/styles/themes/aurora.css +15 -0
  180. package/dist/styles/themes/autumn.css +18 -0
  181. package/dist/styles/themes/business.css +20 -0
  182. package/dist/styles/themes/candy.css +21 -0
  183. package/dist/styles/themes/cartoon.css +31 -0
  184. package/dist/styles/themes/coffee.css +18 -0
  185. package/dist/styles/themes/cyber.css +37 -0
  186. package/dist/styles/themes/cyberpunk.css +32 -0
  187. package/dist/styles/themes/danqing.css +27 -0
  188. package/dist/styles/themes/flat.css +18 -0
  189. package/dist/styles/themes/forest.css +20 -0
  190. package/dist/styles/themes/gameboy.css +33 -0
  191. package/dist/styles/themes/glass.css +39 -0
  192. package/dist/styles/themes/gold.css +26 -0
  193. package/dist/styles/themes/gothic.css +20 -0
  194. package/dist/styles/themes/gradient.css +18 -0
  195. package/dist/styles/themes/ink.css +16 -0
  196. package/dist/styles/themes/lava.css +15 -0
  197. package/dist/styles/themes/macaron.css +27 -0
  198. package/dist/styles/themes/matcha.css +18 -0
  199. package/dist/styles/themes/memphis.css +25 -0
  200. package/dist/styles/themes/midnight.css +27 -0
  201. package/dist/styles/themes/minimal.css +36 -0
  202. package/dist/styles/themes/mint.css +20 -0
  203. package/dist/styles/themes/mono.css +36 -0
  204. package/dist/styles/themes/morandi.css +18 -0
  205. package/dist/styles/themes/neon.css +16 -0
  206. package/dist/styles/themes/neonlight.css +20 -0
  207. package/dist/styles/themes/ocean.css +20 -0
  208. package/dist/styles/themes/pastel.css +21 -0
  209. package/dist/styles/themes/pop.css +33 -0
  210. package/dist/styles/themes/retro.css +35 -0
  211. package/dist/styles/themes/rose.css +14 -0
  212. package/dist/styles/themes/rounded.css +18 -0
  213. package/dist/styles/themes/sakura.css +20 -0
  214. package/dist/styles/themes/sky.css +20 -0
  215. package/dist/styles/themes/spring.css +18 -0
  216. package/dist/styles/themes/starry.css +15 -0
  217. package/dist/styles/themes/sunset.css +18 -0
  218. package/dist/styles/themes/teal.css +14 -0
  219. package/dist/styles/themes/terminal.css +44 -0
  220. package/dist/styles/themes/vaporwave.css +27 -0
  221. package/dist/styles/themes/violet.css +14 -0
  222. package/dist/styles/themes/wabi.css +27 -0
  223. package/dist/styles/themes/winter.css +20 -0
  224. package/dist/styles/tokens.css +55 -0
  225. package/package.json +45 -0
@@ -0,0 +1,2953 @@
1
+ :root {
2
+ /* 品牌色 */
3
+ --kb-color-primary: #3b82f6;
4
+ --kb-color-success: #16a34a;
5
+ --kb-color-warning: #f59e0b;
6
+ --kb-color-danger: #dc2626;
7
+ --kb-color-info: #64748b;
8
+
9
+ /* 渐变变体(风格主题可覆盖,默认与实色一致) */
10
+ --kb-color-primary-gradient: linear-gradient(135deg, var(--kb-color-primary), var(--kb-color-primary));
11
+ --kb-color-success-gradient: linear-gradient(135deg, var(--kb-color-success), var(--kb-color-success));
12
+
13
+ /* 中性色 */
14
+ --kb-color-bg: #fff;
15
+ --kb-color-bg-elevated: #f8fafc;
16
+ --kb-color-border: #e2e8f0;
17
+ --kb-color-text-1: #0f172a;
18
+ --kb-color-text-2: #475569;
19
+ --kb-color-text-3: #94a3b8;
20
+
21
+ /* 圆角 */
22
+ --kb-radius-sm: 4px;
23
+ --kb-radius-md: 6px;
24
+ --kb-radius-lg: 10px;
25
+ --kb-radius-round: 999px;
26
+
27
+ /* 阴影 */
28
+ --kb-shadow-1: 0 1px 2px rgb(0 0 0 / 5%);
29
+ --kb-shadow-2: 0 4px 12px rgb(0 0 0 / 8%);
30
+
31
+ /* 字体 */
32
+ --kb-font-family:
33
+ -apple-system, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
34
+ --kb-font-size-xs: 12px;
35
+ --kb-font-size-sm: 13px;
36
+ --kb-font-size-md: 14px;
37
+ --kb-font-size-lg: 16px;
38
+ --kb-font-size-xl: 20px;
39
+
40
+ /* 间距(4px 基数) */
41
+ --kb-space-1: 4px;
42
+ --kb-space-2: 8px;
43
+ --kb-space-3: 12px;
44
+ --kb-space-4: 16px;
45
+ --kb-space-5: 20px;
46
+ --kb-space-6: 24px;
47
+
48
+ /* 过渡 */
49
+ --kb-transition-duration: 0.2s;
50
+ --kb-transition-timing: ease;
51
+
52
+ /* 层级 */
53
+ --kb-z-index-message: 2000;
54
+ --kb-z-index-modal: 1000;
55
+ }
56
+
57
+ [data-theme='dark'] {
58
+ --kb-color-bg: #0f172a;
59
+ --kb-color-bg-elevated: #1e293b;
60
+ --kb-color-border: #334155;
61
+ --kb-color-text-1: #f1f5f9;
62
+ --kb-color-text-2: #cbd5e1;
63
+ --kb-color-text-3: #64748b;
64
+ --kb-shadow-1: 0 1px 2px rgb(0 0 0 / 40%);
65
+ --kb-shadow-2: 0 4px 12px rgb(0 0 0 / 50%);
66
+ }
67
+
68
+ .kb-alert {
69
+ display: flex;
70
+ align-items: flex-start;
71
+ gap: var(--kb-space-2);
72
+ box-sizing: border-box;
73
+ padding: var(--kb-space-3) var(--kb-space-4);
74
+ border-radius: var(--kb-radius-md);
75
+ border: 1px solid transparent;
76
+ font-size: var(--kb-font-size-md);
77
+ }
78
+
79
+ .kb-alert--info {
80
+ border-color: color-mix(in srgb, var(--kb-color-info) 30%, transparent);
81
+ background: color-mix(in srgb, var(--kb-color-info) 8%, transparent);
82
+ color: var(--kb-color-info);
83
+ }
84
+
85
+ .kb-alert--success {
86
+ border-color: color-mix(in srgb, var(--kb-color-success) 30%, transparent);
87
+ background: color-mix(in srgb, var(--kb-color-success) 8%, transparent);
88
+ color: var(--kb-color-success);
89
+ }
90
+
91
+ .kb-alert--warning {
92
+ border-color: color-mix(in srgb, var(--kb-color-warning) 30%, transparent);
93
+ background: color-mix(in srgb, var(--kb-color-warning) 8%, transparent);
94
+ color: var(--kb-color-warning);
95
+ }
96
+
97
+ .kb-alert--danger {
98
+ border-color: color-mix(in srgb, var(--kb-color-danger) 30%, transparent);
99
+ background: color-mix(in srgb, var(--kb-color-danger) 8%, transparent);
100
+ color: var(--kb-color-danger);
101
+ }
102
+
103
+ .kb-alert__icon {
104
+ margin-top: 2px;
105
+ flex-shrink: 0;
106
+ }
107
+
108
+ .kb-alert__main {
109
+ flex: 1;
110
+ }
111
+
112
+ .kb-alert__title {
113
+ font-weight: 600;
114
+ color: var(--kb-color-text-1);
115
+ }
116
+
117
+ .kb-alert__content {
118
+ color: var(--kb-color-text-2);
119
+ line-height: 1.6;
120
+ }
121
+
122
+ .kb-alert__close {
123
+ padding: 0;
124
+ border: none;
125
+ background: transparent;
126
+ color: inherit;
127
+ font-size: var(--kb-font-size-lg);
128
+ line-height: 1;
129
+ cursor: pointer;
130
+ opacity: 0.7;
131
+ }
132
+
133
+ .kb-alert__close:hover {
134
+ opacity: 1;
135
+ }
136
+
137
+ .kb-avatar {
138
+ display: inline-flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ box-sizing: border-box;
142
+ overflow: hidden;
143
+ border-radius: var(--kb-radius-md);
144
+ background: var(--kb-color-bg-elevated);
145
+ color: var(--kb-color-text-2);
146
+ flex-shrink: 0;
147
+ }
148
+
149
+ .kb-avatar--round {
150
+ border-radius: var(--kb-radius-round);
151
+ }
152
+
153
+ .kb-avatar__img {
154
+ width: 100%;
155
+ height: 100%;
156
+ object-fit: cover;
157
+ }
158
+
159
+ .kb-avatar__fallback {
160
+ font-size: 0.5em;
161
+ line-height: 1;
162
+ }
163
+
164
+ .kb-avatar__icon {
165
+ width: 50%;
166
+ height: 50%;
167
+ }
168
+
169
+ .kb-badge {
170
+ position: relative;
171
+ display: inline-block;
172
+ vertical-align: middle;
173
+ }
174
+
175
+ .kb-badge--independent {
176
+ display: inline-flex;
177
+ }
178
+
179
+ .kb-badge__content {
180
+ display: inline-flex;
181
+ align-items: center;
182
+ justify-content: center;
183
+ box-sizing: border-box;
184
+ min-width: 18px;
185
+ height: 18px;
186
+ padding: 0 var(--kb-space-1);
187
+ border-radius: var(--kb-radius-round);
188
+ background: var(--kb-color-danger);
189
+ color: var(--kb-color-bg);
190
+ font-size: var(--kb-font-size-xs);
191
+ line-height: 1;
192
+ }
193
+
194
+ .kb-badge--independent .kb-badge__content {
195
+ position: static;
196
+ }
197
+
198
+ .kb-badge__content:not(.kb-badge--independent, .kb-badge__content--dot) {
199
+ position: absolute;
200
+ top: 0;
201
+ right: 0;
202
+ transform: translate(50%, -50%);
203
+ }
204
+
205
+ .kb-badge__content--dot {
206
+ width: 8px;
207
+ height: 8px;
208
+ min-width: 8px;
209
+ padding: 0;
210
+ }
211
+
212
+ .kb-badge__content--dot:not(.kb-badge--independent) {
213
+ position: absolute;
214
+ top: 0;
215
+ right: 0;
216
+ transform: translate(50%, -50%);
217
+ }
218
+
219
+ .kb-breadcrumb {
220
+ display: flex;
221
+ align-items: center;
222
+ flex-wrap: wrap;
223
+ gap: var(--kb-space-1);
224
+ font-size: var(--kb-font-size-md);
225
+ color: var(--kb-color-text-2);
226
+ }
227
+
228
+ .kb-breadcrumb__item a {
229
+ color: var(--kb-color-text-2);
230
+ text-decoration: none;
231
+ transition: color var(--kb-transition-duration) var(--kb-transition-timing);
232
+ }
233
+
234
+ .kb-breadcrumb__item a:hover {
235
+ color: var(--kb-color-primary);
236
+ }
237
+
238
+ .kb-breadcrumb__item--current {
239
+ color: var(--kb-color-text-1);
240
+ font-weight: 500;
241
+ }
242
+
243
+ .kb-breadcrumb__separator {
244
+ color: var(--kb-color-text-3);
245
+ margin: 0 var(--kb-space-1);
246
+ }
247
+
248
+ .kb-button {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ gap: var(--kb-space-1);
253
+ box-sizing: border-box;
254
+ border: 1px solid var(--kb-color-border);
255
+ border-radius: var(--kb-radius-md);
256
+ background: var(--kb-color-bg);
257
+ color: var(--kb-color-text-1);
258
+ font-family: var(--kb-font-family);
259
+ font-size: var(--kb-font-size-md);
260
+ line-height: 1;
261
+ cursor: pointer;
262
+ transition:
263
+ background var(--kb-transition-duration) var(--kb-transition-timing),
264
+ border-color var(--kb-transition-duration) var(--kb-transition-timing),
265
+ color var(--kb-transition-duration) var(--kb-transition-timing);
266
+ }
267
+
268
+ .kb-button:hover:not(.kb-button--disabled) {
269
+ border-color: var(--kb-color-primary);
270
+ color: var(--kb-color-primary);
271
+ }
272
+
273
+ .kb-button--disabled {
274
+ opacity: 0.55;
275
+ cursor: not-allowed;
276
+ }
277
+
278
+ .kb-button--round {
279
+ border-radius: var(--kb-radius-round);
280
+ }
281
+
282
+ .kb-button--small {
283
+ padding: var(--kb-space-1) var(--kb-space-2);
284
+ font-size: var(--kb-font-size-sm);
285
+ }
286
+
287
+ .kb-button--medium {
288
+ padding: var(--kb-space-2) var(--kb-space-4);
289
+ }
290
+
291
+ .kb-button--large {
292
+ padding: var(--kb-space-3) var(--kb-space-5);
293
+ font-size: var(--kb-font-size-lg);
294
+ }
295
+
296
+ .kb-button--primary {
297
+ border-color: var(--kb-color-primary);
298
+ background: var(--kb-color-primary-gradient);
299
+ color: var(--kb-color-bg);
300
+ }
301
+
302
+ .kb-button--primary:hover:not(.kb-button--disabled) {
303
+ border-color: var(--kb-color-primary);
304
+ color: var(--kb-color-bg);
305
+ filter: brightness(0.94);
306
+ }
307
+
308
+ .kb-button--success {
309
+ border-color: var(--kb-color-success);
310
+ background: var(--kb-color-success);
311
+ color: var(--kb-color-bg);
312
+ }
313
+
314
+ .kb-button--warning {
315
+ border-color: var(--kb-color-warning);
316
+ background: var(--kb-color-warning);
317
+ color: var(--kb-color-bg);
318
+ }
319
+
320
+ .kb-button--danger {
321
+ border-color: var(--kb-color-danger);
322
+ background: var(--kb-color-danger);
323
+ color: var(--kb-color-bg);
324
+ }
325
+
326
+ .kb-button--info {
327
+ border-color: var(--kb-color-info);
328
+ background: var(--kb-color-info);
329
+ color: var(--kb-color-bg);
330
+ }
331
+
332
+ .kb-button--plain.kb-button--primary {
333
+ background: var(--kb-color-bg);
334
+ color: var(--kb-color-primary);
335
+ }
336
+
337
+ .kb-button--plain.kb-button--success {
338
+ background: var(--kb-color-bg);
339
+ color: var(--kb-color-success);
340
+ }
341
+
342
+ .kb-button--plain.kb-button--warning {
343
+ background: var(--kb-color-bg);
344
+ color: var(--kb-color-warning);
345
+ }
346
+
347
+ .kb-button--plain.kb-button--danger {
348
+ background: var(--kb-color-bg);
349
+ color: var(--kb-color-danger);
350
+ }
351
+
352
+ .kb-button--plain.kb-button--info {
353
+ background: var(--kb-color-bg);
354
+ color: var(--kb-color-info);
355
+ }
356
+
357
+ .kb-calendar {
358
+ width: 100%;
359
+ box-sizing: border-box;
360
+ border: 1px solid var(--kb-color-border);
361
+ border-radius: var(--kb-radius-md);
362
+ padding: var(--kb-space-3);
363
+ background: var(--kb-color-bg);
364
+ }
365
+
366
+ .kb-calendar__header {
367
+ display: flex;
368
+ align-items: center;
369
+ justify-content: space-between;
370
+ margin-bottom: var(--kb-space-3);
371
+ }
372
+
373
+ .kb-calendar__title {
374
+ color: var(--kb-color-text-1);
375
+ font-size: var(--kb-font-size-lg);
376
+ font-weight: 600;
377
+ }
378
+
379
+ .kb-calendar__nav {
380
+ width: 28px;
381
+ height: 28px;
382
+ border: none;
383
+ border-radius: var(--kb-radius-sm);
384
+ background: transparent;
385
+ color: var(--kb-color-text-2);
386
+ font-size: 18px;
387
+ cursor: pointer;
388
+ }
389
+
390
+ .kb-calendar__nav:hover {
391
+ background: var(--kb-color-bg-elevated);
392
+ color: var(--kb-color-primary);
393
+ }
394
+
395
+ .kb-calendar__week {
396
+ display: grid;
397
+ grid-template-columns: repeat(7, 1fr);
398
+ margin-bottom: var(--kb-space-1);
399
+ }
400
+
401
+ .kb-calendar__week-label {
402
+ text-align: center;
403
+ color: var(--kb-color-text-3);
404
+ font-size: var(--kb-font-size-sm);
405
+ }
406
+
407
+ .kb-calendar__grid {
408
+ display: grid;
409
+ grid-template-columns: repeat(7, 1fr);
410
+ gap: 2px;
411
+ }
412
+
413
+ .kb-calendar__day {
414
+ aspect-ratio: 1;
415
+ border: none;
416
+ border-radius: var(--kb-radius-sm);
417
+ background: transparent;
418
+ color: var(--kb-color-text-1);
419
+ font-size: var(--kb-font-size-sm);
420
+ cursor: pointer;
421
+ }
422
+
423
+ .kb-calendar__day:hover:not(.kb-calendar__day--active) {
424
+ background: var(--kb-color-bg-elevated);
425
+ }
426
+
427
+ .kb-calendar__day--outside {
428
+ color: var(--kb-color-text-3);
429
+ opacity: 0.5;
430
+ }
431
+
432
+ .kb-calendar__day--active {
433
+ background: var(--kb-color-primary);
434
+ color: var(--kb-color-bg);
435
+ }
436
+
437
+ .kb-card {
438
+ box-sizing: border-box;
439
+ border: 1px solid var(--kb-color-border);
440
+ border-radius: var(--kb-radius-lg);
441
+ background: var(--kb-color-bg);
442
+ }
443
+
444
+ .kb-card--shadow-always {
445
+ box-shadow: var(--kb-shadow-2);
446
+ }
447
+
448
+ .kb-card--shadow-hover {
449
+ transition: box-shadow var(--kb-transition-duration) var(--kb-transition-timing);
450
+ }
451
+
452
+ .kb-card--shadow-hover:hover {
453
+ box-shadow: var(--kb-shadow-2);
454
+ }
455
+
456
+ .kb-card__header {
457
+ padding: var(--kb-space-3) var(--kb-space-4);
458
+ border-bottom: 1px solid var(--kb-color-border);
459
+ color: var(--kb-color-text-1);
460
+ font-size: var(--kb-font-size-lg);
461
+ font-weight: 600;
462
+ }
463
+
464
+ .kb-card__body {
465
+ padding: var(--kb-space-4);
466
+ color: var(--kb-color-text-2);
467
+ font-size: var(--kb-font-size-md);
468
+ line-height: 1.6;
469
+ }
470
+
471
+ .kb-card__footer {
472
+ display: flex;
473
+ justify-content: flex-end;
474
+ padding: var(--kb-space-3) var(--kb-space-4);
475
+ border-top: 1px solid var(--kb-color-border);
476
+ }
477
+
478
+ .kb-carousel {
479
+ position: relative;
480
+ overflow: hidden;
481
+ border-radius: var(--kb-radius-lg);
482
+ }
483
+
484
+ .kb-carousel__item {
485
+ position: absolute;
486
+ inset: 0;
487
+ display: flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ opacity: 0;
491
+ transition: opacity var(--kb-transition-duration) var(--kb-transition-timing);
492
+ background:
493
+ linear-gradient(135deg, color-mix(in srgb, var(--kb-color-primary) 18%, transparent), transparent),
494
+ var(--kb-color-bg-elevated);
495
+ }
496
+
497
+ .kb-carousel__item--active {
498
+ opacity: 1;
499
+ }
500
+
501
+ .kb-carousel__title {
502
+ color: var(--kb-color-text-1);
503
+ font-size: 22px;
504
+ font-weight: 600;
505
+ }
506
+
507
+ .kb-carousel__description {
508
+ margin-top: var(--kb-space-2);
509
+ color: var(--kb-color-text-3);
510
+ font-size: var(--kb-font-size-sm);
511
+ }
512
+
513
+ .kb-carousel__prev,
514
+ .kb-carousel__next {
515
+ position: absolute;
516
+ top: 50%;
517
+ transform: translateY(-50%);
518
+ width: 32px;
519
+ height: 32px;
520
+ border: none;
521
+ border-radius: 50%;
522
+ background: rgb(0 0 0 / 25%);
523
+ color: var(--kb-color-bg);
524
+ font-size: 18px;
525
+ cursor: pointer;
526
+ opacity: 0;
527
+ transition: opacity var(--kb-transition-duration) var(--kb-transition-timing);
528
+ }
529
+
530
+ .kb-carousel__prev {
531
+ left: var(--kb-space-3);
532
+ }
533
+
534
+ .kb-carousel__next {
535
+ right: var(--kb-space-3);
536
+ }
537
+
538
+ .kb-carousel:hover .kb-carousel__prev,
539
+ .kb-carousel:hover .kb-carousel__next {
540
+ opacity: 1;
541
+ }
542
+
543
+ .kb-carousel__dots {
544
+ position: absolute;
545
+ bottom: var(--kb-space-2);
546
+ left: 50%;
547
+ display: flex;
548
+ gap: var(--kb-space-1);
549
+ transform: translateX(-50%);
550
+ }
551
+
552
+ .kb-carousel__dot {
553
+ width: 8px;
554
+ height: 8px;
555
+ padding: 0;
556
+ border: none;
557
+ border-radius: var(--kb-radius-round);
558
+ background: rgb(255 255 255 / 50%);
559
+ cursor: pointer;
560
+ }
561
+
562
+ .kb-carousel__dot--active {
563
+ background: var(--kb-color-bg);
564
+ }
565
+
566
+ .kb-cascader {
567
+ position: relative;
568
+ display: inline-block;
569
+ }
570
+
571
+ .kb-cascader__trigger {
572
+ display: flex;
573
+ align-items: center;
574
+ justify-content: space-between;
575
+ min-width: 200px;
576
+ padding: var(--kb-space-2) var(--kb-space-3);
577
+ border: 1px solid var(--kb-color-border);
578
+ border-radius: var(--kb-radius-md);
579
+ background: var(--kb-color-bg);
580
+ color: var(--kb-color-text-1);
581
+ font-size: var(--kb-font-size-md);
582
+ cursor: pointer;
583
+ }
584
+
585
+ .kb-cascader__placeholder {
586
+ color: var(--kb-color-text-3);
587
+ }
588
+
589
+ .kb-cascader__arrow {
590
+ color: var(--kb-color-text-3);
591
+ font-size: 12px;
592
+ }
593
+
594
+ .kb-cascader__panel {
595
+ position: absolute;
596
+ top: calc(100% + 4px);
597
+ left: 0;
598
+ z-index: var(--kb-z-index-modal);
599
+ display: flex;
600
+ border: 1px solid var(--kb-color-border);
601
+ border-radius: var(--kb-radius-md);
602
+ background: var(--kb-color-bg);
603
+ box-shadow: var(--kb-shadow-2);
604
+ }
605
+
606
+ .kb-cascader__column {
607
+ min-width: 140px;
608
+ max-height: 240px;
609
+ overflow-y: auto;
610
+ padding: var(--kb-space-1);
611
+ }
612
+
613
+ .kb-cascader__column + .kb-cascader__column {
614
+ border-left: 1px solid var(--kb-color-border);
615
+ }
616
+
617
+ .kb-cascader__option {
618
+ display: flex;
619
+ align-items: center;
620
+ justify-content: space-between;
621
+ padding: var(--kb-space-2) var(--kb-space-3);
622
+ border-radius: var(--kb-radius-sm);
623
+ color: var(--kb-color-text-1);
624
+ font-size: var(--kb-font-size-md);
625
+ cursor: pointer;
626
+ white-space: nowrap;
627
+ }
628
+
629
+ .kb-cascader__option:hover {
630
+ background: var(--kb-color-bg-elevated);
631
+ }
632
+
633
+ .kb-cascader__option--active {
634
+ color: var(--kb-color-primary);
635
+ font-weight: 500;
636
+ }
637
+
638
+ .kb-cascader__more {
639
+ color: var(--kb-color-text-3);
640
+ }
641
+
642
+ .kb-checkbox {
643
+ display: inline-flex;
644
+ align-items: center;
645
+ gap: var(--kb-space-1);
646
+ cursor: pointer;
647
+ color: var(--kb-color-text-1);
648
+ font-size: var(--kb-font-size-md);
649
+ user-select: none;
650
+ }
651
+
652
+ .kb-checkbox--disabled {
653
+ cursor: not-allowed;
654
+ opacity: 0.55;
655
+ }
656
+
657
+ .kb-checkbox__input {
658
+ position: absolute;
659
+ opacity: 0;
660
+ width: 0;
661
+ height: 0;
662
+ }
663
+
664
+ .kb-checkbox__inner {
665
+ position: relative;
666
+ display: inline-block;
667
+ width: 16px;
668
+ height: 16px;
669
+ box-sizing: border-box;
670
+ border: 1px solid var(--kb-color-border);
671
+ border-radius: var(--kb-radius-sm);
672
+ background: var(--kb-color-bg);
673
+ transition:
674
+ background var(--kb-transition-duration) var(--kb-transition-timing),
675
+ border-color var(--kb-transition-duration) var(--kb-transition-timing);
676
+ }
677
+
678
+ .kb-checkbox__inner::after {
679
+ content: '';
680
+ position: absolute;
681
+ top: 2px;
682
+ left: 5px;
683
+ width: 4px;
684
+ height: 8px;
685
+ border: 2px solid var(--kb-color-bg);
686
+ border-top: none;
687
+ border-left: none;
688
+ transform: rotate(45deg) scale(0);
689
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
690
+ }
691
+
692
+ .kb-checkbox--checked .kb-checkbox__inner {
693
+ border-color: var(--kb-color-primary);
694
+ background: var(--kb-color-primary);
695
+ }
696
+
697
+ .kb-checkbox--checked .kb-checkbox__inner::after {
698
+ transform: rotate(45deg) scale(1);
699
+ }
700
+
701
+ .kb-checkbox__label {
702
+ line-height: 1;
703
+ }
704
+
705
+ .kb-collapse {
706
+ border: 1px solid var(--kb-color-border);
707
+ border-radius: var(--kb-radius-md);
708
+ overflow: hidden;
709
+ }
710
+
711
+ .kb-collapse__panel + .kb-collapse__panel {
712
+ border-top: 1px solid var(--kb-color-border);
713
+ }
714
+
715
+ .kb-collapse__header {
716
+ display: flex;
717
+ align-items: center;
718
+ justify-content: space-between;
719
+ padding: var(--kb-space-3) var(--kb-space-4);
720
+ background: var(--kb-color-bg);
721
+ color: var(--kb-color-text-1);
722
+ font-size: var(--kb-font-size-md);
723
+ cursor: pointer;
724
+ user-select: none;
725
+ transition: background var(--kb-transition-duration) var(--kb-transition-timing);
726
+ }
727
+
728
+ .kb-collapse__header:hover:not(.kb-collapse__header--disabled) {
729
+ background: var(--kb-color-bg-elevated);
730
+ }
731
+
732
+ .kb-collapse__header--disabled {
733
+ cursor: not-allowed;
734
+ opacity: 0.55;
735
+ }
736
+
737
+ .kb-collapse__arrow {
738
+ color: var(--kb-color-text-3);
739
+ font-size: 12px;
740
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
741
+ }
742
+
743
+ .kb-collapse__arrow--open {
744
+ transform: rotate(180deg);
745
+ }
746
+
747
+ .kb-collapse__content {
748
+ padding: var(--kb-space-3) var(--kb-space-4);
749
+ color: var(--kb-color-text-2);
750
+ font-size: var(--kb-font-size-md);
751
+ line-height: 1.6;
752
+ background: var(--kb-color-bg-elevated);
753
+ }
754
+
755
+ .kb-colorpicker {
756
+ display: flex;
757
+ align-items: center;
758
+ gap: var(--kb-space-3);
759
+ }
760
+
761
+ .kb-colorpicker__value {
762
+ width: 28px;
763
+ height: 28px;
764
+ border: 1px solid var(--kb-color-border);
765
+ border-radius: var(--kb-radius-sm);
766
+ flex-shrink: 0;
767
+ }
768
+
769
+ .kb-colorpicker__presets {
770
+ display: flex;
771
+ flex-wrap: wrap;
772
+ gap: var(--kb-space-1);
773
+ }
774
+
775
+ .kb-colorpicker__swatch {
776
+ width: 22px;
777
+ height: 22px;
778
+ padding: 0;
779
+ border: 2px solid transparent;
780
+ border-radius: var(--kb-radius-sm);
781
+ cursor: pointer;
782
+ }
783
+
784
+ .kb-colorpicker__swatch--active {
785
+ border-color: var(--kb-color-text-1);
786
+ }
787
+
788
+ .kb-colorpicker__swatch:hover {
789
+ transform: scale(1.1);
790
+ }
791
+
792
+ .kb-countup {
793
+ font-variant-numeric: tabular-nums;
794
+ color: var(--kb-color-text-1);
795
+ }
796
+
797
+ .kb-datepicker {
798
+ position: relative;
799
+ display: inline-block;
800
+ }
801
+
802
+ .kb-datepicker__input {
803
+ width: 180px;
804
+ box-sizing: border-box;
805
+ padding: var(--kb-space-2) var(--kb-space-3);
806
+ border: 1px solid var(--kb-color-border);
807
+ border-radius: var(--kb-radius-md);
808
+ outline: none;
809
+ background: var(--kb-color-bg);
810
+ color: var(--kb-color-text-1);
811
+ font-size: var(--kb-font-size-md);
812
+ cursor: pointer;
813
+ transition: border-color var(--kb-transition-duration) var(--kb-transition-timing);
814
+ }
815
+
816
+ .kb-datepicker__input:focus {
817
+ border-color: var(--kb-color-primary);
818
+ }
819
+
820
+ .kb-datepicker__panel {
821
+ position: absolute;
822
+ top: calc(100% + 4px);
823
+ left: 0;
824
+ z-index: var(--kb-z-index-modal);
825
+ width: 300px;
826
+ background: var(--kb-color-bg);
827
+ border-radius: var(--kb-radius-md);
828
+ box-shadow: var(--kb-shadow-2);
829
+ }
830
+
831
+ .kb-descriptions__title {
832
+ margin-bottom: var(--kb-space-2);
833
+ color: var(--kb-color-text-1);
834
+ font-size: var(--kb-font-size-lg);
835
+ font-weight: 600;
836
+ }
837
+
838
+ .kb-descriptions__grid {
839
+ display: grid;
840
+ gap: var(--kb-space-3);
841
+ }
842
+
843
+ .kb-descriptions__item {
844
+ display: flex;
845
+ gap: var(--kb-space-3);
846
+ }
847
+
848
+ .kb-descriptions--border .kb-descriptions__item {
849
+ border: 1px solid var(--kb-color-border);
850
+ border-radius: var(--kb-radius-sm);
851
+ overflow: hidden;
852
+ }
853
+
854
+ .kb-descriptions__label {
855
+ min-width: 80px;
856
+ color: var(--kb-color-text-3);
857
+ font-size: var(--kb-font-size-sm);
858
+ }
859
+
860
+ .kb-descriptions__value {
861
+ color: var(--kb-color-text-1);
862
+ font-size: var(--kb-font-size-md);
863
+ }
864
+
865
+ .kb-descriptions--border .kb-descriptions__label {
866
+ display: flex;
867
+ align-items: center;
868
+ padding: var(--kb-space-2) var(--kb-space-3);
869
+ background: var(--kb-color-bg-elevated);
870
+ }
871
+
872
+ .kb-descriptions--border .kb-descriptions__value {
873
+ padding: var(--kb-space-2) var(--kb-space-3);
874
+ }
875
+
876
+ .kb-dialog-overlay {
877
+ position: fixed;
878
+ inset: 0;
879
+ z-index: var(--kb-z-index-modal);
880
+ display: flex;
881
+ align-items: center;
882
+ justify-content: center;
883
+ background: rgb(0 0 0 / 50%);
884
+ }
885
+
886
+ .kb-dialog {
887
+ box-sizing: border-box;
888
+ max-width: 90vw;
889
+ max-height: 90vh;
890
+ overflow-y: auto;
891
+ border-radius: var(--kb-radius-lg);
892
+ background: var(--kb-color-bg);
893
+ box-shadow: var(--kb-shadow-2);
894
+ }
895
+
896
+ .kb-dialog__header {
897
+ padding: var(--kb-space-4) var(--kb-space-5);
898
+ border-bottom: 1px solid var(--kb-color-border);
899
+ font-size: var(--kb-font-size-lg);
900
+ font-weight: 600;
901
+ color: var(--kb-color-text-1);
902
+ }
903
+
904
+ .kb-dialog__body {
905
+ padding: var(--kb-space-4) var(--kb-space-5);
906
+ color: var(--kb-color-text-2);
907
+ font-size: var(--kb-font-size-md);
908
+ line-height: 1.6;
909
+ }
910
+
911
+ .kb-dialog__footer {
912
+ display: flex;
913
+ justify-content: flex-end;
914
+ gap: var(--kb-space-2);
915
+ padding: var(--kb-space-3) var(--kb-space-5);
916
+ border-top: 1px solid var(--kb-color-border);
917
+ }
918
+
919
+ .kb-divider {
920
+ display: flex;
921
+ align-items: center;
922
+ gap: var(--kb-space-2);
923
+ margin: var(--kb-space-4) 0;
924
+ }
925
+
926
+ .kb-divider--vertical {
927
+ display: inline-block;
928
+ width: 1px;
929
+ height: 1em;
930
+ margin: 0 var(--kb-space-2);
931
+ background: var(--kb-color-border);
932
+ vertical-align: middle;
933
+ }
934
+
935
+ .kb-divider::before,
936
+ .kb-divider::after {
937
+ content: '';
938
+ flex: 1;
939
+ height: 1px;
940
+ background: var(--kb-color-border);
941
+ }
942
+
943
+ .kb-divider--content-left::before {
944
+ flex: 0.06;
945
+ }
946
+
947
+ .kb-divider--content-right::after {
948
+ flex: 0.06;
949
+ }
950
+
951
+ .kb-divider__text {
952
+ color: var(--kb-color-text-2);
953
+ font-size: var(--kb-font-size-md);
954
+ white-space: nowrap;
955
+ }
956
+
957
+ .kb-drawer-overlay {
958
+ position: fixed;
959
+ inset: 0;
960
+ z-index: var(--kb-z-index-modal);
961
+ background: rgb(0 0 0 / 50%);
962
+ }
963
+
964
+ .kb-drawer {
965
+ position: fixed;
966
+ z-index: var(--kb-z-index-modal);
967
+ display: flex;
968
+ flex-direction: column;
969
+ box-sizing: border-box;
970
+ background: var(--kb-color-bg);
971
+ box-shadow: var(--kb-shadow-2);
972
+ }
973
+
974
+ .kb-drawer--left {
975
+ top: 0;
976
+ bottom: 0;
977
+ left: 0;
978
+ }
979
+
980
+ .kb-drawer--right {
981
+ top: 0;
982
+ bottom: 0;
983
+ right: 0;
984
+ }
985
+
986
+ .kb-drawer--top {
987
+ top: 0;
988
+ left: 0;
989
+ right: 0;
990
+ }
991
+
992
+ .kb-drawer--bottom {
993
+ bottom: 0;
994
+ left: 0;
995
+ right: 0;
996
+ }
997
+
998
+ .kb-drawer__header {
999
+ display: flex;
1000
+ align-items: center;
1001
+ justify-content: space-between;
1002
+ padding: var(--kb-space-4);
1003
+ border-bottom: 1px solid var(--kb-color-border);
1004
+ color: var(--kb-color-text-1);
1005
+ font-size: var(--kb-font-size-lg);
1006
+ font-weight: 600;
1007
+ }
1008
+
1009
+ .kb-drawer__close {
1010
+ padding: 0;
1011
+ border: none;
1012
+ background: transparent;
1013
+ color: var(--kb-color-text-3);
1014
+ font-size: var(--kb-font-size-xl);
1015
+ cursor: pointer;
1016
+ }
1017
+
1018
+ .kb-drawer__close:hover {
1019
+ color: var(--kb-color-text-1);
1020
+ }
1021
+
1022
+ .kb-drawer__body {
1023
+ flex: 1;
1024
+ overflow-y: auto;
1025
+ padding: var(--kb-space-4);
1026
+ color: var(--kb-color-text-2);
1027
+ font-size: var(--kb-font-size-md);
1028
+ line-height: 1.6;
1029
+ }
1030
+
1031
+ .kb-drawer__footer {
1032
+ display: flex;
1033
+ justify-content: flex-end;
1034
+ gap: var(--kb-space-2);
1035
+ padding: var(--kb-space-3) var(--kb-space-4);
1036
+ border-top: 1px solid var(--kb-color-border);
1037
+ }
1038
+
1039
+ .kb-dropdown {
1040
+ position: relative;
1041
+ display: inline-block;
1042
+ }
1043
+
1044
+ .kb-dropdown__menu {
1045
+ position: absolute;
1046
+ top: calc(100% + 4px);
1047
+ left: 0;
1048
+ z-index: var(--kb-z-index-modal);
1049
+ min-width: 120px;
1050
+ box-sizing: border-box;
1051
+ padding: var(--kb-space-1);
1052
+ border: 1px solid var(--kb-color-border);
1053
+ border-radius: var(--kb-radius-md);
1054
+ background: var(--kb-color-bg);
1055
+ box-shadow: var(--kb-shadow-2);
1056
+ }
1057
+
1058
+ .kb-dropdown__item {
1059
+ padding: var(--kb-space-2) var(--kb-space-3);
1060
+ border-radius: var(--kb-radius-sm);
1061
+ color: var(--kb-color-text-1);
1062
+ font-size: var(--kb-font-size-md);
1063
+ cursor: pointer;
1064
+ white-space: nowrap;
1065
+ }
1066
+
1067
+ .kb-dropdown__item:hover:not(.kb-dropdown__item--disabled) {
1068
+ background: var(--kb-color-bg-elevated);
1069
+ }
1070
+
1071
+ .kb-dropdown__item--disabled {
1072
+ cursor: not-allowed;
1073
+ opacity: 0.55;
1074
+ }
1075
+
1076
+ .kb-dropdown__item--danger {
1077
+ color: var(--kb-color-danger);
1078
+ }
1079
+
1080
+ .kb-empty {
1081
+ display: flex;
1082
+ flex-direction: column;
1083
+ align-items: center;
1084
+ justify-content: center;
1085
+ gap: var(--kb-space-2);
1086
+ padding: var(--kb-space-6);
1087
+ color: var(--kb-color-text-3);
1088
+ }
1089
+
1090
+ .kb-empty__image {
1091
+ color: var(--kb-color-text-3);
1092
+ opacity: 0.5;
1093
+ }
1094
+
1095
+ .kb-empty__description {
1096
+ margin: 0;
1097
+ font-size: var(--kb-font-size-md);
1098
+ color: var(--kb-color-text-3);
1099
+ }
1100
+
1101
+ .kb-empty__action {
1102
+ margin-top: var(--kb-space-2);
1103
+ }
1104
+
1105
+ .kb-form {
1106
+ width: 100%;
1107
+ }
1108
+
1109
+ .kb-form-item {
1110
+ display: flex;
1111
+ align-items: flex-start;
1112
+ gap: var(--kb-space-2);
1113
+ margin-bottom: var(--kb-space-4);
1114
+ }
1115
+
1116
+ .kb-form-item__label {
1117
+ flex-shrink: 0;
1118
+ padding-top: 8px;
1119
+ color: var(--kb-color-text-2);
1120
+ font-size: var(--kb-font-size-sm);
1121
+ }
1122
+
1123
+ .kb-form-item__content {
1124
+ flex: 1;
1125
+ }
1126
+
1127
+ .kb-form-item__error {
1128
+ margin-top: var(--kb-space-1);
1129
+ color: var(--kb-color-danger);
1130
+ font-size: var(--kb-font-size-xs);
1131
+ line-height: 1.4;
1132
+ }
1133
+
1134
+ .kb-form-item--error .kb-input,
1135
+ .kb-form-item--error .kb-textarea__inner {
1136
+ border-color: var(--kb-color-danger);
1137
+ }
1138
+
1139
+ .kb-row {
1140
+ display: flex;
1141
+ flex-wrap: wrap;
1142
+ box-sizing: border-box;
1143
+ }
1144
+
1145
+ .kb-row--start {
1146
+ justify-content: flex-start;
1147
+ }
1148
+
1149
+ .kb-row--center {
1150
+ justify-content: center;
1151
+ }
1152
+
1153
+ .kb-row--end {
1154
+ justify-content: flex-end;
1155
+ }
1156
+
1157
+ .kb-row--space-between {
1158
+ justify-content: space-between;
1159
+ }
1160
+
1161
+ .kb-row--space-around {
1162
+ justify-content: space-around;
1163
+ }
1164
+
1165
+ .kb-row--align-top {
1166
+ align-items: flex-start;
1167
+ }
1168
+
1169
+ .kb-row--align-middle {
1170
+ align-items: center;
1171
+ }
1172
+
1173
+ .kb-row--align-bottom {
1174
+ align-items: flex-end;
1175
+ }
1176
+
1177
+ .kb-col {
1178
+ box-sizing: border-box;
1179
+ flex: 0 0 auto;
1180
+ }
1181
+
1182
+ .kb-col-0 {
1183
+ display: none;
1184
+ }
1185
+
1186
+ .kb-col-1 {
1187
+ flex-basis: 4.1667%;
1188
+ max-width: 4.1667%;
1189
+ }
1190
+
1191
+ .kb-col-2 {
1192
+ flex-basis: 8.3333%;
1193
+ max-width: 8.3333%;
1194
+ }
1195
+
1196
+ .kb-col-3 {
1197
+ flex-basis: 12.5%;
1198
+ max-width: 12.5%;
1199
+ }
1200
+
1201
+ .kb-col-4 {
1202
+ flex-basis: 16.6667%;
1203
+ max-width: 16.6667%;
1204
+ }
1205
+
1206
+ .kb-col-5 {
1207
+ flex-basis: 20.8333%;
1208
+ max-width: 20.8333%;
1209
+ }
1210
+
1211
+ .kb-col-6 {
1212
+ flex-basis: 25%;
1213
+ max-width: 25%;
1214
+ }
1215
+
1216
+ .kb-col-7 {
1217
+ flex-basis: 29.1667%;
1218
+ max-width: 29.1667%;
1219
+ }
1220
+
1221
+ .kb-col-8 {
1222
+ flex-basis: 33.3333%;
1223
+ max-width: 33.3333%;
1224
+ }
1225
+
1226
+ .kb-col-9 {
1227
+ flex-basis: 37.5%;
1228
+ max-width: 37.5%;
1229
+ }
1230
+
1231
+ .kb-col-10 {
1232
+ flex-basis: 41.6667%;
1233
+ max-width: 41.6667%;
1234
+ }
1235
+
1236
+ .kb-col-11 {
1237
+ flex-basis: 45.8333%;
1238
+ max-width: 45.8333%;
1239
+ }
1240
+
1241
+ .kb-col-12 {
1242
+ flex-basis: 50%;
1243
+ max-width: 50%;
1244
+ }
1245
+
1246
+ .kb-col-13 {
1247
+ flex-basis: 54.1667%;
1248
+ max-width: 54.1667%;
1249
+ }
1250
+
1251
+ .kb-col-14 {
1252
+ flex-basis: 58.3333%;
1253
+ max-width: 58.3333%;
1254
+ }
1255
+
1256
+ .kb-col-15 {
1257
+ flex-basis: 62.5%;
1258
+ max-width: 62.5%;
1259
+ }
1260
+
1261
+ .kb-col-16 {
1262
+ flex-basis: 66.6667%;
1263
+ max-width: 66.6667%;
1264
+ }
1265
+
1266
+ .kb-col-17 {
1267
+ flex-basis: 70.8333%;
1268
+ max-width: 70.8333%;
1269
+ }
1270
+
1271
+ .kb-col-18 {
1272
+ flex-basis: 75%;
1273
+ max-width: 75%;
1274
+ }
1275
+
1276
+ .kb-col-19 {
1277
+ flex-basis: 79.1667%;
1278
+ max-width: 79.1667%;
1279
+ }
1280
+
1281
+ .kb-col-20 {
1282
+ flex-basis: 83.3333%;
1283
+ max-width: 83.3333%;
1284
+ }
1285
+
1286
+ .kb-col-21 {
1287
+ flex-basis: 87.5%;
1288
+ max-width: 87.5%;
1289
+ }
1290
+
1291
+ .kb-col-22 {
1292
+ flex-basis: 91.6667%;
1293
+ max-width: 91.6667%;
1294
+ }
1295
+
1296
+ .kb-col-23 {
1297
+ flex-basis: 95.8333%;
1298
+ max-width: 95.8333%;
1299
+ }
1300
+
1301
+ .kb-col-24 {
1302
+ flex-basis: 100%;
1303
+ max-width: 100%;
1304
+ }
1305
+
1306
+ .kb-col-offset-1 {
1307
+ margin-left: 4.1667%;
1308
+ }
1309
+
1310
+ .kb-col-offset-2 {
1311
+ margin-left: 8.3333%;
1312
+ }
1313
+
1314
+ .kb-col-offset-3 {
1315
+ margin-left: 12.5%;
1316
+ }
1317
+
1318
+ .kb-col-offset-4 {
1319
+ margin-left: 16.6667%;
1320
+ }
1321
+
1322
+ .kb-col-offset-6 {
1323
+ margin-left: 25%;
1324
+ }
1325
+
1326
+ .kb-col-offset-8 {
1327
+ margin-left: 33.3333%;
1328
+ }
1329
+
1330
+ .kb-col-offset-12 {
1331
+ margin-left: 50%;
1332
+ }
1333
+
1334
+ .kb-icon {
1335
+ display: inline-block;
1336
+ vertical-align: -0.125em;
1337
+ flex-shrink: 0;
1338
+ }
1339
+
1340
+ .kb-input {
1341
+ display: inline-flex;
1342
+ align-items: center;
1343
+ box-sizing: border-box;
1344
+ border: 1px solid var(--kb-color-border);
1345
+ border-radius: var(--kb-radius-md);
1346
+ background: var(--kb-color-bg);
1347
+ transition:
1348
+ border-color var(--kb-transition-duration) var(--kb-transition-timing),
1349
+ box-shadow var(--kb-transition-duration) var(--kb-transition-timing);
1350
+ }
1351
+
1352
+ .kb-input:hover:not(.kb-input--disabled) {
1353
+ border-color: var(--kb-color-text-3);
1354
+ }
1355
+
1356
+ .kb-input--focused {
1357
+ border-color: var(--kb-color-primary);
1358
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--kb-color-primary) 15%, transparent);
1359
+ }
1360
+
1361
+ .kb-input--disabled {
1362
+ background: var(--kb-color-bg-elevated);
1363
+ cursor: not-allowed;
1364
+ }
1365
+
1366
+ .kb-input--small {
1367
+ height: 28px;
1368
+ }
1369
+
1370
+ .kb-input--medium {
1371
+ height: 34px;
1372
+ }
1373
+
1374
+ .kb-input--large {
1375
+ height: 40px;
1376
+ }
1377
+
1378
+ .kb-input__inner {
1379
+ flex: 1;
1380
+ min-width: 0;
1381
+ padding: 0 var(--kb-space-3);
1382
+ border: none;
1383
+ outline: none;
1384
+ background: transparent;
1385
+ color: var(--kb-color-text-1);
1386
+ font-family: var(--kb-font-family);
1387
+ font-size: var(--kb-font-size-md);
1388
+ }
1389
+
1390
+ .kb-input__inner::placeholder {
1391
+ color: var(--kb-color-text-3);
1392
+ }
1393
+
1394
+ .kb-input--disabled .kb-input__inner {
1395
+ cursor: not-allowed;
1396
+ color: var(--kb-color-text-3);
1397
+ }
1398
+
1399
+ .kb-input__clear {
1400
+ display: inline-flex;
1401
+ align-items: center;
1402
+ justify-content: center;
1403
+ width: 20px;
1404
+ height: 20px;
1405
+ margin-right: var(--kb-space-1);
1406
+ padding: 0;
1407
+ border: none;
1408
+ border-radius: 50%;
1409
+ background: var(--kb-color-bg-elevated);
1410
+ color: var(--kb-color-text-2);
1411
+ font-size: 13px;
1412
+ line-height: 1;
1413
+ cursor: pointer;
1414
+ }
1415
+
1416
+ .kb-input__clear:hover {
1417
+ color: var(--kb-color-text-1);
1418
+ }
1419
+
1420
+ .kb-input-number {
1421
+ display: inline-flex;
1422
+ align-items: center;
1423
+ border: 1px solid var(--kb-color-border);
1424
+ border-radius: var(--kb-radius-md);
1425
+ overflow: hidden;
1426
+ background: var(--kb-color-bg);
1427
+ }
1428
+
1429
+ .kb-input-number__input {
1430
+ width: 48px;
1431
+ padding: 0;
1432
+ border: none;
1433
+ outline: none;
1434
+ text-align: center;
1435
+ color: var(--kb-color-text-1);
1436
+ font-size: var(--kb-font-size-md);
1437
+ background: transparent;
1438
+ }
1439
+
1440
+ .kb-input-number__step {
1441
+ width: 28px;
1442
+ height: 32px;
1443
+ padding: 0;
1444
+ border: none;
1445
+ background: var(--kb-color-bg-elevated);
1446
+ color: var(--kb-color-text-2);
1447
+ font-size: 16px;
1448
+ cursor: pointer;
1449
+ }
1450
+
1451
+ .kb-input-number__step:disabled,
1452
+ .kb-input-number--disabled {
1453
+ cursor: not-allowed;
1454
+ opacity: 0.55;
1455
+ }
1456
+
1457
+ .kb-input-number__step:hover:not(:disabled) {
1458
+ color: var(--kb-color-primary);
1459
+ }
1460
+
1461
+ .kb-input-password {
1462
+ display: inline-flex;
1463
+ align-items: center;
1464
+ border: 1px solid var(--kb-color-border);
1465
+ border-radius: var(--kb-radius-md);
1466
+ background: var(--kb-color-bg);
1467
+ overflow: hidden;
1468
+ transition: border-color var(--kb-transition-duration) var(--kb-transition-timing);
1469
+ }
1470
+
1471
+ .kb-input-password:focus-within {
1472
+ border-color: var(--kb-color-primary);
1473
+ }
1474
+
1475
+ .kb-input-password__inner {
1476
+ flex: 1;
1477
+ min-width: 0;
1478
+ padding: var(--kb-space-2) var(--kb-space-3);
1479
+ border: none;
1480
+ outline: none;
1481
+ background: transparent;
1482
+ color: var(--kb-color-text-1);
1483
+ font-size: var(--kb-font-size-md);
1484
+ }
1485
+
1486
+ .kb-input-password__toggle {
1487
+ display: inline-flex;
1488
+ align-items: center;
1489
+ justify-content: center;
1490
+ width: 32px;
1491
+ height: 32px;
1492
+ margin-right: var(--kb-space-1);
1493
+ padding: 0;
1494
+ border: none;
1495
+ background: transparent;
1496
+ color: var(--kb-color-text-3);
1497
+ cursor: pointer;
1498
+ }
1499
+
1500
+ .kb-input-password__toggle:hover {
1501
+ color: var(--kb-color-primary);
1502
+ }
1503
+
1504
+ .kb-list {
1505
+ width: 100%;
1506
+ }
1507
+
1508
+ .kb-list__item {
1509
+ padding: var(--kb-space-3) var(--kb-space-2);
1510
+ color: var(--kb-color-text-1);
1511
+ font-size: var(--kb-font-size-md);
1512
+ transition: background var(--kb-transition-duration) var(--kb-transition-timing);
1513
+ }
1514
+
1515
+ .kb-list__item:hover {
1516
+ background: var(--kb-color-bg-elevated);
1517
+ }
1518
+
1519
+ .kb-list--bordered .kb-list__item {
1520
+ border-bottom: 1px solid var(--kb-color-border);
1521
+ }
1522
+
1523
+ .kb-list--bordered .kb-list__item:last-child {
1524
+ border-bottom: none;
1525
+ }
1526
+
1527
+ .kb-list__empty {
1528
+ padding: var(--kb-space-5);
1529
+ text-align: center;
1530
+ color: var(--kb-color-text-3);
1531
+ font-size: var(--kb-font-size-sm);
1532
+ }
1533
+
1534
+ .kb-loading {
1535
+ display: inline-flex;
1536
+ flex-direction: column;
1537
+ align-items: center;
1538
+ gap: var(--kb-space-2);
1539
+ }
1540
+
1541
+ .kb-loading__spinner {
1542
+ display: inline-block;
1543
+ box-sizing: border-box;
1544
+ border-style: solid;
1545
+ border-color: var(--kb-color-primary);
1546
+ border-top-color: transparent;
1547
+ border-radius: 50%;
1548
+ animation: kb-loading-spin 0.8s linear infinite;
1549
+ }
1550
+
1551
+ .kb-loading__text {
1552
+ color: var(--kb-color-text-3);
1553
+ font-size: var(--kb-font-size-sm);
1554
+ }
1555
+
1556
+ @keyframes kb-loading-spin {
1557
+ to {
1558
+ transform: rotate(360deg);
1559
+ }
1560
+ }
1561
+
1562
+ .kb-message {
1563
+ display: flex;
1564
+ align-items: center;
1565
+ gap: var(--kb-space-2);
1566
+ padding: var(--kb-space-2) var(--kb-space-4);
1567
+ border-radius: var(--kb-radius-md);
1568
+ background: var(--kb-color-bg);
1569
+ box-shadow: var(--kb-shadow-2);
1570
+ font-size: var(--kb-font-size-md);
1571
+ color: var(--kb-color-text-1);
1572
+ }
1573
+
1574
+ .kb-message--success {
1575
+ color: var(--kb-color-success);
1576
+ }
1577
+
1578
+ .kb-message--error {
1579
+ color: var(--kb-color-danger);
1580
+ }
1581
+
1582
+ .kb-message--warning {
1583
+ color: var(--kb-color-warning);
1584
+ }
1585
+
1586
+ .kb-message--info {
1587
+ color: var(--kb-color-info);
1588
+ }
1589
+
1590
+ .kb-message__content {
1591
+ color: var(--kb-color-text-1);
1592
+ line-height: 1.5;
1593
+ }
1594
+
1595
+ .kb-notification {
1596
+ display: flex;
1597
+ align-items: flex-start;
1598
+ gap: var(--kb-space-2);
1599
+ width: 320px;
1600
+ box-sizing: border-box;
1601
+ padding: var(--kb-space-3) var(--kb-space-4);
1602
+ border: 1px solid var(--kb-color-border);
1603
+ border-radius: var(--kb-radius-md);
1604
+ background: var(--kb-color-bg);
1605
+ box-shadow: var(--kb-shadow-2);
1606
+ }
1607
+
1608
+ .kb-notification__icon {
1609
+ margin-top: 2px;
1610
+ flex-shrink: 0;
1611
+ }
1612
+
1613
+ .kb-notification--success .kb-notification__icon {
1614
+ color: var(--kb-color-success);
1615
+ }
1616
+
1617
+ .kb-notification--error .kb-notification__icon {
1618
+ color: var(--kb-color-danger);
1619
+ }
1620
+
1621
+ .kb-notification--warning .kb-notification__icon {
1622
+ color: var(--kb-color-warning);
1623
+ }
1624
+
1625
+ .kb-notification--info .kb-notification__icon {
1626
+ color: var(--kb-color-info);
1627
+ }
1628
+
1629
+ .kb-notification__main {
1630
+ flex: 1;
1631
+ }
1632
+
1633
+ .kb-notification__title {
1634
+ color: var(--kb-color-text-1);
1635
+ font-size: var(--kb-font-size-md);
1636
+ font-weight: 600;
1637
+ }
1638
+
1639
+ .kb-notification__message {
1640
+ margin-top: 2px;
1641
+ color: var(--kb-color-text-2);
1642
+ font-size: var(--kb-font-size-sm);
1643
+ line-height: 1.5;
1644
+ }
1645
+
1646
+ .kb-pagination {
1647
+ display: flex;
1648
+ align-items: center;
1649
+ gap: var(--kb-space-1);
1650
+ font-size: var(--kb-font-size-md);
1651
+ }
1652
+
1653
+ .kb-pagination__total {
1654
+ margin-right: var(--kb-space-2);
1655
+ color: var(--kb-color-text-2);
1656
+ }
1657
+
1658
+ .kb-pagination__item,
1659
+ .kb-pagination__prev,
1660
+ .kb-pagination__next {
1661
+ display: inline-flex;
1662
+ align-items: center;
1663
+ justify-content: center;
1664
+ min-width: 32px;
1665
+ height: 32px;
1666
+ box-sizing: border-box;
1667
+ padding: 0 var(--kb-space-1);
1668
+ border: 1px solid var(--kb-color-border);
1669
+ border-radius: var(--kb-radius-sm);
1670
+ background: var(--kb-color-bg);
1671
+ color: var(--kb-color-text-1);
1672
+ font-size: var(--kb-font-size-md);
1673
+ cursor: pointer;
1674
+ transition:
1675
+ border-color var(--kb-transition-duration) var(--kb-transition-timing),
1676
+ color var(--kb-transition-duration) var(--kb-transition-timing),
1677
+ background var(--kb-transition-duration) var(--kb-transition-timing);
1678
+ }
1679
+
1680
+ .kb-pagination__prev:disabled,
1681
+ .kb-pagination__next:disabled {
1682
+ cursor: not-allowed;
1683
+ opacity: 0.5;
1684
+ }
1685
+
1686
+ .kb-pagination__item:hover:not(.kb-pagination__item--active),
1687
+ .kb-pagination__prev:hover:not(:disabled),
1688
+ .kb-pagination__next:hover:not(:disabled) {
1689
+ border-color: var(--kb-color-primary);
1690
+ color: var(--kb-color-primary);
1691
+ }
1692
+
1693
+ .kb-pagination__item--active {
1694
+ border-color: var(--kb-color-primary);
1695
+ background: var(--kb-color-primary);
1696
+ color: var(--kb-color-bg);
1697
+ }
1698
+
1699
+ .kb-pagination__more {
1700
+ color: var(--kb-color-text-3);
1701
+ padding: 0 var(--kb-space-1);
1702
+ }
1703
+
1704
+ .kb-popconfirm {
1705
+ position: relative;
1706
+ display: inline-block;
1707
+ }
1708
+
1709
+ .kb-popconfirm__panel {
1710
+ position: absolute;
1711
+ bottom: calc(100% + 8px);
1712
+ left: 50%;
1713
+ z-index: var(--kb-z-index-modal);
1714
+ min-width: 160px;
1715
+ box-sizing: border-box;
1716
+ padding: var(--kb-space-3);
1717
+ border: 1px solid var(--kb-color-border);
1718
+ border-radius: var(--kb-radius-md);
1719
+ background: var(--kb-color-bg);
1720
+ box-shadow: var(--kb-shadow-2);
1721
+ transform: translateX(-50%);
1722
+ }
1723
+
1724
+ .kb-popconfirm__title {
1725
+ color: var(--kb-color-text-1);
1726
+ font-size: var(--kb-font-size-md);
1727
+ }
1728
+
1729
+ .kb-popconfirm__actions {
1730
+ display: flex;
1731
+ justify-content: flex-end;
1732
+ gap: var(--kb-space-2);
1733
+ margin-top: var(--kb-space-3);
1734
+ }
1735
+
1736
+ .kb-popconfirm__cancel,
1737
+ .kb-popconfirm__ok {
1738
+ padding: var(--kb-space-1) var(--kb-space-3);
1739
+ border: 1px solid var(--kb-color-border);
1740
+ border-radius: var(--kb-radius-sm);
1741
+ background: var(--kb-color-bg);
1742
+ color: var(--kb-color-text-1);
1743
+ font-size: var(--kb-font-size-sm);
1744
+ cursor: pointer;
1745
+ }
1746
+
1747
+ .kb-popconfirm__ok {
1748
+ border-color: var(--kb-color-danger);
1749
+ background: var(--kb-color-danger);
1750
+ color: var(--kb-color-bg);
1751
+ }
1752
+
1753
+ .kb-popconfirm__cancel:hover {
1754
+ border-color: var(--kb-color-primary);
1755
+ color: var(--kb-color-primary);
1756
+ }
1757
+
1758
+ .kb-popover {
1759
+ position: relative;
1760
+ display: inline-block;
1761
+ }
1762
+
1763
+ .kb-popover__panel {
1764
+ position: absolute;
1765
+ z-index: var(--kb-z-index-modal);
1766
+ min-width: 160px;
1767
+ max-width: 280px;
1768
+ box-sizing: border-box;
1769
+ padding: var(--kb-space-3);
1770
+ border: 1px solid var(--kb-color-border);
1771
+ border-radius: var(--kb-radius-md);
1772
+ background: var(--kb-color-bg);
1773
+ box-shadow: var(--kb-shadow-2);
1774
+ }
1775
+
1776
+ .kb-popover__panel--top {
1777
+ bottom: calc(100% + 8px);
1778
+ left: 50%;
1779
+ transform: translateX(-50%);
1780
+ }
1781
+
1782
+ .kb-popover__panel--bottom {
1783
+ top: calc(100% + 8px);
1784
+ left: 50%;
1785
+ transform: translateX(-50%);
1786
+ }
1787
+
1788
+ .kb-popover__panel--left {
1789
+ top: 50%;
1790
+ right: calc(100% + 8px);
1791
+ transform: translateY(-50%);
1792
+ }
1793
+
1794
+ .kb-popover__panel--right {
1795
+ top: 50%;
1796
+ left: calc(100% + 8px);
1797
+ transform: translateY(-50%);
1798
+ }
1799
+
1800
+ .kb-popover__title {
1801
+ margin-bottom: var(--kb-space-1);
1802
+ color: var(--kb-color-text-1);
1803
+ font-size: var(--kb-font-size-md);
1804
+ font-weight: 600;
1805
+ }
1806
+
1807
+ .kb-popover__content {
1808
+ color: var(--kb-color-text-2);
1809
+ font-size: var(--kb-font-size-sm);
1810
+ line-height: 1.6;
1811
+ }
1812
+
1813
+ .kb-progress {
1814
+ display: flex;
1815
+ align-items: center;
1816
+ gap: var(--kb-space-2);
1817
+ width: 100%;
1818
+ }
1819
+
1820
+ .kb-progress__track {
1821
+ flex: 1;
1822
+ overflow: hidden;
1823
+ border-radius: var(--kb-radius-round);
1824
+ background: var(--kb-color-bg-elevated);
1825
+ }
1826
+
1827
+ .kb-progress__bar {
1828
+ border-radius: var(--kb-radius-round);
1829
+ background: var(--kb-color-primary-gradient);
1830
+ transition: width var(--kb-transition-duration) var(--kb-transition-timing);
1831
+ }
1832
+
1833
+ .kb-progress__bar--success {
1834
+ background: var(--kb-color-success);
1835
+ }
1836
+
1837
+ .kb-progress__bar--warning {
1838
+ background: var(--kb-color-warning);
1839
+ }
1840
+
1841
+ .kb-progress__bar--danger {
1842
+ background: var(--kb-color-danger);
1843
+ }
1844
+
1845
+ .kb-progress__text {
1846
+ min-width: 40px;
1847
+ color: var(--kb-color-text-2);
1848
+ font-size: var(--kb-font-size-sm);
1849
+ text-align: right;
1850
+ }
1851
+
1852
+ .kb-radio {
1853
+ display: inline-flex;
1854
+ align-items: center;
1855
+ gap: var(--kb-space-1);
1856
+ cursor: pointer;
1857
+ color: var(--kb-color-text-1);
1858
+ font-size: var(--kb-font-size-md);
1859
+ user-select: none;
1860
+ }
1861
+
1862
+ .kb-radio--disabled {
1863
+ cursor: not-allowed;
1864
+ opacity: 0.55;
1865
+ }
1866
+
1867
+ .kb-radio__input {
1868
+ position: absolute;
1869
+ opacity: 0;
1870
+ width: 0;
1871
+ height: 0;
1872
+ }
1873
+
1874
+ .kb-radio__inner {
1875
+ position: relative;
1876
+ display: inline-block;
1877
+ width: 16px;
1878
+ height: 16px;
1879
+ box-sizing: border-box;
1880
+ border: 1px solid var(--kb-color-border);
1881
+ border-radius: 50%;
1882
+ background: var(--kb-color-bg);
1883
+ transition:
1884
+ border-color var(--kb-transition-duration) var(--kb-transition-timing);
1885
+ }
1886
+
1887
+ .kb-radio__inner::after {
1888
+ content: '';
1889
+ position: absolute;
1890
+ top: 50%;
1891
+ left: 50%;
1892
+ width: 8px;
1893
+ height: 8px;
1894
+ border-radius: 50%;
1895
+ background: var(--kb-color-bg);
1896
+ transform: translate(-50%, -50%) scale(0);
1897
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
1898
+ }
1899
+
1900
+ .kb-radio--checked .kb-radio__inner {
1901
+ border-color: var(--kb-color-primary);
1902
+ }
1903
+
1904
+ .kb-radio--checked .kb-radio__inner::after {
1905
+ background: var(--kb-color-primary);
1906
+ transform: translate(-50%, -50%) scale(1);
1907
+ }
1908
+
1909
+ .kb-radio__label {
1910
+ line-height: 1;
1911
+ }
1912
+
1913
+ .kb-rate {
1914
+ display: inline-flex;
1915
+ gap: var(--kb-space-1);
1916
+ font-size: 20px;
1917
+ line-height: 1;
1918
+ }
1919
+
1920
+ .kb-rate__star {
1921
+ color: var(--kb-color-border);
1922
+ cursor: pointer;
1923
+ user-select: none;
1924
+ transition: color var(--kb-transition-duration) var(--kb-transition-timing);
1925
+ }
1926
+
1927
+ .kb-rate__star:hover {
1928
+ color: var(--kb-color-warning);
1929
+ }
1930
+
1931
+ .kb-rate__star--active {
1932
+ color: var(--kb-color-warning);
1933
+ }
1934
+
1935
+ .kb-result {
1936
+ display: flex;
1937
+ flex-direction: column;
1938
+ align-items: center;
1939
+ justify-content: center;
1940
+ gap: var(--kb-space-2);
1941
+ padding: var(--kb-space-6);
1942
+ text-align: center;
1943
+ }
1944
+
1945
+ .kb-result__icon--success {
1946
+ color: var(--kb-color-success);
1947
+ }
1948
+
1949
+ .kb-result__icon--error {
1950
+ color: var(--kb-color-danger);
1951
+ }
1952
+
1953
+ .kb-result__icon--warning {
1954
+ color: var(--kb-color-warning);
1955
+ }
1956
+
1957
+ .kb-result__icon--info {
1958
+ color: var(--kb-color-info);
1959
+ }
1960
+
1961
+ .kb-result__title {
1962
+ margin: var(--kb-space-2) 0 0;
1963
+ color: var(--kb-color-text-1);
1964
+ font-size: var(--kb-font-size-xl);
1965
+ }
1966
+
1967
+ .kb-result__description {
1968
+ margin: 0;
1969
+ color: var(--kb-color-text-3);
1970
+ font-size: var(--kb-font-size-md);
1971
+ }
1972
+
1973
+ .kb-result__action {
1974
+ margin-top: var(--kb-space-3);
1975
+ }
1976
+
1977
+ .kb-search {
1978
+ display: inline-flex;
1979
+ align-items: center;
1980
+ border: 1px solid var(--kb-color-border);
1981
+ border-radius: var(--kb-radius-md);
1982
+ background: var(--kb-color-bg);
1983
+ overflow: hidden;
1984
+ transition: border-color var(--kb-transition-duration) var(--kb-transition-timing);
1985
+ }
1986
+
1987
+ .kb-search:focus-within {
1988
+ border-color: var(--kb-color-primary);
1989
+ }
1990
+
1991
+ .kb-search__icon {
1992
+ margin-left: var(--kb-space-2);
1993
+ color: var(--kb-color-text-3);
1994
+ }
1995
+
1996
+ .kb-search__input {
1997
+ flex: 1;
1998
+ min-width: 160px;
1999
+ padding: var(--kb-space-2);
2000
+ border: none;
2001
+ outline: none;
2002
+ background: transparent;
2003
+ color: var(--kb-color-text-1);
2004
+ font-size: var(--kb-font-size-md);
2005
+ }
2006
+
2007
+ .kb-search__input::placeholder {
2008
+ color: var(--kb-color-text-3);
2009
+ }
2010
+
2011
+ .kb-search__button {
2012
+ padding: var(--kb-space-2) var(--kb-space-4);
2013
+ border: none;
2014
+ background: var(--kb-color-primary);
2015
+ color: var(--kb-color-bg);
2016
+ font-size: var(--kb-font-size-md);
2017
+ cursor: pointer;
2018
+ }
2019
+
2020
+ .kb-search__button:hover {
2021
+ filter: brightness(0.94);
2022
+ }
2023
+
2024
+ .kb-segmented {
2025
+ display: inline-flex;
2026
+ padding: 3px;
2027
+ border-radius: var(--kb-radius-md);
2028
+ background: var(--kb-color-bg-elevated);
2029
+ gap: 2px;
2030
+ }
2031
+
2032
+ .kb-segmented__item {
2033
+ padding: var(--kb-space-1) var(--kb-space-3);
2034
+ border-radius: var(--kb-radius-sm);
2035
+ color: var(--kb-color-text-2);
2036
+ font-size: var(--kb-font-size-md);
2037
+ cursor: pointer;
2038
+ user-select: none;
2039
+ transition:
2040
+ background var(--kb-transition-duration) var(--kb-transition-timing),
2041
+ color var(--kb-transition-duration) var(--kb-transition-timing),
2042
+ box-shadow var(--kb-transition-duration) var(--kb-transition-timing);
2043
+ }
2044
+
2045
+ .kb-segmented__item--active {
2046
+ background: var(--kb-color-bg);
2047
+ color: var(--kb-color-primary);
2048
+ box-shadow: var(--kb-shadow-1);
2049
+ font-weight: 500;
2050
+ }
2051
+
2052
+ .kb-segmented__item--disabled {
2053
+ cursor: not-allowed;
2054
+ opacity: 0.55;
2055
+ }
2056
+
2057
+ .kb-select {
2058
+ position: relative;
2059
+ display: inline-block;
2060
+ width: 200px;
2061
+ box-sizing: border-box;
2062
+ }
2063
+
2064
+ .kb-select__trigger {
2065
+ display: flex;
2066
+ align-items: center;
2067
+ justify-content: space-between;
2068
+ height: 34px;
2069
+ padding: 0 var(--kb-space-3);
2070
+ box-sizing: border-box;
2071
+ border: 1px solid var(--kb-color-border);
2072
+ border-radius: var(--kb-radius-md);
2073
+ background: var(--kb-color-bg);
2074
+ cursor: pointer;
2075
+ transition:
2076
+ border-color var(--kb-transition-duration) var(--kb-transition-timing),
2077
+ box-shadow var(--kb-transition-duration) var(--kb-transition-timing);
2078
+ }
2079
+
2080
+ .kb-select__trigger:hover {
2081
+ border-color: var(--kb-color-text-3);
2082
+ }
2083
+
2084
+ .kb-select--open .kb-select__trigger {
2085
+ border-color: var(--kb-color-primary);
2086
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--kb-color-primary) 15%, transparent);
2087
+ }
2088
+
2089
+ .kb-select--small .kb-select__trigger {
2090
+ height: 28px;
2091
+ font-size: var(--kb-font-size-sm);
2092
+ }
2093
+
2094
+ .kb-select--large .kb-select__trigger {
2095
+ height: 40px;
2096
+ font-size: var(--kb-font-size-lg);
2097
+ }
2098
+
2099
+ .kb-select--disabled .kb-select__trigger {
2100
+ border-color: var(--kb-color-border);
2101
+ background: var(--kb-color-bg-elevated);
2102
+ cursor: not-allowed;
2103
+ color: var(--kb-color-text-3);
2104
+ }
2105
+
2106
+ .kb-select__value {
2107
+ overflow: hidden;
2108
+ text-overflow: ellipsis;
2109
+ white-space: nowrap;
2110
+ color: var(--kb-color-text-1);
2111
+ }
2112
+
2113
+ .kb-select__placeholder {
2114
+ color: var(--kb-color-text-3);
2115
+ }
2116
+
2117
+ .kb-select__arrow {
2118
+ margin-left: var(--kb-space-2);
2119
+ color: var(--kb-color-text-3);
2120
+ font-size: 12px;
2121
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
2122
+ }
2123
+
2124
+ .kb-select--open .kb-select__arrow {
2125
+ transform: rotate(180deg);
2126
+ }
2127
+
2128
+ .kb-select__panel {
2129
+ position: absolute;
2130
+ top: calc(100% + 4px);
2131
+ left: 0;
2132
+ right: 0;
2133
+ z-index: var(--kb-z-index-modal);
2134
+ box-sizing: border-box;
2135
+ max-height: 240px;
2136
+ overflow-y: auto;
2137
+ padding: var(--kb-space-1);
2138
+ border: 1px solid var(--kb-color-border);
2139
+ border-radius: var(--kb-radius-md);
2140
+ background: var(--kb-color-bg);
2141
+ box-shadow: var(--kb-shadow-2);
2142
+ }
2143
+
2144
+ .kb-select__option {
2145
+ padding: var(--kb-space-2) var(--kb-space-3);
2146
+ border-radius: var(--kb-radius-sm);
2147
+ font-size: var(--kb-font-size-md);
2148
+ color: var(--kb-color-text-1);
2149
+ cursor: pointer;
2150
+ }
2151
+
2152
+ .kb-select__option:hover:not(.kb-select__option--disabled) {
2153
+ background: var(--kb-color-bg-elevated);
2154
+ }
2155
+
2156
+ .kb-select__option--selected {
2157
+ color: var(--kb-color-primary);
2158
+ font-weight: 500;
2159
+ }
2160
+
2161
+ .kb-select__option--disabled {
2162
+ cursor: not-allowed;
2163
+ opacity: 0.55;
2164
+ }
2165
+
2166
+ .kb-skeleton {
2167
+ display: flex;
2168
+ flex-direction: column;
2169
+ gap: var(--kb-space-2);
2170
+ }
2171
+
2172
+ .kb-skeleton__item {
2173
+ height: 14px;
2174
+ border-radius: var(--kb-radius-sm);
2175
+ background: var(--kb-color-bg-elevated);
2176
+ }
2177
+
2178
+ .kb-skeleton__item:nth-child(2) {
2179
+ width: 80%;
2180
+ }
2181
+
2182
+ .kb-skeleton__item:nth-child(3) {
2183
+ width: 60%;
2184
+ }
2185
+
2186
+ .kb-skeleton--animated .kb-skeleton__item {
2187
+ background: linear-gradient(
2188
+ 90deg,
2189
+ var(--kb-color-bg-elevated) 25%,
2190
+ color-mix(in srgb, var(--kb-color-border) 40%, var(--kb-color-bg-elevated)) 37%,
2191
+ var(--kb-color-bg-elevated) 63%
2192
+ );
2193
+ background-size: 400% 100%;
2194
+ animation: kb-skeleton-loading 1.4s ease infinite;
2195
+ }
2196
+
2197
+ @keyframes kb-skeleton-loading {
2198
+ 0% {
2199
+ background-position: 100% 50%;
2200
+ }
2201
+
2202
+ 100% {
2203
+ background-position: 0 50%;
2204
+ }
2205
+ }
2206
+
2207
+ .kb-slider {
2208
+ display: flex;
2209
+ align-items: center;
2210
+ padding: 10px 0;
2211
+ cursor: pointer;
2212
+ user-select: none;
2213
+ }
2214
+
2215
+ .kb-slider__track {
2216
+ position: relative;
2217
+ flex: 1;
2218
+ height: 6px;
2219
+ border-radius: var(--kb-radius-round);
2220
+ background: var(--kb-color-bg-elevated);
2221
+ }
2222
+
2223
+ .kb-slider__fill {
2224
+ position: absolute;
2225
+ top: 0;
2226
+ bottom: 0;
2227
+ left: 0;
2228
+ border-radius: var(--kb-radius-round);
2229
+ background: var(--kb-color-primary);
2230
+ }
2231
+
2232
+ .kb-slider__handle {
2233
+ position: absolute;
2234
+ top: 50%;
2235
+ width: 16px;
2236
+ height: 16px;
2237
+ border: 2px solid var(--kb-color-primary);
2238
+ border-radius: 50%;
2239
+ background: var(--kb-color-bg);
2240
+ transform: translate(-50%, -50%);
2241
+ box-shadow: var(--kb-shadow-1);
2242
+ transition: box-shadow var(--kb-transition-duration) var(--kb-transition-timing);
2243
+ }
2244
+
2245
+ .kb-slider__handle:hover {
2246
+ box-shadow: 0 0 0 6px color-mix(in srgb, var(--kb-color-primary) 15%, transparent);
2247
+ }
2248
+
2249
+ .kb-slider--disabled {
2250
+ cursor: not-allowed;
2251
+ opacity: 0.55;
2252
+ }
2253
+
2254
+ .kb-space {
2255
+ display: inline-flex;
2256
+ }
2257
+
2258
+ .kb-space--vertical {
2259
+ flex-direction: column;
2260
+ }
2261
+
2262
+ .kb-space--wrap {
2263
+ flex-wrap: wrap;
2264
+ }
2265
+
2266
+ .kb-space--align-start {
2267
+ align-items: flex-start;
2268
+ }
2269
+
2270
+ .kb-space--align-center {
2271
+ align-items: center;
2272
+ }
2273
+
2274
+ .kb-space--align-end {
2275
+ align-items: flex-end;
2276
+ }
2277
+
2278
+ .kb-space--align-baseline {
2279
+ align-items: baseline;
2280
+ }
2281
+
2282
+ .kb-statistic {
2283
+ box-sizing: border-box;
2284
+ padding: var(--kb-space-3);
2285
+ }
2286
+
2287
+ .kb-statistic__title {
2288
+ color: var(--kb-color-text-3);
2289
+ font-size: var(--kb-font-size-sm);
2290
+ }
2291
+
2292
+ .kb-statistic__value {
2293
+ margin-top: var(--kb-space-1);
2294
+ color: var(--kb-color-text-1);
2295
+ font-size: 28px;
2296
+ font-weight: 600;
2297
+ line-height: 1.3;
2298
+ font-variant-numeric: tabular-nums;
2299
+ }
2300
+
2301
+ .kb-statistic__prefix,
2302
+ .kb-statistic__suffix {
2303
+ font-size: var(--kb-font-size-md);
2304
+ font-weight: 400;
2305
+ color: var(--kb-color-text-2);
2306
+ }
2307
+
2308
+ .kb-statistic__extra {
2309
+ margin-top: var(--kb-space-2);
2310
+ color: var(--kb-color-text-3);
2311
+ font-size: var(--kb-font-size-sm);
2312
+ }
2313
+
2314
+ .kb-steps {
2315
+ display: flex;
2316
+ width: 100%;
2317
+ }
2318
+
2319
+ .kb-steps__item {
2320
+ display: flex;
2321
+ align-items: flex-start;
2322
+ flex: 1;
2323
+ }
2324
+
2325
+ .kb-steps__item:last-child {
2326
+ flex: none;
2327
+ }
2328
+
2329
+ .kb-steps__head {
2330
+ display: flex;
2331
+ align-items: center;
2332
+ width: 100%;
2333
+ }
2334
+
2335
+ .kb-steps__circle {
2336
+ display: inline-flex;
2337
+ align-items: center;
2338
+ justify-content: center;
2339
+ width: 28px;
2340
+ height: 28px;
2341
+ box-sizing: border-box;
2342
+ border: 2px solid var(--kb-color-border);
2343
+ border-radius: 50%;
2344
+ background: var(--kb-color-bg);
2345
+ color: var(--kb-color-text-3);
2346
+ font-size: var(--kb-font-size-sm);
2347
+ flex-shrink: 0;
2348
+ transition:
2349
+ border-color var(--kb-transition-duration) var(--kb-transition-timing),
2350
+ color var(--kb-transition-duration) var(--kb-transition-timing),
2351
+ background var(--kb-transition-duration) var(--kb-transition-timing);
2352
+ }
2353
+
2354
+ .kb-steps__line {
2355
+ flex: 1;
2356
+ height: 2px;
2357
+ margin: 0 var(--kb-space-2);
2358
+ background: var(--kb-color-border);
2359
+ transition: background var(--kb-transition-duration) var(--kb-transition-timing);
2360
+ }
2361
+
2362
+ .kb-steps__item--active .kb-steps__circle {
2363
+ border-color: var(--kb-color-primary);
2364
+ color: var(--kb-color-primary);
2365
+ }
2366
+
2367
+ .kb-steps__item--active .kb-steps__line {
2368
+ background: var(--kb-color-primary);
2369
+ }
2370
+
2371
+ .kb-steps__item--done .kb-steps__circle {
2372
+ border-color: var(--kb-color-primary);
2373
+ background: var(--kb-color-primary);
2374
+ color: var(--kb-color-bg);
2375
+ }
2376
+
2377
+ .kb-steps__item--done .kb-steps__line {
2378
+ background: var(--kb-color-primary);
2379
+ }
2380
+
2381
+ .kb-steps__body {
2382
+ margin-left: var(--kb-space-2);
2383
+ padding-top: 4px;
2384
+ }
2385
+
2386
+ .kb-steps__title {
2387
+ color: var(--kb-color-text-1);
2388
+ font-size: var(--kb-font-size-md);
2389
+ font-weight: 500;
2390
+ }
2391
+
2392
+ .kb-steps__description {
2393
+ margin-top: 2px;
2394
+ color: var(--kb-color-text-3);
2395
+ font-size: var(--kb-font-size-sm);
2396
+ }
2397
+
2398
+ .kb-switch {
2399
+ position: relative;
2400
+ display: inline-block;
2401
+ width: 40px;
2402
+ height: 22px;
2403
+ box-sizing: border-box;
2404
+ padding: 0;
2405
+ border: none;
2406
+ border-radius: var(--kb-radius-round);
2407
+ background: var(--kb-color-border);
2408
+ cursor: pointer;
2409
+ transition:
2410
+ background var(--kb-transition-duration) var(--kb-transition-timing);
2411
+ }
2412
+
2413
+ .kb-switch--checked {
2414
+ background: var(--kb-color-primary);
2415
+ }
2416
+
2417
+ .kb-switch--disabled {
2418
+ cursor: not-allowed;
2419
+ opacity: 0.55;
2420
+ }
2421
+
2422
+ .kb-switch__dot {
2423
+ position: absolute;
2424
+ top: 2px;
2425
+ left: 2px;
2426
+ width: 18px;
2427
+ height: 18px;
2428
+ border-radius: 50%;
2429
+ background: var(--kb-color-bg);
2430
+ box-shadow: var(--kb-shadow-1);
2431
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
2432
+ }
2433
+
2434
+ .kb-switch--checked .kb-switch__dot {
2435
+ transform: translateX(18px);
2436
+ }
2437
+
2438
+ .kb-table {
2439
+ width: 100%;
2440
+ border-collapse: collapse;
2441
+ color: var(--kb-color-text-1);
2442
+ font-size: var(--kb-font-size-md);
2443
+ }
2444
+
2445
+ .kb-table th {
2446
+ padding: var(--kb-space-2) var(--kb-space-3);
2447
+ border-bottom: 1px solid var(--kb-color-border);
2448
+ background: var(--kb-color-bg-elevated);
2449
+ color: var(--kb-color-text-2);
2450
+ font-weight: 600;
2451
+ text-align: left;
2452
+ }
2453
+
2454
+ .kb-table td {
2455
+ padding: var(--kb-space-2) var(--kb-space-3);
2456
+ border-bottom: 1px solid var(--kb-color-border);
2457
+ color: var(--kb-color-text-1);
2458
+ }
2459
+
2460
+ .kb-table tbody tr:hover {
2461
+ background: color-mix(in srgb, var(--kb-color-primary) 4%, transparent);
2462
+ }
2463
+
2464
+ .kb-table--stripe tbody tr:nth-child(even) {
2465
+ background: var(--kb-color-bg-elevated);
2466
+ }
2467
+
2468
+ .kb-table--border {
2469
+ border: 1px solid var(--kb-color-border);
2470
+ }
2471
+
2472
+ .kb-table--border th,
2473
+ .kb-table--border td {
2474
+ border-right: 1px solid var(--kb-color-border);
2475
+ }
2476
+
2477
+ .kb-table--border th:last-child,
2478
+ .kb-table--border td:last-child {
2479
+ border-right: none;
2480
+ }
2481
+
2482
+ .kb-tabs {
2483
+ width: 100%;
2484
+ }
2485
+
2486
+ .kb-tabs__nav {
2487
+ display: flex;
2488
+ gap: var(--kb-space-1);
2489
+ border-bottom: 1px solid var(--kb-color-border);
2490
+ }
2491
+
2492
+ .kb-tabs__tab {
2493
+ padding: var(--kb-space-2) var(--kb-space-4);
2494
+ color: var(--kb-color-text-2);
2495
+ font-size: var(--kb-font-size-md);
2496
+ cursor: pointer;
2497
+ user-select: none;
2498
+ border-bottom: 2px solid transparent;
2499
+ margin-bottom: -1px;
2500
+ transition:
2501
+ color var(--kb-transition-duration) var(--kb-transition-timing),
2502
+ border-color var(--kb-transition-duration) var(--kb-transition-timing);
2503
+ }
2504
+
2505
+ .kb-tabs__tab:hover:not(.kb-tabs__tab--disabled) {
2506
+ color: var(--kb-color-primary);
2507
+ }
2508
+
2509
+ .kb-tabs__tab--active {
2510
+ color: var(--kb-color-primary);
2511
+ border-bottom-color: var(--kb-color-primary);
2512
+ font-weight: 500;
2513
+ }
2514
+
2515
+ .kb-tabs__tab--disabled {
2516
+ cursor: not-allowed;
2517
+ opacity: 0.55;
2518
+ }
2519
+
2520
+ .kb-tabs__panel {
2521
+ padding: var(--kb-space-3) 0;
2522
+ }
2523
+
2524
+ .kb-tag {
2525
+ display: inline-flex;
2526
+ align-items: center;
2527
+ gap: var(--kb-space-1);
2528
+ box-sizing: border-box;
2529
+ padding: 0 var(--kb-space-2);
2530
+ height: 24px;
2531
+ border-radius: var(--kb-radius-sm);
2532
+ background: var(--kb-color-bg-elevated);
2533
+ color: var(--kb-color-text-2);
2534
+ font-size: var(--kb-font-size-xs);
2535
+ line-height: 1;
2536
+ white-space: nowrap;
2537
+ }
2538
+
2539
+ .kb-tag--small {
2540
+ height: 20px;
2541
+ font-size: var(--kb-font-size-xs);
2542
+ }
2543
+
2544
+ .kb-tag--large {
2545
+ height: 28px;
2546
+ font-size: var(--kb-font-size-sm);
2547
+ }
2548
+
2549
+ .kb-tag--round {
2550
+ border-radius: var(--kb-radius-round);
2551
+ }
2552
+
2553
+ .kb-tag--primary {
2554
+ background: color-mix(in srgb, var(--kb-color-primary) 12%, transparent);
2555
+ color: var(--kb-color-primary);
2556
+ }
2557
+
2558
+ .kb-tag--success {
2559
+ background: color-mix(in srgb, var(--kb-color-success) 12%, transparent);
2560
+ color: var(--kb-color-success);
2561
+ }
2562
+
2563
+ .kb-tag--warning {
2564
+ background: color-mix(in srgb, var(--kb-color-warning) 12%, transparent);
2565
+ color: var(--kb-color-warning);
2566
+ }
2567
+
2568
+ .kb-tag--danger {
2569
+ background: color-mix(in srgb, var(--kb-color-danger) 12%, transparent);
2570
+ color: var(--kb-color-danger);
2571
+ }
2572
+
2573
+ .kb-tag--info {
2574
+ background: color-mix(in srgb, var(--kb-color-info) 12%, transparent);
2575
+ color: var(--kb-color-info);
2576
+ }
2577
+
2578
+ .kb-tag__close {
2579
+ display: inline-flex;
2580
+ align-items: center;
2581
+ justify-content: center;
2582
+ padding: 0;
2583
+ border: none;
2584
+ background: transparent;
2585
+ color: inherit;
2586
+ font-size: 14px;
2587
+ line-height: 1;
2588
+ cursor: pointer;
2589
+ opacity: 0.7;
2590
+ }
2591
+
2592
+ .kb-tag__close:hover {
2593
+ opacity: 1;
2594
+ }
2595
+
2596
+ .kb-textarea {
2597
+ position: relative;
2598
+ display: inline-block;
2599
+ width: 100%;
2600
+ }
2601
+
2602
+ .kb-textarea__inner {
2603
+ width: 100%;
2604
+ box-sizing: border-box;
2605
+ padding: var(--kb-space-2) var(--kb-space-3);
2606
+ border: 1px solid var(--kb-color-border);
2607
+ border-radius: var(--kb-radius-md);
2608
+ outline: none;
2609
+ resize: vertical;
2610
+ background: var(--kb-color-bg);
2611
+ color: var(--kb-color-text-1);
2612
+ font-family: var(--kb-font-family);
2613
+ font-size: var(--kb-font-size-md);
2614
+ line-height: 1.6;
2615
+ transition: border-color var(--kb-transition-duration) var(--kb-transition-timing);
2616
+ }
2617
+
2618
+ .kb-textarea__inner:focus {
2619
+ border-color: var(--kb-color-primary);
2620
+ }
2621
+
2622
+ .kb-textarea__inner::placeholder {
2623
+ color: var(--kb-color-text-3);
2624
+ }
2625
+
2626
+ .kb-textarea--disabled .kb-textarea__inner {
2627
+ background: var(--kb-color-bg-elevated);
2628
+ cursor: not-allowed;
2629
+ opacity: 0.55;
2630
+ }
2631
+
2632
+ .kb-textarea__count {
2633
+ position: absolute;
2634
+ right: var(--kb-space-2);
2635
+ bottom: var(--kb-space-1);
2636
+ color: var(--kb-color-text-3);
2637
+ font-size: var(--kb-font-size-xs);
2638
+ }
2639
+
2640
+ .kb-timeline {
2641
+ padding: var(--kb-space-2) 0;
2642
+ }
2643
+
2644
+ .kb-timeline__item {
2645
+ display: flex;
2646
+ }
2647
+
2648
+ .kb-timeline__node {
2649
+ position: relative;
2650
+ display: flex;
2651
+ flex-direction: column;
2652
+ align-items: center;
2653
+ padding-right: var(--kb-space-3);
2654
+ }
2655
+
2656
+ .kb-timeline__dot {
2657
+ width: 10px;
2658
+ height: 10px;
2659
+ box-sizing: border-box;
2660
+ border: 2px solid var(--kb-color-primary);
2661
+ border-radius: 50%;
2662
+ background: var(--kb-color-bg);
2663
+ flex-shrink: 0;
2664
+ margin-top: 4px;
2665
+ }
2666
+
2667
+ .kb-timeline__dot--default {
2668
+ border-color: var(--kb-color-border);
2669
+ background: var(--kb-color-border);
2670
+ }
2671
+
2672
+ .kb-timeline__dot--success {
2673
+ border-color: var(--kb-color-success);
2674
+ }
2675
+
2676
+ .kb-timeline__dot--warning {
2677
+ border-color: var(--kb-color-warning);
2678
+ }
2679
+
2680
+ .kb-timeline__dot--danger {
2681
+ border-color: var(--kb-color-danger);
2682
+ }
2683
+
2684
+ .kb-timeline__tail {
2685
+ position: absolute;
2686
+ top: 16px;
2687
+ bottom: -8px;
2688
+ left: 50%;
2689
+ width: 2px;
2690
+ background: var(--kb-color-border);
2691
+ transform: translateX(-50%);
2692
+ }
2693
+
2694
+ .kb-timeline__main {
2695
+ flex: 1;
2696
+ padding-bottom: var(--kb-space-4);
2697
+ }
2698
+
2699
+ .kb-timeline__content {
2700
+ color: var(--kb-color-text-1);
2701
+ font-size: var(--kb-font-size-md);
2702
+ line-height: 1.5;
2703
+ }
2704
+
2705
+ .kb-timeline__time {
2706
+ margin-top: 2px;
2707
+ color: var(--kb-color-text-3);
2708
+ font-size: var(--kb-font-size-sm);
2709
+ }
2710
+
2711
+ .kb-tooltip {
2712
+ position: relative;
2713
+ display: inline-block;
2714
+ }
2715
+
2716
+ .kb-tooltip__popper {
2717
+ position: absolute;
2718
+ z-index: var(--kb-z-index-modal);
2719
+ max-width: 240px;
2720
+ padding: var(--kb-space-1) var(--kb-space-2);
2721
+ border-radius: var(--kb-radius-sm);
2722
+ background: var(--kb-color-text-1);
2723
+ color: var(--kb-color-bg);
2724
+ font-size: var(--kb-font-size-xs);
2725
+ line-height: 1.5;
2726
+ white-space: nowrap;
2727
+ pointer-events: none;
2728
+ }
2729
+
2730
+ .kb-tooltip__popper--top {
2731
+ bottom: calc(100% + 6px);
2732
+ left: 50%;
2733
+ transform: translateX(-50%);
2734
+ }
2735
+
2736
+ .kb-tooltip__popper--bottom {
2737
+ top: calc(100% + 6px);
2738
+ left: 50%;
2739
+ transform: translateX(-50%);
2740
+ }
2741
+
2742
+ .kb-tooltip__popper--left {
2743
+ top: 50%;
2744
+ right: calc(100% + 6px);
2745
+ transform: translateY(-50%);
2746
+ }
2747
+
2748
+ .kb-tooltip__popper--right {
2749
+ top: 50%;
2750
+ left: calc(100% + 6px);
2751
+ transform: translateY(-50%);
2752
+ }
2753
+
2754
+ .kb-transfer {
2755
+ display: flex;
2756
+ align-items: center;
2757
+ gap: var(--kb-space-2);
2758
+ }
2759
+
2760
+ .kb-transfer__box {
2761
+ width: 180px;
2762
+ height: 220px;
2763
+ overflow-y: auto;
2764
+ border: 1px solid var(--kb-color-border);
2765
+ border-radius: var(--kb-radius-md);
2766
+ background: var(--kb-color-bg);
2767
+ }
2768
+
2769
+ .kb-transfer__title {
2770
+ padding: var(--kb-space-2) var(--kb-space-3);
2771
+ border-bottom: 1px solid var(--kb-color-border);
2772
+ color: var(--kb-color-text-3);
2773
+ font-size: var(--kb-font-size-sm);
2774
+ }
2775
+
2776
+ .kb-transfer__item {
2777
+ padding: var(--kb-space-2) var(--kb-space-3);
2778
+ color: var(--kb-color-text-1);
2779
+ font-size: var(--kb-font-size-md);
2780
+ cursor: pointer;
2781
+ }
2782
+
2783
+ .kb-transfer__item:hover {
2784
+ background: var(--kb-color-bg-elevated);
2785
+ }
2786
+
2787
+ .kb-transfer__item--selected {
2788
+ background: color-mix(in srgb, var(--kb-color-primary) 12%, transparent);
2789
+ color: var(--kb-color-primary);
2790
+ }
2791
+
2792
+ .kb-transfer__actions {
2793
+ display: flex;
2794
+ flex-direction: column;
2795
+ gap: var(--kb-space-2);
2796
+ }
2797
+
2798
+ .kb-transfer__move {
2799
+ width: 36px;
2800
+ height: 32px;
2801
+ border: 1px solid var(--kb-color-border);
2802
+ border-radius: var(--kb-radius-sm);
2803
+ background: var(--kb-color-bg);
2804
+ color: var(--kb-color-text-2);
2805
+ font-size: var(--kb-font-size-md);
2806
+ cursor: pointer;
2807
+ }
2808
+
2809
+ .kb-transfer__move:disabled {
2810
+ cursor: not-allowed;
2811
+ opacity: 0.5;
2812
+ }
2813
+
2814
+ .kb-transfer__move:hover:not(:disabled) {
2815
+ border-color: var(--kb-color-primary);
2816
+ color: var(--kb-color-primary);
2817
+ }
2818
+
2819
+ .kb-tree {
2820
+ font-size: var(--kb-font-size-md);
2821
+ color: var(--kb-color-text-1);
2822
+ }
2823
+
2824
+ .kb-tree__row {
2825
+ display: flex;
2826
+ align-items: center;
2827
+ padding: 4px 0;
2828
+ border-radius: var(--kb-radius-sm);
2829
+ }
2830
+
2831
+ .kb-tree__row:hover {
2832
+ background: var(--kb-color-bg-elevated);
2833
+ }
2834
+
2835
+ .kb-tree__toggle {
2836
+ display: inline-flex;
2837
+ align-items: center;
2838
+ justify-content: center;
2839
+ width: 20px;
2840
+ height: 20px;
2841
+ color: var(--kb-color-text-3);
2842
+ cursor: pointer;
2843
+ transition: transform var(--kb-transition-duration) var(--kb-transition-timing);
2844
+ flex-shrink: 0;
2845
+ }
2846
+
2847
+ .kb-tree__toggle--open {
2848
+ transform: rotate(90deg);
2849
+ }
2850
+
2851
+ .kb-tree__toggle--leaf {
2852
+ cursor: default;
2853
+ }
2854
+
2855
+ .kb-tree__label {
2856
+ padding: 2px var(--kb-space-2);
2857
+ border-radius: var(--kb-radius-sm);
2858
+ cursor: pointer;
2859
+ }
2860
+
2861
+ .kb-tree__label--selected {
2862
+ background: color-mix(in srgb, var(--kb-color-primary) 12%, transparent);
2863
+ color: var(--kb-color-primary);
2864
+ }
2865
+
2866
+ .kb-tree__children {
2867
+ margin-left: var(--kb-space-4);
2868
+ }
2869
+
2870
+ .kb-upload {
2871
+ display: flex;
2872
+ flex-direction: column;
2873
+ gap: var(--kb-space-2);
2874
+ align-items: flex-start;
2875
+ }
2876
+
2877
+ .kb-upload__button {
2878
+ display: inline-flex;
2879
+ align-items: center;
2880
+ padding: var(--kb-space-2) var(--kb-space-4);
2881
+ border: 1px dashed var(--kb-color-primary);
2882
+ border-radius: var(--kb-radius-md);
2883
+ background: color-mix(in srgb, var(--kb-color-primary) 6%, transparent);
2884
+ color: var(--kb-color-primary);
2885
+ font-size: var(--kb-font-size-md);
2886
+ cursor: pointer;
2887
+ }
2888
+
2889
+ .kb-upload__button input {
2890
+ display: none;
2891
+ }
2892
+
2893
+ .kb-upload__list {
2894
+ display: flex;
2895
+ flex-direction: column;
2896
+ gap: var(--kb-space-1);
2897
+ width: 100%;
2898
+ }
2899
+
2900
+ .kb-upload__item {
2901
+ display: flex;
2902
+ align-items: center;
2903
+ gap: var(--kb-space-2);
2904
+ padding: var(--kb-space-2) var(--kb-space-3);
2905
+ border: 1px solid var(--kb-color-border);
2906
+ border-radius: var(--kb-radius-sm);
2907
+ background: var(--kb-color-bg);
2908
+ }
2909
+
2910
+ .kb-upload__name {
2911
+ flex: 1;
2912
+ overflow: hidden;
2913
+ text-overflow: ellipsis;
2914
+ white-space: nowrap;
2915
+ color: var(--kb-color-text-1);
2916
+ font-size: var(--kb-font-size-sm);
2917
+ }
2918
+
2919
+ .kb-upload__size {
2920
+ color: var(--kb-color-text-3);
2921
+ font-size: var(--kb-font-size-xs);
2922
+ }
2923
+
2924
+ .kb-upload__delete {
2925
+ padding: 0;
2926
+ border: none;
2927
+ background: transparent;
2928
+ color: var(--kb-color-text-3);
2929
+ font-size: var(--kb-font-size-lg);
2930
+ cursor: pointer;
2931
+ }
2932
+
2933
+ .kb-upload__delete:hover {
2934
+ color: var(--kb-color-danger);
2935
+ }
2936
+
2937
+ .kb-watermark {
2938
+ position: relative;
2939
+ }
2940
+
2941
+ .kb-watermark__layer {
2942
+ position: absolute;
2943
+ inset: 0;
2944
+ z-index: 1;
2945
+ background-repeat: repeat;
2946
+ background-size: 200px 140px;
2947
+ pointer-events: none;
2948
+ }
2949
+
2950
+ .kb-watermark__content {
2951
+ position: relative;
2952
+ z-index: 2;
2953
+ }