@dfosco/storyboard-react 4.0.0-beta.4 → 4.0.0-beta.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.
Files changed (63) hide show
  1. package/package.json +9 -4
  2. package/src/Icon.jsx +179 -0
  3. package/src/Viewfinder.jsx +1030 -57
  4. package/src/Viewfinder.module.css +1524 -155
  5. package/src/canvas/CanvasControls.jsx +51 -2
  6. package/src/canvas/CanvasControls.module.css +31 -0
  7. package/src/canvas/CanvasPage.bridge.test.jsx +95 -10
  8. package/src/canvas/CanvasPage.dragdrop.test.jsx +346 -0
  9. package/src/canvas/CanvasPage.jsx +843 -301
  10. package/src/canvas/CanvasPage.module.css +73 -50
  11. package/src/canvas/CanvasPage.multiselect.test.jsx +13 -11
  12. package/src/canvas/CanvasToolbar.jsx +2 -2
  13. package/src/canvas/ComponentErrorBoundary.jsx +50 -0
  14. package/src/canvas/PageSelector.jsx +198 -0
  15. package/src/canvas/PageSelector.module.css +158 -0
  16. package/src/canvas/PageSelector.test.jsx +104 -0
  17. package/src/canvas/canvasApi.js +22 -8
  18. package/src/canvas/canvasReloadGuard.js +37 -0
  19. package/src/canvas/canvasReloadGuard.test.js +27 -0
  20. package/src/canvas/componentIsolate.jsx +135 -0
  21. package/src/canvas/useCanvas.js +15 -10
  22. package/src/canvas/widgets/CodePenEmbed.jsx +292 -0
  23. package/src/canvas/widgets/CodePenEmbed.module.css +161 -0
  24. package/src/canvas/widgets/ComponentWidget.jsx +82 -9
  25. package/src/canvas/widgets/ComponentWidget.module.css +14 -6
  26. package/src/canvas/widgets/FigmaEmbed.jsx +110 -24
  27. package/src/canvas/widgets/FigmaEmbed.module.css +21 -7
  28. package/src/canvas/widgets/LinkPreview.jsx +297 -11
  29. package/src/canvas/widgets/LinkPreview.module.css +386 -18
  30. package/src/canvas/widgets/LinkPreview.test.jsx +193 -0
  31. package/src/canvas/widgets/MarkdownBlock.jsx +95 -21
  32. package/src/canvas/widgets/MarkdownBlock.module.css +133 -2
  33. package/src/canvas/widgets/MarkdownBlock.test.jsx +39 -0
  34. package/src/canvas/widgets/PrototypeEmbed.jsx +95 -144
  35. package/src/canvas/widgets/PrototypeEmbed.module.css +74 -4
  36. package/src/canvas/widgets/StickyNote.module.css +5 -0
  37. package/src/canvas/widgets/StickyNote.test.jsx +9 -9
  38. package/src/canvas/widgets/StoryWidget.jsx +276 -0
  39. package/src/canvas/widgets/StoryWidget.module.css +211 -0
  40. package/src/canvas/widgets/WidgetChrome.jsx +76 -20
  41. package/src/canvas/widgets/WidgetChrome.module.css +4 -7
  42. package/src/canvas/widgets/WidgetWrapper.module.css +2 -0
  43. package/src/canvas/widgets/codepenUrl.js +75 -0
  44. package/src/canvas/widgets/codepenUrl.test.js +76 -0
  45. package/src/canvas/widgets/embedInteraction.test.jsx +235 -0
  46. package/src/canvas/widgets/embedOverlay.module.css +35 -0
  47. package/src/canvas/widgets/embedTheme.js +56 -0
  48. package/src/canvas/widgets/githubUrl.js +82 -0
  49. package/src/canvas/widgets/githubUrl.test.js +74 -0
  50. package/src/canvas/widgets/iframeDevLogs.js +49 -0
  51. package/src/canvas/widgets/iframeDevLogs.test.jsx +81 -0
  52. package/src/canvas/widgets/index.js +4 -0
  53. package/src/canvas/widgets/pasteRules.js +295 -0
  54. package/src/canvas/widgets/pasteRules.test.js +474 -0
  55. package/src/canvas/widgets/snapshotDisplay.test.jsx +259 -0
  56. package/src/canvas/widgets/widgetConfig.js +16 -5
  57. package/src/canvas/widgets/widgetConfig.test.js +34 -12
  58. package/src/context.jsx +141 -16
  59. package/src/hooks/useSceneData.js +4 -2
  60. package/src/story/StoryPage.jsx +117 -0
  61. package/src/story/StoryPage.module.css +18 -0
  62. package/src/vite/data-plugin.js +375 -57
  63. package/src/vite/data-plugin.test.js +405 -5
@@ -1,235 +1,1604 @@
1
- .container {
2
- min-height: 100vh;
3
- background-color: var(--bgColor-default, #0d1117);
4
- color: var(--fgColor-default, #e6edf3);
5
- padding: 80px 32px 48px;
1
+ /* Viewfinder — SaaS-style homescreen layout */
2
+
3
+ .layout {
4
+ display: flex;
5
+ flex-direction: column;
6
+ height: calc(100vh - var(--sb-branch-bar-height, 0px));
7
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
8
+ color: #1a1a1a;
9
+ background: #fafafa;
10
+ }
11
+
12
+ /* ─── Full-width header ─── */
13
+
14
+ .topBar {
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: space-between;
18
+ padding: 16px 24px;
19
+ border-bottom: 1px solid #e5e5e5;
20
+ background: #fff;
21
+ flex-shrink: 0;
22
+ }
23
+
24
+ .topBarLeft {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 12px;
28
+ }
29
+
30
+ .logo {
31
+ width: 48px;
32
+ height: 48px;
33
+ background: #313131;
34
+ border-radius: 8px;
35
+ transform: rotate(-1deg);
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ color: #fff;
40
+ flex-shrink: 0;
41
+ }
42
+
43
+ .appName {
44
+ font-size: 24px;
45
+ /* font-style: italic; */
46
+ font-weight: 900;
47
+ color: #1a1a1a;
48
+ line-height: 1.1;
49
+ }
50
+
51
+ .appSubtitle {
52
+ font-size: 16px;
53
+ color: #888;
54
+ line-height: 1.3;
55
+ margin-top: 4px;
56
+ }
57
+
58
+ .topActions {
59
+ display: flex;
60
+ align-items: center;
61
+ gap: 8px;
62
+ }
63
+
64
+ .createBtn {
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 6px;
68
+ padding: 8px 20px;
69
+ background: #1a1a1a;
70
+ color: #fff;
71
+ border: none;
72
+ border-radius: 8px;
73
+ font-size: 16px;
74
+ font-weight: 500;
75
+ cursor: pointer;
76
+ transition: background 0.15s;
77
+ }
78
+
79
+ .createBtn:hover {
80
+ background: #333;
81
+ }
82
+
83
+ /* Branch dropdown */
84
+
85
+ .branchBtn {
86
+ display: flex;
87
+ align-items: center;
88
+ gap: 6px;
89
+ padding: 7px 14px;
90
+ background: #fff;
91
+ color: #555;
92
+ border: 1px solid #e5e5e5;
93
+ border-radius: 8px;
94
+ font-size: 16px;
95
+ font-weight: 500;
96
+ cursor: pointer;
97
+ transition: all 0.15s;
98
+ font-family: inherit;
99
+ }
100
+
101
+ .branchBtn:hover {
102
+ background: #f5f5f5;
103
+ border-color: #ccc;
104
+ }
105
+
106
+ .branchBtnText {
107
+ max-width: 160px;
108
+ overflow: hidden;
109
+ text-overflow: ellipsis;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .branchPositioner {
114
+ z-index: 200;
115
+ }
116
+
117
+ .branchPopup {
118
+ background: #fff;
119
+ border: 1px solid #e5e5e5;
120
+ border-radius: 10px;
121
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
122
+ min-width: 240px;
123
+ max-width: 320px;
124
+ padding: 6px 0;
125
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
126
+ }
127
+
128
+ .branchSectionLabel {
129
+ padding: 8px 14px 4px;
130
+ font-size: 14px;
131
+ font-weight: 600;
132
+ color: #999;
133
+ text-transform: uppercase;
134
+ letter-spacing: 0.4px;
135
+ }
136
+
137
+ .branchItem {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 8px;
141
+ padding: 7px 14px;
142
+ font-size: 16px;
143
+ color: #555;
144
+ cursor: pointer;
145
+ transition: background 0.1s;
146
+ border: none;
147
+ background: none;
148
+ width: 100%;
149
+ text-align: left;
150
+ }
151
+
152
+ .branchItem:hover,
153
+ .branchItem[data-highlighted] {
154
+ background: #f5f5f5;
155
+ }
156
+
157
+ .branchItemActive {
158
+ composes: branchItem;
159
+ color: #1a1a1a;
160
+ font-weight: 600;
161
+ }
162
+
163
+ .branchSeparator {
164
+ height: 1px;
165
+ background: #e5e5e5;
166
+ margin: 4px 10px;
167
+ }
168
+
169
+ .branchViewport {
170
+ max-height: 280px;
171
+ overflow-y: auto;
172
+ }
173
+
174
+ .branchShowAll {
175
+ display: block;
176
+ width: 100%;
177
+ padding: 8px 14px;
178
+ font-size: 16px;
179
+ color: #2563eb;
180
+ background: none;
181
+ border: none;
182
+ cursor: pointer;
183
+ text-align: left;
184
+ font-family: inherit;
185
+ }
186
+
187
+ .branchShowAll:hover {
188
+ background: #f5f5f5;
189
+ }
190
+
191
+ /* ─── Body: sidebar + content ─── */
192
+
193
+ .body {
194
+ display: flex;
195
+ flex: 1;
196
+ overflow: hidden;
197
+ }
198
+
199
+ /* ─── Sidebar ─── */
200
+
201
+ .sidebar {
202
+ width: 260px;
203
+ min-width: 220px;
204
+ background: #fff;
205
+ border-right: 1px solid #e5e5e5;
206
+ display: flex;
207
+ flex-direction: column;
208
+ padding: 0;
209
+ overflow: hidden;
210
+ }
211
+
212
+ .sidebarContent {
213
+ flex: 1;
214
+ overflow-y: auto;
215
+ }
216
+
217
+ /* Nav items */
218
+
219
+ .navSection {
220
+ padding: 12px 8px 4px;
221
+ }
222
+
223
+ .navItem {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: 10px;
227
+ padding: 7px 12px;
228
+ border-radius: 6px;
229
+ font-size: 16px;
230
+ font-weight: 500;
231
+ color: #555;
232
+ cursor: pointer;
233
+ border: none;
234
+ background: none;
235
+ width: 100%;
236
+ text-align: left;
237
+ transition: background 0.1s;
238
+ }
239
+
240
+ .navItem:hover {
241
+ background: #f5f5f5;
242
+ }
243
+
244
+ .navItemActive {
245
+ composes: navItem;
246
+ background: #f0f0f0;
247
+ color: #1a1a1a;
248
+ font-weight: 600;
249
+ }
250
+
251
+ .navIcon {
252
+ width: 18px;
253
+ height: 18px;
254
+ display: flex;
255
+ align-items: center;
256
+ justify-content: center;
257
+ opacity: 0.6;
258
+ font-size: 16px;
259
+ }
260
+
261
+ .navItemActive .navIcon {
262
+ opacity: 1;
263
+ }
264
+
265
+ .navCount {
266
+ margin-left: auto;
267
+ font-size: 14px;
268
+ color: #aaa;
269
+ font-weight: 500;
270
+ }
271
+
272
+ /* Separator */
273
+
274
+ .separator {
275
+ height: 1px;
276
+ background: #e5e5e5;
277
+ margin: 8px 16px;
278
+ }
279
+
280
+ /* Starred section */
281
+
282
+ .sectionLabel {
283
+ padding: 8px 20px 4px;
284
+ font-size: 14px;
285
+ font-weight: 600;
286
+ color: #999;
287
+ text-transform: uppercase;
288
+ letter-spacing: 0.5px;
289
+ }
290
+
291
+ .starredItem {
292
+ display: flex;
293
+ align-items: center;
294
+ gap: 8px;
295
+ padding: 6px 20px;
296
+ font-size: 16px;
297
+ color: #555;
298
+ cursor: pointer;
299
+ transition: background 0.1s;
300
+ text-decoration: none;
301
+ }
302
+
303
+ .starredItem:link,
304
+ .starredItem:visited {
305
+ color: #555;
306
+ text-decoration: none;
307
+ }
308
+
309
+ .starredItem:hover {
310
+ background: #f5f5f5;
311
+ }
312
+
313
+ .starredEmpty {
314
+ padding: 6px 20px;
315
+ font-size: 14px;
316
+ color: #bbb;
317
+ font-style: italic;
318
+ }
319
+
320
+ .starredIcon {
321
+ width: 16px;
322
+ height: 16px;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ flex-shrink: 0;
327
+ opacity: 0.5;
328
+ }
329
+
330
+ /* Sidebar footer */
331
+
332
+ .sidebarFooter {
333
+ flex-shrink: 0;
334
+ border-top: 1px solid #e5e5e5;
335
+ padding: 12px;
336
+ }
337
+
338
+ .avatar {
339
+ width: 32px;
340
+ height: 32px;
341
+ border-radius: 50%;
342
+ background: #f0f0f0;
343
+ display: flex;
344
+ align-items: center;
345
+ justify-content: center;
346
+ font-size: 16px;
347
+ color: #888;
348
+ flex-shrink: 0;
349
+ }
350
+
351
+ .userName {
352
+ font-size: 16px;
353
+ font-weight: 500;
354
+ color: #1a1a1a;
355
+ }
356
+
357
+ .userSub {
358
+ font-size: 14px;
359
+ color: #999;
360
+ }
361
+
362
+ .loginBtn {
363
+ display: flex;
364
+ align-items: center;
365
+ gap: 10px;
366
+ width: 100%;
367
+ padding: 8px 10px;
368
+ background: none;
369
+ border: 1px solid #e5e5e5;
370
+ border-radius: 8px;
371
+ font-size: 16px;
372
+ color: #555;
373
+ cursor: pointer;
374
+ transition: all 0.15s;
375
+ text-align: left;
376
+ }
377
+
378
+ .loginBtn:hover {
379
+ background: #f5f5f5;
380
+ border-color: #ccc;
381
+ }
382
+
383
+ /* ─── Main Content ─── */
384
+
385
+ .main {
386
+ flex: 1;
387
+ display: flex;
388
+ flex-direction: column;
389
+ overflow-y: auto;
390
+ }
391
+
392
+ /* Tabs */
393
+
394
+ .tabs {
395
+ display: flex;
396
+ align-items: center;
397
+ gap: 0;
398
+ padding: 0 32px;
399
+ background: #fff;
400
+ border-bottom: 1px solid #e5e5e5;
401
+ }
402
+
403
+ .tab {
404
+ padding: 11px 16px;
405
+ font-size: 16px;
406
+ font-weight: 500;
407
+ color: #888;
408
+ border: none;
409
+ background: none;
410
+ cursor: pointer;
411
+ border-bottom: 2px solid transparent;
412
+ transition: all 0.15s;
413
+ }
414
+
415
+ .tab:hover {
416
+ color: #1a1a1a;
417
+ }
418
+
419
+ .tabActive {
420
+ composes: tab;
421
+ color: #1a1a1a;
422
+ border-bottom-color: #1a1a1a;
423
+ font-weight: 600;
424
+ }
425
+
426
+ /* Grid */
427
+
428
+ .content {
429
+ padding: 24px 32px;
430
+ flex: 1;
431
+ }
432
+
433
+ .grid {
434
+ display: grid;
435
+ grid-template-columns: repeat(4, 1fr);
436
+ gap: 16px;
437
+ }
438
+
439
+ .emptyState {
440
+ padding: 48px 0;
441
+ text-align: center;
442
+ font-size: 16px;
443
+ color: #999;
444
+ }
445
+
446
+ /* Card */
447
+
448
+ .card {
449
+ background: #fff;
450
+ border: 1px solid #e5e5e5;
451
+ border-radius: 10px;
452
+ overflow: hidden;
453
+ cursor: pointer;
454
+ transition: all 0.15s;
455
+ text-decoration: none !important;
456
+ color: inherit;
457
+ display: block;
458
+ }
459
+
460
+ .card:hover {
461
+ border-color: #ccc;
462
+ box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06);
463
+ text-decoration: none !important;
464
+ }
465
+
466
+ .card:visited,
467
+ .card:focus,
468
+ .card:active,
469
+ .card:link {
470
+ text-decoration: none !important;
471
+ color: inherit;
472
+ }
473
+
474
+ .cardThumb {
475
+ height: 140px;
476
+ background: #f5f5f5;
477
+ display: flex;
478
+ align-items: flex-start;
479
+ justify-content: space-between;
480
+ position: relative;
481
+ padding: 10px;
482
+ }
483
+
484
+ .cardBadge {
485
+ padding: 3px 8px;
486
+ border-radius: 4px;
487
+ font-size: 12px;
488
+ font-weight: 600;
489
+ text-transform: uppercase;
490
+ letter-spacing: 0.3px;
491
+ background: rgba(0,0,0,0.06);
492
+ color: #555;
493
+ }
494
+
495
+ /* Icon buttons (star, flows, etc.) */
496
+
497
+ .iconBtn {
498
+ display: flex;
499
+ align-items: center;
500
+ justify-content: center;
501
+ width: 32px;
502
+ height: 32px;
503
+ border-radius: 6px;
504
+ border: none;
505
+ background: none;
506
+ cursor: pointer;
507
+ color: #bbb;
508
+ transition: all 0.15s;
509
+ }
510
+
511
+ .iconBtn:hover {
512
+ background: rgba(0, 0, 0, 0.06);
513
+ color: #555;
514
+ }
515
+
516
+ .iconBtnActive {
517
+ composes: iconBtn;
518
+ color: #f59e0b;
519
+ }
520
+
521
+ .iconBtnActive:hover {
522
+ background: rgba(0, 0, 0, 0.06);
523
+ color: #d97706;
524
+ }
525
+
526
+ .cardActions {
527
+ display: flex;
528
+ align-items: center;
529
+ gap: 2px;
530
+ }
531
+
532
+ .cardBody {
533
+ padding: 12px 14px;
534
+ display: flex;
535
+ align-items: flex-start;
536
+ gap: 8px;
537
+ }
538
+
539
+ .cardBodyContent {
540
+ flex: 1;
541
+ min-width: 0;
542
+ }
543
+
544
+ .cardTitle {
545
+ font-size: 16px;
546
+ font-weight: 600;
547
+ color: #1a1a1a;
548
+ margin-bottom: 4px;
549
+ white-space: nowrap;
550
+ overflow: hidden;
551
+ text-overflow: ellipsis;
552
+ text-decoration: none;
553
+ }
554
+
555
+ .cardMeta {
556
+ display: flex;
557
+ align-items: center;
558
+ gap: 6px;
559
+ font-size: 14px;
560
+ color: #aaa;
561
+ text-decoration: none;
562
+ }
563
+
564
+ .cardMetaDot {
565
+ width: 3px;
566
+ height: 3px;
567
+ border-radius: 50%;
568
+ background: #d1d5db;
569
+ }
570
+
571
+ /* Folder card */
572
+
573
+ .folderCard {
574
+ composes: card;
575
+ }
576
+
577
+ .folderThumb {
578
+ height: 140px;
579
+ background: #f0f4ff;
580
+ display: flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ color: #54aeff;
584
+ }
585
+
586
+ /* External badge */
587
+
588
+ .externalBadge {
589
+ display: inline-flex;
590
+ align-items: center;
591
+ gap: 3px;
592
+ margin-left: 6px;
593
+ font-size: 12px;
594
+ color: #999;
595
+ font-weight: 500;
596
+ }
597
+
598
+ /* Create menu overlay */
599
+
600
+ .createMenuOverlay {
601
+ position: fixed;
602
+ inset: 0;
603
+ background: rgba(0, 0, 0, 0.15);
604
+ z-index: 100;
605
+ display: flex;
606
+ align-items: center;
607
+ justify-content: center;
608
+ }
609
+
610
+ .createMenu {
611
+ background: #fff;
612
+ border-radius: 12px;
613
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
614
+ padding: 24px;
615
+ width: 360px;
616
+ max-width: 90vw;
617
+ }
618
+
619
+ .createMenuTitle {
620
+ font-size: 18px;
621
+ font-weight: 600;
622
+ margin-bottom: 16px;
623
+ color: #1a1a1a;
624
+ }
625
+
626
+ .createMenuGrid {
627
+ display: flex;
628
+ flex-direction: column;
629
+ gap: 8px;
630
+ }
631
+
632
+ .createMenuItem {
633
+ display: flex;
634
+ align-items: center;
635
+ gap: 12px;
636
+ padding: 12px 14px;
637
+ border: 1px solid #e5e5e5;
638
+ border-radius: 8px;
639
+ background: #fff;
640
+ cursor: pointer;
641
+ transition: all 0.15s;
642
+ text-align: left;
643
+ }
644
+
645
+ .createMenuItem:hover {
646
+ border-color: #ccc;
647
+ background: #fafafa;
648
+ }
649
+
650
+ .createMenuIcon {
651
+ width: 36px;
652
+ height: 36px;
653
+ border-radius: 8px;
654
+ display: flex;
655
+ align-items: center;
656
+ justify-content: center;
657
+ font-size: 24px;
658
+ flex-shrink: 0;
659
+ background: #f0f0f0;
660
+ color: #1a1a1a;
661
+ }
662
+
663
+ .createMenuItemTitle {
664
+ font-size: 16px;
665
+ font-weight: 600;
666
+ color: #1a1a1a;
667
+ }
668
+
669
+ .createMenuItemDesc {
670
+ font-size: 14px;
671
+ color: #999;
672
+ }
673
+
674
+ /* Create form styles */
675
+
676
+ .createFormField {
677
+ margin-bottom: 14px;
678
+ }
679
+
680
+ .createFormLabel {
681
+ font-size: 16px;
682
+ font-weight: 500;
683
+ margin-bottom: 4px;
684
+ display: block;
685
+ }
686
+
687
+ .createFormInput {
688
+ width: 100%;
689
+ padding: 8px 12px;
690
+ border: 1px solid #e5e5e5;
691
+ border-radius: 6px;
692
+ font-size: 16px;
693
+ box-sizing: border-box;
694
+ }
695
+
696
+ .createFormInput:focus {
697
+ outline: none;
698
+ border-color: #999;
699
+ }
700
+
701
+ .createFormCheckbox {
702
+ display: flex;
703
+ align-items: center;
704
+ gap: 8px;
705
+ font-size: 16px;
706
+ }
707
+
708
+ .createFormActions {
709
+ display: flex;
710
+ justify-content: flex-end;
711
+ gap: 8px;
712
+ margin-top: 16px;
713
+ }
714
+
715
+ .createFormBack {
716
+ display: flex;
717
+ align-items: center;
718
+ gap: 4px;
719
+ background: none;
720
+ border: none;
721
+ color: #888;
722
+ font-size: 16px;
723
+ cursor: pointer;
724
+ padding: 0;
725
+ margin-bottom: 12px;
726
+ }
727
+
728
+ .createFormBack:hover {
729
+ color: #1a1a1a;
730
+ }
731
+
732
+ .createFooter {
733
+ display: flex;
734
+ align-items: center;
735
+ gap: 8px;
736
+ margin-top: 16px;
737
+ padding-top: 12px;
738
+ border-top: 1px solid #e5e5e5;
739
+ }
740
+
741
+ .createFooterDot {
742
+ width: 8px;
743
+ height: 8px;
744
+ border-radius: 50%;
745
+ background: #2563eb;
746
+ flex-shrink: 0;
747
+ }
748
+
749
+ .createFooterText {
750
+ font-size: 14px;
751
+ color: #999;
752
+ }
753
+
754
+ .createFormError {
755
+ font-size: 14px;
756
+ color: #dc2626;
757
+ margin-top: 8px;
758
+ }
759
+
760
+ /* Muted thumbnail colors */
761
+ .thumbBlue { background: #f0f4f8; }
762
+ .thumbAmber { background: #faf5ee; }
763
+ .thumbGreen { background: #f0f7f4; }
764
+ .thumbPurple { background: #f5f0fa; }
765
+ .thumbRose { background: #faf0f2; }
766
+ .thumbSlate { background: #f3f4f6; }
767
+
768
+ /* Group by folders checkbox */
769
+
770
+ .groupByFolders {
771
+ display: flex;
772
+ align-items: center;
773
+ gap: 6px;
774
+ margin-left: auto;
775
+ font-size: 16px;
776
+ color: #555;
777
+ cursor: pointer;
778
+ padding: 0 4px;
779
+ white-space: nowrap;
780
+ user-select: none;
781
+ }
782
+
783
+ .groupByFoldersCheckbox {
784
+ accent-color: #1a1a1a;
785
+ cursor: pointer;
786
+ }
787
+
788
+ /* Folder sections */
789
+
790
+ .folderSection {
791
+ margin-top: 24px;
792
+ }
793
+
794
+ .folderSection:first-child {
795
+ margin-top: 0;
796
+ }
797
+
798
+ .folderHeader {
799
+ display: flex;
800
+ align-items: center;
801
+ gap: 8px;
802
+ padding: 8px 0;
803
+ margin-bottom: 35px;
804
+ border: none;
805
+ background: none;
806
+ cursor: pointer;
807
+ font-size: 16px;
808
+ font-weight: 600;
809
+ color: #1a1a1a;
810
+ width: 100%;
811
+ text-align: left;
812
+ }
813
+
814
+ .folderHeader:hover {
815
+ color: #555;
816
+ }
817
+
818
+ .folderIcon {
819
+ color: #1a1a1a;
820
+ flex-shrink: 0;
821
+ }
822
+
823
+ .folderName {
824
+ flex: 1;
825
+ }
826
+
827
+ .folderCount {
828
+ font-size: 14px;
829
+ font-weight: 400;
830
+ color: #999;
831
+ }
832
+
833
+ .folderChevron {
834
+ color: #999;
835
+ transition: transform 0.2s;
836
+ }
837
+
838
+ .folderChevronExpanded {
839
+ composes: folderChevron;
840
+ transform: rotate(90deg);
841
+ }
842
+
843
+ /* Flows dropdown */
844
+
845
+ .flowsBtn {
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: center;
849
+ width: 24px;
850
+ height: 24px;
851
+ border-radius: 4px;
852
+ border: none;
853
+ background: none;
854
+ cursor: pointer;
855
+ color: #ccc;
856
+ flex-shrink: 0;
857
+ transition: all 0.15s;
858
+ margin-top: 1px;
859
+ }
860
+
861
+ .flowsBtn:hover {
862
+ background: #f0f0f0;
863
+ color: #555;
864
+ }
865
+
866
+ .flowsPositioner {
867
+ z-index: 200;
868
+ }
869
+
870
+ .flowsPopup {
871
+ background: #fff;
872
+ border: 1px solid #e5e5e5;
873
+ border-radius: 8px;
874
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
875
+ min-width: 160px;
876
+ padding: 4px 0;
877
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
878
+ }
879
+
880
+ .flowsTitle {
881
+ padding: 6px 12px 4px;
882
+ font-size: 14px;
883
+ font-weight: 600;
884
+ color: #999;
885
+ text-transform: uppercase;
886
+ letter-spacing: 0.4px;
887
+ }
888
+
889
+ .flowsItem {
890
+ display: block;
891
+ width: 100%;
892
+ padding: 6px 12px;
893
+ font-size: 16px;
894
+ color: #555;
895
+ cursor: pointer;
896
+ border: none;
897
+ background: none;
898
+ text-align: left;
899
+ transition: background 0.1s;
900
+ text-decoration: none;
6
901
  }
7
902
 
8
- .header {
9
- max-width: 720px;
10
- margin: 0 auto 64px;
903
+ .flowsItem:hover,
904
+ .flowsItem[data-highlighted] {
905
+ background: #f5f5f5;
906
+ color: #1a1a1a;
11
907
  }
12
908
 
13
- .title {
14
- font-size: 72px;
15
- font-weight: 400;
16
- margin: 0 0 12px;
17
- color: var(--fgColor-default, #e6edf3);
18
- letter-spacing: -0.03em;
19
- line-height: 1;
909
+ /* Group by folders checkbox */
910
+
911
+ .groupByFolders {
912
+ display: flex;
913
+ align-items: center;
914
+ gap: 6px;
915
+ margin-left: auto;
916
+ font-size: 16px;
917
+ color: #555;
918
+ cursor: pointer;
919
+ padding: 0 4px;
920
+ white-space: nowrap;
921
+ user-select: none;
20
922
  }
21
923
 
22
- .subtitle {
23
- font-size: 15px;
24
- color: var(--fgColor-muted, #848d97);
25
- margin: 4px 0 0;
26
- letter-spacing: 0.01em;
924
+ .groupByFoldersCheckbox {
925
+ accent-color: #1a1a1a;
926
+ cursor: pointer;
27
927
  }
28
928
 
29
- .sceneCount {
30
- font-size: 13px;
31
- color: var(--fgColor-muted, #848d97);
32
- margin: 16px 0 0;
33
- letter-spacing: 0.01em;
929
+ /* Folder sections */
930
+
931
+ .folderSection {
932
+ margin-top: 24px;
34
933
  }
35
934
 
36
- .grid {
37
- display: grid;
38
- grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
39
- gap: 16px;
40
- max-width: 720px;
41
- margin: 0 auto;
935
+ .folderSection:first-child {
936
+ margin-top: 0;
42
937
  }
43
938
 
44
- .list {
939
+ .folderHeader {
45
940
  display: flex;
46
- flex-direction: column;
47
- max-width: 720px;
48
- margin: 0 auto;
941
+ align-items: center;
942
+ gap: 8px;
943
+ padding: 8px 0;
944
+ margin-bottom: 12px;
945
+ border: none;
946
+ background: none;
947
+ cursor: pointer;
948
+ font-size: 16px;
949
+ font-weight: 600;
950
+ color: #1a1a1a;
951
+ width: 100%;
952
+ text-align: left;
953
+ }
954
+
955
+ .folderHeader:hover {
956
+ color: #555;
957
+ }
958
+
959
+ .folderIcon {
960
+ color: #1a1a1a;
961
+ flex-shrink: 0;
962
+ }
963
+
964
+ .folderName {
965
+ flex: 1;
966
+ }
967
+
968
+ .folderCount {
969
+ font-size: 14px;
970
+ font-weight: 400;
971
+ color: #999;
972
+ }
973
+
974
+ .folderChevron {
975
+ color: #999;
976
+ transition: transform 0.2s;
977
+ }
978
+
979
+ .folderChevronExpanded {
980
+ composes: folderChevron;
981
+ transform: rotate(90deg);
982
+ }
983
+
984
+ /* Flows dropdown */
985
+
986
+ .flowsBtn {
987
+ display: flex;
988
+ align-items: center;
989
+ justify-content: center;
990
+ width: 24px;
991
+ height: 24px;
992
+ border-radius: 4px;
993
+ border: none;
994
+ background: none;
995
+ cursor: pointer;
996
+ color: #ccc;
997
+ flex-shrink: 0;
998
+ transition: all 0.15s;
999
+ margin-top: 1px;
1000
+ }
1001
+
1002
+ .flowsBtn:hover {
1003
+ background: #f0f0f0;
1004
+ color: #555;
1005
+ }
1006
+
1007
+ .flowsPositioner {
1008
+ z-index: 200;
1009
+ }
1010
+
1011
+ .flowsPopup {
1012
+ background: #fff;
1013
+ border: 1px solid #e5e5e5;
1014
+ border-radius: 8px;
1015
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
1016
+ min-width: 160px;
1017
+ padding: 4px 0;
1018
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
1019
+ }
1020
+
1021
+ .flowsTitle {
1022
+ padding: 6px 12px 4px;
1023
+ font-size: 14px;
1024
+ font-weight: 600;
1025
+ color: #999;
1026
+ text-transform: uppercase;
1027
+ letter-spacing: 0.4px;
49
1028
  }
50
1029
 
51
- .listItem {
1030
+ .flowsItem {
52
1031
  display: block;
53
- padding: 8px 0;
1032
+ width: 100%;
1033
+ padding: 6px 12px;
1034
+ font-size: 16px;
1035
+ color: #555;
1036
+ cursor: pointer;
1037
+ border: none;
1038
+ background: none;
1039
+ text-align: left;
1040
+ transition: background 0.1s;
54
1041
  text-decoration: none;
55
- color: inherit;
56
- /* border-bottom: 1px solid var(--borderColor-muted, #21262d); */
57
1042
  }
58
1043
 
59
- .listItem:first-child {
60
- /* border-top: 1px solid var(--borderColor-muted, #21262d); */
1044
+ .flowsItem:hover,
1045
+ .flowsItem[data-highlighted] {
1046
+ background: #f5f5f5;
1047
+ color: #1a1a1a;
61
1048
  }
62
1049
 
63
- .listItem:hover {
64
- text-decoration: none !important;
1050
+ /* Avatar stack */
1051
+
1052
+ .avatarStack {
1053
+ display: flex;
1054
+ flex-direction: row-reverse;
1055
+ justify-content: flex-end;
1056
+ }
1057
+
1058
+ .avatarStack > .avatarImg + .avatarImg {
1059
+ margin-right: -8px;
1060
+ }
1061
+
1062
+ .avatarImg {
1063
+ width: 24px;
1064
+ height: 24px;
1065
+ border-radius: 50%;
1066
+ border: 2px solid #fff;
1067
+ object-fit: cover;
1068
+ flex-shrink: 0;
1069
+ }
1070
+
1071
+ /* Text-only card header */
1072
+
1073
+ .cardHeader {
1074
+ display: flex;
1075
+ align-items: center;
1076
+ justify-content: space-between;
1077
+ padding: 12px 14px 0;
65
1078
  }
66
1079
 
67
- .listItem .author {
1080
+ .cardDescription {
1081
+ font-size: 14px;
1082
+ color: #666;
1083
+ line-height: 1.5;
1084
+ display: -webkit-box;
1085
+ -webkit-line-clamp: 2;
1086
+ -webkit-box-orient: vertical;
1087
+ overflow: hidden;
1088
+ margin-top: 4px;
1089
+ }
1090
+
1091
+ .cardFooter {
1092
+ display: flex;
1093
+ align-items: center;
1094
+ gap: 8px;
68
1095
  margin-top: 8px;
69
1096
  }
70
1097
 
71
- .card {
1098
+ /* Create dropdown (replaces modal) */
1099
+
1100
+ .createDropdownPositioner {
1101
+ z-index: 200;
1102
+ }
1103
+
1104
+ .createDropdown {
1105
+ background: #fff;
1106
+ border: 1px solid #e5e5e5;
1107
+ border-radius: 12px;
1108
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
1109
+ padding: 16px;
1110
+ width: 360px;
1111
+ max-width: 90vw;
1112
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
1113
+ }
1114
+
1115
+ .createDropdownTitle {
1116
+ font-size: 16px;
1117
+ font-weight: 600;
1118
+ margin-bottom: 12px;
1119
+ color: #1a1a1a;
1120
+ }
1121
+
1122
+ .createDropdownGrid {
1123
+ display: flex;
1124
+ flex-direction: column;
1125
+ gap: 6px;
1126
+ }
1127
+
1128
+ .createDropdownForm {
1129
+ /* Wrapper for inline form inside dropdown */
1130
+ }
1131
+
1132
+ /* More options */
1133
+
1134
+ .moreOptionsBtn {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ gap: 4px;
1138
+ background: none;
1139
+ border: none;
1140
+ color: #666;
1141
+ font-size: 14px;
1142
+ font-weight: 500;
1143
+ cursor: pointer;
1144
+ padding: 8px 0 4px;
1145
+ margin-top: 8px;
1146
+ transition: color 0.15s;
1147
+ }
1148
+
1149
+ .moreOptionsBtn:hover {
1150
+ color: #1a1a1a;
1151
+ }
1152
+
1153
+ .moreOptionsSection {
1154
+ margin-top: 8px;
1155
+ display: flex;
1156
+ flex-direction: column;
1157
+ gap: 4px;
1158
+ padding-top: 8px;
1159
+ border-top: 1px solid #eee;
1160
+ }
1161
+
1162
+ .moreOptionItem {
72
1163
  display: block;
73
- border: 1px solid var(--borderColor-default, #30363d);
74
- border-radius: 8px;
75
- overflow: hidden;
76
- background: var(--bgColor-muted, #161b22);
77
- text-decoration: none;
78
- color: inherit;
79
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
1164
+ width: 100%;
1165
+ padding: 8px 10px;
1166
+ border: none;
1167
+ background: none;
1168
+ border-radius: 6px;
1169
+ cursor: pointer;
1170
+ text-align: left;
1171
+ transition: background 0.1s;
80
1172
  }
81
1173
 
82
- .card:hover {
83
- border-color: var(--borderColor-accent-emphasis, #1f6feb);
84
- box-shadow: 0 0 0 1px var(--borderColor-accent-emphasis, #1f6feb);
85
- text-decoration: none !important;
1174
+ .moreOptionItem:hover {
1175
+ background: #f5f5f5;
1176
+ }
1177
+
1178
+ .moreOptionTitle {
1179
+ font-size: 14px;
1180
+ font-weight: 600;
1181
+ color: #1a1a1a;
86
1182
  }
87
1183
 
88
- .thumbnail {
89
- aspect-ratio: 16 / 10;
1184
+ .moreOptionDesc {
1185
+ font-size: 14px;
1186
+ color: #999;
1187
+ }
1188
+
1189
+ /* Create tip */
1190
+
1191
+ .createTip {
1192
+ margin-top: 12px;
1193
+ padding-top: 10px;
1194
+ border-top: 1px solid #eee;
1195
+ }
1196
+
1197
+ .createTipText {
1198
+ font-size: 14px;
1199
+ color: #999;
1200
+ line-height: 1.5;
1201
+ }
1202
+
1203
+ .createTipCode {
1204
+ font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
1205
+ font-size: 12px;
1206
+ background: #f0f0f0;
1207
+ padding: 1px 5px;
1208
+ border-radius: 3px;
1209
+ color: #555;
1210
+ }
1211
+
1212
+ /* Group by folders checkbox */
1213
+
1214
+ .groupByFolders {
90
1215
  display: flex;
91
1216
  align-items: center;
92
- justify-content: center;
93
- overflow: hidden;
94
- background: var(--bgColor-inset, #010409);
1217
+ gap: 6px;
1218
+ margin-left: auto;
1219
+ font-size: 14px;
1220
+ color: #555;
1221
+ cursor: pointer;
1222
+ padding: 0 4px;
1223
+ white-space: nowrap;
1224
+ user-select: none;
1225
+ }
1226
+
1227
+ .groupByFoldersCheckbox {
1228
+ accent-color: #1a1a1a;
1229
+ cursor: pointer;
1230
+ }
1231
+
1232
+ /* Folder sections */
1233
+
1234
+ .folderSection {
1235
+ padding-bottom: 24px;
1236
+ margin-bottom: 24px;
1237
+ border-bottom: 1px solid #e5e5e5;
1238
+ }
95
1239
 
96
- --placeholder-bg: var(--bgColor-inset, #010409);
97
- --placeholder-grid: var(--borderColor-default, #30363d);
98
- --placeholder-accent: var(--fgColor-accent, #58a6ff);
99
- --placeholder-fg: var(--fgColor-default, #c9d1d9);
100
- --placeholder-muted: var(--fgColor-muted, #484f58);
1240
+ .folderSectionCollapsed {
1241
+ composes: folderSection;
1242
+ padding-bottom: 0;
101
1243
  }
102
1244
 
103
- .thumbnail svg {
1245
+ .folderSection:last-child,
1246
+ .folderSectionCollapsed:last-child {
1247
+ border-bottom: none;
1248
+ margin-bottom: 0;
1249
+ }
1250
+
1251
+ .folderHeader {
1252
+ display: flex;
1253
+ align-items: center;
1254
+ gap: 8px;
1255
+ padding: 8px 0;
1256
+ margin-bottom: 16px;
1257
+ border: none;
1258
+ background: none;
1259
+ cursor: pointer;
1260
+ font-size: 16px;
1261
+ font-weight: 600;
1262
+ color: #1a1a1a;
104
1263
  width: 100%;
105
- height: 100%;
1264
+ text-align: left;
106
1265
  }
107
1266
 
108
- .cardBody {
109
- padding: 12px 16px;
1267
+ .folderHeader:hover {
1268
+ color: #555;
1269
+ }
110
1270
 
111
- &:hover {
112
- background-color: var(--bgColor-muted);
113
- }
1271
+ .folderIcon {
1272
+ color: #1a1a1a;
1273
+ flex-shrink: 0;
1274
+ }
1275
+
1276
+ .folderName {
1277
+ flex: 1;
114
1278
  }
115
1279
 
116
- .sceneName {
117
- font-size: 28px;
1280
+ .folderCount {
1281
+ font-size: 14px;
118
1282
  font-weight: 400;
119
- color: var(--fgColor-default, #e6edf3);
120
- margin: 0;
121
- letter-spacing: -0.02em;
122
- line-height: 1.2;
123
- transition: font-style 0.15s ease;
1283
+ color: #999;
124
1284
  }
125
1285
 
126
- .empty {
127
- text-align: center;
128
- padding: 80px 24px;
129
- color: var(--fgColor-muted, #848d97);
130
- font-size: 15px;
131
- max-width: 720px;
132
- margin: 0 auto;
1286
+ .folderChevron {
1287
+ color: #999;
1288
+ transition: transform 0.2s;
1289
+ }
1290
+
1291
+ .folderChevronExpanded {
1292
+ composes: folderChevron;
1293
+ transform: rotate(90deg);
1294
+ }
1295
+
1296
+ /* Flows dropdown */
1297
+
1298
+ .flowsBtn {
1299
+ display: flex;
1300
+ align-items: center;
1301
+ justify-content: center;
1302
+ width: 24px;
1303
+ height: 24px;
1304
+ border-radius: 4px;
1305
+ border: none;
1306
+ background: none;
1307
+ cursor: pointer;
1308
+ color: #ccc;
1309
+ flex-shrink: 0;
1310
+ transition: all 0.15s;
1311
+ margin-top: 1px;
1312
+ }
1313
+
1314
+ .flowsBtn:hover {
1315
+ background: #f0f0f0;
1316
+ color: #555;
1317
+ }
1318
+
1319
+ .flowsPositioner {
1320
+ z-index: 200;
133
1321
  }
134
1322
 
135
- .sectionTitle {
136
- font-size: 11px;
137
- font-weight: 700;
1323
+ .flowsPopup {
1324
+ background: #fff;
1325
+ border: 1px solid #e5e5e5;
1326
+ border-radius: 8px;
1327
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
1328
+ min-width: 180px;
1329
+ padding: 4px 0;
1330
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
1331
+ }
1332
+
1333
+ .flowsTitle {
1334
+ padding: 6px 12px 4px;
1335
+ font-size: 12px;
1336
+ font-weight: 600;
1337
+ color: #999;
138
1338
  text-transform: uppercase;
139
- letter-spacing: 0.12em;
140
- color: var(--fgColor-muted, #848d97);
141
- margin: 0 auto 20px;
142
- max-width: 720px;
1339
+ letter-spacing: 0.4px;
1340
+ }
1341
+
1342
+ .flowsItem {
1343
+ display: block;
1344
+ width: 100%;
1345
+ padding: 6px 12px;
1346
+ font-size: 14px;
1347
+ color: #555;
1348
+ cursor: pointer;
1349
+ border: none;
1350
+ background: none;
1351
+ text-align: left;
1352
+ transition: background 0.1s;
1353
+ text-decoration: none;
1354
+ }
1355
+
1356
+ .flowsItem:hover,
1357
+ .flowsItem[data-highlighted] {
1358
+ background: #f5f5f5;
1359
+ color: #1a1a1a;
143
1360
  }
144
1361
 
145
- .headerTop {
1362
+ /* Avatar stack */
1363
+
1364
+ .avatarStack {
146
1365
  display: flex;
147
- align-items: baseline;
148
- justify-content: space-between;
149
- gap: 16px;
1366
+ flex-direction: row-reverse;
1367
+ justify-content: flex-end;
1368
+ }
1369
+
1370
+ .avatarStack > .avatarImg + .avatarImg {
1371
+ margin-right: -8px;
150
1372
  }
151
1373
 
152
- .branchDropdown {
1374
+ .avatarImg {
1375
+ width: 24px;
1376
+ height: 24px;
1377
+ border-radius: 50%;
1378
+ border: 2px solid #fff;
1379
+ object-fit: cover;
1380
+ flex-shrink: 0;
1381
+ }
1382
+
1383
+ /* Text-only card header */
1384
+
1385
+ .cardHeader {
153
1386
  display: flex;
154
1387
  align-items: center;
155
- gap: 0;
156
- flex-shrink: 0;
157
- position: relative;
1388
+ justify-content: space-between;
1389
+ padding: 14px 16px 0;
158
1390
  }
159
1391
 
160
- .branchIcon {
161
- position: absolute;
162
- left: 10px;
163
- color: var(--fgColor-muted, #848d97);
164
- pointer-events: none;
165
- z-index: 1;
166
- }
167
-
168
- .branchSelect {
169
- appearance: none;
170
- background-color: transparent;
171
- color: var(--fgColor-default, #e6edf3);
172
- border: 1px solid var(--borderColor-default, #30363d);
173
- border-radius: 20px;
174
- padding: 6px 32px 6px 32px;
175
- font-size: 13px;
176
- font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
177
- cursor: pointer;
178
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23848d97'%3E%3Cpath d='M6 8.5L1.5 4h9L6 8.5z'/%3E%3C/svg%3E");
179
- background-repeat: no-repeat;
180
- background-position: right 12px center;
181
- min-width: 140px;
182
- max-width: 220px;
183
- text-overflow: ellipsis;
1392
+ .cardDescription {
1393
+ font-size: 14px;
1394
+ color: #666;
1395
+ line-height: 1.5;
1396
+ display: -webkit-box;
1397
+ -webkit-line-clamp: 2;
1398
+ -webkit-box-orient: vertical;
184
1399
  overflow: hidden;
185
- transition: border-color 0.15s ease;
1400
+ margin-top: 4px;
1401
+ }
1402
+
1403
+ .cardFooter {
1404
+ display: flex;
1405
+ align-items: center;
1406
+ gap: 8px;
1407
+ margin-top: 10px;
1408
+ }
1409
+
1410
+ /* Create dropdown (replaces modal) */
1411
+
1412
+ .createDropdownPositioner {
1413
+ z-index: 200;
1414
+ }
1415
+
1416
+ .createDropdown {
1417
+ background: #fff;
1418
+ border: 1px solid #e5e5e5;
1419
+ border-radius: 12px;
1420
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
1421
+ padding: 16px;
1422
+ width: 380px;
1423
+ max-width: 90vw;
1424
+ font-family: 'Mona Sans', -apple-system, BlinkMacSystemFont, sans-serif;
186
1425
  }
187
1426
 
188
- .branchSelect:hover {
189
- border-color: var(--fgColor-muted, #848d97);
1427
+ .createDropdownTitle {
1428
+ font-size: 16px;
1429
+ font-weight: 600;
1430
+ margin-bottom: 12px;
1431
+ color: #1a1a1a;
1432
+ }
1433
+
1434
+ .createDropdownGrid {
1435
+ display: flex;
1436
+ flex-direction: column;
1437
+ gap: 6px;
190
1438
  }
191
1439
 
192
- .branchSelect:focus-visible {
193
- outline: 2px solid var(--borderColor-accent-emphasis, #1f6feb);
194
- outline-offset: -1px;
1440
+ .createDropdownForm {
1441
+ /* Wrapper for inline form inside dropdown */
195
1442
  }
196
1443
 
197
- .author {
1444
+ /* More options */
1445
+
1446
+ .moreOptionsBtn {
198
1447
  display: flex;
199
1448
  align-items: center;
200
- gap: 8px;
201
- margin-top: 6px;
1449
+ gap: 4px;
1450
+ background: none;
1451
+ border: none;
1452
+ color: #666;
1453
+ font-size: 14px;
1454
+ font-weight: 500;
1455
+ cursor: pointer;
1456
+ padding: 8px 0 4px;
1457
+ margin-top: 8px;
1458
+ transition: color 0.15s;
202
1459
  }
203
1460
 
204
- .authorAvatars {
1461
+ .moreOptionsBtn:hover {
1462
+ color: #1a1a1a;
1463
+ }
1464
+
1465
+ .moreOptionsSection {
1466
+ margin-top: 8px;
205
1467
  display: flex;
206
- flex-direction: row;
1468
+ flex-direction: column;
1469
+ gap: 4px;
1470
+ padding-top: 8px;
1471
+ border-top: 1px solid #eee;
207
1472
  }
208
1473
 
209
- .authorAvatars:hover .authorAvatar {
210
- margin-left: 2px;
1474
+ .moreOptionItem {
1475
+ display: block;
1476
+ width: 100%;
1477
+ padding: 10px 12px;
1478
+ border: none;
1479
+ background: none;
1480
+ border-radius: 6px;
1481
+ cursor: pointer;
1482
+ text-align: left;
1483
+ transition: background 0.1s;
211
1484
  }
212
1485
 
213
- .authorAvatars:hover .authorAvatar:first-child {
214
- margin-left: 0;
1486
+ .moreOptionItem:hover {
1487
+ background: #f5f5f5;
215
1488
  }
216
1489
 
217
- .authorAvatar {
218
- width: 18px;
219
- height: 18px;
220
- border-radius: 50%;
221
- margin-left: -6px;
222
- transition: margin-left 0.15s ease;
223
- outline: 2px solid var(--bgColor-default, #0d1117);
224
- position: relative;
1490
+ .moreOptionTitle {
1491
+ font-size: 14px;
1492
+ font-weight: 600;
1493
+ color: #1a1a1a;
1494
+ }
1495
+
1496
+ .moreOptionDesc {
1497
+ font-size: 12px;
1498
+ color: #999;
1499
+ margin-top: 2px;
1500
+ }
1501
+
1502
+ /* Create tip */
1503
+
1504
+ .createTip {
1505
+ margin-top: 12px;
1506
+ padding-top: 10px;
1507
+ border-top: 1px solid #eee;
1508
+ }
1509
+
1510
+ .createTipText {
1511
+ font-size: 12px;
1512
+ color: #999;
1513
+ line-height: 1.5;
1514
+ }
1515
+
1516
+ .createTipCode {
1517
+ font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
1518
+ font-size: 12px;
1519
+ background: #f0f0f0;
1520
+ padding: 1px 5px;
1521
+ border-radius: 3px;
1522
+ color: #555;
225
1523
  }
226
1524
 
227
- .authorAvatar:first-child {
228
- margin-left: 0;
1525
+ /* Hamburger button — hidden on desktop */
1526
+
1527
+ .hamburgerBtn {
1528
+ display: none;
1529
+ align-items: center;
1530
+ justify-content: center;
1531
+ width: 36px;
1532
+ height: 36px;
1533
+ border-radius: 8px;
1534
+ border: none;
1535
+ background: none;
1536
+ cursor: pointer;
1537
+ color: #555;
1538
+ transition: background 0.15s;
1539
+ }
1540
+
1541
+ .hamburgerBtn:hover {
1542
+ background: #f0f0f0;
1543
+ }
1544
+
1545
+ /* ─── Responsive: cards wrap on smaller screens ─── */
1546
+
1547
+ @media (max-width: 1200px) {
1548
+ .grid {
1549
+ grid-template-columns: repeat(3, 1fr);
1550
+ }
1551
+ }
1552
+
1553
+ @media (max-width: 900px) {
1554
+ .grid {
1555
+ grid-template-columns: repeat(2, 1fr);
1556
+ }
229
1557
  }
230
1558
 
231
- .authorName {
232
- font-size: 13px;
233
- color: var(--fgColor-muted, #848d97);
234
- letter-spacing: 0.01em;
1559
+ /* ─── Responsive: sidebar collapses under 500px ─── */
1560
+
1561
+ @media (max-width: 500px) {
1562
+ .hamburgerBtn {
1563
+ display: flex;
1564
+ }
1565
+
1566
+ .sidebar {
1567
+ display: none;
1568
+ position: absolute;
1569
+ top: 0;
1570
+ left: 0;
1571
+ z-index: 100;
1572
+ width: 260px;
1573
+ height: 100%;
1574
+ box-shadow: 4px 0 16px rgba(0, 0, 0, 0.1);
1575
+ }
1576
+
1577
+ .sidebarOpen {
1578
+ display: flex;
1579
+ }
1580
+
1581
+ .body {
1582
+ position: relative;
1583
+ }
1584
+
1585
+ .grid {
1586
+ grid-template-columns: 1fr;
1587
+ }
1588
+
1589
+ .topBar {
1590
+ padding: 12px 16px;
1591
+ }
1592
+
1593
+ .content {
1594
+ padding: 16px;
1595
+ }
1596
+
1597
+ .tabs {
1598
+ padding: 0 16px;
1599
+ }
1600
+
1601
+ .groupByFolders {
1602
+ display: none;
1603
+ }
235
1604
  }