@flamingo-stack/openframe-frontend-core 0.0.594 → 0.0.595

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/{chunk-5XQMEDGE.cjs → chunk-23UJ4EBJ.cjs} +10 -10
  2. package/dist/{chunk-5XQMEDGE.cjs.map → chunk-23UJ4EBJ.cjs.map} +1 -1
  3. package/dist/{chunk-DRZ224RU.js → chunk-2WLW5HDU.js} +7 -7
  4. package/dist/{chunk-3OQIZPUX.js → chunk-3WZLPCJ7.js} +3 -3
  5. package/dist/{chunk-NEFNARFF.cjs → chunk-4R6AZFNU.cjs} +30 -30
  6. package/dist/{chunk-NEFNARFF.cjs.map → chunk-4R6AZFNU.cjs.map} +1 -1
  7. package/dist/{chunk-CCLPJSY3.cjs → chunk-4ZY5MP46.cjs} +15 -15
  8. package/dist/{chunk-CCLPJSY3.cjs.map → chunk-4ZY5MP46.cjs.map} +1 -1
  9. package/dist/{chunk-Y22VQDVW.js → chunk-63PXZXCT.js} +4 -4
  10. package/dist/{chunk-C4YJC5X7.cjs → chunk-6PEFK4UH.cjs} +6 -6
  11. package/dist/{chunk-C4YJC5X7.cjs.map → chunk-6PEFK4UH.cjs.map} +1 -1
  12. package/dist/{chunk-MEWAFY6X.js → chunk-7N2NJPUK.js} +3 -3
  13. package/dist/{chunk-IKQVXZB5.js → chunk-A57HKYLY.js} +6 -6
  14. package/dist/{chunk-LKN2KKYZ.js → chunk-AQ65NLGJ.js} +39 -9
  15. package/dist/{chunk-LKN2KKYZ.js.map → chunk-AQ65NLGJ.js.map} +1 -1
  16. package/dist/{chunk-YZLUOZKR.js → chunk-BKMSI2AW.js} +2 -2
  17. package/dist/{chunk-66I2QUFE.cjs → chunk-CPWX46TL.cjs} +6 -6
  18. package/dist/{chunk-66I2QUFE.cjs.map → chunk-CPWX46TL.cjs.map} +1 -1
  19. package/dist/{chunk-PETYVGEQ.cjs → chunk-CZM2H5F5.cjs} +5 -5
  20. package/dist/{chunk-PETYVGEQ.cjs.map → chunk-CZM2H5F5.cjs.map} +1 -1
  21. package/dist/{chunk-N3RHX26N.js → chunk-DYXVQ24Q.js} +3 -3
  22. package/dist/{chunk-43ADGEWL.cjs → chunk-EO5GYWIX.cjs} +28 -28
  23. package/dist/{chunk-43ADGEWL.cjs.map → chunk-EO5GYWIX.cjs.map} +1 -1
  24. package/dist/{chunk-ZK3AZ5YF.cjs → chunk-FHEN27GM.cjs} +11 -11
  25. package/dist/{chunk-ZK3AZ5YF.cjs.map → chunk-FHEN27GM.cjs.map} +1 -1
  26. package/dist/{chunk-EWOFXJGH.cjs → chunk-HGWC7ABT.cjs} +57 -57
  27. package/dist/{chunk-EWOFXJGH.cjs.map → chunk-HGWC7ABT.cjs.map} +1 -1
  28. package/dist/{chunk-UBRVIVY4.cjs → chunk-JGDDPNSC.cjs} +192 -192
  29. package/dist/{chunk-UBRVIVY4.cjs.map → chunk-JGDDPNSC.cjs.map} +1 -1
  30. package/dist/{chunk-QAVT6P5F.cjs → chunk-MDUAU74C.cjs} +28 -28
  31. package/dist/{chunk-QAVT6P5F.cjs.map → chunk-MDUAU74C.cjs.map} +1 -1
  32. package/dist/{chunk-CQ35OMPJ.cjs → chunk-MHORK6KM.cjs} +3 -3
  33. package/dist/{chunk-CQ35OMPJ.cjs.map → chunk-MHORK6KM.cjs.map} +1 -1
  34. package/dist/{chunk-ZZHHKE2Q.js → chunk-MUNVPRT2.js} +2 -2
  35. package/dist/{chunk-ZEG3ZJPY.cjs → chunk-MX7DNV7X.cjs} +33 -33
  36. package/dist/{chunk-ZEG3ZJPY.cjs.map → chunk-MX7DNV7X.cjs.map} +1 -1
  37. package/dist/{chunk-3T7ZP3TL.js → chunk-NNMAMTA5.js} +3 -3
  38. package/dist/{chunk-ACU7J5BL.cjs → chunk-OGE4GSLZ.cjs} +80 -80
  39. package/dist/{chunk-ACU7J5BL.cjs.map → chunk-OGE4GSLZ.cjs.map} +1 -1
  40. package/dist/{chunk-HQWZ4IXU.cjs → chunk-OWWICTQR.cjs} +21 -21
  41. package/dist/{chunk-HQWZ4IXU.cjs.map → chunk-OWWICTQR.cjs.map} +1 -1
  42. package/dist/{chunk-KVNA3HU2.js → chunk-PYEJL2UG.js} +3 -3
  43. package/dist/{chunk-M5HGULIY.js → chunk-QLJMXCB5.js} +5 -5
  44. package/dist/{chunk-3XDPXOMS.js → chunk-SEVD4AST.js} +5 -5
  45. package/dist/{chunk-Y6I2DGKC.cjs → chunk-SK4IVCSI.cjs} +10 -2
  46. package/dist/{chunk-Y6I2DGKC.cjs.map → chunk-SK4IVCSI.cjs.map} +1 -1
  47. package/dist/{chunk-PMN7WDXI.js → chunk-T2JAJ7MR.js} +3 -3
  48. package/dist/{chunk-BTF3CNDP.js → chunk-TDEQ26A2.js} +10 -2
  49. package/dist/{chunk-BTF3CNDP.js.map → chunk-TDEQ26A2.js.map} +1 -1
  50. package/dist/{chunk-HOLK4ZMT.js → chunk-U4QRK4MX.js} +3 -3
  51. package/dist/{chunk-F5Q3DTP5.js → chunk-UPKN5CYH.js} +6 -6
  52. package/dist/{chunk-YLVPQNLO.cjs → chunk-YYHYCQD6.cjs} +389 -359
  53. package/dist/chunk-YYHYCQD6.cjs.map +1 -0
  54. package/dist/{chunk-GBIC3VNA.js → chunk-ZRXJX3JK.js} +4 -4
  55. package/dist/{chunk-S7VW4HVL.cjs → chunk-ZY3Z3F4X.cjs} +20 -20
  56. package/dist/{chunk-S7VW4HVL.cjs.map → chunk-ZY3Z3F4X.cjs.map} +1 -1
  57. package/dist/components/case-studies/index.cjs +10 -10
  58. package/dist/components/case-studies/index.js +4 -4
  59. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  60. package/dist/components/chat/index.cjs +3 -3
  61. package/dist/components/chat/index.js +2 -2
  62. package/dist/components/contact/index.cjs +5 -5
  63. package/dist/components/contact/index.js +4 -4
  64. package/dist/components/docs/index.cjs +8 -8
  65. package/dist/components/docs/index.js +7 -7
  66. package/dist/components/embeds/index.cjs +5 -5
  67. package/dist/components/embeds/index.js +4 -4
  68. package/dist/components/faq/index.cjs +5 -5
  69. package/dist/components/faq/index.js +4 -4
  70. package/dist/components/features/index.cjs +4 -4
  71. package/dist/components/features/index.js +3 -3
  72. package/dist/components/help-center-pages/index.cjs +24 -24
  73. package/dist/components/help-center-pages/index.js +15 -15
  74. package/dist/components/index.cjs +53 -53
  75. package/dist/components/index.js +15 -15
  76. package/dist/components/meeting-scheduler/index.cjs +31 -31
  77. package/dist/components/meeting-scheduler/index.js +3 -3
  78. package/dist/components/navigation/index.cjs +7 -7
  79. package/dist/components/navigation/index.js +6 -6
  80. package/dist/components/onboarding-guides/index.cjs +7 -7
  81. package/dist/components/onboarding-guides/index.js +6 -6
  82. package/dist/components/related-content/index.cjs +3 -3
  83. package/dist/components/related-content/index.js +2 -2
  84. package/dist/components/tickets/index.cjs +8 -8
  85. package/dist/components/tickets/index.js +7 -7
  86. package/dist/components/ui/index.cjs +4 -4
  87. package/dist/components/ui/index.js +3 -3
  88. package/dist/index.cjs +8 -8
  89. package/dist/index.js +7 -7
  90. package/dist/utils/index.cjs +11 -1
  91. package/dist/utils/index.cjs.map +1 -1
  92. package/dist/utils/index.js +11 -1
  93. package/dist/utils/index.js.map +1 -1
  94. package/dist/utils/list-url.d.ts.map +1 -1
  95. package/dist/utils/source-icons.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/src/components/chat/entity-cards/dispatch.tsx +47 -16
  98. package/src/utils/__tests__/list-url.test.ts +6 -0
  99. package/src/utils/list-url.ts +8 -0
  100. package/src/utils/source-icons.ts +3 -0
  101. package/dist/chunk-YLVPQNLO.cjs.map +0 -1
  102. /package/dist/{chunk-DRZ224RU.js.map → chunk-2WLW5HDU.js.map} +0 -0
  103. /package/dist/{chunk-3OQIZPUX.js.map → chunk-3WZLPCJ7.js.map} +0 -0
  104. /package/dist/{chunk-Y22VQDVW.js.map → chunk-63PXZXCT.js.map} +0 -0
  105. /package/dist/{chunk-MEWAFY6X.js.map → chunk-7N2NJPUK.js.map} +0 -0
  106. /package/dist/{chunk-IKQVXZB5.js.map → chunk-A57HKYLY.js.map} +0 -0
  107. /package/dist/{chunk-YZLUOZKR.js.map → chunk-BKMSI2AW.js.map} +0 -0
  108. /package/dist/{chunk-N3RHX26N.js.map → chunk-DYXVQ24Q.js.map} +0 -0
  109. /package/dist/{chunk-ZZHHKE2Q.js.map → chunk-MUNVPRT2.js.map} +0 -0
  110. /package/dist/{chunk-3T7ZP3TL.js.map → chunk-NNMAMTA5.js.map} +0 -0
  111. /package/dist/{chunk-KVNA3HU2.js.map → chunk-PYEJL2UG.js.map} +0 -0
  112. /package/dist/{chunk-M5HGULIY.js.map → chunk-QLJMXCB5.js.map} +0 -0
  113. /package/dist/{chunk-3XDPXOMS.js.map → chunk-SEVD4AST.js.map} +0 -0
  114. /package/dist/{chunk-PMN7WDXI.js.map → chunk-T2JAJ7MR.js.map} +0 -0
  115. /package/dist/{chunk-HOLK4ZMT.js.map → chunk-U4QRK4MX.js.map} +0 -0
  116. /package/dist/{chunk-F5Q3DTP5.js.map → chunk-UPKN5CYH.js.map} +0 -0
  117. /package/dist/{chunk-GBIC3VNA.js.map → chunk-ZRXJX3JK.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;AA2DD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,MAAM,GAAG,IAAI,CAa5F"}
1
+ {"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAWH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;AAmED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,MAAM,GAAG,IAAI,CAa5F"}
@@ -1 +1 @@
1
- {"version":3,"file":"source-icons.d.ts","sourceRoot":"","sources":["../../src/utils/source-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmDpD,CAAC;AAEF;;6DAE6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyDzD,CAAC;AAEF;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmDpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF"}
1
+ {"version":3,"file":"source-icons.d.ts","sourceRoot":"","sources":["../../src/utils/source-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoDpD,CAAC;AAEF;;6DAE6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0DzD,CAAC;AAEF;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoDpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.594",
3
+ "version": "0.0.595",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -619,12 +619,11 @@ function SlackChatCard({
619
619
  }
620
620
 
621
621
  /**
622
- * Generic REF-ONLY card — for types with no `?ids=` list endpoint whose
623
- * ChatRef already carries everything the card shows (title / preview /
624
- * url). Same posture as `video`: nothing to fetch, so no skeleton and no
625
- * `contentRefType`. The per-type glyph is the only thing that varies.
622
+ * Generic glyph card for ChatRef-shaped items (title / preview / url) whose
623
+ * only per-type variation is the leading icon — used by the ref-hydrated
624
+ * product-hub objects (design docs, tenants) and the people-hub feeds.
626
625
  */
627
- function RefOnlyChatCard({
626
+ function GlyphChatCard({
628
627
  chatRef,
629
628
  icon,
630
629
  isNewTab,
@@ -1343,26 +1342,57 @@ const GITHUB_CARD_CONFIGS: Record<string, GitHubCardConfig> = {
1343
1342
  github_pr_review: { label: 'GitHub review', kind: 'pr_review' },
1344
1343
  github_pr_review_public: { label: 'GitHub review (public)', kind: 'pr_review' },
1345
1344
  };
1346
- interface RefOnlyCardConfig {
1345
+ interface GlyphCardConfig {
1347
1346
  label: string;
1348
1347
  icon: () => React.ReactNode;
1349
1348
  }
1350
- /** Hub-internal row types whose mapper declares `listApi: () => null` —
1351
- * design docs + the tenant roster (product-hub), the two people-hub
1352
- * employee feeds. Adding one = one line here + the `source-icons.ts`
1353
- * label / icon / documentType entries. */
1354
- const REF_ONLY_CARD_CONFIGS: Record<string, RefOnlyCardConfig> = {
1349
+ /** Product-hub internal objects hydrated by their per-object card routes
1350
+ * (`/api/design-docs`, `/api/openframe-tenants` — ChatRef-shaped items,
1351
+ * same preset as github / slack). Adding one = one line here + the
1352
+ * `list-url.ts` builder + the `source-icons.ts` label / icon / type entries. */
1353
+ const REF_GLYPH_CARD_CONFIGS: Record<string, GlyphCardConfig> = {
1355
1354
  design_doc: { label: 'Design doc', icon: () => <FileContentIcon size={24} /> },
1356
1355
  openframe_tenant: { label: 'OpenFrame tenant', icon: () => <BuildingsIcon size={24} /> },
1356
+ };
1357
+ function refGlyphRegistryEntries(): Record<string, ChatCardRegistryEntry> {
1358
+ return registryEntries(REF_GLYPH_CARD_CONFIGS, (cfg, docType) =>
1359
+ refHydratedEntry(docType, cfg.label, (displayRef, opts) => (
1360
+ <GlyphChatCard chatRef={displayRef} icon={cfg.icon()} isNewTab={opts.isNewTab} discuss={opts.discuss} />
1361
+ )),
1362
+ );
1363
+ }
1364
+
1365
+ /** People-hub employee feeds hydrate from their EXISTING list APIs
1366
+ * (`/api/what-i-shipped?ids=`, `/api/how-i-work?ids=`) — entry-shaped rows
1367
+ * (title / summary / author), not ChatRefs, hence the bespoke row→display
1368
+ * mapping (the FAQ precedent). The destination comes from the ref (the
1369
+ * server-resolved entry url) or, on a bare marker, the host's
1370
+ * `composeContentUrl` seam for the type. */
1371
+ function fetchedEmployeeEntryDisplayRef(item: unknown, chatRef: ChatRef): ChatRef {
1372
+ const it = item as { title?: unknown; summary?: unknown; author?: { full_name?: unknown } | null };
1373
+ const title = typeof it?.title === 'string' && it.title.trim().length > 0 ? it.title.trim() : chatRef.title;
1374
+ const author = typeof it?.author?.full_name === 'string' ? it.author.full_name.trim() : '';
1375
+ const summary = typeof it?.summary === 'string' ? it.summary.trim() : '';
1376
+ const preview = [author, summary].filter(x => x.length > 0).join(' · ');
1377
+ return { ...chatRef, title, preview: preview.length > 0 ? preview : chatRef.preview };
1378
+ }
1379
+ const EMPLOYEE_ENTRY_CARD_CONFIGS: Record<string, GlyphCardConfig> = {
1357
1380
  what_i_shipped: { label: 'What I Shipped', icon: () => <Rocket02Icon size={24} /> },
1358
1381
  how_i_work: { label: 'How I Work', icon: () => <ClipboardListIcon size={24} /> },
1359
1382
  };
1360
- function refOnlyRegistryEntries(): Record<string, ChatCardRegistryEntry> {
1361
- return registryEntries(REF_ONLY_CARD_CONFIGS, cfg => ({
1383
+ function employeeEntryRegistryEntries(): Record<string, ChatCardRegistryEntry> {
1384
+ return registryEntries(EMPLOYEE_ENTRY_CARD_CONFIGS, (cfg, docType) => ({
1362
1385
  label: cfg.label,
1363
1386
  bareInline: true,
1364
- render: (_item, chatRef, opts) => (
1365
- <RefOnlyChatCard chatRef={chatRef} icon={cfg.icon()} isNewTab={opts.isNewTab} discuss={opts.discuss} />
1387
+ contentRefType: docType,
1388
+ skeleton: () => <MingoInfoCardSkeleton />,
1389
+ render: (item, chatRef, opts) => (
1390
+ <GlyphChatCard
1391
+ chatRef={fetchedEmployeeEntryDisplayRef(item, chatRef)}
1392
+ icon={cfg.icon()}
1393
+ isNewTab={opts.isNewTab}
1394
+ discuss={opts.discuss}
1395
+ />
1366
1396
  ),
1367
1397
  }));
1368
1398
  }
@@ -1479,7 +1509,8 @@ const CHAT_CARD_REGISTRY: Record<string, ChatCardRegistryEntry> = {
1479
1509
  ),
1480
1510
  },
1481
1511
  // ───────── ref-only types (no list endpoint; the ChatRef IS the card) ─────────
1482
- ...refOnlyRegistryEntries(),
1512
+ ...refGlyphRegistryEntries(),
1513
+ ...employeeEntryRegistryEntries(),
1483
1514
  slack_message: refHydratedEntry('slack_message', 'Slack message', (displayRef, opts) => (
1484
1515
  <SlackChatCard chatRef={displayRef} isNewTab={opts.isNewTab} discuss={opts.discuss} />
1485
1516
  )),
@@ -48,6 +48,12 @@ const BASELINE: Record<string, string> = {
48
48
  profit_loss: '/api/financials/profit-loss?ids=a,b',
49
49
  balance_sheet: '/api/financials/balance-sheet?ids=a,b',
50
50
  cash_flow: '/api/financials/cash-flow?ids=a,b',
51
+ // 2026-09: hub-internal chat sources (people-hub feeds via their list APIs,
52
+ // product-hub design docs + tenants via per-object card routes).
53
+ what_i_shipped: '/api/what-i-shipped?ids=a,b&limit=2',
54
+ how_i_work: '/api/how-i-work?ids=a,b&limit=2',
55
+ design_doc: '/api/design-docs?ids=a,b',
56
+ openframe_tenant: '/api/openframe-tenants?ids=a,b',
51
57
  };
52
58
 
53
59
  describe('buildListUrl — byte parity with the hub mappers', () => {
@@ -104,6 +104,14 @@ const BUILDERS: Record<string, (ids: string[], base: string) => string> = {
104
104
  profit_loss: (ids, b) => `${b}/api/financials/profit-loss?ids=${ids.join(',')}`,
105
105
  balance_sheet: (ids, b) => `${b}/api/financials/balance-sheet?ids=${ids.join(',')}`,
106
106
  cash_flow: (ids, b) => `${b}/api/financials/cash-flow?ids=${ids.join(',')}`,
107
+ // People-hub employee feeds — their EXISTING list APIs (`?ids=`, also feeding
108
+ // the related-content rail + author page), entry-shaped rows.
109
+ what_i_shipped: (ids, b) => `${b}/api/what-i-shipped?ids=${ids.join(',')}&limit=${ids.length}`,
110
+ how_i_work: (ids, b) => `${b}/api/how-i-work?ids=${ids.join(',')}&limit=${ids.length}`,
111
+ // Product-hub internal objects — per-object card-hydration routes
112
+ // (ChatRef-shaped items, `handleEntityCardList`), like github / slack.
113
+ design_doc: (ids, b) => `${b}/api/design-docs?ids=${ids.join(',')}`,
114
+ openframe_tenant: (ids, b) => `${b}/api/openframe-tenants?ids=${ids.join(',')}`,
107
115
  };
108
116
 
109
117
  /**
@@ -39,6 +39,7 @@ export const SOURCE_ICON_NAMES: Record<string, string> = {
39
39
  events: 'calendar',
40
40
  podcasts: 'headphones',
41
41
  'customer-interviews': 'users',
42
+ faqs: 'info',
42
43
 
43
44
  // Financials
44
45
  'investor-updates': 'mail',
@@ -112,6 +113,7 @@ export const SOURCE_LABELS_BY_TABLE: Record<string, string> = {
112
113
  events: 'Events',
113
114
  podcasts: 'Podcasts',
114
115
  'customer-interviews': 'Customer Interviews',
116
+ faqs: 'FAQs',
115
117
 
116
118
  // Financials
117
119
  'investor-updates': 'Investor Updates',
@@ -199,6 +201,7 @@ export const DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID: Record<string, string> = {
199
201
  event: 'events',
200
202
  podcast: 'podcasts',
201
203
  customer_interview: 'customer-interviews',
204
+ faq: 'faqs',
202
205
 
203
206
  // Financials
204
207
  investor_update: 'investor-updates',