@flamingo-stack/openframe-frontend-core 0.0.198 → 0.0.199-snapshot.20260520170030
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-4CWSZPXH.cjs.map +1 -1
- package/dist/{chunk-332L6IO7.cjs → chunk-C3M6R6JH.cjs} +456 -194
- package/dist/chunk-C3M6R6JH.cjs.map +1 -0
- package/dist/chunk-OII2IERE.cjs.map +1 -1
- package/dist/chunk-UC43NICZ.cjs.map +1 -1
- package/dist/chunk-V2FNIPZJ.cjs.map +1 -1
- package/dist/chunk-VJTFBYVG.cjs.map +1 -1
- package/dist/chunk-VRHGVLSL.cjs.map +1 -1
- package/dist/chunk-WZW7C7TF.cjs.map +1 -1
- package/dist/chunk-XQFFGR6U.cjs.map +1 -1
- package/dist/{chunk-5URU5DHE.js → chunk-ZOM75JOY.js} +325 -63
- package/dist/chunk-ZOM75JOY.js.map +1 -0
- package/dist/components/chart.d.ts +14 -7
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +1 -1
- package/dist/components/icons/index.cjs.map +1 -1
- package/dist/components/icons-v2-generated/index.cjs.map +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/resizable.d.ts +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card.d.ts +38 -2
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/toast/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +1 -1
- package/dist/components/ui/release-changelog-section.d.ts +7 -1
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tailwind.config.cjs +7 -7
- package/dist/tailwind.config.cjs.map +1 -1
- package/dist/tailwind.config.js +7 -7
- package/dist/tailwind.config.js.map +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/product-release.d.ts +12 -0
- package/dist/types/product-release.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +69 -1
- package/src/components/shared/product-release/product-release-card.tsx +334 -4
- package/src/components/shared/product-release/release-detail-page.tsx +8 -2
- package/src/components/ui/release-changelog-section.tsx +29 -2
- package/src/types/product-release.ts +12 -0
- package/dist/chunk-332L6IO7.cjs.map +0 -1
- package/dist/chunk-5URU5DHE.js.map +0 -1
|
@@ -17264,8 +17264,18 @@ function OnboardingWalkthrough({
|
|
|
17264
17264
|
}
|
|
17265
17265
|
|
|
17266
17266
|
// src/components/shared/product-release/product-release-card.tsx
|
|
17267
|
+
import Image8 from "next/image";
|
|
17267
17268
|
init_cn();
|
|
17268
|
-
import {
|
|
17269
|
+
import {
|
|
17270
|
+
AlertTriangle,
|
|
17271
|
+
ChevronRight as ChevronRight6,
|
|
17272
|
+
Eye,
|
|
17273
|
+
Package as Package3,
|
|
17274
|
+
Play,
|
|
17275
|
+
Sparkles as Sparkles2,
|
|
17276
|
+
TrendingUp,
|
|
17277
|
+
Wrench
|
|
17278
|
+
} from "lucide-react";
|
|
17269
17279
|
import { Fragment as Fragment20, jsx as jsx138, jsxs as jsxs110 } from "react/jsx-runtime";
|
|
17270
17280
|
function ProductReleaseCard({
|
|
17271
17281
|
title,
|
|
@@ -17275,8 +17285,181 @@ function ProductReleaseCard({
|
|
|
17275
17285
|
onClick,
|
|
17276
17286
|
anchorProps,
|
|
17277
17287
|
className,
|
|
17278
|
-
size = "default"
|
|
17288
|
+
size = "default",
|
|
17289
|
+
coverImage,
|
|
17290
|
+
hasVideoCover,
|
|
17291
|
+
releaseType,
|
|
17292
|
+
releaseStatus,
|
|
17293
|
+
releaseTypeBadgeColor,
|
|
17294
|
+
viewCount,
|
|
17295
|
+
author,
|
|
17296
|
+
changelogCounts
|
|
17279
17297
|
}) {
|
|
17298
|
+
if (size === "catalog") {
|
|
17299
|
+
const totalChangelog = (changelogCounts?.features ?? 0) + (changelogCounts?.fixes ?? 0) + (changelogCounts?.improvements ?? 0) + (changelogCounts?.breaking ?? 0);
|
|
17300
|
+
const valueCells = [];
|
|
17301
|
+
if (releaseType && releaseTypeBadgeColor) {
|
|
17302
|
+
valueCells.push({
|
|
17303
|
+
value: releaseType.toUpperCase(),
|
|
17304
|
+
label: "Type",
|
|
17305
|
+
uppercase: true,
|
|
17306
|
+
colorScheme: releaseTypeBadgeColor
|
|
17307
|
+
});
|
|
17308
|
+
}
|
|
17309
|
+
if (releaseStatus) {
|
|
17310
|
+
valueCells.push({
|
|
17311
|
+
value: releaseStatus.toUpperCase(),
|
|
17312
|
+
label: "Status",
|
|
17313
|
+
uppercase: true
|
|
17314
|
+
});
|
|
17315
|
+
}
|
|
17316
|
+
if (formattedDate) {
|
|
17317
|
+
valueCells.push({
|
|
17318
|
+
value: formattedDate,
|
|
17319
|
+
label: "Released",
|
|
17320
|
+
uppercase: false
|
|
17321
|
+
});
|
|
17322
|
+
}
|
|
17323
|
+
const hasAuthorCell = !!author?.full_name;
|
|
17324
|
+
const totalCells = valueCells.length + (hasAuthorCell ? 1 : 0);
|
|
17325
|
+
const gridColsClass = totalCells >= 4 ? "md:grid-cols-4" : totalCells === 3 ? "md:grid-cols-3" : totalCells === 2 ? "md:grid-cols-2" : "md:grid-cols-1";
|
|
17326
|
+
const dividerClass = "border-b md:border-b-0 md:border-r border-ods-border";
|
|
17327
|
+
const frameClass = cn(
|
|
17328
|
+
"group bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden",
|
|
17329
|
+
"flex flex-col p-6 gap-4",
|
|
17330
|
+
"transition-all duration-300 ease-out transform hover:translate-y-[-2px]",
|
|
17331
|
+
"hover:border-ods-accent hover:shadow-lg hover:shadow-ods-accent/[0.08]",
|
|
17332
|
+
"focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 focus-visible:ring-offset-ods-bg",
|
|
17333
|
+
"no-underline",
|
|
17334
|
+
className
|
|
17335
|
+
);
|
|
17336
|
+
const innerLayout = /* @__PURE__ */ jsxs110(Fragment20, { children: [
|
|
17337
|
+
/* @__PURE__ */ jsxs110("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
17338
|
+
/* @__PURE__ */ jsx138("div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ jsxs110("div", { className: "relative rounded-lg overflow-hidden w-full aspect-[16/9] bg-ods-bg", children: [
|
|
17339
|
+
coverImage ? /* @__PURE__ */ jsx138(
|
|
17340
|
+
Image8,
|
|
17341
|
+
{
|
|
17342
|
+
src: coverImage,
|
|
17343
|
+
alt: title,
|
|
17344
|
+
fill: true,
|
|
17345
|
+
sizes: "(max-width: 768px) 100vw, 256px",
|
|
17346
|
+
className: "object-cover",
|
|
17347
|
+
unoptimized: true
|
|
17348
|
+
}
|
|
17349
|
+
) : /* @__PURE__ */ jsx138("div", { className: "absolute inset-0 flex items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ jsx138(Package3, { className: "w-8 h-8" }) }),
|
|
17350
|
+
hasVideoCover && coverImage && /* @__PURE__ */ jsx138("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx138(Play, { className: "w-10 h-10 text-white", fill: "white" }) })
|
|
17351
|
+
] }) }),
|
|
17352
|
+
/* @__PURE__ */ jsxs110("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
17353
|
+
/* @__PURE__ */ jsx138("div", { className: "flex items-center gap-3 mb-3", children: /* @__PURE__ */ jsxs110("span", { className: "font-mono font-semibold text-lg text-ods-text-primary truncate", children: [
|
|
17354
|
+
"v",
|
|
17355
|
+
version
|
|
17356
|
+
] }) }),
|
|
17357
|
+
/* @__PURE__ */ jsx138("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight line-clamp-2 mb-3", children: title }),
|
|
17358
|
+
summary && /* @__PURE__ */ jsx138("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-4 flex-1", children: summary })
|
|
17359
|
+
] })
|
|
17360
|
+
] }),
|
|
17361
|
+
totalChangelog > 0 && changelogCounts && /* @__PURE__ */ jsxs110("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 font-['DM_Sans'] text-sm text-ods-text-secondary", children: [
|
|
17362
|
+
changelogCounts.features > 0 && /* @__PURE__ */ jsxs110("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
17363
|
+
/* @__PURE__ */ jsx138(Sparkles2, { className: "w-3.5 h-3.5" }),
|
|
17364
|
+
changelogCounts.features,
|
|
17365
|
+
" ",
|
|
17366
|
+
changelogCounts.features === 1 ? "feature" : "features"
|
|
17367
|
+
] }),
|
|
17368
|
+
changelogCounts.fixes > 0 && /* @__PURE__ */ jsxs110("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
17369
|
+
/* @__PURE__ */ jsx138(Wrench, { className: "w-3.5 h-3.5" }),
|
|
17370
|
+
changelogCounts.fixes,
|
|
17371
|
+
" ",
|
|
17372
|
+
changelogCounts.fixes === 1 ? "fix" : "fixes"
|
|
17373
|
+
] }),
|
|
17374
|
+
changelogCounts.improvements > 0 && /* @__PURE__ */ jsxs110("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
17375
|
+
/* @__PURE__ */ jsx138(TrendingUp, { className: "w-3.5 h-3.5" }),
|
|
17376
|
+
changelogCounts.improvements,
|
|
17377
|
+
" ",
|
|
17378
|
+
changelogCounts.improvements === 1 ? "improvement" : "improvements"
|
|
17379
|
+
] }),
|
|
17380
|
+
changelogCounts.breaking > 0 && /* @__PURE__ */ jsxs110("span", { className: "inline-flex items-center gap-1.5 text-[var(--ods-attention-yellow-warning)]", children: [
|
|
17381
|
+
/* @__PURE__ */ jsx138(AlertTriangle, { className: "w-3.5 h-3.5" }),
|
|
17382
|
+
changelogCounts.breaking,
|
|
17383
|
+
" breaking"
|
|
17384
|
+
] })
|
|
17385
|
+
] }),
|
|
17386
|
+
totalCells > 0 && /* @__PURE__ */ jsxs110(
|
|
17387
|
+
"div",
|
|
17388
|
+
{
|
|
17389
|
+
className: cn(
|
|
17390
|
+
"grid grid-cols-1",
|
|
17391
|
+
gridColsClass,
|
|
17392
|
+
"border border-ods-border rounded-md overflow-hidden w-full"
|
|
17393
|
+
),
|
|
17394
|
+
children: [
|
|
17395
|
+
valueCells.map((cell, i) => /* @__PURE__ */ jsx138(
|
|
17396
|
+
"div",
|
|
17397
|
+
{
|
|
17398
|
+
className: cn(
|
|
17399
|
+
"bg-ods-card p-4 flex flex-col gap-3",
|
|
17400
|
+
// Last value cell skips the trailing divider when no
|
|
17401
|
+
// author cell follows; otherwise every value cell gets it.
|
|
17402
|
+
(i < valueCells.length - 1 || hasAuthorCell) && dividerClass
|
|
17403
|
+
),
|
|
17404
|
+
children: /* @__PURE__ */ jsxs110("div", { className: "flex flex-col gap-0", children: [
|
|
17405
|
+
cell.colorScheme ? /* @__PURE__ */ jsx138(
|
|
17406
|
+
StatusBadge,
|
|
17407
|
+
{
|
|
17408
|
+
text: cell.value,
|
|
17409
|
+
variant: "card",
|
|
17410
|
+
colorScheme: cell.colorScheme,
|
|
17411
|
+
singleLine: true,
|
|
17412
|
+
className: "self-start"
|
|
17413
|
+
}
|
|
17414
|
+
) : /* @__PURE__ */ jsx138("p", { className: "text-h4 text-ods-text-primary", children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value }),
|
|
17415
|
+
/* @__PURE__ */ jsx138("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: cell.label })
|
|
17416
|
+
] })
|
|
17417
|
+
},
|
|
17418
|
+
`${cell.label}-${i}`
|
|
17419
|
+
)),
|
|
17420
|
+
hasAuthorCell && author && /* @__PURE__ */ jsxs110("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
|
|
17421
|
+
/* @__PURE__ */ jsx138(
|
|
17422
|
+
SquareAvatar,
|
|
17423
|
+
{
|
|
17424
|
+
src: author.avatar_url ?? void 0,
|
|
17425
|
+
alt: author.full_name,
|
|
17426
|
+
fallback: author.full_name.charAt(0).toUpperCase(),
|
|
17427
|
+
size: "md",
|
|
17428
|
+
variant: "round"
|
|
17429
|
+
}
|
|
17430
|
+
),
|
|
17431
|
+
/* @__PURE__ */ jsxs110("div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
|
|
17432
|
+
/* @__PURE__ */ jsx138("p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: author.full_name }),
|
|
17433
|
+
/* @__PURE__ */ jsx138("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: author.job_title || "Author" })
|
|
17434
|
+
] })
|
|
17435
|
+
] })
|
|
17436
|
+
]
|
|
17437
|
+
}
|
|
17438
|
+
),
|
|
17439
|
+
typeof viewCount === "number" && viewCount > 0 && /* @__PURE__ */ jsxs110("div", { className: "flex items-center gap-1.5 text-xs text-ods-text-secondary", children: [
|
|
17440
|
+
/* @__PURE__ */ jsx138(Eye, { className: "w-3.5 h-3.5" }),
|
|
17441
|
+
/* @__PURE__ */ jsxs110("span", { children: [
|
|
17442
|
+
viewCount.toLocaleString(),
|
|
17443
|
+
" views"
|
|
17444
|
+
] })
|
|
17445
|
+
] })
|
|
17446
|
+
] });
|
|
17447
|
+
if (anchorProps) {
|
|
17448
|
+
return /* @__PURE__ */ jsx138("a", { ...anchorProps, className: frameClass, "aria-label": `Open ${title}`, children: innerLayout });
|
|
17449
|
+
}
|
|
17450
|
+
if (onClick) {
|
|
17451
|
+
return /* @__PURE__ */ jsx138(InteractiveCard, { clickable: true, onClick, className: frameClass, children: innerLayout });
|
|
17452
|
+
}
|
|
17453
|
+
return /* @__PURE__ */ jsx138(
|
|
17454
|
+
"div",
|
|
17455
|
+
{
|
|
17456
|
+
className: cn(
|
|
17457
|
+
frameClass.replace("hover:border-ods-accent", "").replace("hover:translate-y-[-2px]", "")
|
|
17458
|
+
),
|
|
17459
|
+
children: innerLayout
|
|
17460
|
+
}
|
|
17461
|
+
);
|
|
17462
|
+
}
|
|
17280
17463
|
if (size === "sm") {
|
|
17281
17464
|
const handleKey = (e) => {
|
|
17282
17465
|
if (!onClick) return;
|
|
@@ -17303,7 +17486,20 @@ function ProductReleaseCard({
|
|
|
17303
17486
|
className
|
|
17304
17487
|
);
|
|
17305
17488
|
const innerChildren = /* @__PURE__ */ jsxs110(Fragment20, { children: [
|
|
17306
|
-
/* @__PURE__ */
|
|
17489
|
+
/* @__PURE__ */ jsxs110("span", { className: "relative flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center overflow-hidden rounded-md bg-ods-bg text-ods-accent", children: [
|
|
17490
|
+
coverImage ? /* @__PURE__ */ jsx138(
|
|
17491
|
+
Image8,
|
|
17492
|
+
{
|
|
17493
|
+
src: coverImage,
|
|
17494
|
+
alt: title,
|
|
17495
|
+
fill: true,
|
|
17496
|
+
sizes: "56px",
|
|
17497
|
+
className: "object-contain",
|
|
17498
|
+
unoptimized: true
|
|
17499
|
+
}
|
|
17500
|
+
) : /* @__PURE__ */ jsx138(Package3, { className: "h-5 w-5" }),
|
|
17501
|
+
hasVideoCover && coverImage && /* @__PURE__ */ jsx138("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx138(Play, { className: "h-4 w-4 text-white", fill: "white" }) })
|
|
17502
|
+
] }),
|
|
17307
17503
|
/* @__PURE__ */ jsxs110("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14", children: [
|
|
17308
17504
|
/* @__PURE__ */ jsxs110("span", { className: "flex items-center gap-2 min-w-0 h-5", children: [
|
|
17309
17505
|
/* @__PURE__ */ jsx138("span", { className: "truncate text-sm font-semibold leading-5 text-ods-text-primary min-w-0", children: title }),
|
|
@@ -17400,6 +17596,52 @@ function ProductReleaseCard({
|
|
|
17400
17596
|
init_cn();
|
|
17401
17597
|
import { jsx as jsx139, jsxs as jsxs111 } from "react/jsx-runtime";
|
|
17402
17598
|
function ProductReleaseCardSkeleton({ className, size = "default" }) {
|
|
17599
|
+
if (size === "catalog") {
|
|
17600
|
+
return /* @__PURE__ */ jsxs111(
|
|
17601
|
+
"div",
|
|
17602
|
+
{
|
|
17603
|
+
className: cn(
|
|
17604
|
+
"bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden",
|
|
17605
|
+
"flex flex-col p-6 gap-4",
|
|
17606
|
+
"animate-pulse",
|
|
17607
|
+
className
|
|
17608
|
+
),
|
|
17609
|
+
children: [
|
|
17610
|
+
/* @__PURE__ */ jsxs111("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
17611
|
+
/* @__PURE__ */ jsx139("div", { className: "w-full md:w-[256px] aspect-[16/9] bg-ods-bg rounded-lg flex-shrink-0" }),
|
|
17612
|
+
/* @__PURE__ */ jsxs111("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
17613
|
+
/* @__PURE__ */ jsx139("div", { className: "h-6 w-20 bg-ods-bg rounded mb-3" }),
|
|
17614
|
+
/* @__PURE__ */ jsx139("div", { className: "h-7 w-3/4 bg-ods-bg rounded mb-2" }),
|
|
17615
|
+
/* @__PURE__ */ jsx139("div", { className: "h-7 w-1/2 bg-ods-bg rounded mb-3" }),
|
|
17616
|
+
/* @__PURE__ */ jsx139("div", { className: "h-3 w-full bg-ods-bg/60 rounded mb-1" }),
|
|
17617
|
+
/* @__PURE__ */ jsx139("div", { className: "h-3 w-5/6 bg-ods-bg/60 rounded" })
|
|
17618
|
+
] })
|
|
17619
|
+
] }),
|
|
17620
|
+
/* @__PURE__ */ jsx139("div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ jsx139("div", { className: "h-4 w-2/3 bg-ods-bg/60 rounded" }) }),
|
|
17621
|
+
/* @__PURE__ */ jsxs111("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
|
|
17622
|
+
[0, 1, 2].map((i) => /* @__PURE__ */ jsx139(
|
|
17623
|
+
"div",
|
|
17624
|
+
{
|
|
17625
|
+
className: "bg-ods-card p-4 flex flex-col gap-3 border-b md:border-b-0 md:border-r border-ods-border",
|
|
17626
|
+
children: /* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-2", children: [
|
|
17627
|
+
/* @__PURE__ */ jsx139("div", { className: "h-6 w-24 bg-ods-bg rounded" }),
|
|
17628
|
+
/* @__PURE__ */ jsx139("div", { className: "h-3 w-16 bg-ods-bg/60 rounded" })
|
|
17629
|
+
] })
|
|
17630
|
+
},
|
|
17631
|
+
`cell-${i}`
|
|
17632
|
+
)),
|
|
17633
|
+
/* @__PURE__ */ jsxs111("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
|
|
17634
|
+
/* @__PURE__ */ jsx139("div", { className: "h-10 w-10 rounded-full bg-ods-bg shrink-0" }),
|
|
17635
|
+
/* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
17636
|
+
/* @__PURE__ */ jsx139("div", { className: "h-4 w-3/4 bg-ods-bg rounded" }),
|
|
17637
|
+
/* @__PURE__ */ jsx139("div", { className: "h-3 w-1/2 bg-ods-bg/60 rounded" })
|
|
17638
|
+
] })
|
|
17639
|
+
] })
|
|
17640
|
+
] })
|
|
17641
|
+
]
|
|
17642
|
+
}
|
|
17643
|
+
);
|
|
17644
|
+
}
|
|
17403
17645
|
if (size === "sm") {
|
|
17404
17646
|
return /* @__PURE__ */ jsxs111(
|
|
17405
17647
|
"span",
|
|
@@ -17517,6 +17759,7 @@ function ReleaseChangelogSection({
|
|
|
17517
17759
|
hideTitle = false,
|
|
17518
17760
|
collapsible = false,
|
|
17519
17761
|
defaultCollapsed = true,
|
|
17762
|
+
icon,
|
|
17520
17763
|
SimpleMarkdownRenderer: SimpleMarkdownRenderer2
|
|
17521
17764
|
}) {
|
|
17522
17765
|
const [collapsed, setCollapsed] = useState33(collapsible ? defaultCollapsed : false);
|
|
@@ -17531,6 +17774,7 @@ function ReleaseChangelogSection({
|
|
|
17531
17774
|
className: "flex items-center justify-between w-full cursor-pointer",
|
|
17532
17775
|
children: [
|
|
17533
17776
|
/* @__PURE__ */ jsxs113("h2", { className: `flex items-center gap-2 text-2xl font-bold ${isBreaking ? "text-red-500" : "text-ods-text-primary"}`, children: [
|
|
17777
|
+
icon,
|
|
17534
17778
|
title,
|
|
17535
17779
|
/* @__PURE__ */ jsx142(Badge, { variant: "secondary", className: "ml-2", children: entries.length })
|
|
17536
17780
|
] }),
|
|
@@ -17543,12 +17787,26 @@ function ReleaseChangelogSection({
|
|
|
17543
17787
|
]
|
|
17544
17788
|
}
|
|
17545
17789
|
) : /* @__PURE__ */ jsxs113("h2", { className: `flex items-center gap-2 text-2xl font-bold ${isBreaking ? "text-red-500" : "text-ods-text-primary"}`, children: [
|
|
17790
|
+
icon,
|
|
17546
17791
|
title,
|
|
17547
17792
|
/* @__PURE__ */ jsx142(Badge, { variant: "secondary", className: "ml-2", children: entries.length })
|
|
17548
17793
|
] })),
|
|
17549
17794
|
showEntries && /* @__PURE__ */ jsx142("ul", { className: "space-y-6", children: entries.map((entry, index) => /* @__PURE__ */ jsxs113("li", { className: "border-l-2 border-ods-border pl-4 ml-0", children: [
|
|
17550
|
-
/* @__PURE__ */ jsx142("p", { className: "
|
|
17551
|
-
entry.description && /*
|
|
17795
|
+
/* @__PURE__ */ jsx142("p", { className: "text-h3 text-ods-text-primary mb-2", children: entry.title }),
|
|
17796
|
+
entry.description && /* Entry description — body text matches the main release
|
|
17797
|
+
summary (release-detail-page.tsx:321) at the SAME 14/18px
|
|
17798
|
+
responsive `text-h4` scale. The `SimpleMarkdownRenderer`
|
|
17799
|
+
forces its own `<p>` typography
|
|
17800
|
+
(`text-[16px] md:text-[18px] lg:text-[20px]`) which
|
|
17801
|
+
overrides the wrapper's `text-h4` on `lg+` viewports and
|
|
17802
|
+
inflates the changelog body to 20px — larger than the
|
|
17803
|
+
main summary AND larger than the entry title.
|
|
17804
|
+
The `[&_p]:!` overrides pin every descendant `<p>` back
|
|
17805
|
+
to the h4 responsive tokens (`var(--font-size-h4-body)`
|
|
17806
|
+
+ `var(--font-line-space-h4-body)`) — same variables
|
|
17807
|
+
`text-h4` itself uses, so the responsive breakpoints
|
|
17808
|
+
stay aligned with the rest of the page. */
|
|
17809
|
+
/* @__PURE__ */ jsx142("div", { className: "text-h4 text-ods-text-primary [&_p]:!text-[length:var(--font-size-h4-body)] [&_p]:!leading-[var(--font-line-space-h4-body)] [&_p]:!font-medium", children: /* @__PURE__ */ jsx142(SimpleMarkdownRenderer2, { content: entry.description }) })
|
|
17552
17810
|
] }, index)) })
|
|
17553
17811
|
] });
|
|
17554
17812
|
}
|
|
@@ -17556,7 +17814,7 @@ function ReleaseChangelogSection({
|
|
|
17556
17814
|
// src/components/ui/image-gallery-modal.tsx
|
|
17557
17815
|
import { useState as useState34, useEffect as useEffect26 } from "react";
|
|
17558
17816
|
import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight7 } from "lucide-react";
|
|
17559
|
-
import
|
|
17817
|
+
import Image9 from "next/image";
|
|
17560
17818
|
import { Fragment as Fragment21, jsx as jsx143, jsxs as jsxs114 } from "react/jsx-runtime";
|
|
17561
17819
|
function ImageGalleryModal({
|
|
17562
17820
|
images,
|
|
@@ -17636,7 +17894,7 @@ function ImageGalleryModal({
|
|
|
17636
17894
|
) })
|
|
17637
17895
|
] }),
|
|
17638
17896
|
images[selectedImageIndex] && /* @__PURE__ */ jsx143("div", { className: "relative w-[90vw] h-[90vh] max-w-none flex items-center justify-center", children: /* @__PURE__ */ jsx143(
|
|
17639
|
-
|
|
17897
|
+
Image9,
|
|
17640
17898
|
{
|
|
17641
17899
|
src: images[selectedImageIndex],
|
|
17642
17900
|
alt: `Screenshot ${selectedImageIndex + 1}`,
|
|
@@ -17676,7 +17934,7 @@ function ImageGalleryModal({
|
|
|
17676
17934
|
}
|
|
17677
17935
|
|
|
17678
17936
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
17679
|
-
import { AlertTriangle, ExternalLink, BookMarked } from "lucide-react";
|
|
17937
|
+
import { AlertTriangle as AlertTriangle2, ExternalLink, BookMarked, Sparkles as Sparkles3, TrendingUp as TrendingUp2, Wrench as Wrench2 } from "lucide-react";
|
|
17680
17938
|
|
|
17681
17939
|
// src/components/layout/page-container.tsx
|
|
17682
17940
|
init_cn();
|
|
@@ -18632,7 +18890,7 @@ function ReleaseDetailPage({
|
|
|
18632
18890
|
] }),
|
|
18633
18891
|
releaseContent && /* @__PURE__ */ jsx149("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx149(MarkdownRenderer, { content: releaseContent }) }),
|
|
18634
18892
|
hasBreakingChanges && /* @__PURE__ */ jsx149(Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ jsx149(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs120("div", { className: "flex items-center gap-3", children: [
|
|
18635
|
-
/* @__PURE__ */ jsx149(
|
|
18893
|
+
/* @__PURE__ */ jsx149(AlertTriangle2, { className: "h-6 w-6 text-red-500" }),
|
|
18636
18894
|
/* @__PURE__ */ jsxs120("div", { children: [
|
|
18637
18895
|
/* @__PURE__ */ jsx149("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
|
|
18638
18896
|
/* @__PURE__ */ jsx149("p", { className: "text-ods-text-secondary", children: "This release contains breaking changes. Review carefully before upgrading." })
|
|
@@ -18645,6 +18903,7 @@ function ReleaseDetailPage({
|
|
|
18645
18903
|
entries: breakingChanges || [],
|
|
18646
18904
|
isBreaking: true,
|
|
18647
18905
|
hideTitle: true,
|
|
18906
|
+
icon: /* @__PURE__ */ jsx149(AlertTriangle2, { className: "h-6 w-6" }),
|
|
18648
18907
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
18649
18908
|
}
|
|
18650
18909
|
),
|
|
@@ -18653,6 +18912,7 @@ function ReleaseDetailPage({
|
|
|
18653
18912
|
{
|
|
18654
18913
|
title: "Features Added",
|
|
18655
18914
|
entries: featuresAdded || [],
|
|
18915
|
+
icon: /* @__PURE__ */ jsx149(Sparkles3, { className: "h-6 w-6" }),
|
|
18656
18916
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
18657
18917
|
}
|
|
18658
18918
|
),
|
|
@@ -18661,6 +18921,7 @@ function ReleaseDetailPage({
|
|
|
18661
18921
|
{
|
|
18662
18922
|
title: "Bugs Fixed",
|
|
18663
18923
|
entries: bugFixed || [],
|
|
18924
|
+
icon: /* @__PURE__ */ jsx149(Wrench2, { className: "h-6 w-6" }),
|
|
18664
18925
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
18665
18926
|
}
|
|
18666
18927
|
),
|
|
@@ -18669,6 +18930,7 @@ function ReleaseDetailPage({
|
|
|
18669
18930
|
{
|
|
18670
18931
|
title: "Improvements",
|
|
18671
18932
|
entries: improvements || [],
|
|
18933
|
+
icon: /* @__PURE__ */ jsx149(TrendingUp2, { className: "h-6 w-6" }),
|
|
18672
18934
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
18673
18935
|
}
|
|
18674
18936
|
),
|
|
@@ -18926,13 +19188,13 @@ InputTrigger.displayName = "InputTrigger";
|
|
|
18926
19188
|
|
|
18927
19189
|
// src/components/ui/media-type-selector.tsx
|
|
18928
19190
|
import * as React51 from "react";
|
|
18929
|
-
import { Video as Video3, Image as
|
|
19191
|
+
import { Video as Video3, Image as Image10, FileText as FileText3, Archive, CheckSquare, BookOpen, FileType } from "lucide-react";
|
|
18930
19192
|
import { jsx as jsx154, jsxs as jsxs124 } from "react/jsx-runtime";
|
|
18931
19193
|
var mediaTypeOptions = [
|
|
18932
19194
|
{ value: "video", label: "Video", icon: /* @__PURE__ */ jsx154(Video3, { className: "h-4 w-4" }) },
|
|
18933
|
-
{ value: "png", label: "PNG Image", icon: /* @__PURE__ */ jsx154(
|
|
18934
|
-
{ value: "jpg", label: "JPG Image", icon: /* @__PURE__ */ jsx154(
|
|
18935
|
-
{ value: "svg", label: "SVG Image", icon: /* @__PURE__ */ jsx154(
|
|
19195
|
+
{ value: "png", label: "PNG Image", icon: /* @__PURE__ */ jsx154(Image10, { className: "h-4 w-4" }) },
|
|
19196
|
+
{ value: "jpg", label: "JPG Image", icon: /* @__PURE__ */ jsx154(Image10, { className: "h-4 w-4" }) },
|
|
19197
|
+
{ value: "svg", label: "SVG Image", icon: /* @__PURE__ */ jsx154(Image10, { className: "h-4 w-4" }) },
|
|
18936
19198
|
{ value: "pdf", label: "PDF", icon: /* @__PURE__ */ jsx154(FileType, { className: "h-4 w-4" }) },
|
|
18937
19199
|
{ value: "document", label: "Document", icon: /* @__PURE__ */ jsx154(FileText3, { className: "h-4 w-4" }) },
|
|
18938
19200
|
{ value: "zip", label: "ZIP Archive", icon: /* @__PURE__ */ jsx154(Archive, { className: "h-4 w-4" }) },
|
|
@@ -22592,7 +22854,7 @@ import { Monitor } from "lucide-react";
|
|
|
22592
22854
|
|
|
22593
22855
|
// src/components/features/organization-icon.tsx
|
|
22594
22856
|
init_cn();
|
|
22595
|
-
import
|
|
22857
|
+
import Image11 from "next/image";
|
|
22596
22858
|
import { jsx as jsx200, jsxs as jsxs162 } from "react/jsx-runtime";
|
|
22597
22859
|
var sizeClasses3 = {
|
|
22598
22860
|
xs: "w-6 h-6",
|
|
@@ -22639,7 +22901,7 @@ function OrganizationIcon({
|
|
|
22639
22901
|
backgroundStyle === "white" ? "text-ods-text-primary" : "text-ods-text-secondary"
|
|
22640
22902
|
), children: initials }),
|
|
22641
22903
|
imageUrl && /* @__PURE__ */ jsx200(
|
|
22642
|
-
|
|
22904
|
+
Image11,
|
|
22643
22905
|
{
|
|
22644
22906
|
src: imageUrl,
|
|
22645
22907
|
alt: `${initials}`,
|
|
@@ -23191,7 +23453,7 @@ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
|
23191
23453
|
// src/components/ui/error-state.tsx
|
|
23192
23454
|
init_button2();
|
|
23193
23455
|
init_cn();
|
|
23194
|
-
import { AlertTriangle as
|
|
23456
|
+
import { AlertTriangle as AlertTriangle3, RefreshCw, Home } from "lucide-react";
|
|
23195
23457
|
import { jsx as jsx208, jsxs as jsxs168 } from "react/jsx-runtime";
|
|
23196
23458
|
function ErrorState({
|
|
23197
23459
|
title = "Error",
|
|
@@ -23237,7 +23499,7 @@ function ErrorState({
|
|
|
23237
23499
|
styles.border,
|
|
23238
23500
|
className
|
|
23239
23501
|
), children: /* @__PURE__ */ jsxs168("div", { className: "flex items-start gap-3", children: [
|
|
23240
|
-
showIcon && /* @__PURE__ */ jsx208(
|
|
23502
|
+
showIcon && /* @__PURE__ */ jsx208(AlertTriangle3, { className: cn("h-5 w-5 mt-0.5 flex-shrink-0", styles.icon) }),
|
|
23241
23503
|
/* @__PURE__ */ jsxs168("div", { className: "flex-1", children: [
|
|
23242
23504
|
/* @__PURE__ */ jsx208("h3", { className: cn("font-semibold mb-1", styles.text), children: title }),
|
|
23243
23505
|
/* @__PURE__ */ jsx208("p", { className: cn("text-sm", styles.text), children: message }),
|
|
@@ -27779,7 +28041,7 @@ function AuthProvidersList({
|
|
|
27779
28041
|
}
|
|
27780
28042
|
|
|
27781
28043
|
// src/components/features/changelog-manager.tsx
|
|
27782
|
-
import { Trash2 as Trash23, Plus as Plus3, ChevronDown as ChevronDown7, ChevronUp as ChevronUp3, Eye, EyeOff } from "lucide-react";
|
|
28044
|
+
import { Trash2 as Trash23, Plus as Plus3, ChevronDown as ChevronDown7, ChevronUp as ChevronUp3, Eye as Eye2, EyeOff } from "lucide-react";
|
|
27783
28045
|
import { useState as useState59, useEffect as useEffect44 } from "react";
|
|
27784
28046
|
import { jsx as jsx249, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
27785
28047
|
function ChangelogManager({
|
|
@@ -27880,7 +28142,7 @@ function ChangelogManager({
|
|
|
27880
28142
|
onClick: () => toggleVisibility(index),
|
|
27881
28143
|
className: "shrink-0",
|
|
27882
28144
|
title: (entry.visibility ?? "public") === "public" ? "Visible to investors" : "Internal only",
|
|
27883
|
-
children: (entry.visibility ?? "public") === "public" ? /* @__PURE__ */ jsx249(
|
|
28145
|
+
children: (entry.visibility ?? "public") === "public" ? /* @__PURE__ */ jsx249(Eye2, { className: "h-4 w-4 text-ods-accent" }) : /* @__PURE__ */ jsx249(EyeOff, { className: "h-4 w-4 text-ods-text-secondary" })
|
|
27884
28146
|
}
|
|
27885
28147
|
),
|
|
27886
28148
|
/* @__PURE__ */ jsx249(
|
|
@@ -29220,7 +29482,7 @@ import {
|
|
|
29220
29482
|
GripVertical,
|
|
29221
29483
|
Plus as Plus4
|
|
29222
29484
|
} from "lucide-react";
|
|
29223
|
-
import
|
|
29485
|
+
import Image12 from "next/image";
|
|
29224
29486
|
import { jsx as jsx259, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
29225
29487
|
function MediaGalleryManager({
|
|
29226
29488
|
media,
|
|
@@ -29316,7 +29578,7 @@ function MediaGalleryManager({
|
|
|
29316
29578
|
preload: "metadata"
|
|
29317
29579
|
}
|
|
29318
29580
|
) : /* @__PURE__ */ jsx259(
|
|
29319
|
-
|
|
29581
|
+
Image12,
|
|
29320
29582
|
{
|
|
29321
29583
|
src: mediaItem.media_url,
|
|
29322
29584
|
alt: mediaItem.title || "Media",
|
|
@@ -29444,7 +29706,7 @@ function OSTypeBadgeGroup({
|
|
|
29444
29706
|
|
|
29445
29707
|
// src/components/features/parallax-image-showcase.tsx
|
|
29446
29708
|
import { useEffect as useEffect48, useState as useState64, useRef as useRef40 } from "react";
|
|
29447
|
-
import
|
|
29709
|
+
import Image13 from "next/image";
|
|
29448
29710
|
import { motion as motion2, useScroll, useTransform, useMotionValue, useSpring } from "framer-motion";
|
|
29449
29711
|
import { jsx as jsx262, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
29450
29712
|
var ParallaxImageShowcase = ({
|
|
@@ -29544,7 +29806,7 @@ var ParallaxImageShowcase = ({
|
|
|
29544
29806
|
rotate: rotateGrid
|
|
29545
29807
|
},
|
|
29546
29808
|
children: /* @__PURE__ */ jsx262(
|
|
29547
|
-
|
|
29809
|
+
Image13,
|
|
29548
29810
|
{
|
|
29549
29811
|
src: leftImage.src,
|
|
29550
29812
|
alt: leftImage.alt,
|
|
@@ -29566,7 +29828,7 @@ var ParallaxImageShowcase = ({
|
|
|
29566
29828
|
rotate: rotateGrid
|
|
29567
29829
|
},
|
|
29568
29830
|
children: /* @__PURE__ */ jsx262(
|
|
29569
|
-
|
|
29831
|
+
Image13,
|
|
29570
29832
|
{
|
|
29571
29833
|
src: centerImage.src,
|
|
29572
29834
|
alt: centerImage.alt,
|
|
@@ -29588,7 +29850,7 @@ var ParallaxImageShowcase = ({
|
|
|
29588
29850
|
rotate: rotateGrid
|
|
29589
29851
|
},
|
|
29590
29852
|
children: /* @__PURE__ */ jsx262(
|
|
29591
|
-
|
|
29853
|
+
Image13,
|
|
29592
29854
|
{
|
|
29593
29855
|
src: rightImage.src,
|
|
29594
29856
|
alt: rightImage.alt,
|
|
@@ -29621,7 +29883,7 @@ var ParallaxImageShowcase = ({
|
|
|
29621
29883
|
style: { x, y, rotate },
|
|
29622
29884
|
children: [
|
|
29623
29885
|
/* @__PURE__ */ jsx262(
|
|
29624
|
-
|
|
29886
|
+
Image13,
|
|
29625
29887
|
{
|
|
29626
29888
|
src: leftImage.src,
|
|
29627
29889
|
alt: leftImage.alt,
|
|
@@ -29641,7 +29903,7 @@ var ParallaxImageShowcase = ({
|
|
|
29641
29903
|
style: { x, y, rotate },
|
|
29642
29904
|
children: [
|
|
29643
29905
|
/* @__PURE__ */ jsx262(
|
|
29644
|
-
|
|
29906
|
+
Image13,
|
|
29645
29907
|
{
|
|
29646
29908
|
src: centerImage.src,
|
|
29647
29909
|
alt: centerImage.alt,
|
|
@@ -29675,7 +29937,7 @@ var ParallaxImageShowcase = ({
|
|
|
29675
29937
|
rotate
|
|
29676
29938
|
},
|
|
29677
29939
|
children: /* @__PURE__ */ jsx262(
|
|
29678
|
-
|
|
29940
|
+
Image13,
|
|
29679
29941
|
{
|
|
29680
29942
|
src: rightImage.src,
|
|
29681
29943
|
alt: rightImage.alt,
|
|
@@ -29696,7 +29958,7 @@ var ParallaxImageShowcase = ({
|
|
|
29696
29958
|
rotate
|
|
29697
29959
|
},
|
|
29698
29960
|
children: /* @__PURE__ */ jsx262(
|
|
29699
|
-
|
|
29961
|
+
Image13,
|
|
29700
29962
|
{
|
|
29701
29963
|
src: centerImage.src,
|
|
29702
29964
|
alt: centerImage.alt,
|
|
@@ -29717,7 +29979,7 @@ var ParallaxImageShowcase = ({
|
|
|
29717
29979
|
rotate
|
|
29718
29980
|
},
|
|
29719
29981
|
children: /* @__PURE__ */ jsx262(
|
|
29720
|
-
|
|
29982
|
+
Image13,
|
|
29721
29983
|
{
|
|
29722
29984
|
src: leftImage.src,
|
|
29723
29985
|
alt: leftImage.alt,
|
|
@@ -30124,7 +30386,7 @@ function PushButtonSelector({
|
|
|
30124
30386
|
// src/components/features/release-media-manager.tsx
|
|
30125
30387
|
import { useState as useState65, useRef as useRef41 } from "react";
|
|
30126
30388
|
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";
|
|
30127
|
-
import
|
|
30389
|
+
import Image14 from "next/image";
|
|
30128
30390
|
import { jsx as jsx267, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
30129
30391
|
function ReleaseMediaManager({
|
|
30130
30392
|
media,
|
|
@@ -30274,7 +30536,7 @@ function ReleaseMediaManager({
|
|
|
30274
30536
|
preload: "metadata"
|
|
30275
30537
|
}
|
|
30276
30538
|
) : /* @__PURE__ */ jsx267(
|
|
30277
|
-
|
|
30539
|
+
Image14,
|
|
30278
30540
|
{
|
|
30279
30541
|
src: item.media_url,
|
|
30280
30542
|
alt: item.title || "Media",
|
|
@@ -30395,8 +30657,8 @@ SelectButton.displayName = "SelectButton";
|
|
|
30395
30657
|
|
|
30396
30658
|
// src/components/features/seo-editor-preview.tsx
|
|
30397
30659
|
import { useState as useState66 } from "react";
|
|
30398
|
-
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as
|
|
30399
|
-
import
|
|
30660
|
+
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles4 } from "lucide-react";
|
|
30661
|
+
import Image15 from "next/image";
|
|
30400
30662
|
import { Fragment as Fragment42, jsx as jsx269, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
30401
30663
|
function SEOEditorPreview({
|
|
30402
30664
|
seoTitle,
|
|
@@ -30448,7 +30710,7 @@ function SEOEditorPreview({
|
|
|
30448
30710
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
|
|
30449
30711
|
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30450
30712
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30451
|
-
/* @__PURE__ */ jsx269(
|
|
30713
|
+
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30452
30714
|
"AI Generated"
|
|
30453
30715
|
] }),
|
|
30454
30716
|
/* @__PURE__ */ jsx269(
|
|
@@ -30479,7 +30741,7 @@ function SEOEditorPreview({
|
|
|
30479
30741
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
|
|
30480
30742
|
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30481
30743
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30482
|
-
/* @__PURE__ */ jsx269(
|
|
30744
|
+
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30483
30745
|
"AI Generated"
|
|
30484
30746
|
] }),
|
|
30485
30747
|
/* @__PURE__ */ jsx269(
|
|
@@ -30511,7 +30773,7 @@ function SEOEditorPreview({
|
|
|
30511
30773
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
|
|
30512
30774
|
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30513
30775
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30514
|
-
/* @__PURE__ */ jsx269(
|
|
30776
|
+
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30515
30777
|
"AI Generated"
|
|
30516
30778
|
] }),
|
|
30517
30779
|
/* @__PURE__ */ jsx269(
|
|
@@ -30543,7 +30805,7 @@ function SEOEditorPreview({
|
|
|
30543
30805
|
/* @__PURE__ */ jsxs221("div", { className: "flex-1 relative", children: [
|
|
30544
30806
|
displayImage && !imageError ? /* @__PURE__ */ jsxs221("div", { className: "relative group h-full min-h-[280px]", children: [
|
|
30545
30807
|
/* @__PURE__ */ jsx269(
|
|
30546
|
-
|
|
30808
|
+
Image15,
|
|
30547
30809
|
{
|
|
30548
30810
|
src: displayImage,
|
|
30549
30811
|
alt: "OG Image",
|
|
@@ -30611,7 +30873,7 @@ function SEOEditorPreview({
|
|
|
30611
30873
|
] }),
|
|
30612
30874
|
/* @__PURE__ */ jsxs221("div", { className: "bg-ods-bg border border-ods-border rounded-lg overflow-hidden max-w-[500px]", children: [
|
|
30613
30875
|
/* @__PURE__ */ jsx269("div", { className: "relative w-full h-[260px] bg-ods-bg-active", children: displayImage && !imageError ? /* @__PURE__ */ jsx269(
|
|
30614
|
-
|
|
30876
|
+
Image15,
|
|
30615
30877
|
{
|
|
30616
30878
|
src: displayImage,
|
|
30617
30879
|
alt: displayTitle,
|
|
@@ -31047,7 +31309,7 @@ function TagsSelector({
|
|
|
31047
31309
|
// src/components/features/video-source-selector.tsx
|
|
31048
31310
|
init_button2();
|
|
31049
31311
|
import { useState as useState68, useCallback as useCallback31 } from "react";
|
|
31050
|
-
import { Upload as Upload6, Sparkles as
|
|
31312
|
+
import { Upload as Upload6, Sparkles as Sparkles5, X as X13, Video as Video6 } from "lucide-react";
|
|
31051
31313
|
import { jsx as jsx274, jsxs as jsxs225 } from "react/jsx-runtime";
|
|
31052
31314
|
function VideoSourceSelector({
|
|
31053
31315
|
videoSourceType,
|
|
@@ -31157,7 +31419,7 @@ function VideoSourceSelector({
|
|
|
31157
31419
|
/* @__PURE__ */ jsxs225("div", { className: "flex items-center gap-2", children: [
|
|
31158
31420
|
/* @__PURE__ */ jsx274(Label, { children: uploadLabel }),
|
|
31159
31421
|
showAIBadge && isAIGenerated && /* @__PURE__ */ jsxs225(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31160
|
-
/* @__PURE__ */ jsx274(
|
|
31422
|
+
/* @__PURE__ */ jsx274(Sparkles5, { className: "h-3 w-3" }),
|
|
31161
31423
|
"AI Generated"
|
|
31162
31424
|
] })
|
|
31163
31425
|
] }),
|
|
@@ -31234,7 +31496,7 @@ function VideoSourceSelector({
|
|
|
31234
31496
|
}
|
|
31235
31497
|
|
|
31236
31498
|
// src/components/features/transcript-summary-editor.tsx
|
|
31237
|
-
import { Sparkles as
|
|
31499
|
+
import { Sparkles as Sparkles6 } from "lucide-react";
|
|
31238
31500
|
|
|
31239
31501
|
// src/components/features/ai-enrich/ConfidenceBadge.tsx
|
|
31240
31502
|
init_cn();
|
|
@@ -31315,7 +31577,7 @@ function TranscriptSummaryEditor({
|
|
|
31315
31577
|
/* @__PURE__ */ jsxs227("div", { className: "flex items-center gap-2", children: [
|
|
31316
31578
|
/* @__PURE__ */ jsx276(Label, { htmlFor: "video-summary", children: videoSummaryLabel }),
|
|
31317
31579
|
isAIGenerated && /* @__PURE__ */ jsxs227(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31318
|
-
/* @__PURE__ */ jsx276(
|
|
31580
|
+
/* @__PURE__ */ jsx276(Sparkles6, { className: "h-3 w-3" }),
|
|
31319
31581
|
"AI Generated"
|
|
31320
31582
|
] }),
|
|
31321
31583
|
videoSummaryConfidence !== void 0 && videoSummaryConfidence !== null && /* @__PURE__ */ jsx276(
|
|
@@ -31355,7 +31617,7 @@ function TranscriptSummaryEditor({
|
|
|
31355
31617
|
/* @__PURE__ */ jsxs227("div", { className: "flex items-center gap-2", children: [
|
|
31356
31618
|
/* @__PURE__ */ jsx276(Label, { htmlFor: "transcript", children: transcriptLabel }),
|
|
31357
31619
|
isAIGenerated && /* @__PURE__ */ jsxs227(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31358
|
-
/* @__PURE__ */ jsx276(
|
|
31620
|
+
/* @__PURE__ */ jsx276(Sparkles6, { className: "h-3 w-3" }),
|
|
31359
31621
|
"AI Generated"
|
|
31360
31622
|
] }),
|
|
31361
31623
|
transcriptConfidence !== void 0 && transcriptConfidence !== null && /* @__PURE__ */ jsx276(
|
|
@@ -31426,7 +31688,7 @@ function TranscriptSummaryEditor({
|
|
|
31426
31688
|
|
|
31427
31689
|
// src/components/features/highlight-video-section.tsx
|
|
31428
31690
|
import { useState as useState69 } from "react";
|
|
31429
|
-
import { Sparkles as
|
|
31691
|
+
import { Sparkles as Sparkles7, Upload as Upload7 } from "lucide-react";
|
|
31430
31692
|
init_button2();
|
|
31431
31693
|
|
|
31432
31694
|
// src/components/features/ai-enrich/AIEnrichSection.tsx
|
|
@@ -31790,7 +32052,7 @@ function HighlightVideoSection({
|
|
|
31790
32052
|
{
|
|
31791
32053
|
title: "Highlight Video",
|
|
31792
32054
|
description: `Generate a ${Math.floor(targetDurationSeconds / 60)}-minute summary video using Claude AI + Shotstack`,
|
|
31793
|
-
icon: /* @__PURE__ */ jsx280(
|
|
32055
|
+
icon: /* @__PURE__ */ jsx280(Sparkles7, { className: "h-5 w-5" }),
|
|
31794
32056
|
buttonLabel: hasExistingHighlight ? "Regenerate Highlight" : "Generate Highlight",
|
|
31795
32057
|
loadingLabel: "Generating highlight...",
|
|
31796
32058
|
onEnrich: onGenerateHighlight,
|
|
@@ -31810,7 +32072,7 @@ function HighlightVideoSection({
|
|
|
31810
32072
|
/* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-2", children: [
|
|
31811
32073
|
/* @__PURE__ */ jsx280(Label, { children: "Highlight Video" }),
|
|
31812
32074
|
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs230(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31813
|
-
/* @__PURE__ */ jsx280(
|
|
32075
|
+
/* @__PURE__ */ jsx280(Sparkles7, { className: "h-3 w-3" }),
|
|
31814
32076
|
"AI Generated"
|
|
31815
32077
|
] }),
|
|
31816
32078
|
highlightVideoDurationMs && /* @__PURE__ */ jsx280(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
@@ -31916,7 +32178,7 @@ function HighlightConfigSection({
|
|
|
31916
32178
|
}
|
|
31917
32179
|
|
|
31918
32180
|
// src/components/features/entity-summary-editor.tsx
|
|
31919
|
-
import { Sparkles as
|
|
32181
|
+
import { Sparkles as Sparkles8 } from "lucide-react";
|
|
31920
32182
|
import { jsx as jsx282, jsxs as jsxs232 } from "react/jsx-runtime";
|
|
31921
32183
|
function EntitySummaryEditor({
|
|
31922
32184
|
summary = "",
|
|
@@ -31935,7 +32197,7 @@ function EntitySummaryEditor({
|
|
|
31935
32197
|
/* @__PURE__ */ jsxs232("div", { className: "flex items-center gap-2", children: [
|
|
31936
32198
|
/* @__PURE__ */ jsx282(Label, { htmlFor: "entity-summary", children: label }),
|
|
31937
32199
|
isAIGenerated && /* @__PURE__ */ jsxs232(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31938
|
-
/* @__PURE__ */ jsx282(
|
|
32200
|
+
/* @__PURE__ */ jsx282(Sparkles8, { className: "h-3 w-3" }),
|
|
31939
32201
|
"AI Generated"
|
|
31940
32202
|
] }),
|
|
31941
32203
|
summaryConfidence !== void 0 && summaryConfidence !== null && /* @__PURE__ */ jsx282(
|
|
@@ -31973,7 +32235,7 @@ function EntitySummaryEditor({
|
|
|
31973
32235
|
}
|
|
31974
32236
|
|
|
31975
32237
|
// src/components/features/transcribe-summarize-section.tsx
|
|
31976
|
-
import { Sparkles as
|
|
32238
|
+
import { Sparkles as Sparkles9 } from "lucide-react";
|
|
31977
32239
|
|
|
31978
32240
|
// src/components/features/ai-enrich/AIStatusIndicator.tsx
|
|
31979
32241
|
init_cn();
|
|
@@ -32105,7 +32367,7 @@ function TranscribeSummarizeSection({
|
|
|
32105
32367
|
{
|
|
32106
32368
|
title,
|
|
32107
32369
|
description,
|
|
32108
|
-
icon: /* @__PURE__ */ jsx285(
|
|
32370
|
+
icon: /* @__PURE__ */ jsx285(Sparkles9, { className: "h-5 w-5" }),
|
|
32109
32371
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
32110
32372
|
loadingLabel,
|
|
32111
32373
|
onEnrich: onTranscribe,
|
|
@@ -32123,7 +32385,7 @@ function TranscribeSummarizeSection({
|
|
|
32123
32385
|
}
|
|
32124
32386
|
|
|
32125
32387
|
// src/components/features/video-clips-section.tsx
|
|
32126
|
-
import { Sparkles as
|
|
32388
|
+
import { Sparkles as Sparkles10 } from "lucide-react";
|
|
32127
32389
|
import { jsx as jsx286 } from "react/jsx-runtime";
|
|
32128
32390
|
function VideoClipsSection({
|
|
32129
32391
|
onExtractClips,
|
|
@@ -32148,7 +32410,7 @@ function VideoClipsSection({
|
|
|
32148
32410
|
{
|
|
32149
32411
|
title,
|
|
32150
32412
|
description,
|
|
32151
|
-
icon: /* @__PURE__ */ jsx286(
|
|
32413
|
+
icon: /* @__PURE__ */ jsx286(Sparkles10, { className: "h-5 w-5" }),
|
|
32152
32414
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
32153
32415
|
loadingLabel,
|
|
32154
32416
|
onEnrich: onExtractClips,
|
|
@@ -32166,7 +32428,7 @@ function VideoClipsSection({
|
|
|
32166
32428
|
}
|
|
32167
32429
|
|
|
32168
32430
|
// src/components/features/highlight-generation-section.tsx
|
|
32169
|
-
import { Sparkles as
|
|
32431
|
+
import { Sparkles as Sparkles11 } from "lucide-react";
|
|
32170
32432
|
import { jsx as jsx287 } from "react/jsx-runtime";
|
|
32171
32433
|
function HighlightGenerationSection({
|
|
32172
32434
|
onGenerateHighlight,
|
|
@@ -32193,7 +32455,7 @@ function HighlightGenerationSection({
|
|
|
32193
32455
|
{
|
|
32194
32456
|
title,
|
|
32195
32457
|
description: description || defaultDescription,
|
|
32196
|
-
icon: /* @__PURE__ */ jsx287(
|
|
32458
|
+
icon: /* @__PURE__ */ jsx287(Sparkles11, { className: "h-5 w-5" }),
|
|
32197
32459
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
32198
32460
|
loadingLabel,
|
|
32199
32461
|
onEnrich: onGenerateHighlight,
|
|
@@ -32211,7 +32473,7 @@ function HighlightGenerationSection({
|
|
|
32211
32473
|
}
|
|
32212
32474
|
|
|
32213
32475
|
// src/components/features/highlight-video-preview.tsx
|
|
32214
|
-
import { Upload as Upload8, Sparkles as
|
|
32476
|
+
import { Upload as Upload8, Sparkles as Sparkles12 } from "lucide-react";
|
|
32215
32477
|
init_button2();
|
|
32216
32478
|
import { jsx as jsx288, jsxs as jsxs235 } from "react/jsx-runtime";
|
|
32217
32479
|
function HighlightVideoPreview({
|
|
@@ -32249,7 +32511,7 @@ function HighlightVideoPreview({
|
|
|
32249
32511
|
/* @__PURE__ */ jsxs235("div", { className: "flex items-center gap-2", children: [
|
|
32250
32512
|
/* @__PURE__ */ jsx288(Label, { children: label }),
|
|
32251
32513
|
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs235(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32252
|
-
/* @__PURE__ */ jsx288(
|
|
32514
|
+
/* @__PURE__ */ jsx288(Sparkles12, { className: "h-3 w-3" }),
|
|
32253
32515
|
"AI Generated"
|
|
32254
32516
|
] }),
|
|
32255
32517
|
highlightVideoDurationMs && /* @__PURE__ */ jsx288(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
@@ -32278,7 +32540,7 @@ function HighlightVideoPreview({
|
|
|
32278
32540
|
}
|
|
32279
32541
|
|
|
32280
32542
|
// src/components/features/transcribe-and-summarize-combined-section.tsx
|
|
32281
|
-
import { Sparkles as
|
|
32543
|
+
import { Sparkles as Sparkles13 } from "lucide-react";
|
|
32282
32544
|
import { jsx as jsx289, jsxs as jsxs236 } from "react/jsx-runtime";
|
|
32283
32545
|
function TranscribeAndSummarizeCombinedSection({
|
|
32284
32546
|
// AIEnrichSection props
|
|
@@ -32325,7 +32587,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
32325
32587
|
{
|
|
32326
32588
|
title,
|
|
32327
32589
|
description,
|
|
32328
|
-
icon: /* @__PURE__ */ jsx289(
|
|
32590
|
+
icon: /* @__PURE__ */ jsx289(Sparkles13, { className: "h-5 w-5" }),
|
|
32329
32591
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
32330
32592
|
loadingLabel,
|
|
32331
32593
|
onEnrich: onTranscribe,
|
|
@@ -32366,7 +32628,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
32366
32628
|
}
|
|
32367
32629
|
|
|
32368
32630
|
// src/components/features/highlight-video-combined-section.tsx
|
|
32369
|
-
import { Sparkles as
|
|
32631
|
+
import { Sparkles as Sparkles14, Upload as Upload9 } from "lucide-react";
|
|
32370
32632
|
init_button2();
|
|
32371
32633
|
import { jsx as jsx290, jsxs as jsxs237 } from "react/jsx-runtime";
|
|
32372
32634
|
function HighlightVideoCombinedSection({
|
|
@@ -32442,7 +32704,7 @@ function HighlightVideoCombinedSection({
|
|
|
32442
32704
|
{
|
|
32443
32705
|
title,
|
|
32444
32706
|
description: description || defaultDescription,
|
|
32445
|
-
icon: /* @__PURE__ */ jsx290(
|
|
32707
|
+
icon: /* @__PURE__ */ jsx290(Sparkles14, { className: "h-5 w-5" }),
|
|
32446
32708
|
buttonLabel: buttonLabel || defaultButtonLabel,
|
|
32447
32709
|
loadingLabel,
|
|
32448
32710
|
onEnrich: onGenerateHighlight,
|
|
@@ -32462,7 +32724,7 @@ function HighlightVideoCombinedSection({
|
|
|
32462
32724
|
/* @__PURE__ */ jsxs237("div", { className: "flex items-center gap-2", children: [
|
|
32463
32725
|
/* @__PURE__ */ jsx290(Label, { children: previewLabel }),
|
|
32464
32726
|
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs237(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32465
|
-
/* @__PURE__ */ jsx290(
|
|
32727
|
+
/* @__PURE__ */ jsx290(Sparkles14, { className: "h-3 w-3" }),
|
|
32466
32728
|
"AI Generated"
|
|
32467
32729
|
] }),
|
|
32468
32730
|
highlightVideoDurationMs && /* @__PURE__ */ jsx290(Badge, { variant: "outline", className: "text-xs", children: formatDuration(highlightVideoDurationMs) })
|
|
@@ -34465,4 +34727,4 @@ export {
|
|
|
34465
34727
|
TMCG_SOCIAL_PLATFORMS,
|
|
34466
34728
|
assets
|
|
34467
34729
|
};
|
|
34468
|
-
//# sourceMappingURL=chunk-
|
|
34730
|
+
//# sourceMappingURL=chunk-ZOM75JOY.js.map
|