@kashi-ui/css 0.4.0 → 0.5.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.
- package/dist/base.css +6 -0
- package/dist/components/alert.css +1 -1
- package/dist/components/badge.css +1 -1
- package/dist/components/button.css +6 -6
- package/dist/components/calendar.css +1 -1
- package/dist/components/card.css +3 -3
- package/dist/components/checkbox.css +3 -2
- package/dist/components/dialog.css +74 -0
- package/dist/components/input.css +21 -1
- package/dist/components/radio.css +81 -0
- package/dist/components/select.css +56 -0
- package/dist/components/switch.css +2 -1
- package/dist/components/tabs.css +77 -0
- package/dist/components/toast.css +76 -0
- package/dist/components/tooltip.css +48 -0
- package/dist/kashi.css +491 -26
- package/dist/tokens.css +29 -10
- package/package.json +2 -2
package/dist/kashi.css
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
--k-firoozeh-300: #4fd8cb;
|
|
22
22
|
--k-firoozeh-400: #22c2b4;
|
|
23
23
|
--k-firoozeh-500: #0fa89b;
|
|
24
|
-
--k-firoozeh-600: #
|
|
24
|
+
--k-firoozeh-600: #0b8077;
|
|
25
25
|
--k-firoozeh-700: #0a6b65;
|
|
26
26
|
--k-firoozeh-800: #0d5551;
|
|
27
27
|
--k-firoozeh-900: #0f4644;
|
|
@@ -76,12 +76,15 @@
|
|
|
76
76
|
--k-shab-200: #d5d9e2;
|
|
77
77
|
--k-shab-300: #b1b9c9;
|
|
78
78
|
--k-shab-400: #8792ab;
|
|
79
|
+
--k-shab-450: #848fa7;
|
|
79
80
|
--k-shab-500: #687491;
|
|
81
|
+
--k-shab-550: #5a637a;
|
|
80
82
|
--k-shab-600: #535d78;
|
|
81
83
|
--k-shab-700: #444c62;
|
|
82
84
|
--k-shab-800: #2a2f3d;
|
|
83
85
|
--k-shab-850: #1e222c;
|
|
84
86
|
--k-shab-900: #161921;
|
|
87
|
+
--k-shab-925: #111319;
|
|
85
88
|
--k-shab-950: #0d0f14;
|
|
86
89
|
--k-shab-1000: #08090c;
|
|
87
90
|
--k-brand-50: var(--k-firoozeh-50);
|
|
@@ -162,11 +165,11 @@
|
|
|
162
165
|
--k-bg-primary: var(--k-shab-1000);
|
|
163
166
|
--k-bg-secondary: var(--k-shab-950);
|
|
164
167
|
--k-bg-tertiary: var(--k-shab-900);
|
|
165
|
-
--k-bg-elevated: var(--k-shab-
|
|
168
|
+
--k-bg-elevated: var(--k-shab-925);
|
|
166
169
|
--k-bg-hover: rgb(255 255 255 / 0.05);
|
|
167
170
|
--k-bg-active: rgb(255 255 255 / 0.08);
|
|
168
|
-
--k-bg-brand: var(--k-brand-
|
|
169
|
-
--k-bg-brand-hover: var(--k-brand-
|
|
171
|
+
--k-bg-brand: var(--k-brand-400);
|
|
172
|
+
--k-bg-brand-hover: var(--k-brand-300);
|
|
170
173
|
--k-bg-brand-subtle: color-mix(in srgb, var(--k-brand-500) 14%, transparent);
|
|
171
174
|
--k-bg-error: var(--k-anar-600);
|
|
172
175
|
--k-bg-error-hover: var(--k-anar-700);
|
|
@@ -178,7 +181,8 @@
|
|
|
178
181
|
--k-text-secondary: var(--k-shab-200);
|
|
179
182
|
--k-text-tertiary: var(--k-shab-400);
|
|
180
183
|
--k-text-quaternary: var(--k-shab-500);
|
|
181
|
-
--k-text-on-brand: var(--k-shab-
|
|
184
|
+
--k-text-on-brand: var(--k-shab-1000);
|
|
185
|
+
--k-text-on-error: var(--k-shab-0);
|
|
182
186
|
--k-text-brand: var(--k-brand-300);
|
|
183
187
|
--k-text-error: var(--k-anar-400);
|
|
184
188
|
--k-text-warning: var(--k-zafaran-400);
|
|
@@ -187,11 +191,18 @@
|
|
|
187
191
|
--k-border-primary: var(--k-shab-700);
|
|
188
192
|
--k-border-secondary: var(--k-shab-800);
|
|
189
193
|
--k-border-brand: var(--k-brand-400);
|
|
190
|
-
--k-border-input: var(--k-shab-
|
|
194
|
+
--k-border-input: var(--k-shab-550);
|
|
191
195
|
--k-border-error: var(--k-anar-400);
|
|
192
196
|
--k-ring-brand: 0 0 0 4px color-mix(in srgb, var(--k-brand-400) 28%, transparent);
|
|
193
197
|
--k-ring-error: 0 0 0 4px rgb(248 59 71 / 0.28);
|
|
194
|
-
--k-shadow-skeuomorphic: inset 0 0 0 1px rgb(
|
|
198
|
+
--k-shadow-skeuomorphic: inset 0 0 0 1px rgb(0 0 0 / 0.2), inset 0 -2px 0 rgb(0 0 0 / 0.12);
|
|
199
|
+
--k-highlight: inset 0 1px 0 rgb(255 255 255 / 0.05);
|
|
200
|
+
--k-shadow-xs: 0 1px 2px rgb(0 0 0 / 0.4);
|
|
201
|
+
--k-shadow-sm: 0 1px 3px rgb(0 0 0 / 0.45), 0 1px 2px -1px rgb(0 0 0 / 0.4);
|
|
202
|
+
--k-shadow-md: 0 4px 8px -2px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.35);
|
|
203
|
+
--k-shadow-lg: 0 12px 24px -4px rgb(0 0 0 / 0.55), 0 4px 8px -4px rgb(0 0 0 / 0.35);
|
|
204
|
+
--k-shadow-xl: 0 20px 32px -6px rgb(0 0 0 / 0.6), 0 8px 12px -6px rgb(0 0 0 / 0.4);
|
|
205
|
+
--k-shadow-2xl: 0 28px 56px -12px rgb(0 0 0 / 0.7);
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
[data-theme="light"] {
|
|
@@ -202,8 +213,8 @@
|
|
|
202
213
|
--k-bg-elevated: var(--k-shab-0);
|
|
203
214
|
--k-bg-hover: var(--k-shab-50);
|
|
204
215
|
--k-bg-active: var(--k-shab-100);
|
|
205
|
-
--k-bg-brand: var(--k-brand-
|
|
206
|
-
--k-bg-brand-hover: var(--k-brand-
|
|
216
|
+
--k-bg-brand: var(--k-brand-600);
|
|
217
|
+
--k-bg-brand-hover: var(--k-brand-700);
|
|
207
218
|
--k-bg-brand-subtle: var(--k-brand-50);
|
|
208
219
|
--k-bg-error: var(--k-anar-600);
|
|
209
220
|
--k-bg-error-hover: var(--k-anar-700);
|
|
@@ -216,6 +227,7 @@
|
|
|
216
227
|
--k-text-tertiary: var(--k-shab-600);
|
|
217
228
|
--k-text-quaternary: var(--k-shab-500);
|
|
218
229
|
--k-text-on-brand: var(--k-shab-0);
|
|
230
|
+
--k-text-on-error: var(--k-shab-0);
|
|
219
231
|
--k-text-brand: var(--k-brand-700);
|
|
220
232
|
--k-text-error: var(--k-anar-700);
|
|
221
233
|
--k-text-warning: var(--k-zafaran-700);
|
|
@@ -224,11 +236,18 @@
|
|
|
224
236
|
--k-border-primary: var(--k-shab-300);
|
|
225
237
|
--k-border-secondary: var(--k-shab-200);
|
|
226
238
|
--k-border-brand: var(--k-brand-600);
|
|
227
|
-
--k-border-input: var(--k-shab-
|
|
239
|
+
--k-border-input: var(--k-shab-450);
|
|
228
240
|
--k-border-error: var(--k-anar-500);
|
|
229
241
|
--k-ring-brand: 0 0 0 4px color-mix(in srgb, var(--k-brand-500) 20%, transparent);
|
|
230
242
|
--k-ring-error: 0 0 0 4px rgb(229 29 42 / 0.2);
|
|
231
243
|
--k-shadow-skeuomorphic: inset 0 0 0 1px rgb(10 13 18 / 0.18), inset 0 -2px 0 rgb(10 13 18 / 0.05);
|
|
244
|
+
--k-highlight: 0 0 #0000;
|
|
245
|
+
--k-shadow-xs: 0 1px 2px rgb(10 13 18 / 0.05);
|
|
246
|
+
--k-shadow-sm: 0 1px 3px rgb(10 13 18 / 0.1), 0 1px 2px -1px rgb(10 13 18 / 0.1);
|
|
247
|
+
--k-shadow-md: 0 4px 6px -1px rgb(10 13 18 / 0.1), 0 2px 4px -2px rgb(10 13 18 / 0.06);
|
|
248
|
+
--k-shadow-lg: 0 12px 16px -4px rgb(10 13 18 / 0.08), 0 4px 6px -2px rgb(10 13 18 / 0.03);
|
|
249
|
+
--k-shadow-xl: 0 20px 24px -4px rgb(10 13 18 / 0.08), 0 8px 8px -4px rgb(10 13 18 / 0.03);
|
|
250
|
+
--k-shadow-2xl: 0 24px 48px -12px rgb(10 13 18 / 0.18);
|
|
232
251
|
}
|
|
233
252
|
|
|
234
253
|
}
|
|
@@ -250,6 +269,9 @@
|
|
|
250
269
|
font-size: var(--k-text-md);
|
|
251
270
|
line-height: var(--k-leading-normal);
|
|
252
271
|
-webkit-font-smoothing: antialiased;
|
|
272
|
+
text-rendering: optimizeLegibility;
|
|
273
|
+
/* نوار اسکرول همرنگ تم */
|
|
274
|
+
scrollbar-color: var(--k-border-primary) transparent;
|
|
253
275
|
-moz-osx-font-smoothing: grayscale;
|
|
254
276
|
/* کشیدهنویسی و اتصال درست حروف فارسی */
|
|
255
277
|
font-feature-settings: "kern", "liga", "calt";
|
|
@@ -307,6 +329,9 @@
|
|
|
307
329
|
}
|
|
308
330
|
}
|
|
309
331
|
|
|
332
|
+
/* متن پاراگرافها بدون تککلمهٔ تنها در خط آخر */
|
|
333
|
+
:where(p, li, figcaption) { text-wrap: pretty; }
|
|
334
|
+
|
|
310
335
|
/* ارقام لاتین در کنار متن فارسی: tabular برای جدولها و اعداد */
|
|
311
336
|
.k-tabular { font-variant-numeric: tabular-nums; }
|
|
312
337
|
|
|
@@ -348,7 +373,7 @@
|
|
|
348
373
|
background: var(--_bg);
|
|
349
374
|
color: var(--k-text-tertiary);
|
|
350
375
|
font-size: var(--k-text-sm);
|
|
351
|
-
box-shadow: var(--k-shadow-xs);
|
|
376
|
+
box-shadow: var(--k-shadow-xs), var(--k-highlight);
|
|
352
377
|
}
|
|
353
378
|
|
|
354
379
|
.k-alert--brand { --_accent: var(--k-text-brand); }
|
|
@@ -508,7 +533,7 @@
|
|
|
508
533
|
gap: var(--k-space-1);
|
|
509
534
|
padding-block: 0.125rem;
|
|
510
535
|
padding-inline: var(--_px);
|
|
511
|
-
border: 1px solid color-mix(in srgb, var(--_fg)
|
|
536
|
+
border: 1px solid color-mix(in srgb, var(--_fg) 20%, transparent);
|
|
512
537
|
border-radius: var(--k-badge-radius, var(--k-radius-full));
|
|
513
538
|
background: var(--_bg);
|
|
514
539
|
color: var(--_fg);
|
|
@@ -553,8 +578,8 @@
|
|
|
553
578
|
--_h: var(--k-btn-height-md, calc(2.5rem * var(--k-density)));
|
|
554
579
|
--_px: var(--k-btn-padding-md, calc(0.875rem * var(--k-density)));
|
|
555
580
|
--_fs: var(--k-text-sm);
|
|
556
|
-
--_bg: var(--k-bg-
|
|
557
|
-
--_bg-hover: var(--k-
|
|
581
|
+
--_bg: var(--k-btn-secondary-bg, var(--k-bg-elevated));
|
|
582
|
+
--_bg-hover: color-mix(in srgb, var(--_bg), var(--k-text-primary) 5%);
|
|
558
583
|
--_fg: var(--k-text-secondary);
|
|
559
584
|
--_fg-hover: var(--k-text-primary);
|
|
560
585
|
--_border: var(--k-border-primary);
|
|
@@ -623,7 +648,7 @@
|
|
|
623
648
|
content: "";
|
|
624
649
|
position: absolute;
|
|
625
650
|
inset: 1px;
|
|
626
|
-
border: 1px solid rgb(255 255 255 / 0.
|
|
651
|
+
border: 1px solid rgb(255 255 255 / var(--k-btn-highlight, 0.14));
|
|
627
652
|
border-radius: inherit;
|
|
628
653
|
mask: linear-gradient(to bottom, #000, transparent);
|
|
629
654
|
pointer-events: none;
|
|
@@ -631,6 +656,7 @@
|
|
|
631
656
|
.k-btn:is(.k-btn--primary, .k-btn--danger):is(:disabled, [aria-disabled="true"]:not([aria-busy="true"]))::before { display: none; }
|
|
632
657
|
.k-btn--tertiary {
|
|
633
658
|
--_bg: transparent;
|
|
659
|
+
--_bg-hover: var(--k-bg-hover);
|
|
634
660
|
--_border: transparent;
|
|
635
661
|
--_shadow: none;
|
|
636
662
|
}
|
|
@@ -648,8 +674,8 @@
|
|
|
648
674
|
.k-btn--danger {
|
|
649
675
|
--_bg: var(--k-bg-error);
|
|
650
676
|
--_bg-hover: var(--k-bg-error-hover);
|
|
651
|
-
--_fg: var(--k-text-on-
|
|
652
|
-
--_fg-hover: var(--k-text-on-
|
|
677
|
+
--_fg: var(--k-text-on-error);
|
|
678
|
+
--_fg-hover: var(--k-text-on-error);
|
|
653
679
|
--_border: transparent;
|
|
654
680
|
--_shadow: var(--k-shadow-xs), var(--k-shadow-skeuomorphic);
|
|
655
681
|
--_ring: var(--k-ring-error);
|
|
@@ -657,7 +683,6 @@
|
|
|
657
683
|
.k-btn--danger-secondary {
|
|
658
684
|
--_fg: var(--k-text-error);
|
|
659
685
|
--_fg-hover: var(--k-text-error);
|
|
660
|
-
--_bg-hover: var(--k-bg-error-subtle);
|
|
661
686
|
--_ring: var(--k-ring-error);
|
|
662
687
|
}
|
|
663
688
|
|
|
@@ -836,7 +861,7 @@
|
|
|
836
861
|
border: 1px solid var(--k-border-secondary);
|
|
837
862
|
border-radius: var(--k-radius-xl);
|
|
838
863
|
background: var(--k-calendar-bg, var(--k-bg-elevated));
|
|
839
|
-
box-shadow: var(--k-shadow-xl);
|
|
864
|
+
box-shadow: var(--k-shadow-xl), var(--k-highlight);
|
|
840
865
|
animation: k-pop-in var(--k-duration-fast) var(--k-ease-standard);
|
|
841
866
|
}
|
|
842
867
|
@keyframes k-pop-in { from { opacity: 0; translate: 0 -4px; } }
|
|
@@ -898,7 +923,7 @@
|
|
|
898
923
|
border-radius: var(--k-card-radius, var(--k-radius-xl));
|
|
899
924
|
background: var(--k-card-bg, var(--k-bg-elevated));
|
|
900
925
|
color: var(--k-text-primary);
|
|
901
|
-
box-shadow: var(--k-card-shadow, var(--k-shadow-xs));
|
|
926
|
+
box-shadow: var(--k-card-shadow, var(--k-shadow-xs)), var(--k-highlight);
|
|
902
927
|
overflow: clip;
|
|
903
928
|
}
|
|
904
929
|
|
|
@@ -935,7 +960,7 @@
|
|
|
935
960
|
|
|
936
961
|
.k-card__media { display: block; inline-size: 100%; object-fit: cover; }
|
|
937
962
|
|
|
938
|
-
.k-card--flat { box-shadow:
|
|
963
|
+
.k-card--flat { box-shadow: var(--k-highlight); }
|
|
939
964
|
|
|
940
965
|
.k-card--interactive {
|
|
941
966
|
position: relative;
|
|
@@ -943,7 +968,7 @@
|
|
|
943
968
|
border-color var(--k-duration-fast) var(--k-ease-standard),
|
|
944
969
|
box-shadow var(--k-duration-normal) var(--k-ease-standard);
|
|
945
970
|
}
|
|
946
|
-
.k-card--interactive:hover { border-color: var(--k-border-primary); box-shadow: var(--k-shadow-md); }
|
|
971
|
+
.k-card--interactive:hover { border-color: var(--k-border-primary); box-shadow: var(--k-shadow-md), var(--k-highlight); }
|
|
947
972
|
.k-card--interactive:has(:focus-visible) { box-shadow: var(--k-shadow-md), var(--k-ring-brand); }
|
|
948
973
|
/* لینک اصلی کل کارت را قابلکلیک میکند ولی فقط یک توقف Tab دارد */
|
|
949
974
|
.k-card--interactive :is(a, button).k-card__link::after { content: ""; position: absolute; inset: 0; }
|
|
@@ -979,8 +1004,9 @@
|
|
|
979
1004
|
margin: 0;
|
|
980
1005
|
border: 1px solid var(--_border);
|
|
981
1006
|
border-radius: var(--k-checkbox-radius, calc(0.3125rem * var(--k-radius-factor)));
|
|
982
|
-
background: var(--k-bg-
|
|
1007
|
+
background: var(--k-bg-elevated);
|
|
983
1008
|
color: var(--k-text-on-brand);
|
|
1009
|
+
box-shadow: var(--k-shadow-xs);
|
|
984
1010
|
cursor: pointer;
|
|
985
1011
|
transition:
|
|
986
1012
|
background-color var(--k-duration-fast) var(--k-ease-standard),
|
|
@@ -1001,7 +1027,7 @@
|
|
|
1001
1027
|
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M3 7h8'/%3E%3C/svg%3E");
|
|
1002
1028
|
}
|
|
1003
1029
|
|
|
1004
|
-
.k-checkbox:hover { --_border: var(--k-border-brand); }
|
|
1030
|
+
.k-checkbox:hover:not(:disabled) { --_border: var(--k-border-brand); box-shadow: 0 0 0 4px var(--k-bg-hover); }
|
|
1005
1031
|
|
|
1006
1032
|
.k-checkbox:is(:checked, :indeterminate) {
|
|
1007
1033
|
--_border: var(--k-bg-brand);
|
|
@@ -1048,6 +1074,81 @@
|
|
|
1048
1074
|
.k-checkbox::before { display: none; }
|
|
1049
1075
|
}
|
|
1050
1076
|
|
|
1077
|
+
/* پنجرهٔ گفتگو — روی <dialog> بومی: تلهٔ فوکوس، Esc و غیرفعال شدن پسزمینه رایگان
|
|
1078
|
+
* اندازهها: k-dialog--sm | k-dialog--md (پیشفرض) | k-dialog--lg
|
|
1079
|
+
*
|
|
1080
|
+
* متغیرها: --k-dialog-width --k-dialog-radius --k-dialog-padding
|
|
1081
|
+
*/
|
|
1082
|
+
.k-dialog {
|
|
1083
|
+
--_p: var(--k-dialog-padding, var(--k-space-6));
|
|
1084
|
+
|
|
1085
|
+
inline-size: min(var(--k-dialog-width, 30rem), calc(100vw - 2rem));
|
|
1086
|
+
max-block-size: calc(100dvh - 2rem);
|
|
1087
|
+
margin: auto;
|
|
1088
|
+
padding: 0;
|
|
1089
|
+
border: 1px solid var(--k-border-secondary);
|
|
1090
|
+
border-radius: var(--k-dialog-radius, var(--k-radius-2xl));
|
|
1091
|
+
background: var(--k-bg-elevated);
|
|
1092
|
+
color: var(--k-text-primary);
|
|
1093
|
+
box-shadow: var(--k-shadow-2xl), var(--k-highlight);
|
|
1094
|
+
overflow: auto;
|
|
1095
|
+
}
|
|
1096
|
+
.k-dialog--sm { --k-dialog-width: 24rem; }
|
|
1097
|
+
.k-dialog--lg { --k-dialog-width: 42rem; }
|
|
1098
|
+
|
|
1099
|
+
.k-dialog::backdrop {
|
|
1100
|
+
background: rgb(8 9 12 / 0.6);
|
|
1101
|
+
backdrop-filter: blur(4px);
|
|
1102
|
+
}
|
|
1103
|
+
.k-dialog[open] { animation: k-dialog-in var(--k-duration-normal) var(--k-ease-emphasized); }
|
|
1104
|
+
.k-dialog[open]::backdrop { animation: k-fade-in var(--k-duration-normal) var(--k-ease-standard); }
|
|
1105
|
+
@keyframes k-dialog-in { from { opacity: 0; scale: 0.96; translate: 0 8px; } }
|
|
1106
|
+
@keyframes k-fade-in { from { opacity: 0; } }
|
|
1107
|
+
|
|
1108
|
+
.k-dialog__header {
|
|
1109
|
+
display: flex;
|
|
1110
|
+
align-items: flex-start;
|
|
1111
|
+
gap: var(--k-space-4);
|
|
1112
|
+
padding: var(--_p) var(--_p) 0;
|
|
1113
|
+
}
|
|
1114
|
+
.k-dialog__icon {
|
|
1115
|
+
display: grid;
|
|
1116
|
+
place-items: center;
|
|
1117
|
+
flex-shrink: 0;
|
|
1118
|
+
inline-size: 3rem;
|
|
1119
|
+
block-size: 3rem;
|
|
1120
|
+
border-radius: 50%;
|
|
1121
|
+
background: var(--k-bg-brand-subtle);
|
|
1122
|
+
color: var(--k-text-brand);
|
|
1123
|
+
box-shadow: 0 0 0 8px color-mix(in srgb, var(--k-bg-brand-subtle) 50%, transparent);
|
|
1124
|
+
}
|
|
1125
|
+
.k-dialog__icon svg { inline-size: 1.5rem; block-size: 1.5rem; }
|
|
1126
|
+
.k-dialog--danger .k-dialog__icon { background: var(--k-bg-error-subtle); color: var(--k-text-error); box-shadow: 0 0 0 8px color-mix(in srgb, var(--k-bg-error-subtle) 50%, transparent); }
|
|
1127
|
+
.k-dialog__heading { flex: 1; display: grid; gap: var(--k-space-1); padding-block-start: var(--k-space-1); }
|
|
1128
|
+
.k-dialog__title { margin: 0; font-size: var(--k-text-lg); font-weight: var(--k-weight-semibold); line-height: var(--k-leading-tight); }
|
|
1129
|
+
.k-dialog__description { margin: 0; color: var(--k-text-tertiary); font-size: var(--k-text-sm); line-height: var(--k-leading-normal); }
|
|
1130
|
+
.k-dialog__close { margin-block: -0.25rem; margin-inline-end: -0.5rem; }
|
|
1131
|
+
.k-dialog__body { padding: var(--k-space-5) var(--_p) 0; }
|
|
1132
|
+
.k-dialog__footer {
|
|
1133
|
+
display: flex;
|
|
1134
|
+
flex-wrap: wrap;
|
|
1135
|
+
justify-content: flex-end;
|
|
1136
|
+
gap: var(--k-space-3);
|
|
1137
|
+
padding: var(--k-space-6) var(--_p) var(--_p);
|
|
1138
|
+
}
|
|
1139
|
+
.k-dialog__footer--block > * { flex: 1; }
|
|
1140
|
+
|
|
1141
|
+
/* قفل اسکرول صفحه هنگام باز بودن */
|
|
1142
|
+
html:has(.k-dialog[open]) { overflow: hidden; }
|
|
1143
|
+
|
|
1144
|
+
@media (max-width: 30rem) {
|
|
1145
|
+
.k-dialog__footer { flex-direction: column-reverse; }
|
|
1146
|
+
.k-dialog__footer > * { inline-size: 100%; }
|
|
1147
|
+
}
|
|
1148
|
+
@media (forced-colors: active) {
|
|
1149
|
+
.k-dialog { border-color: CanvasText; }
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1051
1152
|
/* فیلد: برچسب + کنترل + راهنما/خطا — مشترک بین Input، Checkbox و Switch
|
|
1052
1153
|
* <div class="k-field">
|
|
1053
1154
|
* <label class="k-label" for="email">ایمیل <span class="k-label__required" aria-hidden="true">*</span></label>
|
|
@@ -1103,11 +1204,16 @@
|
|
|
1103
1204
|
color: var(--k-text-primary);
|
|
1104
1205
|
box-shadow: var(--k-shadow-xs);
|
|
1105
1206
|
cursor: text;
|
|
1207
|
+
font-size: var(--k-text-md);
|
|
1106
1208
|
transition:
|
|
1107
1209
|
border-color var(--k-duration-fast) var(--k-ease-standard),
|
|
1108
1210
|
box-shadow var(--k-duration-fast) var(--k-ease-standard);
|
|
1109
1211
|
}
|
|
1110
1212
|
|
|
1213
|
+
.k-input:hover:not(:focus-within, :has(:disabled, [aria-invalid="true"])) {
|
|
1214
|
+
--_border: var(--k-input-border-hover, var(--k-text-quaternary));
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1111
1217
|
.k-input:focus-within {
|
|
1112
1218
|
--_border: var(--k-border-brand);
|
|
1113
1219
|
box-shadow: var(--k-shadow-xs), var(--_ring);
|
|
@@ -1139,6 +1245,17 @@
|
|
|
1139
1245
|
font: inherit;
|
|
1140
1246
|
font-size: var(--k-text-md);
|
|
1141
1247
|
}
|
|
1248
|
+
/* ارقام همعرض تا عدد هنگام تایپ جابهجا نشود */
|
|
1249
|
+
.k-input__control:is([inputmode="numeric"], [inputmode="tel"], [inputmode="decimal"]) {
|
|
1250
|
+
font-variant-numeric: tabular-nums;
|
|
1251
|
+
letter-spacing: 0.02em;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
/* iOS هنگام فوکوس روی فیلدی با متن کوچکتر از ۱۶ پیکسل کل صفحه را بزرگ میکند */
|
|
1255
|
+
@supports (-webkit-touch-callout: none) {
|
|
1256
|
+
.k-input__control { font-size: max(16px, 1em); }
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1142
1259
|
.k-input__control::placeholder { color: var(--k-text-tertiary); opacity: 1; }
|
|
1143
1260
|
.k-input__control:disabled { color: var(--k-text-quaternary); cursor: not-allowed; }
|
|
1144
1261
|
|
|
@@ -1173,7 +1290,150 @@
|
|
|
1173
1290
|
|
|
1174
1291
|
@media (forced-colors: active) {
|
|
1175
1292
|
.k-input { border-color: FieldText; }
|
|
1176
|
-
.k-input:focus-within
|
|
1293
|
+
.k-input:hover:not(:focus-within, :has(:disabled, [aria-invalid="true"])) {
|
|
1294
|
+
--_border: var(--k-input-border-hover, var(--k-text-quaternary));
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
.k-input:focus-within { outline-color: Highlight; }
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
/* رادیو — روی <input type="radio"> بومی؛ برای گروه از <fieldset class="k-radio-group"> استفاده کنید
|
|
1301
|
+
* <fieldset class="k-radio-group">
|
|
1302
|
+
* <legend class="k-label">روش ارسال</legend>
|
|
1303
|
+
* <label class="k-check"><input type="radio" name="ship" class="k-radio"><span class="k-check__text">…</span></label>
|
|
1304
|
+
* </fieldset>
|
|
1305
|
+
* کارتهای قابلانتخاب: k-radio-group--cards
|
|
1306
|
+
*
|
|
1307
|
+
* متغیرها: --k-radio-size
|
|
1308
|
+
*/
|
|
1309
|
+
.k-radio {
|
|
1310
|
+
--_s: var(--k-radio-size, 1.125rem);
|
|
1311
|
+
--_border: var(--k-border-input);
|
|
1312
|
+
|
|
1313
|
+
appearance: none;
|
|
1314
|
+
display: inline-grid;
|
|
1315
|
+
place-content: center;
|
|
1316
|
+
flex-shrink: 0;
|
|
1317
|
+
inline-size: var(--_s);
|
|
1318
|
+
block-size: var(--_s);
|
|
1319
|
+
margin: 0;
|
|
1320
|
+
border: 1px solid var(--_border);
|
|
1321
|
+
border-radius: 50%;
|
|
1322
|
+
background: var(--k-bg-elevated);
|
|
1323
|
+
box-shadow: var(--k-shadow-xs);
|
|
1324
|
+
cursor: pointer;
|
|
1325
|
+
transition: border-color var(--k-duration-fast), background-color var(--k-duration-fast), box-shadow var(--k-duration-fast);
|
|
1326
|
+
}
|
|
1327
|
+
.k-radio::before {
|
|
1328
|
+
content: "";
|
|
1329
|
+
inline-size: calc(var(--_s) * 0.4);
|
|
1330
|
+
block-size: calc(var(--_s) * 0.4);
|
|
1331
|
+
border-radius: 50%;
|
|
1332
|
+
background: var(--k-text-on-brand);
|
|
1333
|
+
scale: 0;
|
|
1334
|
+
transition: scale var(--k-duration-fast) var(--k-ease-emphasized);
|
|
1335
|
+
}
|
|
1336
|
+
.k-radio:hover:not(:disabled) { --_border: var(--k-border-brand); box-shadow: 0 0 0 4px var(--k-bg-hover); }
|
|
1337
|
+
.k-radio:checked { --_border: var(--k-bg-brand); background: var(--k-bg-brand); }
|
|
1338
|
+
.k-radio:checked::before { scale: 1; }
|
|
1339
|
+
.k-radio:focus-visible { outline: 2px solid transparent; box-shadow: var(--k-ring-brand); }
|
|
1340
|
+
.k-radio[aria-invalid="true"] { --_border: var(--k-border-error); }
|
|
1341
|
+
.k-radio:disabled { --_border: var(--k-border-secondary); background: var(--k-bg-tertiary); cursor: not-allowed; }
|
|
1342
|
+
.k-radio:disabled::before { background: var(--k-text-quaternary); }
|
|
1343
|
+
|
|
1344
|
+
.k-check > .k-radio { margin-block-start: calc((1.25rem - var(--_s)) / 2); }
|
|
1345
|
+
|
|
1346
|
+
.k-radio-group {
|
|
1347
|
+
display: grid;
|
|
1348
|
+
gap: var(--k-space-3);
|
|
1349
|
+
min-inline-size: 0;
|
|
1350
|
+
margin: 0;
|
|
1351
|
+
padding: 0;
|
|
1352
|
+
border: 0;
|
|
1353
|
+
}
|
|
1354
|
+
.k-radio-group > legend { padding: 0; margin-block-end: var(--k-space-3); }
|
|
1355
|
+
.k-radio-group--inline { display: flex; flex-wrap: wrap; gap: var(--k-space-3) var(--k-space-6); }
|
|
1356
|
+
|
|
1357
|
+
/* کارتهای قابلانتخاب (مثل انتخاب پلن یا روش ارسال) */
|
|
1358
|
+
.k-radio-group--cards .k-check {
|
|
1359
|
+
display: flex;
|
|
1360
|
+
padding: var(--k-space-4);
|
|
1361
|
+
border: 1px solid var(--k-border-secondary);
|
|
1362
|
+
border-radius: var(--k-radius-lg);
|
|
1363
|
+
background: var(--k-bg-elevated);
|
|
1364
|
+
box-shadow: var(--k-shadow-xs), var(--k-highlight);
|
|
1365
|
+
transition: border-color var(--k-duration-fast), box-shadow var(--k-duration-fast);
|
|
1366
|
+
}
|
|
1367
|
+
.k-radio-group--cards .k-check:hover { border-color: var(--k-border-primary); }
|
|
1368
|
+
.k-radio-group--cards .k-check:has(:checked) {
|
|
1369
|
+
border-color: var(--k-border-brand);
|
|
1370
|
+
box-shadow: 0 0 0 1px var(--k-border-brand), var(--k-shadow-xs);
|
|
1371
|
+
}
|
|
1372
|
+
.k-radio-group--cards .k-check:has(:focus-visible) { box-shadow: var(--k-ring-brand); }
|
|
1373
|
+
.k-radio-group--cards .k-check:has(:focus-visible) .k-radio { box-shadow: none; }
|
|
1374
|
+
.k-radio-group--cards .k-check__text { flex: 1; }
|
|
1375
|
+
|
|
1376
|
+
@media (forced-colors: active) {
|
|
1377
|
+
.k-radio { appearance: auto; }
|
|
1378
|
+
.k-radio::before { display: none; }
|
|
1379
|
+
.k-radio-group--cards .k-check:has(:checked) { outline: 2px solid Highlight; }
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
/* انتخاب از فهرست — <select> بومی با ظاهر کاشی (دسترسپذیر و سازگار با گوشی)
|
|
1383
|
+
* <div class="k-select"><select class="k-select__control">…</select></div>
|
|
1384
|
+
* اندازهها: k-select--sm | k-select--lg — خطا: aria-invalid="true"
|
|
1385
|
+
*/
|
|
1386
|
+
.k-select {
|
|
1387
|
+
--_h: var(--k-input-height-md, calc(2.75rem * var(--k-density)));
|
|
1388
|
+
position: relative;
|
|
1389
|
+
display: flex;
|
|
1390
|
+
}
|
|
1391
|
+
.k-select--sm { --_h: var(--k-input-height-sm, calc(2.5rem * var(--k-density))); }
|
|
1392
|
+
.k-select--lg { --_h: var(--k-input-height-lg, calc(3rem * var(--k-density))); }
|
|
1393
|
+
|
|
1394
|
+
.k-select__control {
|
|
1395
|
+
appearance: none;
|
|
1396
|
+
flex: 1;
|
|
1397
|
+
min-inline-size: 0;
|
|
1398
|
+
block-size: var(--_h);
|
|
1399
|
+
padding-inline: calc(0.875rem * var(--k-density)) 2.5rem;
|
|
1400
|
+
border: 1px solid var(--k-input-border, var(--k-border-input));
|
|
1401
|
+
border-radius: var(--k-input-radius, var(--k-radius-md));
|
|
1402
|
+
background: var(--k-input-bg, var(--k-bg-primary));
|
|
1403
|
+
color: var(--k-text-primary);
|
|
1404
|
+
box-shadow: var(--k-shadow-xs);
|
|
1405
|
+
font: inherit;
|
|
1406
|
+
font-size: var(--k-text-md);
|
|
1407
|
+
cursor: pointer;
|
|
1408
|
+
transition: border-color var(--k-duration-fast), box-shadow var(--k-duration-fast);
|
|
1409
|
+
}
|
|
1410
|
+
.k-select__control:hover:not(:disabled, :focus) { border-color: var(--k-text-quaternary); }
|
|
1411
|
+
.k-select__control:focus-visible { outline: 2px solid transparent; border-color: var(--k-border-brand); box-shadow: var(--k-shadow-xs), var(--k-ring-brand); }
|
|
1412
|
+
.k-select__control[aria-invalid="true"] { border-color: var(--k-border-error); }
|
|
1413
|
+
.k-select__control[aria-invalid="true"]:focus-visible { box-shadow: var(--k-ring-error); }
|
|
1414
|
+
.k-select__control:disabled { background: var(--k-bg-secondary); border-color: var(--k-border-secondary); color: var(--k-text-quaternary); box-shadow: none; cursor: not-allowed; }
|
|
1415
|
+
.k-select__control:has(option[value=""]:checked) { color: var(--k-text-tertiary); }
|
|
1416
|
+
.k-select__control option { background: var(--k-bg-elevated); color: var(--k-text-primary); }
|
|
1417
|
+
|
|
1418
|
+
/* فلش در انتهای فیلد */
|
|
1419
|
+
.k-select::after {
|
|
1420
|
+
content: "";
|
|
1421
|
+
position: absolute;
|
|
1422
|
+
inset-block: 0;
|
|
1423
|
+
inset-inline-end: 0.875rem;
|
|
1424
|
+
inline-size: 1.125rem;
|
|
1425
|
+
margin-block: auto;
|
|
1426
|
+
block-size: 1.125rem;
|
|
1427
|
+
background: var(--k-text-tertiary);
|
|
1428
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
|
|
1429
|
+
pointer-events: none;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
@supports (-webkit-touch-callout: none) {
|
|
1433
|
+
.k-select__control { font-size: max(16px, 1em); }
|
|
1434
|
+
}
|
|
1435
|
+
@media (forced-colors: active) {
|
|
1436
|
+
.k-select::after { background: CanvasText; }
|
|
1177
1437
|
}
|
|
1178
1438
|
|
|
1179
1439
|
/* سوییچ — روی <input type="checkbox" role="switch"> بومی
|
|
@@ -1204,6 +1464,7 @@
|
|
|
1204
1464
|
border-radius: var(--k-radius-full);
|
|
1205
1465
|
background: var(--_track);
|
|
1206
1466
|
cursor: pointer;
|
|
1467
|
+
box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.12);
|
|
1207
1468
|
transition:
|
|
1208
1469
|
background-color var(--k-duration-normal) var(--k-ease-standard),
|
|
1209
1470
|
box-shadow var(--k-duration-fast) var(--k-ease-standard);
|
|
@@ -1215,7 +1476,7 @@
|
|
|
1215
1476
|
block-size: calc(var(--_h) - var(--_pad) * 2);
|
|
1216
1477
|
border-radius: var(--k-radius-full);
|
|
1217
1478
|
background: var(--k-switch-thumb, #fff);
|
|
1218
|
-
box-shadow:
|
|
1479
|
+
box-shadow: 0 1px 3px rgb(10 13 18 / 0.2), 0 1px 2px rgb(10 13 18 / 0.12);
|
|
1219
1480
|
transition: margin-inline-start var(--k-duration-normal) var(--k-ease-emphasized);
|
|
1220
1481
|
}
|
|
1221
1482
|
|
|
@@ -1246,4 +1507,208 @@
|
|
|
1246
1507
|
.k-switch:checked::before { background: HighlightText; }
|
|
1247
1508
|
}
|
|
1248
1509
|
|
|
1510
|
+
/* زبانهها (Tabs) — ساختار ARIA را کامپوننت React میسازد
|
|
1511
|
+
* گونهها: k-tabs--line (پیشفرض) | k-tabs--pill | k-tabs--segmented — تمامعرض: k-tabs--block
|
|
1512
|
+
*/
|
|
1513
|
+
.k-tabs { display: grid; gap: var(--k-space-4); }
|
|
1514
|
+
|
|
1515
|
+
.k-tabs__list {
|
|
1516
|
+
position: relative;
|
|
1517
|
+
display: flex;
|
|
1518
|
+
gap: var(--k-space-1);
|
|
1519
|
+
overflow-x: auto;
|
|
1520
|
+
scrollbar-width: none;
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
.k-tabs__tab {
|
|
1524
|
+
position: relative;
|
|
1525
|
+
display: inline-flex;
|
|
1526
|
+
align-items: center;
|
|
1527
|
+
justify-content: center;
|
|
1528
|
+
gap: var(--k-space-2);
|
|
1529
|
+
min-block-size: calc(2.5rem * var(--k-density));
|
|
1530
|
+
padding-inline: var(--k-space-3);
|
|
1531
|
+
border: 0;
|
|
1532
|
+
border-radius: var(--k-radius-md);
|
|
1533
|
+
background: transparent;
|
|
1534
|
+
color: var(--k-text-tertiary);
|
|
1535
|
+
font: inherit;
|
|
1536
|
+
font-size: var(--k-text-sm);
|
|
1537
|
+
font-weight: var(--k-weight-semibold);
|
|
1538
|
+
white-space: nowrap;
|
|
1539
|
+
cursor: pointer;
|
|
1540
|
+
transition: color var(--k-duration-fast), background-color var(--k-duration-fast);
|
|
1541
|
+
}
|
|
1542
|
+
.k-tabs__tab:hover { color: var(--k-text-primary); }
|
|
1543
|
+
.k-tabs__tab[aria-selected="true"] { color: var(--k-text-primary); }
|
|
1544
|
+
.k-tabs__tab:focus-visible { outline: 2px solid transparent; box-shadow: var(--k-ring-brand); }
|
|
1545
|
+
.k-tabs__tab:disabled { color: var(--k-text-quaternary); cursor: not-allowed; }
|
|
1546
|
+
.k-tabs__tab .k-badge { font-size: var(--k-text-xs); padding-block: 0; }
|
|
1547
|
+
|
|
1548
|
+
.k-tabs__panel:focus-visible { outline: 2px solid var(--k-border-brand); outline-offset: 4px; border-radius: var(--k-radius-sm); }
|
|
1549
|
+
|
|
1550
|
+
/* خطی: خط زیر زبانهٔ فعال */
|
|
1551
|
+
.k-tabs--line .k-tabs__list { border-block-end: 1px solid var(--k-border-secondary); gap: var(--k-space-4); }
|
|
1552
|
+
.k-tabs--line .k-tabs__tab { padding-inline: var(--k-space-1); border-radius: 0; }
|
|
1553
|
+
.k-tabs--line .k-tabs__tab:focus-visible { border-radius: var(--k-radius-sm); }
|
|
1554
|
+
.k-tabs--line .k-tabs__tab[aria-selected="true"]::after {
|
|
1555
|
+
content: "";
|
|
1556
|
+
position: absolute;
|
|
1557
|
+
inset-inline: 0;
|
|
1558
|
+
inset-block-end: -1px;
|
|
1559
|
+
block-size: 2px;
|
|
1560
|
+
border-radius: 2px;
|
|
1561
|
+
background: var(--k-border-brand);
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
/* قرصی */
|
|
1565
|
+
.k-tabs--pill .k-tabs__tab:hover { background: var(--k-bg-hover); }
|
|
1566
|
+
.k-tabs--pill .k-tabs__tab[aria-selected="true"] { background: var(--k-bg-brand-subtle); color: var(--k-text-brand); }
|
|
1567
|
+
|
|
1568
|
+
/* چندبخشی: مثل کنترل iOS */
|
|
1569
|
+
.k-tabs--segmented .k-tabs__list {
|
|
1570
|
+
inline-size: fit-content;
|
|
1571
|
+
padding: 3px;
|
|
1572
|
+
border: 1px solid var(--k-border-secondary);
|
|
1573
|
+
border-radius: calc(var(--k-radius-md) + 3px);
|
|
1574
|
+
background: var(--k-bg-secondary);
|
|
1575
|
+
}
|
|
1576
|
+
.k-tabs--segmented .k-tabs__tab { min-block-size: calc(2.25rem * var(--k-density)); }
|
|
1577
|
+
.k-tabs--segmented .k-tabs__tab[aria-selected="true"] {
|
|
1578
|
+
background: var(--k-bg-elevated);
|
|
1579
|
+
box-shadow: var(--k-shadow-sm), var(--k-highlight);
|
|
1580
|
+
}
|
|
1581
|
+
.k-tabs--block .k-tabs__list { inline-size: auto; }
|
|
1582
|
+
.k-tabs--block .k-tabs__tab { flex: 1; }
|
|
1583
|
+
|
|
1584
|
+
@media (forced-colors: active) {
|
|
1585
|
+
.k-tabs__tab[aria-selected="true"] { outline: 2px solid Highlight; }
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
/* اعلان کوتاه (Toast) — محل نمایش را کامپوننت <Toaster> میسازد
|
|
1589
|
+
* رنگها: neutral | success | error | warning | info
|
|
1590
|
+
*/
|
|
1591
|
+
.k-toaster {
|
|
1592
|
+
position: fixed;
|
|
1593
|
+
inset-block-end: var(--k-space-6);
|
|
1594
|
+
inset-inline-end: var(--k-space-6);
|
|
1595
|
+
z-index: var(--k-z-toast);
|
|
1596
|
+
display: grid;
|
|
1597
|
+
gap: var(--k-space-3);
|
|
1598
|
+
inline-size: min(24rem, calc(100vw - 2rem));
|
|
1599
|
+
margin: 0;
|
|
1600
|
+
padding: 0;
|
|
1601
|
+
list-style: none;
|
|
1602
|
+
pointer-events: none;
|
|
1603
|
+
}
|
|
1604
|
+
.k-toaster--top { inset-block: var(--k-space-6) auto; }
|
|
1605
|
+
@media (max-width: 30rem) {
|
|
1606
|
+
.k-toaster { inset-inline: var(--k-space-4); inset-block-end: var(--k-space-4); inline-size: auto; }
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
.k-toast {
|
|
1610
|
+
--_accent: var(--k-text-tertiary);
|
|
1611
|
+
|
|
1612
|
+
position: relative;
|
|
1613
|
+
display: flex;
|
|
1614
|
+
align-items: flex-start;
|
|
1615
|
+
gap: var(--k-space-3);
|
|
1616
|
+
padding: var(--k-space-4);
|
|
1617
|
+
border: 1px solid var(--k-border-secondary);
|
|
1618
|
+
border-radius: var(--k-radius-xl);
|
|
1619
|
+
background: var(--k-bg-elevated);
|
|
1620
|
+
color: var(--k-text-primary);
|
|
1621
|
+
box-shadow: var(--k-shadow-lg), var(--k-highlight);
|
|
1622
|
+
pointer-events: auto;
|
|
1623
|
+
animation: k-toast-in var(--k-duration-slow) var(--k-ease-emphasized);
|
|
1624
|
+
overflow: hidden;
|
|
1625
|
+
}
|
|
1626
|
+
.k-toast[data-state="closing"] { animation: k-toast-out var(--k-duration-normal) var(--k-ease-standard) forwards; }
|
|
1627
|
+
@keyframes k-toast-in { from { opacity: 0; translate: 0 12px; scale: 0.97; } }
|
|
1628
|
+
@keyframes k-toast-out { to { opacity: 0; translate: 0 8px; scale: 0.97; } }
|
|
1629
|
+
|
|
1630
|
+
.k-toast--success { --_accent: var(--k-text-success); }
|
|
1631
|
+
.k-toast--error { --_accent: var(--k-text-error); }
|
|
1632
|
+
.k-toast--warning { --_accent: var(--k-text-warning); }
|
|
1633
|
+
.k-toast--info { --_accent: var(--k-text-info); }
|
|
1634
|
+
|
|
1635
|
+
.k-toast__icon { flex-shrink: 0; inline-size: 1.25rem; block-size: 1.25rem; margin-block-start: 0.125rem; color: var(--_accent); }
|
|
1636
|
+
.k-toast__icon svg { inline-size: 100%; block-size: 100%; }
|
|
1637
|
+
.k-toast__content { flex: 1; display: grid; gap: 0.125rem; min-inline-size: 0; font-size: var(--k-text-sm); }
|
|
1638
|
+
.k-toast__title { margin: 0; font-weight: var(--k-weight-semibold); }
|
|
1639
|
+
.k-toast__description { margin: 0; color: var(--k-text-tertiary); }
|
|
1640
|
+
.k-toast__action { margin-block-start: var(--k-space-2); justify-self: start; }
|
|
1641
|
+
.k-toast__close { margin-block: -0.375rem; margin-inline-end: -0.375rem; }
|
|
1642
|
+
|
|
1643
|
+
/* نوار زمان باقیمانده */
|
|
1644
|
+
.k-toast__progress {
|
|
1645
|
+
position: absolute;
|
|
1646
|
+
inset-inline: 0;
|
|
1647
|
+
inset-block-end: 0;
|
|
1648
|
+
block-size: 2px;
|
|
1649
|
+
background: var(--_accent);
|
|
1650
|
+
opacity: 0.6;
|
|
1651
|
+
transform-origin: var(--_origin, right);
|
|
1652
|
+
animation: k-toast-progress linear forwards;
|
|
1653
|
+
}
|
|
1654
|
+
[dir="ltr"] .k-toast__progress { --_origin: left; }
|
|
1655
|
+
.k-toast:is(:hover, :focus-within) .k-toast__progress { animation-play-state: paused; }
|
|
1656
|
+
@keyframes k-toast-progress { to { scale: 0 1; } }
|
|
1657
|
+
|
|
1658
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1659
|
+
.k-toast__progress { display: none; }
|
|
1660
|
+
}
|
|
1661
|
+
@media (forced-colors: active) {
|
|
1662
|
+
.k-toast { border-color: CanvasText; }
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1665
|
+
/* راهنمای کوتاه (Tooltip) — با hover و فوکوس، بسته شدن با Esc (WCAG 1.4.13)
|
|
1666
|
+
* فقط برای توضیح تکمیلی؛ اطلاعات ضروری را در tooltip پنهان نکنید.
|
|
1667
|
+
*/
|
|
1668
|
+
.k-tooltip-anchor { position: relative; display: inline-flex; }
|
|
1669
|
+
|
|
1670
|
+
.k-tooltip {
|
|
1671
|
+
position: absolute;
|
|
1672
|
+
inset-block-end: calc(100% + 8px);
|
|
1673
|
+
inset-inline-start: 50%;
|
|
1674
|
+
z-index: var(--k-z-dropdown);
|
|
1675
|
+
inline-size: max-content;
|
|
1676
|
+
max-inline-size: 16rem;
|
|
1677
|
+
padding: var(--k-space-1_5) var(--k-space-3);
|
|
1678
|
+
border-radius: var(--k-radius-md);
|
|
1679
|
+
background: var(--k-tooltip-bg, var(--k-text-primary));
|
|
1680
|
+
color: var(--k-tooltip-fg, var(--k-bg-primary));
|
|
1681
|
+
box-shadow: var(--k-shadow-lg);
|
|
1682
|
+
font-size: var(--k-text-xs);
|
|
1683
|
+
font-weight: var(--k-weight-medium);
|
|
1684
|
+
line-height: 1.6;
|
|
1685
|
+
text-align: center;
|
|
1686
|
+
translate: 50% 0;
|
|
1687
|
+
pointer-events: auto;
|
|
1688
|
+
animation: k-tip-in var(--k-duration-fast) var(--k-ease-standard);
|
|
1689
|
+
}
|
|
1690
|
+
[dir="ltr"] .k-tooltip { translate: -50% 0; }
|
|
1691
|
+
.k-tooltip[hidden] { display: none; }
|
|
1692
|
+
.k-tooltip--bottom { inset-block: calc(100% + 8px) auto; }
|
|
1693
|
+
|
|
1694
|
+
/* پیکان */
|
|
1695
|
+
.k-tooltip::after {
|
|
1696
|
+
content: "";
|
|
1697
|
+
position: absolute;
|
|
1698
|
+
inset-block-start: 100%;
|
|
1699
|
+
inset-inline-start: 50%;
|
|
1700
|
+
translate: 50% 0;
|
|
1701
|
+
border: 5px solid transparent;
|
|
1702
|
+
border-block-start-color: var(--k-tooltip-bg, var(--k-text-primary));
|
|
1703
|
+
}
|
|
1704
|
+
[dir="ltr"] .k-tooltip::after { translate: -50% 0; }
|
|
1705
|
+
.k-tooltip--bottom::after { inset-block: auto 100%; border-block-start-color: transparent; border-block-end-color: var(--k-tooltip-bg, var(--k-text-primary)); }
|
|
1706
|
+
@keyframes k-tip-in { from { opacity: 0; translate: 50% 3px; } }
|
|
1707
|
+
[dir="ltr"] .k-tooltip { animation-name: k-tip-in-ltr; }
|
|
1708
|
+
@keyframes k-tip-in-ltr { from { opacity: 0; translate: -50% 3px; } }
|
|
1709
|
+
|
|
1710
|
+
@media (forced-colors: active) {
|
|
1711
|
+
.k-tooltip { border: 1px solid CanvasText; }
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1249
1714
|
}
|