@dskripchenko/laravel-admin 1.1.23 → 1.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.
- package/dist/components/auth/ForgotPasswordPage.vue.d.ts +9 -0
- package/dist/components/auth/LoginPage.vue.d.ts +7 -3
- package/dist/components/auth/ResetPasswordPage.vue.d.ts +7 -0
- package/dist/components/dashboard/AddWidgetDialog.vue.d.ts +12 -0
- package/dist/components/dashboard/BarChartWidget.vue.d.ts +1 -1
- package/dist/components/dashboard/ChartWidget.vue.d.ts +18 -0
- package/dist/components/dashboard/DashboardPage.vue.d.ts +8 -6
- package/dist/components/dashboard/GaugeWidget.vue.d.ts +1 -1
- package/dist/components/dashboard/WidgetActionsOverlay.vue.d.ts +8 -0
- package/dist/components/dashboard/WidgetConfigDialog.vue.d.ts +24 -0
- package/dist/components/dashboard/builtin.d.ts +5 -0
- package/dist/components/fields/DateField.vue.d.ts +2 -2
- package/dist/components/fields/NumberField.vue.d.ts +3 -3
- package/dist/components/fields/SelectField.vue.d.ts +1 -1
- package/dist/components/fields/TagsField.vue.d.ts +38 -0
- package/dist/components/fields/TextAreaField.vue.d.ts +1 -1
- package/dist/components/fields/TextField.vue.d.ts +1 -1
- package/dist/components/fields/TranslatableField.vue.d.ts +24 -0
- package/dist/components/fields/wysiwyg/quill/QuillField.vue.d.ts +4 -5
- package/dist/components/infolist/BadgeEntry.vue.d.ts +1 -1
- package/dist/components/infolist/TextEntry.vue.d.ts +6 -1
- package/dist/components/profile/ApiTokensManager.vue.d.ts +2 -0
- package/dist/components/profile/TwoFactorSetup.vue.d.ts +24 -0
- package/dist/components/resource/AdminFilterToolbar.vue.d.ts +42 -0
- package/dist/components/resource/AuditTimeline.vue.d.ts +12 -0
- package/dist/components/resource/FilterEditor.d.ts +58 -0
- package/dist/components/resource/InlineEditCell.vue.d.ts +26 -0
- package/dist/components/resource/ResourceFormPage.vue.d.ts +6 -3
- package/dist/components/resource/ResourceIndexPage.vue.d.ts +10 -4
- package/dist/components/resource/ResourceViewPage.vue.d.ts +33 -4
- package/dist/components/shell/AdminShell.vue.d.ts +8 -2
- package/dist/components/shell/AdminSidebar.vue.d.ts +10 -4
- package/dist/components/shell/AdminTopBar.vue.d.ts +4 -4
- package/dist/components/shell/BrandLogo.vue.d.ts +16 -0
- package/dist/components/shell/NotificationsDrawer.vue.d.ts +2 -0
- package/dist/components/shell/iconRegistry.d.ts +18 -0
- package/dist/createAdminApp.d.ts +3 -0
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6200 -2499
- package/dist/index.mjs.map +1 -1
- package/dist/quill.cjs +1 -1
- package/dist/quill.cjs.map +1 -1
- package/dist/quill.mjs +21 -33
- package/dist/quill.mjs.map +1 -1
- package/dist/router/index.d.ts +4 -0
- package/dist/stores/dashboard.d.ts +212 -0
- package/dist/stores/i18n.d.ts +31 -0
- package/dist/stores/manifest.d.ts +111 -11
- package/dist/stores/navigation.d.ts +1 -1
- package/dist/stores/notifications.d.ts +14 -2
- package/dist/stores/resourceForm.d.ts +3 -3
- package/dist/stores/resourceIndex.d.ts +1 -1
- package/dist/stores/toast.d.ts +16 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -20,8 +20,15 @@ export interface ManifestResourceMeta {
|
|
|
20
20
|
label: string;
|
|
21
21
|
icon?: string;
|
|
22
22
|
group?: string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
25
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
26
|
+
*/
|
|
27
|
+
subject_type?: string | null;
|
|
23
28
|
permissions: Record<string, string>;
|
|
24
29
|
fields: ManifestNode[];
|
|
30
|
+
/** Read-only entries для view-page. Default — auto-generated из fields(). */
|
|
31
|
+
infolist?: ManifestNode[];
|
|
25
32
|
columns: ManifestNode[];
|
|
26
33
|
filters: ManifestNode[];
|
|
27
34
|
actions: ManifestNode[];
|
|
@@ -61,12 +68,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
61
68
|
slug: string;
|
|
62
69
|
label: string;
|
|
63
70
|
icon?: string | undefined;
|
|
64
|
-
group?: string | null
|
|
71
|
+
group?: string | null
|
|
72
|
+
/**
|
|
73
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
74
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
75
|
+
*/
|
|
76
|
+
| undefined;
|
|
77
|
+
subject_type?: string | null | undefined;
|
|
65
78
|
permissions: Record<string, string>;
|
|
66
79
|
fields: {
|
|
67
80
|
[x: string]: unknown;
|
|
68
81
|
type: string;
|
|
69
82
|
}[];
|
|
83
|
+
infolist?: {
|
|
84
|
+
[x: string]: unknown;
|
|
85
|
+
type: string;
|
|
86
|
+
}[] | undefined;
|
|
70
87
|
columns: {
|
|
71
88
|
[x: string]: unknown;
|
|
72
89
|
type: string;
|
|
@@ -110,12 +127,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
110
127
|
slug: string;
|
|
111
128
|
label: string;
|
|
112
129
|
icon?: string | undefined;
|
|
113
|
-
group?: string | null
|
|
130
|
+
group?: string | null
|
|
131
|
+
/**
|
|
132
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
133
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
134
|
+
*/
|
|
135
|
+
| undefined;
|
|
136
|
+
subject_type?: string | null | undefined;
|
|
114
137
|
permissions: Record<string, string>;
|
|
115
138
|
fields: {
|
|
116
139
|
[x: string]: unknown;
|
|
117
140
|
type: string;
|
|
118
141
|
}[];
|
|
142
|
+
infolist?: {
|
|
143
|
+
[x: string]: unknown;
|
|
144
|
+
type: string;
|
|
145
|
+
}[] | undefined;
|
|
119
146
|
columns: {
|
|
120
147
|
[x: string]: unknown;
|
|
121
148
|
type: string;
|
|
@@ -155,18 +182,29 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
155
182
|
} | null>;
|
|
156
183
|
loading: import("vue").Ref<boolean, boolean>;
|
|
157
184
|
error: import("vue").Ref<Error | null, Error | null>;
|
|
185
|
+
bootResolved: import("vue").Ref<boolean, boolean>;
|
|
158
186
|
isLoaded: import("vue").ComputedRef<boolean>;
|
|
159
187
|
version: import("vue").ComputedRef<string | null>;
|
|
160
188
|
resources: import("vue").ComputedRef<{
|
|
161
189
|
slug: string;
|
|
162
190
|
label: string;
|
|
163
191
|
icon?: string | undefined;
|
|
164
|
-
group?: string | null
|
|
192
|
+
group?: string | null
|
|
193
|
+
/**
|
|
194
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
195
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
196
|
+
*/
|
|
197
|
+
| undefined;
|
|
198
|
+
subject_type?: string | null | undefined;
|
|
165
199
|
permissions: Record<string, string>;
|
|
166
200
|
fields: {
|
|
167
201
|
[x: string]: unknown;
|
|
168
202
|
type: string;
|
|
169
203
|
}[];
|
|
204
|
+
infolist?: {
|
|
205
|
+
[x: string]: unknown;
|
|
206
|
+
type: string;
|
|
207
|
+
}[] | undefined;
|
|
170
208
|
columns: {
|
|
171
209
|
[x: string]: unknown;
|
|
172
210
|
type: string;
|
|
@@ -206,7 +244,7 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
206
244
|
getSettings: (slug: string) => ManifestSettingsMeta | null;
|
|
207
245
|
load: (force?: boolean) => Promise<AdminManifest>;
|
|
208
246
|
reset: () => void;
|
|
209
|
-
}, "loading" | "error" | "manifest">, Pick<{
|
|
247
|
+
}, "loading" | "error" | "manifest" | "bootResolved">, Pick<{
|
|
210
248
|
manifest: import("vue").Ref<{
|
|
211
249
|
version: string;
|
|
212
250
|
locale: string;
|
|
@@ -214,12 +252,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
214
252
|
slug: string;
|
|
215
253
|
label: string;
|
|
216
254
|
icon?: string | undefined;
|
|
217
|
-
group?: string | null
|
|
255
|
+
group?: string | null
|
|
256
|
+
/**
|
|
257
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
258
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
259
|
+
*/
|
|
260
|
+
| undefined;
|
|
261
|
+
subject_type?: string | null | undefined;
|
|
218
262
|
permissions: Record<string, string>;
|
|
219
263
|
fields: {
|
|
220
264
|
[x: string]: unknown;
|
|
221
265
|
type: string;
|
|
222
266
|
}[];
|
|
267
|
+
infolist?: {
|
|
268
|
+
[x: string]: unknown;
|
|
269
|
+
type: string;
|
|
270
|
+
}[] | undefined;
|
|
223
271
|
columns: {
|
|
224
272
|
[x: string]: unknown;
|
|
225
273
|
type: string;
|
|
@@ -263,12 +311,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
263
311
|
slug: string;
|
|
264
312
|
label: string;
|
|
265
313
|
icon?: string | undefined;
|
|
266
|
-
group?: string | null
|
|
314
|
+
group?: string | null
|
|
315
|
+
/**
|
|
316
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
317
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
318
|
+
*/
|
|
319
|
+
| undefined;
|
|
320
|
+
subject_type?: string | null | undefined;
|
|
267
321
|
permissions: Record<string, string>;
|
|
268
322
|
fields: {
|
|
269
323
|
[x: string]: unknown;
|
|
270
324
|
type: string;
|
|
271
325
|
}[];
|
|
326
|
+
infolist?: {
|
|
327
|
+
[x: string]: unknown;
|
|
328
|
+
type: string;
|
|
329
|
+
}[] | undefined;
|
|
272
330
|
columns: {
|
|
273
331
|
[x: string]: unknown;
|
|
274
332
|
type: string;
|
|
@@ -308,18 +366,29 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
308
366
|
} | null>;
|
|
309
367
|
loading: import("vue").Ref<boolean, boolean>;
|
|
310
368
|
error: import("vue").Ref<Error | null, Error | null>;
|
|
369
|
+
bootResolved: import("vue").Ref<boolean, boolean>;
|
|
311
370
|
isLoaded: import("vue").ComputedRef<boolean>;
|
|
312
371
|
version: import("vue").ComputedRef<string | null>;
|
|
313
372
|
resources: import("vue").ComputedRef<{
|
|
314
373
|
slug: string;
|
|
315
374
|
label: string;
|
|
316
375
|
icon?: string | undefined;
|
|
317
|
-
group?: string | null
|
|
376
|
+
group?: string | null
|
|
377
|
+
/**
|
|
378
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
379
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
380
|
+
*/
|
|
381
|
+
| undefined;
|
|
382
|
+
subject_type?: string | null | undefined;
|
|
318
383
|
permissions: Record<string, string>;
|
|
319
384
|
fields: {
|
|
320
385
|
[x: string]: unknown;
|
|
321
386
|
type: string;
|
|
322
387
|
}[];
|
|
388
|
+
infolist?: {
|
|
389
|
+
[x: string]: unknown;
|
|
390
|
+
type: string;
|
|
391
|
+
}[] | undefined;
|
|
323
392
|
columns: {
|
|
324
393
|
[x: string]: unknown;
|
|
325
394
|
type: string;
|
|
@@ -359,7 +428,7 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
359
428
|
getSettings: (slug: string) => ManifestSettingsMeta | null;
|
|
360
429
|
load: (force?: boolean) => Promise<AdminManifest>;
|
|
361
430
|
reset: () => void;
|
|
362
|
-
}, "
|
|
431
|
+
}, "version" | "isLoaded" | "settings" | "resources" | "screens" | "plugins">, Pick<{
|
|
363
432
|
manifest: import("vue").Ref<{
|
|
364
433
|
version: string;
|
|
365
434
|
locale: string;
|
|
@@ -367,12 +436,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
367
436
|
slug: string;
|
|
368
437
|
label: string;
|
|
369
438
|
icon?: string | undefined;
|
|
370
|
-
group?: string | null
|
|
439
|
+
group?: string | null
|
|
440
|
+
/**
|
|
441
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
442
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
443
|
+
*/
|
|
444
|
+
| undefined;
|
|
445
|
+
subject_type?: string | null | undefined;
|
|
371
446
|
permissions: Record<string, string>;
|
|
372
447
|
fields: {
|
|
373
448
|
[x: string]: unknown;
|
|
374
449
|
type: string;
|
|
375
450
|
}[];
|
|
451
|
+
infolist?: {
|
|
452
|
+
[x: string]: unknown;
|
|
453
|
+
type: string;
|
|
454
|
+
}[] | undefined;
|
|
376
455
|
columns: {
|
|
377
456
|
[x: string]: unknown;
|
|
378
457
|
type: string;
|
|
@@ -416,12 +495,22 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
416
495
|
slug: string;
|
|
417
496
|
label: string;
|
|
418
497
|
icon?: string | undefined;
|
|
419
|
-
group?: string | null
|
|
498
|
+
group?: string | null
|
|
499
|
+
/**
|
|
500
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
501
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
502
|
+
*/
|
|
503
|
+
| undefined;
|
|
504
|
+
subject_type?: string | null | undefined;
|
|
420
505
|
permissions: Record<string, string>;
|
|
421
506
|
fields: {
|
|
422
507
|
[x: string]: unknown;
|
|
423
508
|
type: string;
|
|
424
509
|
}[];
|
|
510
|
+
infolist?: {
|
|
511
|
+
[x: string]: unknown;
|
|
512
|
+
type: string;
|
|
513
|
+
}[] | undefined;
|
|
425
514
|
columns: {
|
|
426
515
|
[x: string]: unknown;
|
|
427
516
|
type: string;
|
|
@@ -461,18 +550,29 @@ export declare const useManifestStore: import("pinia").StoreDefinition<"admin-ma
|
|
|
461
550
|
} | null>;
|
|
462
551
|
loading: import("vue").Ref<boolean, boolean>;
|
|
463
552
|
error: import("vue").Ref<Error | null, Error | null>;
|
|
553
|
+
bootResolved: import("vue").Ref<boolean, boolean>;
|
|
464
554
|
isLoaded: import("vue").ComputedRef<boolean>;
|
|
465
555
|
version: import("vue").ComputedRef<string | null>;
|
|
466
556
|
resources: import("vue").ComputedRef<{
|
|
467
557
|
slug: string;
|
|
468
558
|
label: string;
|
|
469
559
|
icon?: string | undefined;
|
|
470
|
-
group?: string | null
|
|
560
|
+
group?: string | null
|
|
561
|
+
/**
|
|
562
|
+
* Eloquent morph-class либо FQCN модели — нужен AuditTimeline'у как
|
|
563
|
+
* `subject_type` параметр для /audit/timeline endpoint'а.
|
|
564
|
+
*/
|
|
565
|
+
| undefined;
|
|
566
|
+
subject_type?: string | null | undefined;
|
|
471
567
|
permissions: Record<string, string>;
|
|
472
568
|
fields: {
|
|
473
569
|
[x: string]: unknown;
|
|
474
570
|
type: string;
|
|
475
571
|
}[];
|
|
572
|
+
infolist?: {
|
|
573
|
+
[x: string]: unknown;
|
|
574
|
+
type: string;
|
|
575
|
+
}[] | undefined;
|
|
476
576
|
columns: {
|
|
477
577
|
[x: string]: unknown;
|
|
478
578
|
type: string;
|
|
@@ -47,6 +47,7 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
47
47
|
last_page: number;
|
|
48
48
|
} | null>;
|
|
49
49
|
lastFilter: import("vue").Ref<NotificationFilter, NotificationFilter>;
|
|
50
|
+
isOpen: import("vue").Ref<boolean, boolean>;
|
|
50
51
|
hasUnread: import("vue").ComputedRef<boolean>;
|
|
51
52
|
hydrate: (bootstrap: AdminBootstrap) => void;
|
|
52
53
|
load: (filter?: NotificationFilter, page?: number) => Promise<void>;
|
|
@@ -54,7 +55,10 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
54
55
|
markAsRead: (id: string) => Promise<void>;
|
|
55
56
|
markAllAsRead: () => Promise<void>;
|
|
56
57
|
destroy: (id: string) => Promise<void>;
|
|
57
|
-
|
|
58
|
+
openDrawer: () => void;
|
|
59
|
+
closeDrawer: () => void;
|
|
60
|
+
toggleDrawer: () => void;
|
|
61
|
+
}, "meta" | "items" | "unreadCount" | "loading" | "lastFilter" | "isOpen">, Pick<{
|
|
58
62
|
items: import("vue").Ref<{
|
|
59
63
|
id: string;
|
|
60
64
|
type: string;
|
|
@@ -87,6 +91,7 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
87
91
|
last_page: number;
|
|
88
92
|
} | null>;
|
|
89
93
|
lastFilter: import("vue").Ref<NotificationFilter, NotificationFilter>;
|
|
94
|
+
isOpen: import("vue").Ref<boolean, boolean>;
|
|
90
95
|
hasUnread: import("vue").ComputedRef<boolean>;
|
|
91
96
|
hydrate: (bootstrap: AdminBootstrap) => void;
|
|
92
97
|
load: (filter?: NotificationFilter, page?: number) => Promise<void>;
|
|
@@ -94,6 +99,9 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
94
99
|
markAsRead: (id: string) => Promise<void>;
|
|
95
100
|
markAllAsRead: () => Promise<void>;
|
|
96
101
|
destroy: (id: string) => Promise<void>;
|
|
102
|
+
openDrawer: () => void;
|
|
103
|
+
closeDrawer: () => void;
|
|
104
|
+
toggleDrawer: () => void;
|
|
97
105
|
}, "hasUnread">, Pick<{
|
|
98
106
|
items: import("vue").Ref<{
|
|
99
107
|
id: string;
|
|
@@ -127,6 +135,7 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
127
135
|
last_page: number;
|
|
128
136
|
} | null>;
|
|
129
137
|
lastFilter: import("vue").Ref<NotificationFilter, NotificationFilter>;
|
|
138
|
+
isOpen: import("vue").Ref<boolean, boolean>;
|
|
130
139
|
hasUnread: import("vue").ComputedRef<boolean>;
|
|
131
140
|
hydrate: (bootstrap: AdminBootstrap) => void;
|
|
132
141
|
load: (filter?: NotificationFilter, page?: number) => Promise<void>;
|
|
@@ -134,4 +143,7 @@ export declare const useNotificationsStore: import("pinia").StoreDefinition<"adm
|
|
|
134
143
|
markAsRead: (id: string) => Promise<void>;
|
|
135
144
|
markAllAsRead: () => Promise<void>;
|
|
136
145
|
destroy: (id: string) => Promise<void>;
|
|
137
|
-
|
|
146
|
+
openDrawer: () => void;
|
|
147
|
+
closeDrawer: () => void;
|
|
148
|
+
toggleDrawer: () => void;
|
|
149
|
+
}, "hydrate" | "load" | "loadUnread" | "markAsRead" | "markAllAsRead" | "destroy" | "openDrawer" | "closeDrawer" | "toggleDrawer">>;
|
|
@@ -40,7 +40,7 @@ export declare const useResourceFormStore: import("pinia").StoreDefinition<"admi
|
|
|
40
40
|
clearErrors: () => void;
|
|
41
41
|
save: () => Promise<string | number>;
|
|
42
42
|
destroy: () => Promise<void>;
|
|
43
|
-
}, "state" | "
|
|
43
|
+
}, "state" | "mode" | "loading" | "error" | "initial" | "slug" | "saving" | "recordId" | "errors" | "deleting">, Pick<{
|
|
44
44
|
slug: import("vue").Ref<string | null, string | null>;
|
|
45
45
|
mode: import("vue").Ref<FormMode, FormMode>;
|
|
46
46
|
recordId: import("vue").Ref<string | number | null, string | number | null>;
|
|
@@ -64,7 +64,7 @@ export declare const useResourceFormStore: import("pinia").StoreDefinition<"admi
|
|
|
64
64
|
clearErrors: () => void;
|
|
65
65
|
save: () => Promise<string | number>;
|
|
66
66
|
destroy: () => Promise<void>;
|
|
67
|
-
}, "
|
|
67
|
+
}, "isDirty" | "hasError" | "isCreate" | "isEdit" | "isView">, Pick<{
|
|
68
68
|
slug: import("vue").Ref<string | null, string | null>;
|
|
69
69
|
mode: import("vue").Ref<FormMode, FormMode>;
|
|
70
70
|
recordId: import("vue").Ref<string | number | null, string | number | null>;
|
|
@@ -88,4 +88,4 @@ export declare const useResourceFormStore: import("pinia").StoreDefinition<"admi
|
|
|
88
88
|
clearErrors: () => void;
|
|
89
89
|
save: () => Promise<string | number>;
|
|
90
90
|
destroy: () => Promise<void>;
|
|
91
|
-
}, "reset" | "load" | "destroy" | "
|
|
91
|
+
}, "reset" | "load" | "destroy" | "save" | "prepareCreate" | "setField" | "setErrors" | "clearErrors">>;
|
|
@@ -68,7 +68,7 @@ export declare const useResourceIndexStore: import("pinia").StoreDefinition<"adm
|
|
|
68
68
|
clearSelection: () => void;
|
|
69
69
|
isSelected: (id: string | number) => boolean;
|
|
70
70
|
rowId: (row: Record<string, unknown>) => string | number;
|
|
71
|
-
}, "meta" | "search" | "items" | "loading" | "error" | "
|
|
71
|
+
}, "meta" | "search" | "items" | "loading" | "error" | "filters" | "slug" | "slowLoading" | "sortKey" | "sortDirection" | "selection">, Pick<{
|
|
72
72
|
slug: import("vue").Ref<string | null, string | null>;
|
|
73
73
|
items: import("vue").Ref<Record<string, unknown>[], Record<string, unknown>[]>;
|
|
74
74
|
meta: import("vue").Ref<{
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface Options {
|
|
2
|
+
title?: string;
|
|
3
|
+
/** Длительность в ms (0 = не закрывать автоматически). */
|
|
4
|
+
duration?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const adminToast: {
|
|
7
|
+
success(message: string, opts?: Options): void;
|
|
8
|
+
error(message: string, opts?: Options): void;
|
|
9
|
+
warning(message: string, opts?: Options): void;
|
|
10
|
+
info(message: string, opts?: Options): void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* fromError — извлекает message из ApiError / Error / unknown и пушит toast.
|
|
14
|
+
*/
|
|
15
|
+
export declare function toastError(err: unknown, fallback?: string): void;
|
|
16
|
+
export {};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root[data-density=compact]{--admin-row-h: 32px;--admin-row-fs: 13px;--admin-page-pad: 16px}:root[data-density=comfortable],:root:not([data-density]){--admin-row-h: 40px;--admin-row-fs: 14px;--admin-page-pad: 24px}.admin-impersonation-banner{position:fixed;top:0;left:0;right:0;height:32px;z-index:var(--uid-z-sticky, 200);background:var(--uid-warning);color:var(--uid-color-amber-950, #4c2a02);display:flex;align-items:center;justify-content:center;font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);gap:var(--uid-space-md)}:root[data-theme=dark] .admin-impersonation-banner{color:var(--uid-color-amber-50);background:color-mix(in srgb,var(--uid-warning) 60%,var(--uid-surface-raised))}.admin-impersonation-banner__exit{appearance:none;background:#00000026;color:inherit;border:0;height:22px;padding:0 var(--uid-space-sm);border-radius:var(--uid-radius-sm);font:inherit;font-size:11px;font-weight:var(--uid-font-weight-semibold);cursor:pointer}.admin-poll-indicator{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:11px;color:var(--uid-text-tertiary)}.admin-poll-indicator__dot{width:6px;height:6px;border-radius:var(--uid-radius-full);background:var(--uid-success);position:relative}.admin-poll-indicator__dot:after{content:"";position:absolute;inset:-3px;border-radius:var(--uid-radius-full);background:var(--uid-success);opacity:.5;animation:admin-poll-pulse 1.6s ease-out infinite}@keyframes admin-poll-pulse{0%{transform:scale(.6);opacity:.6}to{transform:scale(2);opacity:0}}.admin-topbar{height:56px;padding:0 var(--uid-space-lg);display:flex;align-items:center;gap:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);position:sticky;top:0;z-index:var(--uid-z-sticky, 200)}.admin-topbar__spacer{flex:1}.admin-topbar__breadcrumbs{display:flex;align-items:center;gap:var(--uid-space-xs);font-size:13px;color:var(--uid-text-secondary)}.admin-topbar__breadcrumbs .sep{color:var(--uid-text-tertiary)}.admin-topbar__breadcrumbs .cur{color:var(--uid-text-primary);font-weight:500}.admin-topbar__search{display:flex;align-items:center;gap:var(--uid-space-sm);height:32px;padding:0 var(--uid-space-sm);min-width:220px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;cursor:pointer}.admin-topbar__search kbd{margin-left:auto;font-family:var(--uid-font-family-mono);font-size:10px;padding:1px 5px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);color:var(--uid-text-tertiary)}.admin-topbar__icon-btn{position:relative;appearance:none;border:0;background:transparent;width:32px;height:32px;border-radius:var(--uid-radius-md);display:grid;place-items:center;color:var(--uid-text-secondary);cursor:pointer}.admin-topbar__icon-btn:hover{background:var(--uid-surface-base);color:var(--uid-text-primary)}.admin-topbar__bell-badge{position:absolute;top:6px;right:6px;min-width:14px;height:14px;padding:0 4px;border-radius:var(--uid-radius-full);background:var(--uid-danger);color:var(--uid-color-white, #fff);font-size:9px;font-weight:var(--uid-font-weight-semibold);display:grid;place-items:center;border:1.5px solid var(--uid-surface-raised);font-variant-numeric:tabular-nums}.admin-auth-page{min-height:100vh;display:grid;place-items:center;padding:var(--uid-space-xl);background:var(--uid-surface-base);position:relative}.admin-auth-page__corner{position:absolute;top:var(--uid-space-md);right:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-auth-card{width:400px;max-width:100%}.admin-auth-card--wide{width:440px}.admin-auth-card__hd{padding:var(--uid-space-lg) var(--uid-space-lg) var(--uid-space-md);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--uid-space-sm)}.admin-auth-card__logo{width:40px;height:40px;border-radius:9px;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:var(--uid-font-size-lg)}.admin-auth-card__logo--accent{background:var(--uid-accent);color:var(--uid-text-on-accent)}.admin-auth-card__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);font-family:var(--uid-font-family-display);letter-spacing:-.01em}.admin-auth-card__sub{font-size:13px;color:var(--uid-text-secondary)}.admin-auth-card__bd{padding:var(--uid-space-sm) var(--uid-space-lg) var(--uid-space-lg);display:flex;flex-direction:column;gap:14px}.admin-auth-card__row{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-auth-card__link{color:var(--uid-accent-text);font-size:var(--uid-font-size-xs);cursor:pointer;text-decoration:none}.admin-auth-card__link:hover{text-decoration:underline}.admin-auth-card__alert{margin-bottom:4px}.admin-code-input{display:flex;gap:var(--uid-space-sm);justify-content:center}.admin-code-input input{width:44px;height:52px;text-align:center;font-family:var(--uid-font-family-mono);font-size:22px;font-weight:var(--uid-font-weight-semibold);border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);outline:none;caret-color:var(--uid-accent)}.admin-code-input input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);outline-offset:0}.admin-code-input input--error,.admin-code-input input.is-error{border-color:var(--uid-danger)}.admin-page{padding:var(--admin-page-pad, 24px)}.admin-page__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-page__title-wrap{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-page__title{font-family:var(--uid-font-family-display);font-size:22px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.015em;line-height:1.2;margin:0;color:var(--uid-text-primary)}.admin-page__count{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-page__actions{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-sidebar-brand{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--uid-border-subtle)}.admin-sidebar-brand__mark{width:28px;height:28px;border-radius:7px;flex:none;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:14px;letter-spacing:-.02em}.admin-sidebar-brand__name{font-family:var(--uid-font-family-display);font-size:14px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;color:var(--uid-text-primary)}.admin-sidebar-tenant{margin:8px;display:flex;align-items:center;gap:8px;height:32px;padding:0 8px;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);background:var(--uid-surface-base)}.admin-sidebar-tenant b{color:var(--uid-text-primary);font-weight:500}.admin-sidebar-foot{padding:10px 16px;border-top:1px solid var(--uid-border-subtle);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--uid-text-tertiary)}.admin-sidebar-foot__link{cursor:pointer}.admin-sidebar-foot__link:hover{color:var(--uid-text-primary)}.admin-sidebar__icon{width:16px;height:16px;display:inline-block;flex:none;color:currentColor}.admin-shell-root[data-admin-impersonating=true]{padding-top:32px}:root[data-admin-impersonating=true]{scroll-padding-top:32px}.admin-loading-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:var(--uid-z-toast, 9999);pointer-events:none;opacity:0;transition:opacity .12s ease-out;background:transparent}.admin-loading-bar--visible{opacity:1}.admin-loading-bar--visible:before{content:"";position:absolute;inset:0;background:var(--uid-accent, var(--uid-color-primary, #14b8a6));transform-origin:0 50%;animation:admin-loading-bar-slide 1.4s cubic-bezier(.4,0,.2,1) infinite}@keyframes admin-loading-bar-slide{0%{transform:translate(-100%) scaleX(.4)}50%{transform:translate(0) scaleX(.7)}to{transform:translate(100%) scaleX(.4)}}@media(prefers-reduced-motion:reduce){.admin-loading-bar--visible:before{animation:none;width:60%;transform:none}}.admin-page-host{position:relative;min-height:200px;overflow:hidden}.admin-page-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-page-leave-to{opacity:0}.admin-page-enter-active{transition:opacity .32s cubic-bezier(.2,.8,.2,1) 60ms,transform .32s cubic-bezier(.2,.8,.2,1) 60ms}.admin-page-enter-from{opacity:0;transform:translate(28px)}.admin-page-enter-to{opacity:1;transform:translate(0)}@media(prefers-reduced-motion:reduce){.admin-page-enter-active,.admin-page-leave-active{transition:opacity 80ms ease-out}.admin-page-enter-from{transform:none}}.admin-home{display:flex;flex-direction:column;gap:var(--uid-space-lg);padding:var(--uid-space-md)}.admin-home__title{font-size:var(--uid-font-size-2xl);font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm)}.admin-home__lead{color:var(--uid-text-secondary);margin:0}.admin-home__heading{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--uid-space-sm);list-style:none;padding:0;margin:0}.admin-home__card{display:flex;flex-direction:column;gap:var(--uid-space-2xs);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);text-align:left;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.admin-home__card:hover{border-color:var(--uid-accent);transform:translateY(-1px)}.admin-home__card-label{font-weight:var(--uid-font-weight-medium)}.admin-home__card-slug{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-status-page{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--uid-space-lg)}.admin-status-page__card{text-align:center;max-width:480px}.admin-status-page__code{font-size:64px;font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm);color:var(--uid-text-secondary)}.admin-status-page__message{margin:0 0 var(--uid-space-md);color:var(--uid-text-secondary)}.admin-settings-page{padding:var(--uid-space-md)}.admin-settings-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-settings-page__debug{background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-mono);font-size:var(--uid-font-size-xs);overflow:auto;max-height:60vh}.admin-settings-page__hint{color:var(--uid-text-secondary)}.admin-status-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-status-page__hint{margin:0;color:var(--uid-text-secondary);font-size:var(--uid-font-size-sm)}.admin-resource-index__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm);margin-top:var(--uid-space-md);min-height:320px}.admin-resource-index__row-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--uid-space-2xs)}.admin-resource-index__row-action{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--uid-radius-sm);background:transparent;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out),color var(--uid-duration-fast) var(--uid-ease-out),border-color var(--uid-duration-fast) var(--uid-ease-out)}.admin-resource-index__row-action:hover{background:var(--uid-color-surface-hover);color:var(--uid-text-primary);border-color:var(--uid-border-subtle)}.admin-resource-index__row-action--danger:hover{color:var(--uid-color-danger, #dc2626)}.admin-resource-index__state{margin-top:var(--uid-space-xl)}.admin-resource-index__table{margin-top:0}.admin-resource-index__table .uid-table-wrap{border:1px solid var(--uid-border-subtle);border-top:0;border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg)}.admin-resource-index__footer{display:flex;justify-content:flex-end;padding:var(--uid-space-md) 0}.admin-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-filter-bar__search{flex:1;min-width:200px;max-width:320px;height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-filter-bar__search:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-filter-bar__spacer{flex:1}.admin-bulk-toolbar{display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-zinc-900, #18181b);color:var(--uid-color-zinc-100, #f4f4f5);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border:1px solid var(--uid-color-zinc-900, #18181b);border-bottom:0;margin-top:var(--uid-space-md)}.admin-bulk-toolbar__count{font-size:13px}.admin-bulk-toolbar__count b{font-weight:var(--uid-font-weight-semibold)}.admin-bulk-toolbar__divider{width:1px;height:20px;background:#ffffff26}.admin-bulk-toolbar__spacer{flex:1}.admin-bulk-toolbar .uid-button{background:transparent;border-color:#ffffff26;color:var(--uid-color-zinc-100, #f4f4f5)}.admin-bulk-toolbar .uid-button:hover:not([disabled]){background:#ffffff14}.admin-bulk-toolbar .uid-button--danger{color:var(--uid-color-rose-400, #fb7185)}.admin-resource-index__row--selected{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-resource-form__back{font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);cursor:pointer;text-decoration:none;display:inline-block;margin-bottom:4px}.admin-resource-form__back:hover{color:var(--uid-text-primary)}.admin-resource-form__alert{margin-bottom:var(--uid-space-md)}.admin-resource-form__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-form__body{margin-bottom:var(--uid-space-2xl)}.admin-resource-form__savebar{position:sticky;bottom:0;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-surface-raised);border-top:1px solid var(--uid-border-default);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);margin-top:var(--uid-space-md)}.admin-resource-form__savebar-hint{flex:1;font-size:13px;color:var(--uid-warning)}.admin-infolist-rows{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-infolist-section{margin-bottom:var(--uid-space-md);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-lg);background:var(--uid-surface-raised)}.admin-infolist-section__hd{margin-bottom:var(--uid-space-sm)}.admin-infolist-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-infolist-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-infolist-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-tabs__list{list-style:none;margin:0 0 var(--uid-space-sm);padding:0;display:flex;gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-border-subtle)}.admin-infolist-tabs__tab{padding:var(--uid-space-sm) var(--uid-space-sm);font-size:13px;color:var(--uid-text-secondary);border-bottom:2px solid transparent}.admin-infolist-tabs__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent);font-weight:var(--uid-font-weight-medium)}.admin-resource-view__alert{margin-bottom:var(--uid-space-md)}.admin-resource-view__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-profile__layout{display:grid;grid-template-columns:200px 1fr;gap:var(--uid-space-lg);align-items:start}.admin-profile__nav{display:flex;flex-direction:column;gap:2px}.admin-profile__nav-item{appearance:none;border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-md);font-size:13px;color:var(--uid-text-secondary);cursor:pointer}.admin-profile__nav-item:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-profile__nav-item--active{background:var(--uid-surface-base);color:var(--uid-text-primary);font-weight:var(--uid-font-weight-medium)}.admin-profile__nav-icon{width:14px;height:14px;flex:none}.admin-profile__content{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-profile__card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--uid-space-md)}.admin-profile__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-profile__card-ft{margin-top:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-profile__hint{margin:0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-profile__hero{display:flex;align-items:center;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-profile__hero-text{display:flex;flex-direction:column;gap:4px}.admin-profile__hero-name{font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-profile__hero-meta{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-profile__form{display:grid;grid-template-columns:1fr 1fr;gap:var(--uid-space-md)}@media(max-width:720px){.admin-profile__form{grid-template-columns:1fr}}.admin-dashboard__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-dashboard__cell{min-width:0}.admin-widget__hd{margin-bottom:var(--uid-space-sm)}.admin-widget__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-widget__desc{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-widget-bar-chart{display:block;width:100%}.admin-donut-widget__row{display:flex;align-items:center;gap:var(--uid-space-md)}.admin-donut-widget__svg{width:120px;height:120px;flex:none}.admin-donut-widget__legend{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-donut-widget__legend li{display:flex;align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-xs)}.admin-donut-widget__dot{width:10px;height:10px;border-radius:var(--uid-radius-full);flex:none}.admin-donut-widget__label{flex:1;color:var(--uid-text-primary)}.admin-donut-widget__value{color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-markdown-widget{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);white-space:pre-wrap;line-height:var(--uid-line-height-normal)}.admin-section{margin-bottom:var(--uid-space-md)}.admin-section__header{margin-bottom:var(--uid-space-sm)}.admin-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-text{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary)}.admin-infolist-text--mono{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-icon{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-sm)}.admin-infolist-icon--on{color:var(--uid-success)}.admin-infolist-icon--off{color:var(--uid-text-tertiary)}.admin-infolist-icon__glyph{display:inline-block;width:14px;height:14px}.admin-notifs__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-notifs__title{margin:0;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-notifs__count{color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-regular);font-size:var(--uid-font-size-sm)}.admin-notifs__list{list-style:none;margin:0;padding:0}.admin-notifs__empty{padding:var(--uid-space-xl) var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-notifs__item{position:relative;display:flex;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);cursor:pointer;border-bottom:1px solid var(--uid-border-subtle)}.admin-notifs__item:hover{background:var(--uid-surface-hover)}.admin-notifs__item--unread{background:color-mix(in srgb,var(--uid-accent) 6%,transparent)}.admin-notifs__item--unread:hover{background:color-mix(in srgb,var(--uid-accent) 10%,transparent)}.admin-notifs__icon{width:28px;height:28px;border-radius:var(--uid-radius-md);flex:none;margin-top:2px}.admin-notifs__icon[data-kind=info]{background:color-mix(in srgb,var(--uid-info) 14%,transparent)}.admin-notifs__icon[data-kind=success]{background:color-mix(in srgb,var(--uid-success) 14%,transparent)}.admin-notifs__icon[data-kind=warning]{background:color-mix(in srgb,var(--uid-warning) 14%,transparent)}.admin-notifs__icon[data-kind=danger]{background:color-mix(in srgb,var(--uid-danger) 14%,transparent)}.admin-notifs__body{flex:1;min-width:0}.admin-notifs__row1{display:flex;align-items:baseline;gap:var(--uid-space-sm);margin-bottom:2px}.admin-notifs__title-strong{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);flex:1;min-width:0}.admin-notifs__title-soft{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);flex:1;min-width:0}.admin-notifs__time{font-size:11px;color:var(--uid-text-tertiary);flex:none;font-variant-numeric:tabular-nums}.admin-notifs__text{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.admin-notifs__close{position:absolute;top:6px;right:8px;appearance:none;border:0;background:transparent;color:var(--uid-text-tertiary);cursor:pointer;font-size:18px;width:22px;height:22px;border-radius:var(--uid-radius-sm);opacity:0;transition:opacity var(--uid-duration-fast, .1s)}.admin-notifs__item:hover .admin-notifs__close{opacity:1}.admin-notifs__close:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-import-wizard{max-width:1100px;margin:0 auto}.admin-import-wizard__card{margin-top:var(--uid-space-md)}.admin-import-wizard__card-hd{margin-bottom:var(--uid-space-md)}.admin-import-wizard__card-hd h3{margin:0 0 var(--uid-space-2xs);font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-import-wizard__card-hd p{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-import-wizard__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-import-wizard__mapping{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-import-wizard__map-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--uid-space-md);align-items:center}.admin-import-wizard__map-source{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-import-wizard__map-sample{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-xs);font-style:italic}.admin-import-wizard__map-arrow{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-md)}.admin-import-wizard__kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md);margin-top:var(--uid-space-md)}.admin-import-wizard__nav{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-md)}.admin-gallery__group{margin-bottom:var(--uid-space-2xl)}.admin-gallery__group-title{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md)}@media(max-width:960px){.admin-gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.admin-gallery__grid{grid-template-columns:1fr}}.admin-gallery__card{display:flex;flex-direction:column}.admin-gallery__card-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);margin-bottom:var(--uid-space-xs)}.admin-gallery__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-gallery__card-type{font-family:var(--uid-font-family-mono);font-size:11px;color:var(--uid-text-tertiary);background:var(--uid-surface-base);padding:1px 6px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle)}.admin-gallery__card-desc{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);line-height:var(--uid-line-height-normal)}.admin-gallery__card-demo{flex:1;display:flex;flex-direction:column;justify-content:flex-end}
|
|
1
|
+
:root[data-density=compact],:root:not([data-density]){--admin-row-h: 32px;--admin-row-fs: 13px;--admin-page-pad: 16px}:root[data-density=comfortable]{--admin-row-h: 40px;--admin-row-fs: 14px;--admin-page-pad: 24px}:root{--admin-foot-height: 32px}.admin-impersonation-banner{position:fixed;top:0;left:0;right:0;height:32px;z-index:var(--uid-z-sticky, 200);background:var(--uid-warning);color:var(--uid-color-amber-950, #4c2a02);display:flex;align-items:center;justify-content:center;font-size:var(--uid-font-size-xs);font-weight:var(--uid-font-weight-medium);gap:var(--uid-space-md)}:root[data-theme=dark] .admin-impersonation-banner{color:var(--uid-color-amber-50);background:color-mix(in srgb,var(--uid-warning) 60%,var(--uid-surface-raised))}.admin-impersonation-banner__exit{appearance:none;background:#00000026;color:inherit;border:0;height:22px;padding:0 var(--uid-space-sm);border-radius:var(--uid-radius-sm);font:inherit;font-size:11px;font-weight:var(--uid-font-weight-semibold);cursor:pointer}.admin-poll-indicator{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:11px;color:var(--uid-text-tertiary)}.admin-poll-indicator__dot{width:6px;height:6px;border-radius:var(--uid-radius-full);background:var(--uid-success);position:relative}.admin-poll-indicator__dot:after{content:"";position:absolute;inset:-3px;border-radius:var(--uid-radius-full);background:var(--uid-success);opacity:.5;animation:admin-poll-pulse 1.6s ease-out infinite}@keyframes admin-poll-pulse{0%{transform:scale(.6);opacity:.6}to{transform:scale(2);opacity:0}}.admin-topbar{height:56px;padding:0 var(--uid-space-lg);display:flex;align-items:center;gap:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);position:sticky;top:0;z-index:var(--uid-z-sticky, 200);flex:none}.admin-topbar__spacer{flex:1}.admin-topbar__breadcrumbs{display:flex;align-items:center;gap:var(--uid-space-xs);font-size:13px;color:var(--uid-text-secondary)}.admin-topbar__breadcrumbs .sep{color:var(--uid-text-tertiary)}.admin-topbar__breadcrumbs .cur{color:var(--uid-text-primary);font-weight:500}.admin-topbar__search{display:flex;align-items:center;gap:var(--uid-space-sm);height:32px;padding:0 var(--uid-space-sm);min-width:220px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-tertiary);font-size:13px;cursor:pointer}.admin-topbar__search kbd{margin-left:auto;font-family:var(--uid-font-family-mono);font-size:10px;padding:1px 5px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);color:var(--uid-text-tertiary)}.admin-topbar__icon-btn{position:relative;appearance:none;border:0;background:transparent;width:32px;height:32px;border-radius:var(--uid-radius-md);display:grid;place-items:center;color:var(--uid-text-secondary);cursor:pointer}.admin-topbar__icon-btn:hover{background:var(--uid-surface-base);color:var(--uid-text-primary)}.admin-topbar__bell-badge{position:absolute;top:6px;right:6px;min-width:14px;height:14px;padding:0 4px;border-radius:var(--uid-radius-full);background:var(--uid-danger);color:var(--uid-color-white, #fff);font-size:9px;font-weight:var(--uid-font-weight-semibold);display:grid;place-items:center;border:1.5px solid var(--uid-surface-raised);font-variant-numeric:tabular-nums}.admin-auth-page{min-height:100vh;display:grid;place-items:center;padding:var(--uid-space-xl);background:var(--uid-surface-base);position:relative}.admin-auth-page__corner{position:absolute;top:var(--uid-space-md);right:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-auth-card{width:400px;max-width:100%}.admin-auth-card--wide{width:440px}.admin-auth-card__hd{padding:var(--uid-space-lg) var(--uid-space-lg) var(--uid-space-md);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--uid-space-sm)}.admin-auth-card__logo{width:40px;height:40px;border-radius:9px;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:var(--uid-font-size-lg)}.admin-auth-card__logo--accent{background:var(--uid-accent);color:var(--uid-text-on-accent)}.admin-auth-card__title{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);font-family:var(--uid-font-family-display);letter-spacing:-.01em}.admin-auth-card__sub{font-size:13px;color:var(--uid-text-secondary)}.admin-auth-card__bd{padding:var(--uid-space-sm) var(--uid-space-lg) var(--uid-space-lg);display:flex;flex-direction:column;gap:14px}.admin-auth-card__row{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-auth-card__link{color:var(--uid-accent-text);font-size:var(--uid-font-size-xs);cursor:pointer;text-decoration:none}.admin-auth-card__link:hover{text-decoration:underline}.admin-auth-card__alert{margin-bottom:4px}.admin-code-input{display:flex;gap:var(--uid-space-sm);justify-content:center}.admin-code-input input{width:44px;height:52px;text-align:center;font-family:var(--uid-font-family-mono);font-size:22px;font-weight:var(--uid-font-weight-semibold);border:1px solid var(--uid-border-default);background:var(--uid-surface-raised);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);outline:none;caret-color:var(--uid-accent)}.admin-code-input input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);outline-offset:0}.admin-code-input input--error,.admin-code-input input.is-error{border-color:var(--uid-danger)}.admin-page{padding:var(--admin-page-pad, 24px)}.admin-page__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-page__title-wrap{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-page__title{font-family:var(--uid-font-family-display);font-size:22px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.015em;line-height:1;margin:0;color:var(--uid-text-primary)}.admin-page__count{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-page__actions,.admin-page__title-row{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-page__live{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-medium);line-height:1}.admin-page__live-dot{width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981);flex:none;animation:admin-page-pulse 2s ease-out infinite}@keyframes admin-page-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 45%,transparent)}70%{box-shadow:0 0 0 8px color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}to{box-shadow:0 0 color-mix(in srgb,var(--uid-color-success, #10b981) 0%,transparent)}}@media(prefers-reduced-motion:reduce){.admin-page__live-dot{animation:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--uid-color-success, #10b981) 18%,transparent)}}.admin-page__scope{font-weight:var(--uid-font-weight-medium)}.admin-page__more{width:var(--uid-size-md);padding:0;justify-content:center}.admin-page__import-input{display:none}.admin-page__view-row{display:inline-flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);width:100%}.admin-page__view-name{display:inline-flex;align-items:center;gap:var(--uid-space-2xs)}.admin-page__view-badge{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:var(--uid-radius-sm);background:color-mix(in srgb,var(--uid-accent) 15%,transparent);color:var(--uid-accent)}.admin-page__view-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-tertiary);cursor:pointer}.admin-page__view-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 12%,transparent);color:var(--uid-color-danger, #dc2626)}.ladmin-logo{display:inline-flex;align-items:center;justify-content:flex-start;font-family:ui-monospace,IBM Plex Mono,Fira Code,Menlo,monospace;font-weight:700;letter-spacing:-.02em;line-height:1;flex:none;box-shadow:inset 0 1px #ffffff0f}.ladmin-logo--animated .ladmin-logo__cursor{animation:ladmin-cursor 1.1s steps(1,end) infinite}@keyframes ladmin-cursor{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.ladmin-logo--animated .ladmin-logo__cursor{animation:none}}.uid-pattern-sidebar__header:has(.admin-sidebar-brand){padding:0}.admin-sidebar-brand{display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;text-decoration:none;color:inherit;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-sidebar-brand:hover{background:var(--uid-color-surface-hover, rgba(0, 0, 0, .04))}.admin-sidebar-brand:focus-visible{outline:2px solid var(--uid-color-focus-ring, var(--uid-accent));outline-offset:-2px}.admin-sidebar-brand__mark{width:28px;height:28px;border-radius:7px;flex:none;background:var(--uid-text-primary);color:var(--uid-surface-raised);display:grid;place-items:center;font-family:var(--uid-font-family-display);font-weight:var(--uid-font-weight-bold);font-size:14px;letter-spacing:-.02em}.admin-sidebar-brand__name{font-family:var(--uid-font-family-display);font-size:14px;font-weight:var(--uid-font-weight-semibold);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;color:var(--uid-text-primary)}.admin-sidebar-tenant{margin:8px;display:flex;align-items:center;gap:8px;height:32px;padding:0 8px;border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);background:var(--uid-surface-base)}.admin-sidebar-tenant b{color:var(--uid-text-primary);font-weight:500}.admin-sidebar-foot{height:var(--admin-foot-height, 32px);padding:0 16px;border-top:1px solid var(--uid-border-subtle);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--uid-text-tertiary)}.admin-sidebar-foot__link{cursor:pointer}.admin-sidebar-foot__link:hover{color:var(--uid-text-primary)}.admin-sidebar__icon{width:16px;height:16px;display:inline-block;flex:none;color:currentColor}.admin-shell-root[data-admin-impersonating=true]{padding-top:32px}:root[data-admin-impersonating=true]{scroll-padding-top:32px}.admin-shell.uid-layout-sidebar{height:100vh;min-height:0;max-height:100vh;overflow:hidden}.admin-shell .uid-layout-sidebar__sidebar{height:100vh}.admin-shell .uid-pattern-sidebar{height:100%;display:flex;flex-direction:column}.admin-shell .uid-pattern-sidebar__nav{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell .uid-pattern-sidebar__footer{flex:none}.admin-shell .uid-layout-sidebar__main{height:100vh;display:flex;flex-direction:column;overflow:hidden;min-width:0}.admin-shell .uid-layout-sidebar__main-header{flex:none}.admin-shell .uid-layout-sidebar__main-content{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior:contain}.admin-shell-root[data-admin-impersonating=true] .admin-shell.uid-layout-sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__sidebar,.admin-shell-root[data-admin-impersonating=true] .admin-shell .uid-layout-sidebar__main{height:calc(100vh - 32px);max-height:calc(100vh - 32px)}.admin-main-footer{height:var(--admin-foot-height, 32px);border-top:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);flex:none}.admin-loading-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:var(--uid-z-toast, 9999);pointer-events:none;opacity:0;transition:opacity .12s ease-out;background:transparent}.admin-loading-bar--visible{opacity:1}.admin-loading-bar--visible:before{content:"";position:absolute;inset:0;background:var(--uid-accent, var(--uid-color-primary, #14b8a6));transform-origin:0 50%;animation:admin-loading-bar-slide 1.4s cubic-bezier(.4,0,.2,1) infinite}@keyframes admin-loading-bar-slide{0%{transform:translate(-100%) scaleX(.4)}50%{transform:translate(0) scaleX(.7)}to{transform:translate(100%) scaleX(.4)}}@media(prefers-reduced-motion:reduce){.admin-loading-bar--visible:before{animation:none;width:60%;transform:none}}.admin-notif-drawer{position:fixed;inset:0;z-index:var(--uid-z-drawer, 400);pointer-events:none}.admin-notif-drawer__backdrop{position:absolute;inset:0;background:#0006;pointer-events:auto}.admin-notif-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(480px,100%);display:flex;flex-direction:column;background:var(--uid-surface-raised);border-left:1px solid var(--uid-border-subtle);box-shadow:var(--uid-shadow-lg);pointer-events:auto}.admin-notif-drawer__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__title{display:inline-flex;align-items:center;gap:var(--uid-space-xs);margin:0;font-family:var(--uid-font-family-display);font-size:16px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:2px 6px;border-radius:10px;background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626);font-size:11px;font-weight:var(--uid-font-weight-semibold);line-height:1}.admin-notif-drawer__hd-actions{display:inline-flex;align-items:center;gap:var(--uid-space-xs)}.admin-notif-drawer__mark-all{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);font-size:13px;cursor:pointer}.admin-notif-drawer__mark-all:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-notif-drawer__close:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-notif-drawer__tabs{display:flex;align-items:center;gap:var(--uid-space-md);padding:0 var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle)}.admin-notif-drawer__tab{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:12px 0;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--uid-text-secondary);font-size:13px;font-weight:var(--uid-font-weight-medium);cursor:pointer}.admin-notif-drawer__tab:hover{color:var(--uid-text-primary)}.admin-notif-drawer__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent)}.admin-notif-drawer__tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:1px 6px;border-radius:9px;background:var(--uid-border-subtle);color:var(--uid-text-tertiary);font-size:11px;font-weight:var(--uid-font-weight-semibold)}.admin-notif-drawer__tab--active .admin-notif-drawer__tab-count{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__body{flex:1;min-height:0;overflow-y:auto}.admin-notif-drawer__empty{padding:var(--uid-space-xl);text-align:center;color:var(--uid-text-tertiary);font-size:13px}.admin-notif-drawer__list{list-style:none;margin:0;padding:0}.admin-notif-drawer__item{position:relative;display:flex;align-items:flex-start;gap:var(--uid-space-sm);padding:var(--uid-space-md);border-bottom:1px solid var(--uid-border-subtle);cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-notif-drawer__item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-notif-drawer__item--unread{background:color-mix(in srgb,var(--uid-accent) 5%,transparent)}.admin-notif-drawer__icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%}.admin-notif-drawer__icon[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 14%,transparent);color:var(--uid-color-success, #10b981)}.admin-notif-drawer__icon[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 14%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-notif-drawer__icon[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer__icon[data-variant=info]{background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent)}.admin-notif-drawer__icon[data-variant=neutral]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-notif-drawer__content{flex:1;min-width:0}.admin-notif-drawer__row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--uid-space-sm)}.admin-notif-drawer__item-title{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-notif-drawer__item-time{font-size:11px;color:var(--uid-text-tertiary);flex:none}.admin-notif-drawer__item-description{margin-top:2px;font-size:13px;color:var(--uid-text-secondary);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.admin-notif-drawer__unread-dot{position:absolute;top:16px;right:36px;width:8px;height:8px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-notif-drawer__item-delete{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:0;background:transparent;border-radius:50%;color:var(--uid-text-tertiary);cursor:pointer;opacity:0;flex:none;align-self:flex-start;margin-top:-2px}.admin-notif-drawer__item:hover .admin-notif-drawer__item-delete{opacity:1}.admin-notif-drawer__item-delete:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-notif-drawer-enter-active,.admin-notif-drawer-leave-active{transition:opacity .2s ease-out}.admin-notif-drawer-enter-active .admin-notif-drawer__panel,.admin-notif-drawer-leave-active .admin-notif-drawer__panel{transition:transform .24s cubic-bezier(.2,.8,.2,1)}.admin-notif-drawer-enter-from,.admin-notif-drawer-leave-to{opacity:0}.admin-notif-drawer-enter-from .admin-notif-drawer__panel,.admin-notif-drawer-leave-to .admin-notif-drawer__panel{transform:translate(100%)}.admin-page-host{position:relative;min-height:200px;overflow:hidden}.admin-page-host__suspended{min-height:320px}.admin-page-leave-active{position:absolute;inset:0;width:100%;transition:opacity .14s ease-out}.admin-page-leave-to{opacity:0}.admin-page-enter-active{transition:opacity .32s cubic-bezier(.2,.8,.2,1) 60ms,transform .32s cubic-bezier(.2,.8,.2,1) 60ms}.admin-page-enter-from{opacity:0;transform:translate(28px)}.admin-page-enter-to{opacity:1;transform:translate(0)}@media(prefers-reduced-motion:reduce){.admin-page-enter-active,.admin-page-leave-active{transition:opacity 80ms ease-out}.admin-page-enter-from{transform:none}}.admin-widget-actions{position:absolute;top:8px;right:8px;display:inline-flex;align-items:center;gap:2px;padding:2px;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-sm);z-index:5}.admin-widget-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;background:transparent;border-radius:var(--uid-radius-sm);color:var(--uid-text-secondary);cursor:pointer}.admin-widget-actions__btn:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-widget-actions__btn--danger:hover{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 14%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-widget-actions__drag{cursor:grab}.admin-widget-actions__drag:active{cursor:grabbing}.admin-dialog__readonly{padding:8px 10px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:13px;color:var(--uid-text-secondary)}.admin-dashboard__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-dashboard__grid--editing .admin-dashboard__cell{outline:1px dashed transparent;transition:outline-color .12s ease}.admin-dashboard__grid--editing .admin-dashboard__cell:hover{outline-color:var(--uid-accent)}.admin-dashboard__cell{position:relative;min-width:0}.admin-dashboard__resize{position:absolute;bottom:4px;right:4px;width:14px;height:14px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0 50%,var(--uid-text-tertiary) 50% 60%,transparent 60% 70%,var(--uid-text-tertiary) 70% 80%,transparent 80%);z-index:4}.admin-home{display:flex;flex-direction:column;gap:var(--uid-space-lg);padding:var(--uid-space-md)}.admin-home__title{font-size:var(--uid-font-size-2xl);font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm)}.admin-home__lead{color:var(--uid-text-secondary);margin:0}.admin-home__heading{font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--uid-space-sm);list-style:none;padding:0;margin:0}.admin-home__card{display:flex;flex-direction:column;gap:var(--uid-space-2xs);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);background:var(--uid-surface-raised);text-align:left;cursor:pointer;transition:border-color .15s ease,transform .15s ease}.admin-home__card:hover{border-color:var(--uid-accent);transform:translateY(-1px)}.admin-home__card-label{font-weight:var(--uid-font-weight-medium)}.admin-home__card-slug{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-status-page{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--uid-space-lg)}.admin-status-page__card{text-align:center;max-width:480px}.admin-status-page__code{font-size:64px;font-weight:var(--uid-font-weight-bold);margin:0 0 var(--uid-space-sm);color:var(--uid-text-secondary)}.admin-status-page__message{margin:0 0 var(--uid-space-md);color:var(--uid-text-secondary)}.admin-settings-page{padding:var(--uid-space-md)}.admin-settings-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-settings-page__debug{background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);padding:var(--uid-space-sm);border-radius:var(--uid-radius-sm);font-family:var(--uid-font-mono);font-size:var(--uid-font-size-xs);overflow:auto;max-height:60vh}.admin-settings-page__hint{color:var(--uid-text-secondary)}.admin-status-page__title{font-size:var(--uid-font-size-xl);font-weight:var(--uid-font-weight-semibold);margin:0 0 var(--uid-space-sm)}.admin-status-page__hint{margin:0;color:var(--uid-text-secondary);font-size:var(--uid-font-size-sm)}.admin-auth-card__submit,.admin-auth-card__back{width:100%;margin-top:var(--uid-space-sm)}.admin-auth-card__error{color:var(--uid-color-danger, #dc2626);font-size:13px;margin:var(--uid-space-xs) 0 0}.admin-toolbar{display:flex;flex-direction:column;gap:var(--uid-space-xs);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-toolbar__row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-xs)}.admin-toolbar__divider{width:1px;height:22px;background:var(--uid-border-subtle);flex:none;margin:0 var(--uid-space-2xs)}.admin-toolbar__spacer{flex:1}.admin-toolbar__search{position:relative;display:inline-flex;align-items:center;flex:1 1 200px;max-width:360px;height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);gap:var(--uid-space-2xs)}.admin-toolbar__search:focus-within{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-toolbar__search-icon{color:var(--uid-text-tertiary);flex:none}.admin-toolbar__search-input{flex:1;height:100%;border:0;outline:none;background:transparent;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-toolbar__search-input::placeholder{color:var(--uid-text-tertiary)}.admin-toolbar__chip{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),border-color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease),color var(--uid-duration-fast, .12s) var(--uid-ease-out, ease)}.admin-toolbar__chip:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle));color:var(--uid-text-primary)}.admin-toolbar__chip--active{background:color-mix(in srgb,var(--uid-accent) 12%,transparent);border-color:color-mix(in srgb,var(--uid-accent) 35%,transparent);color:var(--uid-accent)}.admin-toolbar__chip--active:hover{background:color-mix(in srgb,var(--uid-accent) 18%,transparent);color:var(--uid-accent)}.admin-toolbar__chip-text{white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.admin-toolbar__chip-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;cursor:pointer;margin-left:var(--uid-space-2xs)}.admin-toolbar__chip-x:hover{background:color-mix(in srgb,var(--uid-accent) 25%,transparent)}.admin-toolbar__popover{display:flex;flex-direction:column;gap:var(--uid-space-sm);padding:var(--uid-space-sm);min-width:220px;max-width:320px}.admin-toolbar__popover--list{padding:var(--uid-space-2xs);gap:0}.admin-toolbar__popover-actions{display:flex;justify-content:flex-end;gap:var(--uid-space-2xs);border-top:1px solid var(--uid-border-subtle);padding-top:var(--uid-space-sm)}.admin-toolbar__list-item{display:flex;align-items:center;gap:var(--uid-space-2xs);padding:var(--uid-space-2xs) var(--uid-space-sm);border-radius:var(--uid-radius-sm);cursor:pointer;background:transparent;border:0;font-size:13px;text-align:left;color:var(--uid-text-primary)}.admin-toolbar__list-item:hover{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-toolbar__list-item--checkbox{cursor:pointer}.admin-toolbar__editor{display:flex;flex-direction:column;gap:var(--uid-space-2xs)}.admin-toolbar__editor--dates{gap:var(--uid-space-xs)}.admin-toolbar__input{height:32px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-toolbar__input:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-inline-edit{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.admin-inline-edit--editable{cursor:text;border-radius:3px;transition:background .12s ease}.admin-inline-edit--editable:hover{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-inline-edit__input{width:100%;height:26px;padding:0 6px;border:1px solid var(--uid-accent);background:var(--uid-surface-base);border-radius:var(--uid-radius-sm);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-resource-index__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm);margin-top:var(--uid-space-md);min-height:320px}.admin-resource-index__row-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--uid-space-2xs)}.admin-resource-index__row-action{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:var(--uid-radius-sm);background:transparent;color:var(--uid-text-secondary);cursor:pointer;transition:background var(--uid-duration-fast) var(--uid-ease-out),color var(--uid-duration-fast) var(--uid-ease-out),border-color var(--uid-duration-fast) var(--uid-ease-out)}.admin-resource-index__row-action:hover{background:var(--uid-color-surface-hover);color:var(--uid-text-primary);border-color:var(--uid-border-subtle)}.admin-resource-index__row-action--danger:hover{color:var(--uid-color-danger, #dc2626)}.admin-resource-index__state{margin-top:var(--uid-space-xl)}.admin-resource-index__table{margin-top:0}.admin-resource-index__table .uid-table-wrap{border:1px solid var(--uid-border-subtle);border-top:0;border-radius:0 0 var(--uid-radius-lg) var(--uid-radius-lg)}.admin-resource-index__table .uid-table__td,.admin-resource-index__table .uid-table__th{padding:6px var(--uid-space-md);font-size:var(--admin-row-fs, 13px);height:var(--admin-row-h, 32px);line-height:1.3}.admin-cell-truncate{display:inline-block;max-width:var(--admin-cell-max-width, 320px);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-cell-truncate--multi{display:-webkit-box;white-space:normal;-webkit-line-clamp:3;-webkit-box-orient:vertical;word-break:break-word}.admin-resource-index__footer{display:flex;justify-content:flex-end;padding:var(--uid-space-md) 0}.admin-filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-raised);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border-bottom:0;margin-top:var(--uid-space-md)}.admin-filter-bar__search{flex:1;min-width:200px;max-width:320px;height:28px;padding:0 var(--uid-space-sm);border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font-size:13px;outline:none}.admin-filter-bar__search:focus{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-filter-bar__spacer{flex:1}.admin-bulk-toolbar{display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-color-zinc-900, #18181b);color:var(--uid-color-zinc-100, #f4f4f5);border-radius:var(--uid-radius-lg) var(--uid-radius-lg) 0 0;border:1px solid var(--uid-color-zinc-900, #18181b);border-bottom:0;margin-top:var(--uid-space-md)}.admin-bulk-toolbar__count{font-size:13px}.admin-bulk-toolbar__count b{font-weight:var(--uid-font-weight-semibold)}.admin-bulk-toolbar__divider{width:1px;height:20px;background:#ffffff26}.admin-bulk-toolbar__spacer{flex:1}.admin-bulk-toolbar .uid-button{background:transparent;border-color:#ffffff26;color:var(--uid-color-zinc-100, #f4f4f5)}.admin-bulk-toolbar .uid-button:hover:not([disabled]){background:#ffffff14}.admin-bulk-toolbar .uid-button--danger{color:var(--uid-color-rose-400, #fb7185)}.admin-resource-index__row--selected{background:color-mix(in srgb,var(--uid-accent) 8%,transparent)}.admin-resource-form__back{font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);cursor:pointer;text-decoration:none;display:inline-block;margin-bottom:4px}.admin-resource-form__back:hover{color:var(--uid-text-primary)}.admin-resource-form__alert{margin-bottom:var(--uid-space-md)}.admin-resource-form__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-form__body{margin-bottom:var(--uid-space-2xl)}.admin-resource-form__savebar{position:sticky;bottom:0;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);background:var(--uid-surface-raised);border-top:1px solid var(--uid-border-default);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);margin-top:var(--uid-space-md)}.admin-resource-form__savebar-hint{flex:1;font-size:13px;color:var(--uid-warning)}.admin-infolist-rows{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--uid-space-md)}.admin-infolist-section{margin-bottom:var(--uid-space-md);padding:var(--uid-space-md);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-lg);background:var(--uid-surface-raised)}.admin-infolist-section__hd{margin-bottom:var(--uid-space-sm)}.admin-infolist-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-infolist-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-infolist-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-tabs__list{list-style:none;margin:0 0 var(--uid-space-sm);padding:0;display:flex;gap:var(--uid-space-xs);border-bottom:1px solid var(--uid-border-subtle)}.admin-infolist-tabs__tab{padding:var(--uid-space-sm) var(--uid-space-sm);font-size:13px;color:var(--uid-text-secondary);border-bottom:2px solid transparent}.admin-infolist-tabs__tab--active{color:var(--uid-text-primary);border-bottom-color:var(--uid-accent);font-weight:var(--uid-font-weight-medium)}.admin-audit-timeline{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-audit-timeline__title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--uid-space-md);position:relative}.admin-audit-timeline__list:before{content:"";position:absolute;left:11px;top:12px;bottom:12px;width:2px;background:var(--uid-border-subtle)}.admin-audit-timeline__item{position:relative;display:flex;gap:var(--uid-space-sm);padding-left:2px}.admin-audit-timeline__icon{position:relative;z-index:1;flex:none;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-audit-timeline__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding-top:2px}.admin-audit-timeline__row{display:flex;align-items:center;gap:var(--uid-space-2xs);flex-wrap:wrap}.admin-audit-timeline__actor{font-size:13px;font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-audit-timeline__verb{font-size:13px;color:var(--uid-text-secondary)}.admin-audit-timeline__when{margin-left:auto;font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__detail{font-size:12px;color:var(--uid-text-tertiary)}.admin-audit-timeline__empty,.admin-audit-timeline__error{font-size:13px;color:var(--uid-text-tertiary)}.admin-audit-timeline__error{color:var(--uid-color-danger, #dc2626)}.admin-audit-timeline__loading{display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-resource-view__alert{margin-bottom:var(--uid-space-md)}.admin-resource-view__loading{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-resource-view__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-resource-view__hd-left{display:flex;flex-direction:column;gap:var(--uid-space-2xs);min-width:0}.admin-resource-view__hd-right{display:flex;align-items:center;gap:var(--uid-space-sm);flex:none}.admin-resource-view__back{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:0;margin:0;font-size:13px;color:var(--uid-text-tertiary);background:transparent;border:0;cursor:pointer;align-self:flex-start}.admin-resource-view__back:hover{color:var(--uid-text-primary)}.admin-resource-view__meta{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-2xs)}.admin-resource-view__uid{font-family:var(--uid-font-family-mono, ui-monospace, monospace);font-size:12px;color:var(--uid-text-tertiary);letter-spacing:.02em}.admin-status-badge{display:inline-flex;align-items:center;gap:var(--uid-space-2xs);padding:2px 8px 2px 6px;border-radius:var(--uid-radius-sm);font-size:12px;font-weight:var(--uid-font-weight-medium);text-transform:capitalize}.admin-status-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.admin-status-badge[data-variant=success]{background:color-mix(in srgb,var(--uid-color-success, #10b981) 15%,transparent);color:var(--uid-color-success, #10b981)}.admin-status-badge[data-variant=warning]{background:color-mix(in srgb,var(--uid-color-warning, #f59e0b) 15%,transparent);color:var(--uid-color-warning, #f59e0b)}.admin-status-badge[data-variant=danger]{background:color-mix(in srgb,var(--uid-color-danger, #dc2626) 15%,transparent);color:var(--uid-color-danger, #dc2626)}.admin-status-badge[data-variant=neutral],.admin-status-badge[data-variant=muted]{background:var(--uid-border-subtle);color:var(--uid-text-secondary)}.admin-resource-view__grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--uid-space-md);align-items:start}@media(max-width:1024px){.admin-resource-view__grid{grid-template-columns:1fr}}.admin-resource-view__main{display:flex;flex-direction:column;gap:var(--uid-space-md);min-width:0}.admin-resource-view__aside,.admin-resource-view__card{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-resource-view__card-title{margin:0;font-family:var(--uid-font-family-display);font-size:var(--uid-font-size-lg, 16px);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-resource-view__metrics{display:flex;flex-direction:column;gap:var(--uid-space-md);margin:0;padding:0}.admin-resource-view__metric-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:var(--uid-font-weight-medium);color:var(--uid-text-tertiary);margin:0}.admin-resource-view__metric-value{font-size:14px;color:var(--uid-text-primary);margin:4px 0 0;font-variant-numeric:tabular-nums}.admin-profile__layout{display:grid;grid-template-columns:200px 1fr;gap:var(--uid-space-lg);align-items:start}.admin-profile__nav{display:flex;flex-direction:column;gap:2px}.admin-profile__nav-item{appearance:none;border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-sm);border-radius:var(--uid-radius-md);font-size:13px;color:var(--uid-text-secondary);cursor:pointer}.admin-profile__nav-item:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-profile__nav-item--active{background:var(--uid-surface-base);color:var(--uid-text-primary);font-weight:var(--uid-font-weight-medium)}.admin-profile__nav-icon{width:14px;height:14px;flex:none}.admin-profile__content{display:flex;flex-direction:column;gap:var(--uid-space-md)}.admin-profile__card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--uid-space-md)}.admin-profile__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-profile__card-ft{margin-top:var(--uid-space-md);display:flex;gap:var(--uid-space-sm)}.admin-profile__hint{margin:0;font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary)}.admin-profile__hero{display:flex;align-items:center;gap:var(--uid-space-md);margin-bottom:var(--uid-space-md)}.admin-profile__hero-text{display:flex;flex-direction:column;gap:4px}.admin-profile__hero-name{font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-profile__hero-meta{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-profile__form{display:grid;grid-template-columns:1fr 1fr;gap:var(--uid-space-md)}@media(max-width:720px){.admin-profile__form{grid-template-columns:1fr}}.admin-widget__hd{margin-bottom:var(--uid-space-sm)}.admin-widget__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-widget__desc{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-widget-bar-chart{display:block;width:100%}.admin-donut-widget__row{display:flex;align-items:center;gap:var(--uid-space-md)}.admin-donut-widget__svg{width:120px;height:120px;flex:none}.admin-donut-widget__legend{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:var(--uid-space-xs)}.admin-donut-widget__legend li{display:flex;align-items:center;gap:var(--uid-space-sm);font-size:var(--uid-font-size-xs)}.admin-donut-widget__dot{width:10px;height:10px;border-radius:var(--uid-radius-full);flex:none}.admin-donut-widget__label{flex:1;color:var(--uid-text-primary)}.admin-donut-widget__value{color:var(--uid-text-tertiary);font-variant-numeric:tabular-nums}.admin-markdown-widget{font-size:var(--uid-font-size-sm);color:var(--uid-text-secondary);white-space:pre-wrap;line-height:var(--uid-line-height-normal)}.admin-tags{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;padding:4px 8px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);cursor:text}.admin-tags--focused{border-color:var(--uid-accent);outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent)}.admin-tags--disabled{opacity:.6;cursor:not-allowed}.admin-tags__chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 8px;background:color-mix(in srgb,var(--uid-accent) 14%,transparent);color:var(--uid-accent);border-radius:var(--uid-radius-sm);font-size:12px;font-weight:500;font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;background:transparent;color:inherit;border-radius:50%;cursor:pointer}.admin-tags__chip-remove:hover{background:color-mix(in srgb,var(--uid-accent) 28%,transparent)}.admin-tags__input{flex:1;min-width:80px;height:24px;padding:0 4px;border:0;background:transparent;outline:none;font:inherit;font-size:13px;color:var(--uid-text-primary)}.admin-tags__dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:10;margin:0;padding:4px;display:flex;flex-direction:column;background:var(--uid-surface-raised);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md);box-shadow:var(--uid-shadow-md);max-height:320px;overflow-y:auto}.admin-tags__group-label{padding:8px 10px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-semibold);position:sticky;top:0;background:var(--uid-surface-raised);z-index:1}.admin-tags__group-label:first-child{padding-top:4px}.admin-tags__option{display:block;width:100%;text-align:left;padding:6px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:13px;cursor:pointer;color:var(--uid-text-primary);font-family:var(--uid-font-family-mono, ui-monospace, monospace)}.admin-tags__option:hover,.admin-tags__option--active{background:var(--uid-color-surface-hover, var(--uid-border-subtle))}.admin-translatable{display:flex;flex-direction:column;gap:6px}.admin-translatable__tabs{display:inline-flex;align-items:center;gap:2px;align-self:flex-start;padding:2px;background:var(--uid-surface-base);border:1px solid var(--uid-border-subtle);border-radius:var(--uid-radius-md)}.admin-translatable__tab{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:0;background:transparent;border-radius:var(--uid-radius-sm);font-size:11px;font-weight:600;color:var(--uid-text-secondary);cursor:pointer;letter-spacing:.04em}.admin-translatable__tab:hover{color:var(--uid-text-primary)}.admin-translatable__tab--active{background:var(--uid-surface-raised);color:var(--uid-text-primary);box-shadow:0 1px 2px #0000000a}.admin-translatable__dot{width:5px;height:5px;border-radius:50%;background:var(--uid-color-success, #10b981)}.admin-translatable__textarea{width:100%;padding:8px 10px;border:1px solid var(--uid-border-subtle);background:var(--uid-surface-base);border-radius:var(--uid-radius-md);color:var(--uid-text-primary);font:inherit;font-size:13px;resize:vertical}.admin-translatable__textarea:focus{outline:2px solid color-mix(in srgb,var(--uid-accent) 18%,transparent);border-color:var(--uid-accent)}.admin-section{margin-bottom:var(--uid-space-md)}.admin-section__header{margin-bottom:var(--uid-space-sm)}.admin-section__title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-section__description{margin:var(--uid-space-2xs) 0 0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-section__body{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-infolist-entry{display:flex;flex-direction:column;gap:var(--uid-space-2xs);padding:var(--uid-space-sm) 0}.admin-infolist-entry+.admin-infolist-entry{border-top:1px solid var(--uid-border-subtle)}.admin-infolist-entry__label{font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--uid-font-weight-medium)}.admin-infolist-entry__value{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);word-break:break-word;white-space:pre-wrap}.admin-infolist-entry__value--mono{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-text{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary)}.admin-infolist-text--mono{font-family:var(--uid-font-family-mono);font-size:var(--uid-font-size-xs)}.admin-infolist-icon{display:inline-flex;align-items:center;gap:var(--uid-space-xs);font-size:var(--uid-font-size-sm)}.admin-infolist-icon--on{color:var(--uid-success)}.admin-infolist-icon--off{color:var(--uid-text-tertiary)}.admin-infolist-icon__glyph{display:inline-block;width:14px;height:14px}.admin-notifs__hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm)}.admin-notifs__title{margin:0;font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-notifs__count{color:var(--uid-text-tertiary);font-weight:var(--uid-font-weight-regular);font-size:var(--uid-font-size-sm)}.admin-notifs__list{list-style:none;margin:0;padding:0}.admin-notifs__empty{padding:var(--uid-space-xl) var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-notifs__item{position:relative;display:flex;gap:var(--uid-space-sm);padding:var(--uid-space-sm) var(--uid-space-md);cursor:pointer;border-bottom:1px solid var(--uid-border-subtle)}.admin-notifs__item:hover{background:var(--uid-surface-hover)}.admin-notifs__item--unread{background:color-mix(in srgb,var(--uid-accent) 6%,transparent)}.admin-notifs__item--unread:hover{background:color-mix(in srgb,var(--uid-accent) 10%,transparent)}.admin-notifs__icon{width:28px;height:28px;border-radius:var(--uid-radius-md);flex:none;margin-top:2px}.admin-notifs__icon[data-kind=info]{background:color-mix(in srgb,var(--uid-info) 14%,transparent)}.admin-notifs__icon[data-kind=success]{background:color-mix(in srgb,var(--uid-success) 14%,transparent)}.admin-notifs__icon[data-kind=warning]{background:color-mix(in srgb,var(--uid-warning) 14%,transparent)}.admin-notifs__icon[data-kind=danger]{background:color-mix(in srgb,var(--uid-danger) 14%,transparent)}.admin-notifs__body{flex:1;min-width:0}.admin-notifs__row1{display:flex;align-items:baseline;gap:var(--uid-space-sm);margin-bottom:2px}.admin-notifs__title-strong{font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary);flex:1;min-width:0}.admin-notifs__title-soft{font-size:var(--uid-font-size-sm);color:var(--uid-text-primary);flex:1;min-width:0}.admin-notifs__time{font-size:11px;color:var(--uid-text-tertiary);flex:none;font-variant-numeric:tabular-nums}.admin-notifs__text{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.admin-notifs__close{position:absolute;top:6px;right:8px;appearance:none;border:0;background:transparent;color:var(--uid-text-tertiary);cursor:pointer;font-size:18px;width:22px;height:22px;border-radius:var(--uid-radius-sm);opacity:0;transition:opacity var(--uid-duration-fast, .1s)}.admin-notifs__item:hover .admin-notifs__close{opacity:1}.admin-notifs__close:hover{background:var(--uid-surface-hover);color:var(--uid-text-primary)}.admin-import-wizard{max-width:1100px;margin:0 auto}.admin-import-wizard__card{margin-top:var(--uid-space-md)}.admin-import-wizard__card-hd{margin-bottom:var(--uid-space-md)}.admin-import-wizard__card-hd h3{margin:0 0 var(--uid-space-2xs);font-size:var(--uid-font-size-md);font-weight:var(--uid-font-weight-semibold)}.admin-import-wizard__card-hd p{margin:0;font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary)}.admin-import-wizard__empty{padding:var(--uid-space-md);text-align:center;color:var(--uid-text-tertiary);font-size:var(--uid-font-size-sm)}.admin-import-wizard__mapping{display:flex;flex-direction:column;gap:var(--uid-space-sm)}.admin-import-wizard__map-row{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--uid-space-md);align-items:center}.admin-import-wizard__map-source{display:flex;align-items:center;gap:var(--uid-space-sm)}.admin-import-wizard__map-sample{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-xs);font-style:italic}.admin-import-wizard__map-arrow{color:var(--uid-text-tertiary);font-size:var(--uid-font-size-md)}.admin-import-wizard__kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md);margin-top:var(--uid-space-md)}.admin-import-wizard__nav{display:flex;align-items:center;gap:var(--uid-space-sm);margin-top:var(--uid-space-md)}.admin-gallery__group{margin-bottom:var(--uid-space-2xl)}.admin-gallery__group-title{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-lg);font-weight:var(--uid-font-weight-semibold);color:var(--uid-text-primary)}.admin-gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--uid-space-md)}@media(max-width:960px){.admin-gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.admin-gallery__grid{grid-template-columns:1fr}}.admin-gallery__card{display:flex;flex-direction:column}.admin-gallery__card-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--uid-space-sm);margin-bottom:var(--uid-space-xs)}.admin-gallery__card-title{margin:0;font-size:var(--uid-font-size-sm);font-weight:var(--uid-font-weight-semibold)}.admin-gallery__card-type{font-family:var(--uid-font-family-mono);font-size:11px;color:var(--uid-text-tertiary);background:var(--uid-surface-base);padding:1px 6px;border-radius:var(--uid-radius-sm);border:1px solid var(--uid-border-subtle)}.admin-gallery__card-desc{margin:0 0 var(--uid-space-md);font-size:var(--uid-font-size-xs);color:var(--uid-text-tertiary);line-height:var(--uid-line-height-normal)}.admin-gallery__card-demo{flex:1;display:flex;flex-direction:column;justify-content:flex-end}.admin-field__control--quill .ql-container{min-height:200px;font-size:14px;font-family:inherit}.admin-field__control--quill .ql-toolbar.ql-snow,.admin-field__control--quill .ql-container.ql-snow{border-color:var(--uid-border-subtle)}.admin-field__control--quill .ql-toolbar.ql-snow{border-radius:var(--uid-radius-md) var(--uid-radius-md) 0 0;background:var(--uid-surface-base)}.admin-field__control--quill .ql-container.ql-snow{border-radius:0 0 var(--uid-radius-md) var(--uid-radius-md);background:var(--uid-surface-raised);color:var(--uid-text-primary)}
|