@flamingo-stack/openframe-frontend-core 0.0.258 → 0.0.260
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-ZJP2BB3E.cjs → chunk-D4ESVTUT.cjs} +29 -29
- package/dist/chunk-D4ESVTUT.cjs.map +1 -0
- package/dist/{chunk-J3QMPOS6.js → chunk-LQKMMVCC.js} +29 -29
- package/dist/chunk-LQKMMVCC.js.map +1 -0
- package/dist/components/faq/faq-section.d.ts +16 -4
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +2 -2
- package/dist/components/faq/index.js +1 -1
- package/dist/components/faq-accordion.d.ts +4 -0
- package/dist/components/faq-accordion.d.ts.map +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.js +1 -1
- package/package.json +1 -1
- package/src/components/faq/faq-section.tsx +56 -45
- package/src/components/faq-accordion.tsx +14 -3
- package/dist/chunk-J3QMPOS6.js.map +0 -1
- package/dist/chunk-ZJP2BB3E.cjs.map +0 -1
|
@@ -70,7 +70,10 @@ function FaqAccordion({ items, defaultOpenIds = [] }) {
|
|
|
70
70
|
"aria-expanded": isOpen,
|
|
71
71
|
className: "flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer",
|
|
72
72
|
children: [
|
|
73
|
-
/* @__PURE__ */ _jsxruntime.
|
|
73
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-2 pr-4", children: [
|
|
74
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { children: item.question }),
|
|
75
|
+
item.badge && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "w-fit shrink-0 px-2 py-1 rounded text-xs font-medium font-['DM_Sans'] bg-ods-border text-ods-text-secondary", children: item.badge })
|
|
76
|
+
] }),
|
|
74
77
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
75
78
|
_chunk7VMEOFEAcjs.ChevronButton,
|
|
76
79
|
{
|
|
@@ -131,20 +134,12 @@ var DEFAULT_HEADING_TEXT = "Frequently Asked Questions";
|
|
|
131
134
|
function buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl = "") {
|
|
132
135
|
return _chunk7VMEOFEAcjs.buildSuggestionUrl.call(void 0, "/api/faqs", { apiBaseUrl, entityType, entityId, count: minResults });
|
|
133
136
|
}
|
|
134
|
-
function
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
arr = [];
|
|
141
|
-
map.set(key, arr);
|
|
142
|
-
}
|
|
143
|
-
arr.push({ id: faq.id, question: faq.question, answer: faq.answer });
|
|
144
|
-
}
|
|
145
|
-
return Array.from(map.entries()).map(([section, items]) => ({
|
|
146
|
-
section: section || null,
|
|
147
|
-
items
|
|
137
|
+
function toAccordionItems(faqs) {
|
|
138
|
+
return faqs.map((faq) => ({
|
|
139
|
+
id: faq.id,
|
|
140
|
+
question: faq.question,
|
|
141
|
+
answer: faq.answer,
|
|
142
|
+
badge: faq.section || void 0
|
|
148
143
|
}));
|
|
149
144
|
}
|
|
150
145
|
function FaqSkeleton() {
|
|
@@ -161,6 +156,7 @@ function FaqSection({
|
|
|
161
156
|
entityType,
|
|
162
157
|
entityId,
|
|
163
158
|
heading,
|
|
159
|
+
variant,
|
|
164
160
|
emitJsonLd = false,
|
|
165
161
|
jsonLd,
|
|
166
162
|
className,
|
|
@@ -174,17 +170,21 @@ function FaqSection({
|
|
|
174
170
|
);
|
|
175
171
|
const { data, isLoading, error } = _chunkT7AJBKZPcjs.useSelfFetch.call(void 0, url, { initialData });
|
|
176
172
|
const faqs = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _2 => _2.faqs]), () => ( []));
|
|
177
|
-
const
|
|
178
|
-
const headingNode = heading === void 0 ?
|
|
179
|
-
|
|
180
|
-
|
|
173
|
+
const isEmbedded = variant ? variant === "embedded" : heading === null;
|
|
174
|
+
const headingNode = heading === void 0 ? isEmbedded ? (
|
|
175
|
+
// Embedded default is an <h2> — a host page already owns the <h1>,
|
|
176
|
+
// and the schema/heading pair must read "Frequently Asked Questions"
|
|
177
|
+
// (one FAQ heading per page, never tag/section names).
|
|
178
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT })
|
|
179
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
|
|
180
|
+
if (error && isEmbedded) {
|
|
181
181
|
return null;
|
|
182
182
|
}
|
|
183
|
-
if (!isLoading && !error && faqs.length === 0 &&
|
|
183
|
+
if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
|
|
184
184
|
return null;
|
|
185
185
|
}
|
|
186
186
|
if (isLoading && faqs.length === 0) {
|
|
187
|
-
if (
|
|
187
|
+
if (isEmbedded) {
|
|
188
188
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqSkeleton, {}) });
|
|
189
189
|
}
|
|
190
190
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "main", { className: _nullishCoalesce(className, () => ( "bg-ods-bg")), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqSkeleton, {}) }) });
|
|
@@ -193,14 +193,14 @@ function FaqSection({
|
|
|
193
193
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "main", { className: _nullishCoalesce(className, () => ( "bg-ods-bg flex items-center justify-center py-20")), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary font-medium", children: "Failed to load FAQs. Please try again later." }) });
|
|
194
194
|
}
|
|
195
195
|
const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null;
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
196
|
+
const accordion = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqAccordion, { items: toAccordionItems(faqs) });
|
|
197
|
+
const body = isEmbedded ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "section", { className: _nullishCoalesce(className, () => ( "space-y-10")), children: [
|
|
198
|
+
headingNode,
|
|
199
|
+
accordion
|
|
200
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "main", { className: _nullishCoalesce(className, () => ( "bg-ods-bg")), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10", children: [
|
|
201
201
|
headingNode,
|
|
202
|
-
|
|
203
|
-
] }) })
|
|
202
|
+
accordion
|
|
203
|
+
] }) });
|
|
204
204
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
205
205
|
body,
|
|
206
206
|
schema && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -217,4 +217,4 @@ function FaqSection({
|
|
|
217
217
|
|
|
218
218
|
|
|
219
219
|
exports.FaqAccordion = FaqAccordion; exports.FaqSection = FaqSection;
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
220
|
+
//# sourceMappingURL=chunk-D4ESVTUT.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-D4ESVTUT.cjs","../src/components/faq/faq-section.tsx","../src/components/faq-accordion.tsx","../src/components/faq/json-ld.ts"],"names":["jsx"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-D4ESVTUT.cjs","sourcesContent":[null,"\"use client\"\n\nimport React, { useMemo } from 'react'\nimport type { Faq } from '../../types/faq'\nimport { FaqAccordion, type FaqItem } from '../faq-accordion'\nimport { useSelfFetch } from '../../hooks/use-self-fetch'\nimport { buildSuggestionUrl } from '../../utils/suggestion-url'\nimport { serializeJsonLd } from '../../utils/common'\nimport { buildFaqJsonLdFromFaqs, type FaqSchemaOptions } from './json-ld'\n\nexport interface FaqSectionProps {\n /**\n * SSR hydrate. When provided, the hook skips the first client fetch (per\n * useSelfFetch contract). The consuming server page resolves FAQs then drills\n * them into this prop — the lib never re-fetches what the host already gated on.\n */\n initialFaqs?: Faq[]\n /** Both required together for entity-attached FAQs; partial → bare /api/faqs. */\n entityType?: string\n entityId?: number | string\n /**\n * Heading node. `undefined` → variant default (page: <h1>, embedded: <h2>\n * \"Frequently Asked Questions\"); `null` → no heading. React node so\n * platforms can drill their local <PageHeading> component without the lib\n * referencing platform state.\n */\n heading?: React.ReactNode | null\n /**\n * Shell variant — the FAQ LIST itself renders identically everywhere (ONE\n * flat accordion, `faq.section` as a per-row chip, never a heading):\n * - 'page' — the standalone /faqs surface: <main> shell + page gutters,\n * default <h1> heading.\n * - 'embedded' — a section inside a host page (entity detail rails, the\n * global nested-page block): bare <section>, default <h2> heading.\n * Back-compat default: `heading === null` → 'embedded', else 'page' (the\n * pre-variant discriminator).\n */\n variant?: 'page' | 'embedded'\n /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds\n * don't emit duplicate schema. */\n emitJsonLd?: boolean\n /** Overrides for the JSON-LD's name/description/url. */\n jsonLd?: FaqSchemaOptions\n className?: string\n /** Maps to /api/faqs `?count=` (the 5-tier fill target). Absent → param\n * not sent (server default applies). */\n minResults?: number\n /** Fetch-URL prefix for third-party embeds / reverse proxies\n * ('' = same-origin relative). */\n apiBaseUrl?: string\n}\n\nconst DEFAULT_HEADING_TEXT = 'Frequently Asked Questions'\n\n/** URL composition shared with RelatedContentSection (`buildSuggestionUrl`)\n * — byte-identical to the historical `buildFaqsUrl` output when\n * `minResults`/`apiBaseUrl` are absent. */\nfunction buildFaqsUrl(\n entityType?: string,\n entityId?: number | string,\n minResults?: number,\n apiBaseUrl = '',\n): string {\n return buildSuggestionUrl('/api/faqs', { apiBaseUrl, entityType, entityId, count: minResults })\n}\n\n/** ONE list shape for every surface — standalone /faqs and embeds render the\n * IDENTICAL flat accordion (`faq.section` = per-row chip, never a heading),\n * so the two can't drift visually. */\nfunction toAccordionItems(faqs: Faq[]): FaqItem[] {\n return faqs.map((faq) => ({\n id: faq.id,\n question: faq.question,\n answer: faq.answer,\n badge: faq.section || undefined,\n }))\n}\n\nfunction FaqSkeleton() {\n return (\n <div className=\"space-y-8 animate-pulse\">\n <div className=\"h-12 md:h-14 w-2/3 rounded bg-ods-border\" />\n <div className=\"rounded-3xl border border-ods-border overflow-hidden bg-ods-card divide-y divide-ods-border w-full\">\n {Array.from({ length: 8 }).map((_, idx) => (\n <div key={idx} className=\"flex items-center justify-between px-6 md:px-8 py-6\">\n <div className=\"h-6 w-5/6 rounded bg-ods-border\" />\n <div className=\"h-10 w-10 rounded-md bg-ods-border\" />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface FaqsResponse {\n faqs: Faq[]\n}\n\n/**\n * Generic, embeddable FAQ display surface.\n *\n * - Standalone /faqs page: pass `initialFaqs` from the server + `heading` +\n * `emitJsonLd` with `jsonLd` overrides for SEO.\n * - Per-entity embed: pass `entityType` + `entityId` (no `initialFaqs`); the\n * hook self-fetches and the public /api/faqs endpoint picks override-vs-fallback.\n *\n * CONTRACT: the consuming app MUST implement `GET /api/faqs`. Without it,\n * useSelfFetch reports `error:true` (logged once); in embedded mode (heading\n * === null) this component renders nothing so the host page isn't disfigured.\n */\nexport function FaqSection({\n initialFaqs,\n entityType,\n entityId,\n heading,\n variant,\n emitJsonLd = false,\n jsonLd,\n className,\n minResults,\n apiBaseUrl = '',\n}: FaqSectionProps) {\n const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl)\n // Memoized — useSelfFetch re-syncs on [initialData]; a fresh per-render\n // wrapper object would setState-loop under re-rendering parents.\n const initialData = useMemo<FaqsResponse | undefined>(\n () => (initialFaqs ? { faqs: initialFaqs } : undefined),\n [initialFaqs],\n )\n const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })\n\n const faqs = data?.faqs ?? []\n const isEmbedded = variant ? variant === 'embedded' : heading === null\n const headingNode =\n heading === undefined ? (\n isEmbedded ? (\n // Embedded default is an <h2> — a host page already owns the <h1>,\n // and the schema/heading pair must read \"Frequently Asked Questions\"\n // (one FAQ heading per page, never tag/section names).\n <h2 className=\"text-h2 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h2>\n ) : (\n <h1 className=\"text-h1 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h1>\n )\n ) : (\n heading\n )\n\n // Embedded mode: degrade silently on error.\n if (error && isEmbedded) {\n return null\n }\n\n // Embedded mode, zero FAQs after load: render nothing — an embedded host\n // page (blog/case-study detail) must not show an empty section shell.\n // The standalone /faqs page keeps its existing behavior.\n if (!isLoading && !error && faqs.length === 0 && isEmbedded) {\n return null\n }\n\n if (isLoading && faqs.length === 0) {\n // Embedded mode renders skeletons WITHOUT the standalone page shell —\n // a host detail page already provides <main> + gutters; nesting them\n // here would emit invalid markup and double padding.\n if (isEmbedded) {\n return (\n <div className={className}>\n <FaqSkeleton />\n </div>\n )\n }\n return (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto\">\n <FaqSkeleton />\n </div>\n </main>\n )\n }\n\n if (error && faqs.length === 0) {\n return (\n <main className={className ?? 'bg-ods-bg flex items-center justify-center py-20'}>\n <p className=\"text-ods-text-primary font-medium\">Failed to load FAQs. Please try again later.</p>\n </main>\n )\n }\n\n const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null\n\n // ONE flat accordion on EVERY surface — `faq.section` becomes a per-row\n // chip, NOT a heading, so the page outline stays heading + h3(questions).\n // Order is the server's (post-specific first, then reused) — grouping by\n // section here would destroy it. The variants differ ONLY in shell:\n // standalone /faqs keeps its <main> + page gutters, embeds render bare.\n const accordion = <FaqAccordion items={toAccordionItems(faqs)} />\n const body = isEmbedded ? (\n <section className={className ?? 'space-y-10'}>\n {headingNode}\n {accordion}\n </section>\n ) : (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10\">\n {headingNode}\n {accordion}\n </div>\n </main>\n )\n\n return (\n <>\n {body}\n {schema && (\n <script\n type=\"application/ld+json\"\n // eslint-disable-next-line react/no-danger\n // serializeJsonLd, NOT raw JSON.stringify — FAQ answers are\n // admin-entered; an embedded \"</script>\" must not break the tag.\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(schema) }}\n />\n )}\n </>\n )\n}\n","\"use client\"\n\nimport React, { useRef, useState, useEffect, useCallback } from 'react'\nimport { ChevronButton } from './ui/chevron-button'\nimport { cn } from \"../utils/cn\"\n\nexport interface FaqItem {\n id: number | string\n question: string\n answer: string\n /** Optional category label rendered as a neutral chip under the question\n * (NOT a heading — keeps the document outline to h2/h3 only). Mirrors the\n * hub's FaqSectionBadge recipe so admin + public chips stay identical. */\n badge?: string\n}\n\ninterface FaqAccordionProps {\n items: FaqItem[]\n defaultOpenIds?: (number | string)[]\n}\n\n// Utility to measure scrollHeight outside render cycle\nconst useMeasuredHeight = (isOpen: boolean) => {\n const ref = useRef<HTMLDivElement | null>(null)\n const [maxHeight, setMaxHeight] = useState<string>('0px')\n\n const measure = useCallback(() => {\n if (ref.current) {\n const height = ref.current.scrollHeight\n setMaxHeight(`${height}px`)\n }\n }, [])\n\n // Update height only when section is open\n useEffect(() => {\n if (isOpen) {\n measure()\n } else {\n setMaxHeight('0px')\n }\n }, [isOpen, measure])\n\n return { ref, maxHeight }\n}\n\nexport function FaqAccordion({ items, defaultOpenIds = [] }: FaqAccordionProps) {\n const [openSet, setOpenSet] = useState<Set<string | number>>(new Set(defaultOpenIds))\n\n const toggle = (id: string | number) => {\n setOpenSet(prev => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n return (\n <div className=\"rounded-3xl border border-ods-border divide-y divide-ods-border bg-ods-card overflow-hidden\">\n {items.map(item => {\n const isOpen = openSet.has(item.id)\n const { ref, maxHeight } = useMeasuredHeight(isOpen)\n\n return (\n <div\n key={item.id}\n className={cn('group transition-colors hover:bg-[#1E1E1E]', isOpen ? 'bg-ods-bg' : 'bg-transparent')}\n >\n {/* Header */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => toggle(item.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggle(item.id);\n }\n }}\n aria-expanded={isOpen}\n className=\"flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer\"\n >\n <div className=\"flex min-w-0 flex-col gap-2 pr-4\">\n <h3>\n {item.question}\n </h3>\n {item.badge && (\n <span className=\"w-fit shrink-0 px-2 py-1 rounded text-xs font-medium font-['DM_Sans'] bg-ods-border text-ods-text-secondary\">\n {item.badge}\n </span>\n )}\n </div>\n <div className=\"flex-shrink-0\">\n <ChevronButton\n aria-label={isOpen ? 'Collapse question' : 'Expand question'}\n size=\"md\"\n isExpanded={isOpen}\n backgroundColor=\"transparent\"\n borderColor=\"#3A3A3A\"\n />\n </div>\n </div>\n {/* Content wrapper with max-height animation */}\n <div\n style={{ maxHeight, transition: 'max-height 0.35s ease-in-out, opacity 0.35s ease-in-out', opacity: isOpen ? 1 : 0 }}\n className=\"overflow-hidden group-hover:bg-[#1E1E1E]/30\"\n >\n <div ref={ref} className=\"px-6 md:px-8 pb-6 text-ods-text-primary text-h4\">\n {item.answer}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n} ","/**\n * Pure FAQ JSON-LD builder. No React, no client-only deps — safe to import from\n * Server Components via the `./components/faq` subpath export. (Do NOT import\n * through the root `./components` barrel — that barrel is `\"use client\"` and\n * dragging it into a Server Component would force the client graph into the\n * server.)\n *\n * The hub used to harcode `name`/`description` here for OpenMSP; in the lib we\n * accept overrides so every embedder can supply its own platform branding.\n */\nimport type { Faq } from '../../types/faq'\n\nexport interface FaqSchemaOptions {\n name?: string\n description?: string\n url?: string\n}\n\nconst DEFAULT_NAME = 'Frequently Asked Questions'\nconst DEFAULT_DESCRIPTION =\n 'Answers to common questions.'\n\nexport function baseFaqSchema(opts: FaqSchemaOptions = {}) {\n return {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n name: opts.name ?? DEFAULT_NAME,\n description: opts.description ?? DEFAULT_DESCRIPTION,\n ...(opts.url ? { url: opts.url } : {}),\n } as const\n}\n\nexport function buildFaqJsonLdFromFaqs(faqs: Faq[], opts: FaqSchemaOptions = {}) {\n return {\n ...baseFaqSchema(opts),\n mainEntity: faqs.map((faq) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n } as const\n}\n"]}
|
|
@@ -70,7 +70,10 @@ function FaqAccordion({ items, defaultOpenIds = [] }) {
|
|
|
70
70
|
"aria-expanded": isOpen,
|
|
71
71
|
className: "flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer",
|
|
72
72
|
children: [
|
|
73
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-2 pr-4", children: [
|
|
74
|
+
/* @__PURE__ */ jsx("h3", { children: item.question }),
|
|
75
|
+
item.badge && /* @__PURE__ */ jsx("span", { className: "w-fit shrink-0 px-2 py-1 rounded text-xs font-medium font-['DM_Sans'] bg-ods-border text-ods-text-secondary", children: item.badge })
|
|
76
|
+
] }),
|
|
74
77
|
/* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx(
|
|
75
78
|
ChevronButton,
|
|
76
79
|
{
|
|
@@ -131,20 +134,12 @@ var DEFAULT_HEADING_TEXT = "Frequently Asked Questions";
|
|
|
131
134
|
function buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl = "") {
|
|
132
135
|
return buildSuggestionUrl("/api/faqs", { apiBaseUrl, entityType, entityId, count: minResults });
|
|
133
136
|
}
|
|
134
|
-
function
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
arr = [];
|
|
141
|
-
map.set(key, arr);
|
|
142
|
-
}
|
|
143
|
-
arr.push({ id: faq.id, question: faq.question, answer: faq.answer });
|
|
144
|
-
}
|
|
145
|
-
return Array.from(map.entries()).map(([section, items]) => ({
|
|
146
|
-
section: section || null,
|
|
147
|
-
items
|
|
137
|
+
function toAccordionItems(faqs) {
|
|
138
|
+
return faqs.map((faq) => ({
|
|
139
|
+
id: faq.id,
|
|
140
|
+
question: faq.question,
|
|
141
|
+
answer: faq.answer,
|
|
142
|
+
badge: faq.section || void 0
|
|
148
143
|
}));
|
|
149
144
|
}
|
|
150
145
|
function FaqSkeleton() {
|
|
@@ -161,6 +156,7 @@ function FaqSection({
|
|
|
161
156
|
entityType,
|
|
162
157
|
entityId,
|
|
163
158
|
heading,
|
|
159
|
+
variant,
|
|
164
160
|
emitJsonLd = false,
|
|
165
161
|
jsonLd,
|
|
166
162
|
className,
|
|
@@ -174,17 +170,21 @@ function FaqSection({
|
|
|
174
170
|
);
|
|
175
171
|
const { data, isLoading, error } = useSelfFetch(url, { initialData });
|
|
176
172
|
const faqs = data?.faqs ?? [];
|
|
177
|
-
const
|
|
178
|
-
const headingNode = heading === void 0 ?
|
|
179
|
-
|
|
180
|
-
|
|
173
|
+
const isEmbedded = variant ? variant === "embedded" : heading === null;
|
|
174
|
+
const headingNode = heading === void 0 ? isEmbedded ? (
|
|
175
|
+
// Embedded default is an <h2> — a host page already owns the <h1>,
|
|
176
|
+
// and the schema/heading pair must read "Frequently Asked Questions"
|
|
177
|
+
// (one FAQ heading per page, never tag/section names).
|
|
178
|
+
/* @__PURE__ */ jsx2("h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT })
|
|
179
|
+
) : /* @__PURE__ */ jsx2("h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
|
|
180
|
+
if (error && isEmbedded) {
|
|
181
181
|
return null;
|
|
182
182
|
}
|
|
183
|
-
if (!isLoading && !error && faqs.length === 0 &&
|
|
183
|
+
if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
|
|
184
184
|
return null;
|
|
185
185
|
}
|
|
186
186
|
if (isLoading && faqs.length === 0) {
|
|
187
|
-
if (
|
|
187
|
+
if (isEmbedded) {
|
|
188
188
|
return /* @__PURE__ */ jsx2("div", { className, children: /* @__PURE__ */ jsx2(FaqSkeleton, {}) });
|
|
189
189
|
}
|
|
190
190
|
return /* @__PURE__ */ jsx2("main", { className: className ?? "bg-ods-bg", children: /* @__PURE__ */ jsx2("div", { className: "max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto", children: /* @__PURE__ */ jsx2(FaqSkeleton, {}) }) });
|
|
@@ -193,14 +193,14 @@ function FaqSection({
|
|
|
193
193
|
return /* @__PURE__ */ jsx2("main", { className: className ?? "bg-ods-bg flex items-center justify-center py-20", children: /* @__PURE__ */ jsx2("p", { className: "text-ods-text-primary font-medium", children: "Failed to load FAQs. Please try again later." }) });
|
|
194
194
|
}
|
|
195
195
|
const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null;
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
196
|
+
const accordion = /* @__PURE__ */ jsx2(FaqAccordion, { items: toAccordionItems(faqs) });
|
|
197
|
+
const body = isEmbedded ? /* @__PURE__ */ jsxs2("section", { className: className ?? "space-y-10", children: [
|
|
198
|
+
headingNode,
|
|
199
|
+
accordion
|
|
200
|
+
] }) : /* @__PURE__ */ jsx2("main", { className: className ?? "bg-ods-bg", children: /* @__PURE__ */ jsxs2("div", { className: "max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10", children: [
|
|
201
201
|
headingNode,
|
|
202
|
-
|
|
203
|
-
] }) })
|
|
202
|
+
accordion
|
|
203
|
+
] }) });
|
|
204
204
|
return /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
205
205
|
body,
|
|
206
206
|
schema && /* @__PURE__ */ jsx2(
|
|
@@ -217,4 +217,4 @@ export {
|
|
|
217
217
|
FaqAccordion,
|
|
218
218
|
FaqSection
|
|
219
219
|
};
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
220
|
+
//# sourceMappingURL=chunk-LQKMMVCC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/faq/faq-section.tsx","../src/components/faq-accordion.tsx","../src/components/faq/json-ld.ts"],"sourcesContent":["\"use client\"\n\nimport React, { useMemo } from 'react'\nimport type { Faq } from '../../types/faq'\nimport { FaqAccordion, type FaqItem } from '../faq-accordion'\nimport { useSelfFetch } from '../../hooks/use-self-fetch'\nimport { buildSuggestionUrl } from '../../utils/suggestion-url'\nimport { serializeJsonLd } from '../../utils/common'\nimport { buildFaqJsonLdFromFaqs, type FaqSchemaOptions } from './json-ld'\n\nexport interface FaqSectionProps {\n /**\n * SSR hydrate. When provided, the hook skips the first client fetch (per\n * useSelfFetch contract). The consuming server page resolves FAQs then drills\n * them into this prop — the lib never re-fetches what the host already gated on.\n */\n initialFaqs?: Faq[]\n /** Both required together for entity-attached FAQs; partial → bare /api/faqs. */\n entityType?: string\n entityId?: number | string\n /**\n * Heading node. `undefined` → variant default (page: <h1>, embedded: <h2>\n * \"Frequently Asked Questions\"); `null` → no heading. React node so\n * platforms can drill their local <PageHeading> component without the lib\n * referencing platform state.\n */\n heading?: React.ReactNode | null\n /**\n * Shell variant — the FAQ LIST itself renders identically everywhere (ONE\n * flat accordion, `faq.section` as a per-row chip, never a heading):\n * - 'page' — the standalone /faqs surface: <main> shell + page gutters,\n * default <h1> heading.\n * - 'embedded' — a section inside a host page (entity detail rails, the\n * global nested-page block): bare <section>, default <h2> heading.\n * Back-compat default: `heading === null` → 'embedded', else 'page' (the\n * pre-variant discriminator).\n */\n variant?: 'page' | 'embedded'\n /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds\n * don't emit duplicate schema. */\n emitJsonLd?: boolean\n /** Overrides for the JSON-LD's name/description/url. */\n jsonLd?: FaqSchemaOptions\n className?: string\n /** Maps to /api/faqs `?count=` (the 5-tier fill target). Absent → param\n * not sent (server default applies). */\n minResults?: number\n /** Fetch-URL prefix for third-party embeds / reverse proxies\n * ('' = same-origin relative). */\n apiBaseUrl?: string\n}\n\nconst DEFAULT_HEADING_TEXT = 'Frequently Asked Questions'\n\n/** URL composition shared with RelatedContentSection (`buildSuggestionUrl`)\n * — byte-identical to the historical `buildFaqsUrl` output when\n * `minResults`/`apiBaseUrl` are absent. */\nfunction buildFaqsUrl(\n entityType?: string,\n entityId?: number | string,\n minResults?: number,\n apiBaseUrl = '',\n): string {\n return buildSuggestionUrl('/api/faqs', { apiBaseUrl, entityType, entityId, count: minResults })\n}\n\n/** ONE list shape for every surface — standalone /faqs and embeds render the\n * IDENTICAL flat accordion (`faq.section` = per-row chip, never a heading),\n * so the two can't drift visually. */\nfunction toAccordionItems(faqs: Faq[]): FaqItem[] {\n return faqs.map((faq) => ({\n id: faq.id,\n question: faq.question,\n answer: faq.answer,\n badge: faq.section || undefined,\n }))\n}\n\nfunction FaqSkeleton() {\n return (\n <div className=\"space-y-8 animate-pulse\">\n <div className=\"h-12 md:h-14 w-2/3 rounded bg-ods-border\" />\n <div className=\"rounded-3xl border border-ods-border overflow-hidden bg-ods-card divide-y divide-ods-border w-full\">\n {Array.from({ length: 8 }).map((_, idx) => (\n <div key={idx} className=\"flex items-center justify-between px-6 md:px-8 py-6\">\n <div className=\"h-6 w-5/6 rounded bg-ods-border\" />\n <div className=\"h-10 w-10 rounded-md bg-ods-border\" />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface FaqsResponse {\n faqs: Faq[]\n}\n\n/**\n * Generic, embeddable FAQ display surface.\n *\n * - Standalone /faqs page: pass `initialFaqs` from the server + `heading` +\n * `emitJsonLd` with `jsonLd` overrides for SEO.\n * - Per-entity embed: pass `entityType` + `entityId` (no `initialFaqs`); the\n * hook self-fetches and the public /api/faqs endpoint picks override-vs-fallback.\n *\n * CONTRACT: the consuming app MUST implement `GET /api/faqs`. Without it,\n * useSelfFetch reports `error:true` (logged once); in embedded mode (heading\n * === null) this component renders nothing so the host page isn't disfigured.\n */\nexport function FaqSection({\n initialFaqs,\n entityType,\n entityId,\n heading,\n variant,\n emitJsonLd = false,\n jsonLd,\n className,\n minResults,\n apiBaseUrl = '',\n}: FaqSectionProps) {\n const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl)\n // Memoized — useSelfFetch re-syncs on [initialData]; a fresh per-render\n // wrapper object would setState-loop under re-rendering parents.\n const initialData = useMemo<FaqsResponse | undefined>(\n () => (initialFaqs ? { faqs: initialFaqs } : undefined),\n [initialFaqs],\n )\n const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })\n\n const faqs = data?.faqs ?? []\n const isEmbedded = variant ? variant === 'embedded' : heading === null\n const headingNode =\n heading === undefined ? (\n isEmbedded ? (\n // Embedded default is an <h2> — a host page already owns the <h1>,\n // and the schema/heading pair must read \"Frequently Asked Questions\"\n // (one FAQ heading per page, never tag/section names).\n <h2 className=\"text-h2 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h2>\n ) : (\n <h1 className=\"text-h1 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h1>\n )\n ) : (\n heading\n )\n\n // Embedded mode: degrade silently on error.\n if (error && isEmbedded) {\n return null\n }\n\n // Embedded mode, zero FAQs after load: render nothing — an embedded host\n // page (blog/case-study detail) must not show an empty section shell.\n // The standalone /faqs page keeps its existing behavior.\n if (!isLoading && !error && faqs.length === 0 && isEmbedded) {\n return null\n }\n\n if (isLoading && faqs.length === 0) {\n // Embedded mode renders skeletons WITHOUT the standalone page shell —\n // a host detail page already provides <main> + gutters; nesting them\n // here would emit invalid markup and double padding.\n if (isEmbedded) {\n return (\n <div className={className}>\n <FaqSkeleton />\n </div>\n )\n }\n return (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto\">\n <FaqSkeleton />\n </div>\n </main>\n )\n }\n\n if (error && faqs.length === 0) {\n return (\n <main className={className ?? 'bg-ods-bg flex items-center justify-center py-20'}>\n <p className=\"text-ods-text-primary font-medium\">Failed to load FAQs. Please try again later.</p>\n </main>\n )\n }\n\n const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null\n\n // ONE flat accordion on EVERY surface — `faq.section` becomes a per-row\n // chip, NOT a heading, so the page outline stays heading + h3(questions).\n // Order is the server's (post-specific first, then reused) — grouping by\n // section here would destroy it. The variants differ ONLY in shell:\n // standalone /faqs keeps its <main> + page gutters, embeds render bare.\n const accordion = <FaqAccordion items={toAccordionItems(faqs)} />\n const body = isEmbedded ? (\n <section className={className ?? 'space-y-10'}>\n {headingNode}\n {accordion}\n </section>\n ) : (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10\">\n {headingNode}\n {accordion}\n </div>\n </main>\n )\n\n return (\n <>\n {body}\n {schema && (\n <script\n type=\"application/ld+json\"\n // eslint-disable-next-line react/no-danger\n // serializeJsonLd, NOT raw JSON.stringify — FAQ answers are\n // admin-entered; an embedded \"</script>\" must not break the tag.\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(schema) }}\n />\n )}\n </>\n )\n}\n","\"use client\"\n\nimport React, { useRef, useState, useEffect, useCallback } from 'react'\nimport { ChevronButton } from './ui/chevron-button'\nimport { cn } from \"../utils/cn\"\n\nexport interface FaqItem {\n id: number | string\n question: string\n answer: string\n /** Optional category label rendered as a neutral chip under the question\n * (NOT a heading — keeps the document outline to h2/h3 only). Mirrors the\n * hub's FaqSectionBadge recipe so admin + public chips stay identical. */\n badge?: string\n}\n\ninterface FaqAccordionProps {\n items: FaqItem[]\n defaultOpenIds?: (number | string)[]\n}\n\n// Utility to measure scrollHeight outside render cycle\nconst useMeasuredHeight = (isOpen: boolean) => {\n const ref = useRef<HTMLDivElement | null>(null)\n const [maxHeight, setMaxHeight] = useState<string>('0px')\n\n const measure = useCallback(() => {\n if (ref.current) {\n const height = ref.current.scrollHeight\n setMaxHeight(`${height}px`)\n }\n }, [])\n\n // Update height only when section is open\n useEffect(() => {\n if (isOpen) {\n measure()\n } else {\n setMaxHeight('0px')\n }\n }, [isOpen, measure])\n\n return { ref, maxHeight }\n}\n\nexport function FaqAccordion({ items, defaultOpenIds = [] }: FaqAccordionProps) {\n const [openSet, setOpenSet] = useState<Set<string | number>>(new Set(defaultOpenIds))\n\n const toggle = (id: string | number) => {\n setOpenSet(prev => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n return (\n <div className=\"rounded-3xl border border-ods-border divide-y divide-ods-border bg-ods-card overflow-hidden\">\n {items.map(item => {\n const isOpen = openSet.has(item.id)\n const { ref, maxHeight } = useMeasuredHeight(isOpen)\n\n return (\n <div\n key={item.id}\n className={cn('group transition-colors hover:bg-[#1E1E1E]', isOpen ? 'bg-ods-bg' : 'bg-transparent')}\n >\n {/* Header */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => toggle(item.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggle(item.id);\n }\n }}\n aria-expanded={isOpen}\n className=\"flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer\"\n >\n <div className=\"flex min-w-0 flex-col gap-2 pr-4\">\n <h3>\n {item.question}\n </h3>\n {item.badge && (\n <span className=\"w-fit shrink-0 px-2 py-1 rounded text-xs font-medium font-['DM_Sans'] bg-ods-border text-ods-text-secondary\">\n {item.badge}\n </span>\n )}\n </div>\n <div className=\"flex-shrink-0\">\n <ChevronButton\n aria-label={isOpen ? 'Collapse question' : 'Expand question'}\n size=\"md\"\n isExpanded={isOpen}\n backgroundColor=\"transparent\"\n borderColor=\"#3A3A3A\"\n />\n </div>\n </div>\n {/* Content wrapper with max-height animation */}\n <div\n style={{ maxHeight, transition: 'max-height 0.35s ease-in-out, opacity 0.35s ease-in-out', opacity: isOpen ? 1 : 0 }}\n className=\"overflow-hidden group-hover:bg-[#1E1E1E]/30\"\n >\n <div ref={ref} className=\"px-6 md:px-8 pb-6 text-ods-text-primary text-h4\">\n {item.answer}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n} ","/**\n * Pure FAQ JSON-LD builder. No React, no client-only deps — safe to import from\n * Server Components via the `./components/faq` subpath export. (Do NOT import\n * through the root `./components` barrel — that barrel is `\"use client\"` and\n * dragging it into a Server Component would force the client graph into the\n * server.)\n *\n * The hub used to harcode `name`/`description` here for OpenMSP; in the lib we\n * accept overrides so every embedder can supply its own platform branding.\n */\nimport type { Faq } from '../../types/faq'\n\nexport interface FaqSchemaOptions {\n name?: string\n description?: string\n url?: string\n}\n\nconst DEFAULT_NAME = 'Frequently Asked Questions'\nconst DEFAULT_DESCRIPTION =\n 'Answers to common questions.'\n\nexport function baseFaqSchema(opts: FaqSchemaOptions = {}) {\n return {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n name: opts.name ?? DEFAULT_NAME,\n description: opts.description ?? DEFAULT_DESCRIPTION,\n ...(opts.url ? { url: opts.url } : {}),\n } as const\n}\n\nexport function buildFaqJsonLdFromFaqs(faqs: Faq[], opts: FaqSchemaOptions = {}) {\n return {\n ...baseFaqSchema(opts),\n mainEntity: faqs.map((faq) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n } as const\n}\n"],"mappings":"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","names":["jsx","jsxs"]}
|
|
@@ -12,11 +12,23 @@ export interface FaqSectionProps {
|
|
|
12
12
|
entityType?: string;
|
|
13
13
|
entityId?: number | string;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* <PageHeading> component without the lib
|
|
15
|
+
* Heading node. `undefined` → variant default (page: <h1>, embedded: <h2>
|
|
16
|
+
* "Frequently Asked Questions"); `null` → no heading. React node so
|
|
17
|
+
* platforms can drill their local <PageHeading> component without the lib
|
|
18
|
+
* referencing platform state.
|
|
18
19
|
*/
|
|
19
20
|
heading?: React.ReactNode | null;
|
|
21
|
+
/**
|
|
22
|
+
* Shell variant — the FAQ LIST itself renders identically everywhere (ONE
|
|
23
|
+
* flat accordion, `faq.section` as a per-row chip, never a heading):
|
|
24
|
+
* - 'page' — the standalone /faqs surface: <main> shell + page gutters,
|
|
25
|
+
* default <h1> heading.
|
|
26
|
+
* - 'embedded' — a section inside a host page (entity detail rails, the
|
|
27
|
+
* global nested-page block): bare <section>, default <h2> heading.
|
|
28
|
+
* Back-compat default: `heading === null` → 'embedded', else 'page' (the
|
|
29
|
+
* pre-variant discriminator).
|
|
30
|
+
*/
|
|
31
|
+
variant?: 'page' | 'embedded';
|
|
20
32
|
/** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds
|
|
21
33
|
* don't emit duplicate schema. */
|
|
22
34
|
emitJsonLd?: boolean;
|
|
@@ -42,5 +54,5 @@ export interface FaqSectionProps {
|
|
|
42
54
|
* useSelfFetch reports `error:true` (logged once); in embedded mode (heading
|
|
43
55
|
* === null) this component renders nothing so the host page isn't disfigured.
|
|
44
56
|
*/
|
|
45
|
-
export declare function FaqSection({ initialFaqs, entityType, entityId, heading, emitJsonLd, jsonLd, className, minResults, apiBaseUrl, }: FaqSectionProps): React.JSX.Element | null;
|
|
57
|
+
export declare function FaqSection({ initialFaqs, entityType, entityId, heading, variant, emitJsonLd, jsonLd, className, minResults, apiBaseUrl, }: FaqSectionProps): React.JSX.Element | null;
|
|
46
58
|
//# sourceMappingURL=faq-section.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq-section.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAK1C,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEzE,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;IACnB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B
|
|
1
|
+
{"version":3,"file":"faq-section.d.ts","sourceRoot":"","sources":["../../../src/components/faq/faq-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAK1C,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEzE,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;IACnB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;IAChC;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC7B;uCACmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wDAAwD;IACxD,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;6CACyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;uCACmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAgDD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAe,GAChB,EAAE,eAAe,4BAsGjB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkD4ESVTUTcjs = require('../../chunk-D4ESVTUT.cjs');
|
|
5
5
|
require('../../chunk-T7AJBKZP.cjs');
|
|
6
6
|
require('../../chunk-7VMEOFEA.cjs');
|
|
7
7
|
require('../../chunk-FIG2RKZF.cjs');
|
|
8
8
|
require('../../chunk-VRHGVLSL.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.FaqSection =
|
|
11
|
+
exports.FaqSection = _chunkD4ESVTUTcjs.FaqSection;
|
|
12
12
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -3,6 +3,10 @@ export interface FaqItem {
|
|
|
3
3
|
id: number | string;
|
|
4
4
|
question: string;
|
|
5
5
|
answer: string;
|
|
6
|
+
/** Optional category label rendered as a neutral chip under the question
|
|
7
|
+
* (NOT a heading — keeps the document outline to h2/h3 only). Mirrors the
|
|
8
|
+
* hub's FaqSectionBadge recipe so admin + public chips stay identical. */
|
|
9
|
+
badge?: string;
|
|
6
10
|
}
|
|
7
11
|
interface FaqAccordionProps {
|
|
8
12
|
items: FaqItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq-accordion.d.ts","sourceRoot":"","sources":["../../src/components/faq-accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CACrC;AA0BD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,cAAmB,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"faq-accordion.d.ts","sourceRoot":"","sources":["../../src/components/faq-accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd;;+EAE2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CACrC;AA0BD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,cAAmB,EAAE,EAAE,iBAAiB,qBAuE7E"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkD4ESVTUTcjs = require('../chunk-D4ESVTUT.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -7904,5 +7904,5 @@ function AuthorDetailView({
|
|
|
7904
7904
|
|
|
7905
7905
|
|
|
7906
7906
|
|
|
7907
|
-
exports.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE = _chunkFBH73RRMcjs.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE; exports.AIEnrichButton = _chunkFBH73RRMcjs.AIEnrichButton; exports.AIEnrichSection = _chunkFBH73RRMcjs.AIEnrichSection; exports.AIRequiredBadge = _chunkFBH73RRMcjs.AIRequiredBadge; exports.AIStatusIndicator = _chunkFBH73RRMcjs.AIStatusIndicator; exports.AIWarningsSection = _chunkFBH73RRMcjs.AIWarningsSection; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = _chunkFBH73RRMcjs.ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.APPROVAL_STATUS = _chunkFBH73RRMcjs.APPROVAL_STATUS; exports.ASSISTANT_TYPE = _chunkFBH73RRMcjs.ASSISTANT_TYPE; exports.AUTHOR_TYPE = _chunkFBH73RRMcjs.AUTHOR_TYPE; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = _chunkFBH73RRMcjs.AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.AboutIcon = _chunkLGLPNWS6cjs.AboutIcon; exports.Accordion = _chunkFBH73RRMcjs.Accordion; exports.AccordionContent = _chunkFBH73RRMcjs.AccordionContent; exports.AccordionItem = _chunkFBH73RRMcjs.AccordionItem; exports.AccordionTrigger = _chunkFBH73RRMcjs.AccordionTrigger; exports.ActionsMenu = _chunkEB76VWM4cjs.ActionsMenu; exports.ActionsMenuDropdown = _chunkEB76VWM4cjs.ActionsMenuDropdown; exports.AdminContentCard = _chunkFBH73RRMcjs.AdminContentCard; exports.AiRobotIcon = _chunkLGLPNWS6cjs.AiRobotIcon; exports.Alert = _chunkFBH73RRMcjs.Alert; exports.AlertDescription = _chunkFBH73RRMcjs.AlertDescription; exports.AlertDialog = _chunkFBH73RRMcjs.AlertDialog; exports.AlertDialogAction = _chunkFBH73RRMcjs.AlertDialogAction; exports.AlertDialogCancel = _chunkFBH73RRMcjs.AlertDialogCancel; exports.AlertDialogContent = _chunkFBH73RRMcjs.AlertDialogContent; exports.AlertDialogDescription = _chunkFBH73RRMcjs.AlertDialogDescription; exports.AlertDialogFooter = _chunkFBH73RRMcjs.AlertDialogFooter; exports.AlertDialogHeader = _chunkFBH73RRMcjs.AlertDialogHeader; exports.AlertDialogOverlay = _chunkFBH73RRMcjs.AlertDialogOverlay; exports.AlertDialogPortal = _chunkFBH73RRMcjs.AlertDialogPortal; exports.AlertDialogTitle = _chunkFBH73RRMcjs.AlertDialogTitle; exports.AlertDialogTrigger = _chunkFBH73RRMcjs.AlertDialogTrigger; exports.AlertTitle = _chunkFBH73RRMcjs.AlertTitle; exports.AlertTriangleIcon = _chunkLGLPNWS6cjs.AlertTriangleIcon; exports.AllowedDomainsInput = _chunkFBH73RRMcjs.AllowedDomainsInput; exports.AnnouncementBar = AnnouncementBar; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.AppHeader = _chunkFBH73RRMcjs.AppHeader; exports.AppLayout = _chunkFBH73RRMcjs.AppLayout; exports.AppLayoutDrawer = _chunkFBH73RRMcjs.AppLayoutDrawerRoot; exports.AppLayoutDrawerBody = _chunkFBH73RRMcjs.AppLayoutDrawerBody; exports.AppLayoutDrawerClose = _chunkFBH73RRMcjs.AppLayoutDrawerClose; exports.AppLayoutDrawerContent = _chunkFBH73RRMcjs.AppLayoutDrawerContent; exports.AppLayoutDrawerDescription = _chunkFBH73RRMcjs.AppLayoutDrawerDescription; exports.AppLayoutDrawerFooter = _chunkFBH73RRMcjs.AppLayoutDrawerFooter; exports.AppLayoutDrawerHeader = _chunkFBH73RRMcjs.AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = _chunkFBH73RRMcjs.AppLayoutDrawerTitle; exports.AppLayoutDrawerTrigger = _chunkFBH73RRMcjs.AppLayoutDrawerTrigger; exports.ApprovalBatchMessage = _chunkFBH73RRMcjs.ApprovalBatchMessage; exports.ApprovalRequestMessage = _chunkFBH73RRMcjs.ApprovalRequestMessage; exports.ApprovalRequestNotificationTile = _chunkFBH73RRMcjs.ApprovalRequestNotificationTile; exports.ArchiveChatModal = _chunkFBH73RRMcjs.ArchiveChatModal; exports.ArchiveIcon = _chunkLGLPNWS6cjs.ArchiveIcon; exports.ArgRow = _chunkFBH73RRMcjs.ArgRow; exports.ArrayEntryManager = _chunkFBH73RRMcjs.ArrayEntryManager; exports.ArticleAuthorByline = _chunkKQQDN2WKcjs.ArticleAuthorByline; exports.ArticleDetailLayout = _chunkEB76VWM4cjs.ArticleDetailLayout; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.AspectRatio = _chunkFBH73RRMcjs.AspectRatio; exports.AssigneeDropdown = _chunkFBH73RRMcjs.AssigneeDropdown; exports.AuditLoggingIcon = _chunkLGLPNWS6cjs.AuditLoggingIcon; exports.AuthProvider = AuthProvider; exports.AuthProvidersList = _chunkFBH73RRMcjs.AuthProvidersList; exports.AuthorDetailView = AuthorDetailView; exports.Autocomplete = _chunkFBH73RRMcjs.Autocomplete; exports.AutomateEverythingIcon = _chunkLGLPNWS6cjs.AutomateEverythingIcon; exports.AutomatedDiagnosticsIcon = _chunkLGLPNWS6cjs.AutomatedDiagnosticsIcon; exports.Badge = _chunkFBH73RRMcjs.Badge; exports.BashIcon = _chunkLGLPNWS6cjs.BashIcon; exports.BenefitCard = _chunkFBH73RRMcjs.BenefitCard; exports.BenefitCardGrid = _chunkFBH73RRMcjs.BenefitCardGrid; exports.BlockCard = _chunkFBH73RRMcjs.BlockCard; exports.BlogCard = _chunkFBH73RRMcjs.BlogCard; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.BlogCardSkeleton = _chunkFBH73RRMcjs.BlogCardSkeleton; exports.BlogImagePlaceholder = _chunkEB76VWM4cjs.BlogImagePlaceholder; exports.Board = _chunkFBH73RRMcjs.Board; exports.BoardColumn = _chunkFBH73RRMcjs.BoardColumn; exports.BoardColumnHeader = _chunkFBH73RRMcjs.BoardColumnHeader; exports.BotIcon = _chunkLGLPNWS6cjs.BotIcon; exports.BrandAssociationCard = _chunkFBH73RRMcjs.BrandAssociationCard; exports.BrandAssociationGrid = _chunkFBH73RRMcjs.BrandAssociationGrid; exports.Breadcrumb = _chunkFBH73RRMcjs.Breadcrumb; exports.BreadcrumbEllipsis = _chunkFBH73RRMcjs.BreadcrumbEllipsis; exports.BreadcrumbItem = _chunkFBH73RRMcjs.BreadcrumbItem; exports.BreadcrumbLink = _chunkFBH73RRMcjs.BreadcrumbLink; exports.BreadcrumbList = _chunkFBH73RRMcjs.BreadcrumbList; exports.BreadcrumbPage = _chunkFBH73RRMcjs.BreadcrumbPage; exports.BreadcrumbSeparator = _chunkFBH73RRMcjs.BreadcrumbSeparator; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.BuildingsIcon = _chunkLGLPNWS6cjs.BuildingsIcon; exports.BulkOperationsIcon = _chunkLGLPNWS6cjs.BulkOperationsIcon; exports.BulletList = _chunkFBH73RRMcjs.BulletList; exports.Button = _chunkN5UOJC3Vcjs.Button; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.CHAT_ATTACHMENT_MIME_TYPES = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_TYPE = _chunkFBH73RRMcjs.CHAT_TYPE; exports.CHIP_ACTION_BUTTON_CLASS = _chunkFBH73RRMcjs.CHIP_ACTION_BUTTON_CLASS; exports.COMPACT_CARD_ICON_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_IMAGE_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_META_ROW = _chunkEB76VWM4cjs.COMPACT_CARD_META_ROW; exports.COMPACT_CARD_META_ROW_BOX = _chunkEB76VWM4cjs.COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_OUTER = _chunkEB76VWM4cjs.COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = _chunkEB76VWM4cjs.COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_ROW_FILLER = _chunkEB76VWM4cjs.COMPACT_CARD_ROW_FILLER; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_OUTER = _chunkEB76VWM4cjs.COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_SUBTITLE = _chunkEB76VWM4cjs.COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = _chunkEB76VWM4cjs.COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_TEXT_COL = _chunkEB76VWM4cjs.COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE = _chunkEB76VWM4cjs.COMPACT_CARD_TITLE; exports.COMPACT_CARD_TITLE_ROW = _chunkEB76VWM4cjs.COMPACT_CARD_TITLE_ROW; exports.COMPACT_HEADER_BUTTON = _chunkFBH73RRMcjs.COMPACT_HEADER_BUTTON; exports.CONNECTION_STATUS = _chunkFBH73RRMcjs.CONNECTION_STATUS; exports.CUSTOM_ITEM_ID = _chunkFBH73RRMcjs.CUSTOM_ITEM_ID; exports.CUSTOM_PRESET_KEY = _chunkFBH73RRMcjs.CUSTOM_PRESET_KEY; exports.CampaignCardAdmin = _chunkFBH73RRMcjs.CampaignCardAdmin; exports.CampaignCardAdminSkeleton = _chunkFBH73RRMcjs.CampaignCardAdminSkeleton; exports.CapterraIcon = _chunkLGLPNWS6cjs.CapterraIcon; exports.Card = _chunkEB76VWM4cjs.Card; exports.CardContent = _chunkEB76VWM4cjs.CardContent; exports.CardDescription = _chunkEB76VWM4cjs.CardDescription; exports.CardFooter = _chunkEB76VWM4cjs.CardFooter; exports.CardHeader = _chunkEB76VWM4cjs.CardHeader; exports.CardHorizontal = _chunkEB76VWM4cjs.CardHorizontal; exports.CardLoader = _chunkFBH73RRMcjs.CardLoader; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.CardTitle = _chunkEB76VWM4cjs.CardTitle; exports.CartaIcon = _chunkLGLPNWS6cjs.CartaIcon; exports.CaseStudyCard = _chunkFBH73RRMcjs.CaseStudyCard; exports.CaseStudyCardSkeleton = _chunkFBH73RRMcjs.CaseStudyCardSkeleton; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.ChangelogManager = _chunkFBH73RRMcjs.ChangelogManager; exports.ChangelogSectionsManager = _chunkFBH73RRMcjs.ChangelogSectionsManager; exports.ChatArchivePage = _chunkFBH73RRMcjs.ChatArchivePage; exports.ChatAttachmentAddButton = _chunkFBH73RRMcjs.ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = _chunkFBH73RRMcjs.ChatAttachmentChipStrip; exports.ChatCardLoader = _chunkFBH73RRMcjs.ChatCardLoader; exports.ChatComposer = _chunkFBH73RRMcjs.ChatComposer; exports.ChatContainer = _chunkFBH73RRMcjs.ChatContainer; exports.ChatContent = _chunkFBH73RRMcjs.ChatContent; exports.ChatDialogModals = _chunkFBH73RRMcjs.ChatDialogModals; exports.ChatFooter = _chunkFBH73RRMcjs.ChatFooter; exports.ChatHeader = _chunkFBH73RRMcjs.ChatHeader; exports.ChatHeaderIconButton = _chunkFBH73RRMcjs.ChatHeaderIconButton; exports.ChatIdentityProvider = _chunkFBH73RRMcjs.ChatIdentityProvider; exports.ChatInput = _chunkFBH73RRMcjs.ChatInput; exports.ChatMessageEnhanced = _chunkFBH73RRMcjs.MemoizedChatMessageEnhanced; exports.ChatMessageList = _chunkFBH73RRMcjs.ChatMessageList; exports.ChatMessageListSkeleton = _chunkFBH73RRMcjs.ChatMessageListSkeleton; exports.ChatMessageRow = _chunkFBH73RRMcjs.ChatMessageRow; exports.ChatMessageRowSkeleton = _chunkFBH73RRMcjs.ChatMessageRowSkeleton; exports.ChatMessageSkeleton = _chunkFBH73RRMcjs.ChatMessageSkeleton; exports.ChatPanelHeader = _chunkFBH73RRMcjs.ChatPanelHeader; exports.ChatQuickAction = _chunkFBH73RRMcjs.ChatQuickAction; exports.ChatQuickActionRow = _chunkFBH73RRMcjs.ChatQuickActionRow; exports.ChatSidebar = _chunkFBH73RRMcjs.ChatSidebar; exports.ChatTicketItem = _chunkFBH73RRMcjs.ChatTicketItem; exports.ChatTicketList = _chunkFBH73RRMcjs.ChatTicketList; exports.ChatTypingIndicator = _chunkFBH73RRMcjs.ChatTypingIndicator; exports.ChatVideoEntityCard = _chunkFBH73RRMcjs.ChatVideoEntityCard; exports.CheckCircleIcon = _chunkLGLPNWS6cjs.CheckCircleIcon; exports.CheckIcon = _chunkFBH73RRMcjs.CheckIcon; exports.Checkbox = _chunk6JINAOI7cjs.Checkbox; exports.CheckboxBlock = _chunkFBH73RRMcjs.CheckboxBlock; exports.CheckboxWithDescription = _chunkFBH73RRMcjs.CheckboxWithDescription; exports.ChevronButton = _chunk7VMEOFEAcjs.ChevronButton; exports.CircularProgress = _chunkFBH73RRMcjs.CircularProgress; exports.ClaudeIcon = _chunkLGLPNWS6cjs.ClaudeIcon; exports.ClickUpIcon = _chunkLGLPNWS6cjs.ClickUpIcon; exports.ClickUpTasksManager = _chunkFBH73RRMcjs.ClickUpTasksManager; exports.ClientOnlyHeader = _chunkFBH73RRMcjs.ClientOnlyHeader; exports.CmdIcon = _chunkLGLPNWS6cjs.CmdIcon; exports.CoinsIcon = _chunkLGLPNWS6cjs.CoinsIcon; exports.ColorPickerInput = _chunkFBH73RRMcjs.ColorPickerInput; exports.ColorPresetSelect = _chunkFBH73RRMcjs.ColorPresetSelect; exports.ColorSwatch = _chunkFBH73RRMcjs.ColorSwatch; exports.CommandApprovalToast = _chunk3DC6MHW6cjs.CommandApprovalToast; exports.CommandBox = _chunkFBH73RRMcjs.CommandBox; exports.CommentCard = CommentCard; exports.CommentSkeleton = CommentSkeleton; exports.CommunityHubIcon = _chunkLGLPNWS6cjs.CommunityHubIcon; exports.CommunityIcon = _chunkLGLPNWS6cjs.CommunityIcon; exports.CompactPageLoader = _chunkFBH73RRMcjs.CompactPageLoader; exports.CompareIcon = _chunkLGLPNWS6cjs.CompareIcon; exports.ConfidenceBadge = _chunkFBH73RRMcjs.ConfidenceBadge; exports.ContentLoader = _chunkFBH73RRMcjs.ContentLoader; exports.ContentLoadingContainer = ContentLoadingContainer; exports.ContentPageContainer = _chunkEB76VWM4cjs.ContentPageContainer; exports.ContextCompactionDisplay = _chunkFBH73RRMcjs.ContextCompactionDisplay; exports.CopyIcon = _chunkLGLPNWS6cjs.CopyIcon; exports.CpuIcon = _chunkLGLPNWS6cjs.CpuIcon; exports.CursorPagination = _chunkFBH73RRMcjs.CursorPagination; exports.CursorPaginationSimple = _chunkFBH73RRMcjs.CursorPaginationSimple; exports.CustomExternalLinkIcon = _chunkLGLPNWS6cjs.CustomExternalLinkIcon; exports.CustomForkIcon = _chunkLGLPNWS6cjs.CustomForkIcon; exports.CustomLicenseIcon = _chunkLGLPNWS6cjs.CustomLicenseIcon; exports.CustomStarIcon = _chunkLGLPNWS6cjs.CustomStarIcon; exports.CustomTimeIcon = _chunkLGLPNWS6cjs.CustomTimeIcon; exports.CustomerInterviewCard = _chunkFBH73RRMcjs.CustomerInterviewCard; exports.CustomerInterviewCardSkeleton = _chunkFBH73RRMcjs.CustomerInterviewCardSkeleton; exports.CutVendorCostsIcon = _chunkLGLPNWS6cjs.CutVendorCostsIcon; exports.CveLink = _chunkFBH73RRMcjs.CveLink; exports.DEFAULT_CUSTOM_STATUS_COLOR = _chunkFBH73RRMcjs.DEFAULT_CUSTOM_STATUS_COLOR; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = _chunkEB76VWM4cjs.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.DEFAULT_THEME = _chunkFBH73RRMcjs.DEFAULT_THEME; exports.DashboardIcon = _chunkLGLPNWS6cjs.DashboardIcon; exports.DashboardInfoCard = _chunkFBH73RRMcjs.DashboardInfoCard; exports.DataRoomDocCard = _chunkFBH73RRMcjs.DataRoomDocCard; exports.DataRoomDocCardSkeleton = _chunkFBH73RRMcjs.DataRoomDocCardSkeleton; exports.DataTable = _chunkFBH73RRMcjs.DataTable; exports.DataTableBody = _chunkFBH73RRMcjs.DataTableBody; exports.DataTableCursorFooter = _chunkFBH73RRMcjs.DataTableCursorFooter; exports.DataTableEmpty = _chunkFBH73RRMcjs.DataTableEmpty; exports.DataTableHeader = _chunkFBH73RRMcjs.DataTableHeader; exports.DataTableInfiniteFooter = _chunkFBH73RRMcjs.DataTableInfiniteFooter; exports.DataTableRoot = _chunkFBH73RRMcjs.DataTableRoot; exports.DataTableRow = _chunkFBH73RRMcjs.DataTableRow; exports.DataTableRowCount = _chunkFBH73RRMcjs.DataTableRowCount; exports.DataTableSkeleton = _chunkFBH73RRMcjs.DataTableSkeleton; exports.DatePicker = _chunkFBH73RRMcjs.DatePicker; exports.DatePickerInput = _chunkFBH73RRMcjs.DatePickerInput; exports.DatePickerInputSimple = _chunkFBH73RRMcjs.DatePickerInputSimple; exports.DateTimePicker = DateTimePicker; exports.DeliveryLists = DeliveryLists; exports.DeliveryRow = _chunkLCYDTEEKcjs.DeliveryRow; exports.DeliveryTable = DeliveryTable; exports.DenoIcon = _chunkLGLPNWS6cjs.DenoIcon; exports.DesktopIcon = _chunkLGLPNWS6cjs.DesktopIcon; exports.DetailLoader = _chunkFBH73RRMcjs.DetailLoader; exports.DetailPageContainer = _chunkEB76VWM4cjs.DetailPageContainer; exports.DetailPageSkeleton = _chunkKQQDN2WKcjs.DetailPageSkeleton; exports.DevCardRowContent = _chunkLCYDTEEKcjs.DevCardRowContent; exports.DevCardRowSkeleton = _chunkLCYDTEEKcjs.DevCardRowSkeleton; exports.DevCardRowSkeletonList = _chunkLCYDTEEKcjs.DevCardRowSkeletonList; exports.DevSectionPage = _chunkLCYDTEEKcjs.DevSectionPage; exports.DevSectionView = _chunkLCYDTEEKcjs.DevSectionView; exports.DeviceCard = _chunkFBH73RRMcjs.DeviceCard; exports.DeviceCardCompact = _chunkFBH73RRMcjs.DeviceCardCompact; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.DevicesIcon = _chunkLGLPNWS6cjs.DevicesIcon; exports.Dialog = _chunkFBH73RRMcjs.Dialog; exports.DialogClose = _chunkFBH73RRMcjs.DialogClose; exports.DialogContent = _chunkFBH73RRMcjs.DialogContent; exports.DialogDescription = _chunkFBH73RRMcjs.DialogDescription; exports.DialogFooter = _chunkFBH73RRMcjs.DialogFooter; exports.DialogHeader = _chunkFBH73RRMcjs.DialogHeader; exports.DialogListItem = _chunkFBH73RRMcjs.DialogListItem; exports.DialogOverlay = _chunkFBH73RRMcjs.DialogOverlay; exports.DialogPortal = _chunkFBH73RRMcjs.DialogPortal; exports.DialogTitle = _chunkFBH73RRMcjs.DialogTitle; exports.DialogTrigger = _chunkFBH73RRMcjs.DialogTrigger; exports.DocSearchBar = _chunkKQQDN2WKcjs.DocSearchBar; exports.DocSearchResultRow = _chunkKQQDN2WKcjs.DocSearchResultRow; exports.DocumentIcon = _chunkLGLPNWS6cjs.DocumentIcon; exports.DonutIcon = _chunkLGLPNWS6cjs.DonutIcon; exports.DoubleChevronIcon = _chunkLGLPNWS6cjs.DoubleChevronIcon; exports.Drawer = _chunkFBH73RRMcjs.Drawer; exports.DrawerBody = _chunkFBH73RRMcjs.DrawerBody; exports.DrawerClose = _chunkFBH73RRMcjs.DrawerClose; exports.DrawerContent = _chunkFBH73RRMcjs.DrawerContent; exports.DrawerDescription = _chunkFBH73RRMcjs.DrawerDescription; exports.DrawerFooter = _chunkFBH73RRMcjs.DrawerFooter; exports.DrawerHeader = _chunkFBH73RRMcjs.DrawerHeader; exports.DrawerOverlay = _chunkFBH73RRMcjs.DrawerOverlay; exports.DrawerPortal = _chunkFBH73RRMcjs.DrawerPortal; exports.DrawerTitle = _chunkFBH73RRMcjs.DrawerTitle; exports.DrawerTrigger = _chunkFBH73RRMcjs.DrawerTrigger; exports.DropdownButton = _chunkFBH73RRMcjs.DropdownButton; exports.DropdownMenu = _chunkN5UOJC3Vcjs.DropdownMenu; exports.DropdownMenuCheckboxItem = _chunkN5UOJC3Vcjs.DropdownMenuCheckboxItem; exports.DropdownMenuContent = _chunkN5UOJC3Vcjs.DropdownMenuContent; exports.DropdownMenuGroup = _chunkN5UOJC3Vcjs.DropdownMenuGroup; exports.DropdownMenuItem = _chunkN5UOJC3Vcjs.DropdownMenuItem; exports.DropdownMenuLabel = _chunkN5UOJC3Vcjs.DropdownMenuLabel; exports.DropdownMenuPortal = _chunkN5UOJC3Vcjs.DropdownMenuPortal; exports.DropdownMenuRadioGroup = _chunkN5UOJC3Vcjs.DropdownMenuRadioGroup; exports.DropdownMenuRadioItem = _chunkN5UOJC3Vcjs.DropdownMenuRadioItem; exports.DropdownMenuSeparator = _chunkN5UOJC3Vcjs.DropdownMenuSeparator; exports.DropdownMenuShortcut = _chunkN5UOJC3Vcjs.DropdownMenuShortcut; exports.DropdownMenuSub = _chunkN5UOJC3Vcjs.DropdownMenuSub; exports.DropdownMenuSubContent = _chunkN5UOJC3Vcjs.DropdownMenuSubContent; exports.DropdownMenuSubTrigger = _chunkN5UOJC3Vcjs.DropdownMenuSubTrigger; exports.DropdownMenuTrigger = _chunkN5UOJC3Vcjs.DropdownMenuTrigger; exports.DynamicSkeleton = DynamicSkeleton; exports.DynamicThemeProvider = _chunkFBH73RRMcjs.DynamicThemeProvider; exports.EMPTY_AUTHOR_PLACEHOLDER = _chunkEB76VWM4cjs.EMPTY_AUTHOR_PLACEHOLDER; exports.EditProfileIcon = _chunkLGLPNWS6cjs.EditProfileIcon; exports.ElestioLogo = _chunkLGLPNWS6cjs.ElestioLogo; exports.EmbeddableChat = _chunkFBH73RRMcjs.EmbeddableChat; exports.EmptyState = _chunkLCYDTEEKcjs.EmptyState; exports.EmptyVendorIcon = _chunkLGLPNWS6cjs.EmptyVendorIcon; exports.EntityAuthorCard = _chunkEB76VWM4cjs.EntityAuthorCard; exports.EntityImage = _chunkFBH73RRMcjs.EntityImage; exports.EntityMetadataAuthorCell = _chunkEB76VWM4cjs.EntityMetadataAuthorCell; exports.EntityMetadataValueCell = _chunkEB76VWM4cjs.EntityMetadataValueCell; exports.EntitySummaryEditor = _chunkFBH73RRMcjs.EntitySummaryEditor; exports.EntityTagBadges = _chunkEB76VWM4cjs.EntityTagBadges; exports.EntityVideoSection = _chunkEB76VWM4cjs.EntityVideoSection; exports.ErrorBoundary = _chunkFBH73RRMcjs.ErrorBoundary; exports.ErrorIcon = _chunkLGLPNWS6cjs.ErrorIcon; exports.ErrorMessageDisplay = _chunkFBH73RRMcjs.ErrorMessageDisplay; exports.ErrorState = _chunkEB76VWM4cjs.ErrorState; exports.ExpandChevron = _chunkFBH73RRMcjs.ExpandChevron; exports.ExploreCategoriesIcon = _chunkLGLPNWS6cjs.ExploreCategoriesIcon; exports.EyeIcon = _chunkLGLPNWS6cjs.EyeIcon; exports.FLAMINGO_LOGO_SVG_PATH = _chunkLGLPNWS6cjs.FLAMINGO_LOGO_SVG_PATH; exports.FLAMINGO_LOGO_VIEWBOX = _chunkLGLPNWS6cjs.FLAMINGO_LOGO_VIEWBOX; exports.FacebookIcon = _chunkLGLPNWS6cjs.FacebookIcon; exports.FaqAccordion = _chunkZJP2BB3Ecjs.FaqAccordion; exports.FaqSection = _chunkZJP2BB3Ecjs.FaqSection; exports.FeatureCardGrid = _chunkFBH73RRMcjs.FeatureCardGrid; exports.FeatureList = _chunkFBH73RRMcjs.FeatureList; exports.FeatureListSkeleton = FeatureListSkeleton; exports.FieldWrapper = _chunk6JINAOI7cjs.FieldWrapper; exports.FigmaIcon = _chunkLGLPNWS6cjs.FigmaIcon; exports.FigmaPrototypeViewer = _chunkFBH73RRMcjs.FigmaPrototypeViewer; exports.FileCheckIcon = _chunkLGLPNWS6cjs.FileCheckIcon; exports.FileTextIcon = _chunkLGLPNWS6cjs.FileTextIcon; exports.FileUpload = _chunkFBH73RRMcjs.FileUpload; exports.FilterCheckboxItem = _chunkFBH73RRMcjs.FilterCheckboxItem; exports.FilterChip = FilterChip; exports.FilterIcon = _chunkLGLPNWS6cjs.FilterIcon; exports.FilterList = _chunkFBH73RRMcjs.FilterList; exports.FilterListItem = _chunkFBH73RRMcjs.FilterListItem; exports.FilterModal = _chunkFBH73RRMcjs.FilterModal; exports.FilterPillRow = _chunkEB76VWM4cjs.FilterPillRow; exports.FiltersDropdown = _chunkFBH73RRMcjs.FiltersDropdown; exports.FlamingoLogo = _chunkLGLPNWS6cjs.FlamingoLogo; exports.FloatingTooltip = _chunkFBH73RRMcjs.FloatingTooltip; exports.FolderShieldIcon = _chunkLGLPNWS6cjs.FolderShieldIcon; exports.Footer = Footer; exports.FooterWaitlistButton = FooterWaitlistButton; exports.FormLoader = _chunkFBH73RRMcjs.FormLoader; exports.FormPageContainer = _chunkEB76VWM4cjs.FormPageContainer; exports.FormSkeleton = FormSkeleton; exports.G2Icon = _chunkLGLPNWS6cjs.G2Icon; exports.GROUP_PAGE_SIZE = _chunkAIQ4DGO7cjs.GROUP_PAGE_SIZE; exports.GenericEntityCard = _chunkFBH73RRMcjs.GenericEntityCard; exports.GenericEntityCardSkeleton = _chunkFBH73RRMcjs.GenericEntityCardSkeleton; exports.GetAppIcon = _chunkLGLPNWS6cjs.GetAppIcon; exports.GitHubActivityCard = _chunkFBH73RRMcjs.GitHubActivityCard; exports.GitHubActivityCardSkeleton = _chunkFBH73RRMcjs.GitHubActivityCardSkeleton; exports.GitHubIcon = _chunkLGLPNWS6cjs.GitHubIcon; exports.GitHubReleasesManager = _chunkFBH73RRMcjs.GitHubReleasesManager; exports.GlobeIcon = _chunkLGLPNWS6cjs.GlobeIcon; exports.GoogleGeminiIcon = _chunkLGLPNWS6cjs.GoogleGeminiIcon; exports.GoogleLogo = _chunkLGLPNWS6cjs.GoogleLogo; exports.GridViewIcon = _chunkLGLPNWS6cjs.GridViewIcon; exports.GuideModeBanner = _chunkFBH73RRMcjs.GuideModeBanner; exports.GuideWelcome = _chunkFBH73RRMcjs.GuideWelcome; exports.HamburgerIcon = _chunkLGLPNWS6cjs.HamburgerIcon; exports.HandDollarIcon = _chunkLGLPNWS6cjs.HandDollarIcon; exports.Header = _chunkFBH73RRMcjs.Header; exports.HeaderButton = _chunkFBH73RRMcjs.HeaderButton; exports.HeaderGlobalSearch = _chunkFBH73RRMcjs.HeaderGlobalSearch; exports.HeaderMingoButton = _chunkFBH73RRMcjs.HeaderMingoButton; exports.HeaderOrganizationFilter = _chunkFBH73RRMcjs.HeaderOrganizationFilter; exports.HeaderSkeleton = _chunkFBH73RRMcjs.HeaderSkeleton; exports.HeroImageUploader = HeroImageUploader; exports.HeroSkeleton = HeroSkeleton; exports.HiddenTagsPopup = _chunkEB76VWM4cjs.HiddenTagsPopup; exports.HighlightCard = _chunkFBH73RRMcjs.HighlightCard; exports.HighlightCardGrid = _chunkFBH73RRMcjs.HighlightCardGrid; exports.HighlightConfigSection = _chunkFBH73RRMcjs.HighlightConfigSection; exports.HighlightGenerationSection = _chunkFBH73RRMcjs.HighlightGenerationSection; exports.HighlightVideoCombinedSection = _chunkFBH73RRMcjs.HighlightVideoCombinedSection; exports.HighlightVideoPreview = _chunkFBH73RRMcjs.HighlightVideoPreview; exports.HighlightVideoSection = _chunkFBH73RRMcjs.HighlightVideoSection; exports.HoneypotField = _chunkFBH73RRMcjs.HoneypotField; exports.HotelIcon = _chunkLGLPNWS6cjs.HotelIcon; exports.HoverCard = _chunkFBH73RRMcjs.HoverCard; exports.HoverCardContent = _chunkFBH73RRMcjs.HoverCardContent; exports.HoverCardTrigger = _chunkFBH73RRMcjs.HoverCardTrigger; exports.HoverDropdown = _chunkFBH73RRMcjs.HoverDropdown; exports.HubspotIcon = _chunkLGLPNWS6cjs.HubspotIcon; exports.HubspotTicketCard = _chunkFBH73RRMcjs.HubspotTicketCard; exports.HubspotTicketCardSkeleton = _chunkFBH73RRMcjs.HubspotTicketCardSkeleton; exports.ICON_REGISTRY = _chunkEB76VWM4cjs.ICON_REGISTRY; exports.ITIcon = _chunkLGLPNWS6cjs.ITIcon; exports.IconsBlock = _chunkFBH73RRMcjs.IconsBlock; exports.IconsXIcon = _chunkLGLPNWS6cjs.XIcon; exports.ImageCropper = ImageCropper; exports.ImageGalleryModal = _chunkFBH73RRMcjs.ImageGalleryModal; exports.ImageIcon = _chunkLGLPNWS6cjs.ImageIcon; exports.ImageUploader = _chunkFBH73RRMcjs.ImageUploader; exports.InfoCard = _chunkFBH73RRMcjs.InfoCard; exports.InfoCircleIcon = _chunkLGLPNWS6cjs.InfoCircleIcon; exports.InfoRow = _chunkFBH73RRMcjs.InfoRow; exports.Input = _chunk6JINAOI7cjs.Input; exports.InputTrigger = _chunkFBH73RRMcjs.InputTrigger; exports.InstagramIcon = _chunkLGLPNWS6cjs.InstagramIcon; exports.InteractiveCard = _chunkFBH73RRMcjs.InteractiveCard; exports.InteractiveSkeleton = InteractiveSkeleton; exports.InvestorUpdateCard = _chunkFBH73RRMcjs.InvestorUpdateCard; exports.InvestorUpdateCardSkeleton = _chunkFBH73RRMcjs.InvestorUpdateCardSkeleton; exports.JumpInIcon = _chunkLGLPNWS6cjs.JumpInIcon; exports.KnowledgeBaseLinksManager = _chunkFBH73RRMcjs.KnowledgeBaseLinksManager; exports.Label = _chunkFBH73RRMcjs.Label; exports.LaptopIcon = _chunkLGLPNWS6cjs.LaptopIcon; exports.LegalDocumentPage = LegalDocumentPage; exports.LinkedInIcon = _chunkLGLPNWS6cjs.LinkedInIcon; exports.LinuxIcon = _chunkLGLPNWS6cjs.LinuxIcon; exports.ListLoader = _chunkFBH73RRMcjs.ListLoader; exports.ListPageContainer = _chunkEB76VWM4cjs.ListPageContainer; exports.ListPageLayout = _chunkFBH73RRMcjs.ListPageLayout; exports.ListSkeleton = ListSkeleton; exports.LivestormIcon = _chunkLGLPNWS6cjs.LivestormIcon; exports.LoadError = _chunkEB76VWM4cjs.LoadError; exports.LoadingProvider = _chunkFBH73RRMcjs.LoadingProvider; exports.LogOutIcon = _chunkLGLPNWS6cjs.LogOutIcon; exports.LogsIcon = _chunkLGLPNWS6cjs.LogsIcon; exports.LowerTCOIcon = _chunkLGLPNWS6cjs.LowerTCOIcon; exports.LucideCheckCircleIcon = _chunkFBH73RRMcjs.CheckCircleIcon; exports.LucideXIcon = _chunkFBH73RRMcjs.XIcon; exports.LumaIcon = _chunkLGLPNWS6cjs.LumaIcon; exports.MESSAGE_ROLE = _chunkFBH73RRMcjs.MESSAGE_ROLE; exports.MESSAGE_TYPE = _chunkFBH73RRMcjs.MESSAGE_TYPE; exports.MSPDisplay = MSPDisplay; exports.MUX_IMAGE_ORIGIN = _chunkEB76VWM4cjs.MUX_IMAGE_ORIGIN; exports.MUX_STREAM_ORIGIN = _chunkEB76VWM4cjs.MUX_STREAM_ORIGIN; exports.MacOSIcon = _chunkLGLPNWS6cjs.MacOSIcon; exports.MadeWithLove = MadeWithLove; exports.MarginCrisisIcon = _chunkLGLPNWS6cjs.MarginCrisisIcon; exports.MarginReportSkeleton = MarginReportSkeleton; exports.MarkdownEditor = _chunkFBH73RRMcjs.MarkdownEditor; exports.MediaCarousel = MediaCarousel; exports.MediaGalleryManager = _chunkFBH73RRMcjs.MediaGalleryManager; exports.MediaSkeleton = MediaSkeleton; exports.MediaTypeSelector = _chunkFBH73RRMcjs.MediaTypeSelector; exports.MenuIcon = _chunkLGLPNWS6cjs.MenuIcon; exports.Menubar = _chunkFBH73RRMcjs.Menubar; exports.MenubarCheckboxItem = _chunkFBH73RRMcjs.MenubarCheckboxItem; exports.MenubarContent = _chunkFBH73RRMcjs.MenubarContent; exports.MenubarGroup = _chunkFBH73RRMcjs.MenubarGroup; exports.MenubarItem = _chunkFBH73RRMcjs.MenubarItem; exports.MenubarLabel = _chunkFBH73RRMcjs.MenubarLabel; exports.MenubarMenu = _chunkFBH73RRMcjs.MenubarMenu; exports.MenubarPortal = _chunkFBH73RRMcjs.MenubarPortal; exports.MenubarRadioGroup = _chunkFBH73RRMcjs.MenubarRadioGroup; exports.MenubarRadioItem = _chunkFBH73RRMcjs.MenubarRadioItem; exports.MenubarSeparator = _chunkFBH73RRMcjs.MenubarSeparator; exports.MenubarShortcut = _chunkFBH73RRMcjs.MenubarShortcut; exports.MenubarSub = _chunkFBH73RRMcjs.MenubarSub; exports.MenubarSubContent = _chunkFBH73RRMcjs.MenubarSubContent; exports.MenubarSubTrigger = _chunkFBH73RRMcjs.MenubarSubTrigger; exports.MenubarTrigger = _chunkFBH73RRMcjs.MenubarTrigger; exports.MessageCircleIcon = _chunkLGLPNWS6cjs.MessageCircleIcon; exports.MessageSegmentAccumulator = _chunkFBH73RRMcjs.MessageSegmentAccumulator; exports.MetricValue = MetricValue; exports.MiamiCyberGangLogo = _chunkLGLPNWS6cjs.MiamiCyberGangLogo; exports.MiamiCyberGangLogoFaceOnly = _chunkLGLPNWS6cjs.MiamiCyberGangLogoFaceOnly; exports.MicrosoftIcon = _chunkLGLPNWS6cjs.MicrosoftIcon; exports.MingoChatHistory = _chunkFBH73RRMcjs.MingoChatHistory; exports.MingoChatHistorySkeleton = _chunkFBH73RRMcjs.MingoChatHistorySkeleton; exports.MingoIcon = _chunkLGLPNWS6cjs.MingoIcon; exports.MingoOnboardingCard = _chunkFBH73RRMcjs.MingoOnboardingCard; exports.MingoOnboardingCardSkeleton = _chunkFBH73RRMcjs.MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = _chunkFBH73RRMcjs.MingoOnboardingListSkeleton; exports.MingoWelcome = _chunkFBH73RRMcjs.MingoWelcome; exports.MinusCircleIcon = _chunkLGLPNWS6cjs.MinusCircleIcon; exports.MinusIcon = _chunkFBH73RRMcjs.MinusIcon; exports.MlgLogo = _chunkLGLPNWS6cjs.MlgLogo; exports.MobileBurgerMenu = _chunkFBH73RRMcjs.MobileBurgerMenu; exports.MobileNavPanel = _chunkFBH73RRMcjs.MobileNavPanel; exports.Modal = _chunkFBH73RRMcjs.Modal; exports.ModalContent = _chunkFBH73RRMcjs.ModalContent; exports.ModalFooter = _chunkFBH73RRMcjs.ModalFooter; exports.ModalHeader = _chunkFBH73RRMcjs.ModalHeader; exports.ModalTitle = _chunkFBH73RRMcjs.ModalTitle; exports.ModalV2 = _chunkFBH73RRMcjs.Modal2; exports.ModalV2Content = _chunkFBH73RRMcjs.ModalContent2; exports.ModalV2Footer = _chunkFBH73RRMcjs.ModalFooter2; exports.ModalV2Header = _chunkFBH73RRMcjs.ModalHeader2; exports.ModalV2Title = _chunkFBH73RRMcjs.ModalTitle2; exports.ModelDisplay = _chunkFBH73RRMcjs.ModelDisplay; exports.ModularHellIcon = _chunkLGLPNWS6cjs.ModularHellIcon; exports.MoonIcon = _chunkLGLPNWS6cjs.MoonIcon; exports.MoreAboutButton = _chunkFBH73RRMcjs.MoreAboutButton; exports.MoreActionsMenu = _chunkFBH73RRMcjs.MoreActionsMenu; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.NETWORK_CONFIG = _chunkFBH73RRMcjs.NETWORK_CONFIG; exports.NEW_TAB_FEATURES = _chunkEB76VWM4cjs.NEW_TAB_FEATURES; exports.NOCIcon = _chunkLGLPNWS6cjs.NOCIcon; exports.NaturalLanguageIcon = _chunkLGLPNWS6cjs.NaturalLanguageIcon; exports.NavLinkAnchorViaRuntime = _chunkFBH73RRMcjs.NavLinkAnchorViaRuntime; exports.NavigationMenu = _chunkFBH73RRMcjs.NavigationMenu; exports.NavigationMenuContent = _chunkFBH73RRMcjs.NavigationMenuContent; exports.NavigationMenuIndicator = _chunkFBH73RRMcjs.NavigationMenuIndicator; exports.NavigationMenuItem = _chunkFBH73RRMcjs.NavigationMenuItem; exports.NavigationMenuLink = _chunkFBH73RRMcjs.NavigationMenuLink; exports.NavigationMenuList = _chunkFBH73RRMcjs.NavigationMenuList; exports.NavigationMenuTrigger = _chunkFBH73RRMcjs.NavigationMenuTrigger; exports.NavigationMenuViewport = _chunkFBH73RRMcjs.NavigationMenuViewport; exports.NavigationSidebar = _chunkFBH73RRMcjs.NavigationSidebar; exports.NavigationSkeleton = NavigationSkeleton; exports.NetworkIcon = _chunkLGLPNWS6cjs.NetworkIcon; exports.NotFoundError = _chunkEB76VWM4cjs.NotFoundError; exports.NotificationDrawer = _chunkFBH73RRMcjs.NotificationDrawer; exports.NotificationPopups = _chunkFBH73RRMcjs.NotificationPopups; exports.NotificationTile = _chunkFBH73RRMcjs.NotificationTile; exports.NotificationsProvider = _chunkFBH73RRMcjs.NotificationsProvider; exports.NushellIcon = _chunkLGLPNWS6cjs.NushellIcon; exports.OPENFRAME_PATHS = _chunkFBH73RRMcjs.OPENFRAME_PATHS; exports.OPSIcon = _chunkLGLPNWS6cjs.OPSIcon; exports.OSTypeBadge = _chunkFBH73RRMcjs.OSTypeBadge; exports.OSTypeBadgeGroup = _chunkFBH73RRMcjs.OSTypeBadgeGroup; exports.OSTypeIcon = _chunkFBH73RRMcjs.OSTypeIcon; exports.OSTypeLabel = _chunkFBH73RRMcjs.OSTypeLabel; exports.OWNER_TYPE = _chunkFBH73RRMcjs.OWNER_TYPE; exports.OnboardingGuideCard = _chunkEB76VWM4cjs.OnboardingGuideCard; exports.OnboardingGuideCardSkeleton = _chunkEB76VWM4cjs.OnboardingGuideCardSkeleton; exports.OnboardingStepCard = _chunkFBH73RRMcjs.OnboardingStepCard; exports.OnboardingWalkthrough = _chunkFBH73RRMcjs.OnboardingWalkthrough; exports.OpenAiIcon = _chunkLGLPNWS6cjs.OpenAiIcon; exports.OpenFrameLogo = _chunkLGLPNWS6cjs.OpenFrameLogo; exports.OpenFrameText = _chunkLGLPNWS6cjs.OpenFrameText; exports.OpenSourceIcon = _chunkLGLPNWS6cjs.OpenSourceIcon; exports.OpenmspLogo = _chunkLGLPNWS6cjs.OpenmspLogo; exports.OrganizationCard = _chunkFBH73RRMcjs.OrganizationCard; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationsIcon = _chunkLGLPNWS6cjs.OrganizationsIcon; exports.PAGE_HEADING_CLASS = _chunkFBH73RRMcjs.PAGE_HEADING_CLASS; exports.PRICING_STYLES = PRICING_STYLES; exports.PackageIcon = _chunkLGLPNWS6cjs.PackageIcon; exports.PageActions = _chunkEB76VWM4cjs.PageActions; exports.PageContainer = _chunkEB76VWM4cjs.PageContainer; exports.PageError = _chunkEB76VWM4cjs.PageError; exports.PageHeading = _chunkFBH73RRMcjs.PageHeading; exports.PageLayout = _chunkFBH73RRMcjs.PageLayout; exports.PageLoader = _chunkFBH73RRMcjs.PageLoader; exports.PageShell = _chunkEB76VWM4cjs.PageShell; exports.Pagination = _chunkFBH73RRMcjs.Pagination; exports.PaginationContent = _chunkFBH73RRMcjs.PaginationContent; exports.PaginationEllipsis = _chunkFBH73RRMcjs.PaginationEllipsis; exports.PaginationItem = _chunkFBH73RRMcjs.PaginationItem; exports.PaginationLink = _chunkFBH73RRMcjs.PaginationLink; exports.PaginationNext = _chunkFBH73RRMcjs.PaginationNext; exports.PaginationPrevious = _chunkFBH73RRMcjs.PaginationPrevious; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ParallaxImageShowcase = _chunkFBH73RRMcjs.ParallaxImageShowcase; exports.PatchPolicyIcon = _chunkLGLPNWS6cjs.PatchPolicyIcon; exports.PathsDisplay = _chunkFBH73RRMcjs.PathsDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PhoneInput = _chunkFBH73RRMcjs.PhoneInput; exports.PilotIcon = _chunkLGLPNWS6cjs.PilotIcon; exports.PlatformBadge = _chunkFBH73RRMcjs.PlatformBadge; exports.PlatformFilterComponent = _chunkFBH73RRMcjs.PlatformFilterComponent; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.PlusCircleIcon = _chunkLGLPNWS6cjs.PlusCircleIcon; exports.PodbeanIcon = _chunkLGLPNWS6cjs.PodbeanIcon; exports.PoliciesIcon = _chunkLGLPNWS6cjs.PoliciesIcon; exports.PolicyConfigurationPanel = _chunkFBH73RRMcjs.PolicyConfigurationPanel; exports.PowerShellIcon = _chunkLGLPNWS6cjs.PowerShellIcon; exports.PricingDisplay = PricingDisplay; exports.PricingSkeleton = PricingSkeleton; exports.ProductReleaseCard = _chunkFBH73RRMcjs.ProductReleaseCard; exports.ProductReleaseCardSkeleton = _chunkFBH73RRMcjs.ProductReleaseCardSkeleton; exports.ProductReleasesView = ProductReleasesView; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.ProgramCard = _chunkFBH73RRMcjs.ProgramCard; exports.ProgramCardSkeleton = _chunkFBH73RRMcjs.ProgramCardSkeleton; exports.Progress = _chunkFBH73RRMcjs.Progress; exports.ProgressBar = _chunkFBH73RRMcjs.ProgressBar; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.ProviderButton = _chunkFBH73RRMcjs.ProviderButton; exports.PushButtonSelector = _chunkFBH73RRMcjs.PushButtonSelector; exports.PythonIcon = _chunkLGLPNWS6cjs.PythonIcon; exports.QueriesIcon = _chunkLGLPNWS6cjs.QueriesIcon; exports.QueryReportTable = _chunkFBH73RRMcjs.QueryReportTable; exports.QueryReportTableHeader = _chunkFBH73RRMcjs.QueryReportTableHeader; exports.QueryReportTableRow = _chunkFBH73RRMcjs.QueryReportTableRow; exports.QueryReportTableSkeleton = _chunkFBH73RRMcjs.QueryReportTableSkeleton; exports.RATIO_DISPLAY_GRID_CLASS = _chunkEB76VWM4cjs.RATIO_DISPLAY_GRID_CLASS; exports.RATIO_GRID_CLASS = _chunkEB76VWM4cjs.RATIO_GRID_CLASS; exports.ROW_HEIGHT_DESKTOP = _chunkFBH73RRMcjs.ROW_HEIGHT_DESKTOP; exports.ROW_HEIGHT_MOBILE = _chunkFBH73RRMcjs.ROW_HEIGHT_MOBILE; exports.RadioGroup = _chunkFBH73RRMcjs.RadioGroup; exports.RadioGroupBlock = _chunkFBH73RRMcjs.RadioGroupBlock; exports.RadioGroupItem = _chunkFBH73RRMcjs.RadioGroupItem; exports.RapidInnovationIcon = _chunkLGLPNWS6cjs.RapidInnovationIcon; exports.RatioTabs = _chunkEB76VWM4cjs.RatioTabs; exports.ReclaimProfitsIcon = _chunkLGLPNWS6cjs.ReclaimProfitsIcon; exports.RedditIcon = _chunkLGLPNWS6cjs.RedditIcon; exports.RelatedContentSection = _chunkAIQ4DGO7cjs.RelatedContentSection; exports.ReleaseChangelogSection = _chunkFBH73RRMcjs.ReleaseChangelogSection; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.ReleaseMediaManager = _chunkFBH73RRMcjs.ReleaseMediaManager; exports.RemoteControlIcon = _chunkLGLPNWS6cjs.RemoteControlIcon; exports.RenameChatModal = _chunkFBH73RRMcjs.RenameChatModal; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.ResultBlock = _chunkFBH73RRMcjs.ResultBlock; exports.ResultsCount = ResultsCount; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.RoadmapCard = _chunkFBH73RRMcjs.RoadmapCard; exports.RoadmapCardSkeleton = _chunkFBH73RRMcjs.RoadmapCardSkeleton; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.RoadmapView = RoadmapView; exports.RoadmapVoteButton = _chunkFBH73RRMcjs.RoadmapVoteButton; exports.SCROLL_ANCHOR = _chunkFBH73RRMcjs.SCROLL_ANCHOR; exports.SCROLL_ANCHOR_WIRE_KEY = _chunkFBH73RRMcjs.SCROLL_ANCHOR_WIRE_KEY; exports.SEOEditorPreview = _chunkFBH73RRMcjs.SEOEditorPreview; exports.SOCIcon = _chunkLGLPNWS6cjs.SOCIcon; exports.SOURCE_ICON_NAMES = _chunkEB76VWM4cjs.SOURCE_ICON_NAMES; exports.SOURCE_LABELS_BY_TABLE = _chunkEB76VWM4cjs.SOURCE_LABELS_BY_TABLE; exports.SSOConfigurationIcon = _chunkLGLPNWS6cjs.SSOConfigurationIcon; exports.SYNTHETIC_REALTIME_ID_PREFIXES = _chunkFBH73RRMcjs.SYNTHETIC_REALTIME_ID_PREFIXES; exports.ScriptArguments = _chunkFBH73RRMcjs.ScriptArguments; exports.ScriptGenerationIcon = _chunkLGLPNWS6cjs.ScriptGenerationIcon; exports.ScriptIcon = _chunkLGLPNWS6cjs.ScriptIcon; exports.ScriptInfoSection = _chunkFBH73RRMcjs.ScriptInfoSection; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.SearchIcon = _chunkLGLPNWS6cjs.SearchIcon; exports.SearchInput = _chunkEB76VWM4cjs.SearchInput; exports.SectionSelector = _chunkFBH73RRMcjs.SectionSelector; exports.Select = _chunkFBH73RRMcjs.Select; exports.SelectButton = _chunkFBH73RRMcjs.SelectButton; exports.SelectContent = _chunkFBH73RRMcjs.SelectContent; exports.SelectGroup = _chunkFBH73RRMcjs.SelectGroup; exports.SelectItem = _chunkFBH73RRMcjs.SelectItem; exports.SelectLabel = _chunkFBH73RRMcjs.SelectLabel; exports.SelectScrollDownButton = _chunkFBH73RRMcjs.SelectScrollDownButton; exports.SelectScrollUpButton = _chunkFBH73RRMcjs.SelectScrollUpButton; exports.SelectSeparator = _chunkFBH73RRMcjs.SelectSeparator; exports.SelectTrigger = _chunkFBH73RRMcjs.SelectTrigger; exports.SelectValue = _chunkFBH73RRMcjs.SelectValue; exports.SelectionSourceBadge = SelectionSourceBadge; exports.SendIcon = _chunkLGLPNWS6cjs.SendIcon; exports.Separator = _chunkFBH73RRMcjs.Separator; exports.ServerIcon = _chunkLGLPNWS6cjs.ServerIcon; exports.ServiceCard = _chunkFBH73RRMcjs.ServiceCard; exports.SettingsIcon = _chunkLGLPNWS6cjs.SettingsIcon; exports.ShapeCircleDashIcon = _chunkLGLPNWS6cjs.ShapeCircleDashIcon; exports.Sheet = _chunkFBH73RRMcjs.Sheet; exports.SheetClose = _chunkFBH73RRMcjs.SheetClose; exports.SheetContent = _chunkFBH73RRMcjs.SheetContent; exports.SheetDescription = _chunkFBH73RRMcjs.SheetDescription; exports.SheetFooter = _chunkFBH73RRMcjs.SheetFooter; exports.SheetHeader = _chunkFBH73RRMcjs.SheetHeader; exports.SheetOverlay = _chunkFBH73RRMcjs.SheetOverlay; exports.SheetPortal = _chunkFBH73RRMcjs.SheetPortal; exports.SheetTitle = _chunkFBH73RRMcjs.SheetTitle; exports.SheetTrigger = _chunkFBH73RRMcjs.SheetTrigger; exports.ShellIcon = _chunkLGLPNWS6cjs.ShellIcon; exports.ShellTypeBadge = _chunkFBH73RRMcjs.ShellTypeBadge; exports.ShieldCheckIcon = _chunkLGLPNWS6cjs.ShieldCheckIcon; exports.ShieldIcon = _chunkLGLPNWS6cjs.ShieldIcon; exports.ShieldKeyIcon = _chunkLGLPNWS6cjs.ShieldKeyIcon; exports.ShieldLockIcon = _chunkLGLPNWS6cjs.ShieldLockIcon; exports.SimpleMarkdownRenderer = _chunkEB76VWM4cjs.SimpleMarkdownRenderer; exports.Skeleton = _chunk6JINAOI7cjs.Skeleton; exports.SkeletonButton = _chunk6JINAOI7cjs.SkeletonButton; exports.SkeletonCard = _chunk6JINAOI7cjs.SkeletonCard; exports.SkeletonGrid = _chunk6JINAOI7cjs.SkeletonGrid; exports.SkeletonHeading = _chunk6JINAOI7cjs.SkeletonHeading; exports.SkeletonList = _chunk6JINAOI7cjs.SkeletonList; exports.SkeletonNavigation = _chunk6JINAOI7cjs.SkeletonNavigation; exports.SkeletonPresets = SkeletonPresets; exports.SkeletonText = _chunk6JINAOI7cjs.SkeletonText; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.SlackIcon = _chunkLGLPNWS6cjs.SlackIcon; exports.SlackMessageCard = _chunkFBH73RRMcjs.SlackMessageCard; exports.SlackMessageCardSkeleton = _chunkFBH73RRMcjs.SlackMessageCardSkeleton; exports.SlashCommandSuggestions = _chunkFBH73RRMcjs.SlashCommandSuggestions; exports.Slider = _chunkFBH73RRMcjs.Slider; exports.SlidersIcon = _chunkLGLPNWS6cjs.SlidersIcon; exports.SlidingSidebar = _chunkFBH73RRMcjs.SlidingSidebar; exports.SmartEscalationIcon = _chunkLGLPNWS6cjs.SmartEscalationIcon; exports.SocialIconRow = SocialIconRow; exports.SocialLinksManager = _chunkFBH73RRMcjs.SocialLinksManager; exports.SoftwareInfo = _chunkFBH73RRMcjs.SoftwareInfo; exports.SoftwareSourceBadge = _chunkFBH73RRMcjs.SoftwareSourceBadge; exports.SourceActionButton = _chunkFBH73RRMcjs.SourceActionButton; exports.SparklesIcon = _chunkLGLPNWS6cjs.SparklesIcon; exports.SplitButton = _chunkN5UOJC3Vcjs.SplitButton; exports.SquareAvatar = _chunkEB76VWM4cjs.SquareAvatar; exports.StartWithOpenFrameButton = _chunkFBH73RRMcjs.StartWithOpenFrameButton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.StatusBadge = _chunkEB76VWM4cjs.StatusBadge; exports.StatusFilterComponent = _chunkFBH73RRMcjs.StatusFilterComponent; exports.StatusIndicator = _chunkFBH73RRMcjs.StatusIndicator; exports.StatusUpdatesIcon = _chunkLGLPNWS6cjs.StatusUpdatesIcon; exports.StickySectionNav = _chunkFBH73RRMcjs.StickySectionNav; exports.SunIcon = _chunkLGLPNWS6cjs.SunIcon; exports.Switch = _chunkFBH73RRMcjs.Switch; exports.THEME_ATTRIBUTE = _chunkFBH73RRMcjs.THEME_ATTRIBUTE; exports.THEME_STORAGE_KEY = _chunkFBH73RRMcjs.THEME_STORAGE_KEY; exports.TICKET_STATUS_COLOR_PRESETS = _chunkFBH73RRMcjs.TICKET_STATUS_COLOR_PRESETS; exports.TabContent = _chunkFBH73RRMcjs.TabContent; exports.TabNavigation = _chunkFBH73RRMcjs.TabNavigation; exports.TabSelector = _chunkFBH73RRMcjs.TabSelector; exports.Table = _chunkFBH73RRMcjs.Table; exports.TableCardSkeleton = _chunkFBH73RRMcjs.TableCardSkeleton; exports.TableCell = _chunkFBH73RRMcjs.TableCell; exports.TableDescriptionCell = _chunkFBH73RRMcjs.TableDescriptionCell; exports.TableEmptyState = _chunkFBH73RRMcjs.TableEmptyState; exports.TableHeader = _chunkFBH73RRMcjs.TableHeader; exports.TableRow = _chunkFBH73RRMcjs.TableRow; exports.TableSkeleton = TableSkeleton; exports.TableTimestampCell = _chunkFBH73RRMcjs.TableTimestampCell; exports.TableViewIcon = _chunkLGLPNWS6cjs.TableViewIcon; exports.Tabs = _chunkEB76VWM4cjs.Tabs; exports.TabsContent = _chunkEB76VWM4cjs.TabsContent; exports.TabsList = _chunkEB76VWM4cjs.TabsList; exports.TabsTrigger = _chunkEB76VWM4cjs.TabsTrigger; exports.Tag = _chunkEB76VWM4cjs.Tag; exports.TagKeyValueFilter = _chunkFBH73RRMcjs.TagKeyValueFilter; exports.TagSearchInput = _chunkFBH73RRMcjs.TagSearchInput; exports.TagsInput = _chunkFBH73RRMcjs.TagsInput; exports.TagsManager = _chunkFBH73RRMcjs.TagsManager; exports.TagsSelector = _chunkFBH73RRMcjs.TagsSelector; exports.TaskTypeIcon = _chunkFBH73RRMcjs.TaskTypeIcon; exports.TelegramIcon = _chunkLGLPNWS6cjs.TelegramIcon; exports.TextSkeleton = TextSkeleton; exports.Textarea = _chunkFBH73RRMcjs.Textarea; exports.ThemeProvider = _chunkFBH73RRMcjs.ThemeProvider; exports.ThinkingDisplay = _chunkFBH73RRMcjs.ThinkingDisplay; exports.ThumbsDownIcon = _chunkLGLPNWS6cjs.ThumbsDownIcon; exports.ThumbsUpIcon = _chunkLGLPNWS6cjs.ThumbsUpIcon; exports.TicketAttachmentsList = _chunkFBH73RRMcjs.TicketAttachmentsList; exports.TicketCard = _chunkFBH73RRMcjs.TicketCard; exports.TicketCardSkeleton = _chunkFBH73RRMcjs.TicketCardSkeleton; exports.TicketDetailSection = _chunkFBH73RRMcjs.TicketDetailSection; exports.TicketInfoSection = _chunkFBH73RRMcjs.TicketInfoSection; exports.TicketNoteCard = _chunkFBH73RRMcjs.TicketNoteCard; exports.TicketNotesSection = _chunkFBH73RRMcjs.TicketNotesSection; exports.TicketStatusConfigList = _chunkFBH73RRMcjs.TicketStatusConfigList; exports.TicketStatusConfigRow = _chunkFBH73RRMcjs.TicketStatusConfigRow; exports.TicketStatusTag = _chunkFBH73RRMcjs.TicketStatusTag; exports.TimelineSkeleton = TimelineSkeleton; exports.TitleBlock = _chunkFBH73RRMcjs.TitleBlock; exports.TitleContentBlock = _chunkFBH73RRMcjs.TitleContentBlock; exports.ToastCard = _chunk3DC6MHW6cjs.ToastCard; exports.Toaster = _chunk3DC6MHW6cjs.Toaster; exports.Toggle = _chunkFBH73RRMcjs.Toggle; exports.ToggleGroup = _chunkFBH73RRMcjs.ToggleGroup; exports.ToggleGroupItem = _chunkFBH73RRMcjs.ToggleGroupItem; exports.ToolBadge = _chunkFBH73RRMcjs.ToolBadge; exports.ToolExecutionDisplay = _chunkFBH73RRMcjs.ToolExecutionDisplay; exports.Tooltip = _chunkFBH73RRMcjs.Tooltip; exports.TooltipContent = _chunkFBH73RRMcjs.TooltipContent; exports.TooltipProvider = _chunkFBH73RRMcjs.TooltipProvider; exports.TooltipTrigger = _chunkFBH73RRMcjs.TooltipTrigger; exports.TranscribeAndSummarizeCombinedSection = _chunkFBH73RRMcjs.TranscribeAndSummarizeCombinedSection; exports.TranscribeSummarizeSection = _chunkFBH73RRMcjs.TranscribeSummarizeSection; exports.TranscriptSummaryEditor = _chunkFBH73RRMcjs.TranscriptSummaryEditor; exports.TransparentTrustedIcon = _chunkLGLPNWS6cjs.TransparentTrustedIcon; exports.TruncateText = _chunkFBH73RRMcjs.TruncateText; exports.TrustpilotIcon = _chunkLGLPNWS6cjs.TrustpilotIcon; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.UnarchiveChatModal = _chunkFBH73RRMcjs.UnarchiveChatModal; exports.UnifiedPagination = _chunkLCYDTEEKcjs.UnifiedPagination; exports.UnifiedSkeleton = UnifiedSkeleton; exports.UserDisplay = UserDisplay; exports.UserIcon = _chunkLGLPNWS6cjs.UserIcon; exports.UsersGridSkeleton = UsersGridSkeleton; exports.UsersGroupIcon = _chunkLGLPNWS6cjs.UsersGroupIcon; exports.UsersIcon = _chunkLGLPNWS6cjs.UsersIcon; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.VendorDirectoryIcon = _chunkLGLPNWS6cjs.VendorDirectoryIcon; exports.VendorDisplayButton = VendorDisplayButton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.VendorIcon = VendorIcon; exports.VendorPageSkeleton = VendorPageSkeleton; exports.VendorShowcaseMainIcon = _chunkLGLPNWS6cjs.VendorShowcaseMainIcon; exports.VendorTag = VendorTag; exports.VendorsIcon = _chunkLGLPNWS6cjs.VendorsIcon; exports.Video = _chunkEB76VWM4cjs.Video; exports.VideoBiteCard = _chunkEB76VWM4cjs.VideoBiteCard; exports.VideoBitesDisplay = _chunkEB76VWM4cjs.VideoBitesDisplay; exports.VideoClipsSection = _chunkFBH73RRMcjs.VideoClipsSection; exports.VideoSourceSelector = _chunkFBH73RRMcjs.VideoSourceSelector; exports.ViewToggle = _chunkFBH73RRMcjs.ViewToggle; exports.WaitlistForm = _chunkFBH73RRMcjs.WaitlistForm; exports.WhatsAppIcon = _chunkLGLPNWS6cjs.WhatsAppIcon; exports.WindowsIcon = _chunkLGLPNWS6cjs.WindowsIcon; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.XCircleIcon = _chunkFBH73RRMcjs.XCircleIcon; exports.XLogo = _chunkLGLPNWS6cjs.XLogo; exports.YesNoDisplay = YesNoDisplay; exports.YouTubeIcon = _chunkLGLPNWS6cjs.YouTubeIcon; exports.alignJustify = _chunkFBH73RRMcjs.alignJustify; exports.applyProxyAuth = _chunkFBH73RRMcjs.applyProxyAuth; exports.badgeVariants = _chunkFBH73RRMcjs.badgeVariants; exports.blogFilterConfig = blogFilterConfig; exports.buildAnchorProps = _chunkEB76VWM4cjs.buildAnchorProps; exports.buildAutoContinuationDirective = _chunkFBH73RRMcjs.buildAutoContinuationDirective; exports.buildChatAttachmentViewUrl = _chunkFBH73RRMcjs.buildChatAttachmentViewUrl; exports.buildChatRefKey = _chunkFBH73RRMcjs.buildChatRefKey; exports.buildDiscussAddendum = _chunkFBH73RRMcjs.buildDiscussAddendum; exports.buildNatsWsUrl = _chunkFBH73RRMcjs.buildNatsWsUrl; exports.buildProductReleaseCardProps = _chunkFBH73RRMcjs.buildProductReleaseCardProps; exports.buttonVariants = _chunkN5UOJC3Vcjs.buttonVariants; exports.chatAuthedFetch = _chunkFBH73RRMcjs.embedAuthedFetch; exports.chatChipClass = _chunkFBH73RRMcjs.chatChipClass; exports.clearChatProxyAuth = _chunkFBH73RRMcjs.clearEmbedProxyAuth; exports.clickupTaskUrl = _chunkFBH73RRMcjs.clickupTaskUrl; exports.columnFromTicketStatus = _chunkFBH73RRMcjs.columnFromTicketStatus; exports.computeHistoryPrepend = _chunkFBH73RRMcjs.computeHistoryPrepend; exports.computeIsNewTab = _chunkEB76VWM4cjs.computeIsNewTab; exports.createColumnHelper = _chunkFBH73RRMcjs.createColumnHelper; exports.createMessageSegmentAccumulator = _chunkFBH73RRMcjs.createMessageSegmentAccumulator; exports.decideNewTab = _chunkEB76VWM4cjs.decideNewTab; exports.defaultBuildProductReleaseCardProps = _chunkFBH73RRMcjs.defaultBuildProductReleaseCardProps; exports.defaultTableIdForDocumentType = _chunkEB76VWM4cjs.defaultTableIdForDocumentType; exports.deriveColumns = _chunkFBH73RRMcjs.deriveColumns; exports.detectAspectRatio = _chunkEB76VWM4cjs.detectAspectRatio; exports.dotColorByVariant = _chunk3DC6MHW6cjs.dotColorByVariant; exports.escapeMarkdownInline = _chunkFBH73RRMcjs.escapeMarkdownInline; exports.evaluateFeatureValue = evaluateFeatureValue; exports.executeNavigation = _chunkFBH73RRMcjs.executeNavigation; exports.executeNavigationImperative = _chunkFBH73RRMcjs.executeNavigationImperative; exports.exportToCSV = _chunkFBH73RRMcjs.exportToCSV; exports.extractEntityIdFilter = _chunkFBH73RRMcjs.extractEntityIdFilter; exports.extractErrorMessages = _chunkFBH73RRMcjs.extractErrorMessages; exports.extractIncompleteMessageState = _chunkFBH73RRMcjs.extractIncompleteMessageState; exports.extractTextFromChunk = _chunkFBH73RRMcjs.extractTextFromChunk; exports.extractYouTubeId = _chunkEB76VWM4cjs.extractYouTubeId; exports.fetchSlashCommands = _chunkFBH73RRMcjs.fetchSlashCommands; exports.flattenAssistantContent = _chunkFBH73RRMcjs.flattenAssistantContent; exports.flattenMessagePagesChronological = _chunkFBH73RRMcjs.flattenMessagePagesChronological; exports.flexRender = _chunkFBH73RRMcjs.flexRender; exports.formatChatAttachmentMarkdownForBubble = _chunkFBH73RRMcjs.formatChatAttachmentMarkdownForBubble; exports.formatInvestorUpdatePeriod = _chunkFBH73RRMcjs.formatInvestorUpdatePeriod; exports.formatPricingForDisplay = formatPricingForDisplay; exports.formatRelativePath = _chunkKQQDN2WKcjs.formatRelativePath; exports.formatSingularLookupInvocation = _chunkFBH73RRMcjs.formatSingularLookupInvocation; exports.getApprovalMeta = _chunkFBH73RRMcjs.getApprovalMeta; exports.getCaptionsUrl = _chunkEB76VWM4cjs.getCaptionsUrl; exports.getChatProxyAuth = _chunkFBH73RRMcjs.getEmbedProxyAuth; exports.getCommandText = _chunkFBH73RRMcjs.getCommandText; exports.getCoreRowModel = _chunkFBH73RRMcjs.getCoreRowModel; exports.getDeviceTypeIcon = _chunkLGLPNWS6cjs.getDeviceTypeIcon; exports.getDynamicIcon = _chunkEB76VWM4cjs.getDynamicIcon; exports.getExpandedRowModel = _chunkFBH73RRMcjs.getExpandedRowModel; exports.getFacetedRowModel = _chunkFBH73RRMcjs.getFacetedRowModel; exports.getFacetedUniqueValues = _chunkFBH73RRMcjs.getFacetedUniqueValues; exports.getFilteredRowModel = _chunkFBH73RRMcjs.getFilteredRowModel; exports.getGroupedRowModel = _chunkFBH73RRMcjs.getGroupedRowModel; exports.getHideClasses = _chunkFBH73RRMcjs.getHideClasses; exports.getIconComponent = _chunkEB76VWM4cjs.getIconComponent; exports.getOpenFramePaths = _chunkFBH73RRMcjs.getOpenFramePaths; exports.getPaginationRowModel = _chunkFBH73RRMcjs.getPaginationRowModel; exports.getPersistedProxyEmail = _chunkFBH73RRMcjs.getPersistedProxyEmail; exports.getSortedRowModel = _chunkFBH73RRMcjs.getSortedRowModel; exports.getSourceIconName = _chunkEB76VWM4cjs.getSourceIconName; exports.getSourceLabel = _chunkEB76VWM4cjs.getSourceLabel; exports.getStatusColorScheme = _chunkFBH73RRMcjs.getStatusColorScheme; exports.getTabById = _chunkFBH73RRMcjs.getTabById; exports.getTabComponent = _chunkFBH73RRMcjs.getTabComponent; exports.getTaskTypeLabel = _chunkFBH73RRMcjs.getTaskTypeLabel; exports.getTicketStatusConfig = _chunkFBH73RRMcjs.getTicketStatusConfig; exports.getTicketStatusTag = _chunkFBH73RRMcjs.getTicketStatusTag; exports.groupByAspectRatio = _chunkEB76VWM4cjs.groupByAspectRatio; exports.groupTicketsByStatus = _chunkFBH73RRMcjs.groupTicketsByStatus; exports.handleChatNavClick = _chunkFBH73RRMcjs.handleChatNavClick; exports.isApprovalNotification = _chunkFBH73RRMcjs.isApprovalNotification; exports.isControlChunk = _chunkFBH73RRMcjs.isControlChunk; exports.isCrossOriginUrl = _chunkEB76VWM4cjs.isCrossOriginUrl; exports.isErrorChunk = _chunkFBH73RRMcjs.isErrorChunk; exports.isMetadataChunk = _chunkFBH73RRMcjs.isMetadataChunk; exports.isModifierClick = _chunkEB76VWM4cjs.isModifierClick; exports.isStructuredContent = _chunkFBH73RRMcjs.isStructuredContent; exports.kindToCanonicalStatus = _chunkFBH73RRMcjs.kindToCanonicalStatus; exports.mapDocSearchResults = _chunkKQQDN2WKcjs.mapDocSearchResults; exports.maxPersistedStreamSeq = _chunkFBH73RRMcjs.maxPersistedStreamSeq; exports.mergeHistoryWithRealtime = _chunkFBH73RRMcjs.mergeHistoryWithRealtime; exports.multiSelectFilterFn = _chunkFBH73RRMcjs.multiSelectFilterFn; exports.navigationMenuTriggerStyle = _chunkFBH73RRMcjs.navigationMenuTriggerStyle; exports.newTabAnchorAttrs = _chunkEB76VWM4cjs.newTabAnchorAttrs; exports.normalizeContent = _chunkFBH73RRMcjs.normalizeContent; exports.normalizeIconKey = _chunkEB76VWM4cjs.normalizeIconKey; exports.parseChunkToAction = _chunkFBH73RRMcjs.parseChunkToAction; exports.parseScrollAnchor = _chunkFBH73RRMcjs.parseScrollAnchor; exports.parseWireCommandOverride = _chunkFBH73RRMcjs.parseWireCommandOverride; exports.processHistoricalMessages = _chunkFBH73RRMcjs.processHistoricalMessages; exports.processHistoricalMessagesWithErrors = _chunkFBH73RRMcjs.processHistoricalMessagesWithErrors; exports.progressColorByVariant = _chunk3DC6MHW6cjs.progressColorByVariant; exports.ratioToCategory = _chunkEB76VWM4cjs.ratioToCategory; exports.remarkCardLinks = _chunkFBH73RRMcjs.remarkCardLinks; exports.renderChatInlineEntityCard = _chunkFBH73RRMcjs.renderChatInlineEntityCard; exports.renderSvgIcon = _chunkLGLPNWS6cjs.renderSvgIcon; exports.resolveExternalNavigation = _chunkEB76VWM4cjs.resolveExternalNavigation; exports.resolveSearchResultAction = _chunkKQQDN2WKcjs.resolveSearchResultAction; exports.resolveSourceIcon = _chunkEB76VWM4cjs.resolveSourceIcon; exports.resolveSourceRowCTA = _chunkEB76VWM4cjs.resolveSourceRowCTA; exports.resolveStatusTagProps = _chunkFBH73RRMcjs.resolveStatusTagProps; exports.resolveTicketStatus = _chunkFBH73RRMcjs.resolveTicketStatus; exports.safeHref = _chunkEB76VWM4cjs.safeHref; exports.sanitizeTitleForChat = _chunkFBH73RRMcjs.sanitizeTitleForChat; exports.setChatProxyAuth = _chunkFBH73RRMcjs.setEmbedProxyAuth; exports.setRealAuthHook = setRealAuthHook; exports.showCommandApprovalToast = _chunk3DC6MHW6cjs.showCommandApprovalToast; exports.showToast = _chunk3DC6MHW6cjs.showToast; exports.statusBadgeVariants = _chunkEB76VWM4cjs.statusBadgeVariants; exports.stripChatAttachmentMarkdown = _chunkFBH73RRMcjs.stripChatAttachmentMarkdown; exports.stripSameOriginToPath = _chunkEB76VWM4cjs.stripSameOriginToPath; exports.tagVariants = _chunkEB76VWM4cjs.tagVariants; exports.tintOnDark = _chunkFBH73RRMcjs.tintOnDark; exports.toggleVariants = _chunkFBH73RRMcjs.toggleVariants; exports.transformEventToProgram = _chunkFBH73RRMcjs.transformEventToProgram; exports.transformPodcastToProgram = _chunkFBH73RRMcjs.transformPodcastToProgram; exports.transformWebinarToProgram = _chunkFBH73RRMcjs.transformWebinarToProgram; exports.useAppLayoutDrawerContainer = _chunkFBH73RRMcjs.useAppLayoutDrawerContainer; exports.useAuth = useAuth; exports.useBoardCollapse = _chunkFBH73RRMcjs.useBoardCollapse; exports.useChat = _chunkFBH73RRMcjs.useChat; exports.useChatAttachmentImageGallery = _chunkFBH73RRMcjs.useChatAttachmentImageGallery; exports.useChatAttachments = _chunkFBH73RRMcjs.useChatAttachments; exports.useChatCardItem = _chunkFBH73RRMcjs.useChatCardItem; exports.useChatIdentity = _chunkFBH73RRMcjs.useChatIdentity; exports.useChunkCatchup = _chunkFBH73RRMcjs.useChunkCatchup; exports.useCloseOnNavigation = _chunkFBH73RRMcjs.useCloseOnNavigation; exports.useCollapsible = _chunkFBH73RRMcjs.useCollapsible; exports.useContentLoading = useContentLoading; exports.useDataTable = _chunkFBH73RRMcjs.useDataTable; exports.useDataTableContext = _chunkFBH73RRMcjs.useDataTableContext; exports.useDocSearch = _chunkKQQDN2WKcjs.useDocSearch; exports.useDynamicTheme = _chunkFBH73RRMcjs.useDynamicTheme; exports.useEmbeddedChat = _chunkFBH73RRMcjs.useSseChatAdapter; exports.useFiltersDropdown = _chunkFBH73RRMcjs.useFiltersDropdown; exports.useJetStreamDialogSubscription = _chunkFBH73RRMcjs.useJetStreamDialogSubscription; exports.useLegalDocs = useLegalDocs; exports.useLoading = _chunkFBH73RRMcjs.useLoading; exports.useNatsChatAdapter = _chunkFBH73RRMcjs.useNatsChatAdapter; exports.useNatsDialogSubscription = _chunkFBH73RRMcjs.useNatsDialogSubscription; exports.useNotifications = _chunkFBH73RRMcjs.useNotifications; exports.useOnboardingState = _chunk3DC6MHW6cjs.useOnboardingState; exports.useOptionalNotifications = _chunkFBH73RRMcjs.useOptionalNotifications; exports.usePageActionsBottomPadding = _chunkEB76VWM4cjs.usePageActionsBottomPadding; exports.usePaginationLoading = usePaginationLoading; exports.useProxiedImageUrl = _chunkFBH73RRMcjs.useProxiedImageUrl; exports.useRealtimeChunkProcessor = _chunkFBH73RRMcjs.useRealtimeChunkProcessor; exports.useRoadmapVoting = useRoadmapVoting; exports.useSSE = _chunkFBH73RRMcjs.useSSE; exports.useSectionNavigation = _chunkFBH73RRMcjs.useSectionNavigation; exports.useSlashCommandRegistry = _chunkFBH73RRMcjs.useSlashCommandRegistry; exports.useSlashCommands = _chunkFBH73RRMcjs.useSlashCommands; exports.useSseChatAdapter = _chunkFBH73RRMcjs.useSseChatAdapter; exports.useTheme = _chunkFBH73RRMcjs.useTheme; exports.useThemeToggle = _chunkFBH73RRMcjs.useThemeToggle; exports.useUnifiedChat = _chunkFBH73RRMcjs.useUnifiedChat; exports.useUnifiedFiltering = useUnifiedFiltering; exports.useVideoOriginPreconnect = _chunkEB76VWM4cjs.useVideoOriginPreconnect; exports.useVideoWarmup = _chunkEB76VWM4cjs.useVideoWarmup; exports.usesCanonicalStatusStyle = _chunkFBH73RRMcjs.usesCanonicalStatusStyle; exports.vendorFilterConfig = vendorFilterConfig;
|
|
7907
|
+
exports.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE = _chunkFBH73RRMcjs.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE; exports.AIEnrichButton = _chunkFBH73RRMcjs.AIEnrichButton; exports.AIEnrichSection = _chunkFBH73RRMcjs.AIEnrichSection; exports.AIRequiredBadge = _chunkFBH73RRMcjs.AIRequiredBadge; exports.AIStatusIndicator = _chunkFBH73RRMcjs.AIStatusIndicator; exports.AIWarningsSection = _chunkFBH73RRMcjs.AIWarningsSection; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = _chunkFBH73RRMcjs.ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.APPROVAL_STATUS = _chunkFBH73RRMcjs.APPROVAL_STATUS; exports.ASSISTANT_TYPE = _chunkFBH73RRMcjs.ASSISTANT_TYPE; exports.AUTHOR_TYPE = _chunkFBH73RRMcjs.AUTHOR_TYPE; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = _chunkFBH73RRMcjs.AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.AboutIcon = _chunkLGLPNWS6cjs.AboutIcon; exports.Accordion = _chunkFBH73RRMcjs.Accordion; exports.AccordionContent = _chunkFBH73RRMcjs.AccordionContent; exports.AccordionItem = _chunkFBH73RRMcjs.AccordionItem; exports.AccordionTrigger = _chunkFBH73RRMcjs.AccordionTrigger; exports.ActionsMenu = _chunkEB76VWM4cjs.ActionsMenu; exports.ActionsMenuDropdown = _chunkEB76VWM4cjs.ActionsMenuDropdown; exports.AdminContentCard = _chunkFBH73RRMcjs.AdminContentCard; exports.AiRobotIcon = _chunkLGLPNWS6cjs.AiRobotIcon; exports.Alert = _chunkFBH73RRMcjs.Alert; exports.AlertDescription = _chunkFBH73RRMcjs.AlertDescription; exports.AlertDialog = _chunkFBH73RRMcjs.AlertDialog; exports.AlertDialogAction = _chunkFBH73RRMcjs.AlertDialogAction; exports.AlertDialogCancel = _chunkFBH73RRMcjs.AlertDialogCancel; exports.AlertDialogContent = _chunkFBH73RRMcjs.AlertDialogContent; exports.AlertDialogDescription = _chunkFBH73RRMcjs.AlertDialogDescription; exports.AlertDialogFooter = _chunkFBH73RRMcjs.AlertDialogFooter; exports.AlertDialogHeader = _chunkFBH73RRMcjs.AlertDialogHeader; exports.AlertDialogOverlay = _chunkFBH73RRMcjs.AlertDialogOverlay; exports.AlertDialogPortal = _chunkFBH73RRMcjs.AlertDialogPortal; exports.AlertDialogTitle = _chunkFBH73RRMcjs.AlertDialogTitle; exports.AlertDialogTrigger = _chunkFBH73RRMcjs.AlertDialogTrigger; exports.AlertTitle = _chunkFBH73RRMcjs.AlertTitle; exports.AlertTriangleIcon = _chunkLGLPNWS6cjs.AlertTriangleIcon; exports.AllowedDomainsInput = _chunkFBH73RRMcjs.AllowedDomainsInput; exports.AnnouncementBar = AnnouncementBar; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.AppHeader = _chunkFBH73RRMcjs.AppHeader; exports.AppLayout = _chunkFBH73RRMcjs.AppLayout; exports.AppLayoutDrawer = _chunkFBH73RRMcjs.AppLayoutDrawerRoot; exports.AppLayoutDrawerBody = _chunkFBH73RRMcjs.AppLayoutDrawerBody; exports.AppLayoutDrawerClose = _chunkFBH73RRMcjs.AppLayoutDrawerClose; exports.AppLayoutDrawerContent = _chunkFBH73RRMcjs.AppLayoutDrawerContent; exports.AppLayoutDrawerDescription = _chunkFBH73RRMcjs.AppLayoutDrawerDescription; exports.AppLayoutDrawerFooter = _chunkFBH73RRMcjs.AppLayoutDrawerFooter; exports.AppLayoutDrawerHeader = _chunkFBH73RRMcjs.AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = _chunkFBH73RRMcjs.AppLayoutDrawerTitle; exports.AppLayoutDrawerTrigger = _chunkFBH73RRMcjs.AppLayoutDrawerTrigger; exports.ApprovalBatchMessage = _chunkFBH73RRMcjs.ApprovalBatchMessage; exports.ApprovalRequestMessage = _chunkFBH73RRMcjs.ApprovalRequestMessage; exports.ApprovalRequestNotificationTile = _chunkFBH73RRMcjs.ApprovalRequestNotificationTile; exports.ArchiveChatModal = _chunkFBH73RRMcjs.ArchiveChatModal; exports.ArchiveIcon = _chunkLGLPNWS6cjs.ArchiveIcon; exports.ArgRow = _chunkFBH73RRMcjs.ArgRow; exports.ArrayEntryManager = _chunkFBH73RRMcjs.ArrayEntryManager; exports.ArticleAuthorByline = _chunkKQQDN2WKcjs.ArticleAuthorByline; exports.ArticleDetailLayout = _chunkEB76VWM4cjs.ArticleDetailLayout; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.AspectRatio = _chunkFBH73RRMcjs.AspectRatio; exports.AssigneeDropdown = _chunkFBH73RRMcjs.AssigneeDropdown; exports.AuditLoggingIcon = _chunkLGLPNWS6cjs.AuditLoggingIcon; exports.AuthProvider = AuthProvider; exports.AuthProvidersList = _chunkFBH73RRMcjs.AuthProvidersList; exports.AuthorDetailView = AuthorDetailView; exports.Autocomplete = _chunkFBH73RRMcjs.Autocomplete; exports.AutomateEverythingIcon = _chunkLGLPNWS6cjs.AutomateEverythingIcon; exports.AutomatedDiagnosticsIcon = _chunkLGLPNWS6cjs.AutomatedDiagnosticsIcon; exports.Badge = _chunkFBH73RRMcjs.Badge; exports.BashIcon = _chunkLGLPNWS6cjs.BashIcon; exports.BenefitCard = _chunkFBH73RRMcjs.BenefitCard; exports.BenefitCardGrid = _chunkFBH73RRMcjs.BenefitCardGrid; exports.BlockCard = _chunkFBH73RRMcjs.BlockCard; exports.BlogCard = _chunkFBH73RRMcjs.BlogCard; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.BlogCardSkeleton = _chunkFBH73RRMcjs.BlogCardSkeleton; exports.BlogImagePlaceholder = _chunkEB76VWM4cjs.BlogImagePlaceholder; exports.Board = _chunkFBH73RRMcjs.Board; exports.BoardColumn = _chunkFBH73RRMcjs.BoardColumn; exports.BoardColumnHeader = _chunkFBH73RRMcjs.BoardColumnHeader; exports.BotIcon = _chunkLGLPNWS6cjs.BotIcon; exports.BrandAssociationCard = _chunkFBH73RRMcjs.BrandAssociationCard; exports.BrandAssociationGrid = _chunkFBH73RRMcjs.BrandAssociationGrid; exports.Breadcrumb = _chunkFBH73RRMcjs.Breadcrumb; exports.BreadcrumbEllipsis = _chunkFBH73RRMcjs.BreadcrumbEllipsis; exports.BreadcrumbItem = _chunkFBH73RRMcjs.BreadcrumbItem; exports.BreadcrumbLink = _chunkFBH73RRMcjs.BreadcrumbLink; exports.BreadcrumbList = _chunkFBH73RRMcjs.BreadcrumbList; exports.BreadcrumbPage = _chunkFBH73RRMcjs.BreadcrumbPage; exports.BreadcrumbSeparator = _chunkFBH73RRMcjs.BreadcrumbSeparator; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.BuildingsIcon = _chunkLGLPNWS6cjs.BuildingsIcon; exports.BulkOperationsIcon = _chunkLGLPNWS6cjs.BulkOperationsIcon; exports.BulletList = _chunkFBH73RRMcjs.BulletList; exports.Button = _chunkN5UOJC3Vcjs.Button; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.CHAT_ATTACHMENT_MIME_TYPES = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = _chunkFBH73RRMcjs.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_TYPE = _chunkFBH73RRMcjs.CHAT_TYPE; exports.CHIP_ACTION_BUTTON_CLASS = _chunkFBH73RRMcjs.CHIP_ACTION_BUTTON_CLASS; exports.COMPACT_CARD_ICON_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_IMAGE_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_META_ROW = _chunkEB76VWM4cjs.COMPACT_CARD_META_ROW; exports.COMPACT_CARD_META_ROW_BOX = _chunkEB76VWM4cjs.COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_OUTER = _chunkEB76VWM4cjs.COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = _chunkEB76VWM4cjs.COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_ROW_FILLER = _chunkEB76VWM4cjs.COMPACT_CARD_ROW_FILLER; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = _chunkEB76VWM4cjs.COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_OUTER = _chunkEB76VWM4cjs.COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_SUBTITLE = _chunkEB76VWM4cjs.COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = _chunkEB76VWM4cjs.COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_TEXT_COL = _chunkEB76VWM4cjs.COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE = _chunkEB76VWM4cjs.COMPACT_CARD_TITLE; exports.COMPACT_CARD_TITLE_ROW = _chunkEB76VWM4cjs.COMPACT_CARD_TITLE_ROW; exports.COMPACT_HEADER_BUTTON = _chunkFBH73RRMcjs.COMPACT_HEADER_BUTTON; exports.CONNECTION_STATUS = _chunkFBH73RRMcjs.CONNECTION_STATUS; exports.CUSTOM_ITEM_ID = _chunkFBH73RRMcjs.CUSTOM_ITEM_ID; exports.CUSTOM_PRESET_KEY = _chunkFBH73RRMcjs.CUSTOM_PRESET_KEY; exports.CampaignCardAdmin = _chunkFBH73RRMcjs.CampaignCardAdmin; exports.CampaignCardAdminSkeleton = _chunkFBH73RRMcjs.CampaignCardAdminSkeleton; exports.CapterraIcon = _chunkLGLPNWS6cjs.CapterraIcon; exports.Card = _chunkEB76VWM4cjs.Card; exports.CardContent = _chunkEB76VWM4cjs.CardContent; exports.CardDescription = _chunkEB76VWM4cjs.CardDescription; exports.CardFooter = _chunkEB76VWM4cjs.CardFooter; exports.CardHeader = _chunkEB76VWM4cjs.CardHeader; exports.CardHorizontal = _chunkEB76VWM4cjs.CardHorizontal; exports.CardLoader = _chunkFBH73RRMcjs.CardLoader; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.CardTitle = _chunkEB76VWM4cjs.CardTitle; exports.CartaIcon = _chunkLGLPNWS6cjs.CartaIcon; exports.CaseStudyCard = _chunkFBH73RRMcjs.CaseStudyCard; exports.CaseStudyCardSkeleton = _chunkFBH73RRMcjs.CaseStudyCardSkeleton; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.ChangelogManager = _chunkFBH73RRMcjs.ChangelogManager; exports.ChangelogSectionsManager = _chunkFBH73RRMcjs.ChangelogSectionsManager; exports.ChatArchivePage = _chunkFBH73RRMcjs.ChatArchivePage; exports.ChatAttachmentAddButton = _chunkFBH73RRMcjs.ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = _chunkFBH73RRMcjs.ChatAttachmentChipStrip; exports.ChatCardLoader = _chunkFBH73RRMcjs.ChatCardLoader; exports.ChatComposer = _chunkFBH73RRMcjs.ChatComposer; exports.ChatContainer = _chunkFBH73RRMcjs.ChatContainer; exports.ChatContent = _chunkFBH73RRMcjs.ChatContent; exports.ChatDialogModals = _chunkFBH73RRMcjs.ChatDialogModals; exports.ChatFooter = _chunkFBH73RRMcjs.ChatFooter; exports.ChatHeader = _chunkFBH73RRMcjs.ChatHeader; exports.ChatHeaderIconButton = _chunkFBH73RRMcjs.ChatHeaderIconButton; exports.ChatIdentityProvider = _chunkFBH73RRMcjs.ChatIdentityProvider; exports.ChatInput = _chunkFBH73RRMcjs.ChatInput; exports.ChatMessageEnhanced = _chunkFBH73RRMcjs.MemoizedChatMessageEnhanced; exports.ChatMessageList = _chunkFBH73RRMcjs.ChatMessageList; exports.ChatMessageListSkeleton = _chunkFBH73RRMcjs.ChatMessageListSkeleton; exports.ChatMessageRow = _chunkFBH73RRMcjs.ChatMessageRow; exports.ChatMessageRowSkeleton = _chunkFBH73RRMcjs.ChatMessageRowSkeleton; exports.ChatMessageSkeleton = _chunkFBH73RRMcjs.ChatMessageSkeleton; exports.ChatPanelHeader = _chunkFBH73RRMcjs.ChatPanelHeader; exports.ChatQuickAction = _chunkFBH73RRMcjs.ChatQuickAction; exports.ChatQuickActionRow = _chunkFBH73RRMcjs.ChatQuickActionRow; exports.ChatSidebar = _chunkFBH73RRMcjs.ChatSidebar; exports.ChatTicketItem = _chunkFBH73RRMcjs.ChatTicketItem; exports.ChatTicketList = _chunkFBH73RRMcjs.ChatTicketList; exports.ChatTypingIndicator = _chunkFBH73RRMcjs.ChatTypingIndicator; exports.ChatVideoEntityCard = _chunkFBH73RRMcjs.ChatVideoEntityCard; exports.CheckCircleIcon = _chunkLGLPNWS6cjs.CheckCircleIcon; exports.CheckIcon = _chunkFBH73RRMcjs.CheckIcon; exports.Checkbox = _chunk6JINAOI7cjs.Checkbox; exports.CheckboxBlock = _chunkFBH73RRMcjs.CheckboxBlock; exports.CheckboxWithDescription = _chunkFBH73RRMcjs.CheckboxWithDescription; exports.ChevronButton = _chunk7VMEOFEAcjs.ChevronButton; exports.CircularProgress = _chunkFBH73RRMcjs.CircularProgress; exports.ClaudeIcon = _chunkLGLPNWS6cjs.ClaudeIcon; exports.ClickUpIcon = _chunkLGLPNWS6cjs.ClickUpIcon; exports.ClickUpTasksManager = _chunkFBH73RRMcjs.ClickUpTasksManager; exports.ClientOnlyHeader = _chunkFBH73RRMcjs.ClientOnlyHeader; exports.CmdIcon = _chunkLGLPNWS6cjs.CmdIcon; exports.CoinsIcon = _chunkLGLPNWS6cjs.CoinsIcon; exports.ColorPickerInput = _chunkFBH73RRMcjs.ColorPickerInput; exports.ColorPresetSelect = _chunkFBH73RRMcjs.ColorPresetSelect; exports.ColorSwatch = _chunkFBH73RRMcjs.ColorSwatch; exports.CommandApprovalToast = _chunk3DC6MHW6cjs.CommandApprovalToast; exports.CommandBox = _chunkFBH73RRMcjs.CommandBox; exports.CommentCard = CommentCard; exports.CommentSkeleton = CommentSkeleton; exports.CommunityHubIcon = _chunkLGLPNWS6cjs.CommunityHubIcon; exports.CommunityIcon = _chunkLGLPNWS6cjs.CommunityIcon; exports.CompactPageLoader = _chunkFBH73RRMcjs.CompactPageLoader; exports.CompareIcon = _chunkLGLPNWS6cjs.CompareIcon; exports.ConfidenceBadge = _chunkFBH73RRMcjs.ConfidenceBadge; exports.ContentLoader = _chunkFBH73RRMcjs.ContentLoader; exports.ContentLoadingContainer = ContentLoadingContainer; exports.ContentPageContainer = _chunkEB76VWM4cjs.ContentPageContainer; exports.ContextCompactionDisplay = _chunkFBH73RRMcjs.ContextCompactionDisplay; exports.CopyIcon = _chunkLGLPNWS6cjs.CopyIcon; exports.CpuIcon = _chunkLGLPNWS6cjs.CpuIcon; exports.CursorPagination = _chunkFBH73RRMcjs.CursorPagination; exports.CursorPaginationSimple = _chunkFBH73RRMcjs.CursorPaginationSimple; exports.CustomExternalLinkIcon = _chunkLGLPNWS6cjs.CustomExternalLinkIcon; exports.CustomForkIcon = _chunkLGLPNWS6cjs.CustomForkIcon; exports.CustomLicenseIcon = _chunkLGLPNWS6cjs.CustomLicenseIcon; exports.CustomStarIcon = _chunkLGLPNWS6cjs.CustomStarIcon; exports.CustomTimeIcon = _chunkLGLPNWS6cjs.CustomTimeIcon; exports.CustomerInterviewCard = _chunkFBH73RRMcjs.CustomerInterviewCard; exports.CustomerInterviewCardSkeleton = _chunkFBH73RRMcjs.CustomerInterviewCardSkeleton; exports.CutVendorCostsIcon = _chunkLGLPNWS6cjs.CutVendorCostsIcon; exports.CveLink = _chunkFBH73RRMcjs.CveLink; exports.DEFAULT_CUSTOM_STATUS_COLOR = _chunkFBH73RRMcjs.DEFAULT_CUSTOM_STATUS_COLOR; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = _chunkEB76VWM4cjs.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.DEFAULT_THEME = _chunkFBH73RRMcjs.DEFAULT_THEME; exports.DashboardIcon = _chunkLGLPNWS6cjs.DashboardIcon; exports.DashboardInfoCard = _chunkFBH73RRMcjs.DashboardInfoCard; exports.DataRoomDocCard = _chunkFBH73RRMcjs.DataRoomDocCard; exports.DataRoomDocCardSkeleton = _chunkFBH73RRMcjs.DataRoomDocCardSkeleton; exports.DataTable = _chunkFBH73RRMcjs.DataTable; exports.DataTableBody = _chunkFBH73RRMcjs.DataTableBody; exports.DataTableCursorFooter = _chunkFBH73RRMcjs.DataTableCursorFooter; exports.DataTableEmpty = _chunkFBH73RRMcjs.DataTableEmpty; exports.DataTableHeader = _chunkFBH73RRMcjs.DataTableHeader; exports.DataTableInfiniteFooter = _chunkFBH73RRMcjs.DataTableInfiniteFooter; exports.DataTableRoot = _chunkFBH73RRMcjs.DataTableRoot; exports.DataTableRow = _chunkFBH73RRMcjs.DataTableRow; exports.DataTableRowCount = _chunkFBH73RRMcjs.DataTableRowCount; exports.DataTableSkeleton = _chunkFBH73RRMcjs.DataTableSkeleton; exports.DatePicker = _chunkFBH73RRMcjs.DatePicker; exports.DatePickerInput = _chunkFBH73RRMcjs.DatePickerInput; exports.DatePickerInputSimple = _chunkFBH73RRMcjs.DatePickerInputSimple; exports.DateTimePicker = DateTimePicker; exports.DeliveryLists = DeliveryLists; exports.DeliveryRow = _chunkLCYDTEEKcjs.DeliveryRow; exports.DeliveryTable = DeliveryTable; exports.DenoIcon = _chunkLGLPNWS6cjs.DenoIcon; exports.DesktopIcon = _chunkLGLPNWS6cjs.DesktopIcon; exports.DetailLoader = _chunkFBH73RRMcjs.DetailLoader; exports.DetailPageContainer = _chunkEB76VWM4cjs.DetailPageContainer; exports.DetailPageSkeleton = _chunkKQQDN2WKcjs.DetailPageSkeleton; exports.DevCardRowContent = _chunkLCYDTEEKcjs.DevCardRowContent; exports.DevCardRowSkeleton = _chunkLCYDTEEKcjs.DevCardRowSkeleton; exports.DevCardRowSkeletonList = _chunkLCYDTEEKcjs.DevCardRowSkeletonList; exports.DevSectionPage = _chunkLCYDTEEKcjs.DevSectionPage; exports.DevSectionView = _chunkLCYDTEEKcjs.DevSectionView; exports.DeviceCard = _chunkFBH73RRMcjs.DeviceCard; exports.DeviceCardCompact = _chunkFBH73RRMcjs.DeviceCardCompact; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.DevicesIcon = _chunkLGLPNWS6cjs.DevicesIcon; exports.Dialog = _chunkFBH73RRMcjs.Dialog; exports.DialogClose = _chunkFBH73RRMcjs.DialogClose; exports.DialogContent = _chunkFBH73RRMcjs.DialogContent; exports.DialogDescription = _chunkFBH73RRMcjs.DialogDescription; exports.DialogFooter = _chunkFBH73RRMcjs.DialogFooter; exports.DialogHeader = _chunkFBH73RRMcjs.DialogHeader; exports.DialogListItem = _chunkFBH73RRMcjs.DialogListItem; exports.DialogOverlay = _chunkFBH73RRMcjs.DialogOverlay; exports.DialogPortal = _chunkFBH73RRMcjs.DialogPortal; exports.DialogTitle = _chunkFBH73RRMcjs.DialogTitle; exports.DialogTrigger = _chunkFBH73RRMcjs.DialogTrigger; exports.DocSearchBar = _chunkKQQDN2WKcjs.DocSearchBar; exports.DocSearchResultRow = _chunkKQQDN2WKcjs.DocSearchResultRow; exports.DocumentIcon = _chunkLGLPNWS6cjs.DocumentIcon; exports.DonutIcon = _chunkLGLPNWS6cjs.DonutIcon; exports.DoubleChevronIcon = _chunkLGLPNWS6cjs.DoubleChevronIcon; exports.Drawer = _chunkFBH73RRMcjs.Drawer; exports.DrawerBody = _chunkFBH73RRMcjs.DrawerBody; exports.DrawerClose = _chunkFBH73RRMcjs.DrawerClose; exports.DrawerContent = _chunkFBH73RRMcjs.DrawerContent; exports.DrawerDescription = _chunkFBH73RRMcjs.DrawerDescription; exports.DrawerFooter = _chunkFBH73RRMcjs.DrawerFooter; exports.DrawerHeader = _chunkFBH73RRMcjs.DrawerHeader; exports.DrawerOverlay = _chunkFBH73RRMcjs.DrawerOverlay; exports.DrawerPortal = _chunkFBH73RRMcjs.DrawerPortal; exports.DrawerTitle = _chunkFBH73RRMcjs.DrawerTitle; exports.DrawerTrigger = _chunkFBH73RRMcjs.DrawerTrigger; exports.DropdownButton = _chunkFBH73RRMcjs.DropdownButton; exports.DropdownMenu = _chunkN5UOJC3Vcjs.DropdownMenu; exports.DropdownMenuCheckboxItem = _chunkN5UOJC3Vcjs.DropdownMenuCheckboxItem; exports.DropdownMenuContent = _chunkN5UOJC3Vcjs.DropdownMenuContent; exports.DropdownMenuGroup = _chunkN5UOJC3Vcjs.DropdownMenuGroup; exports.DropdownMenuItem = _chunkN5UOJC3Vcjs.DropdownMenuItem; exports.DropdownMenuLabel = _chunkN5UOJC3Vcjs.DropdownMenuLabel; exports.DropdownMenuPortal = _chunkN5UOJC3Vcjs.DropdownMenuPortal; exports.DropdownMenuRadioGroup = _chunkN5UOJC3Vcjs.DropdownMenuRadioGroup; exports.DropdownMenuRadioItem = _chunkN5UOJC3Vcjs.DropdownMenuRadioItem; exports.DropdownMenuSeparator = _chunkN5UOJC3Vcjs.DropdownMenuSeparator; exports.DropdownMenuShortcut = _chunkN5UOJC3Vcjs.DropdownMenuShortcut; exports.DropdownMenuSub = _chunkN5UOJC3Vcjs.DropdownMenuSub; exports.DropdownMenuSubContent = _chunkN5UOJC3Vcjs.DropdownMenuSubContent; exports.DropdownMenuSubTrigger = _chunkN5UOJC3Vcjs.DropdownMenuSubTrigger; exports.DropdownMenuTrigger = _chunkN5UOJC3Vcjs.DropdownMenuTrigger; exports.DynamicSkeleton = DynamicSkeleton; exports.DynamicThemeProvider = _chunkFBH73RRMcjs.DynamicThemeProvider; exports.EMPTY_AUTHOR_PLACEHOLDER = _chunkEB76VWM4cjs.EMPTY_AUTHOR_PLACEHOLDER; exports.EditProfileIcon = _chunkLGLPNWS6cjs.EditProfileIcon; exports.ElestioLogo = _chunkLGLPNWS6cjs.ElestioLogo; exports.EmbeddableChat = _chunkFBH73RRMcjs.EmbeddableChat; exports.EmptyState = _chunkLCYDTEEKcjs.EmptyState; exports.EmptyVendorIcon = _chunkLGLPNWS6cjs.EmptyVendorIcon; exports.EntityAuthorCard = _chunkEB76VWM4cjs.EntityAuthorCard; exports.EntityImage = _chunkFBH73RRMcjs.EntityImage; exports.EntityMetadataAuthorCell = _chunkEB76VWM4cjs.EntityMetadataAuthorCell; exports.EntityMetadataValueCell = _chunkEB76VWM4cjs.EntityMetadataValueCell; exports.EntitySummaryEditor = _chunkFBH73RRMcjs.EntitySummaryEditor; exports.EntityTagBadges = _chunkEB76VWM4cjs.EntityTagBadges; exports.EntityVideoSection = _chunkEB76VWM4cjs.EntityVideoSection; exports.ErrorBoundary = _chunkFBH73RRMcjs.ErrorBoundary; exports.ErrorIcon = _chunkLGLPNWS6cjs.ErrorIcon; exports.ErrorMessageDisplay = _chunkFBH73RRMcjs.ErrorMessageDisplay; exports.ErrorState = _chunkEB76VWM4cjs.ErrorState; exports.ExpandChevron = _chunkFBH73RRMcjs.ExpandChevron; exports.ExploreCategoriesIcon = _chunkLGLPNWS6cjs.ExploreCategoriesIcon; exports.EyeIcon = _chunkLGLPNWS6cjs.EyeIcon; exports.FLAMINGO_LOGO_SVG_PATH = _chunkLGLPNWS6cjs.FLAMINGO_LOGO_SVG_PATH; exports.FLAMINGO_LOGO_VIEWBOX = _chunkLGLPNWS6cjs.FLAMINGO_LOGO_VIEWBOX; exports.FacebookIcon = _chunkLGLPNWS6cjs.FacebookIcon; exports.FaqAccordion = _chunkD4ESVTUTcjs.FaqAccordion; exports.FaqSection = _chunkD4ESVTUTcjs.FaqSection; exports.FeatureCardGrid = _chunkFBH73RRMcjs.FeatureCardGrid; exports.FeatureList = _chunkFBH73RRMcjs.FeatureList; exports.FeatureListSkeleton = FeatureListSkeleton; exports.FieldWrapper = _chunk6JINAOI7cjs.FieldWrapper; exports.FigmaIcon = _chunkLGLPNWS6cjs.FigmaIcon; exports.FigmaPrototypeViewer = _chunkFBH73RRMcjs.FigmaPrototypeViewer; exports.FileCheckIcon = _chunkLGLPNWS6cjs.FileCheckIcon; exports.FileTextIcon = _chunkLGLPNWS6cjs.FileTextIcon; exports.FileUpload = _chunkFBH73RRMcjs.FileUpload; exports.FilterCheckboxItem = _chunkFBH73RRMcjs.FilterCheckboxItem; exports.FilterChip = FilterChip; exports.FilterIcon = _chunkLGLPNWS6cjs.FilterIcon; exports.FilterList = _chunkFBH73RRMcjs.FilterList; exports.FilterListItem = _chunkFBH73RRMcjs.FilterListItem; exports.FilterModal = _chunkFBH73RRMcjs.FilterModal; exports.FilterPillRow = _chunkEB76VWM4cjs.FilterPillRow; exports.FiltersDropdown = _chunkFBH73RRMcjs.FiltersDropdown; exports.FlamingoLogo = _chunkLGLPNWS6cjs.FlamingoLogo; exports.FloatingTooltip = _chunkFBH73RRMcjs.FloatingTooltip; exports.FolderShieldIcon = _chunkLGLPNWS6cjs.FolderShieldIcon; exports.Footer = Footer; exports.FooterWaitlistButton = FooterWaitlistButton; exports.FormLoader = _chunkFBH73RRMcjs.FormLoader; exports.FormPageContainer = _chunkEB76VWM4cjs.FormPageContainer; exports.FormSkeleton = FormSkeleton; exports.G2Icon = _chunkLGLPNWS6cjs.G2Icon; exports.GROUP_PAGE_SIZE = _chunkAIQ4DGO7cjs.GROUP_PAGE_SIZE; exports.GenericEntityCard = _chunkFBH73RRMcjs.GenericEntityCard; exports.GenericEntityCardSkeleton = _chunkFBH73RRMcjs.GenericEntityCardSkeleton; exports.GetAppIcon = _chunkLGLPNWS6cjs.GetAppIcon; exports.GitHubActivityCard = _chunkFBH73RRMcjs.GitHubActivityCard; exports.GitHubActivityCardSkeleton = _chunkFBH73RRMcjs.GitHubActivityCardSkeleton; exports.GitHubIcon = _chunkLGLPNWS6cjs.GitHubIcon; exports.GitHubReleasesManager = _chunkFBH73RRMcjs.GitHubReleasesManager; exports.GlobeIcon = _chunkLGLPNWS6cjs.GlobeIcon; exports.GoogleGeminiIcon = _chunkLGLPNWS6cjs.GoogleGeminiIcon; exports.GoogleLogo = _chunkLGLPNWS6cjs.GoogleLogo; exports.GridViewIcon = _chunkLGLPNWS6cjs.GridViewIcon; exports.GuideModeBanner = _chunkFBH73RRMcjs.GuideModeBanner; exports.GuideWelcome = _chunkFBH73RRMcjs.GuideWelcome; exports.HamburgerIcon = _chunkLGLPNWS6cjs.HamburgerIcon; exports.HandDollarIcon = _chunkLGLPNWS6cjs.HandDollarIcon; exports.Header = _chunkFBH73RRMcjs.Header; exports.HeaderButton = _chunkFBH73RRMcjs.HeaderButton; exports.HeaderGlobalSearch = _chunkFBH73RRMcjs.HeaderGlobalSearch; exports.HeaderMingoButton = _chunkFBH73RRMcjs.HeaderMingoButton; exports.HeaderOrganizationFilter = _chunkFBH73RRMcjs.HeaderOrganizationFilter; exports.HeaderSkeleton = _chunkFBH73RRMcjs.HeaderSkeleton; exports.HeroImageUploader = HeroImageUploader; exports.HeroSkeleton = HeroSkeleton; exports.HiddenTagsPopup = _chunkEB76VWM4cjs.HiddenTagsPopup; exports.HighlightCard = _chunkFBH73RRMcjs.HighlightCard; exports.HighlightCardGrid = _chunkFBH73RRMcjs.HighlightCardGrid; exports.HighlightConfigSection = _chunkFBH73RRMcjs.HighlightConfigSection; exports.HighlightGenerationSection = _chunkFBH73RRMcjs.HighlightGenerationSection; exports.HighlightVideoCombinedSection = _chunkFBH73RRMcjs.HighlightVideoCombinedSection; exports.HighlightVideoPreview = _chunkFBH73RRMcjs.HighlightVideoPreview; exports.HighlightVideoSection = _chunkFBH73RRMcjs.HighlightVideoSection; exports.HoneypotField = _chunkFBH73RRMcjs.HoneypotField; exports.HotelIcon = _chunkLGLPNWS6cjs.HotelIcon; exports.HoverCard = _chunkFBH73RRMcjs.HoverCard; exports.HoverCardContent = _chunkFBH73RRMcjs.HoverCardContent; exports.HoverCardTrigger = _chunkFBH73RRMcjs.HoverCardTrigger; exports.HoverDropdown = _chunkFBH73RRMcjs.HoverDropdown; exports.HubspotIcon = _chunkLGLPNWS6cjs.HubspotIcon; exports.HubspotTicketCard = _chunkFBH73RRMcjs.HubspotTicketCard; exports.HubspotTicketCardSkeleton = _chunkFBH73RRMcjs.HubspotTicketCardSkeleton; exports.ICON_REGISTRY = _chunkEB76VWM4cjs.ICON_REGISTRY; exports.ITIcon = _chunkLGLPNWS6cjs.ITIcon; exports.IconsBlock = _chunkFBH73RRMcjs.IconsBlock; exports.IconsXIcon = _chunkLGLPNWS6cjs.XIcon; exports.ImageCropper = ImageCropper; exports.ImageGalleryModal = _chunkFBH73RRMcjs.ImageGalleryModal; exports.ImageIcon = _chunkLGLPNWS6cjs.ImageIcon; exports.ImageUploader = _chunkFBH73RRMcjs.ImageUploader; exports.InfoCard = _chunkFBH73RRMcjs.InfoCard; exports.InfoCircleIcon = _chunkLGLPNWS6cjs.InfoCircleIcon; exports.InfoRow = _chunkFBH73RRMcjs.InfoRow; exports.Input = _chunk6JINAOI7cjs.Input; exports.InputTrigger = _chunkFBH73RRMcjs.InputTrigger; exports.InstagramIcon = _chunkLGLPNWS6cjs.InstagramIcon; exports.InteractiveCard = _chunkFBH73RRMcjs.InteractiveCard; exports.InteractiveSkeleton = InteractiveSkeleton; exports.InvestorUpdateCard = _chunkFBH73RRMcjs.InvestorUpdateCard; exports.InvestorUpdateCardSkeleton = _chunkFBH73RRMcjs.InvestorUpdateCardSkeleton; exports.JumpInIcon = _chunkLGLPNWS6cjs.JumpInIcon; exports.KnowledgeBaseLinksManager = _chunkFBH73RRMcjs.KnowledgeBaseLinksManager; exports.Label = _chunkFBH73RRMcjs.Label; exports.LaptopIcon = _chunkLGLPNWS6cjs.LaptopIcon; exports.LegalDocumentPage = LegalDocumentPage; exports.LinkedInIcon = _chunkLGLPNWS6cjs.LinkedInIcon; exports.LinuxIcon = _chunkLGLPNWS6cjs.LinuxIcon; exports.ListLoader = _chunkFBH73RRMcjs.ListLoader; exports.ListPageContainer = _chunkEB76VWM4cjs.ListPageContainer; exports.ListPageLayout = _chunkFBH73RRMcjs.ListPageLayout; exports.ListSkeleton = ListSkeleton; exports.LivestormIcon = _chunkLGLPNWS6cjs.LivestormIcon; exports.LoadError = _chunkEB76VWM4cjs.LoadError; exports.LoadingProvider = _chunkFBH73RRMcjs.LoadingProvider; exports.LogOutIcon = _chunkLGLPNWS6cjs.LogOutIcon; exports.LogsIcon = _chunkLGLPNWS6cjs.LogsIcon; exports.LowerTCOIcon = _chunkLGLPNWS6cjs.LowerTCOIcon; exports.LucideCheckCircleIcon = _chunkFBH73RRMcjs.CheckCircleIcon; exports.LucideXIcon = _chunkFBH73RRMcjs.XIcon; exports.LumaIcon = _chunkLGLPNWS6cjs.LumaIcon; exports.MESSAGE_ROLE = _chunkFBH73RRMcjs.MESSAGE_ROLE; exports.MESSAGE_TYPE = _chunkFBH73RRMcjs.MESSAGE_TYPE; exports.MSPDisplay = MSPDisplay; exports.MUX_IMAGE_ORIGIN = _chunkEB76VWM4cjs.MUX_IMAGE_ORIGIN; exports.MUX_STREAM_ORIGIN = _chunkEB76VWM4cjs.MUX_STREAM_ORIGIN; exports.MacOSIcon = _chunkLGLPNWS6cjs.MacOSIcon; exports.MadeWithLove = MadeWithLove; exports.MarginCrisisIcon = _chunkLGLPNWS6cjs.MarginCrisisIcon; exports.MarginReportSkeleton = MarginReportSkeleton; exports.MarkdownEditor = _chunkFBH73RRMcjs.MarkdownEditor; exports.MediaCarousel = MediaCarousel; exports.MediaGalleryManager = _chunkFBH73RRMcjs.MediaGalleryManager; exports.MediaSkeleton = MediaSkeleton; exports.MediaTypeSelector = _chunkFBH73RRMcjs.MediaTypeSelector; exports.MenuIcon = _chunkLGLPNWS6cjs.MenuIcon; exports.Menubar = _chunkFBH73RRMcjs.Menubar; exports.MenubarCheckboxItem = _chunkFBH73RRMcjs.MenubarCheckboxItem; exports.MenubarContent = _chunkFBH73RRMcjs.MenubarContent; exports.MenubarGroup = _chunkFBH73RRMcjs.MenubarGroup; exports.MenubarItem = _chunkFBH73RRMcjs.MenubarItem; exports.MenubarLabel = _chunkFBH73RRMcjs.MenubarLabel; exports.MenubarMenu = _chunkFBH73RRMcjs.MenubarMenu; exports.MenubarPortal = _chunkFBH73RRMcjs.MenubarPortal; exports.MenubarRadioGroup = _chunkFBH73RRMcjs.MenubarRadioGroup; exports.MenubarRadioItem = _chunkFBH73RRMcjs.MenubarRadioItem; exports.MenubarSeparator = _chunkFBH73RRMcjs.MenubarSeparator; exports.MenubarShortcut = _chunkFBH73RRMcjs.MenubarShortcut; exports.MenubarSub = _chunkFBH73RRMcjs.MenubarSub; exports.MenubarSubContent = _chunkFBH73RRMcjs.MenubarSubContent; exports.MenubarSubTrigger = _chunkFBH73RRMcjs.MenubarSubTrigger; exports.MenubarTrigger = _chunkFBH73RRMcjs.MenubarTrigger; exports.MessageCircleIcon = _chunkLGLPNWS6cjs.MessageCircleIcon; exports.MessageSegmentAccumulator = _chunkFBH73RRMcjs.MessageSegmentAccumulator; exports.MetricValue = MetricValue; exports.MiamiCyberGangLogo = _chunkLGLPNWS6cjs.MiamiCyberGangLogo; exports.MiamiCyberGangLogoFaceOnly = _chunkLGLPNWS6cjs.MiamiCyberGangLogoFaceOnly; exports.MicrosoftIcon = _chunkLGLPNWS6cjs.MicrosoftIcon; exports.MingoChatHistory = _chunkFBH73RRMcjs.MingoChatHistory; exports.MingoChatHistorySkeleton = _chunkFBH73RRMcjs.MingoChatHistorySkeleton; exports.MingoIcon = _chunkLGLPNWS6cjs.MingoIcon; exports.MingoOnboardingCard = _chunkFBH73RRMcjs.MingoOnboardingCard; exports.MingoOnboardingCardSkeleton = _chunkFBH73RRMcjs.MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = _chunkFBH73RRMcjs.MingoOnboardingListSkeleton; exports.MingoWelcome = _chunkFBH73RRMcjs.MingoWelcome; exports.MinusCircleIcon = _chunkLGLPNWS6cjs.MinusCircleIcon; exports.MinusIcon = _chunkFBH73RRMcjs.MinusIcon; exports.MlgLogo = _chunkLGLPNWS6cjs.MlgLogo; exports.MobileBurgerMenu = _chunkFBH73RRMcjs.MobileBurgerMenu; exports.MobileNavPanel = _chunkFBH73RRMcjs.MobileNavPanel; exports.Modal = _chunkFBH73RRMcjs.Modal; exports.ModalContent = _chunkFBH73RRMcjs.ModalContent; exports.ModalFooter = _chunkFBH73RRMcjs.ModalFooter; exports.ModalHeader = _chunkFBH73RRMcjs.ModalHeader; exports.ModalTitle = _chunkFBH73RRMcjs.ModalTitle; exports.ModalV2 = _chunkFBH73RRMcjs.Modal2; exports.ModalV2Content = _chunkFBH73RRMcjs.ModalContent2; exports.ModalV2Footer = _chunkFBH73RRMcjs.ModalFooter2; exports.ModalV2Header = _chunkFBH73RRMcjs.ModalHeader2; exports.ModalV2Title = _chunkFBH73RRMcjs.ModalTitle2; exports.ModelDisplay = _chunkFBH73RRMcjs.ModelDisplay; exports.ModularHellIcon = _chunkLGLPNWS6cjs.ModularHellIcon; exports.MoonIcon = _chunkLGLPNWS6cjs.MoonIcon; exports.MoreAboutButton = _chunkFBH73RRMcjs.MoreAboutButton; exports.MoreActionsMenu = _chunkFBH73RRMcjs.MoreActionsMenu; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.NETWORK_CONFIG = _chunkFBH73RRMcjs.NETWORK_CONFIG; exports.NEW_TAB_FEATURES = _chunkEB76VWM4cjs.NEW_TAB_FEATURES; exports.NOCIcon = _chunkLGLPNWS6cjs.NOCIcon; exports.NaturalLanguageIcon = _chunkLGLPNWS6cjs.NaturalLanguageIcon; exports.NavLinkAnchorViaRuntime = _chunkFBH73RRMcjs.NavLinkAnchorViaRuntime; exports.NavigationMenu = _chunkFBH73RRMcjs.NavigationMenu; exports.NavigationMenuContent = _chunkFBH73RRMcjs.NavigationMenuContent; exports.NavigationMenuIndicator = _chunkFBH73RRMcjs.NavigationMenuIndicator; exports.NavigationMenuItem = _chunkFBH73RRMcjs.NavigationMenuItem; exports.NavigationMenuLink = _chunkFBH73RRMcjs.NavigationMenuLink; exports.NavigationMenuList = _chunkFBH73RRMcjs.NavigationMenuList; exports.NavigationMenuTrigger = _chunkFBH73RRMcjs.NavigationMenuTrigger; exports.NavigationMenuViewport = _chunkFBH73RRMcjs.NavigationMenuViewport; exports.NavigationSidebar = _chunkFBH73RRMcjs.NavigationSidebar; exports.NavigationSkeleton = NavigationSkeleton; exports.NetworkIcon = _chunkLGLPNWS6cjs.NetworkIcon; exports.NotFoundError = _chunkEB76VWM4cjs.NotFoundError; exports.NotificationDrawer = _chunkFBH73RRMcjs.NotificationDrawer; exports.NotificationPopups = _chunkFBH73RRMcjs.NotificationPopups; exports.NotificationTile = _chunkFBH73RRMcjs.NotificationTile; exports.NotificationsProvider = _chunkFBH73RRMcjs.NotificationsProvider; exports.NushellIcon = _chunkLGLPNWS6cjs.NushellIcon; exports.OPENFRAME_PATHS = _chunkFBH73RRMcjs.OPENFRAME_PATHS; exports.OPSIcon = _chunkLGLPNWS6cjs.OPSIcon; exports.OSTypeBadge = _chunkFBH73RRMcjs.OSTypeBadge; exports.OSTypeBadgeGroup = _chunkFBH73RRMcjs.OSTypeBadgeGroup; exports.OSTypeIcon = _chunkFBH73RRMcjs.OSTypeIcon; exports.OSTypeLabel = _chunkFBH73RRMcjs.OSTypeLabel; exports.OWNER_TYPE = _chunkFBH73RRMcjs.OWNER_TYPE; exports.OnboardingGuideCard = _chunkEB76VWM4cjs.OnboardingGuideCard; exports.OnboardingGuideCardSkeleton = _chunkEB76VWM4cjs.OnboardingGuideCardSkeleton; exports.OnboardingStepCard = _chunkFBH73RRMcjs.OnboardingStepCard; exports.OnboardingWalkthrough = _chunkFBH73RRMcjs.OnboardingWalkthrough; exports.OpenAiIcon = _chunkLGLPNWS6cjs.OpenAiIcon; exports.OpenFrameLogo = _chunkLGLPNWS6cjs.OpenFrameLogo; exports.OpenFrameText = _chunkLGLPNWS6cjs.OpenFrameText; exports.OpenSourceIcon = _chunkLGLPNWS6cjs.OpenSourceIcon; exports.OpenmspLogo = _chunkLGLPNWS6cjs.OpenmspLogo; exports.OrganizationCard = _chunkFBH73RRMcjs.OrganizationCard; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationsIcon = _chunkLGLPNWS6cjs.OrganizationsIcon; exports.PAGE_HEADING_CLASS = _chunkFBH73RRMcjs.PAGE_HEADING_CLASS; exports.PRICING_STYLES = PRICING_STYLES; exports.PackageIcon = _chunkLGLPNWS6cjs.PackageIcon; exports.PageActions = _chunkEB76VWM4cjs.PageActions; exports.PageContainer = _chunkEB76VWM4cjs.PageContainer; exports.PageError = _chunkEB76VWM4cjs.PageError; exports.PageHeading = _chunkFBH73RRMcjs.PageHeading; exports.PageLayout = _chunkFBH73RRMcjs.PageLayout; exports.PageLoader = _chunkFBH73RRMcjs.PageLoader; exports.PageShell = _chunkEB76VWM4cjs.PageShell; exports.Pagination = _chunkFBH73RRMcjs.Pagination; exports.PaginationContent = _chunkFBH73RRMcjs.PaginationContent; exports.PaginationEllipsis = _chunkFBH73RRMcjs.PaginationEllipsis; exports.PaginationItem = _chunkFBH73RRMcjs.PaginationItem; exports.PaginationLink = _chunkFBH73RRMcjs.PaginationLink; exports.PaginationNext = _chunkFBH73RRMcjs.PaginationNext; exports.PaginationPrevious = _chunkFBH73RRMcjs.PaginationPrevious; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ParallaxImageShowcase = _chunkFBH73RRMcjs.ParallaxImageShowcase; exports.PatchPolicyIcon = _chunkLGLPNWS6cjs.PatchPolicyIcon; exports.PathsDisplay = _chunkFBH73RRMcjs.PathsDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PhoneInput = _chunkFBH73RRMcjs.PhoneInput; exports.PilotIcon = _chunkLGLPNWS6cjs.PilotIcon; exports.PlatformBadge = _chunkFBH73RRMcjs.PlatformBadge; exports.PlatformFilterComponent = _chunkFBH73RRMcjs.PlatformFilterComponent; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.PlusCircleIcon = _chunkLGLPNWS6cjs.PlusCircleIcon; exports.PodbeanIcon = _chunkLGLPNWS6cjs.PodbeanIcon; exports.PoliciesIcon = _chunkLGLPNWS6cjs.PoliciesIcon; exports.PolicyConfigurationPanel = _chunkFBH73RRMcjs.PolicyConfigurationPanel; exports.PowerShellIcon = _chunkLGLPNWS6cjs.PowerShellIcon; exports.PricingDisplay = PricingDisplay; exports.PricingSkeleton = PricingSkeleton; exports.ProductReleaseCard = _chunkFBH73RRMcjs.ProductReleaseCard; exports.ProductReleaseCardSkeleton = _chunkFBH73RRMcjs.ProductReleaseCardSkeleton; exports.ProductReleasesView = ProductReleasesView; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.ProgramCard = _chunkFBH73RRMcjs.ProgramCard; exports.ProgramCardSkeleton = _chunkFBH73RRMcjs.ProgramCardSkeleton; exports.Progress = _chunkFBH73RRMcjs.Progress; exports.ProgressBar = _chunkFBH73RRMcjs.ProgressBar; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.ProviderButton = _chunkFBH73RRMcjs.ProviderButton; exports.PushButtonSelector = _chunkFBH73RRMcjs.PushButtonSelector; exports.PythonIcon = _chunkLGLPNWS6cjs.PythonIcon; exports.QueriesIcon = _chunkLGLPNWS6cjs.QueriesIcon; exports.QueryReportTable = _chunkFBH73RRMcjs.QueryReportTable; exports.QueryReportTableHeader = _chunkFBH73RRMcjs.QueryReportTableHeader; exports.QueryReportTableRow = _chunkFBH73RRMcjs.QueryReportTableRow; exports.QueryReportTableSkeleton = _chunkFBH73RRMcjs.QueryReportTableSkeleton; exports.RATIO_DISPLAY_GRID_CLASS = _chunkEB76VWM4cjs.RATIO_DISPLAY_GRID_CLASS; exports.RATIO_GRID_CLASS = _chunkEB76VWM4cjs.RATIO_GRID_CLASS; exports.ROW_HEIGHT_DESKTOP = _chunkFBH73RRMcjs.ROW_HEIGHT_DESKTOP; exports.ROW_HEIGHT_MOBILE = _chunkFBH73RRMcjs.ROW_HEIGHT_MOBILE; exports.RadioGroup = _chunkFBH73RRMcjs.RadioGroup; exports.RadioGroupBlock = _chunkFBH73RRMcjs.RadioGroupBlock; exports.RadioGroupItem = _chunkFBH73RRMcjs.RadioGroupItem; exports.RapidInnovationIcon = _chunkLGLPNWS6cjs.RapidInnovationIcon; exports.RatioTabs = _chunkEB76VWM4cjs.RatioTabs; exports.ReclaimProfitsIcon = _chunkLGLPNWS6cjs.ReclaimProfitsIcon; exports.RedditIcon = _chunkLGLPNWS6cjs.RedditIcon; exports.RelatedContentSection = _chunkAIQ4DGO7cjs.RelatedContentSection; exports.ReleaseChangelogSection = _chunkFBH73RRMcjs.ReleaseChangelogSection; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.ReleaseMediaManager = _chunkFBH73RRMcjs.ReleaseMediaManager; exports.RemoteControlIcon = _chunkLGLPNWS6cjs.RemoteControlIcon; exports.RenameChatModal = _chunkFBH73RRMcjs.RenameChatModal; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.ResultBlock = _chunkFBH73RRMcjs.ResultBlock; exports.ResultsCount = ResultsCount; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.RoadmapCard = _chunkFBH73RRMcjs.RoadmapCard; exports.RoadmapCardSkeleton = _chunkFBH73RRMcjs.RoadmapCardSkeleton; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.RoadmapView = RoadmapView; exports.RoadmapVoteButton = _chunkFBH73RRMcjs.RoadmapVoteButton; exports.SCROLL_ANCHOR = _chunkFBH73RRMcjs.SCROLL_ANCHOR; exports.SCROLL_ANCHOR_WIRE_KEY = _chunkFBH73RRMcjs.SCROLL_ANCHOR_WIRE_KEY; exports.SEOEditorPreview = _chunkFBH73RRMcjs.SEOEditorPreview; exports.SOCIcon = _chunkLGLPNWS6cjs.SOCIcon; exports.SOURCE_ICON_NAMES = _chunkEB76VWM4cjs.SOURCE_ICON_NAMES; exports.SOURCE_LABELS_BY_TABLE = _chunkEB76VWM4cjs.SOURCE_LABELS_BY_TABLE; exports.SSOConfigurationIcon = _chunkLGLPNWS6cjs.SSOConfigurationIcon; exports.SYNTHETIC_REALTIME_ID_PREFIXES = _chunkFBH73RRMcjs.SYNTHETIC_REALTIME_ID_PREFIXES; exports.ScriptArguments = _chunkFBH73RRMcjs.ScriptArguments; exports.ScriptGenerationIcon = _chunkLGLPNWS6cjs.ScriptGenerationIcon; exports.ScriptIcon = _chunkLGLPNWS6cjs.ScriptIcon; exports.ScriptInfoSection = _chunkFBH73RRMcjs.ScriptInfoSection; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.SearchIcon = _chunkLGLPNWS6cjs.SearchIcon; exports.SearchInput = _chunkEB76VWM4cjs.SearchInput; exports.SectionSelector = _chunkFBH73RRMcjs.SectionSelector; exports.Select = _chunkFBH73RRMcjs.Select; exports.SelectButton = _chunkFBH73RRMcjs.SelectButton; exports.SelectContent = _chunkFBH73RRMcjs.SelectContent; exports.SelectGroup = _chunkFBH73RRMcjs.SelectGroup; exports.SelectItem = _chunkFBH73RRMcjs.SelectItem; exports.SelectLabel = _chunkFBH73RRMcjs.SelectLabel; exports.SelectScrollDownButton = _chunkFBH73RRMcjs.SelectScrollDownButton; exports.SelectScrollUpButton = _chunkFBH73RRMcjs.SelectScrollUpButton; exports.SelectSeparator = _chunkFBH73RRMcjs.SelectSeparator; exports.SelectTrigger = _chunkFBH73RRMcjs.SelectTrigger; exports.SelectValue = _chunkFBH73RRMcjs.SelectValue; exports.SelectionSourceBadge = SelectionSourceBadge; exports.SendIcon = _chunkLGLPNWS6cjs.SendIcon; exports.Separator = _chunkFBH73RRMcjs.Separator; exports.ServerIcon = _chunkLGLPNWS6cjs.ServerIcon; exports.ServiceCard = _chunkFBH73RRMcjs.ServiceCard; exports.SettingsIcon = _chunkLGLPNWS6cjs.SettingsIcon; exports.ShapeCircleDashIcon = _chunkLGLPNWS6cjs.ShapeCircleDashIcon; exports.Sheet = _chunkFBH73RRMcjs.Sheet; exports.SheetClose = _chunkFBH73RRMcjs.SheetClose; exports.SheetContent = _chunkFBH73RRMcjs.SheetContent; exports.SheetDescription = _chunkFBH73RRMcjs.SheetDescription; exports.SheetFooter = _chunkFBH73RRMcjs.SheetFooter; exports.SheetHeader = _chunkFBH73RRMcjs.SheetHeader; exports.SheetOverlay = _chunkFBH73RRMcjs.SheetOverlay; exports.SheetPortal = _chunkFBH73RRMcjs.SheetPortal; exports.SheetTitle = _chunkFBH73RRMcjs.SheetTitle; exports.SheetTrigger = _chunkFBH73RRMcjs.SheetTrigger; exports.ShellIcon = _chunkLGLPNWS6cjs.ShellIcon; exports.ShellTypeBadge = _chunkFBH73RRMcjs.ShellTypeBadge; exports.ShieldCheckIcon = _chunkLGLPNWS6cjs.ShieldCheckIcon; exports.ShieldIcon = _chunkLGLPNWS6cjs.ShieldIcon; exports.ShieldKeyIcon = _chunkLGLPNWS6cjs.ShieldKeyIcon; exports.ShieldLockIcon = _chunkLGLPNWS6cjs.ShieldLockIcon; exports.SimpleMarkdownRenderer = _chunkEB76VWM4cjs.SimpleMarkdownRenderer; exports.Skeleton = _chunk6JINAOI7cjs.Skeleton; exports.SkeletonButton = _chunk6JINAOI7cjs.SkeletonButton; exports.SkeletonCard = _chunk6JINAOI7cjs.SkeletonCard; exports.SkeletonGrid = _chunk6JINAOI7cjs.SkeletonGrid; exports.SkeletonHeading = _chunk6JINAOI7cjs.SkeletonHeading; exports.SkeletonList = _chunk6JINAOI7cjs.SkeletonList; exports.SkeletonNavigation = _chunk6JINAOI7cjs.SkeletonNavigation; exports.SkeletonPresets = SkeletonPresets; exports.SkeletonText = _chunk6JINAOI7cjs.SkeletonText; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.SlackIcon = _chunkLGLPNWS6cjs.SlackIcon; exports.SlackMessageCard = _chunkFBH73RRMcjs.SlackMessageCard; exports.SlackMessageCardSkeleton = _chunkFBH73RRMcjs.SlackMessageCardSkeleton; exports.SlashCommandSuggestions = _chunkFBH73RRMcjs.SlashCommandSuggestions; exports.Slider = _chunkFBH73RRMcjs.Slider; exports.SlidersIcon = _chunkLGLPNWS6cjs.SlidersIcon; exports.SlidingSidebar = _chunkFBH73RRMcjs.SlidingSidebar; exports.SmartEscalationIcon = _chunkLGLPNWS6cjs.SmartEscalationIcon; exports.SocialIconRow = SocialIconRow; exports.SocialLinksManager = _chunkFBH73RRMcjs.SocialLinksManager; exports.SoftwareInfo = _chunkFBH73RRMcjs.SoftwareInfo; exports.SoftwareSourceBadge = _chunkFBH73RRMcjs.SoftwareSourceBadge; exports.SourceActionButton = _chunkFBH73RRMcjs.SourceActionButton; exports.SparklesIcon = _chunkLGLPNWS6cjs.SparklesIcon; exports.SplitButton = _chunkN5UOJC3Vcjs.SplitButton; exports.SquareAvatar = _chunkEB76VWM4cjs.SquareAvatar; exports.StartWithOpenFrameButton = _chunkFBH73RRMcjs.StartWithOpenFrameButton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.StatusBadge = _chunkEB76VWM4cjs.StatusBadge; exports.StatusFilterComponent = _chunkFBH73RRMcjs.StatusFilterComponent; exports.StatusIndicator = _chunkFBH73RRMcjs.StatusIndicator; exports.StatusUpdatesIcon = _chunkLGLPNWS6cjs.StatusUpdatesIcon; exports.StickySectionNav = _chunkFBH73RRMcjs.StickySectionNav; exports.SunIcon = _chunkLGLPNWS6cjs.SunIcon; exports.Switch = _chunkFBH73RRMcjs.Switch; exports.THEME_ATTRIBUTE = _chunkFBH73RRMcjs.THEME_ATTRIBUTE; exports.THEME_STORAGE_KEY = _chunkFBH73RRMcjs.THEME_STORAGE_KEY; exports.TICKET_STATUS_COLOR_PRESETS = _chunkFBH73RRMcjs.TICKET_STATUS_COLOR_PRESETS; exports.TabContent = _chunkFBH73RRMcjs.TabContent; exports.TabNavigation = _chunkFBH73RRMcjs.TabNavigation; exports.TabSelector = _chunkFBH73RRMcjs.TabSelector; exports.Table = _chunkFBH73RRMcjs.Table; exports.TableCardSkeleton = _chunkFBH73RRMcjs.TableCardSkeleton; exports.TableCell = _chunkFBH73RRMcjs.TableCell; exports.TableDescriptionCell = _chunkFBH73RRMcjs.TableDescriptionCell; exports.TableEmptyState = _chunkFBH73RRMcjs.TableEmptyState; exports.TableHeader = _chunkFBH73RRMcjs.TableHeader; exports.TableRow = _chunkFBH73RRMcjs.TableRow; exports.TableSkeleton = TableSkeleton; exports.TableTimestampCell = _chunkFBH73RRMcjs.TableTimestampCell; exports.TableViewIcon = _chunkLGLPNWS6cjs.TableViewIcon; exports.Tabs = _chunkEB76VWM4cjs.Tabs; exports.TabsContent = _chunkEB76VWM4cjs.TabsContent; exports.TabsList = _chunkEB76VWM4cjs.TabsList; exports.TabsTrigger = _chunkEB76VWM4cjs.TabsTrigger; exports.Tag = _chunkEB76VWM4cjs.Tag; exports.TagKeyValueFilter = _chunkFBH73RRMcjs.TagKeyValueFilter; exports.TagSearchInput = _chunkFBH73RRMcjs.TagSearchInput; exports.TagsInput = _chunkFBH73RRMcjs.TagsInput; exports.TagsManager = _chunkFBH73RRMcjs.TagsManager; exports.TagsSelector = _chunkFBH73RRMcjs.TagsSelector; exports.TaskTypeIcon = _chunkFBH73RRMcjs.TaskTypeIcon; exports.TelegramIcon = _chunkLGLPNWS6cjs.TelegramIcon; exports.TextSkeleton = TextSkeleton; exports.Textarea = _chunkFBH73RRMcjs.Textarea; exports.ThemeProvider = _chunkFBH73RRMcjs.ThemeProvider; exports.ThinkingDisplay = _chunkFBH73RRMcjs.ThinkingDisplay; exports.ThumbsDownIcon = _chunkLGLPNWS6cjs.ThumbsDownIcon; exports.ThumbsUpIcon = _chunkLGLPNWS6cjs.ThumbsUpIcon; exports.TicketAttachmentsList = _chunkFBH73RRMcjs.TicketAttachmentsList; exports.TicketCard = _chunkFBH73RRMcjs.TicketCard; exports.TicketCardSkeleton = _chunkFBH73RRMcjs.TicketCardSkeleton; exports.TicketDetailSection = _chunkFBH73RRMcjs.TicketDetailSection; exports.TicketInfoSection = _chunkFBH73RRMcjs.TicketInfoSection; exports.TicketNoteCard = _chunkFBH73RRMcjs.TicketNoteCard; exports.TicketNotesSection = _chunkFBH73RRMcjs.TicketNotesSection; exports.TicketStatusConfigList = _chunkFBH73RRMcjs.TicketStatusConfigList; exports.TicketStatusConfigRow = _chunkFBH73RRMcjs.TicketStatusConfigRow; exports.TicketStatusTag = _chunkFBH73RRMcjs.TicketStatusTag; exports.TimelineSkeleton = TimelineSkeleton; exports.TitleBlock = _chunkFBH73RRMcjs.TitleBlock; exports.TitleContentBlock = _chunkFBH73RRMcjs.TitleContentBlock; exports.ToastCard = _chunk3DC6MHW6cjs.ToastCard; exports.Toaster = _chunk3DC6MHW6cjs.Toaster; exports.Toggle = _chunkFBH73RRMcjs.Toggle; exports.ToggleGroup = _chunkFBH73RRMcjs.ToggleGroup; exports.ToggleGroupItem = _chunkFBH73RRMcjs.ToggleGroupItem; exports.ToolBadge = _chunkFBH73RRMcjs.ToolBadge; exports.ToolExecutionDisplay = _chunkFBH73RRMcjs.ToolExecutionDisplay; exports.Tooltip = _chunkFBH73RRMcjs.Tooltip; exports.TooltipContent = _chunkFBH73RRMcjs.TooltipContent; exports.TooltipProvider = _chunkFBH73RRMcjs.TooltipProvider; exports.TooltipTrigger = _chunkFBH73RRMcjs.TooltipTrigger; exports.TranscribeAndSummarizeCombinedSection = _chunkFBH73RRMcjs.TranscribeAndSummarizeCombinedSection; exports.TranscribeSummarizeSection = _chunkFBH73RRMcjs.TranscribeSummarizeSection; exports.TranscriptSummaryEditor = _chunkFBH73RRMcjs.TranscriptSummaryEditor; exports.TransparentTrustedIcon = _chunkLGLPNWS6cjs.TransparentTrustedIcon; exports.TruncateText = _chunkFBH73RRMcjs.TruncateText; exports.TrustpilotIcon = _chunkLGLPNWS6cjs.TrustpilotIcon; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.UnarchiveChatModal = _chunkFBH73RRMcjs.UnarchiveChatModal; exports.UnifiedPagination = _chunkLCYDTEEKcjs.UnifiedPagination; exports.UnifiedSkeleton = UnifiedSkeleton; exports.UserDisplay = UserDisplay; exports.UserIcon = _chunkLGLPNWS6cjs.UserIcon; exports.UsersGridSkeleton = UsersGridSkeleton; exports.UsersGroupIcon = _chunkLGLPNWS6cjs.UsersGroupIcon; exports.UsersIcon = _chunkLGLPNWS6cjs.UsersIcon; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.VendorDirectoryIcon = _chunkLGLPNWS6cjs.VendorDirectoryIcon; exports.VendorDisplayButton = VendorDisplayButton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.VendorIcon = VendorIcon; exports.VendorPageSkeleton = VendorPageSkeleton; exports.VendorShowcaseMainIcon = _chunkLGLPNWS6cjs.VendorShowcaseMainIcon; exports.VendorTag = VendorTag; exports.VendorsIcon = _chunkLGLPNWS6cjs.VendorsIcon; exports.Video = _chunkEB76VWM4cjs.Video; exports.VideoBiteCard = _chunkEB76VWM4cjs.VideoBiteCard; exports.VideoBitesDisplay = _chunkEB76VWM4cjs.VideoBitesDisplay; exports.VideoClipsSection = _chunkFBH73RRMcjs.VideoClipsSection; exports.VideoSourceSelector = _chunkFBH73RRMcjs.VideoSourceSelector; exports.ViewToggle = _chunkFBH73RRMcjs.ViewToggle; exports.WaitlistForm = _chunkFBH73RRMcjs.WaitlistForm; exports.WhatsAppIcon = _chunkLGLPNWS6cjs.WhatsAppIcon; exports.WindowsIcon = _chunkLGLPNWS6cjs.WindowsIcon; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.XCircleIcon = _chunkFBH73RRMcjs.XCircleIcon; exports.XLogo = _chunkLGLPNWS6cjs.XLogo; exports.YesNoDisplay = YesNoDisplay; exports.YouTubeIcon = _chunkLGLPNWS6cjs.YouTubeIcon; exports.alignJustify = _chunkFBH73RRMcjs.alignJustify; exports.applyProxyAuth = _chunkFBH73RRMcjs.applyProxyAuth; exports.badgeVariants = _chunkFBH73RRMcjs.badgeVariants; exports.blogFilterConfig = blogFilterConfig; exports.buildAnchorProps = _chunkEB76VWM4cjs.buildAnchorProps; exports.buildAutoContinuationDirective = _chunkFBH73RRMcjs.buildAutoContinuationDirective; exports.buildChatAttachmentViewUrl = _chunkFBH73RRMcjs.buildChatAttachmentViewUrl; exports.buildChatRefKey = _chunkFBH73RRMcjs.buildChatRefKey; exports.buildDiscussAddendum = _chunkFBH73RRMcjs.buildDiscussAddendum; exports.buildNatsWsUrl = _chunkFBH73RRMcjs.buildNatsWsUrl; exports.buildProductReleaseCardProps = _chunkFBH73RRMcjs.buildProductReleaseCardProps; exports.buttonVariants = _chunkN5UOJC3Vcjs.buttonVariants; exports.chatAuthedFetch = _chunkFBH73RRMcjs.embedAuthedFetch; exports.chatChipClass = _chunkFBH73RRMcjs.chatChipClass; exports.clearChatProxyAuth = _chunkFBH73RRMcjs.clearEmbedProxyAuth; exports.clickupTaskUrl = _chunkFBH73RRMcjs.clickupTaskUrl; exports.columnFromTicketStatus = _chunkFBH73RRMcjs.columnFromTicketStatus; exports.computeHistoryPrepend = _chunkFBH73RRMcjs.computeHistoryPrepend; exports.computeIsNewTab = _chunkEB76VWM4cjs.computeIsNewTab; exports.createColumnHelper = _chunkFBH73RRMcjs.createColumnHelper; exports.createMessageSegmentAccumulator = _chunkFBH73RRMcjs.createMessageSegmentAccumulator; exports.decideNewTab = _chunkEB76VWM4cjs.decideNewTab; exports.defaultBuildProductReleaseCardProps = _chunkFBH73RRMcjs.defaultBuildProductReleaseCardProps; exports.defaultTableIdForDocumentType = _chunkEB76VWM4cjs.defaultTableIdForDocumentType; exports.deriveColumns = _chunkFBH73RRMcjs.deriveColumns; exports.detectAspectRatio = _chunkEB76VWM4cjs.detectAspectRatio; exports.dotColorByVariant = _chunk3DC6MHW6cjs.dotColorByVariant; exports.escapeMarkdownInline = _chunkFBH73RRMcjs.escapeMarkdownInline; exports.evaluateFeatureValue = evaluateFeatureValue; exports.executeNavigation = _chunkFBH73RRMcjs.executeNavigation; exports.executeNavigationImperative = _chunkFBH73RRMcjs.executeNavigationImperative; exports.exportToCSV = _chunkFBH73RRMcjs.exportToCSV; exports.extractEntityIdFilter = _chunkFBH73RRMcjs.extractEntityIdFilter; exports.extractErrorMessages = _chunkFBH73RRMcjs.extractErrorMessages; exports.extractIncompleteMessageState = _chunkFBH73RRMcjs.extractIncompleteMessageState; exports.extractTextFromChunk = _chunkFBH73RRMcjs.extractTextFromChunk; exports.extractYouTubeId = _chunkEB76VWM4cjs.extractYouTubeId; exports.fetchSlashCommands = _chunkFBH73RRMcjs.fetchSlashCommands; exports.flattenAssistantContent = _chunkFBH73RRMcjs.flattenAssistantContent; exports.flattenMessagePagesChronological = _chunkFBH73RRMcjs.flattenMessagePagesChronological; exports.flexRender = _chunkFBH73RRMcjs.flexRender; exports.formatChatAttachmentMarkdownForBubble = _chunkFBH73RRMcjs.formatChatAttachmentMarkdownForBubble; exports.formatInvestorUpdatePeriod = _chunkFBH73RRMcjs.formatInvestorUpdatePeriod; exports.formatPricingForDisplay = formatPricingForDisplay; exports.formatRelativePath = _chunkKQQDN2WKcjs.formatRelativePath; exports.formatSingularLookupInvocation = _chunkFBH73RRMcjs.formatSingularLookupInvocation; exports.getApprovalMeta = _chunkFBH73RRMcjs.getApprovalMeta; exports.getCaptionsUrl = _chunkEB76VWM4cjs.getCaptionsUrl; exports.getChatProxyAuth = _chunkFBH73RRMcjs.getEmbedProxyAuth; exports.getCommandText = _chunkFBH73RRMcjs.getCommandText; exports.getCoreRowModel = _chunkFBH73RRMcjs.getCoreRowModel; exports.getDeviceTypeIcon = _chunkLGLPNWS6cjs.getDeviceTypeIcon; exports.getDynamicIcon = _chunkEB76VWM4cjs.getDynamicIcon; exports.getExpandedRowModel = _chunkFBH73RRMcjs.getExpandedRowModel; exports.getFacetedRowModel = _chunkFBH73RRMcjs.getFacetedRowModel; exports.getFacetedUniqueValues = _chunkFBH73RRMcjs.getFacetedUniqueValues; exports.getFilteredRowModel = _chunkFBH73RRMcjs.getFilteredRowModel; exports.getGroupedRowModel = _chunkFBH73RRMcjs.getGroupedRowModel; exports.getHideClasses = _chunkFBH73RRMcjs.getHideClasses; exports.getIconComponent = _chunkEB76VWM4cjs.getIconComponent; exports.getOpenFramePaths = _chunkFBH73RRMcjs.getOpenFramePaths; exports.getPaginationRowModel = _chunkFBH73RRMcjs.getPaginationRowModel; exports.getPersistedProxyEmail = _chunkFBH73RRMcjs.getPersistedProxyEmail; exports.getSortedRowModel = _chunkFBH73RRMcjs.getSortedRowModel; exports.getSourceIconName = _chunkEB76VWM4cjs.getSourceIconName; exports.getSourceLabel = _chunkEB76VWM4cjs.getSourceLabel; exports.getStatusColorScheme = _chunkFBH73RRMcjs.getStatusColorScheme; exports.getTabById = _chunkFBH73RRMcjs.getTabById; exports.getTabComponent = _chunkFBH73RRMcjs.getTabComponent; exports.getTaskTypeLabel = _chunkFBH73RRMcjs.getTaskTypeLabel; exports.getTicketStatusConfig = _chunkFBH73RRMcjs.getTicketStatusConfig; exports.getTicketStatusTag = _chunkFBH73RRMcjs.getTicketStatusTag; exports.groupByAspectRatio = _chunkEB76VWM4cjs.groupByAspectRatio; exports.groupTicketsByStatus = _chunkFBH73RRMcjs.groupTicketsByStatus; exports.handleChatNavClick = _chunkFBH73RRMcjs.handleChatNavClick; exports.isApprovalNotification = _chunkFBH73RRMcjs.isApprovalNotification; exports.isControlChunk = _chunkFBH73RRMcjs.isControlChunk; exports.isCrossOriginUrl = _chunkEB76VWM4cjs.isCrossOriginUrl; exports.isErrorChunk = _chunkFBH73RRMcjs.isErrorChunk; exports.isMetadataChunk = _chunkFBH73RRMcjs.isMetadataChunk; exports.isModifierClick = _chunkEB76VWM4cjs.isModifierClick; exports.isStructuredContent = _chunkFBH73RRMcjs.isStructuredContent; exports.kindToCanonicalStatus = _chunkFBH73RRMcjs.kindToCanonicalStatus; exports.mapDocSearchResults = _chunkKQQDN2WKcjs.mapDocSearchResults; exports.maxPersistedStreamSeq = _chunkFBH73RRMcjs.maxPersistedStreamSeq; exports.mergeHistoryWithRealtime = _chunkFBH73RRMcjs.mergeHistoryWithRealtime; exports.multiSelectFilterFn = _chunkFBH73RRMcjs.multiSelectFilterFn; exports.navigationMenuTriggerStyle = _chunkFBH73RRMcjs.navigationMenuTriggerStyle; exports.newTabAnchorAttrs = _chunkEB76VWM4cjs.newTabAnchorAttrs; exports.normalizeContent = _chunkFBH73RRMcjs.normalizeContent; exports.normalizeIconKey = _chunkEB76VWM4cjs.normalizeIconKey; exports.parseChunkToAction = _chunkFBH73RRMcjs.parseChunkToAction; exports.parseScrollAnchor = _chunkFBH73RRMcjs.parseScrollAnchor; exports.parseWireCommandOverride = _chunkFBH73RRMcjs.parseWireCommandOverride; exports.processHistoricalMessages = _chunkFBH73RRMcjs.processHistoricalMessages; exports.processHistoricalMessagesWithErrors = _chunkFBH73RRMcjs.processHistoricalMessagesWithErrors; exports.progressColorByVariant = _chunk3DC6MHW6cjs.progressColorByVariant; exports.ratioToCategory = _chunkEB76VWM4cjs.ratioToCategory; exports.remarkCardLinks = _chunkFBH73RRMcjs.remarkCardLinks; exports.renderChatInlineEntityCard = _chunkFBH73RRMcjs.renderChatInlineEntityCard; exports.renderSvgIcon = _chunkLGLPNWS6cjs.renderSvgIcon; exports.resolveExternalNavigation = _chunkEB76VWM4cjs.resolveExternalNavigation; exports.resolveSearchResultAction = _chunkKQQDN2WKcjs.resolveSearchResultAction; exports.resolveSourceIcon = _chunkEB76VWM4cjs.resolveSourceIcon; exports.resolveSourceRowCTA = _chunkEB76VWM4cjs.resolveSourceRowCTA; exports.resolveStatusTagProps = _chunkFBH73RRMcjs.resolveStatusTagProps; exports.resolveTicketStatus = _chunkFBH73RRMcjs.resolveTicketStatus; exports.safeHref = _chunkEB76VWM4cjs.safeHref; exports.sanitizeTitleForChat = _chunkFBH73RRMcjs.sanitizeTitleForChat; exports.setChatProxyAuth = _chunkFBH73RRMcjs.setEmbedProxyAuth; exports.setRealAuthHook = setRealAuthHook; exports.showCommandApprovalToast = _chunk3DC6MHW6cjs.showCommandApprovalToast; exports.showToast = _chunk3DC6MHW6cjs.showToast; exports.statusBadgeVariants = _chunkEB76VWM4cjs.statusBadgeVariants; exports.stripChatAttachmentMarkdown = _chunkFBH73RRMcjs.stripChatAttachmentMarkdown; exports.stripSameOriginToPath = _chunkEB76VWM4cjs.stripSameOriginToPath; exports.tagVariants = _chunkEB76VWM4cjs.tagVariants; exports.tintOnDark = _chunkFBH73RRMcjs.tintOnDark; exports.toggleVariants = _chunkFBH73RRMcjs.toggleVariants; exports.transformEventToProgram = _chunkFBH73RRMcjs.transformEventToProgram; exports.transformPodcastToProgram = _chunkFBH73RRMcjs.transformPodcastToProgram; exports.transformWebinarToProgram = _chunkFBH73RRMcjs.transformWebinarToProgram; exports.useAppLayoutDrawerContainer = _chunkFBH73RRMcjs.useAppLayoutDrawerContainer; exports.useAuth = useAuth; exports.useBoardCollapse = _chunkFBH73RRMcjs.useBoardCollapse; exports.useChat = _chunkFBH73RRMcjs.useChat; exports.useChatAttachmentImageGallery = _chunkFBH73RRMcjs.useChatAttachmentImageGallery; exports.useChatAttachments = _chunkFBH73RRMcjs.useChatAttachments; exports.useChatCardItem = _chunkFBH73RRMcjs.useChatCardItem; exports.useChatIdentity = _chunkFBH73RRMcjs.useChatIdentity; exports.useChunkCatchup = _chunkFBH73RRMcjs.useChunkCatchup; exports.useCloseOnNavigation = _chunkFBH73RRMcjs.useCloseOnNavigation; exports.useCollapsible = _chunkFBH73RRMcjs.useCollapsible; exports.useContentLoading = useContentLoading; exports.useDataTable = _chunkFBH73RRMcjs.useDataTable; exports.useDataTableContext = _chunkFBH73RRMcjs.useDataTableContext; exports.useDocSearch = _chunkKQQDN2WKcjs.useDocSearch; exports.useDynamicTheme = _chunkFBH73RRMcjs.useDynamicTheme; exports.useEmbeddedChat = _chunkFBH73RRMcjs.useSseChatAdapter; exports.useFiltersDropdown = _chunkFBH73RRMcjs.useFiltersDropdown; exports.useJetStreamDialogSubscription = _chunkFBH73RRMcjs.useJetStreamDialogSubscription; exports.useLegalDocs = useLegalDocs; exports.useLoading = _chunkFBH73RRMcjs.useLoading; exports.useNatsChatAdapter = _chunkFBH73RRMcjs.useNatsChatAdapter; exports.useNatsDialogSubscription = _chunkFBH73RRMcjs.useNatsDialogSubscription; exports.useNotifications = _chunkFBH73RRMcjs.useNotifications; exports.useOnboardingState = _chunk3DC6MHW6cjs.useOnboardingState; exports.useOptionalNotifications = _chunkFBH73RRMcjs.useOptionalNotifications; exports.usePageActionsBottomPadding = _chunkEB76VWM4cjs.usePageActionsBottomPadding; exports.usePaginationLoading = usePaginationLoading; exports.useProxiedImageUrl = _chunkFBH73RRMcjs.useProxiedImageUrl; exports.useRealtimeChunkProcessor = _chunkFBH73RRMcjs.useRealtimeChunkProcessor; exports.useRoadmapVoting = useRoadmapVoting; exports.useSSE = _chunkFBH73RRMcjs.useSSE; exports.useSectionNavigation = _chunkFBH73RRMcjs.useSectionNavigation; exports.useSlashCommandRegistry = _chunkFBH73RRMcjs.useSlashCommandRegistry; exports.useSlashCommands = _chunkFBH73RRMcjs.useSlashCommands; exports.useSseChatAdapter = _chunkFBH73RRMcjs.useSseChatAdapter; exports.useTheme = _chunkFBH73RRMcjs.useTheme; exports.useThemeToggle = _chunkFBH73RRMcjs.useThemeToggle; exports.useUnifiedChat = _chunkFBH73RRMcjs.useUnifiedChat; exports.useUnifiedFiltering = useUnifiedFiltering; exports.useVideoOriginPreconnect = _chunkEB76VWM4cjs.useVideoOriginPreconnect; exports.useVideoWarmup = _chunkEB76VWM4cjs.useVideoWarmup; exports.usesCanonicalStatusStyle = _chunkFBH73RRMcjs.usesCanonicalStatusStyle; exports.vendorFilterConfig = vendorFilterConfig;
|
|
7908
7908
|
//# sourceMappingURL=index.cjs.map
|
package/dist/components/index.js
CHANGED
package/package.json
CHANGED
|
@@ -19,11 +19,23 @@ export interface FaqSectionProps {
|
|
|
19
19
|
entityType?: string
|
|
20
20
|
entityId?: number | string
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* <PageHeading> component without the lib
|
|
22
|
+
* Heading node. `undefined` → variant default (page: <h1>, embedded: <h2>
|
|
23
|
+
* "Frequently Asked Questions"); `null` → no heading. React node so
|
|
24
|
+
* platforms can drill their local <PageHeading> component without the lib
|
|
25
|
+
* referencing platform state.
|
|
25
26
|
*/
|
|
26
27
|
heading?: React.ReactNode | null
|
|
28
|
+
/**
|
|
29
|
+
* Shell variant — the FAQ LIST itself renders identically everywhere (ONE
|
|
30
|
+
* flat accordion, `faq.section` as a per-row chip, never a heading):
|
|
31
|
+
* - 'page' — the standalone /faqs surface: <main> shell + page gutters,
|
|
32
|
+
* default <h1> heading.
|
|
33
|
+
* - 'embedded' — a section inside a host page (entity detail rails, the
|
|
34
|
+
* global nested-page block): bare <section>, default <h2> heading.
|
|
35
|
+
* Back-compat default: `heading === null` → 'embedded', else 'page' (the
|
|
36
|
+
* pre-variant discriminator).
|
|
37
|
+
*/
|
|
38
|
+
variant?: 'page' | 'embedded'
|
|
27
39
|
/** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds
|
|
28
40
|
* don't emit duplicate schema. */
|
|
29
41
|
emitJsonLd?: boolean
|
|
@@ -52,20 +64,15 @@ function buildFaqsUrl(
|
|
|
52
64
|
return buildSuggestionUrl('/api/faqs', { apiBaseUrl, entityType, entityId, count: minResults })
|
|
53
65
|
}
|
|
54
66
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
arr.push({ id: faq.id, question: faq.question, answer: faq.answer })
|
|
65
|
-
}
|
|
66
|
-
return Array.from(map.entries()).map(([section, items]) => ({
|
|
67
|
-
section: section || null,
|
|
68
|
-
items,
|
|
67
|
+
/** ONE list shape for every surface — standalone /faqs and embeds render the
|
|
68
|
+
* IDENTICAL flat accordion (`faq.section` = per-row chip, never a heading),
|
|
69
|
+
* so the two can't drift visually. */
|
|
70
|
+
function toAccordionItems(faqs: Faq[]): FaqItem[] {
|
|
71
|
+
return faqs.map((faq) => ({
|
|
72
|
+
id: faq.id,
|
|
73
|
+
question: faq.question,
|
|
74
|
+
answer: faq.answer,
|
|
75
|
+
badge: faq.section || undefined,
|
|
69
76
|
}))
|
|
70
77
|
}
|
|
71
78
|
|
|
@@ -106,6 +113,7 @@ export function FaqSection({
|
|
|
106
113
|
entityType,
|
|
107
114
|
entityId,
|
|
108
115
|
heading,
|
|
116
|
+
variant,
|
|
109
117
|
emitJsonLd = false,
|
|
110
118
|
jsonLd,
|
|
111
119
|
className,
|
|
@@ -122,23 +130,30 @@ export function FaqSection({
|
|
|
122
130
|
const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })
|
|
123
131
|
|
|
124
132
|
const faqs = data?.faqs ?? []
|
|
125
|
-
const
|
|
133
|
+
const isEmbedded = variant ? variant === 'embedded' : heading === null
|
|
126
134
|
const headingNode =
|
|
127
|
-
heading === undefined
|
|
128
|
-
?
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
heading === undefined ? (
|
|
136
|
+
isEmbedded ? (
|
|
137
|
+
// Embedded default is an <h2> — a host page already owns the <h1>,
|
|
138
|
+
// and the schema/heading pair must read "Frequently Asked Questions"
|
|
139
|
+
// (one FAQ heading per page, never tag/section names).
|
|
140
|
+
<h2 className="text-h2 tracking-[-0.04em] text-ods-text-primary">{DEFAULT_HEADING_TEXT}</h2>
|
|
141
|
+
) : (
|
|
142
|
+
<h1 className="text-h1 tracking-[-0.04em] text-ods-text-primary">{DEFAULT_HEADING_TEXT}</h1>
|
|
143
|
+
)
|
|
144
|
+
) : (
|
|
145
|
+
heading
|
|
146
|
+
)
|
|
132
147
|
|
|
133
|
-
// Embedded mode
|
|
134
|
-
if (error &&
|
|
148
|
+
// Embedded mode: degrade silently on error.
|
|
149
|
+
if (error && isEmbedded) {
|
|
135
150
|
return null
|
|
136
151
|
}
|
|
137
152
|
|
|
138
153
|
// Embedded mode, zero FAQs after load: render nothing — an embedded host
|
|
139
154
|
// page (blog/case-study detail) must not show an empty section shell.
|
|
140
|
-
// The standalone /faqs page
|
|
141
|
-
if (!isLoading && !error && faqs.length === 0 &&
|
|
155
|
+
// The standalone /faqs page keeps its existing behavior.
|
|
156
|
+
if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
|
|
142
157
|
return null
|
|
143
158
|
}
|
|
144
159
|
|
|
@@ -146,7 +161,7 @@ export function FaqSection({
|
|
|
146
161
|
// Embedded mode renders skeletons WITHOUT the standalone page shell —
|
|
147
162
|
// a host detail page already provides <main> + gutters; nesting them
|
|
148
163
|
// here would emit invalid markup and double padding.
|
|
149
|
-
if (
|
|
164
|
+
if (isEmbedded) {
|
|
150
165
|
return (
|
|
151
166
|
<div className={className}>
|
|
152
167
|
<FaqSkeleton />
|
|
@@ -172,28 +187,24 @@ export function FaqSection({
|
|
|
172
187
|
|
|
173
188
|
const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null
|
|
174
189
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
// the host page owns layout. Standalone mode keeps the historical markup.
|
|
188
|
-
const body = showHeading ? (
|
|
190
|
+
// ONE flat accordion on EVERY surface — `faq.section` becomes a per-row
|
|
191
|
+
// chip, NOT a heading, so the page outline stays heading + h3(questions).
|
|
192
|
+
// Order is the server's (post-specific first, then reused) — grouping by
|
|
193
|
+
// section here would destroy it. The variants differ ONLY in shell:
|
|
194
|
+
// standalone /faqs keeps its <main> + page gutters, embeds render bare.
|
|
195
|
+
const accordion = <FaqAccordion items={toAccordionItems(faqs)} />
|
|
196
|
+
const body = isEmbedded ? (
|
|
197
|
+
<section className={className ?? 'space-y-10'}>
|
|
198
|
+
{headingNode}
|
|
199
|
+
{accordion}
|
|
200
|
+
</section>
|
|
201
|
+
) : (
|
|
189
202
|
<main className={className ?? 'bg-ods-bg'}>
|
|
190
203
|
<div className="max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10">
|
|
191
204
|
{headingNode}
|
|
192
|
-
{
|
|
205
|
+
{accordion}
|
|
193
206
|
</div>
|
|
194
207
|
</main>
|
|
195
|
-
) : (
|
|
196
|
-
<section className={className ?? 'space-y-10'}>{groupNodes}</section>
|
|
197
208
|
)
|
|
198
209
|
|
|
199
210
|
return (
|
|
@@ -8,6 +8,10 @@ export interface FaqItem {
|
|
|
8
8
|
id: number | string
|
|
9
9
|
question: string
|
|
10
10
|
answer: string
|
|
11
|
+
/** Optional category label rendered as a neutral chip under the question
|
|
12
|
+
* (NOT a heading — keeps the document outline to h2/h3 only). Mirrors the
|
|
13
|
+
* hub's FaqSectionBadge recipe so admin + public chips stay identical. */
|
|
14
|
+
badge?: string
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
interface FaqAccordionProps {
|
|
@@ -76,9 +80,16 @@ export function FaqAccordion({ items, defaultOpenIds = [] }: FaqAccordionProps)
|
|
|
76
80
|
aria-expanded={isOpen}
|
|
77
81
|
className="flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer"
|
|
78
82
|
>
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
<div className="flex min-w-0 flex-col gap-2 pr-4">
|
|
84
|
+
<h3>
|
|
85
|
+
{item.question}
|
|
86
|
+
</h3>
|
|
87
|
+
{item.badge && (
|
|
88
|
+
<span className="w-fit shrink-0 px-2 py-1 rounded text-xs font-medium font-['DM_Sans'] bg-ods-border text-ods-text-secondary">
|
|
89
|
+
{item.badge}
|
|
90
|
+
</span>
|
|
91
|
+
)}
|
|
92
|
+
</div>
|
|
82
93
|
<div className="flex-shrink-0">
|
|
83
94
|
<ChevronButton
|
|
84
95
|
aria-label={isOpen ? 'Collapse question' : 'Expand question'}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/faq/faq-section.tsx","../src/components/faq-accordion.tsx","../src/components/faq/json-ld.ts"],"sourcesContent":["\"use client\"\n\nimport React, { useMemo } from 'react'\nimport type { Faq } from '../../types/faq'\nimport { FaqAccordion, type FaqItem } from '../faq-accordion'\nimport { useSelfFetch } from '../../hooks/use-self-fetch'\nimport { buildSuggestionUrl } from '../../utils/suggestion-url'\nimport { serializeJsonLd } from '../../utils/common'\nimport { buildFaqJsonLdFromFaqs, type FaqSchemaOptions } from './json-ld'\n\nexport interface FaqSectionProps {\n /**\n * SSR hydrate. When provided, the hook skips the first client fetch (per\n * useSelfFetch contract). The consuming server page resolves FAQs then drills\n * them into this prop — the lib never re-fetches what the host already gated on.\n */\n initialFaqs?: Faq[]\n /** Both required together for entity-attached FAQs; partial → bare /api/faqs. */\n entityType?: string\n entityId?: number | string\n /**\n * Page heading. Pass null to render in embedded mode (no <h1>, error branch\n * suppresses any banner). React node so platforms can drill their local\n * <PageHeading> component without the lib referencing platform state.\n */\n heading?: React.ReactNode | null\n /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds\n * don't emit duplicate schema. */\n emitJsonLd?: boolean\n /** Overrides for the JSON-LD's name/description/url. */\n jsonLd?: FaqSchemaOptions\n className?: string\n /** Maps to /api/faqs `?count=` (the 5-tier fill target). Absent → param\n * not sent (server default applies). */\n minResults?: number\n /** Fetch-URL prefix for third-party embeds / reverse proxies\n * ('' = same-origin relative). */\n apiBaseUrl?: string\n}\n\nconst DEFAULT_HEADING_TEXT = 'Frequently Asked Questions'\n\n/** URL composition shared with RelatedContentSection (`buildSuggestionUrl`)\n * — byte-identical to the historical `buildFaqsUrl` output when\n * `minResults`/`apiBaseUrl` are absent. */\nfunction buildFaqsUrl(\n entityType?: string,\n entityId?: number | string,\n minResults?: number,\n apiBaseUrl = '',\n): string {\n return buildSuggestionUrl('/api/faqs', { apiBaseUrl, entityType, entityId, count: minResults })\n}\n\nfunction groupBySection(faqs: Faq[]): Array<{ section: string | null; items: FaqItem[] }> {\n const map = new Map<string, FaqItem[]>()\n for (const faq of faqs) {\n const key = faq.section || ''\n let arr = map.get(key)\n if (!arr) {\n arr = []\n map.set(key, arr)\n }\n arr.push({ id: faq.id, question: faq.question, answer: faq.answer })\n }\n return Array.from(map.entries()).map(([section, items]) => ({\n section: section || null,\n items,\n }))\n}\n\nfunction FaqSkeleton() {\n return (\n <div className=\"space-y-8 animate-pulse\">\n <div className=\"h-12 md:h-14 w-2/3 rounded bg-ods-border\" />\n <div className=\"rounded-3xl border border-ods-border overflow-hidden bg-ods-card divide-y divide-ods-border w-full\">\n {Array.from({ length: 8 }).map((_, idx) => (\n <div key={idx} className=\"flex items-center justify-between px-6 md:px-8 py-6\">\n <div className=\"h-6 w-5/6 rounded bg-ods-border\" />\n <div className=\"h-10 w-10 rounded-md bg-ods-border\" />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface FaqsResponse {\n faqs: Faq[]\n}\n\n/**\n * Generic, embeddable FAQ display surface.\n *\n * - Standalone /faqs page: pass `initialFaqs` from the server + `heading` +\n * `emitJsonLd` with `jsonLd` overrides for SEO.\n * - Per-entity embed: pass `entityType` + `entityId` (no `initialFaqs`); the\n * hook self-fetches and the public /api/faqs endpoint picks override-vs-fallback.\n *\n * CONTRACT: the consuming app MUST implement `GET /api/faqs`. Without it,\n * useSelfFetch reports `error:true` (logged once); in embedded mode (heading\n * === null) this component renders nothing so the host page isn't disfigured.\n */\nexport function FaqSection({\n initialFaqs,\n entityType,\n entityId,\n heading,\n emitJsonLd = false,\n jsonLd,\n className,\n minResults,\n apiBaseUrl = '',\n}: FaqSectionProps) {\n const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl)\n // Memoized — useSelfFetch re-syncs on [initialData]; a fresh per-render\n // wrapper object would setState-loop under re-rendering parents.\n const initialData = useMemo<FaqsResponse | undefined>(\n () => (initialFaqs ? { faqs: initialFaqs } : undefined),\n [initialFaqs],\n )\n const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })\n\n const faqs = data?.faqs ?? []\n const showHeading = heading !== null\n const headingNode =\n heading === undefined\n ? <h1 className=\"text-h1 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h1>\n : heading\n\n const groups = groupBySection(faqs)\n\n // Embedded mode (no heading): degrade silently on error.\n if (error && !showHeading) {\n return null\n }\n\n // Embedded mode, zero FAQs after load: render nothing — an embedded host\n // page (blog/case-study detail) must not show an empty section shell.\n // The standalone /faqs page (heading set) keeps its existing behavior.\n if (!isLoading && !error && faqs.length === 0 && !showHeading) {\n return null\n }\n\n if (isLoading && faqs.length === 0) {\n // Embedded mode renders skeletons WITHOUT the standalone page shell —\n // a host detail page already provides <main> + gutters; nesting them\n // here would emit invalid markup and double padding.\n if (!showHeading) {\n return (\n <div className={className}>\n <FaqSkeleton />\n </div>\n )\n }\n return (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto\">\n <FaqSkeleton />\n </div>\n </main>\n )\n }\n\n if (error && faqs.length === 0) {\n return (\n <main className={className ?? 'bg-ods-bg flex items-center justify-center py-20'}>\n <p className=\"text-ods-text-primary font-medium\">Failed to load FAQs. Please try again later.</p>\n </main>\n )\n }\n\n const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null\n\n const groupNodes = groups.map(({ section, items }) => (\n <div key={section || 'default'} className=\"space-y-4\">\n {section && (\n <h2 className=\"text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4\">\n {section}\n </h2>\n )}\n <FaqAccordion items={items} />\n </div>\n ))\n\n // Embedded mode (heading === null): no <main> page shell, no page gutters —\n // the host page owns layout. Standalone mode keeps the historical markup.\n const body = showHeading ? (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10\">\n {headingNode}\n {groupNodes}\n </div>\n </main>\n ) : (\n <section className={className ?? 'space-y-10'}>{groupNodes}</section>\n )\n\n return (\n <>\n {body}\n {schema && (\n <script\n type=\"application/ld+json\"\n // eslint-disable-next-line react/no-danger\n // serializeJsonLd, NOT raw JSON.stringify — FAQ answers are\n // admin-entered; an embedded \"</script>\" must not break the tag.\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(schema) }}\n />\n )}\n </>\n )\n}\n","\"use client\"\n\nimport React, { useRef, useState, useEffect, useCallback } from 'react'\nimport { ChevronButton } from './ui/chevron-button'\nimport { cn } from \"../utils/cn\"\n\nexport interface FaqItem {\n id: number | string\n question: string\n answer: string\n}\n\ninterface FaqAccordionProps {\n items: FaqItem[]\n defaultOpenIds?: (number | string)[]\n}\n\n// Utility to measure scrollHeight outside render cycle\nconst useMeasuredHeight = (isOpen: boolean) => {\n const ref = useRef<HTMLDivElement | null>(null)\n const [maxHeight, setMaxHeight] = useState<string>('0px')\n\n const measure = useCallback(() => {\n if (ref.current) {\n const height = ref.current.scrollHeight\n setMaxHeight(`${height}px`)\n }\n }, [])\n\n // Update height only when section is open\n useEffect(() => {\n if (isOpen) {\n measure()\n } else {\n setMaxHeight('0px')\n }\n }, [isOpen, measure])\n\n return { ref, maxHeight }\n}\n\nexport function FaqAccordion({ items, defaultOpenIds = [] }: FaqAccordionProps) {\n const [openSet, setOpenSet] = useState<Set<string | number>>(new Set(defaultOpenIds))\n\n const toggle = (id: string | number) => {\n setOpenSet(prev => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n return (\n <div className=\"rounded-3xl border border-ods-border divide-y divide-ods-border bg-ods-card overflow-hidden\">\n {items.map(item => {\n const isOpen = openSet.has(item.id)\n const { ref, maxHeight } = useMeasuredHeight(isOpen)\n\n return (\n <div\n key={item.id}\n className={cn('group transition-colors hover:bg-[#1E1E1E]', isOpen ? 'bg-ods-bg' : 'bg-transparent')}\n >\n {/* Header */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => toggle(item.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggle(item.id);\n }\n }}\n aria-expanded={isOpen}\n className=\"flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer\"\n >\n <h3>\n {item.question}\n </h3>\n <div className=\"flex-shrink-0\">\n <ChevronButton\n aria-label={isOpen ? 'Collapse question' : 'Expand question'}\n size=\"md\"\n isExpanded={isOpen}\n backgroundColor=\"transparent\"\n borderColor=\"#3A3A3A\"\n />\n </div>\n </div>\n {/* Content wrapper with max-height animation */}\n <div\n style={{ maxHeight, transition: 'max-height 0.35s ease-in-out, opacity 0.35s ease-in-out', opacity: isOpen ? 1 : 0 }}\n className=\"overflow-hidden group-hover:bg-[#1E1E1E]/30\"\n >\n <div ref={ref} className=\"px-6 md:px-8 pb-6 text-ods-text-primary text-h4\">\n {item.answer}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n} ","/**\n * Pure FAQ JSON-LD builder. No React, no client-only deps — safe to import from\n * Server Components via the `./components/faq` subpath export. (Do NOT import\n * through the root `./components` barrel — that barrel is `\"use client\"` and\n * dragging it into a Server Component would force the client graph into the\n * server.)\n *\n * The hub used to harcode `name`/`description` here for OpenMSP; in the lib we\n * accept overrides so every embedder can supply its own platform branding.\n */\nimport type { Faq } from '../../types/faq'\n\nexport interface FaqSchemaOptions {\n name?: string\n description?: string\n url?: string\n}\n\nconst DEFAULT_NAME = 'Frequently Asked Questions'\nconst DEFAULT_DESCRIPTION =\n 'Answers to common questions.'\n\nexport function baseFaqSchema(opts: FaqSchemaOptions = {}) {\n return {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n name: opts.name ?? DEFAULT_NAME,\n description: opts.description ?? DEFAULT_DESCRIPTION,\n ...(opts.url ? { url: opts.url } : {}),\n } as const\n}\n\nexport function buildFaqJsonLdFromFaqs(faqs: Faq[], opts: FaqSchemaOptions = {}) {\n return {\n ...baseFaqSchema(opts),\n mainEntity: faqs.map((faq) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n } as const\n}\n"],"mappings":"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","names":["jsx","jsxs"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-ZJP2BB3E.cjs","../src/components/faq/faq-section.tsx","../src/components/faq-accordion.tsx","../src/components/faq/json-ld.ts"],"names":["jsx"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-ZJP2BB3E.cjs","sourcesContent":[null,"\"use client\"\n\nimport React, { useMemo } from 'react'\nimport type { Faq } from '../../types/faq'\nimport { FaqAccordion, type FaqItem } from '../faq-accordion'\nimport { useSelfFetch } from '../../hooks/use-self-fetch'\nimport { buildSuggestionUrl } from '../../utils/suggestion-url'\nimport { serializeJsonLd } from '../../utils/common'\nimport { buildFaqJsonLdFromFaqs, type FaqSchemaOptions } from './json-ld'\n\nexport interface FaqSectionProps {\n /**\n * SSR hydrate. When provided, the hook skips the first client fetch (per\n * useSelfFetch contract). The consuming server page resolves FAQs then drills\n * them into this prop — the lib never re-fetches what the host already gated on.\n */\n initialFaqs?: Faq[]\n /** Both required together for entity-attached FAQs; partial → bare /api/faqs. */\n entityType?: string\n entityId?: number | string\n /**\n * Page heading. Pass null to render in embedded mode (no <h1>, error branch\n * suppresses any banner). React node so platforms can drill their local\n * <PageHeading> component without the lib referencing platform state.\n */\n heading?: React.ReactNode | null\n /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds\n * don't emit duplicate schema. */\n emitJsonLd?: boolean\n /** Overrides for the JSON-LD's name/description/url. */\n jsonLd?: FaqSchemaOptions\n className?: string\n /** Maps to /api/faqs `?count=` (the 5-tier fill target). Absent → param\n * not sent (server default applies). */\n minResults?: number\n /** Fetch-URL prefix for third-party embeds / reverse proxies\n * ('' = same-origin relative). */\n apiBaseUrl?: string\n}\n\nconst DEFAULT_HEADING_TEXT = 'Frequently Asked Questions'\n\n/** URL composition shared with RelatedContentSection (`buildSuggestionUrl`)\n * — byte-identical to the historical `buildFaqsUrl` output when\n * `minResults`/`apiBaseUrl` are absent. */\nfunction buildFaqsUrl(\n entityType?: string,\n entityId?: number | string,\n minResults?: number,\n apiBaseUrl = '',\n): string {\n return buildSuggestionUrl('/api/faqs', { apiBaseUrl, entityType, entityId, count: minResults })\n}\n\nfunction groupBySection(faqs: Faq[]): Array<{ section: string | null; items: FaqItem[] }> {\n const map = new Map<string, FaqItem[]>()\n for (const faq of faqs) {\n const key = faq.section || ''\n let arr = map.get(key)\n if (!arr) {\n arr = []\n map.set(key, arr)\n }\n arr.push({ id: faq.id, question: faq.question, answer: faq.answer })\n }\n return Array.from(map.entries()).map(([section, items]) => ({\n section: section || null,\n items,\n }))\n}\n\nfunction FaqSkeleton() {\n return (\n <div className=\"space-y-8 animate-pulse\">\n <div className=\"h-12 md:h-14 w-2/3 rounded bg-ods-border\" />\n <div className=\"rounded-3xl border border-ods-border overflow-hidden bg-ods-card divide-y divide-ods-border w-full\">\n {Array.from({ length: 8 }).map((_, idx) => (\n <div key={idx} className=\"flex items-center justify-between px-6 md:px-8 py-6\">\n <div className=\"h-6 w-5/6 rounded bg-ods-border\" />\n <div className=\"h-10 w-10 rounded-md bg-ods-border\" />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\ninterface FaqsResponse {\n faqs: Faq[]\n}\n\n/**\n * Generic, embeddable FAQ display surface.\n *\n * - Standalone /faqs page: pass `initialFaqs` from the server + `heading` +\n * `emitJsonLd` with `jsonLd` overrides for SEO.\n * - Per-entity embed: pass `entityType` + `entityId` (no `initialFaqs`); the\n * hook self-fetches and the public /api/faqs endpoint picks override-vs-fallback.\n *\n * CONTRACT: the consuming app MUST implement `GET /api/faqs`. Without it,\n * useSelfFetch reports `error:true` (logged once); in embedded mode (heading\n * === null) this component renders nothing so the host page isn't disfigured.\n */\nexport function FaqSection({\n initialFaqs,\n entityType,\n entityId,\n heading,\n emitJsonLd = false,\n jsonLd,\n className,\n minResults,\n apiBaseUrl = '',\n}: FaqSectionProps) {\n const url = buildFaqsUrl(entityType, entityId, minResults, apiBaseUrl)\n // Memoized — useSelfFetch re-syncs on [initialData]; a fresh per-render\n // wrapper object would setState-loop under re-rendering parents.\n const initialData = useMemo<FaqsResponse | undefined>(\n () => (initialFaqs ? { faqs: initialFaqs } : undefined),\n [initialFaqs],\n )\n const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })\n\n const faqs = data?.faqs ?? []\n const showHeading = heading !== null\n const headingNode =\n heading === undefined\n ? <h1 className=\"text-h1 tracking-[-0.04em] text-ods-text-primary\">{DEFAULT_HEADING_TEXT}</h1>\n : heading\n\n const groups = groupBySection(faqs)\n\n // Embedded mode (no heading): degrade silently on error.\n if (error && !showHeading) {\n return null\n }\n\n // Embedded mode, zero FAQs after load: render nothing — an embedded host\n // page (blog/case-study detail) must not show an empty section shell.\n // The standalone /faqs page (heading set) keeps its existing behavior.\n if (!isLoading && !error && faqs.length === 0 && !showHeading) {\n return null\n }\n\n if (isLoading && faqs.length === 0) {\n // Embedded mode renders skeletons WITHOUT the standalone page shell —\n // a host detail page already provides <main> + gutters; nesting them\n // here would emit invalid markup and double padding.\n if (!showHeading) {\n return (\n <div className={className}>\n <FaqSkeleton />\n </div>\n )\n }\n return (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto\">\n <FaqSkeleton />\n </div>\n </main>\n )\n }\n\n if (error && faqs.length === 0) {\n return (\n <main className={className ?? 'bg-ods-bg flex items-center justify-center py-20'}>\n <p className=\"text-ods-text-primary font-medium\">Failed to load FAQs. Please try again later.</p>\n </main>\n )\n }\n\n const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null\n\n const groupNodes = groups.map(({ section, items }) => (\n <div key={section || 'default'} className=\"space-y-4\">\n {section && (\n <h2 className=\"text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4\">\n {section}\n </h2>\n )}\n <FaqAccordion items={items} />\n </div>\n ))\n\n // Embedded mode (heading === null): no <main> page shell, no page gutters —\n // the host page owns layout. Standalone mode keeps the historical markup.\n const body = showHeading ? (\n <main className={className ?? 'bg-ods-bg'}>\n <div className=\"max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10\">\n {headingNode}\n {groupNodes}\n </div>\n </main>\n ) : (\n <section className={className ?? 'space-y-10'}>{groupNodes}</section>\n )\n\n return (\n <>\n {body}\n {schema && (\n <script\n type=\"application/ld+json\"\n // eslint-disable-next-line react/no-danger\n // serializeJsonLd, NOT raw JSON.stringify — FAQ answers are\n // admin-entered; an embedded \"</script>\" must not break the tag.\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(schema) }}\n />\n )}\n </>\n )\n}\n","\"use client\"\n\nimport React, { useRef, useState, useEffect, useCallback } from 'react'\nimport { ChevronButton } from './ui/chevron-button'\nimport { cn } from \"../utils/cn\"\n\nexport interface FaqItem {\n id: number | string\n question: string\n answer: string\n}\n\ninterface FaqAccordionProps {\n items: FaqItem[]\n defaultOpenIds?: (number | string)[]\n}\n\n// Utility to measure scrollHeight outside render cycle\nconst useMeasuredHeight = (isOpen: boolean) => {\n const ref = useRef<HTMLDivElement | null>(null)\n const [maxHeight, setMaxHeight] = useState<string>('0px')\n\n const measure = useCallback(() => {\n if (ref.current) {\n const height = ref.current.scrollHeight\n setMaxHeight(`${height}px`)\n }\n }, [])\n\n // Update height only when section is open\n useEffect(() => {\n if (isOpen) {\n measure()\n } else {\n setMaxHeight('0px')\n }\n }, [isOpen, measure])\n\n return { ref, maxHeight }\n}\n\nexport function FaqAccordion({ items, defaultOpenIds = [] }: FaqAccordionProps) {\n const [openSet, setOpenSet] = useState<Set<string | number>>(new Set(defaultOpenIds))\n\n const toggle = (id: string | number) => {\n setOpenSet(prev => {\n const next = new Set(prev)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n return next\n })\n }\n\n return (\n <div className=\"rounded-3xl border border-ods-border divide-y divide-ods-border bg-ods-card overflow-hidden\">\n {items.map(item => {\n const isOpen = openSet.has(item.id)\n const { ref, maxHeight } = useMeasuredHeight(isOpen)\n\n return (\n <div\n key={item.id}\n className={cn('group transition-colors hover:bg-[#1E1E1E]', isOpen ? 'bg-ods-bg' : 'bg-transparent')}\n >\n {/* Header */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => toggle(item.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggle(item.id);\n }\n }}\n aria-expanded={isOpen}\n className=\"flex w-full items-center justify-between px-6 md:px-8 py-6 text-left focus:outline-none transition-colors cursor-pointer\"\n >\n <h3>\n {item.question}\n </h3>\n <div className=\"flex-shrink-0\">\n <ChevronButton\n aria-label={isOpen ? 'Collapse question' : 'Expand question'}\n size=\"md\"\n isExpanded={isOpen}\n backgroundColor=\"transparent\"\n borderColor=\"#3A3A3A\"\n />\n </div>\n </div>\n {/* Content wrapper with max-height animation */}\n <div\n style={{ maxHeight, transition: 'max-height 0.35s ease-in-out, opacity 0.35s ease-in-out', opacity: isOpen ? 1 : 0 }}\n className=\"overflow-hidden group-hover:bg-[#1E1E1E]/30\"\n >\n <div ref={ref} className=\"px-6 md:px-8 pb-6 text-ods-text-primary text-h4\">\n {item.answer}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n} ","/**\n * Pure FAQ JSON-LD builder. No React, no client-only deps — safe to import from\n * Server Components via the `./components/faq` subpath export. (Do NOT import\n * through the root `./components` barrel — that barrel is `\"use client\"` and\n * dragging it into a Server Component would force the client graph into the\n * server.)\n *\n * The hub used to harcode `name`/`description` here for OpenMSP; in the lib we\n * accept overrides so every embedder can supply its own platform branding.\n */\nimport type { Faq } from '../../types/faq'\n\nexport interface FaqSchemaOptions {\n name?: string\n description?: string\n url?: string\n}\n\nconst DEFAULT_NAME = 'Frequently Asked Questions'\nconst DEFAULT_DESCRIPTION =\n 'Answers to common questions.'\n\nexport function baseFaqSchema(opts: FaqSchemaOptions = {}) {\n return {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n name: opts.name ?? DEFAULT_NAME,\n description: opts.description ?? DEFAULT_DESCRIPTION,\n ...(opts.url ? { url: opts.url } : {}),\n } as const\n}\n\nexport function buildFaqJsonLdFromFaqs(faqs: Faq[], opts: FaqSchemaOptions = {}) {\n return {\n ...baseFaqSchema(opts),\n mainEntity: faqs.map((faq) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n } as const\n}\n"]}
|