@vishu1301/script-writing 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -92,7 +92,7 @@ declare const CATEGORIES: {
92
92
  icon: ElementType;
93
93
  }[];
94
94
 
95
- declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, sceneNumber, tags, selectionMenu, handleMouseUp, addTag, updateTag, removeTag, clearSelection, menuPlacement, menuRef, sceneBrief, setSceneBrief, onSummarize, isSummarizing, aiSummarized, }: {
95
+ declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, sceneNumber, tags, selectionMenu, handleMouseUp, addTag, updateTag, removeTag, clearSelection, menuPlacement, menuRef, sceneBrief, setSceneBrief, onSummarize, isSummarizing, aiSummarized, onUpdateBrief, }: {
96
96
  blocks: Block[];
97
97
  characters: string[];
98
98
  isLoading: boolean;
@@ -118,6 +118,7 @@ declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, scene
118
118
  onSummarize?: () => void;
119
119
  isSummarizing?: boolean;
120
120
  aiSummarized?: boolean;
121
+ onUpdateBrief?: () => void;
121
122
  }): react_jsx_runtime.JSX.Element;
122
123
 
123
124
  interface UseScriptBreakdownSceneOptions {
package/dist/index.d.ts CHANGED
@@ -92,7 +92,7 @@ declare const CATEGORIES: {
92
92
  icon: ElementType;
93
93
  }[];
94
94
 
95
- declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, sceneNumber, tags, selectionMenu, handleMouseUp, addTag, updateTag, removeTag, clearSelection, menuPlacement, menuRef, sceneBrief, setSceneBrief, onSummarize, isSummarizing, aiSummarized, }: {
95
+ declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, sceneNumber, tags, selectionMenu, handleMouseUp, addTag, updateTag, removeTag, clearSelection, menuPlacement, menuRef, sceneBrief, setSceneBrief, onSummarize, isSummarizing, aiSummarized, onUpdateBrief, }: {
96
96
  blocks: Block[];
97
97
  characters: string[];
98
98
  isLoading: boolean;
@@ -118,6 +118,7 @@ declare function ScriptBreakdownSceneView({ blocks, characters, isLoading, scene
118
118
  onSummarize?: () => void;
119
119
  isSummarizing?: boolean;
120
120
  aiSummarized?: boolean;
121
+ onUpdateBrief?: () => void;
121
122
  }): react_jsx_runtime.JSX.Element;
122
123
 
123
124
  interface UseScriptBreakdownSceneOptions {
package/dist/index.js CHANGED
@@ -270,9 +270,9 @@ function PdfImporter({ onScriptImported, disabled, children }) {
270
270
  {
271
271
  onClick: handleClick,
272
272
  disabled: isProcessing || disabled,
273
- className: "flex items-center justify-center gap-2 w-auto px-4 h-12 rounded-full bg-zinc-950 text-white shadow-xl shadow-zinc-900/20 border border-white/10 hover:bg-zinc-800 hover:scale-105 active:scale-95 transition-all duration-300 disabled:cursor-not-allowed disabled:bg-zinc-700 disabled:shadow-none disabled:border-zinc-600/50",
273
+ className: `flex items-center justify-center transition-all duration-200 active:scale-95 disabled:cursor-not-allowed disabled:opacity-50 ${isProcessing ? "w-auto px-3 sm:px-4 h-8 sm:h-10 rounded-full text-sm font-semibold bg-zinc-100 text-zinc-500" : "w-8 h-8 sm:w-10 sm:h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"}`,
274
274
  "aria-label": "Import Script",
275
- children: isProcessing ? /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Processing..." }) : children
275
+ children: isProcessing ? /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm font-semibold", children: "Processing..." }) : children
276
276
  }
277
277
  ),
278
278
  error && /* @__PURE__ */ jsxs("p", { className: "sr-only", children: [
@@ -353,150 +353,148 @@ function ScreenplayEditorView({
353
353
  }
354
354
  }, [COURIER_STACK]);
355
355
  return /* @__PURE__ */ jsxs(Fragment, { children: [
356
- /* @__PURE__ */ jsxs(
357
- "div",
358
- {
359
- className: "sticky top-6 z-50 mx-auto bg-white/70 backdrop-blur-2xl border border-white/60 shadow-[0_8px_30px_rgb(0,0,0,0.04)] rounded-[2rem] flex items-center justify-between p-2 mb-12 select-none transition-all",
360
- style: {
361
- maxWidth: "1240px"
362
- },
363
- children: [
364
- /* @__PURE__ */ jsx("div", { className: "flex gap-1 overflow-x-auto custom-scrollbar pr-2 items-center", children: blockTypes.map((type) => {
365
- var _a;
366
- const selected = ((_a = blocks.find((b) => b.id === focusedBlockId)) == null ? void 0 : _a.type) === type;
367
- return /* @__PURE__ */ jsxs(
368
- "button",
369
- {
370
- type: "button",
371
- disabled: isLocked,
372
- className: `group flex items-center gap-2.5 px-4 py-2 rounded-full font-semibold text-sm transition-all duration-300 ease-out active:scale-95 ${selected ? "bg-zinc-900 text-white shadow-md shadow-zinc-900/20" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"} ${isLocked ? "opacity-50 cursor-not-allowed" : ""}`,
373
- onClick: () => handleBlockTypeChange(type),
374
- children: [
375
- /* @__PURE__ */ jsx(
376
- "input",
377
- {
378
- type: "radio",
379
- name: "blockType",
380
- id: `block-type-${type}`,
381
- className: "sr-only",
382
- "aria-label": blockStyles[type].label,
383
- checked: selected,
384
- readOnly: true
385
- }
386
- ),
387
- /* @__PURE__ */ jsxs(
388
- "label",
389
- {
390
- htmlFor: `block-type-${type}`,
391
- className: "flex items-center gap-2 cursor-pointer pointer-events-none",
392
- children: [
393
- /* @__PURE__ */ jsx(
394
- "div",
395
- {
396
- className: `${selected ? "opacity-100" : "opacity-70 group-hover:opacity-100"} transition-opacity duration-200`,
397
- children: icons[type]
398
- }
399
- ),
400
- /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap hidden sm:inline tracking-wide", children: blockStyles[type].label })
401
- ]
402
- }
403
- )
404
- ]
405
- },
406
- type
407
- );
408
- }) }),
409
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 shrink-0 relative px-1", children: [
410
- /* @__PURE__ */ jsx("div", { className: "w-[1px] h-6 bg-zinc-200/80 mx-2 hidden sm:block rounded-full" }),
411
- showPdfImport && !isLocked && /* @__PURE__ */ jsx(
412
- PdfImporter,
413
- {
414
- disabled: isLocked,
415
- onScriptImported: handleScriptImport,
416
- children: /* @__PURE__ */ jsx("div", { title: "Import Script", children: /* @__PURE__ */ jsx(Upload, { className: "w-[18px] h-[18px]" }) })
417
- }
418
- ),
419
- onToggleLock && /* @__PURE__ */ jsx(
420
- "button",
421
- {
422
- onClick: onToggleLock,
423
- className: `flex items-center justify-center w-10 h-10 rounded-full transition-all duration-200 active:scale-95 ${isLocked ? "text-rose-500 hover:bg-rose-50" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"}`,
424
- title: isLocked ? "Unlock Script" : "Lock Script",
425
- "aria-label": isLocked ? "Unlock Script" : "Lock Script",
426
- children: isLocked ? /* @__PURE__ */ jsx(Lock, { className: "w-[18px] h-[18px]" }) : /* @__PURE__ */ jsx(Unlock, { className: "w-[18px] h-[18px]" })
427
- }
428
- ),
429
- onSave && showSaveButton && !isLocked && /* @__PURE__ */ jsx(
430
- "button",
431
- {
432
- onClick: onSave,
433
- className: "flex items-center justify-center w-10 h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
434
- title: "Save Script",
435
- "aria-label": "Save Script",
436
- children: /* @__PURE__ */ jsx(Save, { className: "w-[18px] h-[18px]" })
437
- }
438
- ),
439
- onSaveAsPdf && showSaveButton && /* @__PURE__ */ jsx(
440
- "button",
441
- {
442
- onClick: onSaveAsPdf,
443
- className: "flex items-center justify-center w-10 h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
444
- title: "Save as PDF",
445
- "aria-label": "Save Script as PDF",
446
- children: /* @__PURE__ */ jsx(FileDown, { className: "w-[18px] h-[18px]" })
447
- }
448
- ),
449
- onSyncWithCloud && showSyncButton && !isLocked && /* @__PURE__ */ jsx(
450
- "button",
451
- {
452
- onClick: onSyncWithCloud,
453
- className: "flex items-center justify-center w-10 h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
454
- title: "Sync with Cloud",
455
- "aria-label": "Sync with Cloud",
456
- children: /* @__PURE__ */ jsx(RefreshCcw, { className: "w-[18px] h-[18px]" })
457
- }
458
- ),
459
- /* @__PURE__ */ jsxs("div", { ref: rulesRef, className: "relative flex items-center", children: [
356
+ /* @__PURE__ */ jsxs("div", { className: "sticky top-2 sm:top-6 z-50 mx-auto w-full max-w-5xl bg-white/80 backdrop-blur-2xl border border-white/60 shadow-[0_8px_30px_rgb(0,0,0,0.06)] rounded-[1.5rem] sm:rounded-[2rem] flex items-center justify-between p-1.5 sm:p-2 mb-6 sm:mb-12 select-none transition-all", children: [
357
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center gap-1 overflow-x-auto custom-scrollbar pr-2 flex-1 [mask-image:linear-gradient(to_right,white_90%,transparent_100%)] sm:[mask-image:none] no-scrollbar", children: blockTypes.map((type) => {
358
+ var _a;
359
+ const selected = ((_a = blocks.find((b) => b.id === focusedBlockId)) == null ? void 0 : _a.type) === type;
360
+ return /* @__PURE__ */ jsxs(
361
+ "button",
362
+ {
363
+ type: "button",
364
+ disabled: isLocked,
365
+ className: `group flex shrink-0 items-center gap-2 sm:gap-2.5 px-3 py-1.5 sm:px-4 sm:py-2 rounded-full font-semibold text-xs sm:text-sm transition-all duration-300 ease-out active:scale-95 ${selected ? "bg-zinc-900 text-white shadow-md shadow-zinc-900/20" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"} ${isLocked ? "opacity-50 cursor-not-allowed" : ""}`,
366
+ onClick: () => handleBlockTypeChange(type),
367
+ children: [
460
368
  /* @__PURE__ */ jsx(
461
- "button",
369
+ "input",
462
370
  {
463
- onClick: () => setIsRulesOpen(!isRulesOpen),
464
- className: `flex items-center justify-center w-10 h-10 rounded-full transition-all duration-200 active:scale-95 ${isRulesOpen ? "bg-zinc-900 text-white shadow-md shadow-zinc-900/20" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"}`,
465
- title: "Settings & Shortcuts",
466
- "aria-label": "Toggle Settings",
467
- children: /* @__PURE__ */ jsx(Cog, { className: "w-[18px] h-[18px]" })
371
+ type: "radio",
372
+ name: "blockType",
373
+ id: `block-type-${type}`,
374
+ className: "sr-only",
375
+ "aria-label": blockStyles[type].label,
376
+ checked: selected,
377
+ readOnly: true
468
378
  }
469
379
  ),
470
- isRulesOpen && /* @__PURE__ */ jsxs("div", { className: "absolute top-full mt-2 right-0 bg-white/95 backdrop-blur-3xl rounded-[1.5rem] shadow-[0_20px_60px_-15px_rgba(0,0,0,0.1)] p-5 text-sm text-zinc-700 select-none font-sans overflow-hidden transition-all duration-300 w-72 origin-top-right animate-in fade-in zoom-in-95 z-50", children: [
471
- /* @__PURE__ */ jsxs("h4", { className: "font-bold text-zinc-900 mb-4 text-sm flex items-center gap-2", children: [
472
- /* @__PURE__ */ jsx(Cog, { className: "w-4 h-4 text-zinc-400" }),
473
- "Settings & Shortcuts"
474
- ] }),
475
- /* @__PURE__ */ jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxs("ul", { className: "space-y-2.5", children: [
476
- /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
477
- /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "New Block" }),
478
- /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Enter" })
479
- ] }),
480
- /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
481
- /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "Delete Block" }),
482
- /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Backspace" })
483
- ] }),
484
- /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
485
- /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "Change Type" }),
486
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
487
- /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Ctrl" }),
488
- /* @__PURE__ */ jsx("span", { className: "text-zinc-400 font-medium", children: "+" }),
489
- /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "\u2191/\u2193" })
490
- ] })
491
- ] })
492
- ] }) })
380
+ /* @__PURE__ */ jsxs(
381
+ "label",
382
+ {
383
+ htmlFor: `block-type-${type}`,
384
+ className: "flex items-center gap-2 cursor-pointer pointer-events-none",
385
+ children: [
386
+ /* @__PURE__ */ jsx(
387
+ "div",
388
+ {
389
+ className: `${selected ? "opacity-100" : "opacity-70 group-hover:opacity-100"} transition-opacity duration-200 flex items-center justify-center`,
390
+ children: icons[type]
391
+ }
392
+ ),
393
+ /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap hidden lg:inline tracking-wide", children: blockStyles[type].label })
394
+ ]
395
+ }
396
+ )
397
+ ]
398
+ },
399
+ type
400
+ );
401
+ }) }),
402
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5 sm:gap-1 shrink-0 relative px-1 sm:px-2 ml-2 sm:ml-0 border-l border-zinc-200/80 sm:border-none pl-2 sm:pl-1", children: [
403
+ /* @__PURE__ */ jsx("div", { className: "w-[1px] h-6 bg-zinc-200/80 mx-1 sm:mx-2 hidden sm:block rounded-full" }),
404
+ showPdfImport && !isLocked && /* @__PURE__ */ jsx(
405
+ PdfImporter,
406
+ {
407
+ disabled: isLocked,
408
+ onScriptImported: handleScriptImport,
409
+ children: /* @__PURE__ */ jsx(
410
+ "div",
411
+ {
412
+ title: "Import Script",
413
+ className: "flex items-center justify-center",
414
+ children: /* @__PURE__ */ jsx(Upload, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
415
+ }
416
+ )
417
+ }
418
+ ),
419
+ onToggleLock && /* @__PURE__ */ jsx(
420
+ "button",
421
+ {
422
+ onClick: onToggleLock,
423
+ className: `flex items-center justify-center w-8 h-8 sm:w-10 sm:h-10 rounded-full transition-all duration-200 active:scale-95 ${isLocked ? "text-rose-500 hover:bg-rose-50" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"}`,
424
+ title: isLocked ? "Unlock Script" : "Lock Script",
425
+ "aria-label": isLocked ? "Unlock Script" : "Lock Script",
426
+ children: isLocked ? /* @__PURE__ */ jsx(Lock, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" }) : /* @__PURE__ */ jsx(Unlock, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
427
+ }
428
+ ),
429
+ onSave && showSaveButton && !isLocked && /* @__PURE__ */ jsx(
430
+ "button",
431
+ {
432
+ onClick: onSave,
433
+ className: "flex items-center justify-center w-8 h-8 sm:w-10 sm:h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
434
+ title: "Save Script",
435
+ "aria-label": "Save Script",
436
+ children: /* @__PURE__ */ jsx(Save, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
437
+ }
438
+ ),
439
+ onSaveAsPdf && showSaveButton && /* @__PURE__ */ jsx(
440
+ "button",
441
+ {
442
+ onClick: onSaveAsPdf,
443
+ className: "flex items-center justify-center w-8 h-8 sm:w-10 sm:h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
444
+ title: "Save as PDF",
445
+ "aria-label": "Save Script as PDF",
446
+ children: /* @__PURE__ */ jsx(FileDown, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
447
+ }
448
+ ),
449
+ onSyncWithCloud && showSyncButton && !isLocked && /* @__PURE__ */ jsx(
450
+ "button",
451
+ {
452
+ onClick: onSyncWithCloud,
453
+ className: "flex items-center justify-center w-8 h-8 sm:w-10 sm:h-10 rounded-full text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 transition-all duration-200 active:scale-95",
454
+ title: "Sync with Cloud",
455
+ "aria-label": "Sync with Cloud",
456
+ children: /* @__PURE__ */ jsx(RefreshCcw, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
457
+ }
458
+ ),
459
+ /* @__PURE__ */ jsxs("div", { ref: rulesRef, className: "relative flex items-center", children: [
460
+ /* @__PURE__ */ jsx(
461
+ "button",
462
+ {
463
+ onClick: () => setIsRulesOpen(!isRulesOpen),
464
+ className: `flex items-center justify-center w-8 h-8 sm:w-10 sm:h-10 rounded-full transition-all duration-200 active:scale-95 ${isRulesOpen ? "bg-zinc-900 text-white shadow-md shadow-zinc-900/20" : "text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900"}`,
465
+ title: "Settings & Shortcuts",
466
+ "aria-label": "Toggle Settings",
467
+ children: /* @__PURE__ */ jsx(Cog, { className: "w-4 h-4 sm:w-[18px] sm:h-[18px]" })
468
+ }
469
+ ),
470
+ isRulesOpen && /* @__PURE__ */ jsxs("div", { className: "absolute top-full mt-2 right-0 sm:-right-2 bg-white/95 backdrop-blur-3xl rounded-[1.5rem] shadow-[0_20px_60px_-15px_rgba(0,0,0,0.1)] p-4 sm:p-5 text-sm text-zinc-700 select-none font-sans overflow-hidden transition-all duration-300 w-[calc(100vw-2rem)] sm:w-72 max-w-[18rem] origin-top-right animate-in fade-in zoom-in-95 z-50", children: [
471
+ /* @__PURE__ */ jsxs("h4", { className: "font-bold text-zinc-900 mb-4 text-sm flex items-center gap-2", children: [
472
+ /* @__PURE__ */ jsx(Cog, { className: "w-4 h-4 text-zinc-400" }),
473
+ "Settings & Shortcuts"
474
+ ] }),
475
+ /* @__PURE__ */ jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxs("ul", { className: "space-y-2.5", children: [
476
+ /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
477
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "New Block" }),
478
+ /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Enter" })
479
+ ] }),
480
+ /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
481
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "Delete Block" }),
482
+ /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Backspace" })
483
+ ] }),
484
+ /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-6", children: [
485
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-zinc-600", children: "Change Type" }),
486
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
487
+ /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "Ctrl" }),
488
+ /* @__PURE__ */ jsx("span", { className: "text-zinc-400 font-medium", children: "+" }),
489
+ /* @__PURE__ */ jsx("kbd", { className: "px-2 py-1 text-[11px] font-bold text-zinc-700 bg-white border border-zinc-200/80 shadow-[0_2px_4px_rgb(0,0,0,0.02)] rounded-md", children: "\u2191/\u2193" })
490
+ ] })
493
491
  ] })
494
- ] })
492
+ ] }) })
495
493
  ] })
496
- ]
497
- }
498
- ),
499
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-12 w-full items-center pb-24", children: /* @__PURE__ */ jsx(
494
+ ] })
495
+ ] })
496
+ ] }),
497
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-12 pb-24 w-full items-center justify-center", children: /* @__PURE__ */ jsx(
500
498
  "div",
501
499
  {
502
500
  className: "relative bg-[#fdfdfc] shadow-2xl shadow-zinc-300/60 border border-zinc-100 rounded-sm md:rounded-md pl-[1.5in] py-[1in] pr-[1in] flex flex-col w-[210mm] min-h-[297mm] shrink-0",
@@ -1812,7 +1810,8 @@ function ScriptBreakdownSceneView({
1812
1810
  setSceneBrief,
1813
1811
  onSummarize,
1814
1812
  isSummarizing,
1815
- aiSummarized = false
1813
+ aiSummarized = false,
1814
+ onUpdateBrief
1816
1815
  }) {
1817
1816
  const [expanded, setExpanded] = useState(false);
1818
1817
  const [expandedCategories, setExpandedCategories] = useState({});
@@ -1906,7 +1905,7 @@ function ScriptBreakdownSceneView({
1906
1905
  }
1907
1906
  return nodes;
1908
1907
  };
1909
- return /* @__PURE__ */ jsx("div", { className: "relative p-8 md:p-12 mx-auto w-full min-h-screen flex flex-col gap-8 xl:pr-[20rem]", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center max-w-6xl", children: [
1908
+ return /* @__PURE__ */ jsx("div", { className: "relative p-8 md:p-12 mx-auto w-full min-h-screen flex flex-col gap-8 xl:pr-[20rem]", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center max-w-6xl xl:max-w-full", children: [
1910
1909
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 min-h-screen", children: [
1911
1910
  /* @__PURE__ */ jsx(
1912
1911
  "div",
@@ -2032,18 +2031,29 @@ function ScriptBreakdownSceneView({
2032
2031
  /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center w-8 h-8 rounded-full bg-slate-100/80 shadow-inner border border-slate-200/50", children: /* @__PURE__ */ jsx(AlignLeft, { className: "w-3.5 h-3.5 text-slate-500" }) }),
2033
2032
  "Scene Brief"
2034
2033
  ] }),
2035
- /* @__PURE__ */ jsx("div", { className: "relative bg-zinc-50/50 border border-zinc-200/60 rounded-xl p-4 md:p-6 shadow-inner focus-within:bg-white focus-within:border-zinc-300 focus-within:shadow-[0_8px_30px_rgb(0,0,0,0.04)] transition-all duration-300", children: /* @__PURE__ */ jsx(
2036
- "textarea",
2037
- {
2038
- value: sceneBrief,
2039
- onChange: (e) => setSceneBrief(e.target.value),
2040
- placeholder: "Write a brief description or notes for this scene...",
2041
- className: "w-full min-h-[120px] bg-transparent outline-none resize-y text-zinc-700 placeholder:text-zinc-400 text-sm md:text-base custom-scrollbar font-sans select-none",
2042
- style: {
2043
- lineHeight: "1.6"
2034
+ /* @__PURE__ */ jsxs("div", { className: "relative bg-zinc-50/50 border border-zinc-200/60 rounded-xl p-4 md:p-6 shadow-inner focus-within:bg-white focus-within:border-zinc-300 focus-within:shadow-[0_8px_30px_rgb(0,0,0,0.04)] transition-all duration-300", children: [
2035
+ /* @__PURE__ */ jsx(
2036
+ "textarea",
2037
+ {
2038
+ value: sceneBrief,
2039
+ onChange: (e) => setSceneBrief(e.target.value),
2040
+ placeholder: "Write a brief description or notes for this scene...",
2041
+ className: "w-full min-h-[120px] bg-transparent outline-none resize-y text-zinc-700 placeholder:text-zinc-400 text-sm md:text-base custom-scrollbar font-sans select-none",
2042
+ style: {
2043
+ lineHeight: "1.6"
2044
+ }
2044
2045
  }
2045
- }
2046
- ) })
2046
+ ),
2047
+ /* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsx(
2048
+ "button",
2049
+ {
2050
+ onClick: onUpdateBrief,
2051
+ disabled: !sceneBrief || sceneBrief.trim() === "",
2052
+ className: "rounded-full bg-[#15607b] px-6 py-3 text-[13px] font-semibold tracking-wide text-white shadow-md transition-all hover:bg-[#134a61] hover:shadow-lg active:scale-95 disabled:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-95 disabled:text-black disabled:shadow-none",
2053
+ children: "Update"
2054
+ }
2055
+ ) })
2056
+ ] })
2047
2057
  ] })
2048
2058
  ] }),
2049
2059
  /* @__PURE__ */ jsxs(
@@ -2084,7 +2094,7 @@ function ScriptBreakdownSceneView({
2084
2094
  ] }),
2085
2095
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx("span", { className: "rounded-full border border-slate-200/60 bg-slate-50 px-2.5 py-1 text-[11px] font-semibold text-[#134a61] shadow-sm backdrop-blur-md", children: tags.length }) })
2086
2096
  ] }),
2087
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 overflow-y-auto custom-scrollbar", children: CATEGORIES.map((cat) => {
2097
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 overflow-y-auto overflow-x-hidden pb-4 pr-1 custom-scrollbar", children: CATEGORIES.map((cat) => {
2088
2098
  const catTags = tags.filter((t) => t.category_id === cat.id);
2089
2099
  if (!catTags.length) return null;
2090
2100
  const isExpanded = expandedCategories[cat.id];
@@ -2097,7 +2107,7 @@ function ScriptBreakdownSceneView({
2097
2107
  /* @__PURE__ */ jsxs(
2098
2108
  "div",
2099
2109
  {
2100
- onClick: () => setExpandedCategories((prev) => __spreadProps(__spreadValues({}, prev), {
2110
+ onClick: () => setExpandedCategories((prev) => ({
2101
2111
  [cat.id]: !prev[cat.id]
2102
2112
  })),
2103
2113
  className: "group relative flex cursor-pointer items-center gap-3 overflow-hidden rounded-[24px] border border-white/70 px-4 py-3.5 transition-all duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] hover:-translate-y-[1px]",
@@ -2153,7 +2163,8 @@ function ScriptBreakdownSceneView({
2153
2163
  children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "flex flex-wrap justify-start gap-2 py-2", children: uniqueTags.map((tag, index) => /* @__PURE__ */ jsx(
2154
2164
  "span",
2155
2165
  {
2156
- className: "text-[11px] font-semibold px-3 py-1.5 rounded-full border backdrop-blur-md transition-all duration-300",
2166
+ title: tag.name,
2167
+ className: "inline-block max-w-full truncate text-[11px] font-semibold px-3 py-1.5 rounded-full border backdrop-blur-md transition-all duration-300",
2157
2168
  style: {
2158
2169
  color: cat.color,
2159
2170
  background: `linear-gradient(145deg, ${cat.color}18, rgba(255,255,255,0.88))`,