@flamingo-stack/openframe-frontend-core 0.0.191 → 0.0.192

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 (52) hide show
  1. package/dist/{chunk-EWIC26TW.cjs → chunk-4CWSZPXH.cjs} +8 -8
  2. package/dist/{chunk-EWIC26TW.cjs.map → chunk-4CWSZPXH.cjs.map} +1 -1
  3. package/dist/{chunk-QAXTP73H.js → chunk-CDR4RZ5N.js} +17 -8
  4. package/dist/chunk-CDR4RZ5N.js.map +1 -0
  5. package/dist/{chunk-HIMEIPED.cjs → chunk-CVMSC7M4.cjs} +38 -38
  6. package/dist/{chunk-HIMEIPED.cjs.map → chunk-CVMSC7M4.cjs.map} +1 -1
  7. package/dist/{chunk-F7ETWH2M.js → chunk-N57KWHDB.js} +2 -2
  8. package/dist/{chunk-6XYXWVYY.js → chunk-PJ5KFD2V.js} +3 -3
  9. package/dist/{chunk-DV5GLSYR.js → chunk-SZPJ5R5B.js} +2 -1
  10. package/dist/{chunk-LVBPFEK2.cjs → chunk-TANAJ7YD.cjs} +1249 -1240
  11. package/dist/chunk-TANAJ7YD.cjs.map +1 -0
  12. package/dist/{chunk-HSTU7Y4R.js → chunk-TMD44IKJ.js} +2 -2
  13. package/dist/{chunk-OFAYLG6D.cjs → chunk-UC43NICZ.cjs} +3 -2
  14. package/dist/chunk-UC43NICZ.cjs.map +1 -0
  15. package/dist/{chunk-BJTOSUT4.cjs → chunk-V2FNIPZJ.cjs} +49 -49
  16. package/dist/{chunk-BJTOSUT4.cjs.map → chunk-V2FNIPZJ.cjs.map} +1 -1
  17. package/dist/components/chat/chat-ref.types.d.ts +7 -0
  18. package/dist/components/chat/chat-ref.types.d.ts.map +1 -1
  19. package/dist/components/features/index.cjs +6 -6
  20. package/dist/components/features/index.js +5 -5
  21. package/dist/components/icons/index.cjs +3 -3
  22. package/dist/components/icons/index.js +2 -2
  23. package/dist/components/index.cjs +6 -6
  24. package/dist/components/index.js +5 -5
  25. package/dist/components/navigation/index.cjs +6 -6
  26. package/dist/components/navigation/index.js +5 -5
  27. package/dist/components/ui/file-manager/index.cjs +69 -69
  28. package/dist/components/ui/file-manager/index.js +2 -2
  29. package/dist/components/ui/index.cjs +6 -6
  30. package/dist/components/ui/index.js +5 -5
  31. package/dist/components/ui/search-input.d.ts +15 -2
  32. package/dist/components/ui/search-input.d.ts.map +1 -1
  33. package/dist/hooks/index.cjs +4 -4
  34. package/dist/hooks/index.js +3 -3
  35. package/dist/index.cjs +8 -6
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.js +8 -6
  38. package/dist/utils/index.cjs +1 -0
  39. package/dist/utils/index.d.ts +1 -1
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist/utils/index.js +1 -1
  42. package/package.json +1 -1
  43. package/src/components/chat/chat-ref.types.ts +7 -0
  44. package/src/components/ui/search-input.tsx +29 -5
  45. package/src/utils/index.ts +1 -1
  46. package/dist/chunk-LVBPFEK2.cjs.map +0 -1
  47. package/dist/chunk-OFAYLG6D.cjs.map +0 -1
  48. package/dist/chunk-QAXTP73H.js.map +0 -1
  49. /package/dist/{chunk-F7ETWH2M.js.map → chunk-N57KWHDB.js.map} +0 -0
  50. /package/dist/{chunk-6XYXWVYY.js.map → chunk-PJ5KFD2V.js.map} +0 -0
  51. /package/dist/{chunk-DV5GLSYR.js.map → chunk-SZPJ5R5B.js.map} +0 -0
  52. /package/dist/{chunk-HSTU7Y4R.js.map → chunk-TMD44IKJ.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  cn,
4
4
  init_cn
5
- } from "./chunk-DV5GLSYR.js";
5
+ } from "./chunk-SZPJ5R5B.js";
6
6
  import {
7
7
  CheckboxCheckmarkIcon
8
8
  } from "./chunk-6U3IUD57.js";
@@ -890,4 +890,4 @@ export {
890
890
  DropdownMenuSeparator,
891
891
  DropdownMenuShortcut
892
892
  };
893
- //# sourceMappingURL=chunk-HSTU7Y4R.js.map
893
+ //# sourceMappingURL=chunk-TMD44IKJ.js.map
@@ -143,5 +143,6 @@ var init_cn = _chunkVRHGVLSLcjs.__esm.call(void 0, {
143
143
 
144
144
 
145
145
 
146
- exports.cn = cn; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.getAllPlatformBaseDomains = getAllPlatformBaseDomains; exports.getBaseUrl = getBaseUrl; exports.init_cn = init_cn;
147
- //# sourceMappingURL=chunk-OFAYLG6D.cjs.map
146
+
147
+ exports.cn = cn; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.getPlatformProductionUrl = getPlatformProductionUrl; exports.getAllPlatformBaseDomains = getAllPlatformBaseDomains; exports.getBaseUrl = getBaseUrl; exports.init_cn = init_cn;
148
+ //# sourceMappingURL=chunk-UC43NICZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-UC43NICZ.cjs","../src/utils/cn.ts"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-UC43NICZ.cjs","sourcesContent":[null,"import { clsx, type ClassValue } from \"clsx\"\nimport { extendTailwindMerge } from \"tailwind-merge\"\n\nconst twMerge = extendTailwindMerge<'ods-typography'>({\n extend: {\n classGroups: {\n 'ods-typography': ['text-h1', 'text-h2', 'text-h3', 'text-h4', 'text-h5', 'text-h6'],\n },\n },\n})\n\n/**\n * Combine class names with Tailwind's merge utility\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n/**\n * Format a date to a human-readable string\n * @param date - The date to format (Date object or ISO string)\n * @param options - Formatting options\n * @returns Formatted date string\n */\nexport function formatDate(\n date: Date | string,\n options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n },\n): string {\n const dateObj = typeof date === \"string\" ? new Date(date) : date\n \n // Check if the date is valid\n if (isNaN(dateObj.getTime())) {\n console.warn(\"Invalid date provided to formatDate:\", date)\n return \"Invalid Date\"\n }\n \n return dateObj.toLocaleDateString(\"en-US\", options)\n}\n\n/**\n * Format a number with thousands separators\n * @param num - The number to format\n * @returns Formatted number string\n */\nexport function formatNumber(num: number): string {\n return num.toLocaleString()\n}\n\n/**\n * Format a price with currency symbol\n * @param price - The price to format\n * @param currency - The currency code\n * @returns Formatted price string\n */\nexport function formatPrice(price: number, currency = \"USD\"): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n }).format(price)\n}\n\n/**\n * Format bytes to a human-readable string (KB, MB, GB, etc.)\n * @param bytes - The number of bytes\n * @param decimals - Number of decimal places\n * @returns Formatted bytes string\n */\nexport function formatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) return \"0 Bytes\"\n\n const k = 1024\n const dm = decimals < 0 ? 0 : decimals\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n\n return Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i]\n}\n\n/**\n * Platform URL mappings for production (with environment variable overrides)\n */\nexport function getPlatformProductionUrl(platform: string): string {\n switch (platform) {\n // *-hub platforms — env var convention: NEXT_PUBLIC_<NAME>_HUB_URL\n case 'marketing-hub':\n return process.env.NEXT_PUBLIC_MARKETING_HUB_URL || 'https://marketing-hub.flamingo.so';\n case 'company-hub':\n return process.env.NEXT_PUBLIC_COMPANY_HUB_URL || 'https://company-hub.flamingo.so';\n case 'product-hub':\n return process.env.NEXT_PUBLIC_PRODUCT_HUB_URL || 'https://product-hub.flamingo.so';\n case 'revenue-hub':\n return process.env.NEXT_PUBLIC_REVENUE_HUB_URL || 'https://revenue-hub.flamingo.so';\n case 'people-hub':\n return process.env.NEXT_PUBLIC_PEOPLE_HUB_URL || 'https://people-hub.flamingo.so';\n // Standalone platforms — env var convention: NEXT_PUBLIC_<NAME>_URL\n case 'openmsp':\n return process.env.NEXT_PUBLIC_OPENMSP_URL || 'https://www.openmsp.ai';\n case 'flamingo':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n case 'tmcg':\n return process.env.NEXT_PUBLIC_TMCG_URL || 'https://www.tmcg.miami';\n case 'flamingo-teaser':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n case 'openframe':\n return process.env.NEXT_PUBLIC_OPENFRAME_URL || 'https://openframe.ai';\n case 'universal':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n default:\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n }\n}\n\n/**\n * Get ALL unique base domains from getPlatformProductionUrl\n *\n * Extracts domains by calling getPlatformProductionUrl for each platform identifier.\n * Platform identifiers match the switch cases in getPlatformProductionUrl.\n *\n * Handles 3 cases:\n * 1. LOCALHOST DEBUG - No domain (hostname-specific cookies)\n * 2. VERCEL PREVIEW (*.vercel.app) - Use vercel.app domain\n * 3. PRODUCTION - Extract from ALL platform URLs via getPlatformProductionUrl\n *\n * @returns Array of all unique base domains (with and without wildcard)\n */\nexport function getAllPlatformBaseDomains(): string[] {\n if (typeof window === 'undefined') return []\n\n const hostname = window.location.hostname\n\n // Case 1: LOCALHOST DEBUG - no domains needed\n if (hostname === 'localhost' ||\n hostname === '127.0.0.1' ||\n hostname.startsWith('127.')) {\n return []\n }\n\n // Case 2: VERCEL PREVIEW - use vercel.app domain\n const isVercelPreview = process.env.VERCEL_ENV === 'preview' ||\n process.env.NEXT_PUBLIC_VERCEL_ENV === 'preview' ||\n hostname.includes('.vercel.app')\n\n if (isVercelPreview) {\n return ['.vercel.app', 'vercel.app']\n }\n\n // Case 3: PRODUCTION - extract from ALL platforms using getPlatformProductionUrl\n // Platform identifiers MUST match switch cases in getPlatformProductionUrl —\n // otherwise the corresponding domain is omitted from cookie scope.\n const platformIdentifiers = [\n 'marketing-hub', 'company-hub', 'product-hub', 'revenue-hub', 'people-hub',\n 'openmsp', 'flamingo', 'tmcg', 'flamingo-teaser', 'openframe', 'universal'\n ]\n\n const baseDomains = new Set<string>()\n\n platformIdentifiers.forEach(platform => {\n try {\n const url = getPlatformProductionUrl(platform)\n const urlHostname = new URL(url).hostname\n const parts = urlHostname.split('.')\n\n if (parts.length >= 2) {\n const baseDomain = parts.slice(-2).join('.')\n baseDomains.add(`.${baseDomain}`) // Wildcard\n baseDomains.add(baseDomain) // Non-wildcard\n }\n } catch (error) {\n console.warn('[Platform Domains] Failed to parse URL for platform:', platform, error)\n }\n })\n\n return Array.from(baseDomains)\n}\n\n/**\n * Get the application base URL for the current environment\n *\n * @param platform - Optional platform name (openmsp, flamingo, tmcg, openframe, etc.)\n * @returns The base URL with protocol (https:// or http://)\n *\n * Priority order:\n * 1. Environment variable override (NEXT_PUBLIC_*_URL)\n * 2. Platform-specific URL (if platform parameter provided)\n * 3. VERCEL_PROJECT_PRODUCTION_URL (Vercel production domain)\n * 4. Production fallback (current app or openmsp)\n * 5. Development (http://localhost:3000)\n *\n * Environment Variables (optional overrides — only set when production domain\n * differs from the hardcoded default):\n *\n * Hub deployments (NEXT_PUBLIC_<NAME>_HUB_URL):\n * - NEXT_PUBLIC_MARKETING_HUB_URL -> marketing-hub.flamingo.so\n * - NEXT_PUBLIC_COMPANY_HUB_URL -> company-hub.flamingo.so\n * - NEXT_PUBLIC_PRODUCT_HUB_URL -> product-hub.flamingo.so\n * - NEXT_PUBLIC_REVENUE_HUB_URL -> revenue-hub.flamingo.so\n * - NEXT_PUBLIC_PEOPLE_HUB_URL -> people-hub.flamingo.so\n *\n * Standalone platforms (NEXT_PUBLIC_<NAME>_URL):\n * - NEXT_PUBLIC_OPENMSP_URL -> www.openmsp.ai\n * - NEXT_PUBLIC_FLAMINGO_URL -> www.flamingo.run\n * - NEXT_PUBLIC_TMCG_URL -> www.tmcg.miami\n * - NEXT_PUBLIC_FLAMINGO_TEASER_URL -> www.flamingo.cx\n * - NEXT_PUBLIC_OPENFRAME_URL -> openframe.ai\n *\n * @example\n * getBaseUrl() // Current app URL\n * getBaseUrl('flamingo') // https://www.flamingo.run (production) or http://localhost:3000 (dev)\n * getBaseUrl('openmsp') // https://www.openmsp.ai (or NEXT_PUBLIC_OPENMSP_URL if set)\n */\nexport function getBaseUrl(platform?: string): string {\n // In development, always use localhost (regardless of platform)\n if (process.env.NODE_ENV !== 'production') {\n return process.env.NEXT_PUBLIC_DEV_URL || 'http://localhost:3000'\n }\n\n // If platform is specified, return its production URL with env variable override support\n if (platform) {\n return getPlatformProductionUrl(platform)\n }\n\n // Production: Use Vercel domain if available\n if (process.env.VERCEL_PROJECT_PRODUCTION_URL) {\n return `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`\n }\n\n // Production fallback: Use canonical www domain to avoid Google \"Page with redirect\" issue.\n // openmsp.ai redirects to www.openmsp.ai, so we set the base URL to the\n // final destination to ensure canonical URLs do not require a redirect.\n return 'https://www.openmsp.ai'\n}\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkOFAYLG6Dcjs = require('./chunk-OFAYLG6D.cjs');
5
+ var _chunkUC43NICZcjs = require('./chunk-UC43NICZ.cjs');
6
6
 
7
7
 
8
8
  var _chunkWZW7C7TFcjs = require('./chunk-WZW7C7TF.cjs');
@@ -42,7 +42,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
42
42
  "src/components/ui/button/button.tsx"() {
43
43
  "use strict";
44
44
  "use client";
45
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
45
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
46
46
  init_button_styles();
47
47
  buttonVariants = exports.buttonVariants = _classvarianceauthority.cva.call(void 0,
48
48
  [
@@ -57,7 +57,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
57
57
  variants: {
58
58
  variant: {
59
59
  accent: buttonSurfaceClasses.accent,
60
- outline: _chunkOFAYLG6Dcjs.cn.call(void 0, buttonSurfaceClasses.outline, outlineBorderClasses),
60
+ outline: _chunkUC43NICZcjs.cn.call(void 0, buttonSurfaceClasses.outline, outlineBorderClasses),
61
61
  transparent: buttonSurfaceClasses.transparent,
62
62
  destructive: buttonSurfaceClasses.destructive
63
63
  },
@@ -99,7 +99,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
99
99
  variants: {
100
100
  variant: {
101
101
  accent: buttonSurfaceClasses.accent,
102
- outline: _chunkOFAYLG6Dcjs.cn.call(void 0, buttonSurfaceClasses.outline, outlineBorderClasses),
102
+ outline: _chunkUC43NICZcjs.cn.call(void 0, buttonSurfaceClasses.outline, outlineBorderClasses),
103
103
  transparent: buttonSurfaceClasses.transparent,
104
104
  destructive: buttonSurfaceClasses.destructive
105
105
  },
@@ -128,13 +128,13 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
128
128
  { slot: "main", size: "small", class: "px-[var(--spacing-system-xs)]" },
129
129
  { slot: "icon", size: "default", class: "w-10" },
130
130
  { slot: "icon", size: "small", class: "w-6 md:w-8" },
131
- { slot: "icon", variant: "accent", class: _chunkOFAYLG6Dcjs.cn.call(void 0,
131
+ { slot: "icon", variant: "accent", class: _chunkUC43NICZcjs.cn.call(void 0,
132
132
  splitDividerColorClasses.accent,
133
133
  "group-disabled:border-ods-disabled group-aria-disabled:border-ods-disabled"
134
134
  ) },
135
135
  { slot: "icon", variant: "outline", class: splitDividerColorClasses.outline },
136
136
  { slot: "icon", variant: "transparent", class: splitDividerColorClasses.transparent },
137
- { slot: "icon", variant: "destructive", class: _chunkOFAYLG6Dcjs.cn.call(void 0,
137
+ { slot: "icon", variant: "destructive", class: _chunkUC43NICZcjs.cn.call(void 0,
138
138
  splitDividerColorClasses.destructive,
139
139
  "group-disabled:border-ods-disabled group-aria-disabled:border-ods-disabled"
140
140
  ) }
@@ -177,14 +177,14 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
177
177
  if (useSplitLayout) {
178
178
  const safeSize = _nullishCoalesce(size, () => ( "default"));
179
179
  const safeVariant = _nullishCoalesce(variant, () => ( "accent"));
180
- const shellClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
180
+ const shellClasses = _chunkUC43NICZcjs.cn.call(void 0,
181
181
  splitShellVariants({ variant: safeVariant, size: safeSize, fullWidth }),
182
182
  className
183
183
  );
184
184
  const mainSlotClass = splitSlotVariants({ slot: "main", size: safeSize, variant: safeVariant });
185
185
  const iconSlotClass = splitSlotVariants({ slot: "icon", size: safeSize, variant: safeVariant });
186
186
  const splitContent = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
187
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "contents", loading && "invisible"), children: [
187
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkUC43NICZcjs.cn.call(void 0, "contents", loading && "invisible"), children: [
188
188
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: mainSlotClass, children: [
189
189
  leftIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "inline-flex items-center", children: leftIcon }),
190
190
  children,
@@ -204,7 +204,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
204
204
  rel: openInNewTab ? "noopener noreferrer" : void 0,
205
205
  "aria-disabled": isDisabled || void 0,
206
206
  tabIndex: isDisabled ? -1 : void 0,
207
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, shellClasses, isDisabled && "pointer-events-none"),
207
+ className: _chunkUC43NICZcjs.cn.call(void 0, shellClasses, isDisabled && "pointer-events-none"),
208
208
  onClick,
209
209
  children: splitContent
210
210
  }
@@ -222,12 +222,12 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
222
222
  }
223
223
  );
224
224
  }
225
- const classes = _chunkOFAYLG6Dcjs.cn.call(void 0, buttonVariants({ variant, size, fullWidth, noPaddingX }), className);
225
+ const classes = _chunkUC43NICZcjs.cn.call(void 0, buttonVariants({ variant, size, fullWidth, noPaddingX }), className);
226
226
  if (asChild) {
227
227
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactslot.Slot, { ref, className: classes, ...props, children });
228
228
  }
229
229
  const content = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
230
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "contents", loading && "invisible"), children: [
230
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkUC43NICZcjs.cn.call(void 0, "contents", loading && "invisible"), children: [
231
231
  leftIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "inline-flex items-center", children: leftIcon }),
232
232
  children,
233
233
  rightIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "inline-flex items-center", children: rightIcon })
@@ -244,7 +244,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
244
244
  rel: openInNewTab ? "noopener noreferrer" : void 0,
245
245
  "aria-disabled": isDisabled || void 0,
246
246
  tabIndex: isDisabled ? -1 : void 0,
247
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, classes, isDisabled && "pointer-events-none"),
247
+ className: _chunkUC43NICZcjs.cn.call(void 0, classes, isDisabled && "pointer-events-none"),
248
248
  onClick,
249
249
  children: content
250
250
  }
@@ -283,7 +283,7 @@ function Half({ variant, size, side, href, openInNewTab, prefetch, onClick, disa
283
283
  "aria-disabled": disabled || void 0,
284
284
  tabIndex: disabled ? -1 : void 0,
285
285
  "aria-label": ariaLabel,
286
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, classes, disabled && "pointer-events-none"),
286
+ className: _chunkUC43NICZcjs.cn.call(void 0, classes, disabled && "pointer-events-none"),
287
287
  onClick,
288
288
  children
289
289
  }
@@ -306,7 +306,7 @@ var init_split_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
306
306
  "src/components/ui/button/split-button.tsx"() {
307
307
  "use strict";
308
308
  "use client";
309
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
309
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
310
310
  init_button_styles();
311
311
  splitHalfBase = [
312
312
  "relative inline-flex items-center justify-center gap-[var(--spacing-system-xsf)]",
@@ -333,13 +333,13 @@ var init_split_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
333
333
  compoundVariants: [
334
334
  // Rounded corners + per-variant seam. The icon-side's left border is the divider.
335
335
  { variant: "accent", side: "main", class: "rounded-l-md" },
336
- { variant: "accent", side: "icon", class: _chunkOFAYLG6Dcjs.cn.call(void 0,
336
+ { variant: "accent", side: "icon", class: _chunkUC43NICZcjs.cn.call(void 0,
337
337
  "rounded-r-md border-l",
338
338
  splitDividerColorClasses.accent,
339
339
  "disabled:border-ods-disabled aria-disabled:border-ods-disabled"
340
340
  ) },
341
341
  { variant: "destructive", side: "main", class: "rounded-l-md" },
342
- { variant: "destructive", side: "icon", class: _chunkOFAYLG6Dcjs.cn.call(void 0,
342
+ { variant: "destructive", side: "icon", class: _chunkUC43NICZcjs.cn.call(void 0,
343
343
  "rounded-r-md border-l",
344
344
  splitDividerColorClasses.destructive,
345
345
  "disabled:border-ods-disabled aria-disabled:border-ods-disabled"
@@ -347,7 +347,7 @@ var init_split_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
347
347
  { variant: "outline", side: "main", class: "rounded-l-md border-y border-l border-ods-border" },
348
348
  { variant: "outline", side: "icon", class: "rounded-r-md border border-ods-border" },
349
349
  { variant: "transparent", side: "main", class: "rounded-md" },
350
- { variant: "transparent", side: "icon", class: _chunkOFAYLG6Dcjs.cn.call(void 0, "rounded-md", splitDividerColorClasses.transparent) },
350
+ { variant: "transparent", side: "icon", class: _chunkUC43NICZcjs.cn.call(void 0, "rounded-md", splitDividerColorClasses.transparent) },
351
351
  // Icon half: per Figma, narrower than main height (default: 40×48; small: 32×32).
352
352
  { side: "icon", size: "default", class: "w-10 px-0" },
353
353
  { side: "icon", size: "small", class: "w-6 md:w-8 px-0" },
@@ -380,7 +380,7 @@ var init_split_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
380
380
  ref,
381
381
  role: "group",
382
382
  "aria-label": groupAriaLabel,
383
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, "inline-flex items-stretch", fullWidth && "w-full", className),
383
+ className: _chunkUC43NICZcjs.cn.call(void 0, "inline-flex items-stretch", fullWidth && "w-full", className),
384
384
  children: [
385
385
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
386
386
  Half,
@@ -434,7 +434,7 @@ var init_button2 = _chunkVRHGVLSLcjs.__esm.call(void 0, {
434
434
  });
435
435
 
436
436
  // src/components/ui/field-wrapper.tsx
437
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
437
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
438
438
 
439
439
 
440
440
  var errorVariantClasses = {
@@ -444,17 +444,17 @@ var errorVariantClasses = {
444
444
  var FieldWrapper = React.forwardRef(
445
445
  ({ label, error, errorVariant = "error", className, children }, ref) => {
446
446
  const hasChrome = label != null || error != null;
447
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, hasChrome ? "relative flex w-full flex-col" : "contents", className), children: [
447
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunkUC43NICZcjs.cn.call(void 0, hasChrome ? "relative flex w-full flex-col" : "contents", className), children: [
448
448
  label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { className: "text-h4 text-ods-text-primary mb-1", children: label }),
449
449
  children,
450
- error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), children: error })
450
+ error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkUC43NICZcjs.cn.call(void 0, "absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), children: error })
451
451
  ] });
452
452
  }
453
453
  );
454
454
  FieldWrapper.displayName = "FieldWrapper";
455
455
 
456
456
  // src/components/ui/input.tsx
457
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
457
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
458
458
 
459
459
  var _lucidereact = require('lucide-react');
460
460
 
@@ -470,7 +470,7 @@ var Input = React2.forwardRef(
470
470
  "input",
471
471
  {
472
472
  type: "range",
473
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
473
+ className: _chunkUC43NICZcjs.cn.call(void 0,
474
474
  "w-full cursor-pointer appearance-none rounded-full bg-white/30 h-1",
475
475
  // Webkit (Chrome/Safari) thumb
476
476
  "[&::-webkit-slider-thumb]:appearance-none",
@@ -497,7 +497,7 @@ var Input = React2.forwardRef(
497
497
  "label",
498
498
  {
499
499
  "data-invalid": isInvalid || void 0,
500
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
500
+ className: _chunkUC43NICZcjs.cn.call(void 0,
501
501
  // Layout & spacing
502
502
  "flex w-full items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
503
503
  // Focus-within states
@@ -521,7 +521,7 @@ var Input = React2.forwardRef(
521
521
  "input",
522
522
  {
523
523
  type,
524
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
524
+ className: _chunkUC43NICZcjs.cn.call(void 0,
525
525
  // Layout
526
526
  "flex-1 min-w-0 bg-transparent border-none outline-none",
527
527
  // Typography
@@ -552,7 +552,7 @@ var Input = React2.forwardRef(
552
552
  Input.displayName = "Input";
553
553
 
554
554
  // src/components/ui/checkbox.tsx
555
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
555
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
556
556
 
557
557
  var _reactcheckbox = require('@radix-ui/react-checkbox'); var CheckboxPrimitive = _interopRequireWildcard(_reactcheckbox);
558
558
 
@@ -560,7 +560,7 @@ var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__
560
560
  CheckboxPrimitive.Root,
561
561
  {
562
562
  ref,
563
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
563
+ className: _chunkUC43NICZcjs.cn.call(void 0,
564
564
  "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",
565
565
  className
566
566
  ),
@@ -568,7 +568,7 @@ var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__
568
568
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
569
569
  CheckboxPrimitive.Indicator,
570
570
  {
571
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex items-center justify-center text-ods-text-on-accent"),
571
+ className: _chunkUC43NICZcjs.cn.call(void 0, "flex items-center justify-center text-ods-text-on-accent"),
572
572
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.CheckboxCheckmarkIcon, { size: 10 })
573
573
  }
574
574
  )
@@ -577,7 +577,7 @@ var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__
577
577
  Checkbox.displayName = CheckboxPrimitive.Root.displayName;
578
578
 
579
579
  // src/components/ui/skeleton.tsx
580
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
580
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
581
581
 
582
582
 
583
583
  var Skeleton = React6.forwardRef(
@@ -586,7 +586,7 @@ var Skeleton = React6.forwardRef(
586
586
  "div",
587
587
  {
588
588
  ref,
589
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
589
+ className: _chunkUC43NICZcjs.cn.call(void 0,
590
590
  "animate-pulse rounded-md bg-ods-border",
591
591
  className
592
592
  ),
@@ -598,10 +598,10 @@ var Skeleton = React6.forwardRef(
598
598
  Skeleton.displayName = "Skeleton";
599
599
  var SkeletonText = React6.forwardRef(
600
600
  ({ lines = 1, className, ...props }, ref) => {
601
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
601
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkUC43NICZcjs.cn.call(void 0, "space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
602
602
  Skeleton,
603
603
  {
604
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
604
+ className: _chunkUC43NICZcjs.cn.call(void 0,
605
605
  "h-4",
606
606
  i === lines - 1 && lines > 1 && "w-3/4"
607
607
  // Last line shorter for multi-line
@@ -618,7 +618,7 @@ var SkeletonCard = React6.forwardRef(
618
618
  "div",
619
619
  {
620
620
  ref,
621
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
621
+ className: _chunkUC43NICZcjs.cn.call(void 0,
622
622
  "rounded-lg border border-ods-border overflow-hidden",
623
623
  className
624
624
  ),
@@ -641,7 +641,7 @@ var SkeletonGrid = React6.forwardRef(
641
641
  "div",
642
642
  {
643
643
  ref,
644
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
644
+ className: _chunkUC43NICZcjs.cn.call(void 0,
645
645
  `grid grid-cols-1 gap-6`,
646
646
  columns === 2 && "md:grid-cols-2",
647
647
  columns === 3 && "md:grid-cols-3",
@@ -666,7 +666,7 @@ var SkeletonButton = React6.forwardRef(
666
666
  Skeleton,
667
667
  {
668
668
  ref,
669
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
669
+ className: _chunkUC43NICZcjs.cn.call(void 0,
670
670
  "rounded-lg",
671
671
  sizeClasses[size],
672
672
  className
@@ -691,7 +691,7 @@ var SkeletonHeading = React6.forwardRef(
691
691
  Skeleton,
692
692
  {
693
693
  ref,
694
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
694
+ className: _chunkUC43NICZcjs.cn.call(void 0,
695
695
  heightClasses[level],
696
696
  "w-3/4",
697
697
  className
@@ -704,7 +704,7 @@ var SkeletonHeading = React6.forwardRef(
704
704
  SkeletonHeading.displayName = "SkeletonHeading";
705
705
  var SkeletonList = React6.forwardRef(
706
706
  ({ items = 5, className, ...props }, ref) => {
707
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
707
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkUC43NICZcjs.cn.call(void 0, "space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
708
708
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-10 w-10 rounded-full flex-shrink-0" }),
709
709
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
710
710
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-4 w-1/3 mb-1" }),
@@ -716,13 +716,13 @@ var SkeletonList = React6.forwardRef(
716
716
  SkeletonList.displayName = "SkeletonList";
717
717
  var SkeletonNavigation = React6.forwardRef(
718
718
  ({ items = 6, className, ...props }, ref) => {
719
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-5 w-20" }, i)) });
719
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkUC43NICZcjs.cn.call(void 0, "flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-5 w-20" }, i)) });
720
720
  }
721
721
  );
722
722
  SkeletonNavigation.displayName = "SkeletonNavigation";
723
723
 
724
724
  // src/components/ui/dropdown-menu.tsx
725
- _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
725
+ _chunkUC43NICZcjs.init_cn.call(void 0, );
726
726
 
727
727
  var _reactdropdownmenu = require('@radix-ui/react-dropdown-menu'); var DropdownMenuPrimitive = _interopRequireWildcard(_reactdropdownmenu);
728
728
 
@@ -737,7 +737,7 @@ var DropdownMenuSubTrigger = React7.forwardRef(({ className, inset, children, ..
737
737
  DropdownMenuPrimitive.SubTrigger,
738
738
  {
739
739
  ref,
740
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
740
+ className: _chunkUC43NICZcjs.cn.call(void 0,
741
741
  "flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm 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",
742
742
  inset && "pl-8",
743
743
  className
@@ -754,7 +754,7 @@ var DropdownMenuSubContent = React7.forwardRef(({ className, ...props }, ref) =>
754
754
  DropdownMenuPrimitive.SubContent,
755
755
  {
756
756
  ref,
757
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
757
+ className: _chunkUC43NICZcjs.cn.call(void 0,
758
758
  "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",
759
759
  className
760
760
  ),
@@ -767,7 +767,7 @@ var DropdownMenuContent = React7.forwardRef(({ className, sideOffset = 4, ...pro
767
767
  {
768
768
  ref,
769
769
  sideOffset,
770
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
770
+ className: _chunkUC43NICZcjs.cn.call(void 0,
771
771
  "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",
772
772
  className
773
773
  ),
@@ -779,7 +779,7 @@ var DropdownMenuItem = React7.forwardRef(({ className, inset, ...props }, ref) =
779
779
  DropdownMenuPrimitive.Item,
780
780
  {
781
781
  ref,
782
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
782
+ className: _chunkUC43NICZcjs.cn.call(void 0,
783
783
  "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-base 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",
784
784
  inset && "pl-8",
785
785
  className
@@ -792,7 +792,7 @@ var DropdownMenuCheckboxItem = React7.forwardRef(({ className, children, checked
792
792
  DropdownMenuPrimitive.CheckboxItem,
793
793
  {
794
794
  ref,
795
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
795
+ className: _chunkUC43NICZcjs.cn.call(void 0,
796
796
  "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm 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",
797
797
  className
798
798
  ),
@@ -809,7 +809,7 @@ var DropdownMenuRadioItem = React7.forwardRef(({ className, children, ...props }
809
809
  DropdownMenuPrimitive.RadioItem,
810
810
  {
811
811
  ref,
812
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
812
+ className: _chunkUC43NICZcjs.cn.call(void 0,
813
813
  "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm 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",
814
814
  className
815
815
  ),
@@ -825,7 +825,7 @@ var DropdownMenuLabel = React7.forwardRef(({ className, inset, ...props }, ref)
825
825
  DropdownMenuPrimitive.Label,
826
826
  {
827
827
  ref,
828
- className: _chunkOFAYLG6Dcjs.cn.call(void 0,
828
+ className: _chunkUC43NICZcjs.cn.call(void 0,
829
829
  "px-2 py-1.5 text-sm font-semibold text-ods-text-secondary",
830
830
  inset && "pl-8",
831
831
  className
@@ -838,7 +838,7 @@ var DropdownMenuSeparator = React7.forwardRef(({ className, ...props }, ref) =>
838
838
  DropdownMenuPrimitive.Separator,
839
839
  {
840
840
  ref,
841
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, "-mx-1 my-1 h-px bg-ods-border", className),
841
+ className: _chunkUC43NICZcjs.cn.call(void 0, "-mx-1 my-1 h-px bg-ods-border", className),
842
842
  ...props
843
843
  }
844
844
  ));
@@ -850,7 +850,7 @@ var DropdownMenuShortcut = ({
850
850
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
851
851
  "span",
852
852
  {
853
- className: _chunkOFAYLG6Dcjs.cn.call(void 0, "ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60", className),
853
+ className: _chunkUC43NICZcjs.cn.call(void 0, "ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60", className),
854
854
  ...props
855
855
  }
856
856
  );
@@ -890,4 +890,4 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
890
890
 
891
891
 
892
892
  exports.FieldWrapper = FieldWrapper; exports.Input = Input; exports.buttonVariants = buttonVariants; exports.Button = Button; exports.init_button = init_button; exports.SplitButton = SplitButton; exports.init_button2 = init_button2; exports.Checkbox = Checkbox; exports.Skeleton = Skeleton; exports.SkeletonText = SkeletonText; exports.SkeletonCard = SkeletonCard; exports.SkeletonGrid = SkeletonGrid; exports.SkeletonButton = SkeletonButton; exports.SkeletonHeading = SkeletonHeading; exports.SkeletonList = SkeletonList; exports.SkeletonNavigation = SkeletonNavigation; exports.DropdownMenu = DropdownMenu; exports.DropdownMenuTrigger = DropdownMenuTrigger; exports.DropdownMenuGroup = DropdownMenuGroup; exports.DropdownMenuPortal = DropdownMenuPortal; exports.DropdownMenuSub = DropdownMenuSub; exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup; exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger; exports.DropdownMenuSubContent = DropdownMenuSubContent; exports.DropdownMenuContent = DropdownMenuContent; exports.DropdownMenuItem = DropdownMenuItem; exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem; exports.DropdownMenuRadioItem = DropdownMenuRadioItem; exports.DropdownMenuLabel = DropdownMenuLabel; exports.DropdownMenuSeparator = DropdownMenuSeparator; exports.DropdownMenuShortcut = DropdownMenuShortcut;
893
- //# sourceMappingURL=chunk-BJTOSUT4.cjs.map
893
+ //# sourceMappingURL=chunk-V2FNIPZJ.cjs.map