@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,575 @@
1
+ /* fanUI v2.1.0 · module: alert(独立产物,自带令牌) */
2
+ .fanui-alert {
3
+ position: relative;
4
+ display: flex;
5
+ align-items: flex-start;
6
+ gap: var(--fanui-space-3);
7
+ padding: var(--fanui-space-3) var(--fanui-space-4);
8
+ font-size: var(--fanui-font-size-base);
9
+ line-height: 1.6;
10
+ color: var(--fanui-color-text);
11
+ background-color: var(--fanui-color-surface-sunken);
12
+ border: 1px solid var(--fanui-color-border);
13
+ border-inline-start: 3px solid var(--fanui-color-text-subtle);
14
+ border-radius: var(--fanui-radius-md);
15
+ box-sizing: border-box;
16
+ transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s, transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
17
+ }
18
+ .fanui-alert.is-hidden, .fanui-alert[hidden] {
19
+ display: none;
20
+ }
21
+ .fanui-alert__icon {
22
+ flex: 0 0 auto;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ width: 20px;
27
+ height: 20px;
28
+ margin-top: 1px;
29
+ font-size: 16px;
30
+ line-height: 1;
31
+ }
32
+ .fanui-alert__content {
33
+ flex: 1 1 auto;
34
+ min-width: 0;
35
+ }
36
+ .fanui-alert__title {
37
+ margin: 0 0 2px;
38
+ font-size: var(--fanui-font-size-base);
39
+ font-weight: 600;
40
+ line-height: 1.5;
41
+ color: var(--fanui-color-text-strong);
42
+ }
43
+ .fanui-alert__desc {
44
+ margin: 0;
45
+ font-size: var(--fanui-font-size-base);
46
+ color: var(--fanui-color-text-muted);
47
+ word-break: break-word;
48
+ }
49
+ .fanui-alert__actions {
50
+ margin-top: var(--fanui-space-3);
51
+ display: flex;
52
+ align-items: center;
53
+ gap: var(--fanui-space-2);
54
+ }
55
+ .fanui-alert__close {
56
+ flex: 0 0 auto;
57
+ display: inline-flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: 22px;
61
+ height: 22px;
62
+ margin: -2px -4px 0 0;
63
+ padding: 0;
64
+ font-size: 14px;
65
+ line-height: 1;
66
+ color: inherit;
67
+ opacity: 0.6;
68
+ background: none;
69
+ border: 0;
70
+ border-radius: var(--fanui-radius-sm);
71
+ cursor: pointer;
72
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s, background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
73
+ }
74
+ .fanui-alert__close:hover {
75
+ opacity: 1;
76
+ background-color: rgba(15, 23, 42, 0.08);
77
+ }
78
+ .fanui-alert__close:focus-visible {
79
+ outline: 0;
80
+ 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));
81
+ }
82
+ @media (forced-colors: active) {
83
+ .fanui-alert__close:focus-visible {
84
+ outline: 2px solid transparent;
85
+ outline-offset: 2px;
86
+ }
87
+ }
88
+ .fanui-alert ul, .fanui-alert ol {
89
+ margin: var(--fanui-space-2) 0 0;
90
+ padding-inline-start: 1.25em;
91
+ color: var(--fanui-color-text-muted);
92
+ }
93
+
94
+ .fanui-alert--primary {
95
+ background-color: var(--fanui-primary-soft, rgba(14, 116, 144, 0.1));
96
+ border-color: var(--fanui-primary-border, rgba(14, 116, 144, 0.28));
97
+ border-left-color: var(--fanui-primary, #0e7490);
98
+ }
99
+ .fanui-alert--primary .fanui-alert__icon {
100
+ color: var(--fanui-primary, #0e7490);
101
+ }
102
+ .fanui-alert--primary .fanui-alert__title {
103
+ color: rgb(4.062745098%, 33.662745098%, 41.7882352941%);
104
+ }
105
+ .fanui-alert--primary .fanui-alert__desc {
106
+ color: rgb(4.831372549%, 40.031372549%, 49.6941176471%);
107
+ }
108
+ [data-fanui-theme=dark] .fanui-alert--primary {
109
+ background-color: rgba(14, 116, 144, 0.16);
110
+ border-color: rgba(14, 116, 144, 0.34);
111
+ }
112
+ [data-fanui-theme=dark] .fanui-alert--primary .fanui-alert__title {
113
+ color: var(--fanui-primary-ink, rgb(35.7333333333%, 62.9333333333%, 70.4%));
114
+ }
115
+ [data-fanui-theme=dark] .fanui-alert--primary .fanui-alert__desc {
116
+ color: var(--fanui-primary, rgb(16.831372549%, 52.031372549%, 61.6941176471%));
117
+ }
118
+
119
+ .fanui-alert--solid.fanui-alert--primary {
120
+ background-color: var(--fanui-primary, #0e7490);
121
+ border-color: var(--fanui-primary, #0e7490);
122
+ border-left-color: rgb(4.1176470588%, 34.1176470588%, 42.3529411765%);
123
+ color: var(--fanui-primary-fg, #ffffff);
124
+ }
125
+ .fanui-alert--solid.fanui-alert--primary .fanui-alert__title,
126
+ .fanui-alert--solid.fanui-alert--primary .fanui-alert__desc,
127
+ .fanui-alert--solid.fanui-alert--primary .fanui-alert__icon {
128
+ color: inherit;
129
+ }
130
+ .fanui-alert--solid.fanui-alert--primary .fanui-alert__desc {
131
+ opacity: 0.88;
132
+ }
133
+
134
+ .fanui-alert--outline.fanui-alert--primary {
135
+ background-color: transparent;
136
+ border-color: rgba(14, 116, 144, 0.45);
137
+ border-left-color: var(--fanui-primary, #0e7490);
138
+ }
139
+ .fanui-alert--outline.fanui-alert--primary .fanui-alert__icon {
140
+ color: var(--fanui-primary, #0e7490);
141
+ }
142
+
143
+ .fanui-alert--accent {
144
+ background-color: var(--fanui-accent-soft, rgba(124, 58, 237, 0.1));
145
+ border-color: var(--fanui-accent-border, rgba(124, 58, 237, 0.28));
146
+ border-left-color: var(--fanui-accent, #7c3aed);
147
+ }
148
+ .fanui-alert--accent .fanui-alert__icon {
149
+ color: var(--fanui-accent, #7c3aed);
150
+ }
151
+ .fanui-alert--accent .fanui-alert__title {
152
+ color: rgb(35.9843137255%, 16.831372549%, 68.7764705882%);
153
+ }
154
+ .fanui-alert--accent .fanui-alert__desc {
155
+ color: rgb(42.7921568627%, 20.0156862745%, 81.7882352941%);
156
+ }
157
+ [data-fanui-theme=dark] .fanui-alert--accent {
158
+ background-color: rgba(124, 58, 237, 0.16);
159
+ border-color: rgba(124, 58, 237, 0.34);
160
+ }
161
+ [data-fanui-theme=dark] .fanui-alert--accent .fanui-alert__title {
162
+ color: var(--fanui-accent-ink, rgb(65.0666666667%, 47.4666666667%, 95.2%));
163
+ }
164
+ [data-fanui-theme=dark] .fanui-alert--accent .fanui-alert__desc {
165
+ color: var(--fanui-accent, rgb(54.7921568627%, 32.0156862745%, 93.7882352941%));
166
+ }
167
+
168
+ .fanui-alert--solid.fanui-alert--accent {
169
+ background-color: var(--fanui-accent, #7c3aed);
170
+ border-color: var(--fanui-accent, #7c3aed);
171
+ border-left-color: rgb(36.4705882353%, 17.0588235294%, 69.7058823529%);
172
+ color: var(--fanui-accent-fg, #ffffff);
173
+ }
174
+ .fanui-alert--solid.fanui-alert--accent .fanui-alert__title,
175
+ .fanui-alert--solid.fanui-alert--accent .fanui-alert__desc,
176
+ .fanui-alert--solid.fanui-alert--accent .fanui-alert__icon {
177
+ color: inherit;
178
+ }
179
+ .fanui-alert--solid.fanui-alert--accent .fanui-alert__desc {
180
+ opacity: 0.88;
181
+ }
182
+
183
+ .fanui-alert--outline.fanui-alert--accent {
184
+ background-color: transparent;
185
+ border-color: rgba(124, 58, 237, 0.45);
186
+ border-left-color: var(--fanui-accent, #7c3aed);
187
+ }
188
+ .fanui-alert--outline.fanui-alert--accent .fanui-alert__icon {
189
+ color: var(--fanui-accent, #7c3aed);
190
+ }
191
+
192
+ .fanui-alert--success {
193
+ background-color: var(--fanui-success-soft, rgba(4, 120, 87, 0.1));
194
+ border-color: var(--fanui-success-border, rgba(4, 120, 87, 0.28));
195
+ border-left-color: var(--fanui-success, #047857);
196
+ }
197
+ .fanui-alert--success .fanui-alert__icon {
198
+ color: var(--fanui-success, #047857);
199
+ }
200
+ .fanui-alert--success .fanui-alert__title {
201
+ color: rgb(1.1607843137%, 34.8235294118%, 25.2470588235%);
202
+ }
203
+ .fanui-alert--success .fanui-alert__desc {
204
+ color: rgb(1.3803921569%, 41.4117647059%, 30.0235294118%);
205
+ }
206
+ [data-fanui-theme=dark] .fanui-alert--success {
207
+ background-color: rgba(4, 120, 87, 0.16);
208
+ border-color: rgba(4, 120, 87, 0.34);
209
+ }
210
+ [data-fanui-theme=dark] .fanui-alert--success .fanui-alert__title {
211
+ color: var(--fanui-success-ink, rgb(33.0666666667%, 64%, 55.2%));
212
+ }
213
+ [data-fanui-theme=dark] .fanui-alert--success .fanui-alert__desc {
214
+ color: var(--fanui-success, rgb(13.3803921569%, 53.4117647059%, 42.0235294118%));
215
+ }
216
+
217
+ .fanui-alert--solid.fanui-alert--success {
218
+ background-color: var(--fanui-success, #047857);
219
+ border-color: var(--fanui-success, #047857);
220
+ border-left-color: rgb(1.1764705882%, 35.2941176471%, 25.5882352941%);
221
+ color: var(--fanui-success-fg, #ffffff);
222
+ }
223
+ .fanui-alert--solid.fanui-alert--success .fanui-alert__title,
224
+ .fanui-alert--solid.fanui-alert--success .fanui-alert__desc,
225
+ .fanui-alert--solid.fanui-alert--success .fanui-alert__icon {
226
+ color: inherit;
227
+ }
228
+ .fanui-alert--solid.fanui-alert--success .fanui-alert__desc {
229
+ opacity: 0.88;
230
+ }
231
+
232
+ .fanui-alert--outline.fanui-alert--success {
233
+ background-color: transparent;
234
+ border-color: rgba(4, 120, 87, 0.45);
235
+ border-left-color: var(--fanui-success, #047857);
236
+ }
237
+ .fanui-alert--outline.fanui-alert--success .fanui-alert__icon {
238
+ color: var(--fanui-success, #047857);
239
+ }
240
+
241
+ .fanui-alert--warning {
242
+ background-color: var(--fanui-warning-soft, rgba(180, 83, 9, 0.1));
243
+ border-color: var(--fanui-warning-border, rgba(180, 83, 9, 0.28));
244
+ border-left-color: var(--fanui-warning, #b45309);
245
+ }
246
+ .fanui-alert--warning .fanui-alert__icon {
247
+ color: var(--fanui-warning, #b45309);
248
+ }
249
+ .fanui-alert--warning .fanui-alert__title {
250
+ color: rgb(52.2352941176%, 24.0862745098%, 2.6117647059%);
251
+ }
252
+ .fanui-alert--warning .fanui-alert__desc {
253
+ color: rgb(62.1176470588%, 28.6431372549%, 3.1058823529%);
254
+ }
255
+ [data-fanui-theme=dark] .fanui-alert--warning {
256
+ background-color: rgba(180, 83, 9, 0.16);
257
+ border-color: rgba(180, 83, 9, 0.34);
258
+ }
259
+ [data-fanui-theme=dark] .fanui-alert--warning .fanui-alert__title {
260
+ color: var(--fanui-warning-ink, rgb(80%, 54.1333333333%, 34.4%));
261
+ }
262
+ [data-fanui-theme=dark] .fanui-alert--warning .fanui-alert__desc {
263
+ color: var(--fanui-warning, rgb(74.1176470588%, 40.6431372549%, 15.1058823529%));
264
+ }
265
+
266
+ .fanui-alert--solid.fanui-alert--warning {
267
+ background-color: var(--fanui-warning, #b45309);
268
+ border-color: var(--fanui-warning, #b45309);
269
+ border-left-color: rgb(52.9411764706%, 24.4117647059%, 2.6470588235%);
270
+ color: var(--fanui-warning-fg, #ffffff);
271
+ }
272
+ .fanui-alert--solid.fanui-alert--warning .fanui-alert__title,
273
+ .fanui-alert--solid.fanui-alert--warning .fanui-alert__desc,
274
+ .fanui-alert--solid.fanui-alert--warning .fanui-alert__icon {
275
+ color: inherit;
276
+ }
277
+ .fanui-alert--solid.fanui-alert--warning .fanui-alert__desc {
278
+ opacity: 0.88;
279
+ }
280
+
281
+ .fanui-alert--outline.fanui-alert--warning {
282
+ background-color: transparent;
283
+ border-color: rgba(180, 83, 9, 0.45);
284
+ border-left-color: var(--fanui-warning, #b45309);
285
+ }
286
+ .fanui-alert--outline.fanui-alert--warning .fanui-alert__icon {
287
+ color: var(--fanui-warning, #b45309);
288
+ }
289
+
290
+ .fanui-alert--danger {
291
+ background-color: var(--fanui-danger-soft, rgba(185, 28, 28, 0.1));
292
+ border-color: var(--fanui-danger-border, rgba(185, 28, 28, 0.28));
293
+ border-left-color: var(--fanui-danger, #b91c1c);
294
+ }
295
+ .fanui-alert--danger .fanui-alert__icon {
296
+ color: var(--fanui-danger, #b91c1c);
297
+ }
298
+ .fanui-alert--danger .fanui-alert__title {
299
+ color: rgb(53.6862745098%, 8.1254901961%, 8.1254901961%);
300
+ }
301
+ .fanui-alert--danger .fanui-alert__desc {
302
+ color: rgb(63.8431372549%, 9.662745098%, 9.662745098%);
303
+ }
304
+ [data-fanui-theme=dark] .fanui-alert--danger {
305
+ background-color: rgba(185, 28, 28, 0.16);
306
+ border-color: rgba(185, 28, 28, 0.34);
307
+ }
308
+ [data-fanui-theme=dark] .fanui-alert--danger .fanui-alert__title {
309
+ color: var(--fanui-danger-ink, rgb(81.3333333333%, 39.4666666667%, 39.4666666667%));
310
+ }
311
+ [data-fanui-theme=dark] .fanui-alert--danger .fanui-alert__desc {
312
+ color: var(--fanui-danger, rgb(75.8431372549%, 21.662745098%, 21.662745098%));
313
+ }
314
+
315
+ .fanui-alert--solid.fanui-alert--danger {
316
+ background-color: var(--fanui-danger, #b91c1c);
317
+ border-color: var(--fanui-danger, #b91c1c);
318
+ border-left-color: rgb(54.4117647059%, 8.2352941176%, 8.2352941176%);
319
+ color: var(--fanui-danger-fg, #ffffff);
320
+ }
321
+ .fanui-alert--solid.fanui-alert--danger .fanui-alert__title,
322
+ .fanui-alert--solid.fanui-alert--danger .fanui-alert__desc,
323
+ .fanui-alert--solid.fanui-alert--danger .fanui-alert__icon {
324
+ color: inherit;
325
+ }
326
+ .fanui-alert--solid.fanui-alert--danger .fanui-alert__desc {
327
+ opacity: 0.88;
328
+ }
329
+
330
+ .fanui-alert--outline.fanui-alert--danger {
331
+ background-color: transparent;
332
+ border-color: rgba(185, 28, 28, 0.45);
333
+ border-left-color: var(--fanui-danger, #b91c1c);
334
+ }
335
+ .fanui-alert--outline.fanui-alert--danger .fanui-alert__icon {
336
+ color: var(--fanui-danger, #b91c1c);
337
+ }
338
+
339
+ .fanui-alert--info {
340
+ background-color: var(--fanui-info-soft, rgba(3, 105, 161, 0.1));
341
+ border-color: var(--fanui-info-border, rgba(3, 105, 161, 0.28));
342
+ border-left-color: var(--fanui-info, #0369a1);
343
+ }
344
+ .fanui-alert--info .fanui-alert__icon {
345
+ color: var(--fanui-info, #0369a1);
346
+ }
347
+ .fanui-alert--info .fanui-alert__title {
348
+ color: rgb(0.8705882353%, 30.4705882353%, 46.7215686275%);
349
+ }
350
+ .fanui-alert--info .fanui-alert__desc {
351
+ color: rgb(1.0352941176%, 36.2352941176%, 55.5607843137%);
352
+ }
353
+ [data-fanui-theme=dark] .fanui-alert--info {
354
+ background-color: rgba(3, 105, 161, 0.16);
355
+ border-color: rgba(3, 105, 161, 0.34);
356
+ }
357
+ [data-fanui-theme=dark] .fanui-alert--info .fanui-alert__title {
358
+ color: var(--fanui-info-ink, rgb(32.8%, 60%, 74.9333333333%));
359
+ }
360
+ [data-fanui-theme=dark] .fanui-alert--info .fanui-alert__desc {
361
+ color: var(--fanui-info, rgb(13.0352941176%, 48.2352941176%, 67.5607843137%));
362
+ }
363
+
364
+ .fanui-alert--solid.fanui-alert--info {
365
+ background-color: var(--fanui-info, #0369a1);
366
+ border-color: var(--fanui-info, #0369a1);
367
+ border-left-color: rgb(0.8823529412%, 30.8823529412%, 47.3529411765%);
368
+ color: var(--fanui-info-fg, #ffffff);
369
+ }
370
+ .fanui-alert--solid.fanui-alert--info .fanui-alert__title,
371
+ .fanui-alert--solid.fanui-alert--info .fanui-alert__desc,
372
+ .fanui-alert--solid.fanui-alert--info .fanui-alert__icon {
373
+ color: inherit;
374
+ }
375
+ .fanui-alert--solid.fanui-alert--info .fanui-alert__desc {
376
+ opacity: 0.88;
377
+ }
378
+
379
+ .fanui-alert--outline.fanui-alert--info {
380
+ background-color: transparent;
381
+ border-color: rgba(3, 105, 161, 0.45);
382
+ border-left-color: var(--fanui-info, #0369a1);
383
+ }
384
+ .fanui-alert--outline.fanui-alert--info .fanui-alert__icon {
385
+ color: var(--fanui-info, #0369a1);
386
+ }
387
+
388
+ .fanui-alert--sm {
389
+ padding: var(--fanui-space-2) var(--fanui-space-3);
390
+ font-size: var(--fanui-font-size-sm);
391
+ }
392
+ .fanui-alert--sm .fanui-alert__icon {
393
+ width: 16px;
394
+ height: 16px;
395
+ font-size: 14px;
396
+ }
397
+
398
+ .fanui-alert--lg {
399
+ padding: var(--fanui-space-4) var(--fanui-space-5);
400
+ }
401
+ .fanui-alert--lg .fanui-alert__title {
402
+ font-size: var(--fanui-font-size-md);
403
+ }
404
+
405
+ .fanui-alert--center {
406
+ align-items: center;
407
+ text-align: center;
408
+ flex-direction: column;
409
+ }
410
+ .fanui-alert--center .fanui-alert__icon {
411
+ margin-top: 0;
412
+ }
413
+
414
+ .fanui-alert--flat {
415
+ border-radius: 0;
416
+ border-inline-start-width: 0;
417
+ border-top-width: 0;
418
+ border-inline-end-width: 0;
419
+ }
420
+
421
+ .fanui-alert--bordered-all {
422
+ border-inline-start-width: 1px;
423
+ }
424
+
425
+ .fanui-alert--banner {
426
+ border-radius: 0;
427
+ border-width: 0 0 1px 0;
428
+ border-inline-start-width: 0;
429
+ padding: var(--fanui-space-3) var(--fanui-container-px, 16px);
430
+ justify-content: center;
431
+ }
432
+ .fanui-alert--banner .fanui-alert__content {
433
+ flex: 0 1 auto;
434
+ display: flex;
435
+ align-items: center;
436
+ gap: var(--fanui-space-2);
437
+ flex-wrap: wrap;
438
+ }
439
+
440
+ .fanui-alert--inline {
441
+ display: inline-flex;
442
+ padding: 4px 10px;
443
+ font-size: var(--fanui-font-size-sm);
444
+ border-radius: var(--fanui-radius-full);
445
+ border-inline-start-width: 1px;
446
+ }
447
+
448
+ .fanui-toast-region {
449
+ position: fixed;
450
+ top: var(--fanui-space-5);
451
+ left: 50%;
452
+ transform: translateX(-50%);
453
+ z-index: var(--fanui-z-toast, 1090);
454
+ display: flex;
455
+ flex-direction: column;
456
+ align-items: center;
457
+ gap: var(--fanui-space-3);
458
+ pointer-events: none;
459
+ max-width: min(92vw, 480px);
460
+ }
461
+ .fanui-toast-region--top-right {
462
+ left: auto;
463
+ right: var(--fanui-space-5);
464
+ transform: none;
465
+ align-items: flex-end;
466
+ }
467
+ .fanui-toast-region--top-left {
468
+ left: var(--fanui-space-5);
469
+ transform: none;
470
+ align-items: flex-start;
471
+ }
472
+ .fanui-toast-region--bottom {
473
+ top: auto;
474
+ bottom: var(--fanui-space-5);
475
+ }
476
+ .fanui-toast-region--bottom-right {
477
+ top: auto;
478
+ bottom: var(--fanui-space-5);
479
+ left: auto;
480
+ right: var(--fanui-space-5);
481
+ transform: none;
482
+ align-items: flex-end;
483
+ }
484
+
485
+ .fanui-toast {
486
+ display: flex;
487
+ align-items: center;
488
+ gap: var(--fanui-space-3);
489
+ padding: var(--fanui-space-3) var(--fanui-space-4);
490
+ min-width: 220px;
491
+ pointer-events: none;
492
+ font-size: var(--fanui-font-size-base);
493
+ color: var(--fanui-color-text);
494
+ background-color: var(--fanui-color-surface);
495
+ border: 1px solid var(--fanui-color-border);
496
+ border-radius: var(--fanui-radius-md);
497
+ box-shadow: var(--fanui-shadow-lg);
498
+ animation: fanui-toast-in 200ms cubic-bezier(0, 0, 0.2, 1) both;
499
+ }
500
+ .fanui-toast--interactive {
501
+ pointer-events: auto;
502
+ }
503
+ .fanui-toast__icon {
504
+ flex: 0 0 auto;
505
+ display: flex;
506
+ font-size: 16px;
507
+ }
508
+ .fanui-toast__content {
509
+ flex: 1 1 auto;
510
+ min-width: 0;
511
+ }
512
+ .fanui-toast__title {
513
+ font-weight: 600;
514
+ color: var(--fanui-color-text-strong);
515
+ }
516
+ .fanui-toast__desc {
517
+ font-size: var(--fanui-font-size-sm);
518
+ color: var(--fanui-color-text-muted);
519
+ }
520
+ .fanui-toast__actions {
521
+ display: flex;
522
+ gap: var(--fanui-space-2);
523
+ margin-inline-start: var(--fanui-space-2);
524
+ flex: 0 0 auto;
525
+ }
526
+ .fanui-toast.is-leaving {
527
+ animation: fanui-fade-out 200ms cubic-bezier(0.4, 0, 1, 1) both;
528
+ }
529
+ .fanui-toast--primary {
530
+ border-inline-start: 3px solid var(--fanui-primary, #0e7490);
531
+ }
532
+ .fanui-toast--primary .fanui-toast__icon {
533
+ color: var(--fanui-primary, #0e7490);
534
+ }
535
+ .fanui-toast--accent {
536
+ border-inline-start: 3px solid var(--fanui-accent, #7c3aed);
537
+ }
538
+ .fanui-toast--accent .fanui-toast__icon {
539
+ color: var(--fanui-accent, #7c3aed);
540
+ }
541
+ .fanui-toast--success {
542
+ border-inline-start: 3px solid var(--fanui-success, #047857);
543
+ }
544
+ .fanui-toast--success .fanui-toast__icon {
545
+ color: var(--fanui-success, #047857);
546
+ }
547
+ .fanui-toast--warning {
548
+ border-inline-start: 3px solid var(--fanui-warning, #b45309);
549
+ }
550
+ .fanui-toast--warning .fanui-toast__icon {
551
+ color: var(--fanui-warning, #b45309);
552
+ }
553
+ .fanui-toast--danger {
554
+ border-inline-start: 3px solid var(--fanui-danger, #b91c1c);
555
+ }
556
+ .fanui-toast--danger .fanui-toast__icon {
557
+ color: var(--fanui-danger, #b91c1c);
558
+ }
559
+ .fanui-toast--info {
560
+ border-inline-start: 3px solid var(--fanui-info, #0369a1);
561
+ }
562
+ .fanui-toast--info .fanui-toast__icon {
563
+ color: var(--fanui-info, #0369a1);
564
+ }
565
+ .fanui-toast--solid {
566
+ background-color: var(--fanui-color-text-strong);
567
+ color: var(--fanui-color-surface);
568
+ border-color: transparent;
569
+ }
570
+ .fanui-toast--solid .fanui-toast__title {
571
+ color: inherit;
572
+ }
573
+ .fanui-toast--solid .fanui-toast__desc {
574
+ color: rgba(255, 255, 255, 0.72);
575
+ }