@flamingo-stack/openframe-frontend-core 0.0.705 → 0.0.706-snapshot.20261006181108

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 (208) hide show
  1. package/dist/chat-protocol/index.cjs +23 -14
  2. package/dist/chat-protocol/index.js +23 -14
  3. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
  4. package/dist/chat-protocol/source-metadata.d.ts +11 -2
  5. package/dist/chat-protocol/source-metadata.d.ts.map +1 -1
  6. package/dist/{chunk-QFXRPRFT.js → chunk-2YHNQAMU.js} +3 -3
  7. package/dist/{chunk-YHM5AWTT.js → chunk-3FZP73R4.js} +6 -6
  8. package/dist/{chunk-VR2ZLFCP.js → chunk-4IBPRIQH.js} +1 -1
  9. package/dist/{chunk-AQWZNP6A.js → chunk-4RVC6TCE.js} +4 -4
  10. package/dist/{chunk-OUY3HHW6.cjs → chunk-4UMOD5NU.cjs} +928 -539
  11. package/dist/{chunk-IKTQ3ZAG.cjs → chunk-54L6NMKQ.cjs} +6 -6
  12. package/dist/{chunk-A75QY6CD.cjs → chunk-56LOCS37.cjs} +21 -21
  13. package/dist/{chunk-WA6GUYQ4.cjs → chunk-5CMYEGHE.cjs} +104 -104
  14. package/dist/{chunk-VA5T32XA.js → chunk-632NGOIH.js} +2 -2
  15. package/dist/{chunk-MMOODW57.cjs → chunk-6NTPY5QA.cjs} +1887 -94
  16. package/dist/{chunk-VESKITRQ.cjs → chunk-7XVBJDH7.cjs} +728 -732
  17. package/dist/{chunk-3MX5S4CF.cjs → chunk-AGNG62O2.cjs} +905 -2564
  18. package/dist/{chunk-ZSAO2HBW.js → chunk-BETJB7UV.js} +15 -15
  19. package/dist/{chunk-MP2C3LJ4.js → chunk-CUME3VTQ.js} +1 -1
  20. package/dist/{chunk-PDWVPI3S.js → chunk-CZ7Y7UG4.js} +4 -72
  21. package/dist/{chunk-F6I6XZMN.js → chunk-E2TQZIOJ.js} +5 -5
  22. package/dist/{chunk-X5MQ7JRP.js → chunk-ECXW3RIH.js} +9 -9
  23. package/dist/{chunk-JEZKGCZI.cjs → chunk-EUSDLX5W.cjs} +26 -26
  24. package/dist/{chunk-6NJKKO73.cjs → chunk-F4E3L3KV.cjs} +15 -15
  25. package/dist/{chunk-MFFCUVWG.js → chunk-F57ECE2I.js} +1 -1
  26. package/dist/{chunk-F6AFPNDF.js → chunk-FBY4V3YS.js} +15 -15
  27. package/dist/{chunk-CH5232HV.js → chunk-FI6GMDO7.js} +2455 -662
  28. package/dist/{chunk-NDESEPW5.js → chunk-FXJ3WWUB.js} +68 -0
  29. package/dist/{chunk-FCGC42TS.js → chunk-HTBN3XYF.js} +57 -61
  30. package/dist/{chunk-ZSAGLQOD.cjs → chunk-I43ZVJRL.cjs} +17 -17
  31. package/dist/{chunk-7VVFKJY5.js → chunk-IBQZMRWO.js} +1796 -3455
  32. package/dist/{chunk-4KX6OED2.cjs → chunk-JFSLQ2XS.cjs} +46 -46
  33. package/dist/{chunk-5HBHO5TB.js → chunk-JPG7OHEG.js} +1 -1
  34. package/dist/{chunk-MKXO4Q5P.js → chunk-KUC673HM.js} +383 -142
  35. package/dist/{chunk-4I45Y3DN.cjs → chunk-L3Q7R7CQ.cjs} +6 -6
  36. package/dist/{chunk-X72J4ACL.cjs → chunk-LLSUVPQC.cjs} +252 -8
  37. package/dist/{chunk-RKV5B7EU.cjs → chunk-LM7TXMLU.cjs} +72 -4
  38. package/dist/{chunk-PN2RKPDF.js → chunk-LSQPH73L.js} +10 -10
  39. package/dist/{chunk-HPWWNJE7.cjs → chunk-MY3JYZQY.cjs} +89 -89
  40. package/dist/{chunk-2YXVWZVF.js → chunk-N45D4ZXQ.js} +959 -715
  41. package/dist/{chunk-Z2VNQQ74.js → chunk-NCPTID44.js} +978 -942
  42. package/dist/{chunk-KOWVJD4V.cjs → chunk-O6WNIA6W.cjs} +56 -56
  43. package/dist/{chunk-ABU3TGXA.cjs → chunk-OF6GEI5A.cjs} +3 -3
  44. package/dist/{chunk-OHFS7VOU.cjs → chunk-PLYEKV3N.cjs} +2 -2
  45. package/dist/{chunk-VHCACDKP.cjs → chunk-RQRX4YC3.cjs} +39 -39
  46. package/dist/{chunk-DW7G4KG3.js → chunk-RZNRVXHH.js} +3 -3
  47. package/dist/{chunk-G5A3PSPV.js → chunk-SGJP2WKD.js} +1080 -691
  48. package/dist/{chunk-7LS22BZU.cjs → chunk-STXYW25T.cjs} +14 -14
  49. package/dist/{chunk-YFBM2K6X.cjs → chunk-TB5EDWRC.cjs} +4 -4
  50. package/dist/{chunk-RBDP4WDE.js → chunk-U6BWEKJC.js} +6 -6
  51. package/dist/{chunk-XOYH2YQE.cjs → chunk-UDFRUKLC.cjs} +2 -2
  52. package/dist/{chunk-TYWLNCNH.cjs → chunk-UVTD52MD.cjs} +14 -82
  53. package/dist/{chunk-N3COXDBH.cjs → chunk-VX4E6YSB.cjs} +41 -5
  54. package/dist/{chunk-2QEUFXNS.cjs → chunk-WCVZCGK5.cjs} +312 -71
  55. package/dist/{chunk-6XIF2Z7I.js → chunk-WMX26HB5.js} +3 -3
  56. package/dist/{chunk-IHERL5V4.cjs → chunk-WXAT5C4C.cjs} +34 -34
  57. package/dist/{chunk-D7BTSVMS.cjs → chunk-Y2GSOUCS.cjs} +2 -2
  58. package/dist/{chunk-6SEANMOU.js → chunk-Y5VSOYPS.js} +11 -11
  59. package/dist/{chunk-DENB2XJC.js → chunk-YQWTGQG5.js} +2 -2
  60. package/dist/components/case-studies/index.cjs +30 -32
  61. package/dist/components/case-studies/index.js +14 -16
  62. package/dist/components/chat/entity-cards/case-study-card.d.ts +11 -4
  63. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  64. package/dist/components/chat/index.cjs +9 -11
  65. package/dist/components/chat/index.js +14 -16
  66. package/dist/components/chat/types/message.types.d.ts +20 -16
  67. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  68. package/dist/components/chat/types/unified-chat-state.types.d.ts +1 -1
  69. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  70. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  71. package/dist/components/contact/index.cjs +12 -14
  72. package/dist/components/contact/index.js +11 -13
  73. package/dist/components/docs/index.cjs +15 -17
  74. package/dist/components/docs/index.js +14 -16
  75. package/dist/components/embeds/index.cjs +12 -14
  76. package/dist/components/embeds/index.js +11 -13
  77. package/dist/components/faq/index.cjs +13 -15
  78. package/dist/components/faq/index.js +12 -14
  79. package/dist/components/features/index.cjs +12 -14
  80. package/dist/components/features/index.js +21 -23
  81. package/dist/components/help-center-pages/index.cjs +118 -120
  82. package/dist/components/help-center-pages/index.js +33 -35
  83. package/dist/components/icons/index.cjs +3 -5
  84. package/dist/components/icons/index.js +9 -11
  85. package/dist/components/icons-v2-generated/index.cjs +3 -5
  86. package/dist/components/icons-v2-generated/index.js +2 -4
  87. package/dist/components/index.cjs +86 -159
  88. package/dist/components/index.d.ts +0 -2
  89. package/dist/components/index.d.ts.map +1 -1
  90. package/dist/components/index.js +329 -402
  91. package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
  92. package/dist/components/meeting-scheduler/index.cjs +62 -64
  93. package/dist/components/meeting-scheduler/index.js +12 -14
  94. package/dist/components/navigation/index.cjs +28 -16
  95. package/dist/components/navigation/index.d.ts +14 -10
  96. package/dist/components/navigation/index.d.ts.map +1 -1
  97. package/dist/components/navigation/index.js +38 -26
  98. package/dist/components/navigation/mingo-ai-button.d.ts +38 -3
  99. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  100. package/dist/components/navigation/mobile-nav-sheet-id.d.ts +3 -0
  101. package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +1 -0
  102. package/dist/components/navigation/mobile-nav-sheet.d.ts +48 -0
  103. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -0
  104. package/dist/components/navigation/nav-item-row.d.ts +27 -0
  105. package/dist/components/navigation/nav-item-row.d.ts.map +1 -0
  106. package/dist/components/navigation/nav-panel.d.ts +43 -0
  107. package/dist/components/navigation/nav-panel.d.ts.map +1 -0
  108. package/dist/components/navigation/navigation-sidebar-item.d.ts +1 -2
  109. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  110. package/dist/components/navigation/site-footer.d.ts +28 -0
  111. package/dist/components/navigation/site-footer.d.ts.map +1 -0
  112. package/dist/components/navigation/site-header.d.ts +61 -0
  113. package/dist/components/navigation/site-header.d.ts.map +1 -0
  114. package/dist/components/navigation/site-nav-link.d.ts +26 -0
  115. package/dist/components/navigation/site-nav-link.d.ts.map +1 -0
  116. package/dist/components/navigation/top-navigation.d.ts +2 -2
  117. package/dist/components/navigation/top-navigation.d.ts.map +1 -1
  118. package/dist/components/onboarding-guides/index.cjs +15 -17
  119. package/dist/components/onboarding-guides/index.js +14 -16
  120. package/dist/components/related-content/index.cjs +10 -8
  121. package/dist/components/related-content/index.js +9 -7
  122. package/dist/components/tickets/index.cjs +16 -18
  123. package/dist/components/tickets/index.js +15 -17
  124. package/dist/components/ui/index.cjs +12 -14
  125. package/dist/components/ui/index.js +17 -19
  126. package/dist/hooks/index.cjs +19 -11
  127. package/dist/hooks/index.d.ts +1 -0
  128. package/dist/hooks/index.d.ts.map +1 -1
  129. package/dist/hooks/index.js +19 -11
  130. package/dist/hooks/ui/index.d.ts +3 -0
  131. package/dist/hooks/ui/index.d.ts.map +1 -1
  132. package/dist/hooks/ui/use-active-section.d.ts +10 -0
  133. package/dist/hooks/ui/use-active-section.d.ts.map +1 -0
  134. package/dist/hooks/ui/use-nav-menus.d.ts +48 -0
  135. package/dist/hooks/ui/use-nav-menus.d.ts.map +1 -0
  136. package/dist/hooks/ui/use-visitor-os.d.ts +15 -0
  137. package/dist/hooks/ui/use-visitor-os.d.ts.map +1 -0
  138. package/dist/hooks/use-location-hash.d.ts +9 -0
  139. package/dist/hooks/use-location-hash.d.ts.map +1 -0
  140. package/dist/index.cjs +55 -22
  141. package/dist/index.js +229 -196
  142. package/dist/types/case-study.d.ts +9 -0
  143. package/dist/types/case-study.d.ts.map +1 -1
  144. package/dist/types/navigation.d.ts +95 -65
  145. package/dist/types/navigation.d.ts.map +1 -1
  146. package/dist/utils/index.cjs +55 -0
  147. package/dist/utils/index.d.ts +1 -0
  148. package/dist/utils/index.d.ts.map +1 -1
  149. package/dist/utils/index.js +50 -1
  150. package/dist/utils/source-icons.d.ts.map +1 -1
  151. package/dist/utils/visitor-os.d.ts +45 -0
  152. package/dist/utils/visitor-os.d.ts.map +1 -0
  153. package/package.json +1 -1
  154. package/src/chat-protocol/nats-decoder.ts +10 -8
  155. package/src/chat-protocol/source-metadata.ts +25 -2
  156. package/src/components/chat/entity-cards/case-study-card.tsx +115 -5
  157. package/src/components/chat/types/message.types.ts +21 -15
  158. package/src/components/chat/types/unified-chat-state.types.ts +1 -1
  159. package/src/components/chat/utils/icon-library.tsx +35 -1
  160. package/src/components/chat/utils/process-historical-messages.ts +12 -4
  161. package/src/components/index.ts +0 -2
  162. package/src/components/loading/page-layout-skeleton.tsx +1 -1
  163. package/src/components/navigation/index.ts +21 -14
  164. package/src/components/navigation/mingo-ai-button.tsx +139 -63
  165. package/src/components/navigation/mobile-nav-sheet-id.ts +2 -0
  166. package/src/components/navigation/mobile-nav-sheet.tsx +241 -0
  167. package/src/components/navigation/nav-item-row.tsx +129 -0
  168. package/src/components/navigation/nav-panel.tsx +196 -0
  169. package/src/components/navigation/navigation-sidebar-item.tsx +1 -2
  170. package/src/components/navigation/site-footer.tsx +256 -0
  171. package/src/components/navigation/site-header.tsx +339 -0
  172. package/src/components/navigation/site-nav-link.tsx +41 -0
  173. package/src/components/navigation/ticket-alerts-button.tsx +2 -2
  174. package/src/components/navigation/top-navigation.tsx +2 -2
  175. package/src/hooks/index.ts +1 -0
  176. package/src/hooks/ui/index.ts +3 -0
  177. package/src/hooks/ui/use-active-section.ts +44 -0
  178. package/src/hooks/ui/use-nav-menus.ts +200 -0
  179. package/src/hooks/ui/use-visitor-os.ts +33 -0
  180. package/src/hooks/use-location-hash.ts +34 -0
  181. package/src/styles/chat-animations.css +57 -2
  182. package/src/types/case-study.ts +16 -0
  183. package/src/types/navigation.ts +80 -66
  184. package/src/utils/index.ts +1 -0
  185. package/src/utils/source-icons.ts +13 -0
  186. package/src/utils/visitor-os.ts +84 -0
  187. package/dist/chunk-LMBC5FFP.js +0 -43
  188. package/dist/chunk-O43V3EOS.js +0 -252
  189. package/dist/chunk-QZVSJF2K.cjs +0 -252
  190. package/dist/chunk-RALRPFDW.cjs +0 -43
  191. package/dist/components/footer-waitlist-button.d.ts +0 -29
  192. package/dist/components/footer-waitlist-button.d.ts.map +0 -1
  193. package/dist/components/footer.d.ts +0 -47
  194. package/dist/components/footer.d.ts.map +0 -1
  195. package/dist/components/navigation/client-only-header.d.ts +0 -8
  196. package/dist/components/navigation/client-only-header.d.ts.map +0 -1
  197. package/dist/components/navigation/header-skeleton.d.ts +0 -12
  198. package/dist/components/navigation/header-skeleton.d.ts.map +0 -1
  199. package/dist/components/navigation/header.d.ts +0 -9
  200. package/dist/components/navigation/header.d.ts.map +0 -1
  201. package/dist/components/navigation/mobile-nav-panel.d.ts +0 -10
  202. package/dist/components/navigation/mobile-nav-panel.d.ts.map +0 -1
  203. package/src/components/footer-waitlist-button.tsx +0 -53
  204. package/src/components/footer.tsx +0 -195
  205. package/src/components/navigation/client-only-header.tsx +0 -22
  206. package/src/components/navigation/header-skeleton.tsx +0 -74
  207. package/src/components/navigation/header.tsx +0 -429
  208. package/src/components/navigation/mobile-nav-panel.tsx +0 -155
@@ -53,6 +53,15 @@ export interface CaseStudy {
53
53
  case_study_platforms?: EntityPlatformAssoc[];
54
54
  case_study_tags?: TagAssoc[];
55
55
  }
56
+ /**
57
+ * What a case study card reads: the story, its cover and video, whose story it
58
+ * is and who tells it. A full `CaseStudy` row satisfies it; a surface that ships
59
+ * the card's data to the browser (the site menu) sends only this.
60
+ */
61
+ export type CaseStudyCardData = Pick<CaseStudy, 'id' | 'title' | 'summary' | 'featured_image'> & Partial<Pick<CaseStudy, 'main_video_url' | 'main_video_thumbnail' | 'highlight_video_url' | 'highlight_video_thumbnail' | 'video_bites'>> & {
62
+ user?: Pick<UserProfile, 'full_name' | 'job_title'> & Partial<Pick<UserProfile, 'avatar_url'>>;
63
+ msp?: Pick<MSP, 'name' | 'icon_url'>;
64
+ };
56
65
  export interface CreateCaseStudyData {
57
66
  title: string;
58
67
  slug: string;
@@ -1 +1 @@
1
- {"version":3,"file":"case-study.d.ts","sourceRoot":"","sources":["../../src/types/case-study.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"case-study.d.ts","sourceRoot":"","sources":["../../src/types/case-study.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type React from 'react';
2
+ import type { CaseStudyCardData } from './case-study';
2
3
  /**
3
4
  * Base navigation item interface used across all navigation components
4
5
  */
@@ -12,78 +13,107 @@ export interface NavigationItem {
12
13
  children?: NavigationItem[];
13
14
  onClick?: () => void;
14
15
  element?: React.ReactNode;
15
- isExternal?: boolean;
16
- type?: 'single' | 'dropdown';
17
- dropdownContent?: React.ReactNode;
18
- showDropdownDivider?: boolean;
19
- className?: string;
20
- dropdownClassName?: string;
21
16
  }
22
17
  /**
23
- * Configuration for the header component
18
+ * The site navigation model: ONE serializable description of a platform's
19
+ * header, mega menus, mobile menu and footer. Plain data only (no functions, no
20
+ * React elements), so a server resolver can build it and hand it to the client
21
+ * components (`SiteHeader`, `MobileNavSheet`, `SiteFooter`), which only render.
22
+ *
23
+ * A link is declared once and referenced from every surface, so one change to
24
+ * the model changes the header, the mobile menu and the footer together.
24
25
  */
25
- export interface HeaderConfig {
26
- logo: {
27
- element: React.ReactNode;
28
- /** Where the logo links. Omitted, the logo is not a link (a landing page that keeps the visitor on it). */
29
- href?: string;
30
- };
31
- navigation?: {
32
- items: NavigationItem[];
33
- position?: 'left' | 'center' | 'right';
34
- };
35
- actions?: {
36
- left?: React.ReactNode[];
37
- right?: React.ReactNode[];
38
- persistent?: React.ReactNode[];
39
- };
40
- mobile?: {
41
- enabled: boolean;
42
- menuIcon?: React.ReactNode;
43
- closeIcon?: React.ReactNode;
44
- onToggle?: () => void;
45
- isOpen?: boolean;
46
- };
47
- mingo?: {
48
- enabled?: boolean;
49
- source?: string;
50
- className?: string;
51
- /** Server-configured Mingo identity glyph (same EntityIcon the chat
52
- * panel renders); omit to use the packaged fallback mark. */
53
- icon?: React.ReactNode;
54
- /** Server-configured assistant name for the wordmark/aria-label; omit
55
- * for the default "Mingo AI". */
56
- label?: string;
57
- };
58
- /** Support-ticket alerts cell (`TicketAlertsButton`), rendered before
59
- * the Mingo launcher in the flush cell row. Attention-only: renders
60
- * nothing unless a `<TicketLiveProvider>` is mounted AND there are
61
- * unread support replies — declaring it is side-effect-free. */
62
- tickets?: {
63
- /** BASE path of the tickets surface (any nesting prefix allowed —
64
- * '/tickets', '/support/portal/tickets'). The cell builds the SSOT
65
- * deep link `<href>?ticket=<id>` for the newest-unread ticket. */
66
- href: string;
67
- /** Optional host navigation (router push) — receives the FULL
68
- * computed href. Defaults to `window.location.assign`. */
69
- onClick?: (href: string) => void;
26
+ export interface NavLink {
27
+ id: string;
28
+ /** The label shown in menus and the footer. */
29
+ label: string;
30
+ /** Internal path, internal path with `#anchor`, or absolute URL. */
31
+ href: string;
32
+ /** One line shown under the label in mega menus and the mobile sheet. */
33
+ description?: string;
34
+ /** An `EntityIcon` glyph name. */
35
+ iconName?: string;
36
+ /**
37
+ * A server-configured icon (an agent's avatar: a packaged mark by name, or an
38
+ * uploaded image), in `EntityIcon`'s own shape. Drawn round, and it wins over
39
+ * `iconName`.
40
+ */
41
+ icon?: {
42
+ name?: string | null;
43
+ url?: string | null;
44
+ props?: Record<string, unknown> | null;
70
45
  };
71
- className?: string;
72
- style?: React.CSSProperties;
73
- autoHide?: boolean;
74
- backgroundColor?: string;
46
+ /** "Chocolatey · Homebrew · WinGet"; rendered as "Built on ...". */
47
+ builtOn?: string;
48
+ /** Filled by the resolver, for labels such as "All {count} customer stories". */
49
+ count?: number;
50
+ /** Names a live counter the host supplies at render (`badges` prop). */
51
+ badgeKey?: string;
52
+ /** Set by the resolver, never by a config: the link leaves this site. */
53
+ external?: boolean;
54
+ }
55
+ export interface NavGroup {
56
+ id: string;
57
+ title?: string;
58
+ links: NavLink[];
75
59
  }
76
60
  /**
77
- * Configuration for the mobile navigation panel
61
+ * A featured customer story shown as a card beside a menu's columns: the
62
+ * record itself, drawn by the shared case study card.
78
63
  */
79
- export interface MobileNavConfig {
80
- sections: Array<{
81
- title?: string;
82
- items: NavigationItem[];
83
- }>;
84
- footer?: React.ReactNode;
85
- className?: string;
86
- onClose?: () => void;
64
+ export interface NavFeature {
65
+ id: string;
66
+ href: string;
67
+ study: CaseStudyCardData;
68
+ }
69
+ export interface NavMenu {
70
+ id: string;
71
+ label: string;
72
+ /** A menu with only `href` is a plain link. */
73
+ href?: string;
74
+ iconName?: string;
75
+ /** Path prefixes that mark this menu as the current section. */
76
+ match?: string[];
77
+ /** One column is a list; more than one makes a mega menu. */
78
+ columns?: NavGroup[];
79
+ /** Featured cards shown beside the columns. */
80
+ features?: NavFeature[];
81
+ /** The side list of a mega menu. */
82
+ sideLinks?: NavLink[];
83
+ sideTitle?: string;
84
+ /** Show the brand's social links under the menu's links. */
85
+ showSocial?: boolean;
86
+ }
87
+ export type SiteNavPrimaryCta = 'trial' | 'waitlist' | 'none' | {
88
+ label: string;
89
+ href: string;
90
+ };
91
+ export interface SiteNav {
92
+ menus: NavMenu[];
93
+ /**
94
+ * The mobile sheet's groups, when they differ from `menus` (a column promoted
95
+ * to its own group). Omitted: the sheet uses `menus`.
96
+ */
97
+ mobileMenus?: NavMenu[];
98
+ footerColumns: NavGroup[];
99
+ signIn?: NavLink;
100
+ primaryCta: SiteNavPrimaryCta;
101
+ closingBand?: {
102
+ heading: string;
103
+ subheading: string;
104
+ secondary?: NavLink;
105
+ };
106
+ legal: {
107
+ company: string;
108
+ notes: string[];
109
+ links: NavLink[];
110
+ };
111
+ brand: {
112
+ name: string;
113
+ tagline: string;
114
+ social: NavLink[];
115
+ statusUrl?: string;
116
+ };
87
117
  }
88
118
  /**
89
119
  * Configuration for the sliding sidebar component
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/types/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/types/navigation.ts"],"names":[],"mappings":"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"}
@@ -2833,6 +2833,43 @@ function isOSPlatform(deviceOS, targetPlatform) {
2833
2833
  const platformId = getOSPlatformId(deviceOS);
2834
2834
  return platformId === targetPlatform;
2835
2835
  }
2836
+
2837
+ // src/utils/visitor-os.ts
2838
+ var DESKTOP_OSES = ["mac", "windows", "linux"];
2839
+ var HINT_PLATFORMS = {
2840
+ macos: "mac",
2841
+ windows: "windows",
2842
+ linux: "linux",
2843
+ "chrome os": "linux",
2844
+ "chromium os": "linux",
2845
+ android: "android",
2846
+ ios: "ios"
2847
+ };
2848
+ function detectVisitorOs(userAgent, hints = {}) {
2849
+ const touchMac = (os) => os === "mac" && (hints.maxTouchPoints ?? 0) > 1 ? "ios" : os;
2850
+ const hinted = HINT_PLATFORMS[(hints.platform ?? "").replace(/"/g, "").trim().toLowerCase()];
2851
+ if (hinted) return touchMac(hinted);
2852
+ const ua = userAgent ?? "";
2853
+ if (!ua) return null;
2854
+ if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
2855
+ if (/Android/i.test(ua)) return "android";
2856
+ if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
2857
+ if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
2858
+ if (/Linux|X11|CrOS/i.test(ua)) return "linux";
2859
+ return null;
2860
+ }
2861
+ function desktopOsOf(os) {
2862
+ return os !== null && DESKTOP_OSES.includes(os) ? os : null;
2863
+ }
2864
+ function detectDesktopOs(userAgent, hints) {
2865
+ return desktopOsOf(detectVisitorOs(userAgent, hints));
2866
+ }
2867
+ function usesCommandKey(os) {
2868
+ return os === "mac" || os === "ios";
2869
+ }
2870
+ function shortcutLabel(os, key) {
2871
+ return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
2872
+ }
2836
2873
  var PRIORITY_CODES = ["US", "CA", "GB", "AU"];
2837
2874
  var COUNTRY_NAME_ALIASES = {
2838
2875
  // United States
@@ -3436,6 +3473,18 @@ var SOURCE_ICON_NAMES = {
3436
3473
  podcasts: "headphones",
3437
3474
  "customer-interviews": "users",
3438
3475
  faqs: "info",
3476
+ // Not a chat source: listed so the site menus and the admin sidebar draw the
3477
+ // media library with one glyph, from this registry like every other kind.
3478
+ media: "image",
3479
+ // Admin sections that are not chat sources, and the case-study audiences:
3480
+ // listed so every glyph a menu, a sidebar or a dashboard tile shows is named
3481
+ // here and nowhere else.
3482
+ campaigns: "megaphone-01",
3483
+ "contact-submissions": "email",
3484
+ "code-documentation": "book-open",
3485
+ "audience-msp": "hierarchy-02",
3486
+ "audience-mssp": "shield-lock",
3487
+ "audience-it-team": "buildings",
3439
3488
  // Trust (single-record live source over the public Vanta projection)
3440
3489
  "trust-center": "shield",
3441
3490
  // Financials
@@ -6370,6 +6419,7 @@ exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS;
6370
6419
  exports.DESIGN_DOC_READINESS = DESIGN_DOC_READINESS;
6371
6420
  exports.DESIGN_DOC_READINESS_DISPLAY = DESIGN_DOC_READINESS_DISPLAY;
6372
6421
  exports.DESIGN_PALETTE = DESIGN_PALETTE;
6422
+ exports.DESKTOP_OSES = DESKTOP_OSES;
6373
6423
  exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS;
6374
6424
  exports.DOC_TABLE_TYPES = DOC_TABLE_TYPES;
6375
6425
  exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD;
@@ -6479,6 +6529,9 @@ exports.delay = delay;
6479
6529
  exports.deriveActiveColor = deriveActiveColor;
6480
6530
  exports.deriveHoverColor = deriveHoverColor;
6481
6531
  exports.designDocReadiness = designDocReadiness;
6532
+ exports.desktopOsOf = desktopOsOf;
6533
+ exports.detectDesktopOs = detectDesktopOs;
6534
+ exports.detectVisitorOs = detectVisitorOs;
6482
6535
  exports.devSectionAnchorId = devSectionAnchorId;
6483
6536
  exports.dismissAnnouncement = dismissAnnouncement;
6484
6537
  exports.dismissWalkthrough = dismissWalkthrough;
@@ -6733,6 +6786,7 @@ exports.serializeJsonLd = serializeJsonLd;
6733
6786
  exports.serializeSchemaParams = serializeSchemaParams;
6734
6787
  exports.setEmbedAuthAdapter = setEmbedAuthAdapter;
6735
6788
  exports.setEmbedProxyAuth = setEmbedProxyAuth;
6789
+ exports.shortcutLabel = shortcutLabel;
6736
6790
  exports.shouldIncludeInUrl = shouldIncludeInUrl;
6737
6791
  exports.shouldProxyImage = shouldProxyImage;
6738
6792
  exports.singleInitial = singleInitial;
@@ -6762,6 +6816,7 @@ exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions;
6762
6816
  exports.truncateString = truncateString;
6763
6817
  exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg;
6764
6818
  exports.usePlatformColors = usePlatformColors;
6819
+ exports.usesCommandKey = usesCommandKey;
6765
6820
  exports.validateAccessCode = validateAccessCode;
6766
6821
  exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode;
6767
6822
  exports.validateEmailDomain = validateEmailDomain;
@@ -26,6 +26,7 @@ export * from './tool-utils';
26
26
  export * from './shell-utils';
27
27
  export * from './video-bite-id';
28
28
  export * from './os-utils';
29
+ export * from './visitor-os';
29
30
  export * from './country-phone-utils';
30
31
  export * from './compliance-standards';
31
32
  export * from './generic-domain-utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -2827,6 +2827,43 @@ function isOSPlatform(deviceOS, targetPlatform) {
2827
2827
  const platformId = getOSPlatformId(deviceOS);
2828
2828
  return platformId === targetPlatform;
2829
2829
  }
2830
+
2831
+ // src/utils/visitor-os.ts
2832
+ var DESKTOP_OSES = ["mac", "windows", "linux"];
2833
+ var HINT_PLATFORMS = {
2834
+ macos: "mac",
2835
+ windows: "windows",
2836
+ linux: "linux",
2837
+ "chrome os": "linux",
2838
+ "chromium os": "linux",
2839
+ android: "android",
2840
+ ios: "ios"
2841
+ };
2842
+ function detectVisitorOs(userAgent, hints = {}) {
2843
+ const touchMac = (os) => os === "mac" && (hints.maxTouchPoints ?? 0) > 1 ? "ios" : os;
2844
+ const hinted = HINT_PLATFORMS[(hints.platform ?? "").replace(/"/g, "").trim().toLowerCase()];
2845
+ if (hinted) return touchMac(hinted);
2846
+ const ua = userAgent ?? "";
2847
+ if (!ua) return null;
2848
+ if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
2849
+ if (/Android/i.test(ua)) return "android";
2850
+ if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
2851
+ if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
2852
+ if (/Linux|X11|CrOS/i.test(ua)) return "linux";
2853
+ return null;
2854
+ }
2855
+ function desktopOsOf(os) {
2856
+ return os !== null && DESKTOP_OSES.includes(os) ? os : null;
2857
+ }
2858
+ function detectDesktopOs(userAgent, hints) {
2859
+ return desktopOsOf(detectVisitorOs(userAgent, hints));
2860
+ }
2861
+ function usesCommandKey(os) {
2862
+ return os === "mac" || os === "ios";
2863
+ }
2864
+ function shortcutLabel(os, key) {
2865
+ return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
2866
+ }
2830
2867
  var PRIORITY_CODES = ["US", "CA", "GB", "AU"];
2831
2868
  var COUNTRY_NAME_ALIASES = {
2832
2869
  // United States
@@ -3430,6 +3467,18 @@ var SOURCE_ICON_NAMES = {
3430
3467
  podcasts: "headphones",
3431
3468
  "customer-interviews": "users",
3432
3469
  faqs: "info",
3470
+ // Not a chat source: listed so the site menus and the admin sidebar draw the
3471
+ // media library with one glyph, from this registry like every other kind.
3472
+ media: "image",
3473
+ // Admin sections that are not chat sources, and the case-study audiences:
3474
+ // listed so every glyph a menu, a sidebar or a dashboard tile shows is named
3475
+ // here and nowhere else.
3476
+ campaigns: "megaphone-01",
3477
+ "contact-submissions": "email",
3478
+ "code-documentation": "book-open",
3479
+ "audience-msp": "hierarchy-02",
3480
+ "audience-mssp": "shield-lock",
3481
+ "audience-it-team": "buildings",
3433
3482
  // Trust (single-record live source over the public Vanta projection)
3434
3483
  "trust-center": "shield",
3435
3484
  // Financials
@@ -6343,4 +6392,4 @@ function pathMatchesAny(pathname, patterns) {
6343
6392
  return (patterns ?? []).some((pattern) => matchesPathPattern(pathname, pattern));
6344
6393
  }
6345
6394
 
6346
- export { ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatUnderscoreText, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, rescueCompletionPct, resolveContentFetchPath, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
6395
+ export { ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DESKTOP_OSES, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, desktopOsOf, detectDesktopOs, detectVisitorOs, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatUnderscoreText, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, rescueCompletionPct, resolveContentFetchPath, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shortcutLabel, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, usesCommandKey, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
@@ -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,CAmEpD,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,CAyEzD,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,CAmEpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5E"}
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,CAgFpD,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,CAyEzD,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,CAmEpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5E"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * THE detection of the system a visitor is on. One rule, read by everything
3
+ * that depends on it: which installer the desktop app's download offers, and
4
+ * which shortcut key a hint shows. Never test `navigator.platform` or a
5
+ * User-Agent anywhere else.
6
+ *
7
+ * Pure and server-safe: the server passes the request's User-Agent, the browser
8
+ * goes through `useVisitorOs` (hooks), which also passes the touch-point count.
9
+ */
10
+ export type VisitorOs = 'mac' | 'windows' | 'linux' | 'ios' | 'android';
11
+ /** The systems the desktop app installs on. */
12
+ export declare const DESKTOP_OSES: readonly ["mac", "windows", "linux"];
13
+ export type DesktopOs = (typeof DESKTOP_OSES)[number];
14
+ export interface VisitorOsHints {
15
+ /**
16
+ * The platform the browser STATES through User-Agent Client Hints:
17
+ * `navigator.userAgentData.platform` in the browser, the `Sec-CH-UA-Platform`
18
+ * request header on the server (Chromium browsers send it on every request).
19
+ * It is the current standard and is read first: browsers are freezing the
20
+ * User-Agent string, so the hint is the value they keep accurate. Safari and
21
+ * Firefox send none, which is why the User-Agent stays the fallback.
22
+ */
23
+ platform?: string | null;
24
+ /**
25
+ * `navigator.maxTouchPoints`, when the caller is a browser. An iPad asks for
26
+ * the desktop site by default and then calls itself a Macintosh; a Macintosh
27
+ * with a touch screen does not exist, so touch points tell the two apart. The
28
+ * server has no such signal and reads that iPad as a Mac.
29
+ */
30
+ maxTouchPoints?: number;
31
+ }
32
+ /**
33
+ * The visitor's system, or null when nothing names one. Order: the Client Hints
34
+ * platform, then the User-Agent, with touch points separating an iPad from a Mac.
35
+ */
36
+ export declare function detectVisitorOs(userAgent: string | null | undefined, hints?: VisitorOsHints): VisitorOs | null;
37
+ /** The system as a desktop one, or null for a phone, a tablet or an unknown system. */
38
+ export declare function desktopOsOf(os: VisitorOs | null): DesktopOs | null;
39
+ /** The desktop system a User-Agent comes from: `desktopOsOf(detectVisitorOs(...))`. */
40
+ export declare function detectDesktopOs(userAgent: string | null | undefined, hints?: VisitorOsHints): DesktopOs | null;
41
+ /** Apple systems use the Command key for shortcuts; every other system uses Control. */
42
+ export declare function usesCommandKey(os: VisitorOs | null): boolean;
43
+ /** A shortcut as its hint reads on the visitor's system: `⌘K` or `Ctrl K`. */
44
+ export declare function shortcutLabel(os: VisitorOs | null, key: string): string;
45
+ //# sourceMappingURL=visitor-os.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor-os.d.ts","sourceRoot":"","sources":["../../src/utils/visitor-os.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAExE,+CAA+C;AAC/C,eAAO,MAAM,YAAY,sCAAuC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,GAAE,cAAmB,GAAG,SAAS,GAAG,IAAI,CAclH;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAElE;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAE9G;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAE5D;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.705",
3
+ "version": "0.0.706-snapshot.20261006181108",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@ import { MESSAGE_TYPE } from '../components/chat/types/message.types';
20
20
  import type { AskOptionData } from '../components/chat/types/message.types';
21
21
  import { ESCALATION_STATE, escalationResolvedStatus } from './events';
22
22
  import type { ApprovalToolCall, ChatStreamEvent } from './events';
23
- import { sourceMetadataEvent } from './source-metadata';
23
+ import { attachmentsEvent, sourceMetadataEvent } from './source-metadata';
24
24
  import { isRecord } from './wire-narrow';
25
25
 
26
26
  /** Minimal structural view of a NATS chunk (see `ChunkData` in
@@ -122,13 +122,15 @@ export function decodeNatsChunk(chunk: unknown): ChatStreamEvent | null {
122
122
  }
123
123
  return null;
124
124
 
125
- // Two chunk names, one payload and one decoder. `SOURCES` is the contract
126
- // the backend is moving to; `GUIDE` is the v2 envelope it ships in during
127
- // the rollout (see `MESSAGE_TYPE.GUIDE`). The chunk arrives BEFORE or
128
- // between the answer's text deltas, so the reducer — not this decoder —
129
- // owns attaching it to the right turn.
130
- case MESSAGE_TYPE.GUIDE:
131
- case MESSAGE_TYPE.SOURCES: {
125
+ // The chunk arrives BEFORE or between the answer's text deltas, so the
126
+ // reducer — not this decoder — owns attaching it to the right turn.
127
+ case MESSAGE_TYPE.ATTACHMENTS: {
128
+ const event = attachmentsEvent(data);
129
+ return event ? { ...event, ...seq } : null;
130
+ }
131
+
132
+ // The envelope `ATTACHMENTS` replaced (see `MESSAGE_TYPE.GUIDE`).
133
+ case MESSAGE_TYPE.GUIDE: {
132
134
  const event = sourceMetadataEvent(data.payload);
133
135
  return event ? { ...event, ...seq } : null;
134
136
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Source-metadata payload → `{ sources, refs }`.
3
3
  *
4
- * ONE decoder for two arrival paths: the live `GUIDE`/`SOURCES` NATS chunk and
5
- * the persisted row of the same name in dialog history. That is the whole point
4
+ * ONE decoder for two arrival paths: the live `ATTACHMENTS` NATS chunk and the
5
+ * persisted row of the same name in dialog history. That is the whole point
6
6
  * of putting it here rather than in either consumer — a reloaded thread has to
7
7
  * render identically to the live turn, and two parsers is exactly how that stops
8
8
  * being true.
@@ -313,6 +313,29 @@ export function sourceMetadataEvent(payload: unknown): SourcesEvent | null {
313
313
  };
314
314
  }
315
315
 
316
+ /** `null` fields dropped, at any depth. */
317
+ function withoutNulls(value: unknown): unknown {
318
+ if (Array.isArray(value)) return value.map(withoutNulls);
319
+ if (!isRecord(value)) return value;
320
+ return Object.fromEntries(
321
+ Object.entries(value)
322
+ .filter(([, field]) => field !== null)
323
+ .map(([key, field]) => [key, withoutNulls(field)]),
324
+ );
325
+ }
326
+
327
+ /**
328
+ * Decode one typed `ATTACHMENTS` record — the live chunk or the persisted
329
+ * `AttachmentsData` row, which carry `sources` / `videos` / `cards` directly.
330
+ *
331
+ * GraphQL answers an unset field with `null` where the live chunk omits it, so
332
+ * nulls are read as absent: a reloaded source must not gain a
333
+ * `targetPlatform: null` ("no destination") the live one never carried.
334
+ */
335
+ export function attachmentsEvent(record: unknown): SourcesEvent | null {
336
+ return sourceMetadataEvent(withoutNulls(record));
337
+ }
338
+
316
339
  /** What one assistant answer carries: its citations and its expandable refs. */
317
340
  export interface SourceMetadata {
318
341
  sources?: ChatSource[];