@zhang_jifan/fanui 2.1.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 (127) hide show
  1. package/ACCESSIBILITY.md +61 -0
  2. package/CHANGELOG.md +112 -0
  3. package/COMMERCIAL-LICENSE.md +71 -0
  4. package/DESIGN-SYSTEM.md +294 -0
  5. package/LICENSE +661 -0
  6. package/README.md +348 -0
  7. package/USAGE.md +1926 -0
  8. package/_index.scss +20 -0
  9. package/dist/fanui.cjs +15 -0
  10. package/dist/fanui.css +28209 -0
  11. package/dist/fanui.d.ts +353 -0
  12. package/dist/fanui.esm.js +71 -0
  13. package/dist/fanui.js +4782 -0
  14. package/dist/fanui.min.css +1 -0
  15. package/dist/fanui.mjs +71 -0
  16. package/dist/modules/fanui-advanced.css +830 -0
  17. package/dist/modules/fanui-advanced.min.css +129 -0
  18. package/dist/modules/fanui-alert.css +575 -0
  19. package/dist/modules/fanui-alert.min.css +122 -0
  20. package/dist/modules/fanui-badge.css +426 -0
  21. package/dist/modules/fanui-badge.min.css +77 -0
  22. package/dist/modules/fanui-base.css +1394 -0
  23. package/dist/modules/fanui-base.min.css +236 -0
  24. package/dist/modules/fanui-blog.css +762 -0
  25. package/dist/modules/fanui-blog.min.css +108 -0
  26. package/dist/modules/fanui-button.css +526 -0
  27. package/dist/modules/fanui-button.min.css +56 -0
  28. package/dist/modules/fanui-card.css +291 -0
  29. package/dist/modules/fanui-card.min.css +52 -0
  30. package/dist/modules/fanui-choice.css +539 -0
  31. package/dist/modules/fanui-choice.min.css +83 -0
  32. package/dist/modules/fanui-dashboard.css +1057 -0
  33. package/dist/modules/fanui-dashboard.min.css +160 -0
  34. package/dist/modules/fanui-data.css +687 -0
  35. package/dist/modules/fanui-data.min.css +125 -0
  36. package/dist/modules/fanui-feedback.css +432 -0
  37. package/dist/modules/fanui-feedback.min.css +79 -0
  38. package/dist/modules/fanui-form.css +779 -0
  39. package/dist/modules/fanui-form.min.css +123 -0
  40. package/dist/modules/fanui-glass.css +497 -0
  41. package/dist/modules/fanui-glass.min.css +46 -0
  42. package/dist/modules/fanui-input-plus.css +799 -0
  43. package/dist/modules/fanui-input-plus.min.css +124 -0
  44. package/dist/modules/fanui-interactive.css +960 -0
  45. package/dist/modules/fanui-interactive.min.css +138 -0
  46. package/dist/modules/fanui-layout.css +4399 -0
  47. package/dist/modules/fanui-layout.min.css +1172 -0
  48. package/dist/modules/fanui-marketing.css +1125 -0
  49. package/dist/modules/fanui-marketing.min.css +144 -0
  50. package/dist/modules/fanui-nav.css +458 -0
  51. package/dist/modules/fanui-nav.min.css +76 -0
  52. package/dist/modules/fanui-overlay.css +547 -0
  53. package/dist/modules/fanui-overlay.min.css +91 -0
  54. package/dist/modules/fanui-table.css +290 -0
  55. package/dist/modules/fanui-table.min.css +62 -0
  56. package/dist/modules/fanui-tabs.css +333 -0
  57. package/dist/modules/fanui-tabs.min.css +58 -0
  58. package/dist/modules/fanui-themes.css +2728 -0
  59. package/dist/modules/fanui-themes.min.css +40 -0
  60. package/dist/modules/fanui-tokens.css +587 -0
  61. package/dist/modules/fanui-tokens.min.css +3 -0
  62. package/dist/modules/fanui-utilities.css +6557 -0
  63. package/dist/modules/fanui-utilities.min.css +1762 -0
  64. package/dist/modules/sizes.json +103 -0
  65. package/docs/MIGRATION-v2.md +179 -0
  66. package/examples/01-script-tag.html +149 -0
  67. package/examples/02-react/README.md +39 -0
  68. package/examples/02-react/index.html +12 -0
  69. package/examples/02-react/package.json +20 -0
  70. package/examples/02-react/src/App.jsx +108 -0
  71. package/examples/02-react/src/main.jsx +13 -0
  72. package/examples/02-react/src/useFanUI.js +87 -0
  73. package/examples/02-react/vite.config.js +6 -0
  74. package/examples/03-vue3/README.md +67 -0
  75. package/examples/03-vue3/index.html +12 -0
  76. package/examples/03-vue3/package.json +19 -0
  77. package/examples/03-vue3/src/App.vue +93 -0
  78. package/examples/03-vue3/src/main.js +8 -0
  79. package/examples/03-vue3/src/useFanUI.js +85 -0
  80. package/examples/03-vue3/vite.config.js +6 -0
  81. package/examples/04-vue2-cdn.html +93 -0
  82. package/examples/README.md +34 -0
  83. package/package.json +127 -0
  84. package/src/_functions.scss +319 -0
  85. package/src/_mixins.scss +1202 -0
  86. package/src/_tokens.scss +180 -0
  87. package/src/_variables.scss +491 -0
  88. package/src/base/_animations.scss +210 -0
  89. package/src/base/_reset.scss +359 -0
  90. package/src/base/_rtl.scss +133 -0
  91. package/src/base/_typography.scss +353 -0
  92. package/src/components/_advanced.scss +763 -0
  93. package/src/components/_alert.scss +322 -0
  94. package/src/components/_badge.scss +279 -0
  95. package/src/components/_blog.scss +693 -0
  96. package/src/components/_button.scss +351 -0
  97. package/src/components/_capabilities.scss +463 -0
  98. package/src/components/_card.scss +281 -0
  99. package/src/components/_choice.scss +444 -0
  100. package/src/components/_dashboard.scss +950 -0
  101. package/src/components/_data.scss +618 -0
  102. package/src/components/_feedback.scss +403 -0
  103. package/src/components/_form.scss +408 -0
  104. package/src/components/_glass.scss +374 -0
  105. package/src/components/_input-plus.scss +730 -0
  106. package/src/components/_interactive.scss +885 -0
  107. package/src/components/_marketing.scss +982 -0
  108. package/src/components/_nav.scss +480 -0
  109. package/src/components/_overlay.scss +517 -0
  110. package/src/components/_table.scss +276 -0
  111. package/src/components/_tabs.scss +338 -0
  112. package/src/fanui.d.ts +353 -0
  113. package/src/fanui.js +4782 -0
  114. package/src/fanui.scss +79 -0
  115. package/src/glass/_switches.scss +36 -0
  116. package/src/glass/_tokens.scss +259 -0
  117. package/src/layout/_container.scss +111 -0
  118. package/src/layout/_flex.scss +164 -0
  119. package/src/layout/_grid.scss +180 -0
  120. package/src/themes/_accents.scss +201 -0
  121. package/src/themes/_palettes.scss +180 -0
  122. package/src/utilities/_borders.scss +104 -0
  123. package/src/utilities/_display.scss +145 -0
  124. package/src/utilities/_effects.scss +210 -0
  125. package/src/utilities/_sizing.scss +123 -0
  126. package/src/utilities/_spacing.scss +118 -0
  127. package/src/utilities/_texture.scss +323 -0
@@ -0,0 +1,333 @@
1
+ /* fanUI v2.1.0 · module: tabs(独立产物,自带令牌) */
2
+ .fanui-tabs {
3
+ display: flex;
4
+ flex-direction: column;
5
+ }
6
+ .fanui-tabs__list {
7
+ display: flex;
8
+ align-items: center;
9
+ gap: var(--fanui-space-1);
10
+ position: relative;
11
+ overflow-x: auto;
12
+ overflow-y: hidden;
13
+ scrollbar-width: none;
14
+ -ms-overflow-style: none;
15
+ }
16
+ .fanui-tabs__list::-webkit-scrollbar {
17
+ display: none;
18
+ width: 0;
19
+ height: 0;
20
+ }
21
+ .fanui-tabs__item {
22
+ position: relative;
23
+ display: inline-flex;
24
+ align-items: center;
25
+ gap: 6px;
26
+ flex: 0 0 auto;
27
+ padding: 10px 14px;
28
+ font-size: var(--fanui-font-size-base);
29
+ font-weight: 500;
30
+ line-height: 1.4;
31
+ color: var(--fanui-color-text-muted);
32
+ text-decoration: none;
33
+ background: none;
34
+ border: 0;
35
+ border-bottom: 2px solid transparent;
36
+ cursor: pointer;
37
+ white-space: nowrap;
38
+ box-sizing: border-box;
39
+ transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s, background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
40
+ }
41
+ .fanui-tabs__item:hover {
42
+ color: var(--fanui-color-text-strong);
43
+ text-decoration: none;
44
+ }
45
+ .fanui-tabs__item:focus-visible {
46
+ outline: 0;
47
+ box-shadow: 0 0 0 var(--fanui-focus-ring-offset, 1px) var(--fanui-color-surface, #fff), 0 0 0 calc(var(--fanui-focus-ring-offset, 1px) + var(--fanui-focus-ring-width, 3px)) var(--fanui-focus-ring-color, rgba(14, 116, 144, 0.3));
48
+ }
49
+ @media (forced-colors: active) {
50
+ .fanui-tabs__item:focus-visible {
51
+ outline: 2px solid transparent;
52
+ outline-offset: 2px;
53
+ }
54
+ }
55
+ .fanui-tabs__item.is-active, .fanui-tabs__item[aria-selected=true] {
56
+ color: var(--fanui-primary);
57
+ border-bottom-color: var(--fanui-primary);
58
+ font-weight: 600;
59
+ }
60
+ .fanui-tabs__item.is-disabled, .fanui-tabs__item:disabled {
61
+ color: var(--fanui-color-disabled-text);
62
+ cursor: not-allowed;
63
+ pointer-events: none;
64
+ }
65
+ .fanui-tabs__item__icon {
66
+ display: inline-flex;
67
+ font-size: 1.05em;
68
+ }
69
+ .fanui-tabs__item__close {
70
+ display: inline-flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ width: 16px;
74
+ height: 16px;
75
+ margin-inline-start: 2px;
76
+ margin-inline-end: -4px;
77
+ border-radius: 50%;
78
+ color: inherit;
79
+ opacity: 0.6;
80
+ }
81
+ .fanui-tabs__item__close:hover {
82
+ opacity: 1;
83
+ background-color: rgba(15, 23, 42, 0.1);
84
+ }
85
+ .fanui-tabs__panel {
86
+ display: none;
87
+ padding-top: var(--fanui-space-4);
88
+ }
89
+ .fanui-tabs__panel.is-active {
90
+ display: block;
91
+ animation: fanui-fade-in 200ms cubic-bezier(0, 0, 0.2, 1) both;
92
+ }
93
+ .fanui-tabs__badge {
94
+ margin-inline-start: 4px;
95
+ }
96
+ .fanui-tabs--line > .fanui-tabs__list {
97
+ border-bottom: 1px solid var(--fanui-color-border);
98
+ }
99
+ .fanui-tabs--card > .fanui-tabs__list {
100
+ gap: 4px;
101
+ padding: 4px 4px 0;
102
+ border-bottom: 1px solid var(--fanui-color-border);
103
+ }
104
+ .fanui-tabs--card > .fanui-tabs__list > .fanui-tabs__item {
105
+ border: 1px solid transparent;
106
+ border-bottom: 0;
107
+ border-radius: var(--fanui-radius-base) var(--fanui-radius-base) 0 0;
108
+ margin-bottom: -1px;
109
+ }
110
+ .fanui-tabs--card > .fanui-tabs__list > .fanui-tabs__item.is-active {
111
+ background-color: var(--fanui-color-surface);
112
+ border-color: var(--fanui-color-border);
113
+ border-bottom-color: var(--fanui-color-surface);
114
+ }
115
+ .fanui-tabs--pill > .fanui-tabs__list {
116
+ gap: 4px;
117
+ padding: 4px;
118
+ background-color: var(--fanui-color-surface-sunken);
119
+ border-radius: var(--fanui-radius-md);
120
+ border-bottom: 0;
121
+ }
122
+ .fanui-tabs--pill > .fanui-tabs__list > .fanui-tabs__item {
123
+ border-bottom: 0;
124
+ border-radius: var(--fanui-radius-base);
125
+ padding: 7px 14px;
126
+ }
127
+ .fanui-tabs--pill > .fanui-tabs__list > .fanui-tabs__item.is-active {
128
+ color: var(--fanui-color-text-strong);
129
+ background-color: var(--fanui-color-surface);
130
+ box-shadow: var(--fanui-shadow-xs);
131
+ }
132
+ .fanui-tabs--segmented > .fanui-tabs__list {
133
+ gap: 0;
134
+ border-bottom: 0;
135
+ }
136
+ .fanui-tabs--segmented > .fanui-tabs__list > .fanui-tabs__item {
137
+ border: 1px solid var(--fanui-color-border);
138
+ border-bottom: 1px solid var(--fanui-color-border);
139
+ border-inline-end-width: 0;
140
+ border-radius: 0;
141
+ padding: 7px 16px;
142
+ margin-inline-start: -1px;
143
+ }
144
+ .fanui-tabs--segmented > .fanui-tabs__list > .fanui-tabs__item:first-child {
145
+ margin-inline-start: 0;
146
+ border-radius: var(--fanui-radius-base) 0 0 var(--fanui-radius-base);
147
+ }
148
+ .fanui-tabs--segmented > .fanui-tabs__list > .fanui-tabs__item:last-child {
149
+ border-inline-end-width: 1px;
150
+ border-radius: 0 var(--fanui-radius-base) var(--fanui-radius-base) 0;
151
+ }
152
+ .fanui-tabs--segmented > .fanui-tabs__list > .fanui-tabs__item.is-active {
153
+ color: var(--fanui-primary-fg);
154
+ background-color: var(--fanui-primary);
155
+ border-color: var(--fanui-primary);
156
+ z-index: 1;
157
+ }
158
+ .fanui-tabs--vertical {
159
+ flex-direction: row;
160
+ align-items: stretch;
161
+ gap: var(--fanui-space-4);
162
+ }
163
+ .fanui-tabs--vertical > .fanui-tabs__list {
164
+ flex-direction: column;
165
+ align-items: stretch;
166
+ border-bottom: 0;
167
+ border-inline-end: 1px solid var(--fanui-color-border);
168
+ overflow: visible;
169
+ min-width: var(--fanui-tabs-aside-width, 160px);
170
+ }
171
+ .fanui-tabs--vertical > .fanui-tabs__list > .fanui-tabs__item {
172
+ justify-content: flex-start;
173
+ border-bottom: 0;
174
+ border-inline-end: 2px solid transparent;
175
+ border-radius: var(--fanui-radius-base) 0 0 var(--fanui-radius-base);
176
+ margin-inline-end: -1px;
177
+ }
178
+ .fanui-tabs--vertical > .fanui-tabs__list > .fanui-tabs__item.is-active {
179
+ border-right-color: var(--fanui-primary);
180
+ background-color: var(--fanui-primary-soft);
181
+ }
182
+ .fanui-tabs--vertical > .fanui-tabs__panel {
183
+ flex: 1 1 auto;
184
+ min-width: 0;
185
+ padding-top: 0;
186
+ }
187
+
188
+ .fanui-accordion {
189
+ display: flex;
190
+ flex-direction: column;
191
+ border: 1px solid var(--fanui-color-border);
192
+ border-radius: var(--fanui-radius-lg);
193
+ overflow: hidden;
194
+ background-color: var(--fanui-color-surface);
195
+ }
196
+ .fanui-accordion--flush {
197
+ border: 0;
198
+ border-radius: 0;
199
+ background: transparent;
200
+ }
201
+ .fanui-accordion--separated {
202
+ gap: var(--fanui-space-2);
203
+ border: 0;
204
+ background: transparent;
205
+ }
206
+ .fanui-accordion__item {
207
+ border-bottom: 1px solid var(--fanui-color-border);
208
+ }
209
+ .fanui-accordion__item:last-child {
210
+ border-bottom: 0;
211
+ }
212
+ .fanui-accordion--separated .fanui-accordion__item {
213
+ border: 1px solid var(--fanui-color-border);
214
+ border-radius: var(--fanui-radius-md);
215
+ overflow: hidden;
216
+ background-color: var(--fanui-color-surface);
217
+ }
218
+ .fanui-accordion__header {
219
+ margin: 0;
220
+ font-size: inherit;
221
+ font-weight: inherit;
222
+ }
223
+ .fanui-accordion__trigger {
224
+ display: flex;
225
+ align-items: center;
226
+ justify-content: space-between;
227
+ gap: var(--fanui-space-3);
228
+ width: 100%;
229
+ padding: var(--fanui-space-4) var(--fanui-space-5);
230
+ font-size: var(--fanui-font-size-base);
231
+ font-weight: 600;
232
+ line-height: 1.5;
233
+ text-align: start;
234
+ color: var(--fanui-color-text-strong);
235
+ background: none;
236
+ border: 0;
237
+ cursor: pointer;
238
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s, color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
239
+ }
240
+ .fanui-accordion__trigger:hover {
241
+ background-color: var(--fanui-color-hover);
242
+ }
243
+ .fanui-accordion__trigger:focus-visible {
244
+ outline: 0;
245
+ box-shadow: 0 0 0 var(--fanui-focus-ring-offset, 1px) var(--fanui-color-surface, #fff), 0 0 0 calc(var(--fanui-focus-ring-offset, 1px) + var(--fanui-focus-ring-width, 3px)) var(--fanui-focus-ring-color, rgba(14, 116, 144, 0.3));
246
+ }
247
+ @media (forced-colors: active) {
248
+ .fanui-accordion__trigger:focus-visible {
249
+ outline: 2px solid transparent;
250
+ outline-offset: 2px;
251
+ }
252
+ }
253
+ .fanui-accordion__trigger__icon,
254
+ .fanui-accordion__trigger .fanui-accordion__icon {
255
+ flex: 0 0 auto;
256
+ display: inline-flex;
257
+ font-size: 14px;
258
+ color: var(--fanui-color-text-subtle);
259
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
260
+ }
261
+ .fanui-accordion__trigger[aria-expanded=true] .fanui-accordion__icon, .fanui-accordion__trigger[aria-expanded=true] .fanui-accordion__trigger__icon {
262
+ transform: rotate(180deg);
263
+ }
264
+ .fanui-accordion__trigger--sm {
265
+ padding: var(--fanui-space-3) var(--fanui-space-4);
266
+ font-size: var(--fanui-font-size-sm);
267
+ }
268
+ .fanui-accordion__trigger--lg {
269
+ padding: var(--fanui-space-5);
270
+ font-size: var(--fanui-font-size-md);
271
+ }
272
+ .fanui-accordion__panel {
273
+ display: none;
274
+ padding: 0 var(--fanui-space-5) var(--fanui-space-4);
275
+ font-size: var(--fanui-font-size-base);
276
+ line-height: var(--fanui-line-height-relaxed);
277
+ color: var(--fanui-color-text-muted);
278
+ }
279
+ .fanui-accordion__panel.is-open, .fanui-accordion__panel.is-active {
280
+ display: block;
281
+ animation: fanui-slide-in-down 200ms cubic-bezier(0, 0, 0.2, 1) both;
282
+ }
283
+
284
+ .fanui-collapse__trigger {
285
+ display: inline-flex;
286
+ align-items: center;
287
+ gap: 6px;
288
+ font-size: var(--fanui-font-size-base);
289
+ font-weight: 500;
290
+ color: var(--fanui-color-text);
291
+ background: none;
292
+ border: 0;
293
+ cursor: pointer;
294
+ padding: 0;
295
+ }
296
+ .fanui-collapse__trigger__icon {
297
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
298
+ }
299
+ .fanui-collapse__trigger[aria-expanded=true] .fanui-collapse__trigger__icon {
300
+ transform: rotate(90deg);
301
+ }
302
+ .fanui-collapse__panel {
303
+ display: none;
304
+ }
305
+ .fanui-collapse__panel.is-open {
306
+ display: block;
307
+ animation: fanui-slide-in-down 200ms cubic-bezier(0, 0, 0.2, 1) both;
308
+ }
309
+
310
+ .fanui-tab-scroll {
311
+ display: flex;
312
+ gap: var(--fanui-space-2);
313
+ overflow-x: auto;
314
+ scrollbar-width: thin;
315
+ scrollbar-color: rgba(100, 116, 139, 0.45) transparent;
316
+ }
317
+ .fanui-tab-scroll::-webkit-scrollbar {
318
+ width: 6px;
319
+ height: 6px;
320
+ }
321
+ .fanui-tab-scroll::-webkit-scrollbar-track {
322
+ background: transparent;
323
+ }
324
+ .fanui-tab-scroll::-webkit-scrollbar-thumb {
325
+ background: rgba(100, 116, 139, 0.45);
326
+ border-radius: 9999px;
327
+ }
328
+ .fanui-tab-scroll::-webkit-scrollbar-thumb:hover {
329
+ background: rgba(100, 116, 139, 0.7);
330
+ }
331
+ .fanui-tab-scroll {
332
+ padding-bottom: 2px;
333
+ }
@@ -0,0 +1,58 @@
1
+ .fanui-tabs{display:flex;flex-direction:column}
2
+ .fanui-tabs__list{display:flex;align-items:center;gap:var(--fanui-space-1);position:relative;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}
3
+ .fanui-tabs__list::-webkit-scrollbar{display:none;width:0;height:0}
4
+ .fanui-tabs__item{position:relative;display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:10px 14px;font-size:var(--fanui-font-size-base);font-weight:500;line-height:1.4;color:var(--fanui-color-text-muted);text-decoration:none;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;box-sizing:border-box;transition:color 150ms cubic-bezier(0.4,0,0.2,1) 0s,border-color 150ms cubic-bezier(0.4,0,0.2,1) 0s,background-color 150ms cubic-bezier(0.4,0,0.2,1) 0s}
5
+ .fanui-tabs__item:hover{color:var(--fanui-color-text-strong);text-decoration:none}
6
+ .fanui-tabs__item:focus-visible{outline:0;box-shadow:0 0 0 var(--fanui-focus-ring-offset,1px) var(--fanui-color-surface,#fff),0 0 0 calc(var(--fanui-focus-ring-offset,1px) + var(--fanui-focus-ring-width,3px)) var(--fanui-focus-ring-color,rgba(14,116,144,0.3))}@media (forced-colors:active){.fanui-tabs__item:focus-visible{outline:2px solid transparent;outline-offset:2px}}
7
+ .fanui-tabs__item.is-active,.fanui-tabs__item[aria-selected=true]{color:var(--fanui-primary);border-bottom-color:var(--fanui-primary);font-weight:600}
8
+ .fanui-tabs__item.is-disabled,.fanui-tabs__item:disabled{color:var(--fanui-color-disabled-text);cursor:not-allowed;pointer-events:none}
9
+ .fanui-tabs__item__icon{display:inline-flex;font-size:1.05em}
10
+ .fanui-tabs__item__close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-inline-start:2px;margin-inline-end:-4px;border-radius:50%;color:inherit;opacity:0.6}
11
+ .fanui-tabs__item__close:hover{opacity:1;background-color:rgba(15,23,42,0.1)}
12
+ .fanui-tabs__panel{display:none;padding-top:var(--fanui-space-4)}
13
+ .fanui-tabs__panel.is-active{display:block;animation:fanui-fade-in 200ms cubic-bezier(0,0,0.2,1) both}
14
+ .fanui-tabs__badge{margin-inline-start:4px}
15
+ .fanui-tabs--line>.fanui-tabs__list{border-bottom:1px solid var(--fanui-color-border)}
16
+ .fanui-tabs--card>.fanui-tabs__list{gap:4px;padding:4px 4px 0;border-bottom:1px solid var(--fanui-color-border)}
17
+ .fanui-tabs--card>.fanui-tabs__list>.fanui-tabs__item{border:1px solid transparent;border-bottom:0;border-radius:var(--fanui-radius-base) var(--fanui-radius-base) 0 0;margin-bottom:-1px}
18
+ .fanui-tabs--card>.fanui-tabs__list>.fanui-tabs__item.is-active{background-color:var(--fanui-color-surface);border-color:var(--fanui-color-border);border-bottom-color:var(--fanui-color-surface)}
19
+ .fanui-tabs--pill>.fanui-tabs__list{gap:4px;padding:4px;background-color:var(--fanui-color-surface-sunken);border-radius:var(--fanui-radius-md);border-bottom:0}
20
+ .fanui-tabs--pill>.fanui-tabs__list>.fanui-tabs__item{border-bottom:0;border-radius:var(--fanui-radius-base);padding:7px 14px}
21
+ .fanui-tabs--pill>.fanui-tabs__list>.fanui-tabs__item.is-active{color:var(--fanui-color-text-strong);background-color:var(--fanui-color-surface);box-shadow:var(--fanui-shadow-xs)}
22
+ .fanui-tabs--segmented>.fanui-tabs__list{gap:0;border-bottom:0}
23
+ .fanui-tabs--segmented>.fanui-tabs__list>.fanui-tabs__item{border:1px solid var(--fanui-color-border);border-bottom:1px solid var(--fanui-color-border);border-inline-end-width:0;border-radius:0;padding:7px 16px;margin-inline-start:-1px}
24
+ .fanui-tabs--segmented>.fanui-tabs__list>.fanui-tabs__item:first-child{margin-inline-start:0;border-radius:var(--fanui-radius-base) 0 0 var(--fanui-radius-base)}
25
+ .fanui-tabs--segmented>.fanui-tabs__list>.fanui-tabs__item:last-child{border-inline-end-width:1px;border-radius:0 var(--fanui-radius-base) var(--fanui-radius-base) 0}
26
+ .fanui-tabs--segmented>.fanui-tabs__list>.fanui-tabs__item.is-active{color:var(--fanui-primary-fg);background-color:var(--fanui-primary);border-color:var(--fanui-primary);z-index:1}
27
+ .fanui-tabs--vertical{flex-direction:row;align-items:stretch;gap:var(--fanui-space-4)}
28
+ .fanui-tabs--vertical>.fanui-tabs__list{flex-direction:column;align-items:stretch;border-bottom:0;border-inline-end:1px solid var(--fanui-color-border);overflow:visible;min-width:var(--fanui-tabs-aside-width,160px)}
29
+ .fanui-tabs--vertical>.fanui-tabs__list>.fanui-tabs__item{justify-content:flex-start;border-bottom:0;border-inline-end:2px solid transparent;border-radius:var(--fanui-radius-base) 0 0 var(--fanui-radius-base);margin-inline-end:-1px}
30
+ .fanui-tabs--vertical>.fanui-tabs__list>.fanui-tabs__item.is-active{border-right-color:var(--fanui-primary);background-color:var(--fanui-primary-soft)}
31
+ .fanui-tabs--vertical>.fanui-tabs__panel{flex:1 1 auto;min-width:0;padding-top:0}
32
+ .fanui-accordion{display:flex;flex-direction:column;border:1px solid var(--fanui-color-border);border-radius:var(--fanui-radius-lg);overflow:hidden;background-color:var(--fanui-color-surface)}
33
+ .fanui-accordion--flush{border:0;border-radius:0;background:transparent}
34
+ .fanui-accordion--separated{gap:var(--fanui-space-2);border:0;background:transparent}
35
+ .fanui-accordion__item{border-bottom:1px solid var(--fanui-color-border)}
36
+ .fanui-accordion__item:last-child{border-bottom:0}
37
+ .fanui-accordion--separated .fanui-accordion__item{border:1px solid var(--fanui-color-border);border-radius:var(--fanui-radius-md);overflow:hidden;background-color:var(--fanui-color-surface)}
38
+ .fanui-accordion__header{margin:0;font-size:inherit;font-weight:inherit}
39
+ .fanui-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--fanui-space-3);width:100%;padding:var(--fanui-space-4) var(--fanui-space-5);font-size:var(--fanui-font-size-base);font-weight:600;line-height:1.5;text-align:start;color:var(--fanui-color-text-strong);background:none;border:0;cursor:pointer;transition:background-color 150ms cubic-bezier(0.4,0,0.2,1) 0s,color 150ms cubic-bezier(0.4,0,0.2,1) 0s}
40
+ .fanui-accordion__trigger:hover{background-color:var(--fanui-color-hover)}
41
+ .fanui-accordion__trigger:focus-visible{outline:0;box-shadow:0 0 0 var(--fanui-focus-ring-offset,1px) var(--fanui-color-surface,#fff),0 0 0 calc(var(--fanui-focus-ring-offset,1px) + var(--fanui-focus-ring-width,3px)) var(--fanui-focus-ring-color,rgba(14,116,144,0.3))}@media (forced-colors:active){.fanui-accordion__trigger:focus-visible{outline:2px solid transparent;outline-offset:2px}}
42
+ .fanui-accordion__trigger__icon,.fanui-accordion__trigger .fanui-accordion__icon{flex:0 0 auto;display:inline-flex;font-size:14px;color:var(--fanui-color-text-subtle);transition:transform 200ms cubic-bezier(0.4,0,0.2,1) 0s}
43
+ .fanui-accordion__trigger[aria-expanded=true] .fanui-accordion__icon,.fanui-accordion__trigger[aria-expanded=true] .fanui-accordion__trigger__icon{transform:rotate(180deg)}
44
+ .fanui-accordion__trigger--sm{padding:var(--fanui-space-3) var(--fanui-space-4);font-size:var(--fanui-font-size-sm)}
45
+ .fanui-accordion__trigger--lg{padding:var(--fanui-space-5);font-size:var(--fanui-font-size-md)}
46
+ .fanui-accordion__panel{display:none;padding:0 var(--fanui-space-5) var(--fanui-space-4);font-size:var(--fanui-font-size-base);line-height:var(--fanui-line-height-relaxed);color:var(--fanui-color-text-muted)}
47
+ .fanui-accordion__panel.is-open,.fanui-accordion__panel.is-active{display:block;animation:fanui-slide-in-down 200ms cubic-bezier(0,0,0.2,1) both}
48
+ .fanui-collapse__trigger{display:inline-flex;align-items:center;gap:6px;font-size:var(--fanui-font-size-base);font-weight:500;color:var(--fanui-color-text);background:none;border:0;cursor:pointer;padding:0}
49
+ .fanui-collapse__trigger__icon{transition:transform 200ms cubic-bezier(0.4,0,0.2,1) 0s}
50
+ .fanui-collapse__trigger[aria-expanded=true] .fanui-collapse__trigger__icon{transform:rotate(90deg)}
51
+ .fanui-collapse__panel{display:none}
52
+ .fanui-collapse__panel.is-open{display:block;animation:fanui-slide-in-down 200ms cubic-bezier(0,0,0.2,1) both}
53
+ .fanui-tab-scroll{display:flex;gap:var(--fanui-space-2);overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(100,116,139,0.45) transparent}
54
+ .fanui-tab-scroll::-webkit-scrollbar{width:6px;height:6px}
55
+ .fanui-tab-scroll::-webkit-scrollbar-track{background:transparent}
56
+ .fanui-tab-scroll::-webkit-scrollbar-thumb{background:rgba(100,116,139,0.45);border-radius:9999px}
57
+ .fanui-tab-scroll::-webkit-scrollbar-thumb:hover{background:rgba(100,116,139,0.7)}
58
+ .fanui-tab-scroll{padding-bottom:2px}