@gallop.software/studio 0.1.20 → 0.1.22

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.
@@ -1,4 +1,10 @@
1
1
  "use client";
2
+ import {
3
+ baseReset,
4
+ colors,
5
+ fontSize,
6
+ fontStack
7
+ } from "./chunk-R5WKNVEV.mjs";
2
8
 
3
9
  // src/components/StudioUI.tsx
4
10
  import { useEffect as useEffect3, useCallback as useCallback2, useState as useState6 } from "react";
@@ -61,92 +67,100 @@ var fadeIn = keyframes`
61
67
  var slideIn = keyframes`
62
68
  from {
63
69
  opacity: 0;
64
- transform: scale(0.95);
70
+ transform: translateY(-8px) scale(0.98);
65
71
  }
66
72
  to {
67
73
  opacity: 1;
68
- transform: scale(1);
74
+ transform: translateY(0) scale(1);
69
75
  }
70
76
  `;
71
77
  var styles = {
72
78
  overlay: css`
73
79
  position: fixed;
74
80
  inset: 0;
75
- background-color: rgba(0, 0, 0, 0.5);
81
+ background-color: rgba(26, 31, 54, 0.4);
82
+ backdrop-filter: blur(4px);
76
83
  display: flex;
77
84
  align-items: center;
78
85
  justify-content: center;
79
86
  z-index: 10000;
80
87
  animation: ${fadeIn} 0.15s ease-out;
88
+ font-family: ${fontStack};
81
89
  `,
82
90
  modal: css`
83
- background-color: white;
91
+ ${baseReset}
92
+ background-color: ${colors.surface};
84
93
  border-radius: 12px;
85
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
86
- max-width: 400px;
94
+ box-shadow: 0 30px 60px -12px rgba(50, 50, 93, 0.25), 0 18px 36px -18px rgba(0, 0, 0, 0.3);
95
+ max-width: 420px;
87
96
  width: 90%;
88
- animation: ${slideIn} 0.15s ease-out;
97
+ animation: ${slideIn} 0.2s ease-out;
98
+ overflow: hidden;
89
99
  `,
90
100
  header: css`
91
- padding: 20px 24px 0;
101
+ padding: 24px 24px 0;
92
102
  `,
93
103
  title: css`
94
- font-size: 18px;
104
+ font-size: ${fontSize.lg};
95
105
  font-weight: 600;
96
- color: #111827;
106
+ color: ${colors.text};
97
107
  margin: 0;
108
+ letter-spacing: -0.02em;
98
109
  `,
99
110
  body: css`
100
111
  padding: 12px 24px 24px;
101
112
  `,
102
113
  message: css`
103
- font-size: 14px;
104
- color: #6b7280;
114
+ font-size: ${fontSize.base};
115
+ color: ${colors.textSecondary};
105
116
  margin: 0;
106
- line-height: 1.5;
117
+ line-height: 1.6;
107
118
  `,
108
119
  footer: css`
109
120
  display: flex;
110
121
  justify-content: flex-end;
111
122
  gap: 12px;
112
123
  padding: 16px 24px;
113
- border-top: 1px solid #e5e7eb;
114
- background-color: #f9fafb;
115
- border-radius: 0 0 12px 12px;
124
+ border-top: 1px solid ${colors.border};
125
+ background-color: ${colors.background};
116
126
  `,
117
127
  btn: css`
118
- padding: 8px 16px;
119
- font-size: 14px;
128
+ padding: 10px 18px;
129
+ font-size: ${fontSize.base};
120
130
  font-weight: 500;
121
- border-radius: 8px;
131
+ border-radius: 6px;
122
132
  cursor: pointer;
123
- transition: all 0.15s;
133
+ transition: all 0.15s ease;
134
+ letter-spacing: -0.01em;
124
135
  `,
125
136
  btnCancel: css`
126
- background-color: white;
127
- border: 1px solid #d1d5db;
128
- color: #374151;
137
+ background-color: ${colors.surface};
138
+ border: 1px solid ${colors.border};
139
+ color: ${colors.text};
129
140
 
130
141
  &:hover {
131
- background-color: #f9fafb;
142
+ background-color: ${colors.surfaceHover};
143
+ border-color: ${colors.borderHover};
132
144
  }
133
145
  `,
134
146
  btnConfirm: css`
135
- background-color: #9333ea;
136
- border: 1px solid #9333ea;
147
+ background-color: ${colors.primary};
148
+ border: 1px solid ${colors.primary};
137
149
  color: white;
138
150
 
139
151
  &:hover {
140
- background-color: #7c3aed;
152
+ background-color: ${colors.primaryHover};
153
+ border-color: ${colors.primaryHover};
141
154
  }
142
155
  `,
143
156
  btnDanger: css`
144
- background-color: #dc2626;
145
- border: 1px solid #dc2626;
157
+ background-color: ${colors.danger};
158
+ border: 1px solid ${colors.danger};
146
159
  color: white;
147
160
 
148
161
  &:hover {
149
- background-color: #b91c1c;
162
+ background-color: ${colors.dangerHover};
163
+ border-color: ${colors.dangerHover};
150
164
  }
151
165
  `
152
166
  };
@@ -199,8 +213,8 @@ var styles2 = {
199
213
  align-items: center;
200
214
  justify-content: space-between;
201
215
  padding: 12px 24px;
202
- background-color: #f9fafb;
203
- border-bottom: 1px solid #e5e7eb;
216
+ background-color: ${colors.surface};
217
+ border-bottom: 1px solid ${colors.border};
204
218
  `,
205
219
  left: css2`
206
220
  display: flex;
@@ -210,86 +224,112 @@ var styles2 = {
210
224
  right: css2`
211
225
  display: flex;
212
226
  align-items: center;
213
- gap: 16px;
227
+ gap: 12px;
214
228
  `,
215
229
  btn: css2`
216
- display: flex;
230
+ display: inline-flex;
217
231
  align-items: center;
218
- gap: 8px;
219
- padding: 8px 12px;
220
- border-radius: 8px;
221
- font-size: 14px;
232
+ gap: 6px;
233
+ padding: 8px 14px;
234
+ border-radius: 6px;
235
+ font-size: ${fontSize.base};
222
236
  font-weight: 500;
223
- background: none;
224
- border: none;
237
+ background: ${colors.surface};
238
+ border: 1px solid ${colors.border};
225
239
  cursor: pointer;
226
- transition: background-color 0.15s;
240
+ transition: all 0.15s ease;
241
+ color: ${colors.text};
242
+ letter-spacing: -0.01em;
243
+
244
+ &:hover:not(:disabled) {
245
+ background-color: ${colors.surfaceHover};
246
+ border-color: ${colors.borderHover};
247
+ }
227
248
 
228
249
  &:disabled {
229
250
  cursor: not-allowed;
230
251
  opacity: 0.5;
231
252
  }
232
253
  `,
233
- btnDefault: css2`
234
- color: #374151;
254
+ btnPrimary: css2`
255
+ background: ${colors.primary};
256
+ border-color: ${colors.primary};
257
+ color: white;
235
258
 
236
259
  &:hover:not(:disabled) {
237
- background-color: white;
260
+ background: ${colors.primaryHover};
261
+ border-color: ${colors.primaryHover};
238
262
  }
239
263
  `,
240
264
  btnDanger: css2`
241
- color: #dc2626;
265
+ color: ${colors.danger};
242
266
 
243
267
  &:hover:not(:disabled) {
244
- background-color: #fef2f2;
268
+ background-color: ${colors.dangerLight};
269
+ border-color: ${colors.danger};
245
270
  }
246
271
  `,
247
272
  icon: css2`
248
- width: 16px;
249
- height: 16px;
273
+ width: 15px;
274
+ height: 15px;
250
275
  `,
251
276
  iconSpin: css2`
252
277
  animation: ${spin} 1s linear infinite;
253
278
  `,
254
279
  selectionCount: css2`
255
- font-size: 14px;
256
- color: #4b5563;
280
+ font-size: ${fontSize.base};
281
+ color: ${colors.textSecondary};
282
+ display: flex;
283
+ align-items: center;
284
+ gap: 8px;
257
285
  `,
258
286
  clearBtn: css2`
259
- margin-left: 8px;
260
- color: #9333ea;
287
+ color: ${colors.primary};
261
288
  background: none;
262
289
  border: none;
263
290
  cursor: pointer;
264
- font-size: 14px;
291
+ font-size: ${fontSize.base};
292
+ font-weight: 500;
293
+ padding: 0;
265
294
 
266
295
  &:hover {
267
296
  text-decoration: underline;
268
297
  }
269
298
  `,
299
+ divider: css2`
300
+ width: 1px;
301
+ height: 24px;
302
+ background: ${colors.border};
303
+ margin: 0 4px;
304
+ `,
270
305
  viewToggle: css2`
271
306
  display: flex;
272
307
  align-items: center;
273
- background-color: white;
274
- border: 1px solid #e5e7eb;
275
- border-radius: 8px;
276
- overflow: hidden;
308
+ background-color: ${colors.surfaceHover};
309
+ border: 1px solid ${colors.border};
310
+ border-radius: 6px;
311
+ padding: 2px;
277
312
  `,
278
313
  viewBtn: css2`
279
- padding: 8px;
280
- background: none;
314
+ padding: 6px 8px;
315
+ background: transparent;
281
316
  border: none;
317
+ border-radius: 4px;
282
318
  cursor: pointer;
283
- color: #6b7280;
284
- transition: all 0.15s;
319
+ color: ${colors.textSecondary};
320
+ transition: all 0.15s ease;
321
+ display: flex;
322
+ align-items: center;
323
+ justify-content: center;
285
324
 
286
325
  &:hover {
287
- background-color: #f9fafb;
326
+ color: ${colors.text};
288
327
  }
289
328
  `,
290
329
  viewBtnActive: css2`
291
- background-color: #f3e8ff;
292
- color: #7c3aed;
330
+ background-color: ${colors.surface};
331
+ color: ${colors.text};
332
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
293
333
  `
294
334
  };
295
335
  function StudioToolbar() {
@@ -418,50 +458,65 @@ function StudioToolbar() {
418
458
  ref: fileInputRef,
419
459
  type: "file",
420
460
  multiple: true,
421
- accept: "image/*",
461
+ accept: "image/*,video/*,audio/*,.pdf",
422
462
  onChange: handleFileChange,
423
463
  style: { display: "none" }
424
464
  }
425
465
  ),
426
466
  /* @__PURE__ */ jsxs2("div", { css: styles2.left, children: [
427
- /* @__PURE__ */ jsx2(
428
- ToolbarButton,
467
+ /* @__PURE__ */ jsxs2(
468
+ "button",
429
469
  {
470
+ css: [styles2.btn, styles2.btnPrimary],
430
471
  onClick: handleUpload,
431
- icon: "upload",
432
- label: uploading ? "Uploading..." : "Upload",
433
- disabled: uploading || isInImagesFolder
472
+ disabled: uploading || isInImagesFolder,
473
+ children: [
474
+ /* @__PURE__ */ jsx2(UploadIcon, {}),
475
+ uploading ? "Uploading..." : "Upload"
476
+ ]
434
477
  }
435
478
  ),
436
- /* @__PURE__ */ jsx2(
437
- ToolbarButton,
479
+ /* @__PURE__ */ jsx2("div", { css: styles2.divider }),
480
+ /* @__PURE__ */ jsxs2(
481
+ "button",
438
482
  {
483
+ css: styles2.btn,
439
484
  onClick: handleReprocess,
440
- icon: "refresh",
441
- label: "Reprocess",
442
- disabled: !hasSelection
485
+ disabled: !hasSelection,
486
+ children: [
487
+ /* @__PURE__ */ jsx2(RefreshIcon, {}),
488
+ "Reprocess"
489
+ ]
443
490
  }
444
491
  ),
445
- /* @__PURE__ */ jsx2(
446
- ToolbarButton,
492
+ /* @__PURE__ */ jsxs2(
493
+ "button",
447
494
  {
495
+ css: [styles2.btn, styles2.btnDanger],
448
496
  onClick: handleDeleteClick,
449
- icon: "trash",
450
- label: "Delete",
451
497
  disabled: !hasSelection,
452
- variant: "danger"
498
+ children: [
499
+ /* @__PURE__ */ jsx2(TrashIcon, {}),
500
+ "Delete"
501
+ ]
453
502
  }
454
503
  ),
455
- /* @__PURE__ */ jsx2(
456
- ToolbarButton,
504
+ /* @__PURE__ */ jsxs2(
505
+ "button",
457
506
  {
507
+ css: styles2.btn,
458
508
  onClick: handleSyncCdn,
459
- icon: "cloud",
460
- label: "Sync CDN",
461
- disabled: !hasSelection
509
+ disabled: !hasSelection,
510
+ children: [
511
+ /* @__PURE__ */ jsx2(CloudIcon, {}),
512
+ "Sync CDN"
513
+ ]
462
514
  }
463
515
  ),
464
- /* @__PURE__ */ jsx2(ToolbarButton, { onClick: handleScan, icon: "scan", label: "Scan" })
516
+ /* @__PURE__ */ jsxs2("button", { css: styles2.btn, onClick: handleScan, children: [
517
+ /* @__PURE__ */ jsx2(ScanIcon, {}),
518
+ "Scan"
519
+ ] })
465
520
  ] }),
466
521
  /* @__PURE__ */ jsxs2("div", { css: styles2.right, children: [
467
522
  hasSelection && /* @__PURE__ */ jsxs2("span", { css: styles2.selectionCount, children: [
@@ -470,12 +525,11 @@ function StudioToolbar() {
470
525
  /* @__PURE__ */ jsx2("button", { css: styles2.clearBtn, onClick: clearSelection, children: "Clear" })
471
526
  ] }),
472
527
  /* @__PURE__ */ jsx2(
473
- ToolbarButton,
528
+ "button",
474
529
  {
530
+ css: styles2.btn,
475
531
  onClick: handleRefresh,
476
- icon: "reload",
477
- label: "Refresh",
478
- spinning: refreshing
532
+ children: /* @__PURE__ */ jsx2(RefreshIcon, { spinning: refreshing })
479
533
  }
480
534
  ),
481
535
  /* @__PURE__ */ jsxs2("div", { css: styles2.viewToggle, children: [
@@ -502,44 +556,20 @@ function StudioToolbar() {
502
556
  ] })
503
557
  ] });
504
558
  }
505
- function ToolbarButton({
506
- onClick,
507
- icon,
508
- label,
509
- disabled,
510
- variant = "default",
511
- spinning
512
- }) {
513
- return /* @__PURE__ */ jsxs2(
514
- "button",
515
- {
516
- css: [styles2.btn, variant === "danger" ? styles2.btnDanger : styles2.btnDefault],
517
- onClick,
518
- disabled,
519
- children: [
520
- /* @__PURE__ */ jsx2(IconComponent, { icon, spinning }),
521
- label
522
- ]
523
- }
524
- );
559
+ function UploadIcon() {
560
+ return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" }) });
525
561
  }
526
- function IconComponent({ icon, spinning }) {
527
- switch (icon) {
528
- case "upload":
529
- return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" }) });
530
- case "refresh":
531
- return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }) });
532
- case "trash":
533
- return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) });
534
- case "cloud":
535
- return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" }) });
536
- case "scan":
537
- return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }) });
538
- case "reload":
539
- return /* @__PURE__ */ jsx2("svg", { css: [styles2.icon, spinning && styles2.iconSpin], fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }) });
540
- default:
541
- return null;
542
- }
562
+ function RefreshIcon({ spinning }) {
563
+ return /* @__PURE__ */ jsx2("svg", { css: [styles2.icon, spinning && styles2.iconSpin], fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }) });
564
+ }
565
+ function TrashIcon() {
566
+ return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) });
567
+ }
568
+ function CloudIcon() {
569
+ return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" }) });
570
+ }
571
+ function ScanIcon() {
572
+ return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }) });
543
573
  }
544
574
  function GridIcon() {
545
575
  return /* @__PURE__ */ jsx2("svg", { css: styles2.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx2("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z" }) });
@@ -556,62 +586,69 @@ var styles3 = {
556
586
  display: flex;
557
587
  align-items: center;
558
588
  gap: 8px;
559
- padding: 8px 24px;
560
- background-color: white;
561
- border-bottom: 1px solid #f3f4f6;
589
+ padding: 10px 24px;
590
+ background-color: ${colors.surface};
591
+ border-bottom: 1px solid ${colors.borderLight};
562
592
  `,
563
593
  backBtn: css3`
564
- padding: 4px;
565
- background: none;
566
- border: none;
567
- border-radius: 4px;
594
+ padding: 6px;
595
+ background: ${colors.surface};
596
+ border: 1px solid ${colors.border};
597
+ border-radius: 6px;
568
598
  cursor: pointer;
569
- transition: background-color 0.15s;
599
+ transition: all 0.15s ease;
600
+ display: flex;
601
+ align-items: center;
602
+ justify-content: center;
570
603
 
571
604
  &:hover {
572
- background-color: #f3f4f6;
605
+ background-color: ${colors.surfaceHover};
606
+ border-color: ${colors.borderHover};
573
607
  }
574
608
  `,
575
609
  backIcon: css3`
576
610
  width: 16px;
577
611
  height: 16px;
578
- color: #6b7280;
612
+ color: ${colors.textSecondary};
579
613
  `,
580
614
  nav: css3`
581
615
  display: flex;
582
616
  align-items: center;
583
- gap: 4px;
584
- font-size: 14px;
617
+ gap: 2px;
618
+ font-size: ${fontSize.base};
585
619
  `,
586
620
  item: css3`
587
621
  display: flex;
588
622
  align-items: center;
589
- gap: 4px;
623
+ gap: 2px;
590
624
  `,
591
625
  separator: css3`
592
- color: #d1d5db;
626
+ color: ${colors.textMuted};
627
+ margin: 0 2px;
593
628
  `,
594
629
  btn: css3`
595
- padding: 2px 4px;
630
+ padding: 4px 8px;
596
631
  background: none;
597
632
  border: none;
598
633
  border-radius: 4px;
599
634
  cursor: pointer;
600
- transition: all 0.15s;
635
+ transition: all 0.15s ease;
636
+ font-size: ${fontSize.base};
637
+ letter-spacing: -0.01em;
601
638
 
602
639
  &:hover {
603
- background-color: #f3f4f6;
640
+ background-color: ${colors.surfaceHover};
604
641
  }
605
642
  `,
606
643
  btnActive: css3`
607
- color: #111827;
608
- font-weight: 500;
644
+ color: ${colors.text};
645
+ font-weight: 600;
609
646
  `,
610
647
  btnInactive: css3`
611
- color: #6b7280;
648
+ color: ${colors.textSecondary};
612
649
 
613
650
  &:hover {
614
- color: #374151;
651
+ color: ${colors.text};
615
652
  }
616
653
  `
617
654
  };
@@ -656,9 +693,9 @@ var styles4 = {
656
693
  width: 32px;
657
694
  height: 32px;
658
695
  border-radius: 50%;
659
- border: 2px solid transparent;
660
- border-bottom-color: #9333ea;
661
- animation: ${spin2} 1s linear infinite;
696
+ border: 3px solid ${colors.border};
697
+ border-top-color: ${colors.primary};
698
+ animation: ${spin2} 0.8s linear infinite;
662
699
  `,
663
700
  empty: css4`
664
701
  display: flex;
@@ -666,21 +703,27 @@ var styles4 = {
666
703
  align-items: center;
667
704
  justify-content: center;
668
705
  height: 256px;
669
- color: #6b7280;
706
+ color: ${colors.textSecondary};
670
707
  `,
671
708
  emptyIcon: css4`
672
709
  width: 48px;
673
710
  height: 48px;
674
711
  margin-bottom: 16px;
712
+ opacity: 0.5;
675
713
  `,
676
714
  emptyText: css4`
677
- font-size: 14px;
678
- margin: 0;
715
+ font-size: ${fontSize.base};
716
+ margin: 0 0 4px 0;
717
+
718
+ &:last-child {
719
+ color: ${colors.textMuted};
720
+ font-size: ${fontSize.sm};
721
+ }
679
722
  `,
680
723
  grid: css4`
681
724
  display: grid;
682
725
  grid-template-columns: repeat(2, 1fr);
683
- gap: 16px;
726
+ gap: 12px;
684
727
 
685
728
  @media (min-width: 640px) { grid-template-columns: repeat(3, 1fr); }
686
729
  @media (min-width: 768px) { grid-template-columns: repeat(4, 1fr); }
@@ -690,23 +733,25 @@ var styles4 = {
690
733
  item: css4`
691
734
  position: relative;
692
735
  border-radius: 8px;
693
- border: 2px solid transparent;
736
+ border: 1px solid ${colors.border};
694
737
  overflow: hidden;
695
738
  cursor: pointer;
696
- transition: all 0.15s;
697
- background-color: #f9fafb;
739
+ transition: all 0.15s ease;
740
+ background-color: ${colors.surface};
698
741
  user-select: none;
742
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
699
743
 
700
744
  &:hover {
701
- border-color: #e5e7eb;
745
+ border-color: #d0d5dd;
746
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.06);
702
747
  }
703
748
  `,
704
749
  itemSelected: css4`
705
- border-color: #a855f7;
706
- background-color: #faf5ff;
750
+ border-color: ${colors.primary};
751
+ box-shadow: 0 0 0 1px ${colors.primary};
707
752
 
708
753
  &:hover {
709
- border-color: #a855f7;
754
+ border-color: ${colors.primary};
710
755
  }
711
756
  `,
712
757
  checkboxWrapper: css4`
@@ -720,7 +765,7 @@ var styles4 = {
720
765
  checkbox: css4`
721
766
  width: 16px;
722
767
  height: 16px;
723
- accent-color: #9333ea;
768
+ accent-color: ${colors.primary};
724
769
  cursor: pointer;
725
770
  `,
726
771
  cdnBadge: css4`
@@ -728,11 +773,12 @@ var styles4 = {
728
773
  top: 8px;
729
774
  right: 8px;
730
775
  z-index: 10;
731
- background-color: #dcfce7;
732
- color: #15803d;
733
- font-size: 12px;
734
- padding: 2px 6px;
735
- border-radius: 9999px;
776
+ background-color: ${colors.successLight};
777
+ color: ${colors.success};
778
+ font-size: 11px;
779
+ font-weight: 500;
780
+ padding: 2px 8px;
781
+ border-radius: 4px;
736
782
  `,
737
783
  content: css4`
738
784
  aspect-ratio: 1;
@@ -740,16 +786,17 @@ var styles4 = {
740
786
  align-items: center;
741
787
  justify-content: center;
742
788
  padding: 16px;
789
+ background: ${colors.background};
743
790
  `,
744
791
  folderIcon: css4`
745
- width: 64px;
746
- height: 64px;
747
- color: #facc15;
792
+ width: 56px;
793
+ height: 56px;
794
+ color: #f5a623;
748
795
  `,
749
796
  fileIcon: css4`
750
- width: 48px;
751
- height: 48px;
752
- color: #9ca3af;
797
+ width: 40px;
798
+ height: 40px;
799
+ color: ${colors.textMuted};
753
800
  `,
754
801
  image: css4`
755
802
  max-width: 100%;
@@ -758,70 +805,78 @@ var styles4 = {
758
805
  border-radius: 4px;
759
806
  `,
760
807
  label: css4`
761
- padding: 6px 8px;
762
- background-color: white;
763
- border-top: 1px solid #e5e7eb;
808
+ padding: 10px 12px;
809
+ background-color: ${colors.surface};
810
+ border-top: 1px solid ${colors.borderLight};
764
811
  `,
765
812
  labelRow: css4`
766
813
  display: flex;
767
814
  align-items: center;
768
815
  justify-content: space-between;
769
- gap: 4px;
816
+ gap: 8px;
770
817
  `,
771
818
  labelText: css4`
772
819
  flex: 1;
773
820
  min-width: 0;
774
821
  `,
775
822
  name: css4`
776
- font-size: 12px;
777
- color: #374151;
823
+ font-size: ${fontSize.sm};
824
+ font-weight: 500;
825
+ color: ${colors.text};
778
826
  white-space: nowrap;
779
827
  overflow: hidden;
780
828
  text-overflow: ellipsis;
781
829
  margin: 0;
830
+ letter-spacing: -0.01em;
782
831
  `,
783
832
  size: css4`
784
- font-size: 12px;
785
- color: #9ca3af;
786
- margin: 0;
833
+ font-size: ${fontSize.xs};
834
+ color: ${colors.textMuted};
835
+ margin: 2px 0 0 0;
787
836
  `,
788
837
  openBtn: css4`
789
838
  flex-shrink: 0;
790
- font-size: 11px;
791
- color: #9333ea;
792
- background: none;
793
- border: none;
794
- padding: 2px 6px;
839
+ font-size: ${fontSize.xs};
840
+ font-weight: 500;
841
+ color: ${colors.primary};
842
+ background: ${colors.surface};
843
+ border: 1px solid ${colors.border};
844
+ padding: 4px 10px;
795
845
  cursor: pointer;
796
846
  border-radius: 4px;
847
+ transition: all 0.15s ease;
797
848
 
798
849
  &:hover {
799
- background-color: #f3e8ff;
850
+ background-color: ${colors.primaryLight};
851
+ border-color: ${colors.primary};
800
852
  }
801
853
  `,
802
854
  selectAllRow: css4`
803
855
  display: flex;
804
856
  align-items: center;
805
- margin-bottom: 12px;
806
- padding-bottom: 12px;
807
- border-bottom: 1px solid #e5e7eb;
857
+ margin-bottom: 16px;
858
+ padding: 12px 16px;
859
+ background: ${colors.surface};
860
+ border-radius: 8px;
861
+ border: 1px solid ${colors.border};
808
862
  `,
809
863
  selectAllLabel: css4`
810
864
  display: flex;
811
865
  align-items: center;
812
- gap: 8px;
813
- font-size: 14px;
814
- color: #6b7280;
866
+ gap: 10px;
867
+ font-size: ${fontSize.base};
868
+ font-weight: 500;
869
+ color: ${colors.textSecondary};
815
870
  cursor: pointer;
816
871
 
817
872
  &:hover {
818
- color: #374151;
873
+ color: ${colors.text};
819
874
  }
820
875
  `,
821
876
  selectAllCheckbox: css4`
822
877
  width: 16px;
823
878
  height: 16px;
824
- accent-color: #9333ea;
879
+ accent-color: ${colors.primary};
825
880
  `
826
881
  };
827
882
  function StudioFileGrid() {
@@ -993,9 +1048,9 @@ var styles5 = {
993
1048
  width: 32px;
994
1049
  height: 32px;
995
1050
  border-radius: 50%;
996
- border: 2px solid transparent;
997
- border-bottom-color: #9333ea;
998
- animation: ${spin3} 1s linear infinite;
1051
+ border: 3px solid ${colors.border};
1052
+ border-top-color: ${colors.primary};
1053
+ animation: ${spin3} 0.8s linear infinite;
999
1054
  `,
1000
1055
  empty: css5`
1001
1056
  display: flex;
@@ -1003,7 +1058,13 @@ var styles5 = {
1003
1058
  align-items: center;
1004
1059
  justify-content: center;
1005
1060
  height: 256px;
1006
- color: #6b7280;
1061
+ color: ${colors.textSecondary};
1062
+ `,
1063
+ tableWrapper: css5`
1064
+ background: ${colors.surface};
1065
+ border-radius: 8px;
1066
+ border: 1px solid ${colors.border};
1067
+ overflow: hidden;
1007
1068
  `,
1008
1069
  table: css5`
1009
1070
  width: 100%;
@@ -1011,15 +1072,17 @@ var styles5 = {
1011
1072
  `,
1012
1073
  th: css5`
1013
1074
  text-align: left;
1014
- font-size: 12px;
1015
- color: #6b7280;
1075
+ font-size: 11px;
1076
+ color: ${colors.textMuted};
1016
1077
  text-transform: uppercase;
1017
1078
  letter-spacing: 0.05em;
1018
- padding-bottom: 8px;
1019
- font-weight: normal;
1079
+ padding: 12px 16px;
1080
+ font-weight: 600;
1081
+ background: ${colors.background};
1082
+ border-bottom: 1px solid ${colors.border};
1020
1083
  `,
1021
1084
  thCheckbox: css5`
1022
- width: 32px;
1085
+ width: 48px;
1023
1086
  `,
1024
1087
  thSize: css5`
1025
1088
  width: 96px;
@@ -1030,95 +1093,105 @@ var styles5 = {
1030
1093
  thCdn: css5`
1031
1094
  width: 96px;
1032
1095
  `,
1033
- tbody: css5`
1034
- border-top: 1px solid #f3f4f6;
1035
- `,
1096
+ tbody: css5``,
1036
1097
  row: css5`
1037
1098
  cursor: pointer;
1038
- transition: background-color 0.15s;
1099
+ transition: background-color 0.15s ease;
1039
1100
  user-select: none;
1040
1101
 
1041
1102
  &:hover {
1042
- background-color: #f9fafb;
1103
+ background-color: ${colors.surfaceHover};
1104
+ }
1105
+
1106
+ &:not(:last-child) td {
1107
+ border-bottom: 1px solid ${colors.borderLight};
1043
1108
  }
1044
1109
  `,
1045
1110
  rowSelected: css5`
1046
- background-color: #faf5ff;
1111
+ background-color: ${colors.primaryLight};
1047
1112
 
1048
1113
  &:hover {
1049
- background-color: #faf5ff;
1114
+ background-color: ${colors.primaryLight};
1050
1115
  }
1051
1116
  `,
1052
1117
  td: css5`
1053
- padding: 8px 0;
1054
- border-bottom: 1px solid #f3f4f6;
1118
+ padding: 12px 16px;
1055
1119
  `,
1056
1120
  checkboxCell: css5`
1057
- padding: 8px 12px;
1121
+ padding: 12px 16px;
1058
1122
  cursor: pointer;
1059
1123
  `,
1060
1124
  checkbox: css5`
1061
1125
  width: 16px;
1062
1126
  height: 16px;
1063
- accent-color: #9333ea;
1127
+ accent-color: ${colors.primary};
1064
1128
  cursor: pointer;
1065
1129
  `,
1066
1130
  nameCell: css5`
1067
1131
  display: flex;
1068
1132
  align-items: center;
1069
- gap: 8px;
1133
+ gap: 12px;
1070
1134
  `,
1071
1135
  folderIcon: css5`
1072
1136
  width: 20px;
1073
1137
  height: 20px;
1074
- color: #facc15;
1138
+ color: #f5a623;
1139
+ flex-shrink: 0;
1075
1140
  `,
1076
1141
  fileIcon: css5`
1077
1142
  width: 20px;
1078
1143
  height: 20px;
1079
- color: #9ca3af;
1144
+ color: ${colors.textMuted};
1145
+ flex-shrink: 0;
1080
1146
  `,
1081
1147
  thumbnail: css5`
1082
- width: 32px;
1083
- height: 32px;
1148
+ width: 36px;
1149
+ height: 36px;
1084
1150
  object-fit: cover;
1085
- border-radius: 4px;
1151
+ border-radius: 6px;
1086
1152
  flex-shrink: 0;
1153
+ border: 1px solid ${colors.borderLight};
1087
1154
  `,
1088
1155
  name: css5`
1089
- font-size: 14px;
1090
- color: #111827;
1156
+ font-size: ${fontSize.base};
1157
+ font-weight: 500;
1158
+ color: ${colors.text};
1159
+ letter-spacing: -0.01em;
1091
1160
  `,
1092
1161
  meta: css5`
1093
- font-size: 14px;
1094
- color: #6b7280;
1162
+ font-size: ${fontSize.sm};
1163
+ color: ${colors.textSecondary};
1095
1164
  `,
1096
1165
  cdnBadge: css5`
1097
1166
  display: inline-flex;
1098
1167
  align-items: center;
1099
1168
  gap: 4px;
1100
- font-size: 12px;
1101
- color: #15803d;
1169
+ font-size: ${fontSize.xs};
1170
+ font-weight: 500;
1171
+ color: ${colors.success};
1102
1172
  `,
1103
1173
  cdnIcon: css5`
1104
1174
  width: 12px;
1105
1175
  height: 12px;
1106
1176
  `,
1107
1177
  cdnEmpty: css5`
1108
- font-size: 12px;
1109
- color: #9ca3af;
1178
+ font-size: ${fontSize.sm};
1179
+ color: ${colors.textMuted};
1110
1180
  `,
1111
1181
  openBtn: css5`
1112
- font-size: 12px;
1113
- color: #9333ea;
1114
- background: none;
1115
- border: none;
1116
- padding: 2px 8px;
1182
+ font-size: ${fontSize.xs};
1183
+ font-weight: 500;
1184
+ color: ${colors.primary};
1185
+ background: ${colors.surface};
1186
+ border: 1px solid ${colors.border};
1187
+ padding: 4px 12px;
1117
1188
  cursor: pointer;
1118
1189
  border-radius: 4px;
1190
+ transition: all 0.15s ease;
1119
1191
 
1120
1192
  &:hover {
1121
- background-color: #f3e8ff;
1193
+ background-color: ${colors.primaryLight};
1194
+ border-color: ${colors.primary};
1122
1195
  }
1123
1196
  `
1124
1197
  };
@@ -1277,67 +1350,74 @@ function isVideoFile(filename) {
1277
1350
  var styles6 = {
1278
1351
  panel: css6`
1279
1352
  width: 320px;
1280
- border-left: 1px solid #e5e7eb;
1281
- background-color: #f9fafb;
1282
- padding: 16px;
1353
+ border-left: 1px solid ${colors.border};
1354
+ background-color: ${colors.surface};
1355
+ padding: 20px;
1283
1356
  overflow: auto;
1284
1357
  `,
1285
1358
  title: css6`
1286
- font-size: 14px;
1287
- font-weight: 500;
1288
- color: #111827;
1359
+ font-size: ${fontSize.sm};
1360
+ font-weight: 600;
1361
+ color: ${colors.textSecondary};
1362
+ text-transform: uppercase;
1363
+ letter-spacing: 0.05em;
1289
1364
  margin: 0 0 16px 0;
1290
1365
  `,
1291
1366
  imageContainer: css6`
1292
- background-color: white;
1367
+ background-color: ${colors.background};
1293
1368
  border-radius: 8px;
1294
- border: 1px solid #e5e7eb;
1295
- padding: 8px;
1296
- margin-bottom: 16px;
1369
+ border: 1px solid ${colors.border};
1370
+ padding: 12px;
1371
+ margin-bottom: 20px;
1297
1372
  `,
1298
1373
  image: css6`
1299
1374
  width: 100%;
1300
1375
  height: auto;
1301
- border-radius: 4px;
1376
+ border-radius: 6px;
1302
1377
  `,
1303
1378
  info: css6`
1304
1379
  display: flex;
1305
1380
  flex-direction: column;
1306
- gap: 12px;
1381
+ gap: 10px;
1307
1382
  `,
1308
1383
  row: css6`
1309
1384
  display: flex;
1310
1385
  justify-content: space-between;
1311
- font-size: 12px;
1386
+ font-size: ${fontSize.sm};
1312
1387
  `,
1313
1388
  label: css6`
1314
- color: #6b7280;
1389
+ color: ${colors.textSecondary};
1315
1390
  `,
1316
1391
  value: css6`
1317
- color: #111827;
1392
+ color: ${colors.text};
1393
+ font-weight: 500;
1318
1394
  `,
1319
1395
  valueTruncate: css6`
1320
- max-width: 128px;
1396
+ max-width: 140px;
1321
1397
  white-space: nowrap;
1322
1398
  overflow: hidden;
1323
1399
  text-overflow: ellipsis;
1324
1400
  `,
1325
1401
  section: css6`
1326
- padding-top: 8px;
1327
- border-top: 1px solid #e5e7eb;
1402
+ padding-top: 12px;
1403
+ margin-top: 4px;
1404
+ border-top: 1px solid ${colors.borderLight};
1328
1405
  `,
1329
1406
  sectionTitle: css6`
1330
- font-size: 12px;
1331
- font-weight: 500;
1332
- color: #6b7280;
1333
- margin: 0 0 8px 0;
1407
+ font-size: ${fontSize.xs};
1408
+ font-weight: 600;
1409
+ color: ${colors.textMuted};
1410
+ text-transform: uppercase;
1411
+ letter-spacing: 0.05em;
1412
+ margin: 0 0 10px 0;
1334
1413
  `,
1335
1414
  cdnStatus: css6`
1336
1415
  display: flex;
1337
1416
  align-items: center;
1338
1417
  gap: 8px;
1339
- font-size: 12px;
1340
- color: #16a34a;
1418
+ font-size: ${fontSize.sm};
1419
+ color: ${colors.success};
1420
+ font-weight: 500;
1341
1421
  `,
1342
1422
  cdnIcon: css6`
1343
1423
  width: 16px;
@@ -1345,8 +1425,9 @@ var styles6 = {
1345
1425
  `,
1346
1426
  copyBtn: css6`
1347
1427
  margin-top: 8px;
1348
- font-size: 12px;
1349
- color: #9333ea;
1428
+ font-size: ${fontSize.sm};
1429
+ font-weight: 500;
1430
+ color: ${colors.primary};
1350
1431
  background: none;
1351
1432
  border: none;
1352
1433
  cursor: pointer;
@@ -1359,17 +1440,20 @@ var styles6 = {
1359
1440
  colorSwatch: css6`
1360
1441
  margin-top: 8px;
1361
1442
  height: 32px;
1362
- border-radius: 4px;
1443
+ border-radius: 6px;
1444
+ border: 1px solid ${colors.border};
1363
1445
  `,
1364
1446
  emptyState: css6`
1365
1447
  display: flex;
1448
+ flex-direction: column;
1366
1449
  align-items: center;
1367
1450
  justify-content: center;
1368
1451
  height: 200px;
1452
+ text-align: center;
1369
1453
  `,
1370
1454
  emptyText: css6`
1371
- font-size: 14px;
1372
- color: #9ca3af;
1455
+ font-size: ${fontSize.sm};
1456
+ color: ${colors.textMuted};
1373
1457
  margin: 0;
1374
1458
  `,
1375
1459
  filePlaceholder: css6`
@@ -1377,50 +1461,55 @@ var styles6 = {
1377
1461
  align-items: center;
1378
1462
  justify-content: center;
1379
1463
  height: 120px;
1464
+ background: ${colors.background};
1465
+ border-radius: 6px;
1380
1466
  `,
1381
1467
  fileIcon: css6`
1382
- width: 64px;
1383
- height: 64px;
1384
- color: #9ca3af;
1468
+ width: 56px;
1469
+ height: 56px;
1470
+ color: ${colors.textMuted};
1385
1471
  `,
1386
1472
  folderIcon: css6`
1387
- width: 64px;
1388
- height: 64px;
1389
- color: #facc15;
1473
+ width: 56px;
1474
+ height: 56px;
1475
+ color: #f5a623;
1390
1476
  `,
1391
1477
  video: css6`
1392
1478
  width: 100%;
1393
1479
  height: auto;
1394
- border-radius: 4px;
1480
+ border-radius: 6px;
1395
1481
  `,
1396
1482
  actions: css6`
1397
- margin-top: 16px;
1398
- padding-top: 16px;
1399
- border-top: 1px solid #e5e7eb;
1483
+ margin-top: 20px;
1484
+ padding-top: 20px;
1485
+ border-top: 1px solid ${colors.border};
1400
1486
  display: flex;
1401
1487
  flex-direction: column;
1402
1488
  gap: 8px;
1403
1489
  `,
1404
1490
  actionBtn: css6`
1405
1491
  width: 100%;
1406
- padding: 8px 12px;
1407
- font-size: 14px;
1408
- background-color: white;
1409
- border: 1px solid #e5e7eb;
1410
- border-radius: 8px;
1492
+ padding: 10px 14px;
1493
+ font-size: ${fontSize.base};
1494
+ font-weight: 500;
1495
+ background-color: ${colors.surface};
1496
+ border: 1px solid ${colors.border};
1497
+ border-radius: 6px;
1411
1498
  cursor: pointer;
1412
- transition: background-color 0.15s;
1413
- color: #374151;
1499
+ transition: all 0.15s ease;
1500
+ color: ${colors.text};
1414
1501
 
1415
1502
  &:hover {
1416
- background-color: #f9fafb;
1503
+ background-color: ${colors.surfaceHover};
1504
+ border-color: #d0d5dd;
1417
1505
  }
1418
1506
  `,
1419
1507
  actionBtnDanger: css6`
1420
- color: #dc2626;
1508
+ color: ${colors.danger};
1421
1509
 
1422
1510
  &:hover {
1423
- background-color: #fef2f2;
1511
+ background-color: ${colors.dangerLight};
1512
+ border-color: ${colors.danger};
1424
1513
  }
1425
1514
  `
1426
1515
  };
@@ -1620,20 +1709,24 @@ import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs7 } from "@emotion/reac
1620
1709
  var styles7 = {
1621
1710
  btn: css7`
1622
1711
  padding: 8px;
1623
- background: none;
1624
- border: none;
1625
- border-radius: 8px;
1712
+ background: ${colors.surface};
1713
+ border: 1px solid ${colors.border};
1714
+ border-radius: 6px;
1626
1715
  cursor: pointer;
1627
- transition: background-color 0.15s;
1716
+ transition: all 0.15s ease;
1717
+ display: flex;
1718
+ align-items: center;
1719
+ justify-content: center;
1628
1720
 
1629
1721
  &:hover {
1630
- background-color: #f3f4f6;
1722
+ background-color: ${colors.surfaceHover};
1723
+ border-color: ${colors.borderHover};
1631
1724
  }
1632
1725
  `,
1633
1726
  icon: css7`
1634
- width: 20px;
1635
- height: 20px;
1636
- color: #6b7280;
1727
+ width: 18px;
1728
+ height: 18px;
1729
+ color: ${colors.textSecondary};
1637
1730
  `,
1638
1731
  overlay: css7`
1639
1732
  position: fixed;
@@ -1645,20 +1738,15 @@ var styles7 = {
1645
1738
  display: flex;
1646
1739
  align-items: center;
1647
1740
  justify-content: center;
1648
- `,
1649
- backdrop: css7`
1650
- position: absolute;
1651
- top: 0;
1652
- right: 0;
1653
- bottom: 0;
1654
- left: 0;
1655
- background-color: rgba(0, 0, 0, 0.3);
1741
+ background-color: rgba(26, 31, 54, 0.4);
1742
+ backdrop-filter: blur(4px);
1656
1743
  `,
1657
1744
  panel: css7`
1745
+ ${baseReset}
1658
1746
  position: relative;
1659
- background-color: white;
1747
+ background-color: ${colors.surface};
1660
1748
  border-radius: 12px;
1661
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
1749
+ box-shadow: 0 30px 60px -12px rgba(50, 50, 93, 0.25), 0 18px 36px -18px rgba(0, 0, 0, 0.3);
1662
1750
  width: 100%;
1663
1751
  max-width: 512px;
1664
1752
  padding: 24px;
@@ -1670,19 +1758,26 @@ var styles7 = {
1670
1758
  margin-bottom: 24px;
1671
1759
  `,
1672
1760
  title: css7`
1673
- font-size: 18px;
1761
+ font-size: ${fontSize.xl};
1674
1762
  font-weight: 600;
1763
+ color: ${colors.text};
1675
1764
  margin: 0;
1765
+ letter-spacing: -0.02em;
1676
1766
  `,
1677
1767
  closeBtn: css7`
1678
- padding: 4px;
1679
- background: none;
1680
- border: none;
1681
- border-radius: 8px;
1768
+ padding: 6px;
1769
+ background: ${colors.surface};
1770
+ border: 1px solid ${colors.border};
1771
+ border-radius: 6px;
1682
1772
  cursor: pointer;
1773
+ transition: all 0.15s ease;
1774
+ display: flex;
1775
+ align-items: center;
1776
+ justify-content: center;
1683
1777
 
1684
1778
  &:hover {
1685
- background-color: #f3f4f6;
1779
+ background-color: ${colors.surfaceHover};
1780
+ border-color: ${colors.borderHover};
1686
1781
  }
1687
1782
  `,
1688
1783
  sections: css7`
@@ -1691,23 +1786,24 @@ var styles7 = {
1691
1786
  gap: 24px;
1692
1787
  `,
1693
1788
  sectionTitle: css7`
1694
- font-size: 14px;
1695
- font-weight: 500;
1696
- color: #111827;
1789
+ font-size: ${fontSize.base};
1790
+ font-weight: 600;
1791
+ color: ${colors.text};
1697
1792
  margin: 0 0 12px 0;
1698
1793
  `,
1699
1794
  description: css7`
1700
- font-size: 12px;
1701
- color: #6b7280;
1795
+ font-size: ${fontSize.sm};
1796
+ color: ${colors.textSecondary};
1702
1797
  margin: 0 0 12px 0;
1703
1798
  `,
1704
1799
  code: css7`
1705
- background-color: #f9fafb;
1800
+ background-color: ${colors.background};
1706
1801
  border-radius: 8px;
1707
1802
  padding: 12px;
1708
- font-family: monospace;
1709
- font-size: 12px;
1710
- color: #4b5563;
1803
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1804
+ font-size: ${fontSize.xs};
1805
+ color: ${colors.textSecondary};
1806
+ border: 1px solid ${colors.border};
1711
1807
  `,
1712
1808
  codeLine: css7`
1713
1809
  margin: 0 0 4px 0;
@@ -1718,14 +1814,22 @@ var styles7 = {
1718
1814
  `,
1719
1815
  input: css7`
1720
1816
  width: 100%;
1721
- padding: 8px 12px;
1722
- border: 1px solid #e5e7eb;
1723
- border-radius: 8px;
1724
- font-size: 14px;
1817
+ padding: 10px 14px;
1818
+ border: 1px solid ${colors.border};
1819
+ border-radius: 6px;
1820
+ font-size: ${fontSize.base};
1821
+ color: ${colors.text};
1822
+ background: ${colors.surface};
1823
+ transition: all 0.15s ease;
1725
1824
 
1726
1825
  &:focus {
1727
1826
  outline: none;
1728
- box-shadow: 0 0 0 2px #a855f7;
1827
+ border-color: ${colors.primary};
1828
+ box-shadow: 0 0 0 3px ${colors.primaryLight};
1829
+ }
1830
+
1831
+ &::placeholder {
1832
+ color: ${colors.textMuted};
1729
1833
  }
1730
1834
  `,
1731
1835
  grid: css7`
@@ -1734,41 +1838,50 @@ var styles7 = {
1734
1838
  gap: 12px;
1735
1839
  `,
1736
1840
  label: css7`
1737
- font-size: 12px;
1738
- color: #6b7280;
1841
+ font-size: ${fontSize.xs};
1842
+ font-weight: 500;
1843
+ color: ${colors.textSecondary};
1739
1844
  display: block;
1740
- margin-bottom: 4px;
1845
+ margin-bottom: 6px;
1741
1846
  `,
1742
1847
  footer: css7`
1743
1848
  margin-top: 24px;
1849
+ padding-top: 20px;
1850
+ border-top: 1px solid ${colors.border};
1744
1851
  display: flex;
1745
1852
  justify-content: flex-end;
1746
1853
  gap: 12px;
1747
1854
  `,
1748
1855
  cancelBtn: css7`
1749
- padding: 8px 16px;
1750
- font-size: 14px;
1751
- color: #4b5563;
1752
- background: none;
1753
- border: none;
1754
- border-radius: 8px;
1856
+ padding: 10px 18px;
1857
+ font-size: ${fontSize.base};
1858
+ font-weight: 500;
1859
+ color: ${colors.text};
1860
+ background: ${colors.surface};
1861
+ border: 1px solid ${colors.border};
1862
+ border-radius: 6px;
1755
1863
  cursor: pointer;
1864
+ transition: all 0.15s ease;
1756
1865
 
1757
1866
  &:hover {
1758
- background-color: #f3f4f6;
1867
+ background-color: ${colors.surfaceHover};
1868
+ border-color: ${colors.borderHover};
1759
1869
  }
1760
1870
  `,
1761
1871
  saveBtn: css7`
1762
- padding: 8px 16px;
1763
- font-size: 14px;
1872
+ padding: 10px 18px;
1873
+ font-size: ${fontSize.base};
1874
+ font-weight: 500;
1764
1875
  color: white;
1765
- background-color: #9333ea;
1766
- border: none;
1767
- border-radius: 8px;
1876
+ background-color: ${colors.primary};
1877
+ border: 1px solid ${colors.primary};
1878
+ border-radius: 6px;
1768
1879
  cursor: pointer;
1880
+ transition: all 0.15s ease;
1769
1881
 
1770
1882
  &:hover {
1771
- background-color: #7c3aed;
1883
+ background-color: ${colors.primaryHover};
1884
+ border-color: ${colors.primaryHover};
1772
1885
  }
1773
1886
  `
1774
1887
  };
@@ -1796,77 +1909,77 @@ function StudioSettings() {
1796
1909
  ] });
1797
1910
  }
1798
1911
  function SettingsPanel({ onClose }) {
1799
- return /* @__PURE__ */ jsxs7("div", { css: styles7.overlay, children: [
1800
- /* @__PURE__ */ jsx7("div", { css: styles7.backdrop, onClick: onClose }),
1801
- /* @__PURE__ */ jsxs7("div", { css: styles7.panel, children: [
1802
- /* @__PURE__ */ jsxs7("div", { css: styles7.header, children: [
1803
- /* @__PURE__ */ jsx7("h2", { css: styles7.title, children: "Settings" }),
1804
- /* @__PURE__ */ jsx7("button", { css: styles7.closeBtn, onClick: onClose, children: /* @__PURE__ */ jsx7("svg", { css: styles7.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx7("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })
1912
+ return /* @__PURE__ */ jsx7("div", { css: styles7.overlay, onClick: onClose, children: /* @__PURE__ */ jsxs7("div", { css: styles7.panel, onClick: (e) => e.stopPropagation(), children: [
1913
+ /* @__PURE__ */ jsxs7("div", { css: styles7.header, children: [
1914
+ /* @__PURE__ */ jsx7("h2", { css: styles7.title, children: "Settings" }),
1915
+ /* @__PURE__ */ jsx7("button", { css: styles7.closeBtn, onClick: onClose, children: /* @__PURE__ */ jsx7("svg", { css: styles7.icon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx7("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })
1916
+ ] }),
1917
+ /* @__PURE__ */ jsxs7("div", { css: styles7.sections, children: [
1918
+ /* @__PURE__ */ jsxs7("section", { children: [
1919
+ /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Cloudflare R2" }),
1920
+ /* @__PURE__ */ jsx7("p", { css: styles7.description, children: "Configure in .env.local file:" }),
1921
+ /* @__PURE__ */ jsxs7("div", { css: styles7.code, children: [
1922
+ /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_ACCOUNT_ID" }),
1923
+ /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_ACCESS_KEY_ID" }),
1924
+ /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_SECRET_ACCESS_KEY" }),
1925
+ /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_BUCKET_NAME" }),
1926
+ /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_PUBLIC_URL" })
1927
+ ] })
1805
1928
  ] }),
1806
- /* @__PURE__ */ jsxs7("div", { css: styles7.sections, children: [
1807
- /* @__PURE__ */ jsxs7("section", { children: [
1808
- /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Cloudflare R2" }),
1809
- /* @__PURE__ */ jsx7("p", { css: styles7.description, children: "Configure in .env.local file:" }),
1810
- /* @__PURE__ */ jsxs7("div", { css: styles7.code, children: [
1811
- /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_ACCOUNT_ID" }),
1812
- /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_ACCESS_KEY_ID" }),
1813
- /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_SECRET_ACCESS_KEY" }),
1814
- /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_BUCKET_NAME" }),
1815
- /* @__PURE__ */ jsx7("p", { css: styles7.codeLine, children: "CLOUDFLARE_R2_PUBLIC_URL" })
1816
- ] })
1817
- ] }),
1818
- /* @__PURE__ */ jsxs7("section", { children: [
1819
- /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Custom CDN URL" }),
1820
- /* @__PURE__ */ jsx7("p", { css: styles7.description, children: "Override the default R2 URL with a custom domain:" }),
1821
- /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "text", placeholder: "https://cdn.yourdomain.com" })
1822
- ] }),
1823
- /* @__PURE__ */ jsxs7("section", { children: [
1824
- /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Thumbnail Sizes" }),
1825
- /* @__PURE__ */ jsxs7("div", { css: styles7.grid, children: [
1826
- /* @__PURE__ */ jsxs7("div", { children: [
1827
- /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Small" }),
1828
- /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 300 })
1829
- ] }),
1830
- /* @__PURE__ */ jsxs7("div", { children: [
1831
- /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Medium" }),
1832
- /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 700 })
1833
- ] }),
1834
- /* @__PURE__ */ jsxs7("div", { children: [
1835
- /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Large" }),
1836
- /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 1400 })
1837
- ] })
1929
+ /* @__PURE__ */ jsxs7("section", { children: [
1930
+ /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Custom CDN URL" }),
1931
+ /* @__PURE__ */ jsx7("p", { css: styles7.description, children: "Override the default R2 URL with a custom domain:" }),
1932
+ /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "text", placeholder: "https://cdn.yourdomain.com" })
1933
+ ] }),
1934
+ /* @__PURE__ */ jsxs7("section", { children: [
1935
+ /* @__PURE__ */ jsx7("h3", { css: styles7.sectionTitle, children: "Thumbnail Sizes" }),
1936
+ /* @__PURE__ */ jsxs7("div", { css: styles7.grid, children: [
1937
+ /* @__PURE__ */ jsxs7("div", { children: [
1938
+ /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Small" }),
1939
+ /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 300 })
1940
+ ] }),
1941
+ /* @__PURE__ */ jsxs7("div", { children: [
1942
+ /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Medium" }),
1943
+ /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 700 })
1944
+ ] }),
1945
+ /* @__PURE__ */ jsxs7("div", { children: [
1946
+ /* @__PURE__ */ jsx7("label", { css: styles7.label, children: "Large" }),
1947
+ /* @__PURE__ */ jsx7("input", { css: styles7.input, type: "number", defaultValue: 1400 })
1838
1948
  ] })
1839
1949
  ] })
1840
- ] }),
1841
- /* @__PURE__ */ jsxs7("div", { css: styles7.footer, children: [
1842
- /* @__PURE__ */ jsx7("button", { css: styles7.cancelBtn, onClick: onClose, children: "Cancel" }),
1843
- /* @__PURE__ */ jsx7("button", { css: styles7.saveBtn, children: "Save Changes" })
1844
1950
  ] })
1951
+ ] }),
1952
+ /* @__PURE__ */ jsxs7("div", { css: styles7.footer, children: [
1953
+ /* @__PURE__ */ jsx7("button", { css: styles7.cancelBtn, onClick: onClose, children: "Cancel" }),
1954
+ /* @__PURE__ */ jsx7("button", { css: styles7.saveBtn, children: "Save Changes" })
1845
1955
  ] })
1846
- ] });
1956
+ ] }) });
1847
1957
  }
1848
1958
 
1849
1959
  // src/components/StudioUI.tsx
1850
1960
  import { jsx as jsx8, jsxs as jsxs8 } from "@emotion/react/jsx-runtime";
1851
1961
  var styles8 = {
1852
1962
  container: css8`
1963
+ ${baseReset}
1853
1964
  display: flex;
1854
1965
  flex-direction: column;
1855
1966
  height: 100%;
1856
- font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
1967
+ background: ${colors.background};
1857
1968
  `,
1858
1969
  header: css8`
1859
1970
  display: flex;
1860
1971
  align-items: center;
1861
1972
  justify-content: space-between;
1862
1973
  padding: 16px 24px;
1863
- border-bottom: 1px solid #e5e7eb;
1974
+ background: ${colors.surface};
1975
+ border-bottom: 1px solid ${colors.border};
1864
1976
  `,
1865
1977
  title: css8`
1866
- font-size: 20px;
1978
+ font-size: ${fontSize.xl};
1867
1979
  font-weight: 600;
1868
- color: #111827;
1980
+ color: ${colors.text};
1869
1981
  margin: 0;
1982
+ letter-spacing: -0.02em;
1870
1983
  `,
1871
1984
  headerActions: css8`
1872
1985
  display: flex;
@@ -1875,20 +1988,24 @@ var styles8 = {
1875
1988
  `,
1876
1989
  closeBtn: css8`
1877
1990
  padding: 8px;
1878
- background: none;
1879
- border: none;
1880
- border-radius: 8px;
1991
+ background: ${colors.surface};
1992
+ border: 1px solid ${colors.border};
1993
+ border-radius: 6px;
1881
1994
  cursor: pointer;
1882
- transition: background-color 0.15s;
1995
+ transition: all 0.15s ease;
1996
+ display: flex;
1997
+ align-items: center;
1998
+ justify-content: center;
1883
1999
 
1884
2000
  &:hover {
1885
- background-color: #f3f4f6;
2001
+ background-color: ${colors.surfaceHover};
2002
+ border-color: ${colors.borderHover};
1886
2003
  }
1887
2004
  `,
1888
2005
  closeIcon: css8`
1889
- width: 20px;
1890
- height: 20px;
1891
- color: #6b7280;
2006
+ width: 18px;
2007
+ height: 18px;
2008
+ color: ${colors.textSecondary};
1892
2009
  `,
1893
2010
  content: css8`
1894
2011
  flex: 1;
@@ -1899,7 +2016,7 @@ var styles8 = {
1899
2016
  flex: 1;
1900
2017
  min-width: 0;
1901
2018
  overflow: auto;
1902
- padding: 16px;
2019
+ padding: 20px 24px;
1903
2020
  `
1904
2021
  };
1905
2022
  function StudioUI({ onClose }) {
@@ -2045,4 +2162,4 @@ export {
2045
2162
  StudioUI,
2046
2163
  StudioUI_default as default
2047
2164
  };
2048
- //# sourceMappingURL=StudioUI-T4M7A6BP.mjs.map
2165
+ //# sourceMappingURL=StudioUI-3VFEM3VE.mjs.map