@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.
Files changed (125) hide show
  1. package/dist/{chunk-4ARE6T4J.js → chunk-2I6KJN7F.js} +4 -4
  2. package/dist/{chunk-72SQSKU7.cjs → chunk-4A5RDQ6L.cjs} +61 -61
  3. package/dist/{chunk-72SQSKU7.cjs.map → chunk-4A5RDQ6L.cjs.map} +1 -1
  4. package/dist/{chunk-SZMZJ5Z7.js → chunk-5KAQ2JUQ.js} +2 -2
  5. package/dist/{chunk-TKAWA4FY.js → chunk-5VGIDZAM.js} +2 -2
  6. package/dist/{chunk-TV6GBR7P.cjs → chunk-6M6EZK4R.cjs} +31 -31
  7. package/dist/{chunk-TV6GBR7P.cjs.map → chunk-6M6EZK4R.cjs.map} +1 -1
  8. package/dist/{chunk-KAM2YLU4.js → chunk-6RTSYEBE.js} +2 -2
  9. package/dist/{chunk-SRNY3MXC.js → chunk-7T2HI44L.js} +2 -2
  10. package/dist/{chunk-GN2Q3WBA.js → chunk-7YDLMRVR.js} +6 -6
  11. package/dist/{chunk-WBGSHUXJ.cjs → chunk-A4L6BEB7.cjs} +7 -7
  12. package/dist/{chunk-WBGSHUXJ.cjs.map → chunk-A4L6BEB7.cjs.map} +1 -1
  13. package/dist/{chunk-QVW4B4YQ.cjs → chunk-CN2VQPLX.cjs} +4 -4
  14. package/dist/{chunk-QVW4B4YQ.cjs.map → chunk-CN2VQPLX.cjs.map} +1 -1
  15. package/dist/{chunk-KGMOXLYO.cjs → chunk-DCB4EBA5.cjs} +70 -28
  16. package/dist/chunk-DCB4EBA5.cjs.map +1 -0
  17. package/dist/{chunk-NRRY2RZR.cjs → chunk-EVCAPL5A.cjs} +39 -39
  18. package/dist/{chunk-NRRY2RZR.cjs.map → chunk-EVCAPL5A.cjs.map} +1 -1
  19. package/dist/{chunk-I4N3VQCU.cjs → chunk-GXNSFW3N.cjs} +30 -30
  20. package/dist/{chunk-I4N3VQCU.cjs.map → chunk-GXNSFW3N.cjs.map} +1 -1
  21. package/dist/{chunk-Q4NLR45P.cjs → chunk-H7ORFGB6.cjs} +11 -11
  22. package/dist/{chunk-Q4NLR45P.cjs.map → chunk-H7ORFGB6.cjs.map} +1 -1
  23. package/dist/{chunk-HT7P4QSO.cjs → chunk-HCGS2AAS.cjs} +14 -14
  24. package/dist/{chunk-HT7P4QSO.cjs.map → chunk-HCGS2AAS.cjs.map} +1 -1
  25. package/dist/{chunk-4WE5VFJX.js → chunk-HWYUSB5A.js} +2 -2
  26. package/dist/{chunk-44ERGZJT.js → chunk-IRV6TOEZ.js} +5 -5
  27. package/dist/{chunk-LALK7AGK.cjs → chunk-ISCWUJ72.cjs} +3 -3
  28. package/dist/{chunk-LALK7AGK.cjs.map → chunk-ISCWUJ72.cjs.map} +1 -1
  29. package/dist/{chunk-GAIU563C.cjs → chunk-ISLQTWWW.cjs} +9 -9
  30. package/dist/{chunk-GAIU563C.cjs.map → chunk-ISLQTWWW.cjs.map} +1 -1
  31. package/dist/{chunk-XQU5QBMJ.js → chunk-JS7FDV27.js} +3515 -3561
  32. package/dist/chunk-JS7FDV27.js.map +1 -0
  33. package/dist/{chunk-DDECEP24.cjs → chunk-LDS54O26.cjs} +505 -551
  34. package/dist/chunk-LDS54O26.cjs.map +1 -0
  35. package/dist/{chunk-2RTORV23.cjs → chunk-LLBU7RI5.cjs} +27 -27
  36. package/dist/{chunk-2RTORV23.cjs.map → chunk-LLBU7RI5.cjs.map} +1 -1
  37. package/dist/{chunk-CILHIWXK.js → chunk-M3GOE7OF.js} +2 -2
  38. package/dist/{chunk-5HTVPIQG.cjs → chunk-MGRCFN2K.cjs} +5 -5
  39. package/dist/{chunk-5HTVPIQG.cjs.map → chunk-MGRCFN2K.cjs.map} +1 -1
  40. package/dist/{chunk-WBWGQOAH.js → chunk-R7RCGLII.js} +7 -7
  41. package/dist/{chunk-QX5AXGLP.js → chunk-RSZXB6J2.js} +108 -66
  42. package/dist/chunk-RSZXB6J2.js.map +1 -0
  43. package/dist/{chunk-NGYZMQHP.js → chunk-U7UPMD3Z.js} +4 -4
  44. package/dist/{chunk-CUZTTZ5T.cjs → chunk-UYQFUEIK.cjs} +98 -98
  45. package/dist/{chunk-CUZTTZ5T.cjs.map → chunk-UYQFUEIK.cjs.map} +1 -1
  46. package/dist/{chunk-VYX4X7ND.js → chunk-WTCXDYK7.js} +2 -2
  47. package/dist/{chunk-6X3C2YAR.js → chunk-XO4YU5GN.js} +2 -2
  48. package/dist/components/case-studies/index.cjs +9 -9
  49. package/dist/components/case-studies/index.js +3 -3
  50. package/dist/components/chat/index.cjs +3 -3
  51. package/dist/components/chat/index.js +2 -2
  52. package/dist/components/command.d.ts +3 -3
  53. package/dist/components/contact/index.cjs +4 -4
  54. package/dist/components/contact/index.js +3 -3
  55. package/dist/components/docs/index.cjs +6 -6
  56. package/dist/components/docs/index.js +5 -5
  57. package/dist/components/embeds/index.cjs +4 -4
  58. package/dist/components/embeds/index.js +3 -3
  59. package/dist/components/faq/index.cjs +4 -4
  60. package/dist/components/faq/index.js +3 -3
  61. package/dist/components/features/index.cjs +3 -3
  62. package/dist/components/features/index.js +2 -2
  63. package/dist/components/help-center-pages/index.cjs +23 -23
  64. package/dist/components/help-center-pages/index.js +14 -14
  65. package/dist/components/index.cjs +141 -141
  66. package/dist/components/index.cjs.map +1 -1
  67. package/dist/components/index.js +13 -13
  68. package/dist/components/meeting-scheduler/index.cjs +60 -60
  69. package/dist/components/meeting-scheduler/index.cjs.map +1 -1
  70. package/dist/components/meeting-scheduler/index.js +5 -5
  71. package/dist/components/navigation/index.cjs +3 -3
  72. package/dist/components/navigation/index.js +2 -2
  73. package/dist/components/onboarding-guides/index.cjs +6 -6
  74. package/dist/components/onboarding-guides/index.js +5 -5
  75. package/dist/components/related-content/index.cjs +4 -4
  76. package/dist/components/related-content/index.js +3 -3
  77. package/dist/components/resizable.d.ts +1 -1
  78. package/dist/components/tickets/index.cjs +7 -7
  79. package/dist/components/tickets/index.js +6 -6
  80. package/dist/components/ui/alert.d.ts +1 -1
  81. package/dist/components/ui/badge.d.ts +1 -1
  82. package/dist/components/ui/checkbox-with-description.d.ts.map +1 -1
  83. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  84. package/dist/components/ui/file-manager/index.cjs +36 -36
  85. package/dist/components/ui/file-manager/index.js +1 -1
  86. package/dist/components/ui/index.cjs +4 -4
  87. package/dist/components/ui/index.cjs.map +1 -1
  88. package/dist/components/ui/index.js +3 -3
  89. package/dist/components/ui/label.d.ts +1 -1
  90. package/dist/components/ui/label.d.ts.map +1 -1
  91. package/dist/components/ui/status-badge.d.ts +1 -1
  92. package/dist/components/ui/tags-input.d.ts.map +1 -1
  93. package/dist/hooks/use-toast.d.ts +1 -1
  94. package/dist/index.cjs +4 -4
  95. package/dist/index.cjs.map +1 -1
  96. package/dist/index.js +3 -3
  97. package/package.json +1 -1
  98. package/src/components/features/array-entry-manager.tsx +1 -1
  99. package/src/components/features/changelog-manager.tsx +3 -3
  100. package/src/components/features/highlight-video-section.tsx +1 -1
  101. package/src/components/features/og-editor-preview.tsx +4 -4
  102. package/src/components/features/release-media-manager.tsx +1 -1
  103. package/src/components/features/seo-editor-preview.tsx +1 -1
  104. package/src/components/ui/checkbox-with-description.tsx +0 -1
  105. package/src/components/ui/field-wrapper.tsx +3 -2
  106. package/src/components/ui/field.tsx +1 -1
  107. package/src/components/ui/label.tsx +31 -15
  108. package/src/components/ui/tags-input.tsx +3 -2
  109. package/dist/chunk-DDECEP24.cjs.map +0 -1
  110. package/dist/chunk-KGMOXLYO.cjs.map +0 -1
  111. package/dist/chunk-QX5AXGLP.js.map +0 -1
  112. package/dist/chunk-XQU5QBMJ.js.map +0 -1
  113. /package/dist/{chunk-4ARE6T4J.js.map → chunk-2I6KJN7F.js.map} +0 -0
  114. /package/dist/{chunk-SZMZJ5Z7.js.map → chunk-5KAQ2JUQ.js.map} +0 -0
  115. /package/dist/{chunk-TKAWA4FY.js.map → chunk-5VGIDZAM.js.map} +0 -0
  116. /package/dist/{chunk-KAM2YLU4.js.map → chunk-6RTSYEBE.js.map} +0 -0
  117. /package/dist/{chunk-SRNY3MXC.js.map → chunk-7T2HI44L.js.map} +0 -0
  118. /package/dist/{chunk-GN2Q3WBA.js.map → chunk-7YDLMRVR.js.map} +0 -0
  119. /package/dist/{chunk-4WE5VFJX.js.map → chunk-HWYUSB5A.js.map} +0 -0
  120. /package/dist/{chunk-44ERGZJT.js.map → chunk-IRV6TOEZ.js.map} +0 -0
  121. /package/dist/{chunk-CILHIWXK.js.map → chunk-M3GOE7OF.js.map} +0 -0
  122. /package/dist/{chunk-WBWGQOAH.js.map → chunk-R7RCGLII.js.map} +0 -0
  123. /package/dist/{chunk-NGYZMQHP.js.map → chunk-U7UPMD3Z.js.map} +0 -0
  124. /package/dist/{chunk-VYX4X7ND.js.map → chunk-WTCXDYK7.js.map} +0 -0
  125. /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/field-wrapper.tsx
10
+ // src/components/ui/label.tsx
11
11
  init_cn();
12
12
  import * as React from "react";
13
- import { jsx, jsxs } from "react/jsx-runtime";
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 = React.forwardRef(
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__ */ jsx("label", { className: "text-h6 text-ods-text-primary mb-1", children: label }),
70
+ /* @__PURE__ */ jsx2(Label, { className: "mb-1", children: label }),
30
71
  children,
31
- error && /* @__PURE__ */ jsx("p", { className: cn("absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), title: error, children: error })
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 React2 from "react";
80
+ import * as React3 from "react";
40
81
  import { Loader2 } from "lucide-react";
41
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
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 = React2.forwardRef(
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__ */ jsx2(
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__ */ jsx2(FieldWrapper, { label, error, errorVariant, children: rangeInput }) : rangeInput;
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__ */ jsx2("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 }),
109
- /* @__PURE__ */ jsx2(
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__ */ jsx2(Loader2, { className: "animate-spin flex-shrink-0 text-ods-text-secondary size-4 md:size-6" }),
134
- !loading && endAdornment && /* @__PURE__ */ jsx2("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 })
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__ */ jsx2(FieldWrapper, { label, error, errorVariant, children: content });
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 React3 from "react";
186
+ import * as React4 from "react";
146
187
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
147
- import { jsx as jsx3 } from "react/jsx-runtime";
148
- var Checkbox = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3(CheckboxCheckmarkIcon, { size: 10 })
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 React5 from "react";
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 React4 from "react";
176
- var PortalContainerContext = React4.createContext(
216
+ import * as React5 from "react";
217
+ var PortalContainerContext = React5.createContext(
177
218
  null
178
219
  );
179
220
  function usePortalContainer() {
180
- return React4.useContext(PortalContainerContext);
221
+ return React5.useContext(PortalContainerContext);
181
222
  }
182
- var CollisionBoundaryContext = React4.createContext(
223
+ var CollisionBoundaryContext = React5.createContext(
183
224
  null
184
225
  );
185
226
  function useCollisionBoundary() {
186
- return React4.useContext(CollisionBoundaryContext);
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 jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
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 = React5.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
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__ */ jsx4(ChevronRight, { className: "ml-auto" })
251
+ /* @__PURE__ */ jsx5(ChevronRight, { className: "ml-auto" })
211
252
  ]
212
253
  }
213
254
  ));
214
255
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
215
- var DropdownMenuSubContent = React5.forwardRef(({ className, collisionBoundary, collisionPadding, hideWhenDetached, ...props }, ref) => {
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__ */ jsx4(DropdownMenuPrimitive.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsx4(
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 = React5.forwardRef(({
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__ */ jsx4(DropdownMenuPrimitive.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsx4(
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 = React5.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx4(
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 = React5.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs3(
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__ */ jsx4("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx4(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx4(Check, { className: "h-4 w-4" }) }) }),
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 = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs3(
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__ */ jsx4("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx4(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx4(Circle, { className: "h-2 w-2 fill-ods-accent" }) }) }),
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 = React5.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx4(
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 = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
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__ */ jsx4(
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 React6 from "react";
348
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
349
- var Skeleton = React6.forwardRef(
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__ */ jsx5(
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 = React6.forwardRef(
406
+ var SkeletonText = React7.forwardRef(
366
407
  ({ lines = 1, className, ...props }, ref) => {
367
- return /* @__PURE__ */ jsx5("div", { ref, className: cn("space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx5(
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 = React6.forwardRef(
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__ */ jsx5(Skeleton, { className: "h-48 w-full" }),
434
+ showImage && /* @__PURE__ */ jsx6(Skeleton, { className: "h-48 w-full" }),
394
435
  /* @__PURE__ */ jsxs4("div", { className: "p-6", children: [
395
- /* @__PURE__ */ jsx5(Skeleton, { className: "h-6 w-3/4 mb-4" }),
396
- /* @__PURE__ */ jsx5(SkeletonText, { lines: 3 })
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 = React6.forwardRef(
445
+ var SkeletonGrid = React7.forwardRef(
405
446
  ({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {
406
- return /* @__PURE__ */ jsx5(
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__ */ jsx5(SkeletonCard, { showImage: showImages }, i))
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 = React6.forwardRef(
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__ */ jsx5(
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 = React6.forwardRef(
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__ */ jsx5(
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 = React6.forwardRef(
512
+ var SkeletonList = React7.forwardRef(
472
513
  ({ items = 5, className, ...props }, ref) => {
473
- return /* @__PURE__ */ jsx5("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: [
474
- /* @__PURE__ */ jsx5(Skeleton, { className: "h-10 w-10 rounded-full flex-shrink-0" }),
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__ */ jsx5(Skeleton, { className: "h-4 w-1/3 mb-1" }),
477
- /* @__PURE__ */ jsx5(Skeleton, { className: "h-3 w-1/2" })
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 = React6.forwardRef(
524
+ var SkeletonNavigation = React7.forwardRef(
484
525
  ({ items = 6, className, ...props }, ref) => {
485
- return /* @__PURE__ */ jsx5("div", { ref, className: cn("flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsx5(Skeleton, { className: "h-5 w-20" }, i)) });
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-QX5AXGLP.js.map
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":";;;;;;;;;;AAMA;AAJA,YAAY,WAAW;AACvB,YAAY,oBAAoB;AAChC,SAAS,WAA8B;AAoDrC;AA9BF,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA;AAAA,QAET,OAAO;AAAA;AAAA,QAEP,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,IAAM,QAAc,iBAGlB,CAAC,EAAE,WAAW,SAAS,SAAS,GAAG,MAAM,GAAG,QAC5C;AAAA,EAAgB;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAW,GAAG,cAAc,EAAE,SAAS,QAAQ,CAAC,GAAG,SAAS;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AACD,MAAM,cAA6B,oBAAK;;;AC1DxC;AADA,YAAYA,YAAW;AAoCjB,SAOI,OAAAC,MAPJ;AAZN,IAAM,sBAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEA,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAE,OAAO,OAAO,eAAe,SAAS,WAAW,SAAS,GAAG,QAAQ;AACtE,UAAM,YAAY,SAAS,QAAQ,SAAS;AAE5C,WACE,qBAAC,SAAI,KAAU,WAAW,GAAG,YAAY,kCAAkC,YAAY,SAAS,GAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMC,gBAAAA,KAAC,SAAM,WAAU,QACd,iBACH;AAAA,MAED;AAAA,MACA,SACC,gBAAAA,KAAC,OAAE,WAAW,GAAG,sEAAsE,oBAAoB,YAAY,CAAC,GAAG,OAAO,OAC/H,iBACH;AAAA,OAEJ;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;;;ACvD3B;AAHA,YAAYC,YAAW;AAEvB,SAAS,eAAe;AAoChB,gBAAAC,MA+BF,QAAAC,aA/BE;AAdR,IAAM,uBAAuB;AAAA,EAC3B,OAAO;AAAA,EACP,SAAS;AACX;AAEA,IAAM,QAAc;AAAA,EAClB,CAAC,EAAE,WAAW,MAAM,UAAU,OAAO,gBAAgB,cAAc,OAAO,OAAO,eAAe,SAAS,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AAE5I,UAAM,mBAAmB,iBAAiB,WAAW,iBAAiB;AACtE,UAAM,YAAY,WAAY,CAAC,CAAC,SAAS;AAGzC,QAAI,SAAS,SAAS;AACpB,YAAM,aACJ,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW;AAAA,YACT;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAEF,aAAO,QACL,gBAAAA,KAAC,gBAAa,OAAc,OAAc,cACvC,sBACH,IACE;AAAA,IACN;AAEA,UAAM,UACJ,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,gBAAc,aAAa;AAAA,QAC3B,WAAW;AAAA;AAAA,UAET;AAAA;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,UAEA;AAAA;AAAA,UAEA;AAAA;AAAA,UAEA,CAAC,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQnB,MAAM,YAAY;AAAA,UAClB;AAAA;AAAA,UAEA,aAAa,qBAAqB,mBAAoB,eAAuC,OAAO;AAAA,UACpG;AAAA,QACF;AAAA,QAEC;AAAA,4BACC,gBAAAD,KAAC,UAAK,WAAU,wLACb,0BACH;AAAA,UAEF,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,WAAW;AAAA;AAAA,gBAET;AAAA;AAAA,gBAEA;AAAA;AAAA,gBAEA;AAAA;AAAA,gBAEA;AAAA;AAAA,gBAEA;AAAA;AAAA,gBAEA;AAAA;AAAA,gBAEA;AAAA,cACF;AAAA,cACA;AAAA,cACC,GAAG;AAAA;AAAA,UACN;AAAA,UACC,WACC,gBAAAA,KAAC,WAAQ,WAAU,uEAAsE;AAAA,UAE1F,CAAC,WAAW,gBACX,gBAAAA,KAAC,UAAK,WAAU,wLACb,wBACH;AAAA;AAAA;AAAA,IAEJ;AAGF,WACE,gBAAAA,KAAC,gBAAa,OAAc,OAAc,cACvC,mBACH;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;;;AC1IpB;AAHA,YAAYE,YAAW;AACvB,YAAY,uBAAuB;AAoB7B,gBAAAC,YAAA;AAfN,IAAM,WAAiB,kBAGrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAmB;AAAA,EAAlB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ,0BAAAA;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,WAAW,GAAG,0DAA0D;AAAA,QAExE,0BAAAA,KAAC,yBAAsB,MAAM,IAAI;AAAA;AAAA,IACnC;AAAA;AACF,CACD;AACD,SAAS,cAAgC,uBAAK;;;ACrB9C;AAJA,YAAYC,YAAW;AACvB,YAAY,2BAA2B;AACvC,SAAS,OAAO,cAAc,cAAc;;;ACF5C,YAAYC,YAAW;AAkBhB,IAAM,yBAA+B;AAAA,EAC1C;AACF;AAGO,SAAS,qBAAyC;AACvD,SAAa,kBAAW,sBAAsB;AAChD;AAoBO,IAAM,2BAAiC;AAAA,EAC5C;AACF;AAGO,SAAS,uBAA2C;AACzD,SAAa,kBAAW,wBAAwB;AAClD;AAIO,IAAM,uBAAuB;;;AD3BlC,SAUE,OAAAC,MAVF,QAAAC,aAAA;AAlBF,IAAM,eAAqC;AAE3C,IAAM,sBAA4C;AAElD,IAAM,oBAA0C;AAEhD,IAAM,qBAA2C;AAEjD,IAAM,kBAAwC;AAE9C,IAAM,yBAA+C;AAErD,IAAM,yBAA+B,kBAKnC,CAAC,EAAE,WAAW,OAAO,UAAU,GAAG,MAAM,GAAG,QAC3C,gBAAAA;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEH;AAAA;AAAA,MACD,gBAAAD,KAAC,gBAAa,WAAU,WAAU;AAAA;AAAA;AACpC,CACD;AACD,uBAAuB,cACC,iCAAW;AAEnC,IAAM,yBAA+B,kBAGnC,CAAC,EAAE,WAAW,mBAAmB,kBAAkB,kBAAkB,GAAG,MAAM,GAAG,QAAQ;AAMzF,QAAM,YAAY,mBAAmB;AAGrC,QAAM,WAAW,qBAAqB;AACtC,QAAM,mBAAmB,qBAAqB,YAAY;AAC1D,SACA,gBAAAA,KAAuB,8BAAtB,EAA6B,WAAW,aAAa,QACpD,0BAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA,mBAAmB;AAAA,MACnB,kBAAkB,qBAAqB,mBAAmB,uBAAuB;AAAA,MAGjF,kBAAkB,qBAAqB,mBAAmB,OAAO;AAAA,MACjE,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEF,CAAC;AACD,uBAAuB,cACC,iCAAW;AAEnC,IAAM,sBAA4B,kBAGhC,CAAC;AAAA,EACD;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAG,QAAQ;AAGT,QAAM,YAAY,mBAAmB;AAKrC,QAAM,WAAW,qBAAqB;AACtC,QAAM,mBAAmB,qBAAqB,YAAY;AAC1D,SACA,gBAAAA,KAAuB,8BAAtB,EAA6B,WAAW,aAAa,QACpD,0BAAAA;AAAA,IAAuB;AAAA,IAAtB;AAAA,MACC;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB,kBAAkB,qBAAqB,mBAAmB,uBAAuB;AAAA,MAYjF,kBAAkB,qBAAqB,mBAAmB,OAAO;AAAA,MACjE,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEF,CAAC;AACD,oBAAoB,cAAoC,8BAAQ;AAEhE,IAAM,mBAAyB,kBAK7B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QACjC,gBAAAA;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,iBAAiB,cAAoC,2BAAK;AAE1D,IAAM,2BAAiC,kBAGrC,CAAC,EAAE,WAAW,UAAU,SAAS,GAAG,MAAM,GAAG,QAC7C,gBAAAC;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,sBAAAD,KAAC,UAAK,WAAU,gEACd,0BAAAA,KAAuB,qCAAtB,EACC,0BAAAA,KAAC,SAAM,WAAU,WAAU,GAC7B,GACF;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,yBAAyB,cACD,mCAAa;AAErC,IAAM,wBAA8B,kBAGlC,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC,gBAAAC;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEJ;AAAA,sBAAAD,KAAC,UAAK,WAAU,gEACd,0BAAAA,KAAuB,qCAAtB,EACC,0BAAAA,KAAC,UAAO,WAAU,2BAA0B,GAC9C,GACF;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,sBAAsB,cAAoC,gCAAU;AAEpE,IAAM,oBAA0B,kBAK9B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QACjC,gBAAAA;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAAoC,4BAAM;AAE5D,IAAM,wBAA8B,kBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,gBAAAA;AAAA,EAAuB;AAAA,EAAtB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,sBAAsB,cAAoC,gCAAU;AAEpE,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,GAAG;AACL,MAA6C;AAC3C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,sDAAsD,SAAS;AAAA,MAC5E,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,qBAAqB,cAAc;;;AE1OnC;AADA,YAAYE,YAAW;AAUjB,gBAAAC,MAwDE,QAAAC,aAxDF;AAHN,IAAM,WAAiB;AAAA,EACrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAChC,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;AAOvB,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3C,WACE,gBAAAA,KAAC,SAAI,KAAU,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OACvD,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA,MAAM,QAAQ,KAAK,QAAQ,KAAK;AAAA;AAAA,QAClC;AAAA;AAAA,MAJK;AAAA,IAKP,CACD,GACH;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAO3B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAE,YAAY,OAAO,WAAW,GAAG,MAAM,GAAG,QAAQ;AACnD,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,uBACC,gBAAAD,KAAC,YAAS,WAAU,eAAc;AAAA,UAEpC,gBAAAC,MAAC,SAAI,WAAU,OACb;AAAA,4BAAAD,KAAC,YAAS,WAAU,kBAAiB;AAAA,YACrC,gBAAAA,KAAC,gBAAa,OAAO,GAAG;AAAA,aAC1B;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAS3B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,OAAO,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC5E,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAA,KAAC,gBAAqB,WAAW,cAAd,CAA0B,CAC9C;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAO3B,IAAM,iBAAuB;AAAA,EAC3B,CAAC,EAAE,OAAO,WAAW,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClD,UAAM,cAAc;AAAA,MAClB,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,IACN;AAEA,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,YAAY,IAAI;AAAA,UAChB;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,eAAe,cAAc;AAO7B,IAAM,kBAAwB;AAAA,EAC5B,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3C,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,cAAc,KAAK;AAAA,UACnB;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AACA,gBAAgB,cAAc;AAO9B,IAAM,eAAqB;AAAA,EACzB,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3C,WACE,gBAAAA,KAAC,SAAI,KAAU,WAAW,GAAG,aAAa,SAAS,GAAI,GAAG,OACvD,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAC,MAAC,SAAY,WAAU,2BACrB;AAAA,sBAAAD,KAAC,YAAS,WAAU,wCAAuC;AAAA,MAC3D,gBAAAC,MAAC,SAAI,WAAU,UACb;AAAA,wBAAAD,KAAC,YAAS,WAAU,kBAAiB;AAAA,QACrC,gBAAAA,KAAC,YAAS,WAAU,aAAY;AAAA,SAClC;AAAA,SALQ,CAMV,CACD,GACH;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;AAO3B,IAAM,qBAA2B;AAAA,EAC/B,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC3C,WACE,gBAAAA,KAAC,SAAI,KAAU,WAAW,GAAG,2BAA2B,SAAS,GAAI,GAAG,OACrE,gBAAM,KAAK,EAAE,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MACrC,gBAAAA,KAAC,YAAiB,WAAU,cAAb,CAAwB,CACxC,GACH;AAAA,EAEJ;AACF;AACA,mBAAmB,cAAc;","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-SZMZJ5Z7.js";
6
+ } from "./chunk-5KAQ2JUQ.js";
7
7
  import {
8
8
  DocSearchBar,
9
9
  useDocSearch
10
- } from "./chunk-VYX4X7ND.js";
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-XQU5QBMJ.js";
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-NGYZMQHP.js.map
1848
+ //# sourceMappingURL=chunk-U7UPMD3Z.js.map