@flamingo-stack/openframe-frontend-core 0.0.705-snapshot.20261006160157 → 0.0.705
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-WCVZCGK5.cjs → chunk-2QEUFXNS.cjs} +71 -312
- package/dist/{chunk-N45D4ZXQ.js → chunk-2YXVWZVF.js} +715 -959
- package/dist/{chunk-7OFPU7WE.cjs → chunk-3MX5S4CF.cjs} +2547 -877
- package/dist/{chunk-MB4PNY7C.cjs → chunk-4I45Y3DN.cjs} +6 -6
- package/dist/{chunk-K6O43WDL.cjs → chunk-4KX6OED2.cjs} +46 -46
- package/dist/{chunk-JPG7OHEG.js → chunk-5HBHO5TB.js} +1 -1
- package/dist/{chunk-3PLDQDE6.cjs → chunk-6NJKKO73.cjs} +15 -15
- package/dist/{chunk-O2RSAA5M.js → chunk-6SEANMOU.js} +11 -11
- package/dist/{chunk-WMX26HB5.js → chunk-6XIF2Z7I.js} +3 -3
- package/dist/{chunk-TQ4LB2DS.cjs → chunk-7LS22BZU.cjs} +14 -14
- package/dist/{chunk-7GEBFJT2.js → chunk-7VVFKJY5.js} +3429 -1759
- package/dist/{chunk-DDVBX42E.cjs → chunk-A75QY6CD.cjs} +21 -21
- package/dist/{chunk-OF6GEI5A.cjs → chunk-ABU3TGXA.cjs} +3 -3
- package/dist/{chunk-4CJMQLB5.js → chunk-AQWZNP6A.js} +4 -4
- package/dist/{chunk-FI6GMDO7.js → chunk-CH5232HV.js} +662 -2455
- package/dist/{chunk-Y2GSOUCS.cjs → chunk-D7BTSVMS.cjs} +2 -2
- package/dist/{chunk-4ILM7W2R.js → chunk-DENB2XJC.js} +2 -2
- package/dist/{chunk-6232S532.js → chunk-DW7G4KG3.js} +3 -3
- package/dist/{chunk-3NCM4ZQB.js → chunk-F6AFPNDF.js} +15 -15
- package/dist/{chunk-PXOQIA5K.js → chunk-F6I6XZMN.js} +5 -5
- package/dist/{chunk-G6UMNAVI.js → chunk-FCGC42TS.js} +61 -57
- package/dist/{chunk-BHI6GVC4.js → chunk-G5A3PSPV.js} +691 -1080
- package/dist/{chunk-HZ7CBXPL.cjs → chunk-HPWWNJE7.cjs} +89 -89
- package/dist/{chunk-SW5ZV2BN.cjs → chunk-IHERL5V4.cjs} +34 -34
- package/dist/{chunk-UJ33ZXDT.cjs → chunk-IKTQ3ZAG.cjs} +6 -6
- package/dist/{chunk-SEKYEWQG.cjs → chunk-JEZKGCZI.cjs} +26 -26
- package/dist/{chunk-7SCNMP2B.cjs → chunk-KOWVJD4V.cjs} +56 -56
- package/dist/chunk-LMBC5FFP.js +43 -0
- package/dist/{chunk-F57ECE2I.js → chunk-MFFCUVWG.js} +1 -1
- package/dist/{chunk-KUC673HM.js → chunk-MKXO4Q5P.js} +142 -383
- package/dist/{chunk-6NTPY5QA.cjs → chunk-MMOODW57.cjs} +94 -1887
- package/dist/{chunk-CUME3VTQ.js → chunk-MP2C3LJ4.js} +1 -1
- package/dist/{chunk-VX4E6YSB.cjs → chunk-N3COXDBH.cjs} +5 -41
- package/dist/{chunk-FXJ3WWUB.js → chunk-NDESEPW5.js} +0 -68
- package/dist/chunk-O43V3EOS.js +252 -0
- package/dist/{chunk-PLYEKV3N.cjs → chunk-OHFS7VOU.cjs} +2 -2
- package/dist/{chunk-M75XEEGT.cjs → chunk-OUY3HHW6.cjs} +539 -928
- package/dist/{chunk-CZ7Y7UG4.js → chunk-PDWVPI3S.js} +72 -4
- package/dist/{chunk-TE773HEH.js → chunk-PN2RKPDF.js} +10 -10
- package/dist/{chunk-3EZ4HHAP.js → chunk-QFXRPRFT.js} +3 -3
- package/dist/chunk-QZVSJF2K.cjs +252 -0
- package/dist/chunk-RALRPFDW.cjs +43 -0
- package/dist/{chunk-YGJKKDDM.js → chunk-RBDP4WDE.js} +6 -6
- package/dist/{chunk-LM7TXMLU.cjs → chunk-RKV5B7EU.cjs} +4 -72
- package/dist/{chunk-UVTD52MD.cjs → chunk-TYWLNCNH.cjs} +82 -14
- package/dist/{chunk-IKJA3Y7Z.js → chunk-VA5T32XA.js} +2 -2
- package/dist/{chunk-GWQEYPYM.cjs → chunk-VESKITRQ.cjs} +732 -728
- package/dist/{chunk-RQRX4YC3.cjs → chunk-VHCACDKP.cjs} +39 -39
- package/dist/{chunk-4IBPRIQH.js → chunk-VR2ZLFCP.js} +1 -1
- package/dist/{chunk-RTIPR53L.cjs → chunk-WA6GUYQ4.cjs} +104 -104
- package/dist/{chunk-T5TMCHWM.js → chunk-X5MQ7JRP.js} +9 -9
- package/dist/{chunk-LLSUVPQC.cjs → chunk-X72J4ACL.cjs} +8 -252
- package/dist/{chunk-UDFRUKLC.cjs → chunk-XOYH2YQE.cjs} +2 -2
- package/dist/{chunk-LVSFKENJ.cjs → chunk-YFBM2K6X.cjs} +4 -4
- package/dist/{chunk-DWPAAWMR.js → chunk-YHM5AWTT.js} +6 -6
- package/dist/{chunk-NCPTID44.js → chunk-Z2VNQQ74.js} +942 -978
- package/dist/{chunk-STHZBOQI.cjs → chunk-ZSAGLQOD.cjs} +17 -17
- package/dist/{chunk-VZICIQW2.js → chunk-ZSAO2HBW.js} +15 -15
- package/dist/components/case-studies/index.cjs +32 -30
- package/dist/components/case-studies/index.js +16 -14
- package/dist/components/chat/entity-cards/case-study-card.d.ts +4 -11
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +11 -9
- package/dist/components/chat/index.js +16 -14
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +14 -12
- package/dist/components/contact/index.js +13 -11
- package/dist/components/docs/index.cjs +17 -15
- package/dist/components/docs/index.js +16 -14
- package/dist/components/embeds/index.cjs +14 -12
- package/dist/components/embeds/index.js +13 -11
- package/dist/components/faq/index.cjs +15 -13
- package/dist/components/faq/index.js +14 -12
- package/dist/components/features/index.cjs +14 -12
- package/dist/components/features/index.js +23 -21
- package/dist/components/footer-waitlist-button.d.ts +29 -0
- package/dist/components/footer-waitlist-button.d.ts.map +1 -0
- package/dist/components/footer.d.ts +47 -0
- package/dist/components/footer.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +120 -118
- package/dist/components/help-center-pages/index.js +35 -33
- package/dist/components/icons/index.cjs +5 -3
- package/dist/components/icons/index.js +11 -9
- package/dist/components/icons-v2-generated/index.cjs +5 -3
- package/dist/components/icons-v2-generated/index.js +4 -2
- package/dist/components/index.cjs +159 -86
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +402 -329
- package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
- package/dist/components/meeting-scheduler/index.cjs +64 -62
- package/dist/components/meeting-scheduler/index.js +14 -12
- package/dist/components/navigation/client-only-header.d.ts +8 -0
- package/dist/components/navigation/client-only-header.d.ts.map +1 -0
- package/dist/components/navigation/header-skeleton.d.ts +12 -0
- package/dist/components/navigation/header-skeleton.d.ts.map +1 -0
- package/dist/components/navigation/header.d.ts +9 -0
- package/dist/components/navigation/header.d.ts.map +1 -0
- package/dist/components/navigation/index.cjs +16 -28
- package/dist/components/navigation/index.d.ts +10 -14
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +26 -38
- package/dist/components/navigation/mingo-ai-button.d.ts +3 -38
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/mobile-nav-panel.d.ts +10 -0
- package/dist/components/navigation/mobile-nav-panel.d.ts.map +1 -0
- package/dist/components/navigation/navigation-sidebar-item.d.ts +2 -1
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/top-navigation.d.ts +2 -2
- package/dist/components/navigation/top-navigation.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +17 -15
- package/dist/components/onboarding-guides/index.js +16 -14
- package/dist/components/related-content/index.cjs +8 -10
- package/dist/components/related-content/index.js +7 -9
- package/dist/components/tickets/index.cjs +18 -16
- package/dist/components/tickets/index.js +17 -15
- package/dist/components/ui/index.cjs +14 -12
- package/dist/components/ui/index.js +19 -17
- package/dist/hooks/index.cjs +11 -19
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +11 -19
- package/dist/hooks/ui/index.d.ts +0 -3
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/index.cjs +22 -55
- package/dist/index.js +196 -229
- package/dist/types/case-study.d.ts +0 -9
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/types/navigation.d.ts +65 -95
- package/dist/types/navigation.d.ts.map +1 -1
- package/dist/utils/index.cjs +0 -55
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -50
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/entity-cards/case-study-card.tsx +5 -115
- package/src/components/chat/utils/icon-library.tsx +1 -35
- package/src/components/footer-waitlist-button.tsx +53 -0
- package/src/components/footer.tsx +195 -0
- package/src/components/index.ts +2 -0
- package/src/components/loading/page-layout-skeleton.tsx +1 -1
- package/src/components/navigation/client-only-header.tsx +22 -0
- package/src/components/navigation/header-skeleton.tsx +74 -0
- package/src/components/navigation/header.tsx +429 -0
- package/src/components/navigation/index.ts +14 -21
- package/src/components/navigation/mingo-ai-button.tsx +63 -139
- package/src/components/navigation/mobile-nav-panel.tsx +155 -0
- package/src/components/navigation/navigation-sidebar-item.tsx +2 -1
- package/src/components/navigation/ticket-alerts-button.tsx +2 -2
- package/src/components/navigation/top-navigation.tsx +2 -2
- package/src/hooks/index.ts +0 -1
- package/src/hooks/ui/index.ts +0 -3
- package/src/styles/chat-animations.css +2 -57
- package/src/types/case-study.ts +0 -16
- package/src/types/navigation.ts +66 -80
- package/src/utils/index.ts +0 -1
- package/src/utils/source-icons.ts +0 -13
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts +0 -3
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +0 -1
- package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -48
- package/dist/components/navigation/mobile-nav-sheet.d.ts.map +0 -1
- package/dist/components/navigation/nav-item-row.d.ts +0 -27
- package/dist/components/navigation/nav-item-row.d.ts.map +0 -1
- package/dist/components/navigation/nav-panel.d.ts +0 -43
- package/dist/components/navigation/nav-panel.d.ts.map +0 -1
- package/dist/components/navigation/site-footer.d.ts +0 -28
- package/dist/components/navigation/site-footer.d.ts.map +0 -1
- package/dist/components/navigation/site-header.d.ts +0 -61
- package/dist/components/navigation/site-header.d.ts.map +0 -1
- package/dist/components/navigation/site-nav-link.d.ts +0 -26
- package/dist/components/navigation/site-nav-link.d.ts.map +0 -1
- package/dist/hooks/ui/use-active-section.d.ts +0 -10
- package/dist/hooks/ui/use-active-section.d.ts.map +0 -1
- package/dist/hooks/ui/use-nav-menus.d.ts +0 -48
- package/dist/hooks/ui/use-nav-menus.d.ts.map +0 -1
- package/dist/hooks/ui/use-visitor-os.d.ts +0 -15
- package/dist/hooks/ui/use-visitor-os.d.ts.map +0 -1
- package/dist/hooks/use-location-hash.d.ts +0 -9
- package/dist/hooks/use-location-hash.d.ts.map +0 -1
- package/dist/utils/visitor-os.d.ts +0 -45
- package/dist/utils/visitor-os.d.ts.map +0 -1
- package/src/components/navigation/mobile-nav-sheet-id.ts +0 -2
- package/src/components/navigation/mobile-nav-sheet.tsx +0 -241
- package/src/components/navigation/nav-item-row.tsx +0 -129
- package/src/components/navigation/nav-panel.tsx +0 -196
- package/src/components/navigation/site-footer.tsx +0 -256
- package/src/components/navigation/site-header.tsx +0 -339
- package/src/components/navigation/site-nav-link.tsx +0 -41
- package/src/hooks/ui/use-active-section.ts +0 -44
- package/src/hooks/ui/use-nav-menus.ts +0 -200
- package/src/hooks/ui/use-visitor-os.ts +0 -33
- package/src/hooks/use-location-hash.ts +0 -34
- package/src/utils/visitor-os.ts +0 -84
package/src/types/navigation.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { CaseStudyCardData } from './case-study';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Base navigation item interface used across all navigation components
|
|
@@ -14,93 +13,80 @@ export interface NavigationItem {
|
|
|
14
13
|
children?: NavigationItem[];
|
|
15
14
|
onClick?: () => void;
|
|
16
15
|
element?: React.ReactNode; // For completely custom navigation items
|
|
16
|
+
isExternal?: boolean; // For external links that open in new tab
|
|
17
|
+
type?: 'single' | 'dropdown'; // Type of navigation item
|
|
18
|
+
dropdownContent?: React.ReactNode; // Additional content for dropdown (e.g., social icons)
|
|
19
|
+
showDropdownDivider?: boolean; // Whether to show divider above dropdown content
|
|
20
|
+
className?: string; // Custom CSS classes to override default styling
|
|
21
|
+
dropdownClassName?: string; // Custom CSS classes for dropdown menu background
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
/**
|
|
20
|
-
*
|
|
21
|
-
* header, mega menus, mobile menu and footer. Plain data only (no functions, no
|
|
22
|
-
* React elements), so a server resolver can build it and hand it to the client
|
|
23
|
-
* components (`SiteHeader`, `MobileNavSheet`, `SiteFooter`), which only render.
|
|
24
|
-
*
|
|
25
|
-
* A link is declared once and referenced from every surface, so one change to
|
|
26
|
-
* the model changes the header, the mobile menu and the footer together.
|
|
25
|
+
* Configuration for the header component
|
|
27
26
|
*/
|
|
28
|
-
export interface
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
27
|
+
export interface HeaderConfig {
|
|
28
|
+
logo: {
|
|
29
|
+
element: React.ReactNode;
|
|
30
|
+
/** Where the logo links. Omitted, the logo is not a link (a landing page that keeps the visitor on it). */
|
|
31
|
+
href?: string;
|
|
32
|
+
};
|
|
33
|
+
navigation?: {
|
|
34
|
+
items: NavigationItem[];
|
|
35
|
+
position?: 'left' | 'center' | 'right';
|
|
36
|
+
};
|
|
37
|
+
actions?: {
|
|
38
|
+
left?: React.ReactNode[];
|
|
39
|
+
right?: React.ReactNode[];
|
|
40
|
+
persistent?: React.ReactNode[];
|
|
41
|
+
};
|
|
42
|
+
mobile?: {
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
menuIcon?: React.ReactNode;
|
|
45
|
+
closeIcon?: React.ReactNode;
|
|
46
|
+
onToggle?: () => void;
|
|
47
|
+
isOpen?: boolean;
|
|
48
|
+
};
|
|
49
|
+
mingo?: {
|
|
50
|
+
enabled?: boolean;
|
|
51
|
+
source?: string;
|
|
52
|
+
className?: string;
|
|
53
|
+
/** Server-configured Mingo identity glyph (same EntityIcon the chat
|
|
54
|
+
* panel renders); omit to use the packaged fallback mark. */
|
|
55
|
+
icon?: React.ReactNode;
|
|
56
|
+
/** Server-configured assistant name for the wordmark/aria-label; omit
|
|
57
|
+
* for the default "Mingo AI". */
|
|
58
|
+
label?: string;
|
|
59
|
+
};
|
|
60
|
+
/** Support-ticket alerts cell (`TicketAlertsButton`), rendered before
|
|
61
|
+
* the Mingo launcher in the flush cell row. Attention-only: renders
|
|
62
|
+
* nothing unless a `<TicketLiveProvider>` is mounted AND there are
|
|
63
|
+
* unread support replies — declaring it is side-effect-free. */
|
|
64
|
+
tickets?: {
|
|
65
|
+
/** BASE path of the tickets surface (any nesting prefix allowed —
|
|
66
|
+
* '/tickets', '/support/portal/tickets'). The cell builds the SSOT
|
|
67
|
+
* deep link `<href>?ticket=<id>` for the newest-unread ticket. */
|
|
68
|
+
href: string;
|
|
69
|
+
/** Optional host navigation (router push) — receives the FULL
|
|
70
|
+
* computed href. Defaults to `window.location.assign`. */
|
|
71
|
+
onClick?: (href: string) => void;
|
|
72
|
+
};
|
|
73
|
+
className?: string;
|
|
74
|
+
style?: React.CSSProperties;
|
|
75
|
+
autoHide?: boolean;
|
|
76
|
+
backgroundColor?: string; // ODS background color (e.g., 'bg-ods-card', 'bg-ods-accent')
|
|
58
77
|
}
|
|
59
78
|
|
|
60
79
|
/**
|
|
61
|
-
*
|
|
62
|
-
* record itself, drawn by the shared case study card.
|
|
80
|
+
* Configuration for the mobile navigation panel
|
|
63
81
|
*/
|
|
64
|
-
export interface
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
label: string;
|
|
73
|
-
/** A menu with only `href` is a plain link. */
|
|
74
|
-
href?: string;
|
|
75
|
-
iconName?: string;
|
|
76
|
-
/** Path prefixes that mark this menu as the current section. */
|
|
77
|
-
match?: string[];
|
|
78
|
-
/** One column is a list; more than one makes a mega menu. */
|
|
79
|
-
columns?: NavGroup[];
|
|
80
|
-
/** Featured cards shown beside the columns. */
|
|
81
|
-
features?: NavFeature[];
|
|
82
|
-
/** The side list of a mega menu. */
|
|
83
|
-
sideLinks?: NavLink[];
|
|
84
|
-
sideTitle?: string;
|
|
85
|
-
/** Show the brand's social links under the menu's links. */
|
|
86
|
-
showSocial?: boolean;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export type SiteNavPrimaryCta = 'trial' | 'waitlist' | 'none' | { label: string; 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?: { heading: string; subheading: string; secondary?: NavLink };
|
|
102
|
-
legal: { company: string; notes: string[]; links: NavLink[] };
|
|
103
|
-
brand: { name: string; tagline: string; social: NavLink[]; statusUrl?: string };
|
|
82
|
+
export interface MobileNavConfig {
|
|
83
|
+
sections: Array<{
|
|
84
|
+
title?: string;
|
|
85
|
+
items: NavigationItem[];
|
|
86
|
+
}>;
|
|
87
|
+
footer?: React.ReactNode;
|
|
88
|
+
className?: string;
|
|
89
|
+
onClose?: () => void;
|
|
104
90
|
}
|
|
105
91
|
|
|
106
92
|
/**
|
package/src/utils/index.ts
CHANGED
|
@@ -116,7 +116,6 @@ export * from './shell-utils';
|
|
|
116
116
|
export * from './video-bite-id';
|
|
117
117
|
// OS type utilities
|
|
118
118
|
export * from './os-utils';
|
|
119
|
-
export * from './visitor-os';
|
|
120
119
|
// Phone utilities
|
|
121
120
|
export * from './country-phone-utils';
|
|
122
121
|
export * from './compliance-standards';
|
|
@@ -40,19 +40,6 @@ export const SOURCE_ICON_NAMES: Record<string, string> = {
|
|
|
40
40
|
podcasts: 'headphones',
|
|
41
41
|
'customer-interviews': 'users',
|
|
42
42
|
faqs: 'info',
|
|
43
|
-
// Not a chat source: listed so the site menus and the admin sidebar draw the
|
|
44
|
-
// media library with one glyph, from this registry like every other kind.
|
|
45
|
-
media: 'image',
|
|
46
|
-
|
|
47
|
-
// Admin sections that are not chat sources, and the case-study audiences:
|
|
48
|
-
// listed so every glyph a menu, a sidebar or a dashboard tile shows is named
|
|
49
|
-
// here and nowhere else.
|
|
50
|
-
campaigns: 'megaphone-01',
|
|
51
|
-
'contact-submissions': 'email',
|
|
52
|
-
'code-documentation': 'book-open',
|
|
53
|
-
'audience-msp': 'hierarchy-02',
|
|
54
|
-
'audience-mssp': 'shield-lock',
|
|
55
|
-
'audience-it-team': 'buildings',
|
|
56
43
|
|
|
57
44
|
// Trust (single-record live source over the public Vanta projection)
|
|
58
45
|
'trust-center': 'shield',
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mobile-nav-sheet-id.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/mobile-nav-sheet-id.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { NavMenu, SiteNav } from '../../types/navigation';
|
|
3
|
-
import { type SiteNavLinkRenderer } from './site-nav-link';
|
|
4
|
-
export { MOBILE_NAV_SHEET_ID } from './mobile-nav-sheet-id';
|
|
5
|
-
export interface MobileNavSheetProps {
|
|
6
|
-
nav: SiteNav;
|
|
7
|
-
isOpen: boolean;
|
|
8
|
-
onClose: () => void;
|
|
9
|
-
/** The host router's pathname: the group holding the current page starts open. */
|
|
10
|
-
pathname: string;
|
|
11
|
-
logo: React.ReactNode;
|
|
12
|
-
renderLink?: SiteNavLinkRenderer;
|
|
13
|
-
/** The primary CTA node when `nav.primaryCta` is `'trial'` or `'waitlist'`. */
|
|
14
|
-
cta?: React.ReactNode;
|
|
15
|
-
/** Host nodes shown above the pinned CTA (a sign-up button). */
|
|
16
|
-
actions?: React.ReactNode;
|
|
17
|
-
/** The Mingo row at the top (`MingoAiButton variant="field"`): the assistant's
|
|
18
|
-
* name and icon; `source` scopes the `ask-ai:open` event. Omitted: no row. */
|
|
19
|
-
askAI?: {
|
|
20
|
-
source?: string;
|
|
21
|
-
icon?: React.ReactNode;
|
|
22
|
-
label?: string;
|
|
23
|
-
};
|
|
24
|
-
/** Host-added groups after the site's own (Profile, Admin). */
|
|
25
|
-
extraMenus?: NavMenu[];
|
|
26
|
-
/** Values for `NavLink.badgeKey`. */
|
|
27
|
-
badges?: Record<string, number>;
|
|
28
|
-
/** Rendered under the links of a menu with `showSocial`. */
|
|
29
|
-
social?: React.ReactNode;
|
|
30
|
-
/** Opaque ODS background class. Default `bg-ods-bg`. */
|
|
31
|
-
backgroundClassName?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Would the sheet list anything from this navigation? The header's menu button
|
|
35
|
-
* and the sheet read this one answer (plus whatever the host adds: a profile
|
|
36
|
-
* entry, a sign-up button), so a button never opens an empty sheet.
|
|
37
|
-
*/
|
|
38
|
-
export declare function siteNavHasMobileMenus(nav: Pick<SiteNav, 'menus' | 'mobileMenus'>): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* The site navigation below `lg`: a full-screen sheet drawn from the same
|
|
41
|
-
* `SiteNav` as the header. Each menu with links is an accordion that expands
|
|
42
|
-
* in place; the primary CTA and Sign in stay pinned at the bottom while the
|
|
43
|
-
* body scrolls.
|
|
44
|
-
*
|
|
45
|
-
* Unmounted while closed (the header's panels are what crawlers read).
|
|
46
|
-
*/
|
|
47
|
-
export declare function MobileNavSheet(props: MobileNavSheetProps): React.JSX.Element | null;
|
|
48
|
-
//# sourceMappingURL=mobile-nav-sheet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mobile-nav-sheet.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/mobile-nav-sheet.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAW,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AASxE,OAAO,EAA6C,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtG,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,+EAA+E;IAC/E,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,gEAAgE;IAChE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;mFAC+E;IAC/E,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC,GAAG,OAAO,CAE1F;AAUD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,4BAKxD"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { NavLink } from '../../types/navigation';
|
|
3
|
-
import { type SiteNavLinkRenderer } from './site-nav-link';
|
|
4
|
-
export type NavItemRowVariant = 'panel' | 'sheet' | 'side' | 'label';
|
|
5
|
-
export interface NavItemRowProps {
|
|
6
|
-
link: NavLink;
|
|
7
|
-
/**
|
|
8
|
-
* - `panel` (default): a desktop menu row, 36px icon tile, label, description.
|
|
9
|
-
* - `sheet`: the mobile sheet's row, 32px tile, at least 52px tall.
|
|
10
|
-
* - `side`: a mega menu's side list, a small bare icon and the label.
|
|
11
|
-
* - `label`: the label only (footer columns).
|
|
12
|
-
*/
|
|
13
|
-
variant?: NavItemRowVariant;
|
|
14
|
-
renderLink?: SiteNavLinkRenderer;
|
|
15
|
-
/** The live counter for `link.badgeKey`; nothing renders at 0 or undefined. */
|
|
16
|
-
badge?: number;
|
|
17
|
-
/** Called on activation, so the menu or sheet holding the row can close. */
|
|
18
|
-
onNavigate?: () => void;
|
|
19
|
-
className?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* One navigation row, shared by the desktop panels, the mobile sheet and the
|
|
23
|
-
* footer columns: icon tile or agent avatar, label, description, the
|
|
24
|
-
* "Built on ..." line and an optional live counter.
|
|
25
|
-
*/
|
|
26
|
-
export declare function NavItemRow({ link, variant, renderLink, badge, onNavigate, className, }: NavItemRowProps): React.JSX.Element;
|
|
27
|
-
//# sourceMappingURL=nav-item-row.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-item-row.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/nav-item-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAA2D,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGpH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsCD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,OAAiB,EACjB,UAAqC,EACrC,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,eAAe,qBAoDjB"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import { type HTMLAttributes } from 'react';
|
|
3
|
-
import type { NavMenu } from '../../types/navigation';
|
|
4
|
-
import { type SiteNavLinkRenderer } from './site-nav-link';
|
|
5
|
-
/** True when a menu opens the full-width mega panel instead of a dropdown list. */
|
|
6
|
-
export declare function isMegaMenu(menu: Pick<NavMenu, 'columns' | 'features' | 'sideLinks'>): boolean;
|
|
7
|
-
export interface NavPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
8
|
-
menu: NavMenu;
|
|
9
|
-
open: boolean;
|
|
10
|
-
renderLink?: SiteNavLinkRenderer;
|
|
11
|
-
/** Values for `NavLink.badgeKey`. */
|
|
12
|
-
badges?: Record<string, number>;
|
|
13
|
-
/** Rendered under the links of a menu with `showSocial`. */
|
|
14
|
-
social?: React.ReactNode;
|
|
15
|
-
/** Called when a link is activated, so the owner can close the menu. */
|
|
16
|
-
onNavigate?: () => void;
|
|
17
|
-
/**
|
|
18
|
-
* How an OPEN mega menu arrived: `open` from a closed bar (the panel fades
|
|
19
|
-
* in), `from-start` / `from-end` from the mega menu before or after it in
|
|
20
|
-
* the row (the surface stays put and only the content slides in from that
|
|
21
|
-
* side). Default `open`.
|
|
22
|
-
*/
|
|
23
|
-
motion?: NavPanelMotion;
|
|
24
|
-
/**
|
|
25
|
-
* Another mega menu is open: this closed one leaves without a fade, so the
|
|
26
|
-
* two panels never show through each other mid-switch.
|
|
27
|
-
*/
|
|
28
|
-
handoff?: boolean;
|
|
29
|
-
}
|
|
30
|
-
export type NavPanelMotion = 'open' | 'from-start' | 'from-end';
|
|
31
|
-
/**
|
|
32
|
-
* The panel a header menu opens, in the one shape its data asks for: a single
|
|
33
|
-
* column is a compact dropdown under its trigger; more than one column, or
|
|
34
|
-
* features, or side links make the full-width mega menu under the bar.
|
|
35
|
-
*
|
|
36
|
-
* Always in the DOM, so crawlers see every link; closed, it is `inert` (out of
|
|
37
|
-
* the tab order and the accessibility tree, which `aria-hidden` alone would
|
|
38
|
-
* not do) and invisible. Plain `<div>`s on purpose: these are disclosures of
|
|
39
|
-
* links, not an ARIA menu, so there is no `role="menu"` and Tab moves through
|
|
40
|
-
* the links in DOM order.
|
|
41
|
-
*/
|
|
42
|
-
export declare const NavPanel: React.ForwardRefExoticComponent<NavPanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
43
|
-
//# sourceMappingURL=nav-panel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-panel.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/nav-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKrF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,GAAG,OAAO,CAE7F;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAsChE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,sFAuGnB,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { SiteNav } from '../../types/navigation';
|
|
3
|
-
import { type SiteNavLinkRenderer } from './site-nav-link';
|
|
4
|
-
export interface SiteFooterProps {
|
|
5
|
-
nav: SiteNav;
|
|
6
|
-
logo: React.ReactNode;
|
|
7
|
-
/** The platform's name beside the logo: a string is set as the wordmark, a
|
|
8
|
-
* node is drawn as given (a platform with its own styled name). */
|
|
9
|
-
name?: React.ReactNode;
|
|
10
|
-
renderLink?: SiteNavLinkRenderer;
|
|
11
|
-
/** The closing band's primary CTA when `nav.primaryCta` is `'trial'` or `'waitlist'`. */
|
|
12
|
-
cta?: React.ReactNode;
|
|
13
|
-
/** Replaces the default social row built from `nav.brand.social` (each
|
|
14
|
-
* link's `iconName` is its social platform key). */
|
|
15
|
-
social?: React.ReactNode;
|
|
16
|
-
/** Rendered in the brand column, under the tagline and the social links. */
|
|
17
|
-
brandExtra?: React.ReactNode;
|
|
18
|
-
/** Opaque ODS background class. Default `bg-ods-bg`. */
|
|
19
|
-
backgroundClassName?: string;
|
|
20
|
-
/** Generated, never typed. Default: the current year. */
|
|
21
|
-
year?: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* The site footer of every platform, drawn from one `SiteNav`: the closing
|
|
25
|
-
* band, the brand column, the link columns and the legal line.
|
|
26
|
-
*/
|
|
27
|
-
export declare function SiteFooter({ nav, logo, name, renderLink, cta, social, brandExtra, backgroundClassName, year, }: SiteFooterProps): React.JSX.Element;
|
|
28
|
-
//# sourceMappingURL=site-footer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-footer.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/site-footer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAMhE,OAAO,EAA2D,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;wEACoE;IACpE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,yFAAyF;IACzF,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB;yDACqD;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA2FD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,UAAqC,EACrC,GAAG,EACH,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,IAA+B,GAChC,EAAE,eAAe,qBAwHjB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { SiteNav } from '../../types/navigation';
|
|
3
|
-
import { type SiteNavLinkRenderer } from './site-nav-link';
|
|
4
|
-
export interface SiteHeaderProps {
|
|
5
|
-
nav: SiteNav;
|
|
6
|
-
/** The host router's pathname: marks the active section and closes menus on navigation. */
|
|
7
|
-
pathname: string;
|
|
8
|
-
logo: React.ReactNode;
|
|
9
|
-
/** Omitted: the logo is not a link. */
|
|
10
|
-
logoHref?: string;
|
|
11
|
-
/** The host's link (Next `Link`, unified navigation). Default: `<a>`. */
|
|
12
|
-
renderLink?: SiteNavLinkRenderer;
|
|
13
|
-
/** Leading cells (admin sidebar toggle). Each cell owns its divider. */
|
|
14
|
-
leading?: React.ReactNode;
|
|
15
|
-
/** Host actions at the right (profile button, custom buttons). Shown at every width. */
|
|
16
|
-
actions?: React.ReactNode;
|
|
17
|
-
/** The primary CTA node when `nav.primaryCta` is `'trial'` or `'waitlist'`. */
|
|
18
|
-
cta?: React.ReactNode;
|
|
19
|
-
/** Trailing cells (ticket alerts). Each cell owns its divider. */
|
|
20
|
-
sideActions?: React.ReactNode;
|
|
21
|
-
/**
|
|
22
|
-
* The Mingo AI launcher, first in the right cluster (before Sign in).
|
|
23
|
-
* Omitted: no launcher. `icon` and `label` are the server-configured
|
|
24
|
-
* assistant identity (the same ones the chat panel shows); `source` scopes
|
|
25
|
-
* the `ask-ai:open` event the launcher dispatches.
|
|
26
|
-
*/
|
|
27
|
-
mingo?: {
|
|
28
|
-
source?: string;
|
|
29
|
-
icon?: React.ReactNode;
|
|
30
|
-
label?: string;
|
|
31
|
-
shortcutHint?: boolean;
|
|
32
|
-
};
|
|
33
|
-
/** Omitted: no burger. */
|
|
34
|
-
mobile?: {
|
|
35
|
-
isOpen: boolean;
|
|
36
|
-
onToggle: () => void;
|
|
37
|
-
controlsId?: string;
|
|
38
|
-
};
|
|
39
|
-
/** Values for `NavLink.badgeKey`. */
|
|
40
|
-
badges?: Record<string, number>;
|
|
41
|
-
/** Rendered under a menu with `showSocial`. */
|
|
42
|
-
social?: React.ReactNode;
|
|
43
|
-
autoHide?: boolean;
|
|
44
|
-
/** Opaque ODS background class. */
|
|
45
|
-
backgroundClassName?: string;
|
|
46
|
-
className?: string;
|
|
47
|
-
style?: React.CSSProperties;
|
|
48
|
-
/** The id the "Skip to content" link targets. Default `main-content`. */
|
|
49
|
-
skipToContentId?: string;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* The site header of every platform, drawn from one `SiteNav`: logo, the
|
|
53
|
-
* menus left-aligned after it, then the Mingo AI launcher, Sign in, the host's
|
|
54
|
-
* actions, the primary CTA (the only button) and the trailing cells. A
|
|
55
|
-
* platform differs only in the data and the slots it passes.
|
|
56
|
-
*
|
|
57
|
-
* Below `lg` the menus and Sign in leave the bar (they live in
|
|
58
|
-
* `MobileNavSheet`); the host's actions, the CTA and the launcher stay.
|
|
59
|
-
*/
|
|
60
|
-
export declare function SiteHeader({ nav, pathname, logo, logoHref, renderLink, leading, actions, cta, sideActions, mingo, mobile, badges, social, autoHide, backgroundClassName, className, style, skipToContentId, }: SiteHeaderProps): React.JSX.Element;
|
|
61
|
-
//# sourceMappingURL=site-header.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-header.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/site-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAW/D,OAAO,EAA6C,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,OAAO,CAAC;IACb,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,wEAAwE;IACxE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wFAAwF;IACxF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+EAA+E;IAC/E,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,kEAAkE;IAClE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5F,0BAA0B;IAC1B,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAqC,EACrC,OAAO,EACP,OAAO,EACP,GAAG,EACH,WAAW,EACX,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,KAAK,EACL,eAAgC,GACjC,EAAE,eAAe,qBA8OjB"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { NavLink } from '../../types/navigation';
|
|
3
|
-
/**
|
|
4
|
-
* How a host renders one navigation link (Next `Link`, a unified-navigation
|
|
5
|
-
* anchor). Every site navigation component takes one; omitted, links go
|
|
6
|
-
* through {@link defaultRenderSiteNavLink}.
|
|
7
|
-
*/
|
|
8
|
-
export type SiteNavLinkRenderer = (props: {
|
|
9
|
-
link: Pick<NavLink, 'href' | 'external'>;
|
|
10
|
-
className?: string;
|
|
11
|
-
children: React.ReactNode;
|
|
12
|
-
onClick?: (e: React.MouseEvent) => void;
|
|
13
|
-
'aria-current'?: 'page';
|
|
14
|
-
'aria-label'?: string;
|
|
15
|
-
}) => React.ReactNode;
|
|
16
|
-
/**
|
|
17
|
-
* The default link: the library's `Link` shim (a plain `<a>`, or the host's
|
|
18
|
-
* registered router link, so internal links soft-navigate), opened in a new
|
|
19
|
-
* tab for a link that leaves the site.
|
|
20
|
-
*/
|
|
21
|
-
export declare const defaultRenderSiteNavLink: SiteNavLinkRenderer;
|
|
22
|
-
/** A link's label, with its `{count}` token filled from `link.count`. */
|
|
23
|
-
export declare function navLinkLabel(link: Pick<NavLink, 'label' | 'count'>): string;
|
|
24
|
-
/** Focus ring shared by every navigation link and trigger. */
|
|
25
|
-
export declare const NAV_FOCUS_CLASS = "outline-none focus-visible:ring-2 focus-visible:ring-ods-accent";
|
|
26
|
-
//# sourceMappingURL=site-nav-link.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-nav-link.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/site-nav-link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KAAK,KAAK,CAAC,SAAS,CAAC;AAEtB;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBASpC,CAAC;AAEJ,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,MAAM,CAE3E;AAED,8DAA8D;AAC9D,eAAO,MAAM,eAAe,oEAAoE,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { NavMenu } from '../../types/navigation';
|
|
2
|
-
/**
|
|
3
|
-
* Pure rule behind {@link useActiveSection}: the id of the menu whose `match`
|
|
4
|
-
* prefixes (else its `href`) hold the pathname. The longest prefix wins, the
|
|
5
|
-
* first menu on a tie; `null` when none holds it.
|
|
6
|
-
*/
|
|
7
|
-
export declare function resolveActiveSection(menus: readonly NavMenu[], pathname: string | null | undefined): string | null;
|
|
8
|
-
/** The id of the top-level menu the current page belongs to, or `null`. */
|
|
9
|
-
export declare function useActiveSection(menus: readonly NavMenu[], pathname: string | null | undefined): string | null;
|
|
10
|
-
//# sourceMappingURL=use-active-section.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-active-section.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/use-active-section.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAiBtD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAalH;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9G"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { type MouseEvent as ReactMouseEvent, type RefCallback } from 'react';
|
|
2
|
-
export interface UseNavMenusOptions {
|
|
3
|
-
/** The host router's pathname: any change closes the open menu. */
|
|
4
|
-
pathname: string;
|
|
5
|
-
/** Hover intent: how long the pointer rests on a trigger before it opens. */
|
|
6
|
-
hoverOpenMs?: number;
|
|
7
|
-
/** How long after the pointer left the trigger and the panel the menu closes. */
|
|
8
|
-
hoverCloseMs?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface NavMenuTriggerProps {
|
|
11
|
-
ref: RefCallback<HTMLElement>;
|
|
12
|
-
'aria-expanded': boolean;
|
|
13
|
-
'aria-controls': string;
|
|
14
|
-
onClick: (event: ReactMouseEvent) => void;
|
|
15
|
-
onMouseEnter: () => void;
|
|
16
|
-
onMouseLeave: () => void;
|
|
17
|
-
}
|
|
18
|
-
export interface NavMenuPanelProps {
|
|
19
|
-
ref: RefCallback<HTMLElement>;
|
|
20
|
-
id: string;
|
|
21
|
-
inert: boolean;
|
|
22
|
-
'data-state': 'open' | 'closed';
|
|
23
|
-
onMouseEnter: () => void;
|
|
24
|
-
onMouseLeave: () => void;
|
|
25
|
-
}
|
|
26
|
-
export interface UseNavMenusResult {
|
|
27
|
-
/** The id of the open menu, or `null`. One menu is open at a time. */
|
|
28
|
-
openId: string | null;
|
|
29
|
-
close: () => void;
|
|
30
|
-
getTriggerProps: (id: string) => NavMenuTriggerProps;
|
|
31
|
-
getPanelProps: (id: string) => NavMenuPanelProps;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Open state for a row of disclosure menus (the site header's dropdowns and
|
|
35
|
-
* mega menus).
|
|
36
|
-
*
|
|
37
|
-
* - Click toggles; the trigger is a `<button>`, so Enter and Space arrive as
|
|
38
|
-
* that same click.
|
|
39
|
-
* - Hover on a trigger opens after `hoverOpenMs`; with a menu already open,
|
|
40
|
-
* hovering another trigger switches to it at once. Leaving the trigger and the
|
|
41
|
-
* panel closes after `hoverCloseMs`; entering the panel or any trigger
|
|
42
|
-
* cancels that close, so the pointer can cross the gap between them.
|
|
43
|
-
* - Escape closes and returns focus to the trigger. A pointer-down outside
|
|
44
|
-
* every trigger and panel closes. A `pathname` change closes.
|
|
45
|
-
* - No arrow-key roving: these are plain disclosures, Tab moves in DOM order.
|
|
46
|
-
*/
|
|
47
|
-
export declare function useNavMenus({ pathname, hoverOpenMs, hoverCloseMs, }: UseNavMenusOptions): UseNavMenusResult;
|
|
48
|
-
//# sourceMappingURL=use-nav-menus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-nav-menus.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/use-nav-menus.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,UAAU,IAAI,eAAe,EAClC,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,mBAAmB,CAAC;IACrD,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,iBAAiB,CAAC;CAClD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,WAAiB,EACjB,YAAkB,GACnB,EAAE,kBAAkB,GAAG,iBAAiB,CAsIxC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type VisitorOs } from '../../utils/visitor-os';
|
|
2
|
-
export type VisitorOsState = {
|
|
3
|
-
known: false;
|
|
4
|
-
os: null;
|
|
5
|
-
} | {
|
|
6
|
-
known: true;
|
|
7
|
-
os: VisitorOs | null;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* The visitor's system in the browser, through the one detection rule
|
|
11
|
-
* (`utils/visitor-os`). `known` is false on the server and while React
|
|
12
|
-
* hydrates: the server cannot see the browser, and a guess would mismatch.
|
|
13
|
-
*/
|
|
14
|
-
export declare function useVisitorOs(): VisitorOsState;
|
|
15
|
-
//# sourceMappingURL=use-visitor-os.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-visitor-os.d.ts","sourceRoot":"","sources":["../../../src/hooks/ui/use-visitor-os.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,CAAC;AAoBhG;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAE7C"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The URL's hash without its `#`, or `''`: the READ side of same-page anchor
|
|
3
|
-
* navigation (`navigateSamePageHash` writes it, `useScrollToHash` scrolls to
|
|
4
|
-
* it). For a component whose state follows the anchor: a tab group that opens
|
|
5
|
-
* the tab a link names. Empty on the server and during hydration (the server
|
|
6
|
-
* never sees a hash), then the real one.
|
|
7
|
-
*/
|
|
8
|
-
export declare function useLocationHash(): string;
|
|
9
|
-
//# sourceMappingURL=use-location-hash.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-location-hash.d.ts","sourceRoot":"","sources":["../../src/hooks/use-location-hash.ts"],"names":[],"mappings":"AAwBA;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|