@delmaredigital/payload-puck 0.1.0 → 0.1.2
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/README.md +32 -4
- package/dist/AccordionClient.d.mts +1 -1
- package/dist/AccordionClient.d.ts +1 -1
- package/dist/AccordionClient.js +2 -2
- package/dist/AccordionClient.mjs +2 -2
- package/dist/AnimatedWrapper.d.mts +1 -1
- package/dist/AnimatedWrapper.d.ts +1 -1
- package/dist/components/index.d.mts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +196 -217
- package/dist/components/index.mjs +200 -221
- package/dist/config/config.editor.d.mts +1 -1
- package/dist/config/config.editor.d.ts +1 -1
- package/dist/config/config.editor.js +199 -220
- package/dist/config/config.editor.mjs +203 -224
- package/dist/config/index.js +33 -16
- package/dist/config/index.mjs +33 -16
- package/dist/editor/index.js +56 -39
- package/dist/editor/index.mjs +56 -39
- package/dist/fields/index.d.mts +4 -4
- package/dist/fields/index.d.ts +4 -4
- package/dist/fields/index.js +201 -222
- package/dist/fields/index.mjs +205 -226
- package/dist/render/index.js +33 -16
- package/dist/render/index.mjs +33 -16
- package/dist/{shared-DMAF1AcH.d.mts → shared-DeNKN95N.d.mts} +7 -6
- package/dist/{shared-DMAF1AcH.d.ts → shared-DeNKN95N.d.ts} +7 -6
- package/examples/README.md +9 -2
- package/examples/app/(manage)/layout.tsx +31 -0
- package/package.json +13 -10
- package/dist/AccordionClient.js.map +0 -1
- package/dist/AccordionClient.mjs.map +0 -1
- package/dist/AnimatedWrapper.js.map +0 -1
- package/dist/AnimatedWrapper.mjs.map +0 -1
- package/dist/admin/client.js.map +0 -1
- package/dist/admin/client.mjs.map +0 -1
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/index.mjs.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/index.mjs.map +0 -1
- package/dist/components/index.css.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs.map +0 -1
- package/dist/config/config.editor.css.map +0 -1
- package/dist/config/config.editor.js.map +0 -1
- package/dist/config/config.editor.mjs.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/index.mjs.map +0 -1
- package/dist/editor/index.js.map +0 -1
- package/dist/editor/index.mjs.map +0 -1
- package/dist/fields/index.css.map +0 -1
- package/dist/fields/index.js.map +0 -1
- package/dist/fields/index.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/layouts/index.js.map +0 -1
- package/dist/layouts/index.mjs.map +0 -1
- package/dist/plugin/index.js.map +0 -1
- package/dist/plugin/index.mjs.map +0 -1
- package/dist/render/index.js.map +0 -1
- package/dist/render/index.mjs.map +0 -1
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/index.mjs.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var React7 = require('react');
|
|
5
|
-
var
|
|
5
|
+
var lucideReact = require('lucide-react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var tailwindMerge = require('tailwind-merge');
|
|
@@ -546,7 +546,7 @@ function transformValueToCSS(transform) {
|
|
|
546
546
|
return Object.keys(style).length > 0 ? style : void 0;
|
|
547
547
|
}
|
|
548
548
|
var BREAKPOINTS = [
|
|
549
|
-
{ key: "
|
|
549
|
+
{ key: "xs", label: "XS", minWidth: null },
|
|
550
550
|
{ key: "sm", label: "SM", minWidth: 640 },
|
|
551
551
|
{ key: "md", label: "MD", minWidth: 768 },
|
|
552
552
|
{ key: "lg", label: "LG", minWidth: 1024 },
|
|
@@ -554,7 +554,7 @@ var BREAKPOINTS = [
|
|
|
554
554
|
];
|
|
555
555
|
function isResponsiveValue(value) {
|
|
556
556
|
if (!value || typeof value !== "object") return false;
|
|
557
|
-
return "
|
|
557
|
+
return "xs" in value;
|
|
558
558
|
}
|
|
559
559
|
function camelToKebab(str) {
|
|
560
560
|
return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
@@ -580,7 +580,7 @@ function responsiveValueToCSS(value, converter, uniqueId) {
|
|
|
580
580
|
if (bpValue === void 0) return;
|
|
581
581
|
const cssProps = converter(bpValue);
|
|
582
582
|
if (!cssProps) return;
|
|
583
|
-
if (bp.key === "
|
|
583
|
+
if (bp.key === "xs") {
|
|
584
584
|
baseStyles = cssProps;
|
|
585
585
|
} else {
|
|
586
586
|
const styleString = cssPropertiesToString(cssProps);
|
|
@@ -594,29 +594,50 @@ function responsiveValueToCSS(value, converter, uniqueId) {
|
|
|
594
594
|
return { baseStyles, mediaQueryCSS: mediaQueries.join("\n") };
|
|
595
595
|
}
|
|
596
596
|
var DEFAULT_VISIBILITY = {
|
|
597
|
-
|
|
597
|
+
xs: true,
|
|
598
|
+
sm: true,
|
|
599
|
+
md: true,
|
|
600
|
+
lg: true,
|
|
601
|
+
xl: true
|
|
598
602
|
};
|
|
599
603
|
function visibilityValueToCSS(visibility, uniqueId) {
|
|
600
604
|
if (!visibility) return "";
|
|
601
605
|
const mediaQueries = [];
|
|
602
|
-
|
|
603
|
-
|
|
606
|
+
const breakpointWidths = {
|
|
607
|
+
xs: null,
|
|
608
|
+
// 0px
|
|
609
|
+
sm: 640,
|
|
610
|
+
md: 768,
|
|
611
|
+
lg: 1024,
|
|
612
|
+
xl: 1280
|
|
613
|
+
};
|
|
614
|
+
const getNextBreakpointWidth = (bp) => {
|
|
615
|
+
const order = ["xs", "sm", "md", "lg", "xl"];
|
|
616
|
+
const index = order.indexOf(bp);
|
|
617
|
+
if (index === -1 || index === order.length - 1) return null;
|
|
618
|
+
return breakpointWidths[order[index + 1]];
|
|
619
|
+
};
|
|
620
|
+
if (visibility.xs === false) {
|
|
621
|
+
const nextWidth = getNextBreakpointWidth("xs");
|
|
622
|
+
if (nextWidth) {
|
|
623
|
+
mediaQueries.push(`@media (max-width: ${nextWidth - 1}px) { .${uniqueId} { display: none; } }`);
|
|
624
|
+
} else {
|
|
625
|
+
mediaQueries.push(`.${uniqueId} { display: none; }`);
|
|
626
|
+
}
|
|
604
627
|
}
|
|
605
|
-
let lastVisibility = visibility.base;
|
|
606
628
|
BREAKPOINTS.slice(1).forEach((bp) => {
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
if (
|
|
629
|
+
if (visibility[bp.key] === false) {
|
|
630
|
+
const minWidth = breakpointWidths[bp.key];
|
|
631
|
+
const maxWidth = getNextBreakpointWidth(bp.key);
|
|
632
|
+
if (minWidth && maxWidth) {
|
|
611
633
|
mediaQueries.push(
|
|
612
|
-
`@media (min-width: ${
|
|
634
|
+
`@media (min-width: ${minWidth}px) and (max-width: ${maxWidth - 1}px) { .${uniqueId} { display: none; } }`
|
|
613
635
|
);
|
|
614
|
-
} else {
|
|
636
|
+
} else if (minWidth) {
|
|
615
637
|
mediaQueries.push(
|
|
616
|
-
`@media (min-width: ${
|
|
638
|
+
`@media (min-width: ${minWidth}px) { .${uniqueId} { display: none; } }`
|
|
617
639
|
);
|
|
618
640
|
}
|
|
619
|
-
lastVisibility = bpValue;
|
|
620
641
|
}
|
|
621
642
|
});
|
|
622
643
|
return mediaQueries.join("\n");
|
|
@@ -1134,7 +1155,7 @@ function ColorPickerFieldInner({
|
|
|
1134
1155
|
onClick: handleClear,
|
|
1135
1156
|
title: "Clear color",
|
|
1136
1157
|
className: "flex items-center justify-center w-8 h-8 rounded border-none bg-transparent cursor-pointer text-muted-foreground flex-shrink-0 hover:bg-accent hover:text-destructive",
|
|
1137
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1158
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "w-4 h-4" })
|
|
1138
1159
|
}
|
|
1139
1160
|
)
|
|
1140
1161
|
] }),
|
|
@@ -1300,7 +1321,7 @@ var DialogContent = React7__namespace.forwardRef(({ className, children, ...prop
|
|
|
1300
1321
|
children: [
|
|
1301
1322
|
children,
|
|
1302
1323
|
/* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
|
|
1303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1324
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
|
|
1304
1325
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
1305
1326
|
] })
|
|
1306
1327
|
]
|
|
@@ -1323,7 +1344,7 @@ var DialogContentFullscreen = React7__namespace.forwardRef(({ className, childre
|
|
|
1323
1344
|
/* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Title, { className: "sr-only", children: accessibleTitle }),
|
|
1324
1345
|
children,
|
|
1325
1346
|
!hideCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
|
|
1326
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1347
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
|
|
1327
1348
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
1328
1349
|
] })
|
|
1329
1350
|
]
|
|
@@ -1597,10 +1618,10 @@ function MediaFieldInner({
|
|
|
1597
1618
|
onClick: handleRemove,
|
|
1598
1619
|
className: "absolute -top-2 -right-2 p-1 bg-destructive text-destructive-foreground rounded-full opacity-0 group-hover:opacity-100 transition-opacity",
|
|
1599
1620
|
"aria-label": "Remove image",
|
|
1600
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1621
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3 w-3" })
|
|
1601
1622
|
}
|
|
1602
1623
|
)
|
|
1603
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-24 h-24 bg-muted rounded-md border border-dashed border-input flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1624
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-24 h-24 bg-muted rounded-md border border-dashed border-input flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Image, { className: "h-8 w-8 text-muted-foreground" }) }),
|
|
1604
1625
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1605
1626
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1606
1627
|
Button,
|
|
@@ -1624,7 +1645,7 @@ function MediaFieldInner({
|
|
|
1624
1645
|
] })
|
|
1625
1646
|
] }),
|
|
1626
1647
|
value?.url && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
1627
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1648
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-3 w-3 flex-shrink-0" }),
|
|
1628
1649
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate max-w-[280px]", title: value.url, children: value.url })
|
|
1629
1650
|
] })
|
|
1630
1651
|
] }),
|
|
@@ -1669,7 +1690,7 @@ function MediaFieldInner({
|
|
|
1669
1690
|
)
|
|
1670
1691
|
] }),
|
|
1671
1692
|
activeTab === "browse" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-shrink-0", children: [
|
|
1672
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1693
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400" }),
|
|
1673
1694
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1674
1695
|
Input,
|
|
1675
1696
|
{
|
|
@@ -1715,7 +1736,7 @@ function MediaFieldInner({
|
|
|
1715
1736
|
onClick: handleLoadMore,
|
|
1716
1737
|
disabled: loading,
|
|
1717
1738
|
children: loading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1718
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1739
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
1719
1740
|
"Loading..."
|
|
1720
1741
|
] }) : "Load More"
|
|
1721
1742
|
}
|
|
@@ -1745,15 +1766,15 @@ function MediaFieldInner({
|
|
|
1745
1766
|
] })
|
|
1746
1767
|
] }),
|
|
1747
1768
|
uploadState.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 bg-destructive/10 border border-destructive/30 rounded-md text-destructive text-sm flex items-start gap-2", children: [
|
|
1748
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1769
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-4 w-4 flex-shrink-0 mt-0.5" }),
|
|
1749
1770
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: uploadState.error })
|
|
1750
1771
|
] }),
|
|
1751
1772
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
1752
1773
|
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: handleUpload, disabled: uploadState.uploading, children: uploadState.uploading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1753
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1774
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
1754
1775
|
"Uploading..."
|
|
1755
1776
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1756
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1777
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "h-4 w-4 mr-2" }),
|
|
1757
1778
|
"Upload & Select"
|
|
1758
1779
|
] }) }),
|
|
1759
1780
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1767,7 +1788,7 @@ function MediaFieldInner({
|
|
|
1767
1788
|
)
|
|
1768
1789
|
] })
|
|
1769
1790
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
|
|
1770
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1791
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Image, { className: "h-16 w-16 text-muted mx-auto mb-4" }),
|
|
1771
1792
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "cursor-pointer", children: [
|
|
1772
1793
|
/* @__PURE__ */ jsxRuntime.jsx(Button, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Select Image" }) }),
|
|
1773
1794
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1787,7 +1808,7 @@ function MediaFieldInner({
|
|
|
1787
1808
|
/* URL Tab */
|
|
1788
1809
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center justify-center h-full min-h-[300px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-md space-y-4", children: [
|
|
1789
1810
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center mb-6", children: [
|
|
1790
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1811
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-12 w-12 text-muted-foreground mx-auto mb-2" }),
|
|
1791
1812
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Enter an image URL from an external source" })
|
|
1792
1813
|
] }),
|
|
1793
1814
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
@@ -1825,10 +1846,10 @@ function MediaFieldInner({
|
|
|
1825
1846
|
onError: handleUrlPreviewError
|
|
1826
1847
|
}
|
|
1827
1848
|
),
|
|
1828
|
-
!urlState.previewLoaded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1849
|
+
!urlState.previewLoaded && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-8 w-8 animate-spin text-muted-foreground" }) })
|
|
1829
1850
|
] }),
|
|
1830
1851
|
urlState.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 bg-destructive/10 border border-destructive/30 rounded-md text-destructive text-sm flex items-start gap-2", children: [
|
|
1831
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1852
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-4 w-4 flex-shrink-0 mt-0.5" }),
|
|
1832
1853
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: urlState.error })
|
|
1833
1854
|
] }),
|
|
1834
1855
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
@@ -1838,7 +1859,7 @@ function MediaFieldInner({
|
|
|
1838
1859
|
onClick: handleUrlSubmit,
|
|
1839
1860
|
disabled: !urlState.url || urlState.loading,
|
|
1840
1861
|
children: [
|
|
1841
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1862
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-4 w-4 mr-2" }),
|
|
1842
1863
|
"Use This URL"
|
|
1843
1864
|
]
|
|
1844
1865
|
}
|
|
@@ -1881,7 +1902,7 @@ var SelectTrigger = React7__namespace.forwardRef(({ className, children, ...prop
|
|
|
1881
1902
|
...props,
|
|
1882
1903
|
children: [
|
|
1883
1904
|
children,
|
|
1884
|
-
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1905
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
1885
1906
|
]
|
|
1886
1907
|
}
|
|
1887
1908
|
));
|
|
@@ -1895,7 +1916,7 @@ var SelectScrollUpButton = React7__namespace.forwardRef(({ className, ...props }
|
|
|
1895
1916
|
className
|
|
1896
1917
|
),
|
|
1897
1918
|
...props,
|
|
1898
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1919
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
|
|
1899
1920
|
}
|
|
1900
1921
|
));
|
|
1901
1922
|
SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
|
|
@@ -1908,7 +1929,7 @@ var SelectScrollDownButton = React7__namespace.forwardRef(({ className, ...props
|
|
|
1908
1929
|
className
|
|
1909
1930
|
),
|
|
1910
1931
|
...props,
|
|
1911
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1932
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" })
|
|
1912
1933
|
}
|
|
1913
1934
|
));
|
|
1914
1935
|
SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
|
|
@@ -1959,7 +1980,7 @@ var SelectItem = React7__namespace.forwardRef(({ className, children, ...props }
|
|
|
1959
1980
|
),
|
|
1960
1981
|
...props,
|
|
1961
1982
|
children: [
|
|
1962
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1983
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
|
|
1963
1984
|
/* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
|
|
1964
1985
|
]
|
|
1965
1986
|
}
|
|
@@ -2098,7 +2119,7 @@ function GradientStopEditorInner({
|
|
|
2098
2119
|
onClick: () => onDelete(index),
|
|
2099
2120
|
className: "p-1 text-muted-foreground hover:text-destructive hover:bg-destructive/10 rounded flex-shrink-0",
|
|
2100
2121
|
title: "Remove stop",
|
|
2101
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2122
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { className: "w-4 h-4" })
|
|
2102
2123
|
}
|
|
2103
2124
|
)
|
|
2104
2125
|
] }),
|
|
@@ -2312,7 +2333,7 @@ function GradientEditorInner({ value, onChange, readOnly }) {
|
|
|
2312
2333
|
onClick: handleAddStop,
|
|
2313
2334
|
className: "h-6 text-xs px-2",
|
|
2314
2335
|
children: [
|
|
2315
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2336
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "w-3 h-3 mr-1" }),
|
|
2316
2337
|
"Add Stop"
|
|
2317
2338
|
]
|
|
2318
2339
|
}
|
|
@@ -2826,7 +2847,7 @@ function BackgroundFieldInner({
|
|
|
2826
2847
|
onClick: handleClear,
|
|
2827
2848
|
title: "Clear background",
|
|
2828
2849
|
className: "flex items-center justify-center w-6 h-6 rounded border-none bg-transparent cursor-pointer text-muted-foreground hover:bg-accent hover:text-destructive",
|
|
2829
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2850
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "w-4 h-4" })
|
|
2830
2851
|
}
|
|
2831
2852
|
)
|
|
2832
2853
|
] }),
|
|
@@ -3002,7 +3023,7 @@ function LockedTextField({
|
|
|
3002
3023
|
transition: "all 0.15s ease"
|
|
3003
3024
|
},
|
|
3004
3025
|
title: isLocked ? "Click to unlock" : "Click to lock",
|
|
3005
|
-
children: isLocked ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3026
|
+
children: isLocked ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { size: 14 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Unlock, { size: 14 })
|
|
3006
3027
|
}
|
|
3007
3028
|
)
|
|
3008
3029
|
] }),
|
|
@@ -3031,7 +3052,7 @@ function LockedTextField({
|
|
|
3031
3052
|
}
|
|
3032
3053
|
),
|
|
3033
3054
|
isLocked && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3034
|
-
|
|
3055
|
+
lucideReact.Lock,
|
|
3035
3056
|
{
|
|
3036
3057
|
size: 14,
|
|
3037
3058
|
style: {
|
|
@@ -3086,7 +3107,7 @@ function LockedRadioField({
|
|
|
3086
3107
|
transition: "all 0.15s ease"
|
|
3087
3108
|
},
|
|
3088
3109
|
title: isLocked ? "Click to unlock" : "Click to lock",
|
|
3089
|
-
children: isLocked ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3110
|
+
children: isLocked ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { size: 14 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Unlock, { size: 14 })
|
|
3090
3111
|
}
|
|
3091
3112
|
)
|
|
3092
3113
|
] }),
|
|
@@ -3426,7 +3447,7 @@ function PaddingFieldInner({
|
|
|
3426
3447
|
isLinked ? "" : "text-muted-foreground"
|
|
3427
3448
|
),
|
|
3428
3449
|
title: isLinked ? "Click to unlink (set sides individually)" : "Click to link (all sides same value)",
|
|
3429
|
-
children: isLinked ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3450
|
+
children: isLinked ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Unlink, { className: "h-4 w-4" })
|
|
3430
3451
|
}
|
|
3431
3452
|
)
|
|
3432
3453
|
] }),
|
|
@@ -3556,7 +3577,7 @@ function BorderFieldInner({
|
|
|
3556
3577
|
onClick: handleClear,
|
|
3557
3578
|
className: "text-muted-foreground hover:text-destructive",
|
|
3558
3579
|
title: "Clear border",
|
|
3559
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3580
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
3560
3581
|
}
|
|
3561
3582
|
)
|
|
3562
3583
|
] }),
|
|
@@ -3659,7 +3680,7 @@ function BorderFieldInner({
|
|
|
3659
3680
|
currentValue.sides.top && "bg-primary hover:bg-primary/90"
|
|
3660
3681
|
),
|
|
3661
3682
|
title: "Top border",
|
|
3662
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3683
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "h-4 w-4" })
|
|
3663
3684
|
}
|
|
3664
3685
|
),
|
|
3665
3686
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3674,7 +3695,7 @@ function BorderFieldInner({
|
|
|
3674
3695
|
currentValue.sides.right && "bg-primary hover:bg-primary/90"
|
|
3675
3696
|
),
|
|
3676
3697
|
title: "Right border",
|
|
3677
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3698
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { className: "h-4 w-4" })
|
|
3678
3699
|
}
|
|
3679
3700
|
),
|
|
3680
3701
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3689,7 +3710,7 @@ function BorderFieldInner({
|
|
|
3689
3710
|
currentValue.sides.bottom && "bg-primary hover:bg-primary/90"
|
|
3690
3711
|
),
|
|
3691
3712
|
title: "Bottom border",
|
|
3692
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3713
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDown, { className: "h-4 w-4" })
|
|
3693
3714
|
}
|
|
3694
3715
|
),
|
|
3695
3716
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3704,7 +3725,7 @@ function BorderFieldInner({
|
|
|
3704
3725
|
currentValue.sides.left && "bg-primary hover:bg-primary/90"
|
|
3705
3726
|
),
|
|
3706
3727
|
title: "Left border",
|
|
3707
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3728
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "h-4 w-4" })
|
|
3708
3729
|
}
|
|
3709
3730
|
)
|
|
3710
3731
|
] }),
|
|
@@ -3967,14 +3988,14 @@ function DimensionsFieldInner({
|
|
|
3967
3988
|
});
|
|
3968
3989
|
}, [advancedMode, currentValue, onChange]);
|
|
3969
3990
|
const modeConfig = [
|
|
3970
|
-
{ mode: "full", icon:
|
|
3971
|
-
{ mode: "contained", icon:
|
|
3972
|
-
{ mode: "custom", icon:
|
|
3991
|
+
{ mode: "full", icon: lucideReact.MoveHorizontal, label: "Full", title: "Full width (100%)" },
|
|
3992
|
+
{ mode: "contained", icon: lucideReact.Square, label: "Contain", title: "Contained (centered with max-width)" },
|
|
3993
|
+
{ mode: "custom", icon: lucideReact.SlidersHorizontal, label: "Custom", title: "Custom width settings" }
|
|
3973
3994
|
];
|
|
3974
3995
|
const alignmentConfig = [
|
|
3975
|
-
{ alignment: "left", icon:
|
|
3976
|
-
{ alignment: "center", icon:
|
|
3977
|
-
{ alignment: "right", icon:
|
|
3996
|
+
{ alignment: "left", icon: lucideReact.AlignStartHorizontal, title: "Align left" },
|
|
3997
|
+
{ alignment: "center", icon: lucideReact.AlignCenterHorizontal, title: "Align center" },
|
|
3998
|
+
{ alignment: "right", icon: lucideReact.AlignEndHorizontal, title: "Align right" }
|
|
3978
3999
|
];
|
|
3979
4000
|
const showWidthControls = currentValue.mode !== "full";
|
|
3980
4001
|
showHeightControls && (advancedMode || currentValue.minHeight?.enabled || currentValue.maxHeight?.enabled);
|
|
@@ -3990,7 +4011,7 @@ function DimensionsFieldInner({
|
|
|
3990
4011
|
onClick: handleClear,
|
|
3991
4012
|
className: "text-muted-foreground hover:text-destructive",
|
|
3992
4013
|
title: "Reset to default",
|
|
3993
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4014
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
3994
4015
|
}
|
|
3995
4016
|
)
|
|
3996
4017
|
] }),
|
|
@@ -4193,10 +4214,10 @@ function DimensionsFieldInner({
|
|
|
4193
4214
|
disabled: readOnly,
|
|
4194
4215
|
className: "w-full text-xs text-muted-foreground hover:text-foreground",
|
|
4195
4216
|
children: advancedMode ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4196
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4217
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-3.5 w-3.5 mr-1" }),
|
|
4197
4218
|
"Hide Advanced"
|
|
4198
4219
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4199
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4220
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-3.5 w-3.5 mr-1" }),
|
|
4200
4221
|
"Show Advanced"
|
|
4201
4222
|
] })
|
|
4202
4223
|
}
|
|
@@ -4309,7 +4330,7 @@ function MarginFieldInner({
|
|
|
4309
4330
|
isLinked ? "" : "text-muted-foreground"
|
|
4310
4331
|
),
|
|
4311
4332
|
title: isLinked ? "Click to unlink (set sides individually)" : "Click to link (all sides same value)",
|
|
4312
|
-
children: isLinked ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4333
|
+
children: isLinked ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Unlink, { className: "h-4 w-4" })
|
|
4313
4334
|
}
|
|
4314
4335
|
)
|
|
4315
4336
|
] }),
|
|
@@ -4378,7 +4399,7 @@ function ResetFieldInner({
|
|
|
4378
4399
|
disabled,
|
|
4379
4400
|
className: "w-full text-muted-foreground hover:text-destructive hover:bg-destructive/10 gap-1.5",
|
|
4380
4401
|
children: [
|
|
4381
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4402
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-3.5 w-3.5" }),
|
|
4382
4403
|
label
|
|
4383
4404
|
]
|
|
4384
4405
|
}
|
|
@@ -4478,7 +4499,7 @@ function CollapsibleSection({ title, defaultOpen = false, children }) {
|
|
|
4478
4499
|
className: "w-full flex items-center justify-between px-3 py-2 bg-muted/30 hover:bg-muted/50 transition-colors",
|
|
4479
4500
|
children: [
|
|
4480
4501
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: title }),
|
|
4481
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4502
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-3.5 w-3.5 text-muted-foreground" })
|
|
4482
4503
|
]
|
|
4483
4504
|
}
|
|
4484
4505
|
),
|
|
@@ -4612,7 +4633,7 @@ function AnimationFieldInner({
|
|
|
4612
4633
|
onClick: handleClear,
|
|
4613
4634
|
className: "text-muted-foreground hover:text-destructive",
|
|
4614
4635
|
title: "Reset to default",
|
|
4615
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4636
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
4616
4637
|
}
|
|
4617
4638
|
)
|
|
4618
4639
|
] }),
|
|
@@ -4888,11 +4909,11 @@ function createAnimationField(config = {}) {
|
|
|
4888
4909
|
};
|
|
4889
4910
|
}
|
|
4890
4911
|
var BREAKPOINT_ICONS = {
|
|
4891
|
-
|
|
4892
|
-
sm:
|
|
4893
|
-
md:
|
|
4894
|
-
lg:
|
|
4895
|
-
xl:
|
|
4912
|
+
xs: lucideReact.Smartphone,
|
|
4913
|
+
sm: lucideReact.Smartphone,
|
|
4914
|
+
md: lucideReact.Tablet,
|
|
4915
|
+
lg: lucideReact.Laptop,
|
|
4916
|
+
xl: lucideReact.Monitor
|
|
4896
4917
|
};
|
|
4897
4918
|
function BreakpointTab({
|
|
4898
4919
|
breakpoint,
|
|
@@ -4932,17 +4953,17 @@ function ResponsiveFieldInner({
|
|
|
4932
4953
|
renderInnerField,
|
|
4933
4954
|
defaultValue
|
|
4934
4955
|
}) {
|
|
4935
|
-
const [activeBreakpoint, setActiveBreakpoint] = React7.useState("
|
|
4956
|
+
const [activeBreakpoint, setActiveBreakpoint] = React7.useState("xs");
|
|
4936
4957
|
const getCurrentValue = React7.useCallback(() => {
|
|
4937
4958
|
if (!value) return defaultValue ?? null;
|
|
4938
|
-
if (activeBreakpoint === "
|
|
4939
|
-
return value.
|
|
4959
|
+
if (activeBreakpoint === "xs") {
|
|
4960
|
+
return value.xs ?? defaultValue ?? null;
|
|
4940
4961
|
}
|
|
4941
4962
|
const override = value[activeBreakpoint];
|
|
4942
4963
|
if (override !== void 0) {
|
|
4943
4964
|
return override;
|
|
4944
4965
|
}
|
|
4945
|
-
const breakpointOrder = ["xl", "lg", "md", "sm", "
|
|
4966
|
+
const breakpointOrder = ["xl", "lg", "md", "sm", "xs"];
|
|
4946
4967
|
const activeIndex = breakpointOrder.indexOf(activeBreakpoint);
|
|
4947
4968
|
for (let i = activeIndex + 1; i < breakpointOrder.length; i++) {
|
|
4948
4969
|
const bp = breakpointOrder[i];
|
|
@@ -4956,18 +4977,18 @@ function ResponsiveFieldInner({
|
|
|
4956
4977
|
const hasOverride = React7.useCallback(
|
|
4957
4978
|
(breakpoint) => {
|
|
4958
4979
|
if (!value) return false;
|
|
4959
|
-
if (breakpoint === "
|
|
4980
|
+
if (breakpoint === "xs") return value.xs !== void 0;
|
|
4960
4981
|
return value[breakpoint] !== void 0;
|
|
4961
4982
|
},
|
|
4962
4983
|
[value]
|
|
4963
4984
|
);
|
|
4964
4985
|
const handleInnerChange = React7.useCallback(
|
|
4965
4986
|
(newValue) => {
|
|
4966
|
-
if (activeBreakpoint === "
|
|
4987
|
+
if (activeBreakpoint === "xs") {
|
|
4967
4988
|
if (newValue === null && defaultValue !== void 0) {
|
|
4968
|
-
onChange({ ...value,
|
|
4989
|
+
onChange({ ...value, xs: defaultValue });
|
|
4969
4990
|
} else if (newValue !== null) {
|
|
4970
|
-
onChange({ ...value,
|
|
4991
|
+
onChange({ ...value, xs: newValue });
|
|
4971
4992
|
}
|
|
4972
4993
|
} else {
|
|
4973
4994
|
if (newValue === null) {
|
|
@@ -4975,11 +4996,11 @@ function ResponsiveFieldInner({
|
|
|
4975
4996
|
delete newResponsive[activeBreakpoint];
|
|
4976
4997
|
onChange(newResponsive);
|
|
4977
4998
|
} else {
|
|
4978
|
-
const
|
|
4979
|
-
if (
|
|
4999
|
+
const xs = value?.xs ?? defaultValue;
|
|
5000
|
+
if (xs === void 0) return;
|
|
4980
5001
|
onChange({
|
|
4981
5002
|
...value,
|
|
4982
|
-
|
|
5003
|
+
xs,
|
|
4983
5004
|
[activeBreakpoint]: newValue
|
|
4984
5005
|
});
|
|
4985
5006
|
}
|
|
@@ -4988,7 +5009,7 @@ function ResponsiveFieldInner({
|
|
|
4988
5009
|
[value, onChange, activeBreakpoint, defaultValue]
|
|
4989
5010
|
);
|
|
4990
5011
|
const handleClearOverride = React7.useCallback(() => {
|
|
4991
|
-
if (activeBreakpoint === "
|
|
5012
|
+
if (activeBreakpoint === "xs" || !value) return;
|
|
4992
5013
|
const newResponsive = { ...value };
|
|
4993
5014
|
delete newResponsive[activeBreakpoint];
|
|
4994
5015
|
onChange(newResponsive);
|
|
@@ -4997,7 +5018,7 @@ function ResponsiveFieldInner({
|
|
|
4997
5018
|
onChange(null);
|
|
4998
5019
|
}, [onChange]);
|
|
4999
5020
|
const currentValue = getCurrentValue();
|
|
5000
|
-
const isOverrideBreakpoint = activeBreakpoint !== "
|
|
5021
|
+
const isOverrideBreakpoint = activeBreakpoint !== "xs";
|
|
5001
5022
|
const currentHasOverride = hasOverride(activeBreakpoint);
|
|
5002
5023
|
const overrideCount = value ? ["sm", "md", "lg", "xl"].filter((bp) => value[bp] !== void 0).length : 0;
|
|
5003
5024
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "puck-field space-y-3", children: [
|
|
@@ -5019,7 +5040,7 @@ function ResponsiveFieldInner({
|
|
|
5019
5040
|
onClick: handleClearAll,
|
|
5020
5041
|
className: "text-muted-foreground hover:text-destructive",
|
|
5021
5042
|
title: "Clear all values",
|
|
5022
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5043
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
5023
5044
|
}
|
|
5024
5045
|
)
|
|
5025
5046
|
] }),
|
|
@@ -5037,10 +5058,10 @@ function ResponsiveFieldInner({
|
|
|
5037
5058
|
bp.key
|
|
5038
5059
|
)) }),
|
|
5039
5060
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [
|
|
5040
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: activeBreakpoint === "
|
|
5061
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: activeBreakpoint === "xs" ? "Extra small screens (0-639px)" : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5041
5062
|
BREAKPOINTS.find((bp) => bp.key === activeBreakpoint)?.minWidth,
|
|
5042
5063
|
"px and up",
|
|
5043
|
-
!currentHasOverride && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/60", children: " (inheriting from
|
|
5064
|
+
!currentHasOverride && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/60", children: " (inheriting from xs)" })
|
|
5044
5065
|
] }) }),
|
|
5045
5066
|
isOverrideBreakpoint && currentHasOverride && !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5046
5067
|
Button,
|
|
@@ -5093,18 +5114,17 @@ function createResponsiveField(config) {
|
|
|
5093
5114
|
};
|
|
5094
5115
|
}
|
|
5095
5116
|
var BREAKPOINT_ICONS2 = {
|
|
5096
|
-
|
|
5097
|
-
sm:
|
|
5098
|
-
md:
|
|
5099
|
-
lg:
|
|
5100
|
-
xl:
|
|
5117
|
+
xs: lucideReact.Smartphone,
|
|
5118
|
+
sm: lucideReact.Smartphone,
|
|
5119
|
+
md: lucideReact.Tablet,
|
|
5120
|
+
lg: lucideReact.Laptop,
|
|
5121
|
+
xl: lucideReact.Monitor
|
|
5101
5122
|
};
|
|
5102
5123
|
function VisibilityToggle({
|
|
5103
5124
|
breakpoint,
|
|
5104
5125
|
label,
|
|
5105
5126
|
minWidth,
|
|
5106
5127
|
isVisible,
|
|
5107
|
-
isInherited,
|
|
5108
5128
|
onClick,
|
|
5109
5129
|
disabled
|
|
5110
5130
|
}) {
|
|
@@ -5115,18 +5135,16 @@ function VisibilityToggle({
|
|
|
5115
5135
|
type: "button",
|
|
5116
5136
|
onClick,
|
|
5117
5137
|
disabled,
|
|
5118
|
-
title: `${label}${minWidth ? ` (${minWidth}px+)` : ""}: ${isVisible ? "Visible" : "Hidden"}
|
|
5138
|
+
title: `${label}${minWidth ? ` (${minWidth}px+)` : ""}: ${isVisible ? "Visible" : "Hidden"}`,
|
|
5119
5139
|
className: cn2(
|
|
5120
5140
|
"relative flex flex-col items-center justify-center gap-0.5 p-2 rounded-md transition-all flex-1 min-w-[52px]",
|
|
5121
|
-
isVisible ? "bg-emerald-500/
|
|
5122
|
-
isInherited && "opacity-60",
|
|
5141
|
+
isVisible ? "bg-emerald-500/15 text-emerald-600 hover:bg-emerald-500/25 border border-emerald-500/40" : "bg-red-500/15 text-red-500 hover:bg-red-500/25 border border-red-500/40",
|
|
5123
5142
|
disabled && "opacity-50 cursor-not-allowed"
|
|
5124
5143
|
),
|
|
5125
5144
|
children: [
|
|
5126
5145
|
/* @__PURE__ */ jsxRuntime.jsx(DeviceIcon, { className: "h-4 w-4" }),
|
|
5127
5146
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-medium", children: label }),
|
|
5128
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1", children: isVisible ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5129
|
-
isInherited && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -bottom-0.5 left-1/2 -translate-x-1/2 text-[8px] text-muted-foreground", children: "\u2022" })
|
|
5147
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1", children: isVisible ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "h-3 w-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { className: "h-3 w-3" }) })
|
|
5130
5148
|
]
|
|
5131
5149
|
}
|
|
5132
5150
|
);
|
|
@@ -5137,85 +5155,46 @@ function ResponsiveVisibilityFieldInner({
|
|
|
5137
5155
|
label,
|
|
5138
5156
|
readOnly
|
|
5139
5157
|
}) {
|
|
5140
|
-
const
|
|
5158
|
+
const getVisibility = React7.useCallback(
|
|
5141
5159
|
(breakpoint) => {
|
|
5142
5160
|
const val = value ?? DEFAULT_VISIBILITY;
|
|
5143
|
-
|
|
5144
|
-
return { visible: val.base, inherited: false };
|
|
5145
|
-
}
|
|
5146
|
-
const explicitValue = val[breakpoint];
|
|
5147
|
-
if (explicitValue !== void 0) {
|
|
5148
|
-
return { visible: explicitValue, inherited: false };
|
|
5149
|
-
}
|
|
5150
|
-
const breakpointOrder = ["xl", "lg", "md", "sm", "base"];
|
|
5151
|
-
const currentIndex = breakpointOrder.indexOf(breakpoint);
|
|
5152
|
-
for (let i = currentIndex + 1; i < breakpointOrder.length; i++) {
|
|
5153
|
-
const bp = breakpointOrder[i];
|
|
5154
|
-
const bpValue = val[bp];
|
|
5155
|
-
if (bpValue !== void 0) {
|
|
5156
|
-
return { visible: bpValue, inherited: true };
|
|
5157
|
-
}
|
|
5158
|
-
}
|
|
5159
|
-
return { visible: val.base, inherited: true };
|
|
5161
|
+
return val[breakpoint] ?? true;
|
|
5160
5162
|
},
|
|
5161
5163
|
[value]
|
|
5162
5164
|
);
|
|
5163
5165
|
const toggleVisibility = React7.useCallback(
|
|
5164
5166
|
(breakpoint) => {
|
|
5165
|
-
const
|
|
5166
|
-
const
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
});
|
|
5172
|
-
} else {
|
|
5173
|
-
const newValue = {
|
|
5174
|
-
...value ?? DEFAULT_VISIBILITY,
|
|
5175
|
-
[breakpoint]: newVisible
|
|
5176
|
-
};
|
|
5177
|
-
onChange(newValue);
|
|
5178
|
-
}
|
|
5167
|
+
const currentVisible = getVisibility(breakpoint);
|
|
5168
|
+
const newValue = {
|
|
5169
|
+
...value ?? DEFAULT_VISIBILITY,
|
|
5170
|
+
[breakpoint]: !currentVisible
|
|
5171
|
+
};
|
|
5172
|
+
onChange(newValue);
|
|
5179
5173
|
},
|
|
5180
|
-
[value, onChange,
|
|
5174
|
+
[value, onChange, getVisibility]
|
|
5181
5175
|
);
|
|
5182
|
-
const
|
|
5183
|
-
const hasHiddenBreakpoints = BREAKPOINTS.some((bp) => {
|
|
5184
|
-
const { visible } = getEffectiveVisibility(bp.key);
|
|
5185
|
-
return !visible;
|
|
5186
|
-
});
|
|
5176
|
+
const hasHiddenBreakpoints = BREAKPOINTS.some((bp) => !getVisibility(bp.key));
|
|
5187
5177
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "puck-field space-y-2", children: [
|
|
5188
5178
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
5189
|
-
label && /* @__PURE__ */ jsxRuntime.
|
|
5190
|
-
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-sm font-medium text-foreground", children: label }),
|
|
5191
|
-
overrideCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground bg-muted px-1.5 py-0.5 rounded", children: [
|
|
5192
|
-
overrideCount,
|
|
5193
|
-
" override",
|
|
5194
|
-
overrideCount !== 1 ? "s" : ""
|
|
5195
|
-
] })
|
|
5196
|
-
] }),
|
|
5179
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-sm font-medium text-foreground", children: label }),
|
|
5197
5180
|
hasHiddenBreakpoints && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-amber-600 flex items-center gap-1", children: [
|
|
5198
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5199
|
-
"
|
|
5181
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { className: "h-3 w-3" }),
|
|
5182
|
+
"Partially hidden"
|
|
5200
5183
|
] })
|
|
5201
5184
|
] }),
|
|
5202
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: BREAKPOINTS.map((bp) =>
|
|
5203
|
-
|
|
5204
|
-
|
|
5205
|
-
|
|
5206
|
-
|
|
5207
|
-
|
|
5208
|
-
|
|
5209
|
-
|
|
5210
|
-
|
|
5211
|
-
|
|
5212
|
-
|
|
5213
|
-
|
|
5214
|
-
|
|
5215
|
-
bp.key
|
|
5216
|
-
);
|
|
5217
|
-
}) }),
|
|
5218
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Click to toggle visibility. Changes cascade to larger breakpoints." })
|
|
5185
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: BREAKPOINTS.map((bp) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5186
|
+
VisibilityToggle,
|
|
5187
|
+
{
|
|
5188
|
+
breakpoint: bp.key,
|
|
5189
|
+
label: bp.label,
|
|
5190
|
+
minWidth: bp.minWidth,
|
|
5191
|
+
isVisible: getVisibility(bp.key),
|
|
5192
|
+
onClick: () => toggleVisibility(bp.key),
|
|
5193
|
+
disabled: readOnly
|
|
5194
|
+
},
|
|
5195
|
+
bp.key
|
|
5196
|
+
)) }),
|
|
5197
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Toggle visibility per screen size. Each breakpoint is independent." })
|
|
5219
5198
|
] });
|
|
5220
5199
|
}
|
|
5221
5200
|
var ResponsiveVisibilityField = React7.memo(ResponsiveVisibilityFieldInner);
|
|
@@ -5398,11 +5377,11 @@ function JustifyContentFieldInner({
|
|
|
5398
5377
|
onChange(null);
|
|
5399
5378
|
}, [onChange]);
|
|
5400
5379
|
const options = [
|
|
5401
|
-
{ value: "flex-start", icon:
|
|
5402
|
-
{ value: "center", icon:
|
|
5403
|
-
{ value: "flex-end", icon:
|
|
5404
|
-
{ value: "space-between", icon:
|
|
5405
|
-
{ value: "space-around", icon:
|
|
5380
|
+
{ value: "flex-start", icon: lucideReact.AlignLeft, title: "Start" },
|
|
5381
|
+
{ value: "center", icon: lucideReact.AlignCenter, title: "Center" },
|
|
5382
|
+
{ value: "flex-end", icon: lucideReact.AlignRight, title: "End" },
|
|
5383
|
+
{ value: "space-between", icon: lucideReact.AlignHorizontalDistributeCenter, title: "Space Between" },
|
|
5384
|
+
{ value: "space-around", icon: lucideReact.GripHorizontal, title: "Space Around" }
|
|
5406
5385
|
];
|
|
5407
5386
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "puck-field space-y-2", children: [
|
|
5408
5387
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -5416,7 +5395,7 @@ function JustifyContentFieldInner({
|
|
|
5416
5395
|
onClick: handleClear,
|
|
5417
5396
|
className: "text-muted-foreground hover:text-destructive",
|
|
5418
5397
|
title: "Reset to default",
|
|
5419
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5398
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
5420
5399
|
}
|
|
5421
5400
|
)
|
|
5422
5401
|
] }),
|
|
@@ -5458,10 +5437,10 @@ function AlignItemsFieldInner({
|
|
|
5458
5437
|
onChange(null);
|
|
5459
5438
|
}, [onChange]);
|
|
5460
5439
|
const options = [
|
|
5461
|
-
{ value: "flex-start", icon:
|
|
5462
|
-
{ value: "center", icon:
|
|
5463
|
-
{ value: "flex-end", icon:
|
|
5464
|
-
{ value: "stretch", icon:
|
|
5440
|
+
{ value: "flex-start", icon: lucideReact.AlignStartVertical, title: "Start" },
|
|
5441
|
+
{ value: "center", icon: lucideReact.AlignCenterVertical, title: "Center" },
|
|
5442
|
+
{ value: "flex-end", icon: lucideReact.AlignEndVertical, title: "End" },
|
|
5443
|
+
{ value: "stretch", icon: lucideReact.MoveVertical, title: "Stretch" }
|
|
5465
5444
|
];
|
|
5466
5445
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "puck-field space-y-2", children: [
|
|
5467
5446
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -5475,7 +5454,7 @@ function AlignItemsFieldInner({
|
|
|
5475
5454
|
onClick: handleClear,
|
|
5476
5455
|
className: "text-muted-foreground hover:text-destructive",
|
|
5477
5456
|
title: "Reset to default",
|
|
5478
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5457
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
5479
5458
|
}
|
|
5480
5459
|
)
|
|
5481
5460
|
] }),
|
|
@@ -6371,7 +6350,7 @@ function TemplateFieldInner({
|
|
|
6371
6350
|
onClick: handleClearTemplate,
|
|
6372
6351
|
title: "Clear selection",
|
|
6373
6352
|
className: "text-muted-foreground hover:text-foreground",
|
|
6374
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6353
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
6375
6354
|
}
|
|
6376
6355
|
)
|
|
6377
6356
|
] }),
|
|
@@ -6385,7 +6364,7 @@ function TemplateFieldInner({
|
|
|
6385
6364
|
className: "flex-1 gap-1.5",
|
|
6386
6365
|
disabled: loading || saveForm.saving,
|
|
6387
6366
|
children: [
|
|
6388
|
-
saveForm.expanded ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6367
|
+
saveForm.expanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Save, { className: "h-4 w-4" }),
|
|
6389
6368
|
saveForm.expanded ? "Cancel" : "Save as Template"
|
|
6390
6369
|
]
|
|
6391
6370
|
}
|
|
@@ -6399,7 +6378,7 @@ function TemplateFieldInner({
|
|
|
6399
6378
|
className: "gap-1.5",
|
|
6400
6379
|
disabled: loadingTemplate,
|
|
6401
6380
|
children: [
|
|
6402
|
-
loadingTemplate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6381
|
+
loadingTemplate ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "h-4 w-4" }),
|
|
6403
6382
|
"Reload"
|
|
6404
6383
|
]
|
|
6405
6384
|
}
|
|
@@ -6449,7 +6428,7 @@ function TemplateFieldInner({
|
|
|
6449
6428
|
)
|
|
6450
6429
|
] }),
|
|
6451
6430
|
saveForm.error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 bg-destructive/10 border border-destructive/30 rounded-md text-destructive text-xs flex items-start gap-2", children: [
|
|
6452
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6431
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0 mt-0.5" }),
|
|
6453
6432
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: saveForm.error })
|
|
6454
6433
|
] }),
|
|
6455
6434
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6460,17 +6439,17 @@ function TemplateFieldInner({
|
|
|
6460
6439
|
size: "sm",
|
|
6461
6440
|
className: "w-full gap-1.5",
|
|
6462
6441
|
children: saveForm.saving ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6463
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6442
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
6464
6443
|
"Saving..."
|
|
6465
6444
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6466
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6445
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Save, { className: "h-4 w-4" }),
|
|
6467
6446
|
"Save Template"
|
|
6468
6447
|
] })
|
|
6469
6448
|
}
|
|
6470
6449
|
)
|
|
6471
6450
|
] }),
|
|
6472
6451
|
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 bg-destructive/10 border border-destructive/30 rounded-md text-destructive text-sm flex items-start gap-2", children: [
|
|
6473
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6452
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-4 w-4 flex-shrink-0 mt-0.5" }),
|
|
6474
6453
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: error })
|
|
6475
6454
|
] })
|
|
6476
6455
|
] });
|
|
@@ -6607,9 +6586,9 @@ function AlignmentFieldInner({
|
|
|
6607
6586
|
onChange(null);
|
|
6608
6587
|
}, [onChange]);
|
|
6609
6588
|
const alignments = [
|
|
6610
|
-
{ value: "left", icon:
|
|
6611
|
-
{ value: "center", icon:
|
|
6612
|
-
{ value: "right", icon:
|
|
6589
|
+
{ value: "left", icon: lucideReact.AlignLeft, title: "Align left" },
|
|
6590
|
+
{ value: "center", icon: lucideReact.AlignCenter, title: "Align center" },
|
|
6591
|
+
{ value: "right", icon: lucideReact.AlignRight, title: "Align right" }
|
|
6613
6592
|
];
|
|
6614
6593
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "puck-field space-y-2", children: [
|
|
6615
6594
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -6623,7 +6602,7 @@ function AlignmentFieldInner({
|
|
|
6623
6602
|
onClick: handleClear,
|
|
6624
6603
|
className: "text-muted-foreground hover:text-destructive",
|
|
6625
6604
|
title: "Reset to default",
|
|
6626
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6605
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
6627
6606
|
}
|
|
6628
6607
|
)
|
|
6629
6608
|
] }),
|
|
@@ -7222,7 +7201,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7222
7201
|
onClick: () => editor.chain().focus().toggleBold().run(),
|
|
7223
7202
|
isActive: formattingState?.isBold,
|
|
7224
7203
|
title: "Bold",
|
|
7225
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7204
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bold, { className: ICON_SIZE })
|
|
7226
7205
|
}
|
|
7227
7206
|
),
|
|
7228
7207
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7231,7 +7210,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7231
7210
|
onClick: () => editor.chain().focus().toggleItalic().run(),
|
|
7232
7211
|
isActive: formattingState?.isItalic,
|
|
7233
7212
|
title: "Italic",
|
|
7234
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7213
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Italic, { className: ICON_SIZE })
|
|
7235
7214
|
}
|
|
7236
7215
|
),
|
|
7237
7216
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7240,7 +7219,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7240
7219
|
onClick: () => editor.chain().focus().toggleUnderline().run(),
|
|
7241
7220
|
isActive: formattingState?.isUnderline,
|
|
7242
7221
|
title: "Underline",
|
|
7243
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7222
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Underline, { className: ICON_SIZE })
|
|
7244
7223
|
}
|
|
7245
7224
|
),
|
|
7246
7225
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7249,7 +7228,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7249
7228
|
onClick: () => editor.chain().focus().toggleStrike().run(),
|
|
7250
7229
|
isActive: formattingState?.isStrike,
|
|
7251
7230
|
title: "Strikethrough",
|
|
7252
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7231
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Strikethrough, { className: ICON_SIZE })
|
|
7253
7232
|
}
|
|
7254
7233
|
),
|
|
7255
7234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7258,7 +7237,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7258
7237
|
onClick: () => editor.chain().focus().toggleSuperscript().run(),
|
|
7259
7238
|
isActive: formattingState?.isSuperscript,
|
|
7260
7239
|
title: "Superscript",
|
|
7261
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7240
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Superscript, { className: ICON_SIZE })
|
|
7262
7241
|
}
|
|
7263
7242
|
),
|
|
7264
7243
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7267,7 +7246,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7267
7246
|
onClick: () => editor.chain().focus().toggleSubscript().run(),
|
|
7268
7247
|
isActive: formattingState?.isSubscript,
|
|
7269
7248
|
title: "Subscript",
|
|
7270
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7249
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Subscript, { className: ICON_SIZE })
|
|
7271
7250
|
}
|
|
7272
7251
|
),
|
|
7273
7252
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: TOOLBAR_DIVIDER }),
|
|
@@ -7275,8 +7254,8 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7275
7254
|
ToolbarDropdown,
|
|
7276
7255
|
{
|
|
7277
7256
|
trigger: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-0.5", children: [
|
|
7278
|
-
formattingState?.isH1 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7279
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7257
|
+
formattingState?.isH1 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading1, { className: ICON_SIZE }) : formattingState?.isH2 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading2, { className: ICON_SIZE }) : formattingState?.isH3 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading3, { className: ICON_SIZE }) : formattingState?.isH4 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading4, { className: ICON_SIZE }) : formattingState?.isH5 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading5, { className: ICON_SIZE }) : formattingState?.isH6 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading6, { className: ICON_SIZE }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pilcrow, { className: ICON_SIZE }),
|
|
7258
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "w-3 h-3" })
|
|
7280
7259
|
] }),
|
|
7281
7260
|
title: "Text Type",
|
|
7282
7261
|
isActive: formattingState?.isH1 || formattingState?.isH2 || formattingState?.isH3 || formattingState?.isH4 || formattingState?.isH5 || formattingState?.isH6,
|
|
@@ -7285,7 +7264,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7285
7264
|
editor.chain().focus().setParagraph().run();
|
|
7286
7265
|
close();
|
|
7287
7266
|
}, children: [
|
|
7288
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7267
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pilcrow, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7289
7268
|
"Paragraph"
|
|
7290
7269
|
] }),
|
|
7291
7270
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownSeparator, {}),
|
|
@@ -7293,42 +7272,42 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7293
7272
|
editor.chain().focus().toggleHeading({ level: 1 }).run();
|
|
7294
7273
|
close();
|
|
7295
7274
|
}, children: [
|
|
7296
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7275
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading1, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7297
7276
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-lg", children: "Heading 1" })
|
|
7298
7277
|
] }),
|
|
7299
7278
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
7300
7279
|
editor.chain().focus().toggleHeading({ level: 2 }).run();
|
|
7301
7280
|
close();
|
|
7302
7281
|
}, children: [
|
|
7303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7282
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading2, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7304
7283
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-base", children: "Heading 2" })
|
|
7305
7284
|
] }),
|
|
7306
7285
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
7307
7286
|
editor.chain().focus().toggleHeading({ level: 3 }).run();
|
|
7308
7287
|
close();
|
|
7309
7288
|
}, children: [
|
|
7310
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7289
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading3, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7311
7290
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: "Heading 3" })
|
|
7312
7291
|
] }),
|
|
7313
7292
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
7314
7293
|
editor.chain().focus().toggleHeading({ level: 4 }).run();
|
|
7315
7294
|
close();
|
|
7316
7295
|
}, children: [
|
|
7317
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7296
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading4, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7318
7297
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-sm", children: "Heading 4" })
|
|
7319
7298
|
] }),
|
|
7320
7299
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
7321
7300
|
editor.chain().focus().toggleHeading({ level: 5 }).run();
|
|
7322
7301
|
close();
|
|
7323
7302
|
}, children: [
|
|
7324
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7303
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading5, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7325
7304
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-xs", children: "Heading 5" })
|
|
7326
7305
|
] }),
|
|
7327
7306
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
7328
7307
|
editor.chain().focus().toggleHeading({ level: 6 }).run();
|
|
7329
7308
|
close();
|
|
7330
7309
|
}, children: [
|
|
7331
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7310
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Heading6, { className: cn2(ICON_SIZE, "mr-2") }),
|
|
7332
7311
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-xs text-gray-600", children: "Heading 6" })
|
|
7333
7312
|
] })
|
|
7334
7313
|
] })
|
|
@@ -7338,7 +7317,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7338
7317
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7339
7318
|
ToolbarDropdown,
|
|
7340
7319
|
{
|
|
7341
|
-
trigger: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7320
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ALargeSmall, { className: ICON_SIZE }),
|
|
7342
7321
|
title: "Font Size",
|
|
7343
7322
|
children: (close) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7344
7323
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownLabel, { children: "Presets" }),
|
|
@@ -7424,7 +7403,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7424
7403
|
onClick: () => editor.chain().focus().toggleBulletList().run(),
|
|
7425
7404
|
isActive: formattingState?.isBulletList,
|
|
7426
7405
|
title: "Bullet List",
|
|
7427
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7406
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.List, { className: ICON_SIZE })
|
|
7428
7407
|
}
|
|
7429
7408
|
),
|
|
7430
7409
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7433,7 +7412,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7433
7412
|
onClick: () => editor.chain().focus().toggleOrderedList().run(),
|
|
7434
7413
|
isActive: formattingState?.isOrderedList,
|
|
7435
7414
|
title: "Numbered List",
|
|
7436
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7415
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ListOrdered, { className: ICON_SIZE })
|
|
7437
7416
|
}
|
|
7438
7417
|
),
|
|
7439
7418
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7442,7 +7421,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7442
7421
|
onClick: () => editor.chain().focus().toggleBlockquote().run(),
|
|
7443
7422
|
isActive: formattingState?.isBlockquote,
|
|
7444
7423
|
title: "Blockquote",
|
|
7445
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7424
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Quote, { className: ICON_SIZE })
|
|
7446
7425
|
}
|
|
7447
7426
|
),
|
|
7448
7427
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: TOOLBAR_DIVIDER }),
|
|
@@ -7452,7 +7431,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7452
7431
|
onClick: () => editor.chain().focus().setTextAlign("left").run(),
|
|
7453
7432
|
isActive: formattingState?.isAlignLeft,
|
|
7454
7433
|
title: "Align Left",
|
|
7455
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7434
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignLeft, { className: ICON_SIZE })
|
|
7456
7435
|
}
|
|
7457
7436
|
),
|
|
7458
7437
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7461,7 +7440,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7461
7440
|
onClick: () => editor.chain().focus().setTextAlign("center").run(),
|
|
7462
7441
|
isActive: formattingState?.isAlignCenter,
|
|
7463
7442
|
title: "Align Center",
|
|
7464
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7443
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignCenter, { className: ICON_SIZE })
|
|
7465
7444
|
}
|
|
7466
7445
|
),
|
|
7467
7446
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7470,7 +7449,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7470
7449
|
onClick: () => editor.chain().focus().setTextAlign("right").run(),
|
|
7471
7450
|
isActive: formattingState?.isAlignRight,
|
|
7472
7451
|
title: "Align Right",
|
|
7473
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7452
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignRight, { className: ICON_SIZE })
|
|
7474
7453
|
}
|
|
7475
7454
|
),
|
|
7476
7455
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7479,7 +7458,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7479
7458
|
onClick: () => editor.chain().focus().setTextAlign("justify").run(),
|
|
7480
7459
|
isActive: formattingState?.isAlignJustify,
|
|
7481
7460
|
title: "Justify",
|
|
7482
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7461
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignJustify, { className: ICON_SIZE })
|
|
7483
7462
|
}
|
|
7484
7463
|
),
|
|
7485
7464
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: TOOLBAR_DIVIDER }),
|
|
@@ -7490,7 +7469,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7490
7469
|
onClick: () => setIsLinkPopoverOpen(!isLinkPopoverOpen),
|
|
7491
7470
|
isActive: formattingState?.isLink,
|
|
7492
7471
|
title: "Add Link",
|
|
7493
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7472
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: ICON_SIZE })
|
|
7494
7473
|
}
|
|
7495
7474
|
),
|
|
7496
7475
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7506,7 +7485,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7506
7485
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7507
7486
|
ToolbarDropdown,
|
|
7508
7487
|
{
|
|
7509
|
-
trigger: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7488
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Palette, { className: ICON_SIZE }),
|
|
7510
7489
|
title: "Text Color",
|
|
7511
7490
|
children: (close) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7512
7491
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownItem, { onClick: () => {
|
|
@@ -7563,7 +7542,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7563
7542
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7564
7543
|
ToolbarDropdown,
|
|
7565
7544
|
{
|
|
7566
|
-
trigger: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7545
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Highlighter, { className: ICON_SIZE }),
|
|
7567
7546
|
title: "Highlight",
|
|
7568
7547
|
isActive: formattingState?.isHighlight,
|
|
7569
7548
|
children: (close) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -7594,7 +7573,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7594
7573
|
{
|
|
7595
7574
|
onClick: () => editor.chain().focus().setHorizontalRule().run(),
|
|
7596
7575
|
title: "Horizontal Rule",
|
|
7597
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7576
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: ICON_SIZE })
|
|
7598
7577
|
}
|
|
7599
7578
|
),
|
|
7600
7579
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7602,7 +7581,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7602
7581
|
{
|
|
7603
7582
|
onClick: () => editor.chain().focus().setHardBreak().run(),
|
|
7604
7583
|
title: "Hard Break (Shift+Enter)",
|
|
7605
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7584
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CornerDownLeft, { className: ICON_SIZE })
|
|
7606
7585
|
}
|
|
7607
7586
|
),
|
|
7608
7587
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: TOOLBAR_DIVIDER }),
|
|
@@ -7611,7 +7590,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7611
7590
|
{
|
|
7612
7591
|
onClick: () => editor.chain().focus().unsetAllMarks().clearNodes().run(),
|
|
7613
7592
|
title: "Clear Formatting",
|
|
7614
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7593
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RemoveFormatting, { className: ICON_SIZE })
|
|
7615
7594
|
}
|
|
7616
7595
|
),
|
|
7617
7596
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -7634,7 +7613,7 @@ function TiptapFieldInner({ value, onChange, label, readOnly }) {
|
|
|
7634
7613
|
!showSource && "bg-transparent"
|
|
7635
7614
|
),
|
|
7636
7615
|
children: [
|
|
7637
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7616
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Code, { className: ICON_SIZE }),
|
|
7638
7617
|
"Source"
|
|
7639
7618
|
]
|
|
7640
7619
|
}
|
|
@@ -7748,7 +7727,7 @@ function TiptapModal({ isOpen, onClose, value, onChange, title }) {
|
|
|
7748
7727
|
justifyContent: "center"
|
|
7749
7728
|
},
|
|
7750
7729
|
title: "Close (Esc)",
|
|
7751
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7730
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { size: 20 })
|
|
7752
7731
|
}
|
|
7753
7732
|
)
|
|
7754
7733
|
]
|
|
@@ -7875,7 +7854,7 @@ function TiptapModalFieldInner({ value, onChange, label }) {
|
|
|
7875
7854
|
},
|
|
7876
7855
|
title: "Open full-screen editor",
|
|
7877
7856
|
children: [
|
|
7878
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7857
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize2, { size: 14 }),
|
|
7879
7858
|
"Expand"
|
|
7880
7859
|
]
|
|
7881
7860
|
}
|
|
@@ -8106,7 +8085,7 @@ function TransformFieldInner({
|
|
|
8106
8085
|
onClick: handleClear,
|
|
8107
8086
|
className: "text-muted-foreground hover:text-destructive",
|
|
8108
8087
|
title: "Reset transform",
|
|
8109
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8088
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
8110
8089
|
}
|
|
8111
8090
|
)
|
|
8112
8091
|
] }),
|
|
@@ -8120,7 +8099,7 @@ function TransformFieldInner({
|
|
|
8120
8099
|
) }),
|
|
8121
8100
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 p-3 bg-muted/30 rounded-md", children: [
|
|
8122
8101
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
8123
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8102
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCw, { className: "h-4 w-4 text-muted-foreground" }),
|
|
8124
8103
|
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-xs font-medium", children: "Rotate" })
|
|
8125
8104
|
] }),
|
|
8126
8105
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8138,7 +8117,7 @@ function TransformFieldInner({
|
|
|
8138
8117
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 p-3 bg-muted/30 rounded-md", children: [
|
|
8139
8118
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
8140
8119
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8141
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8120
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
8142
8121
|
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-xs font-medium", children: "Scale" })
|
|
8143
8122
|
] }),
|
|
8144
8123
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8150,7 +8129,7 @@ function TransformFieldInner({
|
|
|
8150
8129
|
onClick: handleScaleLockToggle,
|
|
8151
8130
|
className: "h-6 w-6",
|
|
8152
8131
|
title: currentValue.scaleLocked ? "Click to unlink X and Y scale" : "Click to link X and Y scale",
|
|
8153
|
-
children: currentValue.scaleLocked ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8132
|
+
children: currentValue.scaleLocked ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "h-3 w-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Unlink, { className: "h-3 w-3" })
|
|
8154
8133
|
}
|
|
8155
8134
|
)
|
|
8156
8135
|
] }),
|
|
@@ -8282,10 +8261,10 @@ function TransformFieldInner({
|
|
|
8282
8261
|
className: "w-full flex items-center justify-between p-3 bg-muted/30 hover:bg-muted/50 transition-colors",
|
|
8283
8262
|
children: [
|
|
8284
8263
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8285
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8264
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Box, { className: "h-4 w-4 text-muted-foreground" }),
|
|
8286
8265
|
/* @__PURE__ */ jsxRuntime.jsx(Label, { className: "text-xs font-medium cursor-pointer", children: "3D Transforms" })
|
|
8287
8266
|
] }),
|
|
8288
|
-
show3D ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8267
|
+
show3D ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 text-muted-foreground" })
|
|
8289
8268
|
]
|
|
8290
8269
|
}
|
|
8291
8270
|
),
|
|
@@ -8560,7 +8539,7 @@ function SizeFieldInner({
|
|
|
8560
8539
|
onClick: handleClear,
|
|
8561
8540
|
className: "text-muted-foreground hover:text-destructive",
|
|
8562
8541
|
title: "Reset to default",
|
|
8563
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8542
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
|
|
8564
8543
|
}
|
|
8565
8544
|
)
|
|
8566
8545
|
] }),
|
|
@@ -9045,7 +9024,7 @@ function AccordionItem({
|
|
|
9045
9024
|
children: [
|
|
9046
9025
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: item.title }),
|
|
9047
9026
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9048
|
-
|
|
9027
|
+
lucideReact.ChevronDown,
|
|
9049
9028
|
{
|
|
9050
9029
|
className: cn(
|
|
9051
9030
|
"h-4 w-4 shrink-0 transition-transform duration-200",
|