@flamingo-stack/openframe-frontend-core 0.0.180 → 0.0.181
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/{chunk-JFGORTXV.cjs → chunk-L5AAJ3QN.cjs} +2 -33
- package/dist/chunk-L5AAJ3QN.cjs.map +1 -0
- package/dist/{chunk-DV2GT7RI.js → chunk-VEOBMVF5.js} +905 -936
- package/dist/chunk-VEOBMVF5.js.map +1 -0
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +2 -4
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +1 -3
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/ui/index.cjs +2 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +1 -3
- package/dist/components/ui/ticket-info-section.d.ts +1 -4
- package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
- package/dist/index.cjs +2 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -3
- package/package.json +1 -1
- package/src/components/ui/index.ts +0 -1
- package/src/components/ui/ticket-info-section.tsx +0 -11
- package/dist/chunk-DV2GT7RI.js.map +0 -1
- package/dist/chunk-JFGORTXV.cjs.map +0 -1
- package/dist/components/ui/ticket-knowledge-base-list.d.ts +0 -12
- package/dist/components/ui/ticket-knowledge-base-list.d.ts.map +0 -1
- package/src/components/ui/ticket-knowledge-base-list.tsx +0 -44
|
@@ -26256,34 +26256,6 @@ function TicketAttachmentsList({ attachments, className }) {
|
|
|
26256
26256
|
)) });
|
|
26257
26257
|
}
|
|
26258
26258
|
|
|
26259
|
-
// src/components/ui/ticket-knowledge-base-list.tsx
|
|
26260
|
-
init_cn();
|
|
26261
|
-
import { ChevronRight as ChevronRight11 } from "lucide-react";
|
|
26262
|
-
import { jsx as jsx239, jsxs as jsxs197 } from "react/jsx-runtime";
|
|
26263
|
-
function TicketKnowledgeBaseList({ articles, className }) {
|
|
26264
|
-
if (articles.length === 0) return null;
|
|
26265
|
-
return /* @__PURE__ */ jsx239("div", { className: cn("rounded-[6px] border border-ods-border overflow-hidden", className), children: articles.map((article, index) => /* @__PURE__ */ jsxs197(
|
|
26266
|
-
"button",
|
|
26267
|
-
{
|
|
26268
|
-
type: "button",
|
|
26269
|
-
onClick: article.onClick,
|
|
26270
|
-
className: cn(
|
|
26271
|
-
"flex items-center gap-4 px-4 py-3 w-full text-left bg-ods-card",
|
|
26272
|
-
"hover:bg-ods-bg-hover transition-colors",
|
|
26273
|
-
index < articles.length - 1 && "border-b border-ods-border"
|
|
26274
|
-
),
|
|
26275
|
-
children: [
|
|
26276
|
-
/* @__PURE__ */ jsxs197("div", { className: "flex-1 min-w-0 overflow-hidden", children: [
|
|
26277
|
-
/* @__PURE__ */ jsx239("p", { className: "text-h4 text-ods-text-primary truncate", children: article.title }),
|
|
26278
|
-
/* @__PURE__ */ jsx239("p", { className: "text-h6 text-ods-text-secondary truncate", children: article.description })
|
|
26279
|
-
] }),
|
|
26280
|
-
/* @__PURE__ */ jsx239(ChevronRight11, { className: "shrink-0 size-6 text-ods-text-secondary" })
|
|
26281
|
-
]
|
|
26282
|
-
},
|
|
26283
|
-
article.id
|
|
26284
|
-
)) });
|
|
26285
|
-
}
|
|
26286
|
-
|
|
26287
26259
|
// src/components/ui/ticket-notes-section.tsx
|
|
26288
26260
|
import * as React88 from "react";
|
|
26289
26261
|
init_cn();
|
|
@@ -26291,7 +26263,7 @@ init_cn();
|
|
|
26291
26263
|
// src/components/ui/ticket-note-card.tsx
|
|
26292
26264
|
import * as React87 from "react";
|
|
26293
26265
|
init_cn();
|
|
26294
|
-
import { Fragment as Fragment37, jsx as
|
|
26266
|
+
import { Fragment as Fragment37, jsx as jsx239, jsxs as jsxs197 } from "react/jsx-runtime";
|
|
26295
26267
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
26296
26268
|
const [isEditing, setIsEditing] = React87.useState(false);
|
|
26297
26269
|
const [editText, setEditText] = React87.useState(note.text);
|
|
@@ -26314,7 +26286,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26314
26286
|
handleCancel();
|
|
26315
26287
|
}
|
|
26316
26288
|
};
|
|
26317
|
-
return /* @__PURE__ */
|
|
26289
|
+
return /* @__PURE__ */ jsxs197(
|
|
26318
26290
|
"div",
|
|
26319
26291
|
{
|
|
26320
26292
|
className: cn(
|
|
@@ -26323,7 +26295,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26323
26295
|
className
|
|
26324
26296
|
),
|
|
26325
26297
|
children: [
|
|
26326
|
-
/* @__PURE__ */
|
|
26298
|
+
/* @__PURE__ */ jsx239(
|
|
26327
26299
|
SquareAvatar,
|
|
26328
26300
|
{
|
|
26329
26301
|
src: note.authorAvatar,
|
|
@@ -26334,8 +26306,8 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26334
26306
|
className: "shrink-0"
|
|
26335
26307
|
}
|
|
26336
26308
|
),
|
|
26337
|
-
/* @__PURE__ */
|
|
26338
|
-
/* @__PURE__ */
|
|
26309
|
+
/* @__PURE__ */ jsx239("div", { className: "flex-1 min-w-0 overflow-hidden", children: isEditing ? /* @__PURE__ */ jsxs197("div", { className: "flex items-center gap-2", children: [
|
|
26310
|
+
/* @__PURE__ */ jsx239("div", { className: "flex-1", children: /* @__PURE__ */ jsx239(
|
|
26339
26311
|
Input,
|
|
26340
26312
|
{
|
|
26341
26313
|
value: editText,
|
|
@@ -26344,7 +26316,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26344
26316
|
autoFocus: true
|
|
26345
26317
|
}
|
|
26346
26318
|
) }),
|
|
26347
|
-
/* @__PURE__ */
|
|
26319
|
+
/* @__PURE__ */ jsx239(
|
|
26348
26320
|
"button",
|
|
26349
26321
|
{
|
|
26350
26322
|
type: "button",
|
|
@@ -26352,46 +26324,46 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26352
26324
|
disabled: !editText.trim(),
|
|
26353
26325
|
className: "shrink-0 text-ods-success hover:text-ods-success/80 transition-colors disabled:opacity-50",
|
|
26354
26326
|
"aria-label": "Save note",
|
|
26355
|
-
children: /* @__PURE__ */
|
|
26327
|
+
children: /* @__PURE__ */ jsx239(CheckIcon, { className: "size-5" })
|
|
26356
26328
|
}
|
|
26357
26329
|
),
|
|
26358
|
-
/* @__PURE__ */
|
|
26330
|
+
/* @__PURE__ */ jsx239(
|
|
26359
26331
|
"button",
|
|
26360
26332
|
{
|
|
26361
26333
|
type: "button",
|
|
26362
26334
|
onClick: handleCancel,
|
|
26363
26335
|
className: "shrink-0 text-ods-text-secondary hover:text-ods-text-primary transition-colors",
|
|
26364
26336
|
"aria-label": "Cancel editing",
|
|
26365
|
-
children: /* @__PURE__ */
|
|
26337
|
+
children: /* @__PURE__ */ jsx239(XmarkIcon, { className: "size-5" })
|
|
26366
26338
|
}
|
|
26367
26339
|
)
|
|
26368
|
-
] }) : /* @__PURE__ */
|
|
26369
|
-
/* @__PURE__ */
|
|
26370
|
-
/* @__PURE__ */
|
|
26340
|
+
] }) : /* @__PURE__ */ jsxs197(Fragment37, { children: [
|
|
26341
|
+
/* @__PURE__ */ jsx239("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
26342
|
+
/* @__PURE__ */ jsxs197("p", { className: "text-h6 text-ods-text-secondary truncate", children: [
|
|
26371
26343
|
note.authorName,
|
|
26372
26344
|
" \u2022 ",
|
|
26373
26345
|
note.createdAt
|
|
26374
26346
|
] })
|
|
26375
26347
|
] }) }),
|
|
26376
|
-
note.isOwn && !isEditing && /* @__PURE__ */
|
|
26377
|
-
onDelete && /* @__PURE__ */
|
|
26348
|
+
note.isOwn && !isEditing && /* @__PURE__ */ jsxs197("div", { className: "flex items-center gap-4 shrink-0", children: [
|
|
26349
|
+
onDelete && /* @__PURE__ */ jsx239(
|
|
26378
26350
|
"button",
|
|
26379
26351
|
{
|
|
26380
26352
|
type: "button",
|
|
26381
26353
|
onClick: () => onDelete(note.id),
|
|
26382
26354
|
className: "text-ods-text-secondary hover:text-ods-error transition-colors",
|
|
26383
26355
|
"aria-label": "Delete note",
|
|
26384
|
-
children: /* @__PURE__ */
|
|
26356
|
+
children: /* @__PURE__ */ jsx239(TrashIcon, { className: "size-6" })
|
|
26385
26357
|
}
|
|
26386
26358
|
),
|
|
26387
|
-
onEdit && /* @__PURE__ */
|
|
26359
|
+
onEdit && /* @__PURE__ */ jsx239(
|
|
26388
26360
|
"button",
|
|
26389
26361
|
{
|
|
26390
26362
|
type: "button",
|
|
26391
26363
|
onClick: () => setIsEditing(true),
|
|
26392
26364
|
className: "text-ods-text-secondary hover:text-ods-text-primary transition-colors",
|
|
26393
26365
|
"aria-label": "Edit note",
|
|
26394
|
-
children: /* @__PURE__ */
|
|
26366
|
+
children: /* @__PURE__ */ jsx239(PenEditIcon, { className: "size-6" })
|
|
26395
26367
|
}
|
|
26396
26368
|
)
|
|
26397
26369
|
] })
|
|
@@ -26401,7 +26373,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26401
26373
|
}
|
|
26402
26374
|
|
|
26403
26375
|
// src/components/ui/ticket-notes-section.tsx
|
|
26404
|
-
import { jsx as
|
|
26376
|
+
import { jsx as jsx240, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
26405
26377
|
function TicketNotesSection({
|
|
26406
26378
|
notes,
|
|
26407
26379
|
onAddNote,
|
|
@@ -26423,8 +26395,8 @@ function TicketNotesSection({
|
|
|
26423
26395
|
handleSend();
|
|
26424
26396
|
}
|
|
26425
26397
|
};
|
|
26426
|
-
return /* @__PURE__ */
|
|
26427
|
-
notes.map((note) => /* @__PURE__ */
|
|
26398
|
+
return /* @__PURE__ */ jsxs198("div", { className: cn("flex flex-col gap-2", className), children: [
|
|
26399
|
+
notes.map((note) => /* @__PURE__ */ jsx240(
|
|
26428
26400
|
TicketNoteCard,
|
|
26429
26401
|
{
|
|
26430
26402
|
note,
|
|
@@ -26433,8 +26405,8 @@ function TicketNotesSection({
|
|
|
26433
26405
|
},
|
|
26434
26406
|
note.id
|
|
26435
26407
|
)),
|
|
26436
|
-
onAddNote && /* @__PURE__ */
|
|
26437
|
-
/* @__PURE__ */
|
|
26408
|
+
onAddNote && /* @__PURE__ */ jsxs198("div", { className: "flex items-center gap-2", children: [
|
|
26409
|
+
/* @__PURE__ */ jsx240("div", { className: "flex-1", children: /* @__PURE__ */ jsx240(
|
|
26438
26410
|
Input,
|
|
26439
26411
|
{
|
|
26440
26412
|
value: noteText,
|
|
@@ -26444,7 +26416,7 @@ function TicketNotesSection({
|
|
|
26444
26416
|
disabled: isAddingNote
|
|
26445
26417
|
}
|
|
26446
26418
|
) }),
|
|
26447
|
-
/* @__PURE__ */
|
|
26419
|
+
/* @__PURE__ */ jsx240(
|
|
26448
26420
|
"button",
|
|
26449
26421
|
{
|
|
26450
26422
|
type: "button",
|
|
@@ -26457,7 +26429,7 @@ function TicketNotesSection({
|
|
|
26457
26429
|
"disabled:opacity-50 disabled:cursor-not-allowed"
|
|
26458
26430
|
),
|
|
26459
26431
|
"aria-label": "Send note",
|
|
26460
|
-
children: /* @__PURE__ */
|
|
26432
|
+
children: /* @__PURE__ */ jsx240(Send03Icon, { className: "size-6 text-ods-text-secondary" })
|
|
26461
26433
|
}
|
|
26462
26434
|
)
|
|
26463
26435
|
] })
|
|
@@ -26465,12 +26437,12 @@ function TicketNotesSection({
|
|
|
26465
26437
|
}
|
|
26466
26438
|
|
|
26467
26439
|
// src/components/ui/ticket-info-section.tsx
|
|
26468
|
-
import { Fragment as Fragment38, jsx as
|
|
26440
|
+
import { Fragment as Fragment38, jsx as jsx241, jsxs as jsxs199 } from "react/jsx-runtime";
|
|
26469
26441
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
26470
|
-
return /* @__PURE__ */
|
|
26471
|
-
/* @__PURE__ */
|
|
26472
|
-
icon && /* @__PURE__ */
|
|
26473
|
-
onClick ? /* @__PURE__ */
|
|
26442
|
+
return /* @__PURE__ */ jsx241("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs199("div", { className: "flex flex-col justify-center", children: [
|
|
26443
|
+
/* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
26444
|
+
icon && /* @__PURE__ */ jsx241("span", { className: "shrink-0 size-4 flex items-center justify-center text-ods-text-secondary", children: icon }),
|
|
26445
|
+
onClick ? /* @__PURE__ */ jsx241(
|
|
26474
26446
|
"button",
|
|
26475
26447
|
{
|
|
26476
26448
|
type: "button",
|
|
@@ -26478,9 +26450,9 @@ function InfoCell2({ value, label, icon, onClick }) {
|
|
|
26478
26450
|
className: "text-h4 text-ods-text-primary truncate hover:text-ods-accent transition-colors cursor-pointer text-left",
|
|
26479
26451
|
children: value
|
|
26480
26452
|
}
|
|
26481
|
-
) : /* @__PURE__ */
|
|
26453
|
+
) : /* @__PURE__ */ jsx241("span", { className: "text-h4 text-ods-text-primary truncate", children: value })
|
|
26482
26454
|
] }),
|
|
26483
|
-
/* @__PURE__ */
|
|
26455
|
+
/* @__PURE__ */ jsx241("span", { className: "text-h6 text-ods-text-secondary truncate", children: label })
|
|
26484
26456
|
] }) });
|
|
26485
26457
|
}
|
|
26486
26458
|
function TicketInfoSection({
|
|
@@ -26495,14 +26467,13 @@ function TicketInfoSection({
|
|
|
26495
26467
|
description,
|
|
26496
26468
|
attachments,
|
|
26497
26469
|
tags,
|
|
26498
|
-
knowledgeBaseArticles,
|
|
26499
26470
|
notes,
|
|
26500
26471
|
onAddNote,
|
|
26501
26472
|
onEditNote,
|
|
26502
26473
|
onDeleteNote,
|
|
26503
26474
|
isAddingNote
|
|
26504
26475
|
}) {
|
|
26505
|
-
return /* @__PURE__ */
|
|
26476
|
+
return /* @__PURE__ */ jsxs199(
|
|
26506
26477
|
"div",
|
|
26507
26478
|
{
|
|
26508
26479
|
className: cn(
|
|
@@ -26510,9 +26481,9 @@ function TicketInfoSection({
|
|
|
26510
26481
|
className
|
|
26511
26482
|
),
|
|
26512
26483
|
children: [
|
|
26513
|
-
/* @__PURE__ */
|
|
26514
|
-
/* @__PURE__ */
|
|
26515
|
-
/* @__PURE__ */
|
|
26484
|
+
/* @__PURE__ */ jsxs199("div", { className: "grid grid-cols-2 lg:grid-cols-[1fr_1fr_1fr_auto] gap-4 px-4 py-3 bg-ods-card border-b border-ods-border items-center", children: [
|
|
26485
|
+
/* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
26486
|
+
/* @__PURE__ */ jsx241(
|
|
26516
26487
|
SquareAvatar,
|
|
26517
26488
|
{
|
|
26518
26489
|
src: organization?.imageSrc,
|
|
@@ -26522,9 +26493,9 @@ function TicketInfoSection({
|
|
|
26522
26493
|
className: "shrink-0"
|
|
26523
26494
|
}
|
|
26524
26495
|
),
|
|
26525
|
-
/* @__PURE__ */
|
|
26496
|
+
/* @__PURE__ */ jsx241(InfoCell2, { value: organization?.name || "Unassigned", label: "Organization" })
|
|
26526
26497
|
] }),
|
|
26527
|
-
/* @__PURE__ */
|
|
26498
|
+
/* @__PURE__ */ jsx241("div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ jsx241(
|
|
26528
26499
|
AssigneeDropdown,
|
|
26529
26500
|
{
|
|
26530
26501
|
currentAssignee: assigned.currentAssignee,
|
|
@@ -26533,14 +26504,14 @@ function TicketInfoSection({
|
|
|
26533
26504
|
isPending: assigned.isPending,
|
|
26534
26505
|
onAssign: assigned.onAssign
|
|
26535
26506
|
}
|
|
26536
|
-
) : /* @__PURE__ */
|
|
26537
|
-
/* @__PURE__ */
|
|
26538
|
-
/* @__PURE__ */
|
|
26539
|
-
/* @__PURE__ */
|
|
26507
|
+
) : /* @__PURE__ */ jsxs199("div", { className: "min-w-0", children: [
|
|
26508
|
+
/* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-1 text-h4 text-ods-text-secondary", children: [
|
|
26509
|
+
/* @__PURE__ */ jsx241(UserIcon2, { className: "size-4 shrink-0" }),
|
|
26510
|
+
/* @__PURE__ */ jsx241("span", { className: "truncate", children: "Unassigned" })
|
|
26540
26511
|
] }),
|
|
26541
|
-
/* @__PURE__ */
|
|
26512
|
+
/* @__PURE__ */ jsx241("span", { className: "text-h6 text-ods-text-secondary truncate block", children: "Assigned" })
|
|
26542
26513
|
] }) }),
|
|
26543
|
-
/* @__PURE__ */
|
|
26514
|
+
/* @__PURE__ */ jsx241(
|
|
26544
26515
|
InfoCell2,
|
|
26545
26516
|
{
|
|
26546
26517
|
value: device?.name || "Unassigned",
|
|
@@ -26549,9 +26520,9 @@ function TicketInfoSection({
|
|
|
26549
26520
|
onClick: device?.onClick
|
|
26550
26521
|
}
|
|
26551
26522
|
),
|
|
26552
|
-
/* @__PURE__ */
|
|
26553
|
-
status && /* @__PURE__ */
|
|
26554
|
-
onExpand && /* @__PURE__ */
|
|
26523
|
+
/* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
26524
|
+
status && /* @__PURE__ */ jsx241("div", { className: "min-w-0", children: /* @__PURE__ */ jsx241(TicketStatusTag, { status }) }),
|
|
26525
|
+
onExpand && /* @__PURE__ */ jsx241(
|
|
26555
26526
|
"button",
|
|
26556
26527
|
{
|
|
26557
26528
|
type: "button",
|
|
@@ -26562,7 +26533,7 @@ function TicketInfoSection({
|
|
|
26562
26533
|
"hover:bg-ods-bg-hover transition-colors duration-150"
|
|
26563
26534
|
),
|
|
26564
26535
|
"aria-label": expanded ? "Collapse" : "Expand",
|
|
26565
|
-
children: /* @__PURE__ */
|
|
26536
|
+
children: /* @__PURE__ */ jsx241(
|
|
26566
26537
|
Chevron02DownIcon,
|
|
26567
26538
|
{
|
|
26568
26539
|
className: cn(
|
|
@@ -26575,14 +26546,13 @@ function TicketInfoSection({
|
|
|
26575
26546
|
)
|
|
26576
26547
|
] })
|
|
26577
26548
|
] }),
|
|
26578
|
-
expanded && /* @__PURE__ */
|
|
26579
|
-
createdAt && /* @__PURE__ */
|
|
26580
|
-
/* @__PURE__ */
|
|
26581
|
-
description && /* @__PURE__ */
|
|
26582
|
-
attachments && attachments.length > 0 && /* @__PURE__ */
|
|
26583
|
-
tags && tags.length > 0 && /* @__PURE__ */
|
|
26584
|
-
|
|
26585
|
-
(notes || onAddNote) && /* @__PURE__ */ jsx242(TicketDetailSection, { label: "Notes", children: /* @__PURE__ */ jsx242(
|
|
26549
|
+
expanded && /* @__PURE__ */ jsxs199(Fragment38, { children: [
|
|
26550
|
+
createdAt && /* @__PURE__ */ jsx241("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx241(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
26551
|
+
/* @__PURE__ */ jsxs199("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
26552
|
+
description && /* @__PURE__ */ jsx241(SimpleMarkdownRenderer, { content: description }),
|
|
26553
|
+
attachments && attachments.length > 0 && /* @__PURE__ */ jsx241(TicketDetailSection, { label: "Attachments", children: /* @__PURE__ */ jsx241(TicketAttachmentsList, { attachments }) }),
|
|
26554
|
+
tags && tags.length > 0 && /* @__PURE__ */ jsx241(TicketDetailSection, { label: "Tags", children: /* @__PURE__ */ jsx241("div", { className: "flex flex-wrap gap-2 min-w-0", children: tags.map((tag) => /* @__PURE__ */ jsx241(Tag, { label: tag, variant: "outline", className: "max-w-full" }, tag)) }) }),
|
|
26555
|
+
(notes || onAddNote) && /* @__PURE__ */ jsx241(TicketDetailSection, { label: "Notes", children: /* @__PURE__ */ jsx241(
|
|
26586
26556
|
TicketNotesSection,
|
|
26587
26557
|
{
|
|
26588
26558
|
notes: notes || [],
|
|
@@ -26601,7 +26571,7 @@ function TicketInfoSection({
|
|
|
26601
26571
|
|
|
26602
26572
|
// src/components/features/array-entry-manager.tsx
|
|
26603
26573
|
import { Trash2 as Trash22, Plus as Plus2, Save, Loader2 as Loader26 } from "lucide-react";
|
|
26604
|
-
import { jsx as
|
|
26574
|
+
import { jsx as jsx242, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
26605
26575
|
function ArrayEntryManager({
|
|
26606
26576
|
title,
|
|
26607
26577
|
items,
|
|
@@ -26671,41 +26641,41 @@ function ArrayEntryManager({
|
|
|
26671
26641
|
}
|
|
26672
26642
|
onChange(newItems);
|
|
26673
26643
|
};
|
|
26674
|
-
return /* @__PURE__ */
|
|
26675
|
-
/* @__PURE__ */
|
|
26676
|
-
/* @__PURE__ */
|
|
26677
|
-
/* @__PURE__ */
|
|
26678
|
-
requireSave && isDirty && /* @__PURE__ */
|
|
26644
|
+
return /* @__PURE__ */ jsxs200("div", { className: `space-y-3 ${className}`, children: [
|
|
26645
|
+
/* @__PURE__ */ jsxs200("div", { className: "flex items-center justify-between", children: [
|
|
26646
|
+
/* @__PURE__ */ jsx242(Label, { className: "text-[14px] text-ods-text-primary", children: title }),
|
|
26647
|
+
/* @__PURE__ */ jsxs200("div", { className: "flex items-center gap-2", children: [
|
|
26648
|
+
requireSave && isDirty && /* @__PURE__ */ jsx242(
|
|
26679
26649
|
Button,
|
|
26680
26650
|
{
|
|
26681
26651
|
type: "button",
|
|
26682
26652
|
size: "small-legacy",
|
|
26683
26653
|
onClick: handleSave,
|
|
26684
26654
|
disabled: isSaving,
|
|
26685
|
-
leftIcon: isSaving ? /* @__PURE__ */
|
|
26655
|
+
leftIcon: isSaving ? /* @__PURE__ */ jsx242(Loader26, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx242(Save, { className: "h-4 w-4" }),
|
|
26686
26656
|
className: "font-['DM_Sans'] text-[14px] bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover",
|
|
26687
26657
|
children: isSaving ? "Saving..." : saveButtonText
|
|
26688
26658
|
}
|
|
26689
26659
|
),
|
|
26690
|
-
/* @__PURE__ */
|
|
26660
|
+
/* @__PURE__ */ jsx242(
|
|
26691
26661
|
Button,
|
|
26692
26662
|
{
|
|
26693
26663
|
type: "button",
|
|
26694
26664
|
variant: "outline",
|
|
26695
26665
|
size: "small-legacy",
|
|
26696
26666
|
onClick: addItem,
|
|
26697
|
-
leftIcon: /* @__PURE__ */
|
|
26667
|
+
leftIcon: /* @__PURE__ */ jsx242(Plus2, { className: "h-4 w-4" }),
|
|
26698
26668
|
className: "font-['DM_Sans'] text-[14px]",
|
|
26699
26669
|
children: addButtonText
|
|
26700
26670
|
}
|
|
26701
26671
|
)
|
|
26702
26672
|
] })
|
|
26703
26673
|
] }),
|
|
26704
|
-
workingItems.map((item, index) => /* @__PURE__ */
|
|
26705
|
-
icon && /* @__PURE__ */
|
|
26706
|
-
/* @__PURE__ */
|
|
26674
|
+
workingItems.map((item, index) => /* @__PURE__ */ jsxs200("div", { className: "flex items-center gap-3 p-3 bg-ods-bg-secondary rounded-lg border border-ods-border", children: [
|
|
26675
|
+
icon && /* @__PURE__ */ jsx242("div", { className: "w-8 h-8 flex items-center justify-center", children: icon }),
|
|
26676
|
+
/* @__PURE__ */ jsxs200("div", { className: "flex-1 space-y-2", children: [
|
|
26707
26677
|
renderLabel && renderLabel(item, index),
|
|
26708
|
-
/* @__PURE__ */
|
|
26678
|
+
/* @__PURE__ */ jsx242(
|
|
26709
26679
|
Input,
|
|
26710
26680
|
{
|
|
26711
26681
|
placeholder,
|
|
@@ -26717,7 +26687,7 @@ function ArrayEntryManager({
|
|
|
26717
26687
|
}
|
|
26718
26688
|
)
|
|
26719
26689
|
] }),
|
|
26720
|
-
/* @__PURE__ */
|
|
26690
|
+
/* @__PURE__ */ jsx242(
|
|
26721
26691
|
Button,
|
|
26722
26692
|
{
|
|
26723
26693
|
type: "button",
|
|
@@ -26725,18 +26695,18 @@ function ArrayEntryManager({
|
|
|
26725
26695
|
size: "icon",
|
|
26726
26696
|
onClick: () => removeItem(index),
|
|
26727
26697
|
className: "text-ods-attention-red-error hover:bg-ods-attention-red-error/10",
|
|
26728
|
-
children: /* @__PURE__ */
|
|
26698
|
+
children: /* @__PURE__ */ jsx242(Trash22, { className: "h-4 w-4" })
|
|
26729
26699
|
}
|
|
26730
26700
|
)
|
|
26731
26701
|
] }, index)),
|
|
26732
|
-
workingItems.length === 0 && /* @__PURE__ */
|
|
26702
|
+
workingItems.length === 0 && /* @__PURE__ */ jsx242("div", { className: "text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: /* @__PURE__ */ jsx242("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: emptyMessage }) })
|
|
26733
26703
|
] });
|
|
26734
26704
|
}
|
|
26735
26705
|
|
|
26736
26706
|
// src/components/features/provider-button.tsx
|
|
26737
26707
|
init_button2();
|
|
26738
26708
|
import { useState as useState58 } from "react";
|
|
26739
|
-
import { jsx as
|
|
26709
|
+
import { jsx as jsx243 } from "react/jsx-runtime";
|
|
26740
26710
|
var PROVIDER_CONFIG = {
|
|
26741
26711
|
microsoft: {
|
|
26742
26712
|
displayName: "Continue with Microsoft",
|
|
@@ -26779,7 +26749,7 @@ function ProviderButton({ provider, onClick, disabled = false, loading = false }
|
|
|
26779
26749
|
}
|
|
26780
26750
|
}
|
|
26781
26751
|
};
|
|
26782
|
-
return /* @__PURE__ */
|
|
26752
|
+
return /* @__PURE__ */ jsx243(
|
|
26783
26753
|
Button,
|
|
26784
26754
|
{
|
|
26785
26755
|
type: "button",
|
|
@@ -26787,7 +26757,7 @@ function ProviderButton({ provider, onClick, disabled = false, loading = false }
|
|
|
26787
26757
|
disabled: disabled || isLoading,
|
|
26788
26758
|
variant: "outline",
|
|
26789
26759
|
size: "default",
|
|
26790
|
-
leftIcon: isLoading ? null : /* @__PURE__ */
|
|
26760
|
+
leftIcon: isLoading ? null : /* @__PURE__ */ jsx243(IconComponent, { className: "w-5 h-5" }),
|
|
26791
26761
|
className: `
|
|
26792
26762
|
w-full md:!w-full h-[56px]
|
|
26793
26763
|
!text-[16px] !font-bold !leading-tight
|
|
@@ -26801,7 +26771,7 @@ function ProviderButton({ provider, onClick, disabled = false, loading = false }
|
|
|
26801
26771
|
}
|
|
26802
26772
|
|
|
26803
26773
|
// src/components/features/auth-providers-list.tsx
|
|
26804
|
-
import { jsx as
|
|
26774
|
+
import { jsx as jsx244, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
26805
26775
|
function AuthProvidersList({
|
|
26806
26776
|
enabledProviders,
|
|
26807
26777
|
onProviderClick,
|
|
@@ -26820,12 +26790,12 @@ function AuthProvidersList({
|
|
|
26820
26790
|
console.error(`\u274C Auth Providers List: Error with ${provider}:`, error);
|
|
26821
26791
|
}
|
|
26822
26792
|
};
|
|
26823
|
-
return /* @__PURE__ */
|
|
26824
|
-
showDivider && /* @__PURE__ */
|
|
26825
|
-
/* @__PURE__ */
|
|
26826
|
-
/* @__PURE__ */
|
|
26793
|
+
return /* @__PURE__ */ jsxs201("div", { className: "space-y-3", children: [
|
|
26794
|
+
showDivider && /* @__PURE__ */ jsxs201("div", { className: "relative", children: [
|
|
26795
|
+
/* @__PURE__ */ jsx244("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx244("div", { className: "w-full border-t border-ods-border" }) }),
|
|
26796
|
+
/* @__PURE__ */ jsx244("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsx244("span", { className: "px-2 bg-ods-card text-ods-text-secondary", children: dividerText }) })
|
|
26827
26797
|
] }),
|
|
26828
|
-
/* @__PURE__ */
|
|
26798
|
+
/* @__PURE__ */ jsx244("div", { className: `${orientation === "horizontal" ? "flex gap-2" : "space-y-2"}`, children: enabledProviders.filter((provider) => provider.enabled).map((provider) => /* @__PURE__ */ jsx244(
|
|
26829
26799
|
ProviderButton,
|
|
26830
26800
|
{
|
|
26831
26801
|
provider: provider.provider,
|
|
@@ -26841,7 +26811,7 @@ function AuthProvidersList({
|
|
|
26841
26811
|
// src/components/features/changelog-manager.tsx
|
|
26842
26812
|
import { Trash2 as Trash23, Plus as Plus3, ChevronDown as ChevronDown7, ChevronUp as ChevronUp3, Eye, EyeOff } from "lucide-react";
|
|
26843
26813
|
import { useState as useState59, useEffect as useEffect43 } from "react";
|
|
26844
|
-
import { jsx as
|
|
26814
|
+
import { jsx as jsx245, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
26845
26815
|
function ChangelogManager({
|
|
26846
26816
|
title,
|
|
26847
26817
|
entries,
|
|
@@ -26898,17 +26868,17 @@ function ChangelogManager({
|
|
|
26898
26868
|
return newSet;
|
|
26899
26869
|
});
|
|
26900
26870
|
};
|
|
26901
|
-
return /* @__PURE__ */
|
|
26902
|
-
/* @__PURE__ */
|
|
26903
|
-
/* @__PURE__ */
|
|
26904
|
-
/* @__PURE__ */
|
|
26871
|
+
return /* @__PURE__ */ jsxs202("div", { className: `space-y-3 ${className}`, children: [
|
|
26872
|
+
/* @__PURE__ */ jsxs202("div", { className: "flex items-center justify-between", children: [
|
|
26873
|
+
/* @__PURE__ */ jsx245(Label, { className: "text-[14px] text-ods-text-primary", children: title }),
|
|
26874
|
+
/* @__PURE__ */ jsx245(
|
|
26905
26875
|
Button,
|
|
26906
26876
|
{
|
|
26907
26877
|
type: "button",
|
|
26908
26878
|
variant: "outline",
|
|
26909
26879
|
size: "small-legacy",
|
|
26910
26880
|
onClick: addEntry,
|
|
26911
|
-
leftIcon: /* @__PURE__ */
|
|
26881
|
+
leftIcon: /* @__PURE__ */ jsx245(Plus3, { className: "h-4 w-4" }),
|
|
26912
26882
|
className: "font-['DM_Sans'] text-[14px]",
|
|
26913
26883
|
children: "Add Entry"
|
|
26914
26884
|
}
|
|
@@ -26917,9 +26887,9 @@ function ChangelogManager({
|
|
|
26917
26887
|
entries.map((entry, index) => {
|
|
26918
26888
|
const isExpanded = expandedIndices.has(index);
|
|
26919
26889
|
const hasContent = entry.title.trim().length > 0;
|
|
26920
|
-
return /* @__PURE__ */
|
|
26921
|
-
/* @__PURE__ */
|
|
26922
|
-
/* @__PURE__ */
|
|
26890
|
+
return /* @__PURE__ */ jsxs202("div", { className: "bg-ods-bg-secondary rounded-lg border border-ods-border overflow-hidden", children: [
|
|
26891
|
+
/* @__PURE__ */ jsxs202("div", { className: "flex items-center gap-3 p-3", children: [
|
|
26892
|
+
/* @__PURE__ */ jsx245(
|
|
26923
26893
|
Button,
|
|
26924
26894
|
{
|
|
26925
26895
|
type: "button",
|
|
@@ -26927,11 +26897,11 @@ function ChangelogManager({
|
|
|
26927
26897
|
size: "icon",
|
|
26928
26898
|
onClick: () => toggleExpanded(index),
|
|
26929
26899
|
className: "shrink-0",
|
|
26930
|
-
children: isExpanded ? /* @__PURE__ */
|
|
26900
|
+
children: isExpanded ? /* @__PURE__ */ jsx245(ChevronUp3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx245(ChevronDown7, { className: "h-4 w-4" })
|
|
26931
26901
|
}
|
|
26932
26902
|
),
|
|
26933
|
-
/* @__PURE__ */
|
|
26934
|
-
showVisibilityToggle && /* @__PURE__ */
|
|
26903
|
+
/* @__PURE__ */ jsx245("div", { className: "flex-1 min-w-0", children: hasContent ? /* @__PURE__ */ jsx245("p", { className: "font-['DM_Sans'] font-medium text-[14px] text-ods-text-primary truncate", children: entry.title }) : /* @__PURE__ */ jsx245("p", { className: "font-['DM_Sans'] font-medium text-[14px] text-ods-text-secondary italic", children: "New entry (click to edit)" }) }),
|
|
26904
|
+
showVisibilityToggle && /* @__PURE__ */ jsx245(
|
|
26935
26905
|
Button,
|
|
26936
26906
|
{
|
|
26937
26907
|
type: "button",
|
|
@@ -26940,10 +26910,10 @@ function ChangelogManager({
|
|
|
26940
26910
|
onClick: () => toggleVisibility(index),
|
|
26941
26911
|
className: "shrink-0",
|
|
26942
26912
|
title: (entry.visibility ?? "public") === "public" ? "Visible to investors" : "Internal only",
|
|
26943
|
-
children: (entry.visibility ?? "public") === "public" ? /* @__PURE__ */
|
|
26913
|
+
children: (entry.visibility ?? "public") === "public" ? /* @__PURE__ */ jsx245(Eye, { className: "h-4 w-4 text-ods-accent" }) : /* @__PURE__ */ jsx245(EyeOff, { className: "h-4 w-4 text-ods-text-secondary" })
|
|
26944
26914
|
}
|
|
26945
26915
|
),
|
|
26946
|
-
/* @__PURE__ */
|
|
26916
|
+
/* @__PURE__ */ jsx245(
|
|
26947
26917
|
Button,
|
|
26948
26918
|
{
|
|
26949
26919
|
type: "button",
|
|
@@ -26951,14 +26921,14 @@ function ChangelogManager({
|
|
|
26951
26921
|
size: "icon",
|
|
26952
26922
|
onClick: () => removeEntry(index),
|
|
26953
26923
|
className: "text-red-400 hover:text-red-300 hover:bg-red-400/10 shrink-0",
|
|
26954
|
-
children: /* @__PURE__ */
|
|
26924
|
+
children: /* @__PURE__ */ jsx245(Trash23, { className: "h-4 w-4" })
|
|
26955
26925
|
}
|
|
26956
26926
|
)
|
|
26957
26927
|
] }),
|
|
26958
|
-
isExpanded && /* @__PURE__ */
|
|
26959
|
-
/* @__PURE__ */
|
|
26960
|
-
/* @__PURE__ */
|
|
26961
|
-
/* @__PURE__ */
|
|
26928
|
+
isExpanded && /* @__PURE__ */ jsxs202("div", { className: "px-3 pb-3 space-y-3 border-t border-ods-border pt-3", children: [
|
|
26929
|
+
/* @__PURE__ */ jsxs202("div", { className: "space-y-1", children: [
|
|
26930
|
+
/* @__PURE__ */ jsx245(Label, { className: "text-[12px] text-ods-text-secondary", children: "Title *" }),
|
|
26931
|
+
/* @__PURE__ */ jsx245(
|
|
26962
26932
|
Input,
|
|
26963
26933
|
{
|
|
26964
26934
|
placeholder: "e.g., New dark mode theme support",
|
|
@@ -26969,9 +26939,9 @@ function ChangelogManager({
|
|
|
26969
26939
|
}
|
|
26970
26940
|
)
|
|
26971
26941
|
] }),
|
|
26972
|
-
/* @__PURE__ */
|
|
26973
|
-
/* @__PURE__ */
|
|
26974
|
-
/* @__PURE__ */
|
|
26942
|
+
/* @__PURE__ */ jsxs202("div", { className: "space-y-1", children: [
|
|
26943
|
+
/* @__PURE__ */ jsx245(Label, { className: "text-[12px] text-ods-text-secondary", children: "Description" }),
|
|
26944
|
+
/* @__PURE__ */ jsx245(
|
|
26975
26945
|
Textarea,
|
|
26976
26946
|
{
|
|
26977
26947
|
placeholder: "Detailed explanation of the change...",
|
|
@@ -26985,7 +26955,7 @@ function ChangelogManager({
|
|
|
26985
26955
|
] })
|
|
26986
26956
|
] }, index);
|
|
26987
26957
|
}),
|
|
26988
|
-
entries.length === 0 && /* @__PURE__ */
|
|
26958
|
+
entries.length === 0 && /* @__PURE__ */ jsx245("div", { className: "text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: /* @__PURE__ */ jsxs202("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: [
|
|
26989
26959
|
'No entries added. Click "Add Entry" to create ',
|
|
26990
26960
|
title.toLowerCase(),
|
|
26991
26961
|
"."
|
|
@@ -26994,7 +26964,7 @@ function ChangelogManager({
|
|
|
26994
26964
|
}
|
|
26995
26965
|
|
|
26996
26966
|
// src/components/features/changelog-sections-manager.tsx
|
|
26997
|
-
import { jsx as
|
|
26967
|
+
import { jsx as jsx246, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
26998
26968
|
function ChangelogSectionsManager({
|
|
26999
26969
|
featuresAdded,
|
|
27000
26970
|
bugsFixed,
|
|
@@ -27007,9 +26977,9 @@ function ChangelogSectionsManager({
|
|
|
27007
26977
|
className = "",
|
|
27008
26978
|
expandAll = false
|
|
27009
26979
|
}) {
|
|
27010
|
-
return /* @__PURE__ */
|
|
27011
|
-
/* @__PURE__ */
|
|
27012
|
-
/* @__PURE__ */
|
|
26980
|
+
return /* @__PURE__ */ jsxs203("div", { className: `space-y-6 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
26981
|
+
/* @__PURE__ */ jsx246("h3", { className: "text-h5 text-ods-text-primary", children: "Changelog" }),
|
|
26982
|
+
/* @__PURE__ */ jsx246(
|
|
27013
26983
|
ChangelogManager,
|
|
27014
26984
|
{
|
|
27015
26985
|
title: "Features Added",
|
|
@@ -27018,7 +26988,7 @@ function ChangelogSectionsManager({
|
|
|
27018
26988
|
expandAll
|
|
27019
26989
|
}
|
|
27020
26990
|
),
|
|
27021
|
-
/* @__PURE__ */
|
|
26991
|
+
/* @__PURE__ */ jsx246(
|
|
27022
26992
|
ChangelogManager,
|
|
27023
26993
|
{
|
|
27024
26994
|
title: "Bugs Fixed",
|
|
@@ -27027,7 +26997,7 @@ function ChangelogSectionsManager({
|
|
|
27027
26997
|
expandAll
|
|
27028
26998
|
}
|
|
27029
26999
|
),
|
|
27030
|
-
/* @__PURE__ */
|
|
27000
|
+
/* @__PURE__ */ jsx246(
|
|
27031
27001
|
ChangelogManager,
|
|
27032
27002
|
{
|
|
27033
27003
|
title: "Improvements",
|
|
@@ -27036,7 +27006,7 @@ function ChangelogSectionsManager({
|
|
|
27036
27006
|
expandAll
|
|
27037
27007
|
}
|
|
27038
27008
|
),
|
|
27039
|
-
/* @__PURE__ */
|
|
27009
|
+
/* @__PURE__ */ jsx246(
|
|
27040
27010
|
ChangelogManager,
|
|
27041
27011
|
{
|
|
27042
27012
|
title: "Breaking Changes",
|
|
@@ -27050,7 +27020,7 @@ function ChangelogSectionsManager({
|
|
|
27050
27020
|
|
|
27051
27021
|
// src/components/features/clickup-tasks-manager.tsx
|
|
27052
27022
|
import { Lightbulb } from "lucide-react";
|
|
27053
|
-
import { jsx as
|
|
27023
|
+
import { jsx as jsx247 } from "react/jsx-runtime";
|
|
27054
27024
|
function ClickUpTasksManager({
|
|
27055
27025
|
tasks,
|
|
27056
27026
|
onChange,
|
|
@@ -27058,7 +27028,7 @@ function ClickUpTasksManager({
|
|
|
27058
27028
|
// Default title
|
|
27059
27029
|
className = ""
|
|
27060
27030
|
}) {
|
|
27061
|
-
return /* @__PURE__ */
|
|
27031
|
+
return /* @__PURE__ */ jsx247(
|
|
27062
27032
|
ArrayEntryManager,
|
|
27063
27033
|
{
|
|
27064
27034
|
title,
|
|
@@ -27068,7 +27038,7 @@ function ClickUpTasksManager({
|
|
|
27068
27038
|
placeholder: "Task ID (e.g., 86cq2uabk)",
|
|
27069
27039
|
emptyMessage: 'No ClickUp tasks linked. Click "Add Task" to link roadmap items.',
|
|
27070
27040
|
addButtonText: "Add Task",
|
|
27071
|
-
icon: /* @__PURE__ */
|
|
27041
|
+
icon: /* @__PURE__ */ jsx247(Lightbulb, { className: "w-5 h-5 text-ods-text-secondary" }),
|
|
27072
27042
|
className
|
|
27073
27043
|
}
|
|
27074
27044
|
);
|
|
@@ -27077,7 +27047,7 @@ function ClickUpTasksManager({
|
|
|
27077
27047
|
// src/components/features/command-box.tsx
|
|
27078
27048
|
init_button2();
|
|
27079
27049
|
init_cn();
|
|
27080
|
-
import { jsx as
|
|
27050
|
+
import { jsx as jsx248, jsxs as jsxs204 } from "react/jsx-runtime";
|
|
27081
27051
|
var lineClampClasses = {
|
|
27082
27052
|
1: "line-clamp-1",
|
|
27083
27053
|
2: "line-clamp-2",
|
|
@@ -27096,10 +27066,10 @@ function CommandBox({
|
|
|
27096
27066
|
maxLines = 0
|
|
27097
27067
|
}) {
|
|
27098
27068
|
const lineClampClass = maxLines > 0 ? lineClampClasses[maxLines] : void 0;
|
|
27099
|
-
return /* @__PURE__ */
|
|
27100
|
-
title && /* @__PURE__ */
|
|
27101
|
-
/* @__PURE__ */
|
|
27102
|
-
/* @__PURE__ */
|
|
27069
|
+
return /* @__PURE__ */ jsxs204("div", { className: cn("flex flex-col gap-2", className), children: [
|
|
27070
|
+
title && /* @__PURE__ */ jsx248("div", { className: "text-ods-text-primary text-[18px] font-medium", children: title }),
|
|
27071
|
+
/* @__PURE__ */ jsxs204("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-4", children: [
|
|
27072
|
+
/* @__PURE__ */ jsx248(
|
|
27103
27073
|
"div",
|
|
27104
27074
|
{
|
|
27105
27075
|
className: cn(
|
|
@@ -27110,8 +27080,8 @@ function CommandBox({
|
|
|
27110
27080
|
children: command
|
|
27111
27081
|
}
|
|
27112
27082
|
),
|
|
27113
|
-
(primaryAction || secondaryAction) && /* @__PURE__ */
|
|
27114
|
-
secondaryAction && /* @__PURE__ */
|
|
27083
|
+
(primaryAction || secondaryAction) && /* @__PURE__ */ jsxs204("div", { className: "flex flex-col md:flex-row gap-3 md:justify-end mt-4", children: [
|
|
27084
|
+
secondaryAction && /* @__PURE__ */ jsx248(
|
|
27115
27085
|
Button,
|
|
27116
27086
|
{
|
|
27117
27087
|
variant: secondaryAction.variant || "outline",
|
|
@@ -27123,7 +27093,7 @@ function CommandBox({
|
|
|
27123
27093
|
children: secondaryAction.label
|
|
27124
27094
|
}
|
|
27125
27095
|
),
|
|
27126
|
-
primaryAction && /* @__PURE__ */
|
|
27096
|
+
primaryAction && /* @__PURE__ */ jsx248(
|
|
27127
27097
|
Button,
|
|
27128
27098
|
{
|
|
27129
27099
|
variant: primaryAction.variant || "accent",
|
|
@@ -27168,7 +27138,7 @@ import { useState as useState60, useRef as useRef37, useEffect as useEffect44, u
|
|
|
27168
27138
|
// src/components/features/section-selector.tsx
|
|
27169
27139
|
init_cn();
|
|
27170
27140
|
init_button2();
|
|
27171
|
-
import { jsx as
|
|
27141
|
+
import { jsx as jsx249, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
27172
27142
|
var SectionButton = ({
|
|
27173
27143
|
section,
|
|
27174
27144
|
isActive,
|
|
@@ -27185,7 +27155,7 @@ var SectionButton = ({
|
|
|
27185
27155
|
const subtitleClasses = "font-['DM_Sans'] text-ods-text-secondary";
|
|
27186
27156
|
const numberClasses = "font-['DM_Sans'] font-bold text-ods-accent";
|
|
27187
27157
|
const isDisabled = section.disabled || disabled;
|
|
27188
|
-
return /* @__PURE__ */
|
|
27158
|
+
return /* @__PURE__ */ jsx249(
|
|
27189
27159
|
Button,
|
|
27190
27160
|
{
|
|
27191
27161
|
onClick,
|
|
@@ -27209,13 +27179,13 @@ var SectionButton = ({
|
|
|
27209
27179
|
},
|
|
27210
27180
|
children: layout === "vertical" ? (
|
|
27211
27181
|
// Vertical layout with optional number prefix and leftIcon
|
|
27212
|
-
/* @__PURE__ */
|
|
27213
|
-
section.leftIcon && /* @__PURE__ */
|
|
27214
|
-
section.number && /* @__PURE__ */
|
|
27215
|
-
/* @__PURE__ */
|
|
27216
|
-
/* @__PURE__ */
|
|
27217
|
-
/* @__PURE__ */
|
|
27218
|
-
section.badge && /* @__PURE__ */
|
|
27182
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex gap-3 items-start w-full", children: [
|
|
27183
|
+
section.leftIcon && /* @__PURE__ */ jsx249("div", { className: "shrink-0 text-ods-text-primary opacity-70 mt-0.5", children: section.leftIcon }),
|
|
27184
|
+
section.number && /* @__PURE__ */ jsx249("span", { className: cn(numberClasses, "text-lg tracking-[-0.36px] leading-[24px] shrink-0"), children: section.number }),
|
|
27185
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex-1 text-left min-w-0", children: [
|
|
27186
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
27187
|
+
/* @__PURE__ */ jsx249("p", { className: cn(titleClasses, "font-medium text-lg leading-[24px] whitespace-normal break-words"), children: section.title }),
|
|
27188
|
+
section.badge && /* @__PURE__ */ jsx249(
|
|
27219
27189
|
StatusBadge,
|
|
27220
27190
|
{
|
|
27221
27191
|
text: section.badge.text,
|
|
@@ -27224,17 +27194,17 @@ var SectionButton = ({
|
|
|
27224
27194
|
}
|
|
27225
27195
|
)
|
|
27226
27196
|
] }),
|
|
27227
|
-
section.description && showDescription && /* @__PURE__ */
|
|
27197
|
+
section.description && showDescription && /* @__PURE__ */ jsx249("p", { className: cn(subtitleClasses, "text-sm mt-1 whitespace-normal break-words"), children: section.description })
|
|
27228
27198
|
] })
|
|
27229
27199
|
] })
|
|
27230
27200
|
) : (
|
|
27231
27201
|
// Wrap layout with title, subtitle, and optional leftIcon
|
|
27232
|
-
/* @__PURE__ */
|
|
27233
|
-
section.leftIcon && /* @__PURE__ */
|
|
27234
|
-
/* @__PURE__ */
|
|
27235
|
-
/* @__PURE__ */
|
|
27236
|
-
/* @__PURE__ */
|
|
27237
|
-
section.badge && /* @__PURE__ */
|
|
27202
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex gap-3 items-start justify-start w-full h-full", style: { textAlign: "left" }, children: [
|
|
27203
|
+
section.leftIcon && /* @__PURE__ */ jsx249("div", { className: "shrink-0 text-ods-text-primary opacity-70 mt-0.5", children: section.leftIcon }),
|
|
27204
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex flex-col items-start justify-start flex-1 gap-1", children: [
|
|
27205
|
+
/* @__PURE__ */ jsxs205("div", { className: "flex items-start gap-2 flex-wrap w-full", children: [
|
|
27206
|
+
/* @__PURE__ */ jsx249("span", { className: cn(titleClasses, "font-bold text-[18px] leading-[24px] tracking-[-0.36px]"), style: { textAlign: "left" }, children: section.title }),
|
|
27207
|
+
section.badge && /* @__PURE__ */ jsx249(
|
|
27238
27208
|
StatusBadge,
|
|
27239
27209
|
{
|
|
27240
27210
|
text: section.badge.text,
|
|
@@ -27243,7 +27213,7 @@ var SectionButton = ({
|
|
|
27243
27213
|
}
|
|
27244
27214
|
)
|
|
27245
27215
|
] }),
|
|
27246
|
-
section.subtitle && /* @__PURE__ */
|
|
27216
|
+
section.subtitle && /* @__PURE__ */ jsx249("div", { className: cn(subtitleClasses, "font-medium text-[14px] leading-[20px] w-full"), style: { textAlign: "left" }, children: section.subtitle })
|
|
27247
27217
|
] })
|
|
27248
27218
|
] })
|
|
27249
27219
|
)
|
|
@@ -27278,7 +27248,7 @@ var SectionSelector = ({
|
|
|
27278
27248
|
}
|
|
27279
27249
|
};
|
|
27280
27250
|
const widthClasses = getButtonWidthClasses();
|
|
27281
|
-
return /* @__PURE__ */
|
|
27251
|
+
return /* @__PURE__ */ jsx249("div", { className: containerClasses, children: sections.map((section) => /* @__PURE__ */ jsx249(
|
|
27282
27252
|
SectionButton,
|
|
27283
27253
|
{
|
|
27284
27254
|
section,
|
|
@@ -27297,7 +27267,7 @@ var SectionSelector = ({
|
|
|
27297
27267
|
};
|
|
27298
27268
|
|
|
27299
27269
|
// src/components/features/figma-prototype-viewer.tsx
|
|
27300
|
-
import { jsx as
|
|
27270
|
+
import { jsx as jsx250, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
27301
27271
|
var DESKTOP_BREAKPOINT = 768;
|
|
27302
27272
|
var getContentDimensions = (config) => {
|
|
27303
27273
|
const defaultMobile = { width: 343, height: 600 };
|
|
@@ -27407,11 +27377,11 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
27407
27377
|
embedUrl,
|
|
27408
27378
|
iframeKey
|
|
27409
27379
|
} = state;
|
|
27410
|
-
return /* @__PURE__ */
|
|
27380
|
+
return /* @__PURE__ */ jsxs206("div", { className: cn(
|
|
27411
27381
|
config.hideControls ? "" : "grid grid-cols-1 lg:grid-cols-[296px_1fr] gap-10",
|
|
27412
27382
|
config.className
|
|
27413
27383
|
), children: [
|
|
27414
|
-
showSectionSelector && !config.hideControls && /* @__PURE__ */
|
|
27384
|
+
showSectionSelector && !config.hideControls && /* @__PURE__ */ jsx250("div", { style: { zIndex: 10 }, children: /* @__PURE__ */ jsx250(
|
|
27415
27385
|
SectionSelector,
|
|
27416
27386
|
{
|
|
27417
27387
|
sections: config.sections.map((section) => ({
|
|
@@ -27430,7 +27400,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
27430
27400
|
minHeight: viewMode !== "DESKTOP" ? "76px" : "96px"
|
|
27431
27401
|
}
|
|
27432
27402
|
) }),
|
|
27433
|
-
/* @__PURE__ */
|
|
27403
|
+
/* @__PURE__ */ jsxs206(
|
|
27434
27404
|
"div",
|
|
27435
27405
|
{
|
|
27436
27406
|
className: cn(
|
|
@@ -27456,7 +27426,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
27456
27426
|
border: viewMode === "DESKTOP" ? void 0 : "none"
|
|
27457
27427
|
},
|
|
27458
27428
|
children: [
|
|
27459
|
-
showTouchOverlay && /* @__PURE__ */
|
|
27429
|
+
showTouchOverlay && /* @__PURE__ */ jsx250(
|
|
27460
27430
|
"div",
|
|
27461
27431
|
{
|
|
27462
27432
|
className: "absolute inset-0 w-full h-full",
|
|
@@ -27475,14 +27445,14 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
27475
27445
|
onTouchStart: handlers.onTouchStart
|
|
27476
27446
|
}
|
|
27477
27447
|
),
|
|
27478
|
-
showTouchBadge && /* @__PURE__ */
|
|
27448
|
+
showTouchBadge && /* @__PURE__ */ jsx250(
|
|
27479
27449
|
"div",
|
|
27480
27450
|
{
|
|
27481
27451
|
className: "absolute z-10 bottom-4 left-4",
|
|
27482
|
-
children: /* @__PURE__ */
|
|
27452
|
+
children: /* @__PURE__ */ jsx250(Badge, { variant: "secondary", className: "bg-black/70 text-white backdrop-blur-sm", children: "Tap twice to click" })
|
|
27483
27453
|
}
|
|
27484
27454
|
),
|
|
27485
|
-
/* @__PURE__ */
|
|
27455
|
+
/* @__PURE__ */ jsx250(
|
|
27486
27456
|
"iframe",
|
|
27487
27457
|
{
|
|
27488
27458
|
ref: iframeRef,
|
|
@@ -27511,14 +27481,14 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
27511
27481
|
},
|
|
27512
27482
|
iframeKey
|
|
27513
27483
|
),
|
|
27514
|
-
showSkeleton && /* @__PURE__ */
|
|
27515
|
-
/* @__PURE__ */
|
|
27484
|
+
showSkeleton && /* @__PURE__ */ jsx250("div", { className: "absolute inset-0 w-full h-full bg-ods-skeleton animate-pulse rounded-lg z-10 flex items-center justify-center", children: /* @__PURE__ */ jsxs206("div", { className: "text-center", children: [
|
|
27485
|
+
/* @__PURE__ */ jsxs206("div", { className: "text-xl md:text-2xl font-['Azeret_Mono'] font-semibold text-ods-text-primary", children: [
|
|
27516
27486
|
"Warming up ",
|
|
27517
|
-
/* @__PURE__ */
|
|
27487
|
+
/* @__PURE__ */ jsx250("span", { className: "text-[var(--ods-open-yellow-base)]", children: "Fae" }),
|
|
27518
27488
|
" and ",
|
|
27519
|
-
/* @__PURE__ */
|
|
27489
|
+
/* @__PURE__ */ jsx250("span", { className: "text-[var(--ods-open-yellow-base)]", children: "Mingo" })
|
|
27520
27490
|
] }),
|
|
27521
|
-
/* @__PURE__ */
|
|
27491
|
+
/* @__PURE__ */ jsx250("div", { className: "mt-2 text-sm text-ods-text-secondary", children: "Loading AI Co-Pilots..." })
|
|
27522
27492
|
] }) })
|
|
27523
27493
|
]
|
|
27524
27494
|
}
|
|
@@ -27729,65 +27699,65 @@ var FigmaPrototypeViewer = ({
|
|
|
27729
27699
|
if (touchTimerRef.current) clearTimeout(touchTimerRef.current);
|
|
27730
27700
|
};
|
|
27731
27701
|
}, []);
|
|
27732
|
-
return /* @__PURE__ */
|
|
27702
|
+
return /* @__PURE__ */ jsxs206("div", { ref: containerRef, children: [
|
|
27733
27703
|
renderUnifiedUI(unifiedState, {
|
|
27734
27704
|
onSectionClick: handleSectionClick,
|
|
27735
27705
|
onTouchStart: handleTouchStart
|
|
27736
27706
|
}, config, iframeRef),
|
|
27737
|
-
showDebugPanel && /* @__PURE__ */
|
|
27738
|
-
/* @__PURE__ */
|
|
27739
|
-
/* @__PURE__ */
|
|
27740
|
-
/* @__PURE__ */
|
|
27741
|
-
/* @__PURE__ */
|
|
27707
|
+
showDebugPanel && /* @__PURE__ */ jsxs206("div", { className: "mt-6 p-4 bg-ods-card border border-ods-border rounded-md", children: [
|
|
27708
|
+
/* @__PURE__ */ jsx250("h3", { className: "font-semibold text-ods-text-primary mb-3", children: "\u{1F50D} Debug Panel" }),
|
|
27709
|
+
/* @__PURE__ */ jsxs206("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [
|
|
27710
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27711
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "View Mode:" }),
|
|
27742
27712
|
" ",
|
|
27743
|
-
/* @__PURE__ */
|
|
27713
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: viewMode })
|
|
27744
27714
|
] }),
|
|
27745
|
-
/* @__PURE__ */
|
|
27746
|
-
/* @__PURE__ */
|
|
27715
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27716
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Iframe State:" }),
|
|
27747
27717
|
" ",
|
|
27748
|
-
/* @__PURE__ */
|
|
27718
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: iframeState })
|
|
27749
27719
|
] }),
|
|
27750
|
-
/* @__PURE__ */
|
|
27751
|
-
/* @__PURE__ */
|
|
27720
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27721
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Screen:" }),
|
|
27752
27722
|
" ",
|
|
27753
|
-
/* @__PURE__ */
|
|
27723
|
+
/* @__PURE__ */ jsxs206("span", { className: "text-ods-text-primary", children: [
|
|
27754
27724
|
screenWidth,
|
|
27755
27725
|
"px"
|
|
27756
27726
|
] })
|
|
27757
27727
|
] }),
|
|
27758
|
-
/* @__PURE__ */
|
|
27759
|
-
/* @__PURE__ */
|
|
27728
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27729
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Touch:" }),
|
|
27760
27730
|
" ",
|
|
27761
|
-
/* @__PURE__ */
|
|
27731
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary", children: isTouchDevice ? "Yes" : "No" })
|
|
27762
27732
|
] }),
|
|
27763
|
-
/* @__PURE__ */
|
|
27764
|
-
/* @__PURE__ */
|
|
27733
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27734
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Scale:" }),
|
|
27765
27735
|
" ",
|
|
27766
|
-
/* @__PURE__ */
|
|
27736
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary", children: scaling.scale.toFixed(2) })
|
|
27767
27737
|
] }),
|
|
27768
|
-
/* @__PURE__ */
|
|
27769
|
-
/* @__PURE__ */
|
|
27738
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27739
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Section:" }),
|
|
27770
27740
|
" ",
|
|
27771
|
-
/* @__PURE__ */
|
|
27741
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary", children: activeSection })
|
|
27772
27742
|
] }),
|
|
27773
|
-
/* @__PURE__ */
|
|
27774
|
-
/* @__PURE__ */
|
|
27743
|
+
/* @__PURE__ */ jsxs206("div", { className: "col-span-2", children: [
|
|
27744
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Active Node ID:" }),
|
|
27775
27745
|
" ",
|
|
27776
|
-
/* @__PURE__ */
|
|
27746
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: currentNodeId || "Not detected" })
|
|
27777
27747
|
] })
|
|
27778
27748
|
] }),
|
|
27779
|
-
/* @__PURE__ */
|
|
27749
|
+
/* @__PURE__ */ jsxs206("div", { className: "mt-3 text-xs text-ods-text-secondary", children: [
|
|
27780
27750
|
"Margins: ",
|
|
27781
27751
|
scaling.marginX.toFixed(0),
|
|
27782
27752
|
"px \xD7 ",
|
|
27783
27753
|
scaling.marginY.toFixed(0),
|
|
27784
27754
|
"px"
|
|
27785
27755
|
] }),
|
|
27786
|
-
/* @__PURE__ */
|
|
27787
|
-
/* @__PURE__ */
|
|
27788
|
-
/* @__PURE__ */
|
|
27756
|
+
/* @__PURE__ */ jsx250("div", { className: "mt-3 pt-3 border-t border-ods-border", children: /* @__PURE__ */ jsxs206("div", { className: "text-xs text-ods-text-secondary space-y-1", children: [
|
|
27757
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27758
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "File Key:" }),
|
|
27789
27759
|
" ",
|
|
27790
|
-
/* @__PURE__ */
|
|
27760
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
27791
27761
|
try {
|
|
27792
27762
|
return resolveFileKey(config, viewMode);
|
|
27793
27763
|
} catch (e) {
|
|
@@ -27795,10 +27765,10 @@ var FigmaPrototypeViewer = ({
|
|
|
27795
27765
|
}
|
|
27796
27766
|
})() })
|
|
27797
27767
|
] }),
|
|
27798
|
-
/* @__PURE__ */
|
|
27799
|
-
/* @__PURE__ */
|
|
27768
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27769
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Starting Point:" }),
|
|
27800
27770
|
" ",
|
|
27801
|
-
/* @__PURE__ */
|
|
27771
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
27802
27772
|
try {
|
|
27803
27773
|
return resolveStartingPoint(config, viewMode);
|
|
27804
27774
|
} catch (e) {
|
|
@@ -27806,10 +27776,10 @@ var FigmaPrototypeViewer = ({
|
|
|
27806
27776
|
}
|
|
27807
27777
|
})() })
|
|
27808
27778
|
] }),
|
|
27809
|
-
/* @__PURE__ */
|
|
27810
|
-
/* @__PURE__ */
|
|
27779
|
+
/* @__PURE__ */ jsxs206("div", { children: [
|
|
27780
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-secondary", children: "Content Dimensions:" }),
|
|
27811
27781
|
" ",
|
|
27812
|
-
/* @__PURE__ */
|
|
27782
|
+
/* @__PURE__ */ jsx250("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
27813
27783
|
try {
|
|
27814
27784
|
const dims = getContentDimensions(config);
|
|
27815
27785
|
const current = viewMode === "DESKTOP" ? dims.desktop : dims.mobile;
|
|
@@ -27827,9 +27797,9 @@ var FigmaPrototypeViewer = ({
|
|
|
27827
27797
|
// src/components/features/filters-dropdown.tsx
|
|
27828
27798
|
init_cn();
|
|
27829
27799
|
import { useEffect as useEffect45, useRef as useRef38, useState as useState61 } from "react";
|
|
27830
|
-
import { jsx as
|
|
27800
|
+
import { jsx as jsx251, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
27831
27801
|
var FilterCheckbox = ({ checked, disabled = false, className }) => {
|
|
27832
|
-
return /* @__PURE__ */
|
|
27802
|
+
return /* @__PURE__ */ jsx251(
|
|
27833
27803
|
"div",
|
|
27834
27804
|
{
|
|
27835
27805
|
role: "checkbox",
|
|
@@ -27841,7 +27811,7 @@ var FilterCheckbox = ({ checked, disabled = false, className }) => {
|
|
|
27841
27811
|
disabled && "opacity-50",
|
|
27842
27812
|
className
|
|
27843
27813
|
),
|
|
27844
|
-
children: checked && /* @__PURE__ */
|
|
27814
|
+
children: checked && /* @__PURE__ */ jsx251("div", { className: "absolute inset-0 flex items-center justify-center text-ods-text-on-accent", children: /* @__PURE__ */ jsx251(CheckboxCheckmarkIcon, { size: 10 }) })
|
|
27845
27815
|
}
|
|
27846
27816
|
);
|
|
27847
27817
|
};
|
|
@@ -28023,8 +27993,8 @@ var FiltersDropdown = ({
|
|
|
28023
27993
|
};
|
|
28024
27994
|
return desktopClasses[actualPlacement];
|
|
28025
27995
|
};
|
|
28026
|
-
return /* @__PURE__ */
|
|
28027
|
-
triggerElement ? /* @__PURE__ */
|
|
27996
|
+
return /* @__PURE__ */ jsxs207("div", { ref: containerRef, className: cn("relative inline-block", className), children: [
|
|
27997
|
+
triggerElement ? /* @__PURE__ */ jsx251("div", { ref: triggerRef, onClick: () => setIsOpen(!isOpen), children: triggerElement }) : /* @__PURE__ */ jsxs207(
|
|
28028
27998
|
"button",
|
|
28029
27999
|
{
|
|
28030
28000
|
ref: triggerRef,
|
|
@@ -28035,11 +28005,11 @@ var FiltersDropdown = ({
|
|
|
28035
28005
|
),
|
|
28036
28006
|
children: [
|
|
28037
28007
|
triggerLabel,
|
|
28038
|
-
getActiveFiltersCount() > 0 && /* @__PURE__ */
|
|
28008
|
+
getActiveFiltersCount() > 0 && /* @__PURE__ */ jsx251("span", { className: "size-1.5 rounded-full bg-ods-accent" })
|
|
28039
28009
|
]
|
|
28040
28010
|
}
|
|
28041
28011
|
),
|
|
28042
|
-
shouldRender && /* @__PURE__ */
|
|
28012
|
+
shouldRender && /* @__PURE__ */ jsx251(
|
|
28043
28013
|
"div",
|
|
28044
28014
|
{
|
|
28045
28015
|
ref: dropdownRef,
|
|
@@ -28057,19 +28027,19 @@ var FiltersDropdown = ({
|
|
|
28057
28027
|
style: isMobile ? {
|
|
28058
28028
|
top: triggerRef.current ? triggerRef.current.getBoundingClientRect().bottom + window.scrollY + 8 : 0
|
|
28059
28029
|
} : void 0,
|
|
28060
|
-
children: /* @__PURE__ */
|
|
28061
|
-
/* @__PURE__ */
|
|
28030
|
+
children: /* @__PURE__ */ jsxs207("div", { className: "bg-ods-bg rounded-md border border-ods-border p-4 shadow-xl flex flex-col overflow-hidden", children: [
|
|
28031
|
+
/* @__PURE__ */ jsx251("div", { className: "flex-1 min-h-0 overflow-y-auto max-h-[250px]", children: sections.map((section, sectionIndex) => {
|
|
28062
28032
|
const sectionSelection = selectedFilters[section.id] || [];
|
|
28063
28033
|
const allSelected = section.options.every(
|
|
28064
28034
|
(opt) => sectionSelection.includes(opt.id)
|
|
28065
28035
|
);
|
|
28066
|
-
return /* @__PURE__ */
|
|
28036
|
+
return /* @__PURE__ */ jsxs207("div", { className: cn(
|
|
28067
28037
|
"space-y-2",
|
|
28068
28038
|
sectionIndex > 0 && "mt-4"
|
|
28069
28039
|
), children: [
|
|
28070
|
-
/* @__PURE__ */
|
|
28071
|
-
/* @__PURE__ */
|
|
28072
|
-
section.allowSelectAll && section.type === "checkbox" && /* @__PURE__ */
|
|
28040
|
+
/* @__PURE__ */ jsxs207("div", { className: "sticky top-0 z-10 bg-ods-bg flex items-center justify-between pb-2", children: [
|
|
28041
|
+
/* @__PURE__ */ jsx251("h3", { className: "text-h5 text-ods-text-secondary", children: section.title }),
|
|
28042
|
+
section.allowSelectAll && section.type === "checkbox" && /* @__PURE__ */ jsx251(
|
|
28073
28043
|
"button",
|
|
28074
28044
|
{
|
|
28075
28045
|
onClick: () => handleSelectAll(section.id, section),
|
|
@@ -28078,9 +28048,9 @@ var FiltersDropdown = ({
|
|
|
28078
28048
|
}
|
|
28079
28049
|
)
|
|
28080
28050
|
] }),
|
|
28081
|
-
/* @__PURE__ */
|
|
28051
|
+
/* @__PURE__ */ jsx251("div", { className: "bg-ods-bg rounded-md border border-ods-border overflow-hidden", children: section.options.map((option, index) => {
|
|
28082
28052
|
if (option.type === "separator") {
|
|
28083
|
-
return /* @__PURE__ */
|
|
28053
|
+
return /* @__PURE__ */ jsx251(
|
|
28084
28054
|
"div",
|
|
28085
28055
|
{
|
|
28086
28056
|
className: "border-t border-ods-border my-1"
|
|
@@ -28090,7 +28060,7 @@ var FiltersDropdown = ({
|
|
|
28090
28060
|
}
|
|
28091
28061
|
const isSelected = sectionSelection.includes(option.id);
|
|
28092
28062
|
const isLast = index === section.options.length - 1;
|
|
28093
|
-
return /* @__PURE__ */
|
|
28063
|
+
return /* @__PURE__ */ jsxs207(
|
|
28094
28064
|
"button",
|
|
28095
28065
|
{
|
|
28096
28066
|
type: "button",
|
|
@@ -28102,9 +28072,9 @@ var FiltersDropdown = ({
|
|
|
28102
28072
|
"hover:bg-ods-bg-hover transition-colors"
|
|
28103
28073
|
),
|
|
28104
28074
|
children: [
|
|
28105
|
-
/* @__PURE__ */
|
|
28106
|
-
/* @__PURE__ */
|
|
28107
|
-
option.count !== void 0 && /* @__PURE__ */
|
|
28075
|
+
/* @__PURE__ */ jsx251(FilterCheckbox, { checked: isSelected }),
|
|
28076
|
+
/* @__PURE__ */ jsx251("span", { className: "flex-1 min-w-0 text-h4 text-ods-text-primary truncate", children: option.label }),
|
|
28077
|
+
option.count !== void 0 && /* @__PURE__ */ jsx251("span", { className: "shrink-0 text-h6 text-ods-text-secondary", children: option.count.toLocaleString() })
|
|
28108
28078
|
]
|
|
28109
28079
|
},
|
|
28110
28080
|
`${section.id}-${option.id}-${index}`
|
|
@@ -28112,8 +28082,8 @@ var FiltersDropdown = ({
|
|
|
28112
28082
|
}) })
|
|
28113
28083
|
] }, section.id);
|
|
28114
28084
|
}) }),
|
|
28115
|
-
/* @__PURE__ */
|
|
28116
|
-
/* @__PURE__ */
|
|
28085
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex gap-3 mt-4 shrink-0", children: [
|
|
28086
|
+
/* @__PURE__ */ jsx251(
|
|
28117
28087
|
Button,
|
|
28118
28088
|
{
|
|
28119
28089
|
variant: "outline",
|
|
@@ -28123,7 +28093,7 @@ var FiltersDropdown = ({
|
|
|
28123
28093
|
children: "Reset"
|
|
28124
28094
|
}
|
|
28125
28095
|
),
|
|
28126
|
-
/* @__PURE__ */
|
|
28096
|
+
/* @__PURE__ */ jsx251(
|
|
28127
28097
|
Button,
|
|
28128
28098
|
{
|
|
28129
28099
|
variant: "accent",
|
|
@@ -28172,13 +28142,13 @@ var useFiltersDropdown = (initialSections) => {
|
|
|
28172
28142
|
|
|
28173
28143
|
// src/components/features/github-releases-manager.tsx
|
|
28174
28144
|
import { ExternalLink as ExternalLink4 } from "lucide-react";
|
|
28175
|
-
import { jsx as
|
|
28145
|
+
import { jsx as jsx252 } from "react/jsx-runtime";
|
|
28176
28146
|
function GitHubReleasesManager({
|
|
28177
28147
|
releases,
|
|
28178
28148
|
onChange,
|
|
28179
28149
|
className = ""
|
|
28180
28150
|
}) {
|
|
28181
|
-
return /* @__PURE__ */
|
|
28151
|
+
return /* @__PURE__ */ jsx252(
|
|
28182
28152
|
ArrayEntryManager,
|
|
28183
28153
|
{
|
|
28184
28154
|
title: "GitHub Releases",
|
|
@@ -28188,7 +28158,7 @@ function GitHubReleasesManager({
|
|
|
28188
28158
|
placeholder: "https://github.com/org/repo/releases/tag/v2.0.0",
|
|
28189
28159
|
emptyMessage: 'No GitHub releases linked. Click "Add Release" to link releases.',
|
|
28190
28160
|
addButtonText: "Add Release",
|
|
28191
|
-
icon: /* @__PURE__ */
|
|
28161
|
+
icon: /* @__PURE__ */ jsx252(ExternalLink4, { className: "w-5 h-5 text-ods-text-secondary" }),
|
|
28192
28162
|
className
|
|
28193
28163
|
}
|
|
28194
28164
|
);
|
|
@@ -28196,13 +28166,13 @@ function GitHubReleasesManager({
|
|
|
28196
28166
|
|
|
28197
28167
|
// src/components/features/knowledge-base-links-manager.tsx
|
|
28198
28168
|
import { FileText as FileText4 } from "lucide-react";
|
|
28199
|
-
import { jsx as
|
|
28169
|
+
import { jsx as jsx253 } from "react/jsx-runtime";
|
|
28200
28170
|
function KnowledgeBaseLinksManager({
|
|
28201
28171
|
links,
|
|
28202
28172
|
onChange,
|
|
28203
28173
|
className = ""
|
|
28204
28174
|
}) {
|
|
28205
|
-
return /* @__PURE__ */
|
|
28175
|
+
return /* @__PURE__ */ jsx253(
|
|
28206
28176
|
ArrayEntryManager,
|
|
28207
28177
|
{
|
|
28208
28178
|
title: "Knowledge Base Articles",
|
|
@@ -28212,7 +28182,7 @@ function KnowledgeBaseLinksManager({
|
|
|
28212
28182
|
placeholder: "Relative path (e.g., /api/authentication/api-keys.md)",
|
|
28213
28183
|
emptyMessage: 'No knowledge base articles linked. Click "Add Article" to link articles.',
|
|
28214
28184
|
addButtonText: "Add Article",
|
|
28215
|
-
icon: /* @__PURE__ */
|
|
28185
|
+
icon: /* @__PURE__ */ jsx253(FileText4, { className: "w-5 h-5 text-ods-text-secondary" }),
|
|
28216
28186
|
className
|
|
28217
28187
|
}
|
|
28218
28188
|
);
|
|
@@ -28220,7 +28190,7 @@ function KnowledgeBaseLinksManager({
|
|
|
28220
28190
|
|
|
28221
28191
|
// src/components/features/loading-provider.tsx
|
|
28222
28192
|
import { createContext as createContext7, useContext as useContext7, useState as useState62, useEffect as useEffect46 } from "react";
|
|
28223
|
-
import { jsx as
|
|
28193
|
+
import { jsx as jsx254, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
28224
28194
|
var LoadingContext = createContext7(void 0);
|
|
28225
28195
|
function LoadingProvider({ children }) {
|
|
28226
28196
|
const [isLoading, setIsLoading] = useState62(false);
|
|
@@ -28249,8 +28219,8 @@ function LoadingProvider({ children }) {
|
|
|
28249
28219
|
if (interval) clearInterval(interval);
|
|
28250
28220
|
};
|
|
28251
28221
|
}, [isLoading]);
|
|
28252
|
-
return /* @__PURE__ */
|
|
28253
|
-
progress > 0 && /* @__PURE__ */
|
|
28222
|
+
return /* @__PURE__ */ jsxs208(LoadingContext.Provider, { value: { isLoading, setIsLoading }, children: [
|
|
28223
|
+
progress > 0 && /* @__PURE__ */ jsx254(
|
|
28254
28224
|
Progress,
|
|
28255
28225
|
{
|
|
28256
28226
|
value: progress,
|
|
@@ -28281,7 +28251,7 @@ import {
|
|
|
28281
28251
|
Plus as Plus4
|
|
28282
28252
|
} from "lucide-react";
|
|
28283
28253
|
import Image11 from "next/image";
|
|
28284
|
-
import { jsx as
|
|
28254
|
+
import { jsx as jsx255, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
28285
28255
|
function MediaGalleryManager({
|
|
28286
28256
|
media,
|
|
28287
28257
|
onChange,
|
|
@@ -28345,7 +28315,7 @@ function MediaGalleryManager({
|
|
|
28345
28315
|
}, [media, draggedIndex, onChange]);
|
|
28346
28316
|
const renderMediaItem = useCallback30((mediaItem, index) => {
|
|
28347
28317
|
const isDeleting = deletingIndex === index;
|
|
28348
|
-
return /* @__PURE__ */
|
|
28318
|
+
return /* @__PURE__ */ jsxs209(
|
|
28349
28319
|
Card,
|
|
28350
28320
|
{
|
|
28351
28321
|
className: "relative group border-ods-border hover:border-[#FFC008]/30 transition-colors",
|
|
@@ -28354,8 +28324,8 @@ function MediaGalleryManager({
|
|
|
28354
28324
|
onDragOver: handleDragOver,
|
|
28355
28325
|
onDrop: (e) => handleDrop(e, index),
|
|
28356
28326
|
children: [
|
|
28357
|
-
/* @__PURE__ */
|
|
28358
|
-
/* @__PURE__ */
|
|
28327
|
+
/* @__PURE__ */ jsx255("div", { className: "absolute top-2 left-2 opacity-0 group-hover:opacity-100 transition-opacity cursor-move z-10", children: /* @__PURE__ */ jsx255(GripVertical, { className: "h-4 w-4 text-white drop-shadow" }) }),
|
|
28328
|
+
/* @__PURE__ */ jsx255("div", { className: "absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity z-10", children: /* @__PURE__ */ jsx255(
|
|
28359
28329
|
Button,
|
|
28360
28330
|
{
|
|
28361
28331
|
type: "button",
|
|
@@ -28364,10 +28334,10 @@ function MediaGalleryManager({
|
|
|
28364
28334
|
onClick: () => handleDeleteMedia(index),
|
|
28365
28335
|
disabled: isDeleting,
|
|
28366
28336
|
className: "h-8 w-8 p-0 bg-red-500 hover:bg-red-600 border-red-500",
|
|
28367
|
-
children: isDeleting ? /* @__PURE__ */
|
|
28337
|
+
children: isDeleting ? /* @__PURE__ */ jsx255(Loader27, { className: "h-4 w-4 animate-spin text-white" }) : /* @__PURE__ */ jsx255(Trash24, { className: "h-4 w-4 text-white" })
|
|
28368
28338
|
}
|
|
28369
28339
|
) }),
|
|
28370
|
-
/* @__PURE__ */
|
|
28340
|
+
/* @__PURE__ */ jsx255("div", { className: "aspect-video relative bg-[#1A1A1A] rounded-lg overflow-hidden", children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ jsx255(
|
|
28371
28341
|
"video",
|
|
28372
28342
|
{
|
|
28373
28343
|
src: mediaItem.media_url,
|
|
@@ -28375,7 +28345,7 @@ function MediaGalleryManager({
|
|
|
28375
28345
|
controls: true,
|
|
28376
28346
|
preload: "metadata"
|
|
28377
28347
|
}
|
|
28378
|
-
) : /* @__PURE__ */
|
|
28348
|
+
) : /* @__PURE__ */ jsx255(
|
|
28379
28349
|
Image11,
|
|
28380
28350
|
{
|
|
28381
28351
|
src: mediaItem.media_url,
|
|
@@ -28385,40 +28355,40 @@ function MediaGalleryManager({
|
|
|
28385
28355
|
sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
|
|
28386
28356
|
}
|
|
28387
28357
|
) }),
|
|
28388
|
-
/* @__PURE__ */
|
|
28389
|
-
/* @__PURE__ */
|
|
28390
|
-
mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */
|
|
28391
|
-
/* @__PURE__ */
|
|
28358
|
+
/* @__PURE__ */ jsxs209("div", { className: "p-3", children: [
|
|
28359
|
+
/* @__PURE__ */ jsxs209("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
28360
|
+
mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ jsx255(Video4, { className: "h-4 w-4 text-ods-text-secondary" }) : /* @__PURE__ */ jsx255(ImageIcon2, { className: "h-4 w-4 text-ods-text-secondary" }),
|
|
28361
|
+
/* @__PURE__ */ jsx255("span", { className: "text-sm font-medium text-ods-text-primary capitalize", children: mediaItem.media_type })
|
|
28392
28362
|
] }),
|
|
28393
|
-
mediaItem.title && /* @__PURE__ */
|
|
28363
|
+
mediaItem.title && /* @__PURE__ */ jsx255("p", { className: "text-sm text-ods-text-secondary truncate", children: mediaItem.title })
|
|
28394
28364
|
] })
|
|
28395
28365
|
]
|
|
28396
28366
|
},
|
|
28397
28367
|
index
|
|
28398
28368
|
);
|
|
28399
28369
|
}, [deletingIndex, handleDragStart, handleDragOver, handleDrop, handleDeleteMedia]);
|
|
28400
|
-
const content = /* @__PURE__ */
|
|
28401
|
-
/* @__PURE__ */
|
|
28402
|
-
/* @__PURE__ */
|
|
28403
|
-
/* @__PURE__ */
|
|
28404
|
-
/* @__PURE__ */
|
|
28405
|
-
/* @__PURE__ */
|
|
28406
|
-
/* @__PURE__ */
|
|
28370
|
+
const content = /* @__PURE__ */ jsxs209("div", { className: `space-y-6 ${className}`, children: [
|
|
28371
|
+
/* @__PURE__ */ jsx255("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */ jsxs209("div", { className: "flex flex-col items-center gap-4", children: [
|
|
28372
|
+
/* @__PURE__ */ jsx255("div", { className: "w-12 h-12 rounded-full bg-ods-card flex items-center justify-center", children: isUploading ? /* @__PURE__ */ jsx255(Loader27, { className: "h-6 w-6 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsx255(Upload3, { className: "h-6 w-6 text-ods-accent" }) }),
|
|
28373
|
+
/* @__PURE__ */ jsxs209("div", { children: [
|
|
28374
|
+
/* @__PURE__ */ jsx255("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-1", children: isUploading ? "Uploading..." : "Upload Media" }),
|
|
28375
|
+
/* @__PURE__ */ jsx255("p", { className: "text-sm text-ods-text-secondary", children: "Drag and drop or click to select images and videos" }),
|
|
28376
|
+
/* @__PURE__ */ jsx255("p", { className: "text-xs text-ods-text-secondary mt-1", children: "Maximum file size: 50MB" })
|
|
28407
28377
|
] }),
|
|
28408
|
-
/* @__PURE__ */
|
|
28378
|
+
/* @__PURE__ */ jsx255(
|
|
28409
28379
|
Button,
|
|
28410
28380
|
{
|
|
28411
28381
|
type: "button",
|
|
28412
28382
|
variant: "outline",
|
|
28413
28383
|
onClick: () => fileInputRef.current?.click(),
|
|
28414
28384
|
disabled: isUploading,
|
|
28415
|
-
leftIcon: /* @__PURE__ */
|
|
28385
|
+
leftIcon: /* @__PURE__ */ jsx255(Plus4, { className: "h-4 w-4" }),
|
|
28416
28386
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
28417
28387
|
children: isUploading ? "Uploading..." : "Select Files"
|
|
28418
28388
|
}
|
|
28419
28389
|
)
|
|
28420
28390
|
] }) }),
|
|
28421
|
-
/* @__PURE__ */
|
|
28391
|
+
/* @__PURE__ */ jsx255(
|
|
28422
28392
|
"input",
|
|
28423
28393
|
{
|
|
28424
28394
|
ref: fileInputRef,
|
|
@@ -28429,20 +28399,20 @@ function MediaGalleryManager({
|
|
|
28429
28399
|
disabled: isUploading
|
|
28430
28400
|
}
|
|
28431
28401
|
),
|
|
28432
|
-
media.length === 0 ? /* @__PURE__ */
|
|
28433
|
-
/* @__PURE__ */
|
|
28434
|
-
/* @__PURE__ */
|
|
28435
|
-
/* @__PURE__ */
|
|
28436
|
-
] }) : /* @__PURE__ */
|
|
28437
|
-
/* @__PURE__ */
|
|
28438
|
-
/* @__PURE__ */
|
|
28402
|
+
media.length === 0 ? /* @__PURE__ */ jsxs209("div", { className: "text-center py-8", children: [
|
|
28403
|
+
/* @__PURE__ */ jsx255(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary mx-auto mb-4" }),
|
|
28404
|
+
/* @__PURE__ */ jsx255("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-2", children: "No media uploaded yet" }),
|
|
28405
|
+
/* @__PURE__ */ jsx255("p", { className: "text-sm text-ods-text-secondary", children: "Upload your first image or video to get started" })
|
|
28406
|
+
] }) : /* @__PURE__ */ jsxs209("div", { children: [
|
|
28407
|
+
/* @__PURE__ */ jsxs209("div", { className: "flex items-center justify-between mb-4", children: [
|
|
28408
|
+
/* @__PURE__ */ jsxs209("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary", children: [
|
|
28439
28409
|
"Media Gallery (",
|
|
28440
28410
|
media.length,
|
|
28441
28411
|
")"
|
|
28442
28412
|
] }),
|
|
28443
|
-
/* @__PURE__ */
|
|
28413
|
+
/* @__PURE__ */ jsx255("p", { className: "text-xs text-ods-text-secondary", children: "Drag to reorder" })
|
|
28444
28414
|
] }),
|
|
28445
|
-
/* @__PURE__ */
|
|
28415
|
+
/* @__PURE__ */ jsx255("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: media.map((item, index) => renderMediaItem(item, index)) })
|
|
28446
28416
|
] })
|
|
28447
28417
|
] });
|
|
28448
28418
|
return content;
|
|
@@ -28451,18 +28421,18 @@ function MediaGalleryManager({
|
|
|
28451
28421
|
// src/components/features/more-about-button.tsx
|
|
28452
28422
|
init_button2();
|
|
28453
28423
|
import { ArrowRight } from "lucide-react";
|
|
28454
|
-
import { jsx as
|
|
28424
|
+
import { jsx as jsx256 } from "react/jsx-runtime";
|
|
28455
28425
|
var MoreAboutButton = ({
|
|
28456
28426
|
href = "/openframe",
|
|
28457
28427
|
className = ""
|
|
28458
28428
|
}) => {
|
|
28459
|
-
return /* @__PURE__ */
|
|
28429
|
+
return /* @__PURE__ */ jsx256(
|
|
28460
28430
|
Button,
|
|
28461
28431
|
{
|
|
28462
28432
|
size: "default",
|
|
28463
28433
|
variant: "transparent",
|
|
28464
28434
|
className: `text-[var(--ods-open-yellow-base)] flex-shrink-0 ${className}`,
|
|
28465
|
-
rightIcon: /* @__PURE__ */
|
|
28435
|
+
rightIcon: /* @__PURE__ */ jsx256(ArrowRight, { className: "w-6 h-6" }),
|
|
28466
28436
|
href,
|
|
28467
28437
|
openInNewTab: !!href,
|
|
28468
28438
|
children: "Learn more"
|
|
@@ -28472,7 +28442,7 @@ var MoreAboutButton = ({
|
|
|
28472
28442
|
|
|
28473
28443
|
// src/components/features/os-type-badge-group.tsx
|
|
28474
28444
|
init_cn();
|
|
28475
|
-
import { jsx as
|
|
28445
|
+
import { jsx as jsx257, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
28476
28446
|
function OSTypeBadgeGroup({
|
|
28477
28447
|
osTypes,
|
|
28478
28448
|
className = "",
|
|
@@ -28484,8 +28454,8 @@ function OSTypeBadgeGroup({
|
|
|
28484
28454
|
}
|
|
28485
28455
|
const displayOsTypes = maxDisplay && osTypes.length > maxDisplay ? osTypes.slice(0, maxDisplay) : osTypes;
|
|
28486
28456
|
const remainingCount = maxDisplay && osTypes.length > maxDisplay ? osTypes.length - maxDisplay : 0;
|
|
28487
|
-
return /* @__PURE__ */
|
|
28488
|
-
displayOsTypes.map((osType, index) => /* @__PURE__ */
|
|
28457
|
+
return /* @__PURE__ */ jsxs210("div", { className: cn("flex items-center gap-2 flex-wrap", className), children: [
|
|
28458
|
+
displayOsTypes.map((osType, index) => /* @__PURE__ */ jsx257(
|
|
28489
28459
|
OSTypeBadge,
|
|
28490
28460
|
{
|
|
28491
28461
|
osType,
|
|
@@ -28494,7 +28464,7 @@ function OSTypeBadgeGroup({
|
|
|
28494
28464
|
},
|
|
28495
28465
|
`${osType}-${index}`
|
|
28496
28466
|
)),
|
|
28497
|
-
remainingCount > 0 && /* @__PURE__ */
|
|
28467
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs210("span", { className: "text-ods-text-secondary text-sm font-medium", children: [
|
|
28498
28468
|
"+",
|
|
28499
28469
|
remainingCount,
|
|
28500
28470
|
" more"
|
|
@@ -28506,7 +28476,7 @@ function OSTypeBadgeGroup({
|
|
|
28506
28476
|
import { useEffect as useEffect47, useState as useState64, useRef as useRef40 } from "react";
|
|
28507
28477
|
import Image12 from "next/image";
|
|
28508
28478
|
import { motion as motion2, useScroll, useTransform, useMotionValue, useSpring } from "framer-motion";
|
|
28509
|
-
import { jsx as
|
|
28479
|
+
import { jsx as jsx258, jsxs as jsxs211 } from "react/jsx-runtime";
|
|
28510
28480
|
var ParallaxImageShowcase = ({
|
|
28511
28481
|
images,
|
|
28512
28482
|
className = "",
|
|
@@ -28589,13 +28559,13 @@ var ParallaxImageShowcase = ({
|
|
|
28589
28559
|
[scrollRotateGrid, mouseRotateGrid],
|
|
28590
28560
|
([s, m]) => s + m
|
|
28591
28561
|
);
|
|
28592
|
-
return /* @__PURE__ */
|
|
28562
|
+
return /* @__PURE__ */ jsx258(
|
|
28593
28563
|
"div",
|
|
28594
28564
|
{
|
|
28595
28565
|
ref: componentRef,
|
|
28596
28566
|
className: `relative w-full h-full flex items-center ${className}`,
|
|
28597
|
-
children: /* @__PURE__ */
|
|
28598
|
-
leftImage && /* @__PURE__ */
|
|
28567
|
+
children: /* @__PURE__ */ jsxs211("div", { className: "w-full grid grid-cols-1 md:grid-cols-3 gap-4", children: [
|
|
28568
|
+
leftImage && /* @__PURE__ */ jsx258(
|
|
28599
28569
|
motion2.div,
|
|
28600
28570
|
{
|
|
28601
28571
|
className: "relative w-full",
|
|
@@ -28603,7 +28573,7 @@ var ParallaxImageShowcase = ({
|
|
|
28603
28573
|
y: yGrid,
|
|
28604
28574
|
rotate: rotateGrid
|
|
28605
28575
|
},
|
|
28606
|
-
children: /* @__PURE__ */
|
|
28576
|
+
children: /* @__PURE__ */ jsx258(
|
|
28607
28577
|
Image12,
|
|
28608
28578
|
{
|
|
28609
28579
|
src: leftImage.src,
|
|
@@ -28617,7 +28587,7 @@ var ParallaxImageShowcase = ({
|
|
|
28617
28587
|
)
|
|
28618
28588
|
}
|
|
28619
28589
|
),
|
|
28620
|
-
centerImage && /* @__PURE__ */
|
|
28590
|
+
centerImage && /* @__PURE__ */ jsx258(
|
|
28621
28591
|
motion2.div,
|
|
28622
28592
|
{
|
|
28623
28593
|
className: "relative w-full",
|
|
@@ -28625,7 +28595,7 @@ var ParallaxImageShowcase = ({
|
|
|
28625
28595
|
y: yGrid,
|
|
28626
28596
|
rotate: rotateGrid
|
|
28627
28597
|
},
|
|
28628
|
-
children: /* @__PURE__ */
|
|
28598
|
+
children: /* @__PURE__ */ jsx258(
|
|
28629
28599
|
Image12,
|
|
28630
28600
|
{
|
|
28631
28601
|
src: centerImage.src,
|
|
@@ -28639,7 +28609,7 @@ var ParallaxImageShowcase = ({
|
|
|
28639
28609
|
)
|
|
28640
28610
|
}
|
|
28641
28611
|
),
|
|
28642
|
-
rightImage && /* @__PURE__ */
|
|
28612
|
+
rightImage && /* @__PURE__ */ jsx258(
|
|
28643
28613
|
motion2.div,
|
|
28644
28614
|
{
|
|
28645
28615
|
className: "relative w-full",
|
|
@@ -28647,7 +28617,7 @@ var ParallaxImageShowcase = ({
|
|
|
28647
28617
|
y: yGrid,
|
|
28648
28618
|
rotate: rotateGrid
|
|
28649
28619
|
},
|
|
28650
|
-
children: /* @__PURE__ */
|
|
28620
|
+
children: /* @__PURE__ */ jsx258(
|
|
28651
28621
|
Image12,
|
|
28652
28622
|
{
|
|
28653
28623
|
src: rightImage.src,
|
|
@@ -28666,21 +28636,21 @@ var ParallaxImageShowcase = ({
|
|
|
28666
28636
|
);
|
|
28667
28637
|
}
|
|
28668
28638
|
if (layout === "boxed") {
|
|
28669
|
-
return /* @__PURE__ */
|
|
28639
|
+
return /* @__PURE__ */ jsxs211(
|
|
28670
28640
|
"div",
|
|
28671
28641
|
{
|
|
28672
28642
|
ref: componentRef,
|
|
28673
28643
|
className: `relative w-full h-full overflow-hidden ${className}`,
|
|
28674
28644
|
children: [
|
|
28675
|
-
logoElement && /* @__PURE__ */
|
|
28676
|
-
/* @__PURE__ */
|
|
28677
|
-
leftImage && /* @__PURE__ */
|
|
28645
|
+
logoElement && /* @__PURE__ */ jsx258("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 z-30 scale-50", children: logoElement }),
|
|
28646
|
+
/* @__PURE__ */ jsxs211("div", { className: "absolute top-32 inset-x-0 h-80", children: [
|
|
28647
|
+
leftImage && /* @__PURE__ */ jsxs211(
|
|
28678
28648
|
motion2.div,
|
|
28679
28649
|
{
|
|
28680
28650
|
className: "absolute left-20 lg:w-1/2 w-full h-full z-10",
|
|
28681
28651
|
style: { x, y, rotate },
|
|
28682
28652
|
children: [
|
|
28683
|
-
/* @__PURE__ */
|
|
28653
|
+
/* @__PURE__ */ jsx258(
|
|
28684
28654
|
Image12,
|
|
28685
28655
|
{
|
|
28686
28656
|
src: leftImage.src,
|
|
@@ -28690,17 +28660,17 @@ var ParallaxImageShowcase = ({
|
|
|
28690
28660
|
className: "object-[left_top] object-cover ods-card/50 border border-ods-border"
|
|
28691
28661
|
}
|
|
28692
28662
|
),
|
|
28693
|
-
/* @__PURE__ */
|
|
28663
|
+
/* @__PURE__ */ jsx258("div", { className: "absolute inset-0 shadow-2xl" })
|
|
28694
28664
|
]
|
|
28695
28665
|
}
|
|
28696
28666
|
),
|
|
28697
|
-
centerImage && /* @__PURE__ */
|
|
28667
|
+
centerImage && /* @__PURE__ */ jsxs211(
|
|
28698
28668
|
motion2.div,
|
|
28699
28669
|
{
|
|
28700
28670
|
className: "absolute top-20 right-20 lg:w-1/2 w-full h-full z-20",
|
|
28701
28671
|
style: { x, y, rotate },
|
|
28702
28672
|
children: [
|
|
28703
|
-
/* @__PURE__ */
|
|
28673
|
+
/* @__PURE__ */ jsx258(
|
|
28704
28674
|
Image12,
|
|
28705
28675
|
{
|
|
28706
28676
|
src: centerImage.src,
|
|
@@ -28710,7 +28680,7 @@ var ParallaxImageShowcase = ({
|
|
|
28710
28680
|
className: "object-[left_top] object-cover ods-card/50 border border-ods-border"
|
|
28711
28681
|
}
|
|
28712
28682
|
),
|
|
28713
|
-
/* @__PURE__ */
|
|
28683
|
+
/* @__PURE__ */ jsx258("div", { className: "absolute inset-0 shadow-2xl" })
|
|
28714
28684
|
]
|
|
28715
28685
|
}
|
|
28716
28686
|
)
|
|
@@ -28719,13 +28689,13 @@ var ParallaxImageShowcase = ({
|
|
|
28719
28689
|
}
|
|
28720
28690
|
);
|
|
28721
28691
|
}
|
|
28722
|
-
return /* @__PURE__ */
|
|
28692
|
+
return /* @__PURE__ */ jsxs211(
|
|
28723
28693
|
"div",
|
|
28724
28694
|
{
|
|
28725
28695
|
ref: componentRef,
|
|
28726
28696
|
className: `relative w-full h-full ${className}`,
|
|
28727
28697
|
children: [
|
|
28728
|
-
rightImage && /* @__PURE__ */
|
|
28698
|
+
rightImage && /* @__PURE__ */ jsx258(
|
|
28729
28699
|
motion2.div,
|
|
28730
28700
|
{
|
|
28731
28701
|
className: "absolute z-[1] \n w-[80%] h-[60%] top-[5%] right-[5%]\n lg:w-[120%] lg:h-[85%] lg:top-[-10%] lg:right-[-15%]",
|
|
@@ -28734,7 +28704,7 @@ var ParallaxImageShowcase = ({
|
|
|
28734
28704
|
y,
|
|
28735
28705
|
rotate
|
|
28736
28706
|
},
|
|
28737
|
-
children: /* @__PURE__ */
|
|
28707
|
+
children: /* @__PURE__ */ jsx258(
|
|
28738
28708
|
Image12,
|
|
28739
28709
|
{
|
|
28740
28710
|
src: rightImage.src,
|
|
@@ -28746,7 +28716,7 @@ var ParallaxImageShowcase = ({
|
|
|
28746
28716
|
)
|
|
28747
28717
|
}
|
|
28748
28718
|
),
|
|
28749
|
-
centerImage && /* @__PURE__ */
|
|
28719
|
+
centerImage && /* @__PURE__ */ jsx258(
|
|
28750
28720
|
motion2.div,
|
|
28751
28721
|
{
|
|
28752
28722
|
className: "absolute z-[2]\n w-[75%] h-[55%] bottom-[10%] right-[0%]\n lg:w-[100%] lg:h-[80%] lg:bottom-[-15%] lg:right-[-20%]",
|
|
@@ -28755,7 +28725,7 @@ var ParallaxImageShowcase = ({
|
|
|
28755
28725
|
y,
|
|
28756
28726
|
rotate
|
|
28757
28727
|
},
|
|
28758
|
-
children: /* @__PURE__ */
|
|
28728
|
+
children: /* @__PURE__ */ jsx258(
|
|
28759
28729
|
Image12,
|
|
28760
28730
|
{
|
|
28761
28731
|
src: centerImage.src,
|
|
@@ -28767,7 +28737,7 @@ var ParallaxImageShowcase = ({
|
|
|
28767
28737
|
)
|
|
28768
28738
|
}
|
|
28769
28739
|
),
|
|
28770
|
-
leftImage && /* @__PURE__ */
|
|
28740
|
+
leftImage && /* @__PURE__ */ jsx258(
|
|
28771
28741
|
motion2.div,
|
|
28772
28742
|
{
|
|
28773
28743
|
className: "absolute z-[3]\n w-[85%] h-[65%] top-[10%] left-[-5%]\n lg:w-[110%] lg:h-[90%] lg:top-[0%] lg:left-[-25%]",
|
|
@@ -28776,7 +28746,7 @@ var ParallaxImageShowcase = ({
|
|
|
28776
28746
|
y,
|
|
28777
28747
|
rotate
|
|
28778
28748
|
},
|
|
28779
|
-
children: /* @__PURE__ */
|
|
28749
|
+
children: /* @__PURE__ */ jsx258(
|
|
28780
28750
|
Image12,
|
|
28781
28751
|
{
|
|
28782
28752
|
src: leftImage.src,
|
|
@@ -28797,7 +28767,7 @@ var ParallaxImageShowcase = ({
|
|
|
28797
28767
|
init_button2();
|
|
28798
28768
|
init_cn();
|
|
28799
28769
|
import { Copy } from "lucide-react";
|
|
28800
|
-
import { jsx as
|
|
28770
|
+
import { jsx as jsx259, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
28801
28771
|
function PathsDisplay({
|
|
28802
28772
|
paths,
|
|
28803
28773
|
onCopyPath,
|
|
@@ -28810,23 +28780,23 @@ function PathsDisplay({
|
|
|
28810
28780
|
if (!paths || paths.length === 0) {
|
|
28811
28781
|
return null;
|
|
28812
28782
|
}
|
|
28813
|
-
return /* @__PURE__ */
|
|
28814
|
-
title && /* @__PURE__ */
|
|
28815
|
-
description && /* @__PURE__ */
|
|
28816
|
-
/* @__PURE__ */
|
|
28783
|
+
return /* @__PURE__ */ jsxs212("div", { className: cn("flex flex-col gap-3", className), children: [
|
|
28784
|
+
title && /* @__PURE__ */ jsx259("div", { className: "text-ods-text-primary text-[16px] md:text-[18px]", children: title }),
|
|
28785
|
+
description && /* @__PURE__ */ jsx259("div", { className: "text-ods-text-secondary text-[14px] md:text-[16px]", children: description }),
|
|
28786
|
+
/* @__PURE__ */ jsx259("div", { className: "bg-ods-bg border border-ods-border rounded-[6px] overflow-hidden", children: paths.map((path) => /* @__PURE__ */ jsxs212(
|
|
28817
28787
|
"div",
|
|
28818
28788
|
{
|
|
28819
28789
|
className: "flex items-center justify-between p-4 border-b border-ods-border last:border-b-0",
|
|
28820
28790
|
children: [
|
|
28821
|
-
/* @__PURE__ */
|
|
28822
|
-
showCopyButtons && onCopyPath && /* @__PURE__ */
|
|
28791
|
+
/* @__PURE__ */ jsx259("span", { className: "text-ods-text-primary font-medium text-[14px] md:text-[16px] font-mono break-all", children: path }),
|
|
28792
|
+
showCopyButtons && onCopyPath && /* @__PURE__ */ jsx259(
|
|
28823
28793
|
Button,
|
|
28824
28794
|
{
|
|
28825
28795
|
variant: "transparent",
|
|
28826
28796
|
size: "small-legacy",
|
|
28827
28797
|
onClick: () => onCopyPath(path),
|
|
28828
28798
|
className: "ml-4 shrink-0",
|
|
28829
|
-
children: /* @__PURE__ */
|
|
28799
|
+
children: /* @__PURE__ */ jsx259(Copy, { className: copyIconSize })
|
|
28830
28800
|
}
|
|
28831
28801
|
)
|
|
28832
28802
|
]
|
|
@@ -28861,7 +28831,7 @@ function getOpenFramePaths(platform) {
|
|
|
28861
28831
|
// src/components/features/platform-badge.tsx
|
|
28862
28832
|
init_cn();
|
|
28863
28833
|
import { Globe as Globe2 } from "lucide-react";
|
|
28864
|
-
import { jsx as
|
|
28834
|
+
import { jsx as jsx260, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
28865
28835
|
var sizeClasses4 = {
|
|
28866
28836
|
xs: {
|
|
28867
28837
|
container: "gap-1 px-1.5 py-0.5",
|
|
@@ -28941,22 +28911,22 @@ var PlatformIcon = ({ platform, className }) => {
|
|
|
28941
28911
|
const size = sizeMatch ? parseInt(sizeMatch[1]) * 4 : 16;
|
|
28942
28912
|
switch (platform) {
|
|
28943
28913
|
case "openmsp":
|
|
28944
|
-
return /* @__PURE__ */
|
|
28914
|
+
return /* @__PURE__ */ jsx260(OpenmspLogo, { className, frontBubbleColor: "currentColor", innerFrontBubbleColor: "#000000", backBubbleColor: "currentColor" });
|
|
28945
28915
|
case "flamingo":
|
|
28946
28916
|
case "flamingo-teaser":
|
|
28947
|
-
return /* @__PURE__ */
|
|
28917
|
+
return /* @__PURE__ */ jsx260(FlamingoLogo, { className });
|
|
28948
28918
|
case "openframe":
|
|
28949
|
-
return /* @__PURE__ */
|
|
28919
|
+
return /* @__PURE__ */ jsx260(OpenFrameLogo, { className });
|
|
28950
28920
|
case "tmcg":
|
|
28951
|
-
return /* @__PURE__ */
|
|
28921
|
+
return /* @__PURE__ */ jsx260(MiamiCyberGangLogoFaceOnly, { size, className });
|
|
28952
28922
|
case "company-hub":
|
|
28953
28923
|
case "marketing-hub":
|
|
28954
28924
|
case "product-hub":
|
|
28955
28925
|
case "revenue-hub":
|
|
28956
28926
|
case "people-hub":
|
|
28957
|
-
return /* @__PURE__ */
|
|
28927
|
+
return /* @__PURE__ */ jsx260(FlamingoLogo, { className, fill: "currentColor" });
|
|
28958
28928
|
default:
|
|
28959
|
-
return /* @__PURE__ */
|
|
28929
|
+
return /* @__PURE__ */ jsx260(Globe2, { className });
|
|
28960
28930
|
}
|
|
28961
28931
|
};
|
|
28962
28932
|
function PlatformBadge({
|
|
@@ -28970,7 +28940,7 @@ function PlatformBadge({
|
|
|
28970
28940
|
}
|
|
28971
28941
|
const sizes = sizeClasses4[size];
|
|
28972
28942
|
const colors = platformColors[platform.name] || platformColors.universal;
|
|
28973
|
-
return /* @__PURE__ */
|
|
28943
|
+
return /* @__PURE__ */ jsxs213(
|
|
28974
28944
|
"div",
|
|
28975
28945
|
{
|
|
28976
28946
|
className: cn(
|
|
@@ -28983,8 +28953,8 @@ function PlatformBadge({
|
|
|
28983
28953
|
className
|
|
28984
28954
|
),
|
|
28985
28955
|
children: [
|
|
28986
|
-
/* @__PURE__ */
|
|
28987
|
-
showLabel && /* @__PURE__ */
|
|
28956
|
+
/* @__PURE__ */ jsx260(PlatformIcon, { platform: platform.name, className: sizes.icon }),
|
|
28957
|
+
showLabel && /* @__PURE__ */ jsx260("span", { className: sizes.text, children: platform.display_name || platform.name })
|
|
28988
28958
|
]
|
|
28989
28959
|
}
|
|
28990
28960
|
);
|
|
@@ -28992,7 +28962,7 @@ function PlatformBadge({
|
|
|
28992
28962
|
|
|
28993
28963
|
// src/components/features/platform-filter.tsx
|
|
28994
28964
|
init_button2();
|
|
28995
|
-
import { jsx as
|
|
28965
|
+
import { jsx as jsx261, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
28996
28966
|
function PlatformFilterComponent({
|
|
28997
28967
|
selectedPlatform,
|
|
28998
28968
|
onPlatformChange,
|
|
@@ -29001,8 +28971,8 @@ function PlatformFilterComponent({
|
|
|
29001
28971
|
showIcons = true,
|
|
29002
28972
|
size = "small-legacy"
|
|
29003
28973
|
}) {
|
|
29004
|
-
return /* @__PURE__ */
|
|
29005
|
-
/* @__PURE__ */
|
|
28974
|
+
return /* @__PURE__ */ jsxs214("div", { className: `flex items-center gap-2 flex-wrap ${className}`, children: [
|
|
28975
|
+
/* @__PURE__ */ jsx261(
|
|
29006
28976
|
Button,
|
|
29007
28977
|
{
|
|
29008
28978
|
type: "button",
|
|
@@ -29013,7 +28983,7 @@ function PlatformFilterComponent({
|
|
|
29013
28983
|
children: "All Platforms"
|
|
29014
28984
|
}
|
|
29015
28985
|
),
|
|
29016
|
-
platforms.map((platform) => /* @__PURE__ */
|
|
28986
|
+
platforms.map((platform) => /* @__PURE__ */ jsx261(
|
|
29017
28987
|
Button,
|
|
29018
28988
|
{
|
|
29019
28989
|
type: "button",
|
|
@@ -29031,26 +29001,26 @@ function PlatformFilterComponent({
|
|
|
29031
29001
|
|
|
29032
29002
|
// src/components/features/push-button-selector.tsx
|
|
29033
29003
|
import { Check as Check4 } from "lucide-react";
|
|
29034
|
-
import { jsx as
|
|
29004
|
+
import { jsx as jsx262, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
29035
29005
|
function PushButtonSelectorSkeleton({ count = 3, hasTitle }) {
|
|
29036
|
-
return /* @__PURE__ */
|
|
29037
|
-
hasTitle && /* @__PURE__ */
|
|
29038
|
-
/* @__PURE__ */
|
|
29039
|
-
/* @__PURE__ */
|
|
29040
|
-
/* @__PURE__ */
|
|
29041
|
-
/* @__PURE__ */
|
|
29042
|
-
/* @__PURE__ */
|
|
29043
|
-
/* @__PURE__ */
|
|
29006
|
+
return /* @__PURE__ */ jsxs215("div", { className: "space-y-3", children: [
|
|
29007
|
+
hasTitle && /* @__PURE__ */ jsx262("div", { className: "h-5 w-20 bg-ods-bg-secondary rounded animate-pulse" }),
|
|
29008
|
+
/* @__PURE__ */ jsx262("div", { className: "space-y-3", children: [...Array(count)].map((_, i) => /* @__PURE__ */ jsx262("div", { className: "p-4 rounded-lg border border-ods-border bg-ods-bg-secondary animate-pulse", children: /* @__PURE__ */ jsxs215("div", { className: "flex items-center justify-between", children: [
|
|
29009
|
+
/* @__PURE__ */ jsxs215("div", { className: "flex items-center gap-3", children: [
|
|
29010
|
+
/* @__PURE__ */ jsx262("div", { className: "w-8 h-8 bg-ods-bg-primary rounded" }),
|
|
29011
|
+
/* @__PURE__ */ jsxs215("div", { children: [
|
|
29012
|
+
/* @__PURE__ */ jsx262("div", { className: "h-4 w-20 bg-ods-bg-primary rounded mb-1" }),
|
|
29013
|
+
/* @__PURE__ */ jsx262("div", { className: "h-3 w-32 bg-ods-bg-primary rounded" })
|
|
29044
29014
|
] })
|
|
29045
29015
|
] }),
|
|
29046
|
-
/* @__PURE__ */
|
|
29016
|
+
/* @__PURE__ */ jsx262("div", { className: "w-6 h-6 bg-ods-bg-primary rounded border-2 border-ods-border" })
|
|
29047
29017
|
] }) }, i)) })
|
|
29048
29018
|
] });
|
|
29049
29019
|
}
|
|
29050
29020
|
function PushButtonSelectorError({ message, title }) {
|
|
29051
|
-
return /* @__PURE__ */
|
|
29052
|
-
title && /* @__PURE__ */
|
|
29053
|
-
/* @__PURE__ */
|
|
29021
|
+
return /* @__PURE__ */ jsxs215("div", { className: "space-y-3", children: [
|
|
29022
|
+
title && /* @__PURE__ */ jsx262("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
29023
|
+
/* @__PURE__ */ jsx262("div", { className: "p-4 bg-ods-attention-red-error-secondary border border-ods-attention-red-error/30 rounded-lg", children: /* @__PURE__ */ jsxs215("div", { className: "font-['DM_Sans'] text-[14px] text-ods-attention-red-error", children: [
|
|
29054
29024
|
"\u26A0\uFE0F ",
|
|
29055
29025
|
message
|
|
29056
29026
|
] }) })
|
|
@@ -29072,10 +29042,10 @@ function PushButtonSelector({
|
|
|
29072
29042
|
sections
|
|
29073
29043
|
}) {
|
|
29074
29044
|
if (isLoading) {
|
|
29075
|
-
return /* @__PURE__ */
|
|
29045
|
+
return /* @__PURE__ */ jsx262("div", { className, children: /* @__PURE__ */ jsx262(PushButtonSelectorSkeleton, { count: skeletonCount, hasTitle: !!title }) });
|
|
29076
29046
|
}
|
|
29077
29047
|
if (error) {
|
|
29078
|
-
return /* @__PURE__ */
|
|
29048
|
+
return /* @__PURE__ */ jsx262("div", { className, children: /* @__PURE__ */ jsx262(PushButtonSelectorError, { message: error, title }) });
|
|
29079
29049
|
}
|
|
29080
29050
|
const validSelectedIds = options.length > 0 ? selectedIds.filter((id) => options.some((option) => option.id === id)) : selectedIds;
|
|
29081
29051
|
if (process.env.NODE_ENV === "development" && options.length > 0 && validSelectedIds.length !== selectedIds.length) {
|
|
@@ -29097,7 +29067,7 @@ function PushButtonSelector({
|
|
|
29097
29067
|
const getSelectedOptions = () => options.filter((option) => validSelectedIds.includes(option.id));
|
|
29098
29068
|
const renderOption = (option) => {
|
|
29099
29069
|
const isSelected = validSelectedIds.includes(option.id);
|
|
29100
|
-
return /* @__PURE__ */
|
|
29070
|
+
return /* @__PURE__ */ jsx262(
|
|
29101
29071
|
"div",
|
|
29102
29072
|
{
|
|
29103
29073
|
className: `
|
|
@@ -29105,18 +29075,18 @@ function PushButtonSelector({
|
|
|
29105
29075
|
${option.disabled ? "cursor-not-allowed opacity-40 bg-ods-card border-ods-border" : isSelected ? "cursor-pointer bg-ods-bg-secondary border-ods-accent shadow-sm" : "cursor-pointer bg-ods-bg-primary border-ods-border hover:border-ods-border-hover hover:bg-ods-bg-hover"}
|
|
29106
29076
|
`,
|
|
29107
29077
|
onClick: () => !option.disabled && toggleSelection(option.id),
|
|
29108
|
-
children: /* @__PURE__ */
|
|
29109
|
-
/* @__PURE__ */
|
|
29110
|
-
option.icon && /* @__PURE__ */
|
|
29111
|
-
/* @__PURE__ */
|
|
29112
|
-
/* @__PURE__ */
|
|
29113
|
-
option.description && /* @__PURE__ */
|
|
29078
|
+
children: /* @__PURE__ */ jsxs215("div", { className: "flex items-center justify-between gap-4", children: [
|
|
29079
|
+
/* @__PURE__ */ jsxs215("div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
29080
|
+
option.icon && /* @__PURE__ */ jsx262("div", { className: `flex-shrink-0 transition-transform duration-200 ${isSelected ? "scale-110" : "group-hover:scale-105"}`, children: option.icon }),
|
|
29081
|
+
/* @__PURE__ */ jsxs215("div", { className: "flex-1 min-w-0", children: [
|
|
29082
|
+
/* @__PURE__ */ jsx262("div", { className: "font-['DM_Sans'] text-[16px] font-semibold text-ods-text-primary", children: option.displayName || option.name }),
|
|
29083
|
+
option.description && /* @__PURE__ */ jsx262("div", { className: "font-['DM_Sans'] text-[12px] text-ods-text-secondary line-clamp-2", children: option.description })
|
|
29114
29084
|
] })
|
|
29115
29085
|
] }),
|
|
29116
|
-
/* @__PURE__ */
|
|
29086
|
+
/* @__PURE__ */ jsx262("div", { className: `
|
|
29117
29087
|
flex-shrink-0 w-6 h-6 rounded border-2 flex items-center justify-center transition-all duration-200
|
|
29118
29088
|
${isSelected ? "bg-ods-accent border-ods-accent scale-110" : "border-ods-border group-hover:border-ods-border-hover"}
|
|
29119
|
-
`, children: isSelected && /* @__PURE__ */
|
|
29089
|
+
`, children: isSelected && /* @__PURE__ */ jsx262(Check4, { className: "w-4 h-4 text-ods-text-primary font-bold", strokeWidth: 3 }) })
|
|
29120
29090
|
] })
|
|
29121
29091
|
},
|
|
29122
29092
|
option.id
|
|
@@ -29124,7 +29094,7 @@ function PushButtonSelector({
|
|
|
29124
29094
|
};
|
|
29125
29095
|
const renderOptionsContent = () => {
|
|
29126
29096
|
if (!sections || sections.length === 0) {
|
|
29127
|
-
return /* @__PURE__ */
|
|
29097
|
+
return /* @__PURE__ */ jsx262("div", { className: "space-y-3", children: options.map(renderOption) });
|
|
29128
29098
|
}
|
|
29129
29099
|
const optionsBySection = /* @__PURE__ */ new Map();
|
|
29130
29100
|
const ungroupedOptions = [];
|
|
@@ -29136,38 +29106,38 @@ function PushButtonSelector({
|
|
|
29136
29106
|
ungroupedOptions.push(option);
|
|
29137
29107
|
}
|
|
29138
29108
|
});
|
|
29139
|
-
return /* @__PURE__ */
|
|
29109
|
+
return /* @__PURE__ */ jsxs215("div", { className: "space-y-4", children: [
|
|
29140
29110
|
sections.map((section) => {
|
|
29141
29111
|
const sectionOptions = optionsBySection.get(section.id) || [];
|
|
29142
29112
|
if (sectionOptions.length === 0) return null;
|
|
29143
|
-
return /* @__PURE__ */
|
|
29144
|
-
/* @__PURE__ */
|
|
29145
|
-
section.icon && /* @__PURE__ */
|
|
29146
|
-
/* @__PURE__ */
|
|
29147
|
-
/* @__PURE__ */
|
|
29148
|
-
section.description && /* @__PURE__ */
|
|
29113
|
+
return /* @__PURE__ */ jsxs215("div", { className: "space-y-2", children: [
|
|
29114
|
+
/* @__PURE__ */ jsxs215("div", { className: "flex items-center gap-2 px-1", children: [
|
|
29115
|
+
section.icon && /* @__PURE__ */ jsx262("div", { className: "text-ods-text-secondary", children: section.icon }),
|
|
29116
|
+
/* @__PURE__ */ jsxs215("div", { children: [
|
|
29117
|
+
/* @__PURE__ */ jsx262("div", { className: "font-['DM_Sans'] text-[14px] font-semibold text-ods-text-primary", children: section.label }),
|
|
29118
|
+
section.description && /* @__PURE__ */ jsx262("div", { className: "font-['DM_Sans'] text-[11px] text-ods-text-tertiary", children: section.description })
|
|
29149
29119
|
] })
|
|
29150
29120
|
] }),
|
|
29151
|
-
/* @__PURE__ */
|
|
29121
|
+
/* @__PURE__ */ jsx262("div", { className: "space-y-2", children: sectionOptions.map(renderOption) })
|
|
29152
29122
|
] }, section.id);
|
|
29153
29123
|
}),
|
|
29154
|
-
ungroupedOptions.length > 0 && /* @__PURE__ */
|
|
29124
|
+
ungroupedOptions.length > 0 && /* @__PURE__ */ jsx262("div", { className: "space-y-2", children: ungroupedOptions.map(renderOption) })
|
|
29155
29125
|
] });
|
|
29156
29126
|
};
|
|
29157
|
-
return /* @__PURE__ */
|
|
29158
|
-
title && /* @__PURE__ */
|
|
29127
|
+
return /* @__PURE__ */ jsxs215("div", { className: `space-y-4 ${className}`, children: [
|
|
29128
|
+
title && /* @__PURE__ */ jsx262("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
29159
29129
|
renderOptionsContent(),
|
|
29160
|
-
selectionSummary && validSelectedIds.length > 0 && /* @__PURE__ */
|
|
29161
|
-
/* @__PURE__ */
|
|
29162
|
-
/* @__PURE__ */
|
|
29163
|
-
/* @__PURE__ */
|
|
29130
|
+
selectionSummary && validSelectedIds.length > 0 && /* @__PURE__ */ jsxs215("div", { className: "p-4 bg-ods-attention-green-success-secondary border border-ods-attention-green-success/30 rounded-lg", children: [
|
|
29131
|
+
/* @__PURE__ */ jsxs215("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
29132
|
+
/* @__PURE__ */ jsx262("div", { className: "w-2 h-2 bg-ods-attention-green-success rounded-full" }),
|
|
29133
|
+
/* @__PURE__ */ jsxs215("span", { className: "font-['DM_Sans'] text-[14px] text-ods-attention-green-success font-medium", children: [
|
|
29164
29134
|
validSelectedIds.length,
|
|
29165
29135
|
" ",
|
|
29166
29136
|
multiSelect ? "items" : "item",
|
|
29167
29137
|
" selected"
|
|
29168
29138
|
] })
|
|
29169
29139
|
] }),
|
|
29170
|
-
/* @__PURE__ */
|
|
29140
|
+
/* @__PURE__ */ jsx262("div", { className: "flex flex-wrap gap-2", children: getSelectedOptions().map((option) => /* @__PURE__ */ jsx262(
|
|
29171
29141
|
Badge,
|
|
29172
29142
|
{
|
|
29173
29143
|
className: "bg-ods-accent text-ods-text-primary font-['DM_Sans'] text-[12px] font-medium",
|
|
@@ -29176,8 +29146,8 @@ function PushButtonSelector({
|
|
|
29176
29146
|
option.id
|
|
29177
29147
|
)) })
|
|
29178
29148
|
] }),
|
|
29179
|
-
helpText && /* @__PURE__ */
|
|
29180
|
-
validSelectedIds.length === 0 && title && !optional && /* @__PURE__ */
|
|
29149
|
+
helpText && /* @__PURE__ */ jsx262("div", { className: "text-[12px] text-ods-text-secondary font-['DM_Sans']", children: helpText }),
|
|
29150
|
+
validSelectedIds.length === 0 && title && !optional && /* @__PURE__ */ jsx262("div", { className: "p-3 bg-ods-attention-red-error-secondary border border-ods-attention-red-error/30 rounded-lg", children: /* @__PURE__ */ jsx262("div", { className: "font-['DM_Sans'] text-[12px] text-ods-attention-red-error", children: "\u26A0\uFE0F Please select at least one option" }) })
|
|
29181
29151
|
] });
|
|
29182
29152
|
}
|
|
29183
29153
|
|
|
@@ -29185,7 +29155,7 @@ function PushButtonSelector({
|
|
|
29185
29155
|
import { useState as useState65, useRef as useRef41 } from "react";
|
|
29186
29156
|
import { Trash2 as Trash25, Plus as Plus5, Image as ImageIcon3, Video as Video5, Upload as Upload4, Loader2 as Loader28, GripVertical as GripVertical2 } from "lucide-react";
|
|
29187
29157
|
import Image13 from "next/image";
|
|
29188
|
-
import { jsx as
|
|
29158
|
+
import { jsx as jsx263, jsxs as jsxs216 } from "react/jsx-runtime";
|
|
29189
29159
|
function ReleaseMediaManager({
|
|
29190
29160
|
media,
|
|
29191
29161
|
onChange,
|
|
@@ -29257,33 +29227,33 @@ function ReleaseMediaManager({
|
|
|
29257
29227
|
switch (type) {
|
|
29258
29228
|
case "video":
|
|
29259
29229
|
case "demo":
|
|
29260
|
-
return /* @__PURE__ */
|
|
29230
|
+
return /* @__PURE__ */ jsx263(Video5, { className: "w-5 h-5 text-ods-text-secondary" });
|
|
29261
29231
|
default:
|
|
29262
|
-
return /* @__PURE__ */
|
|
29232
|
+
return /* @__PURE__ */ jsx263(ImageIcon3, { className: "w-5 h-5 text-ods-text-secondary" });
|
|
29263
29233
|
}
|
|
29264
29234
|
};
|
|
29265
|
-
return /* @__PURE__ */
|
|
29266
|
-
/* @__PURE__ */
|
|
29267
|
-
/* @__PURE__ */
|
|
29268
|
-
/* @__PURE__ */
|
|
29269
|
-
/* @__PURE__ */
|
|
29270
|
-
/* @__PURE__ */
|
|
29271
|
-
/* @__PURE__ */
|
|
29235
|
+
return /* @__PURE__ */ jsxs216("div", { className: `space-y-4 ${className}`, children: [
|
|
29236
|
+
/* @__PURE__ */ jsx263("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */ jsxs216("div", { className: "flex flex-col items-center gap-4", children: [
|
|
29237
|
+
/* @__PURE__ */ jsx263("div", { className: "w-12 h-12 rounded-full bg-ods-card flex items-center justify-center", children: uploadingIndex !== null ? /* @__PURE__ */ jsx263(Loader28, { className: "h-6 w-6 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsx263(Upload4, { className: "h-6 w-6 text-ods-accent" }) }),
|
|
29238
|
+
/* @__PURE__ */ jsxs216("div", { children: [
|
|
29239
|
+
/* @__PURE__ */ jsx263("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-1", children: uploadingIndex !== null ? "Uploading..." : "Upload Media" }),
|
|
29240
|
+
/* @__PURE__ */ jsx263("p", { className: "text-sm text-ods-text-secondary", children: "Drag and drop or click to select images and videos" }),
|
|
29241
|
+
/* @__PURE__ */ jsx263("p", { className: "text-xs text-ods-text-secondary mt-1", children: "Maximum file size: 50MB" })
|
|
29272
29242
|
] }),
|
|
29273
|
-
/* @__PURE__ */
|
|
29243
|
+
/* @__PURE__ */ jsx263(
|
|
29274
29244
|
Button,
|
|
29275
29245
|
{
|
|
29276
29246
|
type: "button",
|
|
29277
29247
|
variant: "outline",
|
|
29278
29248
|
onClick: () => fileInputRef.current?.click(),
|
|
29279
29249
|
disabled: uploadingIndex !== null,
|
|
29280
|
-
leftIcon: /* @__PURE__ */
|
|
29250
|
+
leftIcon: /* @__PURE__ */ jsx263(Plus5, { className: "h-4 w-4" }),
|
|
29281
29251
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
29282
29252
|
children: uploadingIndex !== null ? "Uploading..." : "Select Files"
|
|
29283
29253
|
}
|
|
29284
29254
|
)
|
|
29285
29255
|
] }) }),
|
|
29286
|
-
/* @__PURE__ */
|
|
29256
|
+
/* @__PURE__ */ jsx263(
|
|
29287
29257
|
"input",
|
|
29288
29258
|
{
|
|
29289
29259
|
ref: fileInputRef,
|
|
@@ -29294,16 +29264,16 @@ function ReleaseMediaManager({
|
|
|
29294
29264
|
disabled: uploadingIndex !== null
|
|
29295
29265
|
}
|
|
29296
29266
|
),
|
|
29297
|
-
media.length > 0 && /* @__PURE__ */
|
|
29298
|
-
/* @__PURE__ */
|
|
29299
|
-
/* @__PURE__ */
|
|
29267
|
+
media.length > 0 && /* @__PURE__ */ jsxs216("div", { children: [
|
|
29268
|
+
/* @__PURE__ */ jsxs216("div", { className: "flex items-center justify-between mb-4", children: [
|
|
29269
|
+
/* @__PURE__ */ jsxs216(Label, { className: "text-[14px] text-ods-text-primary", children: [
|
|
29300
29270
|
"Media Gallery (",
|
|
29301
29271
|
media.length,
|
|
29302
29272
|
")"
|
|
29303
29273
|
] }),
|
|
29304
|
-
/* @__PURE__ */
|
|
29274
|
+
/* @__PURE__ */ jsx263("p", { className: "text-xs text-ods-text-secondary", children: "Drag to reorder" })
|
|
29305
29275
|
] }),
|
|
29306
|
-
/* @__PURE__ */
|
|
29276
|
+
/* @__PURE__ */ jsx263("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: media.map((item, index) => /* @__PURE__ */ jsxs216(
|
|
29307
29277
|
"div",
|
|
29308
29278
|
{
|
|
29309
29279
|
draggable: !item._uploading,
|
|
@@ -29312,8 +29282,8 @@ function ReleaseMediaManager({
|
|
|
29312
29282
|
onDrop: handleDrop(index),
|
|
29313
29283
|
className: "relative group border border-ods-border rounded-lg overflow-hidden hover:border-[#FFC008]/30 transition-colors bg-ods-bg-secondary",
|
|
29314
29284
|
children: [
|
|
29315
|
-
/* @__PURE__ */
|
|
29316
|
-
/* @__PURE__ */
|
|
29285
|
+
/* @__PURE__ */ jsx263("div", { className: "absolute top-2 left-2 opacity-0 group-hover:opacity-100 transition-opacity cursor-move z-10", children: /* @__PURE__ */ jsx263(GripVertical2, { className: "h-4 w-4 text-white drop-shadow" }) }),
|
|
29286
|
+
/* @__PURE__ */ jsx263("div", { className: "absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity z-10", children: /* @__PURE__ */ jsx263(
|
|
29317
29287
|
Button,
|
|
29318
29288
|
{
|
|
29319
29289
|
type: "button",
|
|
@@ -29322,10 +29292,10 @@ function ReleaseMediaManager({
|
|
|
29322
29292
|
onClick: () => removeMedia(index),
|
|
29323
29293
|
disabled: item._uploading,
|
|
29324
29294
|
className: "h-8 w-8 p-0 bg-red-500 hover:bg-red-600 border-red-500",
|
|
29325
|
-
children: /* @__PURE__ */
|
|
29295
|
+
children: /* @__PURE__ */ jsx263(Trash25, { className: "h-4 w-4 text-white" })
|
|
29326
29296
|
}
|
|
29327
29297
|
) }),
|
|
29328
|
-
item.media_url && /* @__PURE__ */
|
|
29298
|
+
item.media_url && /* @__PURE__ */ jsx263("div", { className: "aspect-video relative bg-[#1A1A1A]", children: item.media_type === "video" || item.media_type === "demo" ? /* @__PURE__ */ jsx263(
|
|
29329
29299
|
"video",
|
|
29330
29300
|
{
|
|
29331
29301
|
src: item.media_url,
|
|
@@ -29333,7 +29303,7 @@ function ReleaseMediaManager({
|
|
|
29333
29303
|
controls: true,
|
|
29334
29304
|
preload: "metadata"
|
|
29335
29305
|
}
|
|
29336
|
-
) : /* @__PURE__ */
|
|
29306
|
+
) : /* @__PURE__ */ jsx263(
|
|
29337
29307
|
Image13,
|
|
29338
29308
|
{
|
|
29339
29309
|
src: item.media_url,
|
|
@@ -29343,32 +29313,32 @@ function ReleaseMediaManager({
|
|
|
29343
29313
|
sizes: "(max-width: 768px) 100vw, 50vw"
|
|
29344
29314
|
}
|
|
29345
29315
|
) }),
|
|
29346
|
-
item._uploading && /* @__PURE__ */
|
|
29347
|
-
/* @__PURE__ */
|
|
29348
|
-
/* @__PURE__ */
|
|
29316
|
+
item._uploading && /* @__PURE__ */ jsx263("div", { className: "aspect-video bg-[#1A1A1A] flex items-center justify-center", children: /* @__PURE__ */ jsxs216("div", { className: "flex flex-col items-center gap-2", children: [
|
|
29317
|
+
/* @__PURE__ */ jsx263(Loader28, { className: "h-8 w-8 animate-spin text-ods-accent" }),
|
|
29318
|
+
/* @__PURE__ */ jsx263("span", { className: "text-sm text-ods-text-secondary", children: "Uploading..." })
|
|
29349
29319
|
] }) }),
|
|
29350
|
-
/* @__PURE__ */
|
|
29351
|
-
/* @__PURE__ */
|
|
29320
|
+
/* @__PURE__ */ jsxs216("div", { className: "p-3 space-y-2", children: [
|
|
29321
|
+
/* @__PURE__ */ jsxs216("div", { className: "flex items-center gap-2", children: [
|
|
29352
29322
|
getIcon(item.media_type),
|
|
29353
|
-
/* @__PURE__ */
|
|
29323
|
+
/* @__PURE__ */ jsxs216(
|
|
29354
29324
|
Select,
|
|
29355
29325
|
{
|
|
29356
29326
|
value: item.media_type,
|
|
29357
29327
|
onValueChange: (value) => updateMedia(index, "media_type", value),
|
|
29358
29328
|
disabled: item._uploading,
|
|
29359
29329
|
children: [
|
|
29360
|
-
/* @__PURE__ */
|
|
29361
|
-
/* @__PURE__ */
|
|
29362
|
-
/* @__PURE__ */
|
|
29363
|
-
/* @__PURE__ */
|
|
29364
|
-
/* @__PURE__ */
|
|
29365
|
-
/* @__PURE__ */
|
|
29330
|
+
/* @__PURE__ */ jsx263(SelectTrigger, { className: "bg-[#161616] h-8 text-xs", children: /* @__PURE__ */ jsx263(SelectValue, {}) }),
|
|
29331
|
+
/* @__PURE__ */ jsxs216(SelectContent, { className: "bg-ods-card", children: [
|
|
29332
|
+
/* @__PURE__ */ jsx263(SelectItem, { value: "image", children: "Image" }),
|
|
29333
|
+
/* @__PURE__ */ jsx263(SelectItem, { value: "video", children: "Video" }),
|
|
29334
|
+
/* @__PURE__ */ jsx263(SelectItem, { value: "screenshot", children: "Screenshot" }),
|
|
29335
|
+
/* @__PURE__ */ jsx263(SelectItem, { value: "demo", children: "Demo" })
|
|
29366
29336
|
] })
|
|
29367
29337
|
]
|
|
29368
29338
|
}
|
|
29369
29339
|
)
|
|
29370
29340
|
] }),
|
|
29371
|
-
/* @__PURE__ */
|
|
29341
|
+
/* @__PURE__ */ jsx263(
|
|
29372
29342
|
Input,
|
|
29373
29343
|
{
|
|
29374
29344
|
placeholder: "Title (optional)",
|
|
@@ -29385,10 +29355,10 @@ function ReleaseMediaManager({
|
|
|
29385
29355
|
index
|
|
29386
29356
|
)) })
|
|
29387
29357
|
] }),
|
|
29388
|
-
media.length === 0 && /* @__PURE__ */
|
|
29389
|
-
/* @__PURE__ */
|
|
29390
|
-
/* @__PURE__ */
|
|
29391
|
-
/* @__PURE__ */
|
|
29358
|
+
media.length === 0 && /* @__PURE__ */ jsxs216("div", { className: "text-center py-8 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: [
|
|
29359
|
+
/* @__PURE__ */ jsx263(ImageIcon3, { className: "h-12 w-12 text-ods-text-secondary mx-auto mb-4" }),
|
|
29360
|
+
/* @__PURE__ */ jsx263("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-2", children: "No media uploaded yet" }),
|
|
29361
|
+
/* @__PURE__ */ jsx263("p", { className: "text-sm text-ods-text-secondary", children: "Upload your first image or video to get started" })
|
|
29392
29362
|
] })
|
|
29393
29363
|
] });
|
|
29394
29364
|
}
|
|
@@ -29396,10 +29366,10 @@ function ReleaseMediaManager({
|
|
|
29396
29366
|
// src/components/features/select-button.tsx
|
|
29397
29367
|
init_cn();
|
|
29398
29368
|
import React92 from "react";
|
|
29399
|
-
import { jsx as
|
|
29369
|
+
import { jsx as jsx264, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
29400
29370
|
var SelectButton = React92.forwardRef(
|
|
29401
29371
|
({ title, description, selected = false, disabled = false, icon, image, tag, tagVariant = "outline", onClick, className }, ref) => {
|
|
29402
|
-
return /* @__PURE__ */
|
|
29372
|
+
return /* @__PURE__ */ jsxs217(
|
|
29403
29373
|
"button",
|
|
29404
29374
|
{
|
|
29405
29375
|
ref,
|
|
@@ -29417,8 +29387,8 @@ var SelectButton = React92.forwardRef(
|
|
|
29417
29387
|
className
|
|
29418
29388
|
),
|
|
29419
29389
|
children: [
|
|
29420
|
-
icon && /* @__PURE__ */
|
|
29421
|
-
image && /* @__PURE__ */
|
|
29390
|
+
icon && /* @__PURE__ */ jsx264("span", { className: cn("shrink-0 flex items-center justify-center size-4 md:size-6", selected ? "text-ods-accent" : "text-ods-text-secondary"), children: icon }),
|
|
29391
|
+
image && /* @__PURE__ */ jsx264("span", { className: "shrink-0 size-10 rounded overflow-hidden", children: /* @__PURE__ */ jsx264(
|
|
29422
29392
|
"img",
|
|
29423
29393
|
{
|
|
29424
29394
|
src: image.src,
|
|
@@ -29426,9 +29396,9 @@ var SelectButton = React92.forwardRef(
|
|
|
29426
29396
|
className: "size-full object-cover"
|
|
29427
29397
|
}
|
|
29428
29398
|
) }),
|
|
29429
|
-
/* @__PURE__ */
|
|
29430
|
-
/* @__PURE__ */
|
|
29431
|
-
description && /* @__PURE__ */
|
|
29399
|
+
/* @__PURE__ */ jsxs217("span", { className: "flex flex-1 flex-col justify-center min-w-0 overflow-hidden", children: [
|
|
29400
|
+
/* @__PURE__ */ jsx264("span", { className: "md:text-[18px] text-[14px] font-medium text-ods-text-primary truncate", children: title }),
|
|
29401
|
+
description && /* @__PURE__ */ jsx264(
|
|
29432
29402
|
"span",
|
|
29433
29403
|
{
|
|
29434
29404
|
className: cn(
|
|
@@ -29439,8 +29409,8 @@ var SelectButton = React92.forwardRef(
|
|
|
29439
29409
|
}
|
|
29440
29410
|
)
|
|
29441
29411
|
] }),
|
|
29442
|
-
tag && /* @__PURE__ */
|
|
29443
|
-
selected && /* @__PURE__ */
|
|
29412
|
+
tag && /* @__PURE__ */ jsx264(Tag, { variant: tagVariant, className: "shrink-0", label: tag }),
|
|
29413
|
+
selected && /* @__PURE__ */ jsx264(
|
|
29444
29414
|
CheckCircleIcon,
|
|
29445
29415
|
{
|
|
29446
29416
|
className: "shrink-0 size-4 md:size-6 text-ods-accent"
|
|
@@ -29457,7 +29427,7 @@ SelectButton.displayName = "SelectButton";
|
|
|
29457
29427
|
import { useState as useState66 } from "react";
|
|
29458
29428
|
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles2 } from "lucide-react";
|
|
29459
29429
|
import Image14 from "next/image";
|
|
29460
|
-
import { Fragment as Fragment39, jsx as
|
|
29430
|
+
import { Fragment as Fragment39, jsx as jsx265, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
29461
29431
|
function SEOEditorPreview({
|
|
29462
29432
|
seoTitle,
|
|
29463
29433
|
seoDescription,
|
|
@@ -29500,18 +29470,18 @@ function SEOEditorPreview({
|
|
|
29500
29470
|
setIsUploading(false);
|
|
29501
29471
|
}
|
|
29502
29472
|
};
|
|
29503
|
-
return /* @__PURE__ */
|
|
29504
|
-
/* @__PURE__ */
|
|
29505
|
-
/* @__PURE__ */
|
|
29506
|
-
/* @__PURE__ */
|
|
29507
|
-
/* @__PURE__ */
|
|
29508
|
-
/* @__PURE__ */
|
|
29509
|
-
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */
|
|
29510
|
-
/* @__PURE__ */
|
|
29511
|
-
/* @__PURE__ */
|
|
29473
|
+
return /* @__PURE__ */ jsxs218("div", { className: cn("space-y-6 p-6 bg-ods-card border border-ods-border rounded-lg", className), children: [
|
|
29474
|
+
/* @__PURE__ */ jsx265("h3", { className: "text-h5 text-ods-text-primary", children: "SEO & Open Graph" }),
|
|
29475
|
+
/* @__PURE__ */ jsxs218("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-4", children: [
|
|
29476
|
+
/* @__PURE__ */ jsxs218("div", { className: "space-y-2", children: [
|
|
29477
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-2", children: [
|
|
29478
|
+
/* @__PURE__ */ jsx265(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
|
|
29479
|
+
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs218(Fragment39, { children: [
|
|
29480
|
+
/* @__PURE__ */ jsxs218(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
29481
|
+
/* @__PURE__ */ jsx265(Sparkles2, { className: "h-3 w-3" }),
|
|
29512
29482
|
"AI Generated"
|
|
29513
29483
|
] }),
|
|
29514
|
-
/* @__PURE__ */
|
|
29484
|
+
/* @__PURE__ */ jsx265(
|
|
29515
29485
|
ConfidenceBadge,
|
|
29516
29486
|
{
|
|
29517
29487
|
confidence: aiConfidenceSeoTitle,
|
|
@@ -29522,7 +29492,7 @@ function SEOEditorPreview({
|
|
|
29522
29492
|
)
|
|
29523
29493
|
] })
|
|
29524
29494
|
] }),
|
|
29525
|
-
/* @__PURE__ */
|
|
29495
|
+
/* @__PURE__ */ jsx265(
|
|
29526
29496
|
Input,
|
|
29527
29497
|
{
|
|
29528
29498
|
value: seoTitle || "",
|
|
@@ -29532,17 +29502,17 @@ function SEOEditorPreview({
|
|
|
29532
29502
|
className: "bg-ods-bg border-ods-border text-ods-text-primary"
|
|
29533
29503
|
}
|
|
29534
29504
|
),
|
|
29535
|
-
!seoTitle && title && /* @__PURE__ */
|
|
29505
|
+
!seoTitle && title && /* @__PURE__ */ jsx265("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Auto-populated from title" })
|
|
29536
29506
|
] }),
|
|
29537
|
-
/* @__PURE__ */
|
|
29538
|
-
/* @__PURE__ */
|
|
29539
|
-
/* @__PURE__ */
|
|
29540
|
-
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */
|
|
29541
|
-
/* @__PURE__ */
|
|
29542
|
-
/* @__PURE__ */
|
|
29507
|
+
/* @__PURE__ */ jsxs218("div", { className: "space-y-2", children: [
|
|
29508
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-2", children: [
|
|
29509
|
+
/* @__PURE__ */ jsx265(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
|
|
29510
|
+
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs218(Fragment39, { children: [
|
|
29511
|
+
/* @__PURE__ */ jsxs218(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
29512
|
+
/* @__PURE__ */ jsx265(Sparkles2, { className: "h-3 w-3" }),
|
|
29543
29513
|
"AI Generated"
|
|
29544
29514
|
] }),
|
|
29545
|
-
/* @__PURE__ */
|
|
29515
|
+
/* @__PURE__ */ jsx265(
|
|
29546
29516
|
ConfidenceBadge,
|
|
29547
29517
|
{
|
|
29548
29518
|
confidence: aiConfidenceSeoKeywords,
|
|
@@ -29553,7 +29523,7 @@ function SEOEditorPreview({
|
|
|
29553
29523
|
)
|
|
29554
29524
|
] })
|
|
29555
29525
|
] }),
|
|
29556
|
-
/* @__PURE__ */
|
|
29526
|
+
/* @__PURE__ */ jsx265(
|
|
29557
29527
|
Input,
|
|
29558
29528
|
{
|
|
29559
29529
|
value: seoKeywords || "",
|
|
@@ -29565,16 +29535,16 @@ function SEOEditorPreview({
|
|
|
29565
29535
|
)
|
|
29566
29536
|
] })
|
|
29567
29537
|
] }),
|
|
29568
|
-
/* @__PURE__ */
|
|
29569
|
-
/* @__PURE__ */
|
|
29570
|
-
/* @__PURE__ */
|
|
29571
|
-
/* @__PURE__ */
|
|
29572
|
-
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */
|
|
29573
|
-
/* @__PURE__ */
|
|
29574
|
-
/* @__PURE__ */
|
|
29538
|
+
/* @__PURE__ */ jsxs218("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-4", children: [
|
|
29539
|
+
/* @__PURE__ */ jsxs218("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
29540
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-2", children: [
|
|
29541
|
+
/* @__PURE__ */ jsx265(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
|
|
29542
|
+
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs218(Fragment39, { children: [
|
|
29543
|
+
/* @__PURE__ */ jsxs218(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
29544
|
+
/* @__PURE__ */ jsx265(Sparkles2, { className: "h-3 w-3" }),
|
|
29575
29545
|
"AI Generated"
|
|
29576
29546
|
] }),
|
|
29577
|
-
/* @__PURE__ */
|
|
29547
|
+
/* @__PURE__ */ jsx265(
|
|
29578
29548
|
ConfidenceBadge,
|
|
29579
29549
|
{
|
|
29580
29550
|
confidence: aiConfidenceSeoDescription,
|
|
@@ -29585,7 +29555,7 @@ function SEOEditorPreview({
|
|
|
29585
29555
|
)
|
|
29586
29556
|
] })
|
|
29587
29557
|
] }),
|
|
29588
|
-
/* @__PURE__ */
|
|
29558
|
+
/* @__PURE__ */ jsx265(
|
|
29589
29559
|
Textarea,
|
|
29590
29560
|
{
|
|
29591
29561
|
value: seoDescription || "",
|
|
@@ -29596,13 +29566,13 @@ function SEOEditorPreview({
|
|
|
29596
29566
|
rows: 6
|
|
29597
29567
|
}
|
|
29598
29568
|
),
|
|
29599
|
-
!seoDescription && summary && /* @__PURE__ */
|
|
29569
|
+
!seoDescription && summary && /* @__PURE__ */ jsx265("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Auto-populated from summary" })
|
|
29600
29570
|
] }),
|
|
29601
|
-
/* @__PURE__ */
|
|
29602
|
-
/* @__PURE__ */
|
|
29603
|
-
/* @__PURE__ */
|
|
29604
|
-
displayImage && !imageError ? /* @__PURE__ */
|
|
29605
|
-
/* @__PURE__ */
|
|
29571
|
+
/* @__PURE__ */ jsxs218("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
29572
|
+
/* @__PURE__ */ jsx265(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "OG Image" }),
|
|
29573
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex-1 relative", children: [
|
|
29574
|
+
displayImage && !imageError ? /* @__PURE__ */ jsxs218("div", { className: "relative group h-full min-h-[280px]", children: [
|
|
29575
|
+
/* @__PURE__ */ jsx265(
|
|
29606
29576
|
Image14,
|
|
29607
29577
|
{
|
|
29608
29578
|
src: displayImage,
|
|
@@ -29612,8 +29582,8 @@ function SEOEditorPreview({
|
|
|
29612
29582
|
onError: () => setImageError(true)
|
|
29613
29583
|
}
|
|
29614
29584
|
),
|
|
29615
|
-
/* @__PURE__ */
|
|
29616
|
-
onOgImageUpload && /* @__PURE__ */
|
|
29585
|
+
/* @__PURE__ */ jsxs218("div", { className: "absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-40 transition-all rounded-lg flex items-center justify-center gap-2", children: [
|
|
29586
|
+
onOgImageUpload && /* @__PURE__ */ jsx265(
|
|
29617
29587
|
Button,
|
|
29618
29588
|
{
|
|
29619
29589
|
type: "button",
|
|
@@ -29622,10 +29592,10 @@ function SEOEditorPreview({
|
|
|
29622
29592
|
onClick: () => fileInputRef?.click(),
|
|
29623
29593
|
disabled: disabled || isUploading,
|
|
29624
29594
|
className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
|
|
29625
|
-
children: /* @__PURE__ */
|
|
29595
|
+
children: /* @__PURE__ */ jsx265(Upload5, { className: "h-4 w-4" })
|
|
29626
29596
|
}
|
|
29627
29597
|
),
|
|
29628
|
-
/* @__PURE__ */
|
|
29598
|
+
/* @__PURE__ */ jsx265(
|
|
29629
29599
|
Button,
|
|
29630
29600
|
{
|
|
29631
29601
|
type: "button",
|
|
@@ -29634,22 +29604,22 @@ function SEOEditorPreview({
|
|
|
29634
29604
|
onClick: () => onOgImageUrlChange(""),
|
|
29635
29605
|
disabled,
|
|
29636
29606
|
className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
|
|
29637
|
-
children: /* @__PURE__ */
|
|
29607
|
+
children: /* @__PURE__ */ jsx265(X11, { className: "h-4 w-4" })
|
|
29638
29608
|
}
|
|
29639
29609
|
)
|
|
29640
29610
|
] })
|
|
29641
|
-
] }) : /* @__PURE__ */
|
|
29611
|
+
] }) : /* @__PURE__ */ jsx265(
|
|
29642
29612
|
"div",
|
|
29643
29613
|
{
|
|
29644
29614
|
className: "h-full min-h-[280px] border-2 border-dashed border-ods-border rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-ods-accent transition-colors bg-ods-bg-hover",
|
|
29645
29615
|
onClick: () => onOgImageUpload && fileInputRef?.click(),
|
|
29646
|
-
children: isUploading ? /* @__PURE__ */
|
|
29647
|
-
/* @__PURE__ */
|
|
29648
|
-
/* @__PURE__ */
|
|
29616
|
+
children: isUploading ? /* @__PURE__ */ jsx265(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs218(Fragment39, { children: [
|
|
29617
|
+
/* @__PURE__ */ jsx265(Upload5, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
29618
|
+
/* @__PURE__ */ jsx265("span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
29649
29619
|
] })
|
|
29650
29620
|
}
|
|
29651
29621
|
),
|
|
29652
|
-
onOgImageUpload && /* @__PURE__ */
|
|
29622
|
+
onOgImageUpload && /* @__PURE__ */ jsx265(
|
|
29653
29623
|
"input",
|
|
29654
29624
|
{
|
|
29655
29625
|
ref: setFileInputRef,
|
|
@@ -29661,16 +29631,16 @@ function SEOEditorPreview({
|
|
|
29661
29631
|
}
|
|
29662
29632
|
)
|
|
29663
29633
|
] }),
|
|
29664
|
-
!ogImageUrl && featuredImage && /* @__PURE__ */
|
|
29634
|
+
!ogImageUrl && featuredImage && /* @__PURE__ */ jsx265("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Using featured image" })
|
|
29665
29635
|
] })
|
|
29666
29636
|
] }),
|
|
29667
|
-
/* @__PURE__ */
|
|
29668
|
-
/* @__PURE__ */
|
|
29669
|
-
/* @__PURE__ */
|
|
29670
|
-
/* @__PURE__ */
|
|
29637
|
+
/* @__PURE__ */ jsxs218("div", { className: "pt-4 border-t border-ods-border", children: [
|
|
29638
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
29639
|
+
/* @__PURE__ */ jsx265(Globe3, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
29640
|
+
/* @__PURE__ */ jsx265("span", { className: "font-['DM_Sans'] text-[12px] font-medium text-ods-text-secondary", children: "Social Media Preview" })
|
|
29671
29641
|
] }),
|
|
29672
|
-
/* @__PURE__ */
|
|
29673
|
-
/* @__PURE__ */
|
|
29642
|
+
/* @__PURE__ */ jsxs218("div", { className: "bg-ods-bg border border-ods-border rounded-lg overflow-hidden max-w-[500px]", children: [
|
|
29643
|
+
/* @__PURE__ */ jsx265("div", { className: "relative w-full h-[260px] bg-ods-bg-active", children: displayImage && !imageError ? /* @__PURE__ */ jsx265(
|
|
29674
29644
|
Image14,
|
|
29675
29645
|
{
|
|
29676
29646
|
src: displayImage,
|
|
@@ -29679,23 +29649,23 @@ function SEOEditorPreview({
|
|
|
29679
29649
|
className: "object-cover",
|
|
29680
29650
|
onError: () => setImageError(true)
|
|
29681
29651
|
}
|
|
29682
|
-
) : /* @__PURE__ */
|
|
29683
|
-
/* @__PURE__ */
|
|
29684
|
-
/* @__PURE__ */
|
|
29652
|
+
) : /* @__PURE__ */ jsx265("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs218("div", { className: "text-center", children: [
|
|
29653
|
+
/* @__PURE__ */ jsx265(Globe3, { className: "w-12 h-12 text-ods-text-secondary mx-auto mb-2" }),
|
|
29654
|
+
/* @__PURE__ */ jsx265("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: "No preview image" })
|
|
29685
29655
|
] }) }) }),
|
|
29686
|
-
/* @__PURE__ */
|
|
29687
|
-
/* @__PURE__ */
|
|
29688
|
-
/* @__PURE__ */
|
|
29689
|
-
/* @__PURE__ */
|
|
29656
|
+
/* @__PURE__ */ jsxs218("div", { className: "p-4 space-y-2", children: [
|
|
29657
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-1", children: [
|
|
29658
|
+
/* @__PURE__ */ jsx265(ExternalLink5, { className: "w-3 h-3 text-ods-text-secondary" }),
|
|
29659
|
+
/* @__PURE__ */ jsx265("span", { className: "font-['DM_Sans'] text-[11px] text-ods-text-secondary uppercase tracking-wide", children: domain })
|
|
29690
29660
|
] }),
|
|
29691
|
-
/* @__PURE__ */
|
|
29692
|
-
/* @__PURE__ */
|
|
29661
|
+
/* @__PURE__ */ jsx265("h3", { className: "font-['DM_Sans'] text-[16px] font-semibold text-ods-text-primary leading-[1.3] line-clamp-2", children: displayTitle }),
|
|
29662
|
+
/* @__PURE__ */ jsx265("p", { className: "font-['DM_Sans'] text-[14px] text-ods-text-secondary leading-[1.4] line-clamp-3", children: displayDescription })
|
|
29693
29663
|
] })
|
|
29694
29664
|
] }),
|
|
29695
|
-
/* @__PURE__ */
|
|
29696
|
-
!seoTitle.trim() && title && /* @__PURE__ */
|
|
29697
|
-
!seoDescription.trim() && summary && /* @__PURE__ */
|
|
29698
|
-
!ogImageUrl.trim() && featuredImage.trim() && /* @__PURE__ */
|
|
29665
|
+
/* @__PURE__ */ jsxs218("div", { className: "space-y-1 mt-3", children: [
|
|
29666
|
+
!seoTitle.trim() && title && /* @__PURE__ */ jsx265("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using title as SEO title" }),
|
|
29667
|
+
!seoDescription.trim() && summary && /* @__PURE__ */ jsx265("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using summary as SEO description" }),
|
|
29668
|
+
!ogImageUrl.trim() && featuredImage.trim() && /* @__PURE__ */ jsx265("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using featured image as OG image" })
|
|
29699
29669
|
] })
|
|
29700
29670
|
] })
|
|
29701
29671
|
] });
|
|
@@ -29703,7 +29673,7 @@ function SEOEditorPreview({
|
|
|
29703
29673
|
|
|
29704
29674
|
// src/components/features/social-links-manager.tsx
|
|
29705
29675
|
import { Trash2 as Trash26, User, Globe as Globe4, Youtube, Instagram, Facebook, MessageCircle as MessageCircle2, Send as Send2, Music } from "lucide-react";
|
|
29706
|
-
import { jsx as
|
|
29676
|
+
import { jsx as jsx266, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
29707
29677
|
var defaultPlatforms = [];
|
|
29708
29678
|
var iconMap = {
|
|
29709
29679
|
linkedin: LinkedInIcon,
|
|
@@ -29741,27 +29711,27 @@ function SocialLinksManager({
|
|
|
29741
29711
|
const getIcon = (link, platform) => {
|
|
29742
29712
|
const iconKey = platform?.icon_name || link.platform;
|
|
29743
29713
|
const IconComponent = iconMap[iconKey];
|
|
29744
|
-
return IconComponent ? /* @__PURE__ */
|
|
29714
|
+
return IconComponent ? /* @__PURE__ */ jsx266(IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
|
|
29745
29715
|
};
|
|
29746
|
-
return /* @__PURE__ */
|
|
29716
|
+
return /* @__PURE__ */ jsxs219("div", { className: `space-y-3 ${className}`, children: [
|
|
29747
29717
|
links.map((link, index) => {
|
|
29748
29718
|
const platform = platforms.find((p) => p.name === link.platform);
|
|
29749
29719
|
const Icon2 = getIcon(link, platform);
|
|
29750
|
-
return /* @__PURE__ */
|
|
29751
|
-
/* @__PURE__ */
|
|
29752
|
-
/* @__PURE__ */
|
|
29753
|
-
/* @__PURE__ */
|
|
29720
|
+
return /* @__PURE__ */ jsxs219("div", { className: "flex items-center gap-3 p-3 bg-ods-bg-secondary rounded-lg border border-ods-border", children: [
|
|
29721
|
+
/* @__PURE__ */ jsx266("div", { className: "w-8 h-8 flex items-center justify-center", children: Icon2 }),
|
|
29722
|
+
/* @__PURE__ */ jsxs219("div", { className: "flex-1 grid grid-cols-2 gap-3", children: [
|
|
29723
|
+
/* @__PURE__ */ jsx266("div", { children: /* @__PURE__ */ jsxs219(
|
|
29754
29724
|
Select,
|
|
29755
29725
|
{
|
|
29756
29726
|
value: link.platform,
|
|
29757
29727
|
onValueChange: (value) => updateLink(index, "platform", value),
|
|
29758
29728
|
children: [
|
|
29759
|
-
/* @__PURE__ */
|
|
29760
|
-
/* @__PURE__ */
|
|
29729
|
+
/* @__PURE__ */ jsx266(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ jsx266(SelectValue, {}) }),
|
|
29730
|
+
/* @__PURE__ */ jsx266(SelectContent, { children: platforms.map((p) => /* @__PURE__ */ jsx266(SelectItem, { value: p.name, children: p.display_name }, p.name)) })
|
|
29761
29731
|
]
|
|
29762
29732
|
}
|
|
29763
29733
|
) }),
|
|
29764
|
-
/* @__PURE__ */
|
|
29734
|
+
/* @__PURE__ */ jsx266(
|
|
29765
29735
|
Input,
|
|
29766
29736
|
{
|
|
29767
29737
|
placeholder: platform?.placeholder || "Profile URL",
|
|
@@ -29776,7 +29746,7 @@ function SocialLinksManager({
|
|
|
29776
29746
|
}
|
|
29777
29747
|
)
|
|
29778
29748
|
] }),
|
|
29779
|
-
/* @__PURE__ */
|
|
29749
|
+
/* @__PURE__ */ jsx266(
|
|
29780
29750
|
Button,
|
|
29781
29751
|
{
|
|
29782
29752
|
type: "button",
|
|
@@ -29784,20 +29754,20 @@ function SocialLinksManager({
|
|
|
29784
29754
|
size: "icon",
|
|
29785
29755
|
onClick: () => removeLink(index),
|
|
29786
29756
|
className: "text-red-400 hover:text-red-300 hover:bg-red-400/10",
|
|
29787
|
-
children: /* @__PURE__ */
|
|
29757
|
+
children: /* @__PURE__ */ jsx266(Trash26, { className: "h-4 w-4" })
|
|
29788
29758
|
}
|
|
29789
29759
|
)
|
|
29790
29760
|
] }, index);
|
|
29791
29761
|
}),
|
|
29792
|
-
links.length === 0 && /* @__PURE__ */
|
|
29793
|
-
/* @__PURE__ */
|
|
29762
|
+
links.length === 0 && /* @__PURE__ */ jsx266("div", { className: "text-center py-8 text-ods-text-secondary", children: /* @__PURE__ */ jsx266("p", { className: "text-sm", children: "No social links added yet." }) }),
|
|
29763
|
+
/* @__PURE__ */ jsx266(
|
|
29794
29764
|
Button,
|
|
29795
29765
|
{
|
|
29796
29766
|
variant: "outline",
|
|
29797
29767
|
onClick: addLink,
|
|
29798
29768
|
className: "w-full",
|
|
29799
29769
|
type: "button",
|
|
29800
|
-
leftIcon: /* @__PURE__ */
|
|
29770
|
+
leftIcon: /* @__PURE__ */ jsx266(User, { className: "h-4 w-4" }),
|
|
29801
29771
|
children: "Add Social Link"
|
|
29802
29772
|
}
|
|
29803
29773
|
)
|
|
@@ -29807,7 +29777,7 @@ function SocialLinksManager({
|
|
|
29807
29777
|
// src/components/features/start-with-openframe-button.tsx
|
|
29808
29778
|
init_button2();
|
|
29809
29779
|
import * as React93 from "react";
|
|
29810
|
-
import { jsx as
|
|
29780
|
+
import { jsx as jsx267 } from "react/jsx-runtime";
|
|
29811
29781
|
var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
|
|
29812
29782
|
const isYellow = mode === "yellow";
|
|
29813
29783
|
const isPink = mode === "pink" || mode === "purple";
|
|
@@ -29840,7 +29810,7 @@ var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Tria
|
|
|
29840
29810
|
iconLowerPath = "#ffffff";
|
|
29841
29811
|
iconUpperPath = "#1A1A1A";
|
|
29842
29812
|
}
|
|
29843
|
-
return /* @__PURE__ */
|
|
29813
|
+
return /* @__PURE__ */ jsx267(
|
|
29844
29814
|
Button,
|
|
29845
29815
|
{
|
|
29846
29816
|
ref,
|
|
@@ -29853,7 +29823,7 @@ var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Tria
|
|
|
29853
29823
|
className
|
|
29854
29824
|
),
|
|
29855
29825
|
style: customStyle,
|
|
29856
|
-
leftIcon: !loading ? /* @__PURE__ */
|
|
29826
|
+
leftIcon: !loading ? /* @__PURE__ */ jsx267(
|
|
29857
29827
|
OpenFrameLogo,
|
|
29858
29828
|
{
|
|
29859
29829
|
className: "w-5 h-5",
|
|
@@ -29861,7 +29831,7 @@ var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Tria
|
|
|
29861
29831
|
upperPathColor: iconUpperPath
|
|
29862
29832
|
}
|
|
29863
29833
|
) : void 0,
|
|
29864
|
-
rightIcon: /* @__PURE__ */
|
|
29834
|
+
rightIcon: /* @__PURE__ */ jsx267(
|
|
29865
29835
|
StatusBadge,
|
|
29866
29836
|
{
|
|
29867
29837
|
text: "Beta",
|
|
@@ -29878,7 +29848,7 @@ StartWithOpenFrameButton.displayName = "StartWithOpenFrameButton";
|
|
|
29878
29848
|
// src/components/features/status-filter-component.tsx
|
|
29879
29849
|
init_button2();
|
|
29880
29850
|
import { Filter } from "lucide-react";
|
|
29881
|
-
import { jsx as
|
|
29851
|
+
import { jsx as jsx268, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
29882
29852
|
function StatusFilterComponent({
|
|
29883
29853
|
selectedStatus,
|
|
29884
29854
|
onStatusChange,
|
|
@@ -29888,12 +29858,12 @@ function StatusFilterComponent({
|
|
|
29888
29858
|
className = ""
|
|
29889
29859
|
}) {
|
|
29890
29860
|
const filteredOptions = statusOptions.filter((option) => option.value !== "all");
|
|
29891
|
-
return /* @__PURE__ */
|
|
29892
|
-
/* @__PURE__ */
|
|
29893
|
-
/* @__PURE__ */
|
|
29894
|
-
/* @__PURE__ */
|
|
29861
|
+
return /* @__PURE__ */ jsxs220("div", { className: `flex flex-wrap items-center gap-3 p-4 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
29862
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-2", children: [
|
|
29863
|
+
/* @__PURE__ */ jsx268(Filter, { className: "h-4 w-4 text-ods-accent" }),
|
|
29864
|
+
/* @__PURE__ */ jsx268("span", { className: "text-h5 text-ods-text-secondary", children: "Status" })
|
|
29895
29865
|
] }),
|
|
29896
|
-
/* @__PURE__ */
|
|
29866
|
+
/* @__PURE__ */ jsx268(
|
|
29897
29867
|
Button,
|
|
29898
29868
|
{
|
|
29899
29869
|
type: "button",
|
|
@@ -29904,7 +29874,7 @@ function StatusFilterComponent({
|
|
|
29904
29874
|
children: "All"
|
|
29905
29875
|
}
|
|
29906
29876
|
),
|
|
29907
|
-
filteredOptions.map((option) => /* @__PURE__ */
|
|
29877
|
+
filteredOptions.map((option) => /* @__PURE__ */ jsx268(
|
|
29908
29878
|
Button,
|
|
29909
29879
|
{
|
|
29910
29880
|
type: "button",
|
|
@@ -29916,7 +29886,7 @@ function StatusFilterComponent({
|
|
|
29916
29886
|
},
|
|
29917
29887
|
option.value
|
|
29918
29888
|
)),
|
|
29919
|
-
showCount && /* @__PURE__ */
|
|
29889
|
+
showCount && /* @__PURE__ */ jsxs220("div", { className: "ml-auto text-[12px] font-['DM_Sans'] text-ods-text-secondary shrink-0", children: [
|
|
29920
29890
|
count,
|
|
29921
29891
|
" items"
|
|
29922
29892
|
] })
|
|
@@ -29926,7 +29896,7 @@ function StatusFilterComponent({
|
|
|
29926
29896
|
// src/components/features/tags-selector.tsx
|
|
29927
29897
|
import { useState as useState67 } from "react";
|
|
29928
29898
|
import { Search as Search2, X as X12, Plus as Plus6, Loader2 as Loader210 } from "lucide-react";
|
|
29929
|
-
import { jsx as
|
|
29899
|
+
import { jsx as jsx269, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
29930
29900
|
function TagsSelector({
|
|
29931
29901
|
availableTags,
|
|
29932
29902
|
selectedTagIds,
|
|
@@ -29979,22 +29949,22 @@ function TagsSelector({
|
|
|
29979
29949
|
};
|
|
29980
29950
|
const canCreateNewTag = allowCreate && onCreateTag && searchQuery.trim() && !tagExistsWithName(searchQuery.trim());
|
|
29981
29951
|
const filteredTags = getFilteredTagsForAutocomplete();
|
|
29982
|
-
return /* @__PURE__ */
|
|
29983
|
-
/* @__PURE__ */
|
|
29984
|
-
/* @__PURE__ */
|
|
29985
|
-
/* @__PURE__ */
|
|
29952
|
+
return /* @__PURE__ */ jsxs221("div", { className: cn("space-y-2", className), children: [
|
|
29953
|
+
/* @__PURE__ */ jsxs221("div", { className: "relative", children: [
|
|
29954
|
+
/* @__PURE__ */ jsx269("div", { className: "absolute top-3 left-3 flex items-center pointer-events-none z-10", children: /* @__PURE__ */ jsx269(Search2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
|
|
29955
|
+
/* @__PURE__ */ jsxs221("div", { className: cn(
|
|
29986
29956
|
"w-full bg-ods-bg border border-ods-border rounded-lg",
|
|
29987
29957
|
"focus-within:ring-2 focus-within:ring-ods-accent focus-within:border-ods-accent",
|
|
29988
29958
|
"transition-all duration-200 flex flex-wrap items-center gap-1.5 p-2 pl-10 min-h-[42px]",
|
|
29989
29959
|
disabled && "opacity-50 cursor-not-allowed"
|
|
29990
29960
|
), children: [
|
|
29991
|
-
getSelectedTags().map((tag) => /* @__PURE__ */
|
|
29961
|
+
getSelectedTags().map((tag) => /* @__PURE__ */ jsxs221(
|
|
29992
29962
|
"span",
|
|
29993
29963
|
{
|
|
29994
29964
|
className: "inline-flex items-center gap-1 px-2 py-0.5 rounded bg-ods-accent text-ods-bg text-xs font-medium font-['DM_Sans']",
|
|
29995
29965
|
children: [
|
|
29996
29966
|
tag.name,
|
|
29997
|
-
!disabled && /* @__PURE__ */
|
|
29967
|
+
!disabled && /* @__PURE__ */ jsx269(
|
|
29998
29968
|
Button,
|
|
29999
29969
|
{
|
|
30000
29970
|
variant: "transparent",
|
|
@@ -30004,7 +29974,7 @@ function TagsSelector({
|
|
|
30004
29974
|
e.stopPropagation();
|
|
30005
29975
|
handleTagRemove(tag.id);
|
|
30006
29976
|
},
|
|
30007
|
-
leftIcon: /* @__PURE__ */
|
|
29977
|
+
leftIcon: /* @__PURE__ */ jsx269(X12, { className: "w-2.5 h-2.5" }),
|
|
30008
29978
|
className: "w-3 h-3 p-0 min-h-0 min-w-0 ml-0.5 hover:opacity-70 text-ods-bg hover:bg-transparent",
|
|
30009
29979
|
"aria-label": `Remove ${tag.name}`
|
|
30010
29980
|
}
|
|
@@ -30013,7 +29983,7 @@ function TagsSelector({
|
|
|
30013
29983
|
},
|
|
30014
29984
|
tag.id
|
|
30015
29985
|
)),
|
|
30016
|
-
/* @__PURE__ */
|
|
29986
|
+
/* @__PURE__ */ jsx269(
|
|
30017
29987
|
"input",
|
|
30018
29988
|
{
|
|
30019
29989
|
type: "text",
|
|
@@ -30044,7 +30014,7 @@ function TagsSelector({
|
|
|
30044
30014
|
)
|
|
30045
30015
|
}
|
|
30046
30016
|
),
|
|
30047
|
-
searchQuery && /* @__PURE__ */
|
|
30017
|
+
searchQuery && /* @__PURE__ */ jsx269(
|
|
30048
30018
|
Button,
|
|
30049
30019
|
{
|
|
30050
30020
|
variant: "transparent",
|
|
@@ -30053,25 +30023,25 @@ function TagsSelector({
|
|
|
30053
30023
|
setSearchQuery("");
|
|
30054
30024
|
setShowDropdown(false);
|
|
30055
30025
|
},
|
|
30056
|
-
leftIcon: /* @__PURE__ */
|
|
30026
|
+
leftIcon: /* @__PURE__ */ jsx269(X12, { className: "w-3 h-3" }),
|
|
30057
30027
|
className: "w-5 h-5 p-0 min-h-0 min-w-0 shrink-0 text-ods-text-secondary hover:text-ods-text-primary hover:bg-transparent",
|
|
30058
30028
|
"aria-label": "Clear search"
|
|
30059
30029
|
}
|
|
30060
30030
|
)
|
|
30061
30031
|
] }),
|
|
30062
|
-
showDropdown && !disabled && /* @__PURE__ */
|
|
30063
|
-
canCreateNewTag && /* @__PURE__ */
|
|
30032
|
+
showDropdown && !disabled && /* @__PURE__ */ jsx269("div", { className: "absolute z-50 w-full mt-1 bg-ods-card border border-ods-border rounded-lg shadow-lg max-h-60 overflow-y-auto", children: /* @__PURE__ */ jsxs221("div", { className: "p-3", children: [
|
|
30033
|
+
canCreateNewTag && /* @__PURE__ */ jsxs221(
|
|
30064
30034
|
Button,
|
|
30065
30035
|
{
|
|
30066
30036
|
variant: "outline",
|
|
30067
30037
|
type: "button",
|
|
30068
30038
|
onClick: handleCreateTag,
|
|
30069
30039
|
disabled: isCreating,
|
|
30070
|
-
leftIcon: isCreating ? /* @__PURE__ */
|
|
30040
|
+
leftIcon: isCreating ? /* @__PURE__ */ jsx269(Loader210, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ jsx269(Plus6, { className: "w-3 h-3" }),
|
|
30071
30041
|
className: "w-full flex flex-row items-center gap-1.5 px-2 py-1 mb-2 h-auto rounded border-dashed border-ods-accent bg-ods-bg hover:bg-ods-card text-ods-accent font-['DM_Sans'] !text-xs !font-medium",
|
|
30072
30042
|
children: [
|
|
30073
30043
|
"Create tag: ",
|
|
30074
|
-
/* @__PURE__ */
|
|
30044
|
+
/* @__PURE__ */ jsxs221("strong", { children: [
|
|
30075
30045
|
'"',
|
|
30076
30046
|
searchQuery.trim(),
|
|
30077
30047
|
'"'
|
|
@@ -30079,7 +30049,7 @@ function TagsSelector({
|
|
|
30079
30049
|
]
|
|
30080
30050
|
}
|
|
30081
30051
|
),
|
|
30082
|
-
filteredTags.length > 0 ? /* @__PURE__ */
|
|
30052
|
+
filteredTags.length > 0 ? /* @__PURE__ */ jsx269("div", { className: "flex flex-wrap gap-1.5", children: filteredTags.map((tag) => /* @__PURE__ */ jsx269(
|
|
30083
30053
|
Button,
|
|
30084
30054
|
{
|
|
30085
30055
|
variant: "outline",
|
|
@@ -30089,23 +30059,23 @@ function TagsSelector({
|
|
|
30089
30059
|
children: tag.name
|
|
30090
30060
|
},
|
|
30091
30061
|
tag.id
|
|
30092
|
-
)) }) : !canCreateNewTag ? /* @__PURE__ */
|
|
30062
|
+
)) }) : !canCreateNewTag ? /* @__PURE__ */ jsx269("div", { className: "py-4 px-4 text-center w-full", children: /* @__PURE__ */ jsx269("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: searchQuery.trim() ? `No tags found for "${searchQuery}"` : "No tags available" }) }) : null
|
|
30093
30063
|
] }) })
|
|
30094
30064
|
] }),
|
|
30095
|
-
/* @__PURE__ */
|
|
30096
|
-
/* @__PURE__ */
|
|
30065
|
+
/* @__PURE__ */ jsxs221("div", { className: "flex items-center justify-between", children: [
|
|
30066
|
+
/* @__PURE__ */ jsxs221("div", { className: "text-[11px] text-ods-text-secondary font-['DM_Sans']", children: [
|
|
30097
30067
|
selectedTagIds.length,
|
|
30098
30068
|
" / ",
|
|
30099
30069
|
maxTags,
|
|
30100
30070
|
" tags selected"
|
|
30101
30071
|
] }),
|
|
30102
|
-
selectedTagIds.length >= maxTags && /* @__PURE__ */
|
|
30072
|
+
selectedTagIds.length >= maxTags && /* @__PURE__ */ jsx269("span", { className: "text-[11px] text-[--ods-attention-red-error] font-['DM_Sans']", children: "(Maximum reached)" })
|
|
30103
30073
|
] })
|
|
30104
30074
|
] });
|
|
30105
30075
|
}
|
|
30106
30076
|
|
|
30107
30077
|
// src/components/features/video-ratio-tabs.tsx
|
|
30108
|
-
import { Fragment as Fragment40, jsx as
|
|
30078
|
+
import { Fragment as Fragment40, jsx as jsx270, jsxs as jsxs222 } from "react/jsx-runtime";
|
|
30109
30079
|
var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
|
|
30110
30080
|
var RATIO_GRID_CLASS = {
|
|
30111
30081
|
portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
@@ -30130,17 +30100,17 @@ function RatioTabs({
|
|
|
30130
30100
|
const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
|
|
30131
30101
|
if (activeTabs.length <= 1) {
|
|
30132
30102
|
const active = activeTabs[0];
|
|
30133
|
-
return active ? /* @__PURE__ */
|
|
30103
|
+
return active ? /* @__PURE__ */ jsx270(Fragment40, { children: groups[active.key].render() }) : null;
|
|
30134
30104
|
}
|
|
30135
30105
|
const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
|
|
30136
|
-
return /* @__PURE__ */
|
|
30137
|
-
/* @__PURE__ */
|
|
30106
|
+
return /* @__PURE__ */ jsxs222(Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
|
|
30107
|
+
/* @__PURE__ */ jsx270(TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0 mb-2", children: activeTabs.map((t) => /* @__PURE__ */ jsxs222(TabsTrigger, { value: t.key, className: TAB_TRIGGER_CLASS, children: [
|
|
30138
30108
|
t.label,
|
|
30139
30109
|
" (",
|
|
30140
30110
|
groups[t.key].count,
|
|
30141
30111
|
")"
|
|
30142
30112
|
] }, t.key)) }),
|
|
30143
|
-
activeTabs.map((t) => /* @__PURE__ */
|
|
30113
|
+
activeTabs.map((t) => /* @__PURE__ */ jsx270(
|
|
30144
30114
|
TabsContent,
|
|
30145
30115
|
{
|
|
30146
30116
|
value: t.key,
|
|
@@ -30183,7 +30153,7 @@ function groupByAspectRatio(items, getAspectRatio) {
|
|
|
30183
30153
|
|
|
30184
30154
|
// src/components/features/video-bites-display.tsx
|
|
30185
30155
|
import { useMemo as useMemo22 } from "react";
|
|
30186
|
-
import { jsx as
|
|
30156
|
+
import { jsx as jsx271, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
30187
30157
|
var RATIO_TO_CSS_ASPECT = {
|
|
30188
30158
|
portrait: "9 / 16",
|
|
30189
30159
|
square: "1 / 1",
|
|
@@ -30191,7 +30161,7 @@ var RATIO_TO_CSS_ASPECT = {
|
|
|
30191
30161
|
};
|
|
30192
30162
|
function LazyBite({ ratio, children }) {
|
|
30193
30163
|
const { ref, isNear } = useNearViewport("500px");
|
|
30194
|
-
return /* @__PURE__ */
|
|
30164
|
+
return /* @__PURE__ */ jsx271("div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ jsx271("div", { className: "w-full h-full bg-ods-card rounded-md" }) });
|
|
30195
30165
|
}
|
|
30196
30166
|
function VideoBitesDisplay({
|
|
30197
30167
|
bites,
|
|
@@ -30214,27 +30184,27 @@ function VideoBitesDisplay({
|
|
|
30214
30184
|
}, [bites, filterPublished]);
|
|
30215
30185
|
const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
|
|
30216
30186
|
if (totalCount === 0) return null;
|
|
30217
|
-
return /* @__PURE__ */
|
|
30218
|
-
showTitle && /* @__PURE__ */
|
|
30219
|
-
grouped.hasMultiple ? /* @__PURE__ */
|
|
30187
|
+
return /* @__PURE__ */ jsxs223("div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30188
|
+
showTitle && /* @__PURE__ */ jsx271("h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: title }),
|
|
30189
|
+
grouped.hasMultiple ? /* @__PURE__ */ jsx271(
|
|
30220
30190
|
RatioTabs,
|
|
30221
30191
|
{
|
|
30222
30192
|
groups: {
|
|
30223
30193
|
portrait: {
|
|
30224
30194
|
count: grouped.portrait.length,
|
|
30225
|
-
render: () => /* @__PURE__ */
|
|
30195
|
+
render: () => /* @__PURE__ */ jsx271(BiteGrid, { bites: grouped.portrait, ratio: "portrait" })
|
|
30226
30196
|
},
|
|
30227
30197
|
square: {
|
|
30228
30198
|
count: grouped.square.length,
|
|
30229
|
-
render: () => /* @__PURE__ */
|
|
30199
|
+
render: () => /* @__PURE__ */ jsx271(BiteGrid, { bites: grouped.square, ratio: "square" })
|
|
30230
30200
|
},
|
|
30231
30201
|
landscape: {
|
|
30232
30202
|
count: grouped.landscape.length,
|
|
30233
|
-
render: () => /* @__PURE__ */
|
|
30203
|
+
render: () => /* @__PURE__ */ jsx271(BiteGrid, { bites: grouped.landscape, ratio: "landscape" })
|
|
30234
30204
|
}
|
|
30235
30205
|
}
|
|
30236
30206
|
}
|
|
30237
|
-
) : /* @__PURE__ */
|
|
30207
|
+
) : /* @__PURE__ */ jsx271(
|
|
30238
30208
|
BiteGrid,
|
|
30239
30209
|
{
|
|
30240
30210
|
bites: grouped.portrait.length > 0 ? grouped.portrait : grouped.square.length > 0 ? grouped.square : grouped.landscape,
|
|
@@ -30244,17 +30214,17 @@ function VideoBitesDisplay({
|
|
|
30244
30214
|
] });
|
|
30245
30215
|
}
|
|
30246
30216
|
function BiteGrid({ bites, ratio }) {
|
|
30247
|
-
return /* @__PURE__ */
|
|
30217
|
+
return /* @__PURE__ */ jsx271("div", { className: RATIO_DISPLAY_GRID_CLASS[ratio], children: bites.map((bite, index) => /* @__PURE__ */ jsx271(LazyBite, { ratio, children: /* @__PURE__ */ jsx271(VideoBiteCard, { url: bite.url, title: bite.title, thumbnailUrl: bite.thumbnail_url }) }, bite.url || index)) });
|
|
30248
30218
|
}
|
|
30249
30219
|
function VideoBiteCard({ url, title, thumbnailUrl }) {
|
|
30250
|
-
return /* @__PURE__ */
|
|
30251
|
-
/* @__PURE__ */
|
|
30252
|
-
title && /* @__PURE__ */
|
|
30220
|
+
return /* @__PURE__ */ jsxs223(Card, { className: "overflow-hidden border border-ods-border bg-ods-card hover:border-ods-accent transition-colors flex flex-col h-full", children: [
|
|
30221
|
+
/* @__PURE__ */ jsx271("div", { className: "relative flex-1 min-h-0", children: /* @__PURE__ */ jsx271(Video2, { url, poster: thumbnailUrl || void 0, layout: "fill" }) }),
|
|
30222
|
+
title && /* @__PURE__ */ jsx271("div", { className: "p-4", children: /* @__PURE__ */ jsx271("p", { className: "text-h4 text-ods-text-primary line-clamp-2", children: title }) })
|
|
30253
30223
|
] });
|
|
30254
30224
|
}
|
|
30255
30225
|
|
|
30256
30226
|
// src/components/features/entity-video-section.tsx
|
|
30257
|
-
import { Fragment as Fragment41, jsx as
|
|
30227
|
+
import { Fragment as Fragment41, jsx as jsx272, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
30258
30228
|
function EntityVideoSection({
|
|
30259
30229
|
mainVideoUrl,
|
|
30260
30230
|
youtubeUrl,
|
|
@@ -30279,10 +30249,10 @@ function EntityVideoSection({
|
|
|
30279
30249
|
}
|
|
30280
30250
|
const fullVideoUrl = youtubeUrl || mainVideoUrl || null;
|
|
30281
30251
|
const fullVideoKind = youtubeUrl ? "youtube" : "auto";
|
|
30282
|
-
return /* @__PURE__ */
|
|
30283
|
-
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */
|
|
30284
|
-
/* @__PURE__ */
|
|
30285
|
-
/* @__PURE__ */
|
|
30252
|
+
return /* @__PURE__ */ jsxs224(Fragment41, { children: [
|
|
30253
|
+
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ jsxs224(Tabs, { defaultValue: "full-video", className: "w-full", children: [
|
|
30254
|
+
/* @__PURE__ */ jsxs224(TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
|
|
30255
|
+
/* @__PURE__ */ jsx272(
|
|
30286
30256
|
TabsTrigger,
|
|
30287
30257
|
{
|
|
30288
30258
|
value: "full-video",
|
|
@@ -30290,7 +30260,7 @@ function EntityVideoSection({
|
|
|
30290
30260
|
children: "Full Video"
|
|
30291
30261
|
}
|
|
30292
30262
|
),
|
|
30293
|
-
/* @__PURE__ */
|
|
30263
|
+
/* @__PURE__ */ jsx272(
|
|
30294
30264
|
TabsTrigger,
|
|
30295
30265
|
{
|
|
30296
30266
|
value: "highlights",
|
|
@@ -30299,7 +30269,7 @@ function EntityVideoSection({
|
|
|
30299
30269
|
}
|
|
30300
30270
|
)
|
|
30301
30271
|
] }),
|
|
30302
|
-
/* @__PURE__ */
|
|
30272
|
+
/* @__PURE__ */ jsx272(TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ jsx272(
|
|
30303
30273
|
Video2,
|
|
30304
30274
|
{
|
|
30305
30275
|
kind: fullVideoKind,
|
|
@@ -30312,7 +30282,7 @@ function EntityVideoSection({
|
|
|
30312
30282
|
priority
|
|
30313
30283
|
}
|
|
30314
30284
|
) }),
|
|
30315
|
-
/* @__PURE__ */
|
|
30285
|
+
/* @__PURE__ */ jsx272(TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ jsx272(
|
|
30316
30286
|
Video2,
|
|
30317
30287
|
{
|
|
30318
30288
|
url: highlightVideoUrl,
|
|
@@ -30320,7 +30290,7 @@ function EntityVideoSection({
|
|
|
30320
30290
|
layout: "centered"
|
|
30321
30291
|
}
|
|
30322
30292
|
) })
|
|
30323
|
-
] }) : hasFullVideo ? /* @__PURE__ */
|
|
30293
|
+
] }) : hasFullVideo ? /* @__PURE__ */ jsx272(
|
|
30324
30294
|
Video2,
|
|
30325
30295
|
{
|
|
30326
30296
|
kind: fullVideoKind,
|
|
@@ -30332,7 +30302,7 @@ function EntityVideoSection({
|
|
|
30332
30302
|
layout: "centered",
|
|
30333
30303
|
priority
|
|
30334
30304
|
}
|
|
30335
|
-
) : /* @__PURE__ */
|
|
30305
|
+
) : /* @__PURE__ */ jsx272(
|
|
30336
30306
|
Video2,
|
|
30337
30307
|
{
|
|
30338
30308
|
url: highlightVideoUrl,
|
|
@@ -30341,11 +30311,11 @@ function EntityVideoSection({
|
|
|
30341
30311
|
priority
|
|
30342
30312
|
}
|
|
30343
30313
|
)),
|
|
30344
|
-
videoSummary && MarkdownRenderer && /* @__PURE__ */
|
|
30345
|
-
/* @__PURE__ */
|
|
30346
|
-
/* @__PURE__ */
|
|
30314
|
+
videoSummary && MarkdownRenderer && /* @__PURE__ */ jsxs224("div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30315
|
+
/* @__PURE__ */ jsx272("h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: "Summary" }),
|
|
30316
|
+
/* @__PURE__ */ jsx272("div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ jsx272(MarkdownRenderer, { content: videoSummary }) })
|
|
30347
30317
|
] }),
|
|
30348
|
-
videoBites && videoBites.length > 0 && /* @__PURE__ */
|
|
30318
|
+
videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx272(
|
|
30349
30319
|
VideoBitesDisplay,
|
|
30350
30320
|
{
|
|
30351
30321
|
bites: videoBites,
|
|
@@ -30360,7 +30330,7 @@ function EntityVideoSection({
|
|
|
30360
30330
|
init_button2();
|
|
30361
30331
|
import { useState as useState68, useCallback as useCallback31 } from "react";
|
|
30362
30332
|
import { Upload as Upload6, Sparkles as Sparkles3, X as X13, Video as Video6 } from "lucide-react";
|
|
30363
|
-
import { jsx as
|
|
30333
|
+
import { jsx as jsx273, jsxs as jsxs225 } from "react/jsx-runtime";
|
|
30364
30334
|
function VideoSourceSelector({
|
|
30365
30335
|
videoSourceType,
|
|
30366
30336
|
onVideoSourceTypeChange,
|
|
@@ -30421,38 +30391,38 @@ function VideoSourceSelector({
|
|
|
30421
30391
|
const handleDeleteVideo = useCallback31(() => {
|
|
30422
30392
|
onUploadedVideoUrlChange("");
|
|
30423
30393
|
}, [onUploadedVideoUrlChange]);
|
|
30424
|
-
return /* @__PURE__ */
|
|
30425
|
-
showTitle && /* @__PURE__ */
|
|
30426
|
-
/* @__PURE__ */
|
|
30394
|
+
return /* @__PURE__ */ jsxs225("div", { className: `space-y-4 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
30395
|
+
showTitle && /* @__PURE__ */ jsxs225("h3", { className: "font-['Azeret_Mono'] text-[18px] font-semibold uppercase text-ods-text-primary flex items-center gap-2", children: [
|
|
30396
|
+
/* @__PURE__ */ jsx273(Video6, { className: "h-5 w-5" }),
|
|
30427
30397
|
title
|
|
30428
30398
|
] }),
|
|
30429
|
-
/* @__PURE__ */
|
|
30430
|
-
/* @__PURE__ */
|
|
30399
|
+
/* @__PURE__ */ jsxs225("div", { className: "flex gap-2", children: [
|
|
30400
|
+
/* @__PURE__ */ jsx273(
|
|
30431
30401
|
Button,
|
|
30432
30402
|
{
|
|
30433
30403
|
type: "button",
|
|
30434
30404
|
variant: videoSourceType === "youtube" ? "accent" : "outline",
|
|
30435
30405
|
onClick: () => onVideoSourceTypeChange("youtube"),
|
|
30436
|
-
leftIcon: /* @__PURE__ */
|
|
30406
|
+
leftIcon: /* @__PURE__ */ jsx273(YouTubeIcon, { className: "h-4 w-4", color: "currentColor" }),
|
|
30437
30407
|
disabled,
|
|
30438
30408
|
children: "YouTube URL"
|
|
30439
30409
|
}
|
|
30440
30410
|
),
|
|
30441
|
-
/* @__PURE__ */
|
|
30411
|
+
/* @__PURE__ */ jsx273(
|
|
30442
30412
|
Button,
|
|
30443
30413
|
{
|
|
30444
30414
|
type: "button",
|
|
30445
30415
|
variant: videoSourceType === "uploaded" ? "accent" : "outline",
|
|
30446
30416
|
onClick: () => onVideoSourceTypeChange("uploaded"),
|
|
30447
|
-
leftIcon: /* @__PURE__ */
|
|
30417
|
+
leftIcon: /* @__PURE__ */ jsx273(Upload6, { className: "h-4 w-4" }),
|
|
30448
30418
|
disabled,
|
|
30449
30419
|
children: "Upload Video"
|
|
30450
30420
|
}
|
|
30451
30421
|
)
|
|
30452
30422
|
] }),
|
|
30453
|
-
videoSourceType === "youtube" && /* @__PURE__ */
|
|
30454
|
-
/* @__PURE__ */
|
|
30455
|
-
/* @__PURE__ */
|
|
30423
|
+
videoSourceType === "youtube" && /* @__PURE__ */ jsxs225("div", { className: "space-y-2", children: [
|
|
30424
|
+
/* @__PURE__ */ jsx273(Label, { children: youtubeLabel }),
|
|
30425
|
+
/* @__PURE__ */ jsx273(
|
|
30456
30426
|
Input,
|
|
30457
30427
|
{
|
|
30458
30428
|
value: youtubeUrl,
|
|
@@ -30462,31 +30432,31 @@ function VideoSourceSelector({
|
|
|
30462
30432
|
disabled
|
|
30463
30433
|
}
|
|
30464
30434
|
),
|
|
30465
|
-
youtubeHelperText && /* @__PURE__ */
|
|
30435
|
+
youtubeHelperText && /* @__PURE__ */ jsx273("p", { className: "text-xs text-ods-text-secondary", children: youtubeHelperText })
|
|
30466
30436
|
] }),
|
|
30467
|
-
videoSourceType === "uploaded" && /* @__PURE__ */
|
|
30468
|
-
/* @__PURE__ */
|
|
30469
|
-
/* @__PURE__ */
|
|
30470
|
-
/* @__PURE__ */
|
|
30471
|
-
showAIBadge && isAIGenerated && /* @__PURE__ */
|
|
30472
|
-
/* @__PURE__ */
|
|
30437
|
+
videoSourceType === "uploaded" && /* @__PURE__ */ jsxs225("div", { children: [
|
|
30438
|
+
/* @__PURE__ */ jsxs225("div", { className: "flex items-center justify-between mb-2", children: [
|
|
30439
|
+
/* @__PURE__ */ jsxs225("div", { className: "flex items-center gap-2", children: [
|
|
30440
|
+
/* @__PURE__ */ jsx273(Label, { children: uploadLabel }),
|
|
30441
|
+
showAIBadge && isAIGenerated && /* @__PURE__ */ jsxs225(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30442
|
+
/* @__PURE__ */ jsx273(Sparkles3, { className: "h-3 w-3" }),
|
|
30473
30443
|
"AI Generated"
|
|
30474
30444
|
] })
|
|
30475
30445
|
] }),
|
|
30476
|
-
/* @__PURE__ */
|
|
30446
|
+
/* @__PURE__ */ jsx273(
|
|
30477
30447
|
Button,
|
|
30478
30448
|
{
|
|
30479
30449
|
type: "button",
|
|
30480
30450
|
variant: "outline",
|
|
30481
30451
|
size: "small-legacy",
|
|
30482
|
-
leftIcon: /* @__PURE__ */
|
|
30452
|
+
leftIcon: /* @__PURE__ */ jsx273(Upload6, { className: "h-4 w-4" }),
|
|
30483
30453
|
onClick: handleUploadClick,
|
|
30484
30454
|
disabled: disabled || isUploading,
|
|
30485
30455
|
children: "Upload Video"
|
|
30486
30456
|
}
|
|
30487
30457
|
)
|
|
30488
30458
|
] }),
|
|
30489
|
-
isUploading && UploadProgressComponent && /* @__PURE__ */
|
|
30459
|
+
isUploading && UploadProgressComponent && /* @__PURE__ */ jsx273(
|
|
30490
30460
|
UploadProgressComponent,
|
|
30491
30461
|
{
|
|
30492
30462
|
progress: uploadProgress,
|
|
@@ -30494,24 +30464,24 @@ function VideoSourceSelector({
|
|
|
30494
30464
|
className: "mb-3"
|
|
30495
30465
|
}
|
|
30496
30466
|
),
|
|
30497
|
-
isUploading && !UploadProgressComponent && /* @__PURE__ */
|
|
30498
|
-
/* @__PURE__ */
|
|
30499
|
-
/* @__PURE__ */
|
|
30467
|
+
isUploading && !UploadProgressComponent && /* @__PURE__ */ jsxs225("div", { className: "mb-3", children: [
|
|
30468
|
+
/* @__PURE__ */ jsxs225("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
30469
|
+
/* @__PURE__ */ jsx273("div", { className: "flex-1 h-2 bg-ods-border rounded-full overflow-hidden", children: /* @__PURE__ */ jsx273(
|
|
30500
30470
|
"div",
|
|
30501
30471
|
{
|
|
30502
30472
|
className: "h-full bg-ods-accent transition-all duration-300",
|
|
30503
30473
|
style: { width: `${uploadProgress}%` }
|
|
30504
30474
|
}
|
|
30505
30475
|
) }),
|
|
30506
|
-
/* @__PURE__ */
|
|
30476
|
+
/* @__PURE__ */ jsxs225("span", { className: "text-xs text-ods-text-secondary", children: [
|
|
30507
30477
|
uploadProgress,
|
|
30508
30478
|
"%"
|
|
30509
30479
|
] })
|
|
30510
30480
|
] }),
|
|
30511
|
-
/* @__PURE__ */
|
|
30481
|
+
/* @__PURE__ */ jsx273("p", { className: "text-xs text-ods-text-secondary", children: uploadMessage })
|
|
30512
30482
|
] }),
|
|
30513
|
-
uploadError && /* @__PURE__ */
|
|
30514
|
-
uploadedVideoUrl ? VideoPreviewComponent ? /* @__PURE__ */
|
|
30483
|
+
uploadError && /* @__PURE__ */ jsx273("p", { className: "text-sm text-ods-attention-red-error mb-3", children: uploadError }),
|
|
30484
|
+
uploadedVideoUrl ? VideoPreviewComponent ? /* @__PURE__ */ jsx273(
|
|
30515
30485
|
VideoPreviewComponent,
|
|
30516
30486
|
{
|
|
30517
30487
|
videoUrl: uploadedVideoUrl,
|
|
@@ -30520,8 +30490,8 @@ function VideoSourceSelector({
|
|
|
30520
30490
|
}
|
|
30521
30491
|
) : (
|
|
30522
30492
|
// Default simple preview
|
|
30523
|
-
/* @__PURE__ */
|
|
30524
|
-
/* @__PURE__ */
|
|
30493
|
+
/* @__PURE__ */ jsxs225("div", { className: "relative rounded-lg border border-ods-border overflow-hidden", children: [
|
|
30494
|
+
/* @__PURE__ */ jsx273(
|
|
30525
30495
|
"video",
|
|
30526
30496
|
{
|
|
30527
30497
|
src: uploadedVideoUrl,
|
|
@@ -30529,18 +30499,18 @@ function VideoSourceSelector({
|
|
|
30529
30499
|
controls: true
|
|
30530
30500
|
}
|
|
30531
30501
|
),
|
|
30532
|
-
/* @__PURE__ */
|
|
30502
|
+
/* @__PURE__ */ jsx273(
|
|
30533
30503
|
"button",
|
|
30534
30504
|
{
|
|
30535
30505
|
type: "button",
|
|
30536
30506
|
onClick: handleDeleteVideo,
|
|
30537
30507
|
className: "absolute top-2 right-2 p-1.5 bg-black/60 hover:bg-black/80 rounded-full transition-colors",
|
|
30538
30508
|
disabled,
|
|
30539
|
-
children: /* @__PURE__ */
|
|
30509
|
+
children: /* @__PURE__ */ jsx273(X13, { className: "h-4 w-4 text-white" })
|
|
30540
30510
|
}
|
|
30541
30511
|
)
|
|
30542
30512
|
] })
|
|
30543
|
-
) : /* @__PURE__ */
|
|
30513
|
+
) : /* @__PURE__ */ jsx273("p", { className: "text-sm text-ods-text-secondary italic", children: uploadEmptyText })
|
|
30544
30514
|
] })
|
|
30545
30515
|
] });
|
|
30546
30516
|
}
|
|
@@ -30550,7 +30520,7 @@ import { Sparkles as Sparkles4 } from "lucide-react";
|
|
|
30550
30520
|
|
|
30551
30521
|
// src/components/features/ai-enrich/ConfidenceBadge.tsx
|
|
30552
30522
|
init_cn();
|
|
30553
|
-
import { jsx as
|
|
30523
|
+
import { jsx as jsx274, jsxs as jsxs226 } from "react/jsx-runtime";
|
|
30554
30524
|
var sizeStyles = {
|
|
30555
30525
|
sm: "text-xs px-1.5 py-0.5",
|
|
30556
30526
|
md: "text-sm px-2 py-1",
|
|
@@ -30571,7 +30541,7 @@ var ConfidenceBadge = ({
|
|
|
30571
30541
|
const borderClass = getConfidenceBorderClass(confidence);
|
|
30572
30542
|
const textClass = getConfidenceTextClass(confidence);
|
|
30573
30543
|
const bgClass = getConfidenceBgClass(confidence);
|
|
30574
|
-
return /* @__PURE__ */
|
|
30544
|
+
return /* @__PURE__ */ jsxs226(
|
|
30575
30545
|
"span",
|
|
30576
30546
|
{
|
|
30577
30547
|
className: cn(
|
|
@@ -30583,8 +30553,8 @@ var ConfidenceBadge = ({
|
|
|
30583
30553
|
className
|
|
30584
30554
|
),
|
|
30585
30555
|
children: [
|
|
30586
|
-
showLabel && /* @__PURE__ */
|
|
30587
|
-
showPercentage && confidence !== void 0 && /* @__PURE__ */
|
|
30556
|
+
showLabel && /* @__PURE__ */ jsx274("span", { children: label }),
|
|
30557
|
+
showPercentage && confidence !== void 0 && /* @__PURE__ */ jsxs226("span", { className: "opacity-75", children: [
|
|
30588
30558
|
"(",
|
|
30589
30559
|
confidence,
|
|
30590
30560
|
"%)"
|
|
@@ -30595,7 +30565,7 @@ var ConfidenceBadge = ({
|
|
|
30595
30565
|
};
|
|
30596
30566
|
|
|
30597
30567
|
// src/components/features/transcript-summary-editor.tsx
|
|
30598
|
-
import { jsx as
|
|
30568
|
+
import { jsx as jsx275, jsxs as jsxs227 } from "react/jsx-runtime";
|
|
30599
30569
|
function TranscriptSummaryEditor({
|
|
30600
30570
|
videoSummary = "",
|
|
30601
30571
|
onVideoSummaryChange,
|
|
@@ -30621,16 +30591,16 @@ function TranscriptSummaryEditor({
|
|
|
30621
30591
|
disabled = false,
|
|
30622
30592
|
className = ""
|
|
30623
30593
|
}) {
|
|
30624
|
-
return /* @__PURE__ */
|
|
30625
|
-
/* @__PURE__ */
|
|
30626
|
-
/* @__PURE__ */
|
|
30627
|
-
/* @__PURE__ */
|
|
30628
|
-
/* @__PURE__ */
|
|
30629
|
-
isAIGenerated && /* @__PURE__ */
|
|
30630
|
-
/* @__PURE__ */
|
|
30594
|
+
return /* @__PURE__ */ jsxs227("div", { className: `space-y-4 ${className}`, children: [
|
|
30595
|
+
/* @__PURE__ */ jsxs227("div", { children: [
|
|
30596
|
+
/* @__PURE__ */ jsxs227("div", { className: "mb-2", children: [
|
|
30597
|
+
/* @__PURE__ */ jsxs227("div", { className: "flex items-center gap-2", children: [
|
|
30598
|
+
/* @__PURE__ */ jsx275(Label, { htmlFor: "video-summary", children: videoSummaryLabel }),
|
|
30599
|
+
isAIGenerated && /* @__PURE__ */ jsxs227(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30600
|
+
/* @__PURE__ */ jsx275(Sparkles4, { className: "h-3 w-3" }),
|
|
30631
30601
|
"AI Generated"
|
|
30632
30602
|
] }),
|
|
30633
|
-
videoSummaryConfidence !== void 0 && videoSummaryConfidence !== null && /* @__PURE__ */
|
|
30603
|
+
videoSummaryConfidence !== void 0 && videoSummaryConfidence !== null && /* @__PURE__ */ jsx275(
|
|
30634
30604
|
ConfidenceBadge,
|
|
30635
30605
|
{
|
|
30636
30606
|
confidence: videoSummaryConfidence,
|
|
@@ -30640,14 +30610,14 @@ function TranscriptSummaryEditor({
|
|
|
30640
30610
|
}
|
|
30641
30611
|
)
|
|
30642
30612
|
] }),
|
|
30643
|
-
/* @__PURE__ */
|
|
30613
|
+
/* @__PURE__ */ jsx275("p", { className: "text-xs text-ods-text-secondary mt-1", children: videoSummaryHelperText })
|
|
30644
30614
|
] }),
|
|
30645
|
-
/* @__PURE__ */
|
|
30615
|
+
/* @__PURE__ */ jsx275(
|
|
30646
30616
|
"div",
|
|
30647
30617
|
{
|
|
30648
30618
|
className: "rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden",
|
|
30649
30619
|
style: { minHeight: `${videoSummaryMinHeight}px` },
|
|
30650
|
-
children: /* @__PURE__ */
|
|
30620
|
+
children: /* @__PURE__ */ jsx275(
|
|
30651
30621
|
Textarea,
|
|
30652
30622
|
{
|
|
30653
30623
|
id: "video-summary",
|
|
@@ -30662,15 +30632,15 @@ function TranscriptSummaryEditor({
|
|
|
30662
30632
|
}
|
|
30663
30633
|
)
|
|
30664
30634
|
] }),
|
|
30665
|
-
/* @__PURE__ */
|
|
30666
|
-
/* @__PURE__ */
|
|
30667
|
-
/* @__PURE__ */
|
|
30668
|
-
/* @__PURE__ */
|
|
30669
|
-
isAIGenerated && /* @__PURE__ */
|
|
30670
|
-
/* @__PURE__ */
|
|
30635
|
+
/* @__PURE__ */ jsxs227("div", { children: [
|
|
30636
|
+
/* @__PURE__ */ jsxs227("div", { className: "mb-2", children: [
|
|
30637
|
+
/* @__PURE__ */ jsxs227("div", { className: "flex items-center gap-2", children: [
|
|
30638
|
+
/* @__PURE__ */ jsx275(Label, { htmlFor: "transcript", children: transcriptLabel }),
|
|
30639
|
+
isAIGenerated && /* @__PURE__ */ jsxs227(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30640
|
+
/* @__PURE__ */ jsx275(Sparkles4, { className: "h-3 w-3" }),
|
|
30671
30641
|
"AI Generated"
|
|
30672
30642
|
] }),
|
|
30673
|
-
transcriptConfidence !== void 0 && transcriptConfidence !== null && /* @__PURE__ */
|
|
30643
|
+
transcriptConfidence !== void 0 && transcriptConfidence !== null && /* @__PURE__ */ jsx275(
|
|
30674
30644
|
ConfidenceBadge,
|
|
30675
30645
|
{
|
|
30676
30646
|
confidence: transcriptConfidence,
|
|
@@ -30680,14 +30650,14 @@ function TranscriptSummaryEditor({
|
|
|
30680
30650
|
}
|
|
30681
30651
|
)
|
|
30682
30652
|
] }),
|
|
30683
|
-
/* @__PURE__ */
|
|
30653
|
+
/* @__PURE__ */ jsx275("p", { className: "text-xs text-ods-text-secondary mt-1", children: transcriptHelperText })
|
|
30684
30654
|
] }),
|
|
30685
|
-
/* @__PURE__ */
|
|
30655
|
+
/* @__PURE__ */ jsx275(
|
|
30686
30656
|
"div",
|
|
30687
30657
|
{
|
|
30688
30658
|
className: "rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden",
|
|
30689
30659
|
style: { minHeight: `${transcriptMinHeight}px` },
|
|
30690
|
-
children: /* @__PURE__ */
|
|
30660
|
+
children: /* @__PURE__ */ jsx275(
|
|
30691
30661
|
Textarea,
|
|
30692
30662
|
{
|
|
30693
30663
|
id: "transcript",
|
|
@@ -30702,23 +30672,23 @@ function TranscriptSummaryEditor({
|
|
|
30702
30672
|
}
|
|
30703
30673
|
)
|
|
30704
30674
|
] }),
|
|
30705
|
-
(subtitles || onSubtitlesChange) && /* @__PURE__ */
|
|
30706
|
-
/* @__PURE__ */
|
|
30707
|
-
/* @__PURE__ */
|
|
30708
|
-
/* @__PURE__ */
|
|
30709
|
-
isAIGenerated && subtitles && /* @__PURE__ */
|
|
30710
|
-
/* @__PURE__ */
|
|
30675
|
+
(subtitles || onSubtitlesChange) && /* @__PURE__ */ jsxs227("div", { children: [
|
|
30676
|
+
/* @__PURE__ */ jsxs227("div", { className: "mb-2", children: [
|
|
30677
|
+
/* @__PURE__ */ jsxs227("div", { className: "flex items-center gap-2", children: [
|
|
30678
|
+
/* @__PURE__ */ jsx275(Label, { htmlFor: "subtitles", children: subtitlesLabel }),
|
|
30679
|
+
isAIGenerated && subtitles && /* @__PURE__ */ jsxs227(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30680
|
+
/* @__PURE__ */ jsx275(StandardCcIcon, { size: 12 }),
|
|
30711
30681
|
"AI Generated"
|
|
30712
30682
|
] })
|
|
30713
30683
|
] }),
|
|
30714
|
-
/* @__PURE__ */
|
|
30684
|
+
/* @__PURE__ */ jsx275("p", { className: "text-xs text-ods-text-secondary mt-1", children: subtitlesHelperText })
|
|
30715
30685
|
] }),
|
|
30716
|
-
/* @__PURE__ */
|
|
30686
|
+
/* @__PURE__ */ jsx275(
|
|
30717
30687
|
"div",
|
|
30718
30688
|
{
|
|
30719
30689
|
className: "rounded-lg border border-ods-border bg-ods-background-secondary overflow-hidden",
|
|
30720
30690
|
style: { minHeight: `${subtitlesMinHeight}px` },
|
|
30721
|
-
children: /* @__PURE__ */
|
|
30691
|
+
children: /* @__PURE__ */ jsx275(
|
|
30722
30692
|
Textarea,
|
|
30723
30693
|
{
|
|
30724
30694
|
id: "subtitles",
|
|
@@ -30747,7 +30717,7 @@ init_cn();
|
|
|
30747
30717
|
// src/components/features/ai-enrich/AIEnrichButton.tsx
|
|
30748
30718
|
init_button2();
|
|
30749
30719
|
init_cn();
|
|
30750
|
-
import { jsx as
|
|
30720
|
+
import { jsx as jsx276 } from "react/jsx-runtime";
|
|
30751
30721
|
var sizeMap = {
|
|
30752
30722
|
sm: "small-legacy",
|
|
30753
30723
|
md: "default",
|
|
@@ -30768,7 +30738,7 @@ var AIEnrichButton = ({
|
|
|
30768
30738
|
variant = "outline",
|
|
30769
30739
|
className
|
|
30770
30740
|
}) => {
|
|
30771
|
-
return /* @__PURE__ */
|
|
30741
|
+
return /* @__PURE__ */ jsx276(
|
|
30772
30742
|
Button,
|
|
30773
30743
|
{
|
|
30774
30744
|
type: "button",
|
|
@@ -30777,7 +30747,7 @@ var AIEnrichButton = ({
|
|
|
30777
30747
|
loading,
|
|
30778
30748
|
size: sizeMap[size],
|
|
30779
30749
|
variant: variantMap[variant],
|
|
30780
|
-
leftIcon: !loading && /* @__PURE__ */
|
|
30750
|
+
leftIcon: !loading && /* @__PURE__ */ jsx276(SparklesIcon, { size: 18, color: "currentColor" }),
|
|
30781
30751
|
className: cn("gap-2", className),
|
|
30782
30752
|
children: loading ? loadingLabel : label
|
|
30783
30753
|
}
|
|
@@ -30786,7 +30756,7 @@ var AIEnrichButton = ({
|
|
|
30786
30756
|
|
|
30787
30757
|
// src/components/features/ai-enrich/AIWarningsSection.tsx
|
|
30788
30758
|
init_cn();
|
|
30789
|
-
import { jsx as
|
|
30759
|
+
import { jsx as jsx277, jsxs as jsxs228 } from "react/jsx-runtime";
|
|
30790
30760
|
var AIWarningsSection = ({
|
|
30791
30761
|
warnings,
|
|
30792
30762
|
title = "AI Warnings",
|
|
@@ -30795,22 +30765,22 @@ var AIWarningsSection = ({
|
|
|
30795
30765
|
if (!warnings || warnings.length === 0) {
|
|
30796
30766
|
return null;
|
|
30797
30767
|
}
|
|
30798
|
-
return /* @__PURE__ */
|
|
30768
|
+
return /* @__PURE__ */ jsx277(
|
|
30799
30769
|
"div",
|
|
30800
30770
|
{
|
|
30801
30771
|
className: cn(
|
|
30802
30772
|
"rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-4",
|
|
30803
30773
|
className
|
|
30804
30774
|
),
|
|
30805
|
-
children: /* @__PURE__ */
|
|
30806
|
-
/* @__PURE__ */
|
|
30775
|
+
children: /* @__PURE__ */ jsxs228("div", { className: "flex items-start gap-2", children: [
|
|
30776
|
+
/* @__PURE__ */ jsx277(
|
|
30807
30777
|
"svg",
|
|
30808
30778
|
{
|
|
30809
30779
|
className: "w-5 h-5 text-yellow-500 flex-shrink-0 mt-0.5",
|
|
30810
30780
|
fill: "none",
|
|
30811
30781
|
viewBox: "0 0 24 24",
|
|
30812
30782
|
stroke: "currentColor",
|
|
30813
|
-
children: /* @__PURE__ */
|
|
30783
|
+
children: /* @__PURE__ */ jsx277(
|
|
30814
30784
|
"path",
|
|
30815
30785
|
{
|
|
30816
30786
|
strokeLinecap: "round",
|
|
@@ -30821,9 +30791,9 @@ var AIWarningsSection = ({
|
|
|
30821
30791
|
)
|
|
30822
30792
|
}
|
|
30823
30793
|
),
|
|
30824
|
-
/* @__PURE__ */
|
|
30825
|
-
/* @__PURE__ */
|
|
30826
|
-
/* @__PURE__ */
|
|
30794
|
+
/* @__PURE__ */ jsxs228("div", { className: "flex-1", children: [
|
|
30795
|
+
/* @__PURE__ */ jsx277("h4", { className: "text-sm font-semibold text-yellow-500 mb-2", children: title }),
|
|
30796
|
+
/* @__PURE__ */ jsx277("ul", { className: "space-y-1", children: warnings.map((warning, index) => /* @__PURE__ */ jsx277(
|
|
30827
30797
|
"li",
|
|
30828
30798
|
{
|
|
30829
30799
|
className: "text-sm text-yellow-500/80 list-disc list-inside",
|
|
@@ -30840,7 +30810,7 @@ var AIWarningsSection = ({
|
|
|
30840
30810
|
// src/components/features/ai-enrich/AIEnrichSection.tsx
|
|
30841
30811
|
init_button2();
|
|
30842
30812
|
import { CheckCircle as CheckCircle4, AlertCircle as AlertCircle2, Loader2 as Loader211, X as X14 } from "lucide-react";
|
|
30843
|
-
import { jsx as
|
|
30813
|
+
import { jsx as jsx278, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
30844
30814
|
var AIEnrichSection = ({
|
|
30845
30815
|
onEnrich,
|
|
30846
30816
|
loading = false,
|
|
@@ -30877,7 +30847,7 @@ var AIEnrichSection = ({
|
|
|
30877
30847
|
const hasResults = status === "success" || status === "error";
|
|
30878
30848
|
const shouldDisable = disabled || !canEnrich;
|
|
30879
30849
|
const unfilledFields = requiredFields?.filter((f) => !f.isFilled) || [];
|
|
30880
|
-
return /* @__PURE__ */
|
|
30850
|
+
return /* @__PURE__ */ jsxs229(
|
|
30881
30851
|
"div",
|
|
30882
30852
|
{
|
|
30883
30853
|
className: cn(
|
|
@@ -30886,16 +30856,16 @@ var AIEnrichSection = ({
|
|
|
30886
30856
|
className
|
|
30887
30857
|
),
|
|
30888
30858
|
children: [
|
|
30889
|
-
/* @__PURE__ */
|
|
30890
|
-
icon || /* @__PURE__ */
|
|
30891
|
-
/* @__PURE__ */
|
|
30892
|
-
/* @__PURE__ */
|
|
30893
|
-
description && /* @__PURE__ */
|
|
30859
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex items-center gap-3", children: [
|
|
30860
|
+
icon || /* @__PURE__ */ jsx278(SparklesIcon, { size: 20, className: "text-ods-text-secondary" }),
|
|
30861
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex-1", children: [
|
|
30862
|
+
/* @__PURE__ */ jsx278("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
30863
|
+
description && /* @__PURE__ */ jsx278("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans'] mt-1", children: description })
|
|
30894
30864
|
] })
|
|
30895
30865
|
] }),
|
|
30896
|
-
showCustomInstructions && /* @__PURE__ */
|
|
30897
|
-
/* @__PURE__ */
|
|
30898
|
-
/* @__PURE__ */
|
|
30866
|
+
showCustomInstructions && /* @__PURE__ */ jsxs229("div", { className: "space-y-1.5", children: [
|
|
30867
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex items-center justify-between", children: [
|
|
30868
|
+
/* @__PURE__ */ jsx278(
|
|
30899
30869
|
"label",
|
|
30900
30870
|
{
|
|
30901
30871
|
htmlFor: "ai-enrich-custom-instructions",
|
|
@@ -30903,13 +30873,13 @@ var AIEnrichSection = ({
|
|
|
30903
30873
|
children: customInstructionsLabel
|
|
30904
30874
|
}
|
|
30905
30875
|
),
|
|
30906
|
-
customInstructionsMaxLength !== void 0 && /* @__PURE__ */
|
|
30876
|
+
customInstructionsMaxLength !== void 0 && /* @__PURE__ */ jsxs229("span", { className: "text-xs text-ods-text-secondary font-['DM_Sans']", children: [
|
|
30907
30877
|
(customInstructions ?? "").length,
|
|
30908
30878
|
"/",
|
|
30909
30879
|
customInstructionsMaxLength
|
|
30910
30880
|
] })
|
|
30911
30881
|
] }),
|
|
30912
|
-
/* @__PURE__ */
|
|
30882
|
+
/* @__PURE__ */ jsx278(
|
|
30913
30883
|
Textarea,
|
|
30914
30884
|
{
|
|
30915
30885
|
id: "ai-enrich-custom-instructions",
|
|
@@ -30922,10 +30892,10 @@ var AIEnrichSection = ({
|
|
|
30922
30892
|
className: "resize-y"
|
|
30923
30893
|
}
|
|
30924
30894
|
),
|
|
30925
|
-
customInstructionsHelperText && /* @__PURE__ */
|
|
30895
|
+
customInstructionsHelperText && /* @__PURE__ */ jsx278("p", { className: "text-xs text-ods-text-secondary font-['DM_Sans']", children: customInstructionsHelperText })
|
|
30926
30896
|
] }),
|
|
30927
|
-
/* @__PURE__ */
|
|
30928
|
-
/* @__PURE__ */
|
|
30897
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex flex-col gap-3", children: [
|
|
30898
|
+
/* @__PURE__ */ jsx278(
|
|
30929
30899
|
AIEnrichButton,
|
|
30930
30900
|
{
|
|
30931
30901
|
onClick: () => {
|
|
@@ -30943,7 +30913,7 @@ var AIEnrichSection = ({
|
|
|
30943
30913
|
className: "!w-full"
|
|
30944
30914
|
}
|
|
30945
30915
|
),
|
|
30946
|
-
showCancel && onCancel && loading && /* @__PURE__ */
|
|
30916
|
+
showCancel && onCancel && loading && /* @__PURE__ */ jsx278(
|
|
30947
30917
|
Button,
|
|
30948
30918
|
{
|
|
30949
30919
|
type: "button",
|
|
@@ -30951,48 +30921,48 @@ var AIEnrichSection = ({
|
|
|
30951
30921
|
size: "small-legacy",
|
|
30952
30922
|
onClick: onCancel,
|
|
30953
30923
|
disabled: isCancelling,
|
|
30954
|
-
leftIcon: isCancelling ? /* @__PURE__ */
|
|
30924
|
+
leftIcon: isCancelling ? /* @__PURE__ */ jsx278(Loader211, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx278(X14, { className: "h-4 w-4" }),
|
|
30955
30925
|
className: "!w-full",
|
|
30956
30926
|
children: isCancelling ? "Cancelling..." : "Cancel Processing"
|
|
30957
30927
|
}
|
|
30958
30928
|
)
|
|
30959
30929
|
] }),
|
|
30960
|
-
shouldDisable && !loading && /* @__PURE__ */
|
|
30961
|
-
/* @__PURE__ */
|
|
30962
|
-
unfilledFields.length > 0 && /* @__PURE__ */
|
|
30930
|
+
shouldDisable && !loading && /* @__PURE__ */ jsxs229("div", { className: "space-y-2", children: [
|
|
30931
|
+
/* @__PURE__ */ jsx278("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: disabledMessage }),
|
|
30932
|
+
unfilledFields.length > 0 && /* @__PURE__ */ jsx278("div", { className: "flex flex-wrap gap-2", children: unfilledFields.map((field) => /* @__PURE__ */ jsxs229(
|
|
30963
30933
|
"span",
|
|
30964
30934
|
{
|
|
30965
30935
|
className: "inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium rounded-full bg-[--ods-flamingo-cyan-base]/10 text-[--ods-flamingo-cyan-base]/70 font-['DM_Sans']",
|
|
30966
30936
|
children: [
|
|
30967
|
-
/* @__PURE__ */
|
|
30937
|
+
/* @__PURE__ */ jsx278("span", { className: "w-1.5 h-1.5 rounded-full bg-[--ods-flamingo-cyan-base]/50" }),
|
|
30968
30938
|
field.label
|
|
30969
30939
|
]
|
|
30970
30940
|
},
|
|
30971
30941
|
field.key
|
|
30972
30942
|
)) })
|
|
30973
30943
|
] }),
|
|
30974
|
-
loading && statusMessage && /* @__PURE__ */
|
|
30975
|
-
/* @__PURE__ */
|
|
30976
|
-
/* @__PURE__ */
|
|
30944
|
+
loading && statusMessage && /* @__PURE__ */ jsxs229("div", { className: "flex items-center gap-3 p-3 rounded-lg bg-ods-card-secondary", children: [
|
|
30945
|
+
/* @__PURE__ */ jsx278(Loader211, { className: "h-5 w-5 text-ods-accent animate-spin" }),
|
|
30946
|
+
/* @__PURE__ */ jsx278("span", { className: "text-sm text-ods-text-primary font-['DM_Sans']", children: statusMessage })
|
|
30977
30947
|
] }),
|
|
30978
|
-
hasResults && /* @__PURE__ */
|
|
30979
|
-
/* @__PURE__ */
|
|
30948
|
+
hasResults && /* @__PURE__ */ jsxs229("div", { className: "space-y-4", children: [
|
|
30949
|
+
/* @__PURE__ */ jsxs229("div", { className: cn(
|
|
30980
30950
|
"flex items-center gap-3 p-3 rounded-lg",
|
|
30981
30951
|
status === "success" ? "bg-[--ods-attention-green-success]/10" : "bg-[--ods-attention-red-error]/10"
|
|
30982
30952
|
), children: [
|
|
30983
|
-
status === "success" ? /* @__PURE__ */
|
|
30984
|
-
/* @__PURE__ */
|
|
30953
|
+
status === "success" ? /* @__PURE__ */ jsx278(CheckCircle4, { className: "h-5 w-5 text-[--ods-attention-green-success]" }) : /* @__PURE__ */ jsx278(AlertCircle2, { className: "h-5 w-5 text-[--ods-attention-red-error]" }),
|
|
30954
|
+
/* @__PURE__ */ jsx278("span", { className: cn(
|
|
30985
30955
|
"text-sm font-medium",
|
|
30986
30956
|
status === "success" ? "text-[--ods-attention-green-success]" : "text-[--ods-attention-red-error]"
|
|
30987
30957
|
), children: statusMessage || (status === "success" ? "Enrichment complete" : "Enrichment failed") }),
|
|
30988
|
-
overallConfidence !== void 0 && status === "success" && /* @__PURE__ */
|
|
30958
|
+
overallConfidence !== void 0 && status === "success" && /* @__PURE__ */ jsxs229(Badge, { variant: "success", className: "ml-auto", children: [
|
|
30989
30959
|
overallConfidence,
|
|
30990
30960
|
"% confidence"
|
|
30991
30961
|
] })
|
|
30992
30962
|
] }),
|
|
30993
|
-
warnings && warnings.length > 0 && /* @__PURE__ */
|
|
30963
|
+
warnings && warnings.length > 0 && /* @__PURE__ */ jsx278(AIWarningsSection, { warnings }),
|
|
30994
30964
|
children,
|
|
30995
|
-
showClearButton && onClear && /* @__PURE__ */
|
|
30965
|
+
showClearButton && onClear && /* @__PURE__ */ jsx278(
|
|
30996
30966
|
Button,
|
|
30997
30967
|
{
|
|
30998
30968
|
variant: "outline",
|
|
@@ -31008,7 +30978,7 @@ var AIEnrichSection = ({
|
|
|
31008
30978
|
};
|
|
31009
30979
|
|
|
31010
30980
|
// src/components/features/highlight-video-section.tsx
|
|
31011
|
-
import { jsx as
|
|
30981
|
+
import { jsx as jsx279, jsxs as jsxs230 } from "react/jsx-runtime";
|
|
31012
30982
|
function HighlightVideoSection({
|
|
31013
30983
|
highlightVideoUrl,
|
|
31014
30984
|
highlightVideoThumbnail,
|
|
@@ -31059,31 +31029,31 @@ function HighlightVideoSection({
|
|
|
31059
31029
|
const seconds = Math.floor(ms % 6e4 / 1e3);
|
|
31060
31030
|
return `${minutes}:${String(seconds).padStart(2, "0")}`;
|
|
31061
31031
|
};
|
|
31062
|
-
return /* @__PURE__ */
|
|
31063
|
-
/* @__PURE__ */
|
|
31064
|
-
/* @__PURE__ */
|
|
31065
|
-
/* @__PURE__ */
|
|
31066
|
-
/* @__PURE__ */
|
|
31032
|
+
return /* @__PURE__ */ jsxs230("div", { className: `space-y-4 ${className}`, children: [
|
|
31033
|
+
/* @__PURE__ */ jsx279("div", { className: "space-y-3 p-4 bg-ods-background-secondary rounded-lg border border-ods-border", children: /* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-4", children: [
|
|
31034
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex-1", children: [
|
|
31035
|
+
/* @__PURE__ */ jsx279(Label, { className: "text-sm", children: "Target Duration" }),
|
|
31036
|
+
/* @__PURE__ */ jsxs230(
|
|
31067
31037
|
Select,
|
|
31068
31038
|
{
|
|
31069
31039
|
value: targetDurationSeconds.toString(),
|
|
31070
31040
|
onValueChange: (value) => onTargetDurationChange(parseInt(value)),
|
|
31071
31041
|
disabled,
|
|
31072
31042
|
children: [
|
|
31073
|
-
/* @__PURE__ */
|
|
31074
|
-
/* @__PURE__ */
|
|
31075
|
-
/* @__PURE__ */
|
|
31076
|
-
/* @__PURE__ */
|
|
31077
|
-
/* @__PURE__ */
|
|
31078
|
-
/* @__PURE__ */
|
|
31079
|
-
/* @__PURE__ */
|
|
31043
|
+
/* @__PURE__ */ jsx279(SelectTrigger, { className: "bg-ods-background-tertiary mt-1", children: /* @__PURE__ */ jsx279(SelectValue, {}) }),
|
|
31044
|
+
/* @__PURE__ */ jsxs230(SelectContent, { className: "bg-ods-card", children: [
|
|
31045
|
+
/* @__PURE__ */ jsx279(SelectItem, { value: "60", children: "1 minute" }),
|
|
31046
|
+
/* @__PURE__ */ jsx279(SelectItem, { value: "120", children: "2 minutes" }),
|
|
31047
|
+
/* @__PURE__ */ jsx279(SelectItem, { value: "180", children: "3 minutes (Recommended)" }),
|
|
31048
|
+
/* @__PURE__ */ jsx279(SelectItem, { value: "240", children: "4 minutes" }),
|
|
31049
|
+
/* @__PURE__ */ jsx279(SelectItem, { value: "300", children: "5 minutes" })
|
|
31080
31050
|
] })
|
|
31081
31051
|
]
|
|
31082
31052
|
}
|
|
31083
31053
|
)
|
|
31084
31054
|
] }),
|
|
31085
|
-
/* @__PURE__ */
|
|
31086
|
-
/* @__PURE__ */
|
|
31055
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-2 pt-5", children: [
|
|
31056
|
+
/* @__PURE__ */ jsx279(
|
|
31087
31057
|
"input",
|
|
31088
31058
|
{
|
|
31089
31059
|
type: "checkbox",
|
|
@@ -31094,15 +31064,15 @@ function HighlightVideoSection({
|
|
|
31094
31064
|
className: "h-4 w-4 rounded border-ods-border bg-ods-background-tertiary text-ods-accent focus:ring-ods-accent"
|
|
31095
31065
|
}
|
|
31096
31066
|
),
|
|
31097
|
-
/* @__PURE__ */
|
|
31067
|
+
/* @__PURE__ */ jsx279(Label, { htmlFor: "skipSubtitleBurning", className: "text-sm cursor-pointer", children: "Skip subtitle burning" })
|
|
31098
31068
|
] })
|
|
31099
31069
|
] }) }),
|
|
31100
|
-
/* @__PURE__ */
|
|
31070
|
+
/* @__PURE__ */ jsx279(
|
|
31101
31071
|
AIEnrichSection,
|
|
31102
31072
|
{
|
|
31103
31073
|
title: "Highlight Video",
|
|
31104
31074
|
description: `Generate a ${Math.floor(targetDurationSeconds / 60)}-minute summary video using Claude AI + Shotstack`,
|
|
31105
|
-
icon: /* @__PURE__ */
|
|
31075
|
+
icon: /* @__PURE__ */ jsx279(Sparkles5, { className: "h-5 w-5" }),
|
|
31106
31076
|
buttonLabel: hasExistingHighlight ? "Regenerate Highlight" : "Generate Highlight",
|
|
31107
31077
|
loadingLabel: "Generating highlight...",
|
|
31108
31078
|
onEnrich: onGenerateHighlight,
|
|
@@ -31117,31 +31087,31 @@ function HighlightVideoSection({
|
|
|
31117
31087
|
isCancelling
|
|
31118
31088
|
}
|
|
31119
31089
|
),
|
|
31120
|
-
/* @__PURE__ */
|
|
31121
|
-
/* @__PURE__ */
|
|
31122
|
-
/* @__PURE__ */
|
|
31123
|
-
/* @__PURE__ */
|
|
31124
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
31125
|
-
/* @__PURE__ */
|
|
31090
|
+
/* @__PURE__ */ jsxs230("div", { className: "space-y-2", children: [
|
|
31091
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex items-center justify-between mb-2", children: [
|
|
31092
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-2", children: [
|
|
31093
|
+
/* @__PURE__ */ jsx279(Label, { children: "Highlight Video" }),
|
|
31094
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs230(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31095
|
+
/* @__PURE__ */ jsx279(Sparkles5, { className: "h-3 w-3" }),
|
|
31126
31096
|
"AI Generated"
|
|
31127
31097
|
] }),
|
|
31128
|
-
highlightVideoDurationMs && /* @__PURE__ */
|
|
31098
|
+
highlightVideoDurationMs && /* @__PURE__ */ jsx279(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
31129
31099
|
] }),
|
|
31130
|
-
/* @__PURE__ */
|
|
31100
|
+
/* @__PURE__ */ jsx279(
|
|
31131
31101
|
Button,
|
|
31132
31102
|
{
|
|
31133
31103
|
type: "button",
|
|
31134
31104
|
variant: "outline",
|
|
31135
31105
|
size: "small-legacy",
|
|
31136
|
-
leftIcon: /* @__PURE__ */
|
|
31106
|
+
leftIcon: /* @__PURE__ */ jsx279(Upload7, { className: "h-4 w-4" }),
|
|
31137
31107
|
onClick: handleUploadClick,
|
|
31138
31108
|
disabled: isUploading || disabled,
|
|
31139
31109
|
children: isUploading ? "Uploading..." : "Upload Highlight"
|
|
31140
31110
|
}
|
|
31141
31111
|
)
|
|
31142
31112
|
] }),
|
|
31143
|
-
uploadError && /* @__PURE__ */
|
|
31144
|
-
highlightVideoUrl ? VideoPreviewComponent ? /* @__PURE__ */
|
|
31113
|
+
uploadError && /* @__PURE__ */ jsx279("p", { className: "text-sm text-ods-attention-red-error", children: uploadError }),
|
|
31114
|
+
highlightVideoUrl ? VideoPreviewComponent ? /* @__PURE__ */ jsx279(
|
|
31145
31115
|
VideoPreviewComponent,
|
|
31146
31116
|
{
|
|
31147
31117
|
videoUrl: highlightVideoUrl,
|
|
@@ -31150,8 +31120,8 @@ function HighlightVideoSection({
|
|
|
31150
31120
|
}
|
|
31151
31121
|
) : (
|
|
31152
31122
|
// Default simple preview
|
|
31153
|
-
/* @__PURE__ */
|
|
31154
|
-
/* @__PURE__ */
|
|
31123
|
+
/* @__PURE__ */ jsxs230("div", { className: "relative rounded-lg border border-ods-border overflow-hidden bg-black", children: [
|
|
31124
|
+
/* @__PURE__ */ jsx279(
|
|
31155
31125
|
"video",
|
|
31156
31126
|
{
|
|
31157
31127
|
src: highlightVideoUrl,
|
|
@@ -31160,26 +31130,26 @@ function HighlightVideoSection({
|
|
|
31160
31130
|
controls: true
|
|
31161
31131
|
}
|
|
31162
31132
|
),
|
|
31163
|
-
onDeleteHighlight && /* @__PURE__ */
|
|
31133
|
+
onDeleteHighlight && /* @__PURE__ */ jsxs230(
|
|
31164
31134
|
"button",
|
|
31165
31135
|
{
|
|
31166
31136
|
type: "button",
|
|
31167
31137
|
onClick: onDeleteHighlight,
|
|
31168
31138
|
className: "absolute top-2 right-2 p-1.5 bg-black/60 hover:bg-black/80 rounded-full transition-colors",
|
|
31169
31139
|
children: [
|
|
31170
|
-
/* @__PURE__ */
|
|
31171
|
-
/* @__PURE__ */
|
|
31140
|
+
/* @__PURE__ */ jsx279("span", { className: "sr-only", children: "Delete" }),
|
|
31141
|
+
/* @__PURE__ */ jsx279("svg", { className: "h-4 w-4 text-white", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx279("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
31172
31142
|
]
|
|
31173
31143
|
}
|
|
31174
31144
|
)
|
|
31175
31145
|
] })
|
|
31176
|
-
) : /* @__PURE__ */
|
|
31146
|
+
) : /* @__PURE__ */ jsx279("p", { className: "text-sm text-ods-text-secondary italic", children: "No highlight video yet. Use AI generation above or upload manually." })
|
|
31177
31147
|
] })
|
|
31178
31148
|
] });
|
|
31179
31149
|
}
|
|
31180
31150
|
|
|
31181
31151
|
// src/components/features/highlight-config-section.tsx
|
|
31182
|
-
import { jsx as
|
|
31152
|
+
import { jsx as jsx280, jsxs as jsxs231 } from "react/jsx-runtime";
|
|
31183
31153
|
function HighlightConfigSection({
|
|
31184
31154
|
targetDurationSeconds,
|
|
31185
31155
|
onTargetDurationChange,
|
|
@@ -31188,30 +31158,30 @@ function HighlightConfigSection({
|
|
|
31188
31158
|
disabled = false,
|
|
31189
31159
|
className = ""
|
|
31190
31160
|
}) {
|
|
31191
|
-
return /* @__PURE__ */
|
|
31192
|
-
/* @__PURE__ */
|
|
31193
|
-
/* @__PURE__ */
|
|
31194
|
-
/* @__PURE__ */
|
|
31161
|
+
return /* @__PURE__ */ jsx280("div", { className: `space-y-3 p-4 bg-[#1a1a1a] rounded-lg border border-ods-border ${className}`, children: /* @__PURE__ */ jsxs231("div", { className: "flex items-center gap-4", children: [
|
|
31162
|
+
/* @__PURE__ */ jsxs231("div", { className: "flex-1", children: [
|
|
31163
|
+
/* @__PURE__ */ jsx280(Label, { className: "text-sm", children: "Target Duration" }),
|
|
31164
|
+
/* @__PURE__ */ jsxs231(
|
|
31195
31165
|
Select,
|
|
31196
31166
|
{
|
|
31197
31167
|
value: targetDurationSeconds.toString(),
|
|
31198
31168
|
onValueChange: (value) => onTargetDurationChange(parseInt(value)),
|
|
31199
31169
|
disabled,
|
|
31200
31170
|
children: [
|
|
31201
|
-
/* @__PURE__ */
|
|
31202
|
-
/* @__PURE__ */
|
|
31203
|
-
/* @__PURE__ */
|
|
31204
|
-
/* @__PURE__ */
|
|
31205
|
-
/* @__PURE__ */
|
|
31206
|
-
/* @__PURE__ */
|
|
31207
|
-
/* @__PURE__ */
|
|
31171
|
+
/* @__PURE__ */ jsx280(SelectTrigger, { className: "bg-[#161616] mt-1", children: /* @__PURE__ */ jsx280(SelectValue, {}) }),
|
|
31172
|
+
/* @__PURE__ */ jsxs231(SelectContent, { className: "bg-ods-card", children: [
|
|
31173
|
+
/* @__PURE__ */ jsx280(SelectItem, { value: "60", children: "1 minute" }),
|
|
31174
|
+
/* @__PURE__ */ jsx280(SelectItem, { value: "120", children: "2 minutes" }),
|
|
31175
|
+
/* @__PURE__ */ jsx280(SelectItem, { value: "180", children: "3 minutes (Recommended)" }),
|
|
31176
|
+
/* @__PURE__ */ jsx280(SelectItem, { value: "240", children: "4 minutes" }),
|
|
31177
|
+
/* @__PURE__ */ jsx280(SelectItem, { value: "300", children: "5 minutes" })
|
|
31208
31178
|
] })
|
|
31209
31179
|
]
|
|
31210
31180
|
}
|
|
31211
31181
|
)
|
|
31212
31182
|
] }),
|
|
31213
|
-
/* @__PURE__ */
|
|
31214
|
-
/* @__PURE__ */
|
|
31183
|
+
/* @__PURE__ */ jsxs231("div", { className: "flex items-center gap-2 pt-5", children: [
|
|
31184
|
+
/* @__PURE__ */ jsx280(
|
|
31215
31185
|
"input",
|
|
31216
31186
|
{
|
|
31217
31187
|
type: "checkbox",
|
|
@@ -31222,14 +31192,14 @@ function HighlightConfigSection({
|
|
|
31222
31192
|
className: "h-4 w-4 rounded border-ods-border bg-[#161616] text-ods-accent focus:ring-ods-accent"
|
|
31223
31193
|
}
|
|
31224
31194
|
),
|
|
31225
|
-
/* @__PURE__ */
|
|
31195
|
+
/* @__PURE__ */ jsx280(Label, { htmlFor: "skipSubtitleBurning", className: "text-sm cursor-pointer", children: "Skip subtitle burning" })
|
|
31226
31196
|
] })
|
|
31227
31197
|
] }) });
|
|
31228
31198
|
}
|
|
31229
31199
|
|
|
31230
31200
|
// src/components/features/entity-summary-editor.tsx
|
|
31231
31201
|
import { Sparkles as Sparkles6 } from "lucide-react";
|
|
31232
|
-
import { jsx as
|
|
31202
|
+
import { jsx as jsx281, jsxs as jsxs232 } from "react/jsx-runtime";
|
|
31233
31203
|
function EntitySummaryEditor({
|
|
31234
31204
|
summary = "",
|
|
31235
31205
|
onSummaryChange,
|
|
@@ -31242,15 +31212,15 @@ function EntitySummaryEditor({
|
|
|
31242
31212
|
disabled = false,
|
|
31243
31213
|
className = ""
|
|
31244
31214
|
}) {
|
|
31245
|
-
return /* @__PURE__ */
|
|
31246
|
-
/* @__PURE__ */
|
|
31247
|
-
/* @__PURE__ */
|
|
31248
|
-
/* @__PURE__ */
|
|
31249
|
-
isAIGenerated && /* @__PURE__ */
|
|
31250
|
-
/* @__PURE__ */
|
|
31215
|
+
return /* @__PURE__ */ jsxs232("div", { className, children: [
|
|
31216
|
+
/* @__PURE__ */ jsxs232("div", { className: "mb-2", children: [
|
|
31217
|
+
/* @__PURE__ */ jsxs232("div", { className: "flex items-center gap-2", children: [
|
|
31218
|
+
/* @__PURE__ */ jsx281(Label, { htmlFor: "entity-summary", children: label }),
|
|
31219
|
+
isAIGenerated && /* @__PURE__ */ jsxs232(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31220
|
+
/* @__PURE__ */ jsx281(Sparkles6, { className: "h-3 w-3" }),
|
|
31251
31221
|
"AI Generated"
|
|
31252
31222
|
] }),
|
|
31253
|
-
summaryConfidence !== void 0 && summaryConfidence !== null && /* @__PURE__ */
|
|
31223
|
+
summaryConfidence !== void 0 && summaryConfidence !== null && /* @__PURE__ */ jsx281(
|
|
31254
31224
|
ConfidenceBadge,
|
|
31255
31225
|
{
|
|
31256
31226
|
confidence: summaryConfidence,
|
|
@@ -31260,14 +31230,14 @@ function EntitySummaryEditor({
|
|
|
31260
31230
|
}
|
|
31261
31231
|
)
|
|
31262
31232
|
] }),
|
|
31263
|
-
/* @__PURE__ */
|
|
31233
|
+
/* @__PURE__ */ jsx281("p", { className: "text-xs text-ods-text-secondary mt-1", children: helperText })
|
|
31264
31234
|
] }),
|
|
31265
|
-
/* @__PURE__ */
|
|
31235
|
+
/* @__PURE__ */ jsx281(
|
|
31266
31236
|
"div",
|
|
31267
31237
|
{
|
|
31268
31238
|
className: "rounded-lg border border-ods-border bg-[#1a1a1a] overflow-hidden",
|
|
31269
31239
|
style: { minHeight: `${minHeight}px` },
|
|
31270
|
-
children: /* @__PURE__ */
|
|
31240
|
+
children: /* @__PURE__ */ jsx281(
|
|
31271
31241
|
Textarea,
|
|
31272
31242
|
{
|
|
31273
31243
|
id: "entity-summary",
|
|
@@ -31289,7 +31259,7 @@ import { Sparkles as Sparkles7 } from "lucide-react";
|
|
|
31289
31259
|
|
|
31290
31260
|
// src/components/features/ai-enrich/AIStatusIndicator.tsx
|
|
31291
31261
|
init_cn();
|
|
31292
|
-
import { jsx as
|
|
31262
|
+
import { jsx as jsx282, jsxs as jsxs233 } from "react/jsx-runtime";
|
|
31293
31263
|
var statusConfig = {
|
|
31294
31264
|
idle: {
|
|
31295
31265
|
color: "text-ods-text-secondary",
|
|
@@ -31322,7 +31292,7 @@ var AIStatusIndicator = ({
|
|
|
31322
31292
|
const config = statusConfig[status];
|
|
31323
31293
|
const displayText = message || config.label;
|
|
31324
31294
|
const confidenceLabel = showConfidence && confidence !== void 0 ? `${getConfidenceLabel(confidence)} (${confidence}%)` : null;
|
|
31325
|
-
return /* @__PURE__ */
|
|
31295
|
+
return /* @__PURE__ */ jsxs233(
|
|
31326
31296
|
"div",
|
|
31327
31297
|
{
|
|
31328
31298
|
className: cn(
|
|
@@ -31331,7 +31301,7 @@ var AIStatusIndicator = ({
|
|
|
31331
31301
|
className
|
|
31332
31302
|
),
|
|
31333
31303
|
children: [
|
|
31334
|
-
/* @__PURE__ */
|
|
31304
|
+
/* @__PURE__ */ jsx282(
|
|
31335
31305
|
SparklesIcon,
|
|
31336
31306
|
{
|
|
31337
31307
|
size: 16,
|
|
@@ -31341,7 +31311,7 @@ var AIStatusIndicator = ({
|
|
|
31341
31311
|
)
|
|
31342
31312
|
}
|
|
31343
31313
|
),
|
|
31344
|
-
/* @__PURE__ */
|
|
31314
|
+
/* @__PURE__ */ jsx282(
|
|
31345
31315
|
"span",
|
|
31346
31316
|
{
|
|
31347
31317
|
className: cn(
|
|
@@ -31351,7 +31321,7 @@ var AIStatusIndicator = ({
|
|
|
31351
31321
|
children: displayText
|
|
31352
31322
|
}
|
|
31353
31323
|
),
|
|
31354
|
-
confidenceLabel && status === "success" && /* @__PURE__ */
|
|
31324
|
+
confidenceLabel && status === "success" && /* @__PURE__ */ jsx282(
|
|
31355
31325
|
"span",
|
|
31356
31326
|
{
|
|
31357
31327
|
className: cn(
|
|
@@ -31369,12 +31339,12 @@ var AIStatusIndicator = ({
|
|
|
31369
31339
|
|
|
31370
31340
|
// src/components/features/ai-enrich/AIRequiredBadge.tsx
|
|
31371
31341
|
init_cn();
|
|
31372
|
-
import { jsx as
|
|
31342
|
+
import { jsx as jsx283, jsxs as jsxs234 } from "react/jsx-runtime";
|
|
31373
31343
|
var AIRequiredBadge = ({
|
|
31374
31344
|
className,
|
|
31375
31345
|
size = "sm"
|
|
31376
31346
|
}) => {
|
|
31377
|
-
return /* @__PURE__ */
|
|
31347
|
+
return /* @__PURE__ */ jsxs234(
|
|
31378
31348
|
"span",
|
|
31379
31349
|
{
|
|
31380
31350
|
className: cn(
|
|
@@ -31385,15 +31355,15 @@ var AIRequiredBadge = ({
|
|
|
31385
31355
|
className
|
|
31386
31356
|
),
|
|
31387
31357
|
children: [
|
|
31388
|
-
/* @__PURE__ */
|
|
31389
|
-
/* @__PURE__ */
|
|
31358
|
+
/* @__PURE__ */ jsx283(SparklesIcon, { size: size === "sm" ? 12 : 14, color: "var(--ods-flamingo-cyan-base)" }),
|
|
31359
|
+
/* @__PURE__ */ jsx283("span", { className: "font-['DM_Sans']", children: "AI-required" })
|
|
31390
31360
|
]
|
|
31391
31361
|
}
|
|
31392
31362
|
);
|
|
31393
31363
|
};
|
|
31394
31364
|
|
|
31395
31365
|
// src/components/features/transcribe-summarize-section.tsx
|
|
31396
|
-
import { jsx as
|
|
31366
|
+
import { jsx as jsx284 } from "react/jsx-runtime";
|
|
31397
31367
|
function TranscribeSummarizeSection({
|
|
31398
31368
|
onTranscribe,
|
|
31399
31369
|
isProcessing,
|
|
@@ -31412,12 +31382,12 @@ function TranscribeSummarizeSection({
|
|
|
31412
31382
|
loadingLabel = "Processing..."
|
|
31413
31383
|
}) {
|
|
31414
31384
|
const defaultButtonLabel = hasResult ? "Regenerate" : "Generate";
|
|
31415
|
-
return /* @__PURE__ */
|
|
31385
|
+
return /* @__PURE__ */ jsx284(
|
|
31416
31386
|
AIEnrichSection,
|
|
31417
31387
|
{
|
|
31418
31388
|
title,
|
|
31419
31389
|
description,
|
|
31420
|
-
icon: /* @__PURE__ */
|
|
31390
|
+
icon: /* @__PURE__ */ jsx284(Sparkles7, { className: "h-5 w-5" }),
|
|
31421
31391
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
31422
31392
|
loadingLabel,
|
|
31423
31393
|
onEnrich: onTranscribe,
|
|
@@ -31436,7 +31406,7 @@ function TranscribeSummarizeSection({
|
|
|
31436
31406
|
|
|
31437
31407
|
// src/components/features/video-clips-section.tsx
|
|
31438
31408
|
import { Sparkles as Sparkles8 } from "lucide-react";
|
|
31439
|
-
import { jsx as
|
|
31409
|
+
import { jsx as jsx285 } from "react/jsx-runtime";
|
|
31440
31410
|
function VideoClipsSection({
|
|
31441
31411
|
onExtractClips,
|
|
31442
31412
|
isProcessing,
|
|
@@ -31455,12 +31425,12 @@ function VideoClipsSection({
|
|
|
31455
31425
|
loadingLabel = "Extracting clips..."
|
|
31456
31426
|
}) {
|
|
31457
31427
|
const defaultButtonLabel = hasResult ? "Regenerate Clips" : "Generate Clips";
|
|
31458
|
-
return /* @__PURE__ */
|
|
31428
|
+
return /* @__PURE__ */ jsx285(
|
|
31459
31429
|
AIEnrichSection,
|
|
31460
31430
|
{
|
|
31461
31431
|
title,
|
|
31462
31432
|
description,
|
|
31463
|
-
icon: /* @__PURE__ */
|
|
31433
|
+
icon: /* @__PURE__ */ jsx285(Sparkles8, { className: "h-5 w-5" }),
|
|
31464
31434
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
31465
31435
|
loadingLabel,
|
|
31466
31436
|
onEnrich: onExtractClips,
|
|
@@ -31479,7 +31449,7 @@ function VideoClipsSection({
|
|
|
31479
31449
|
|
|
31480
31450
|
// src/components/features/highlight-generation-section.tsx
|
|
31481
31451
|
import { Sparkles as Sparkles9 } from "lucide-react";
|
|
31482
|
-
import { jsx as
|
|
31452
|
+
import { jsx as jsx286 } from "react/jsx-runtime";
|
|
31483
31453
|
function HighlightGenerationSection({
|
|
31484
31454
|
onGenerateHighlight,
|
|
31485
31455
|
isProcessing,
|
|
@@ -31500,12 +31470,12 @@ function HighlightGenerationSection({
|
|
|
31500
31470
|
}) {
|
|
31501
31471
|
const defaultButtonLabel = hasResult ? "Regenerate Highlight" : "Generate Highlight";
|
|
31502
31472
|
const defaultDescription = `Generate a ${Math.floor(targetDurationSeconds / 60)}-minute summary video using Claude AI + Shotstack`;
|
|
31503
|
-
return /* @__PURE__ */
|
|
31473
|
+
return /* @__PURE__ */ jsx286(
|
|
31504
31474
|
AIEnrichSection,
|
|
31505
31475
|
{
|
|
31506
31476
|
title,
|
|
31507
31477
|
description: description || defaultDescription,
|
|
31508
|
-
icon: /* @__PURE__ */
|
|
31478
|
+
icon: /* @__PURE__ */ jsx286(Sparkles9, { className: "h-5 w-5" }),
|
|
31509
31479
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
31510
31480
|
loadingLabel,
|
|
31511
31481
|
onEnrich: onGenerateHighlight,
|
|
@@ -31525,7 +31495,7 @@ function HighlightGenerationSection({
|
|
|
31525
31495
|
// src/components/features/highlight-video-preview.tsx
|
|
31526
31496
|
import { Upload as Upload8, Sparkles as Sparkles10 } from "lucide-react";
|
|
31527
31497
|
init_button2();
|
|
31528
|
-
import { jsx as
|
|
31498
|
+
import { jsx as jsx287, jsxs as jsxs235 } from "react/jsx-runtime";
|
|
31529
31499
|
function HighlightVideoPreview({
|
|
31530
31500
|
highlightVideoUrl,
|
|
31531
31501
|
highlightVideoThumbnail,
|
|
@@ -31556,23 +31526,23 @@ function HighlightVideoPreview({
|
|
|
31556
31526
|
const seconds = Math.floor(ms % 6e4 / 1e3);
|
|
31557
31527
|
return `${minutes}:${String(seconds).padStart(2, "0")}`;
|
|
31558
31528
|
};
|
|
31559
|
-
return /* @__PURE__ */
|
|
31560
|
-
/* @__PURE__ */
|
|
31561
|
-
/* @__PURE__ */
|
|
31562
|
-
/* @__PURE__ */
|
|
31563
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
31564
|
-
/* @__PURE__ */
|
|
31529
|
+
return /* @__PURE__ */ jsxs235("div", { className: "space-y-2", children: [
|
|
31530
|
+
/* @__PURE__ */ jsxs235("div", { className: "flex items-center justify-between mb-2", children: [
|
|
31531
|
+
/* @__PURE__ */ jsxs235("div", { className: "flex items-center gap-2", children: [
|
|
31532
|
+
/* @__PURE__ */ jsx287(Label, { children: label }),
|
|
31533
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs235(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31534
|
+
/* @__PURE__ */ jsx287(Sparkles10, { className: "h-3 w-3" }),
|
|
31565
31535
|
"AI Generated"
|
|
31566
31536
|
] }),
|
|
31567
|
-
highlightVideoDurationMs && /* @__PURE__ */
|
|
31537
|
+
highlightVideoDurationMs && /* @__PURE__ */ jsx287(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
31568
31538
|
] }),
|
|
31569
|
-
/* @__PURE__ */
|
|
31539
|
+
/* @__PURE__ */ jsx287(
|
|
31570
31540
|
Button,
|
|
31571
31541
|
{
|
|
31572
31542
|
type: "button",
|
|
31573
31543
|
variant: "outline",
|
|
31574
31544
|
size: "small-legacy",
|
|
31575
|
-
leftIcon: /* @__PURE__ */
|
|
31545
|
+
leftIcon: /* @__PURE__ */ jsx287(Upload8, { className: "h-4 w-4" }),
|
|
31576
31546
|
onClick: handleUploadClick,
|
|
31577
31547
|
disabled: isUploading,
|
|
31578
31548
|
children: isUploading ? "Uploading..." : "Upload Highlight"
|
|
@@ -31585,13 +31555,13 @@ function HighlightVideoPreview({
|
|
|
31585
31555
|
title: "Highlight Video",
|
|
31586
31556
|
thumbnailUrl: highlightVideoThumbnail || void 0,
|
|
31587
31557
|
onDelete
|
|
31588
|
-
}) : /* @__PURE__ */
|
|
31558
|
+
}) : /* @__PURE__ */ jsx287("p", { className: "text-sm text-ods-text-secondary italic", children: emptyMessage })
|
|
31589
31559
|
] });
|
|
31590
31560
|
}
|
|
31591
31561
|
|
|
31592
31562
|
// src/components/features/transcribe-and-summarize-combined-section.tsx
|
|
31593
31563
|
import { Sparkles as Sparkles11 } from "lucide-react";
|
|
31594
|
-
import { jsx as
|
|
31564
|
+
import { jsx as jsx288, jsxs as jsxs236 } from "react/jsx-runtime";
|
|
31595
31565
|
function TranscribeAndSummarizeCombinedSection({
|
|
31596
31566
|
// AIEnrichSection props
|
|
31597
31567
|
onTranscribe,
|
|
@@ -31631,13 +31601,13 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
31631
31601
|
hasSubtitles = false
|
|
31632
31602
|
}) {
|
|
31633
31603
|
const defaultButtonLabel = hasResult ? "Regenerate" : "Generate";
|
|
31634
|
-
return /* @__PURE__ */
|
|
31635
|
-
/* @__PURE__ */
|
|
31604
|
+
return /* @__PURE__ */ jsxs236("div", { className: `space-y-4 ${className}`, children: [
|
|
31605
|
+
/* @__PURE__ */ jsx288(
|
|
31636
31606
|
AIEnrichSection,
|
|
31637
31607
|
{
|
|
31638
31608
|
title,
|
|
31639
31609
|
description,
|
|
31640
|
-
icon: /* @__PURE__ */
|
|
31610
|
+
icon: /* @__PURE__ */ jsx288(Sparkles11, { className: "h-5 w-5" }),
|
|
31641
31611
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
31642
31612
|
loadingLabel,
|
|
31643
31613
|
onEnrich: onTranscribe,
|
|
@@ -31652,7 +31622,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
31652
31622
|
isCancelling
|
|
31653
31623
|
}
|
|
31654
31624
|
),
|
|
31655
|
-
/* @__PURE__ */
|
|
31625
|
+
/* @__PURE__ */ jsx288(
|
|
31656
31626
|
TranscriptSummaryEditor,
|
|
31657
31627
|
{
|
|
31658
31628
|
videoSummary,
|
|
@@ -31680,7 +31650,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
31680
31650
|
// src/components/features/highlight-video-combined-section.tsx
|
|
31681
31651
|
import { Sparkles as Sparkles12, Upload as Upload9 } from "lucide-react";
|
|
31682
31652
|
init_button2();
|
|
31683
|
-
import { jsx as
|
|
31653
|
+
import { jsx as jsx289, jsxs as jsxs237 } from "react/jsx-runtime";
|
|
31684
31654
|
function HighlightVideoCombinedSection({
|
|
31685
31655
|
// Config props
|
|
31686
31656
|
targetDurationSeconds,
|
|
@@ -31738,8 +31708,8 @@ function HighlightVideoCombinedSection({
|
|
|
31738
31708
|
};
|
|
31739
31709
|
input.click();
|
|
31740
31710
|
};
|
|
31741
|
-
return /* @__PURE__ */
|
|
31742
|
-
/* @__PURE__ */
|
|
31711
|
+
return /* @__PURE__ */ jsxs237("div", { className: `space-y-4 ${className}`, children: [
|
|
31712
|
+
/* @__PURE__ */ jsx289(
|
|
31743
31713
|
HighlightConfigSection,
|
|
31744
31714
|
{
|
|
31745
31715
|
targetDurationSeconds,
|
|
@@ -31749,12 +31719,12 @@ function HighlightVideoCombinedSection({
|
|
|
31749
31719
|
disabled: configDisabled
|
|
31750
31720
|
}
|
|
31751
31721
|
),
|
|
31752
|
-
/* @__PURE__ */
|
|
31722
|
+
/* @__PURE__ */ jsx289(
|
|
31753
31723
|
AIEnrichSection,
|
|
31754
31724
|
{
|
|
31755
31725
|
title,
|
|
31756
31726
|
description: description || defaultDescription,
|
|
31757
|
-
icon: /* @__PURE__ */
|
|
31727
|
+
icon: /* @__PURE__ */ jsx289(Sparkles12, { className: "h-5 w-5" }),
|
|
31758
31728
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
31759
31729
|
loadingLabel,
|
|
31760
31730
|
onEnrich: onGenerateHighlight,
|
|
@@ -31769,23 +31739,23 @@ function HighlightVideoCombinedSection({
|
|
|
31769
31739
|
isCancelling
|
|
31770
31740
|
}
|
|
31771
31741
|
),
|
|
31772
|
-
/* @__PURE__ */
|
|
31773
|
-
/* @__PURE__ */
|
|
31774
|
-
/* @__PURE__ */
|
|
31775
|
-
/* @__PURE__ */
|
|
31776
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
31777
|
-
/* @__PURE__ */
|
|
31742
|
+
/* @__PURE__ */ jsxs237("div", { className: "space-y-2", children: [
|
|
31743
|
+
/* @__PURE__ */ jsxs237("div", { className: "flex items-center justify-between mb-2", children: [
|
|
31744
|
+
/* @__PURE__ */ jsxs237("div", { className: "flex items-center gap-2", children: [
|
|
31745
|
+
/* @__PURE__ */ jsx289(Label, { children: previewLabel }),
|
|
31746
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs237(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31747
|
+
/* @__PURE__ */ jsx289(Sparkles12, { className: "h-3 w-3" }),
|
|
31778
31748
|
"AI Generated"
|
|
31779
31749
|
] }),
|
|
31780
|
-
highlightVideoDurationMs && /* @__PURE__ */
|
|
31750
|
+
highlightVideoDurationMs && /* @__PURE__ */ jsx289(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
31781
31751
|
] }),
|
|
31782
|
-
/* @__PURE__ */
|
|
31752
|
+
/* @__PURE__ */ jsx289(
|
|
31783
31753
|
Button,
|
|
31784
31754
|
{
|
|
31785
31755
|
type: "button",
|
|
31786
31756
|
variant: "outline",
|
|
31787
31757
|
size: "small-legacy",
|
|
31788
|
-
leftIcon: /* @__PURE__ */
|
|
31758
|
+
leftIcon: /* @__PURE__ */ jsx289(Upload9, { className: "h-4 w-4" }),
|
|
31789
31759
|
onClick: handleUploadClick,
|
|
31790
31760
|
disabled: isUploading,
|
|
31791
31761
|
children: isUploading ? "Uploading..." : "Upload Highlight"
|
|
@@ -31798,14 +31768,14 @@ function HighlightVideoCombinedSection({
|
|
|
31798
31768
|
title: "Highlight Video",
|
|
31799
31769
|
thumbnailUrl: highlightVideoThumbnail || void 0,
|
|
31800
31770
|
onDelete
|
|
31801
|
-
}) : /* @__PURE__ */
|
|
31771
|
+
}) : /* @__PURE__ */ jsx289("p", { className: "text-sm text-ods-text-secondary italic", children: emptyMessage })
|
|
31802
31772
|
] })
|
|
31803
31773
|
] });
|
|
31804
31774
|
}
|
|
31805
31775
|
|
|
31806
31776
|
// src/components/features/view-toggle.tsx
|
|
31807
31777
|
init_cn();
|
|
31808
|
-
import { jsx as
|
|
31778
|
+
import { jsx as jsx290, jsxs as jsxs238 } from "react/jsx-runtime";
|
|
31809
31779
|
function ViewToggle({
|
|
31810
31780
|
value,
|
|
31811
31781
|
onValueChange,
|
|
@@ -31814,7 +31784,7 @@ function ViewToggle({
|
|
|
31814
31784
|
size = "default",
|
|
31815
31785
|
"aria-label": ariaLabel = "Switch between grid and table view"
|
|
31816
31786
|
}) {
|
|
31817
|
-
return /* @__PURE__ */
|
|
31787
|
+
return /* @__PURE__ */ jsxs238(
|
|
31818
31788
|
ToggleGroup,
|
|
31819
31789
|
{
|
|
31820
31790
|
type: "single",
|
|
@@ -31831,7 +31801,7 @@ function ViewToggle({
|
|
|
31831
31801
|
disabled,
|
|
31832
31802
|
"aria-label": ariaLabel,
|
|
31833
31803
|
children: [
|
|
31834
|
-
/* @__PURE__ */
|
|
31804
|
+
/* @__PURE__ */ jsx290(
|
|
31835
31805
|
ToggleGroupItem,
|
|
31836
31806
|
{
|
|
31837
31807
|
value: "grid",
|
|
@@ -31843,7 +31813,7 @@ function ViewToggle({
|
|
|
31843
31813
|
),
|
|
31844
31814
|
"aria-label": "Grid view",
|
|
31845
31815
|
disabled,
|
|
31846
|
-
children: /* @__PURE__ */
|
|
31816
|
+
children: /* @__PURE__ */ jsx290(
|
|
31847
31817
|
GridViewIcon,
|
|
31848
31818
|
{
|
|
31849
31819
|
className: "w-5 h-5",
|
|
@@ -31852,7 +31822,7 @@ function ViewToggle({
|
|
|
31852
31822
|
)
|
|
31853
31823
|
}
|
|
31854
31824
|
),
|
|
31855
|
-
/* @__PURE__ */
|
|
31825
|
+
/* @__PURE__ */ jsx290(
|
|
31856
31826
|
ToggleGroupItem,
|
|
31857
31827
|
{
|
|
31858
31828
|
value: "table",
|
|
@@ -31864,7 +31834,7 @@ function ViewToggle({
|
|
|
31864
31834
|
),
|
|
31865
31835
|
"aria-label": "Table view",
|
|
31866
31836
|
disabled,
|
|
31867
|
-
children: /* @__PURE__ */
|
|
31837
|
+
children: /* @__PURE__ */ jsx290(
|
|
31868
31838
|
TableViewIcon,
|
|
31869
31839
|
{
|
|
31870
31840
|
className: "w-5 h-5",
|
|
@@ -31888,11 +31858,11 @@ init_button2();
|
|
|
31888
31858
|
init_cn();
|
|
31889
31859
|
import * as React97 from "react";
|
|
31890
31860
|
import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
|
|
31891
|
-
import { Check as Check5, ChevronRight as
|
|
31892
|
-
import { jsx as
|
|
31861
|
+
import { Check as Check5, ChevronRight as ChevronRight11, Circle as Circle2 } from "lucide-react";
|
|
31862
|
+
import { jsx as jsx291, jsxs as jsxs239 } from "react/jsx-runtime";
|
|
31893
31863
|
var DropdownMenu2 = DropdownMenuPrimitive2.Root;
|
|
31894
31864
|
var DropdownMenuTrigger2 = DropdownMenuPrimitive2.Trigger;
|
|
31895
|
-
var DropdownMenuSubTrigger = React97.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */
|
|
31865
|
+
var DropdownMenuSubTrigger = React97.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs239(
|
|
31896
31866
|
DropdownMenuPrimitive2.SubTrigger,
|
|
31897
31867
|
{
|
|
31898
31868
|
ref,
|
|
@@ -31904,12 +31874,12 @@ var DropdownMenuSubTrigger = React97.forwardRef(({ className, inset, children, .
|
|
|
31904
31874
|
...props,
|
|
31905
31875
|
children: [
|
|
31906
31876
|
children,
|
|
31907
|
-
/* @__PURE__ */
|
|
31877
|
+
/* @__PURE__ */ jsx291(ChevronRight11, { className: "ml-auto" })
|
|
31908
31878
|
]
|
|
31909
31879
|
}
|
|
31910
31880
|
));
|
|
31911
31881
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive2.SubTrigger.displayName;
|
|
31912
|
-
var DropdownMenuSubContent = React97.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
31882
|
+
var DropdownMenuSubContent = React97.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx291(
|
|
31913
31883
|
DropdownMenuPrimitive2.SubContent,
|
|
31914
31884
|
{
|
|
31915
31885
|
ref,
|
|
@@ -31921,7 +31891,7 @@ var DropdownMenuSubContent = React97.forwardRef(({ className, ...props }, ref) =
|
|
|
31921
31891
|
}
|
|
31922
31892
|
));
|
|
31923
31893
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive2.SubContent.displayName;
|
|
31924
|
-
var DropdownMenuContent2 = React97.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */
|
|
31894
|
+
var DropdownMenuContent2 = React97.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx291(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ jsx291(
|
|
31925
31895
|
DropdownMenuPrimitive2.Content,
|
|
31926
31896
|
{
|
|
31927
31897
|
ref,
|
|
@@ -31934,7 +31904,7 @@ var DropdownMenuContent2 = React97.forwardRef(({ className, sideOffset = 4, ...p
|
|
|
31934
31904
|
}
|
|
31935
31905
|
) }));
|
|
31936
31906
|
DropdownMenuContent2.displayName = DropdownMenuPrimitive2.Content.displayName;
|
|
31937
|
-
var DropdownMenuItem2 = React97.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */
|
|
31907
|
+
var DropdownMenuItem2 = React97.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx291(
|
|
31938
31908
|
DropdownMenuPrimitive2.Item,
|
|
31939
31909
|
{
|
|
31940
31910
|
ref,
|
|
@@ -31947,7 +31917,7 @@ var DropdownMenuItem2 = React97.forwardRef(({ className, inset, ...props }, ref)
|
|
|
31947
31917
|
}
|
|
31948
31918
|
));
|
|
31949
31919
|
DropdownMenuItem2.displayName = DropdownMenuPrimitive2.Item.displayName;
|
|
31950
|
-
var DropdownMenuCheckboxItem = React97.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */
|
|
31920
|
+
var DropdownMenuCheckboxItem = React97.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs239(
|
|
31951
31921
|
DropdownMenuPrimitive2.CheckboxItem,
|
|
31952
31922
|
{
|
|
31953
31923
|
ref,
|
|
@@ -31958,13 +31928,13 @@ var DropdownMenuCheckboxItem = React97.forwardRef(({ className, children, checke
|
|
|
31958
31928
|
checked,
|
|
31959
31929
|
...props,
|
|
31960
31930
|
children: [
|
|
31961
|
-
/* @__PURE__ */
|
|
31931
|
+
/* @__PURE__ */ jsx291("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx291(DropdownMenuPrimitive2.ItemIndicator, { children: /* @__PURE__ */ jsx291(Check5, { className: "h-4 w-4" }) }) }),
|
|
31962
31932
|
children
|
|
31963
31933
|
]
|
|
31964
31934
|
}
|
|
31965
31935
|
));
|
|
31966
31936
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive2.CheckboxItem.displayName;
|
|
31967
|
-
var DropdownMenuRadioItem = React97.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
31937
|
+
var DropdownMenuRadioItem = React97.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs239(
|
|
31968
31938
|
DropdownMenuPrimitive2.RadioItem,
|
|
31969
31939
|
{
|
|
31970
31940
|
ref,
|
|
@@ -31974,13 +31944,13 @@ var DropdownMenuRadioItem = React97.forwardRef(({ className, children, ...props
|
|
|
31974
31944
|
),
|
|
31975
31945
|
...props,
|
|
31976
31946
|
children: [
|
|
31977
|
-
/* @__PURE__ */
|
|
31947
|
+
/* @__PURE__ */ jsx291("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx291(DropdownMenuPrimitive2.ItemIndicator, { children: /* @__PURE__ */ jsx291(Circle2, { className: "h-2 w-2 fill-ods-accent" }) }) }),
|
|
31978
31948
|
children
|
|
31979
31949
|
]
|
|
31980
31950
|
}
|
|
31981
31951
|
));
|
|
31982
31952
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive2.RadioItem.displayName;
|
|
31983
|
-
var DropdownMenuLabel = React97.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */
|
|
31953
|
+
var DropdownMenuLabel = React97.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx291(
|
|
31984
31954
|
DropdownMenuPrimitive2.Label,
|
|
31985
31955
|
{
|
|
31986
31956
|
ref,
|
|
@@ -31993,7 +31963,7 @@ var DropdownMenuLabel = React97.forwardRef(({ className, inset, ...props }, ref)
|
|
|
31993
31963
|
}
|
|
31994
31964
|
));
|
|
31995
31965
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive2.Label.displayName;
|
|
31996
|
-
var DropdownMenuSeparator = React97.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
31966
|
+
var DropdownMenuSeparator = React97.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx291(
|
|
31997
31967
|
DropdownMenuPrimitive2.Separator,
|
|
31998
31968
|
{
|
|
31999
31969
|
ref,
|
|
@@ -32006,7 +31976,7 @@ var DropdownMenuShortcut = ({
|
|
|
32006
31976
|
className,
|
|
32007
31977
|
...props
|
|
32008
31978
|
}) => {
|
|
32009
|
-
return /* @__PURE__ */
|
|
31979
|
+
return /* @__PURE__ */ jsx291(
|
|
32010
31980
|
"span",
|
|
32011
31981
|
{
|
|
32012
31982
|
className: cn("ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60", className),
|
|
@@ -32017,7 +31987,7 @@ var DropdownMenuShortcut = ({
|
|
|
32017
31987
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
32018
31988
|
|
|
32019
31989
|
// src/components/features/policy-configuration-panel.tsx
|
|
32020
|
-
import { Fragment as Fragment42, jsx as
|
|
31990
|
+
import { Fragment as Fragment42, jsx as jsx292, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
32021
31991
|
var approvalLevelOptions = [
|
|
32022
31992
|
{ value: "ALLOW", label: "Allow" },
|
|
32023
31993
|
{ value: "ASK_USER", label: "Ask User" },
|
|
@@ -32032,23 +32002,23 @@ var getApprovalLevelLabel = (level, editMode = false) => {
|
|
|
32032
32002
|
return option?.label || level;
|
|
32033
32003
|
};
|
|
32034
32004
|
var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
32035
|
-
return /* @__PURE__ */
|
|
32036
|
-
/* @__PURE__ */
|
|
32037
|
-
/* @__PURE__ */
|
|
32038
|
-
/* @__PURE__ */
|
|
32039
|
-
/* @__PURE__ */
|
|
32005
|
+
return /* @__PURE__ */ jsxs240("div", { className: "bg-ods-bg border-b border-ods-border flex gap-4 items-center px-4 py-3", children: [
|
|
32006
|
+
/* @__PURE__ */ jsx292("div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ jsx292(ToolIcon, { toolType: policy.toolName, size: 16 }) }),
|
|
32007
|
+
/* @__PURE__ */ jsxs240("div", { className: "flex-1 flex flex-col min-w-0", children: [
|
|
32008
|
+
/* @__PURE__ */ jsx292("p", { className: "text-[16px] font-medium text-ods-text-primary truncate", children: policy.name }),
|
|
32009
|
+
/* @__PURE__ */ jsx292("p", { className: "text-[12px] text-ods-text-secondary break-all font-mono", children: policy.commandPattern })
|
|
32040
32010
|
] }),
|
|
32041
|
-
editMode ? /* @__PURE__ */
|
|
32042
|
-
/* @__PURE__ */
|
|
32011
|
+
editMode ? /* @__PURE__ */ jsxs240(DropdownMenu2, { children: [
|
|
32012
|
+
/* @__PURE__ */ jsx292(DropdownMenuTrigger2, { asChild: true, children: /* @__PURE__ */ jsx292(
|
|
32043
32013
|
Button,
|
|
32044
32014
|
{
|
|
32045
32015
|
variant: "outline",
|
|
32046
|
-
rightIcon: /* @__PURE__ */
|
|
32016
|
+
rightIcon: /* @__PURE__ */ jsx292(ChevronDown8, { className: "h-6 w-6 text-ods-text-secondary" }),
|
|
32047
32017
|
className: "md:!text-sm bg-ods-card border border-ods-border rounded-md flex gap-2 items-center justify-between !px-2 py-2 w-[180px] hover:bg-ods-bg-hover transition-colors text-ods-text-primary h-auto",
|
|
32048
32018
|
children: getApprovalLevelLabel(policy.approvalLevel, editMode)
|
|
32049
32019
|
}
|
|
32050
32020
|
) }),
|
|
32051
|
-
/* @__PURE__ */
|
|
32021
|
+
/* @__PURE__ */ jsx292(DropdownMenuContent2, { align: "end", className: "w-[180px]", children: approvalLevelOptions.map((option) => /* @__PURE__ */ jsx292(
|
|
32052
32022
|
DropdownMenuItem2,
|
|
32053
32023
|
{
|
|
32054
32024
|
onClick: () => onPermissionChange(categoryId, policy.id, option.value),
|
|
@@ -32057,7 +32027,7 @@ var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
|
32057
32027
|
},
|
|
32058
32028
|
option.value
|
|
32059
32029
|
)) })
|
|
32060
|
-
] }) : policy.approvalLevel ? /* @__PURE__ */
|
|
32030
|
+
] }) : policy.approvalLevel ? /* @__PURE__ */ jsx292("div", { className: "px-3 py-2 w-[180px]", children: /* @__PURE__ */ jsx292("span", { className: "text-[16px] font-medium text-ods-text-primary", children: getApprovalLevelLabel(policy.approvalLevel, editMode) }) }) : /* @__PURE__ */ jsx292("div", { className: "px-3 py-2 w-[180px]" })
|
|
32061
32031
|
] });
|
|
32062
32032
|
};
|
|
32063
32033
|
var useAnimatedHeight = (isExpanded) => {
|
|
@@ -32079,36 +32049,36 @@ var CategorySection = ({
|
|
|
32079
32049
|
onPolicyPermissionChange
|
|
32080
32050
|
}) => {
|
|
32081
32051
|
const { contentRef, height } = useAnimatedHeight(category.isExpanded);
|
|
32082
|
-
return /* @__PURE__ */
|
|
32083
|
-
/* @__PURE__ */
|
|
32052
|
+
return /* @__PURE__ */ jsxs240(Fragment42, { children: [
|
|
32053
|
+
/* @__PURE__ */ jsxs240(
|
|
32084
32054
|
"div",
|
|
32085
32055
|
{
|
|
32086
32056
|
className: "bg-ods-card border-t border-ods-border flex gap-4 items-center pl-4 pr-2 py-3 cursor-pointer hover:bg-ods-bg-hover transition-colors",
|
|
32087
32057
|
onClick: () => onCategoryToggle(category.id),
|
|
32088
32058
|
children: [
|
|
32089
|
-
/* @__PURE__ */
|
|
32090
|
-
/* @__PURE__ */
|
|
32091
|
-
/* @__PURE__ */
|
|
32092
|
-
/* @__PURE__ */
|
|
32059
|
+
/* @__PURE__ */ jsx292("div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ jsx292("div", { className: "text-ods-text-secondary", children: category.icon }) }),
|
|
32060
|
+
/* @__PURE__ */ jsxs240("div", { className: "flex-1 flex flex-col", children: [
|
|
32061
|
+
/* @__PURE__ */ jsx292("p", { className: "md:!text-sm font-medium text-ods-text-primary", children: category.name }),
|
|
32062
|
+
/* @__PURE__ */ jsxs240("p", { className: "text-[14px] text-ods-text-secondary", children: [
|
|
32093
32063
|
category.configurationsCount,
|
|
32094
32064
|
" Configurations"
|
|
32095
32065
|
] })
|
|
32096
32066
|
] }),
|
|
32097
|
-
editMode ? /* @__PURE__ */
|
|
32098
|
-
/* @__PURE__ */
|
|
32067
|
+
editMode ? /* @__PURE__ */ jsx292("div", { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxs240(DropdownMenu2, { children: [
|
|
32068
|
+
/* @__PURE__ */ jsx292(DropdownMenuTrigger2, { asChild: true, children: /* @__PURE__ */ jsx292(
|
|
32099
32069
|
Button,
|
|
32100
32070
|
{
|
|
32101
32071
|
variant: "outline",
|
|
32102
|
-
rightIcon: /* @__PURE__ */
|
|
32072
|
+
rightIcon: /* @__PURE__ */ jsx292(ChevronDown8, { className: "h-6 w-6 text-ods-text-secondary" }),
|
|
32103
32073
|
className: "md:!text-sm bg-ods-card border border-ods-border rounded-md flex gap-2 items-center justify-between !px-2 py-2 w-[256px] hover:bg-ods-bg-hover transition-colors h-auto",
|
|
32104
|
-
children: /* @__PURE__ */
|
|
32074
|
+
children: /* @__PURE__ */ jsx292("span", { className: cn(
|
|
32105
32075
|
"md:!text-sm font-medium",
|
|
32106
32076
|
category.globalPermission ? "text-ods-text-primary" : "text-ods-text-secondary"
|
|
32107
32077
|
), children: getApprovalLevelLabel(category.globalPermission, editMode) })
|
|
32108
32078
|
}
|
|
32109
32079
|
) }),
|
|
32110
|
-
/* @__PURE__ */
|
|
32111
|
-
/* @__PURE__ */
|
|
32080
|
+
/* @__PURE__ */ jsxs240(DropdownMenuContent2, { align: "end", className: "w-[256px]", children: [
|
|
32081
|
+
/* @__PURE__ */ jsx292(
|
|
32112
32082
|
DropdownMenuItem2,
|
|
32113
32083
|
{
|
|
32114
32084
|
onClick: () => onGlobalPermissionChange(category.id, void 0),
|
|
@@ -32116,7 +32086,7 @@ var CategorySection = ({
|
|
|
32116
32086
|
children: "Clear Global Permission"
|
|
32117
32087
|
}
|
|
32118
32088
|
),
|
|
32119
|
-
approvalLevelOptions.map((option) => /* @__PURE__ */
|
|
32089
|
+
approvalLevelOptions.map((option) => /* @__PURE__ */ jsx292(
|
|
32120
32090
|
DropdownMenuItem2,
|
|
32121
32091
|
{
|
|
32122
32092
|
onClick: () => onGlobalPermissionChange(category.id, option.value),
|
|
@@ -32126,21 +32096,21 @@ var CategorySection = ({
|
|
|
32126
32096
|
option.value
|
|
32127
32097
|
))
|
|
32128
32098
|
] })
|
|
32129
|
-
] }) }) : category.globalPermission ? /* @__PURE__ */
|
|
32099
|
+
] }) }) : category.globalPermission ? /* @__PURE__ */ jsx292(
|
|
32130
32100
|
"div",
|
|
32131
32101
|
{
|
|
32132
32102
|
className: "px-3 py-2 w-[256px]",
|
|
32133
32103
|
onClick: (e) => e.stopPropagation(),
|
|
32134
|
-
children: /* @__PURE__ */
|
|
32104
|
+
children: /* @__PURE__ */ jsx292("span", { className: "md:!text-sm font-medium text-ods-text-primary", children: getApprovalLevelLabel(category.globalPermission, editMode) })
|
|
32135
32105
|
}
|
|
32136
|
-
) : /* @__PURE__ */
|
|
32106
|
+
) : /* @__PURE__ */ jsx292(
|
|
32137
32107
|
"div",
|
|
32138
32108
|
{
|
|
32139
32109
|
className: "px-3 py-2 w-[256px]",
|
|
32140
32110
|
onClick: (e) => e.stopPropagation()
|
|
32141
32111
|
}
|
|
32142
32112
|
),
|
|
32143
|
-
/* @__PURE__ */
|
|
32113
|
+
/* @__PURE__ */ jsx292(
|
|
32144
32114
|
Button,
|
|
32145
32115
|
{
|
|
32146
32116
|
variant: "transparent",
|
|
@@ -32148,7 +32118,7 @@ var CategorySection = ({
|
|
|
32148
32118
|
e.stopPropagation();
|
|
32149
32119
|
onCategoryToggle(category.id);
|
|
32150
32120
|
},
|
|
32151
|
-
leftIcon: /* @__PURE__ */
|
|
32121
|
+
leftIcon: /* @__PURE__ */ jsx292(
|
|
32152
32122
|
ChevronDown8,
|
|
32153
32123
|
{
|
|
32154
32124
|
className: cn(
|
|
@@ -32164,7 +32134,7 @@ var CategorySection = ({
|
|
|
32164
32134
|
]
|
|
32165
32135
|
}
|
|
32166
32136
|
),
|
|
32167
|
-
/* @__PURE__ */
|
|
32137
|
+
/* @__PURE__ */ jsx292(
|
|
32168
32138
|
"div",
|
|
32169
32139
|
{
|
|
32170
32140
|
ref: contentRef,
|
|
@@ -32176,7 +32146,7 @@ var CategorySection = ({
|
|
|
32176
32146
|
"overflow-hidden",
|
|
32177
32147
|
category.isExpanded ? "opacity-100" : "opacity-0"
|
|
32178
32148
|
),
|
|
32179
|
-
children: /* @__PURE__ */
|
|
32149
|
+
children: /* @__PURE__ */ jsx292("div", { className: "px-4 pb-4 pt-0", children: /* @__PURE__ */ jsx292("div", { className: "border border-ods-border rounded-md overflow-hidden", children: category.policies.map((policy) => /* @__PURE__ */ jsx292(
|
|
32180
32150
|
PolicyRow,
|
|
32181
32151
|
{
|
|
32182
32152
|
policy,
|
|
@@ -32198,10 +32168,10 @@ var PolicyConfigurationPanel = ({
|
|
|
32198
32168
|
onPolicyPermissionChange,
|
|
32199
32169
|
className
|
|
32200
32170
|
}) => {
|
|
32201
|
-
return /* @__PURE__ */
|
|
32171
|
+
return /* @__PURE__ */ jsx292("div", { className: cn(
|
|
32202
32172
|
"bg-ods-card border border-ods-border rounded-md overflow-hidden",
|
|
32203
32173
|
className
|
|
32204
|
-
), children: categories.map((category) => /* @__PURE__ */
|
|
32174
|
+
), children: categories.map((category) => /* @__PURE__ */ jsx292(
|
|
32205
32175
|
CategorySection,
|
|
32206
32176
|
{
|
|
32207
32177
|
category,
|
|
@@ -32220,7 +32190,7 @@ init_button2();
|
|
|
32220
32190
|
init_cn();
|
|
32221
32191
|
import { getCountries as getCountries2 } from "libphonenumber-js";
|
|
32222
32192
|
import { useEffect as useEffect49, useState as useState71 } from "react";
|
|
32223
|
-
import { Fragment as Fragment43, jsx as
|
|
32193
|
+
import { Fragment as Fragment43, jsx as jsx293, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
32224
32194
|
function WaitlistForm({
|
|
32225
32195
|
id = "waitlist-form",
|
|
32226
32196
|
className,
|
|
@@ -32285,18 +32255,18 @@ function WaitlistForm({
|
|
|
32285
32255
|
}
|
|
32286
32256
|
};
|
|
32287
32257
|
if (!isClient) {
|
|
32288
|
-
return /* @__PURE__ */
|
|
32258
|
+
return /* @__PURE__ */ jsxs241("div", { className: cn(
|
|
32289
32259
|
"flex flex-col gap-[var(--spacing-system-l)] rounded-[6px] border border-ods-border bg-ods-bg p-[var(--spacing-system-m)]",
|
|
32290
32260
|
className
|
|
32291
32261
|
), children: [
|
|
32292
|
-
/* @__PURE__ */
|
|
32293
|
-
/* @__PURE__ */
|
|
32294
|
-
/* @__PURE__ */
|
|
32295
|
-
/* @__PURE__ */
|
|
32262
|
+
/* @__PURE__ */ jsx293("div", { className: "w-full h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse" }),
|
|
32263
|
+
/* @__PURE__ */ jsxs241("div", { className: "flex gap-[var(--spacing-system-xs)] w-full", children: [
|
|
32264
|
+
/* @__PURE__ */ jsx293("div", { className: "w-[130px] h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse shrink-0" }),
|
|
32265
|
+
/* @__PURE__ */ jsx293("div", { className: "flex-1 h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse" })
|
|
32296
32266
|
] }),
|
|
32297
|
-
/* @__PURE__ */
|
|
32298
|
-
/* @__PURE__ */
|
|
32299
|
-
/* @__PURE__ */
|
|
32267
|
+
/* @__PURE__ */ jsxs241("div", { className: "flex flex-col gap-[var(--spacing-system-m)] items-end w-full", children: [
|
|
32268
|
+
/* @__PURE__ */ jsx293("div", { className: "w-full rounded-[6px] border border-ods-border bg-ods-bg animate-pulse py-6 px-4" }),
|
|
32269
|
+
/* @__PURE__ */ jsx293("div", { className: "h-12 w-[200px] bg-ods-card border border-ods-border rounded-[6px] animate-pulse" })
|
|
32300
32270
|
] })
|
|
32301
32271
|
] });
|
|
32302
32272
|
}
|
|
@@ -32308,7 +32278,7 @@ function WaitlistForm({
|
|
|
32308
32278
|
handleSubmit();
|
|
32309
32279
|
}
|
|
32310
32280
|
};
|
|
32311
|
-
return /* @__PURE__ */
|
|
32281
|
+
return /* @__PURE__ */ jsxs241(
|
|
32312
32282
|
"div",
|
|
32313
32283
|
{
|
|
32314
32284
|
id,
|
|
@@ -32317,7 +32287,7 @@ function WaitlistForm({
|
|
|
32317
32287
|
className
|
|
32318
32288
|
),
|
|
32319
32289
|
children: [
|
|
32320
|
-
/* @__PURE__ */
|
|
32290
|
+
/* @__PURE__ */ jsx293(
|
|
32321
32291
|
Input,
|
|
32322
32292
|
{
|
|
32323
32293
|
type: "email",
|
|
@@ -32331,8 +32301,8 @@ function WaitlistForm({
|
|
|
32331
32301
|
errorVariant: "warning"
|
|
32332
32302
|
}
|
|
32333
32303
|
),
|
|
32334
|
-
/* @__PURE__ */
|
|
32335
|
-
/* @__PURE__ */
|
|
32304
|
+
/* @__PURE__ */ jsxs241("div", { className: "relative w-full", children: [
|
|
32305
|
+
/* @__PURE__ */ jsx293(
|
|
32336
32306
|
PhoneInput,
|
|
32337
32307
|
{
|
|
32338
32308
|
value: phone,
|
|
@@ -32348,10 +32318,10 @@ function WaitlistForm({
|
|
|
32348
32318
|
onKeyDown: handleKeyDown
|
|
32349
32319
|
}
|
|
32350
32320
|
),
|
|
32351
|
-
showPhoneWarning && /* @__PURE__ */
|
|
32321
|
+
showPhoneWarning && /* @__PURE__ */ jsx293("p", { className: "text-h6 absolute bottom-0 left-0 translate-y-full text-[var(--ods-attention-yellow-warning)] truncate", children: invalidPhoneHint })
|
|
32352
32322
|
] }),
|
|
32353
|
-
/* @__PURE__ */
|
|
32354
|
-
/* @__PURE__ */
|
|
32323
|
+
/* @__PURE__ */ jsxs241("div", { className: "flex flex-col gap-[var(--spacing-system-l)] items-end w-full", children: [
|
|
32324
|
+
/* @__PURE__ */ jsx293(
|
|
32355
32325
|
CheckboxBlock,
|
|
32356
32326
|
{
|
|
32357
32327
|
checked: smsConsent,
|
|
@@ -32362,10 +32332,10 @@ function WaitlistForm({
|
|
|
32362
32332
|
error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
|
|
32363
32333
|
disabled: isSubmitting,
|
|
32364
32334
|
label: smsCheckboxLabel,
|
|
32365
|
-
description: /* @__PURE__ */
|
|
32335
|
+
description: /* @__PURE__ */ jsxs241(Fragment43, { children: [
|
|
32366
32336
|
consentText,
|
|
32367
32337
|
" View our ",
|
|
32368
|
-
/* @__PURE__ */
|
|
32338
|
+
/* @__PURE__ */ jsx293(
|
|
32369
32339
|
"a",
|
|
32370
32340
|
{
|
|
32371
32341
|
href: termsOfServiceUrl || "#",
|
|
@@ -32377,7 +32347,7 @@ function WaitlistForm({
|
|
|
32377
32347
|
}
|
|
32378
32348
|
),
|
|
32379
32349
|
" and ",
|
|
32380
|
-
/* @__PURE__ */
|
|
32350
|
+
/* @__PURE__ */ jsx293(
|
|
32381
32351
|
"a",
|
|
32382
32352
|
{
|
|
32383
32353
|
href: privacyPolicyUrl || "#",
|
|
@@ -32392,13 +32362,13 @@ function WaitlistForm({
|
|
|
32392
32362
|
] })
|
|
32393
32363
|
}
|
|
32394
32364
|
),
|
|
32395
|
-
/* @__PURE__ */
|
|
32365
|
+
/* @__PURE__ */ jsx293(
|
|
32396
32366
|
Button,
|
|
32397
32367
|
{
|
|
32398
32368
|
type: "button",
|
|
32399
32369
|
loading: isSubmitting,
|
|
32400
32370
|
disabled: isSubmitting,
|
|
32401
|
-
leftIcon: /* @__PURE__ */
|
|
32371
|
+
leftIcon: /* @__PURE__ */ jsx293(OpenFrameLogo, {}),
|
|
32402
32372
|
onClick: handleSubmit,
|
|
32403
32373
|
className: "w-full md:w-auto",
|
|
32404
32374
|
children: isSuccess ? successLabel : submitLabel
|
|
@@ -32434,7 +32404,7 @@ init_cn();
|
|
|
32434
32404
|
|
|
32435
32405
|
// src/components/features/board/board-column-header.tsx
|
|
32436
32406
|
init_button();
|
|
32437
|
-
import { jsx as
|
|
32407
|
+
import { jsx as jsx294, jsxs as jsxs242 } from "react/jsx-runtime";
|
|
32438
32408
|
function BoardColumnHeader({
|
|
32439
32409
|
column,
|
|
32440
32410
|
collapsed = false,
|
|
@@ -32444,8 +32414,8 @@ function BoardColumnHeader({
|
|
|
32444
32414
|
const count = column.total ?? column.tickets.length;
|
|
32445
32415
|
const useStatusVariant = !!getTicketStatusConfig(column.id).icon;
|
|
32446
32416
|
if (collapsed) {
|
|
32447
|
-
return /* @__PURE__ */
|
|
32448
|
-
/* @__PURE__ */
|
|
32417
|
+
return /* @__PURE__ */ jsxs242("div", { className: "flex h-full flex-col items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
32418
|
+
/* @__PURE__ */ jsx294(
|
|
32449
32419
|
Button,
|
|
32450
32420
|
{
|
|
32451
32421
|
variant: "transparent",
|
|
@@ -32453,10 +32423,10 @@ function BoardColumnHeader({
|
|
|
32453
32423
|
className: "h-8 w-8 md:h-8 md:w-8 p-0",
|
|
32454
32424
|
onClick: onToggleCollapse,
|
|
32455
32425
|
"aria-label": "Expand column",
|
|
32456
|
-
children: /* @__PURE__ */
|
|
32426
|
+
children: /* @__PURE__ */ jsx294(Arrow02RightIcon, { className: "h-6 w-6 text-ods-text-secondary" })
|
|
32457
32427
|
}
|
|
32458
32428
|
),
|
|
32459
|
-
/* @__PURE__ */
|
|
32429
|
+
/* @__PURE__ */ jsx294(
|
|
32460
32430
|
TicketStatusTag,
|
|
32461
32431
|
{
|
|
32462
32432
|
status: column.id,
|
|
@@ -32465,12 +32435,12 @@ function BoardColumnHeader({
|
|
|
32465
32435
|
className: "h-auto [writing-mode:vertical-rl]"
|
|
32466
32436
|
}
|
|
32467
32437
|
),
|
|
32468
|
-
/* @__PURE__ */
|
|
32438
|
+
/* @__PURE__ */ jsx294("span", { className: "text-h5", style: { color: column.color }, children: count })
|
|
32469
32439
|
] });
|
|
32470
32440
|
}
|
|
32471
|
-
return /* @__PURE__ */
|
|
32472
|
-
/* @__PURE__ */
|
|
32473
|
-
/* @__PURE__ */
|
|
32441
|
+
return /* @__PURE__ */ jsxs242("div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
32442
|
+
/* @__PURE__ */ jsxs242("div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
32443
|
+
/* @__PURE__ */ jsx294(
|
|
32474
32444
|
TicketStatusTag,
|
|
32475
32445
|
{
|
|
32476
32446
|
status: column.id,
|
|
@@ -32478,7 +32448,7 @@ function BoardColumnHeader({
|
|
|
32478
32448
|
color: useStatusVariant ? void 0 : column.color
|
|
32479
32449
|
}
|
|
32480
32450
|
),
|
|
32481
|
-
/* @__PURE__ */
|
|
32451
|
+
/* @__PURE__ */ jsx294(
|
|
32482
32452
|
"span",
|
|
32483
32453
|
{
|
|
32484
32454
|
className: "text-h5",
|
|
@@ -32487,8 +32457,8 @@ function BoardColumnHeader({
|
|
|
32487
32457
|
}
|
|
32488
32458
|
)
|
|
32489
32459
|
] }),
|
|
32490
|
-
/* @__PURE__ */
|
|
32491
|
-
/* @__PURE__ */
|
|
32460
|
+
/* @__PURE__ */ jsxs242("div", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
32461
|
+
/* @__PURE__ */ jsx294(
|
|
32492
32462
|
Button,
|
|
32493
32463
|
{
|
|
32494
32464
|
variant: "transparent",
|
|
@@ -32496,10 +32466,10 @@ function BoardColumnHeader({
|
|
|
32496
32466
|
className: "h-8 w-8 md:h-8 md:w-8 p-0",
|
|
32497
32467
|
onClick: onToggleCollapse,
|
|
32498
32468
|
"aria-label": "Collapse column",
|
|
32499
|
-
children: /* @__PURE__ */
|
|
32469
|
+
children: /* @__PURE__ */ jsx294(Arrow02LeftIcon, { className: "h-6 w-6 text-ods-text-secondary" })
|
|
32500
32470
|
}
|
|
32501
32471
|
),
|
|
32502
|
-
onAddTicket && /* @__PURE__ */
|
|
32472
|
+
onAddTicket && /* @__PURE__ */ jsx294(
|
|
32503
32473
|
Button,
|
|
32504
32474
|
{
|
|
32505
32475
|
variant: "transparent",
|
|
@@ -32507,7 +32477,7 @@ function BoardColumnHeader({
|
|
|
32507
32477
|
className: "h-8 w-8 md:h-8 md:w-8 p-0",
|
|
32508
32478
|
onClick: onAddTicket,
|
|
32509
32479
|
"aria-label": "Add ticket",
|
|
32510
|
-
children: /* @__PURE__ */
|
|
32480
|
+
children: /* @__PURE__ */ jsx294(PlusIcon, { className: "h-6 w-6 text-ods-text-secondary" })
|
|
32511
32481
|
}
|
|
32512
32482
|
)
|
|
32513
32483
|
] })
|
|
@@ -32531,7 +32501,7 @@ import { CSS } from "@dnd-kit/utilities";
|
|
|
32531
32501
|
import Link11 from "next/link";
|
|
32532
32502
|
import * as React98 from "react";
|
|
32533
32503
|
init_cn();
|
|
32534
|
-
import { Fragment as Fragment44, jsx as
|
|
32504
|
+
import { Fragment as Fragment44, jsx as jsx295, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
32535
32505
|
var PRIORITY_COLOR_CLASS = {
|
|
32536
32506
|
low: "text-ods-text-secondary",
|
|
32537
32507
|
medium: "text-ods-info",
|
|
@@ -32570,16 +32540,16 @@ function TicketCard({
|
|
|
32570
32540
|
if (sortable.isDragging) e.preventDefault();
|
|
32571
32541
|
};
|
|
32572
32542
|
const hasRightSection = !!(ticket.priority || ticket.assignees?.length || renderAssignSlot);
|
|
32573
|
-
const rightSection = hasRightSection ? /* @__PURE__ */
|
|
32574
|
-
ticket.priority && /* @__PURE__ */
|
|
32543
|
+
const rightSection = hasRightSection ? /* @__PURE__ */ jsxs243("div", { className: "pointer-events-auto flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
32544
|
+
ticket.priority && /* @__PURE__ */ jsx295(
|
|
32575
32545
|
Flag02Icon,
|
|
32576
32546
|
{
|
|
32577
32547
|
className: cn("size-4", PRIORITY_COLOR_CLASS[ticket.priority]),
|
|
32578
32548
|
"aria-label": `Priority: ${ticket.priority}`
|
|
32579
32549
|
}
|
|
32580
32550
|
),
|
|
32581
|
-
renderAssignSlot ? renderAssignSlot(ticket) : ticket.assignees?.length ? /* @__PURE__ */
|
|
32582
|
-
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */
|
|
32551
|
+
renderAssignSlot ? renderAssignSlot(ticket) : ticket.assignees?.length ? /* @__PURE__ */ jsxs243("div", { className: "flex -space-x-2", children: [
|
|
32552
|
+
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ jsx295(
|
|
32583
32553
|
SquareAvatar,
|
|
32584
32554
|
{
|
|
32585
32555
|
src: a.avatarUrl,
|
|
@@ -32590,24 +32560,24 @@ function TicketCard({
|
|
|
32590
32560
|
},
|
|
32591
32561
|
a.id
|
|
32592
32562
|
)),
|
|
32593
|
-
ticket.assignees.length > MAX_VISIBLE_ASSIGNEES && /* @__PURE__ */
|
|
32563
|
+
ticket.assignees.length > MAX_VISIBLE_ASSIGNEES && /* @__PURE__ */ jsxs243("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-bg text-xs font-medium text-ods-text-secondary", children: [
|
|
32594
32564
|
"+",
|
|
32595
32565
|
ticket.assignees.length - MAX_VISIBLE_ASSIGNEES
|
|
32596
32566
|
] })
|
|
32597
32567
|
] }) : null
|
|
32598
32568
|
] }) : null;
|
|
32599
|
-
const body = /* @__PURE__ */
|
|
32600
|
-
/* @__PURE__ */
|
|
32601
|
-
/* @__PURE__ */
|
|
32602
|
-
/* @__PURE__ */
|
|
32603
|
-
showDeviceRow && /* @__PURE__ */
|
|
32604
|
-
/* @__PURE__ */
|
|
32605
|
-
/* @__PURE__ */
|
|
32569
|
+
const body = /* @__PURE__ */ jsxs243(Fragment44, { children: [
|
|
32570
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
32571
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
32572
|
+
/* @__PURE__ */ jsx295("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
32573
|
+
showDeviceRow && /* @__PURE__ */ jsxs243("div", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xxs)] text-h6 text-ods-text-secondary", children: [
|
|
32574
|
+
/* @__PURE__ */ jsx295(LaptopIcon, { className: "size-4 shrink-0" }),
|
|
32575
|
+
/* @__PURE__ */ jsx295("span", { className: "truncate", children: deviceText })
|
|
32606
32576
|
] })
|
|
32607
32577
|
] }),
|
|
32608
32578
|
rightSection
|
|
32609
32579
|
] }),
|
|
32610
|
-
ticket.tags?.length ? /* @__PURE__ */
|
|
32580
|
+
ticket.tags?.length ? /* @__PURE__ */ jsx295(TicketTagRow, { tags: ticket.tags }) : null
|
|
32611
32581
|
] });
|
|
32612
32582
|
const cardClasses = cn(
|
|
32613
32583
|
"relative flex flex-col gap-[var(--spacing-system-sf)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-sf)] select-none text-left",
|
|
@@ -32623,11 +32593,11 @@ function TicketCard({
|
|
|
32623
32593
|
...isOverlay ? {} : sortable.listeners
|
|
32624
32594
|
};
|
|
32625
32595
|
if (isOverlay) {
|
|
32626
|
-
return /* @__PURE__ */
|
|
32596
|
+
return /* @__PURE__ */ jsx295("div", { ...outerProps, children: /* @__PURE__ */ jsx295("div", { className: "relative z-10", children: body }) });
|
|
32627
32597
|
}
|
|
32628
32598
|
if (href) {
|
|
32629
|
-
return /* @__PURE__ */
|
|
32630
|
-
/* @__PURE__ */
|
|
32599
|
+
return /* @__PURE__ */ jsxs243("div", { ...outerProps, children: [
|
|
32600
|
+
/* @__PURE__ */ jsx295(
|
|
32631
32601
|
Link11,
|
|
32632
32602
|
{
|
|
32633
32603
|
href,
|
|
@@ -32638,11 +32608,11 @@ function TicketCard({
|
|
|
32638
32608
|
className: "absolute inset-0 z-0 rounded-md focus-visible:outline-none"
|
|
32639
32609
|
}
|
|
32640
32610
|
),
|
|
32641
|
-
/* @__PURE__ */
|
|
32611
|
+
/* @__PURE__ */ jsx295("div", { className: "pointer-events-none relative z-10", children: body })
|
|
32642
32612
|
] });
|
|
32643
32613
|
}
|
|
32644
|
-
return /* @__PURE__ */
|
|
32645
|
-
/* @__PURE__ */
|
|
32614
|
+
return /* @__PURE__ */ jsxs243("div", { ...outerProps, children: [
|
|
32615
|
+
/* @__PURE__ */ jsx295(
|
|
32646
32616
|
"button",
|
|
32647
32617
|
{
|
|
32648
32618
|
type: "button",
|
|
@@ -32651,24 +32621,24 @@ function TicketCard({
|
|
|
32651
32621
|
className: "absolute inset-0 z-0 cursor-pointer rounded-md focus-visible:outline-none"
|
|
32652
32622
|
}
|
|
32653
32623
|
),
|
|
32654
|
-
/* @__PURE__ */
|
|
32624
|
+
/* @__PURE__ */ jsx295("div", { className: "pointer-events-none relative z-10", children: body })
|
|
32655
32625
|
] });
|
|
32656
32626
|
}
|
|
32657
32627
|
function TicketTagRow({ tags }) {
|
|
32658
32628
|
const visible = tags.slice(0, MAX_VISIBLE_TAGS);
|
|
32659
32629
|
const hidden = tags.length - visible.length;
|
|
32660
|
-
return /* @__PURE__ */
|
|
32661
|
-
visible.map((tag) => /* @__PURE__ */
|
|
32662
|
-
hidden > 0 && /* @__PURE__ */
|
|
32630
|
+
return /* @__PURE__ */ jsxs243("div", { className: "flex h-8 flex-wrap items-start gap-[var(--spacing-system-xxs)] overflow-clip", children: [
|
|
32631
|
+
visible.map((tag) => /* @__PURE__ */ jsx295(Tag, { variant: "outline", label: tag }, tag)),
|
|
32632
|
+
hidden > 0 && /* @__PURE__ */ jsx295(Tag, { variant: "outline", label: `+${hidden}` })
|
|
32663
32633
|
] });
|
|
32664
32634
|
}
|
|
32665
32635
|
|
|
32666
32636
|
// src/components/features/board/ticket-card-skeleton.tsx
|
|
32667
32637
|
import * as React99 from "react";
|
|
32668
32638
|
init_cn();
|
|
32669
|
-
import { jsx as
|
|
32639
|
+
import { jsx as jsx296, jsxs as jsxs244 } from "react/jsx-runtime";
|
|
32670
32640
|
var TicketCardSkeleton = React99.forwardRef(
|
|
32671
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
32641
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx296(
|
|
32672
32642
|
"div",
|
|
32673
32643
|
{
|
|
32674
32644
|
ref,
|
|
@@ -32677,12 +32647,12 @@ var TicketCardSkeleton = React99.forwardRef(
|
|
|
32677
32647
|
className
|
|
32678
32648
|
),
|
|
32679
32649
|
...props,
|
|
32680
|
-
children: /* @__PURE__ */
|
|
32681
|
-
/* @__PURE__ */
|
|
32682
|
-
/* @__PURE__ */
|
|
32683
|
-
/* @__PURE__ */
|
|
32650
|
+
children: /* @__PURE__ */ jsxs244("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
32651
|
+
/* @__PURE__ */ jsxs244("div", { className: "flex flex-1 flex-col gap-[var(--spacing-system-xsf)]", children: [
|
|
32652
|
+
/* @__PURE__ */ jsx296(Skeleton, { className: "h-5 w-3/4" }),
|
|
32653
|
+
/* @__PURE__ */ jsx296(Skeleton, { className: "h-4 w-1/2" })
|
|
32684
32654
|
] }),
|
|
32685
|
-
/* @__PURE__ */
|
|
32655
|
+
/* @__PURE__ */ jsx296(Skeleton, { className: "size-8 rounded-full" })
|
|
32686
32656
|
] })
|
|
32687
32657
|
}
|
|
32688
32658
|
)
|
|
@@ -32690,7 +32660,7 @@ var TicketCardSkeleton = React99.forwardRef(
|
|
|
32690
32660
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
32691
32661
|
|
|
32692
32662
|
// src/components/features/board/board-column.tsx
|
|
32693
|
-
import { Fragment as Fragment45, jsx as
|
|
32663
|
+
import { Fragment as Fragment45, jsx as jsx297, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
32694
32664
|
function BoardColumn({
|
|
32695
32665
|
column,
|
|
32696
32666
|
collapsed = false,
|
|
@@ -32703,7 +32673,7 @@ function BoardColumn({
|
|
|
32703
32673
|
joinLeft = false,
|
|
32704
32674
|
joinRight = false
|
|
32705
32675
|
}) {
|
|
32706
|
-
return /* @__PURE__ */
|
|
32676
|
+
return /* @__PURE__ */ jsxs245(
|
|
32707
32677
|
"div",
|
|
32708
32678
|
{
|
|
32709
32679
|
className: cn(
|
|
@@ -32716,7 +32686,7 @@ function BoardColumn({
|
|
|
32716
32686
|
),
|
|
32717
32687
|
style: column.system ? void 0 : { backgroundColor: tintOnDark(column.color) },
|
|
32718
32688
|
children: [
|
|
32719
|
-
/* @__PURE__ */
|
|
32689
|
+
/* @__PURE__ */ jsx297(
|
|
32720
32690
|
BoardColumnHeader,
|
|
32721
32691
|
{
|
|
32722
32692
|
column,
|
|
@@ -32725,9 +32695,9 @@ function BoardColumn({
|
|
|
32725
32695
|
onAddTicket: !collapsed && onAddTicket ? () => onAddTicket(column.id) : void 0
|
|
32726
32696
|
}
|
|
32727
32697
|
),
|
|
32728
|
-
!collapsed && /* @__PURE__ */
|
|
32729
|
-
/* @__PURE__ */
|
|
32730
|
-
/* @__PURE__ */
|
|
32698
|
+
!collapsed && /* @__PURE__ */ jsxs245(Fragment45, { children: [
|
|
32699
|
+
/* @__PURE__ */ jsx297("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
32700
|
+
/* @__PURE__ */ jsx297(
|
|
32731
32701
|
ColumnBody,
|
|
32732
32702
|
{
|
|
32733
32703
|
column,
|
|
@@ -32782,7 +32752,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
32782
32752
|
},
|
|
32783
32753
|
[setDroppableRef]
|
|
32784
32754
|
);
|
|
32785
|
-
return /* @__PURE__ */
|
|
32755
|
+
return /* @__PURE__ */ jsxs245(
|
|
32786
32756
|
"div",
|
|
32787
32757
|
{
|
|
32788
32758
|
ref: setBodyRef,
|
|
@@ -32791,7 +32761,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
32791
32761
|
isOver && "rounded-md outline outline-2 outline-offset-2 outline-ods-focus"
|
|
32792
32762
|
),
|
|
32793
32763
|
children: [
|
|
32794
|
-
/* @__PURE__ */
|
|
32764
|
+
/* @__PURE__ */ jsx297(SortableContext, { items: ticketIds, strategy: verticalListSortingStrategy, children: column.isLoading ? /* @__PURE__ */ jsx297(SkeletonStack, {}) : column.tickets.length === 0 ? /* @__PURE__ */ jsx297(EmptyState3, {}) : column.tickets.map((t) => /* @__PURE__ */ jsx297(
|
|
32795
32765
|
TicketCard,
|
|
32796
32766
|
{
|
|
32797
32767
|
ticket: t,
|
|
@@ -32802,8 +32772,8 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
32802
32772
|
},
|
|
32803
32773
|
t.id
|
|
32804
32774
|
)) }),
|
|
32805
|
-
column.isLoadingMore && !column.isLoading && /* @__PURE__ */
|
|
32806
|
-
column.hasMore && /* @__PURE__ */
|
|
32775
|
+
column.isLoadingMore && !column.isLoading && /* @__PURE__ */ jsx297(TicketCardSkeleton, {}),
|
|
32776
|
+
column.hasMore && /* @__PURE__ */ jsx297("div", { ref: sentinelRef, "aria-hidden": true, className: "h-1 shrink-0" })
|
|
32807
32777
|
]
|
|
32808
32778
|
}
|
|
32809
32779
|
);
|
|
@@ -32813,14 +32783,14 @@ function SkeletonStack({ count = 4 }) {
|
|
|
32813
32783
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
32814
32784
|
[count]
|
|
32815
32785
|
);
|
|
32816
|
-
return /* @__PURE__ */
|
|
32786
|
+
return /* @__PURE__ */ jsx297(Fragment45, { children: keys.map((k) => /* @__PURE__ */ jsx297(TicketCardSkeleton, {}, k)) });
|
|
32817
32787
|
}
|
|
32818
32788
|
function EmptyState3() {
|
|
32819
|
-
return /* @__PURE__ */
|
|
32820
|
-
/* @__PURE__ */
|
|
32821
|
-
/* @__PURE__ */
|
|
32822
|
-
/* @__PURE__ */
|
|
32823
|
-
/* @__PURE__ */
|
|
32789
|
+
return /* @__PURE__ */ jsxs245("div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-lf)] p-[var(--spacing-system-lf)] text-center text-ods-text-secondary", children: [
|
|
32790
|
+
/* @__PURE__ */ jsx297(TagIcon, { className: "h-6 w-6 shrink-0" }),
|
|
32791
|
+
/* @__PURE__ */ jsxs245("div", { className: "flex w-full flex-col", children: [
|
|
32792
|
+
/* @__PURE__ */ jsx297("p", { className: "text-h4", children: "No tickets here" }),
|
|
32793
|
+
/* @__PURE__ */ jsx297("p", { className: "text-h6", children: "Drag a ticket here or change its status to move it to this column" })
|
|
32824
32794
|
] })
|
|
32825
32795
|
] });
|
|
32826
32796
|
}
|
|
@@ -32851,7 +32821,7 @@ function useBoardCollapse(storageKey) {
|
|
|
32851
32821
|
}
|
|
32852
32822
|
|
|
32853
32823
|
// src/components/features/board/board.tsx
|
|
32854
|
-
import { jsx as
|
|
32824
|
+
import { jsx as jsx298, jsxs as jsxs246 } from "react/jsx-runtime";
|
|
32855
32825
|
function Board({
|
|
32856
32826
|
columns,
|
|
32857
32827
|
onChange,
|
|
@@ -33006,7 +32976,7 @@ function Board({
|
|
|
33006
32976
|
isDraggingRef.current = false;
|
|
33007
32977
|
setItems(columns);
|
|
33008
32978
|
};
|
|
33009
|
-
return /* @__PURE__ */
|
|
32979
|
+
return /* @__PURE__ */ jsxs246(
|
|
33010
32980
|
DndContext,
|
|
33011
32981
|
{
|
|
33012
32982
|
sensors,
|
|
@@ -33016,15 +32986,15 @@ function Board({
|
|
|
33016
32986
|
onDragEnd: handleDragEnd,
|
|
33017
32987
|
onDragCancel: handleDragCancel,
|
|
33018
32988
|
children: [
|
|
33019
|
-
/* @__PURE__ */
|
|
32989
|
+
/* @__PURE__ */ jsx298("div", { className: cn("flex h-full overflow-x-auto", className), children: items.map((column, i) => {
|
|
33020
32990
|
const prev = items[i - 1];
|
|
33021
32991
|
const next = items[i + 1];
|
|
33022
32992
|
const joinLeft = !!(column.system && prev?.system);
|
|
33023
32993
|
const joinRight = !!(column.system && next?.system);
|
|
33024
32994
|
const showGap = i > 0 && !joinLeft;
|
|
33025
|
-
return /* @__PURE__ */
|
|
33026
|
-
showGap && /* @__PURE__ */
|
|
33027
|
-
/* @__PURE__ */
|
|
32995
|
+
return /* @__PURE__ */ jsxs246(React101.Fragment, { children: [
|
|
32996
|
+
showGap && /* @__PURE__ */ jsx298("div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
32997
|
+
/* @__PURE__ */ jsx298(
|
|
33028
32998
|
BoardColumn,
|
|
33029
32999
|
{
|
|
33030
33000
|
column,
|
|
@@ -33041,7 +33011,7 @@ function Board({
|
|
|
33041
33011
|
)
|
|
33042
33012
|
] }, column.id);
|
|
33043
33013
|
}) }),
|
|
33044
|
-
/* @__PURE__ */
|
|
33014
|
+
/* @__PURE__ */ jsx298(DragOverlay, { dropAnimation: null, children: activeTicket ? /* @__PURE__ */ jsx298(TicketCard, { ticket: activeTicket.ticket, columnId: activeTicket.columnId, isOverlay: true }) : null })
|
|
33045
33015
|
]
|
|
33046
33016
|
}
|
|
33047
33017
|
);
|
|
@@ -33703,7 +33673,6 @@ export {
|
|
|
33703
33673
|
AssigneeDropdown,
|
|
33704
33674
|
TicketDetailSection,
|
|
33705
33675
|
TicketAttachmentsList,
|
|
33706
|
-
TicketKnowledgeBaseList,
|
|
33707
33676
|
TicketNoteCard,
|
|
33708
33677
|
TicketNotesSection,
|
|
33709
33678
|
TicketInfoSection,
|
|
@@ -33721,4 +33690,4 @@ export {
|
|
|
33721
33690
|
TMCG_SOCIAL_PLATFORMS,
|
|
33722
33691
|
assets
|
|
33723
33692
|
};
|
|
33724
|
-
//# sourceMappingURL=chunk-
|
|
33693
|
+
//# sourceMappingURL=chunk-VEOBMVF5.js.map
|