@gallop.software/studio 0.1.39 → 0.1.40

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.
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkZLL7JHVCjs = require('./chunk-ZLL7JHVC.js');
7
+ var _chunkUFCWGUAGjs = require('./chunk-UFCWGUAG.js');
8
8
 
9
9
  // src/components/StudioUI.tsx
10
10
  var _react = require('react');
@@ -91,11 +91,11 @@ var styles = {
91
91
  justify-content: center;
92
92
  z-index: 10000;
93
93
  animation: ${fadeIn} 0.15s ease-out;
94
- font-family: ${_chunkZLL7JHVCjs.fontStack};
94
+ font-family: ${_chunkUFCWGUAGjs.fontStack};
95
95
  `,
96
96
  modal: _react3.css`
97
- ${_chunkZLL7JHVCjs.baseReset}
98
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
97
+ ${_chunkUFCWGUAGjs.baseReset}
98
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
99
99
  border-radius: 12px;
100
100
  box-shadow: 0 30px 60px -12px rgba(50, 50, 93, 0.25), 0 18px 36px -18px rgba(0, 0, 0, 0.3);
101
101
  max-width: 420px;
@@ -107,9 +107,9 @@ var styles = {
107
107
  padding: 24px 24px 0;
108
108
  `,
109
109
  title: _react3.css`
110
- font-size: ${_chunkZLL7JHVCjs.fontSize.lg};
110
+ font-size: ${_chunkUFCWGUAGjs.fontSize.lg};
111
111
  font-weight: 600;
112
- color: ${_chunkZLL7JHVCjs.colors.text};
112
+ color: ${_chunkUFCWGUAGjs.colors.text};
113
113
  margin: 0;
114
114
  letter-spacing: -0.02em;
115
115
  `,
@@ -117,8 +117,8 @@ var styles = {
117
117
  padding: 12px 24px 24px;
118
118
  `,
119
119
  message: _react3.css`
120
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
121
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
120
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
121
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
122
122
  margin: 0;
123
123
  line-height: 1.6;
124
124
  `,
@@ -127,12 +127,12 @@ var styles = {
127
127
  justify-content: flex-end;
128
128
  gap: 12px;
129
129
  padding: 16px 24px;
130
- border-top: 1px solid ${_chunkZLL7JHVCjs.colors.border};
131
- background-color: ${_chunkZLL7JHVCjs.colors.background};
130
+ border-top: 1px solid ${_chunkUFCWGUAGjs.colors.border};
131
+ background-color: ${_chunkUFCWGUAGjs.colors.background};
132
132
  `,
133
133
  btn: _react3.css`
134
134
  padding: 10px 18px;
135
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
135
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
136
136
  font-weight: 500;
137
137
  border-radius: 6px;
138
138
  cursor: pointer;
@@ -140,33 +140,33 @@ var styles = {
140
140
  letter-spacing: -0.01em;
141
141
  `,
142
142
  btnCancel: _react3.css`
143
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
144
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
145
- color: ${_chunkZLL7JHVCjs.colors.text};
143
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
144
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
145
+ color: ${_chunkUFCWGUAGjs.colors.text};
146
146
 
147
147
  &:hover {
148
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
149
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
148
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
149
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
150
150
  }
151
151
  `,
152
152
  btnConfirm: _react3.css`
153
- background-color: ${_chunkZLL7JHVCjs.colors.primary};
154
- border: 1px solid ${_chunkZLL7JHVCjs.colors.primary};
153
+ background-color: ${_chunkUFCWGUAGjs.colors.primary};
154
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.primary};
155
155
  color: white;
156
156
 
157
157
  &:hover {
158
- background-color: ${_chunkZLL7JHVCjs.colors.primaryHover};
159
- border-color: ${_chunkZLL7JHVCjs.colors.primaryHover};
158
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryHover};
159
+ border-color: ${_chunkUFCWGUAGjs.colors.primaryHover};
160
160
  }
161
161
  `,
162
162
  btnDanger: _react3.css`
163
- background-color: ${_chunkZLL7JHVCjs.colors.danger};
164
- border: 1px solid ${_chunkZLL7JHVCjs.colors.danger};
163
+ background-color: ${_chunkUFCWGUAGjs.colors.danger};
164
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.danger};
165
165
  color: white;
166
166
 
167
167
  &:hover {
168
- background-color: ${_chunkZLL7JHVCjs.colors.dangerHover};
169
- border-color: ${_chunkZLL7JHVCjs.colors.dangerHover};
168
+ background-color: ${_chunkUFCWGUAGjs.colors.dangerHover};
169
+ border-color: ${_chunkUFCWGUAGjs.colors.dangerHover};
170
170
  }
171
171
  `
172
172
  };
@@ -214,28 +214,28 @@ var progressStyles = {
214
214
  progressBar: _react3.css`
215
215
  width: 100%;
216
216
  height: 8px;
217
- background-color: ${_chunkZLL7JHVCjs.colors.background};
217
+ background-color: ${_chunkUFCWGUAGjs.colors.background};
218
218
  border-radius: 4px;
219
219
  overflow: hidden;
220
220
  margin-bottom: 12px;
221
221
  `,
222
222
  progressFill: _react3.css`
223
223
  height: 100%;
224
- background: linear-gradient(90deg, ${_chunkZLL7JHVCjs.colors.primary}, ${_chunkZLL7JHVCjs.colors.primaryHover});
224
+ background: linear-gradient(90deg, ${_chunkUFCWGUAGjs.colors.primary}, ${_chunkUFCWGUAGjs.colors.primaryHover});
225
225
  border-radius: 4px;
226
226
  transition: width 0.3s ease;
227
227
  `,
228
228
  progressText: _react3.css`
229
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
230
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
229
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
230
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
231
231
  margin: 0;
232
232
  display: flex;
233
233
  justify-content: space-between;
234
234
  align-items: center;
235
235
  `,
236
236
  currentFile: _react3.css`
237
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
238
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
237
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
238
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
239
239
  margin: 8px 0 0;
240
240
  white-space: nowrap;
241
241
  overflow: hidden;
@@ -321,13 +321,15 @@ var spin = _react3.keyframes`
321
321
  var styles2 = {
322
322
  toolbar: _react3.css`
323
323
  display: flex;
324
- flex-wrap: wrap;
324
+ flex-wrap: nowrap;
325
325
  align-items: center;
326
326
  justify-content: space-between;
327
327
  gap: 8px;
328
328
  padding: 12px 16px;
329
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
330
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.border};
329
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
330
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.border};
331
+ overflow-x: auto;
332
+ min-width: 0;
331
333
 
332
334
  @media (min-width: 768px) {
333
335
  padding: 12px 24px;
@@ -335,13 +337,15 @@ var styles2 = {
335
337
  `,
336
338
  left: _react3.css`
337
339
  display: flex;
338
- flex-wrap: wrap;
340
+ flex-wrap: nowrap;
341
+ flex-shrink: 0;
339
342
  align-items: center;
340
343
  gap: 8px;
341
344
  `,
342
345
  right: _react3.css`
343
346
  display: flex;
344
- flex-wrap: wrap;
347
+ flex-wrap: nowrap;
348
+ flex-shrink: 0;
345
349
  align-items: center;
346
350
  gap: 8px;
347
351
  `,
@@ -353,18 +357,18 @@ var styles2 = {
353
357
  height: ${btnHeight};
354
358
  padding: 0 14px;
355
359
  border-radius: 6px;
356
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
360
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
357
361
  font-weight: 500;
358
- background: ${_chunkZLL7JHVCjs.colors.surface};
359
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
362
+ background: ${_chunkUFCWGUAGjs.colors.surface};
363
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
360
364
  cursor: pointer;
361
365
  transition: all 0.15s ease;
362
- color: ${_chunkZLL7JHVCjs.colors.text};
366
+ color: ${_chunkUFCWGUAGjs.colors.text};
363
367
  letter-spacing: -0.01em;
364
368
 
365
369
  &:hover:not(:disabled) {
366
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
367
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
370
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
371
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
368
372
  }
369
373
 
370
374
  &:disabled {
@@ -376,21 +380,21 @@ var styles2 = {
376
380
  padding: 0 10px;
377
381
  `,
378
382
  btnPrimary: _react3.css`
379
- background: ${_chunkZLL7JHVCjs.colors.primary};
380
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
383
+ background: ${_chunkUFCWGUAGjs.colors.primary};
384
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
381
385
  color: white;
382
386
 
383
387
  &:hover:not(:disabled) {
384
- background: ${_chunkZLL7JHVCjs.colors.primaryHover};
385
- border-color: ${_chunkZLL7JHVCjs.colors.primaryHover};
388
+ background: ${_chunkUFCWGUAGjs.colors.primaryHover};
389
+ border-color: ${_chunkUFCWGUAGjs.colors.primaryHover};
386
390
  }
387
391
  `,
388
392
  btnDanger: _react3.css`
389
- color: ${_chunkZLL7JHVCjs.colors.danger};
393
+ color: ${_chunkUFCWGUAGjs.colors.danger};
390
394
 
391
395
  &:hover:not(:disabled) {
392
- background-color: ${_chunkZLL7JHVCjs.colors.dangerLight};
393
- border-color: ${_chunkZLL7JHVCjs.colors.danger};
396
+ background-color: ${_chunkUFCWGUAGjs.colors.dangerLight};
397
+ border-color: ${_chunkUFCWGUAGjs.colors.danger};
394
398
  }
395
399
  `,
396
400
  icon: _react3.css`
@@ -401,19 +405,19 @@ var styles2 = {
401
405
  animation: ${spin} 1s linear infinite;
402
406
  `,
403
407
  selectionCount: _react3.css`
404
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
405
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
408
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
409
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
406
410
  display: flex;
407
411
  align-items: center;
408
412
  gap: 8px;
409
413
  margin-right: 8px;
410
414
  `,
411
415
  clearBtn: _react3.css`
412
- color: ${_chunkZLL7JHVCjs.colors.primary};
416
+ color: ${_chunkUFCWGUAGjs.colors.primary};
413
417
  background: none;
414
418
  border: none;
415
419
  cursor: pointer;
416
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
420
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
417
421
  font-weight: 500;
418
422
  padding: 0;
419
423
 
@@ -424,37 +428,37 @@ var styles2 = {
424
428
  divider: _react3.css`
425
429
  width: 1px;
426
430
  height: 24px;
427
- background: ${_chunkZLL7JHVCjs.colors.border};
431
+ background: ${_chunkUFCWGUAGjs.colors.border};
428
432
  margin: 0 4px;
429
433
  `,
430
434
  viewToggle: _react3.css`
431
435
  display: flex;
432
436
  align-items: center;
433
437
  height: ${btnHeight};
434
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
435
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
438
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
439
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
436
440
  border-radius: 6px;
437
441
  overflow: hidden;
438
442
  `,
439
443
  searchInput: _react3.css`
440
444
  height: ${btnHeight};
441
445
  padding: 0 12px;
442
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
446
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
443
447
  border-radius: 6px;
444
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
445
- background: ${_chunkZLL7JHVCjs.colors.surface};
446
- color: ${_chunkZLL7JHVCjs.colors.text};
448
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
449
+ background: ${_chunkUFCWGUAGjs.colors.surface};
450
+ color: ${_chunkUFCWGUAGjs.colors.text};
447
451
  width: 180px;
448
452
  transition: all 0.15s ease;
449
453
 
450
454
  &:focus {
451
455
  outline: none;
452
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
453
- box-shadow: 0 0 0 2px ${_chunkZLL7JHVCjs.colors.primaryLight};
456
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
457
+ box-shadow: 0 0 0 2px ${_chunkUFCWGUAGjs.colors.primaryLight};
454
458
  }
455
459
 
456
460
  &::placeholder {
457
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
461
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
458
462
  }
459
463
  `,
460
464
  viewBtn: _react3.css`
@@ -463,20 +467,25 @@ var styles2 = {
463
467
  background: transparent;
464
468
  border: none;
465
469
  cursor: pointer;
466
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
470
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
467
471
  transition: all 0.15s ease;
468
472
  display: flex;
469
473
  align-items: center;
470
474
  justify-content: center;
471
475
 
472
476
  &:hover {
473
- color: ${_chunkZLL7JHVCjs.colors.text};
474
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
477
+ color: ${_chunkUFCWGUAGjs.colors.text};
478
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
475
479
  }
476
480
  `,
477
481
  viewBtnActive: _react3.css`
478
- background-color: ${_chunkZLL7JHVCjs.colors.background};
479
- color: ${_chunkZLL7JHVCjs.colors.text};
482
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
483
+ color: ${_chunkUFCWGUAGjs.colors.primary};
484
+
485
+ &:hover {
486
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
487
+ color: ${_chunkUFCWGUAGjs.colors.primary};
488
+ }
480
489
  `
481
490
  };
482
491
  function StudioToolbar() {
@@ -803,6 +812,9 @@ function StudioToolbar() {
803
812
  setSearchQuery(e.target.value);
804
813
  }, [setSearchQuery]);
805
814
  const hasSelection = selectedItems.size > 0;
815
+ const hasImagesSelected = Array.from(selectedItems).some(
816
+ (path) => path === "public/images" || path.startsWith("public/images/")
817
+ );
806
818
  if (focusedItem) {
807
819
  return null;
808
820
  }
@@ -884,8 +896,8 @@ function StudioToolbar() {
884
896
  {
885
897
  css: styles2.btn,
886
898
  onClick: handleProcessImages,
887
- disabled: processing || isInImagesFolder,
888
- title: isInImagesFolder ? "Cannot process images from within the images folder" : void 0,
899
+ disabled: processing || isInImagesFolder || hasImagesSelected,
900
+ title: isInImagesFolder || hasImagesSelected ? "Cannot process protected images folder" : void 0,
889
901
  children: [
890
902
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ImageStackIcon, {}),
891
903
  processing ? "Processing..." : "Process Images"
@@ -897,7 +909,8 @@ function StudioToolbar() {
897
909
  {
898
910
  css: [styles2.btn, styles2.btnDanger],
899
911
  onClick: handleDeleteClick,
900
- disabled: !hasSelection,
912
+ disabled: !hasSelection || hasImagesSelected,
913
+ title: hasImagesSelected ? "Cannot delete protected images folder items" : void 0,
901
914
  children: [
902
915
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TrashIcon, {}),
903
916
  "Delete"
@@ -1005,8 +1018,8 @@ var styles3 = {
1005
1018
  width: 32px;
1006
1019
  height: 32px;
1007
1020
  border-radius: 50%;
1008
- border: 3px solid ${_chunkZLL7JHVCjs.colors.border};
1009
- border-top-color: ${_chunkZLL7JHVCjs.colors.primary};
1021
+ border: 3px solid ${_chunkUFCWGUAGjs.colors.border};
1022
+ border-top-color: ${_chunkUFCWGUAGjs.colors.primary};
1010
1023
  animation: ${spin2} 0.8s linear infinite;
1011
1024
  `,
1012
1025
  empty: _react3.css`
@@ -1015,7 +1028,7 @@ var styles3 = {
1015
1028
  align-items: center;
1016
1029
  justify-content: center;
1017
1030
  height: 256px;
1018
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
1031
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1019
1032
  `,
1020
1033
  emptyIcon: _react3.css`
1021
1034
  width: 48px;
@@ -1024,32 +1037,32 @@ var styles3 = {
1024
1037
  opacity: 0.5;
1025
1038
  `,
1026
1039
  emptyText: _react3.css`
1027
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
1040
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
1028
1041
  margin: 0 0 4px 0;
1029
1042
 
1030
1043
  &:last-child {
1031
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1032
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
1044
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1045
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
1033
1046
  }
1034
1047
  `,
1035
1048
  grid: _react3.css`
1036
1049
  display: grid;
1037
- grid-template-columns: repeat(2, 1fr);
1050
+ grid-template-columns: 1fr;
1038
1051
  gap: 12px;
1039
1052
 
1040
- @media (min-width: 640px) { grid-template-columns: repeat(3, 1fr); }
1041
- @media (min-width: 768px) { grid-template-columns: repeat(4, 1fr); }
1042
- @media (min-width: 1024px) { grid-template-columns: repeat(5, 1fr); }
1043
- @media (min-width: 1280px) { grid-template-columns: repeat(6, 1fr); }
1053
+ @media (min-width: 480px) { grid-template-columns: repeat(2, 1fr); }
1054
+ @media (min-width: 768px) { grid-template-columns: repeat(3, 1fr); }
1055
+ @media (min-width: 1024px) { grid-template-columns: repeat(4, 1fr); }
1056
+ @media (min-width: 1280px) { grid-template-columns: repeat(5, 1fr); }
1044
1057
  `,
1045
1058
  item: _react3.css`
1046
1059
  position: relative;
1047
1060
  border-radius: 8px;
1048
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1061
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1049
1062
  overflow: hidden;
1050
1063
  cursor: pointer;
1051
1064
  transition: all 0.15s ease;
1052
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
1065
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
1053
1066
  user-select: none;
1054
1067
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
1055
1068
 
@@ -1059,18 +1072,18 @@ var styles3 = {
1059
1072
  }
1060
1073
  `,
1061
1074
  itemSelected: _react3.css`
1062
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1063
- box-shadow: 0 0 0 1px ${_chunkZLL7JHVCjs.colors.primary};
1075
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1076
+ box-shadow: 0 0 0 1px ${_chunkUFCWGUAGjs.colors.primary};
1064
1077
 
1065
1078
  &:hover {
1066
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1079
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1067
1080
  }
1068
1081
  `,
1069
1082
  parentItem: _react3.css`
1070
1083
  cursor: pointer;
1071
1084
 
1072
1085
  &:hover {
1073
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1086
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1074
1087
  }
1075
1088
  `,
1076
1089
  checkboxWrapper: _react3.css`
@@ -1084,7 +1097,7 @@ var styles3 = {
1084
1097
  checkbox: _react3.css`
1085
1098
  width: 16px;
1086
1099
  height: 16px;
1087
- accent-color: ${_chunkZLL7JHVCjs.colors.primary};
1100
+ accent-color: ${_chunkUFCWGUAGjs.colors.primary};
1088
1101
  cursor: pointer;
1089
1102
  `,
1090
1103
  cdnBadge: _react3.css`
@@ -1092,8 +1105,8 @@ var styles3 = {
1092
1105
  top: 8px;
1093
1106
  right: 8px;
1094
1107
  z-index: 10;
1095
- background-color: ${_chunkZLL7JHVCjs.colors.successLight};
1096
- color: ${_chunkZLL7JHVCjs.colors.success};
1108
+ background-color: ${_chunkUFCWGUAGjs.colors.successLight};
1109
+ color: ${_chunkUFCWGUAGjs.colors.success};
1097
1110
  font-size: 11px;
1098
1111
  font-weight: 500;
1099
1112
  padding: 2px 8px;
@@ -1105,7 +1118,7 @@ var styles3 = {
1105
1118
  align-items: center;
1106
1119
  justify-content: center;
1107
1120
  padding: 16px;
1108
- background: ${_chunkZLL7JHVCjs.colors.background};
1121
+ background: ${_chunkUFCWGUAGjs.colors.background};
1109
1122
  `,
1110
1123
  folderIcon: _react3.css`
1111
1124
  width: 56px;
@@ -1115,7 +1128,7 @@ var styles3 = {
1115
1128
  imagesFolderIcon: _react3.css`
1116
1129
  width: 56px;
1117
1130
  height: 56px;
1118
- color: ${_chunkZLL7JHVCjs.colors.imagesFolder};
1131
+ color: ${_chunkUFCWGUAGjs.colors.imagesFolder};
1119
1132
  `,
1120
1133
  imagesFolderWrapper: _react3.css`
1121
1134
  position: relative;
@@ -1126,7 +1139,7 @@ var styles3 = {
1126
1139
  right: 4px;
1127
1140
  width: 16px;
1128
1141
  height: 16px;
1129
- color: ${_chunkZLL7JHVCjs.colors.imagesFolder};
1142
+ color: ${_chunkUFCWGUAGjs.colors.imagesFolder};
1130
1143
  background: white;
1131
1144
  border-radius: 50%;
1132
1145
  padding: 2px;
@@ -1134,12 +1147,12 @@ var styles3 = {
1134
1147
  parentIcon: _react3.css`
1135
1148
  width: 56px;
1136
1149
  height: 56px;
1137
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1150
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1138
1151
  `,
1139
1152
  fileIcon: _react3.css`
1140
1153
  width: 40px;
1141
1154
  height: 40px;
1142
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1155
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1143
1156
  `,
1144
1157
  image: _react3.css`
1145
1158
  max-width: 100%;
@@ -1154,8 +1167,8 @@ var styles3 = {
1154
1167
  justify-content: center;
1155
1168
  gap: 8px;
1156
1169
  padding: 16px;
1157
- background: ${_chunkZLL7JHVCjs.colors.background};
1158
- border: 2px dashed ${_chunkZLL7JHVCjs.colors.border};
1170
+ background: ${_chunkUFCWGUAGjs.colors.background};
1171
+ border: 2px dashed ${_chunkUFCWGUAGjs.colors.border};
1159
1172
  border-radius: 8px;
1160
1173
  cursor: pointer;
1161
1174
  transition: all 0.15s ease;
@@ -1163,39 +1176,94 @@ var styles3 = {
1163
1176
  height: 60%;
1164
1177
 
1165
1178
  &:hover {
1166
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1167
- background: ${_chunkZLL7JHVCjs.colors.surfaceHover};
1179
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1180
+ background: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1168
1181
  }
1169
1182
  `,
1170
1183
  noThumbnailIcon: _react3.css`
1171
1184
  width: 32px;
1172
1185
  height: 32px;
1173
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1186
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1174
1187
  `,
1175
1188
  noThumbnailText: _react3.css`
1176
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
1177
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1189
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1190
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1178
1191
  text-align: center;
1179
1192
  `,
1180
1193
  label: _react3.css`
1181
1194
  padding: 10px 12px;
1182
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
1183
- border-top: 1px solid ${_chunkZLL7JHVCjs.colors.borderLight};
1195
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
1196
+ border-top: 1px solid ${_chunkUFCWGUAGjs.colors.borderLight};
1184
1197
  `,
1185
1198
  labelRow: _react3.css`
1186
1199
  display: flex;
1187
- align-items: center;
1188
- justify-content: space-between;
1189
- gap: 8px;
1200
+ flex-direction: column;
1201
+ gap: 6px;
1190
1202
  `,
1191
1203
  labelText: _react3.css`
1192
1204
  flex: 1;
1193
1205
  min-width: 0;
1194
1206
  `,
1207
+ buttonRow: _react3.css`
1208
+ display: flex;
1209
+ gap: 6px;
1210
+ `,
1211
+ copyBtn: _react3.css`
1212
+ position: relative;
1213
+ flex-shrink: 0;
1214
+ height: 28px;
1215
+ width: 28px;
1216
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1217
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1218
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1219
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1220
+ padding: 0;
1221
+ cursor: pointer;
1222
+ border-radius: 4px;
1223
+ transition: all 0.15s ease;
1224
+ display: inline-flex;
1225
+ align-items: center;
1226
+ justify-content: center;
1227
+
1228
+ &:hover {
1229
+ background: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1230
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
1231
+ color: ${_chunkUFCWGUAGjs.colors.text};
1232
+ }
1233
+ `,
1234
+ copyIcon: _react3.css`
1235
+ width: 14px;
1236
+ height: 14px;
1237
+ `,
1238
+ tooltip: _react3.css`
1239
+ position: absolute;
1240
+ bottom: 100%;
1241
+ left: 50%;
1242
+ transform: translateX(-50%);
1243
+ background: #1a1f36;
1244
+ color: white;
1245
+ padding: 4px 8px;
1246
+ border-radius: 4px;
1247
+ font-size: 12px;
1248
+ white-space: nowrap;
1249
+ margin-bottom: 6px;
1250
+ pointer-events: none;
1251
+ z-index: 100;
1252
+
1253
+ &::after {
1254
+ content: '';
1255
+ position: absolute;
1256
+ top: 100%;
1257
+ left: 50%;
1258
+ transform: translateX(-50%);
1259
+ border: 4px solid transparent;
1260
+ border-top-color: #1a1f36;
1261
+ }
1262
+ `,
1195
1263
  name: _react3.css`
1196
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
1264
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
1197
1265
  font-weight: 500;
1198
- color: ${_chunkZLL7JHVCjs.colors.text};
1266
+ color: ${_chunkUFCWGUAGjs.colors.text};
1199
1267
  white-space: nowrap;
1200
1268
  overflow: hidden;
1201
1269
  text-overflow: ellipsis;
@@ -1203,18 +1271,18 @@ var styles3 = {
1203
1271
  letter-spacing: -0.01em;
1204
1272
  `,
1205
1273
  size: _react3.css`
1206
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
1207
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1274
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1275
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1208
1276
  margin: 2px 0 0 0;
1209
1277
  `,
1210
1278
  openBtn: _react3.css`
1211
1279
  flex-shrink: 0;
1212
1280
  height: 28px;
1213
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
1281
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1214
1282
  font-weight: 500;
1215
- color: ${_chunkZLL7JHVCjs.colors.primary};
1216
- background: ${_chunkZLL7JHVCjs.colors.surface};
1217
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1283
+ color: ${_chunkUFCWGUAGjs.colors.primary};
1284
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1285
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1218
1286
  padding: 0 10px;
1219
1287
  cursor: pointer;
1220
1288
  border-radius: 4px;
@@ -1223,8 +1291,8 @@ var styles3 = {
1223
1291
  align-items: center;
1224
1292
 
1225
1293
  &:hover {
1226
- background-color: ${_chunkZLL7JHVCjs.colors.primaryLight};
1227
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1294
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
1295
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1228
1296
  }
1229
1297
  `,
1230
1298
  selectAllRow: _react3.css`
@@ -1232,27 +1300,27 @@ var styles3 = {
1232
1300
  align-items: center;
1233
1301
  margin-bottom: 16px;
1234
1302
  padding: 12px 16px;
1235
- background: ${_chunkZLL7JHVCjs.colors.surface};
1303
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1236
1304
  border-radius: 8px;
1237
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1305
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1238
1306
  `,
1239
1307
  selectAllLabel: _react3.css`
1240
1308
  display: flex;
1241
1309
  align-items: center;
1242
1310
  gap: 10px;
1243
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
1311
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
1244
1312
  font-weight: 500;
1245
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
1313
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1246
1314
  cursor: pointer;
1247
1315
 
1248
1316
  &:hover {
1249
- color: ${_chunkZLL7JHVCjs.colors.text};
1317
+ color: ${_chunkUFCWGUAGjs.colors.text};
1250
1318
  }
1251
1319
  `,
1252
1320
  selectAllCheckbox: _react3.css`
1253
1321
  width: 16px;
1254
1322
  height: 16px;
1255
- accent-color: ${_chunkZLL7JHVCjs.colors.primary};
1323
+ accent-color: ${_chunkUFCWGUAGjs.colors.primary};
1256
1324
  `
1257
1325
  };
1258
1326
  function StudioFileGrid() {
@@ -1387,9 +1455,17 @@ function StudioFileGrid() {
1387
1455
  ] });
1388
1456
  }
1389
1457
  function GridItem({ item, isSelected, onClick, onOpen, onGenerateThumbnail }) {
1458
+ const [showCopied, setShowCopied] = _react.useState.call(void 0, false);
1390
1459
  const isFolder = item.type === "folder";
1391
1460
  const isImage = !isFolder && item.thumbnail !== void 0;
1392
1461
  const isImagesFolder = isFolder && (item.name === "images" || item.path.includes("/images/"));
1462
+ const handleCopyPath = (e) => {
1463
+ e.stopPropagation();
1464
+ const pathToCopy = "/" + item.path;
1465
+ navigator.clipboard.writeText(pathToCopy);
1466
+ setShowCopied(true);
1467
+ setTimeout(() => setShowCopied(false), 1500);
1468
+ };
1393
1469
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1394
1470
  "div",
1395
1471
  {
@@ -1448,17 +1524,31 @@ function GridItem({ item, isSelected, onClick, onOpen, onGenerateThumbnail }) {
1448
1524
  item.totalSize !== void 0 ? formatFileSize(item.totalSize) : ""
1449
1525
  ] }) : item.size !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { css: styles3.size, children: formatFileSize(item.size) })
1450
1526
  ] }),
1451
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1452
- "button",
1453
- {
1454
- css: styles3.openBtn,
1455
- onClick: (e) => {
1456
- e.stopPropagation();
1457
- onOpen();
1458
- },
1459
- children: "Open"
1460
- }
1461
- )
1527
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles3.buttonRow, children: [
1528
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1529
+ "button",
1530
+ {
1531
+ css: styles3.copyBtn,
1532
+ onClick: handleCopyPath,
1533
+ title: "Copy file path",
1534
+ children: [
1535
+ showCopied && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { css: styles3.tooltip, children: "Copied!" }),
1536
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles3.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" }) })
1537
+ ]
1538
+ }
1539
+ ),
1540
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1541
+ "button",
1542
+ {
1543
+ css: styles3.openBtn,
1544
+ onClick: (e) => {
1545
+ e.stopPropagation();
1546
+ onOpen();
1547
+ },
1548
+ children: "Open"
1549
+ }
1550
+ )
1551
+ ] })
1462
1552
  ] }) })
1463
1553
  ]
1464
1554
  }
@@ -1501,8 +1591,8 @@ var styles4 = {
1501
1591
  width: 32px;
1502
1592
  height: 32px;
1503
1593
  border-radius: 50%;
1504
- border: 3px solid ${_chunkZLL7JHVCjs.colors.border};
1505
- border-top-color: ${_chunkZLL7JHVCjs.colors.primary};
1594
+ border: 3px solid ${_chunkUFCWGUAGjs.colors.border};
1595
+ border-top-color: ${_chunkUFCWGUAGjs.colors.primary};
1506
1596
  animation: ${spin3} 0.8s linear infinite;
1507
1597
  `,
1508
1598
  empty: _react3.css`
@@ -1511,12 +1601,12 @@ var styles4 = {
1511
1601
  align-items: center;
1512
1602
  justify-content: center;
1513
1603
  height: 256px;
1514
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
1604
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1515
1605
  `,
1516
1606
  tableWrapper: _react3.css`
1517
- background: ${_chunkZLL7JHVCjs.colors.surface};
1607
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1518
1608
  border-radius: 8px;
1519
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1609
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1520
1610
  overflow: hidden;
1521
1611
  `,
1522
1612
  table: _react3.css`
@@ -1526,13 +1616,13 @@ var styles4 = {
1526
1616
  th: _react3.css`
1527
1617
  text-align: left;
1528
1618
  font-size: 11px;
1529
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1619
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1530
1620
  text-transform: uppercase;
1531
1621
  letter-spacing: 0.05em;
1532
1622
  padding: 12px 16px;
1533
1623
  font-weight: 600;
1534
- background: ${_chunkZLL7JHVCjs.colors.background};
1535
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1624
+ background: ${_chunkUFCWGUAGjs.colors.background};
1625
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1536
1626
  `,
1537
1627
  thCheckbox: _react3.css`
1538
1628
  width: 48px;
@@ -1553,26 +1643,26 @@ var styles4 = {
1553
1643
  user-select: none;
1554
1644
 
1555
1645
  &:hover {
1556
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
1646
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1557
1647
  }
1558
1648
 
1559
1649
  &:not(:last-child) td {
1560
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.borderLight};
1650
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.borderLight};
1561
1651
  }
1562
1652
  `,
1563
1653
  rowSelected: _react3.css`
1564
- background-color: ${_chunkZLL7JHVCjs.colors.primaryLight};
1654
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
1565
1655
 
1566
1656
  &:hover {
1567
- background-color: ${_chunkZLL7JHVCjs.colors.primaryLight};
1657
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
1568
1658
  }
1569
1659
  `,
1570
1660
  parentRow: _react3.css`
1571
1661
  cursor: pointer;
1572
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1662
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1573
1663
 
1574
1664
  &:hover {
1575
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
1665
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1576
1666
  }
1577
1667
  `,
1578
1668
  td: _react3.css`
@@ -1581,12 +1671,66 @@ var styles4 = {
1581
1671
  checkboxCell: _react3.css`
1582
1672
  padding: 12px 16px;
1583
1673
  cursor: pointer;
1674
+ vertical-align: middle;
1584
1675
  `,
1585
1676
  checkbox: _react3.css`
1586
1677
  width: 16px;
1587
1678
  height: 16px;
1588
- accent-color: ${_chunkZLL7JHVCjs.colors.primary};
1679
+ accent-color: ${_chunkUFCWGUAGjs.colors.primary};
1680
+ cursor: pointer;
1681
+ display: block;
1682
+ `,
1683
+ copyBtn: _react3.css`
1684
+ position: relative;
1685
+ flex-shrink: 0;
1686
+ height: 28px;
1687
+ width: 28px;
1688
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1689
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1690
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1691
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1692
+ padding: 0;
1589
1693
  cursor: pointer;
1694
+ border-radius: 4px;
1695
+ transition: all 0.15s ease;
1696
+ display: inline-flex;
1697
+ align-items: center;
1698
+ justify-content: center;
1699
+
1700
+ &:hover {
1701
+ background: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1702
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
1703
+ color: ${_chunkUFCWGUAGjs.colors.text};
1704
+ }
1705
+ `,
1706
+ copyIcon: _react3.css`
1707
+ width: 14px;
1708
+ height: 14px;
1709
+ `,
1710
+ tooltip: _react3.css`
1711
+ position: absolute;
1712
+ bottom: 100%;
1713
+ left: 50%;
1714
+ transform: translateX(-50%);
1715
+ background: #1a1f36;
1716
+ color: white;
1717
+ padding: 4px 8px;
1718
+ border-radius: 4px;
1719
+ font-size: 12px;
1720
+ white-space: nowrap;
1721
+ margin-bottom: 6px;
1722
+ pointer-events: none;
1723
+ z-index: 100;
1724
+
1725
+ &::after {
1726
+ content: '';
1727
+ position: absolute;
1728
+ top: 100%;
1729
+ left: 50%;
1730
+ transform: translateX(-50%);
1731
+ border: 4px solid transparent;
1732
+ border-top-color: #1a1f36;
1733
+ }
1590
1734
  `,
1591
1735
  nameCell: _react3.css`
1592
1736
  display: flex;
@@ -1607,26 +1751,26 @@ var styles4 = {
1607
1751
  imagesFolderIcon: _react3.css`
1608
1752
  width: 20px;
1609
1753
  height: 20px;
1610
- color: ${_chunkZLL7JHVCjs.colors.imagesFolder};
1754
+ color: ${_chunkUFCWGUAGjs.colors.imagesFolder};
1611
1755
  flex-shrink: 0;
1612
1756
  `,
1613
1757
  lockIcon: _react3.css`
1614
1758
  width: 10px;
1615
1759
  height: 10px;
1616
- color: ${_chunkZLL7JHVCjs.colors.imagesFolder};
1760
+ color: ${_chunkUFCWGUAGjs.colors.imagesFolder};
1617
1761
  margin-left: -6px;
1618
1762
  margin-top: 8px;
1619
1763
  `,
1620
1764
  parentIcon: _react3.css`
1621
1765
  width: 20px;
1622
1766
  height: 20px;
1623
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1767
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1624
1768
  flex-shrink: 0;
1625
1769
  `,
1626
1770
  fileIcon: _react3.css`
1627
1771
  width: 20px;
1628
1772
  height: 20px;
1629
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1773
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1630
1774
  flex-shrink: 0;
1631
1775
  `,
1632
1776
  thumbnail: _react3.css`
@@ -1637,7 +1781,7 @@ var styles4 = {
1637
1781
  object-fit: contain;
1638
1782
  border-radius: 4px;
1639
1783
  flex-shrink: 0;
1640
- border: 1px solid ${_chunkZLL7JHVCjs.colors.borderLight};
1784
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.borderLight};
1641
1785
  `,
1642
1786
  noThumbnail: _react3.css`
1643
1787
  width: 36px;
@@ -1645,56 +1789,56 @@ var styles4 = {
1645
1789
  display: flex;
1646
1790
  align-items: center;
1647
1791
  justify-content: center;
1648
- background: ${_chunkZLL7JHVCjs.colors.background};
1649
- border: 1px dashed ${_chunkZLL7JHVCjs.colors.border};
1792
+ background: ${_chunkUFCWGUAGjs.colors.background};
1793
+ border: 1px dashed ${_chunkUFCWGUAGjs.colors.border};
1650
1794
  border-radius: 4px;
1651
1795
  flex-shrink: 0;
1652
1796
  cursor: pointer;
1653
1797
  transition: all 0.15s ease;
1654
1798
 
1655
1799
  &:hover {
1656
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1657
- background: ${_chunkZLL7JHVCjs.colors.surfaceHover};
1800
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1801
+ background: ${_chunkUFCWGUAGjs.colors.surfaceHover};
1658
1802
  }
1659
1803
  `,
1660
1804
  noThumbnailIcon: _react3.css`
1661
1805
  width: 16px;
1662
1806
  height: 16px;
1663
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1807
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1664
1808
  `,
1665
1809
  name: _react3.css`
1666
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
1810
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
1667
1811
  font-weight: 500;
1668
- color: ${_chunkZLL7JHVCjs.colors.text};
1812
+ color: ${_chunkUFCWGUAGjs.colors.text};
1669
1813
  letter-spacing: -0.01em;
1670
1814
  `,
1671
1815
  meta: _react3.css`
1672
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
1673
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
1816
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
1817
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
1674
1818
  `,
1675
1819
  cdnBadge: _react3.css`
1676
1820
  display: inline-flex;
1677
1821
  align-items: center;
1678
1822
  gap: 4px;
1679
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
1823
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1680
1824
  font-weight: 500;
1681
- color: ${_chunkZLL7JHVCjs.colors.success};
1825
+ color: ${_chunkUFCWGUAGjs.colors.success};
1682
1826
  `,
1683
1827
  cdnIcon: _react3.css`
1684
1828
  width: 12px;
1685
1829
  height: 12px;
1686
1830
  `,
1687
1831
  cdnEmpty: _react3.css`
1688
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
1689
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
1832
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
1833
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
1690
1834
  `,
1691
1835
  openBtn: _react3.css`
1692
1836
  height: 28px;
1693
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
1837
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
1694
1838
  font-weight: 500;
1695
- color: ${_chunkZLL7JHVCjs.colors.primary};
1696
- background: ${_chunkZLL7JHVCjs.colors.surface};
1697
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
1839
+ color: ${_chunkUFCWGUAGjs.colors.primary};
1840
+ background: ${_chunkUFCWGUAGjs.colors.surface};
1841
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1698
1842
  padding: 0 12px;
1699
1843
  cursor: pointer;
1700
1844
  border-radius: 4px;
@@ -1704,8 +1848,8 @@ var styles4 = {
1704
1848
  margin-left: auto;
1705
1849
 
1706
1850
  &:hover {
1707
- background-color: ${_chunkZLL7JHVCjs.colors.primaryLight};
1708
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
1851
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryLight};
1852
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
1709
1853
  }
1710
1854
  `
1711
1855
  };
@@ -1834,9 +1978,17 @@ function StudioFileList() {
1834
1978
  ] }) });
1835
1979
  }
1836
1980
  function ListRow({ item, isSelected, onClick, onOpen, onGenerateThumbnail }) {
1981
+ const [showCopied, setShowCopied] = _react.useState.call(void 0, false);
1837
1982
  const isFolder = item.type === "folder";
1838
1983
  const isImage = !isFolder && item.thumbnail !== void 0;
1839
1984
  const isImagesFolder = isFolder && (item.name === "images" || item.path.includes("/images/"));
1985
+ const handleCopyPath = (e) => {
1986
+ e.stopPropagation();
1987
+ const pathToCopy = "/" + item.path;
1988
+ navigator.clipboard.writeText(pathToCopy);
1989
+ setShowCopied(true);
1990
+ setTimeout(() => setShowCopied(false), 1500);
1991
+ };
1840
1992
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1841
1993
  "tr",
1842
1994
  {
@@ -1876,6 +2028,18 @@ function ListRow({ item, isSelected, onClick, onOpen, onGenerateThumbnail }) {
1876
2028
  }
1877
2029
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles4.fileIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" }) }),
1878
2030
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { css: styles4.name, title: item.name, children: truncateMiddle2(item.name) }),
2031
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2032
+ "button",
2033
+ {
2034
+ css: styles4.copyBtn,
2035
+ onClick: handleCopyPath,
2036
+ title: "Copy file path",
2037
+ children: [
2038
+ showCopied && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { css: styles4.tooltip, children: "Copied!" }),
2039
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles4.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" }) })
2040
+ ]
2041
+ }
2042
+ ),
1879
2043
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1880
2044
  "button",
1881
2045
  {
@@ -1946,8 +2110,8 @@ var styles5 = {
1946
2110
  display: flex;
1947
2111
  flex: 1;
1948
2112
  margin: 24px;
1949
- background: ${_chunkZLL7JHVCjs.colors.surface};
1950
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2113
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2114
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1951
2115
  border-radius: 12px;
1952
2116
  overflow: hidden;
1953
2117
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
@@ -1960,34 +2124,86 @@ var styles5 = {
1960
2124
  align-items: center;
1961
2125
  justify-content: center;
1962
2126
  padding: 24px;
1963
- background: ${_chunkZLL7JHVCjs.colors.background};
2127
+ background: ${_chunkUFCWGUAGjs.colors.background};
1964
2128
  overflow: auto;
1965
2129
  `,
1966
- mainCloseBtn: _react3.css`
2130
+ headerButtons: _react3.css`
1967
2131
  position: absolute;
1968
2132
  top: 16px;
1969
2133
  right: 16px;
2134
+ display: flex;
2135
+ gap: 8px;
2136
+ z-index: 10;
2137
+ `,
2138
+ copyBtn: _react3.css`
2139
+ position: relative;
1970
2140
  padding: 8px;
1971
- background: ${_chunkZLL7JHVCjs.colors.surface};
1972
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2141
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2142
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
1973
2143
  border-radius: 8px;
1974
2144
  cursor: pointer;
1975
2145
  transition: all 0.15s ease;
1976
2146
  display: flex;
1977
2147
  align-items: center;
1978
2148
  justify-content: center;
1979
- z-index: 10;
1980
2149
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
1981
2150
 
1982
2151
  &:hover {
1983
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
1984
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2152
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2153
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2154
+ }
2155
+ `,
2156
+ copyIcon: _react3.css`
2157
+ width: 20px;
2158
+ height: 20px;
2159
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2160
+ `,
2161
+ tooltip: _react3.css`
2162
+ position: absolute;
2163
+ bottom: 100%;
2164
+ left: 50%;
2165
+ transform: translateX(-50%);
2166
+ background: #1a1f36;
2167
+ color: white;
2168
+ padding: 4px 8px;
2169
+ border-radius: 4px;
2170
+ font-size: 12px;
2171
+ white-space: nowrap;
2172
+ margin-bottom: 6px;
2173
+ pointer-events: none;
2174
+ z-index: 100;
2175
+
2176
+ &::after {
2177
+ content: '';
2178
+ position: absolute;
2179
+ top: 100%;
2180
+ left: 50%;
2181
+ transform: translateX(-50%);
2182
+ border: 4px solid transparent;
2183
+ border-top-color: #1a1f36;
2184
+ }
2185
+ `,
2186
+ mainCloseBtn: _react3.css`
2187
+ padding: 8px;
2188
+ background: ${_chunkUFCWGUAGjs.colors.danger};
2189
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.danger};
2190
+ border-radius: 8px;
2191
+ cursor: pointer;
2192
+ transition: all 0.15s ease;
2193
+ display: flex;
2194
+ align-items: center;
2195
+ justify-content: center;
2196
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
2197
+
2198
+ &:hover {
2199
+ background-color: ${_chunkUFCWGUAGjs.colors.dangerHover};
2200
+ border-color: ${_chunkUFCWGUAGjs.colors.dangerHover};
1985
2201
  }
1986
2202
  `,
1987
2203
  mainCloseIcon: _react3.css`
1988
2204
  width: 20px;
1989
2205
  height: 20px;
1990
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2206
+ color: white;
1991
2207
  `,
1992
2208
  mediaWrapper: _react3.css`
1993
2209
  max-width: 100%;
@@ -2015,38 +2231,38 @@ var styles5 = {
2015
2231
  align-items: center;
2016
2232
  justify-content: center;
2017
2233
  padding: 48px;
2018
- background: ${_chunkZLL7JHVCjs.colors.surface};
2234
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2019
2235
  border-radius: 12px;
2020
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2236
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2021
2237
  `,
2022
2238
  fileIcon: _react3.css`
2023
2239
  width: 80px;
2024
2240
  height: 80px;
2025
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
2241
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
2026
2242
  margin-bottom: 16px;
2027
2243
  `,
2028
2244
  fileName: _react3.css`
2029
- font-size: ${_chunkZLL7JHVCjs.fontSize.lg};
2245
+ font-size: ${_chunkUFCWGUAGjs.fontSize.lg};
2030
2246
  font-weight: 600;
2031
- color: ${_chunkZLL7JHVCjs.colors.text};
2247
+ color: ${_chunkUFCWGUAGjs.colors.text};
2032
2248
  margin: 0;
2033
2249
  `,
2034
2250
  sidebar: _react3.css`
2035
2251
  width: 280px;
2036
- background: ${_chunkZLL7JHVCjs.colors.surface};
2037
- border-left: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2252
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2253
+ border-left: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2038
2254
  display: flex;
2039
2255
  flex-direction: column;
2040
2256
  overflow: hidden;
2041
2257
  `,
2042
2258
  sidebarHeader: _react3.css`
2043
2259
  padding: 16px 20px;
2044
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2260
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2045
2261
  `,
2046
2262
  sidebarTitle: _react3.css`
2047
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2263
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2048
2264
  font-weight: 600;
2049
- color: ${_chunkZLL7JHVCjs.colors.text};
2265
+ color: ${_chunkUFCWGUAGjs.colors.text};
2050
2266
  margin: 0;
2051
2267
  `,
2052
2268
  sidebarContent: _react3.css`
@@ -2063,13 +2279,13 @@ var styles5 = {
2063
2279
  infoRow: _react3.css`
2064
2280
  display: flex;
2065
2281
  justify-content: space-between;
2066
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
2282
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
2067
2283
  `,
2068
2284
  infoLabel: _react3.css`
2069
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2285
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2070
2286
  `,
2071
2287
  infoValue: _react3.css`
2072
- color: ${_chunkZLL7JHVCjs.colors.text};
2288
+ color: ${_chunkUFCWGUAGjs.colors.text};
2073
2289
  font-weight: 500;
2074
2290
  text-align: right;
2075
2291
  max-width: 160px;
@@ -2078,7 +2294,7 @@ var styles5 = {
2078
2294
  white-space: nowrap;
2079
2295
  `,
2080
2296
  infoValueWrap: _react3.css`
2081
- color: ${_chunkZLL7JHVCjs.colors.text};
2297
+ color: ${_chunkUFCWGUAGjs.colors.text};
2082
2298
  font-weight: 500;
2083
2299
  text-align: right;
2084
2300
  max-width: 160px;
@@ -2096,27 +2312,27 @@ var styles5 = {
2096
2312
  gap: 10px;
2097
2313
  width: 100%;
2098
2314
  padding: 12px 14px;
2099
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2315
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2100
2316
  font-weight: 500;
2101
- background: ${_chunkZLL7JHVCjs.colors.surface};
2102
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2317
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2318
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2103
2319
  border-radius: 6px;
2104
2320
  cursor: pointer;
2105
2321
  transition: all 0.15s ease;
2106
- color: ${_chunkZLL7JHVCjs.colors.text};
2322
+ color: ${_chunkUFCWGUAGjs.colors.text};
2107
2323
  text-align: left;
2108
2324
 
2109
2325
  &:hover {
2110
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2111
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2326
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2327
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2112
2328
  }
2113
2329
  `,
2114
2330
  actionBtnDanger: _react3.css`
2115
- color: ${_chunkZLL7JHVCjs.colors.danger};
2331
+ color: ${_chunkUFCWGUAGjs.colors.danger};
2116
2332
 
2117
2333
  &:hover {
2118
- background-color: ${_chunkZLL7JHVCjs.colors.dangerLight};
2119
- border-color: ${_chunkZLL7JHVCjs.colors.danger};
2334
+ background-color: ${_chunkUFCWGUAGjs.colors.dangerLight};
2335
+ border-color: ${_chunkUFCWGUAGjs.colors.danger};
2120
2336
  }
2121
2337
  `,
2122
2338
  actionIcon: _react3.css`
@@ -2129,6 +2345,7 @@ function StudioDetailView() {
2129
2345
  const { focusedItem, setFocusedItem, triggerRefresh, clearSelection } = useStudio();
2130
2346
  const [showDeleteConfirm, setShowDeleteConfirm] = _react.useState.call(void 0, false);
2131
2347
  const [alertMessage, setAlertMessage] = _react.useState.call(void 0, null);
2348
+ const [showCopied, setShowCopied] = _react.useState.call(void 0, false);
2132
2349
  if (!focusedItem) return null;
2133
2350
  const isImage = isImageFile(focusedItem.name);
2134
2351
  const isVideo = isVideoFile(focusedItem.name);
@@ -2136,6 +2353,12 @@ function StudioDetailView() {
2136
2353
  const handleClose = () => {
2137
2354
  setFocusedItem(null);
2138
2355
  };
2356
+ const handleCopyPath = () => {
2357
+ const pathToCopy = "/" + focusedItem.path;
2358
+ navigator.clipboard.writeText(pathToCopy);
2359
+ setShowCopied(true);
2360
+ setTimeout(() => setShowCopied(false), 1500);
2361
+ };
2139
2362
  const handleRename = () => {
2140
2363
  const newName = prompt("Enter new name:", focusedItem.name);
2141
2364
  if (newName && newName !== focusedItem.name) {
@@ -2209,7 +2432,13 @@ function StudioDetailView() {
2209
2432
  ),
2210
2433
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { css: styles5.overlay, onClick: handleClose, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles5.container, onClick: (e) => e.stopPropagation(), children: [
2211
2434
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles5.main, children: [
2212
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "button", { css: styles5.mainCloseBtn, onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles5.mainCloseIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }),
2435
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles5.headerButtons, children: [
2436
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "button", { css: styles5.copyBtn, onClick: handleCopyPath, title: "Copy file path", children: [
2437
+ showCopied && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { css: styles5.tooltip, children: "Copied!" }),
2438
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles5.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" }) })
2439
+ ] }),
2440
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "button", { css: styles5.mainCloseBtn, onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles5.mainCloseIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })
2441
+ ] }),
2213
2442
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { css: styles5.mediaWrapper, children: renderMedia() })
2214
2443
  ] }),
2215
2444
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles5.sidebar, children: [
@@ -2279,8 +2508,8 @@ var styles6 = {
2279
2508
  btn: _react3.css`
2280
2509
  height: ${btnHeight2};
2281
2510
  padding: 0 12px;
2282
- background: ${_chunkZLL7JHVCjs.colors.surface};
2283
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2511
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2512
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2284
2513
  border-radius: 6px;
2285
2514
  cursor: pointer;
2286
2515
  transition: all 0.15s ease;
@@ -2289,14 +2518,14 @@ var styles6 = {
2289
2518
  justify-content: center;
2290
2519
 
2291
2520
  &:hover {
2292
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2293
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2521
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2522
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2294
2523
  }
2295
2524
  `,
2296
2525
  icon: _react3.css`
2297
2526
  width: 16px;
2298
2527
  height: 16px;
2299
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2528
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2300
2529
  `,
2301
2530
  overlay: _react3.css`
2302
2531
  position: fixed;
@@ -2312,9 +2541,9 @@ var styles6 = {
2312
2541
  backdrop-filter: blur(4px);
2313
2542
  `,
2314
2543
  panel: _react3.css`
2315
- ${_chunkZLL7JHVCjs.baseReset}
2544
+ ${_chunkUFCWGUAGjs.baseReset}
2316
2545
  position: relative;
2317
- background-color: ${_chunkZLL7JHVCjs.colors.surface};
2546
+ background-color: ${_chunkUFCWGUAGjs.colors.surface};
2318
2547
  border-radius: 12px;
2319
2548
  box-shadow: 0 30px 60px -12px rgba(50, 50, 93, 0.25), 0 18px 36px -18px rgba(0, 0, 0, 0.3);
2320
2549
  width: 100%;
@@ -2328,16 +2557,16 @@ var styles6 = {
2328
2557
  margin-bottom: 24px;
2329
2558
  `,
2330
2559
  title: _react3.css`
2331
- font-size: ${_chunkZLL7JHVCjs.fontSize.xl};
2560
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xl};
2332
2561
  font-weight: 600;
2333
- color: ${_chunkZLL7JHVCjs.colors.text};
2562
+ color: ${_chunkUFCWGUAGjs.colors.text};
2334
2563
  margin: 0;
2335
2564
  letter-spacing: -0.02em;
2336
2565
  `,
2337
2566
  closeBtn: _react3.css`
2338
2567
  padding: 6px;
2339
- background: ${_chunkZLL7JHVCjs.colors.surface};
2340
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2568
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2569
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2341
2570
  border-radius: 6px;
2342
2571
  cursor: pointer;
2343
2572
  transition: all 0.15s ease;
@@ -2346,8 +2575,8 @@ var styles6 = {
2346
2575
  justify-content: center;
2347
2576
 
2348
2577
  &:hover {
2349
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2350
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2578
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2579
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2351
2580
  }
2352
2581
  `,
2353
2582
  sections: _react3.css`
@@ -2356,36 +2585,38 @@ var styles6 = {
2356
2585
  gap: 24px;
2357
2586
  `,
2358
2587
  sectionTitle: _react3.css`
2359
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2588
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2360
2589
  font-weight: 600;
2361
- color: ${_chunkZLL7JHVCjs.colors.text};
2590
+ color: ${_chunkUFCWGUAGjs.colors.text};
2362
2591
  margin: 0 0 12px 0;
2363
2592
  `,
2364
2593
  description: _react3.css`
2365
- font-size: ${_chunkZLL7JHVCjs.fontSize.sm};
2366
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2594
+ font-size: ${_chunkUFCWGUAGjs.fontSize.sm};
2595
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2367
2596
  margin: 0 0 12px 0;
2368
2597
  `,
2369
2598
  codeWrapper: _react3.css`
2370
2599
  position: relative;
2371
2600
  `,
2372
2601
  code: _react3.css`
2373
- background-color: ${_chunkZLL7JHVCjs.colors.background};
2602
+ background-color: ${_chunkUFCWGUAGjs.colors.background};
2374
2603
  border-radius: 8px;
2375
2604
  padding: 12px;
2376
2605
  padding-right: 40px;
2377
2606
  font-family: 'SF Mono', Monaco, Consolas, monospace;
2378
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
2379
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2380
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2607
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
2608
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2609
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2610
+ overflow-x: auto;
2611
+ white-space: nowrap;
2381
2612
  `,
2382
2613
  copyBtn: _react3.css`
2383
2614
  position: absolute;
2384
2615
  top: 8px;
2385
2616
  right: 8px;
2386
2617
  padding: 4px;
2387
- background: ${_chunkZLL7JHVCjs.colors.surface};
2388
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2618
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2619
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2389
2620
  border-radius: 4px;
2390
2621
  cursor: pointer;
2391
2622
  transition: all 0.15s ease;
@@ -2394,14 +2625,39 @@ var styles6 = {
2394
2625
  justify-content: center;
2395
2626
 
2396
2627
  &:hover {
2397
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2398
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2628
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2629
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2630
+ }
2631
+ `,
2632
+ tooltip: _react3.css`
2633
+ position: absolute;
2634
+ bottom: 100%;
2635
+ left: 50%;
2636
+ transform: translateX(-50%);
2637
+ background: #1a1f36;
2638
+ color: white;
2639
+ padding: 4px 8px;
2640
+ border-radius: 4px;
2641
+ font-size: 12px;
2642
+ white-space: nowrap;
2643
+ margin-bottom: 6px;
2644
+ pointer-events: none;
2645
+ z-index: 100;
2646
+
2647
+ &::after {
2648
+ content: '';
2649
+ position: absolute;
2650
+ top: 100%;
2651
+ left: 50%;
2652
+ transform: translateX(-50%);
2653
+ border: 4px solid transparent;
2654
+ border-top-color: #1a1f36;
2399
2655
  }
2400
2656
  `,
2401
2657
  copyIcon: _react3.css`
2402
2658
  width: 14px;
2403
2659
  height: 14px;
2404
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2660
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2405
2661
  `,
2406
2662
  codeLine: _react3.css`
2407
2663
  margin: 0 0 4px 0;
@@ -2413,21 +2669,21 @@ var styles6 = {
2413
2669
  input: _react3.css`
2414
2670
  width: 100%;
2415
2671
  padding: 10px 14px;
2416
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2672
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2417
2673
  border-radius: 6px;
2418
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2419
- color: ${_chunkZLL7JHVCjs.colors.text};
2420
- background: ${_chunkZLL7JHVCjs.colors.surface};
2674
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2675
+ color: ${_chunkUFCWGUAGjs.colors.text};
2676
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2421
2677
  transition: all 0.15s ease;
2422
2678
 
2423
2679
  &:focus {
2424
2680
  outline: none;
2425
- border-color: ${_chunkZLL7JHVCjs.colors.primary};
2426
- box-shadow: 0 0 0 3px ${_chunkZLL7JHVCjs.colors.primaryLight};
2681
+ border-color: ${_chunkUFCWGUAGjs.colors.primary};
2682
+ box-shadow: 0 0 0 3px ${_chunkUFCWGUAGjs.colors.primaryLight};
2427
2683
  }
2428
2684
 
2429
2685
  &::placeholder {
2430
- color: ${_chunkZLL7JHVCjs.colors.textMuted};
2686
+ color: ${_chunkUFCWGUAGjs.colors.textMuted};
2431
2687
  }
2432
2688
  `,
2433
2689
  grid: _react3.css`
@@ -2436,50 +2692,50 @@ var styles6 = {
2436
2692
  gap: 12px;
2437
2693
  `,
2438
2694
  label: _react3.css`
2439
- font-size: ${_chunkZLL7JHVCjs.fontSize.xs};
2695
+ font-size: ${_chunkUFCWGUAGjs.fontSize.xs};
2440
2696
  font-weight: 500;
2441
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2697
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2442
2698
  display: block;
2443
2699
  margin-bottom: 6px;
2444
2700
  `,
2445
2701
  footer: _react3.css`
2446
2702
  margin-top: 24px;
2447
2703
  padding-top: 20px;
2448
- border-top: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2704
+ border-top: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2449
2705
  display: flex;
2450
2706
  justify-content: flex-end;
2451
2707
  gap: 12px;
2452
2708
  `,
2453
2709
  cancelBtn: _react3.css`
2454
2710
  padding: 10px 18px;
2455
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2711
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2456
2712
  font-weight: 500;
2457
- color: ${_chunkZLL7JHVCjs.colors.text};
2458
- background: ${_chunkZLL7JHVCjs.colors.surface};
2459
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2713
+ color: ${_chunkUFCWGUAGjs.colors.text};
2714
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2715
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2460
2716
  border-radius: 6px;
2461
2717
  cursor: pointer;
2462
2718
  transition: all 0.15s ease;
2463
2719
 
2464
2720
  &:hover {
2465
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2466
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2721
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2722
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2467
2723
  }
2468
2724
  `,
2469
2725
  saveBtn: _react3.css`
2470
2726
  padding: 10px 18px;
2471
- font-size: ${_chunkZLL7JHVCjs.fontSize.base};
2727
+ font-size: ${_chunkUFCWGUAGjs.fontSize.base};
2472
2728
  font-weight: 500;
2473
2729
  color: white;
2474
- background-color: ${_chunkZLL7JHVCjs.colors.primary};
2475
- border: 1px solid ${_chunkZLL7JHVCjs.colors.primary};
2730
+ background-color: ${_chunkUFCWGUAGjs.colors.primary};
2731
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.primary};
2476
2732
  border-radius: 6px;
2477
2733
  cursor: pointer;
2478
2734
  transition: all 0.15s ease;
2479
2735
 
2480
2736
  &:hover {
2481
- background-color: ${_chunkZLL7JHVCjs.colors.primaryHover};
2482
- border-color: ${_chunkZLL7JHVCjs.colors.primaryHover};
2737
+ background-color: ${_chunkUFCWGUAGjs.colors.primaryHover};
2738
+ border-color: ${_chunkUFCWGUAGjs.colors.primaryHover};
2483
2739
  }
2484
2740
  `
2485
2741
  };
@@ -2528,7 +2784,10 @@ function SettingsPanel({ onClose }) {
2528
2784
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { css: styles6.sectionTitle, children: "Cloudflare R2" }),
2529
2785
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { css: styles6.description, children: "Configure in .env.local file:" }),
2530
2786
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles6.codeWrapper, children: [
2531
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "button", { css: styles6.copyBtn, onClick: handleCopy, title: copied ? "Copied!" : "Copy to clipboard", children: copied ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles6.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles6.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" }) }) }),
2787
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "button", { css: styles6.copyBtn, onClick: handleCopy, title: "Copy to clipboard", children: [
2788
+ copied && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { css: styles6.tooltip, children: "Copied!" }),
2789
+ copied ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles6.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { css: styles6.copyIcon, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" }) })
2790
+ ] }),
2532
2791
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { css: styles6.code, children: [
2533
2792
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { css: styles6.codeLine, children: "CLOUDFLARE_R2_ACCOUNT_ID=abc123def456ghi789" }),
2534
2793
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { css: styles6.codeLine, children: "CLOUDFLARE_R2_ACCESS_KEY_ID=your_access_key_id_here" }),
@@ -2573,24 +2832,24 @@ function SettingsPanel({ onClose }) {
2573
2832
  var btnHeight3 = "36px";
2574
2833
  var styles7 = {
2575
2834
  container: _react3.css`
2576
- ${_chunkZLL7JHVCjs.baseReset}
2835
+ ${_chunkUFCWGUAGjs.baseReset}
2577
2836
  display: flex;
2578
2837
  flex-direction: column;
2579
2838
  height: 100%;
2580
- background: ${_chunkZLL7JHVCjs.colors.background};
2839
+ background: ${_chunkUFCWGUAGjs.colors.background};
2581
2840
  `,
2582
2841
  header: _react3.css`
2583
2842
  display: flex;
2584
2843
  align-items: center;
2585
2844
  justify-content: space-between;
2586
2845
  padding: 12px 24px;
2587
- background: ${_chunkZLL7JHVCjs.colors.surface};
2588
- border-bottom: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2846
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2847
+ border-bottom: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2589
2848
  `,
2590
2849
  title: _react3.css`
2591
- font-size: ${_chunkZLL7JHVCjs.fontSize.lg};
2850
+ font-size: ${_chunkUFCWGUAGjs.fontSize.lg};
2592
2851
  font-weight: 600;
2593
- color: ${_chunkZLL7JHVCjs.colors.text};
2852
+ color: ${_chunkUFCWGUAGjs.colors.text};
2594
2853
  margin: 0;
2595
2854
  letter-spacing: -0.02em;
2596
2855
  `,
@@ -2602,8 +2861,8 @@ var styles7 = {
2602
2861
  headerBtn: _react3.css`
2603
2862
  height: ${btnHeight3};
2604
2863
  padding: 0 12px;
2605
- background: ${_chunkZLL7JHVCjs.colors.surface};
2606
- border: 1px solid ${_chunkZLL7JHVCjs.colors.border};
2864
+ background: ${_chunkUFCWGUAGjs.colors.surface};
2865
+ border: 1px solid ${_chunkUFCWGUAGjs.colors.border};
2607
2866
  border-radius: 6px;
2608
2867
  cursor: pointer;
2609
2868
  transition: all 0.15s ease;
@@ -2612,14 +2871,14 @@ var styles7 = {
2612
2871
  justify-content: center;
2613
2872
 
2614
2873
  &:hover {
2615
- background-color: ${_chunkZLL7JHVCjs.colors.surfaceHover};
2616
- border-color: ${_chunkZLL7JHVCjs.colors.borderHover};
2874
+ background-color: ${_chunkUFCWGUAGjs.colors.surfaceHover};
2875
+ border-color: ${_chunkUFCWGUAGjs.colors.borderHover};
2617
2876
  }
2618
2877
  `,
2619
2878
  headerIcon: _react3.css`
2620
2879
  width: 16px;
2621
2880
  height: 16px;
2622
- color: ${_chunkZLL7JHVCjs.colors.textSecondary};
2881
+ color: ${_chunkUFCWGUAGjs.colors.textSecondary};
2623
2882
  `,
2624
2883
  content: _react3.css`
2625
2884
  flex: 1;
@@ -2639,7 +2898,7 @@ var styles7 = {
2639
2898
  right: 0;
2640
2899
  bottom: 0;
2641
2900
  background: rgba(99, 91, 255, 0.1);
2642
- border: 3px dashed ${_chunkZLL7JHVCjs.colors.primary};
2901
+ border: 3px dashed ${_chunkUFCWGUAGjs.colors.primary};
2643
2902
  border-radius: 8px;
2644
2903
  display: flex;
2645
2904
  align-items: center;
@@ -2652,8 +2911,8 @@ var styles7 = {
2652
2911
  flex-direction: column;
2653
2912
  align-items: center;
2654
2913
  gap: 12px;
2655
- color: ${_chunkZLL7JHVCjs.colors.primary};
2656
- font-size: ${_chunkZLL7JHVCjs.fontSize.lg};
2914
+ color: ${_chunkUFCWGUAGjs.colors.primary};
2915
+ font-size: ${_chunkUFCWGUAGjs.fontSize.lg};
2657
2916
  font-weight: 600;
2658
2917
  `,
2659
2918
  dropIcon: _react3.css`
@@ -2864,4 +3123,4 @@ var StudioUI_default = StudioUI;
2864
3123
 
2865
3124
 
2866
3125
  exports.StudioUI = StudioUI; exports.default = StudioUI_default;
2867
- //# sourceMappingURL=StudioUI-V4IRLVOZ.js.map
3126
+ //# sourceMappingURL=StudioUI-JYVMD7QS.js.map