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