@vishu1301/script-writing 1.6.2 → 1.6.3

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.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import React4, { useState, useRef, useEffect, useMemo, useCallback } from 'react';
2
- import { ArrowRight, User, ChevronRight, Sparkles, Check, Users, Box, Shirt, Car, Armchair, UserPlus, MapPin, Map as Map$1, MessageCircle, Parentheses, Clapperboard, Mountain, Loader2, Save, Lock, Unlock, Cog, Upload, FileDown, Languages, Keyboard, AlignLeft, Tags, ChevronDown, X, Video, Settings2, Eye, Pencil, BookOpen, Search, Zap, Info, Frame, BookText, AsteriskIcon, Target, Activity, MonitorPlay, Crosshair, Clock, Camera, Aperture, SlidersHorizontal, Sun, Wand2, Volume2, Layers } from 'lucide-react';
2
+ import { ArrowRight, User, ChevronRight, Sparkles, Check, Users, Box, Shirt, Car, Armchair, UserPlus, MapPin, Map as Map$1, MessageCircle, Parentheses, Clapperboard, Mountain, Loader2, Save, Lock, Unlock, Cog, Upload, FileDown, Languages, Keyboard, AlignLeft, Tags, X, ChevronDown, Video, Settings2, Eye, Pencil, BookOpen, Search, Zap, Info, Frame, BookText, AsteriskIcon, Target, Activity, MonitorPlay, Crosshair, Clock, Camera, Aperture, SlidersHorizontal, Sun, Wand2, Volume2, Layers } from 'lucide-react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import * as pdfjs from 'pdfjs-dist';
5
5
  import jsPDF from 'jspdf';
@@ -4289,12 +4289,12 @@ function ScriptBreakdownSceneView({
4289
4289
  ))
4290
4290
  }
4291
4291
  ),
4292
- /* @__PURE__ */ jsxs("div", { className: "relative bg-[#fdfdfc] shadow-md shadow-zinc-300/60 border border-zinc-100 rounded-sm md:rounded-md flex flex-col w-[210mm] shrink-0 p-8 md:p-12 lg:p-16", children: [
4293
- /* @__PURE__ */ jsxs("h3", { className: "text-xs font-extrabold text-slate-800 uppercase tracking-[0.25em] mb-6 flex items-center gap-3 font-sans", children: [
4294
- /* @__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" }) }),
4292
+ /* @__PURE__ */ jsxs("div", { className: "relative bg-[#fdfdfc] shadow-2xl shadow-zinc-300/50 border border-zinc-100/80 rounded-sm md:rounded-md flex flex-col w-[210mm] shrink-0 p-8 md:p-12 lg:p-16", children: [
4293
+ /* @__PURE__ */ jsxs("h3", { className: "text-xs font-bold text-blumine-800 uppercase tracking-widest mb-6 flex items-center gap-3 font-sans", children: [
4294
+ /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center w-8 h-8 rounded-xl bg-gradient-to-b from-white to-blumine-50/60 shadow-inner border border-blumine-200/50 text-blumine-600", children: /* @__PURE__ */ jsx(AlignLeft, { className: "w-4 h-4" }) }),
4295
4295
  "Scene Brief"
4296
4296
  ] }),
4297
- /* @__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: [
4297
+ /* @__PURE__ */ jsxs("div", { className: "relative bg-zinc-50/30 border border-zinc-200/50 rounded-xl p-4 md:p-6 shadow-[inset_0_1.5px_3px_rgba(0,0,0,0.02)] focus-within:bg-white focus-within:border-blumine-300/70 focus-within:shadow-[0_8px_30px_rgba(16,43,60,0.03)] transition-all duration-300", children: [
4298
4298
  /* @__PURE__ */ jsx(
4299
4299
  "textarea",
4300
4300
  {
@@ -4312,7 +4312,7 @@ function ScriptBreakdownSceneView({
4312
4312
  {
4313
4313
  onClick: onUpdateBrief,
4314
4314
  disabled: !sceneBrief || sceneBrief.trim() === "",
4315
- 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",
4315
+ className: "rounded-xl bg-gradient-to-b from-blumine-500 to-blumine-600 px-6 py-2.5 text-[13px] font-bold text-white shadow-md shadow-blumine-500/10 transition-all hover:from-blumine-600 hover:to-blumine-700 active:scale-95 disabled:from-zinc-100 disabled:to-zinc-200 disabled:text-zinc-400 disabled:border-zinc-200/50 disabled:shadow-none disabled:cursor-not-allowed cursor-pointer",
4316
4316
  children: "Update"
4317
4317
  }
4318
4318
  ) })
@@ -4323,41 +4323,54 @@ function ScriptBreakdownSceneView({
4323
4323
  "button",
4324
4324
  {
4325
4325
  onClick: () => setIsSidebarOpen(true),
4326
- className: "fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-[#15607b] text-white shadow-[0_8px_30px_rgba(21,96,123,0.3)] transition-transform hover:scale-105 active:scale-95 xl:hidden",
4326
+ className: "fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-gradient-to-b from-blumine-500 to-blumine-600 text-white shadow-[0_8px_30px_rgba(32,146,186,0.35)] transition-all duration-200 hover:scale-105 active:scale-95 hover:shadow-[0_10px_35px_rgba(32,146,186,0.45)] xl:hidden border border-white/10",
4327
4327
  children: [
4328
- /* @__PURE__ */ jsx(Tags, { className: "h-6 w-6" }),
4329
- tags.length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex h-5 w-5 items-center justify-center rounded-full bg-rose-500 text-[10px] font-bold text-white shadow-sm border-2 border-white", children: tags.length })
4328
+ /* @__PURE__ */ jsx(Tags, { className: "h-5.5 w-5.5", strokeWidth: 2 }),
4329
+ tags.length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex h-5 w-5 items-center justify-center rounded-full bg-rose-500 text-[10px] font-bold text-white shadow-md border-2 border-white animate-pulse", children: tags.length })
4330
4330
  ]
4331
4331
  }
4332
4332
  ),
4333
4333
  isSidebarOpen && /* @__PURE__ */ jsx(
4334
4334
  "div",
4335
4335
  {
4336
- className: "fixed inset-0 z-40 bg-slate-900/20 backdrop-blur-sm transition-opacity xl:hidden",
4336
+ className: "fixed inset-0 z-40 bg-blumine-950/20 backdrop-blur-xs transition-all duration-300 xl:hidden",
4337
4337
  onClick: () => setIsSidebarOpen(false)
4338
4338
  }
4339
4339
  ),
4340
4340
  /* @__PURE__ */ jsx(
4341
4341
  "div",
4342
4342
  {
4343
- className: `fixed xl:absolute top-0 right-0 z-50 h-full w-72 transform transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] xl:translate-x-0 ${isSidebarOpen ? "translate-x-0 shadow-[0_0_40px_rgba(0,0,0,0.1)]" : "translate-x-full"}`,
4344
- children: /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex h-[100dvh] max-h-screen w-full flex-col border-l border-l-[#eefafd] bg-white p-3 py-5", children: [
4345
- !aiSummarized && /* @__PURE__ */ jsx(
4343
+ className: `fixed xl:absolute top-0 right-0 z-50 h-full w-80 transform transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] xl:translate-x-0 ${isSidebarOpen ? "translate-x-0 shadow-[-10px_0_40px_rgba(16,43,60,0.08)]" : "translate-x-full"}`,
4344
+ children: /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex h-[100dvh] max-h-screen w-full flex-col border-l border-blumine-100/50 bg-white/95 backdrop-blur-xl p-4 py-6", children: [
4345
+ !aiSummarized && /* @__PURE__ */ jsx("div", { className: "mb-4 shrink-0 flex justify-center", children: /* @__PURE__ */ jsx(
4346
4346
  summarize_button_default,
4347
4347
  {
4348
4348
  isSummarizing,
4349
4349
  onSummarize
4350
4350
  }
4351
- ),
4352
- /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-3 py-5 my-5 border-t border-t-[#eefafd] flex-1 overflow-hidden", children: [
4353
- /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between mb-6 shrink-0", children: [
4351
+ ) }),
4352
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-3 py-4 border-t border-blumine-100/40 flex-1 overflow-hidden", children: [
4353
+ /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between mb-4 shrink-0 px-1", children: [
4354
4354
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
4355
- /* @__PURE__ */ jsx("div", { className: "relative flex h-8 w-8 items-center justify-center rounded-[10px] border border-[#15607b]/20 bg-white shadow-sm", children: /* @__PURE__ */ jsx(Tags, { className: "h-4 w-4 text-[#15607b]" }) }),
4356
- /* @__PURE__ */ jsx("h3", { className: "text-[12px] font-semibold uppercase tracking-[0.28em] text-[#134a61]", children: "Breakdown" })
4355
+ /* @__PURE__ */ jsx("div", { className: "relative flex h-10 w-10 items-center justify-center rounded-xl border border-blumine-200/60 bg-gradient-to-b from-white to-blumine-50/50 shadow-inner", children: /* @__PURE__ */ jsx(Tags, { className: "h-5 w-5 text-blumine-600", strokeWidth: 1.5 }) }),
4356
+ /* @__PURE__ */ jsxs("div", { children: [
4357
+ /* @__PURE__ */ jsx("h3", { className: "text-[14px] font-bold uppercase tracking-wider text-blumine-800 leading-none", children: "Breakdown" }),
4358
+ /* @__PURE__ */ jsx("p", { className: "text-[11px] text-blumine-400 mt-1 font-medium", children: "Scene element tags" })
4359
+ ] })
4357
4360
  ] }),
4358
- /* @__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 }) })
4361
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4362
+ /* @__PURE__ */ jsx("span", { className: "rounded-full border border-blumine-200/50 bg-blumine-50/80 px-2.5 py-0.5 text-[11px] font-bold text-blumine-700 shadow-sm", children: tags.length }),
4363
+ /* @__PURE__ */ jsx(
4364
+ "button",
4365
+ {
4366
+ onClick: () => setIsSidebarOpen(false),
4367
+ className: "flex xl:hidden h-8 w-8 items-center justify-center rounded-lg text-blumine-400 hover:bg-blumine-100 hover:text-blumine-700 transition duration-150 active:scale-95",
4368
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
4369
+ }
4370
+ )
4371
+ ] })
4359
4372
  ] }),
4360
- /* @__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) => {
4373
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3.5 overflow-y-auto overflow-x-hidden pb-4 pr-1 custom-scrollbar", children: CATEGORIES.map((cat) => {
4361
4374
  const catTags = tags.filter((t) => t.category_id === cat.id);
4362
4375
  if (!catTags.length) return null;
4363
4376
  const isExpanded = expandedCategories[cat.id];
@@ -4368,114 +4381,145 @@ function ScriptBreakdownSceneView({
4368
4381
  );
4369
4382
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
4370
4383
  /* @__PURE__ */ jsxs(
4371
- "div",
4384
+ "button",
4372
4385
  {
4373
4386
  onClick: () => setExpandedCategories((prev) => ({
4374
4387
  [cat.id]: !prev[cat.id]
4375
4388
  })),
4376
- 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]",
4389
+ className: "w-full group relative flex cursor-pointer items-center gap-3 overflow-hidden rounded-2xl border px-4 py-3 transition-all duration-300 hover:-translate-y-[1px] hover:shadow-md active:scale-[0.98] text-left outline-none",
4377
4390
  style: {
4378
- background: `linear-gradient(135deg, rgba(255,255,255,0.92), ${cat.hex}18)`,
4379
- boxShadow: `0 16px 36px ${cat.hex}14, inset 0 1px 0 rgba(255,255,255,0.9)`,
4380
- border: `1px solid ${cat.hex}50`
4391
+ borderColor: `${cat.color}25`,
4392
+ background: `linear-gradient(135deg, #ffffff, ${cat.color}08)`
4381
4393
  },
4382
4394
  children: [
4383
4395
  /* @__PURE__ */ jsx(
4384
4396
  "div",
4385
4397
  {
4386
- className: "absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100",
4398
+ className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none",
4387
4399
  style: {
4388
- background: `radial-gradient(circle at 15% 20%, ${cat.hex}24, transparent 38%)`
4400
+ background: `radial-gradient(circle at 12% 50%, ${cat.color}15, transparent 40%)`
4389
4401
  }
4390
4402
  }
4391
4403
  ),
4392
4404
  /* @__PURE__ */ jsx(
4393
4405
  "div",
4394
4406
  {
4395
- className: "relative flex h-9 w-9 shrink-0 items-center justify-center rounded-xl border border-white/70 backdrop-blur-md",
4407
+ className: "relative flex h-8 w-8 shrink-0 items-center justify-center rounded-xl border border-white/80 shadow-inner transition-transform duration-300 group-hover:scale-105",
4396
4408
  style: {
4397
- background: `linear-gradient(135deg, ${cat.color}22, rgba(255,255,255,0.75))`,
4398
- boxShadow: `0 10px 22px ${cat.color}14`
4409
+ background: `linear-gradient(135deg, ${cat.color}12, ${cat.color}05)`,
4410
+ borderColor: `${cat.color}20`
4399
4411
  },
4400
- children: /* @__PURE__ */ jsx(cat.icon, { className: "h-4 w-4", color: cat.color })
4412
+ children: /* @__PURE__ */ jsx(cat.icon, { className: "h-4 w-4", style: { color: cat.color } })
4401
4413
  }
4402
4414
  ),
4403
4415
  /* @__PURE__ */ jsx(
4404
4416
  "span",
4405
4417
  {
4406
- className: "relative text-[13px] font-semibold tracking-[0.01em]",
4418
+ className: "relative text-xs font-bold tracking-wide transition-colors duration-200",
4407
4419
  style: { color: cat.color },
4408
4420
  children: cat.label
4409
4421
  }
4410
4422
  ),
4411
- /* @__PURE__ */ jsx("span", { className: "relative ml-auto rounded-full border border-white/70 bg-white/75 px-2.5 py-1 text-[11px] font-semibold text-[#456575] backdrop-blur-md", children: catTags.length }),
4412
- /* @__PURE__ */ jsx(
4413
- ChevronDown,
4414
- {
4415
- className: `relative h-4 w-4 transition-transform duration-500 ease-[cubic-bezier(0.22,1,0.36,1)] ${isExpanded ? "rotate-180" : ""}`,
4416
- style: { color: cat.color }
4417
- }
4418
- )
4423
+ /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-1.5 relative", children: [
4424
+ /* @__PURE__ */ jsx(
4425
+ "span",
4426
+ {
4427
+ className: "rounded-full px-2 py-0.5 text-[10px] font-bold transition-all duration-200",
4428
+ style: {
4429
+ color: cat.color,
4430
+ backgroundColor: `${cat.color}10`,
4431
+ border: `1px solid ${cat.color}15`
4432
+ },
4433
+ children: catTags.length
4434
+ }
4435
+ ),
4436
+ /* @__PURE__ */ jsx(
4437
+ ChevronDown,
4438
+ {
4439
+ className: `h-3.5 w-3.5 transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)] ${isExpanded ? "rotate-180" : ""}`,
4440
+ style: { color: cat.color },
4441
+ strokeWidth: 2.5
4442
+ }
4443
+ )
4444
+ ] })
4419
4445
  ]
4420
4446
  }
4421
4447
  ),
4422
4448
  /* @__PURE__ */ jsx(
4423
4449
  "div",
4424
4450
  {
4425
- className: `grid transition-all duration-500 ease-[cubic-bezier(0.22,1,0.36,1)] ${isExpanded ? "grid-rows-[1fr] opacity-100 mt-3" : "grid-rows-[0fr] opacity-0"}`,
4426
- 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(
4451
+ className: `grid transition-all duration-500 ease-[cubic-bezier(0.22,1,0.36,1)] ${isExpanded ? "grid-rows-[1fr] opacity-100 mt-2.5" : "grid-rows-[0fr] opacity-0"}`,
4452
+ children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx(
4427
4453
  "div",
4428
4454
  {
4429
- className: "relative flex flex-col items-start",
4430
- children: /* @__PURE__ */ jsxs(
4431
- "span",
4455
+ className: "flex flex-wrap justify-start gap-2 py-2 pl-3 border-l ml-4",
4456
+ style: { borderColor: `${cat.color}18` },
4457
+ children: uniqueTags.map((tag, index) => /* @__PURE__ */ jsx(
4458
+ "div",
4432
4459
  {
4433
- title: tag.name,
4434
- onClick: (e) => {
4435
- e.stopPropagation();
4436
- if (cat.id !== "PROP" && cat.id !== "SET_PROP" && cat.id !== "CAST" && cat.id !== "EXTRA")
4437
- return;
4438
- if ((editingTagData == null ? void 0 : editingTagData.tag.id) === tag.id) {
4439
- setEditingTagData(null);
4440
- } else {
4441
- const rect = e.currentTarget.getBoundingClientRect();
4442
- setPopupPlacement({
4443
- alignRight: rect.left > window.innerWidth - 240,
4444
- alignBottom: rect.bottom > window.innerHeight - 250
4445
- });
4446
- setTagForm({
4447
- quantity: tag.quantity || 1,
4448
- look: tag.look || "",
4449
- age: tag.age || "",
4450
- age_range: tag.age_range || [],
4451
- crowd_type: tag.crowd_type || []
4452
- });
4453
- setEditingTagData({
4454
- tag,
4455
- catId: cat.id,
4456
- catColor: cat.color,
4457
- rect
4458
- });
4460
+ className: "relative flex flex-col items-start max-w-full",
4461
+ children: /* @__PURE__ */ jsxs(
4462
+ "span",
4463
+ {
4464
+ title: tag.name,
4465
+ onClick: (e) => {
4466
+ e.stopPropagation();
4467
+ if (cat.id !== "PROP" && cat.id !== "SET_PROP" && cat.id !== "CAST" && cat.id !== "EXTRA")
4468
+ return;
4469
+ if ((editingTagData == null ? void 0 : editingTagData.tag.id) === tag.id) {
4470
+ setEditingTagData(null);
4471
+ } else {
4472
+ const rect = e.currentTarget.getBoundingClientRect();
4473
+ setPopupPlacement({
4474
+ alignRight: rect.left > window.innerWidth - 240,
4475
+ alignBottom: rect.bottom > window.innerHeight - 250
4476
+ });
4477
+ setTagForm({
4478
+ quantity: tag.quantity || 1,
4479
+ look: tag.look || "",
4480
+ age: tag.age || "",
4481
+ age_range: tag.age_range || [],
4482
+ crowd_type: tag.crowd_type || []
4483
+ });
4484
+ setEditingTagData({
4485
+ tag,
4486
+ catId: cat.id,
4487
+ catColor: cat.color,
4488
+ rect
4489
+ });
4490
+ }
4491
+ },
4492
+ className: `inline-block max-w-full truncate text-[11px] font-bold px-3 py-1.5 rounded-full border transition-all duration-200 select-none ${cat.id === "PROP" || cat.id === "SET_PROP" || cat.id === "CAST" || cat.id === "EXTRA" ? "cursor-pointer hover:scale-[1.03] hover:shadow-sm" : "cursor-default"}`,
4493
+ style: {
4494
+ color: cat.color,
4495
+ background: `linear-gradient(135deg, ${cat.color}08, ${cat.color}03)`,
4496
+ borderColor: `${cat.color}18`
4497
+ },
4498
+ children: [
4499
+ tag.name,
4500
+ (cat.id === "PROP" || cat.id === "SET_PROP") && tag.quantity && tag.quantity > 1 ? /* @__PURE__ */ jsxs(
4501
+ "span",
4502
+ {
4503
+ className: "ml-1.5 font-extrabold px-1 py-0.5 rounded text-[9px] border inline-block",
4504
+ style: {
4505
+ color: cat.color,
4506
+ backgroundColor: `${cat.color}10`,
4507
+ borderColor: `${cat.color}15`
4508
+ },
4509
+ children: [
4510
+ "x",
4511
+ tag.quantity
4512
+ ]
4513
+ }
4514
+ ) : null
4515
+ ]
4459
4516
  }
4460
- },
4461
- 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 cursor-pointer! ${cat.id === "PROP" || cat.id === "SET_PROP" || cat.id === "CAST" ? "cursor-pointer hover:scale-105 shadow-sm" : ""}`,
4462
- style: {
4463
- color: cat.color,
4464
- background: `linear-gradient(145deg, ${cat.color}18, rgba(255,255,255,0.88))`,
4465
- borderColor: `${cat.color}28`
4466
- },
4467
- children: [
4468
- tag.name,
4469
- (cat.id === "PROP" || cat.id === "SET_PROP") && tag.quantity && tag.quantity > 1 ? /* @__PURE__ */ jsxs("span", { className: "ml-1.5 opacity-80 font-bold", children: [
4470
- "x",
4471
- tag.quantity
4472
- ] }) : null
4473
- ]
4474
- }
4475
- )
4476
- },
4477
- index
4478
- )) }) })
4517
+ )
4518
+ },
4519
+ index
4520
+ ))
4521
+ }
4522
+ ) })
4479
4523
  }
4480
4524
  )
4481
4525
  ] }, cat.id);
@@ -4489,7 +4533,7 @@ function ScriptBreakdownSceneView({
4489
4533
  /* @__PURE__ */ jsx(
4490
4534
  "div",
4491
4535
  {
4492
- className: "fixed inset-0 z-[100]",
4536
+ className: "fixed inset-0 z-[100] bg-blumine-950/5 backdrop-blur-[1px]",
4493
4537
  onClick: (e) => {
4494
4538
  e.stopPropagation();
4495
4539
  setEditingTagData(null);
@@ -4499,7 +4543,7 @@ function ScriptBreakdownSceneView({
4499
4543
  /* @__PURE__ */ jsxs(
4500
4544
  "div",
4501
4545
  {
4502
- className: `p-3.5 bg-white/90 backdrop-blur-2xl rounded-[1.25rem] shadow-[0_10px_40px_rgb(0,0,0,0.12)] border border-white/60 z-[101] w-56 animate-in fade-in zoom-in-95 duration-200 ease-out fixed`,
4546
+ className: `p-3.5 bg-white/90 backdrop-blur-2xl rounded-[1.25rem] shadow-[0_10px_40px_rgba(16,43,60,0.12)] border border-blumine-100/40 z-[101] w-56 animate-in fade-in zoom-in-95 duration-200 ease-out fixed`,
4503
4547
  style: {
4504
4548
  top: popupPlacement.alignBottom ? "auto" : editingTagData.rect.bottom + 8,
4505
4549
  bottom: popupPlacement.alignBottom ? window.innerHeight - editingTagData.rect.top + 8 : "auto",
@@ -4508,19 +4552,19 @@ function ScriptBreakdownSceneView({
4508
4552
  },
4509
4553
  onClick: (e) => e.stopPropagation(),
4510
4554
  children: [
4511
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center mb-3 border-b border-slate-100 pb-2.5", children: [
4512
- /* @__PURE__ */ jsx("span", { className: "text-[10px] font-extrabold text-slate-400 uppercase tracking-widest drop-shadow-sm", children: "Details" }),
4555
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center mb-3 border-b border-blumine-100/30 pb-2.5", children: [
4556
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] font-extrabold text-blumine-400 uppercase tracking-widest drop-shadow-sm", children: "Details" }),
4513
4557
  /* @__PURE__ */ jsx(
4514
4558
  "button",
4515
4559
  {
4516
4560
  onClick: () => setEditingTagData(null),
4517
- className: "hover:bg-slate-100/80 p-1.5 rounded-full transition-colors active:scale-95",
4518
- children: /* @__PURE__ */ jsx(X, { className: "w-3.5 h-3.5 text-slate-500" })
4561
+ className: "hover:bg-blumine-100/40 p-1.5 rounded-full transition-colors active:scale-95 text-blumine-500",
4562
+ children: /* @__PURE__ */ jsx(X, { className: "w-3.5 h-3.5" })
4519
4563
  }
4520
4564
  )
4521
4565
  ] }),
4522
4566
  (editingTagData.catId === "PROP" || editingTagData.catId === "SET_PROP") && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
4523
- /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-slate-600 ml-1", children: "Quantity" }),
4567
+ /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-blumine-700 ml-1", children: "Quantity" }),
4524
4568
  /* @__PURE__ */ jsx(
4525
4569
  "input",
4526
4570
  {
@@ -4533,13 +4577,13 @@ function ScriptBreakdownSceneView({
4533
4577
  quantity: val
4534
4578
  }));
4535
4579
  },
4536
- className: "w-full text-[13px] px-3 py-2 rounded-xl border border-slate-200/80 outline-none focus:border-[#15607b] focus:ring-2 focus:ring-[#15607b]/20 transition-all bg-slate-50/50 focus:bg-white font-semibold text-slate-700"
4580
+ className: "w-full text-[13px] px-3 py-2 rounded-xl border border-blumine-100 bg-zinc-50/30 outline-none focus:border-blumine-400 focus:bg-white focus:ring-2 focus:ring-blumine-500/10 transition-all font-semibold text-blumine-800"
4537
4581
  }
4538
4582
  )
4539
4583
  ] }),
4540
4584
  editingTagData.catId === "CAST" && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
4541
4585
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
4542
- /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-slate-600 ml-1", children: "Look" }),
4586
+ /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-blumine-700 ml-1", children: "Look" }),
4543
4587
  /* @__PURE__ */ jsx(
4544
4588
  "input",
4545
4589
  {
@@ -4551,12 +4595,12 @@ function ScriptBreakdownSceneView({
4551
4595
  look: e.target.value
4552
4596
  }));
4553
4597
  },
4554
- className: "w-full text-[13px] px-3 py-2 rounded-xl border border-slate-200/80 outline-none focus:border-[#15607b] focus:ring-2 focus:ring-[#15607b]/20 transition-all bg-slate-50/50 focus:bg-white font-semibold text-slate-700 placeholder:text-slate-400 placeholder:font-normal"
4598
+ className: "w-full text-[13px] px-3 py-2 rounded-xl border border-blumine-100 bg-zinc-50/30 outline-none focus:border-blumine-400 focus:bg-white focus:ring-2 focus:ring-blumine-500/10 transition-all font-semibold text-blumine-800 placeholder:text-blumine-300 placeholder:font-normal"
4555
4599
  }
4556
4600
  )
4557
4601
  ] }),
4558
4602
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
4559
- /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-slate-600 ml-1", children: "Age" }),
4603
+ /* @__PURE__ */ jsx("label", { className: "text-[11px] font-bold text-blumine-700 ml-1", children: "Age" }),
4560
4604
  /* @__PURE__ */ jsx(
4561
4605
  "input",
4562
4606
  {
@@ -4577,7 +4621,7 @@ function ScriptBreakdownSceneView({
4577
4621
  age: val.toString()
4578
4622
  }));
4579
4623
  },
4580
- className: "w-full text-[13px] px-3 py-2 rounded-xl border border-slate-200/80 outline-none focus:border-[#15607b] focus:ring-2 focus:ring-[#15607b]/20 transition-all bg-slate-50/50 focus:bg-white font-semibold text-slate-700"
4624
+ className: "w-full text-[13px] px-3 py-2 rounded-xl border border-blumine-100 bg-zinc-50/30 outline-none focus:border-blumine-400 focus:bg-white focus:ring-2 focus:ring-blumine-500/10 transition-all font-semibold text-blumine-800"
4581
4625
  }
4582
4626
  )
4583
4627
  ] })
@@ -4617,7 +4661,7 @@ function ScriptBreakdownSceneView({
4617
4661
  }
4618
4662
  setEditingTagData(null);
4619
4663
  },
4620
- className: "w-full bg-[#15607b] hover:bg-[#134a61] text-white text-[12px] font-bold py-2.5 rounded-xl transition-all shadow-[0_4px_12px_rgba(21,96,123,0.2)] hover:shadow-[0_6px_16px_rgba(21,96,123,0.3)] active:scale-[0.98]",
4664
+ className: "w-full bg-gradient-to-b from-blumine-500 to-blumine-600 hover:from-blumine-600 hover:to-blumine-700 text-white text-[12px] font-bold py-2.5 rounded-xl transition-all shadow-[0_4px_12px_rgba(32,146,186,0.2)] hover:shadow-[0_6px_16px_rgba(32,146,186,0.3)] active:scale-[0.98]",
4621
4665
  children: "Update Details"
4622
4666
  }
4623
4667
  ) })
@@ -4700,72 +4744,80 @@ function useScriptBreakdownScene(options) {
4700
4744
  }, [blocks]);
4701
4745
  const handleAISummarize = async () => {
4702
4746
  var _a;
4747
+ if (!scene || !scene.content) {
4748
+ console.error("Cannot summarize scene: Scene data is not loaded yet.");
4749
+ return;
4750
+ }
4703
4751
  setIsSummarizing(true);
4704
- const res = await ((_a = options.onAISummarize) == null ? void 0 : _a.call(options, scene.content));
4705
- if (res.ok) {
4706
- const data = await res.json();
4707
- setIsSummarizing(false);
4708
- let parsedData = [];
4709
- let parsedSummaryData = {};
4710
- try {
4711
- const normalData = JSON.parse(data.data);
4712
- if (Array.isArray(normalData)) {
4713
- parsedData = Array.isArray(normalData[0]) ? normalData[0] : [];
4714
- const summary = Array.isArray(normalData[1]) ? normalData[1] : [];
4715
- parsedSummaryData = summary[0] || {};
4716
- }
4717
- } catch (error2) {
4718
- console.error("Error parsing AI summary data:", error2);
4719
- }
4720
- setSceneBrief(parsedSummaryData.summarise || "");
4721
- const newTags = [];
4722
- parsedData.forEach((aiTag) => {
4723
- if (!aiTag.block_id || !aiTag.category_id || typeof aiTag.start_index !== "number" || typeof aiTag.end_index !== "number") {
4724
- return;
4725
- }
4726
- const newTag = {
4727
- id: aiTag.id || uuid(),
4728
- block_id: String(aiTag.block_id).startsWith("par") ? String(aiTag.block_id).substring(3) : String(aiTag.block_id),
4729
- category_id: aiTag.category_id,
4730
- name: aiTag.name,
4731
- start_index: aiTag.start_index,
4732
- end_index: aiTag.end_index
4733
- };
4734
- if (aiTag.category_id === "PROP" || aiTag.category_id === "SET_PROP") {
4735
- newTag.quantity = 1;
4736
- } else if (aiTag.category_id === "CAST") {
4737
- newTag.look = "";
4738
- newTag.age = "";
4739
- }
4740
- newTags.push(newTag);
4741
- });
4742
- if (newTags.length > 0) {
4743
- const originalTags = tags;
4744
- setTags((prev) => {
4745
- const merged = [...prev];
4746
- newTags.forEach((newTag) => {
4747
- const isOverlapping = merged.some(
4748
- (t) => t.block_id === newTag.block_id && newTag.end_index > t.start_index && newTag.start_index < t.end_index
4749
- );
4750
- if (!isOverlapping) {
4751
- merged.push(newTag);
4752
- }
4753
- });
4754
- return merged;
4755
- });
4752
+ try {
4753
+ const res = await ((_a = options.onAISummarize) == null ? void 0 : _a.call(options, scene.content));
4754
+ if (res && res.ok) {
4755
+ const data = await res.json();
4756
+ let parsedData = [];
4757
+ let parsedSummaryData = {};
4756
4758
  try {
4757
- if (options.onTagsBulkAdded) {
4758
- await options.onTagsBulkAdded(newTags, parsedSummaryData.summarise);
4759
+ const normalData = JSON.parse(data.data);
4760
+ if (Array.isArray(normalData)) {
4761
+ parsedData = Array.isArray(normalData[0]) ? normalData[0] : [];
4762
+ const summary = Array.isArray(normalData[1]) ? normalData[1] : [];
4763
+ parsedSummaryData = summary[0] || {};
4759
4764
  }
4760
4765
  } catch (error2) {
4761
- console.error("Failed to bulk add AI-generated tags:", error2);
4762
- setTags(originalTags);
4766
+ console.error("Error parsing AI summary data:", error2);
4763
4767
  }
4768
+ setSceneBrief(parsedSummaryData.summarise || "");
4769
+ const newTags = [];
4770
+ parsedData.forEach((aiTag) => {
4771
+ if (!aiTag.block_id || !aiTag.category_id || typeof aiTag.start_index !== "number" || typeof aiTag.end_index !== "number") {
4772
+ return;
4773
+ }
4774
+ const newTag = {
4775
+ id: aiTag.id || uuid(),
4776
+ block_id: String(aiTag.block_id).startsWith("par") ? String(aiTag.block_id).substring(3) : String(aiTag.block_id),
4777
+ category_id: aiTag.category_id,
4778
+ name: aiTag.name,
4779
+ start_index: aiTag.start_index,
4780
+ end_index: aiTag.end_index
4781
+ };
4782
+ if (aiTag.category_id === "PROP" || aiTag.category_id === "SET_PROP") {
4783
+ newTag.quantity = 1;
4784
+ } else if (aiTag.category_id === "CAST") {
4785
+ newTag.look = "";
4786
+ newTag.age = "";
4787
+ }
4788
+ newTags.push(newTag);
4789
+ });
4790
+ if (newTags.length > 0) {
4791
+ const originalTags = tags;
4792
+ setTags((prev) => {
4793
+ const merged = [...prev];
4794
+ newTags.forEach((newTag) => {
4795
+ const isOverlapping = merged.some(
4796
+ (t) => t.block_id === newTag.block_id && newTag.end_index > t.start_index && newTag.start_index < t.end_index
4797
+ );
4798
+ if (!isOverlapping) {
4799
+ merged.push(newTag);
4800
+ }
4801
+ });
4802
+ return merged;
4803
+ });
4804
+ try {
4805
+ if (options.onTagsBulkAdded) {
4806
+ await options.onTagsBulkAdded(newTags, parsedSummaryData.summarise);
4807
+ }
4808
+ } catch (error2) {
4809
+ console.error("Failed to bulk add AI-generated tags:", error2);
4810
+ setTags(originalTags);
4811
+ }
4812
+ }
4813
+ return data;
4814
+ } else {
4815
+ console.error("Failed to summarize scene:", res);
4764
4816
  }
4765
- return data;
4766
- } else {
4817
+ } catch (error2) {
4818
+ console.error("An error occurred during scene summarization:", error2);
4819
+ } finally {
4767
4820
  setIsSummarizing(false);
4768
- console.error("Failed to summarize scene:", res);
4769
4821
  }
4770
4822
  };
4771
4823
  const bulkCreateTags = useCallback(async () => {
@@ -6386,39 +6438,39 @@ function ShotBreakdownView({
6386
6438
  "button",
6387
6439
  {
6388
6440
  onClick: () => setIsSidebarOpen(true),
6389
- className: "fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-[#15607b] text-white shadow-[0_8px_30px_rgba(21,96,123,0.3)] transition-transform hover:scale-105 active:scale-95 xl:hidden",
6441
+ className: "fixed bottom-6 right-6 z-40 flex h-14 w-14 items-center justify-center rounded-full bg-gradient-to-b from-blumine-500 to-blumine-600 text-white shadow-[0_8px_30px_rgba(32,146,186,0.35)] transition-all duration-200 hover:scale-105 active:scale-95 hover:shadow-[0_10px_35px_rgba(32,146,186,0.45)] xl:hidden border border-white/10",
6390
6442
  children: [
6391
- /* @__PURE__ */ jsx(Video, { className: "h-6 w-6" }),
6392
- shots.length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex h-5 w-5 items-center justify-center rounded-full bg-rose-500 text-[10px] font-bold text-white shadow-sm border-2 border-white", children: shots.length })
6443
+ /* @__PURE__ */ jsx(Video, { className: "h-5.5 w-5.5", strokeWidth: 2 }),
6444
+ shots.length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex h-5 w-5 items-center justify-center rounded-full bg-rose-500 text-[10px] font-bold text-white shadow-md border-2 border-white animate-pulse", children: shots.length })
6393
6445
  ]
6394
6446
  }
6395
6447
  ),
6396
6448
  isSidebarOpen && /* @__PURE__ */ jsx(
6397
6449
  "div",
6398
6450
  {
6399
- className: "fixed inset-0 z-40 bg-slate-900/20 backdrop-blur-sm transition-opacity xl:hidden",
6451
+ className: "fixed inset-0 z-40 bg-blumine-950/20 backdrop-blur-xs transition-all duration-300 xl:hidden",
6400
6452
  onClick: () => setIsSidebarOpen(false)
6401
6453
  }
6402
6454
  ),
6403
6455
  /* @__PURE__ */ jsx(
6404
6456
  "div",
6405
6457
  {
6406
- className: `fixed xl:absolute top-0 right-0 z-50 h-full w-72 transform transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] xl:translate-x-0 ${isSidebarOpen ? "translate-x-0 shadow-[0_0_40px_rgba(0,0,0,0.1)]" : "translate-x-full"}`,
6407
- children: /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex h-[100dvh] max-h-screen w-full flex-col border-l border-l-[#eefafd] bg-white p-3 py-5", children: [
6408
- !aiSummarized && /* @__PURE__ */ jsx(
6458
+ className: `fixed xl:absolute top-0 right-0 z-50 h-full w-80 transform transition-transform duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] xl:translate-x-0 ${isSidebarOpen ? "translate-x-0 shadow-[-10px_0_40px_rgba(16,43,60,0.08)]" : "translate-x-full"}`,
6459
+ children: /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex h-[100dvh] max-h-screen w-full flex-col border-l border-blumine-100/50 bg-white/95 backdrop-blur-xl p-4 py-6", children: [
6460
+ !aiSummarized && /* @__PURE__ */ jsx("div", { className: "mb-4 shrink-0 flex justify-center", children: /* @__PURE__ */ jsx(
6409
6461
  summarize_button_default,
6410
6462
  {
6411
6463
  onSummarize: handleAISummarize,
6412
6464
  isSummarizing
6413
6465
  }
6414
- ),
6415
- /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-3 py-5 my-5 border-t border-t-[#eefafd] flex-1 overflow-hidden", children: [
6416
- /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between mb-6 shrink-0 px-1", children: [
6466
+ ) }),
6467
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-3 py-4 border-t border-blumine-100/40 flex-1 overflow-hidden", children: [
6468
+ /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-between mb-4 shrink-0 px-1", children: [
6417
6469
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
6418
- /* @__PURE__ */ jsx("div", { className: "relative flex h-8 w-8 items-center justify-center rounded-[10px] border border-[#15607b]/20 bg-white shadow-sm", children: /* @__PURE__ */ jsx(Video, { className: "h-4 w-4 text-[#15607b]" }) }),
6470
+ /* @__PURE__ */ jsx("div", { className: "relative flex h-10 w-10 items-center justify-center rounded-xl border border-blumine-200/60 bg-gradient-to-b from-white to-blumine-50/50 shadow-inner", children: /* @__PURE__ */ jsx(Video, { className: "h-5 w-5 text-blumine-600", strokeWidth: 1.5 }) }),
6419
6471
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
6420
- /* @__PURE__ */ jsx("h3", { className: "text-[12px] font-semibold uppercase tracking-[0.28em] text-[#134a61]", children: "Shots" }),
6421
- sceneType && /* @__PURE__ */ jsx("span", { className: "text-[9px] font-bold text-[#15607b] uppercase tracking-tighter opacity-80 mt-0.5", children: sceneType })
6472
+ /* @__PURE__ */ jsx("h3", { className: "text-[14px] font-bold uppercase tracking-wider text-blumine-800 leading-none", children: "Shots" }),
6473
+ sceneType && /* @__PURE__ */ jsx("span", { className: "text-[9px] font-bold text-blumine-500 uppercase tracking-wide opacity-80 mt-1", children: sceneType })
6422
6474
  ] })
6423
6475
  ] }),
6424
6476
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
@@ -6426,19 +6478,27 @@ function ShotBreakdownView({
6426
6478
  "button",
6427
6479
  {
6428
6480
  onClick: () => setIsInitModalOpen(true),
6429
- className: "flex h-7 w-7 items-center justify-center rounded-md border border-slate-200 bg-white shadow-sm transition-colors hover:bg-slate-50",
6481
+ className: "flex h-8 w-8 items-center justify-center rounded-lg border border-blumine-200/60 bg-gradient-to-b from-white to-blumine-50/50 text-blumine-600 shadow-sm transition duration-150 active:scale-95 hover:bg-blumine-100/60 hover:text-blumine-700",
6430
6482
  title: "Project Setup",
6431
- children: /* @__PURE__ */ jsx(Settings2, { className: "h-3.5 w-3.5 text-slate-600" })
6483
+ children: /* @__PURE__ */ jsx(Settings2, { className: "h-4 w-4", strokeWidth: 1.5 })
6432
6484
  }
6433
6485
  ),
6434
- shots.length > 0 && /* @__PURE__ */ jsx("span", { className: "rounded-md border border-slate-200 bg-white px-2 py-0.5 text-[10px] font-semibold text-slate-600 shadow-sm", children: shots.length })
6486
+ shots.length > 0 && /* @__PURE__ */ jsx("span", { className: "rounded-full border border-blumine-200/50 bg-blumine-50/80 px-2.5 py-0.5 text-[11px] font-bold text-blumine-700 shadow-sm", children: shots.length }),
6487
+ /* @__PURE__ */ jsx(
6488
+ "button",
6489
+ {
6490
+ onClick: () => setIsSidebarOpen(false),
6491
+ className: "flex xl:hidden h-8 w-8 items-center justify-center rounded-lg text-blumine-400 hover:bg-blumine-100 hover:text-blumine-700 transition duration-150 active:scale-95",
6492
+ children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" })
6493
+ }
6494
+ )
6435
6495
  ] })
6436
6496
  ] }),
6437
- shots.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center py-10 px-4 text-center", children: [
6438
- /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-slate-50 border border-slate-100 mb-3", children: /* @__PURE__ */ jsx(Video, { className: "h-4 w-4 text-slate-300" }) }),
6439
- /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold text-slate-700", children: "No shots created" }),
6440
- /* @__PURE__ */ jsx("p", { className: "text-[11px] text-slate-500 mt-1 max-w-[160px] leading-relaxed", children: "Highlight text in the screenplay to add your first shot." })
6441
- ] }) : /* @__PURE__ */ jsx("div", { className: "flex h-full max-h-[calc(100vh-200px)] flex-col gap-2.5 overflow-y-auto overflow-x-hidden pb-4 pr-2 custom-scrollbar", children: shots.map((shot) => {
6497
+ shots.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center py-12 px-4 text-center", children: [
6498
+ /* @__PURE__ */ jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-xl bg-gradient-to-b from-white to-blumine-50/30 border border-blumine-100/60 shadow-inner mb-4", children: /* @__PURE__ */ jsx(Video, { className: "h-5 w-5 text-blumine-400", strokeWidth: 1.5 }) }),
6499
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-blumine-800 tracking-wide", children: "No Shots Created Yet" }),
6500
+ /* @__PURE__ */ jsx("p", { className: "text-[11px] text-blumine-400 mt-2 max-w-[180px] leading-relaxed font-medium", children: "Highlight text in the screenplay to add your first camera shot." })
6501
+ ] }) : /* @__PURE__ */ jsx("div", { className: "flex h-full max-h-[calc(100vh-200px)] flex-col gap-3 overflow-y-auto overflow-x-hidden pb-4 pr-1 custom-scrollbar", children: shots.map((shot) => {
6442
6502
  const isActive = toggledShotId === shot.id;
6443
6503
  return /* @__PURE__ */ jsxs(
6444
6504
  "div",
@@ -6447,48 +6507,46 @@ function ShotBreakdownView({
6447
6507
  var _a2;
6448
6508
  return setToggledShotId(isActive ? null : (_a2 = shot.id) != null ? _a2 : null);
6449
6509
  },
6450
- className: `group relative flex-shrink-0 cursor-pointer rounded-xl border transition-all duration-300 overflow-hidden ${isActive ? "border-slate-900 bg-slate-50 shadow-[0_6px_20px_rgba(0,0,0,0.06)]" : "border-slate-200 bg-white hover:border-slate-300 hover:shadow-[0_4px_14px_rgba(0,0,0,0.05)]"}`,
6510
+ className: `group relative flex-shrink-0 cursor-pointer rounded-2xl border transition-all duration-300 overflow-hidden ${isActive ? "border-blumine-500 bg-blumine-50/30 shadow-[0_6px_20px_rgba(16,43,60,0.06)]" : "border-blumine-100/50 bg-white hover:border-blumine-300 hover:shadow-[0_4px_14px_rgba(16,43,60,0.03)]"}`,
6451
6511
  children: [
6452
6512
  /* @__PURE__ */ jsx(
6453
6513
  "div",
6454
6514
  {
6455
- className: `absolute left-0 top-0 h-full w-[3px] transition-all duration-300
6456
- ${isActive ? "bg-slate-900" : "bg-transparent group-hover:bg-slate-300"}`
6515
+ className: `absolute left-0 top-0 h-full w-[3px] transition-all duration-300 ${isActive ? "bg-blumine-500" : "bg-transparent group-hover:bg-blumine-300"}`
6457
6516
  }
6458
6517
  ),
6459
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 px-4 py-3.5", children: [
6518
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 px-4 py-3.5", children: [
6460
6519
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between", children: [
6461
6520
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
6462
6521
  /* @__PURE__ */ jsxs(
6463
6522
  "span",
6464
6523
  {
6465
- className: `text-[11px] font-semibold tracking-wide uppercase
6466
- ${isActive ? "text-slate-900" : "text-slate-500"}`,
6524
+ className: `text-[10px] font-bold tracking-wider uppercase ${isActive ? "text-blumine-500" : "text-blumine-400"}`,
6467
6525
  children: [
6468
6526
  "Shot ",
6469
6527
  shot.shot_number
6470
6528
  ]
6471
6529
  }
6472
6530
  ),
6473
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-slate-800 leading-tight", children: shot.camera_name || "Unknown Camera" })
6531
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-extrabold text-blumine-800 leading-tight mt-1", children: shot.camera_name || "Unknown Camera" })
6474
6532
  ] }),
6475
6533
  /* @__PURE__ */ jsx(
6476
6534
  "span",
6477
6535
  {
6478
- className: `rounded-md px-2 py-0.5 text-[8px] font-bold uppercase tracking-wider ${isActive ? "bg-slate-900 text-white" : "bg-slate-100 text-slate-500 group-hover:bg-slate-200"}`,
6536
+ className: `rounded-lg px-2.5 py-1 text-[9px] font-bold uppercase tracking-wider transition-colors duration-200 ${isActive ? "bg-blumine-600 text-white shadow-sm" : "bg-blumine-50/60 text-blumine-600 group-hover:bg-blumine-100"}`,
6479
6537
  children: shot.shot_type
6480
6538
  }
6481
6539
  )
6482
6540
  ] }),
6483
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-[11px] text-slate-500", children: [
6541
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-[11px] font-medium text-blumine-400", children: [
6484
6542
  /* @__PURE__ */ jsx("span", { children: shot.lens_mm ? `${shot.lens_mm}mm Lens` : "\u2014" }),
6485
- /* @__PURE__ */ jsx("span", { className: "opacity-60", children: "Tap to expand" })
6543
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-blumine-300 opacity-0 group-hover:opacity-100 transition-opacity duration-200", children: "Tap to expand" })
6486
6544
  ] }),
6487
6545
  /* @__PURE__ */ jsx(
6488
6546
  "div",
6489
6547
  {
6490
- className: `grid transition-all duration-300 ease-in-out ${isActive ? "grid-rows-[1fr] opacity-100 mt-2" : "grid-rows-[0fr] opacity-0"}`,
6491
- children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "py-3 pb-1 border-t border-slate-200/70 flex gap-2", children: [
6548
+ className: `grid transition-all duration-300 ease-in-out ${isActive ? "grid-rows-[1fr] opacity-100 mt-1" : "grid-rows-[0fr] opacity-0"}`,
6549
+ children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "pt-3 pb-1 border-t border-blumine-100/50 flex gap-2", children: [
6492
6550
  /* @__PURE__ */ jsxs(
6493
6551
  "button",
6494
6552
  {
@@ -6497,7 +6555,7 @@ function ShotBreakdownView({
6497
6555
  e.stopPropagation();
6498
6556
  setViewingShotId((_a2 = shot.id) != null ? _a2 : null);
6499
6557
  },
6500
- className: "flex flex-1 items-center justify-center gap-1.5 rounded-md border border-slate-200 bg-white py-2 text-[11px] font-semibold text-slate-700 transition-all hover:bg-slate-50 hover:text-slate-900",
6558
+ className: "flex flex-1 items-center justify-center gap-1.5 rounded-xl border border-blumine-200/60 bg-white py-2 text-[11px] font-bold text-blumine-700 transition-all hover:bg-blumine-50 hover:text-blumine-900 shadow-sm active:scale-[0.97]",
6501
6559
  children: [
6502
6560
  /* @__PURE__ */ jsx(Eye, { className: "h-3.5 w-3.5" }),
6503
6561
  "View"
@@ -6512,7 +6570,7 @@ function ShotBreakdownView({
6512
6570
  e.stopPropagation();
6513
6571
  setUpdatingShotId((_a2 = shot.id) != null ? _a2 : null);
6514
6572
  },
6515
- className: "flex flex-1 items-center justify-center gap-1.5 rounded-md bg-slate-900 py-2 text-[11px] font-semibold text-white transition-all hover:bg-slate-800",
6573
+ className: "flex flex-1 items-center justify-center gap-1.5 rounded-xl bg-gradient-to-b from-blumine-500 to-blumine-600 py-2 text-[11px] font-bold text-white transition-all hover:from-blumine-600 hover:to-blumine-700 shadow-md shadow-blumine-500/10 active:scale-[0.97]",
6516
6574
  children: [
6517
6575
  /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" }),
6518
6576
  "Edit"