@brandlab-digital/site-next 3.8.0 → 3.10.0

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 (167) hide show
  1. package/README.md +33 -0
  2. package/dist/contact/attachments-client.d.ts +3 -0
  3. package/dist/contact/attachments-client.d.ts.map +1 -1
  4. package/dist/contact/attachments-client.js +31 -8
  5. package/dist/contact/attachments-client.js.map +1 -1
  6. package/dist/contact/client-entry.d.ts +1 -1
  7. package/dist/contact/client-entry.d.ts.map +1 -1
  8. package/dist/contact/client-entry.js.map +1 -1
  9. package/dist/contact/contract.d.ts.map +1 -1
  10. package/dist/contact/contract.js +2 -2
  11. package/dist/contact/contract.js.map +1 -1
  12. package/dist/contact/email.d.ts.map +1 -1
  13. package/dist/contact/email.js +9 -0
  14. package/dist/contact/email.js.map +1 -1
  15. package/dist/contact/form-client.d.ts +4 -2
  16. package/dist/contact/form-client.d.ts.map +1 -1
  17. package/dist/contact/form-client.js +49 -13
  18. package/dist/contact/form-client.js.map +1 -1
  19. package/dist/contact/rate-limit.d.ts +59 -0
  20. package/dist/contact/rate-limit.d.ts.map +1 -0
  21. package/dist/contact/rate-limit.js +109 -0
  22. package/dist/contact/rate-limit.js.map +1 -0
  23. package/dist/contact/route-handler.d.ts +6 -0
  24. package/dist/contact/route-handler.d.ts.map +1 -1
  25. package/dist/contact/route-handler.js +4 -0
  26. package/dist/contact/route-handler.js.map +1 -1
  27. package/dist/contact/server-entry.d.ts +1 -1
  28. package/dist/contact/server-entry.d.ts.map +1 -1
  29. package/dist/contact/server-entry.js +1 -1
  30. package/dist/contact/server-entry.js.map +1 -1
  31. package/dist/contact/server.d.ts +9 -0
  32. package/dist/contact/server.d.ts.map +1 -1
  33. package/dist/contact/server.js +71 -7
  34. package/dist/contact/server.js.map +1 -1
  35. package/dist/contact/shared.d.ts +11 -0
  36. package/dist/contact/shared.d.ts.map +1 -1
  37. package/dist/contact/shared.js +11 -0
  38. package/dist/contact/shared.js.map +1 -1
  39. package/dist/contact/testing.d.ts +5 -0
  40. package/dist/contact/testing.d.ts.map +1 -1
  41. package/dist/contact/testing.js +1 -0
  42. package/dist/contact/testing.js.map +1 -1
  43. package/dist/instrumentation-client.d.ts +23 -4
  44. package/dist/instrumentation-client.d.ts.map +1 -1
  45. package/dist/instrumentation-client.js +65 -3
  46. package/dist/instrumentation-client.js.map +1 -1
  47. package/dist/lead-reporting.d.ts +6 -0
  48. package/dist/lead-reporting.d.ts.map +1 -1
  49. package/dist/lead-reporting.js +13 -1
  50. package/dist/lead-reporting.js.map +1 -1
  51. package/dist/navigation/constants.d.ts +25 -0
  52. package/dist/navigation/constants.d.ts.map +1 -0
  53. package/dist/navigation/constants.js +30 -0
  54. package/dist/navigation/constants.js.map +1 -0
  55. package/dist/navigation/index.d.ts +11 -0
  56. package/dist/navigation/index.d.ts.map +1 -0
  57. package/dist/navigation/index.js +11 -0
  58. package/dist/navigation/index.js.map +1 -0
  59. package/dist/navigation/use-back-to-top.d.ts +5 -0
  60. package/dist/navigation/use-back-to-top.d.ts.map +1 -0
  61. package/dist/navigation/use-back-to-top.js +32 -0
  62. package/dist/navigation/use-back-to-top.js.map +1 -0
  63. package/dist/navigation/use-header-metrics.d.ts +17 -0
  64. package/dist/navigation/use-header-metrics.d.ts.map +1 -0
  65. package/dist/navigation/use-header-metrics.js +52 -0
  66. package/dist/navigation/use-header-metrics.js.map +1 -0
  67. package/dist/navigation/use-navigation-menu.d.ts +39 -0
  68. package/dist/navigation/use-navigation-menu.d.ts.map +1 -0
  69. package/dist/navigation/use-navigation-menu.js +206 -0
  70. package/dist/navigation/use-navigation-menu.js.map +1 -0
  71. package/dist/navigation/use-sticky-call-bar.d.ts +15 -0
  72. package/dist/navigation/use-sticky-call-bar.d.ts.map +1 -0
  73. package/dist/navigation/use-sticky-call-bar.js +110 -0
  74. package/dist/navigation/use-sticky-call-bar.js.map +1 -0
  75. package/dist/ui-kit/brandlab-skin.d.ts +22 -0
  76. package/dist/ui-kit/brandlab-skin.d.ts.map +1 -1
  77. package/dist/ui-kit/brandlab-skin.js.map +1 -1
  78. package/dist/ui-kit/form/copy.d.ts +3 -0
  79. package/dist/ui-kit/form/copy.d.ts.map +1 -0
  80. package/dist/ui-kit/form/copy.js +5 -0
  81. package/dist/ui-kit/form/copy.js.map +1 -0
  82. package/dist/ui-kit/form/dialog.d.ts +24 -0
  83. package/dist/ui-kit/form/dialog.d.ts.map +1 -0
  84. package/dist/ui-kit/form/dialog.js +17 -0
  85. package/dist/ui-kit/form/dialog.js.map +1 -0
  86. package/dist/ui-kit/form/field.d.ts +30 -0
  87. package/dist/ui-kit/form/field.d.ts.map +1 -0
  88. package/dist/ui-kit/form/field.js +11 -0
  89. package/dist/ui-kit/form/field.js.map +1 -0
  90. package/dist/ui-kit/form/index.d.ts +7 -0
  91. package/dist/ui-kit/form/index.d.ts.map +1 -0
  92. package/dist/ui-kit/form/index.js +7 -0
  93. package/dist/ui-kit/form/index.js.map +1 -0
  94. package/dist/ui-kit/form/photo-upload.d.ts +37 -0
  95. package/dist/ui-kit/form/photo-upload.d.ts.map +1 -0
  96. package/dist/ui-kit/form/photo-upload.js +19 -0
  97. package/dist/ui-kit/form/photo-upload.js.map +1 -0
  98. package/dist/ui-kit/form/quote-dialog.d.ts +15 -0
  99. package/dist/ui-kit/form/quote-dialog.d.ts.map +1 -0
  100. package/dist/ui-kit/form/quote-dialog.js +68 -0
  101. package/dist/ui-kit/form/quote-dialog.js.map +1 -0
  102. package/dist/ui-kit/form/quote-form.d.ts +165 -0
  103. package/dist/ui-kit/form/quote-form.d.ts.map +1 -0
  104. package/dist/ui-kit/form/quote-form.js +235 -0
  105. package/dist/ui-kit/form/quote-form.js.map +1 -0
  106. package/dist/ui-kit/form/thank-you.d.ts +37 -0
  107. package/dist/ui-kit/form/thank-you.d.ts.map +1 -0
  108. package/dist/ui-kit/form/thank-you.js +36 -0
  109. package/dist/ui-kit/form/thank-you.js.map +1 -0
  110. package/dist/ui-kit/shell/back-to-top-client.d.ts +9 -0
  111. package/dist/ui-kit/shell/back-to-top-client.d.ts.map +1 -0
  112. package/dist/ui-kit/shell/back-to-top-client.js +8 -0
  113. package/dist/ui-kit/shell/back-to-top-client.js.map +1 -0
  114. package/dist/ui-kit/shell/back-to-top.d.ts +13 -0
  115. package/dist/ui-kit/shell/back-to-top.d.ts.map +1 -0
  116. package/dist/ui-kit/shell/back-to-top.js +14 -0
  117. package/dist/ui-kit/shell/back-to-top.js.map +1 -0
  118. package/dist/ui-kit/shell/call-bar-client.d.ts +7 -0
  119. package/dist/ui-kit/shell/call-bar-client.d.ts.map +1 -0
  120. package/dist/ui-kit/shell/call-bar-client.js +13 -0
  121. package/dist/ui-kit/shell/call-bar-client.js.map +1 -0
  122. package/dist/ui-kit/shell/current-link.d.ts +15 -0
  123. package/dist/ui-kit/shell/current-link.d.ts.map +1 -0
  124. package/dist/ui-kit/shell/current-link.js +34 -0
  125. package/dist/ui-kit/shell/current-link.js.map +1 -0
  126. package/dist/ui-kit/shell/drawer-client.d.ts +22 -0
  127. package/dist/ui-kit/shell/drawer-client.d.ts.map +1 -0
  128. package/dist/ui-kit/shell/drawer-client.js +70 -0
  129. package/dist/ui-kit/shell/drawer-client.js.map +1 -0
  130. package/dist/ui-kit/shell/header-client.d.ts +44 -0
  131. package/dist/ui-kit/shell/header-client.d.ts.map +1 -0
  132. package/dist/ui-kit/shell/header-client.js +59 -0
  133. package/dist/ui-kit/shell/header-client.js.map +1 -0
  134. package/dist/ui-kit/shell/index.d.ts +6 -0
  135. package/dist/ui-kit/shell/index.d.ts.map +1 -0
  136. package/dist/ui-kit/shell/index.js +6 -0
  137. package/dist/ui-kit/shell/index.js.map +1 -0
  138. package/dist/ui-kit/shell/mobile-call-bar.d.ts +16 -0
  139. package/dist/ui-kit/shell/mobile-call-bar.d.ts.map +1 -0
  140. package/dist/ui-kit/shell/mobile-call-bar.js +15 -0
  141. package/dist/ui-kit/shell/mobile-call-bar.js.map +1 -0
  142. package/dist/ui-kit/shell/mobile-drawer.d.ts +37 -0
  143. package/dist/ui-kit/shell/mobile-drawer.d.ts.map +1 -0
  144. package/dist/ui-kit/shell/mobile-drawer.js +25 -0
  145. package/dist/ui-kit/shell/mobile-drawer.js.map +1 -0
  146. package/dist/ui-kit/shell/shell-context.d.ts +3 -0
  147. package/dist/ui-kit/shell/shell-context.d.ts.map +1 -0
  148. package/dist/ui-kit/shell/shell-context.js +5 -0
  149. package/dist/ui-kit/shell/shell-context.js.map +1 -0
  150. package/dist/ui-kit/shell/site-header.d.ts +52 -0
  151. package/dist/ui-kit/shell/site-header.d.ts.map +1 -0
  152. package/dist/ui-kit/shell/site-header.js +36 -0
  153. package/dist/ui-kit/shell/site-header.js.map +1 -0
  154. package/dist/ui-kit/shell/social-links.d.ts +8 -0
  155. package/dist/ui-kit/shell/social-links.d.ts.map +1 -0
  156. package/dist/ui-kit/shell/social-links.js +9 -0
  157. package/dist/ui-kit/shell/social-links.js.map +1 -0
  158. package/dist/ui-kit/shell/utility-bar.d.ts +30 -0
  159. package/dist/ui-kit/shell/utility-bar.d.ts.map +1 -0
  160. package/dist/ui-kit/shell/utility-bar.js +15 -0
  161. package/dist/ui-kit/shell/utility-bar.js.map +1 -0
  162. package/dist/ui-kit/structure.css +791 -0
  163. package/dist/ui.d.ts +10 -1
  164. package/dist/ui.d.ts.map +1 -1
  165. package/dist/ui.js +3 -3
  166. package/dist/ui.js.map +1 -1
  167. package/package.json +14 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-header.js","sourceRoot":"","sources":["../../../src/ui-kit/shell/site-header.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * F2: the header shell (server component). The same structure on every site: the skip link, the optional utility\n * bar, then a sticky, solid `<header>` holding the logo, the menu, the phone and the quote button. Layout follows the\n * header's own width (container queries): from 1280 px the full menu; from 1024 to 1279 px a compact band with the\n * phone and its number, the quote button and a Menu button; below 1024 px the logo, a 44 px call button and a 44 px\n * Menu button. Every menu, hub and panel link is an `<a href>` in the server HTML (F3); client leaves only change\n * state.\n */\nimport type { BrandlabNavigation, BrandlabNavLinkItem, BrandlabNavMenuItem } from '@brandlab-digital/site-core/navigation'\nimport Image from 'next/image'\nimport Link from 'next/link'\nimport type { ReactNode } from 'react'\nimport { SkipLink } from '../../ui.js'\nimport { MAIN_CONTENT_ID } from '../../navigation/constants.js'\nimport { Icon } from '../icons.js'\nimport { PhoneLink } from '../primitives/links.js'\nimport { QuoteButton } from '../primitives/quote-button.js'\nimport { cx, slot, type SkinEntry, type SlotClasses } from '../skin.js'\nimport type { UiPhone, UiSocial } from '../types.js'\nimport { CurrentLink } from './current-link.js'\nimport { HeaderRoot, NavController, NavItem, NavPanel, NavTrigger } from './header-client.js'\nimport { MobileDrawer, type MobileDrawerSkin, type ShellQuote } from './mobile-drawer.js'\n\nexport type SiteHeaderSlot =\n | 'skip'\n | 'root'\n | 'bar'\n | 'inner'\n | 'logo'\n | 'nav'\n | 'list'\n | 'item'\n | 'itemRow'\n | 'link'\n | 'trigger'\n | 'panel'\n | 'panelBody'\n | 'panelList'\n | 'panelGroup'\n | 'panelHeading'\n | 'panelLink'\n | 'panelLabel'\n | 'panelText'\n | 'featured'\n | 'featuredMedia'\n | 'featuredLabel'\n | 'featuredText'\n | 'actions'\n | 'phone'\n | 'phoneIcon'\n | 'phoneLabel'\n | 'phoneNumber'\n | 'quote'\n | 'quoteLabel'\n | 'quoteIcon'\n | 'menuButton'\n | 'menuLabel'\nexport const SITE_HEADER_VARIANTS = ['standard', 'call-first'] as const\n/**\n * `call-first` (recorded exceptions, v1 §9.10): the phone is the primary action (a button with its number at every\n * width); the quote button still follows it, as on `standard`.\n */\nexport type SiteHeaderVariant = (typeof SITE_HEADER_VARIANTS)[number]\nexport interface SiteHeaderLayout {\n /** Where the menu sits between the logo and the actions. */\n readonly navAlign?: 'center' | 'end'\n /** Compact the header (`data-compact=\"true\"`) once the page has scrolled 80 px. It never hides. */\n readonly compactAfterScroll?: boolean\n}\nexport type SiteHeaderSkin = SkinEntry<SiteHeaderSlot, SiteHeaderVariant, SiteHeaderLayout>\n\nexport interface SiteHeaderProps extends SiteHeaderSkin {\n readonly navigation: BrandlabNavigation\n /** The logo link's accessible name. */\n readonly brandName: string\n readonly homeHref: string\n readonly logo: ReactNode\n /** From the derived business facts, never typed by hand. */\n readonly phone: UiPhone\n /** The small line above the number, for example \"Call us\". Also leads the drawer's Call button. */\n readonly phoneLabel?: string | undefined\n readonly quote: ShellQuote\n readonly socials?: readonly UiSocial[] | undefined\n /** The site's skip-link text, for example \"Skip to main content\". It targets `#main`. */\n readonly skipLabel: string\n /** The optional utility bar (`<UtilityBar>`), placed between the skip link and the header. */\n readonly utility?: ReactNode\n /** The site's `mobileDrawer` skin entry. */\n readonly drawer?: MobileDrawerSkin | undefined\n /** An optional logo for the drawer's top bar. */\n readonly drawerLogo?: ReactNode\n /** Prefix for element ids; one per header on the page. */\n readonly idPrefix?: string | undefined\n}\n\nexport function SiteHeader({\n navigation,\n brandName,\n homeHref,\n logo,\n phone,\n phoneLabel,\n quote,\n socials,\n skipLabel,\n utility,\n drawer,\n drawerLogo,\n idPrefix = 'bl-header',\n variant = 'standard',\n layout,\n classes,\n}: SiteHeaderProps) {\n const callFirst = variant === 'call-first'\n return (\n <>\n <SkipLink targetId={MAIN_CONTENT_ID} data-bl=\"skip\" className={classes?.skip}>\n {skipLabel}\n </SkipLink>\n {utility}\n <HeaderRoot\n variant={variant}\n navAlign={layout?.navAlign ?? 'center'}\n compactAfterScroll={layout?.compactAfterScroll ?? false}\n className={classes?.root}\n >\n <div {...slot(classes, 'bar')}>\n <div {...slot(classes, 'inner')}>\n <Link href={homeHref} aria-label={brandName} {...slot(classes, 'logo')}>\n {logo}\n </Link>\n <NavController label=\"Main\" className={classes?.nav}>\n <ul {...slot(classes, 'list')}>\n {navigation.items.map((item) =>\n item.kind === 'link' ? (\n <LinkItem key={item.id} item={item} classes={classes} />\n ) : (\n <MenuItem key={item.id} item={item} panelId={`${idPrefix}-panel-${item.id}`} classes={classes} />\n ),\n )}\n </ul>\n </NavController>\n <div {...slot(classes, 'actions')}>\n {/* The phone sits beside the quote button with its icon on the left; its name is its visible text. */}\n <PhoneLink\n phone={phone}\n placement=\"header\"\n label={phoneLabel}\n showIcon\n variant={callFirst ? 'button' : 'text'}\n classes={{ root: classes?.phone, icon: classes?.phoneIcon, label: classes?.phoneLabel, number: classes?.phoneNumber }}\n />\n <QuoteButton\n label={quote.label}\n href={quote.href}\n placement=\"header\"\n ctaId=\"quote-header\"\n classes={{ root: classes?.quote, label: classes?.quoteLabel, icon: classes?.quoteIcon }}\n />\n <MobileDrawer\n {...drawer}\n classes={{\n ...drawer?.classes,\n menuButton: cx(drawer?.classes?.menuButton, classes?.menuButton),\n menuLabel: cx(drawer?.classes?.menuLabel, classes?.menuLabel),\n }}\n navigation={navigation}\n phone={phone}\n phoneLabel={phoneLabel}\n quote={quote}\n socials={socials}\n logo={drawerLogo}\n idPrefix={idPrefix}\n />\n </div>\n </div>\n </div>\n </HeaderRoot>\n </>\n )\n}\n\ntype Classes = SlotClasses<SiteHeaderSlot> | undefined\n\nfunction LinkItem({ item, classes }: { item: BrandlabNavLinkItem; classes: Classes }) {\n return (\n <NavItem paths={[item.href, ...(item.activePaths ?? [])]} className={classes?.item}>\n <CurrentLink href={item.href} slot=\"link\" className={classes?.link}>\n {item.label}\n </CurrentLink>\n </NavItem>\n )\n}\n\nfunction MenuItem({ item, panelId, classes }: { item: BrandlabNavMenuItem; panelId: string; classes: Classes }) {\n const groups = item.panel === 'columns' && item.groups && item.groups.length > 0 ? item.groups : undefined\n // A columns panel never drops a link: links outside every group follow in a last group without a heading.\n const grouped = new Set(groups?.flatMap((group) => group.links.map((link) => link.href)))\n const ungrouped = groups ? item.links.filter((link) => !grouped.has(link.href)) : []\n const columnCount = groups ? groups.length + (ungrouped.length > 0 ? 1 : 0) : 0\n return (\n <NavItem menuId={item.id} paths={[item.href, ...(item.activePaths ?? [])]} className={classes?.item}>\n <span {...slot(classes, 'itemRow')}>\n <CurrentLink href={item.href} slot=\"link\" className={classes?.link}>\n {item.label}\n </CurrentLink>\n <NavTrigger menuId={item.id} panelId={panelId} label={item.label} className={classes?.trigger}>\n <Icon name=\"chevron\" />\n </NavTrigger>\n </span>\n <NavPanel\n menuId={item.id}\n panelId={panelId}\n variant={item.panel}\n columns={groups ? Math.min(3, Math.max(2, columnCount)) : undefined}\n className={classes?.panel}\n >\n <div {...slot(classes, 'panelBody')}>\n {item.panel === 'featured' && item.featured ? (\n <CurrentLink href={item.featured.href} slot=\"featured\" prefetch={false} className={classes?.featured}>\n <span {...slot(classes, 'featuredMedia')}>\n <Image\n src={item.featured.image.src}\n alt={item.featured.image.alt}\n width={item.featured.image.width}\n height={item.featured.image.height}\n sizes=\"240px\"\n />\n </span>\n <span {...slot(classes, 'featuredLabel')}>{item.featured.label}</span>\n <span {...slot(classes, 'featuredText')}>{item.featured.description}</span>\n </CurrentLink>\n ) : null}\n {/* Every panel repeats its hub link first. */}\n <ul {...slot(classes, 'panelList')}>\n <li>\n <CurrentLink href={item.href} slot=\"panelLink\" hub prefetch={false} className={classes?.panelLink}>\n <span {...slot(classes, 'panelLabel')}>{item.hubLabel}</span>\n <Icon name=\"arrow\" />\n </CurrentLink>\n </li>\n {groups ? null : item.links.map((link) => <PanelLink key={link.href} link={link} classes={classes} />)}\n </ul>\n {groups?.map((group) => (\n <div key={group.heading} {...slot(classes, 'panelGroup')}>\n <p {...slot(classes, 'panelHeading')}>{group.heading}</p>\n <ul {...slot(classes, 'panelList')}>\n {group.links.map((link) => (\n <PanelLink key={link.href} link={link} classes={classes} />\n ))}\n </ul>\n </div>\n ))}\n {ungrouped.length > 0 ? (\n <div {...slot(classes, 'panelGroup')}>\n <ul {...slot(classes, 'panelList')}>\n {ungrouped.map((link) => (\n <PanelLink key={link.href} link={link} classes={classes} />\n ))}\n </ul>\n </div>\n ) : null}\n </div>\n </NavPanel>\n </NavItem>\n )\n}\n\nfunction PanelLink({ link, classes }: { link: BrandlabNavMenuItem['links'][number]; classes: Classes }) {\n return (\n <li>\n <CurrentLink href={link.href} slot=\"panelLink\" prefetch={false} className={classes?.panelLink}>\n <span {...slot(classes, 'panelLabel')}>{link.label}</span>\n {link.description ? <span {...slot(classes, 'panelText')}>{link.description}</span> : null}\n </CurrentLink>\n </li>\n )\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { UiSocial } from '../types.js';
2
+ export declare function SocialLinks({ socials, slotName, className, linkClassName, }: {
3
+ readonly socials: readonly UiSocial[];
4
+ readonly slotName: string;
5
+ readonly className?: string | undefined;
6
+ readonly linkClassName?: string | undefined;
7
+ }): import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=social-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social-links.d.ts","sourceRoot":"","sources":["../../../src/ui-kit/shell/social-links.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,GACd,EAAE;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5C,kDAqBA"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Social and Business Profile icon links, shared by the drawer and the utility bar. Each link is named by its data. */
3
+ import { SocialIcon } from '../icons.js';
4
+ export function SocialLinks({ socials, slotName, className, linkClassName, }) {
5
+ if (socials.length === 0)
6
+ return null;
7
+ return (_jsx("ul", { "data-slot": slotName, className: className, children: socials.map((social) => (_jsx("li", { children: _jsx("a", { href: social.href, target: "_blank", rel: "noopener noreferrer", "aria-label": social.label, "data-slot": "socialLink", "data-social": social.kind, className: linkClassName, children: _jsx(SocialIcon, { kind: social.kind }) }) }, social.href))) }));
8
+ }
9
+ //# sourceMappingURL=social-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social-links.js","sourceRoot":"","sources":["../../../src/ui-kit/shell/social-links.tsx"],"names":[],"mappings":";AAAA,wHAAwH;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,GAMd;IACC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,CACL,0BAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,YAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,uBACE,YACE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,gBACb,MAAM,CAAC,KAAK,eACd,YAAY,iBACT,MAAM,CAAC,IAAI,EACxB,SAAS,EAAE,aAAa,YAExB,KAAC,UAAU,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAI,GAC/B,IAXG,MAAM,CAAC,IAAI,CAYf,CACN,CAAC,GACC,CACN,CAAA;AACH,CAAC","sourcesContent":["/** Social and Business Profile icon links, shared by the drawer and the utility bar. Each link is named by its data. */\nimport { SocialIcon } from '../icons.js'\nimport type { UiSocial } from '../types.js'\n\nexport function SocialLinks({\n socials,\n slotName,\n className,\n linkClassName,\n}: {\n readonly socials: readonly UiSocial[]\n readonly slotName: string\n readonly className?: string | undefined\n readonly linkClassName?: string | undefined\n}) {\n if (socials.length === 0) return null\n return (\n <ul data-slot={slotName} className={className}>\n {socials.map((social) => (\n <li key={social.href}>\n <a\n href={social.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={social.label}\n data-slot=\"socialLink\"\n data-social={social.kind}\n className={linkClassName}\n >\n <SocialIcon kind={social.kind} />\n </a>\n </li>\n ))}\n </ul>\n )\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { type SkinEntry } from '../skin.js';
2
+ import type { UiSocial } from '../types.js';
3
+ export type UtilityBarSlot = 'root' | 'inner' | 'left' | 'right' | 'item' | 'rating' | 'licence' | 'social' | 'socialLink';
4
+ export interface UtilityBarLayout {
5
+ /** Socials on the left and the rating and licences on the right. */
6
+ readonly reverse?: boolean;
7
+ }
8
+ export type UtilityBarSkin = SkinEntry<UtilityBarSlot, never, UtilityBarLayout>;
9
+ /** The live rating, all from the Business Profile feed: never typed by hand (T4). */
10
+ export interface UtilityRating {
11
+ /** The feed's average rating, for the stars. */
12
+ readonly rating: number;
13
+ /** The Google link from the feed. */
14
+ readonly href: string;
15
+ /** The words beside the stars, built from the same feed values, for example "4.9 from 212 Google reviews". */
16
+ readonly text: string;
17
+ }
18
+ /** A licence line from the business facts, with the register link where there is one. */
19
+ export interface UtilityLicence {
20
+ readonly text: string;
21
+ readonly href?: string | undefined;
22
+ }
23
+ export interface UtilityBarProps extends UtilityBarSkin {
24
+ /** Null or absent when the feed has no rating: the chip is left out. */
25
+ readonly rating?: UtilityRating | null | undefined;
26
+ readonly licences?: readonly UtilityLicence[] | undefined;
27
+ readonly socials?: readonly UiSocial[] | undefined;
28
+ }
29
+ export declare function UtilityBar({ rating, licences, socials, layout, classes }: UtilityBarProps): import("react/jsx-runtime").JSX.Element | null;
30
+ //# sourceMappingURL=utility-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-bar.d.ts","sourceRoot":"","sources":["../../../src/ui-kit/shell/utility-bar.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAA;AAC1H,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B;AACD,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAA;AAE/E,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8GAA8G;IAC9G,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,CAAA;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,CAAA;CACnD;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAa,EAAE,OAAY,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,kDAqCnG"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * F5: the optional strip above the header (server component). The live rating chip and licence lines on one side,
4
+ * social and Business Profile links on the other. Never the phone, "based in", "Open 24/7" or a typed rating. It
5
+ * scrolls away with the page and is hidden below 768 px. Pass it to `SiteHeader` as `utility`.
6
+ */
7
+ import { RatingStars } from '../primitives/layout.js';
8
+ import { slot } from '../skin.js';
9
+ import { SocialLinks } from './social-links.js';
10
+ export function UtilityBar({ rating, licences = [], socials = [], layout, classes }) {
11
+ if (!rating && licences.length === 0 && socials.length === 0)
12
+ return null;
13
+ return (_jsx("div", { "data-bl": "utility", "data-reverse": layout?.reverse ? 'true' : undefined, className: classes?.root, children: _jsxs("div", { ...slot(classes, 'inner'), children: [rating || licences.length > 0 ? (_jsxs("ul", { ...slot(classes, 'left'), children: [rating ? (_jsx("li", { ...slot(classes, 'item'), children: _jsxs("a", { href: rating.href, target: "_blank", rel: "noopener noreferrer", "data-bl-source": "feed", ...slot(classes, 'rating'), children: [_jsx(RatingStars, { rating: rating.rating }), _jsx("span", { children: rating.text })] }) })) : null, licences.map((licence) => (_jsx("li", { ...slot(classes, 'item'), children: licence.href ? (_jsx("a", { href: licence.href, target: "_blank", rel: "noopener noreferrer", ...slot(classes, 'licence'), children: licence.text })) : (_jsx("span", { ...slot(classes, 'licence'), children: licence.text })) }, licence.text)))] })) : null, socials.length > 0 ? (_jsx("div", { ...slot(classes, 'right'), children: _jsx(SocialLinks, { socials: socials, slotName: "social", className: classes?.social, linkClassName: classes?.socialLink }) })) : null] }) }));
14
+ }
15
+ //# sourceMappingURL=utility-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-bar.js","sourceRoot":"","sources":["../../../src/ui-kit/shell/utility-bar.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,IAAI,EAAkB,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAgC/C,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAmB;IAClG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACzE,OAAO,CACL,yBAAa,SAAS,kBAAe,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,YACjG,kBAAS,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,aAC5B,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/B,iBAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,aAC1B,MAAM,CAAC,CAAC,CAAC,CACR,gBAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,YAE3B,aAAG,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,oBAAgB,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,aAC/G,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAI,EACtC,yBAAO,MAAM,CAAC,IAAI,GAAQ,IACxB,GACD,CACN,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,gBAA2B,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACd,YAAG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,YAC1F,OAAO,CAAC,IAAI,GACX,CACL,CAAC,CAAC,CAAC,CACF,kBAAU,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,YAAG,OAAO,CAAC,IAAI,GAAQ,CAC1D,IAPM,OAAO,CAAC,IAAI,CAQhB,CACN,CAAC,IACC,CACN,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpB,iBAAS,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,YAC7B,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,QAAQ,EAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,GAAI,GAC/G,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACF,CACP,CAAA;AACH,CAAC","sourcesContent":["/**\n * F5: the optional strip above the header (server component). The live rating chip and licence lines on one side,\n * social and Business Profile links on the other. Never the phone, \"based in\", \"Open 24/7\" or a typed rating. It\n * scrolls away with the page and is hidden below 768 px. Pass it to `SiteHeader` as `utility`.\n */\nimport { RatingStars } from '../primitives/layout.js'\nimport { slot, type SkinEntry } from '../skin.js'\nimport type { UiSocial } from '../types.js'\nimport { SocialLinks } from './social-links.js'\n\nexport type UtilityBarSlot = 'root' | 'inner' | 'left' | 'right' | 'item' | 'rating' | 'licence' | 'social' | 'socialLink'\nexport interface UtilityBarLayout {\n /** Socials on the left and the rating and licences on the right. */\n readonly reverse?: boolean\n}\nexport type UtilityBarSkin = SkinEntry<UtilityBarSlot, never, UtilityBarLayout>\n\n/** The live rating, all from the Business Profile feed: never typed by hand (T4). */\nexport interface UtilityRating {\n /** The feed's average rating, for the stars. */\n readonly rating: number\n /** The Google link from the feed. */\n readonly href: string\n /** The words beside the stars, built from the same feed values, for example \"4.9 from 212 Google reviews\". */\n readonly text: string\n}\n\n/** A licence line from the business facts, with the register link where there is one. */\nexport interface UtilityLicence {\n readonly text: string\n readonly href?: string | undefined\n}\n\nexport interface UtilityBarProps extends UtilityBarSkin {\n /** Null or absent when the feed has no rating: the chip is left out. */\n readonly rating?: UtilityRating | null | undefined\n readonly licences?: readonly UtilityLicence[] | undefined\n readonly socials?: readonly UiSocial[] | undefined\n}\n\nexport function UtilityBar({ rating, licences = [], socials = [], layout, classes }: UtilityBarProps) {\n if (!rating && licences.length === 0 && socials.length === 0) return null\n return (\n <div data-bl=\"utility\" data-reverse={layout?.reverse ? 'true' : undefined} className={classes?.root}>\n <div {...slot(classes, 'inner')}>\n {rating || licences.length > 0 ? (\n <ul {...slot(classes, 'left')}>\n {rating ? (\n <li {...slot(classes, 'item')}>\n {/* A minimal chip; the shared RatingChip (sections) replaces it at integration. */}\n <a href={rating.href} target=\"_blank\" rel=\"noopener noreferrer\" data-bl-source=\"feed\" {...slot(classes, 'rating')}>\n <RatingStars rating={rating.rating} />\n <span>{rating.text}</span>\n </a>\n </li>\n ) : null}\n {licences.map((licence) => (\n <li key={licence.text} {...slot(classes, 'item')}>\n {licence.href ? (\n <a href={licence.href} target=\"_blank\" rel=\"noopener noreferrer\" {...slot(classes, 'licence')}>\n {licence.text}\n </a>\n ) : (\n <span {...slot(classes, 'licence')}>{licence.text}</span>\n )}\n </li>\n ))}\n </ul>\n ) : null}\n {socials.length > 0 ? (\n <div {...slot(classes, 'right')}>\n <SocialLinks socials={socials} slotName=\"social\" className={classes?.social} linkClassName={classes?.socialLink} />\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"]}