@flamingo-stack/openframe-frontend-core 0.0.200 → 0.0.201
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-V2FNIPZJ.cjs → chunk-3B43AHYE.cjs} +2 -2
- package/dist/{chunk-TMD44IKJ.js.map → chunk-3B43AHYE.cjs.map} +1 -1
- package/dist/{chunk-TMD44IKJ.js → chunk-55HF462A.js} +2 -2
- package/dist/chunk-55HF462A.js.map +1 -0
- package/dist/{chunk-ZOM75JOY.js → chunk-CSW5GYBU.js} +715 -765
- package/dist/chunk-CSW5GYBU.js.map +1 -0
- package/dist/{chunk-C3M6R6JH.cjs → chunk-UCY537V4.cjs} +477 -527
- package/dist/chunk-UCY537V4.cjs.map +1 -0
- package/dist/components/features/index.cjs +3 -5
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +0 -1
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +2 -4
- package/dist/components/index.cjs +3 -3
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/ui/entity-image.d.ts +9 -0
- package/dist/components/ui/entity-image.d.ts.map +1 -0
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +5 -3
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +4 -2
- package/dist/components/ui/organization-card.d.ts.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/src/components/features/index.ts +0 -1
- package/src/components/layout/title-block.tsx +6 -30
- package/src/components/ui/button/button.tsx +1 -1
- package/src/components/ui/checkbox-block.tsx +13 -13
- package/src/components/ui/entity-image.tsx +56 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/organization-card.tsx +4 -8
- package/src/stories/CheckboxBlock.stories.tsx +1 -3
- package/src/stories/OrganizationCard.stories.tsx +14 -0
- package/dist/chunk-C3M6R6JH.cjs.map +0 -1
- package/dist/chunk-V2FNIPZJ.cjs.map +0 -1
- package/dist/chunk-ZOM75JOY.js.map +0 -1
- package/dist/components/features/organization-icon.d.ts +0 -80
- package/dist/components/features/organization-icon.d.ts.map +0 -1
- package/src/components/features/organization-icon.tsx +0 -175
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
buttonVariants,
|
|
32
32
|
init_button,
|
|
33
33
|
init_button2
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-55HF462A.js";
|
|
35
35
|
import {
|
|
36
36
|
BashIcon,
|
|
37
37
|
CmdIcon,
|
|
@@ -1289,14 +1289,15 @@ var CheckboxBlock = React4.forwardRef(({ id, checked, defaultChecked, onCheckedC
|
|
|
1289
1289
|
{
|
|
1290
1290
|
htmlFor: id,
|
|
1291
1291
|
className: cn(
|
|
1292
|
-
"flex items-center gap-[var(--spacing-system-s)] rounded-
|
|
1292
|
+
"flex items-center gap-[var(--spacing-system-s)] rounded-md ring-1 ring-inset w-full",
|
|
1293
1293
|
"p-[var(--spacing-system-sf)]",
|
|
1294
|
-
!description && "h-
|
|
1295
|
-
"
|
|
1294
|
+
!description && "min-h-[44px] md:min-h-[48px]",
|
|
1295
|
+
description && "min-h-[60px] md:min-h-[64px]",
|
|
1296
|
+
"bg-ods-card ring-ods-border",
|
|
1296
1297
|
"cursor-pointer transition-colors duration-200",
|
|
1297
|
-
"hover:
|
|
1298
|
-
disabled && "opacity-50 cursor-not-allowed hover:
|
|
1299
|
-
error && "
|
|
1298
|
+
"hover:ring-ods-accent/30",
|
|
1299
|
+
disabled && "opacity-50 cursor-not-allowed hover:ring-ods-border",
|
|
1300
|
+
error && "ring-ods-error"
|
|
1300
1301
|
),
|
|
1301
1302
|
children: [
|
|
1302
1303
|
/* @__PURE__ */ jsx8(
|
|
@@ -1309,7 +1310,7 @@ var CheckboxBlock = React4.forwardRef(({ id, checked, defaultChecked, onCheckedC
|
|
|
1309
1310
|
onCheckedChange,
|
|
1310
1311
|
disabled,
|
|
1311
1312
|
className: cn(
|
|
1312
|
-
"h-6 w-6 shrink-0",
|
|
1313
|
+
"h-4 w-4 md:h-6 md:w-6 shrink-0",
|
|
1313
1314
|
"rounded-[6px] border-2",
|
|
1314
1315
|
error ? "border-ods-error" : "border-[var(--color-border-strong)]",
|
|
1315
1316
|
"bg-ods-card",
|
|
@@ -1321,20 +1322,19 @@ var CheckboxBlock = React4.forwardRef(({ id, checked, defaultChecked, onCheckedC
|
|
|
1321
1322
|
CheckboxPrimitive.Indicator,
|
|
1322
1323
|
{
|
|
1323
1324
|
className: "flex items-center justify-center text-ods-text-on-accent",
|
|
1324
|
-
children: /* @__PURE__ */ jsx8(CheckboxCheckmarkIcon, {
|
|
1325
|
+
children: /* @__PURE__ */ jsx8(CheckboxCheckmarkIcon, { className: "w-2 h-2 md:w-2.5 md:h-2.5" })
|
|
1325
1326
|
}
|
|
1326
1327
|
)
|
|
1327
1328
|
}
|
|
1328
1329
|
),
|
|
1329
1330
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-1 flex-col justify-center min-w-0", children: [
|
|
1330
1331
|
/* @__PURE__ */ jsx8("span", { className: cn(
|
|
1331
|
-
"text-h4",
|
|
1332
|
-
"text-ods-text-primary select-none"
|
|
1333
|
-
!description && "truncate"
|
|
1332
|
+
"text-h4 !leading-5 md:!leading-6",
|
|
1333
|
+
"text-ods-text-primary select-none break-words"
|
|
1334
1334
|
), children: label }),
|
|
1335
1335
|
description && /* @__PURE__ */ jsx8("span", { className: cn(
|
|
1336
|
-
"text-h6",
|
|
1337
|
-
"text-ods-text-secondary select-none"
|
|
1336
|
+
"text-h6 !leading-4",
|
|
1337
|
+
"text-ods-text-secondary select-none break-words"
|
|
1338
1338
|
), children: description })
|
|
1339
1339
|
] })
|
|
1340
1340
|
]
|
|
@@ -4044,7 +4044,7 @@ var getInitials = (name) => {
|
|
|
4044
4044
|
};
|
|
4045
4045
|
var SquareAvatar = React10.memo(React10.forwardRef(
|
|
4046
4046
|
({ className, src, alt, size = "md", fallback, variant = "square", ...props }, ref) => {
|
|
4047
|
-
const
|
|
4047
|
+
const sizeClasses4 = {
|
|
4048
4048
|
sm: "h-8 w-8",
|
|
4049
4049
|
md: "h-10 w-10",
|
|
4050
4050
|
lg: "h-12 w-12",
|
|
@@ -4065,7 +4065,7 @@ var SquareAvatar = React10.memo(React10.forwardRef(
|
|
|
4065
4065
|
{
|
|
4066
4066
|
className: cn(
|
|
4067
4067
|
"relative flex items-center justify-center shrink-0 overflow-hidden border border-ods-border bg-ods-bg",
|
|
4068
|
-
|
|
4068
|
+
sizeClasses4[size],
|
|
4069
4069
|
variantClasses[variant],
|
|
4070
4070
|
className
|
|
4071
4071
|
),
|
|
@@ -13078,7 +13078,7 @@ import { jsx as jsx90 } from "react/jsx-runtime";
|
|
|
13078
13078
|
var ChevronButton = React35.forwardRef(
|
|
13079
13079
|
({ className, direction = "down", size = "md", isExpanded, backgroundColor, borderColor, ...props }, ref) => {
|
|
13080
13080
|
const Icon2 = (isExpanded ? ChevronUp2 : ChevronDown3) || (direction === "up" ? ChevronUp2 : ChevronDown3);
|
|
13081
|
-
const
|
|
13081
|
+
const sizeClasses4 = {
|
|
13082
13082
|
sm: "h-4 w-4",
|
|
13083
13083
|
md: "h-5 w-5",
|
|
13084
13084
|
lg: "h-6 w-6"
|
|
@@ -13097,7 +13097,7 @@ var ChevronButton = React35.forwardRef(
|
|
|
13097
13097
|
},
|
|
13098
13098
|
ref,
|
|
13099
13099
|
...props,
|
|
13100
|
-
children: /* @__PURE__ */ jsx90(Icon2, { className:
|
|
13100
|
+
children: /* @__PURE__ */ jsx90(Icon2, { className: sizeClasses4[size] })
|
|
13101
13101
|
}
|
|
13102
13102
|
);
|
|
13103
13103
|
}
|
|
@@ -15261,7 +15261,7 @@ var MediaSkeleton = {
|
|
|
15261
15261
|
* Avatar/profile image skeleton
|
|
15262
15262
|
*/
|
|
15263
15263
|
Avatar: ({ size = "md", className, ...props }) => {
|
|
15264
|
-
const
|
|
15264
|
+
const sizeClasses4 = {
|
|
15265
15265
|
sm: "h-8 w-8",
|
|
15266
15266
|
md: "h-12 w-12",
|
|
15267
15267
|
lg: "h-16 w-16"
|
|
@@ -15270,7 +15270,7 @@ var MediaSkeleton = {
|
|
|
15270
15270
|
UnifiedSkeleton,
|
|
15271
15271
|
{
|
|
15272
15272
|
variant: "circular",
|
|
15273
|
-
className: cn(
|
|
15273
|
+
className: cn(sizeClasses4[size], className),
|
|
15274
15274
|
"aria-label": "Loading profile image",
|
|
15275
15275
|
...props
|
|
15276
15276
|
}
|
|
@@ -15292,7 +15292,7 @@ var MediaSkeleton = {
|
|
|
15292
15292
|
* Icon skeleton
|
|
15293
15293
|
*/
|
|
15294
15294
|
Icon: ({ size = "md", className, ...props }) => {
|
|
15295
|
-
const
|
|
15295
|
+
const sizeClasses4 = {
|
|
15296
15296
|
sm: "h-4 w-4",
|
|
15297
15297
|
md: "h-6 w-6",
|
|
15298
15298
|
lg: "h-8 w-8"
|
|
@@ -15301,7 +15301,7 @@ var MediaSkeleton = {
|
|
|
15301
15301
|
UnifiedSkeleton,
|
|
15302
15302
|
{
|
|
15303
15303
|
variant: "default",
|
|
15304
|
-
className: cn(
|
|
15304
|
+
className: cn(sizeClasses4[size], className),
|
|
15305
15305
|
"aria-label": "Loading icon",
|
|
15306
15306
|
...props
|
|
15307
15307
|
}
|
|
@@ -18529,7 +18529,7 @@ function renderAdvancedPageContainer({
|
|
|
18529
18529
|
md: "p-6",
|
|
18530
18530
|
lg: "p-8"
|
|
18531
18531
|
};
|
|
18532
|
-
const
|
|
18532
|
+
const backgroundClasses3 = {
|
|
18533
18533
|
default: "bg-ods-bg",
|
|
18534
18534
|
card: "bg-ods-card",
|
|
18535
18535
|
transparent: ""
|
|
@@ -18614,7 +18614,7 @@ function renderAdvancedPageContainer({
|
|
|
18614
18614
|
const getContainerClasses = () => {
|
|
18615
18615
|
const baseClasses = [
|
|
18616
18616
|
"flex flex-col w-full",
|
|
18617
|
-
|
|
18617
|
+
backgroundClasses3[background],
|
|
18618
18618
|
paddingClasses[padding]
|
|
18619
18619
|
];
|
|
18620
18620
|
switch (variant) {
|
|
@@ -21536,14 +21536,53 @@ init_cn();
|
|
|
21536
21536
|
|
|
21537
21537
|
// src/components/layout/title-block.tsx
|
|
21538
21538
|
init_cn();
|
|
21539
|
+
|
|
21540
|
+
// src/components/ui/entity-image.tsx
|
|
21541
|
+
init_cn();
|
|
21539
21542
|
import React70 from "react";
|
|
21540
|
-
import { jsx as jsx180
|
|
21543
|
+
import { jsx as jsx180 } from "react/jsx-runtime";
|
|
21541
21544
|
function getInitials3(name) {
|
|
21542
21545
|
if (!name) return "";
|
|
21543
21546
|
const words = name.trim().split(/\s+/);
|
|
21544
21547
|
if (words.length === 1) return words[0].charAt(0).toUpperCase();
|
|
21545
21548
|
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
21546
21549
|
}
|
|
21550
|
+
function EntityImage({ src, alt, fallbackText, className }) {
|
|
21551
|
+
const [imageFailed, setImageFailed] = React70.useState(false);
|
|
21552
|
+
React70.useEffect(() => {
|
|
21553
|
+
setImageFailed(false);
|
|
21554
|
+
}, [src]);
|
|
21555
|
+
const showFallback = imageFailed || !src;
|
|
21556
|
+
const initials = getInitials3(fallbackText ?? alt);
|
|
21557
|
+
if (showFallback) {
|
|
21558
|
+
return /* @__PURE__ */ jsx180(
|
|
21559
|
+
"div",
|
|
21560
|
+
{
|
|
21561
|
+
"aria-label": alt,
|
|
21562
|
+
className: cn(
|
|
21563
|
+
"size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border bg-ods-bg flex items-center justify-center text-ods-text-secondary text-h4 select-none",
|
|
21564
|
+
className
|
|
21565
|
+
),
|
|
21566
|
+
children: initials || "?"
|
|
21567
|
+
}
|
|
21568
|
+
);
|
|
21569
|
+
}
|
|
21570
|
+
return /* @__PURE__ */ jsx180(
|
|
21571
|
+
"img",
|
|
21572
|
+
{
|
|
21573
|
+
src: src ?? void 0,
|
|
21574
|
+
alt: alt ?? "",
|
|
21575
|
+
onError: () => setImageFailed(true),
|
|
21576
|
+
className: cn(
|
|
21577
|
+
"size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border object-cover",
|
|
21578
|
+
className
|
|
21579
|
+
)
|
|
21580
|
+
}
|
|
21581
|
+
);
|
|
21582
|
+
}
|
|
21583
|
+
|
|
21584
|
+
// src/components/layout/title-block.tsx
|
|
21585
|
+
import { jsx as jsx181, jsxs as jsxs146 } from "react/jsx-runtime";
|
|
21547
21586
|
function TitleBlock({
|
|
21548
21587
|
title,
|
|
21549
21588
|
subtitle,
|
|
@@ -21557,12 +21596,6 @@ function TitleBlock({
|
|
|
21557
21596
|
className
|
|
21558
21597
|
}) {
|
|
21559
21598
|
const hasActions = actions && actions.length > 0;
|
|
21560
|
-
const [imageFailed, setImageFailed] = React70.useState(false);
|
|
21561
|
-
React70.useEffect(() => {
|
|
21562
|
-
setImageFailed(false);
|
|
21563
|
-
}, [image?.src]);
|
|
21564
|
-
const showImageFallback = !!image && (imageFailed || !image.src);
|
|
21565
|
-
const initials = getInitials3(image?.alt || title);
|
|
21566
21599
|
return /* @__PURE__ */ jsxs146(
|
|
21567
21600
|
"div",
|
|
21568
21601
|
{
|
|
@@ -21581,7 +21614,7 @@ function TitleBlock({
|
|
|
21581
21614
|
),
|
|
21582
21615
|
children: [
|
|
21583
21616
|
/* @__PURE__ */ jsxs146("div", { className: "flex flex-col gap-[var(--spacing-system-xs)] flex-1 min-w-0", children: [
|
|
21584
|
-
backButton && /* @__PURE__ */
|
|
21617
|
+
backButton && /* @__PURE__ */ jsx181(
|
|
21585
21618
|
BackButton,
|
|
21586
21619
|
{
|
|
21587
21620
|
onClick: backButton.onClick,
|
|
@@ -21590,29 +21623,21 @@ function TitleBlock({
|
|
|
21590
21623
|
}
|
|
21591
21624
|
),
|
|
21592
21625
|
image || subtitle ? /* @__PURE__ */ jsxs146("div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
|
|
21593
|
-
image &&
|
|
21594
|
-
|
|
21595
|
-
{
|
|
21596
|
-
"aria-label": image.alt,
|
|
21597
|
-
className: "size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border bg-ods-bg flex items-center justify-center text-ods-text-secondary text-h4 select-none",
|
|
21598
|
-
children: initials || "?"
|
|
21599
|
-
}
|
|
21600
|
-
) : /* @__PURE__ */ jsx180(
|
|
21601
|
-
"img",
|
|
21626
|
+
image && /* @__PURE__ */ jsx181(
|
|
21627
|
+
EntityImage,
|
|
21602
21628
|
{
|
|
21603
21629
|
src: image.src,
|
|
21604
|
-
alt: image.alt
|
|
21605
|
-
|
|
21606
|
-
className: "size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border object-cover"
|
|
21630
|
+
alt: image.alt,
|
|
21631
|
+
fallbackText: image.alt || title
|
|
21607
21632
|
}
|
|
21608
|
-
)
|
|
21633
|
+
),
|
|
21609
21634
|
/* @__PURE__ */ jsxs146("div", { className: "flex flex-col justify-center min-w-0 flex-1", children: [
|
|
21610
|
-
title && /* @__PURE__ */
|
|
21611
|
-
subtitle && /* @__PURE__ */
|
|
21635
|
+
title && /* @__PURE__ */ jsx181("h1", { className: "text-h2 text-ods-text-primary truncate", children: title }),
|
|
21636
|
+
subtitle && /* @__PURE__ */ jsx181("p", { className: "text-h6 text-ods-text-secondary truncate", children: subtitle })
|
|
21612
21637
|
] })
|
|
21613
|
-
] }) : title && /* @__PURE__ */
|
|
21638
|
+
] }) : title && /* @__PURE__ */ jsx181("h1", { className: "text-h2 text-ods-text-primary", children: title })
|
|
21614
21639
|
] }),
|
|
21615
|
-
(hasActions || selector) && /* @__PURE__ */
|
|
21640
|
+
(hasActions || selector) && /* @__PURE__ */ jsx181("div", { className: "flex gap-2 items-center shrink-0", children: /* @__PURE__ */ jsx181(
|
|
21616
21641
|
PageActions,
|
|
21617
21642
|
{
|
|
21618
21643
|
variant: actionsVariant,
|
|
@@ -21627,7 +21652,7 @@ function TitleBlock({
|
|
|
21627
21652
|
}
|
|
21628
21653
|
|
|
21629
21654
|
// src/components/layout/page-layout.tsx
|
|
21630
|
-
import { jsx as
|
|
21655
|
+
import { jsx as jsx182, jsxs as jsxs147 } from "react/jsx-runtime";
|
|
21631
21656
|
function PageLayout({
|
|
21632
21657
|
children,
|
|
21633
21658
|
title,
|
|
@@ -21647,7 +21672,7 @@ function PageLayout({
|
|
|
21647
21672
|
const needsBottomPadding = hasActions && actionsVariant === "primary-buttons";
|
|
21648
21673
|
const hasHeader = showHeader && (title || subtitle || image || backButton || hasActions || selector);
|
|
21649
21674
|
return /* @__PURE__ */ jsxs147("div", { className: cn("flex flex-col w-full", className), children: [
|
|
21650
|
-
hasHeader && /* @__PURE__ */
|
|
21675
|
+
hasHeader && /* @__PURE__ */ jsx182(
|
|
21651
21676
|
TitleBlock,
|
|
21652
21677
|
{
|
|
21653
21678
|
title,
|
|
@@ -21661,7 +21686,7 @@ function PageLayout({
|
|
|
21661
21686
|
variant: headerVariant
|
|
21662
21687
|
}
|
|
21663
21688
|
),
|
|
21664
|
-
/* @__PURE__ */
|
|
21689
|
+
/* @__PURE__ */ jsx182("div", { className: cn("flex flex-col flex-1 gap-[var(--spacing-system-l)]", needsBottomPadding && "pb-28 md:pb-0", contentClassName), children })
|
|
21665
21690
|
] });
|
|
21666
21691
|
}
|
|
21667
21692
|
|
|
@@ -21675,7 +21700,7 @@ init_cn();
|
|
|
21675
21700
|
import * as React71 from "react";
|
|
21676
21701
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
21677
21702
|
import { cva as cva9 } from "class-variance-authority";
|
|
21678
|
-
import { jsx as
|
|
21703
|
+
import { jsx as jsx183 } from "react/jsx-runtime";
|
|
21679
21704
|
var toggleVariants = cva9(
|
|
21680
21705
|
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-ods-accent data-[state=on]:text-ods-text-on-accent",
|
|
21681
21706
|
{
|
|
@@ -21696,7 +21721,7 @@ var toggleVariants = cva9(
|
|
|
21696
21721
|
}
|
|
21697
21722
|
}
|
|
21698
21723
|
);
|
|
21699
|
-
var Toggle = React71.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */
|
|
21724
|
+
var Toggle = React71.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx183(
|
|
21700
21725
|
TogglePrimitive.Root,
|
|
21701
21726
|
{
|
|
21702
21727
|
ref,
|
|
@@ -21707,24 +21732,24 @@ var Toggle = React71.forwardRef(({ className, variant, size, ...props }, ref) =>
|
|
|
21707
21732
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
21708
21733
|
|
|
21709
21734
|
// src/components/toggle-group.tsx
|
|
21710
|
-
import { jsx as
|
|
21735
|
+
import { jsx as jsx184 } from "react/jsx-runtime";
|
|
21711
21736
|
var ToggleGroupContext = React72.createContext({
|
|
21712
21737
|
size: "default",
|
|
21713
21738
|
variant: "default"
|
|
21714
21739
|
});
|
|
21715
|
-
var ToggleGroup = React72.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */
|
|
21740
|
+
var ToggleGroup = React72.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx184(
|
|
21716
21741
|
ToggleGroupPrimitive.Root,
|
|
21717
21742
|
{
|
|
21718
21743
|
ref,
|
|
21719
21744
|
className: cn("flex items-center justify-center gap-1", className),
|
|
21720
21745
|
...props,
|
|
21721
|
-
children: /* @__PURE__ */
|
|
21746
|
+
children: /* @__PURE__ */ jsx184(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
21722
21747
|
}
|
|
21723
21748
|
));
|
|
21724
21749
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
21725
21750
|
var ToggleGroupItem = React72.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
|
|
21726
21751
|
const context = React72.useContext(ToggleGroupContext);
|
|
21727
|
-
return /* @__PURE__ */
|
|
21752
|
+
return /* @__PURE__ */ jsx184(
|
|
21728
21753
|
ToggleGroupPrimitive.Item,
|
|
21729
21754
|
{
|
|
21730
21755
|
ref,
|
|
@@ -21745,7 +21770,7 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
|
21745
21770
|
|
|
21746
21771
|
// src/components/ui/benefit-card.tsx
|
|
21747
21772
|
import React73 from "react";
|
|
21748
|
-
import { jsx as
|
|
21773
|
+
import { jsx as jsx185, jsxs as jsxs148 } from "react/jsx-runtime";
|
|
21749
21774
|
var BenefitCard = ({
|
|
21750
21775
|
icon,
|
|
21751
21776
|
title,
|
|
@@ -21780,12 +21805,12 @@ var BenefitCard = ({
|
|
|
21780
21805
|
styles.container,
|
|
21781
21806
|
className
|
|
21782
21807
|
), children: [
|
|
21783
|
-
icon && /* @__PURE__ */
|
|
21808
|
+
icon && /* @__PURE__ */ jsx185("div", { children: icon }),
|
|
21784
21809
|
/* @__PURE__ */ jsxs148("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
21785
|
-
/* @__PURE__ */
|
|
21810
|
+
/* @__PURE__ */ jsx185("h3", { className: cn(
|
|
21786
21811
|
styles.title
|
|
21787
21812
|
), children: title }),
|
|
21788
|
-
/* @__PURE__ */
|
|
21813
|
+
/* @__PURE__ */ jsx185("p", { className: cn(
|
|
21789
21814
|
styles.description
|
|
21790
21815
|
), children: description })
|
|
21791
21816
|
] })
|
|
@@ -21798,7 +21823,7 @@ var BenefitCardGrid = ({
|
|
|
21798
21823
|
}) => {
|
|
21799
21824
|
const childrenArray = React73.Children.toArray(children);
|
|
21800
21825
|
const gridClass = columns === 4 ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4" : columns === 3 ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3" : "flex flex-col md:flex-row";
|
|
21801
|
-
return /* @__PURE__ */
|
|
21826
|
+
return /* @__PURE__ */ jsx185("div", { className: cn(
|
|
21802
21827
|
"bg-ods-card rounded-lg shadow-ods-card border border-ods-border overflow-hidden",
|
|
21803
21828
|
gridClass,
|
|
21804
21829
|
className
|
|
@@ -21828,7 +21853,7 @@ var BenefitCardGrid = ({
|
|
|
21828
21853
|
init_button2();
|
|
21829
21854
|
import React74 from "react";
|
|
21830
21855
|
import { ExternalLink as ExternalLink2 } from "lucide-react";
|
|
21831
|
-
import { jsx as
|
|
21856
|
+
import { jsx as jsx186, jsxs as jsxs149 } from "react/jsx-runtime";
|
|
21832
21857
|
function BrandAssociationCard({
|
|
21833
21858
|
item,
|
|
21834
21859
|
className = ""
|
|
@@ -21838,19 +21863,19 @@ function BrandAssociationCard({
|
|
|
21838
21863
|
return item.icon;
|
|
21839
21864
|
}
|
|
21840
21865
|
const IconComponent = item.icon;
|
|
21841
|
-
return /* @__PURE__ */
|
|
21866
|
+
return /* @__PURE__ */ jsx186(IconComponent, { size: 120, color: "currentColor", className: "w-20 h-20" });
|
|
21842
21867
|
};
|
|
21843
|
-
return /* @__PURE__ */
|
|
21844
|
-
/* @__PURE__ */
|
|
21845
|
-
/* @__PURE__ */
|
|
21846
|
-
/* @__PURE__ */
|
|
21868
|
+
return /* @__PURE__ */ jsx186("div", { className: `bg-ods-bg p-10 relative ${className}`, children: /* @__PURE__ */ jsxs149("div", { className: "space-y-6", children: [
|
|
21869
|
+
/* @__PURE__ */ jsx186("div", { className: "w-20 h-20 flex items-center justify-center", children: renderIcon() }),
|
|
21870
|
+
/* @__PURE__ */ jsx186("h3", { className: "text-h2 tracking-[-0.64px] text-ods-text-primary", children: item.title }),
|
|
21871
|
+
/* @__PURE__ */ jsx186("p", { className: "font-['DM_Sans'] font-normal text-[16px] leading-[1.5] text-ods-text-secondary", children: item.description }),
|
|
21847
21872
|
/* @__PURE__ */ jsxs149(
|
|
21848
21873
|
Button,
|
|
21849
21874
|
{
|
|
21850
21875
|
variant: "outline",
|
|
21851
21876
|
href: item.link,
|
|
21852
21877
|
openInNewTab: true,
|
|
21853
|
-
rightIcon: /* @__PURE__ */
|
|
21878
|
+
rightIcon: /* @__PURE__ */ jsx186(ExternalLink2, { className: "h-4 w-4" }),
|
|
21854
21879
|
children: [
|
|
21855
21880
|
"Browse ",
|
|
21856
21881
|
item.buttonText
|
|
@@ -21861,7 +21886,7 @@ function BrandAssociationCard({
|
|
|
21861
21886
|
}
|
|
21862
21887
|
|
|
21863
21888
|
// src/components/ui/brand-association-grid.tsx
|
|
21864
|
-
import { jsx as
|
|
21889
|
+
import { jsx as jsx187 } from "react/jsx-runtime";
|
|
21865
21890
|
function BrandAssociationGrid({
|
|
21866
21891
|
items,
|
|
21867
21892
|
columns = 2,
|
|
@@ -21887,15 +21912,15 @@ function BrandAssociationGrid({
|
|
|
21887
21912
|
}
|
|
21888
21913
|
return classes;
|
|
21889
21914
|
};
|
|
21890
|
-
return /* @__PURE__ */
|
|
21915
|
+
return /* @__PURE__ */ jsx187("div", { className: `${cardClassName} ${className}`, children: Array.from({ length: rows }, (_, rowIndex) => {
|
|
21891
21916
|
const startIndex = rowIndex * itemsPerRow;
|
|
21892
21917
|
const rowItems = items.slice(startIndex, startIndex + itemsPerRow);
|
|
21893
21918
|
const isLastRow = rowIndex === rows - 1;
|
|
21894
|
-
return /* @__PURE__ */
|
|
21919
|
+
return /* @__PURE__ */ jsx187("div", { className: `grid ${gridCols}`, children: rowItems.map((item, itemIndex) => {
|
|
21895
21920
|
const globalIndex = startIndex + itemIndex;
|
|
21896
21921
|
const isLastInRow = itemIndex === rowItems.length - 1;
|
|
21897
21922
|
const borderClasses = getBorderClasses(isLastRow, isLastInRow, globalIndex);
|
|
21898
|
-
return /* @__PURE__ */
|
|
21923
|
+
return /* @__PURE__ */ jsx187(
|
|
21899
21924
|
BrandAssociationCard,
|
|
21900
21925
|
{
|
|
21901
21926
|
item,
|
|
@@ -21908,7 +21933,7 @@ function BrandAssociationGrid({
|
|
|
21908
21933
|
}
|
|
21909
21934
|
|
|
21910
21935
|
// src/components/ui/bullet-list.tsx
|
|
21911
|
-
import { jsx as
|
|
21936
|
+
import { jsx as jsx188, jsxs as jsxs150 } from "react/jsx-runtime";
|
|
21912
21937
|
var spacingMap = {
|
|
21913
21938
|
sm: "space-y-2",
|
|
21914
21939
|
md: "space-y-3",
|
|
@@ -21927,15 +21952,15 @@ function BulletList({
|
|
|
21927
21952
|
const normalizedItems = items.map(
|
|
21928
21953
|
(item) => typeof item === "string" ? { text: item, id: void 0 } : item
|
|
21929
21954
|
);
|
|
21930
|
-
return /* @__PURE__ */
|
|
21931
|
-
/* @__PURE__ */
|
|
21932
|
-
/* @__PURE__ */
|
|
21955
|
+
return /* @__PURE__ */ jsx188("div", { className: `${spacingMap[spacing]} ${containerClassName}`, children: normalizedItems.map((item, index) => /* @__PURE__ */ jsxs150("div", { className: itemClassName, children: [
|
|
21956
|
+
/* @__PURE__ */ jsx188("div", { className: "flex-shrink-0 mt-1", children: /* @__PURE__ */ jsx188(BulletIcon, { size: bulletSize, color: bulletColor }) }),
|
|
21957
|
+
/* @__PURE__ */ jsx188("p", { className: textClassName, children: item.text })
|
|
21933
21958
|
] }, item.id || index)) });
|
|
21934
21959
|
}
|
|
21935
21960
|
|
|
21936
21961
|
// src/components/ui/circular-progress.tsx
|
|
21937
21962
|
init_cn();
|
|
21938
|
-
import { jsx as
|
|
21963
|
+
import { jsx as jsx189, jsxs as jsxs151 } from "react/jsx-runtime";
|
|
21939
21964
|
var SUBTLE_TRACK = "rgba(255, 255, 255, 0.06)";
|
|
21940
21965
|
var variantColors = {
|
|
21941
21966
|
success: {
|
|
@@ -21991,7 +22016,7 @@ function CircularProgress({
|
|
|
21991
22016
|
height: size,
|
|
21992
22017
|
className: "transform -rotate-90",
|
|
21993
22018
|
children: [
|
|
21994
|
-
/* @__PURE__ */
|
|
22019
|
+
/* @__PURE__ */ jsx189(
|
|
21995
22020
|
"circle",
|
|
21996
22021
|
{
|
|
21997
22022
|
cx: size / 2,
|
|
@@ -22002,7 +22027,7 @@ function CircularProgress({
|
|
|
22002
22027
|
fill: "none"
|
|
22003
22028
|
}
|
|
22004
22029
|
),
|
|
22005
|
-
/* @__PURE__ */
|
|
22030
|
+
/* @__PURE__ */ jsx189(
|
|
22006
22031
|
"circle",
|
|
22007
22032
|
{
|
|
22008
22033
|
cx: size / 2,
|
|
@@ -22020,7 +22045,7 @@ function CircularProgress({
|
|
|
22020
22045
|
]
|
|
22021
22046
|
}
|
|
22022
22047
|
),
|
|
22023
|
-
showLabel && /* @__PURE__ */
|
|
22048
|
+
showLabel && /* @__PURE__ */ jsx189("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs151("span", { className: "font-medium text-ods-text-primary", style: { fontSize: size <= 40 ? 10 : 12 }, children: [
|
|
22024
22049
|
Math.round(labelPercentage),
|
|
22025
22050
|
labelFormat === "percent" ? "%" : ""
|
|
22026
22051
|
] }) })
|
|
@@ -22048,7 +22073,7 @@ import {
|
|
|
22048
22073
|
safePolygon,
|
|
22049
22074
|
arrow
|
|
22050
22075
|
} from "@floating-ui/react";
|
|
22051
|
-
import { Fragment as Fragment27, jsx as
|
|
22076
|
+
import { Fragment as Fragment27, jsx as jsx190, jsxs as jsxs152 } from "react/jsx-runtime";
|
|
22052
22077
|
function parseColoredText(text) {
|
|
22053
22078
|
if (typeof text !== "string") return text;
|
|
22054
22079
|
const parts = [];
|
|
@@ -22059,21 +22084,21 @@ function parseColoredText(text) {
|
|
|
22059
22084
|
while ((match = colorRegex.exec(text)) !== null) {
|
|
22060
22085
|
if (match.index > lastIndex) {
|
|
22061
22086
|
const beforeText = text.slice(lastIndex, match.index);
|
|
22062
|
-
parts.push(/* @__PURE__ */
|
|
22087
|
+
parts.push(/* @__PURE__ */ jsx190("span", { children: beforeText }, `text-${keyIndex++}`));
|
|
22063
22088
|
}
|
|
22064
22089
|
const color = match[1].toLowerCase();
|
|
22065
22090
|
const coloredText = match[2];
|
|
22066
22091
|
const colorClass = color === "yellow" ? "text-ods-accent" : color === "green" ? "text-ods-success" : color === "red" ? "text-ods-error" : color === "blue" ? "text-ods-info" : color === "pink" ? "text-ods-accent" : color === "cyan" ? "text-ods-info" : "text-ods-accent";
|
|
22067
22092
|
parts.push(
|
|
22068
|
-
/* @__PURE__ */
|
|
22093
|
+
/* @__PURE__ */ jsx190("span", { className: cn("font-semibold", colorClass), children: coloredText }, `color-${keyIndex++}`)
|
|
22069
22094
|
);
|
|
22070
22095
|
lastIndex = match.index + match[0].length;
|
|
22071
22096
|
}
|
|
22072
22097
|
if (lastIndex < text.length) {
|
|
22073
22098
|
const remainingText = text.slice(lastIndex);
|
|
22074
|
-
parts.push(/* @__PURE__ */
|
|
22099
|
+
parts.push(/* @__PURE__ */ jsx190("span", { children: remainingText }, `text-${keyIndex++}`));
|
|
22075
22100
|
}
|
|
22076
|
-
return parts.length > 0 ? /* @__PURE__ */
|
|
22101
|
+
return parts.length > 0 ? /* @__PURE__ */ jsx190(Fragment27, { children: parts }) : text;
|
|
22077
22102
|
}
|
|
22078
22103
|
function FloatingTooltip({
|
|
22079
22104
|
content,
|
|
@@ -22126,8 +22151,8 @@ function FloatingTooltip({
|
|
|
22126
22151
|
left: "right"
|
|
22127
22152
|
}[placement.split("-")[0]];
|
|
22128
22153
|
return /* @__PURE__ */ jsxs152(Fragment27, { children: [
|
|
22129
|
-
/* @__PURE__ */
|
|
22130
|
-
/* @__PURE__ */
|
|
22154
|
+
/* @__PURE__ */ jsx190("div", { ref: refs.setReference, ...getReferenceProps(), children }),
|
|
22155
|
+
/* @__PURE__ */ jsx190(FloatingPortal, { children: isOpen && /* @__PURE__ */ jsxs152(
|
|
22131
22156
|
"div",
|
|
22132
22157
|
{
|
|
22133
22158
|
ref: refs.setFloating,
|
|
@@ -22148,7 +22173,7 @@ function FloatingTooltip({
|
|
|
22148
22173
|
),
|
|
22149
22174
|
children: [
|
|
22150
22175
|
parsedContent,
|
|
22151
|
-
/* @__PURE__ */
|
|
22176
|
+
/* @__PURE__ */ jsx190(
|
|
22152
22177
|
"div",
|
|
22153
22178
|
{
|
|
22154
22179
|
ref: arrowRef,
|
|
@@ -22176,7 +22201,7 @@ function FloatingTooltip({
|
|
|
22176
22201
|
}
|
|
22177
22202
|
|
|
22178
22203
|
// src/components/ui/dashboard-info-card.tsx
|
|
22179
|
-
import { Fragment as Fragment28, jsx as
|
|
22204
|
+
import { Fragment as Fragment28, jsx as jsx191, jsxs as jsxs153 } from "react/jsx-runtime";
|
|
22180
22205
|
function DashboardInfoCard({
|
|
22181
22206
|
title,
|
|
22182
22207
|
value,
|
|
@@ -22192,18 +22217,18 @@ function DashboardInfoCard({
|
|
|
22192
22217
|
const formattedValue = typeof value === "number" ? value.toLocaleString() : value;
|
|
22193
22218
|
const cardContent = /* @__PURE__ */ jsxs153(Fragment28, { children: [
|
|
22194
22219
|
/* @__PURE__ */ jsxs153("div", { className: "flex-1 flex flex-col", children: [
|
|
22195
|
-
/* @__PURE__ */
|
|
22220
|
+
/* @__PURE__ */ jsx191("p", { className: "text-h5 text-ods-text-secondary", children: title }),
|
|
22196
22221
|
/* @__PURE__ */ jsxs153("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
22197
|
-
/* @__PURE__ */
|
|
22198
|
-
percentage !== void 0 && (progressVariant === "warning" || progressVariant === "error" ? /* @__PURE__ */
|
|
22222
|
+
/* @__PURE__ */ jsx191("p", { className: cn("text-h2 text-ods-text-primary", valueClassName), children: formattedValue }),
|
|
22223
|
+
percentage !== void 0 && (progressVariant === "warning" || progressVariant === "error" ? /* @__PURE__ */ jsx191(Tag, { variant: progressVariant, label: `${percentage}%` }) : /* @__PURE__ */ jsxs153("p", { className: "text-h4 text-ods-text-secondary", children: [
|
|
22199
22224
|
"(",
|
|
22200
22225
|
percentage,
|
|
22201
22226
|
"%)"
|
|
22202
22227
|
] })),
|
|
22203
|
-
tooltip && /* @__PURE__ */
|
|
22228
|
+
tooltip && /* @__PURE__ */ jsx191(FloatingTooltip, { content: tooltip, side: "top", children: /* @__PURE__ */ jsx191("span", { className: "cursor-help text-ods-text-secondary", children: /* @__PURE__ */ jsx191(QuestionCircleIcon, { size: 20 }) }) })
|
|
22204
22229
|
] })
|
|
22205
22230
|
] }),
|
|
22206
|
-
showProgress && percentage !== void 0 && /* @__PURE__ */
|
|
22231
|
+
showProgress && percentage !== void 0 && /* @__PURE__ */ jsx191(
|
|
22207
22232
|
CircularProgress,
|
|
22208
22233
|
{
|
|
22209
22234
|
percentage,
|
|
@@ -22215,7 +22240,7 @@ function DashboardInfoCard({
|
|
|
22215
22240
|
] });
|
|
22216
22241
|
const baseClassName = "bg-ods-card border border-ods-border rounded-sm p-[var(--spacing-system-m)] flex gap-[var(--spacing-system-s)] items-center transition-all";
|
|
22217
22242
|
if (href) {
|
|
22218
|
-
return /* @__PURE__ */
|
|
22243
|
+
return /* @__PURE__ */ jsx191(
|
|
22219
22244
|
Link6,
|
|
22220
22245
|
{
|
|
22221
22246
|
href,
|
|
@@ -22230,7 +22255,7 @@ function DashboardInfoCard({
|
|
|
22230
22255
|
}
|
|
22231
22256
|
);
|
|
22232
22257
|
}
|
|
22233
|
-
return /* @__PURE__ */
|
|
22258
|
+
return /* @__PURE__ */ jsx191(
|
|
22234
22259
|
"div",
|
|
22235
22260
|
{
|
|
22236
22261
|
className: cn(
|
|
@@ -22247,7 +22272,7 @@ init_cn();
|
|
|
22247
22272
|
|
|
22248
22273
|
// src/components/features/os-type-badge.tsx
|
|
22249
22274
|
init_cn();
|
|
22250
|
-
import { jsx as
|
|
22275
|
+
import { jsx as jsx192, jsxs as jsxs154 } from "react/jsx-runtime";
|
|
22251
22276
|
var OSTypeBadge = ({
|
|
22252
22277
|
osType,
|
|
22253
22278
|
className = "",
|
|
@@ -22258,20 +22283,20 @@ var OSTypeBadge = ({
|
|
|
22258
22283
|
rightIcon = null
|
|
22259
22284
|
}) => {
|
|
22260
22285
|
if (!osType) {
|
|
22261
|
-
return labelOnly ? /* @__PURE__ */
|
|
22286
|
+
return labelOnly ? /* @__PURE__ */ jsx192("span", { className: cn("text-ods-text-secondary", className), children: "Unknown" }) : null;
|
|
22262
22287
|
}
|
|
22263
22288
|
const normalized = normalizeOSType(osType);
|
|
22264
22289
|
if (!normalized && !labelOnly) return null;
|
|
22265
22290
|
const label = getOSLabel(osType);
|
|
22266
22291
|
const IconComponent = getOSIcon(osType);
|
|
22267
22292
|
if (iconOnly && IconComponent) {
|
|
22268
|
-
return /* @__PURE__ */
|
|
22293
|
+
return /* @__PURE__ */ jsx192(IconComponent, { className: cn(iconSize, "text-ods-text-secondary", className) });
|
|
22269
22294
|
}
|
|
22270
22295
|
if (labelOnly) {
|
|
22271
|
-
return /* @__PURE__ */
|
|
22296
|
+
return /* @__PURE__ */ jsx192("span", { className: cn("text-ods-text-primary", className), children: label });
|
|
22272
22297
|
}
|
|
22273
22298
|
return /* @__PURE__ */ jsxs154("div", { className: cn("flex items-center gap-1 text-ods-text-primary text-[14px] leading-[20px] md:text-[18px] md:leading-[24px]", className), children: [
|
|
22274
|
-
IconComponent && /* @__PURE__ */
|
|
22299
|
+
IconComponent && /* @__PURE__ */ jsx192(IconComponent, { className: iconSize, color: iconColor }),
|
|
22275
22300
|
label,
|
|
22276
22301
|
rightIcon && rightIcon
|
|
22277
22302
|
] });
|
|
@@ -22282,7 +22307,7 @@ var OSTypeIcon = ({
|
|
|
22282
22307
|
size = "w-4 h-4",
|
|
22283
22308
|
className = ""
|
|
22284
22309
|
}) => {
|
|
22285
|
-
return /* @__PURE__ */
|
|
22310
|
+
return /* @__PURE__ */ jsx192(
|
|
22286
22311
|
OSTypeBadge,
|
|
22287
22312
|
{
|
|
22288
22313
|
osType,
|
|
@@ -22297,7 +22322,7 @@ var OSTypeLabel = ({
|
|
|
22297
22322
|
osType,
|
|
22298
22323
|
className = ""
|
|
22299
22324
|
}) => {
|
|
22300
|
-
return /* @__PURE__ */
|
|
22325
|
+
return /* @__PURE__ */ jsx192(
|
|
22301
22326
|
OSTypeBadge,
|
|
22302
22327
|
{
|
|
22303
22328
|
osType,
|
|
@@ -22309,7 +22334,7 @@ var OSTypeLabel = ({
|
|
|
22309
22334
|
OSTypeLabel.displayName = "OSTypeLabel";
|
|
22310
22335
|
|
|
22311
22336
|
// src/components/ui/device-card.tsx
|
|
22312
|
-
import { jsx as
|
|
22337
|
+
import { jsx as jsx193, jsxs as jsxs155 } from "react/jsx-runtime";
|
|
22313
22338
|
function DeviceCard({
|
|
22314
22339
|
device,
|
|
22315
22340
|
actions = {
|
|
@@ -22343,10 +22368,10 @@ function DeviceCard({
|
|
|
22343
22368
|
...props,
|
|
22344
22369
|
children: [
|
|
22345
22370
|
/* @__PURE__ */ jsxs155("div", { className: "flex gap-4 items-center w-full", children: [
|
|
22346
|
-
/* @__PURE__ */
|
|
22371
|
+
/* @__PURE__ */ jsx193("div", { className: "flex items-center justify-center p-2 rounded-[6px] border border-ods-border shrink-0", children: /* @__PURE__ */ jsx193(MonitorIcon, { className: "text-ods-text-secondary", size: 16 }) }),
|
|
22347
22372
|
/* @__PURE__ */ jsxs155("div", { className: "flex-1 min-w-0 flex flex-col justify-center", children: [
|
|
22348
22373
|
/* @__PURE__ */ jsxs155("div", { className: "flex gap-1 items-center", children: [
|
|
22349
|
-
device.operatingSystem && /* @__PURE__ */
|
|
22374
|
+
device.operatingSystem && /* @__PURE__ */ jsx193(
|
|
22350
22375
|
OSTypeIcon,
|
|
22351
22376
|
{
|
|
22352
22377
|
osType: device.operatingSystem === "macos" ? "darwin" : device.operatingSystem,
|
|
@@ -22354,11 +22379,11 @@ function DeviceCard({
|
|
|
22354
22379
|
className: "shrink-0"
|
|
22355
22380
|
}
|
|
22356
22381
|
),
|
|
22357
|
-
/* @__PURE__ */
|
|
22382
|
+
/* @__PURE__ */ jsx193("span", { className: "text-h4 text-ods-text-primary truncate", children: device.name })
|
|
22358
22383
|
] }),
|
|
22359
|
-
device.organization && /* @__PURE__ */
|
|
22384
|
+
device.organization && /* @__PURE__ */ jsx193("span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: device.organization })
|
|
22360
22385
|
] }),
|
|
22361
|
-
actions.moreButton?.visible !== false && /* @__PURE__ */
|
|
22386
|
+
actions.moreButton?.visible !== false && /* @__PURE__ */ jsx193(
|
|
22362
22387
|
"div",
|
|
22363
22388
|
{
|
|
22364
22389
|
className: "flex items-center justify-center p-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
|
|
@@ -22366,12 +22391,12 @@ function DeviceCard({
|
|
|
22366
22391
|
e.stopPropagation();
|
|
22367
22392
|
actions.moreButton?.onClick?.();
|
|
22368
22393
|
},
|
|
22369
|
-
children: /* @__PURE__ */
|
|
22394
|
+
children: /* @__PURE__ */ jsx193(Ellipsis01Icon, { className: "text-ods-text-primary" })
|
|
22370
22395
|
}
|
|
22371
22396
|
),
|
|
22372
|
-
actions.detailsButton?.visible !== false && actions.detailsButton?.component && /* @__PURE__ */
|
|
22397
|
+
actions.detailsButton?.visible !== false && actions.detailsButton?.component && /* @__PURE__ */ jsx193("div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
|
|
22373
22398
|
actions.customActions?.map(
|
|
22374
|
-
(action, index) => action.visible !== false && /* @__PURE__ */
|
|
22399
|
+
(action, index) => action.visible !== false && /* @__PURE__ */ jsx193(
|
|
22375
22400
|
"div",
|
|
22376
22401
|
{
|
|
22377
22402
|
className: "flex items-center justify-center px-4 py-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
|
|
@@ -22379,14 +22404,14 @@ function DeviceCard({
|
|
|
22379
22404
|
e.stopPropagation();
|
|
22380
22405
|
action.onClick?.();
|
|
22381
22406
|
},
|
|
22382
|
-
children: /* @__PURE__ */
|
|
22407
|
+
children: /* @__PURE__ */ jsx193("span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
|
|
22383
22408
|
},
|
|
22384
22409
|
index
|
|
22385
22410
|
)
|
|
22386
22411
|
)
|
|
22387
22412
|
] }),
|
|
22388
22413
|
(statusTag || device.lastSeen) && /* @__PURE__ */ jsxs155("div", { className: "flex gap-2 items-center w-full", children: [
|
|
22389
|
-
statusTag && /* @__PURE__ */
|
|
22414
|
+
statusTag && /* @__PURE__ */ jsx193(
|
|
22390
22415
|
Tag,
|
|
22391
22416
|
{
|
|
22392
22417
|
variant: statusTag.variant,
|
|
@@ -22401,7 +22426,7 @@ function DeviceCard({
|
|
|
22401
22426
|
formatLastSeen(device.lastSeen)
|
|
22402
22427
|
] })
|
|
22403
22428
|
] }),
|
|
22404
|
-
device.tags && device.tags.length > 0 && /* @__PURE__ */
|
|
22429
|
+
device.tags && device.tags.length > 0 && /* @__PURE__ */ jsx193("div", { className: "flex gap-2 items-center w-full flex-wrap", children: device.tags.map((tag, index) => /* @__PURE__ */ jsx193(Tag, { variant: "outline", label: tag }, index)) })
|
|
22405
22430
|
]
|
|
22406
22431
|
}
|
|
22407
22432
|
);
|
|
@@ -22409,7 +22434,7 @@ function DeviceCard({
|
|
|
22409
22434
|
|
|
22410
22435
|
// src/components/ui/device-card-compact.tsx
|
|
22411
22436
|
init_cn();
|
|
22412
|
-
import { Fragment as Fragment29, jsx as
|
|
22437
|
+
import { Fragment as Fragment29, jsx as jsx194, jsxs as jsxs156 } from "react/jsx-runtime";
|
|
22413
22438
|
function DeviceCardCompact({
|
|
22414
22439
|
deviceName,
|
|
22415
22440
|
organization,
|
|
@@ -22419,7 +22444,7 @@ function DeviceCardCompact({
|
|
|
22419
22444
|
const hasName = deviceName && deviceName !== "-" && deviceName !== "null";
|
|
22420
22445
|
const hasOrg = organization && organization !== "-" && organization !== "null";
|
|
22421
22446
|
if (!hasName && !hasOrg) {
|
|
22422
|
-
return /* @__PURE__ */
|
|
22447
|
+
return /* @__PURE__ */ jsx194(Fragment29, {});
|
|
22423
22448
|
}
|
|
22424
22449
|
return /* @__PURE__ */ jsxs156(
|
|
22425
22450
|
"div",
|
|
@@ -22430,15 +22455,15 @@ function DeviceCardCompact({
|
|
|
22430
22455
|
),
|
|
22431
22456
|
...props,
|
|
22432
22457
|
children: [
|
|
22433
|
-
hasName && /* @__PURE__ */
|
|
22434
|
-
hasOrg && /* @__PURE__ */
|
|
22458
|
+
hasName && /* @__PURE__ */ jsx194("span", { className: "font-['DM_Sans'] font-medium text-[16px] leading-[20px] text-ods-text-primary truncate", children: deviceName }),
|
|
22459
|
+
hasOrg && /* @__PURE__ */ jsx194("span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[18px] text-ods-text-secondary truncate", children: organization })
|
|
22435
22460
|
]
|
|
22436
22461
|
}
|
|
22437
22462
|
);
|
|
22438
22463
|
}
|
|
22439
22464
|
|
|
22440
22465
|
// src/components/ui/feature-card.tsx
|
|
22441
|
-
import { jsx as
|
|
22466
|
+
import { jsx as jsx195, jsxs as jsxs157 } from "react/jsx-runtime";
|
|
22442
22467
|
function FeatureCardGrid({
|
|
22443
22468
|
items,
|
|
22444
22469
|
columns = 3,
|
|
@@ -22478,11 +22503,11 @@ function FeatureCardGrid({
|
|
|
22478
22503
|
if (allCardsHaveNoBorders) {
|
|
22479
22504
|
finalCardClassName = "bg-transparent p-0 overflow-visible border-0 shadow-none rounded-none";
|
|
22480
22505
|
}
|
|
22481
|
-
return /* @__PURE__ */
|
|
22506
|
+
return /* @__PURE__ */ jsx195(Card, { className: `${finalCardClassName} ${className}`, children: Array.from({ length: rows }, (_, rowIndex) => {
|
|
22482
22507
|
const startIndex = rowIndex * itemsPerRow;
|
|
22483
22508
|
const rowItems = items.slice(startIndex, startIndex + itemsPerRow);
|
|
22484
22509
|
const isLastRow = rowIndex === rows - 1;
|
|
22485
|
-
return /* @__PURE__ */
|
|
22510
|
+
return /* @__PURE__ */ jsx195("div", { className: `grid ${gridCols} ${cardGap}`, children: rowItems.map((item, itemIndex) => {
|
|
22486
22511
|
const globalIndex = startIndex + itemIndex;
|
|
22487
22512
|
const isLastInRow = itemIndex === rowItems.length - 1;
|
|
22488
22513
|
const borderClasses = getBorderClasses(isLastRow, isLastInRow, globalIndex);
|
|
@@ -22499,15 +22524,15 @@ function FeatureCardGrid({
|
|
|
22499
22524
|
if (roundedCorners) {
|
|
22500
22525
|
finalItemClassName += " rounded-lg";
|
|
22501
22526
|
}
|
|
22502
|
-
return /* @__PURE__ */
|
|
22527
|
+
return /* @__PURE__ */ jsx195(
|
|
22503
22528
|
"div",
|
|
22504
22529
|
{
|
|
22505
22530
|
className: `${finalItemClassName}${finalBorderClasses} relative`,
|
|
22506
22531
|
style: item.customBackground ? { backgroundColor: item.customBackground } : void 0,
|
|
22507
22532
|
children: /* @__PURE__ */ jsxs157("div", { className: !item.icon && !item.title ? "flex flex-col h-full" : "space-y-6", children: [
|
|
22508
22533
|
item.icon && /* @__PURE__ */ jsxs157("div", { className: "flex items-start justify-between", children: [
|
|
22509
|
-
/* @__PURE__ */
|
|
22510
|
-
item.badge && /* @__PURE__ */
|
|
22534
|
+
/* @__PURE__ */ jsx195(item.icon, { size: 80, color: item.iconColor }),
|
|
22535
|
+
item.badge && /* @__PURE__ */ jsx195(
|
|
22511
22536
|
StatusBadge,
|
|
22512
22537
|
{
|
|
22513
22538
|
text: item.badge.text,
|
|
@@ -22516,7 +22541,7 @@ function FeatureCardGrid({
|
|
|
22516
22541
|
}
|
|
22517
22542
|
)
|
|
22518
22543
|
] }),
|
|
22519
|
-
!item.icon && item.badge && /* @__PURE__ */
|
|
22544
|
+
!item.icon && item.badge && /* @__PURE__ */ jsx195("div", { className: "flex items-start justify-end", children: /* @__PURE__ */ jsx195(
|
|
22520
22545
|
StatusBadge,
|
|
22521
22546
|
{
|
|
22522
22547
|
text: item.badge.text,
|
|
@@ -22524,7 +22549,7 @@ function FeatureCardGrid({
|
|
|
22524
22549
|
colorScheme: item.badge.colorScheme || "default"
|
|
22525
22550
|
}
|
|
22526
22551
|
) }),
|
|
22527
|
-
/* @__PURE__ */
|
|
22552
|
+
/* @__PURE__ */ jsx195("h3", { className: "text-h2 tracking-[-0.64px] text-ods-text-primary whitespace-pre-line", children: item.title }),
|
|
22528
22553
|
item.content
|
|
22529
22554
|
] })
|
|
22530
22555
|
},
|
|
@@ -22535,13 +22560,13 @@ function FeatureCardGrid({
|
|
|
22535
22560
|
}
|
|
22536
22561
|
|
|
22537
22562
|
// src/components/ui/feature-list.tsx
|
|
22538
|
-
import { jsx as
|
|
22563
|
+
import { jsx as jsx196, jsxs as jsxs158 } from "react/jsx-runtime";
|
|
22539
22564
|
function FeatureList({
|
|
22540
22565
|
items,
|
|
22541
22566
|
className = "",
|
|
22542
22567
|
iconBoxSize = 72
|
|
22543
22568
|
}) {
|
|
22544
|
-
return /* @__PURE__ */
|
|
22569
|
+
return /* @__PURE__ */ jsx196(
|
|
22545
22570
|
"div",
|
|
22546
22571
|
{
|
|
22547
22572
|
className: `bg-ods-bg border border-ods-border rounded-[6px] flex flex-col overflow-hidden ${className}`,
|
|
@@ -22550,7 +22575,7 @@ function FeatureList({
|
|
|
22550
22575
|
{
|
|
22551
22576
|
className: `bg-ods-card flex gap-4 items-start p-4 w-full ${index < items.length - 1 ? "border-b border-ods-border" : ""}`,
|
|
22552
22577
|
children: [
|
|
22553
|
-
/* @__PURE__ */
|
|
22578
|
+
/* @__PURE__ */ jsx196(
|
|
22554
22579
|
"div",
|
|
22555
22580
|
{
|
|
22556
22581
|
className: "bg-ods-bg border border-ods-border flex items-center justify-center rounded-[6px] shrink-0",
|
|
@@ -22559,8 +22584,8 @@ function FeatureList({
|
|
|
22559
22584
|
}
|
|
22560
22585
|
),
|
|
22561
22586
|
/* @__PURE__ */ jsxs158("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
22562
|
-
/* @__PURE__ */
|
|
22563
|
-
/* @__PURE__ */
|
|
22587
|
+
/* @__PURE__ */ jsx196("p", { className: "text-h3 text-ods-text-primary", children: item.title }),
|
|
22588
|
+
/* @__PURE__ */ jsx196("p", { className: "text-h6 text-ods-text-secondary normal-case tracking-normal", children: item.description })
|
|
22564
22589
|
] })
|
|
22565
22590
|
]
|
|
22566
22591
|
},
|
|
@@ -22571,15 +22596,15 @@ function FeatureList({
|
|
|
22571
22596
|
}
|
|
22572
22597
|
|
|
22573
22598
|
// src/components/ui/highlight-card.tsx
|
|
22574
|
-
import { jsx as
|
|
22599
|
+
import { jsx as jsx197, jsxs as jsxs159 } from "react/jsx-runtime";
|
|
22575
22600
|
function HighlightCard({
|
|
22576
22601
|
item,
|
|
22577
22602
|
className = ""
|
|
22578
22603
|
}) {
|
|
22579
22604
|
const mobileWidth = item.category.length * 12;
|
|
22580
22605
|
const desktopWidth = item.category.length * 14;
|
|
22581
|
-
return /* @__PURE__ */
|
|
22582
|
-
/* @__PURE__ */
|
|
22606
|
+
return /* @__PURE__ */ jsx197("div", { className: `bg-ods-bg p-6 md:p-10 relative ${className}`, children: /* @__PURE__ */ jsxs159("div", { className: "relative", children: [
|
|
22607
|
+
/* @__PURE__ */ jsx197(
|
|
22583
22608
|
"div",
|
|
22584
22609
|
{
|
|
22585
22610
|
className: "absolute rounded-md h-8 left-[80px] top-0 md:hidden",
|
|
@@ -22589,7 +22614,7 @@ function HighlightCard({
|
|
|
22589
22614
|
}
|
|
22590
22615
|
}
|
|
22591
22616
|
),
|
|
22592
|
-
/* @__PURE__ */
|
|
22617
|
+
/* @__PURE__ */ jsx197(
|
|
22593
22618
|
"div",
|
|
22594
22619
|
{
|
|
22595
22620
|
className: "absolute rounded-md h-10 left-[95px] top-0 hidden md:block",
|
|
@@ -22602,7 +22627,7 @@ function HighlightCard({
|
|
|
22602
22627
|
/* @__PURE__ */ jsxs159("h3", { className: "font-['Azeret_Mono'] font-semibold text-[24px] md:text-[28px] lg:text-[32px] leading-[1.25] tracking-[-0.64px] text-ods-text-primary relative z-10", children: [
|
|
22603
22628
|
"Your",
|
|
22604
22629
|
" ",
|
|
22605
|
-
/* @__PURE__ */
|
|
22630
|
+
/* @__PURE__ */ jsx197("span", { style: { color: item.categoryColor }, children: item.category }),
|
|
22606
22631
|
" ",
|
|
22607
22632
|
item.description
|
|
22608
22633
|
] })
|
|
@@ -22633,15 +22658,15 @@ function HighlightCardGrid({
|
|
|
22633
22658
|
}
|
|
22634
22659
|
return classes;
|
|
22635
22660
|
};
|
|
22636
|
-
return /* @__PURE__ */
|
|
22661
|
+
return /* @__PURE__ */ jsx197("div", { className: `${cardClassName} ${className}`, children: Array.from({ length: rows }, (_, rowIndex) => {
|
|
22637
22662
|
const startIndex = rowIndex * itemsPerRow;
|
|
22638
22663
|
const rowItems = items.slice(startIndex, startIndex + itemsPerRow);
|
|
22639
22664
|
const isLastRow = rowIndex === rows - 1;
|
|
22640
|
-
return /* @__PURE__ */
|
|
22665
|
+
return /* @__PURE__ */ jsx197("div", { className: `grid ${gridCols}`, children: rowItems.map((item, itemIndex) => {
|
|
22641
22666
|
const globalIndex = startIndex + itemIndex;
|
|
22642
22667
|
const isLastInRow = itemIndex === rowItems.length - 1;
|
|
22643
22668
|
const borderClasses = getBorderClasses(isLastRow, isLastInRow, globalIndex);
|
|
22644
|
-
return /* @__PURE__ */
|
|
22669
|
+
return /* @__PURE__ */ jsx197(
|
|
22645
22670
|
HighlightCard,
|
|
22646
22671
|
{
|
|
22647
22672
|
item,
|
|
@@ -22656,15 +22681,15 @@ function HighlightCardGrid({
|
|
|
22656
22681
|
// src/components/ui/icons-block.tsx
|
|
22657
22682
|
init_cn();
|
|
22658
22683
|
import * as React76 from "react";
|
|
22659
|
-
import { jsx as
|
|
22684
|
+
import { jsx as jsx198 } from "react/jsx-runtime";
|
|
22660
22685
|
var IconsBlock = React76.forwardRef(
|
|
22661
22686
|
({ className, icons = [], size = "md", ...props }, ref) => {
|
|
22662
|
-
const
|
|
22687
|
+
const sizeClasses4 = {
|
|
22663
22688
|
sm: "h-4 w-4",
|
|
22664
22689
|
md: "h-6 w-6",
|
|
22665
22690
|
lg: "h-8 w-8"
|
|
22666
22691
|
};
|
|
22667
|
-
return /* @__PURE__ */
|
|
22692
|
+
return /* @__PURE__ */ jsx198(
|
|
22668
22693
|
"div",
|
|
22669
22694
|
{
|
|
22670
22695
|
className: cn(
|
|
@@ -22673,14 +22698,14 @@ var IconsBlock = React76.forwardRef(
|
|
|
22673
22698
|
),
|
|
22674
22699
|
ref,
|
|
22675
22700
|
...props,
|
|
22676
|
-
children: icons.map((icon, index) => /* @__PURE__ */
|
|
22701
|
+
children: icons.map((icon, index) => /* @__PURE__ */ jsx198(
|
|
22677
22702
|
"div",
|
|
22678
22703
|
{
|
|
22679
22704
|
className: cn(
|
|
22680
22705
|
"rounded-md bg-secondary p-1",
|
|
22681
|
-
|
|
22706
|
+
sizeClasses4[size]
|
|
22682
22707
|
),
|
|
22683
|
-
children: /* @__PURE__ */
|
|
22708
|
+
children: /* @__PURE__ */ jsx198("div", { className: "h-full w-full bg-primary/20 rounded-sm" })
|
|
22684
22709
|
},
|
|
22685
22710
|
index
|
|
22686
22711
|
))
|
|
@@ -22698,7 +22723,7 @@ import React77 from "react";
|
|
|
22698
22723
|
init_cn();
|
|
22699
22724
|
import Link7 from "next/link";
|
|
22700
22725
|
init_button2();
|
|
22701
|
-
import { Fragment as Fragment30, jsx as
|
|
22726
|
+
import { Fragment as Fragment30, jsx as jsx199, jsxs as jsxs160 } from "react/jsx-runtime";
|
|
22702
22727
|
function MoreActionsMenu({
|
|
22703
22728
|
items,
|
|
22704
22729
|
align = "end",
|
|
@@ -22711,17 +22736,17 @@ function MoreActionsMenu({
|
|
|
22711
22736
|
onOpenChange
|
|
22712
22737
|
}) {
|
|
22713
22738
|
return /* @__PURE__ */ jsxs160(DropdownMenu, { open, onOpenChange, children: [
|
|
22714
|
-
/* @__PURE__ */
|
|
22739
|
+
/* @__PURE__ */ jsx199(DropdownMenuTrigger, { asChild: true, children: trigger || /* @__PURE__ */ jsx199(
|
|
22715
22740
|
Button,
|
|
22716
22741
|
{
|
|
22717
22742
|
variant: "outline",
|
|
22718
22743
|
size: "icon",
|
|
22719
22744
|
className: className || "bg-ods-card border-ods-border hover:bg-ods-bg-hover flex items-center justify-center",
|
|
22720
22745
|
"aria-label": ariaLabel,
|
|
22721
|
-
children: /* @__PURE__ */
|
|
22746
|
+
children: /* @__PURE__ */ jsx199(Ellipsis01Icon, { size: 24, className: "text-ods-text-primary" })
|
|
22722
22747
|
}
|
|
22723
22748
|
) }),
|
|
22724
|
-
/* @__PURE__ */
|
|
22749
|
+
/* @__PURE__ */ jsx199(
|
|
22725
22750
|
DropdownMenuContent,
|
|
22726
22751
|
{
|
|
22727
22752
|
align,
|
|
@@ -22731,21 +22756,21 @@ function MoreActionsMenu({
|
|
|
22731
22756
|
children: items.map((item, idx) => {
|
|
22732
22757
|
const itemClassName = "flex items-center gap-2 px-4 py-3 bg-ods-bg hover:bg-ods-bg-hover focus:bg-ods-bg-hover border-b border-ods-border last:border-b-0 rounded-none cursor-pointer data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed";
|
|
22733
22758
|
const content = /* @__PURE__ */ jsxs160(Fragment30, { children: [
|
|
22734
|
-
item.icon && /* @__PURE__ */
|
|
22735
|
-
/* @__PURE__ */
|
|
22759
|
+
item.icon && /* @__PURE__ */ jsx199("div", { className: cn(item.danger ? "text-ods-error" : "text-ods-text-secondary", "[&_svg]:size-6 [&_svg]:shrink-0"), children: item.icon }),
|
|
22760
|
+
/* @__PURE__ */ jsx199("span", { className: "font-medium text-[18px] leading-6 text-ods-text-primary", children: item.label })
|
|
22736
22761
|
] });
|
|
22737
22762
|
const handleActivate = (e) => {
|
|
22738
22763
|
e.stopPropagation();
|
|
22739
22764
|
if (!item.disabled) item.onClick?.();
|
|
22740
22765
|
};
|
|
22741
22766
|
if (item.href) {
|
|
22742
|
-
return /* @__PURE__ */
|
|
22767
|
+
return /* @__PURE__ */ jsx199(
|
|
22743
22768
|
DropdownMenuItem,
|
|
22744
22769
|
{
|
|
22745
22770
|
asChild: true,
|
|
22746
22771
|
disabled: item.disabled,
|
|
22747
22772
|
className: itemClassName,
|
|
22748
|
-
children: /* @__PURE__ */
|
|
22773
|
+
children: /* @__PURE__ */ jsx199(
|
|
22749
22774
|
Link7,
|
|
22750
22775
|
{
|
|
22751
22776
|
href: item.href,
|
|
@@ -22768,7 +22793,7 @@ function MoreActionsMenu({
|
|
|
22768
22793
|
`${item.label}-${idx}`
|
|
22769
22794
|
);
|
|
22770
22795
|
}
|
|
22771
|
-
return /* @__PURE__ */
|
|
22796
|
+
return /* @__PURE__ */ jsx199(
|
|
22772
22797
|
DropdownMenuItem,
|
|
22773
22798
|
{
|
|
22774
22799
|
onClick: handleActivate,
|
|
@@ -22785,7 +22810,7 @@ function MoreActionsMenu({
|
|
|
22785
22810
|
}
|
|
22786
22811
|
|
|
22787
22812
|
// src/components/ui/dropdown-button.tsx
|
|
22788
|
-
import { jsx as
|
|
22813
|
+
import { jsx as jsx200, jsxs as jsxs161 } from "react/jsx-runtime";
|
|
22789
22814
|
function DropdownButton({
|
|
22790
22815
|
label,
|
|
22791
22816
|
icon,
|
|
@@ -22804,7 +22829,7 @@ function DropdownButton({
|
|
|
22804
22829
|
},
|
|
22805
22830
|
[disabled]
|
|
22806
22831
|
);
|
|
22807
|
-
return /* @__PURE__ */
|
|
22832
|
+
return /* @__PURE__ */ jsx200(
|
|
22808
22833
|
MoreActionsMenu,
|
|
22809
22834
|
{
|
|
22810
22835
|
items,
|
|
@@ -22831,10 +22856,10 @@ function DropdownButton({
|
|
|
22831
22856
|
),
|
|
22832
22857
|
children: [
|
|
22833
22858
|
/* @__PURE__ */ jsxs161("span", { className: "flex items-center gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)] text-h3", children: [
|
|
22834
|
-
icon && /* @__PURE__ */
|
|
22835
|
-
/* @__PURE__ */
|
|
22859
|
+
icon && /* @__PURE__ */ jsx200("span", { className: "flex items-center justify-center [&_svg]:w-6 [&_svg]:h-6", children: icon }),
|
|
22860
|
+
/* @__PURE__ */ jsx200("span", { className: "whitespace-nowrap", children: label })
|
|
22836
22861
|
] }),
|
|
22837
|
-
/* @__PURE__ */
|
|
22862
|
+
/* @__PURE__ */ jsx200("span", { className: "flex items-center justify-center border-l border-ods-border p-[var(--spacing-system-sf)] [&_svg]:w-6 [&_svg]:h-6", children: /* @__PURE__ */ jsx200(
|
|
22838
22863
|
Chevron02DownIcon,
|
|
22839
22864
|
{
|
|
22840
22865
|
className: cn("transition-transform duration-fast", open && "rotate-180")
|
|
@@ -22851,78 +22876,7 @@ function DropdownButton({
|
|
|
22851
22876
|
init_cn();
|
|
22852
22877
|
import Link8 from "next/link";
|
|
22853
22878
|
import { Monitor } from "lucide-react";
|
|
22854
|
-
|
|
22855
|
-
// src/components/features/organization-icon.tsx
|
|
22856
|
-
init_cn();
|
|
22857
|
-
import Image11 from "next/image";
|
|
22858
|
-
import { jsx as jsx200, jsxs as jsxs162 } from "react/jsx-runtime";
|
|
22859
|
-
var sizeClasses3 = {
|
|
22860
|
-
xs: "w-6 h-6",
|
|
22861
|
-
sm: "w-8 h-8",
|
|
22862
|
-
md: "w-10 h-10",
|
|
22863
|
-
lg: "w-12 h-12",
|
|
22864
|
-
l: "w-14 h-14",
|
|
22865
|
-
xl: "w-16 h-16"
|
|
22866
|
-
};
|
|
22867
|
-
var imageSizeMap2 = {
|
|
22868
|
-
xs: { width: 16, height: 16 },
|
|
22869
|
-
sm: { width: 20, height: 20 },
|
|
22870
|
-
md: { width: 32, height: 32 },
|
|
22871
|
-
lg: { width: 40, height: 40 },
|
|
22872
|
-
l: { width: 38, height: 38 },
|
|
22873
|
-
xl: { width: 40, height: 40 }
|
|
22874
|
-
};
|
|
22875
|
-
var backgroundClasses3 = {
|
|
22876
|
-
dark: "bg-[#161616] border border-ods-border",
|
|
22877
|
-
light: "bg-ods-card border border-ods-border",
|
|
22878
|
-
white: "bg-white border border-[#E5E5E5]"
|
|
22879
|
-
};
|
|
22880
|
-
function OrganizationIcon({
|
|
22881
|
-
imageUrl,
|
|
22882
|
-
organizationName,
|
|
22883
|
-
size = "md",
|
|
22884
|
-
className = "",
|
|
22885
|
-
showBackground = true,
|
|
22886
|
-
backgroundStyle = "dark"
|
|
22887
|
-
}) {
|
|
22888
|
-
const { width, height } = imageSizeMap2[size];
|
|
22889
|
-
const initials = organizationName?.substring(0, 2) || "??";
|
|
22890
|
-
const containerClasses = cn(
|
|
22891
|
-
sizeClasses3[size],
|
|
22892
|
-
"rounded-lg flex items-center justify-center flex-shrink-0 relative",
|
|
22893
|
-
showBackground && backgroundClasses3[backgroundStyle],
|
|
22894
|
-
!showBackground && "overflow-hidden",
|
|
22895
|
-
className
|
|
22896
|
-
);
|
|
22897
|
-
return /* @__PURE__ */ jsxs162("div", { className: containerClasses, children: [
|
|
22898
|
-
/* @__PURE__ */ jsx200("div", { className: cn(
|
|
22899
|
-
"flex items-center justify-center text-xs font-medium uppercase",
|
|
22900
|
-
imageUrl && "hidden",
|
|
22901
|
-
backgroundStyle === "white" ? "text-ods-text-primary" : "text-ods-text-secondary"
|
|
22902
|
-
), children: initials }),
|
|
22903
|
-
imageUrl && /* @__PURE__ */ jsx200(
|
|
22904
|
-
Image11,
|
|
22905
|
-
{
|
|
22906
|
-
src: imageUrl,
|
|
22907
|
-
alt: `${initials}`,
|
|
22908
|
-
width,
|
|
22909
|
-
height,
|
|
22910
|
-
className: cn(
|
|
22911
|
-
"absolute object-contain",
|
|
22912
|
-
showBackground ? "p-1" : "w-full h-full"
|
|
22913
|
-
),
|
|
22914
|
-
onError: (e) => {
|
|
22915
|
-
e.currentTarget.style.display = "none";
|
|
22916
|
-
const el = e.currentTarget.previousElementSibling;
|
|
22917
|
-
if (el) el.classList.remove("hidden");
|
|
22918
|
-
}
|
|
22919
|
-
}
|
|
22920
|
-
)
|
|
22921
|
-
] });
|
|
22922
|
-
}
|
|
22923
|
-
|
|
22924
|
-
// src/components/ui/organization-card.tsx
|
|
22925
|
-
import { jsx as jsx201, jsxs as jsxs163 } from "react/jsx-runtime";
|
|
22879
|
+
import { jsx as jsx201, jsxs as jsxs162 } from "react/jsx-runtime";
|
|
22926
22880
|
function OrganizationCard({
|
|
22927
22881
|
organization,
|
|
22928
22882
|
fetchedImageUrl,
|
|
@@ -22939,7 +22893,7 @@ function OrganizationCard({
|
|
|
22939
22893
|
e.stopPropagation();
|
|
22940
22894
|
actionButton?.onClick(organization, e);
|
|
22941
22895
|
};
|
|
22942
|
-
const card = /* @__PURE__ */
|
|
22896
|
+
const card = /* @__PURE__ */ jsxs162(
|
|
22943
22897
|
"div",
|
|
22944
22898
|
{
|
|
22945
22899
|
className: cn(
|
|
@@ -22949,9 +22903,9 @@ function OrganizationCard({
|
|
|
22949
22903
|
className
|
|
22950
22904
|
),
|
|
22951
22905
|
children: [
|
|
22952
|
-
deviceCount !== void 0 && /* @__PURE__ */
|
|
22906
|
+
deviceCount !== void 0 && /* @__PURE__ */ jsxs162("div", { className: "absolute top-4 right-4 flex items-center gap-2 shrink-0", children: [
|
|
22953
22907
|
/* @__PURE__ */ jsx201(Monitor, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
22954
|
-
/* @__PURE__ */
|
|
22908
|
+
/* @__PURE__ */ jsxs162("span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: [
|
|
22955
22909
|
deviceCount.toLocaleString(),
|
|
22956
22910
|
" devices"
|
|
22957
22911
|
] })
|
|
@@ -22969,25 +22923,21 @@ function OrganizationCard({
|
|
|
22969
22923
|
children: actionButton.icon
|
|
22970
22924
|
}
|
|
22971
22925
|
),
|
|
22972
|
-
/* @__PURE__ */
|
|
22926
|
+
/* @__PURE__ */ jsxs162("div", { className: "flex items-start gap-3 w-full", children: [
|
|
22973
22927
|
/* @__PURE__ */ jsx201(
|
|
22974
|
-
|
|
22928
|
+
EntityImage,
|
|
22975
22929
|
{
|
|
22976
|
-
|
|
22977
|
-
|
|
22978
|
-
size: "xl",
|
|
22979
|
-
backgroundStyle: "dark",
|
|
22980
|
-
showBackground: true,
|
|
22981
|
-
className: "w-[60px] h-[60px]"
|
|
22930
|
+
src: fetchedImageUrl || organization.imageUrl,
|
|
22931
|
+
alt: organization.name
|
|
22982
22932
|
}
|
|
22983
22933
|
),
|
|
22984
|
-
/* @__PURE__ */
|
|
22934
|
+
/* @__PURE__ */ jsxs162("div", { className: "flex-1 flex flex-col justify-center py-2 min-w-0", children: [
|
|
22985
22935
|
/* @__PURE__ */ jsx201("h3", { className: "font-['DM_Sans'] font-bold text-lg leading-[1.33] tracking-[-0.02em] text-ods-text-primary transition-colors truncate", children: organization.name }),
|
|
22986
22936
|
/* @__PURE__ */ jsx201("p", { className: "font-['DM_Sans'] font-medium text-sm leading-[1.43] text-ods-text-secondary truncate", children: organization.industry || organization.tier || organization.websiteUrl || "Organization" })
|
|
22987
22937
|
] })
|
|
22988
22938
|
] }),
|
|
22989
22939
|
organization.description && /* @__PURE__ */ jsx201("div", { className: "w-full h-12 overflow-hidden", children: /* @__PURE__ */ jsx201("p", { className: "font-['DM_Sans'] font-medium text-lg leading-[1.33] text-ods-text-primary line-clamp-2", children: organization.description }) }),
|
|
22990
|
-
customFooter ? customFooter : footerStats && footerStats.length > 0 ? /* @__PURE__ */ jsx201("div", { className: "flex items-center justify-between gap-2 w-full min-w-0", children: /* @__PURE__ */ jsx201("div", { className: "flex items-center gap-3 md:gap-4 min-w-0 flex-shrink", children: footerStats.map((stat, index) => /* @__PURE__ */
|
|
22940
|
+
customFooter ? customFooter : footerStats && footerStats.length > 0 ? /* @__PURE__ */ jsx201("div", { className: "flex items-center justify-between gap-2 w-full min-w-0", children: /* @__PURE__ */ jsx201("div", { className: "flex items-center gap-3 md:gap-4 min-w-0 flex-shrink", children: footerStats.map((stat, index) => /* @__PURE__ */ jsxs162("div", { className: "flex items-center gap-1 flex-shrink-0", children: [
|
|
22991
22941
|
stat.icon,
|
|
22992
22942
|
/* @__PURE__ */ jsx201("span", { className: "font-['DM_Sans'] font-medium text-base text-ods-text-primary", children: typeof stat.value === "number" ? stat.value.toLocaleString() : stat.value }),
|
|
22993
22943
|
stat.label && /* @__PURE__ */ jsx201("span", { className: "font-['DM_Sans'] font-medium text-sm text-ods-text-secondary", children: stat.label })
|
|
@@ -23033,7 +22983,7 @@ var LOG_SEVERITY_LABELS = {
|
|
|
23033
22983
|
// src/components/log-severity-dot.tsx
|
|
23034
22984
|
import { jsx as jsx202 } from "react/jsx-runtime";
|
|
23035
22985
|
var LogSeverityDot = React78.forwardRef(({ severity, size = "md", className }, ref) => {
|
|
23036
|
-
const
|
|
22986
|
+
const sizeClasses4 = {
|
|
23037
22987
|
sm: "w-4 h-4",
|
|
23038
22988
|
md: "w-6 h-6",
|
|
23039
22989
|
lg: "w-8 h-8"
|
|
@@ -23049,7 +22999,7 @@ var LogSeverityDot = React78.forwardRef(({ severity, size = "md", className }, r
|
|
|
23049
22999
|
ref,
|
|
23050
23000
|
className: cn(
|
|
23051
23001
|
"relative flex items-center justify-center shrink-0",
|
|
23052
|
-
|
|
23002
|
+
sizeClasses4[size],
|
|
23053
23003
|
className
|
|
23054
23004
|
),
|
|
23055
23005
|
"aria-label": `${LOG_SEVERITY_LABELS[severity]} severity`,
|
|
@@ -23069,7 +23019,7 @@ var LogSeverityDot = React78.forwardRef(({ severity, size = "md", className }, r
|
|
|
23069
23019
|
LogSeverityDot.displayName = "LogSeverityDot";
|
|
23070
23020
|
|
|
23071
23021
|
// src/components/logs-list.tsx
|
|
23072
|
-
import { jsx as jsx203, jsxs as
|
|
23022
|
+
import { jsx as jsx203, jsxs as jsxs163 } from "react/jsx-runtime";
|
|
23073
23023
|
var formatTimestamp = (timestamp) => {
|
|
23074
23024
|
const date = timestamp instanceof Date ? timestamp : new Date(timestamp);
|
|
23075
23025
|
const year = date.getFullYear();
|
|
@@ -23080,8 +23030,8 @@ var formatTimestamp = (timestamp) => {
|
|
|
23080
23030
|
return `${year}/${month}/${day},${hours}:${minutes}`;
|
|
23081
23031
|
};
|
|
23082
23032
|
var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
23083
|
-
return /* @__PURE__ */
|
|
23084
|
-
/* @__PURE__ */
|
|
23033
|
+
return /* @__PURE__ */ jsxs163("div", { className: "relative", children: [
|
|
23034
|
+
/* @__PURE__ */ jsxs163(
|
|
23085
23035
|
"div",
|
|
23086
23036
|
{
|
|
23087
23037
|
className: cn(
|
|
@@ -23099,9 +23049,9 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
23099
23049
|
},
|
|
23100
23050
|
children: [
|
|
23101
23051
|
/* @__PURE__ */ jsx203(LogSeverityDot, { severity: log.severity, size: "md" }),
|
|
23102
|
-
/* @__PURE__ */
|
|
23052
|
+
/* @__PURE__ */ jsxs163("div", { className: "flex-1 min-w-0 space-y-1", children: [
|
|
23103
23053
|
/* @__PURE__ */ jsx203("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-5 text-white", children: log.title }),
|
|
23104
|
-
/* @__PURE__ */
|
|
23054
|
+
/* @__PURE__ */ jsxs163("div", { className: "flex items-center gap-2", children: [
|
|
23105
23055
|
/* @__PURE__ */ jsx203("p", { className: "font-['Azeret_Mono'] font-normal text-[13px] leading-4 text-[#888888] uppercase tracking-wider", children: formatTimestamp(log.timestamp) }),
|
|
23106
23056
|
log.toolType && /* @__PURE__ */ jsx203(ToolIcon, { toolType: log.toolType, size: 16 })
|
|
23107
23057
|
] })
|
|
@@ -23278,7 +23228,7 @@ var TMCG_SOCIAL_PLATFORMS = {
|
|
|
23278
23228
|
var assets = {};
|
|
23279
23229
|
|
|
23280
23230
|
// src/components/ui/service-card.tsx
|
|
23281
|
-
import { jsx as jsx204, jsxs as
|
|
23231
|
+
import { jsx as jsx204, jsxs as jsxs164 } from "react/jsx-runtime";
|
|
23282
23232
|
function MaskedValue({ value, isRevealed }) {
|
|
23283
23233
|
if (isRevealed) return /* @__PURE__ */ jsx204("span", { children: value });
|
|
23284
23234
|
return /* @__PURE__ */ jsx204("span", { children: "\u2022".repeat(Math.min(value.length, 12)) });
|
|
@@ -23292,11 +23242,11 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
23292
23242
|
upperPathColor: "var(--color-text-primary)"
|
|
23293
23243
|
}
|
|
23294
23244
|
);
|
|
23295
|
-
return /* @__PURE__ */
|
|
23296
|
-
/* @__PURE__ */
|
|
23297
|
-
/* @__PURE__ */
|
|
23245
|
+
return /* @__PURE__ */ jsxs164("div", { className: cn("bg-ods-card border border-ods-border rounded-lg p-6", className), children: [
|
|
23246
|
+
/* @__PURE__ */ jsxs164("div", { className: "flex items-start justify-between gap-4 mb-4", children: [
|
|
23247
|
+
/* @__PURE__ */ jsxs164("div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
23298
23248
|
/* @__PURE__ */ jsx204("div", { className: "w-12 h-12 flex items-center justify-center bg-ods-bg rounded-md border border-ods-border flex-shrink-0", children: resolvedIcon }),
|
|
23299
|
-
/* @__PURE__ */
|
|
23249
|
+
/* @__PURE__ */ jsxs164("div", { className: "min-w-0", children: [
|
|
23300
23250
|
/* @__PURE__ */ jsx204("div", { className: "text-xl font-semibold text-ods-text-primary truncate", children: title }),
|
|
23301
23251
|
subtitle && /* @__PURE__ */ jsx204("div", { className: "text-sm text-ods-text-secondary truncate", children: subtitle })
|
|
23302
23252
|
] })
|
|
@@ -23316,11 +23266,11 @@ function ServiceCardRowItem({ row }) {
|
|
|
23316
23266
|
if (!row.href) return;
|
|
23317
23267
|
window.open(row.href, "_blank", "noopener,noreferrer");
|
|
23318
23268
|
};
|
|
23319
|
-
return /* @__PURE__ */
|
|
23269
|
+
return /* @__PURE__ */ jsxs164("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
23320
23270
|
row.label && /* @__PURE__ */ jsx204("div", { className: "w-20 md:w-24 shrink-0 text-sm font-medium text-ods-text-primary", children: row.label }),
|
|
23321
|
-
/* @__PURE__ */
|
|
23271
|
+
/* @__PURE__ */ jsxs164("div", { className: cn("flex-1 h-12 rounded-md border border-ods-border bg-ods-bg px-3 md:px-4 flex items-center justify-between min-w-0", row.monospace ? "font-mono" : ""), children: [
|
|
23322
23272
|
/* @__PURE__ */ jsx204("div", { className: "truncate text-ods-text-primary min-w-0", children: displayValue }),
|
|
23323
|
-
/* @__PURE__ */
|
|
23273
|
+
/* @__PURE__ */ jsxs164("div", { className: "flex items-center gap-2 pl-3 flex-shrink-0", children: [
|
|
23324
23274
|
actions.reveal && /* @__PURE__ */ jsx204(
|
|
23325
23275
|
"button",
|
|
23326
23276
|
{
|
|
@@ -23358,7 +23308,7 @@ function ServiceCardRowItem({ row }) {
|
|
|
23358
23308
|
|
|
23359
23309
|
// src/components/ui/tab-selector.tsx
|
|
23360
23310
|
init_cn();
|
|
23361
|
-
import { jsx as jsx205, jsxs as
|
|
23311
|
+
import { jsx as jsx205, jsxs as jsxs165 } from "react/jsx-runtime";
|
|
23362
23312
|
function TabSelector({
|
|
23363
23313
|
value,
|
|
23364
23314
|
onValueChange,
|
|
@@ -23368,7 +23318,7 @@ function TabSelector({
|
|
|
23368
23318
|
disabled,
|
|
23369
23319
|
className
|
|
23370
23320
|
}) {
|
|
23371
|
-
return /* @__PURE__ */
|
|
23321
|
+
return /* @__PURE__ */ jsxs165(
|
|
23372
23322
|
"div",
|
|
23373
23323
|
{
|
|
23374
23324
|
className: cn("flex flex-col gap-1", disabled && "opacity-50", className),
|
|
@@ -23378,7 +23328,7 @@ function TabSelector({
|
|
|
23378
23328
|
/* @__PURE__ */ jsx205("div", { className: "flex w-full bg-ods-bg border border-ods-border rounded-md p-1 gap-1 h-12", children: items.map((item) => {
|
|
23379
23329
|
const isActive = value === item.id;
|
|
23380
23330
|
const isDisabled = disabled || item.disabled;
|
|
23381
|
-
return /* @__PURE__ */
|
|
23331
|
+
return /* @__PURE__ */ jsxs165(
|
|
23382
23332
|
"button",
|
|
23383
23333
|
{
|
|
23384
23334
|
type: "button",
|
|
@@ -23404,7 +23354,7 @@ function TabSelector({
|
|
|
23404
23354
|
}
|
|
23405
23355
|
|
|
23406
23356
|
// src/components/ui/title-content-block.tsx
|
|
23407
|
-
import { jsx as jsx206, jsxs as
|
|
23357
|
+
import { jsx as jsx206, jsxs as jsxs166 } from "react/jsx-runtime";
|
|
23408
23358
|
var spacingMap2 = {
|
|
23409
23359
|
sm: "space-y-1",
|
|
23410
23360
|
md: "space-y-2",
|
|
@@ -23422,7 +23372,7 @@ function TitleContentBlock({
|
|
|
23422
23372
|
spacing = "md"
|
|
23423
23373
|
}) {
|
|
23424
23374
|
const titleClasses = `${titleClassName} ${titleColor}`;
|
|
23425
|
-
return /* @__PURE__ */
|
|
23375
|
+
return /* @__PURE__ */ jsxs166("div", { className: `${spacingMap2[spacing]} ${containerClassName}`, children: [
|
|
23426
23376
|
/* @__PURE__ */ jsx206(TitleElement, { className: titleClasses, children: title }),
|
|
23427
23377
|
/* @__PURE__ */ jsx206(ContentElement, { className: contentClassName, children: content })
|
|
23428
23378
|
] });
|
|
@@ -23454,7 +23404,7 @@ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
|
23454
23404
|
init_button2();
|
|
23455
23405
|
init_cn();
|
|
23456
23406
|
import { AlertTriangle as AlertTriangle3, RefreshCw, Home } from "lucide-react";
|
|
23457
|
-
import { jsx as jsx208, jsxs as
|
|
23407
|
+
import { jsx as jsx208, jsxs as jsxs167 } from "react/jsx-runtime";
|
|
23458
23408
|
function ErrorState({
|
|
23459
23409
|
title = "Error",
|
|
23460
23410
|
message,
|
|
@@ -23498,12 +23448,12 @@ function ErrorState({
|
|
|
23498
23448
|
styles.bg,
|
|
23499
23449
|
styles.border,
|
|
23500
23450
|
className
|
|
23501
|
-
), children: /* @__PURE__ */
|
|
23451
|
+
), children: /* @__PURE__ */ jsxs167("div", { className: "flex items-start gap-3", children: [
|
|
23502
23452
|
showIcon && /* @__PURE__ */ jsx208(AlertTriangle3, { className: cn("h-5 w-5 mt-0.5 flex-shrink-0", styles.icon) }),
|
|
23503
|
-
/* @__PURE__ */
|
|
23453
|
+
/* @__PURE__ */ jsxs167("div", { className: "flex-1", children: [
|
|
23504
23454
|
/* @__PURE__ */ jsx208("h3", { className: cn("font-semibold mb-1", styles.text), children: title }),
|
|
23505
23455
|
/* @__PURE__ */ jsx208("p", { className: cn("text-sm", styles.text), children: message }),
|
|
23506
|
-
(showRetry || showHome) && /* @__PURE__ */
|
|
23456
|
+
(showRetry || showHome) && /* @__PURE__ */ jsxs167("div", { className: "flex gap-2 mt-3", children: [
|
|
23507
23457
|
showRetry && onRetry && /* @__PURE__ */ jsx208(
|
|
23508
23458
|
Button,
|
|
23509
23459
|
{
|
|
@@ -23571,7 +23521,7 @@ function NotFoundError({ message = "The requested item was not found", onHome })
|
|
|
23571
23521
|
|
|
23572
23522
|
// src/components/ui/content-loader.tsx
|
|
23573
23523
|
init_cn();
|
|
23574
|
-
import { jsx as jsx209, jsxs as
|
|
23524
|
+
import { jsx as jsx209, jsxs as jsxs168 } from "react/jsx-runtime";
|
|
23575
23525
|
function ContentLoader({
|
|
23576
23526
|
variant = "card",
|
|
23577
23527
|
items = 4,
|
|
@@ -23579,41 +23529,41 @@ function ContentLoader({
|
|
|
23579
23529
|
className,
|
|
23580
23530
|
containerClassName
|
|
23581
23531
|
}) {
|
|
23582
|
-
const renderCardSkeleton = () => /* @__PURE__ */
|
|
23532
|
+
const renderCardSkeleton = () => /* @__PURE__ */ jsxs168("div", { className: "animate-pulse", children: [
|
|
23583
23533
|
showTitle && /* @__PURE__ */ jsx209("div", { className: "h-8 w-64 bg-ods-bg-secondary rounded mb-6" }),
|
|
23584
|
-
/* @__PURE__ */
|
|
23585
|
-
/* @__PURE__ */ jsx209("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-6 mb-6", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */
|
|
23534
|
+
/* @__PURE__ */ jsxs168("div", { className: "bg-ods-card border border-ods-border rounded-lg p-6", children: [
|
|
23535
|
+
/* @__PURE__ */ jsx209("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-6 mb-6", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs168("div", { children: [
|
|
23586
23536
|
/* @__PURE__ */ jsx209("div", { className: "h-4 w-20 bg-ods-bg-secondary rounded mb-2" }),
|
|
23587
23537
|
/* @__PURE__ */ jsx209("div", { className: "h-6 w-32 bg-ods-bg-secondary rounded" })
|
|
23588
23538
|
] }, i)) }),
|
|
23589
23539
|
/* @__PURE__ */ jsx209("div", { className: "border-t border-ods-border pt-4", children: /* @__PURE__ */ jsx209("div", { className: "h-4 w-64 bg-ods-bg-secondary rounded" }) })
|
|
23590
23540
|
] })
|
|
23591
23541
|
] });
|
|
23592
|
-
const renderFormSkeleton = () => /* @__PURE__ */
|
|
23542
|
+
const renderFormSkeleton = () => /* @__PURE__ */ jsxs168("div", { className: "animate-pulse", children: [
|
|
23593
23543
|
showTitle && /* @__PURE__ */ jsx209("div", { className: "h-8 bg-ods-card rounded w-64 mb-6" }),
|
|
23594
|
-
/* @__PURE__ */ jsx209("div", { className: "bg-ods-card rounded-lg p-6", children: /* @__PURE__ */ jsx209("div", { className: "space-y-4", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */
|
|
23544
|
+
/* @__PURE__ */ jsx209("div", { className: "bg-ods-card rounded-lg p-6", children: /* @__PURE__ */ jsx209("div", { className: "space-y-4", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs168("div", { children: [
|
|
23595
23545
|
/* @__PURE__ */ jsx209("div", { className: "h-4 bg-ods-bg-secondary rounded w-32 mb-2" }),
|
|
23596
23546
|
/* @__PURE__ */ jsx209("div", { className: "h-10 bg-ods-bg-secondary rounded" })
|
|
23597
23547
|
] }, i)) }) })
|
|
23598
23548
|
] });
|
|
23599
|
-
const renderDetailSkeleton = () => /* @__PURE__ */
|
|
23549
|
+
const renderDetailSkeleton = () => /* @__PURE__ */ jsxs168("div", { className: "animate-pulse", children: [
|
|
23600
23550
|
showTitle && /* @__PURE__ */ jsx209("div", { className: "h-8 w-64 bg-ods-bg-secondary rounded mb-6" }),
|
|
23601
|
-
/* @__PURE__ */ jsx209("div", { className: "bg-ods-card border border-ods-border rounded-lg p-6", children: /* @__PURE__ */
|
|
23602
|
-
/* @__PURE__ */
|
|
23551
|
+
/* @__PURE__ */ jsx209("div", { className: "bg-ods-card border border-ods-border rounded-lg p-6", children: /* @__PURE__ */ jsxs168("div", { className: "grid grid-cols-1 lg:grid-cols-3 gap-6", children: [
|
|
23552
|
+
/* @__PURE__ */ jsxs168("div", { className: "lg:col-span-2", children: [
|
|
23603
23553
|
/* @__PURE__ */ jsx209("div", { className: "h-64 bg-ods-bg-secondary rounded mb-4" }),
|
|
23604
23554
|
/* @__PURE__ */ jsx209("div", { className: "space-y-2", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsx209("div", { className: "h-4 bg-ods-bg-secondary rounded" }, i)) })
|
|
23605
23555
|
] }),
|
|
23606
|
-
/* @__PURE__ */
|
|
23556
|
+
/* @__PURE__ */ jsxs168("div", { children: [
|
|
23607
23557
|
/* @__PURE__ */ jsx209("div", { className: "h-32 bg-ods-bg-secondary rounded mb-4" }),
|
|
23608
23558
|
/* @__PURE__ */ jsx209("div", { className: "space-y-2", children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx209("div", { className: "h-3 bg-ods-bg-secondary rounded" }, i)) })
|
|
23609
23559
|
] })
|
|
23610
23560
|
] }) })
|
|
23611
23561
|
] });
|
|
23612
|
-
const renderListSkeleton = () => /* @__PURE__ */
|
|
23562
|
+
const renderListSkeleton = () => /* @__PURE__ */ jsxs168("div", { className: "animate-pulse space-y-3", children: [
|
|
23613
23563
|
showTitle && /* @__PURE__ */ jsx209("div", { className: "h-8 w-64 bg-ods-bg-secondary rounded mb-6" }),
|
|
23614
|
-
Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx209("div", { className: "bg-ods-card border border-ods-border rounded-lg p-4", children: /* @__PURE__ */
|
|
23564
|
+
Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx209("div", { className: "bg-ods-card border border-ods-border rounded-lg p-4", children: /* @__PURE__ */ jsxs168("div", { className: "flex items-center gap-4", children: [
|
|
23615
23565
|
/* @__PURE__ */ jsx209("div", { className: "h-12 w-12 bg-ods-bg-secondary rounded" }),
|
|
23616
|
-
/* @__PURE__ */
|
|
23566
|
+
/* @__PURE__ */ jsxs168("div", { className: "flex-1", children: [
|
|
23617
23567
|
/* @__PURE__ */ jsx209("div", { className: "h-4 bg-ods-bg-secondary rounded w-3/4 mb-2" }),
|
|
23618
23568
|
/* @__PURE__ */ jsx209("div", { className: "h-3 bg-ods-bg-secondary rounded w-1/2" })
|
|
23619
23569
|
] }),
|
|
@@ -23650,7 +23600,7 @@ init_button2();
|
|
|
23650
23600
|
init_cn();
|
|
23651
23601
|
init_button2();
|
|
23652
23602
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight10, RotateCcw as RotateCcw2, Home as Home2 } from "lucide-react";
|
|
23653
|
-
import { jsx as jsx210, jsxs as
|
|
23603
|
+
import { jsx as jsx210, jsxs as jsxs169 } from "react/jsx-runtime";
|
|
23654
23604
|
function CursorPagination({
|
|
23655
23605
|
hasNextPage,
|
|
23656
23606
|
hasPreviousPage,
|
|
@@ -23697,7 +23647,7 @@ function CursorPagination({
|
|
|
23697
23647
|
}
|
|
23698
23648
|
};
|
|
23699
23649
|
const displayText = getDisplayText();
|
|
23700
|
-
return /* @__PURE__ */
|
|
23650
|
+
return /* @__PURE__ */ jsxs169(
|
|
23701
23651
|
"div",
|
|
23702
23652
|
{
|
|
23703
23653
|
className: cn(
|
|
@@ -23707,7 +23657,7 @@ function CursorPagination({
|
|
|
23707
23657
|
),
|
|
23708
23658
|
children: [
|
|
23709
23659
|
showInfo && /* @__PURE__ */ jsx210("div", { className: "text-sm text-[#888888]", children: displayText || /* @__PURE__ */ jsx210("span", { children: "\xA0" }) }),
|
|
23710
|
-
/* @__PURE__ */
|
|
23660
|
+
/* @__PURE__ */ jsxs169("div", { className: "flex items-center gap-2", children: [
|
|
23711
23661
|
onReset ? /* @__PURE__ */ jsx210(
|
|
23712
23662
|
Button,
|
|
23713
23663
|
{
|
|
@@ -23767,7 +23717,7 @@ function CursorPaginationSimple({
|
|
|
23767
23717
|
loading = false,
|
|
23768
23718
|
className
|
|
23769
23719
|
}) {
|
|
23770
|
-
return /* @__PURE__ */
|
|
23720
|
+
return /* @__PURE__ */ jsxs169("div", { className: cn("flex items-center gap-1", className), children: [
|
|
23771
23721
|
onReset ? /* @__PURE__ */ jsx210(
|
|
23772
23722
|
Button,
|
|
23773
23723
|
{
|
|
@@ -23810,14 +23760,14 @@ function CursorPaginationSimple({
|
|
|
23810
23760
|
init_cn();
|
|
23811
23761
|
init_button2();
|
|
23812
23762
|
import { FileX2 } from "lucide-react";
|
|
23813
|
-
import { jsx as jsx211, jsxs as
|
|
23763
|
+
import { jsx as jsx211, jsxs as jsxs170 } from "react/jsx-runtime";
|
|
23814
23764
|
function TableEmptyState({
|
|
23815
23765
|
message = "No data available",
|
|
23816
23766
|
icon,
|
|
23817
23767
|
action,
|
|
23818
23768
|
className
|
|
23819
23769
|
}) {
|
|
23820
|
-
return /* @__PURE__ */
|
|
23770
|
+
return /* @__PURE__ */ jsxs170(
|
|
23821
23771
|
"div",
|
|
23822
23772
|
{
|
|
23823
23773
|
className: cn(
|
|
@@ -23846,7 +23796,7 @@ init_cn();
|
|
|
23846
23796
|
|
|
23847
23797
|
// src/components/ui/table/table-column-filter-dropdown.tsx
|
|
23848
23798
|
init_cn();
|
|
23849
|
-
import { jsx as jsx212, jsxs as
|
|
23799
|
+
import { jsx as jsx212, jsxs as jsxs171 } from "react/jsx-runtime";
|
|
23850
23800
|
function TableColumnFilterDropdown({
|
|
23851
23801
|
columnKey,
|
|
23852
23802
|
columnLabel,
|
|
@@ -23860,7 +23810,7 @@ function TableColumnFilterDropdown({
|
|
|
23860
23810
|
return /* @__PURE__ */ jsx212(
|
|
23861
23811
|
FiltersDropdown,
|
|
23862
23812
|
{
|
|
23863
|
-
triggerElement: /* @__PURE__ */
|
|
23813
|
+
triggerElement: /* @__PURE__ */ jsxs171(
|
|
23864
23814
|
"div",
|
|
23865
23815
|
{
|
|
23866
23816
|
className: "flex items-center gap-1.5 rounded px-1 py-0.5 cursor-pointer hover:bg-ods-bg-active transition-all duration-200",
|
|
@@ -23929,7 +23879,7 @@ function getHideClasses(hideAt) {
|
|
|
23929
23879
|
}
|
|
23930
23880
|
|
|
23931
23881
|
// src/components/ui/table/table-header.tsx
|
|
23932
|
-
import { Fragment as Fragment31, jsx as jsx213, jsxs as
|
|
23882
|
+
import { Fragment as Fragment31, jsx as jsx213, jsxs as jsxs172 } from "react/jsx-runtime";
|
|
23933
23883
|
function TableHeader({
|
|
23934
23884
|
columns,
|
|
23935
23885
|
className,
|
|
@@ -23975,7 +23925,7 @@ function TableHeader({
|
|
|
23975
23925
|
return sortDirection === "asc" ? /* @__PURE__ */ jsx213(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" }) : /* @__PURE__ */ jsx213(Arrow01DownIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
23976
23926
|
};
|
|
23977
23927
|
const isLgUp = useLgUp() ?? false;
|
|
23978
|
-
return /* @__PURE__ */
|
|
23928
|
+
return /* @__PURE__ */ jsxs172(
|
|
23979
23929
|
"div",
|
|
23980
23930
|
{
|
|
23981
23931
|
className: cn(
|
|
@@ -24012,7 +23962,7 @@ function TableHeader({
|
|
|
24012
23962
|
),
|
|
24013
23963
|
children: isActionsColumn ? (
|
|
24014
23964
|
// Render total items count in actions column
|
|
24015
|
-
totalItemsCount > 0 && /* @__PURE__ */
|
|
23965
|
+
totalItemsCount > 0 && /* @__PURE__ */ jsxs172("span", { className: "text-h6 text-ods-text-secondary whitespace-nowrap", children: [
|
|
24016
23966
|
"Showing ",
|
|
24017
23967
|
totalItemsCount,
|
|
24018
23968
|
" ",
|
|
@@ -24040,10 +23990,10 @@ function TableHeader({
|
|
|
24040
23990
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
24041
23991
|
),
|
|
24042
23992
|
onClick: () => handleSort(column),
|
|
24043
|
-
children: column.renderHeader ? /* @__PURE__ */
|
|
23993
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs172(Fragment31, { children: [
|
|
24044
23994
|
column.renderHeader(),
|
|
24045
23995
|
getSortIcon(column)
|
|
24046
|
-
] }) : /* @__PURE__ */
|
|
23996
|
+
] }) : /* @__PURE__ */ jsxs172(Fragment31, { children: [
|
|
24047
23997
|
/* @__PURE__ */ jsx213("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
24048
23998
|
getSortIcon(column)
|
|
24049
23999
|
] })
|
|
@@ -24098,7 +24048,7 @@ function TableCell({
|
|
|
24098
24048
|
|
|
24099
24049
|
// src/components/ui/table/table-skeleton.tsx
|
|
24100
24050
|
init_cn();
|
|
24101
|
-
import { Fragment as Fragment32, jsx as jsx215, jsxs as
|
|
24051
|
+
import { Fragment as Fragment32, jsx as jsx215, jsxs as jsxs173 } from "react/jsx-runtime";
|
|
24102
24052
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
24103
24053
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
24104
24054
|
function TableCardSkeleton({
|
|
@@ -24109,7 +24059,7 @@ function TableCardSkeleton({
|
|
|
24109
24059
|
className,
|
|
24110
24060
|
rowClassName
|
|
24111
24061
|
}) {
|
|
24112
|
-
return /* @__PURE__ */ jsx215(Fragment32, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */
|
|
24062
|
+
return /* @__PURE__ */ jsx215(Fragment32, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs173(
|
|
24113
24063
|
"div",
|
|
24114
24064
|
{
|
|
24115
24065
|
className: cn(
|
|
@@ -24117,12 +24067,12 @@ function TableCardSkeleton({
|
|
|
24117
24067
|
className
|
|
24118
24068
|
),
|
|
24119
24069
|
children: [
|
|
24120
|
-
/* @__PURE__ */
|
|
24070
|
+
/* @__PURE__ */ jsxs173("div", { className: cn(
|
|
24121
24071
|
"hidden md:flex items-center gap-4 px-4 py-0",
|
|
24122
24072
|
ROW_HEIGHT_DESKTOP,
|
|
24123
24073
|
rowClassName
|
|
24124
24074
|
), children: [
|
|
24125
|
-
columns.map((column) => /* @__PURE__ */
|
|
24075
|
+
columns.map((column) => /* @__PURE__ */ jsxs173(
|
|
24126
24076
|
"div",
|
|
24127
24077
|
{
|
|
24128
24078
|
className: cn(
|
|
@@ -24136,18 +24086,18 @@ function TableCardSkeleton({
|
|
|
24136
24086
|
},
|
|
24137
24087
|
column.key
|
|
24138
24088
|
)),
|
|
24139
|
-
hasActions && /* @__PURE__ */
|
|
24089
|
+
hasActions && /* @__PURE__ */ jsxs173("div", { className: cn("flex gap-2 items-center shrink-0", !hasChevron && "ml-auto"), children: [
|
|
24140
24090
|
/* @__PURE__ */ jsx215("div", { className: "h-12 w-12 bg-ods-bg-surface rounded" }),
|
|
24141
24091
|
/* @__PURE__ */ jsx215("div", { className: "h-12 w-24 bg-ods-bg-surface rounded" })
|
|
24142
24092
|
] }),
|
|
24143
24093
|
hasChevron && /* @__PURE__ */ jsx215("div", { className: cn("flex items-center justify-end shrink-0 w-12", !hasActions && "ml-auto"), children: /* @__PURE__ */ jsx215("div", { className: "h-8 w-8 bg-ods-bg-surface rounded" }) })
|
|
24144
24094
|
] }),
|
|
24145
|
-
/* @__PURE__ */
|
|
24095
|
+
/* @__PURE__ */ jsxs173("div", { className: cn(
|
|
24146
24096
|
"flex md:hidden gap-3 items-center justify-start px-3 py-0",
|
|
24147
24097
|
ROW_HEIGHT_MOBILE,
|
|
24148
24098
|
rowClassName
|
|
24149
24099
|
), children: [
|
|
24150
|
-
/* @__PURE__ */
|
|
24100
|
+
/* @__PURE__ */ jsxs173("div", { className: "flex-1 flex flex-col justify-center min-w-0 py-3", children: [
|
|
24151
24101
|
/* @__PURE__ */ jsx215("div", { className: "h-4 bg-ods-bg-surface rounded w-3/4 mb-2" }),
|
|
24152
24102
|
/* @__PURE__ */ jsx215("div", { className: "h-3 bg-ods-bg-surface rounded w-1/2 opacity-60" })
|
|
24153
24103
|
] }),
|
|
@@ -24161,7 +24111,7 @@ function TableCardSkeleton({
|
|
|
24161
24111
|
}
|
|
24162
24112
|
|
|
24163
24113
|
// src/components/ui/table/table-row.tsx
|
|
24164
|
-
import { jsx as jsx216, jsxs as
|
|
24114
|
+
import { jsx as jsx216, jsxs as jsxs174 } from "react/jsx-runtime";
|
|
24165
24115
|
function TableRow({
|
|
24166
24116
|
item,
|
|
24167
24117
|
columns,
|
|
@@ -24209,7 +24159,7 @@ function TableRow({
|
|
|
24209
24159
|
}
|
|
24210
24160
|
return String(value);
|
|
24211
24161
|
};
|
|
24212
|
-
return /* @__PURE__ */
|
|
24162
|
+
return /* @__PURE__ */ jsxs174(
|
|
24213
24163
|
"div",
|
|
24214
24164
|
{
|
|
24215
24165
|
className: cn(
|
|
@@ -24228,7 +24178,7 @@ function TableRow({
|
|
|
24228
24178
|
"aria-label": "View details"
|
|
24229
24179
|
}
|
|
24230
24180
|
),
|
|
24231
|
-
/* @__PURE__ */
|
|
24181
|
+
/* @__PURE__ */ jsxs174(
|
|
24232
24182
|
"div",
|
|
24233
24183
|
{
|
|
24234
24184
|
className: cn(
|
|
@@ -24264,7 +24214,7 @@ function TableRow({
|
|
|
24264
24214
|
}
|
|
24265
24215
|
|
|
24266
24216
|
// src/components/ui/table/table.tsx
|
|
24267
|
-
import { Fragment as Fragment33, jsx as jsx217, jsxs as
|
|
24217
|
+
import { Fragment as Fragment33, jsx as jsx217, jsxs as jsxs175 } from "react/jsx-runtime";
|
|
24268
24218
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
24269
24219
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
24270
24220
|
const result = [...columns];
|
|
@@ -24411,15 +24361,15 @@ function Table({
|
|
|
24411
24361
|
observer.observe(sentinel);
|
|
24412
24362
|
return () => observer.disconnect();
|
|
24413
24363
|
}, [infiniteScroll?.hasNextPage, infiniteScroll?.isFetchingNextPage]);
|
|
24414
|
-
return /* @__PURE__ */
|
|
24415
|
-
showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */
|
|
24416
|
-
/* @__PURE__ */
|
|
24364
|
+
return /* @__PURE__ */ jsxs175("div", { className: cn("flex flex-col gap-1 w-full", containerClassName), children: [
|
|
24365
|
+
showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */ jsxs175("div", { className: "flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2", children: [
|
|
24366
|
+
/* @__PURE__ */ jsxs175("span", { className: "text-ods-text-secondary text-sm", children: [
|
|
24417
24367
|
selectedRows.length,
|
|
24418
24368
|
" item",
|
|
24419
24369
|
selectedRows.length !== 1 ? "s" : "",
|
|
24420
24370
|
" selected"
|
|
24421
24371
|
] }),
|
|
24422
|
-
/* @__PURE__ */ jsx217("div", { className: "flex gap-2", children: bulkActions.map((action, index) => /* @__PURE__ */
|
|
24372
|
+
/* @__PURE__ */ jsx217("div", { className: "flex gap-2", children: bulkActions.map((action, index) => /* @__PURE__ */ jsxs175(
|
|
24423
24373
|
"button",
|
|
24424
24374
|
{
|
|
24425
24375
|
onClick: () => action.onClick(selectedRows),
|
|
@@ -24464,7 +24414,7 @@ function Table({
|
|
|
24464
24414
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
24465
24415
|
hasChevron: Boolean(rowHref)
|
|
24466
24416
|
}
|
|
24467
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */
|
|
24417
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs175(Fragment33, { children: [
|
|
24468
24418
|
data.map((item, index) => /* @__PURE__ */ jsx217(
|
|
24469
24419
|
TableRow,
|
|
24470
24420
|
{
|
|
@@ -24491,7 +24441,7 @@ function Table({
|
|
|
24491
24441
|
}
|
|
24492
24442
|
),
|
|
24493
24443
|
infiniteScroll?.hasNextPage && /* @__PURE__ */ jsx217("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
|
|
24494
|
-
!infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */
|
|
24444
|
+
!infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ jsxs175(
|
|
24495
24445
|
"div",
|
|
24496
24446
|
{
|
|
24497
24447
|
className: "relative rounded-[6px] overflow-hidden pointer-events-none",
|
|
@@ -24571,7 +24521,7 @@ function TableDescriptionCell({
|
|
|
24571
24521
|
|
|
24572
24522
|
// src/components/ui/table/table-timestamp-cell.tsx
|
|
24573
24523
|
init_cn();
|
|
24574
|
-
import { jsx as jsx219, jsxs as
|
|
24524
|
+
import { jsx as jsx219, jsxs as jsxs176 } from "react/jsx-runtime";
|
|
24575
24525
|
function formatTimestampValue(timestamp) {
|
|
24576
24526
|
if (timestamp instanceof Date) {
|
|
24577
24527
|
return timestamp.toLocaleString();
|
|
@@ -24595,7 +24545,7 @@ function TableTimestampCell({
|
|
|
24595
24545
|
formatTimestamp: formatTimestamp2 = true
|
|
24596
24546
|
}) {
|
|
24597
24547
|
const displayTimestamp = formatTimestamp2 ? formatTimestampValue(timestamp) : String(timestamp);
|
|
24598
|
-
return /* @__PURE__ */
|
|
24548
|
+
return /* @__PURE__ */ jsxs176("div", { className: cn("flex flex-col justify-center shrink-0", className), children: [
|
|
24599
24549
|
/* @__PURE__ */ jsx219("span", { className: "text-h4 text-ods-text-primary truncate", children: displayTimestamp }),
|
|
24600
24550
|
/* @__PURE__ */ jsx219("span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: idLabel ? `${idLabel}: ${id}` : id })
|
|
24601
24551
|
] });
|
|
@@ -24609,7 +24559,7 @@ import { useMemo as useMemo18 } from "react";
|
|
|
24609
24559
|
// src/components/ui/query-report-table/query-report-table-header.tsx
|
|
24610
24560
|
init_cn();
|
|
24611
24561
|
import { useRef as useRef28, useState as useState46, useCallback as useCallback22 } from "react";
|
|
24612
|
-
import { jsx as jsx220, jsxs as
|
|
24562
|
+
import { jsx as jsx220, jsxs as jsxs177 } from "react/jsx-runtime";
|
|
24613
24563
|
function QueryReportTableHeader({
|
|
24614
24564
|
columns,
|
|
24615
24565
|
columnWidth,
|
|
@@ -24645,7 +24595,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
24645
24595
|
setIsTruncated(el.scrollWidth > el.clientWidth);
|
|
24646
24596
|
}
|
|
24647
24597
|
}, []);
|
|
24648
|
-
return /* @__PURE__ */ jsx220(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */
|
|
24598
|
+
return /* @__PURE__ */ jsx220(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsxs177(Tooltip, { open: isTruncated ? void 0 : false, children: [
|
|
24649
24599
|
/* @__PURE__ */ jsx220(TooltipTrigger, { asChild: true, onMouseEnter: checkTruncation, children: /* @__PURE__ */ jsx220(
|
|
24650
24600
|
"div",
|
|
24651
24601
|
{
|
|
@@ -24668,7 +24618,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
24668
24618
|
// src/components/ui/query-report-table/query-report-table-row.tsx
|
|
24669
24619
|
init_cn();
|
|
24670
24620
|
import { useRef as useRef29, useState as useState47, useCallback as useCallback23 } from "react";
|
|
24671
|
-
import { jsx as jsx221, jsxs as
|
|
24621
|
+
import { jsx as jsx221, jsxs as jsxs178 } from "react/jsx-runtime";
|
|
24672
24622
|
function QueryReportTableRow({
|
|
24673
24623
|
row,
|
|
24674
24624
|
columns,
|
|
@@ -24721,7 +24671,7 @@ function TruncatedCell({ value, className }) {
|
|
|
24721
24671
|
setIsTruncated(el.scrollWidth > el.clientWidth);
|
|
24722
24672
|
}
|
|
24723
24673
|
}, []);
|
|
24724
|
-
return /* @__PURE__ */ jsx221(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */
|
|
24674
|
+
return /* @__PURE__ */ jsx221(TooltipProvider, { delayDuration: 300, children: /* @__PURE__ */ jsxs178(Tooltip, { open: isTruncated ? void 0 : false, children: [
|
|
24725
24675
|
/* @__PURE__ */ jsx221(TooltipTrigger, { asChild: true, onMouseEnter: checkTruncation, children: /* @__PURE__ */ jsx221("span", { ref: textRef, className: cn("truncate block", className), children: value }) }),
|
|
24726
24676
|
/* @__PURE__ */ jsx221(TooltipContent, { side: "top", className: "max-w-xs break-words", children: value })
|
|
24727
24677
|
] }) });
|
|
@@ -24729,7 +24679,7 @@ function TruncatedCell({ value, className }) {
|
|
|
24729
24679
|
|
|
24730
24680
|
// src/components/ui/query-report-table/query-report-table-skeleton.tsx
|
|
24731
24681
|
init_cn();
|
|
24732
|
-
import { jsx as jsx222, jsxs as
|
|
24682
|
+
import { jsx as jsx222, jsxs as jsxs179 } from "react/jsx-runtime";
|
|
24733
24683
|
function QueryReportTableSkeleton({
|
|
24734
24684
|
rows,
|
|
24735
24685
|
columns,
|
|
@@ -24738,7 +24688,7 @@ function QueryReportTableSkeleton({
|
|
|
24738
24688
|
className
|
|
24739
24689
|
}) {
|
|
24740
24690
|
const isCompact = variant === "compact";
|
|
24741
|
-
return /* @__PURE__ */
|
|
24691
|
+
return /* @__PURE__ */ jsxs179("div", { className: cn("flex flex-col", isCompact ? "gap-0" : "gap-2", className), children: [
|
|
24742
24692
|
/* @__PURE__ */ jsx222("div", { className: cn(
|
|
24743
24693
|
"flex items-center gap-4 px-4",
|
|
24744
24694
|
isCompact ? "py-2 border-b border-ods-border" : ""
|
|
@@ -24823,7 +24773,7 @@ function exportToCSV(data, columns, filename) {
|
|
|
24823
24773
|
}
|
|
24824
24774
|
|
|
24825
24775
|
// src/components/ui/query-report-table/query-report-table.tsx
|
|
24826
|
-
import { jsx as jsx223, jsxs as
|
|
24776
|
+
import { jsx as jsx223, jsxs as jsxs180 } from "react/jsx-runtime";
|
|
24827
24777
|
function QueryReportTable({
|
|
24828
24778
|
title,
|
|
24829
24779
|
data,
|
|
@@ -24865,10 +24815,10 @@ function QueryReportTable({
|
|
|
24865
24815
|
onThumbPointerMove,
|
|
24866
24816
|
onThumbPointerUp
|
|
24867
24817
|
} = useHorizontalScrollbar();
|
|
24868
|
-
return /* @__PURE__ */
|
|
24869
|
-
!isCompact && (title || headerActions || showExport && data.length > 0) && /* @__PURE__ */
|
|
24818
|
+
return /* @__PURE__ */ jsxs180("div", { className: cn("flex flex-col w-full", isCompact ? "gap-0" : "gap-6", className), children: [
|
|
24819
|
+
!isCompact && (title || headerActions || showExport && data.length > 0) && /* @__PURE__ */ jsxs180("div", { className: "flex items-end justify-between pt-6", children: [
|
|
24870
24820
|
/* @__PURE__ */ jsx223("h2", { className: "font-mono font-semibold text-[32px] leading-[40px] text-ods-text-primary", children: title }),
|
|
24871
|
-
/* @__PURE__ */
|
|
24821
|
+
/* @__PURE__ */ jsxs180("div", { className: "flex items-center gap-3", children: [
|
|
24872
24822
|
headerActions,
|
|
24873
24823
|
showExport && data.length > 0 && /* @__PURE__ */ jsx223(
|
|
24874
24824
|
Button,
|
|
@@ -24893,7 +24843,7 @@ function QueryReportTable({
|
|
|
24893
24843
|
}
|
|
24894
24844
|
),
|
|
24895
24845
|
!loading && data.length === 0 && /* @__PURE__ */ jsx223(TableEmptyState, { message: emptyMessage }),
|
|
24896
|
-
!loading && data.length > 0 && /* @__PURE__ */
|
|
24846
|
+
!loading && data.length > 0 && /* @__PURE__ */ jsxs180("div", { className: "flex flex-col gap-1", children: [
|
|
24897
24847
|
!isCompact && thumbRatio > 0 && /* @__PURE__ */ jsx223(
|
|
24898
24848
|
"div",
|
|
24899
24849
|
{
|
|
@@ -24918,14 +24868,14 @@ function QueryReportTable({
|
|
|
24918
24868
|
)
|
|
24919
24869
|
}
|
|
24920
24870
|
),
|
|
24921
|
-
/* @__PURE__ */
|
|
24871
|
+
/* @__PURE__ */ jsxs180("div", { className: "relative", children: [
|
|
24922
24872
|
/* @__PURE__ */ jsx223(
|
|
24923
24873
|
"div",
|
|
24924
24874
|
{
|
|
24925
24875
|
ref: scrollRef,
|
|
24926
24876
|
className: cn("overflow-x-auto", tableClassName),
|
|
24927
24877
|
onScroll,
|
|
24928
|
-
children: /* @__PURE__ */
|
|
24878
|
+
children: /* @__PURE__ */ jsxs180("div", { style: { minWidth: tableMinWidth }, children: [
|
|
24929
24879
|
/* @__PURE__ */ jsx223(
|
|
24930
24880
|
QueryReportTableHeader,
|
|
24931
24881
|
{
|
|
@@ -25011,7 +24961,7 @@ var multiSelectFilterFn = (row, columnId, filterValue) => {
|
|
|
25011
24961
|
};
|
|
25012
24962
|
|
|
25013
24963
|
// src/components/ui/data-table/data-table-column-filter.tsx
|
|
25014
|
-
import { jsx as jsx225, jsxs as
|
|
24964
|
+
import { jsx as jsx225, jsxs as jsxs181 } from "react/jsx-runtime";
|
|
25015
24965
|
var EMPTY_ARRAY = [];
|
|
25016
24966
|
function DataTableColumnFilter({
|
|
25017
24967
|
column,
|
|
@@ -25052,7 +25002,7 @@ function DataTableColumnFilter({
|
|
|
25052
25002
|
FiltersDropdown,
|
|
25053
25003
|
{
|
|
25054
25004
|
className: "!block w-full",
|
|
25055
|
-
triggerElement: /* @__PURE__ */
|
|
25005
|
+
triggerElement: /* @__PURE__ */ jsxs181(
|
|
25056
25006
|
"div",
|
|
25057
25007
|
{
|
|
25058
25008
|
className: cn(
|
|
@@ -25085,7 +25035,7 @@ function DataTableColumnFilter({
|
|
|
25085
25035
|
}
|
|
25086
25036
|
|
|
25087
25037
|
// src/components/ui/data-table/data-table-header.tsx
|
|
25088
|
-
import { Fragment as Fragment34, jsx as jsx226, jsxs as
|
|
25038
|
+
import { Fragment as Fragment34, jsx as jsx226, jsxs as jsxs182 } from "react/jsx-runtime";
|
|
25089
25039
|
function DataTableHeader({
|
|
25090
25040
|
className,
|
|
25091
25041
|
stickyHeader,
|
|
@@ -25111,7 +25061,7 @@ function DataTableHeader({
|
|
|
25111
25061
|
stickyHeader && `sticky z-10 bg-ods-bg ${stickyHeaderOffset ?? "top-0"}`,
|
|
25112
25062
|
className
|
|
25113
25063
|
),
|
|
25114
|
-
children: /* @__PURE__ */
|
|
25064
|
+
children: /* @__PURE__ */ jsxs182("div", { className: "flex items-stretch gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)] relative", children: [
|
|
25115
25065
|
headerGroup.headers.map((header) => /* @__PURE__ */ jsx226(
|
|
25116
25066
|
HeaderCell,
|
|
25117
25067
|
{
|
|
@@ -25155,7 +25105,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
25155
25105
|
label: resolveHeaderLabel(header),
|
|
25156
25106
|
align
|
|
25157
25107
|
}
|
|
25158
|
-
) : /* @__PURE__ */
|
|
25108
|
+
) : /* @__PURE__ */ jsxs182(
|
|
25159
25109
|
"div",
|
|
25160
25110
|
{
|
|
25161
25111
|
className: cn(
|
|
@@ -25198,14 +25148,14 @@ init_cn();
|
|
|
25198
25148
|
init_cn();
|
|
25199
25149
|
init_button2();
|
|
25200
25150
|
import { FileX2 as FileX22 } from "lucide-react";
|
|
25201
|
-
import { jsx as jsx227, jsxs as
|
|
25151
|
+
import { jsx as jsx227, jsxs as jsxs183 } from "react/jsx-runtime";
|
|
25202
25152
|
function DataTableEmpty({
|
|
25203
25153
|
message = "No data available",
|
|
25204
25154
|
icon,
|
|
25205
25155
|
action,
|
|
25206
25156
|
className
|
|
25207
25157
|
}) {
|
|
25208
|
-
return /* @__PURE__ */
|
|
25158
|
+
return /* @__PURE__ */ jsxs183(
|
|
25209
25159
|
"div",
|
|
25210
25160
|
{
|
|
25211
25161
|
className: cn(
|
|
@@ -25237,7 +25187,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
25237
25187
|
|
|
25238
25188
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
25239
25189
|
init_cn();
|
|
25240
|
-
import { Fragment as Fragment35, jsx as jsx228, jsxs as
|
|
25190
|
+
import { Fragment as Fragment35, jsx as jsx228, jsxs as jsxs184 } from "react/jsx-runtime";
|
|
25241
25191
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
25242
25192
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
25243
25193
|
function DataTableSkeleton({
|
|
@@ -25248,7 +25198,7 @@ function DataTableSkeleton({
|
|
|
25248
25198
|
const table = useDataTableContext();
|
|
25249
25199
|
const columns = table.getVisibleFlatColumns();
|
|
25250
25200
|
const firstColumnId = columns[0]?.id;
|
|
25251
|
-
return /* @__PURE__ */ jsx228(Fragment35, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */
|
|
25201
|
+
return /* @__PURE__ */ jsx228(Fragment35, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs184(
|
|
25252
25202
|
"div",
|
|
25253
25203
|
{
|
|
25254
25204
|
className: cn(
|
|
@@ -25266,7 +25216,7 @@ function DataTableSkeleton({
|
|
|
25266
25216
|
),
|
|
25267
25217
|
children: columns.map((column) => {
|
|
25268
25218
|
const meta = column.columnDef.meta;
|
|
25269
|
-
return /* @__PURE__ */
|
|
25219
|
+
return /* @__PURE__ */ jsxs184(
|
|
25270
25220
|
"div",
|
|
25271
25221
|
{
|
|
25272
25222
|
className: cn(
|
|
@@ -25291,7 +25241,7 @@ function DataTableSkeleton({
|
|
|
25291
25241
|
ROW_HEIGHT_MOBILE2,
|
|
25292
25242
|
rowClassName
|
|
25293
25243
|
),
|
|
25294
|
-
children: /* @__PURE__ */
|
|
25244
|
+
children: /* @__PURE__ */ jsxs184("div", { className: "flex-1 flex flex-col justify-center min-w-0 py-[var(--spacing-system-sf)]", children: [
|
|
25295
25245
|
/* @__PURE__ */ jsx228("div", { className: "h-4 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xsf)]" }),
|
|
25296
25246
|
/* @__PURE__ */ jsx228("div", { className: "h-3 bg-ods-bg-surface rounded-sm w-1/2 opacity-60" })
|
|
25297
25247
|
] })
|
|
@@ -25304,7 +25254,7 @@ function DataTableSkeleton({
|
|
|
25304
25254
|
}
|
|
25305
25255
|
|
|
25306
25256
|
// src/components/ui/data-table/data-table-row.tsx
|
|
25307
|
-
import { Fragment as Fragment36, jsx as jsx229, jsxs as
|
|
25257
|
+
import { Fragment as Fragment36, jsx as jsx229, jsxs as jsxs185 } from "react/jsx-runtime";
|
|
25308
25258
|
function DataTableRowImpl({
|
|
25309
25259
|
row,
|
|
25310
25260
|
onClick,
|
|
@@ -25321,7 +25271,7 @@ function DataTableRowImpl({
|
|
|
25321
25271
|
},
|
|
25322
25272
|
[onClick, row.original]
|
|
25323
25273
|
);
|
|
25324
|
-
return /* @__PURE__ */
|
|
25274
|
+
return /* @__PURE__ */ jsxs185(
|
|
25325
25275
|
"div",
|
|
25326
25276
|
{
|
|
25327
25277
|
className: cn(
|
|
@@ -25380,7 +25330,7 @@ function CellContent({ children }) {
|
|
|
25380
25330
|
}
|
|
25381
25331
|
|
|
25382
25332
|
// src/components/ui/data-table/data-table-body.tsx
|
|
25383
|
-
import { jsx as jsx230, jsxs as
|
|
25333
|
+
import { jsx as jsx230, jsxs as jsxs186 } from "react/jsx-runtime";
|
|
25384
25334
|
function DataTableBody({
|
|
25385
25335
|
loading,
|
|
25386
25336
|
emptyMessage = "No data available",
|
|
@@ -25401,7 +25351,7 @@ function DataTableBody({
|
|
|
25401
25351
|
return /* @__PURE__ */ jsx230("div", { className: cn("flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: /* @__PURE__ */ jsx230(DataTableEmpty, { message: emptyMessage }) });
|
|
25402
25352
|
}
|
|
25403
25353
|
const padCount = minRows ? Math.max(0, minRows - rows.length) : 0;
|
|
25404
|
-
return /* @__PURE__ */
|
|
25354
|
+
return /* @__PURE__ */ jsxs186("div", { className: cn("flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: [
|
|
25405
25355
|
rows.map((row, index) => {
|
|
25406
25356
|
const item = row.original;
|
|
25407
25357
|
const href = rowHref?.(item) ?? void 0;
|
|
@@ -25418,7 +25368,7 @@ function DataTableBody({
|
|
|
25418
25368
|
row.id
|
|
25419
25369
|
);
|
|
25420
25370
|
}),
|
|
25421
|
-
padCount > 0 && Array.from({ length: padCount }).map((_, i) => /* @__PURE__ */
|
|
25371
|
+
padCount > 0 && Array.from({ length: padCount }).map((_, i) => /* @__PURE__ */ jsxs186(
|
|
25422
25372
|
"div",
|
|
25423
25373
|
{
|
|
25424
25374
|
className: "relative rounded-md overflow-hidden pointer-events-none",
|
|
@@ -25451,7 +25401,7 @@ function DataTableBody({
|
|
|
25451
25401
|
|
|
25452
25402
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
25453
25403
|
import { useEffect as useEffect36, useRef as useRef30 } from "react";
|
|
25454
|
-
import { Fragment as Fragment37, jsx as jsx231, jsxs as
|
|
25404
|
+
import { Fragment as Fragment37, jsx as jsx231, jsxs as jsxs187 } from "react/jsx-runtime";
|
|
25455
25405
|
function DataTableInfiniteFooter({
|
|
25456
25406
|
hasNextPage,
|
|
25457
25407
|
isFetchingNextPage,
|
|
@@ -25475,7 +25425,7 @@ function DataTableInfiniteFooter({
|
|
|
25475
25425
|
observer.observe(sentinel);
|
|
25476
25426
|
return () => observer.disconnect();
|
|
25477
25427
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
25478
|
-
return /* @__PURE__ */
|
|
25428
|
+
return /* @__PURE__ */ jsxs187(Fragment37, { children: [
|
|
25479
25429
|
isFetchingNextPage && /* @__PURE__ */ jsx231(DataTableSkeleton, { rows: skeletonRows }),
|
|
25480
25430
|
hasNextPage && /* @__PURE__ */ jsx231("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
25481
25431
|
] });
|
|
@@ -25505,7 +25455,7 @@ function DataTableCursorFooter({
|
|
|
25505
25455
|
|
|
25506
25456
|
// src/components/ui/data-table/data-table-row-count.tsx
|
|
25507
25457
|
init_cn();
|
|
25508
|
-
import { jsxs as
|
|
25458
|
+
import { jsxs as jsxs188 } from "react/jsx-runtime";
|
|
25509
25459
|
function DataTableRowCount({
|
|
25510
25460
|
itemName = "result",
|
|
25511
25461
|
totalCount,
|
|
@@ -25517,7 +25467,7 @@ function DataTableRowCount({
|
|
|
25517
25467
|
const count = totalCount ?? table.getRowModel().rows.length;
|
|
25518
25468
|
if (hideWhenEmpty && count === 0) return null;
|
|
25519
25469
|
const label = pluralize?.(count, itemName) ?? (count === 1 ? itemName : `${itemName}s`);
|
|
25520
|
-
return /* @__PURE__ */
|
|
25470
|
+
return /* @__PURE__ */ jsxs188(
|
|
25521
25471
|
"span",
|
|
25522
25472
|
{
|
|
25523
25473
|
className: cn(
|
|
@@ -25588,7 +25538,7 @@ var DataTable = Object.assign(DataTableRoot, {
|
|
|
25588
25538
|
|
|
25589
25539
|
// src/components/ui/phone-input.tsx
|
|
25590
25540
|
import { useCallback as useCallback26, useEffect as useEffect37, useMemo as useMemo20, useRef as useRef31, useState as useState48 } from "react";
|
|
25591
|
-
import { jsx as jsx233, jsxs as
|
|
25541
|
+
import { jsx as jsx233, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
25592
25542
|
function PhoneInput({
|
|
25593
25543
|
value,
|
|
25594
25544
|
countryCode,
|
|
@@ -25626,8 +25576,8 @@ function PhoneInput({
|
|
|
25626
25576
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
25627
25577
|
};
|
|
25628
25578
|
}, []);
|
|
25629
|
-
return /* @__PURE__ */
|
|
25630
|
-
/* @__PURE__ */
|
|
25579
|
+
return /* @__PURE__ */ jsxs189("div", { className: "flex gap-2 w-full min-w-0", children: [
|
|
25580
|
+
/* @__PURE__ */ jsxs189(
|
|
25631
25581
|
Select,
|
|
25632
25582
|
{
|
|
25633
25583
|
value: countryCode,
|
|
@@ -25639,11 +25589,11 @@ function PhoneInput({
|
|
|
25639
25589
|
},
|
|
25640
25590
|
disabled,
|
|
25641
25591
|
children: [
|
|
25642
|
-
/* @__PURE__ */ jsx233(SelectTrigger, { className: "w-[130px] shrink-0", children: /* @__PURE__ */ jsx233(SelectValue, { children: selectedCountry && /* @__PURE__ */
|
|
25592
|
+
/* @__PURE__ */ jsx233(SelectTrigger, { className: "w-[130px] shrink-0", children: /* @__PURE__ */ jsx233(SelectValue, { children: selectedCountry && /* @__PURE__ */ jsxs189("span", { className: "flex items-center gap-1.5", children: [
|
|
25643
25593
|
/* @__PURE__ */ jsx233("span", { children: selectedCountry.flag }),
|
|
25644
25594
|
/* @__PURE__ */ jsx233("span", { children: selectedCountry.dialCode })
|
|
25645
25595
|
] }) }) }),
|
|
25646
|
-
/* @__PURE__ */
|
|
25596
|
+
/* @__PURE__ */ jsxs189(SelectContent, { className: "max-h-[300px] !w-[280px]", children: [
|
|
25647
25597
|
/* @__PURE__ */ jsx233(SelectGroup, { children: priority.map((country) => /* @__PURE__ */ jsx233(CountryOption, { country }, country.code)) }),
|
|
25648
25598
|
/* @__PURE__ */ jsx233(SelectSeparator, {}),
|
|
25649
25599
|
/* @__PURE__ */ jsx233(SelectGroup, { children: others.map((country) => /* @__PURE__ */ jsx233(CountryOption, { country }, country.code)) })
|
|
@@ -25678,7 +25628,7 @@ function PhoneInput({
|
|
|
25678
25628
|
] });
|
|
25679
25629
|
}
|
|
25680
25630
|
function CountryOption({ country }) {
|
|
25681
|
-
return /* @__PURE__ */ jsx233(SelectItem, { value: country.code, textValue: country.name, children: /* @__PURE__ */
|
|
25631
|
+
return /* @__PURE__ */ jsx233(SelectItem, { value: country.code, textValue: country.name, children: /* @__PURE__ */ jsxs189("span", { className: "flex items-center gap-2", children: [
|
|
25682
25632
|
/* @__PURE__ */ jsx233("span", { className: "shrink-0", children: country.flag }),
|
|
25683
25633
|
/* @__PURE__ */ jsx233("span", { className: "shrink-0 text-ods-text-secondary", children: country.dialCode }),
|
|
25684
25634
|
/* @__PURE__ */ jsx233("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap max-w-[140px] inline-block", children: country.name })
|
|
@@ -25690,7 +25640,7 @@ init_cn();
|
|
|
25690
25640
|
import * as PopoverPrimitive3 from "@radix-ui/react-popover";
|
|
25691
25641
|
import * as ScrollAreaPrimitive3 from "@radix-ui/react-scroll-area";
|
|
25692
25642
|
import * as React83 from "react";
|
|
25693
|
-
import { jsx as jsx234, jsxs as
|
|
25643
|
+
import { jsx as jsx234, jsxs as jsxs190 } from "react/jsx-runtime";
|
|
25694
25644
|
var containerStyles = cn(
|
|
25695
25645
|
// Layout & spacing — matches lib Input component
|
|
25696
25646
|
"flex items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
|
|
@@ -25871,9 +25821,9 @@ function SearchInput({
|
|
|
25871
25821
|
const handleOpenChange = (open) => {
|
|
25872
25822
|
setIsOpen(open);
|
|
25873
25823
|
};
|
|
25874
|
-
const defaultRenderResult = (result, isHighlighted) => /* @__PURE__ */
|
|
25824
|
+
const defaultRenderResult = (result, isHighlighted) => /* @__PURE__ */ jsxs190("div", { className: "flex items-center gap-3 w-full min-w-0", children: [
|
|
25875
25825
|
result.icon && /* @__PURE__ */ jsx234("span", { className: "flex-shrink-0 text-ods-text-secondary [&_svg]:size-4", children: result.icon }),
|
|
25876
|
-
/* @__PURE__ */
|
|
25826
|
+
/* @__PURE__ */ jsxs190("div", { className: "min-w-0 flex-1", children: [
|
|
25877
25827
|
/* @__PURE__ */ jsx234("div", { className: cn(
|
|
25878
25828
|
"text-sm font-medium leading-5 truncate",
|
|
25879
25829
|
isHighlighted ? "text-ods-accent" : "text-ods-text-primary"
|
|
@@ -25910,7 +25860,7 @@ function SearchInput({
|
|
|
25910
25860
|
}
|
|
25911
25861
|
if (groups) {
|
|
25912
25862
|
let globalIndex = 0;
|
|
25913
|
-
return Array.from(groups.entries()).map(([groupLabel, groupResults]) => /* @__PURE__ */
|
|
25863
|
+
return Array.from(groups.entries()).map(([groupLabel, groupResults]) => /* @__PURE__ */ jsxs190("div", { children: [
|
|
25914
25864
|
/* @__PURE__ */ jsx234("div", { className: "px-4 py-2 text-[12px] font-semibold text-ods-text-secondary uppercase tracking-wide bg-ods-bg", children: groupLabel }),
|
|
25915
25865
|
groupResults.map((result) => {
|
|
25916
25866
|
const idx = globalIndex++;
|
|
@@ -25921,9 +25871,9 @@ function SearchInput({
|
|
|
25921
25871
|
return flatResults.map((result, index) => renderRow(result, index));
|
|
25922
25872
|
};
|
|
25923
25873
|
const hasValue = currentValue.length > 0;
|
|
25924
|
-
return /* @__PURE__ */
|
|
25925
|
-
/* @__PURE__ */
|
|
25926
|
-
/* @__PURE__ */ jsx234(PopoverPrimitive3.Anchor, { asChild: true, children: /* @__PURE__ */
|
|
25874
|
+
return /* @__PURE__ */ jsxs190("div", { className: cn("relative", className), ref: containerRef, children: [
|
|
25875
|
+
/* @__PURE__ */ jsxs190(PopoverPrimitive3.Root, { open: dropdownVisible, onOpenChange: handleOpenChange, modal: false, children: [
|
|
25876
|
+
/* @__PURE__ */ jsx234(PopoverPrimitive3.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs190(
|
|
25927
25877
|
"div",
|
|
25928
25878
|
{
|
|
25929
25879
|
className: cn(
|
|
@@ -25937,7 +25887,7 @@ function SearchInput({
|
|
|
25937
25887
|
},
|
|
25938
25888
|
children: [
|
|
25939
25889
|
/* @__PURE__ */ jsx234("span", { className: "flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment !== void 0 ? startAdornment : /* @__PURE__ */ jsx234(SearchIcon, {}) }),
|
|
25940
|
-
/* @__PURE__ */
|
|
25890
|
+
/* @__PURE__ */ jsxs190("div", { ref: middleRef, className: "flex-1 flex items-center gap-2 min-w-0 overflow-hidden", children: [
|
|
25941
25891
|
visibleChips.map((chip) => /* @__PURE__ */ jsx234(
|
|
25942
25892
|
Tag,
|
|
25943
25893
|
{
|
|
@@ -25984,7 +25934,7 @@ function SearchInput({
|
|
|
25984
25934
|
}
|
|
25985
25935
|
)
|
|
25986
25936
|
] }),
|
|
25987
|
-
/* @__PURE__ */
|
|
25937
|
+
/* @__PURE__ */ jsxs190("div", { className: "flex items-center gap-1 shrink-0 ml-auto", children: [
|
|
25988
25938
|
hasValue && /* @__PURE__ */ jsx234(
|
|
25989
25939
|
"button",
|
|
25990
25940
|
{
|
|
@@ -26023,7 +25973,7 @@ function SearchInput({
|
|
|
26023
25973
|
e.preventDefault();
|
|
26024
25974
|
}
|
|
26025
25975
|
},
|
|
26026
|
-
children: /* @__PURE__ */
|
|
25976
|
+
children: /* @__PURE__ */ jsxs190(ScrollAreaPrimitive3.Root, { className: "overflow-hidden", children: [
|
|
26027
25977
|
/* @__PURE__ */ jsx234(ScrollAreaPrimitive3.Viewport, { className: "max-h-[320px] w-full", children: /* @__PURE__ */ jsx234("div", { role: "listbox", children: renderDropdownContent() }) }),
|
|
26028
25978
|
/* @__PURE__ */ jsx234(ScrollAreaPrimitive3.Scrollbar, { className: "hidden", orientation: "vertical", children: /* @__PURE__ */ jsx234(ScrollAreaPrimitive3.Thumb, {}) })
|
|
26029
25979
|
] })
|
|
@@ -26079,7 +26029,7 @@ function SearchInput({
|
|
|
26079
26029
|
init_cn();
|
|
26080
26030
|
import * as React84 from "react";
|
|
26081
26031
|
import * as CheckboxPrimitive4 from "@radix-ui/react-checkbox";
|
|
26082
|
-
import { jsx as jsx235, jsxs as
|
|
26032
|
+
import { jsx as jsx235, jsxs as jsxs191 } from "react/jsx-runtime";
|
|
26083
26033
|
function FilterListItem({
|
|
26084
26034
|
title,
|
|
26085
26035
|
meta,
|
|
@@ -26092,7 +26042,7 @@ function FilterListItem({
|
|
|
26092
26042
|
if (disabled) return;
|
|
26093
26043
|
onToggle?.(!selected);
|
|
26094
26044
|
};
|
|
26095
|
-
return /* @__PURE__ */
|
|
26045
|
+
return /* @__PURE__ */ jsxs191(
|
|
26096
26046
|
"div",
|
|
26097
26047
|
{
|
|
26098
26048
|
role: "button",
|
|
@@ -26117,7 +26067,7 @@ function FilterListItem({
|
|
|
26117
26067
|
className
|
|
26118
26068
|
),
|
|
26119
26069
|
children: [
|
|
26120
|
-
/* @__PURE__ */
|
|
26070
|
+
/* @__PURE__ */ jsxs191("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
26121
26071
|
/* @__PURE__ */ jsx235("p", { className: "truncate text-h4 text-ods-text-primary", children: title }),
|
|
26122
26072
|
meta && meta.length > 0 && /* @__PURE__ */ jsx235(
|
|
26123
26073
|
"div",
|
|
@@ -26126,7 +26076,7 @@ function FilterListItem({
|
|
|
26126
26076
|
"flex items-start gap-[var(--spacing-system-xxs)] text-h6",
|
|
26127
26077
|
selected ? "text-ods-accent" : "text-ods-text-secondary"
|
|
26128
26078
|
),
|
|
26129
|
-
children: meta.map((item, index) => /* @__PURE__ */
|
|
26079
|
+
children: meta.map((item, index) => /* @__PURE__ */ jsxs191(React84.Fragment, { children: [
|
|
26130
26080
|
index > 0 && /* @__PURE__ */ jsx235("span", { "aria-hidden": "true", children: "\u2022" }),
|
|
26131
26081
|
/* @__PURE__ */ jsx235("span", { children: item })
|
|
26132
26082
|
] }, index))
|
|
@@ -26197,7 +26147,7 @@ import {
|
|
|
26197
26147
|
useState as useState50
|
|
26198
26148
|
} from "react";
|
|
26199
26149
|
init_cn();
|
|
26200
|
-
import { jsx as jsx236, jsxs as
|
|
26150
|
+
import { jsx as jsx236, jsxs as jsxs192 } from "react/jsx-runtime";
|
|
26201
26151
|
function TagSearchInput({
|
|
26202
26152
|
tags,
|
|
26203
26153
|
searchValue,
|
|
@@ -26260,8 +26210,8 @@ function TagSearchInput({
|
|
|
26260
26210
|
onClearAll?.();
|
|
26261
26211
|
inputRef.current?.focus();
|
|
26262
26212
|
};
|
|
26263
|
-
return /* @__PURE__ */
|
|
26264
|
-
/* @__PURE__ */
|
|
26213
|
+
return /* @__PURE__ */ jsxs192("div", { ref: wrapperRef, className: "relative", children: [
|
|
26214
|
+
/* @__PURE__ */ jsxs192(
|
|
26265
26215
|
"div",
|
|
26266
26216
|
{
|
|
26267
26217
|
className: cn(
|
|
@@ -26279,7 +26229,7 @@ function TagSearchInput({
|
|
|
26279
26229
|
},
|
|
26280
26230
|
children: [
|
|
26281
26231
|
/* @__PURE__ */ jsx236("div", { className: "shrink-0 flex items-center pl-3", children: /* @__PURE__ */ jsx236(SearchIcon, { className: "text-ods-text-secondary size-4 md:size-6" }) }),
|
|
26282
|
-
/* @__PURE__ */
|
|
26232
|
+
/* @__PURE__ */ jsxs192("div", { ref: middleRef, className: "flex-1 flex items-center gap-2 min-w-0 overflow-hidden px-2", children: [
|
|
26283
26233
|
visibleTags.map((tag) => /* @__PURE__ */ jsx236(
|
|
26284
26234
|
Tag,
|
|
26285
26235
|
{
|
|
@@ -26391,7 +26341,7 @@ init_cn();
|
|
|
26391
26341
|
import { useRef as useRef34, useCallback as useCallback27, useState as useState51, useEffect as useEffect40 } from "react";
|
|
26392
26342
|
import dynamic from "next/dynamic";
|
|
26393
26343
|
import { Loader2 as Loader23, Upload as Upload2 } from "lucide-react";
|
|
26394
|
-
import { jsx as jsx237, jsxs as
|
|
26344
|
+
import { jsx as jsx237, jsxs as jsxs193 } from "react/jsx-runtime";
|
|
26395
26345
|
var MDEditor = dynamic(() => import("@uiw/react-md-editor"), { ssr: false });
|
|
26396
26346
|
var MARKDOWN_EDITOR_STYLE_ID = "ods-markdown-editor-styles";
|
|
26397
26347
|
var mdEditorCSS = `
|
|
@@ -26601,7 +26551,7 @@ function MarkdownEditor({
|
|
|
26601
26551
|
cancelAnimationFrame(rafRef.current);
|
|
26602
26552
|
};
|
|
26603
26553
|
}, [scrollLoop, findScrollParent]);
|
|
26604
|
-
return /* @__PURE__ */
|
|
26554
|
+
return /* @__PURE__ */ jsxs193(
|
|
26605
26555
|
"div",
|
|
26606
26556
|
{
|
|
26607
26557
|
ref: wrapperRef,
|
|
@@ -26666,7 +26616,7 @@ function MarkdownEditor({
|
|
|
26666
26616
|
import * as React86 from "react";
|
|
26667
26617
|
import { Loader2 as Loader24, X as X10 } from "lucide-react";
|
|
26668
26618
|
init_cn();
|
|
26669
|
-
import { jsx as jsx238, jsxs as
|
|
26619
|
+
import { jsx as jsx238, jsxs as jsxs194 } from "react/jsx-runtime";
|
|
26670
26620
|
function formatFileSize(bytes) {
|
|
26671
26621
|
if (bytes === 0) return "0 B";
|
|
26672
26622
|
const k = 1024;
|
|
@@ -26855,7 +26805,7 @@ function FileUpload({
|
|
|
26855
26805
|
const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
|
|
26856
26806
|
const fileCount = currentCount;
|
|
26857
26807
|
const canAddMore = multiple && fileCount < maxFiles;
|
|
26858
|
-
return /* @__PURE__ */
|
|
26808
|
+
return /* @__PURE__ */ jsxs194(FieldWrapper, { label: fieldLabel, error: displayError, className, children: [
|
|
26859
26809
|
/* @__PURE__ */ jsx238(
|
|
26860
26810
|
"input",
|
|
26861
26811
|
{
|
|
@@ -26868,7 +26818,7 @@ function FileUpload({
|
|
|
26868
26818
|
disabled
|
|
26869
26819
|
}
|
|
26870
26820
|
),
|
|
26871
|
-
!hasFiles && /* @__PURE__ */
|
|
26821
|
+
!hasFiles && /* @__PURE__ */ jsxs194(
|
|
26872
26822
|
"button",
|
|
26873
26823
|
{
|
|
26874
26824
|
type: "button",
|
|
@@ -26888,14 +26838,14 @@ function FileUpload({
|
|
|
26888
26838
|
),
|
|
26889
26839
|
children: [
|
|
26890
26840
|
/* @__PURE__ */ jsx238("div", { className: "flex items-center p-3 rounded-full bg-ods-card border border-ods-border shrink-0", children: icon || /* @__PURE__ */ jsx238(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
26891
|
-
/* @__PURE__ */
|
|
26841
|
+
/* @__PURE__ */ jsxs194("div", { className: "flex flex-1 flex-col font-['DM_Sans'] font-medium min-w-0", children: [
|
|
26892
26842
|
/* @__PURE__ */ jsx238("span", { className: "text-heading-4 text-ods-text-primary", children: label }),
|
|
26893
26843
|
/* @__PURE__ */ jsx238("span", { className: "text-heading-5 text-ods-text-secondary", children: description })
|
|
26894
26844
|
] })
|
|
26895
26845
|
]
|
|
26896
26846
|
}
|
|
26897
26847
|
),
|
|
26898
|
-
hasFiles && /* @__PURE__ */
|
|
26848
|
+
hasFiles && /* @__PURE__ */ jsxs194("div", { className: "flex flex-col gap-2", children: [
|
|
26899
26849
|
/* @__PURE__ */ jsx238(
|
|
26900
26850
|
"div",
|
|
26901
26851
|
{
|
|
@@ -26904,7 +26854,7 @@ function FileUpload({
|
|
|
26904
26854
|
dragActive && "bg-ods-accent/5"
|
|
26905
26855
|
),
|
|
26906
26856
|
style: maxListHeight ? { maxHeight: typeof maxListHeight === "number" ? `${maxListHeight}px` : maxListHeight, overflowY: "auto" } : void 0,
|
|
26907
|
-
children: isManaged ? managedFiles.map((entry) => /* @__PURE__ */
|
|
26857
|
+
children: isManaged ? managedFiles.map((entry) => /* @__PURE__ */ jsxs194(
|
|
26908
26858
|
"div",
|
|
26909
26859
|
{
|
|
26910
26860
|
className: cn(
|
|
@@ -26912,11 +26862,11 @@ function FileUpload({
|
|
|
26912
26862
|
entry.status === "error" ? "border-[var(--ods-attention-red-error)]/40" : "border-ods-border"
|
|
26913
26863
|
),
|
|
26914
26864
|
children: [
|
|
26915
|
-
/* @__PURE__ */
|
|
26865
|
+
/* @__PURE__ */ jsxs194("div", { className: "flex-1 min-w-0", children: [
|
|
26916
26866
|
/* @__PURE__ */ jsx238("p", { className: "text-heading-5 font-medium text-ods-text-primary truncate", children: entry.fileName }),
|
|
26917
|
-
/* @__PURE__ */
|
|
26867
|
+
/* @__PURE__ */ jsxs194("div", { className: "flex items-center gap-2", children: [
|
|
26918
26868
|
/* @__PURE__ */ jsx238("span", { className: "text-heading-6 text-ods-text-secondary", children: formatFileSize(entry.fileSize) }),
|
|
26919
|
-
entry.status === "uploading" && /* @__PURE__ */
|
|
26869
|
+
entry.status === "uploading" && /* @__PURE__ */ jsxs194("span", { className: "flex items-center gap-1 text-heading-6 text-ods-text-secondary", children: [
|
|
26920
26870
|
/* @__PURE__ */ jsx238(Loader24, { className: "size-3 animate-spin" }),
|
|
26921
26871
|
"Uploading..."
|
|
26922
26872
|
] }),
|
|
@@ -26936,12 +26886,12 @@ function FileUpload({
|
|
|
26936
26886
|
]
|
|
26937
26887
|
},
|
|
26938
26888
|
entry.id
|
|
26939
|
-
)) : files.map((file, index) => /* @__PURE__ */
|
|
26889
|
+
)) : files.map((file, index) => /* @__PURE__ */ jsxs194(
|
|
26940
26890
|
"div",
|
|
26941
26891
|
{
|
|
26942
26892
|
className: "flex items-center gap-3 p-3 rounded-[6px] bg-ods-card border border-ods-border",
|
|
26943
26893
|
children: [
|
|
26944
|
-
/* @__PURE__ */
|
|
26894
|
+
/* @__PURE__ */ jsxs194("div", { className: "flex-1 min-w-0", children: [
|
|
26945
26895
|
/* @__PURE__ */ jsx238("p", { className: "text-heading-5 font-medium text-ods-text-primary truncate", children: file.name }),
|
|
26946
26896
|
/* @__PURE__ */ jsx238("p", { className: "text-heading-6 text-ods-text-secondary", children: formatFileSize(file.size) })
|
|
26947
26897
|
] }),
|
|
@@ -26990,7 +26940,7 @@ function FileUpload({
|
|
|
26990
26940
|
import * as React87 from "react";
|
|
26991
26941
|
import { Loader2 as Loader25 } from "lucide-react";
|
|
26992
26942
|
init_cn();
|
|
26993
|
-
import { Fragment as Fragment39, jsx as jsx239, jsxs as
|
|
26943
|
+
import { Fragment as Fragment39, jsx as jsx239, jsxs as jsxs195 } from "react/jsx-runtime";
|
|
26994
26944
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
26995
26945
|
function formatSize(bytes) {
|
|
26996
26946
|
const mb = bytes / (1024 * 1024);
|
|
@@ -27079,7 +27029,7 @@ function ImageUploader({
|
|
|
27079
27029
|
}
|
|
27080
27030
|
};
|
|
27081
27031
|
const isActionState = dragActive || pressed && !hasImage;
|
|
27082
|
-
return /* @__PURE__ */
|
|
27032
|
+
return /* @__PURE__ */ jsxs195(FieldWrapper, { label: fieldLabel, error: displayError, className, children: [
|
|
27083
27033
|
/* @__PURE__ */ jsx239(
|
|
27084
27034
|
"input",
|
|
27085
27035
|
{
|
|
@@ -27116,7 +27066,7 @@ function ImageUploader({
|
|
|
27116
27066
|
!interactive && "opacity-60",
|
|
27117
27067
|
!hasImage && !interactive && "cursor-not-allowed"
|
|
27118
27068
|
),
|
|
27119
|
-
children: hasImage ? /* @__PURE__ */
|
|
27069
|
+
children: hasImage ? /* @__PURE__ */ jsxs195(Fragment39, { children: [
|
|
27120
27070
|
/* @__PURE__ */ jsx239("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx239(
|
|
27121
27071
|
"img",
|
|
27122
27072
|
{
|
|
@@ -27132,7 +27082,7 @@ function ImageUploader({
|
|
|
27132
27082
|
)
|
|
27133
27083
|
}
|
|
27134
27084
|
) }),
|
|
27135
|
-
/* @__PURE__ */
|
|
27085
|
+
/* @__PURE__ */ jsxs195("div", { className: "absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center gap-4", children: [
|
|
27136
27086
|
/* @__PURE__ */ jsx239(
|
|
27137
27087
|
ActionIconButton,
|
|
27138
27088
|
{
|
|
@@ -27153,9 +27103,9 @@ function ImageUploader({
|
|
|
27153
27103
|
)
|
|
27154
27104
|
] }),
|
|
27155
27105
|
loading && /* @__PURE__ */ jsx239("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
27156
|
-
] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */
|
|
27106
|
+
] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs195(Fragment39, { children: [
|
|
27157
27107
|
/* @__PURE__ */ jsx239("div", { className: "flex shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-card p-[var(--spacing-system-s)]", children: /* @__PURE__ */ jsx239(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
27158
|
-
/* @__PURE__ */
|
|
27108
|
+
/* @__PURE__ */ jsxs195("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
27159
27109
|
/* @__PURE__ */ jsx239("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
27160
27110
|
/* @__PURE__ */ jsx239("p", { className: "text-h6 text-ods-text-secondary", children: description }),
|
|
27161
27111
|
resolvedHint && /* @__PURE__ */ jsx239("p", { className: "text-h6 text-ods-text-secondary", children: resolvedHint })
|
|
@@ -27194,7 +27144,7 @@ function ActionIconButton({ onClick, disabled, ariaLabel, children }) {
|
|
|
27194
27144
|
import * as PopoverPrimitive4 from "@radix-ui/react-popover";
|
|
27195
27145
|
import * as React88 from "react";
|
|
27196
27146
|
init_cn();
|
|
27197
|
-
import { jsx as jsx240, jsxs as
|
|
27147
|
+
import { jsx as jsx240, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
27198
27148
|
function AssigneeDropdown(props) {
|
|
27199
27149
|
if (props.variant === "compact") {
|
|
27200
27150
|
return /* @__PURE__ */ jsx240(CompactAssigneeDropdown, { ...props });
|
|
@@ -27264,9 +27214,9 @@ function CompactAssigneeDropdown({
|
|
|
27264
27214
|
children: /* @__PURE__ */ jsx240(UserPlusIcon, { className: "size-4" })
|
|
27265
27215
|
}
|
|
27266
27216
|
);
|
|
27267
|
-
return /* @__PURE__ */
|
|
27217
|
+
return /* @__PURE__ */ jsxs196(PopoverPrimitive4.Root, { open: isOpen, onOpenChange: setIsOpen, modal: false, children: [
|
|
27268
27218
|
/* @__PURE__ */ jsx240(PopoverPrimitive4.Trigger, { asChild: true, children: trigger }),
|
|
27269
|
-
/* @__PURE__ */ jsx240(PopoverPrimitive4.Portal, { children: /* @__PURE__ */
|
|
27219
|
+
/* @__PURE__ */ jsx240(PopoverPrimitive4.Portal, { children: /* @__PURE__ */ jsxs196(
|
|
27270
27220
|
PopoverPrimitive4.Content,
|
|
27271
27221
|
{
|
|
27272
27222
|
align: "end",
|
|
@@ -27292,7 +27242,7 @@ function CompactAssigneeDropdown({
|
|
|
27292
27242
|
) }),
|
|
27293
27243
|
/* @__PURE__ */ jsx240("div", { className: "max-h-80 overflow-y-auto py-[var(--spacing-system-xs)]", role: "listbox", children: isLoading ? /* @__PURE__ */ jsx240("div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "Loading\u2026" }) : orderedOptions.length === 0 ? /* @__PURE__ */ jsx240("div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "No users found" }) : orderedOptions.map((opt) => {
|
|
27294
27244
|
const isCurrent = currentAssignee?.id === opt.value;
|
|
27295
|
-
return /* @__PURE__ */
|
|
27245
|
+
return /* @__PURE__ */ jsxs196(
|
|
27296
27246
|
"button",
|
|
27297
27247
|
{
|
|
27298
27248
|
type: "button",
|
|
@@ -27339,7 +27289,7 @@ function DefaultAssigneeDropdown({
|
|
|
27339
27289
|
const hasAssignee = !!currentAssignee;
|
|
27340
27290
|
const renderOption = React88.useCallback((option) => {
|
|
27341
27291
|
const opt = option;
|
|
27342
|
-
return /* @__PURE__ */
|
|
27292
|
+
return /* @__PURE__ */ jsxs196("div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
|
|
27343
27293
|
/* @__PURE__ */ jsx240(
|
|
27344
27294
|
SquareAvatar,
|
|
27345
27295
|
{
|
|
@@ -27355,7 +27305,7 @@ function DefaultAssigneeDropdown({
|
|
|
27355
27305
|
] });
|
|
27356
27306
|
}, []);
|
|
27357
27307
|
if (isEditing) {
|
|
27358
|
-
return /* @__PURE__ */
|
|
27308
|
+
return /* @__PURE__ */ jsxs196("div", { className: cn("min-w-0", className), children: [
|
|
27359
27309
|
/* @__PURE__ */ jsx240(
|
|
27360
27310
|
Autocomplete,
|
|
27361
27311
|
{
|
|
@@ -27386,7 +27336,7 @@ function DefaultAssigneeDropdown({
|
|
|
27386
27336
|
] });
|
|
27387
27337
|
}
|
|
27388
27338
|
if (hasAssignee) {
|
|
27389
|
-
return /* @__PURE__ */
|
|
27339
|
+
return /* @__PURE__ */ jsxs196("div", { className: cn("flex items-center gap-[var(--spacing-system-xs)] min-w-0", className), children: [
|
|
27390
27340
|
/* @__PURE__ */ jsx240(
|
|
27391
27341
|
SquareAvatar,
|
|
27392
27342
|
{
|
|
@@ -27398,8 +27348,8 @@ function DefaultAssigneeDropdown({
|
|
|
27398
27348
|
className: "shrink-0"
|
|
27399
27349
|
}
|
|
27400
27350
|
),
|
|
27401
|
-
/* @__PURE__ */ jsx240("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */
|
|
27402
|
-
/* @__PURE__ */ jsx240("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full min-w-0", children: /* @__PURE__ */
|
|
27351
|
+
/* @__PURE__ */ jsx240("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs196("div", { className: "flex flex-col justify-center", children: [
|
|
27352
|
+
/* @__PURE__ */ jsx240("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full min-w-0", children: /* @__PURE__ */ jsxs196(
|
|
27403
27353
|
"button",
|
|
27404
27354
|
{
|
|
27405
27355
|
type: "button",
|
|
@@ -27415,8 +27365,8 @@ function DefaultAssigneeDropdown({
|
|
|
27415
27365
|
] }) })
|
|
27416
27366
|
] });
|
|
27417
27367
|
}
|
|
27418
|
-
return /* @__PURE__ */
|
|
27419
|
-
/* @__PURE__ */
|
|
27368
|
+
return /* @__PURE__ */ jsxs196("div", { className: cn("min-w-0", className), children: [
|
|
27369
|
+
/* @__PURE__ */ jsxs196(
|
|
27420
27370
|
"button",
|
|
27421
27371
|
{
|
|
27422
27372
|
type: "button",
|
|
@@ -27437,9 +27387,9 @@ init_cn();
|
|
|
27437
27387
|
|
|
27438
27388
|
// src/components/ui/ticket-detail-section.tsx
|
|
27439
27389
|
init_cn();
|
|
27440
|
-
import { jsx as jsx241, jsxs as
|
|
27390
|
+
import { jsx as jsx241, jsxs as jsxs197 } from "react/jsx-runtime";
|
|
27441
27391
|
function TicketDetailSection({ label, children, className }) {
|
|
27442
|
-
return /* @__PURE__ */
|
|
27392
|
+
return /* @__PURE__ */ jsxs197("div", { className: cn("flex flex-col gap-1", className), children: [
|
|
27443
27393
|
/* @__PURE__ */ jsx241("p", { className: "text-h5 text-ods-text-secondary", children: label }),
|
|
27444
27394
|
children
|
|
27445
27395
|
] });
|
|
@@ -27448,10 +27398,10 @@ function TicketDetailSection({ label, children, className }) {
|
|
|
27448
27398
|
// src/components/ui/ticket-attachments-list.tsx
|
|
27449
27399
|
init_cn();
|
|
27450
27400
|
import { Download, FileIcon } from "lucide-react";
|
|
27451
|
-
import { jsx as jsx242, jsxs as
|
|
27401
|
+
import { jsx as jsx242, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
27452
27402
|
function TicketAttachmentsList({ attachments, className }) {
|
|
27453
27403
|
if (attachments.length === 0) return null;
|
|
27454
|
-
return /* @__PURE__ */ jsx242("div", { className: cn("rounded-[6px] border border-ods-border overflow-hidden", className), children: attachments.map((attachment, index) => /* @__PURE__ */
|
|
27404
|
+
return /* @__PURE__ */ jsx242("div", { className: cn("rounded-[6px] border border-ods-border overflow-hidden", className), children: attachments.map((attachment, index) => /* @__PURE__ */ jsxs198(
|
|
27455
27405
|
"div",
|
|
27456
27406
|
{
|
|
27457
27407
|
className: cn(
|
|
@@ -27468,7 +27418,7 @@ function TicketAttachmentsList({ attachments, className }) {
|
|
|
27468
27418
|
className: "shrink-0"
|
|
27469
27419
|
}
|
|
27470
27420
|
) : /* @__PURE__ */ jsx242("div", { className: "shrink-0 size-10 flex items-center justify-center rounded-[6px] bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx242(FileIcon, { className: "size-6 text-ods-text-secondary" }) }),
|
|
27471
|
-
/* @__PURE__ */
|
|
27421
|
+
/* @__PURE__ */ jsxs198("div", { className: "flex-1 min-w-0 overflow-hidden", children: [
|
|
27472
27422
|
/* @__PURE__ */ jsx242("p", { className: "text-h4 text-ods-text-primary truncate", children: attachment.fileName }),
|
|
27473
27423
|
/* @__PURE__ */ jsx242("p", { className: "text-h6 text-ods-text-secondary", children: attachment.fileSize })
|
|
27474
27424
|
] }),
|
|
@@ -27495,7 +27445,7 @@ init_cn();
|
|
|
27495
27445
|
// src/components/ui/ticket-note-card.tsx
|
|
27496
27446
|
import * as React89 from "react";
|
|
27497
27447
|
init_cn();
|
|
27498
|
-
import { Fragment as Fragment40, jsx as jsx243, jsxs as
|
|
27448
|
+
import { Fragment as Fragment40, jsx as jsx243, jsxs as jsxs199 } from "react/jsx-runtime";
|
|
27499
27449
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
27500
27450
|
const [isEditing, setIsEditing] = React89.useState(false);
|
|
27501
27451
|
const [editText, setEditText] = React89.useState(note.text);
|
|
@@ -27518,7 +27468,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
27518
27468
|
handleCancel();
|
|
27519
27469
|
}
|
|
27520
27470
|
};
|
|
27521
|
-
return /* @__PURE__ */
|
|
27471
|
+
return /* @__PURE__ */ jsxs199(
|
|
27522
27472
|
"div",
|
|
27523
27473
|
{
|
|
27524
27474
|
className: cn(
|
|
@@ -27538,7 +27488,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
27538
27488
|
className: "shrink-0"
|
|
27539
27489
|
}
|
|
27540
27490
|
),
|
|
27541
|
-
/* @__PURE__ */ jsx243("div", { className: "flex-1 min-w-0 overflow-hidden", children: isEditing ? /* @__PURE__ */
|
|
27491
|
+
/* @__PURE__ */ jsx243("div", { className: "flex-1 min-w-0 overflow-hidden", children: isEditing ? /* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-2", children: [
|
|
27542
27492
|
/* @__PURE__ */ jsx243("div", { className: "flex-1", children: /* @__PURE__ */ jsx243(
|
|
27543
27493
|
Input,
|
|
27544
27494
|
{
|
|
@@ -27569,15 +27519,15 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
27569
27519
|
children: /* @__PURE__ */ jsx243(XmarkIcon, { className: "size-5" })
|
|
27570
27520
|
}
|
|
27571
27521
|
)
|
|
27572
|
-
] }) : /* @__PURE__ */
|
|
27522
|
+
] }) : /* @__PURE__ */ jsxs199(Fragment40, { children: [
|
|
27573
27523
|
/* @__PURE__ */ jsx243("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
27574
|
-
/* @__PURE__ */
|
|
27524
|
+
/* @__PURE__ */ jsxs199("p", { className: "text-h6 text-ods-text-secondary truncate", children: [
|
|
27575
27525
|
note.authorName,
|
|
27576
27526
|
" \u2022 ",
|
|
27577
27527
|
note.createdAt
|
|
27578
27528
|
] })
|
|
27579
27529
|
] }) }),
|
|
27580
|
-
note.isOwn && !isEditing && /* @__PURE__ */
|
|
27530
|
+
note.isOwn && !isEditing && /* @__PURE__ */ jsxs199("div", { className: "flex items-center gap-4 shrink-0", children: [
|
|
27581
27531
|
onDelete && /* @__PURE__ */ jsx243(
|
|
27582
27532
|
"button",
|
|
27583
27533
|
{
|
|
@@ -27605,7 +27555,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
27605
27555
|
}
|
|
27606
27556
|
|
|
27607
27557
|
// src/components/ui/ticket-notes-section.tsx
|
|
27608
|
-
import { jsx as jsx244, jsxs as
|
|
27558
|
+
import { jsx as jsx244, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
27609
27559
|
function TicketNotesSection({
|
|
27610
27560
|
notes,
|
|
27611
27561
|
onAddNote,
|
|
@@ -27627,7 +27577,7 @@ function TicketNotesSection({
|
|
|
27627
27577
|
handleSend();
|
|
27628
27578
|
}
|
|
27629
27579
|
};
|
|
27630
|
-
return /* @__PURE__ */
|
|
27580
|
+
return /* @__PURE__ */ jsxs200("div", { className: cn("flex flex-col gap-2", className), children: [
|
|
27631
27581
|
notes.map((note) => /* @__PURE__ */ jsx244(
|
|
27632
27582
|
TicketNoteCard,
|
|
27633
27583
|
{
|
|
@@ -27637,7 +27587,7 @@ function TicketNotesSection({
|
|
|
27637
27587
|
},
|
|
27638
27588
|
note.id
|
|
27639
27589
|
)),
|
|
27640
|
-
onAddNote && /* @__PURE__ */
|
|
27590
|
+
onAddNote && /* @__PURE__ */ jsxs200("div", { className: "flex items-center gap-2", children: [
|
|
27641
27591
|
/* @__PURE__ */ jsx244("div", { className: "flex-1", children: /* @__PURE__ */ jsx244(
|
|
27642
27592
|
Input,
|
|
27643
27593
|
{
|
|
@@ -27669,10 +27619,10 @@ function TicketNotesSection({
|
|
|
27669
27619
|
}
|
|
27670
27620
|
|
|
27671
27621
|
// src/components/ui/ticket-info-section.tsx
|
|
27672
|
-
import { Fragment as Fragment41, jsx as jsx245, jsxs as
|
|
27622
|
+
import { Fragment as Fragment41, jsx as jsx245, jsxs as jsxs201 } from "react/jsx-runtime";
|
|
27673
27623
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
27674
|
-
return /* @__PURE__ */ jsx245("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */
|
|
27675
|
-
/* @__PURE__ */
|
|
27624
|
+
return /* @__PURE__ */ jsx245("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs201("div", { className: "flex flex-col justify-center", children: [
|
|
27625
|
+
/* @__PURE__ */ jsxs201("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
27676
27626
|
icon && /* @__PURE__ */ jsx245("span", { className: "shrink-0 size-4 flex items-center justify-center text-ods-text-secondary", children: icon }),
|
|
27677
27627
|
onClick ? /* @__PURE__ */ jsx245(
|
|
27678
27628
|
"button",
|
|
@@ -27705,7 +27655,7 @@ function TicketInfoSection({
|
|
|
27705
27655
|
onDeleteNote,
|
|
27706
27656
|
isAddingNote
|
|
27707
27657
|
}) {
|
|
27708
|
-
return /* @__PURE__ */
|
|
27658
|
+
return /* @__PURE__ */ jsxs201(
|
|
27709
27659
|
"div",
|
|
27710
27660
|
{
|
|
27711
27661
|
className: cn(
|
|
@@ -27713,8 +27663,8 @@ function TicketInfoSection({
|
|
|
27713
27663
|
className
|
|
27714
27664
|
),
|
|
27715
27665
|
children: [
|
|
27716
|
-
/* @__PURE__ */
|
|
27717
|
-
/* @__PURE__ */
|
|
27666
|
+
/* @__PURE__ */ jsxs201("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: [
|
|
27667
|
+
/* @__PURE__ */ jsxs201("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
27718
27668
|
/* @__PURE__ */ jsx245(
|
|
27719
27669
|
SquareAvatar,
|
|
27720
27670
|
{
|
|
@@ -27736,8 +27686,8 @@ function TicketInfoSection({
|
|
|
27736
27686
|
isPending: assigned.isPending,
|
|
27737
27687
|
onAssign: assigned.onAssign
|
|
27738
27688
|
}
|
|
27739
|
-
) : /* @__PURE__ */
|
|
27740
|
-
/* @__PURE__ */
|
|
27689
|
+
) : /* @__PURE__ */ jsxs201("div", { className: "min-w-0", children: [
|
|
27690
|
+
/* @__PURE__ */ jsxs201("div", { className: "flex items-center gap-1 text-h4 text-ods-text-secondary", children: [
|
|
27741
27691
|
/* @__PURE__ */ jsx245(UserIcon2, { className: "size-4 shrink-0" }),
|
|
27742
27692
|
/* @__PURE__ */ jsx245("span", { className: "truncate", children: "Unassigned" })
|
|
27743
27693
|
] }),
|
|
@@ -27752,7 +27702,7 @@ function TicketInfoSection({
|
|
|
27752
27702
|
onClick: device?.onClick
|
|
27753
27703
|
}
|
|
27754
27704
|
),
|
|
27755
|
-
/* @__PURE__ */
|
|
27705
|
+
/* @__PURE__ */ jsxs201("div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
27756
27706
|
status && /* @__PURE__ */ jsx245("div", { className: "min-w-0", children: /* @__PURE__ */ jsx245(TicketStatusTag, { status }) }),
|
|
27757
27707
|
onExpand && /* @__PURE__ */ jsx245(
|
|
27758
27708
|
"button",
|
|
@@ -27778,9 +27728,9 @@ function TicketInfoSection({
|
|
|
27778
27728
|
)
|
|
27779
27729
|
] })
|
|
27780
27730
|
] }),
|
|
27781
|
-
expanded && /* @__PURE__ */
|
|
27731
|
+
expanded && /* @__PURE__ */ jsxs201(Fragment41, { children: [
|
|
27782
27732
|
createdAt && /* @__PURE__ */ jsx245("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx245(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
27783
|
-
/* @__PURE__ */
|
|
27733
|
+
/* @__PURE__ */ jsxs201("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
27784
27734
|
description && /* @__PURE__ */ jsx245(SimpleMarkdownRenderer, { content: description }),
|
|
27785
27735
|
attachments && attachments.length > 0 && /* @__PURE__ */ jsx245(TicketDetailSection, { label: "Attachments", children: /* @__PURE__ */ jsx245(TicketAttachmentsList, { attachments }) }),
|
|
27786
27736
|
tags && tags.length > 0 && /* @__PURE__ */ jsx245(TicketDetailSection, { label: "Tags", children: /* @__PURE__ */ jsx245("div", { className: "flex flex-wrap gap-2 min-w-0", children: tags.map((tag) => /* @__PURE__ */ jsx245(Tag, { label: tag, variant: "outline", className: "max-w-full" }, tag)) }) }),
|
|
@@ -27803,7 +27753,7 @@ function TicketInfoSection({
|
|
|
27803
27753
|
|
|
27804
27754
|
// src/components/features/array-entry-manager.tsx
|
|
27805
27755
|
import { Trash2 as Trash22, Plus as Plus2, Save, Loader2 as Loader26 } from "lucide-react";
|
|
27806
|
-
import { jsx as jsx246, jsxs as
|
|
27756
|
+
import { jsx as jsx246, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
27807
27757
|
function ArrayEntryManager({
|
|
27808
27758
|
title,
|
|
27809
27759
|
items,
|
|
@@ -27873,10 +27823,10 @@ function ArrayEntryManager({
|
|
|
27873
27823
|
}
|
|
27874
27824
|
onChange(newItems);
|
|
27875
27825
|
};
|
|
27876
|
-
return /* @__PURE__ */
|
|
27877
|
-
/* @__PURE__ */
|
|
27826
|
+
return /* @__PURE__ */ jsxs202("div", { className: `space-y-3 ${className}`, children: [
|
|
27827
|
+
/* @__PURE__ */ jsxs202("div", { className: "flex items-center justify-between", children: [
|
|
27878
27828
|
/* @__PURE__ */ jsx246(Label, { className: "text-[14px] text-ods-text-primary", children: title }),
|
|
27879
|
-
/* @__PURE__ */
|
|
27829
|
+
/* @__PURE__ */ jsxs202("div", { className: "flex items-center gap-2", children: [
|
|
27880
27830
|
requireSave && isDirty && /* @__PURE__ */ jsx246(
|
|
27881
27831
|
Button,
|
|
27882
27832
|
{
|
|
@@ -27903,9 +27853,9 @@ function ArrayEntryManager({
|
|
|
27903
27853
|
)
|
|
27904
27854
|
] })
|
|
27905
27855
|
] }),
|
|
27906
|
-
workingItems.map((item, index) => /* @__PURE__ */
|
|
27856
|
+
workingItems.map((item, index) => /* @__PURE__ */ jsxs202("div", { className: "flex items-center gap-3 p-3 bg-ods-bg-secondary rounded-lg border border-ods-border", children: [
|
|
27907
27857
|
icon && /* @__PURE__ */ jsx246("div", { className: "w-8 h-8 flex items-center justify-center", children: icon }),
|
|
27908
|
-
/* @__PURE__ */
|
|
27858
|
+
/* @__PURE__ */ jsxs202("div", { className: "flex-1 space-y-2", children: [
|
|
27909
27859
|
renderLabel && renderLabel(item, index),
|
|
27910
27860
|
/* @__PURE__ */ jsx246(
|
|
27911
27861
|
Input,
|
|
@@ -28003,7 +27953,7 @@ function ProviderButton({ provider, onClick, disabled = false, loading = false }
|
|
|
28003
27953
|
}
|
|
28004
27954
|
|
|
28005
27955
|
// src/components/features/auth-providers-list.tsx
|
|
28006
|
-
import { jsx as jsx248, jsxs as
|
|
27956
|
+
import { jsx as jsx248, jsxs as jsxs203 } from "react/jsx-runtime";
|
|
28007
27957
|
function AuthProvidersList({
|
|
28008
27958
|
enabledProviders,
|
|
28009
27959
|
onProviderClick,
|
|
@@ -28022,8 +27972,8 @@ function AuthProvidersList({
|
|
|
28022
27972
|
console.error(`\u274C Auth Providers List: Error with ${provider}:`, error);
|
|
28023
27973
|
}
|
|
28024
27974
|
};
|
|
28025
|
-
return /* @__PURE__ */
|
|
28026
|
-
showDivider && /* @__PURE__ */
|
|
27975
|
+
return /* @__PURE__ */ jsxs203("div", { className: "space-y-3", children: [
|
|
27976
|
+
showDivider && /* @__PURE__ */ jsxs203("div", { className: "relative", children: [
|
|
28027
27977
|
/* @__PURE__ */ jsx248("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx248("div", { className: "w-full border-t border-ods-border" }) }),
|
|
28028
27978
|
/* @__PURE__ */ jsx248("div", { className: "relative flex justify-center text-sm", children: /* @__PURE__ */ jsx248("span", { className: "px-2 bg-ods-card text-ods-text-secondary", children: dividerText }) })
|
|
28029
27979
|
] }),
|
|
@@ -28043,7 +27993,7 @@ function AuthProvidersList({
|
|
|
28043
27993
|
// src/components/features/changelog-manager.tsx
|
|
28044
27994
|
import { Trash2 as Trash23, Plus as Plus3, ChevronDown as ChevronDown7, ChevronUp as ChevronUp3, Eye as Eye2, EyeOff } from "lucide-react";
|
|
28045
27995
|
import { useState as useState59, useEffect as useEffect44 } from "react";
|
|
28046
|
-
import { jsx as jsx249, jsxs as
|
|
27996
|
+
import { jsx as jsx249, jsxs as jsxs204 } from "react/jsx-runtime";
|
|
28047
27997
|
function ChangelogManager({
|
|
28048
27998
|
title,
|
|
28049
27999
|
entries,
|
|
@@ -28100,8 +28050,8 @@ function ChangelogManager({
|
|
|
28100
28050
|
return newSet;
|
|
28101
28051
|
});
|
|
28102
28052
|
};
|
|
28103
|
-
return /* @__PURE__ */
|
|
28104
|
-
/* @__PURE__ */
|
|
28053
|
+
return /* @__PURE__ */ jsxs204("div", { className: `space-y-3 ${className}`, children: [
|
|
28054
|
+
/* @__PURE__ */ jsxs204("div", { className: "flex items-center justify-between", children: [
|
|
28105
28055
|
/* @__PURE__ */ jsx249(Label, { className: "text-[14px] text-ods-text-primary", children: title }),
|
|
28106
28056
|
/* @__PURE__ */ jsx249(
|
|
28107
28057
|
Button,
|
|
@@ -28119,8 +28069,8 @@ function ChangelogManager({
|
|
|
28119
28069
|
entries.map((entry, index) => {
|
|
28120
28070
|
const isExpanded = expandedIndices.has(index);
|
|
28121
28071
|
const hasContent = entry.title.trim().length > 0;
|
|
28122
|
-
return /* @__PURE__ */
|
|
28123
|
-
/* @__PURE__ */
|
|
28072
|
+
return /* @__PURE__ */ jsxs204("div", { className: "bg-ods-bg-secondary rounded-lg border border-ods-border overflow-hidden", children: [
|
|
28073
|
+
/* @__PURE__ */ jsxs204("div", { className: "flex items-center gap-3 p-3", children: [
|
|
28124
28074
|
/* @__PURE__ */ jsx249(
|
|
28125
28075
|
Button,
|
|
28126
28076
|
{
|
|
@@ -28157,8 +28107,8 @@ function ChangelogManager({
|
|
|
28157
28107
|
}
|
|
28158
28108
|
)
|
|
28159
28109
|
] }),
|
|
28160
|
-
isExpanded && /* @__PURE__ */
|
|
28161
|
-
/* @__PURE__ */
|
|
28110
|
+
isExpanded && /* @__PURE__ */ jsxs204("div", { className: "px-3 pb-3 space-y-3 border-t border-ods-border pt-3", children: [
|
|
28111
|
+
/* @__PURE__ */ jsxs204("div", { className: "space-y-1", children: [
|
|
28162
28112
|
/* @__PURE__ */ jsx249(Label, { className: "text-[12px] text-ods-text-secondary", children: "Title *" }),
|
|
28163
28113
|
/* @__PURE__ */ jsx249(
|
|
28164
28114
|
Input,
|
|
@@ -28171,7 +28121,7 @@ function ChangelogManager({
|
|
|
28171
28121
|
}
|
|
28172
28122
|
)
|
|
28173
28123
|
] }),
|
|
28174
|
-
/* @__PURE__ */
|
|
28124
|
+
/* @__PURE__ */ jsxs204("div", { className: "space-y-1", children: [
|
|
28175
28125
|
/* @__PURE__ */ jsx249(Label, { className: "text-[12px] text-ods-text-secondary", children: "Description" }),
|
|
28176
28126
|
/* @__PURE__ */ jsx249(
|
|
28177
28127
|
Textarea,
|
|
@@ -28187,7 +28137,7 @@ function ChangelogManager({
|
|
|
28187
28137
|
] })
|
|
28188
28138
|
] }, index);
|
|
28189
28139
|
}),
|
|
28190
|
-
entries.length === 0 && /* @__PURE__ */ jsx249("div", { className: "text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: /* @__PURE__ */
|
|
28140
|
+
entries.length === 0 && /* @__PURE__ */ jsx249("div", { className: "text-center py-4 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: /* @__PURE__ */ jsxs204("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: [
|
|
28191
28141
|
'No entries added. Click "Add Entry" to create ',
|
|
28192
28142
|
title.toLowerCase(),
|
|
28193
28143
|
"."
|
|
@@ -28196,7 +28146,7 @@ function ChangelogManager({
|
|
|
28196
28146
|
}
|
|
28197
28147
|
|
|
28198
28148
|
// src/components/features/changelog-sections-manager.tsx
|
|
28199
|
-
import { jsx as jsx250, jsxs as
|
|
28149
|
+
import { jsx as jsx250, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
28200
28150
|
function ChangelogSectionsManager({
|
|
28201
28151
|
featuresAdded,
|
|
28202
28152
|
bugsFixed,
|
|
@@ -28209,7 +28159,7 @@ function ChangelogSectionsManager({
|
|
|
28209
28159
|
className = "",
|
|
28210
28160
|
expandAll = false
|
|
28211
28161
|
}) {
|
|
28212
|
-
return /* @__PURE__ */
|
|
28162
|
+
return /* @__PURE__ */ jsxs205("div", { className: `space-y-6 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
28213
28163
|
/* @__PURE__ */ jsx250("h3", { className: "text-h5 text-ods-text-primary", children: "Changelog" }),
|
|
28214
28164
|
/* @__PURE__ */ jsx250(
|
|
28215
28165
|
ChangelogManager,
|
|
@@ -28279,7 +28229,7 @@ function ClickUpTasksManager({
|
|
|
28279
28229
|
// src/components/features/command-box.tsx
|
|
28280
28230
|
init_button2();
|
|
28281
28231
|
init_cn();
|
|
28282
|
-
import { jsx as jsx252, jsxs as
|
|
28232
|
+
import { jsx as jsx252, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
28283
28233
|
var lineClampClasses = {
|
|
28284
28234
|
1: "line-clamp-1",
|
|
28285
28235
|
2: "line-clamp-2",
|
|
@@ -28298,9 +28248,9 @@ function CommandBox({
|
|
|
28298
28248
|
maxLines = 0
|
|
28299
28249
|
}) {
|
|
28300
28250
|
const lineClampClass = maxLines > 0 ? lineClampClasses[maxLines] : void 0;
|
|
28301
|
-
return /* @__PURE__ */
|
|
28251
|
+
return /* @__PURE__ */ jsxs206("div", { className: cn("flex flex-col gap-2", className), children: [
|
|
28302
28252
|
title && /* @__PURE__ */ jsx252("div", { className: "text-ods-text-primary text-[18px] font-medium", children: title }),
|
|
28303
|
-
/* @__PURE__ */
|
|
28253
|
+
/* @__PURE__ */ jsxs206("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-4", children: [
|
|
28304
28254
|
/* @__PURE__ */ jsx252(
|
|
28305
28255
|
"div",
|
|
28306
28256
|
{
|
|
@@ -28312,7 +28262,7 @@ function CommandBox({
|
|
|
28312
28262
|
children: command
|
|
28313
28263
|
}
|
|
28314
28264
|
),
|
|
28315
|
-
(primaryAction || secondaryAction) && /* @__PURE__ */
|
|
28265
|
+
(primaryAction || secondaryAction) && /* @__PURE__ */ jsxs206("div", { className: "flex flex-col md:flex-row gap-3 md:justify-end mt-4", children: [
|
|
28316
28266
|
secondaryAction && /* @__PURE__ */ jsx252(
|
|
28317
28267
|
Button,
|
|
28318
28268
|
{
|
|
@@ -28370,7 +28320,7 @@ import { useState as useState60, useRef as useRef37, useEffect as useEffect45, u
|
|
|
28370
28320
|
// src/components/features/section-selector.tsx
|
|
28371
28321
|
init_cn();
|
|
28372
28322
|
init_button2();
|
|
28373
|
-
import { jsx as jsx253, jsxs as
|
|
28323
|
+
import { jsx as jsx253, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
28374
28324
|
var SectionButton = ({
|
|
28375
28325
|
section,
|
|
28376
28326
|
isActive,
|
|
@@ -28411,11 +28361,11 @@ var SectionButton = ({
|
|
|
28411
28361
|
},
|
|
28412
28362
|
children: layout === "vertical" ? (
|
|
28413
28363
|
// Vertical layout with optional number prefix and leftIcon
|
|
28414
|
-
/* @__PURE__ */
|
|
28364
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex gap-3 items-start w-full", children: [
|
|
28415
28365
|
section.leftIcon && /* @__PURE__ */ jsx253("div", { className: "shrink-0 text-ods-text-primary opacity-70 mt-0.5", children: section.leftIcon }),
|
|
28416
28366
|
section.number && /* @__PURE__ */ jsx253("span", { className: cn(numberClasses, "text-lg tracking-[-0.36px] leading-[24px] shrink-0"), children: section.number }),
|
|
28417
|
-
/* @__PURE__ */
|
|
28418
|
-
/* @__PURE__ */
|
|
28367
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex-1 text-left min-w-0", children: [
|
|
28368
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
28419
28369
|
/* @__PURE__ */ jsx253("p", { className: cn(titleClasses, "font-medium text-lg leading-[24px] whitespace-normal break-words"), children: section.title }),
|
|
28420
28370
|
section.badge && /* @__PURE__ */ jsx253(
|
|
28421
28371
|
StatusBadge,
|
|
@@ -28431,10 +28381,10 @@ var SectionButton = ({
|
|
|
28431
28381
|
] })
|
|
28432
28382
|
) : (
|
|
28433
28383
|
// Wrap layout with title, subtitle, and optional leftIcon
|
|
28434
|
-
/* @__PURE__ */
|
|
28384
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex gap-3 items-start justify-start w-full h-full", style: { textAlign: "left" }, children: [
|
|
28435
28385
|
section.leftIcon && /* @__PURE__ */ jsx253("div", { className: "shrink-0 text-ods-text-primary opacity-70 mt-0.5", children: section.leftIcon }),
|
|
28436
|
-
/* @__PURE__ */
|
|
28437
|
-
/* @__PURE__ */
|
|
28386
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex flex-col items-start justify-start flex-1 gap-1", children: [
|
|
28387
|
+
/* @__PURE__ */ jsxs207("div", { className: "flex items-start gap-2 flex-wrap w-full", children: [
|
|
28438
28388
|
/* @__PURE__ */ jsx253("span", { className: cn(titleClasses, "font-bold text-[18px] leading-[24px] tracking-[-0.36px]"), style: { textAlign: "left" }, children: section.title }),
|
|
28439
28389
|
section.badge && /* @__PURE__ */ jsx253(
|
|
28440
28390
|
StatusBadge,
|
|
@@ -28499,7 +28449,7 @@ var SectionSelector = ({
|
|
|
28499
28449
|
};
|
|
28500
28450
|
|
|
28501
28451
|
// src/components/features/figma-prototype-viewer.tsx
|
|
28502
|
-
import { jsx as jsx254, jsxs as
|
|
28452
|
+
import { jsx as jsx254, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
28503
28453
|
var DESKTOP_BREAKPOINT = 768;
|
|
28504
28454
|
var getContentDimensions = (config) => {
|
|
28505
28455
|
const defaultMobile = { width: 343, height: 600 };
|
|
@@ -28609,7 +28559,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28609
28559
|
embedUrl,
|
|
28610
28560
|
iframeKey
|
|
28611
28561
|
} = state;
|
|
28612
|
-
return /* @__PURE__ */
|
|
28562
|
+
return /* @__PURE__ */ jsxs208("div", { className: cn(
|
|
28613
28563
|
config.hideControls ? "" : "grid grid-cols-1 lg:grid-cols-[296px_1fr] gap-10",
|
|
28614
28564
|
config.className
|
|
28615
28565
|
), children: [
|
|
@@ -28632,7 +28582,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28632
28582
|
minHeight: viewMode !== "DESKTOP" ? "76px" : "96px"
|
|
28633
28583
|
}
|
|
28634
28584
|
) }),
|
|
28635
|
-
/* @__PURE__ */
|
|
28585
|
+
/* @__PURE__ */ jsxs208(
|
|
28636
28586
|
"div",
|
|
28637
28587
|
{
|
|
28638
28588
|
className: cn(
|
|
@@ -28713,8 +28663,8 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28713
28663
|
},
|
|
28714
28664
|
iframeKey
|
|
28715
28665
|
),
|
|
28716
|
-
showSkeleton && /* @__PURE__ */ jsx254("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__ */
|
|
28717
|
-
/* @__PURE__ */
|
|
28666
|
+
showSkeleton && /* @__PURE__ */ jsx254("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__ */ jsxs208("div", { className: "text-center", children: [
|
|
28667
|
+
/* @__PURE__ */ jsxs208("div", { className: "text-xl md:text-2xl font-['Azeret_Mono'] font-semibold text-ods-text-primary", children: [
|
|
28718
28668
|
"Warming up ",
|
|
28719
28669
|
/* @__PURE__ */ jsx254("span", { className: "text-[var(--ods-open-yellow-base)]", children: "Fae" }),
|
|
28720
28670
|
" and ",
|
|
@@ -28931,62 +28881,62 @@ var FigmaPrototypeViewer = ({
|
|
|
28931
28881
|
if (touchTimerRef.current) clearTimeout(touchTimerRef.current);
|
|
28932
28882
|
};
|
|
28933
28883
|
}, []);
|
|
28934
|
-
return /* @__PURE__ */
|
|
28884
|
+
return /* @__PURE__ */ jsxs208("div", { ref: containerRef, children: [
|
|
28935
28885
|
renderUnifiedUI(unifiedState, {
|
|
28936
28886
|
onSectionClick: handleSectionClick,
|
|
28937
28887
|
onTouchStart: handleTouchStart
|
|
28938
28888
|
}, config, iframeRef),
|
|
28939
|
-
showDebugPanel && /* @__PURE__ */
|
|
28889
|
+
showDebugPanel && /* @__PURE__ */ jsxs208("div", { className: "mt-6 p-4 bg-ods-card border border-ods-border rounded-md", children: [
|
|
28940
28890
|
/* @__PURE__ */ jsx254("h3", { className: "font-semibold text-ods-text-primary mb-3", children: "\u{1F50D} Debug Panel" }),
|
|
28941
|
-
/* @__PURE__ */
|
|
28942
|
-
/* @__PURE__ */
|
|
28891
|
+
/* @__PURE__ */ jsxs208("div", { className: "grid grid-cols-2 gap-4 text-sm", children: [
|
|
28892
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28943
28893
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "View Mode:" }),
|
|
28944
28894
|
" ",
|
|
28945
28895
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: viewMode })
|
|
28946
28896
|
] }),
|
|
28947
|
-
/* @__PURE__ */
|
|
28897
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28948
28898
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Iframe State:" }),
|
|
28949
28899
|
" ",
|
|
28950
28900
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: iframeState })
|
|
28951
28901
|
] }),
|
|
28952
|
-
/* @__PURE__ */
|
|
28902
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28953
28903
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Screen:" }),
|
|
28954
28904
|
" ",
|
|
28955
|
-
/* @__PURE__ */
|
|
28905
|
+
/* @__PURE__ */ jsxs208("span", { className: "text-ods-text-primary", children: [
|
|
28956
28906
|
screenWidth,
|
|
28957
28907
|
"px"
|
|
28958
28908
|
] })
|
|
28959
28909
|
] }),
|
|
28960
|
-
/* @__PURE__ */
|
|
28910
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28961
28911
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Touch:" }),
|
|
28962
28912
|
" ",
|
|
28963
28913
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary", children: isTouchDevice ? "Yes" : "No" })
|
|
28964
28914
|
] }),
|
|
28965
|
-
/* @__PURE__ */
|
|
28915
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28966
28916
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Scale:" }),
|
|
28967
28917
|
" ",
|
|
28968
28918
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary", children: scaling.scale.toFixed(2) })
|
|
28969
28919
|
] }),
|
|
28970
|
-
/* @__PURE__ */
|
|
28920
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28971
28921
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Section:" }),
|
|
28972
28922
|
" ",
|
|
28973
28923
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary", children: activeSection })
|
|
28974
28924
|
] }),
|
|
28975
|
-
/* @__PURE__ */
|
|
28925
|
+
/* @__PURE__ */ jsxs208("div", { className: "col-span-2", children: [
|
|
28976
28926
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Active Node ID:" }),
|
|
28977
28927
|
" ",
|
|
28978
28928
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: currentNodeId || "Not detected" })
|
|
28979
28929
|
] })
|
|
28980
28930
|
] }),
|
|
28981
|
-
/* @__PURE__ */
|
|
28931
|
+
/* @__PURE__ */ jsxs208("div", { className: "mt-3 text-xs text-ods-text-secondary", children: [
|
|
28982
28932
|
"Margins: ",
|
|
28983
28933
|
scaling.marginX.toFixed(0),
|
|
28984
28934
|
"px \xD7 ",
|
|
28985
28935
|
scaling.marginY.toFixed(0),
|
|
28986
28936
|
"px"
|
|
28987
28937
|
] }),
|
|
28988
|
-
/* @__PURE__ */ jsx254("div", { className: "mt-3 pt-3 border-t border-ods-border", children: /* @__PURE__ */
|
|
28989
|
-
/* @__PURE__ */
|
|
28938
|
+
/* @__PURE__ */ jsx254("div", { className: "mt-3 pt-3 border-t border-ods-border", children: /* @__PURE__ */ jsxs208("div", { className: "text-xs text-ods-text-secondary space-y-1", children: [
|
|
28939
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
28990
28940
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "File Key:" }),
|
|
28991
28941
|
" ",
|
|
28992
28942
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
@@ -28997,7 +28947,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28997
28947
|
}
|
|
28998
28948
|
})() })
|
|
28999
28949
|
] }),
|
|
29000
|
-
/* @__PURE__ */
|
|
28950
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
29001
28951
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Starting Point:" }),
|
|
29002
28952
|
" ",
|
|
29003
28953
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
@@ -29008,7 +28958,7 @@ var FigmaPrototypeViewer = ({
|
|
|
29008
28958
|
}
|
|
29009
28959
|
})() })
|
|
29010
28960
|
] }),
|
|
29011
|
-
/* @__PURE__ */
|
|
28961
|
+
/* @__PURE__ */ jsxs208("div", { children: [
|
|
29012
28962
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-secondary", children: "Content Dimensions:" }),
|
|
29013
28963
|
" ",
|
|
29014
28964
|
/* @__PURE__ */ jsx254("span", { className: "text-ods-text-primary font-mono", children: (() => {
|
|
@@ -29029,7 +28979,7 @@ var FigmaPrototypeViewer = ({
|
|
|
29029
28979
|
// src/components/features/filters-dropdown.tsx
|
|
29030
28980
|
init_cn();
|
|
29031
28981
|
import { useEffect as useEffect46, useRef as useRef38, useState as useState61 } from "react";
|
|
29032
|
-
import { jsx as jsx255, jsxs as
|
|
28982
|
+
import { jsx as jsx255, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
29033
28983
|
var FilterCheckbox = ({ checked, disabled = false, className }) => {
|
|
29034
28984
|
return /* @__PURE__ */ jsx255(
|
|
29035
28985
|
"div",
|
|
@@ -29225,8 +29175,8 @@ var FiltersDropdown = ({
|
|
|
29225
29175
|
};
|
|
29226
29176
|
return desktopClasses[actualPlacement];
|
|
29227
29177
|
};
|
|
29228
|
-
return /* @__PURE__ */
|
|
29229
|
-
triggerElement ? /* @__PURE__ */ jsx255("div", { ref: triggerRef, onClick: () => setIsOpen(!isOpen), children: triggerElement }) : /* @__PURE__ */
|
|
29178
|
+
return /* @__PURE__ */ jsxs209("div", { ref: containerRef, className: cn("relative inline-block", className), children: [
|
|
29179
|
+
triggerElement ? /* @__PURE__ */ jsx255("div", { ref: triggerRef, onClick: () => setIsOpen(!isOpen), children: triggerElement }) : /* @__PURE__ */ jsxs209(
|
|
29230
29180
|
"button",
|
|
29231
29181
|
{
|
|
29232
29182
|
ref: triggerRef,
|
|
@@ -29259,17 +29209,17 @@ var FiltersDropdown = ({
|
|
|
29259
29209
|
style: isMobile ? {
|
|
29260
29210
|
top: triggerRef.current ? triggerRef.current.getBoundingClientRect().bottom + window.scrollY + 8 : 0
|
|
29261
29211
|
} : void 0,
|
|
29262
|
-
children: /* @__PURE__ */
|
|
29212
|
+
children: /* @__PURE__ */ jsxs209("div", { className: "bg-ods-bg rounded-md border border-ods-border p-4 shadow-xl flex flex-col overflow-hidden", children: [
|
|
29263
29213
|
/* @__PURE__ */ jsx255("div", { className: "flex-1 min-h-0 overflow-y-auto max-h-[250px]", children: sections.map((section, sectionIndex) => {
|
|
29264
29214
|
const sectionSelection = selectedFilters[section.id] || [];
|
|
29265
29215
|
const allSelected = section.options.every(
|
|
29266
29216
|
(opt) => sectionSelection.includes(opt.id)
|
|
29267
29217
|
);
|
|
29268
|
-
return /* @__PURE__ */
|
|
29218
|
+
return /* @__PURE__ */ jsxs209("div", { className: cn(
|
|
29269
29219
|
"space-y-2",
|
|
29270
29220
|
sectionIndex > 0 && "mt-4"
|
|
29271
29221
|
), children: [
|
|
29272
|
-
/* @__PURE__ */
|
|
29222
|
+
/* @__PURE__ */ jsxs209("div", { className: "sticky top-0 z-10 bg-ods-bg flex items-center justify-between pb-2", children: [
|
|
29273
29223
|
/* @__PURE__ */ jsx255("h3", { className: "text-h5 text-ods-text-secondary", children: section.title }),
|
|
29274
29224
|
section.allowSelectAll && section.type === "checkbox" && /* @__PURE__ */ jsx255(
|
|
29275
29225
|
"button",
|
|
@@ -29292,7 +29242,7 @@ var FiltersDropdown = ({
|
|
|
29292
29242
|
}
|
|
29293
29243
|
const isSelected = sectionSelection.includes(option.id);
|
|
29294
29244
|
const isLast = index === section.options.length - 1;
|
|
29295
|
-
return /* @__PURE__ */
|
|
29245
|
+
return /* @__PURE__ */ jsxs209(
|
|
29296
29246
|
"button",
|
|
29297
29247
|
{
|
|
29298
29248
|
type: "button",
|
|
@@ -29314,7 +29264,7 @@ var FiltersDropdown = ({
|
|
|
29314
29264
|
}) })
|
|
29315
29265
|
] }, section.id);
|
|
29316
29266
|
}) }),
|
|
29317
|
-
/* @__PURE__ */
|
|
29267
|
+
/* @__PURE__ */ jsxs209("div", { className: "flex gap-3 mt-4 shrink-0", children: [
|
|
29318
29268
|
/* @__PURE__ */ jsx255(
|
|
29319
29269
|
Button,
|
|
29320
29270
|
{
|
|
@@ -29422,7 +29372,7 @@ function KnowledgeBaseLinksManager({
|
|
|
29422
29372
|
|
|
29423
29373
|
// src/components/features/loading-provider.tsx
|
|
29424
29374
|
import { createContext as createContext7, useContext as useContext7, useState as useState62, useEffect as useEffect47 } from "react";
|
|
29425
|
-
import { jsx as jsx258, jsxs as
|
|
29375
|
+
import { jsx as jsx258, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
29426
29376
|
var LoadingContext = createContext7(void 0);
|
|
29427
29377
|
function LoadingProvider({ children }) {
|
|
29428
29378
|
const [isLoading, setIsLoading] = useState62(false);
|
|
@@ -29451,7 +29401,7 @@ function LoadingProvider({ children }) {
|
|
|
29451
29401
|
if (interval) clearInterval(interval);
|
|
29452
29402
|
};
|
|
29453
29403
|
}, [isLoading]);
|
|
29454
|
-
return /* @__PURE__ */
|
|
29404
|
+
return /* @__PURE__ */ jsxs210(LoadingContext.Provider, { value: { isLoading, setIsLoading }, children: [
|
|
29455
29405
|
progress > 0 && /* @__PURE__ */ jsx258(
|
|
29456
29406
|
Progress,
|
|
29457
29407
|
{
|
|
@@ -29482,8 +29432,8 @@ import {
|
|
|
29482
29432
|
GripVertical,
|
|
29483
29433
|
Plus as Plus4
|
|
29484
29434
|
} from "lucide-react";
|
|
29485
|
-
import
|
|
29486
|
-
import { jsx as jsx259, jsxs as
|
|
29435
|
+
import Image11 from "next/image";
|
|
29436
|
+
import { jsx as jsx259, jsxs as jsxs211 } from "react/jsx-runtime";
|
|
29487
29437
|
function MediaGalleryManager({
|
|
29488
29438
|
media,
|
|
29489
29439
|
onChange,
|
|
@@ -29547,7 +29497,7 @@ function MediaGalleryManager({
|
|
|
29547
29497
|
}, [media, draggedIndex, onChange]);
|
|
29548
29498
|
const renderMediaItem = useCallback30((mediaItem, index) => {
|
|
29549
29499
|
const isDeleting = deletingIndex === index;
|
|
29550
|
-
return /* @__PURE__ */
|
|
29500
|
+
return /* @__PURE__ */ jsxs211(
|
|
29551
29501
|
Card,
|
|
29552
29502
|
{
|
|
29553
29503
|
className: "relative group border-ods-border hover:border-[#FFC008]/30 transition-colors",
|
|
@@ -29578,7 +29528,7 @@ function MediaGalleryManager({
|
|
|
29578
29528
|
preload: "metadata"
|
|
29579
29529
|
}
|
|
29580
29530
|
) : /* @__PURE__ */ jsx259(
|
|
29581
|
-
|
|
29531
|
+
Image11,
|
|
29582
29532
|
{
|
|
29583
29533
|
src: mediaItem.media_url,
|
|
29584
29534
|
alt: mediaItem.title || "Media",
|
|
@@ -29587,8 +29537,8 @@ function MediaGalleryManager({
|
|
|
29587
29537
|
sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
|
|
29588
29538
|
}
|
|
29589
29539
|
) }),
|
|
29590
|
-
/* @__PURE__ */
|
|
29591
|
-
/* @__PURE__ */
|
|
29540
|
+
/* @__PURE__ */ jsxs211("div", { className: "p-3", children: [
|
|
29541
|
+
/* @__PURE__ */ jsxs211("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
29592
29542
|
mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ jsx259(Video4, { className: "h-4 w-4 text-ods-text-secondary" }) : /* @__PURE__ */ jsx259(ImageIcon2, { className: "h-4 w-4 text-ods-text-secondary" }),
|
|
29593
29543
|
/* @__PURE__ */ jsx259("span", { className: "text-sm font-medium text-ods-text-primary capitalize", children: mediaItem.media_type })
|
|
29594
29544
|
] }),
|
|
@@ -29599,10 +29549,10 @@ function MediaGalleryManager({
|
|
|
29599
29549
|
index
|
|
29600
29550
|
);
|
|
29601
29551
|
}, [deletingIndex, handleDragStart, handleDragOver, handleDrop, handleDeleteMedia]);
|
|
29602
|
-
const content = /* @__PURE__ */
|
|
29603
|
-
/* @__PURE__ */ jsx259("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */
|
|
29552
|
+
const content = /* @__PURE__ */ jsxs211("div", { className: `space-y-6 ${className}`, children: [
|
|
29553
|
+
/* @__PURE__ */ jsx259("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */ jsxs211("div", { className: "flex flex-col items-center gap-4", children: [
|
|
29604
29554
|
/* @__PURE__ */ jsx259("div", { className: "w-12 h-12 rounded-full bg-ods-card flex items-center justify-center", children: isUploading ? /* @__PURE__ */ jsx259(Loader27, { className: "h-6 w-6 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsx259(Upload3, { className: "h-6 w-6 text-ods-accent" }) }),
|
|
29605
|
-
/* @__PURE__ */
|
|
29555
|
+
/* @__PURE__ */ jsxs211("div", { children: [
|
|
29606
29556
|
/* @__PURE__ */ jsx259("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-1", children: isUploading ? "Uploading..." : "Upload Media" }),
|
|
29607
29557
|
/* @__PURE__ */ jsx259("p", { className: "text-sm text-ods-text-secondary", children: "Drag and drop or click to select images and videos" }),
|
|
29608
29558
|
/* @__PURE__ */ jsx259("p", { className: "text-xs text-ods-text-secondary mt-1", children: "Maximum file size: 50MB" })
|
|
@@ -29631,13 +29581,13 @@ function MediaGalleryManager({
|
|
|
29631
29581
|
disabled: isUploading
|
|
29632
29582
|
}
|
|
29633
29583
|
),
|
|
29634
|
-
media.length === 0 ? /* @__PURE__ */
|
|
29584
|
+
media.length === 0 ? /* @__PURE__ */ jsxs211("div", { className: "text-center py-8", children: [
|
|
29635
29585
|
/* @__PURE__ */ jsx259(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary mx-auto mb-4" }),
|
|
29636
29586
|
/* @__PURE__ */ jsx259("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-2", children: "No media uploaded yet" }),
|
|
29637
29587
|
/* @__PURE__ */ jsx259("p", { className: "text-sm text-ods-text-secondary", children: "Upload your first image or video to get started" })
|
|
29638
|
-
] }) : /* @__PURE__ */
|
|
29639
|
-
/* @__PURE__ */
|
|
29640
|
-
/* @__PURE__ */
|
|
29588
|
+
] }) : /* @__PURE__ */ jsxs211("div", { children: [
|
|
29589
|
+
/* @__PURE__ */ jsxs211("div", { className: "flex items-center justify-between mb-4", children: [
|
|
29590
|
+
/* @__PURE__ */ jsxs211("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary", children: [
|
|
29641
29591
|
"Media Gallery (",
|
|
29642
29592
|
media.length,
|
|
29643
29593
|
")"
|
|
@@ -29674,7 +29624,7 @@ var MoreAboutButton = ({
|
|
|
29674
29624
|
|
|
29675
29625
|
// src/components/features/os-type-badge-group.tsx
|
|
29676
29626
|
init_cn();
|
|
29677
|
-
import { jsx as jsx261, jsxs as
|
|
29627
|
+
import { jsx as jsx261, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
29678
29628
|
function OSTypeBadgeGroup({
|
|
29679
29629
|
osTypes,
|
|
29680
29630
|
className = "",
|
|
@@ -29686,7 +29636,7 @@ function OSTypeBadgeGroup({
|
|
|
29686
29636
|
}
|
|
29687
29637
|
const displayOsTypes = maxDisplay && osTypes.length > maxDisplay ? osTypes.slice(0, maxDisplay) : osTypes;
|
|
29688
29638
|
const remainingCount = maxDisplay && osTypes.length > maxDisplay ? osTypes.length - maxDisplay : 0;
|
|
29689
|
-
return /* @__PURE__ */
|
|
29639
|
+
return /* @__PURE__ */ jsxs212("div", { className: cn("flex items-center gap-2 flex-wrap", className), children: [
|
|
29690
29640
|
displayOsTypes.map((osType, index) => /* @__PURE__ */ jsx261(
|
|
29691
29641
|
OSTypeBadge,
|
|
29692
29642
|
{
|
|
@@ -29696,7 +29646,7 @@ function OSTypeBadgeGroup({
|
|
|
29696
29646
|
},
|
|
29697
29647
|
`${osType}-${index}`
|
|
29698
29648
|
)),
|
|
29699
|
-
remainingCount > 0 && /* @__PURE__ */
|
|
29649
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs212("span", { className: "text-ods-text-secondary text-sm font-medium", children: [
|
|
29700
29650
|
"+",
|
|
29701
29651
|
remainingCount,
|
|
29702
29652
|
" more"
|
|
@@ -29706,9 +29656,9 @@ function OSTypeBadgeGroup({
|
|
|
29706
29656
|
|
|
29707
29657
|
// src/components/features/parallax-image-showcase.tsx
|
|
29708
29658
|
import { useEffect as useEffect48, useState as useState64, useRef as useRef40 } from "react";
|
|
29709
|
-
import
|
|
29659
|
+
import Image12 from "next/image";
|
|
29710
29660
|
import { motion as motion2, useScroll, useTransform, useMotionValue, useSpring } from "framer-motion";
|
|
29711
|
-
import { jsx as jsx262, jsxs as
|
|
29661
|
+
import { jsx as jsx262, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
29712
29662
|
var ParallaxImageShowcase = ({
|
|
29713
29663
|
images,
|
|
29714
29664
|
className = "",
|
|
@@ -29796,7 +29746,7 @@ var ParallaxImageShowcase = ({
|
|
|
29796
29746
|
{
|
|
29797
29747
|
ref: componentRef,
|
|
29798
29748
|
className: `relative w-full h-full flex items-center ${className}`,
|
|
29799
|
-
children: /* @__PURE__ */
|
|
29749
|
+
children: /* @__PURE__ */ jsxs213("div", { className: "w-full grid grid-cols-1 md:grid-cols-3 gap-4", children: [
|
|
29800
29750
|
leftImage && /* @__PURE__ */ jsx262(
|
|
29801
29751
|
motion2.div,
|
|
29802
29752
|
{
|
|
@@ -29806,7 +29756,7 @@ var ParallaxImageShowcase = ({
|
|
|
29806
29756
|
rotate: rotateGrid
|
|
29807
29757
|
},
|
|
29808
29758
|
children: /* @__PURE__ */ jsx262(
|
|
29809
|
-
|
|
29759
|
+
Image12,
|
|
29810
29760
|
{
|
|
29811
29761
|
src: leftImage.src,
|
|
29812
29762
|
alt: leftImage.alt,
|
|
@@ -29828,7 +29778,7 @@ var ParallaxImageShowcase = ({
|
|
|
29828
29778
|
rotate: rotateGrid
|
|
29829
29779
|
},
|
|
29830
29780
|
children: /* @__PURE__ */ jsx262(
|
|
29831
|
-
|
|
29781
|
+
Image12,
|
|
29832
29782
|
{
|
|
29833
29783
|
src: centerImage.src,
|
|
29834
29784
|
alt: centerImage.alt,
|
|
@@ -29850,7 +29800,7 @@ var ParallaxImageShowcase = ({
|
|
|
29850
29800
|
rotate: rotateGrid
|
|
29851
29801
|
},
|
|
29852
29802
|
children: /* @__PURE__ */ jsx262(
|
|
29853
|
-
|
|
29803
|
+
Image12,
|
|
29854
29804
|
{
|
|
29855
29805
|
src: rightImage.src,
|
|
29856
29806
|
alt: rightImage.alt,
|
|
@@ -29868,22 +29818,22 @@ var ParallaxImageShowcase = ({
|
|
|
29868
29818
|
);
|
|
29869
29819
|
}
|
|
29870
29820
|
if (layout === "boxed") {
|
|
29871
|
-
return /* @__PURE__ */
|
|
29821
|
+
return /* @__PURE__ */ jsxs213(
|
|
29872
29822
|
"div",
|
|
29873
29823
|
{
|
|
29874
29824
|
ref: componentRef,
|
|
29875
29825
|
className: `relative w-full h-full overflow-hidden ${className}`,
|
|
29876
29826
|
children: [
|
|
29877
29827
|
logoElement && /* @__PURE__ */ jsx262("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 z-30 scale-50", children: logoElement }),
|
|
29878
|
-
/* @__PURE__ */
|
|
29879
|
-
leftImage && /* @__PURE__ */
|
|
29828
|
+
/* @__PURE__ */ jsxs213("div", { className: "absolute top-32 inset-x-0 h-80", children: [
|
|
29829
|
+
leftImage && /* @__PURE__ */ jsxs213(
|
|
29880
29830
|
motion2.div,
|
|
29881
29831
|
{
|
|
29882
29832
|
className: "absolute left-20 lg:w-1/2 w-full h-full z-10",
|
|
29883
29833
|
style: { x, y, rotate },
|
|
29884
29834
|
children: [
|
|
29885
29835
|
/* @__PURE__ */ jsx262(
|
|
29886
|
-
|
|
29836
|
+
Image12,
|
|
29887
29837
|
{
|
|
29888
29838
|
src: leftImage.src,
|
|
29889
29839
|
alt: leftImage.alt,
|
|
@@ -29896,14 +29846,14 @@ var ParallaxImageShowcase = ({
|
|
|
29896
29846
|
]
|
|
29897
29847
|
}
|
|
29898
29848
|
),
|
|
29899
|
-
centerImage && /* @__PURE__ */
|
|
29849
|
+
centerImage && /* @__PURE__ */ jsxs213(
|
|
29900
29850
|
motion2.div,
|
|
29901
29851
|
{
|
|
29902
29852
|
className: "absolute top-20 right-20 lg:w-1/2 w-full h-full z-20",
|
|
29903
29853
|
style: { x, y, rotate },
|
|
29904
29854
|
children: [
|
|
29905
29855
|
/* @__PURE__ */ jsx262(
|
|
29906
|
-
|
|
29856
|
+
Image12,
|
|
29907
29857
|
{
|
|
29908
29858
|
src: centerImage.src,
|
|
29909
29859
|
alt: centerImage.alt,
|
|
@@ -29921,7 +29871,7 @@ var ParallaxImageShowcase = ({
|
|
|
29921
29871
|
}
|
|
29922
29872
|
);
|
|
29923
29873
|
}
|
|
29924
|
-
return /* @__PURE__ */
|
|
29874
|
+
return /* @__PURE__ */ jsxs213(
|
|
29925
29875
|
"div",
|
|
29926
29876
|
{
|
|
29927
29877
|
ref: componentRef,
|
|
@@ -29937,7 +29887,7 @@ var ParallaxImageShowcase = ({
|
|
|
29937
29887
|
rotate
|
|
29938
29888
|
},
|
|
29939
29889
|
children: /* @__PURE__ */ jsx262(
|
|
29940
|
-
|
|
29890
|
+
Image12,
|
|
29941
29891
|
{
|
|
29942
29892
|
src: rightImage.src,
|
|
29943
29893
|
alt: rightImage.alt,
|
|
@@ -29958,7 +29908,7 @@ var ParallaxImageShowcase = ({
|
|
|
29958
29908
|
rotate
|
|
29959
29909
|
},
|
|
29960
29910
|
children: /* @__PURE__ */ jsx262(
|
|
29961
|
-
|
|
29911
|
+
Image12,
|
|
29962
29912
|
{
|
|
29963
29913
|
src: centerImage.src,
|
|
29964
29914
|
alt: centerImage.alt,
|
|
@@ -29979,7 +29929,7 @@ var ParallaxImageShowcase = ({
|
|
|
29979
29929
|
rotate
|
|
29980
29930
|
},
|
|
29981
29931
|
children: /* @__PURE__ */ jsx262(
|
|
29982
|
-
|
|
29932
|
+
Image12,
|
|
29983
29933
|
{
|
|
29984
29934
|
src: leftImage.src,
|
|
29985
29935
|
alt: leftImage.alt,
|
|
@@ -29999,7 +29949,7 @@ var ParallaxImageShowcase = ({
|
|
|
29999
29949
|
init_button2();
|
|
30000
29950
|
init_cn();
|
|
30001
29951
|
import { Copy } from "lucide-react";
|
|
30002
|
-
import { jsx as jsx263, jsxs as
|
|
29952
|
+
import { jsx as jsx263, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
30003
29953
|
function PathsDisplay({
|
|
30004
29954
|
paths,
|
|
30005
29955
|
onCopyPath,
|
|
@@ -30012,10 +29962,10 @@ function PathsDisplay({
|
|
|
30012
29962
|
if (!paths || paths.length === 0) {
|
|
30013
29963
|
return null;
|
|
30014
29964
|
}
|
|
30015
|
-
return /* @__PURE__ */
|
|
29965
|
+
return /* @__PURE__ */ jsxs214("div", { className: cn("flex flex-col gap-3", className), children: [
|
|
30016
29966
|
title && /* @__PURE__ */ jsx263("div", { className: "text-ods-text-primary text-[16px] md:text-[18px]", children: title }),
|
|
30017
29967
|
description && /* @__PURE__ */ jsx263("div", { className: "text-ods-text-secondary text-[14px] md:text-[16px]", children: description }),
|
|
30018
|
-
/* @__PURE__ */ jsx263("div", { className: "bg-ods-bg border border-ods-border rounded-[6px] overflow-hidden", children: paths.map((path) => /* @__PURE__ */
|
|
29968
|
+
/* @__PURE__ */ jsx263("div", { className: "bg-ods-bg border border-ods-border rounded-[6px] overflow-hidden", children: paths.map((path) => /* @__PURE__ */ jsxs214(
|
|
30019
29969
|
"div",
|
|
30020
29970
|
{
|
|
30021
29971
|
className: "flex items-center justify-between p-4 border-b border-ods-border last:border-b-0",
|
|
@@ -30063,8 +30013,8 @@ function getOpenFramePaths(platform) {
|
|
|
30063
30013
|
// src/components/features/platform-badge.tsx
|
|
30064
30014
|
init_cn();
|
|
30065
30015
|
import { Globe as Globe2 } from "lucide-react";
|
|
30066
|
-
import { jsx as jsx264, jsxs as
|
|
30067
|
-
var
|
|
30016
|
+
import { jsx as jsx264, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
30017
|
+
var sizeClasses3 = {
|
|
30068
30018
|
xs: {
|
|
30069
30019
|
container: "gap-1 px-1.5 py-0.5",
|
|
30070
30020
|
icon: "h-3 w-3",
|
|
@@ -30170,9 +30120,9 @@ function PlatformBadge({
|
|
|
30170
30120
|
if (!platform) {
|
|
30171
30121
|
return null;
|
|
30172
30122
|
}
|
|
30173
|
-
const sizes =
|
|
30123
|
+
const sizes = sizeClasses3[size];
|
|
30174
30124
|
const colors = platformColors[platform.name] || platformColors.universal;
|
|
30175
|
-
return /* @__PURE__ */
|
|
30125
|
+
return /* @__PURE__ */ jsxs215(
|
|
30176
30126
|
"div",
|
|
30177
30127
|
{
|
|
30178
30128
|
className: cn(
|
|
@@ -30194,7 +30144,7 @@ function PlatformBadge({
|
|
|
30194
30144
|
|
|
30195
30145
|
// src/components/features/platform-filter.tsx
|
|
30196
30146
|
init_button2();
|
|
30197
|
-
import { jsx as jsx265, jsxs as
|
|
30147
|
+
import { jsx as jsx265, jsxs as jsxs216 } from "react/jsx-runtime";
|
|
30198
30148
|
function PlatformFilterComponent({
|
|
30199
30149
|
selectedPlatform,
|
|
30200
30150
|
onPlatformChange,
|
|
@@ -30203,7 +30153,7 @@ function PlatformFilterComponent({
|
|
|
30203
30153
|
showIcons = true,
|
|
30204
30154
|
size = "small-legacy"
|
|
30205
30155
|
}) {
|
|
30206
|
-
return /* @__PURE__ */
|
|
30156
|
+
return /* @__PURE__ */ jsxs216("div", { className: `flex items-center gap-2 flex-wrap ${className}`, children: [
|
|
30207
30157
|
/* @__PURE__ */ jsx265(
|
|
30208
30158
|
Button,
|
|
30209
30159
|
{
|
|
@@ -30233,14 +30183,14 @@ function PlatformFilterComponent({
|
|
|
30233
30183
|
|
|
30234
30184
|
// src/components/features/push-button-selector.tsx
|
|
30235
30185
|
import { Check as Check4 } from "lucide-react";
|
|
30236
|
-
import { jsx as jsx266, jsxs as
|
|
30186
|
+
import { jsx as jsx266, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
30237
30187
|
function PushButtonSelectorSkeleton({ count = 3, hasTitle }) {
|
|
30238
|
-
return /* @__PURE__ */
|
|
30188
|
+
return /* @__PURE__ */ jsxs217("div", { className: "space-y-3", children: [
|
|
30239
30189
|
hasTitle && /* @__PURE__ */ jsx266("div", { className: "h-5 w-20 bg-ods-bg-secondary rounded animate-pulse" }),
|
|
30240
|
-
/* @__PURE__ */ jsx266("div", { className: "space-y-3", children: [...Array(count)].map((_, i) => /* @__PURE__ */ jsx266("div", { className: "p-4 rounded-lg border border-ods-border bg-ods-bg-secondary animate-pulse", children: /* @__PURE__ */
|
|
30241
|
-
/* @__PURE__ */
|
|
30190
|
+
/* @__PURE__ */ jsx266("div", { className: "space-y-3", children: [...Array(count)].map((_, i) => /* @__PURE__ */ jsx266("div", { className: "p-4 rounded-lg border border-ods-border bg-ods-bg-secondary animate-pulse", children: /* @__PURE__ */ jsxs217("div", { className: "flex items-center justify-between", children: [
|
|
30191
|
+
/* @__PURE__ */ jsxs217("div", { className: "flex items-center gap-3", children: [
|
|
30242
30192
|
/* @__PURE__ */ jsx266("div", { className: "w-8 h-8 bg-ods-bg-primary rounded" }),
|
|
30243
|
-
/* @__PURE__ */
|
|
30193
|
+
/* @__PURE__ */ jsxs217("div", { children: [
|
|
30244
30194
|
/* @__PURE__ */ jsx266("div", { className: "h-4 w-20 bg-ods-bg-primary rounded mb-1" }),
|
|
30245
30195
|
/* @__PURE__ */ jsx266("div", { className: "h-3 w-32 bg-ods-bg-primary rounded" })
|
|
30246
30196
|
] })
|
|
@@ -30250,9 +30200,9 @@ function PushButtonSelectorSkeleton({ count = 3, hasTitle }) {
|
|
|
30250
30200
|
] });
|
|
30251
30201
|
}
|
|
30252
30202
|
function PushButtonSelectorError({ message, title }) {
|
|
30253
|
-
return /* @__PURE__ */
|
|
30203
|
+
return /* @__PURE__ */ jsxs217("div", { className: "space-y-3", children: [
|
|
30254
30204
|
title && /* @__PURE__ */ jsx266("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
30255
|
-
/* @__PURE__ */ jsx266("div", { className: "p-4 bg-ods-attention-red-error-secondary border border-ods-attention-red-error/30 rounded-lg", children: /* @__PURE__ */
|
|
30205
|
+
/* @__PURE__ */ jsx266("div", { className: "p-4 bg-ods-attention-red-error-secondary border border-ods-attention-red-error/30 rounded-lg", children: /* @__PURE__ */ jsxs217("div", { className: "font-['DM_Sans'] text-[14px] text-ods-attention-red-error", children: [
|
|
30256
30206
|
"\u26A0\uFE0F ",
|
|
30257
30207
|
message
|
|
30258
30208
|
] }) })
|
|
@@ -30307,10 +30257,10 @@ function PushButtonSelector({
|
|
|
30307
30257
|
${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"}
|
|
30308
30258
|
`,
|
|
30309
30259
|
onClick: () => !option.disabled && toggleSelection(option.id),
|
|
30310
|
-
children: /* @__PURE__ */
|
|
30311
|
-
/* @__PURE__ */
|
|
30260
|
+
children: /* @__PURE__ */ jsxs217("div", { className: "flex items-center justify-between gap-4", children: [
|
|
30261
|
+
/* @__PURE__ */ jsxs217("div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
30312
30262
|
option.icon && /* @__PURE__ */ jsx266("div", { className: `flex-shrink-0 transition-transform duration-200 ${isSelected ? "scale-110" : "group-hover:scale-105"}`, children: option.icon }),
|
|
30313
|
-
/* @__PURE__ */
|
|
30263
|
+
/* @__PURE__ */ jsxs217("div", { className: "flex-1 min-w-0", children: [
|
|
30314
30264
|
/* @__PURE__ */ jsx266("div", { className: "font-['DM_Sans'] text-[16px] font-semibold text-ods-text-primary", children: option.displayName || option.name }),
|
|
30315
30265
|
option.description && /* @__PURE__ */ jsx266("div", { className: "font-['DM_Sans'] text-[12px] text-ods-text-secondary line-clamp-2", children: option.description })
|
|
30316
30266
|
] })
|
|
@@ -30338,14 +30288,14 @@ function PushButtonSelector({
|
|
|
30338
30288
|
ungroupedOptions.push(option);
|
|
30339
30289
|
}
|
|
30340
30290
|
});
|
|
30341
|
-
return /* @__PURE__ */
|
|
30291
|
+
return /* @__PURE__ */ jsxs217("div", { className: "space-y-4", children: [
|
|
30342
30292
|
sections.map((section) => {
|
|
30343
30293
|
const sectionOptions = optionsBySection.get(section.id) || [];
|
|
30344
30294
|
if (sectionOptions.length === 0) return null;
|
|
30345
|
-
return /* @__PURE__ */
|
|
30346
|
-
/* @__PURE__ */
|
|
30295
|
+
return /* @__PURE__ */ jsxs217("div", { className: "space-y-2", children: [
|
|
30296
|
+
/* @__PURE__ */ jsxs217("div", { className: "flex items-center gap-2 px-1", children: [
|
|
30347
30297
|
section.icon && /* @__PURE__ */ jsx266("div", { className: "text-ods-text-secondary", children: section.icon }),
|
|
30348
|
-
/* @__PURE__ */
|
|
30298
|
+
/* @__PURE__ */ jsxs217("div", { children: [
|
|
30349
30299
|
/* @__PURE__ */ jsx266("div", { className: "font-['DM_Sans'] text-[14px] font-semibold text-ods-text-primary", children: section.label }),
|
|
30350
30300
|
section.description && /* @__PURE__ */ jsx266("div", { className: "font-['DM_Sans'] text-[11px] text-ods-text-tertiary", children: section.description })
|
|
30351
30301
|
] })
|
|
@@ -30356,13 +30306,13 @@ function PushButtonSelector({
|
|
|
30356
30306
|
ungroupedOptions.length > 0 && /* @__PURE__ */ jsx266("div", { className: "space-y-2", children: ungroupedOptions.map(renderOption) })
|
|
30357
30307
|
] });
|
|
30358
30308
|
};
|
|
30359
|
-
return /* @__PURE__ */
|
|
30309
|
+
return /* @__PURE__ */ jsxs217("div", { className: `space-y-4 ${className}`, children: [
|
|
30360
30310
|
title && /* @__PURE__ */ jsx266("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
30361
30311
|
renderOptionsContent(),
|
|
30362
|
-
selectionSummary && validSelectedIds.length > 0 && /* @__PURE__ */
|
|
30363
|
-
/* @__PURE__ */
|
|
30312
|
+
selectionSummary && validSelectedIds.length > 0 && /* @__PURE__ */ jsxs217("div", { className: "p-4 bg-ods-attention-green-success-secondary border border-ods-attention-green-success/30 rounded-lg", children: [
|
|
30313
|
+
/* @__PURE__ */ jsxs217("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
30364
30314
|
/* @__PURE__ */ jsx266("div", { className: "w-2 h-2 bg-ods-attention-green-success rounded-full" }),
|
|
30365
|
-
/* @__PURE__ */
|
|
30315
|
+
/* @__PURE__ */ jsxs217("span", { className: "font-['DM_Sans'] text-[14px] text-ods-attention-green-success font-medium", children: [
|
|
30366
30316
|
validSelectedIds.length,
|
|
30367
30317
|
" ",
|
|
30368
30318
|
multiSelect ? "items" : "item",
|
|
@@ -30386,8 +30336,8 @@ function PushButtonSelector({
|
|
|
30386
30336
|
// src/components/features/release-media-manager.tsx
|
|
30387
30337
|
import { useState as useState65, useRef as useRef41 } from "react";
|
|
30388
30338
|
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";
|
|
30389
|
-
import
|
|
30390
|
-
import { jsx as jsx267, jsxs as
|
|
30339
|
+
import Image13 from "next/image";
|
|
30340
|
+
import { jsx as jsx267, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
30391
30341
|
function ReleaseMediaManager({
|
|
30392
30342
|
media,
|
|
30393
30343
|
onChange,
|
|
@@ -30464,10 +30414,10 @@ function ReleaseMediaManager({
|
|
|
30464
30414
|
return /* @__PURE__ */ jsx267(ImageIcon3, { className: "w-5 h-5 text-ods-text-secondary" });
|
|
30465
30415
|
}
|
|
30466
30416
|
};
|
|
30467
|
-
return /* @__PURE__ */
|
|
30468
|
-
/* @__PURE__ */ jsx267("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */
|
|
30417
|
+
return /* @__PURE__ */ jsxs218("div", { className: `space-y-4 ${className}`, children: [
|
|
30418
|
+
/* @__PURE__ */ jsx267("div", { className: "border-2 border-dashed border-ods-border rounded-lg p-6 text-center hover:border-[#FFC008]/50 transition-colors", children: /* @__PURE__ */ jsxs218("div", { className: "flex flex-col items-center gap-4", children: [
|
|
30469
30419
|
/* @__PURE__ */ jsx267("div", { className: "w-12 h-12 rounded-full bg-ods-card flex items-center justify-center", children: uploadingIndex !== null ? /* @__PURE__ */ jsx267(Loader28, { className: "h-6 w-6 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsx267(Upload4, { className: "h-6 w-6 text-ods-accent" }) }),
|
|
30470
|
-
/* @__PURE__ */
|
|
30420
|
+
/* @__PURE__ */ jsxs218("div", { children: [
|
|
30471
30421
|
/* @__PURE__ */ jsx267("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-1", children: uploadingIndex !== null ? "Uploading..." : "Upload Media" }),
|
|
30472
30422
|
/* @__PURE__ */ jsx267("p", { className: "text-sm text-ods-text-secondary", children: "Drag and drop or click to select images and videos" }),
|
|
30473
30423
|
/* @__PURE__ */ jsx267("p", { className: "text-xs text-ods-text-secondary mt-1", children: "Maximum file size: 50MB" })
|
|
@@ -30496,16 +30446,16 @@ function ReleaseMediaManager({
|
|
|
30496
30446
|
disabled: uploadingIndex !== null
|
|
30497
30447
|
}
|
|
30498
30448
|
),
|
|
30499
|
-
media.length > 0 && /* @__PURE__ */
|
|
30500
|
-
/* @__PURE__ */
|
|
30501
|
-
/* @__PURE__ */
|
|
30449
|
+
media.length > 0 && /* @__PURE__ */ jsxs218("div", { children: [
|
|
30450
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center justify-between mb-4", children: [
|
|
30451
|
+
/* @__PURE__ */ jsxs218(Label, { className: "text-[14px] text-ods-text-primary", children: [
|
|
30502
30452
|
"Media Gallery (",
|
|
30503
30453
|
media.length,
|
|
30504
30454
|
")"
|
|
30505
30455
|
] }),
|
|
30506
30456
|
/* @__PURE__ */ jsx267("p", { className: "text-xs text-ods-text-secondary", children: "Drag to reorder" })
|
|
30507
30457
|
] }),
|
|
30508
|
-
/* @__PURE__ */ jsx267("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: media.map((item, index) => /* @__PURE__ */
|
|
30458
|
+
/* @__PURE__ */ jsx267("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: media.map((item, index) => /* @__PURE__ */ jsxs218(
|
|
30509
30459
|
"div",
|
|
30510
30460
|
{
|
|
30511
30461
|
draggable: !item._uploading,
|
|
@@ -30536,7 +30486,7 @@ function ReleaseMediaManager({
|
|
|
30536
30486
|
preload: "metadata"
|
|
30537
30487
|
}
|
|
30538
30488
|
) : /* @__PURE__ */ jsx267(
|
|
30539
|
-
|
|
30489
|
+
Image13,
|
|
30540
30490
|
{
|
|
30541
30491
|
src: item.media_url,
|
|
30542
30492
|
alt: item.title || "Media",
|
|
@@ -30545,14 +30495,14 @@ function ReleaseMediaManager({
|
|
|
30545
30495
|
sizes: "(max-width: 768px) 100vw, 50vw"
|
|
30546
30496
|
}
|
|
30547
30497
|
) }),
|
|
30548
|
-
item._uploading && /* @__PURE__ */ jsx267("div", { className: "aspect-video bg-[#1A1A1A] flex items-center justify-center", children: /* @__PURE__ */
|
|
30498
|
+
item._uploading && /* @__PURE__ */ jsx267("div", { className: "aspect-video bg-[#1A1A1A] flex items-center justify-center", children: /* @__PURE__ */ jsxs218("div", { className: "flex flex-col items-center gap-2", children: [
|
|
30549
30499
|
/* @__PURE__ */ jsx267(Loader28, { className: "h-8 w-8 animate-spin text-ods-accent" }),
|
|
30550
30500
|
/* @__PURE__ */ jsx267("span", { className: "text-sm text-ods-text-secondary", children: "Uploading..." })
|
|
30551
30501
|
] }) }),
|
|
30552
|
-
/* @__PURE__ */
|
|
30553
|
-
/* @__PURE__ */
|
|
30502
|
+
/* @__PURE__ */ jsxs218("div", { className: "p-3 space-y-2", children: [
|
|
30503
|
+
/* @__PURE__ */ jsxs218("div", { className: "flex items-center gap-2", children: [
|
|
30554
30504
|
getIcon(item.media_type),
|
|
30555
|
-
/* @__PURE__ */
|
|
30505
|
+
/* @__PURE__ */ jsxs218(
|
|
30556
30506
|
Select,
|
|
30557
30507
|
{
|
|
30558
30508
|
value: item.media_type,
|
|
@@ -30560,7 +30510,7 @@ function ReleaseMediaManager({
|
|
|
30560
30510
|
disabled: item._uploading,
|
|
30561
30511
|
children: [
|
|
30562
30512
|
/* @__PURE__ */ jsx267(SelectTrigger, { className: "bg-[#161616] h-8 text-xs", children: /* @__PURE__ */ jsx267(SelectValue, {}) }),
|
|
30563
|
-
/* @__PURE__ */
|
|
30513
|
+
/* @__PURE__ */ jsxs218(SelectContent, { className: "bg-ods-card", children: [
|
|
30564
30514
|
/* @__PURE__ */ jsx267(SelectItem, { value: "image", children: "Image" }),
|
|
30565
30515
|
/* @__PURE__ */ jsx267(SelectItem, { value: "video", children: "Video" }),
|
|
30566
30516
|
/* @__PURE__ */ jsx267(SelectItem, { value: "screenshot", children: "Screenshot" }),
|
|
@@ -30587,7 +30537,7 @@ function ReleaseMediaManager({
|
|
|
30587
30537
|
index
|
|
30588
30538
|
)) })
|
|
30589
30539
|
] }),
|
|
30590
|
-
media.length === 0 && /* @__PURE__ */
|
|
30540
|
+
media.length === 0 && /* @__PURE__ */ jsxs218("div", { className: "text-center py-8 px-4 bg-ods-bg-secondary border border-ods-border rounded-lg", children: [
|
|
30591
30541
|
/* @__PURE__ */ jsx267(ImageIcon3, { className: "h-12 w-12 text-ods-text-secondary mx-auto mb-4" }),
|
|
30592
30542
|
/* @__PURE__ */ jsx267("h3", { className: "font-['DM_Sans'] font-semibold text-ods-text-primary mb-2", children: "No media uploaded yet" }),
|
|
30593
30543
|
/* @__PURE__ */ jsx267("p", { className: "text-sm text-ods-text-secondary", children: "Upload your first image or video to get started" })
|
|
@@ -30598,10 +30548,10 @@ function ReleaseMediaManager({
|
|
|
30598
30548
|
// src/components/features/select-button.tsx
|
|
30599
30549
|
init_cn();
|
|
30600
30550
|
import React94 from "react";
|
|
30601
|
-
import { jsx as jsx268, jsxs as
|
|
30551
|
+
import { jsx as jsx268, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
30602
30552
|
var SelectButton = React94.forwardRef(
|
|
30603
30553
|
({ title, description, selected = false, disabled = false, icon, image, tag, tagVariant = "outline", onClick, className }, ref) => {
|
|
30604
|
-
return /* @__PURE__ */
|
|
30554
|
+
return /* @__PURE__ */ jsxs219(
|
|
30605
30555
|
"button",
|
|
30606
30556
|
{
|
|
30607
30557
|
ref,
|
|
@@ -30628,7 +30578,7 @@ var SelectButton = React94.forwardRef(
|
|
|
30628
30578
|
className: "size-full object-cover"
|
|
30629
30579
|
}
|
|
30630
30580
|
) }),
|
|
30631
|
-
/* @__PURE__ */
|
|
30581
|
+
/* @__PURE__ */ jsxs219("span", { className: "flex flex-1 flex-col justify-center min-w-0 overflow-hidden", children: [
|
|
30632
30582
|
/* @__PURE__ */ jsx268("span", { className: "md:text-[18px] text-[14px] font-medium text-ods-text-primary truncate", children: title }),
|
|
30633
30583
|
description && /* @__PURE__ */ jsx268(
|
|
30634
30584
|
"span",
|
|
@@ -30658,8 +30608,8 @@ SelectButton.displayName = "SelectButton";
|
|
|
30658
30608
|
// src/components/features/seo-editor-preview.tsx
|
|
30659
30609
|
import { useState as useState66 } from "react";
|
|
30660
30610
|
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles4 } from "lucide-react";
|
|
30661
|
-
import
|
|
30662
|
-
import { Fragment as Fragment42, jsx as jsx269, jsxs as
|
|
30611
|
+
import Image14 from "next/image";
|
|
30612
|
+
import { Fragment as Fragment42, jsx as jsx269, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
30663
30613
|
function SEOEditorPreview({
|
|
30664
30614
|
seoTitle,
|
|
30665
30615
|
seoDescription,
|
|
@@ -30702,14 +30652,14 @@ function SEOEditorPreview({
|
|
|
30702
30652
|
setIsUploading(false);
|
|
30703
30653
|
}
|
|
30704
30654
|
};
|
|
30705
|
-
return /* @__PURE__ */
|
|
30655
|
+
return /* @__PURE__ */ jsxs220("div", { className: cn("space-y-6 p-6 bg-ods-card border border-ods-border rounded-lg", className), children: [
|
|
30706
30656
|
/* @__PURE__ */ jsx269("h3", { className: "text-h5 text-ods-text-primary", children: "SEO & Open Graph" }),
|
|
30707
|
-
/* @__PURE__ */
|
|
30708
|
-
/* @__PURE__ */
|
|
30709
|
-
/* @__PURE__ */
|
|
30657
|
+
/* @__PURE__ */ jsxs220("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-4", children: [
|
|
30658
|
+
/* @__PURE__ */ jsxs220("div", { className: "space-y-2", children: [
|
|
30659
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-2", children: [
|
|
30710
30660
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
|
|
30711
|
-
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */
|
|
30712
|
-
/* @__PURE__ */
|
|
30661
|
+
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs220(Fragment42, { children: [
|
|
30662
|
+
/* @__PURE__ */ jsxs220(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30713
30663
|
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30714
30664
|
"AI Generated"
|
|
30715
30665
|
] }),
|
|
@@ -30736,11 +30686,11 @@ function SEOEditorPreview({
|
|
|
30736
30686
|
),
|
|
30737
30687
|
!seoTitle && title && /* @__PURE__ */ jsx269("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Auto-populated from title" })
|
|
30738
30688
|
] }),
|
|
30739
|
-
/* @__PURE__ */
|
|
30740
|
-
/* @__PURE__ */
|
|
30689
|
+
/* @__PURE__ */ jsxs220("div", { className: "space-y-2", children: [
|
|
30690
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-2", children: [
|
|
30741
30691
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
|
|
30742
|
-
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */
|
|
30743
|
-
/* @__PURE__ */
|
|
30692
|
+
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs220(Fragment42, { children: [
|
|
30693
|
+
/* @__PURE__ */ jsxs220(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30744
30694
|
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30745
30695
|
"AI Generated"
|
|
30746
30696
|
] }),
|
|
@@ -30767,12 +30717,12 @@ function SEOEditorPreview({
|
|
|
30767
30717
|
)
|
|
30768
30718
|
] })
|
|
30769
30719
|
] }),
|
|
30770
|
-
/* @__PURE__ */
|
|
30771
|
-
/* @__PURE__ */
|
|
30772
|
-
/* @__PURE__ */
|
|
30720
|
+
/* @__PURE__ */ jsxs220("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-4", children: [
|
|
30721
|
+
/* @__PURE__ */ jsxs220("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
30722
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-2", children: [
|
|
30773
30723
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
|
|
30774
|
-
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */
|
|
30775
|
-
/* @__PURE__ */
|
|
30724
|
+
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs220(Fragment42, { children: [
|
|
30725
|
+
/* @__PURE__ */ jsxs220(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30776
30726
|
/* @__PURE__ */ jsx269(Sparkles4, { className: "h-3 w-3" }),
|
|
30777
30727
|
"AI Generated"
|
|
30778
30728
|
] }),
|
|
@@ -30800,12 +30750,12 @@ function SEOEditorPreview({
|
|
|
30800
30750
|
),
|
|
30801
30751
|
!seoDescription && summary && /* @__PURE__ */ jsx269("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Auto-populated from summary" })
|
|
30802
30752
|
] }),
|
|
30803
|
-
/* @__PURE__ */
|
|
30753
|
+
/* @__PURE__ */ jsxs220("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
30804
30754
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "OG Image" }),
|
|
30805
|
-
/* @__PURE__ */
|
|
30806
|
-
displayImage && !imageError ? /* @__PURE__ */
|
|
30755
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex-1 relative", children: [
|
|
30756
|
+
displayImage && !imageError ? /* @__PURE__ */ jsxs220("div", { className: "relative group h-full min-h-[280px]", children: [
|
|
30807
30757
|
/* @__PURE__ */ jsx269(
|
|
30808
|
-
|
|
30758
|
+
Image14,
|
|
30809
30759
|
{
|
|
30810
30760
|
src: displayImage,
|
|
30811
30761
|
alt: "OG Image",
|
|
@@ -30814,7 +30764,7 @@ function SEOEditorPreview({
|
|
|
30814
30764
|
onError: () => setImageError(true)
|
|
30815
30765
|
}
|
|
30816
30766
|
),
|
|
30817
|
-
/* @__PURE__ */
|
|
30767
|
+
/* @__PURE__ */ jsxs220("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: [
|
|
30818
30768
|
onOgImageUpload && /* @__PURE__ */ jsx269(
|
|
30819
30769
|
Button,
|
|
30820
30770
|
{
|
|
@@ -30845,7 +30795,7 @@ function SEOEditorPreview({
|
|
|
30845
30795
|
{
|
|
30846
30796
|
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",
|
|
30847
30797
|
onClick: () => onOgImageUpload && fileInputRef?.click(),
|
|
30848
|
-
children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */
|
|
30798
|
+
children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs220(Fragment42, { children: [
|
|
30849
30799
|
/* @__PURE__ */ jsx269(Upload5, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30850
30800
|
/* @__PURE__ */ jsx269("span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
30851
30801
|
] })
|
|
@@ -30866,14 +30816,14 @@ function SEOEditorPreview({
|
|
|
30866
30816
|
!ogImageUrl && featuredImage && /* @__PURE__ */ jsx269("p", { className: "text-[11px] text-ods-accent font-['DM_Sans']", children: "Using featured image" })
|
|
30867
30817
|
] })
|
|
30868
30818
|
] }),
|
|
30869
|
-
/* @__PURE__ */
|
|
30870
|
-
/* @__PURE__ */
|
|
30819
|
+
/* @__PURE__ */ jsxs220("div", { className: "pt-4 border-t border-ods-border", children: [
|
|
30820
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
30871
30821
|
/* @__PURE__ */ jsx269(Globe3, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
30872
30822
|
/* @__PURE__ */ jsx269("span", { className: "font-['DM_Sans'] text-[12px] font-medium text-ods-text-secondary", children: "Social Media Preview" })
|
|
30873
30823
|
] }),
|
|
30874
|
-
/* @__PURE__ */
|
|
30824
|
+
/* @__PURE__ */ jsxs220("div", { className: "bg-ods-bg border border-ods-border rounded-lg overflow-hidden max-w-[500px]", children: [
|
|
30875
30825
|
/* @__PURE__ */ jsx269("div", { className: "relative w-full h-[260px] bg-ods-bg-active", children: displayImage && !imageError ? /* @__PURE__ */ jsx269(
|
|
30876
|
-
|
|
30826
|
+
Image14,
|
|
30877
30827
|
{
|
|
30878
30828
|
src: displayImage,
|
|
30879
30829
|
alt: displayTitle,
|
|
@@ -30881,12 +30831,12 @@ function SEOEditorPreview({
|
|
|
30881
30831
|
className: "object-cover",
|
|
30882
30832
|
onError: () => setImageError(true)
|
|
30883
30833
|
}
|
|
30884
|
-
) : /* @__PURE__ */ jsx269("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */
|
|
30834
|
+
) : /* @__PURE__ */ jsx269("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs220("div", { className: "text-center", children: [
|
|
30885
30835
|
/* @__PURE__ */ jsx269(Globe3, { className: "w-12 h-12 text-ods-text-secondary mx-auto mb-2" }),
|
|
30886
30836
|
/* @__PURE__ */ jsx269("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: "No preview image" })
|
|
30887
30837
|
] }) }) }),
|
|
30888
|
-
/* @__PURE__ */
|
|
30889
|
-
/* @__PURE__ */
|
|
30838
|
+
/* @__PURE__ */ jsxs220("div", { className: "p-4 space-y-2", children: [
|
|
30839
|
+
/* @__PURE__ */ jsxs220("div", { className: "flex items-center gap-1", children: [
|
|
30890
30840
|
/* @__PURE__ */ jsx269(ExternalLink5, { className: "w-3 h-3 text-ods-text-secondary" }),
|
|
30891
30841
|
/* @__PURE__ */ jsx269("span", { className: "font-['DM_Sans'] text-[11px] text-ods-text-secondary uppercase tracking-wide", children: domain })
|
|
30892
30842
|
] }),
|
|
@@ -30894,7 +30844,7 @@ function SEOEditorPreview({
|
|
|
30894
30844
|
/* @__PURE__ */ jsx269("p", { className: "font-['DM_Sans'] text-[14px] text-ods-text-secondary leading-[1.4] line-clamp-3", children: displayDescription })
|
|
30895
30845
|
] })
|
|
30896
30846
|
] }),
|
|
30897
|
-
/* @__PURE__ */
|
|
30847
|
+
/* @__PURE__ */ jsxs220("div", { className: "space-y-1 mt-3", children: [
|
|
30898
30848
|
!seoTitle.trim() && title && /* @__PURE__ */ jsx269("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using title as SEO title" }),
|
|
30899
30849
|
!seoDescription.trim() && summary && /* @__PURE__ */ jsx269("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using summary as SEO description" }),
|
|
30900
30850
|
!ogImageUrl.trim() && featuredImage.trim() && /* @__PURE__ */ jsx269("p", { className: "font-['DM_Sans'] text-[11px] text-ods-accent", children: "\u2022 Using featured image as OG image" })
|
|
@@ -30905,7 +30855,7 @@ function SEOEditorPreview({
|
|
|
30905
30855
|
|
|
30906
30856
|
// src/components/features/social-links-manager.tsx
|
|
30907
30857
|
import { Trash2 as Trash26, User, Globe as Globe4, Youtube, Instagram, Facebook, MessageCircle as MessageCircle2, Send as Send2, Music } from "lucide-react";
|
|
30908
|
-
import { jsx as jsx270, jsxs as
|
|
30858
|
+
import { jsx as jsx270, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
30909
30859
|
var defaultPlatforms = [];
|
|
30910
30860
|
var iconMap = {
|
|
30911
30861
|
linkedin: LinkedInIcon,
|
|
@@ -30945,14 +30895,14 @@ function SocialLinksManager({
|
|
|
30945
30895
|
const IconComponent = iconMap[iconKey];
|
|
30946
30896
|
return IconComponent ? /* @__PURE__ */ jsx270(IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
|
|
30947
30897
|
};
|
|
30948
|
-
return /* @__PURE__ */
|
|
30898
|
+
return /* @__PURE__ */ jsxs221("div", { className: `space-y-3 ${className}`, children: [
|
|
30949
30899
|
links.map((link, index) => {
|
|
30950
30900
|
const platform = platforms.find((p) => p.name === link.platform);
|
|
30951
30901
|
const Icon2 = getIcon(link, platform);
|
|
30952
|
-
return /* @__PURE__ */
|
|
30902
|
+
return /* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-3 p-3 bg-ods-bg-secondary rounded-lg border border-ods-border", children: [
|
|
30953
30903
|
/* @__PURE__ */ jsx270("div", { className: "w-8 h-8 flex items-center justify-center", children: Icon2 }),
|
|
30954
|
-
/* @__PURE__ */
|
|
30955
|
-
/* @__PURE__ */ jsx270("div", { children: /* @__PURE__ */
|
|
30904
|
+
/* @__PURE__ */ jsxs221("div", { className: "flex-1 grid grid-cols-2 gap-3", children: [
|
|
30905
|
+
/* @__PURE__ */ jsx270("div", { children: /* @__PURE__ */ jsxs221(
|
|
30956
30906
|
Select,
|
|
30957
30907
|
{
|
|
30958
30908
|
value: link.platform,
|
|
@@ -31080,7 +31030,7 @@ StartWithOpenFrameButton.displayName = "StartWithOpenFrameButton";
|
|
|
31080
31030
|
// src/components/features/status-filter-component.tsx
|
|
31081
31031
|
init_button2();
|
|
31082
31032
|
import { Filter } from "lucide-react";
|
|
31083
|
-
import { jsx as jsx272, jsxs as
|
|
31033
|
+
import { jsx as jsx272, jsxs as jsxs222 } from "react/jsx-runtime";
|
|
31084
31034
|
function StatusFilterComponent({
|
|
31085
31035
|
selectedStatus,
|
|
31086
31036
|
onStatusChange,
|
|
@@ -31090,8 +31040,8 @@ function StatusFilterComponent({
|
|
|
31090
31040
|
className = ""
|
|
31091
31041
|
}) {
|
|
31092
31042
|
const filteredOptions = statusOptions.filter((option) => option.value !== "all");
|
|
31093
|
-
return /* @__PURE__ */
|
|
31094
|
-
/* @__PURE__ */
|
|
31043
|
+
return /* @__PURE__ */ jsxs222("div", { className: `flex flex-wrap items-center gap-3 p-4 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
31044
|
+
/* @__PURE__ */ jsxs222("div", { className: "flex items-center gap-2", children: [
|
|
31095
31045
|
/* @__PURE__ */ jsx272(Filter, { className: "h-4 w-4 text-ods-accent" }),
|
|
31096
31046
|
/* @__PURE__ */ jsx272("span", { className: "text-h5 text-ods-text-secondary", children: "Status" })
|
|
31097
31047
|
] }),
|
|
@@ -31118,7 +31068,7 @@ function StatusFilterComponent({
|
|
|
31118
31068
|
},
|
|
31119
31069
|
option.value
|
|
31120
31070
|
)),
|
|
31121
|
-
showCount && /* @__PURE__ */
|
|
31071
|
+
showCount && /* @__PURE__ */ jsxs222("div", { className: "ml-auto text-[12px] font-['DM_Sans'] text-ods-text-secondary shrink-0", children: [
|
|
31122
31072
|
count,
|
|
31123
31073
|
" items"
|
|
31124
31074
|
] })
|
|
@@ -31128,7 +31078,7 @@ function StatusFilterComponent({
|
|
|
31128
31078
|
// src/components/features/tags-selector.tsx
|
|
31129
31079
|
import { useState as useState67 } from "react";
|
|
31130
31080
|
import { Search as Search2, X as X12, Plus as Plus6, Loader2 as Loader210 } from "lucide-react";
|
|
31131
|
-
import { jsx as jsx273, jsxs as
|
|
31081
|
+
import { jsx as jsx273, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
31132
31082
|
function TagsSelector({
|
|
31133
31083
|
availableTags,
|
|
31134
31084
|
selectedTagIds,
|
|
@@ -31181,16 +31131,16 @@ function TagsSelector({
|
|
|
31181
31131
|
};
|
|
31182
31132
|
const canCreateNewTag = allowCreate && onCreateTag && searchQuery.trim() && !tagExistsWithName(searchQuery.trim());
|
|
31183
31133
|
const filteredTags = getFilteredTagsForAutocomplete();
|
|
31184
|
-
return /* @__PURE__ */
|
|
31185
|
-
/* @__PURE__ */
|
|
31134
|
+
return /* @__PURE__ */ jsxs223("div", { className: cn("space-y-2", className), children: [
|
|
31135
|
+
/* @__PURE__ */ jsxs223("div", { className: "relative", children: [
|
|
31186
31136
|
/* @__PURE__ */ jsx273("div", { className: "absolute top-3 left-3 flex items-center pointer-events-none z-10", children: /* @__PURE__ */ jsx273(Search2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
|
|
31187
|
-
/* @__PURE__ */
|
|
31137
|
+
/* @__PURE__ */ jsxs223("div", { className: cn(
|
|
31188
31138
|
"w-full bg-ods-bg border border-ods-border rounded-lg",
|
|
31189
31139
|
"focus-within:ring-2 focus-within:ring-ods-accent focus-within:border-ods-accent",
|
|
31190
31140
|
"transition-all duration-200 flex flex-wrap items-center gap-1.5 p-2 pl-10 min-h-[42px]",
|
|
31191
31141
|
disabled && "opacity-50 cursor-not-allowed"
|
|
31192
31142
|
), children: [
|
|
31193
|
-
getSelectedTags().map((tag) => /* @__PURE__ */
|
|
31143
|
+
getSelectedTags().map((tag) => /* @__PURE__ */ jsxs223(
|
|
31194
31144
|
"span",
|
|
31195
31145
|
{
|
|
31196
31146
|
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']",
|
|
@@ -31261,8 +31211,8 @@ function TagsSelector({
|
|
|
31261
31211
|
}
|
|
31262
31212
|
)
|
|
31263
31213
|
] }),
|
|
31264
|
-
showDropdown && !disabled && /* @__PURE__ */ jsx273("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__ */
|
|
31265
|
-
canCreateNewTag && /* @__PURE__ */
|
|
31214
|
+
showDropdown && !disabled && /* @__PURE__ */ jsx273("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__ */ jsxs223("div", { className: "p-3", children: [
|
|
31215
|
+
canCreateNewTag && /* @__PURE__ */ jsxs223(
|
|
31266
31216
|
Button,
|
|
31267
31217
|
{
|
|
31268
31218
|
variant: "outline",
|
|
@@ -31273,7 +31223,7 @@ function TagsSelector({
|
|
|
31273
31223
|
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",
|
|
31274
31224
|
children: [
|
|
31275
31225
|
"Create tag: ",
|
|
31276
|
-
/* @__PURE__ */
|
|
31226
|
+
/* @__PURE__ */ jsxs223("strong", { children: [
|
|
31277
31227
|
'"',
|
|
31278
31228
|
searchQuery.trim(),
|
|
31279
31229
|
'"'
|
|
@@ -31294,8 +31244,8 @@ function TagsSelector({
|
|
|
31294
31244
|
)) }) : !canCreateNewTag ? /* @__PURE__ */ jsx273("div", { className: "py-4 px-4 text-center w-full", children: /* @__PURE__ */ jsx273("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: searchQuery.trim() ? `No tags found for "${searchQuery}"` : "No tags available" }) }) : null
|
|
31295
31245
|
] }) })
|
|
31296
31246
|
] }),
|
|
31297
|
-
/* @__PURE__ */
|
|
31298
|
-
/* @__PURE__ */
|
|
31247
|
+
/* @__PURE__ */ jsxs223("div", { className: "flex items-center justify-between", children: [
|
|
31248
|
+
/* @__PURE__ */ jsxs223("div", { className: "text-[11px] text-ods-text-secondary font-['DM_Sans']", children: [
|
|
31299
31249
|
selectedTagIds.length,
|
|
31300
31250
|
" / ",
|
|
31301
31251
|
maxTags,
|
|
@@ -31310,7 +31260,7 @@ function TagsSelector({
|
|
|
31310
31260
|
init_button2();
|
|
31311
31261
|
import { useState as useState68, useCallback as useCallback31 } from "react";
|
|
31312
31262
|
import { Upload as Upload6, Sparkles as Sparkles5, X as X13, Video as Video6 } from "lucide-react";
|
|
31313
|
-
import { jsx as jsx274, jsxs as
|
|
31263
|
+
import { jsx as jsx274, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
31314
31264
|
function VideoSourceSelector({
|
|
31315
31265
|
videoSourceType,
|
|
31316
31266
|
onVideoSourceTypeChange,
|
|
@@ -31371,12 +31321,12 @@ function VideoSourceSelector({
|
|
|
31371
31321
|
const handleDeleteVideo = useCallback31(() => {
|
|
31372
31322
|
onMainVideoUrlChange("");
|
|
31373
31323
|
}, [onMainVideoUrlChange]);
|
|
31374
|
-
return /* @__PURE__ */
|
|
31375
|
-
showTitle && /* @__PURE__ */
|
|
31324
|
+
return /* @__PURE__ */ jsxs224("div", { className: `space-y-4 p-6 bg-ods-card border border-ods-border rounded-lg ${className}`, children: [
|
|
31325
|
+
showTitle && /* @__PURE__ */ jsxs224("h3", { className: "font-['Azeret_Mono'] text-[18px] font-semibold uppercase text-ods-text-primary flex items-center gap-2", children: [
|
|
31376
31326
|
/* @__PURE__ */ jsx274(Video6, { className: "h-5 w-5" }),
|
|
31377
31327
|
title
|
|
31378
31328
|
] }),
|
|
31379
|
-
/* @__PURE__ */
|
|
31329
|
+
/* @__PURE__ */ jsxs224("div", { className: "flex gap-2", children: [
|
|
31380
31330
|
/* @__PURE__ */ jsx274(
|
|
31381
31331
|
Button,
|
|
31382
31332
|
{
|
|
@@ -31400,7 +31350,7 @@ function VideoSourceSelector({
|
|
|
31400
31350
|
}
|
|
31401
31351
|
)
|
|
31402
31352
|
] }),
|
|
31403
|
-
videoSourceType === "youtube" && /* @__PURE__ */
|
|
31353
|
+
videoSourceType === "youtube" && /* @__PURE__ */ jsxs224("div", { className: "space-y-2", children: [
|
|
31404
31354
|
/* @__PURE__ */ jsx274(Label, { children: youtubeLabel }),
|
|
31405
31355
|
/* @__PURE__ */ jsx274(
|
|
31406
31356
|
Input,
|
|
@@ -31414,11 +31364,11 @@ function VideoSourceSelector({
|
|
|
31414
31364
|
),
|
|
31415
31365
|
youtubeHelperText && /* @__PURE__ */ jsx274("p", { className: "text-xs text-ods-text-secondary", children: youtubeHelperText })
|
|
31416
31366
|
] }),
|
|
31417
|
-
videoSourceType === "uploaded" && /* @__PURE__ */
|
|
31418
|
-
/* @__PURE__ */
|
|
31419
|
-
/* @__PURE__ */
|
|
31367
|
+
videoSourceType === "uploaded" && /* @__PURE__ */ jsxs224("div", { children: [
|
|
31368
|
+
/* @__PURE__ */ jsxs224("div", { className: "flex items-center justify-between mb-2", children: [
|
|
31369
|
+
/* @__PURE__ */ jsxs224("div", { className: "flex items-center gap-2", children: [
|
|
31420
31370
|
/* @__PURE__ */ jsx274(Label, { children: uploadLabel }),
|
|
31421
|
-
showAIBadge && isAIGenerated && /* @__PURE__ */
|
|
31371
|
+
showAIBadge && isAIGenerated && /* @__PURE__ */ jsxs224(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31422
31372
|
/* @__PURE__ */ jsx274(Sparkles5, { className: "h-3 w-3" }),
|
|
31423
31373
|
"AI Generated"
|
|
31424
31374
|
] })
|
|
@@ -31444,8 +31394,8 @@ function VideoSourceSelector({
|
|
|
31444
31394
|
className: "mb-3"
|
|
31445
31395
|
}
|
|
31446
31396
|
),
|
|
31447
|
-
isUploading && !UploadProgressComponent && /* @__PURE__ */
|
|
31448
|
-
/* @__PURE__ */
|
|
31397
|
+
isUploading && !UploadProgressComponent && /* @__PURE__ */ jsxs224("div", { className: "mb-3", children: [
|
|
31398
|
+
/* @__PURE__ */ jsxs224("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
31449
31399
|
/* @__PURE__ */ jsx274("div", { className: "flex-1 h-2 bg-ods-border rounded-full overflow-hidden", children: /* @__PURE__ */ jsx274(
|
|
31450
31400
|
"div",
|
|
31451
31401
|
{
|
|
@@ -31453,7 +31403,7 @@ function VideoSourceSelector({
|
|
|
31453
31403
|
style: { width: `${uploadProgress}%` }
|
|
31454
31404
|
}
|
|
31455
31405
|
) }),
|
|
31456
|
-
/* @__PURE__ */
|
|
31406
|
+
/* @__PURE__ */ jsxs224("span", { className: "text-xs text-ods-text-secondary", children: [
|
|
31457
31407
|
uploadProgress,
|
|
31458
31408
|
"%"
|
|
31459
31409
|
] })
|
|
@@ -31470,7 +31420,7 @@ function VideoSourceSelector({
|
|
|
31470
31420
|
}
|
|
31471
31421
|
) : (
|
|
31472
31422
|
// Default simple preview
|
|
31473
|
-
/* @__PURE__ */
|
|
31423
|
+
/* @__PURE__ */ jsxs224("div", { className: "relative rounded-lg border border-ods-border overflow-hidden", children: [
|
|
31474
31424
|
/* @__PURE__ */ jsx274(
|
|
31475
31425
|
"video",
|
|
31476
31426
|
{
|
|
@@ -31500,7 +31450,7 @@ import { Sparkles as Sparkles6 } from "lucide-react";
|
|
|
31500
31450
|
|
|
31501
31451
|
// src/components/features/ai-enrich/ConfidenceBadge.tsx
|
|
31502
31452
|
init_cn();
|
|
31503
|
-
import { jsx as jsx275, jsxs as
|
|
31453
|
+
import { jsx as jsx275, jsxs as jsxs225 } from "react/jsx-runtime";
|
|
31504
31454
|
var sizeStyles = {
|
|
31505
31455
|
sm: "text-xs px-1.5 py-0.5",
|
|
31506
31456
|
md: "text-sm px-2 py-1",
|
|
@@ -31521,7 +31471,7 @@ var ConfidenceBadge = ({
|
|
|
31521
31471
|
const borderClass = getConfidenceBorderClass(confidence);
|
|
31522
31472
|
const textClass = getConfidenceTextClass(confidence);
|
|
31523
31473
|
const bgClass = getConfidenceBgClass(confidence);
|
|
31524
|
-
return /* @__PURE__ */
|
|
31474
|
+
return /* @__PURE__ */ jsxs225(
|
|
31525
31475
|
"span",
|
|
31526
31476
|
{
|
|
31527
31477
|
className: cn(
|
|
@@ -31534,7 +31484,7 @@ var ConfidenceBadge = ({
|
|
|
31534
31484
|
),
|
|
31535
31485
|
children: [
|
|
31536
31486
|
showLabel && /* @__PURE__ */ jsx275("span", { children: label }),
|
|
31537
|
-
showPercentage && confidence !== void 0 && /* @__PURE__ */
|
|
31487
|
+
showPercentage && confidence !== void 0 && /* @__PURE__ */ jsxs225("span", { className: "opacity-75", children: [
|
|
31538
31488
|
"(",
|
|
31539
31489
|
confidence,
|
|
31540
31490
|
"%)"
|
|
@@ -31545,7 +31495,7 @@ var ConfidenceBadge = ({
|
|
|
31545
31495
|
};
|
|
31546
31496
|
|
|
31547
31497
|
// src/components/features/transcript-summary-editor.tsx
|
|
31548
|
-
import { jsx as jsx276, jsxs as
|
|
31498
|
+
import { jsx as jsx276, jsxs as jsxs226 } from "react/jsx-runtime";
|
|
31549
31499
|
function TranscriptSummaryEditor({
|
|
31550
31500
|
videoSummary = "",
|
|
31551
31501
|
onVideoSummaryChange,
|
|
@@ -31571,12 +31521,12 @@ function TranscriptSummaryEditor({
|
|
|
31571
31521
|
disabled = false,
|
|
31572
31522
|
className = ""
|
|
31573
31523
|
}) {
|
|
31574
|
-
return /* @__PURE__ */
|
|
31575
|
-
/* @__PURE__ */
|
|
31576
|
-
/* @__PURE__ */
|
|
31577
|
-
/* @__PURE__ */
|
|
31524
|
+
return /* @__PURE__ */ jsxs226("div", { className: `space-y-4 ${className}`, children: [
|
|
31525
|
+
/* @__PURE__ */ jsxs226("div", { children: [
|
|
31526
|
+
/* @__PURE__ */ jsxs226("div", { className: "mb-2", children: [
|
|
31527
|
+
/* @__PURE__ */ jsxs226("div", { className: "flex items-center gap-2", children: [
|
|
31578
31528
|
/* @__PURE__ */ jsx276(Label, { htmlFor: "video-summary", children: videoSummaryLabel }),
|
|
31579
|
-
isAIGenerated && /* @__PURE__ */
|
|
31529
|
+
isAIGenerated && /* @__PURE__ */ jsxs226(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31580
31530
|
/* @__PURE__ */ jsx276(Sparkles6, { className: "h-3 w-3" }),
|
|
31581
31531
|
"AI Generated"
|
|
31582
31532
|
] }),
|
|
@@ -31612,11 +31562,11 @@ function TranscriptSummaryEditor({
|
|
|
31612
31562
|
}
|
|
31613
31563
|
)
|
|
31614
31564
|
] }),
|
|
31615
|
-
/* @__PURE__ */
|
|
31616
|
-
/* @__PURE__ */
|
|
31617
|
-
/* @__PURE__ */
|
|
31565
|
+
/* @__PURE__ */ jsxs226("div", { children: [
|
|
31566
|
+
/* @__PURE__ */ jsxs226("div", { className: "mb-2", children: [
|
|
31567
|
+
/* @__PURE__ */ jsxs226("div", { className: "flex items-center gap-2", children: [
|
|
31618
31568
|
/* @__PURE__ */ jsx276(Label, { htmlFor: "transcript", children: transcriptLabel }),
|
|
31619
|
-
isAIGenerated && /* @__PURE__ */
|
|
31569
|
+
isAIGenerated && /* @__PURE__ */ jsxs226(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31620
31570
|
/* @__PURE__ */ jsx276(Sparkles6, { className: "h-3 w-3" }),
|
|
31621
31571
|
"AI Generated"
|
|
31622
31572
|
] }),
|
|
@@ -31652,11 +31602,11 @@ function TranscriptSummaryEditor({
|
|
|
31652
31602
|
}
|
|
31653
31603
|
)
|
|
31654
31604
|
] }),
|
|
31655
|
-
(subtitles || onSubtitlesChange) && /* @__PURE__ */
|
|
31656
|
-
/* @__PURE__ */
|
|
31657
|
-
/* @__PURE__ */
|
|
31605
|
+
(subtitles || onSubtitlesChange) && /* @__PURE__ */ jsxs226("div", { children: [
|
|
31606
|
+
/* @__PURE__ */ jsxs226("div", { className: "mb-2", children: [
|
|
31607
|
+
/* @__PURE__ */ jsxs226("div", { className: "flex items-center gap-2", children: [
|
|
31658
31608
|
/* @__PURE__ */ jsx276(Label, { htmlFor: "subtitles", children: subtitlesLabel }),
|
|
31659
|
-
isAIGenerated && subtitles && /* @__PURE__ */
|
|
31609
|
+
isAIGenerated && subtitles && /* @__PURE__ */ jsxs226(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
31660
31610
|
/* @__PURE__ */ jsx276(StandardCcIcon, { size: 12 }),
|
|
31661
31611
|
"AI Generated"
|
|
31662
31612
|
] })
|
|
@@ -31736,7 +31686,7 @@ var AIEnrichButton = ({
|
|
|
31736
31686
|
|
|
31737
31687
|
// src/components/features/ai-enrich/AIWarningsSection.tsx
|
|
31738
31688
|
init_cn();
|
|
31739
|
-
import { jsx as jsx278, jsxs as
|
|
31689
|
+
import { jsx as jsx278, jsxs as jsxs227 } from "react/jsx-runtime";
|
|
31740
31690
|
var AIWarningsSection = ({
|
|
31741
31691
|
warnings,
|
|
31742
31692
|
title = "AI Warnings",
|
|
@@ -31752,7 +31702,7 @@ var AIWarningsSection = ({
|
|
|
31752
31702
|
"rounded-lg border border-yellow-500/30 bg-yellow-500/10 p-4",
|
|
31753
31703
|
className
|
|
31754
31704
|
),
|
|
31755
|
-
children: /* @__PURE__ */
|
|
31705
|
+
children: /* @__PURE__ */ jsxs227("div", { className: "flex items-start gap-2", children: [
|
|
31756
31706
|
/* @__PURE__ */ jsx278(
|
|
31757
31707
|
"svg",
|
|
31758
31708
|
{
|
|
@@ -31771,7 +31721,7 @@ var AIWarningsSection = ({
|
|
|
31771
31721
|
)
|
|
31772
31722
|
}
|
|
31773
31723
|
),
|
|
31774
|
-
/* @__PURE__ */
|
|
31724
|
+
/* @__PURE__ */ jsxs227("div", { className: "flex-1", children: [
|
|
31775
31725
|
/* @__PURE__ */ jsx278("h4", { className: "text-sm font-semibold text-yellow-500 mb-2", children: title }),
|
|
31776
31726
|
/* @__PURE__ */ jsx278("ul", { className: "space-y-1", children: warnings.map((warning, index) => /* @__PURE__ */ jsx278(
|
|
31777
31727
|
"li",
|
|
@@ -31790,7 +31740,7 @@ var AIWarningsSection = ({
|
|
|
31790
31740
|
// src/components/features/ai-enrich/AIEnrichSection.tsx
|
|
31791
31741
|
init_button2();
|
|
31792
31742
|
import { CheckCircle as CheckCircle4, AlertCircle as AlertCircle2, Loader2 as Loader211, X as X14 } from "lucide-react";
|
|
31793
|
-
import { jsx as jsx279, jsxs as
|
|
31743
|
+
import { jsx as jsx279, jsxs as jsxs228 } from "react/jsx-runtime";
|
|
31794
31744
|
var AIEnrichSection = ({
|
|
31795
31745
|
onEnrich,
|
|
31796
31746
|
loading = false,
|
|
@@ -31827,7 +31777,7 @@ var AIEnrichSection = ({
|
|
|
31827
31777
|
const hasResults = status === "success" || status === "error";
|
|
31828
31778
|
const shouldDisable = disabled || !canEnrich;
|
|
31829
31779
|
const unfilledFields = requiredFields?.filter((f) => !f.isFilled) || [];
|
|
31830
|
-
return /* @__PURE__ */
|
|
31780
|
+
return /* @__PURE__ */ jsxs228(
|
|
31831
31781
|
"div",
|
|
31832
31782
|
{
|
|
31833
31783
|
className: cn(
|
|
@@ -31836,15 +31786,15 @@ var AIEnrichSection = ({
|
|
|
31836
31786
|
className
|
|
31837
31787
|
),
|
|
31838
31788
|
children: [
|
|
31839
|
-
/* @__PURE__ */
|
|
31789
|
+
/* @__PURE__ */ jsxs228("div", { className: "flex items-center gap-3", children: [
|
|
31840
31790
|
icon || /* @__PURE__ */ jsx279(SparklesIcon, { size: 20, className: "text-ods-text-secondary" }),
|
|
31841
|
-
/* @__PURE__ */
|
|
31791
|
+
/* @__PURE__ */ jsxs228("div", { className: "flex-1", children: [
|
|
31842
31792
|
/* @__PURE__ */ jsx279("h3", { className: "text-h5 text-ods-text-primary", children: title }),
|
|
31843
31793
|
description && /* @__PURE__ */ jsx279("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans'] mt-1", children: description })
|
|
31844
31794
|
] })
|
|
31845
31795
|
] }),
|
|
31846
|
-
showCustomInstructions && /* @__PURE__ */
|
|
31847
|
-
/* @__PURE__ */
|
|
31796
|
+
showCustomInstructions && /* @__PURE__ */ jsxs228("div", { className: "space-y-1.5", children: [
|
|
31797
|
+
/* @__PURE__ */ jsxs228("div", { className: "flex items-center justify-between", children: [
|
|
31848
31798
|
/* @__PURE__ */ jsx279(
|
|
31849
31799
|
"label",
|
|
31850
31800
|
{
|
|
@@ -31853,7 +31803,7 @@ var AIEnrichSection = ({
|
|
|
31853
31803
|
children: customInstructionsLabel
|
|
31854
31804
|
}
|
|
31855
31805
|
),
|
|
31856
|
-
customInstructionsMaxLength !== void 0 && /* @__PURE__ */
|
|
31806
|
+
customInstructionsMaxLength !== void 0 && /* @__PURE__ */ jsxs228("span", { className: "text-xs text-ods-text-secondary font-['DM_Sans']", children: [
|
|
31857
31807
|
(customInstructions ?? "").length,
|
|
31858
31808
|
"/",
|
|
31859
31809
|
customInstructionsMaxLength
|
|
@@ -31874,7 +31824,7 @@ var AIEnrichSection = ({
|
|
|
31874
31824
|
),
|
|
31875
31825
|
customInstructionsHelperText && /* @__PURE__ */ jsx279("p", { className: "text-xs text-ods-text-secondary font-['DM_Sans']", children: customInstructionsHelperText })
|
|
31876
31826
|
] }),
|
|
31877
|
-
/* @__PURE__ */
|
|
31827
|
+
/* @__PURE__ */ jsxs228("div", { className: "flex flex-col gap-3", children: [
|
|
31878
31828
|
/* @__PURE__ */ jsx279(
|
|
31879
31829
|
AIEnrichButton,
|
|
31880
31830
|
{
|
|
@@ -31907,9 +31857,9 @@ var AIEnrichSection = ({
|
|
|
31907
31857
|
}
|
|
31908
31858
|
)
|
|
31909
31859
|
] }),
|
|
31910
|
-
shouldDisable && !loading && /* @__PURE__ */
|
|
31860
|
+
shouldDisable && !loading && /* @__PURE__ */ jsxs228("div", { className: "space-y-2", children: [
|
|
31911
31861
|
/* @__PURE__ */ jsx279("p", { className: "text-ods-text-secondary text-sm font-['DM_Sans']", children: disabledMessage }),
|
|
31912
|
-
unfilledFields.length > 0 && /* @__PURE__ */ jsx279("div", { className: "flex flex-wrap gap-2", children: unfilledFields.map((field) => /* @__PURE__ */
|
|
31862
|
+
unfilledFields.length > 0 && /* @__PURE__ */ jsx279("div", { className: "flex flex-wrap gap-2", children: unfilledFields.map((field) => /* @__PURE__ */ jsxs228(
|
|
31913
31863
|
"span",
|
|
31914
31864
|
{
|
|
31915
31865
|
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']",
|
|
@@ -31921,12 +31871,12 @@ var AIEnrichSection = ({
|
|
|
31921
31871
|
field.key
|
|
31922
31872
|
)) })
|
|
31923
31873
|
] }),
|
|
31924
|
-
loading && statusMessage && /* @__PURE__ */
|
|
31874
|
+
loading && statusMessage && /* @__PURE__ */ jsxs228("div", { className: "flex items-center gap-3 p-3 rounded-lg bg-ods-card-secondary", children: [
|
|
31925
31875
|
/* @__PURE__ */ jsx279(Loader211, { className: "h-5 w-5 text-ods-accent animate-spin" }),
|
|
31926
31876
|
/* @__PURE__ */ jsx279("span", { className: "text-sm text-ods-text-primary font-['DM_Sans']", children: statusMessage })
|
|
31927
31877
|
] }),
|
|
31928
|
-
hasResults && /* @__PURE__ */
|
|
31929
|
-
/* @__PURE__ */
|
|
31878
|
+
hasResults && /* @__PURE__ */ jsxs228("div", { className: "space-y-4", children: [
|
|
31879
|
+
/* @__PURE__ */ jsxs228("div", { className: cn(
|
|
31930
31880
|
"flex items-center gap-3 p-3 rounded-lg",
|
|
31931
31881
|
status === "success" ? "bg-[--ods-attention-green-success]/10" : "bg-[--ods-attention-red-error]/10"
|
|
31932
31882
|
), children: [
|
|
@@ -31935,7 +31885,7 @@ var AIEnrichSection = ({
|
|
|
31935
31885
|
"text-sm font-medium",
|
|
31936
31886
|
status === "success" ? "text-[--ods-attention-green-success]" : "text-[--ods-attention-red-error]"
|
|
31937
31887
|
), children: statusMessage || (status === "success" ? "Enrichment complete" : "Enrichment failed") }),
|
|
31938
|
-
overallConfidence !== void 0 && status === "success" && /* @__PURE__ */
|
|
31888
|
+
overallConfidence !== void 0 && status === "success" && /* @__PURE__ */ jsxs228(Badge, { variant: "success", className: "ml-auto", children: [
|
|
31939
31889
|
overallConfidence,
|
|
31940
31890
|
"% confidence"
|
|
31941
31891
|
] })
|
|
@@ -31958,7 +31908,7 @@ var AIEnrichSection = ({
|
|
|
31958
31908
|
};
|
|
31959
31909
|
|
|
31960
31910
|
// src/components/features/highlight-video-section.tsx
|
|
31961
|
-
import { jsx as jsx280, jsxs as
|
|
31911
|
+
import { jsx as jsx280, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
31962
31912
|
function HighlightVideoSection({
|
|
31963
31913
|
highlightVideoUrl,
|
|
31964
31914
|
highlightVideoThumbnail,
|
|
@@ -32009,11 +31959,11 @@ function HighlightVideoSection({
|
|
|
32009
31959
|
const seconds = Math.floor(ms % 6e4 / 1e3);
|
|
32010
31960
|
return `${minutes}:${String(seconds).padStart(2, "0")}`;
|
|
32011
31961
|
};
|
|
32012
|
-
return /* @__PURE__ */
|
|
32013
|
-
/* @__PURE__ */ jsx280("div", { className: "space-y-3 p-4 bg-ods-background-secondary rounded-lg border border-ods-border", children: /* @__PURE__ */
|
|
32014
|
-
/* @__PURE__ */
|
|
31962
|
+
return /* @__PURE__ */ jsxs229("div", { className: `space-y-4 ${className}`, children: [
|
|
31963
|
+
/* @__PURE__ */ jsx280("div", { className: "space-y-3 p-4 bg-ods-background-secondary rounded-lg border border-ods-border", children: /* @__PURE__ */ jsxs229("div", { className: "flex items-center gap-4", children: [
|
|
31964
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex-1", children: [
|
|
32015
31965
|
/* @__PURE__ */ jsx280(Label, { className: "text-sm", children: "Target Duration" }),
|
|
32016
|
-
/* @__PURE__ */
|
|
31966
|
+
/* @__PURE__ */ jsxs229(
|
|
32017
31967
|
Select,
|
|
32018
31968
|
{
|
|
32019
31969
|
value: targetDurationSeconds.toString(),
|
|
@@ -32021,7 +31971,7 @@ function HighlightVideoSection({
|
|
|
32021
31971
|
disabled,
|
|
32022
31972
|
children: [
|
|
32023
31973
|
/* @__PURE__ */ jsx280(SelectTrigger, { className: "bg-ods-background-tertiary mt-1", children: /* @__PURE__ */ jsx280(SelectValue, {}) }),
|
|
32024
|
-
/* @__PURE__ */
|
|
31974
|
+
/* @__PURE__ */ jsxs229(SelectContent, { className: "bg-ods-card", children: [
|
|
32025
31975
|
/* @__PURE__ */ jsx280(SelectItem, { value: "60", children: "1 minute" }),
|
|
32026
31976
|
/* @__PURE__ */ jsx280(SelectItem, { value: "120", children: "2 minutes" }),
|
|
32027
31977
|
/* @__PURE__ */ jsx280(SelectItem, { value: "180", children: "3 minutes (Recommended)" }),
|
|
@@ -32032,7 +31982,7 @@ function HighlightVideoSection({
|
|
|
32032
31982
|
}
|
|
32033
31983
|
)
|
|
32034
31984
|
] }),
|
|
32035
|
-
/* @__PURE__ */
|
|
31985
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex items-center gap-2 pt-5", children: [
|
|
32036
31986
|
/* @__PURE__ */ jsx280(
|
|
32037
31987
|
"input",
|
|
32038
31988
|
{
|
|
@@ -32067,11 +32017,11 @@ function HighlightVideoSection({
|
|
|
32067
32017
|
isCancelling
|
|
32068
32018
|
}
|
|
32069
32019
|
),
|
|
32070
|
-
/* @__PURE__ */
|
|
32071
|
-
/* @__PURE__ */
|
|
32072
|
-
/* @__PURE__ */
|
|
32020
|
+
/* @__PURE__ */ jsxs229("div", { className: "space-y-2", children: [
|
|
32021
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex items-center justify-between mb-2", children: [
|
|
32022
|
+
/* @__PURE__ */ jsxs229("div", { className: "flex items-center gap-2", children: [
|
|
32073
32023
|
/* @__PURE__ */ jsx280(Label, { children: "Highlight Video" }),
|
|
32074
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
32024
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs229(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32075
32025
|
/* @__PURE__ */ jsx280(Sparkles7, { className: "h-3 w-3" }),
|
|
32076
32026
|
"AI Generated"
|
|
32077
32027
|
] }),
|
|
@@ -32100,7 +32050,7 @@ function HighlightVideoSection({
|
|
|
32100
32050
|
}
|
|
32101
32051
|
) : (
|
|
32102
32052
|
// Default simple preview
|
|
32103
|
-
/* @__PURE__ */
|
|
32053
|
+
/* @__PURE__ */ jsxs229("div", { className: "relative rounded-lg border border-ods-border overflow-hidden bg-black", children: [
|
|
32104
32054
|
/* @__PURE__ */ jsx280(
|
|
32105
32055
|
"video",
|
|
32106
32056
|
{
|
|
@@ -32110,7 +32060,7 @@ function HighlightVideoSection({
|
|
|
32110
32060
|
controls: true
|
|
32111
32061
|
}
|
|
32112
32062
|
),
|
|
32113
|
-
onDeleteHighlight && /* @__PURE__ */
|
|
32063
|
+
onDeleteHighlight && /* @__PURE__ */ jsxs229(
|
|
32114
32064
|
"button",
|
|
32115
32065
|
{
|
|
32116
32066
|
type: "button",
|
|
@@ -32129,7 +32079,7 @@ function HighlightVideoSection({
|
|
|
32129
32079
|
}
|
|
32130
32080
|
|
|
32131
32081
|
// src/components/features/highlight-config-section.tsx
|
|
32132
|
-
import { jsx as jsx281, jsxs as
|
|
32082
|
+
import { jsx as jsx281, jsxs as jsxs230 } from "react/jsx-runtime";
|
|
32133
32083
|
function HighlightConfigSection({
|
|
32134
32084
|
targetDurationSeconds,
|
|
32135
32085
|
onTargetDurationChange,
|
|
@@ -32138,10 +32088,10 @@ function HighlightConfigSection({
|
|
|
32138
32088
|
disabled = false,
|
|
32139
32089
|
className = ""
|
|
32140
32090
|
}) {
|
|
32141
|
-
return /* @__PURE__ */ jsx281("div", { className: `space-y-3 p-4 bg-[#1a1a1a] rounded-lg border border-ods-border ${className}`, children: /* @__PURE__ */
|
|
32142
|
-
/* @__PURE__ */
|
|
32091
|
+
return /* @__PURE__ */ jsx281("div", { className: `space-y-3 p-4 bg-[#1a1a1a] rounded-lg border border-ods-border ${className}`, children: /* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-4", children: [
|
|
32092
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex-1", children: [
|
|
32143
32093
|
/* @__PURE__ */ jsx281(Label, { className: "text-sm", children: "Target Duration" }),
|
|
32144
|
-
/* @__PURE__ */
|
|
32094
|
+
/* @__PURE__ */ jsxs230(
|
|
32145
32095
|
Select,
|
|
32146
32096
|
{
|
|
32147
32097
|
value: targetDurationSeconds.toString(),
|
|
@@ -32149,7 +32099,7 @@ function HighlightConfigSection({
|
|
|
32149
32099
|
disabled,
|
|
32150
32100
|
children: [
|
|
32151
32101
|
/* @__PURE__ */ jsx281(SelectTrigger, { className: "bg-[#161616] mt-1", children: /* @__PURE__ */ jsx281(SelectValue, {}) }),
|
|
32152
|
-
/* @__PURE__ */
|
|
32102
|
+
/* @__PURE__ */ jsxs230(SelectContent, { className: "bg-ods-card", children: [
|
|
32153
32103
|
/* @__PURE__ */ jsx281(SelectItem, { value: "60", children: "1 minute" }),
|
|
32154
32104
|
/* @__PURE__ */ jsx281(SelectItem, { value: "120", children: "2 minutes" }),
|
|
32155
32105
|
/* @__PURE__ */ jsx281(SelectItem, { value: "180", children: "3 minutes (Recommended)" }),
|
|
@@ -32160,7 +32110,7 @@ function HighlightConfigSection({
|
|
|
32160
32110
|
}
|
|
32161
32111
|
)
|
|
32162
32112
|
] }),
|
|
32163
|
-
/* @__PURE__ */
|
|
32113
|
+
/* @__PURE__ */ jsxs230("div", { className: "flex items-center gap-2 pt-5", children: [
|
|
32164
32114
|
/* @__PURE__ */ jsx281(
|
|
32165
32115
|
"input",
|
|
32166
32116
|
{
|
|
@@ -32179,7 +32129,7 @@ function HighlightConfigSection({
|
|
|
32179
32129
|
|
|
32180
32130
|
// src/components/features/entity-summary-editor.tsx
|
|
32181
32131
|
import { Sparkles as Sparkles8 } from "lucide-react";
|
|
32182
|
-
import { jsx as jsx282, jsxs as
|
|
32132
|
+
import { jsx as jsx282, jsxs as jsxs231 } from "react/jsx-runtime";
|
|
32183
32133
|
function EntitySummaryEditor({
|
|
32184
32134
|
summary = "",
|
|
32185
32135
|
onSummaryChange,
|
|
@@ -32192,11 +32142,11 @@ function EntitySummaryEditor({
|
|
|
32192
32142
|
disabled = false,
|
|
32193
32143
|
className = ""
|
|
32194
32144
|
}) {
|
|
32195
|
-
return /* @__PURE__ */
|
|
32196
|
-
/* @__PURE__ */
|
|
32197
|
-
/* @__PURE__ */
|
|
32145
|
+
return /* @__PURE__ */ jsxs231("div", { className, children: [
|
|
32146
|
+
/* @__PURE__ */ jsxs231("div", { className: "mb-2", children: [
|
|
32147
|
+
/* @__PURE__ */ jsxs231("div", { className: "flex items-center gap-2", children: [
|
|
32198
32148
|
/* @__PURE__ */ jsx282(Label, { htmlFor: "entity-summary", children: label }),
|
|
32199
|
-
isAIGenerated && /* @__PURE__ */
|
|
32149
|
+
isAIGenerated && /* @__PURE__ */ jsxs231(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32200
32150
|
/* @__PURE__ */ jsx282(Sparkles8, { className: "h-3 w-3" }),
|
|
32201
32151
|
"AI Generated"
|
|
32202
32152
|
] }),
|
|
@@ -32239,7 +32189,7 @@ import { Sparkles as Sparkles9 } from "lucide-react";
|
|
|
32239
32189
|
|
|
32240
32190
|
// src/components/features/ai-enrich/AIStatusIndicator.tsx
|
|
32241
32191
|
init_cn();
|
|
32242
|
-
import { jsx as jsx283, jsxs as
|
|
32192
|
+
import { jsx as jsx283, jsxs as jsxs232 } from "react/jsx-runtime";
|
|
32243
32193
|
var statusConfig = {
|
|
32244
32194
|
idle: {
|
|
32245
32195
|
color: "text-ods-text-secondary",
|
|
@@ -32272,7 +32222,7 @@ var AIStatusIndicator = ({
|
|
|
32272
32222
|
const config = statusConfig[status];
|
|
32273
32223
|
const displayText = message || config.label;
|
|
32274
32224
|
const confidenceLabel = showConfidence && confidence !== void 0 ? `${getConfidenceLabel(confidence)} (${confidence}%)` : null;
|
|
32275
|
-
return /* @__PURE__ */
|
|
32225
|
+
return /* @__PURE__ */ jsxs232(
|
|
32276
32226
|
"div",
|
|
32277
32227
|
{
|
|
32278
32228
|
className: cn(
|
|
@@ -32319,12 +32269,12 @@ var AIStatusIndicator = ({
|
|
|
32319
32269
|
|
|
32320
32270
|
// src/components/features/ai-enrich/AIRequiredBadge.tsx
|
|
32321
32271
|
init_cn();
|
|
32322
|
-
import { jsx as jsx284, jsxs as
|
|
32272
|
+
import { jsx as jsx284, jsxs as jsxs233 } from "react/jsx-runtime";
|
|
32323
32273
|
var AIRequiredBadge = ({
|
|
32324
32274
|
className,
|
|
32325
32275
|
size = "sm"
|
|
32326
32276
|
}) => {
|
|
32327
|
-
return /* @__PURE__ */
|
|
32277
|
+
return /* @__PURE__ */ jsxs233(
|
|
32328
32278
|
"span",
|
|
32329
32279
|
{
|
|
32330
32280
|
className: cn(
|
|
@@ -32475,7 +32425,7 @@ function HighlightGenerationSection({
|
|
|
32475
32425
|
// src/components/features/highlight-video-preview.tsx
|
|
32476
32426
|
import { Upload as Upload8, Sparkles as Sparkles12 } from "lucide-react";
|
|
32477
32427
|
init_button2();
|
|
32478
|
-
import { jsx as jsx288, jsxs as
|
|
32428
|
+
import { jsx as jsx288, jsxs as jsxs234 } from "react/jsx-runtime";
|
|
32479
32429
|
function HighlightVideoPreview({
|
|
32480
32430
|
highlightVideoUrl,
|
|
32481
32431
|
highlightVideoThumbnail,
|
|
@@ -32506,11 +32456,11 @@ function HighlightVideoPreview({
|
|
|
32506
32456
|
const seconds = Math.floor(ms % 6e4 / 1e3);
|
|
32507
32457
|
return `${minutes}:${String(seconds).padStart(2, "0")}`;
|
|
32508
32458
|
};
|
|
32509
|
-
return /* @__PURE__ */
|
|
32510
|
-
/* @__PURE__ */
|
|
32511
|
-
/* @__PURE__ */
|
|
32459
|
+
return /* @__PURE__ */ jsxs234("div", { className: "space-y-2", children: [
|
|
32460
|
+
/* @__PURE__ */ jsxs234("div", { className: "flex items-center justify-between mb-2", children: [
|
|
32461
|
+
/* @__PURE__ */ jsxs234("div", { className: "flex items-center gap-2", children: [
|
|
32512
32462
|
/* @__PURE__ */ jsx288(Label, { children: label }),
|
|
32513
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
32463
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs234(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32514
32464
|
/* @__PURE__ */ jsx288(Sparkles12, { className: "h-3 w-3" }),
|
|
32515
32465
|
"AI Generated"
|
|
32516
32466
|
] }),
|
|
@@ -32541,7 +32491,7 @@ function HighlightVideoPreview({
|
|
|
32541
32491
|
|
|
32542
32492
|
// src/components/features/transcribe-and-summarize-combined-section.tsx
|
|
32543
32493
|
import { Sparkles as Sparkles13 } from "lucide-react";
|
|
32544
|
-
import { jsx as jsx289, jsxs as
|
|
32494
|
+
import { jsx as jsx289, jsxs as jsxs235 } from "react/jsx-runtime";
|
|
32545
32495
|
function TranscribeAndSummarizeCombinedSection({
|
|
32546
32496
|
// AIEnrichSection props
|
|
32547
32497
|
onTranscribe,
|
|
@@ -32581,7 +32531,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
32581
32531
|
hasSubtitles = false
|
|
32582
32532
|
}) {
|
|
32583
32533
|
const defaultButtonLabel = hasResult ? "Regenerate" : "Generate";
|
|
32584
|
-
return /* @__PURE__ */
|
|
32534
|
+
return /* @__PURE__ */ jsxs235("div", { className: `space-y-4 ${className}`, children: [
|
|
32585
32535
|
/* @__PURE__ */ jsx289(
|
|
32586
32536
|
AIEnrichSection,
|
|
32587
32537
|
{
|
|
@@ -32630,7 +32580,7 @@ function TranscribeAndSummarizeCombinedSection({
|
|
|
32630
32580
|
// src/components/features/highlight-video-combined-section.tsx
|
|
32631
32581
|
import { Sparkles as Sparkles14, Upload as Upload9 } from "lucide-react";
|
|
32632
32582
|
init_button2();
|
|
32633
|
-
import { jsx as jsx290, jsxs as
|
|
32583
|
+
import { jsx as jsx290, jsxs as jsxs236 } from "react/jsx-runtime";
|
|
32634
32584
|
function HighlightVideoCombinedSection({
|
|
32635
32585
|
// Config props
|
|
32636
32586
|
targetDurationSeconds,
|
|
@@ -32688,7 +32638,7 @@ function HighlightVideoCombinedSection({
|
|
|
32688
32638
|
};
|
|
32689
32639
|
input.click();
|
|
32690
32640
|
};
|
|
32691
|
-
return /* @__PURE__ */
|
|
32641
|
+
return /* @__PURE__ */ jsxs236("div", { className: `space-y-4 ${className}`, children: [
|
|
32692
32642
|
/* @__PURE__ */ jsx290(
|
|
32693
32643
|
HighlightConfigSection,
|
|
32694
32644
|
{
|
|
@@ -32719,11 +32669,11 @@ function HighlightVideoCombinedSection({
|
|
|
32719
32669
|
isCancelling
|
|
32720
32670
|
}
|
|
32721
32671
|
),
|
|
32722
|
-
/* @__PURE__ */
|
|
32723
|
-
/* @__PURE__ */
|
|
32724
|
-
/* @__PURE__ */
|
|
32672
|
+
/* @__PURE__ */ jsxs236("div", { className: "space-y-2", children: [
|
|
32673
|
+
/* @__PURE__ */ jsxs236("div", { className: "flex items-center justify-between mb-2", children: [
|
|
32674
|
+
/* @__PURE__ */ jsxs236("div", { className: "flex items-center gap-2", children: [
|
|
32725
32675
|
/* @__PURE__ */ jsx290(Label, { children: previewLabel }),
|
|
32726
|
-
highlightVideoSource === "ai_generated" && /* @__PURE__ */
|
|
32676
|
+
highlightVideoSource === "ai_generated" && /* @__PURE__ */ jsxs236(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
32727
32677
|
/* @__PURE__ */ jsx290(Sparkles14, { className: "h-3 w-3" }),
|
|
32728
32678
|
"AI Generated"
|
|
32729
32679
|
] }),
|
|
@@ -32755,7 +32705,7 @@ function HighlightVideoCombinedSection({
|
|
|
32755
32705
|
|
|
32756
32706
|
// src/components/features/view-toggle.tsx
|
|
32757
32707
|
init_cn();
|
|
32758
|
-
import { jsx as jsx291, jsxs as
|
|
32708
|
+
import { jsx as jsx291, jsxs as jsxs237 } from "react/jsx-runtime";
|
|
32759
32709
|
function ViewToggle({
|
|
32760
32710
|
value,
|
|
32761
32711
|
onValueChange,
|
|
@@ -32764,7 +32714,7 @@ function ViewToggle({
|
|
|
32764
32714
|
size = "default",
|
|
32765
32715
|
"aria-label": ariaLabel = "Switch between grid and table view"
|
|
32766
32716
|
}) {
|
|
32767
|
-
return /* @__PURE__ */
|
|
32717
|
+
return /* @__PURE__ */ jsxs237(
|
|
32768
32718
|
ToggleGroup,
|
|
32769
32719
|
{
|
|
32770
32720
|
type: "single",
|
|
@@ -32839,10 +32789,10 @@ init_cn();
|
|
|
32839
32789
|
import * as React98 from "react";
|
|
32840
32790
|
import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
|
|
32841
32791
|
import { Check as Check5, ChevronRight as ChevronRight11, Circle as Circle2 } from "lucide-react";
|
|
32842
|
-
import { jsx as jsx292, jsxs as
|
|
32792
|
+
import { jsx as jsx292, jsxs as jsxs238 } from "react/jsx-runtime";
|
|
32843
32793
|
var DropdownMenu2 = DropdownMenuPrimitive2.Root;
|
|
32844
32794
|
var DropdownMenuTrigger2 = DropdownMenuPrimitive2.Trigger;
|
|
32845
|
-
var DropdownMenuSubTrigger = React98.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */
|
|
32795
|
+
var DropdownMenuSubTrigger = React98.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs238(
|
|
32846
32796
|
DropdownMenuPrimitive2.SubTrigger,
|
|
32847
32797
|
{
|
|
32848
32798
|
ref,
|
|
@@ -32897,7 +32847,7 @@ var DropdownMenuItem2 = React98.forwardRef(({ className, inset, ...props }, ref)
|
|
|
32897
32847
|
}
|
|
32898
32848
|
));
|
|
32899
32849
|
DropdownMenuItem2.displayName = DropdownMenuPrimitive2.Item.displayName;
|
|
32900
|
-
var DropdownMenuCheckboxItem = React98.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */
|
|
32850
|
+
var DropdownMenuCheckboxItem = React98.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs238(
|
|
32901
32851
|
DropdownMenuPrimitive2.CheckboxItem,
|
|
32902
32852
|
{
|
|
32903
32853
|
ref,
|
|
@@ -32914,7 +32864,7 @@ var DropdownMenuCheckboxItem = React98.forwardRef(({ className, children, checke
|
|
|
32914
32864
|
}
|
|
32915
32865
|
));
|
|
32916
32866
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive2.CheckboxItem.displayName;
|
|
32917
|
-
var DropdownMenuRadioItem = React98.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
32867
|
+
var DropdownMenuRadioItem = React98.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs238(
|
|
32918
32868
|
DropdownMenuPrimitive2.RadioItem,
|
|
32919
32869
|
{
|
|
32920
32870
|
ref,
|
|
@@ -32967,7 +32917,7 @@ var DropdownMenuShortcut = ({
|
|
|
32967
32917
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
32968
32918
|
|
|
32969
32919
|
// src/components/features/policy-configuration-panel.tsx
|
|
32970
|
-
import { Fragment as Fragment43, jsx as jsx293, jsxs as
|
|
32920
|
+
import { Fragment as Fragment43, jsx as jsx293, jsxs as jsxs239 } from "react/jsx-runtime";
|
|
32971
32921
|
var approvalLevelOptions = [
|
|
32972
32922
|
{ value: "ALLOW", label: "Allow" },
|
|
32973
32923
|
{ value: "ASK_USER", label: "Ask User" },
|
|
@@ -32982,13 +32932,13 @@ var getApprovalLevelLabel = (level, editMode = false) => {
|
|
|
32982
32932
|
return option?.label || level;
|
|
32983
32933
|
};
|
|
32984
32934
|
var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
32985
|
-
return /* @__PURE__ */
|
|
32935
|
+
return /* @__PURE__ */ jsxs239("div", { className: "bg-ods-bg border-b border-ods-border flex gap-4 items-center px-4 py-3", children: [
|
|
32986
32936
|
/* @__PURE__ */ jsx293("div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ jsx293(ToolIcon, { toolType: policy.toolName, size: 16 }) }),
|
|
32987
|
-
/* @__PURE__ */
|
|
32937
|
+
/* @__PURE__ */ jsxs239("div", { className: "flex-1 flex flex-col min-w-0", children: [
|
|
32988
32938
|
/* @__PURE__ */ jsx293("p", { className: "text-[16px] font-medium text-ods-text-primary truncate", children: policy.name }),
|
|
32989
32939
|
/* @__PURE__ */ jsx293("p", { className: "text-[12px] text-ods-text-secondary break-all font-mono", children: policy.commandPattern })
|
|
32990
32940
|
] }),
|
|
32991
|
-
editMode ? /* @__PURE__ */
|
|
32941
|
+
editMode ? /* @__PURE__ */ jsxs239(DropdownMenu2, { children: [
|
|
32992
32942
|
/* @__PURE__ */ jsx293(DropdownMenuTrigger2, { asChild: true, children: /* @__PURE__ */ jsx293(
|
|
32993
32943
|
Button,
|
|
32994
32944
|
{
|
|
@@ -33029,22 +32979,22 @@ var CategorySection = ({
|
|
|
33029
32979
|
onPolicyPermissionChange
|
|
33030
32980
|
}) => {
|
|
33031
32981
|
const { contentRef, height } = useAnimatedHeight(category.isExpanded);
|
|
33032
|
-
return /* @__PURE__ */
|
|
33033
|
-
/* @__PURE__ */
|
|
32982
|
+
return /* @__PURE__ */ jsxs239(Fragment43, { children: [
|
|
32983
|
+
/* @__PURE__ */ jsxs239(
|
|
33034
32984
|
"div",
|
|
33035
32985
|
{
|
|
33036
32986
|
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",
|
|
33037
32987
|
onClick: () => onCategoryToggle(category.id),
|
|
33038
32988
|
children: [
|
|
33039
32989
|
/* @__PURE__ */ jsx293("div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ jsx293("div", { className: "text-ods-text-secondary", children: category.icon }) }),
|
|
33040
|
-
/* @__PURE__ */
|
|
32990
|
+
/* @__PURE__ */ jsxs239("div", { className: "flex-1 flex flex-col", children: [
|
|
33041
32991
|
/* @__PURE__ */ jsx293("p", { className: "md:!text-sm font-medium text-ods-text-primary", children: category.name }),
|
|
33042
|
-
/* @__PURE__ */
|
|
32992
|
+
/* @__PURE__ */ jsxs239("p", { className: "text-[14px] text-ods-text-secondary", children: [
|
|
33043
32993
|
category.configurationsCount,
|
|
33044
32994
|
" Configurations"
|
|
33045
32995
|
] })
|
|
33046
32996
|
] }),
|
|
33047
|
-
editMode ? /* @__PURE__ */ jsx293("div", { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */
|
|
32997
|
+
editMode ? /* @__PURE__ */ jsx293("div", { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxs239(DropdownMenu2, { children: [
|
|
33048
32998
|
/* @__PURE__ */ jsx293(DropdownMenuTrigger2, { asChild: true, children: /* @__PURE__ */ jsx293(
|
|
33049
32999
|
Button,
|
|
33050
33000
|
{
|
|
@@ -33057,7 +33007,7 @@ var CategorySection = ({
|
|
|
33057
33007
|
), children: getApprovalLevelLabel(category.globalPermission, editMode) })
|
|
33058
33008
|
}
|
|
33059
33009
|
) }),
|
|
33060
|
-
/* @__PURE__ */
|
|
33010
|
+
/* @__PURE__ */ jsxs239(DropdownMenuContent2, { align: "end", className: "w-[256px]", children: [
|
|
33061
33011
|
/* @__PURE__ */ jsx293(
|
|
33062
33012
|
DropdownMenuItem2,
|
|
33063
33013
|
{
|
|
@@ -33170,7 +33120,7 @@ init_button2();
|
|
|
33170
33120
|
init_cn();
|
|
33171
33121
|
import { getCountries as getCountries2 } from "libphonenumber-js";
|
|
33172
33122
|
import { useEffect as useEffect50, useState as useState71 } from "react";
|
|
33173
|
-
import { Fragment as Fragment44, jsx as jsx294, jsxs as
|
|
33123
|
+
import { Fragment as Fragment44, jsx as jsx294, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
33174
33124
|
function WaitlistForm({
|
|
33175
33125
|
id = "waitlist-form",
|
|
33176
33126
|
className,
|
|
@@ -33235,16 +33185,16 @@ function WaitlistForm({
|
|
|
33235
33185
|
}
|
|
33236
33186
|
};
|
|
33237
33187
|
if (!isClient) {
|
|
33238
|
-
return /* @__PURE__ */
|
|
33188
|
+
return /* @__PURE__ */ jsxs240("div", { className: cn(
|
|
33239
33189
|
"flex flex-col gap-[var(--spacing-system-l)] rounded-[6px] border border-ods-border bg-ods-bg p-[var(--spacing-system-m)]",
|
|
33240
33190
|
className
|
|
33241
33191
|
), children: [
|
|
33242
33192
|
/* @__PURE__ */ jsx294("div", { className: "w-full h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse" }),
|
|
33243
|
-
/* @__PURE__ */
|
|
33193
|
+
/* @__PURE__ */ jsxs240("div", { className: "flex gap-[var(--spacing-system-xs)] w-full", children: [
|
|
33244
33194
|
/* @__PURE__ */ jsx294("div", { className: "w-[130px] h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse shrink-0" }),
|
|
33245
33195
|
/* @__PURE__ */ jsx294("div", { className: "flex-1 h-12 bg-ods-card border border-ods-border rounded-[6px] animate-pulse" })
|
|
33246
33196
|
] }),
|
|
33247
|
-
/* @__PURE__ */
|
|
33197
|
+
/* @__PURE__ */ jsxs240("div", { className: "flex flex-col gap-[var(--spacing-system-m)] items-end w-full", children: [
|
|
33248
33198
|
/* @__PURE__ */ jsx294("div", { className: "w-full rounded-[6px] border border-ods-border bg-ods-bg animate-pulse py-6 px-4" }),
|
|
33249
33199
|
/* @__PURE__ */ jsx294("div", { className: "h-12 w-[200px] bg-ods-card border border-ods-border rounded-[6px] animate-pulse" })
|
|
33250
33200
|
] })
|
|
@@ -33258,7 +33208,7 @@ function WaitlistForm({
|
|
|
33258
33208
|
handleSubmit();
|
|
33259
33209
|
}
|
|
33260
33210
|
};
|
|
33261
|
-
return /* @__PURE__ */
|
|
33211
|
+
return /* @__PURE__ */ jsxs240(
|
|
33262
33212
|
"div",
|
|
33263
33213
|
{
|
|
33264
33214
|
id,
|
|
@@ -33281,7 +33231,7 @@ function WaitlistForm({
|
|
|
33281
33231
|
errorVariant: "warning"
|
|
33282
33232
|
}
|
|
33283
33233
|
),
|
|
33284
|
-
/* @__PURE__ */
|
|
33234
|
+
/* @__PURE__ */ jsxs240("div", { className: "relative w-full", children: [
|
|
33285
33235
|
/* @__PURE__ */ jsx294(
|
|
33286
33236
|
PhoneInput,
|
|
33287
33237
|
{
|
|
@@ -33300,7 +33250,7 @@ function WaitlistForm({
|
|
|
33300
33250
|
),
|
|
33301
33251
|
showPhoneWarning && /* @__PURE__ */ jsx294("p", { className: "text-h6 absolute bottom-0 left-0 translate-y-full text-[var(--ods-attention-yellow-warning)] truncate", children: invalidPhoneHint })
|
|
33302
33252
|
] }),
|
|
33303
|
-
/* @__PURE__ */
|
|
33253
|
+
/* @__PURE__ */ jsxs240("div", { className: "flex flex-col gap-[var(--spacing-system-l)] items-end w-full", children: [
|
|
33304
33254
|
/* @__PURE__ */ jsx294(
|
|
33305
33255
|
CheckboxBlock,
|
|
33306
33256
|
{
|
|
@@ -33312,7 +33262,7 @@ function WaitlistForm({
|
|
|
33312
33262
|
error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
|
|
33313
33263
|
disabled: isSubmitting,
|
|
33314
33264
|
label: smsCheckboxLabel,
|
|
33315
|
-
description: /* @__PURE__ */
|
|
33265
|
+
description: /* @__PURE__ */ jsxs240(Fragment44, { children: [
|
|
33316
33266
|
consentText,
|
|
33317
33267
|
" View our ",
|
|
33318
33268
|
/* @__PURE__ */ jsx294(
|
|
@@ -33384,7 +33334,7 @@ init_cn();
|
|
|
33384
33334
|
|
|
33385
33335
|
// src/components/features/board/board-column-header.tsx
|
|
33386
33336
|
init_button();
|
|
33387
|
-
import { jsx as jsx295, jsxs as
|
|
33337
|
+
import { jsx as jsx295, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
33388
33338
|
function BoardColumnHeader({
|
|
33389
33339
|
column,
|
|
33390
33340
|
collapsed = false,
|
|
@@ -33394,7 +33344,7 @@ function BoardColumnHeader({
|
|
|
33394
33344
|
const count = column.total ?? column.tickets.length;
|
|
33395
33345
|
const useStatusVariant = !!getTicketStatusConfig(column.id).icon;
|
|
33396
33346
|
if (collapsed) {
|
|
33397
|
-
return /* @__PURE__ */
|
|
33347
|
+
return /* @__PURE__ */ jsxs241("div", { className: "flex h-full flex-col items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33398
33348
|
/* @__PURE__ */ jsx295(
|
|
33399
33349
|
Button,
|
|
33400
33350
|
{
|
|
@@ -33418,8 +33368,8 @@ function BoardColumnHeader({
|
|
|
33418
33368
|
/* @__PURE__ */ jsx295("span", { className: "text-h5", style: { color: column.color }, children: count })
|
|
33419
33369
|
] });
|
|
33420
33370
|
}
|
|
33421
|
-
return /* @__PURE__ */
|
|
33422
|
-
/* @__PURE__ */
|
|
33371
|
+
return /* @__PURE__ */ jsxs241("div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33372
|
+
/* @__PURE__ */ jsxs241("div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33423
33373
|
/* @__PURE__ */ jsx295(
|
|
33424
33374
|
TicketStatusTag,
|
|
33425
33375
|
{
|
|
@@ -33437,7 +33387,7 @@ function BoardColumnHeader({
|
|
|
33437
33387
|
}
|
|
33438
33388
|
)
|
|
33439
33389
|
] }),
|
|
33440
|
-
/* @__PURE__ */
|
|
33390
|
+
/* @__PURE__ */ jsxs241("div", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
33441
33391
|
/* @__PURE__ */ jsx295(
|
|
33442
33392
|
Button,
|
|
33443
33393
|
{
|
|
@@ -33481,7 +33431,7 @@ import { CSS } from "@dnd-kit/utilities";
|
|
|
33481
33431
|
import Link11 from "next/link";
|
|
33482
33432
|
import * as React99 from "react";
|
|
33483
33433
|
init_cn();
|
|
33484
|
-
import { Fragment as Fragment45, jsx as jsx296, jsxs as
|
|
33434
|
+
import { Fragment as Fragment45, jsx as jsx296, jsxs as jsxs242 } from "react/jsx-runtime";
|
|
33485
33435
|
var PRIORITY_COLOR_CLASS = {
|
|
33486
33436
|
low: "text-ods-text-secondary",
|
|
33487
33437
|
medium: "text-ods-info",
|
|
@@ -33520,7 +33470,7 @@ function TicketCard({
|
|
|
33520
33470
|
if (sortable.isDragging) e.preventDefault();
|
|
33521
33471
|
};
|
|
33522
33472
|
const hasRightSection = !!(ticket.priority || ticket.assignees?.length || renderAssignSlot);
|
|
33523
|
-
const rightSection = hasRightSection ? /* @__PURE__ */
|
|
33473
|
+
const rightSection = hasRightSection ? /* @__PURE__ */ jsxs242("div", { className: "pointer-events-auto flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33524
33474
|
ticket.priority && /* @__PURE__ */ jsx296(
|
|
33525
33475
|
Flag02Icon,
|
|
33526
33476
|
{
|
|
@@ -33528,7 +33478,7 @@ function TicketCard({
|
|
|
33528
33478
|
"aria-label": `Priority: ${ticket.priority}`
|
|
33529
33479
|
}
|
|
33530
33480
|
),
|
|
33531
|
-
renderAssignSlot ? renderAssignSlot(ticket) : ticket.assignees?.length ? /* @__PURE__ */
|
|
33481
|
+
renderAssignSlot ? renderAssignSlot(ticket) : ticket.assignees?.length ? /* @__PURE__ */ jsxs242("div", { className: "flex -space-x-2", children: [
|
|
33532
33482
|
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ jsx296(
|
|
33533
33483
|
SquareAvatar,
|
|
33534
33484
|
{
|
|
@@ -33540,17 +33490,17 @@ function TicketCard({
|
|
|
33540
33490
|
},
|
|
33541
33491
|
a.id
|
|
33542
33492
|
)),
|
|
33543
|
-
ticket.assignees.length > MAX_VISIBLE_ASSIGNEES && /* @__PURE__ */
|
|
33493
|
+
ticket.assignees.length > MAX_VISIBLE_ASSIGNEES && /* @__PURE__ */ jsxs242("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: [
|
|
33544
33494
|
"+",
|
|
33545
33495
|
ticket.assignees.length - MAX_VISIBLE_ASSIGNEES
|
|
33546
33496
|
] })
|
|
33547
33497
|
] }) : null
|
|
33548
33498
|
] }) : null;
|
|
33549
|
-
const body = /* @__PURE__ */
|
|
33550
|
-
/* @__PURE__ */
|
|
33551
|
-
/* @__PURE__ */
|
|
33499
|
+
const body = /* @__PURE__ */ jsxs242(Fragment45, { children: [
|
|
33500
|
+
/* @__PURE__ */ jsxs242("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
33501
|
+
/* @__PURE__ */ jsxs242("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", children: [
|
|
33552
33502
|
/* @__PURE__ */ jsx296("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
33553
|
-
showDeviceRow && /* @__PURE__ */
|
|
33503
|
+
showDeviceRow && /* @__PURE__ */ jsxs242("div", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xxs)] text-h6 text-ods-text-secondary", children: [
|
|
33554
33504
|
/* @__PURE__ */ jsx296(LaptopIcon, { className: "size-4 shrink-0" }),
|
|
33555
33505
|
/* @__PURE__ */ jsx296("span", { className: "truncate", children: deviceText })
|
|
33556
33506
|
] })
|
|
@@ -33577,7 +33527,7 @@ function TicketCard({
|
|
|
33577
33527
|
return /* @__PURE__ */ jsx296("div", { ...outerProps, children: /* @__PURE__ */ jsx296("div", { className: innerWrapperClass, children: body }) });
|
|
33578
33528
|
}
|
|
33579
33529
|
if (href) {
|
|
33580
|
-
return /* @__PURE__ */
|
|
33530
|
+
return /* @__PURE__ */ jsxs242("div", { ...outerProps, children: [
|
|
33581
33531
|
/* @__PURE__ */ jsx296(
|
|
33582
33532
|
Link11,
|
|
33583
33533
|
{
|
|
@@ -33592,7 +33542,7 @@ function TicketCard({
|
|
|
33592
33542
|
/* @__PURE__ */ jsx296("div", { className: cn("pointer-events-none", innerWrapperClass), children: body })
|
|
33593
33543
|
] });
|
|
33594
33544
|
}
|
|
33595
|
-
return /* @__PURE__ */
|
|
33545
|
+
return /* @__PURE__ */ jsxs242("div", { ...outerProps, children: [
|
|
33596
33546
|
/* @__PURE__ */ jsx296(
|
|
33597
33547
|
"button",
|
|
33598
33548
|
{
|
|
@@ -33608,7 +33558,7 @@ function TicketCard({
|
|
|
33608
33558
|
function TicketTagRow({ tags }) {
|
|
33609
33559
|
const visible = tags.slice(0, MAX_VISIBLE_TAGS);
|
|
33610
33560
|
const hidden = tags.length - visible.length;
|
|
33611
|
-
return /* @__PURE__ */
|
|
33561
|
+
return /* @__PURE__ */ jsxs242("div", { className: "flex h-8 flex-wrap items-start gap-[var(--spacing-system-xxs)] overflow-clip", children: [
|
|
33612
33562
|
visible.map((tag) => /* @__PURE__ */ jsx296(Tag, { variant: "outline", label: tag }, tag)),
|
|
33613
33563
|
hidden > 0 && /* @__PURE__ */ jsx296(Tag, { variant: "outline", label: `+${hidden}` })
|
|
33614
33564
|
] });
|
|
@@ -33617,9 +33567,9 @@ function TicketTagRow({ tags }) {
|
|
|
33617
33567
|
// src/components/features/board/ticket-card-skeleton.tsx
|
|
33618
33568
|
import * as React100 from "react";
|
|
33619
33569
|
init_cn();
|
|
33620
|
-
import { jsx as jsx297, jsxs as
|
|
33570
|
+
import { jsx as jsx297, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
33621
33571
|
var TicketCardSkeleton = React100.forwardRef(
|
|
33622
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
33572
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxs243(
|
|
33623
33573
|
"div",
|
|
33624
33574
|
{
|
|
33625
33575
|
ref,
|
|
@@ -33629,20 +33579,20 @@ var TicketCardSkeleton = React100.forwardRef(
|
|
|
33629
33579
|
),
|
|
33630
33580
|
...props,
|
|
33631
33581
|
children: [
|
|
33632
|
-
/* @__PURE__ */
|
|
33633
|
-
/* @__PURE__ */
|
|
33582
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
33583
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33634
33584
|
/* @__PURE__ */ jsx297("div", { className: "text-h3 flex items-center", children: /* @__PURE__ */ jsx297(Skeleton, { className: "h-4 w-3/4" }) }),
|
|
33635
|
-
/* @__PURE__ */
|
|
33585
|
+
/* @__PURE__ */ jsxs243("div", { className: "text-h6 flex items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
33636
33586
|
/* @__PURE__ */ jsx297(Skeleton, { className: "size-4 shrink-0 rounded-sm" }),
|
|
33637
33587
|
/* @__PURE__ */ jsx297(Skeleton, { className: "h-3 w-1/2" })
|
|
33638
33588
|
] })
|
|
33639
33589
|
] }),
|
|
33640
|
-
/* @__PURE__ */
|
|
33590
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33641
33591
|
/* @__PURE__ */ jsx297(Skeleton, { className: "size-4 rounded-sm" }),
|
|
33642
33592
|
/* @__PURE__ */ jsx297(Skeleton, { className: "size-8 rounded-full" })
|
|
33643
33593
|
] })
|
|
33644
33594
|
] }),
|
|
33645
|
-
/* @__PURE__ */
|
|
33595
|
+
/* @__PURE__ */ jsxs243("div", { className: "flex h-8 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
33646
33596
|
/* @__PURE__ */ jsx297(Skeleton, { className: "h-8 w-16 rounded-md" }),
|
|
33647
33597
|
/* @__PURE__ */ jsx297(Skeleton, { className: "h-8 w-12 rounded-md" })
|
|
33648
33598
|
] })
|
|
@@ -33653,7 +33603,7 @@ var TicketCardSkeleton = React100.forwardRef(
|
|
|
33653
33603
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
33654
33604
|
|
|
33655
33605
|
// src/components/features/board/board-column.tsx
|
|
33656
|
-
import { Fragment as Fragment46, jsx as jsx298, jsxs as
|
|
33606
|
+
import { Fragment as Fragment46, jsx as jsx298, jsxs as jsxs244 } from "react/jsx-runtime";
|
|
33657
33607
|
function BoardColumn({
|
|
33658
33608
|
column,
|
|
33659
33609
|
collapsed = false,
|
|
@@ -33666,7 +33616,7 @@ function BoardColumn({
|
|
|
33666
33616
|
joinLeft = false,
|
|
33667
33617
|
joinRight = false
|
|
33668
33618
|
}) {
|
|
33669
|
-
return /* @__PURE__ */
|
|
33619
|
+
return /* @__PURE__ */ jsxs244(
|
|
33670
33620
|
"div",
|
|
33671
33621
|
{
|
|
33672
33622
|
className: cn(
|
|
@@ -33688,7 +33638,7 @@ function BoardColumn({
|
|
|
33688
33638
|
onAddTicket: !collapsed && onAddTicket ? () => onAddTicket(column.id) : void 0
|
|
33689
33639
|
}
|
|
33690
33640
|
),
|
|
33691
|
-
!collapsed && /* @__PURE__ */
|
|
33641
|
+
!collapsed && /* @__PURE__ */ jsxs244(Fragment46, { children: [
|
|
33692
33642
|
/* @__PURE__ */ jsx298("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
33693
33643
|
/* @__PURE__ */ jsx298(
|
|
33694
33644
|
ColumnBody,
|
|
@@ -33745,7 +33695,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33745
33695
|
},
|
|
33746
33696
|
[setDroppableRef]
|
|
33747
33697
|
);
|
|
33748
|
-
return /* @__PURE__ */
|
|
33698
|
+
return /* @__PURE__ */ jsxs244(
|
|
33749
33699
|
"div",
|
|
33750
33700
|
{
|
|
33751
33701
|
ref: setBodyRef,
|
|
@@ -33779,9 +33729,9 @@ function SkeletonStack({ count = 4 }) {
|
|
|
33779
33729
|
return /* @__PURE__ */ jsx298(Fragment46, { children: keys.map((k) => /* @__PURE__ */ jsx298(TicketCardSkeleton, {}, k)) });
|
|
33780
33730
|
}
|
|
33781
33731
|
function EmptyState3() {
|
|
33782
|
-
return /* @__PURE__ */
|
|
33732
|
+
return /* @__PURE__ */ jsxs244("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: [
|
|
33783
33733
|
/* @__PURE__ */ jsx298(TagIcon, { className: "h-6 w-6 shrink-0" }),
|
|
33784
|
-
/* @__PURE__ */
|
|
33734
|
+
/* @__PURE__ */ jsxs244("div", { className: "flex w-full flex-col", children: [
|
|
33785
33735
|
/* @__PURE__ */ jsx298("p", { className: "text-h4", children: "No tickets here" }),
|
|
33786
33736
|
/* @__PURE__ */ jsx298("p", { className: "text-h6", children: "Drag a ticket here or change its status to move it to this column" })
|
|
33787
33737
|
] })
|
|
@@ -33814,7 +33764,7 @@ function useBoardCollapse(storageKey) {
|
|
|
33814
33764
|
}
|
|
33815
33765
|
|
|
33816
33766
|
// src/components/features/board/board.tsx
|
|
33817
|
-
import { jsx as jsx299, jsxs as
|
|
33767
|
+
import { jsx as jsx299, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
33818
33768
|
function Board({
|
|
33819
33769
|
columns,
|
|
33820
33770
|
onChange,
|
|
@@ -33981,7 +33931,7 @@ function Board({
|
|
|
33981
33931
|
isDraggingRef.current = false;
|
|
33982
33932
|
setItems(columns);
|
|
33983
33933
|
};
|
|
33984
|
-
return /* @__PURE__ */
|
|
33934
|
+
return /* @__PURE__ */ jsxs245(
|
|
33985
33935
|
DndContext,
|
|
33986
33936
|
{
|
|
33987
33937
|
sensors,
|
|
@@ -33991,7 +33941,7 @@ function Board({
|
|
|
33991
33941
|
onDragEnd: handleDragEnd,
|
|
33992
33942
|
onDragCancel: handleDragCancel,
|
|
33993
33943
|
children: [
|
|
33994
|
-
/* @__PURE__ */
|
|
33944
|
+
/* @__PURE__ */ jsxs245("div", { className: cn("flex flex-col h-full", className), children: [
|
|
33995
33945
|
/* @__PURE__ */ jsx299(
|
|
33996
33946
|
"div",
|
|
33997
33947
|
{
|
|
@@ -34004,7 +33954,7 @@ function Board({
|
|
|
34004
33954
|
const joinLeft = !!(column.system && prev?.system);
|
|
34005
33955
|
const joinRight = !!(column.system && next?.system);
|
|
34006
33956
|
const showGap = i > 0 && !joinLeft;
|
|
34007
|
-
return /* @__PURE__ */
|
|
33957
|
+
return /* @__PURE__ */ jsxs245(React102.Fragment, { children: [
|
|
34008
33958
|
showGap && /* @__PURE__ */ jsx299("div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
34009
33959
|
/* @__PURE__ */ jsx299(
|
|
34010
33960
|
BoardColumn,
|
|
@@ -34301,7 +34251,6 @@ export {
|
|
|
34301
34251
|
useLoading,
|
|
34302
34252
|
MediaGalleryManager,
|
|
34303
34253
|
MoreAboutButton,
|
|
34304
|
-
OrganizationIcon,
|
|
34305
34254
|
OSTypeBadge,
|
|
34306
34255
|
OSTypeIcon,
|
|
34307
34256
|
OSTypeLabel,
|
|
@@ -34617,6 +34566,7 @@ export {
|
|
|
34617
34566
|
TagKeyValueFilter,
|
|
34618
34567
|
FilterModal,
|
|
34619
34568
|
ListPageLayout,
|
|
34569
|
+
EntityImage,
|
|
34620
34570
|
TitleBlock,
|
|
34621
34571
|
PageLayout,
|
|
34622
34572
|
toggleVariants,
|
|
@@ -34727,4 +34677,4 @@ export {
|
|
|
34727
34677
|
TMCG_SOCIAL_PLATFORMS,
|
|
34728
34678
|
assets
|
|
34729
34679
|
};
|
|
34730
|
-
//# sourceMappingURL=chunk-
|
|
34680
|
+
//# sourceMappingURL=chunk-CSW5GYBU.js.map
|