@flamingo-stack/openframe-frontend-core 0.0.550-1809.4793.1 → 0.0.550
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-4ARE6T4J.js → chunk-2I6KJN7F.js} +4 -4
- package/dist/{chunk-72SQSKU7.cjs → chunk-4A5RDQ6L.cjs} +61 -61
- package/dist/{chunk-72SQSKU7.cjs.map → chunk-4A5RDQ6L.cjs.map} +1 -1
- package/dist/{chunk-SZMZJ5Z7.js → chunk-5KAQ2JUQ.js} +2 -2
- package/dist/{chunk-TKAWA4FY.js → chunk-5VGIDZAM.js} +2 -2
- package/dist/{chunk-TV6GBR7P.cjs → chunk-6M6EZK4R.cjs} +31 -31
- package/dist/{chunk-TV6GBR7P.cjs.map → chunk-6M6EZK4R.cjs.map} +1 -1
- package/dist/{chunk-KAM2YLU4.js → chunk-6RTSYEBE.js} +2 -2
- package/dist/{chunk-SRNY3MXC.js → chunk-7T2HI44L.js} +2 -2
- package/dist/{chunk-GN2Q3WBA.js → chunk-7YDLMRVR.js} +6 -6
- package/dist/{chunk-WBGSHUXJ.cjs → chunk-A4L6BEB7.cjs} +7 -7
- package/dist/{chunk-WBGSHUXJ.cjs.map → chunk-A4L6BEB7.cjs.map} +1 -1
- package/dist/{chunk-QVW4B4YQ.cjs → chunk-CN2VQPLX.cjs} +4 -4
- package/dist/{chunk-QVW4B4YQ.cjs.map → chunk-CN2VQPLX.cjs.map} +1 -1
- package/dist/{chunk-KGMOXLYO.cjs → chunk-DCB4EBA5.cjs} +70 -28
- package/dist/chunk-DCB4EBA5.cjs.map +1 -0
- package/dist/{chunk-NRRY2RZR.cjs → chunk-EVCAPL5A.cjs} +39 -39
- package/dist/{chunk-NRRY2RZR.cjs.map → chunk-EVCAPL5A.cjs.map} +1 -1
- package/dist/{chunk-I4N3VQCU.cjs → chunk-GXNSFW3N.cjs} +30 -30
- package/dist/{chunk-I4N3VQCU.cjs.map → chunk-GXNSFW3N.cjs.map} +1 -1
- package/dist/{chunk-Q4NLR45P.cjs → chunk-H7ORFGB6.cjs} +11 -11
- package/dist/{chunk-Q4NLR45P.cjs.map → chunk-H7ORFGB6.cjs.map} +1 -1
- package/dist/{chunk-HT7P4QSO.cjs → chunk-HCGS2AAS.cjs} +14 -14
- package/dist/{chunk-HT7P4QSO.cjs.map → chunk-HCGS2AAS.cjs.map} +1 -1
- package/dist/{chunk-4WE5VFJX.js → chunk-HWYUSB5A.js} +2 -2
- package/dist/{chunk-44ERGZJT.js → chunk-IRV6TOEZ.js} +5 -5
- package/dist/{chunk-LALK7AGK.cjs → chunk-ISCWUJ72.cjs} +3 -3
- package/dist/{chunk-LALK7AGK.cjs.map → chunk-ISCWUJ72.cjs.map} +1 -1
- package/dist/{chunk-GAIU563C.cjs → chunk-ISLQTWWW.cjs} +9 -9
- package/dist/{chunk-GAIU563C.cjs.map → chunk-ISLQTWWW.cjs.map} +1 -1
- package/dist/{chunk-XQU5QBMJ.js → chunk-JS7FDV27.js} +3515 -3561
- package/dist/chunk-JS7FDV27.js.map +1 -0
- package/dist/{chunk-DDECEP24.cjs → chunk-LDS54O26.cjs} +505 -551
- package/dist/chunk-LDS54O26.cjs.map +1 -0
- package/dist/{chunk-2RTORV23.cjs → chunk-LLBU7RI5.cjs} +27 -27
- package/dist/{chunk-2RTORV23.cjs.map → chunk-LLBU7RI5.cjs.map} +1 -1
- package/dist/{chunk-CILHIWXK.js → chunk-M3GOE7OF.js} +2 -2
- package/dist/{chunk-5HTVPIQG.cjs → chunk-MGRCFN2K.cjs} +5 -5
- package/dist/{chunk-5HTVPIQG.cjs.map → chunk-MGRCFN2K.cjs.map} +1 -1
- package/dist/{chunk-WBWGQOAH.js → chunk-R7RCGLII.js} +7 -7
- package/dist/{chunk-QX5AXGLP.js → chunk-RSZXB6J2.js} +108 -66
- package/dist/chunk-RSZXB6J2.js.map +1 -0
- package/dist/{chunk-NGYZMQHP.js → chunk-U7UPMD3Z.js} +4 -4
- package/dist/{chunk-CUZTTZ5T.cjs → chunk-UYQFUEIK.cjs} +98 -98
- package/dist/{chunk-CUZTTZ5T.cjs.map → chunk-UYQFUEIK.cjs.map} +1 -1
- package/dist/{chunk-VYX4X7ND.js → chunk-WTCXDYK7.js} +2 -2
- package/dist/{chunk-6X3C2YAR.js → chunk-XO4YU5GN.js} +2 -2
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/command.d.ts +3 -3
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/features/index.cjs +3 -3
- package/dist/components/features/index.js +2 -2
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +141 -141
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +13 -13
- package/dist/components/meeting-scheduler/index.cjs +60 -60
- package/dist/components/meeting-scheduler/index.cjs.map +1 -1
- package/dist/components/meeting-scheduler/index.js +5 -5
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.js +5 -5
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/resizable.d.ts +1 -1
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/checkbox-with-description.d.ts.map +1 -1
- package/dist/components/ui/field-wrapper.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +36 -36
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +3 -3
- package/dist/components/ui/label.d.ts +1 -1
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/status-badge.d.ts +1 -1
- package/dist/components/ui/tags-input.d.ts.map +1 -1
- package/dist/hooks/use-toast.d.ts +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/src/components/features/array-entry-manager.tsx +1 -1
- package/src/components/features/changelog-manager.tsx +3 -3
- package/src/components/features/highlight-video-section.tsx +1 -1
- package/src/components/features/og-editor-preview.tsx +4 -4
- package/src/components/features/release-media-manager.tsx +1 -1
- package/src/components/features/seo-editor-preview.tsx +1 -1
- package/src/components/ui/checkbox-with-description.tsx +0 -1
- package/src/components/ui/field-wrapper.tsx +3 -2
- package/src/components/ui/field.tsx +1 -1
- package/src/components/ui/label.tsx +31 -15
- package/src/components/ui/tags-input.tsx +3 -2
- package/dist/chunk-DDECEP24.cjs.map +0 -1
- package/dist/chunk-KGMOXLYO.cjs.map +0 -1
- package/dist/chunk-QX5AXGLP.js.map +0 -1
- package/dist/chunk-XQU5QBMJ.js.map +0 -1
- /package/dist/{chunk-4ARE6T4J.js.map → chunk-2I6KJN7F.js.map} +0 -0
- /package/dist/{chunk-SZMZJ5Z7.js.map → chunk-5KAQ2JUQ.js.map} +0 -0
- /package/dist/{chunk-TKAWA4FY.js.map → chunk-5VGIDZAM.js.map} +0 -0
- /package/dist/{chunk-KAM2YLU4.js.map → chunk-6RTSYEBE.js.map} +0 -0
- /package/dist/{chunk-SRNY3MXC.js.map → chunk-7T2HI44L.js.map} +0 -0
- /package/dist/{chunk-GN2Q3WBA.js.map → chunk-7YDLMRVR.js.map} +0 -0
- /package/dist/{chunk-4WE5VFJX.js.map → chunk-HWYUSB5A.js.map} +0 -0
- /package/dist/{chunk-44ERGZJT.js.map → chunk-IRV6TOEZ.js.map} +0 -0
- /package/dist/{chunk-CILHIWXK.js.map → chunk-M3GOE7OF.js.map} +0 -0
- /package/dist/{chunk-WBWGQOAH.js.map → chunk-R7RCGLII.js.map} +0 -0
- /package/dist/{chunk-NGYZMQHP.js.map → chunk-U7UPMD3Z.js.map} +0 -0
- /package/dist/{chunk-VYX4X7ND.js.map → chunk-WTCXDYK7.js.map} +0 -0
- /package/dist/{chunk-6X3C2YAR.js.map → chunk-XO4YU5GN.js.map} +0 -0
|
@@ -7,17 +7,58 @@ import {
|
|
|
7
7
|
init_cn
|
|
8
8
|
} from "./chunk-ZRILYK5U.js";
|
|
9
9
|
|
|
10
|
-
// src/components/ui/
|
|
10
|
+
// src/components/ui/label.tsx
|
|
11
11
|
init_cn();
|
|
12
12
|
import * as React from "react";
|
|
13
|
-
import
|
|
13
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
14
|
+
import { cva } from "class-variance-authority";
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
var labelVariants = cva(
|
|
17
|
+
"block text-h6 text-ods-text-primary",
|
|
18
|
+
{
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
default: "",
|
|
22
|
+
/** @deprecated alias of `default` — the three small scales converged on text-h6. */
|
|
23
|
+
small: "",
|
|
24
|
+
/** @deprecated alias of `default`. */
|
|
25
|
+
medium: "",
|
|
26
|
+
large: "text-h4"
|
|
27
|
+
},
|
|
28
|
+
spacing: {
|
|
29
|
+
none: "",
|
|
30
|
+
tight: "mb-0.5",
|
|
31
|
+
normal: "mb-2",
|
|
32
|
+
loose: "mb-3"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: {
|
|
36
|
+
variant: "default",
|
|
37
|
+
spacing: "none"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
var Label = React.forwardRef(({ className, variant, spacing, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
42
|
+
LabelPrimitive.Root,
|
|
43
|
+
{
|
|
44
|
+
ref,
|
|
45
|
+
className: cn(labelVariants({ variant, spacing }), className),
|
|
46
|
+
...props
|
|
47
|
+
}
|
|
48
|
+
));
|
|
49
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
50
|
+
|
|
51
|
+
// src/components/ui/field-wrapper.tsx
|
|
52
|
+
init_cn();
|
|
53
|
+
import * as React2 from "react";
|
|
54
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
14
55
|
var errorVariantClasses = {
|
|
15
56
|
error: "text-ods-error",
|
|
16
57
|
warning: "text-ods-warning",
|
|
17
58
|
success: "text-ods-success",
|
|
18
59
|
muted: "text-ods-text-secondary"
|
|
19
60
|
};
|
|
20
|
-
var FieldWrapper =
|
|
61
|
+
var FieldWrapper = React2.forwardRef(
|
|
21
62
|
({ label, error, errorVariant = "error", className, children }, ref) => {
|
|
22
63
|
const hasChrome = label != null || error != null;
|
|
23
64
|
return /* @__PURE__ */ jsxs("div", { ref, className: cn(hasChrome ? "relative flex w-full flex-col" : "contents", className), children: [
|
|
@@ -26,9 +67,9 @@ var FieldWrapper = React.forwardRef(
|
|
|
26
67
|
// Field-wrapped controls with `label=`-prop controls showed two label
|
|
27
68
|
// sizes side by side — the exact inconsistency the admin editors kept
|
|
28
69
|
// reporting. One label scale, owned here and in Field together.
|
|
29
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ jsx2(Label, { className: "mb-1", children: label }),
|
|
30
71
|
children,
|
|
31
|
-
error && /* @__PURE__ */
|
|
72
|
+
error && /* @__PURE__ */ jsx2("p", { className: cn("absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), title: error, children: error })
|
|
32
73
|
] });
|
|
33
74
|
}
|
|
34
75
|
);
|
|
@@ -36,19 +77,19 @@ FieldWrapper.displayName = "FieldWrapper";
|
|
|
36
77
|
|
|
37
78
|
// src/components/ui/input.tsx
|
|
38
79
|
init_cn();
|
|
39
|
-
import * as
|
|
80
|
+
import * as React3 from "react";
|
|
40
81
|
import { Loader2 } from "lucide-react";
|
|
41
|
-
import { jsx as
|
|
82
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
42
83
|
var invalidBorderClasses = {
|
|
43
84
|
error: "border-ods-error hover:border-ods-error has-[:focus]:border-ods-error",
|
|
44
85
|
warning: "!border-ods-warning hover:!border-ods-warning has-[:focus]:!border-ods-warning"
|
|
45
86
|
};
|
|
46
|
-
var Input =
|
|
87
|
+
var Input = React3.forwardRef(
|
|
47
88
|
({ className, type, invalid = false, startAdornment, endAdornment, label, error, errorVariant = "error", loading = false, ...props }, ref) => {
|
|
48
89
|
const variantIsInvalid = errorVariant === "error" || errorVariant === "warning";
|
|
49
90
|
const isInvalid = invalid || !!error && variantIsInvalid;
|
|
50
91
|
if (type === "range") {
|
|
51
|
-
const rangeInput = /* @__PURE__ */
|
|
92
|
+
const rangeInput = /* @__PURE__ */ jsx3(
|
|
52
93
|
"input",
|
|
53
94
|
{
|
|
54
95
|
type: "range",
|
|
@@ -73,7 +114,7 @@ var Input = React2.forwardRef(
|
|
|
73
114
|
...props
|
|
74
115
|
}
|
|
75
116
|
);
|
|
76
|
-
return label ? /* @__PURE__ */
|
|
117
|
+
return label ? /* @__PURE__ */ jsx3(FieldWrapper, { label, error, errorVariant, children: rangeInput }) : rangeInput;
|
|
77
118
|
}
|
|
78
119
|
const content = /* @__PURE__ */ jsxs2(
|
|
79
120
|
"label",
|
|
@@ -105,8 +146,8 @@ var Input = React2.forwardRef(
|
|
|
105
146
|
className
|
|
106
147
|
),
|
|
107
148
|
children: [
|
|
108
|
-
startAdornment && /* @__PURE__ */
|
|
109
|
-
/* @__PURE__ */
|
|
149
|
+
startAdornment && /* @__PURE__ */ jsx3("span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment }),
|
|
150
|
+
/* @__PURE__ */ jsx3(
|
|
110
151
|
"input",
|
|
111
152
|
{
|
|
112
153
|
type,
|
|
@@ -130,22 +171,22 @@ var Input = React2.forwardRef(
|
|
|
130
171
|
...props
|
|
131
172
|
}
|
|
132
173
|
),
|
|
133
|
-
loading && /* @__PURE__ */
|
|
134
|
-
!loading && endAdornment && /* @__PURE__ */
|
|
174
|
+
loading && /* @__PURE__ */ jsx3(Loader2, { className: "animate-spin flex-shrink-0 text-ods-text-secondary size-4 md:size-6" }),
|
|
175
|
+
!loading && endAdornment && /* @__PURE__ */ jsx3("span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: endAdornment })
|
|
135
176
|
]
|
|
136
177
|
}
|
|
137
178
|
);
|
|
138
|
-
return /* @__PURE__ */
|
|
179
|
+
return /* @__PURE__ */ jsx3(FieldWrapper, { label, error, errorVariant, children: content });
|
|
139
180
|
}
|
|
140
181
|
);
|
|
141
182
|
Input.displayName = "Input";
|
|
142
183
|
|
|
143
184
|
// src/components/ui/checkbox.tsx
|
|
144
185
|
init_cn();
|
|
145
|
-
import * as
|
|
186
|
+
import * as React4 from "react";
|
|
146
187
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
147
|
-
import { jsx as
|
|
148
|
-
var Checkbox =
|
|
188
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
189
|
+
var Checkbox = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
149
190
|
CheckboxPrimitive.Root,
|
|
150
191
|
{
|
|
151
192
|
ref,
|
|
@@ -154,11 +195,11 @@ var Checkbox = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
154
195
|
className
|
|
155
196
|
),
|
|
156
197
|
...props,
|
|
157
|
-
children: /* @__PURE__ */
|
|
198
|
+
children: /* @__PURE__ */ jsx4(
|
|
158
199
|
CheckboxPrimitive.Indicator,
|
|
159
200
|
{
|
|
160
201
|
className: cn("flex items-center justify-center text-ods-text-on-accent"),
|
|
161
|
-
children: /* @__PURE__ */
|
|
202
|
+
children: /* @__PURE__ */ jsx4(CheckboxCheckmarkIcon, { size: 10 })
|
|
162
203
|
}
|
|
163
204
|
)
|
|
164
205
|
}
|
|
@@ -167,35 +208,35 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
167
208
|
|
|
168
209
|
// src/components/ui/dropdown-menu.tsx
|
|
169
210
|
init_cn();
|
|
170
|
-
import * as
|
|
211
|
+
import * as React6 from "react";
|
|
171
212
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
172
213
|
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
173
214
|
|
|
174
215
|
// src/components/ui/portal-container.tsx
|
|
175
|
-
import * as
|
|
176
|
-
var PortalContainerContext =
|
|
216
|
+
import * as React5 from "react";
|
|
217
|
+
var PortalContainerContext = React5.createContext(
|
|
177
218
|
null
|
|
178
219
|
);
|
|
179
220
|
function usePortalContainer() {
|
|
180
|
-
return
|
|
221
|
+
return React5.useContext(PortalContainerContext);
|
|
181
222
|
}
|
|
182
|
-
var CollisionBoundaryContext =
|
|
223
|
+
var CollisionBoundaryContext = React5.createContext(
|
|
183
224
|
null
|
|
184
225
|
);
|
|
185
226
|
function useCollisionBoundary() {
|
|
186
|
-
return
|
|
227
|
+
return React5.useContext(CollisionBoundaryContext);
|
|
187
228
|
}
|
|
188
229
|
var COLLISION_PADDING_PX = 8;
|
|
189
230
|
|
|
190
231
|
// src/components/ui/dropdown-menu.tsx
|
|
191
|
-
import { jsx as
|
|
232
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
192
233
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
193
234
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
194
235
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
195
236
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
196
237
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
197
238
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
198
|
-
var DropdownMenuSubTrigger =
|
|
239
|
+
var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
199
240
|
DropdownMenuPrimitive.SubTrigger,
|
|
200
241
|
{
|
|
201
242
|
ref,
|
|
@@ -207,16 +248,16 @@ var DropdownMenuSubTrigger = React5.forwardRef(({ className, inset, children, ..
|
|
|
207
248
|
...props,
|
|
208
249
|
children: [
|
|
209
250
|
children,
|
|
210
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ jsx5(ChevronRight, { className: "ml-auto" })
|
|
211
252
|
]
|
|
212
253
|
}
|
|
213
254
|
));
|
|
214
255
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
215
|
-
var DropdownMenuSubContent =
|
|
256
|
+
var DropdownMenuSubContent = React6.forwardRef(({ className, collisionBoundary, collisionPadding, hideWhenDetached, ...props }, ref) => {
|
|
216
257
|
const container = usePortalContainer();
|
|
217
258
|
const boundary = useCollisionBoundary();
|
|
218
259
|
const resolvedBoundary = collisionBoundary ?? boundary ?? void 0;
|
|
219
|
-
return /* @__PURE__ */
|
|
260
|
+
return /* @__PURE__ */ jsx5(DropdownMenuPrimitive.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsx5(
|
|
220
261
|
DropdownMenuPrimitive.SubContent,
|
|
221
262
|
{
|
|
222
263
|
ref,
|
|
@@ -232,7 +273,7 @@ var DropdownMenuSubContent = React5.forwardRef(({ className, collisionBoundary,
|
|
|
232
273
|
) });
|
|
233
274
|
});
|
|
234
275
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
235
|
-
var DropdownMenuContent =
|
|
276
|
+
var DropdownMenuContent = React6.forwardRef(({
|
|
236
277
|
className,
|
|
237
278
|
sideOffset = 4,
|
|
238
279
|
collisionBoundary,
|
|
@@ -243,7 +284,7 @@ var DropdownMenuContent = React5.forwardRef(({
|
|
|
243
284
|
const container = usePortalContainer();
|
|
244
285
|
const boundary = useCollisionBoundary();
|
|
245
286
|
const resolvedBoundary = collisionBoundary ?? boundary ?? void 0;
|
|
246
|
-
return /* @__PURE__ */
|
|
287
|
+
return /* @__PURE__ */ jsx5(DropdownMenuPrimitive.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsx5(
|
|
247
288
|
DropdownMenuPrimitive.Content,
|
|
248
289
|
{
|
|
249
290
|
ref,
|
|
@@ -260,7 +301,7 @@ var DropdownMenuContent = React5.forwardRef(({
|
|
|
260
301
|
) });
|
|
261
302
|
});
|
|
262
303
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
263
|
-
var DropdownMenuItem =
|
|
304
|
+
var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
264
305
|
DropdownMenuPrimitive.Item,
|
|
265
306
|
{
|
|
266
307
|
ref,
|
|
@@ -273,7 +314,7 @@ var DropdownMenuItem = React5.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
273
314
|
}
|
|
274
315
|
));
|
|
275
316
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
276
|
-
var DropdownMenuCheckboxItem =
|
|
317
|
+
var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
277
318
|
DropdownMenuPrimitive.CheckboxItem,
|
|
278
319
|
{
|
|
279
320
|
ref,
|
|
@@ -284,13 +325,13 @@ var DropdownMenuCheckboxItem = React5.forwardRef(({ className, children, checked
|
|
|
284
325
|
checked,
|
|
285
326
|
...props,
|
|
286
327
|
children: [
|
|
287
|
-
/* @__PURE__ */
|
|
328
|
+
/* @__PURE__ */ jsx5("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx5(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx5(Check, { className: "h-4 w-4" }) }) }),
|
|
288
329
|
children
|
|
289
330
|
]
|
|
290
331
|
}
|
|
291
332
|
));
|
|
292
333
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
293
|
-
var DropdownMenuRadioItem =
|
|
334
|
+
var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
|
|
294
335
|
DropdownMenuPrimitive.RadioItem,
|
|
295
336
|
{
|
|
296
337
|
ref,
|
|
@@ -300,13 +341,13 @@ var DropdownMenuRadioItem = React5.forwardRef(({ className, children, ...props }
|
|
|
300
341
|
),
|
|
301
342
|
...props,
|
|
302
343
|
children: [
|
|
303
|
-
/* @__PURE__ */
|
|
344
|
+
/* @__PURE__ */ jsx5("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx5(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx5(Circle, { className: "h-2 w-2 fill-ods-accent" }) }) }),
|
|
304
345
|
children
|
|
305
346
|
]
|
|
306
347
|
}
|
|
307
348
|
));
|
|
308
349
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
309
|
-
var DropdownMenuLabel =
|
|
350
|
+
var DropdownMenuLabel = React6.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
310
351
|
DropdownMenuPrimitive.Label,
|
|
311
352
|
{
|
|
312
353
|
ref,
|
|
@@ -319,7 +360,7 @@ var DropdownMenuLabel = React5.forwardRef(({ className, inset, ...props }, ref)
|
|
|
319
360
|
}
|
|
320
361
|
));
|
|
321
362
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
322
|
-
var DropdownMenuSeparator =
|
|
363
|
+
var DropdownMenuSeparator = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
323
364
|
DropdownMenuPrimitive.Separator,
|
|
324
365
|
{
|
|
325
366
|
ref,
|
|
@@ -332,7 +373,7 @@ var DropdownMenuShortcut = ({
|
|
|
332
373
|
className,
|
|
333
374
|
...props
|
|
334
375
|
}) => {
|
|
335
|
-
return /* @__PURE__ */
|
|
376
|
+
return /* @__PURE__ */ jsx5(
|
|
336
377
|
"span",
|
|
337
378
|
{
|
|
338
379
|
className: cn("ml-auto text-h6 text-ods-text-secondary opacity-60", className),
|
|
@@ -344,11 +385,11 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
|
344
385
|
|
|
345
386
|
// src/components/ui/skeleton.tsx
|
|
346
387
|
init_cn();
|
|
347
|
-
import * as
|
|
348
|
-
import { jsx as
|
|
349
|
-
var Skeleton =
|
|
388
|
+
import * as React7 from "react";
|
|
389
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
390
|
+
var Skeleton = React7.forwardRef(
|
|
350
391
|
({ className, ...props }, ref) => {
|
|
351
|
-
return /* @__PURE__ */
|
|
392
|
+
return /* @__PURE__ */ jsx6(
|
|
352
393
|
"div",
|
|
353
394
|
{
|
|
354
395
|
ref,
|
|
@@ -362,9 +403,9 @@ var Skeleton = React6.forwardRef(
|
|
|
362
403
|
}
|
|
363
404
|
);
|
|
364
405
|
Skeleton.displayName = "Skeleton";
|
|
365
|
-
var SkeletonText =
|
|
406
|
+
var SkeletonText = React7.forwardRef(
|
|
366
407
|
({ lines = 1, className, ...props }, ref) => {
|
|
367
|
-
return /* @__PURE__ */
|
|
408
|
+
return /* @__PURE__ */ jsx6("div", { ref, className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx6(
|
|
368
409
|
Skeleton,
|
|
369
410
|
{
|
|
370
411
|
className: cn(
|
|
@@ -378,7 +419,7 @@ var SkeletonText = React6.forwardRef(
|
|
|
378
419
|
}
|
|
379
420
|
);
|
|
380
421
|
SkeletonText.displayName = "SkeletonText";
|
|
381
|
-
var SkeletonCard =
|
|
422
|
+
var SkeletonCard = React7.forwardRef(
|
|
382
423
|
({ showImage = false, className, ...props }, ref) => {
|
|
383
424
|
return /* @__PURE__ */ jsxs4(
|
|
384
425
|
"div",
|
|
@@ -390,10 +431,10 @@ var SkeletonCard = React6.forwardRef(
|
|
|
390
431
|
),
|
|
391
432
|
...props,
|
|
392
433
|
children: [
|
|
393
|
-
showImage && /* @__PURE__ */
|
|
434
|
+
showImage && /* @__PURE__ */ jsx6(Skeleton, { className: "h-48 w-full" }),
|
|
394
435
|
/* @__PURE__ */ jsxs4("div", { className: "p-6", children: [
|
|
395
|
-
/* @__PURE__ */
|
|
396
|
-
/* @__PURE__ */
|
|
436
|
+
/* @__PURE__ */ jsx6(Skeleton, { className: "h-6 w-3/4 mb-4" }),
|
|
437
|
+
/* @__PURE__ */ jsx6(SkeletonText, { lines: 3 })
|
|
397
438
|
] })
|
|
398
439
|
]
|
|
399
440
|
}
|
|
@@ -401,9 +442,9 @@ var SkeletonCard = React6.forwardRef(
|
|
|
401
442
|
}
|
|
402
443
|
);
|
|
403
444
|
SkeletonCard.displayName = "SkeletonCard";
|
|
404
|
-
var SkeletonGrid =
|
|
445
|
+
var SkeletonGrid = React7.forwardRef(
|
|
405
446
|
({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {
|
|
406
|
-
return /* @__PURE__ */
|
|
447
|
+
return /* @__PURE__ */ jsx6(
|
|
407
448
|
"div",
|
|
408
449
|
{
|
|
409
450
|
ref,
|
|
@@ -415,20 +456,20 @@ var SkeletonGrid = React6.forwardRef(
|
|
|
415
456
|
className
|
|
416
457
|
),
|
|
417
458
|
...props,
|
|
418
|
-
children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */
|
|
459
|
+
children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx6(SkeletonCard, { showImage: showImages }, i))
|
|
419
460
|
}
|
|
420
461
|
);
|
|
421
462
|
}
|
|
422
463
|
);
|
|
423
464
|
SkeletonGrid.displayName = "SkeletonGrid";
|
|
424
|
-
var SkeletonButton =
|
|
465
|
+
var SkeletonButton = React7.forwardRef(
|
|
425
466
|
({ size = "default", className, ...props }, ref) => {
|
|
426
467
|
const sizeClasses = {
|
|
427
468
|
sm: "h-8 w-20",
|
|
428
469
|
default: "h-10 w-32",
|
|
429
470
|
lg: "h-12 w-40"
|
|
430
471
|
};
|
|
431
|
-
return /* @__PURE__ */
|
|
472
|
+
return /* @__PURE__ */ jsx6(
|
|
432
473
|
Skeleton,
|
|
433
474
|
{
|
|
434
475
|
ref,
|
|
@@ -443,7 +484,7 @@ var SkeletonButton = React6.forwardRef(
|
|
|
443
484
|
}
|
|
444
485
|
);
|
|
445
486
|
SkeletonButton.displayName = "SkeletonButton";
|
|
446
|
-
var SkeletonHeading =
|
|
487
|
+
var SkeletonHeading = React7.forwardRef(
|
|
447
488
|
({ level = 1, className, ...props }, ref) => {
|
|
448
489
|
const heightClasses = {
|
|
449
490
|
1: "h-12",
|
|
@@ -453,7 +494,7 @@ var SkeletonHeading = React6.forwardRef(
|
|
|
453
494
|
5: "h-6",
|
|
454
495
|
6: "h-5"
|
|
455
496
|
};
|
|
456
|
-
return /* @__PURE__ */
|
|
497
|
+
return /* @__PURE__ */ jsx6(
|
|
457
498
|
Skeleton,
|
|
458
499
|
{
|
|
459
500
|
ref,
|
|
@@ -468,26 +509,27 @@ var SkeletonHeading = React6.forwardRef(
|
|
|
468
509
|
}
|
|
469
510
|
);
|
|
470
511
|
SkeletonHeading.displayName = "SkeletonHeading";
|
|
471
|
-
var SkeletonList =
|
|
512
|
+
var SkeletonList = React7.forwardRef(
|
|
472
513
|
({ items = 5, className, ...props }, ref) => {
|
|
473
|
-
return /* @__PURE__ */
|
|
474
|
-
/* @__PURE__ */
|
|
514
|
+
return /* @__PURE__ */ jsx6("div", { ref, className: cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3", children: [
|
|
515
|
+
/* @__PURE__ */ jsx6(Skeleton, { className: "h-10 w-10 rounded-full flex-shrink-0" }),
|
|
475
516
|
/* @__PURE__ */ jsxs4("div", { className: "flex-1", children: [
|
|
476
|
-
/* @__PURE__ */
|
|
477
|
-
/* @__PURE__ */
|
|
517
|
+
/* @__PURE__ */ jsx6(Skeleton, { className: "h-4 w-1/3 mb-1" }),
|
|
518
|
+
/* @__PURE__ */ jsx6(Skeleton, { className: "h-3 w-1/2" })
|
|
478
519
|
] })
|
|
479
520
|
] }, i)) });
|
|
480
521
|
}
|
|
481
522
|
);
|
|
482
523
|
SkeletonList.displayName = "SkeletonList";
|
|
483
|
-
var SkeletonNavigation =
|
|
524
|
+
var SkeletonNavigation = React7.forwardRef(
|
|
484
525
|
({ items = 6, className, ...props }, ref) => {
|
|
485
|
-
return /* @__PURE__ */
|
|
526
|
+
return /* @__PURE__ */ jsx6("div", { ref, className: cn("flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx6(Skeleton, { className: "h-5 w-20" }, i)) });
|
|
486
527
|
}
|
|
487
528
|
);
|
|
488
529
|
SkeletonNavigation.displayName = "SkeletonNavigation";
|
|
489
530
|
|
|
490
531
|
export {
|
|
532
|
+
Label,
|
|
491
533
|
FieldWrapper,
|
|
492
534
|
Input,
|
|
493
535
|
Checkbox,
|
|
@@ -520,4 +562,4 @@ export {
|
|
|
520
562
|
SkeletonList,
|
|
521
563
|
SkeletonNavigation
|
|
522
564
|
};
|
|
523
|
-
//# sourceMappingURL=chunk-
|
|
565
|
+
//# sourceMappingURL=chunk-RSZXB6J2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/label.tsx","../src/components/ui/field-wrapper.tsx","../src/components/ui/input.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/portal-container.tsx","../src/components/ui/skeleton.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../utils/cn\"\n\n/**\n * THE form label. One treatment, stated once:\n *\n * - Scale + color live in the BASE (`text-h6 text-ods-text-primary`), so call\n * sites never restate them — before this, ~100 call sites carried a\n * `className=\"text-ods-text-primary\"` override and ~115 cargo-culted\n * `variant=\"small\"` because the base under-specified.\n * - NO margin. Layout belongs to the CONTAINER (`Field`'s gap, a `space-y-2`\n * wrapper) — a margin inside a text primitive stacks with container gaps,\n * which is exactly how `Field` rows ended up 12px label→control while the\n * hand-rolled rows were 8px, and how labels sat 2px off their inline badges\n * in `items-center` rows. Opt into `spacing` ONLY when the label truly has\n * no spacing container.\n *\n * Raw `<label>` elements remain correct for CLICK-SURFACES (a field's adorned\n * chrome, checkbox/radio rows, upload dropzones) — those are interaction\n * wrappers, not text labels, and must not inherit this typography.\n */\nconst labelVariants = cva(\n \"block text-h6 text-ods-text-primary\",\n {\n variants: {\n variant: {\n default: \"\",\n /** @deprecated alias of `default` — the three small scales converged on text-h6. */\n small: \"\",\n /** @deprecated alias of `default`. */\n medium: \"\",\n large: \"text-h4\"\n },\n spacing: {\n none: \"\",\n tight: \"mb-0.5\",\n normal: \"mb-2\",\n loose: \"mb-3\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n spacing: \"none\"\n }\n }\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, variant, spacing, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants({ variant, spacing }), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\"\n\nimport { Label } from './label'\nimport * as React from \"react\"\nimport { cn } from \"../../utils/cn\"\n\nexport interface FieldWrapperProps {\n /** Label text displayed above the field */\n label?: string\n /**\n * Status message displayed below the field, on ONE line, ellipsized on\n * overflow (full text via the native `title`).\n *\n * It is positioned OUT OF FLOW (absolute, hanging below the wrapper), so it\n * never changes the field's height when it appears — the same treatment\n * `CheckboxBlock` uses. The trade is that it overlaps whatever sits directly\n * below: a form stacking fields needs at least ~20px of vertical gap (e.g.\n * `gap-[var(--spacing-system-lf)]`) for the message to land in clear space.\n */\n error?: string\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey) */\n errorVariant?: \"error\" | \"warning\" | \"success\" | \"muted\"\n /** Additional className for the outer wrapper */\n className?: string\n children: React.ReactNode\n}\n\nconst errorVariantClasses = {\n error: \"text-ods-error\",\n warning: \"text-ods-warning\",\n success: \"text-ods-success\",\n muted: \"text-ods-text-secondary\",\n} as const\n\nconst FieldWrapper = React.forwardRef<HTMLDivElement, FieldWrapperProps>(\n ({ label, error, errorVariant = \"error\", className, children }, ref) => {\n const hasChrome = label != null || error != null\n\n return (\n <div ref={ref} className={cn(hasChrome ? \"relative flex w-full flex-col\" : \"contents\", className)}>\n {label && (\n // text-h6, NOT text-h4: `Field` (ui/field.tsx) renders its label via\n // `Label variant=\"small\"` = text-h6, and every form that mixes\n // Field-wrapped controls with `label=`-prop controls showed two label\n // sizes side by side — the exact inconsistency the admin editors kept\n // reporting. One label scale, owned here and in Field together.\n <Label className=\"mb-1\">\n {label}\n </Label>\n )}\n {children}\n {error && (\n <p className={cn(\"absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate\", errorVariantClasses[errorVariant])} title={error}>\n {error}\n </p>\n )}\n </div>\n )\n }\n)\nFieldWrapper.displayName = \"FieldWrapper\"\n\nexport { FieldWrapper }\n","\"use client\"\n\nimport * as React from \"react\";\n\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { FieldWrapper } from \"./field-wrapper\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** When true, renders error border & ring */\n invalid?: boolean;\n /** Element displayed at the start (left) of the input */\n startAdornment?: React.ReactNode;\n /** Element displayed at the end (right) of the input */\n endAdornment?: React.ReactNode;\n /** Label text displayed above the input */\n label?: string;\n /** Status message displayed below the input */\n error?: string;\n /** Color variant for the message: \"error\" (red), \"warning\" (yellow), \"success\" (green) or \"muted\" (grey).\n Only \"error\" and \"warning\" mark the field invalid (colored border). */\n errorVariant?: \"error\" | \"warning\" | \"success\" | \"muted\";\n /** When true, shows a loading spinner as end adornment */\n loading?: boolean;\n}\n\nconst invalidBorderClasses = {\n error: \"border-ods-error hover:border-ods-error has-[:focus]:border-ods-error\",\n warning: \"!border-ods-warning hover:!border-ods-warning has-[:focus]:!border-ods-warning\",\n} as const;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, invalid = false, startAdornment, endAdornment, label, error, errorVariant = \"error\", loading = false, ...props }, ref) => {\n // success/muted are informational — they never paint the invalid border\n const variantIsInvalid = errorVariant === \"error\" || errorVariant === \"warning\"\n const isInvalid = invalid || (!!error && variantIsInvalid)\n\n // Range inputs get a clean slider rendering — no label wrapper, borders, or adornments\n if (type === 'range') {\n const rangeInput = (\n <input\n type=\"range\"\n className={cn(\n \"w-full cursor-pointer appearance-none rounded-full bg-white/30 h-1\",\n // Webkit (Chrome/Safari) thumb\n \"[&::-webkit-slider-thumb]:appearance-none\",\n \"[&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3\",\n \"[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white\",\n \"[&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:shadow-sm\",\n // Firefox thumb\n \"[&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3\",\n \"[&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white\",\n \"[&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:cursor-pointer\",\n // Firefox track\n \"[&::-moz-range-track]:bg-transparent\",\n // Disabled\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n return label ? (\n <FieldWrapper label={label} error={error} errorVariant={errorVariant}>\n {rangeInput}\n </FieldWrapper>\n ) : rangeInput\n }\n\n const content = (\n <label\n data-invalid={isInvalid || undefined}\n className={cn(\n // Layout & spacing\n \"flex w-full items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text\",\n // Focus-within states\n \"has-[:focus-visible]:outline-none\",\n \"group\",\n // Animations & touch UX\n \"transition-colors duration-200\",\n // Theme palette\n \"bg-ods-card border-ods-border has-[:focus]:border-ods-accent\",\n // Hover & active (not disabled)\n !props.disabled && \"hover:bg-ods-bg-hover hover:border-ods-border-hover active:bg-ods-bg-active active:border-ods-border-active\",\n // Disabled. The adornments (and any icon inside them) carry their own\n // `text-ods-text-secondary`, so grey them from here — a disabled field\n // must read as one flat colour, not grey text next to a live icon.\n // Scoped to the DIRECT span children (the two adornment wrappers): a\n // descendant rule would also repaint whatever the caller renders INSIDE\n // an adornment, which is passed verbatim precisely so it can own its\n // colour (a `Tag` there went invisible against its own fill).\n props.disabled && \"!cursor-not-allowed bg-ods-bg\",\n \"has-[:disabled]:[&>span]:text-ods-text-disabled has-[:disabled]:[&_svg]:text-ods-text-disabled\",\n // Invalid\n isInvalid && invalidBorderClasses[variantIsInvalid ? (errorVariant as \"error\" | \"warning\") : \"error\"],\n className\n )}\n >\n {startAdornment && (\n <span className=\"text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {startAdornment}\n </span>\n )}\n <input\n type={type}\n className={cn(\n // Layout\n \"flex-1 min-w-0 bg-transparent border-none outline-none\",\n // Typography\n \"text-h4\",\n // Colors\n \"text-ods-text-primary placeholder:text-ods-text-secondary\",\n // File input adjustments\n \"file:border-0 file:bg-transparent\",\n // Disabled\n \"disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border\",\n // Touch\n \"touch-manipulation\",\n // Autofill override\n \"[&:-webkit-autofill]:[-webkit-box-shadow:0_0_0_9999px_transparent_inset] [&:-webkit-autofill]:[-webkit-text-fill-color:var(--color-text-primary)] [&:-webkit-autofill]:[caret-color:var(--color-text-primary)] [&:-webkit-autofill]:[transition:background-color_9999s_ease-in-out_0s]\"\n )}\n ref={ref}\n {...props}\n />\n {loading && (\n <Loader2 className=\"animate-spin flex-shrink-0 text-ods-text-secondary size-4 md:size-6\" />\n )}\n {!loading && endAdornment && (\n <span className=\"text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6\">\n {endAdornment}\n </span>\n )}\n </label>\n )\n\n return (\n <FieldWrapper label={label} error={error} errorVariant={errorVariant}>\n {content}\n </FieldWrapper>\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\n\nimport { cn } from \"../../utils/cn\"\nimport { CheckboxCheckmarkIcon } from \"../icons-v2-generated/signs-and-symbols/checkbox-checkmark-icon\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-ods-border bg-ods-card focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-ods-accent data-[state=checked]:border-ods-accent\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-ods-text-on-accent\")}\n >\n <CheckboxCheckmarkIcon size={10} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/cn\"\nimport {\n COLLISION_PADDING_PX,\n useCollisionBoundary,\n usePortalContainer,\n} from \"./portal-container\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-h6 outline-none hover:bg-ods-bg-hover focus:bg-ods-bg-hover data-[state=open]:bg-ods-bg-hover [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, collisionBoundary, collisionPadding, hideWhenDetached, ...props }, ref) => {\n // Same container as the root content — `DropdownMenuContent` portals, and a\n // submenu left un-portaled inherits whatever clipping/stacking context its\n // parent sits in instead of the one the host published. (The hand-rolled\n // submenu in `actions-menu` already portals; this keeps the shared primitive\n // consistent with both.)\n const container = usePortalContainer()\n // Same boundary as the root content — a submenu must not escape the surface\n // its parent menu is confined to.\n const boundary = useCollisionBoundary()\n const resolvedBoundary = collisionBoundary ?? boundary ?? undefined\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n collisionBoundary={resolvedBoundary}\n collisionPadding={collisionPadding ?? (resolvedBoundary ? COLLISION_PADDING_PX : undefined)}\n // Only defaulted ON where a boundary was published (i.e. inside a panel\n // that owns its menus) — see `DropdownMenuContent`.\n hideWhenDetached={hideWhenDetached ?? (resolvedBoundary ? true : undefined)}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({\n className,\n sideOffset = 4,\n collisionBoundary,\n collisionPadding,\n hideWhenDetached,\n ...props\n}, ref) => {\n // Portal into the active container (e.g. a drawer) so the menu inherits its\n // stacking context; falls back to `document.body` when none is provided.\n const container = usePortalContainer()\n // Keep flip/shift inside the surface that owns the menu. Without this Radix\n // collides against the VIEWPORT, so a menu opened near the top of the chat\n // panel grows upward past the panel and lands over the app header. An\n // explicit prop still wins; no provider → viewport, Radix's own default.\n const boundary = useCollisionBoundary()\n const resolvedBoundary = collisionBoundary ?? boundary ?? undefined\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionBoundary={resolvedBoundary}\n collisionPadding={collisionPadding ?? (resolvedBoundary ? COLLISION_PADDING_PX : undefined)}\n // A menu tracks its trigger for as long as it is open. When the trigger\n // scrolls out of its clipping ancestor — a chat card carried away by the\n // thread's auto-scroll while the menu is open — Radix keeps the menu\n // pinned to that off-screen anchor, so it slides to the surface edge and\n // reads as a detached popup floating over unrelated chrome.\n // `hideWhenDetached` makes it disappear with its trigger instead.\n //\n // Defaulted ON only where a boundary was published. This is a SHARED\n // primitive: flipping it on globally would change dismissal behavior for\n // every dropdown in every consumer, and the detached-popup problem it\n // solves is specific to a menu living inside a scrolling panel.\n hideWhenDetached={hideWhenDetached ?? (resolvedBoundary ? true : undefined)}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-h6 outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-h6 outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-ods-accent\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-h6 font-semibold text-ods-text-secondary\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-ods-border\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-h6 text-ods-text-secondary opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * The DOM node that Radix overlays (dropdown menus, tooltips) should portal\n * into, instead of the default `document.body`.\n *\n * Portaling to `document.body` lifts content out of every local stacking\n * context, which forces overlays opened *inside* a high-z surface (e.g. the\n * chat drawer) to escalate their own z-index to compete at the document\n * root. Pointing the portal at a node *inside* that surface instead\n * lets the content inherit the surface's stacking context — small, local\n * z-indices then \"just work\" and no escalation is needed. Radix positions\n * content with `strategy: \"fixed\"`, so it still escapes ancestor\n * `overflow: hidden` clipping regardless of where it is portaled.\n *\n * Default `null` → Radix falls back to `document.body` (unchanged behaviour\n * everywhere a provider isn't present).\n */\nexport const PortalContainerContext = React.createContext<HTMLElement | null>(\n null,\n)\n\n/** Read the active portal container (or `null` to use `document.body`). */\nexport function usePortalContainer(): HTMLElement | null {\n return React.useContext(PortalContainerContext)\n}\n\n/**\n * The element Radix overlays should treat as their COLLISION boundary — the\n * surface they must stay inside of.\n *\n * Separate from {@link PortalContainerContext} on purpose: the portal target is\n * a `display: contents` node (no box, so it can't be measured), while a\n * collision boundary must be a real, laid-out element.\n *\n * Why it matters: Radix positions overlays `position: fixed` and, by default,\n * flips/shifts them against the VIEWPORT. A menu opened near the top of a\n * panel therefore happily grows upward past the panel's edge and lands on top\n * of the app header — visually detached from the surface it belongs to. Handing\n * Radix the panel element instead keeps flip/shift (and the\n * `--radix-popper-available-height` a menu sizes itself by) inside that panel.\n *\n * Default `null` → viewport, i.e. Radix's own default, unchanged everywhere a\n * provider isn't present.\n */\nexport const CollisionBoundaryContext = React.createContext<HTMLElement | null>(\n null,\n)\n\n/** Read the active collision boundary (or `null` for the viewport). */\nexport function useCollisionBoundary(): HTMLElement | null {\n return React.useContext(CollisionBoundaryContext)\n}\n\n/** Padding (px) kept between an overlay and its boundary edge. Matches the\n * panel's own gutter so a shifted menu never sits flush against the edge. */\nexport const COLLISION_PADDING_PX = 8\n","\"use client\"\n\nimport * as React from 'react'\nimport { cn } from \"../../utils/cn\"\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"animate-pulse rounded-md bg-ods-border\",\n className\n )}\n {...props}\n />\n )\n }\n)\nSkeleton.displayName = 'Skeleton'\n\ninterface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n lines?: number\n className?: string\n}\n\nconst SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 1, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <Skeleton \n key={i} \n className={cn(\n \"h-4\",\n i === lines - 1 && lines > 1 && \"w-3/4\" // Last line shorter for multi-line\n )} \n />\n ))}\n </div>\n )\n }\n)\nSkeletonText.displayName = 'SkeletonText'\n\ninterface SkeletonCardProps extends React.HTMLAttributes<HTMLDivElement> {\n showImage?: boolean\n className?: string\n}\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ showImage = false, className, ...props }, ref) => {\n return (\n <div \n ref={ref}\n className={cn(\n \"rounded-lg border border-ods-border overflow-hidden\",\n className\n )}\n {...props}\n >\n {showImage && (\n <Skeleton className=\"h-48 w-full\" />\n )}\n <div className=\"p-6\">\n <Skeleton className=\"h-6 w-3/4 mb-4\" />\n <SkeletonText lines={3} />\n </div>\n </div>\n )\n }\n)\nSkeletonCard.displayName = 'SkeletonCard'\n\ninterface SkeletonGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number\n items?: number\n showImages?: boolean\n className?: string\n}\n\nconst SkeletonGrid = React.forwardRef<HTMLDivElement, SkeletonGridProps>(\n ({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {\n return (\n <div \n ref={ref}\n className={cn(\n `grid grid-cols-1 gap-6`,\n columns === 2 && \"md:grid-cols-2\",\n columns === 3 && \"md:grid-cols-3\",\n columns === 4 && \"md:grid-cols-4\",\n className\n )}\n {...props}\n >\n {Array.from({ length: items }).map((_, i) => (\n <SkeletonCard key={i} showImage={showImages} />\n ))}\n </div>\n )\n }\n)\nSkeletonGrid.displayName = 'SkeletonGrid'\n\ninterface SkeletonButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'default' | 'lg'\n className?: string\n}\n\nconst SkeletonButton = React.forwardRef<HTMLDivElement, SkeletonButtonProps>(\n ({ size = 'default', className, ...props }, ref) => {\n const sizeClasses = {\n sm: 'h-8 w-20',\n default: 'h-10 w-32',\n lg: 'h-12 w-40'\n }\n \n return (\n <Skeleton \n ref={ref}\n className={cn(\n \"rounded-lg\",\n sizeClasses[size],\n className\n )}\n {...props}\n />\n )\n }\n)\nSkeletonButton.displayName = 'SkeletonButton'\n\ninterface SkeletonHeadingProps extends React.HTMLAttributes<HTMLDivElement> {\n level?: 1 | 2 | 3 | 4 | 5 | 6\n className?: string\n}\n\nconst SkeletonHeading = React.forwardRef<HTMLDivElement, SkeletonHeadingProps>(\n ({ level = 1, className, ...props }, ref) => {\n const heightClasses = {\n 1: 'h-12',\n 2: 'h-10',\n 3: 'h-8',\n 4: 'h-7',\n 5: 'h-6',\n 6: 'h-5'\n }\n \n return (\n <Skeleton \n ref={ref}\n className={cn(\n heightClasses[level],\n \"w-3/4\",\n className\n )}\n {...props}\n />\n )\n }\n)\nSkeletonHeading.displayName = 'SkeletonHeading'\n\ninterface SkeletonListProps extends React.HTMLAttributes<HTMLDivElement> {\n items?: number\n className?: string\n}\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonListProps>(\n ({ items = 5, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"space-y-3\", className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center gap-3\">\n <Skeleton className=\"h-10 w-10 rounded-full flex-shrink-0\" />\n <div className=\"flex-1\">\n <Skeleton className=\"h-4 w-1/3 mb-1\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n </div>\n ))}\n </div>\n )\n }\n)\nSkeletonList.displayName = 'SkeletonList'\n\ninterface SkeletonNavigationProps extends React.HTMLAttributes<HTMLDivElement> {\n items?: number\n className?: string\n}\n\nconst SkeletonNavigation = React.forwardRef<HTMLDivElement, SkeletonNavigationProps>(\n ({ items = 6, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(\"flex items-center gap-6\", className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <Skeleton key={i} className=\"h-5 w-20\" />\n ))}\n </div>\n )\n }\n)\nSkeletonNavigation.displayName = 'SkeletonNavigation'\n\nexport { \n Skeleton,\n SkeletonText,\n SkeletonCard,\n SkeletonGrid,\n SkeletonButton,\n SkeletonHeading,\n SkeletonList,\n SkeletonNavigation\n}"],"mappings":"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","names":["React","jsx","React","jsx","jsxs","React","jsx","React","React","jsx","jsxs","React","jsx","jsxs"]}
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
FileDownloadCard,
|
|
4
4
|
GoogleSheetsViewer,
|
|
5
5
|
PdfViewer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5KAQ2JUQ.js";
|
|
7
7
|
import {
|
|
8
8
|
DocSearchBar,
|
|
9
9
|
useDocSearch
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WTCXDYK7.js";
|
|
11
11
|
import {
|
|
12
12
|
DEFAULT_FOLDER_INDEX_FILE,
|
|
13
13
|
FigmaEmbed,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
findDocNodeByPath,
|
|
20
20
|
getDocAncestorNodeIds,
|
|
21
21
|
stripFolderIndexFromPath
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-JS7FDV27.js";
|
|
23
23
|
import {
|
|
24
24
|
HUB_HEADER_OFFSET_PX,
|
|
25
25
|
contentFetch,
|
|
@@ -1845,4 +1845,4 @@ export {
|
|
|
1845
1845
|
EmbedSkeleton,
|
|
1846
1846
|
DocsHubPage
|
|
1847
1847
|
};
|
|
1848
|
-
//# sourceMappingURL=chunk-
|
|
1848
|
+
//# sourceMappingURL=chunk-U7UPMD3Z.js.map
|