@flamingo-stack/openframe-frontend-core 0.0.258 → 0.0.259

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.
@@ -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.jsx.call(void 0, "h3", { children: item.question }),
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
  {
@@ -161,6 +164,7 @@ function FaqSection({
161
164
  entityType,
162
165
  entityId,
163
166
  heading,
167
+ variant,
164
168
  emitJsonLd = false,
165
169
  jsonLd,
166
170
  className,
@@ -174,17 +178,21 @@ function FaqSection({
174
178
  );
175
179
  const { data, isLoading, error } = _chunkT7AJBKZPcjs.useSelfFetch.call(void 0, url, { initialData });
176
180
  const faqs = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _2 => _2.faqs]), () => ( []));
177
- const showHeading = heading !== null;
178
- const headingNode = heading === void 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
179
- const groups = groupBySection(faqs);
180
- if (error && !showHeading) {
181
+ const isEmbedded = variant ? variant === "embedded" : heading === null;
182
+ const headingNode = heading === void 0 ? isEmbedded ? (
183
+ // Embedded default is an <h2> — a host page already owns the <h1>,
184
+ // and the schema/heading pair must read "Frequently Asked Questions"
185
+ // (one FAQ heading per page, never tag/section names).
186
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT })
187
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
188
+ if (error && isEmbedded) {
181
189
  return null;
182
190
  }
183
- if (!isLoading && !error && faqs.length === 0 && !showHeading) {
191
+ if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
184
192
  return null;
185
193
  }
186
194
  if (isLoading && faqs.length === 0) {
187
- if (!showHeading) {
195
+ if (isEmbedded) {
188
196
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqSkeleton, {}) });
189
197
  }
190
198
  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 +201,30 @@ function FaqSection({
193
201
  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
202
  }
195
203
  const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null;
196
- const groupNodes = groups.map(({ section, items }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
197
- section && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4", children: section }),
198
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqAccordion, { items })
199
- ] }, section || "default"));
200
- const body = showHeading ? /* @__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: [
204
+ const body = isEmbedded ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "section", { className: _nullishCoalesce(className, () => ( "space-y-6")), children: [
201
205
  headingNode,
202
- groupNodes
203
- ] }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "section", { className: _nullishCoalesce(className, () => ( "space-y-10")), children: groupNodes });
206
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
207
+ FaqAccordion,
208
+ {
209
+ items: faqs.map((faq) => ({
210
+ id: faq.id,
211
+ question: faq.question,
212
+ answer: faq.answer,
213
+ badge: faq.section || void 0
214
+ }))
215
+ }
216
+ )
217
+ ] }) : (
218
+ // Page variant (standalone /faqs): historical markup — <main> shell,
219
+ // page gutters, FAQs grouped by section with one <h2> per section.
220
+ /* @__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: [
221
+ headingNode,
222
+ groupBySection(faqs).map(({ section, items }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
223
+ section && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4", children: section }),
224
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqAccordion, { items })
225
+ ] }, section || "default"))
226
+ ] }) })
227
+ );
204
228
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
205
229
  body,
206
230
  schema && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -217,4 +241,4 @@ function FaqSection({
217
241
 
218
242
 
219
243
  exports.FaqAccordion = FaqAccordion; exports.FaqSection = FaqSection;
220
- //# sourceMappingURL=chunk-ZJP2BB3E.cjs.map
244
+ //# sourceMappingURL=chunk-3UAV25YB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-3UAV25YB.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-3UAV25YB.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 * Layout variant.\n * - 'page' — the standalone /faqs surface: <main> shell + page gutters,\n * FAQs GROUPED by `faq.section` with one <h2> per section.\n * - 'embedded' — a section inside a host page (entity detail rails, the\n * global nested-page block): no shell, ONE flat accordion with each\n * row's `faq.section` rendered as a neutral chip (never a heading) and\n * a single default <h2> above. Exactly one FAQ block per page — the\n * per-tag heading loop is page-variant-only.\n * Back-compat default: `heading === null` → 'embedded', else 'page' (the\n * pre-variant discriminator, kept so older embedders don't shift layout\n * until they opt in — they DO pick up the flat chip list, which is the\n * point of the consolidation).\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\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 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 // Embedded: ONE flat accordion — `faq.section` becomes a per-row chip, NOT\n // a heading, so the host page's outline stays h2(\"Frequently Asked\n // Questions\") + h3(questions). Order is the server's (post-specific first,\n // then reused) — grouping by section here would destroy it.\n const body = isEmbedded ? (\n <section className={className ?? 'space-y-6'}>\n {headingNode}\n <FaqAccordion\n items={faqs.map((faq) => ({\n id: faq.id,\n question: faq.question,\n answer: faq.answer,\n badge: faq.section || undefined,\n }))}\n />\n </section>\n ) : (\n // Page variant (standalone /faqs): historical markup — <main> shell,\n // page gutters, FAQs grouped by section with one <h2> per section.\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 {groupBySection(faqs).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 </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__ */ jsx("h3", { children: item.question }),
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
  {
@@ -161,6 +164,7 @@ function FaqSection({
161
164
  entityType,
162
165
  entityId,
163
166
  heading,
167
+ variant,
164
168
  emitJsonLd = false,
165
169
  jsonLd,
166
170
  className,
@@ -174,17 +178,21 @@ function FaqSection({
174
178
  );
175
179
  const { data, isLoading, error } = useSelfFetch(url, { initialData });
176
180
  const faqs = data?.faqs ?? [];
177
- const showHeading = heading !== null;
178
- const headingNode = heading === void 0 ? /* @__PURE__ */ jsx2("h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
179
- const groups = groupBySection(faqs);
180
- if (error && !showHeading) {
181
+ const isEmbedded = variant ? variant === "embedded" : heading === null;
182
+ const headingNode = heading === void 0 ? isEmbedded ? (
183
+ // Embedded default is an <h2> — a host page already owns the <h1>,
184
+ // and the schema/heading pair must read "Frequently Asked Questions"
185
+ // (one FAQ heading per page, never tag/section names).
186
+ /* @__PURE__ */ jsx2("h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT })
187
+ ) : /* @__PURE__ */ jsx2("h1", { className: "text-h1 tracking-[-0.04em] text-ods-text-primary", children: DEFAULT_HEADING_TEXT }) : heading;
188
+ if (error && isEmbedded) {
181
189
  return null;
182
190
  }
183
- if (!isLoading && !error && faqs.length === 0 && !showHeading) {
191
+ if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
184
192
  return null;
185
193
  }
186
194
  if (isLoading && faqs.length === 0) {
187
- if (!showHeading) {
195
+ if (isEmbedded) {
188
196
  return /* @__PURE__ */ jsx2("div", { className, children: /* @__PURE__ */ jsx2(FaqSkeleton, {}) });
189
197
  }
190
198
  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 +201,30 @@ function FaqSection({
193
201
  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
202
  }
195
203
  const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null;
196
- const groupNodes = groups.map(({ section, items }) => /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
197
- section && /* @__PURE__ */ jsx2("h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4", children: section }),
198
- /* @__PURE__ */ jsx2(FaqAccordion, { items })
199
- ] }, section || "default"));
200
- const body = showHeading ? /* @__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: [
204
+ const body = isEmbedded ? /* @__PURE__ */ jsxs2("section", { className: className ?? "space-y-6", children: [
201
205
  headingNode,
202
- groupNodes
203
- ] }) }) : /* @__PURE__ */ jsx2("section", { className: className ?? "space-y-10", children: groupNodes });
206
+ /* @__PURE__ */ jsx2(
207
+ FaqAccordion,
208
+ {
209
+ items: faqs.map((faq) => ({
210
+ id: faq.id,
211
+ question: faq.question,
212
+ answer: faq.answer,
213
+ badge: faq.section || void 0
214
+ }))
215
+ }
216
+ )
217
+ ] }) : (
218
+ // Page variant (standalone /faqs): historical markup — <main> shell,
219
+ // page gutters, FAQs grouped by section with one <h2> per section.
220
+ /* @__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: [
221
+ headingNode,
222
+ groupBySection(faqs).map(({ section, items }) => /* @__PURE__ */ jsxs2("div", { className: "space-y-4", children: [
223
+ section && /* @__PURE__ */ jsx2("h2", { className: "text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4", children: section }),
224
+ /* @__PURE__ */ jsx2(FaqAccordion, { items })
225
+ ] }, section || "default"))
226
+ ] }) })
227
+ );
204
228
  return /* @__PURE__ */ jsxs2(Fragment, { children: [
205
229
  body,
206
230
  schema && /* @__PURE__ */ jsx2(
@@ -217,4 +241,4 @@ export {
217
241
  FaqAccordion,
218
242
  FaqSection
219
243
  };
220
- //# sourceMappingURL=chunk-J3QMPOS6.js.map
244
+ //# sourceMappingURL=chunk-OVXKTNEP.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 * Layout variant.\n * - 'page' — the standalone /faqs surface: <main> shell + page gutters,\n * FAQs GROUPED by `faq.section` with one <h2> per section.\n * - 'embedded' — a section inside a host page (entity detail rails, the\n * global nested-page block): no shell, ONE flat accordion with each\n * row's `faq.section` rendered as a neutral chip (never a heading) and\n * a single default <h2> above. Exactly one FAQ block per page — the\n * per-tag heading loop is page-variant-only.\n * Back-compat default: `heading === null` → 'embedded', else 'page' (the\n * pre-variant discriminator, kept so older embedders don't shift layout\n * until they opt in — they DO pick up the flat chip list, which is the\n * point of the consolidation).\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\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 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 // Embedded: ONE flat accordion — `faq.section` becomes a per-row chip, NOT\n // a heading, so the host page's outline stays h2(\"Frequently Asked\n // Questions\") + h3(questions). Order is the server's (post-specific first,\n // then reused) — grouping by section here would destroy it.\n const body = isEmbedded ? (\n <section className={className ?? 'space-y-6'}>\n {headingNode}\n <FaqAccordion\n items={faqs.map((faq) => ({\n id: faq.id,\n question: faq.question,\n answer: faq.answer,\n badge: faq.section || undefined,\n }))}\n />\n </section>\n ) : (\n // Page variant (standalone /faqs): historical markup — <main> shell,\n // page gutters, FAQs grouped by section with one <h2> per section.\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 {groupBySection(faqs).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 </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,27 @@ export interface FaqSectionProps {
12
12
  entityType?: string;
13
13
  entityId?: number | string;
14
14
  /**
15
- * Page heading. Pass null to render in embedded mode (no <h1>, error branch
16
- * suppresses any banner). React node so platforms can drill their local
17
- * <PageHeading> component without the lib referencing platform state.
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
+ * Layout variant.
23
+ * - 'page' — the standalone /faqs surface: <main> shell + page gutters,
24
+ * FAQs GROUPED by `faq.section` with one <h2> per section.
25
+ * - 'embedded' — a section inside a host page (entity detail rails, the
26
+ * global nested-page block): no shell, ONE flat accordion with each
27
+ * row's `faq.section` rendered as a neutral chip (never a heading) and
28
+ * a single default <h2> above. Exactly one FAQ block per page — the
29
+ * per-tag heading loop is page-variant-only.
30
+ * Back-compat default: `heading === null` → 'embedded', else 'page' (the
31
+ * pre-variant discriminator, kept so older embedders don't shift layout
32
+ * until they opt in — they DO pick up the flat chip list, which is the
33
+ * point of the consolidation).
34
+ */
35
+ variant?: 'page' | 'embedded';
20
36
  /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds
21
37
  * don't emit duplicate schema. */
22
38
  emitJsonLd?: boolean;
@@ -42,5 +58,5 @@ export interface FaqSectionProps {
42
58
  * useSelfFetch reports `error:true` (logged once); in embedded mode (heading
43
59
  * === null) this component renders nothing so the host page isn't disfigured.
44
60
  */
45
- export declare function FaqSection({ initialFaqs, entityType, entityId, heading, emitJsonLd, jsonLd, className, minResults, apiBaseUrl, }: FaqSectionProps): React.JSX.Element | null;
61
+ export declare function FaqSection({ initialFaqs, entityType, entityId, heading, variant, emitJsonLd, jsonLd, className, minResults, apiBaseUrl, }: FaqSectionProps): React.JSX.Element | null;
46
62
  //# 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;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;IAChC;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;AAqDD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO,EACP,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAe,GAChB,EAAE,eAAe,4BAmGjB"}
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;;;;;;;;;;;;;OAaG;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;AAqDD;;;;;;;;;;;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,4BAsHjB"}
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkZJP2BB3Ecjs = require('../../chunk-ZJP2BB3E.cjs');
4
+ var _chunk3UAV25YBcjs = require('../../chunk-3UAV25YB.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 = _chunkZJP2BB3Ecjs.FaqSection;
11
+ exports.FaqSection = _chunk3UAV25YBcjs.FaqSection;
12
12
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  FaqSection
4
- } from "../../chunk-J3QMPOS6.js";
4
+ } from "../../chunk-OVXKTNEP.js";
5
5
  import "../../chunk-L4LAAA5Q.js";
6
6
  import "../../chunk-NR535XIY.js";
7
7
  import "../../chunk-XTCBRQN2.js";
@@ -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,qBAgE7E"}
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 _chunkZJP2BB3Ecjs = require('../chunk-ZJP2BB3E.cjs');
6
+ var _chunk3UAV25YBcjs = require('../chunk-3UAV25YB.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 = _chunk3UAV25YBcjs.FaqAccordion; exports.FaqSection = _chunk3UAV25YBcjs.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
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  FaqAccordion,
5
5
  FaqSection
6
- } from "../chunk-J3QMPOS6.js";
6
+ } from "../chunk-OVXKTNEP.js";
7
7
  import {
8
8
  GROUP_PAGE_SIZE,
9
9
  RelatedContentSection
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.258",
3
+ "version": "0.0.259",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,11 +19,27 @@ export interface FaqSectionProps {
19
19
  entityType?: string
20
20
  entityId?: number | string
21
21
  /**
22
- * Page heading. Pass null to render in embedded mode (no <h1>, error branch
23
- * suppresses any banner). React node so platforms can drill their local
24
- * <PageHeading> component without the lib referencing platform state.
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
+ * Layout variant.
30
+ * - 'page' — the standalone /faqs surface: <main> shell + page gutters,
31
+ * FAQs GROUPED by `faq.section` with one <h2> per section.
32
+ * - 'embedded' — a section inside a host page (entity detail rails, the
33
+ * global nested-page block): no shell, ONE flat accordion with each
34
+ * row's `faq.section` rendered as a neutral chip (never a heading) and
35
+ * a single default <h2> above. Exactly one FAQ block per page — the
36
+ * per-tag heading loop is page-variant-only.
37
+ * Back-compat default: `heading === null` → 'embedded', else 'page' (the
38
+ * pre-variant discriminator, kept so older embedders don't shift layout
39
+ * until they opt in — they DO pick up the flat chip list, which is the
40
+ * point of the consolidation).
41
+ */
42
+ variant?: 'page' | 'embedded'
27
43
  /** Inject FAQPage schema.org JSON-LD as a <script>. Off by default so embeds
28
44
  * don't emit duplicate schema. */
29
45
  emitJsonLd?: boolean
@@ -106,6 +122,7 @@ export function FaqSection({
106
122
  entityType,
107
123
  entityId,
108
124
  heading,
125
+ variant,
109
126
  emitJsonLd = false,
110
127
  jsonLd,
111
128
  className,
@@ -122,23 +139,30 @@ export function FaqSection({
122
139
  const { data, isLoading, error } = useSelfFetch<FaqsResponse>(url, { initialData })
123
140
 
124
141
  const faqs = data?.faqs ?? []
125
- const showHeading = heading !== null
142
+ const isEmbedded = variant ? variant === 'embedded' : heading === null
126
143
  const headingNode =
127
- heading === undefined
128
- ? <h1 className="text-h1 tracking-[-0.04em] text-ods-text-primary">{DEFAULT_HEADING_TEXT}</h1>
129
- : heading
130
-
131
- const groups = groupBySection(faqs)
144
+ heading === undefined ? (
145
+ isEmbedded ? (
146
+ // Embedded default is an <h2> — a host page already owns the <h1>,
147
+ // and the schema/heading pair must read "Frequently Asked Questions"
148
+ // (one FAQ heading per page, never tag/section names).
149
+ <h2 className="text-h2 tracking-[-0.04em] text-ods-text-primary">{DEFAULT_HEADING_TEXT}</h2>
150
+ ) : (
151
+ <h1 className="text-h1 tracking-[-0.04em] text-ods-text-primary">{DEFAULT_HEADING_TEXT}</h1>
152
+ )
153
+ ) : (
154
+ heading
155
+ )
132
156
 
133
- // Embedded mode (no heading): degrade silently on error.
134
- if (error && !showHeading) {
157
+ // Embedded mode: degrade silently on error.
158
+ if (error && isEmbedded) {
135
159
  return null
136
160
  }
137
161
 
138
162
  // Embedded mode, zero FAQs after load: render nothing — an embedded host
139
163
  // page (blog/case-study detail) must not show an empty section shell.
140
- // The standalone /faqs page (heading set) keeps its existing behavior.
141
- if (!isLoading && !error && faqs.length === 0 && !showHeading) {
164
+ // The standalone /faqs page keeps its existing behavior.
165
+ if (!isLoading && !error && faqs.length === 0 && isEmbedded) {
142
166
  return null
143
167
  }
144
168
 
@@ -146,7 +170,7 @@ export function FaqSection({
146
170
  // Embedded mode renders skeletons WITHOUT the standalone page shell —
147
171
  // a host detail page already provides <main> + gutters; nesting them
148
172
  // here would emit invalid markup and double padding.
149
- if (!showHeading) {
173
+ if (isEmbedded) {
150
174
  return (
151
175
  <div className={className}>
152
176
  <FaqSkeleton />
@@ -172,28 +196,40 @@ export function FaqSection({
172
196
 
173
197
  const schema = emitJsonLd ? buildFaqJsonLdFromFaqs(faqs, jsonLd) : null
174
198
 
175
- const groupNodes = groups.map(({ section, items }) => (
176
- <div key={section || 'default'} className="space-y-4">
177
- {section && (
178
- <h2 className="text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4">
179
- {section}
180
- </h2>
181
- )}
182
- <FaqAccordion items={items} />
183
- </div>
184
- ))
185
-
186
- // Embedded mode (heading === null): no <main> page shell, no page gutters —
187
- // the host page owns layout. Standalone mode keeps the historical markup.
188
- const body = showHeading ? (
199
+ // Embedded: ONE flat accordion — `faq.section` becomes a per-row chip, NOT
200
+ // a heading, so the host page's outline stays h2("Frequently Asked
201
+ // Questions") + h3(questions). Order is the server's (post-specific first,
202
+ // then reused) grouping by section here would destroy it.
203
+ const body = isEmbedded ? (
204
+ <section className={className ?? 'space-y-6'}>
205
+ {headingNode}
206
+ <FaqAccordion
207
+ items={faqs.map((faq) => ({
208
+ id: faq.id,
209
+ question: faq.question,
210
+ answer: faq.answer,
211
+ badge: faq.section || undefined,
212
+ }))}
213
+ />
214
+ </section>
215
+ ) : (
216
+ // Page variant (standalone /faqs): historical markup — <main> shell,
217
+ // page gutters, FAQs grouped by section with one <h2> per section.
189
218
  <main className={className ?? 'bg-ods-bg'}>
190
219
  <div className="max-w-[1920px] px-6 md:px-20 py-6 md:py-10 mx-auto space-y-10">
191
220
  {headingNode}
192
- {groupNodes}
221
+ {groupBySection(faqs).map(({ section, items }) => (
222
+ <div key={section || 'default'} className="space-y-4">
223
+ {section && (
224
+ <h2 className="text-h2 tracking-[-0.04em] text-ods-text-primary mb-3 md:mb-4">
225
+ {section}
226
+ </h2>
227
+ )}
228
+ <FaqAccordion items={items} />
229
+ </div>
230
+ ))}
193
231
  </div>
194
232
  </main>
195
- ) : (
196
- <section className={className ?? 'space-y-10'}>{groupNodes}</section>
197
233
  )
198
234
 
199
235
  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
- <h3>
80
- {item.question}
81
- </h3>
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"]}