@alfadocs/ui-kit-debug 0.31.8 → 0.32.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.
- package/dist/_chunks/{agenda-card-DtGlQde1.js → agenda-card-CFyWSX7Z.js} +2 -2
- package/dist/_chunks/{agenda-card-DtGlQde1.js.map → agenda-card-CFyWSX7Z.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-CXmlwt2K.js → agenda-tray-By_asPN9.js} +2 -2
- package/dist/_chunks/{agenda-tray-CXmlwt2K.js.map → agenda-tray-By_asPN9.js.map} +1 -1
- package/dist/_chunks/{badge-B9Cr6iEB.js → badge-zsf5i5bH.js} +9 -2
- package/dist/_chunks/badge-zsf5i5bH.js.map +1 -0
- package/dist/_chunks/{benefit-card-B86DH-PE.js → benefit-card-_Sc-MGha.js} +18 -8
- package/dist/_chunks/benefit-card-_Sc-MGha.js.map +1 -0
- package/dist/_chunks/{booking-A4o9xI2n.js → booking-h_kBZM6M.js} +24 -26
- package/dist/_chunks/{booking-A4o9xI2n.js.map → booking-h_kBZM6M.js.map} +1 -1
- package/dist/_chunks/{card-CNri9ssR.js → card-DPmk26CL.js} +2 -2
- package/dist/_chunks/{card-CNri9ssR.js.map → card-DPmk26CL.js.map} +1 -1
- package/dist/_chunks/{contact-card-Dos7Tley.js → contact-card-Cf8Ktyt3.js} +2 -2
- package/dist/_chunks/{contact-card-Dos7Tley.js.map → contact-card-Cf8Ktyt3.js.map} +1 -1
- package/dist/_chunks/{practice-profile-card-CfAMeTxQ.js → contact-profile-card-Ce-LIDU8.js} +128 -125
- package/dist/_chunks/contact-profile-card-Ce-LIDU8.js.map +1 -0
- package/dist/_chunks/{editable-currency-cell-renderer-YvTwkFrD.js → editable-currency-cell-renderer-B9VRSV_S.js} +2 -2
- package/dist/_chunks/{editable-currency-cell-renderer-YvTwkFrD.js.map → editable-currency-cell-renderer-B9VRSV_S.js.map} +1 -1
- package/dist/_chunks/{key-value-pair-CYE7NSpM.js → key-value-pair-CkQIb9EG.js} +42 -32
- package/dist/_chunks/key-value-pair-CkQIb9EG.js.map +1 -0
- package/dist/_chunks/{map-view-WEWqXzof.js → map-view-knHSNLoe.js} +140 -128
- package/dist/_chunks/{map-view-WEWqXzof.js.map → map-view-knHSNLoe.js.map} +1 -1
- package/dist/_chunks/{operator-hero-BsjE-kJF.js → operator-hero-7LiiP7zi.js} +4 -4
- package/dist/_chunks/operator-hero-7LiiP7zi.js.map +1 -0
- package/dist/_chunks/{patient-search-CSDru7QW.js → patient-search-CBq62kmL.js} +2 -2
- package/dist/_chunks/{patient-search-CSDru7QW.js.map → patient-search-CBq62kmL.js.map} +1 -1
- package/dist/_chunks/{practice-results-CIkAdwRm.js → practice-results-Bw5fJTYF.js} +4 -4
- package/dist/_chunks/practice-results-Bw5fJTYF.js.map +1 -0
- package/dist/_chunks/{reviews-panel-Cjys8G8K.js → reviews-panel-B-18RBSn.js} +39 -36
- package/dist/_chunks/reviews-panel-B-18RBSn.js.map +1 -0
- package/dist/_chunks/{timeline-BZC7qGdy.js → timeline-DQa5Tyz4.js} +2 -2
- package/dist/_chunks/{timeline-BZC7qGdy.js.map → timeline-DQa5Tyz4.js.map} +1 -1
- package/dist/_chunks/{workflow-map-DfpjDZHK.js → workflow-map-uSiHbOWQ.js} +4 -4
- package/dist/_chunks/{workflow-map-DfpjDZHK.js.map → workflow-map-uSiHbOWQ.js.map} +1 -1
- package/dist/agent-catalog.json +28 -28
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/benefit-card/benefit-card.d.ts.map +1 -1
- package/dist/components/benefit-card/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/contact-card/index.js +1 -1
- package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts +4 -0
- package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts.map +1 -0
- package/dist/components/{practice-profile-card/practice-profile-card.d.ts → contact-profile-card/contact-profile-card.d.ts} +9 -9
- package/dist/components/contact-profile-card/contact-profile-card.d.ts.map +1 -0
- package/dist/components/contact-profile-card/index.d.ts +4 -0
- package/dist/components/contact-profile-card/index.d.ts.map +1 -0
- package/dist/components/contact-profile-card/index.js +8 -0
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/map-view/map-view.d.ts +1 -1
- package/dist/components/map-view/map-view.d.ts.map +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/operator-hero/operator-hero.d.ts +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.d.ts.map +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +1 -1
- package/dist/i18n/locales/ar.js +2 -2
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +1 -1
- package/dist/i18n/locales/de.js +2 -2
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +1 -1
- package/dist/i18n/locales/el.js +2 -2
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +1 -1
- package/dist/i18n/locales/en.js +2 -2
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +1 -1
- package/dist/i18n/locales/es.js +2 -2
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +1 -1
- package/dist/i18n/locales/fr.js +2 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +1 -1
- package/dist/i18n/locales/hi.js +2 -2
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +1 -1
- package/dist/i18n/locales/it.js +2 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +1 -1
- package/dist/i18n/locales/ja.js +2 -2
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +1 -1
- package/dist/i18n/locales/nl.js +2 -2
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +1 -1
- package/dist/i18n/locales/pl.js +2 -2
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +1 -1
- package/dist/i18n/locales/pt.js +2 -2
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +1 -1
- package/dist/i18n/locales/ro.js +2 -2
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +1 -1
- package/dist/i18n/locales/ru.js +2 -2
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +1 -1
- package/dist/i18n/locales/sq.js +2 -2
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +1 -1
- package/dist/i18n/locales/sv.js +2 -2
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +1 -1
- package/dist/i18n/locales/tr.js +2 -2
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +1 -1
- package/dist/i18n/locales/zh.js +2 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +112 -112
- package/dist/locales/ar.json +1 -1
- package/dist/locales/de.json +1 -1
- package/dist/locales/el.json +1 -1
- package/dist/locales/en.json +1 -1
- package/dist/locales/es.json +1 -1
- package/dist/locales/fr.json +1 -1
- package/dist/locales/hi.json +1 -1
- package/dist/locales/it.json +1 -1
- package/dist/locales/ja.json +1 -1
- package/dist/locales/nl.json +1 -1
- package/dist/locales/pl.json +1 -1
- package/dist/locales/pt.json +1 -1
- package/dist/locales/ro.json +1 -1
- package/dist/locales/ru.json +1 -1
- package/dist/locales/sq.json +1 -1
- package/dist/locales/sv.json +1 -1
- package/dist/locales/tr.json +1 -1
- package/dist/locales/zh.json +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +4 -4
- package/dist/_chunks/badge-B9Cr6iEB.js.map +0 -1
- package/dist/_chunks/benefit-card-B86DH-PE.js.map +0 -1
- package/dist/_chunks/key-value-pair-CYE7NSpM.js.map +0 -1
- package/dist/_chunks/operator-hero-BsjE-kJF.js.map +0 -1
- package/dist/_chunks/practice-profile-card-CfAMeTxQ.js.map +0 -1
- package/dist/_chunks/practice-results-CIkAdwRm.js.map +0 -1
- package/dist/_chunks/reviews-panel-Cjys8G8K.js.map +0 -1
- package/dist/components/practice-profile-card/index.d.ts +0 -4
- package/dist/components/practice-profile-card/index.d.ts.map +0 -1
- package/dist/components/practice-profile-card/index.js +0 -8
- package/dist/components/practice-profile-card/practice-profile-card.agent.d.ts +0 -4
- package/dist/components/practice-profile-card/practice-profile-card.agent.d.ts.map +0 -1
- package/dist/components/practice-profile-card/practice-profile-card.d.ts.map +0 -1
- /package/dist/components/{practice-profile-card → contact-profile-card}/index.js.map +0 -0
|
@@ -147,7 +147,7 @@ const h = t(
|
|
|
147
147
|
"div",
|
|
148
148
|
{
|
|
149
149
|
ref: r,
|
|
150
|
-
className: ["ds:p-[var(--spacing-md)] ds:flex-1
|
|
150
|
+
className: ["ds:p-[var(--spacing-md)] ds:flex-1", a].filter(Boolean).join(" "),
|
|
151
151
|
...e
|
|
152
152
|
}
|
|
153
153
|
)
|
|
@@ -176,4 +176,4 @@ const O = Object.assign(m, {
|
|
|
176
176
|
export {
|
|
177
177
|
O as C
|
|
178
178
|
};
|
|
179
|
-
//# sourceMappingURL=card-
|
|
179
|
+
//# sourceMappingURL=card-DPmk26CL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-CNri9ssR.js","sources":["../../src/components/card/card.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface CardContextValue {\n headerId: string;\n interactive: boolean;\n registerHeader: () => void;\n}\n\nconst CardContext = createContext<CardContextValue>({\n headerId: '',\n interactive: false,\n registerHeader: () => {},\n});\n\n/* ------------------------------------------------------------------ */\n/* Variants */\n/* ------------------------------------------------------------------ */\n\nconst cardVariants = cva(\n [\n 'ds:rounded-[var(--radius-lg)] ds:text-[var(--card-foreground)]',\n 'ds:overflow-hidden',\n 'ds:flex ds:flex-col',\n ].join(' '),\n {\n variants: {\n // 0.31.5: accessible-theme bumps the border from 1px → 2px so\n // the boundary reads at the strict-AA / AAA contrast bar — at\n // 1px the `--card-border` (#00000080 light / #ffffff52 dark)\n // clears 3:1 luminance but reads as a hairline on tall cards.\n // Light + dark keep 1px. Forced-colours users get `border-2 +\n // CanvasText` as a parallel safety net.\n variant: {\n default:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\n outlined:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--border)] ds:[.theme-accessible_&]:border-2',\n elevated:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--card-border)] ds:shadow-[var(--shadow-card)] ds:[.theme-accessible_&]:border-2',\n },\n interactive: {\n true: [\n 'ds:cursor-pointer',\n 'ds:transition-shadow ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:shadow-[var(--shadow-hover)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:min-h-[var(--min-target-size)]',\n ].join(' '),\n false: '',\n },\n // `stretch: true` fills the parent layout cell (grid / flex) so a\n // row of Cards ends up with matching heights. Combined with the\n // `flex-1` on `Card.Body`, the footer naturally pins to the bottom.\n stretch: {\n true: 'ds:h-full ds:self-stretch',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n interactive: false,\n stretch: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface CardProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'role'>,\n VariantProps<typeof cardVariants> {\n variant?: 'default' | 'outlined' | 'elevated';\n interactive?: boolean;\n /**\n * Stretch the Card to fill its parent layout cell. Use on every Card in\n * a dashboard row so siblings end up with matching heights, and the\n * `Card.Body` + `Card.Footer` flex naturally pin the footer to the\n * bottom. Grid cells already `align-items: stretch` by default, but an\n * explicit `h-full` keeps the behaviour robust under flex parents too.\n */\n stretch?: boolean;\n asChild?: boolean;\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nconst CardRoot = forwardRef<HTMLElement, CardProps>(\n (\n {\n variant = 'default',\n interactive = false,\n stretch = false,\n asChild = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const headerId = useId();\n const [hasHeader, setHasHeader] = useState(false);\n const registerHeader = useCallback(() => setHasHeader(true), []);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (interactive && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n onKeyDown?.(e);\n };\n\n // When asChild=true the consumer provides its own element (<a>, <button>)\n // which already carries the correct role and tabIndex — don't override them.\n const interactiveProps = interactive\n ? {\n ...(asChild ? {} : { role: 'button' as const, tabIndex: 0 }),\n onKeyDown: handleKeyDown,\n onClick,\n }\n : { onClick };\n\n // `<article>` is the default semantic root, but axe's\n // `aria-allowed-role` rule forbids `role=\"button\"` on `<article>`.\n // When the card is interactive we switch to `<div>` so the explicit\n // role is valid. Consumers can still pass `asChild` to provide their\n // own anchor / button element when they want stronger semantics.\n const Comp = asChild ? Slot : interactive ? 'div' : 'article';\n\n return (\n <CardContext.Provider\n value={{ headerId, interactive: interactive ?? false, registerHeader }}\n >\n <Comp\n ref={ref as React.Ref<HTMLDivElement>}\n aria-labelledby={hasHeader ? headerId : undefined}\n data-component=\"card\"\n className={cardVariants({\n variant,\n interactive: interactive ?? false,\n stretch: stretch ?? false,\n className,\n })}\n {...interactiveProps}\n {...props}\n >\n {children}\n </Comp>\n </CardContext.Provider>\n );\n },\n);\nCardRoot.displayName = 'Card';\n\n/* ------------------------------------------------------------------ */\n/* Header */\n/* ------------------------------------------------------------------ */\n\nconst CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { headerId, registerHeader } = useContext(CardContext);\n\n // Notify root that a header is present so aria-labelledby is applied.\n const callbackRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) registerHeader();\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref, registerHeader],\n );\n\n return (\n <div\n ref={callbackRef}\n id={headerId}\n className={[\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-md)] ds:pb-0',\n // Wrap policy for header text content. Scoped to DIRECT children\n // (h1–h6 / p / div) and using `break-word` instead of `anywhere`\n // so natural-language titles wrap at word boundaries first; only\n // genuinely unbreakable strings (URLs, hashes) break mid-word\n // when they'd otherwise overflow. The previous `[&_*]:` cascade\n // applied `overflow-wrap: anywhere` to every descendant, which\n // chopped natural-language labels mid-character inside narrow\n // contexts (DescriptionList rows in a Carousel slide).\n 'ds:[&>*]:break-normal ds:[&>*]:[overflow-wrap:break-word]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nCardHeader.displayName = 'Card.Header';\n\n/* ------------------------------------------------------------------ */\n/* Media */\n/* ------------------------------------------------------------------ */\n\nconst CardMedia = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:overflow-hidden ds:[&_img]:w-full ds:[&_img]:h-auto ds:[&_img]:[object-fit:cover] ds:[&_video]:w-full',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardMedia.displayName = 'Card.Media';\n\n/* ------------------------------------------------------------------ */\n/* Body */\n/* ------------------------------------------------------------------ */\n\nconst CardBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds:p-[var(--spacing-md)] ds:flex-1 ds:text-start', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardBody.displayName = 'Card.Body';\n\n/* ------------------------------------------------------------------ */\n/* Footer */\n/* ------------------------------------------------------------------ */\n\nconst CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)] ds:pt-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardFooter.displayName = 'Card.Footer';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Media: CardMedia,\n Body: CardBody,\n Footer: CardFooter,\n});\n\nexport type { VariantProps as CardVariantProps };\n"],"names":["CardContext","createContext","cardVariants","cva","CardRoot","forwardRef","variant","interactive","stretch","asChild","className","children","onClick","onKeyDown","props","ref","headerId","useId","hasHeader","setHasHeader","useState","registerHeader","useCallback","interactiveProps","e","Comp","Slot","jsx","CardHeader","useContext","callbackRef","node","CardMedia","CardBody","CardFooter","Card"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"card-DPmk26CL.js","sources":["../../src/components/card/card.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface CardContextValue {\n headerId: string;\n interactive: boolean;\n registerHeader: () => void;\n}\n\nconst CardContext = createContext<CardContextValue>({\n headerId: '',\n interactive: false,\n registerHeader: () => {},\n});\n\n/* ------------------------------------------------------------------ */\n/* Variants */\n/* ------------------------------------------------------------------ */\n\nconst cardVariants = cva(\n [\n 'ds:rounded-[var(--radius-lg)] ds:text-[var(--card-foreground)]',\n 'ds:overflow-hidden',\n 'ds:flex ds:flex-col',\n ].join(' '),\n {\n variants: {\n // 0.31.5: accessible-theme bumps the border from 1px → 2px so\n // the boundary reads at the strict-AA / AAA contrast bar — at\n // 1px the `--card-border` (#00000080 light / #ffffff52 dark)\n // clears 3:1 luminance but reads as a hairline on tall cards.\n // Light + dark keep 1px. Forced-colours users get `border-2 +\n // CanvasText` as a parallel safety net.\n variant: {\n default:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\n outlined:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--border)] ds:[.theme-accessible_&]:border-2',\n elevated:\n 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--card-border)] ds:shadow-[var(--shadow-card)] ds:[.theme-accessible_&]:border-2',\n },\n interactive: {\n true: [\n 'ds:cursor-pointer',\n 'ds:transition-shadow ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:shadow-[var(--shadow-hover)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:min-h-[var(--min-target-size)]',\n ].join(' '),\n false: '',\n },\n // `stretch: true` fills the parent layout cell (grid / flex) so a\n // row of Cards ends up with matching heights. Combined with the\n // `flex-1` on `Card.Body`, the footer naturally pins to the bottom.\n stretch: {\n true: 'ds:h-full ds:self-stretch',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n interactive: false,\n stretch: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface CardProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'role'>,\n VariantProps<typeof cardVariants> {\n variant?: 'default' | 'outlined' | 'elevated';\n interactive?: boolean;\n /**\n * Stretch the Card to fill its parent layout cell. Use on every Card in\n * a dashboard row so siblings end up with matching heights, and the\n * `Card.Body` + `Card.Footer` flex naturally pin the footer to the\n * bottom. Grid cells already `align-items: stretch` by default, but an\n * explicit `h-full` keeps the behaviour robust under flex parents too.\n */\n stretch?: boolean;\n asChild?: boolean;\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nconst CardRoot = forwardRef<HTMLElement, CardProps>(\n (\n {\n variant = 'default',\n interactive = false,\n stretch = false,\n asChild = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const headerId = useId();\n const [hasHeader, setHasHeader] = useState(false);\n const registerHeader = useCallback(() => setHasHeader(true), []);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (interactive && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n onKeyDown?.(e);\n };\n\n // When asChild=true the consumer provides its own element (<a>, <button>)\n // which already carries the correct role and tabIndex — don't override them.\n const interactiveProps = interactive\n ? {\n ...(asChild ? {} : { role: 'button' as const, tabIndex: 0 }),\n onKeyDown: handleKeyDown,\n onClick,\n }\n : { onClick };\n\n // `<article>` is the default semantic root, but axe's\n // `aria-allowed-role` rule forbids `role=\"button\"` on `<article>`.\n // When the card is interactive we switch to `<div>` so the explicit\n // role is valid. Consumers can still pass `asChild` to provide their\n // own anchor / button element when they want stronger semantics.\n const Comp = asChild ? Slot : interactive ? 'div' : 'article';\n\n return (\n <CardContext.Provider\n value={{ headerId, interactive: interactive ?? false, registerHeader }}\n >\n <Comp\n ref={ref as React.Ref<HTMLDivElement>}\n aria-labelledby={hasHeader ? headerId : undefined}\n data-component=\"card\"\n className={cardVariants({\n variant,\n interactive: interactive ?? false,\n stretch: stretch ?? false,\n className,\n })}\n {...interactiveProps}\n {...props}\n >\n {children}\n </Comp>\n </CardContext.Provider>\n );\n },\n);\nCardRoot.displayName = 'Card';\n\n/* ------------------------------------------------------------------ */\n/* Header */\n/* ------------------------------------------------------------------ */\n\nconst CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { headerId, registerHeader } = useContext(CardContext);\n\n // Notify root that a header is present so aria-labelledby is applied.\n const callbackRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) registerHeader();\n if (typeof ref === 'function') ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref, registerHeader],\n );\n\n return (\n <div\n ref={callbackRef}\n id={headerId}\n className={[\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-md)] ds:pb-0',\n // Wrap policy for header text content. Scoped to DIRECT children\n // (h1–h6 / p / div) and using `break-word` instead of `anywhere`\n // so natural-language titles wrap at word boundaries first; only\n // genuinely unbreakable strings (URLs, hashes) break mid-word\n // when they'd otherwise overflow. The previous `[&_*]:` cascade\n // applied `overflow-wrap: anywhere` to every descendant, which\n // chopped natural-language labels mid-character inside narrow\n // contexts (DescriptionList rows in a Carousel slide).\n 'ds:[&>*]:break-normal ds:[&>*]:[overflow-wrap:break-word]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nCardHeader.displayName = 'Card.Header';\n\n/* ------------------------------------------------------------------ */\n/* Media */\n/* ------------------------------------------------------------------ */\n\nconst CardMedia = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:overflow-hidden ds:[&_img]:w-full ds:[&_img]:h-auto ds:[&_img]:[object-fit:cover] ds:[&_video]:w-full',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardMedia.displayName = 'Card.Media';\n\n/* ------------------------------------------------------------------ */\n/* Body */\n/* ------------------------------------------------------------------ */\n\nconst CardBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n // `text-start` is INTENTIONALLY OMITTED from the baseline so a\n // consumer `className=\"ds:text-center\"` (or `text-end`) wins the\n // cascade without source-order trickery. Tailwind 4 emits its\n // utilities in alphabetical-ish order in tokens.css, so a kit\n // baseline `text-start` would land AFTER a consumer\n // `text-center` and override it — exactly the cascade trap that\n // bit Badge `bg-muted/20` earlier. Without a baseline, the body\n // inherits its parent's `text-align` (always `start` in\n // browsers' default cascade — same render as before for every\n // existing consumer), and consumer overrides apply with no\n // surprises. Pass `className=\"ds:text-start\"` explicitly if you\n // need to override a parent that set `text-center`.\n className={['ds:p-[var(--spacing-md)] ds:flex-1', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardBody.displayName = 'Card.Body';\n\n/* ------------------------------------------------------------------ */\n/* Footer */\n/* ------------------------------------------------------------------ */\n\nconst CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)] ds:pt-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardFooter.displayName = 'Card.Footer';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Media: CardMedia,\n Body: CardBody,\n Footer: CardFooter,\n});\n\nexport type { VariantProps as CardVariantProps };\n"],"names":["CardContext","createContext","cardVariants","cva","CardRoot","forwardRef","variant","interactive","stretch","asChild","className","children","onClick","onKeyDown","props","ref","headerId","useId","hasHeader","setHasHeader","useState","registerHeader","useCallback","interactiveProps","e","Comp","Slot","jsx","CardHeader","useContext","callbackRef","node","CardMedia","CardBody","CardFooter","Card"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as t, jsx as a } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as i, Fragment as b } from "react";
|
|
3
3
|
import { useTranslation as k } from "react-i18next";
|
|
4
|
-
import { C as o } from "./card-
|
|
4
|
+
import { C as o } from "./card-DPmk26CL.js";
|
|
5
5
|
import { L as p } from "./link-DrD_cRUg.js";
|
|
6
6
|
import { M as v } from "./map-pin-B8STOPMJ.js";
|
|
7
7
|
function L(s) {
|
|
@@ -118,4 +118,4 @@ const M = Object.assign(f, {
|
|
|
118
118
|
export {
|
|
119
119
|
M as C
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=contact-card-
|
|
121
|
+
//# sourceMappingURL=contact-card-Cf8Ktyt3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact-card-Dos7Tley.js","sources":["../../src/components/contact-card/contact-card.tsx"],"sourcesContent":["import {\n forwardRef,\n Fragment,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { MapPin } from 'lucide-react';\nimport { Card } from '../card/card';\nimport { Link } from '../link/link';\n\n/* ------------------------------------------------------------------ */\n/* Phone helper */\n/* ------------------------------------------------------------------ */\n\n/**\n * Strip everything that's not a digit or a leading `+` so the display\n * string (`\"+49 (0)89 51871478\"`) becomes a valid `tel:` URI target\n * (`\"tel:+498951871478\"`). RFC 3966 allows visual separators, but most\n * dialer apps still trip on them — collapsing to a strict E.164-ish\n * form is the safe default. The `(0)` trunk-prefix convention is\n * intentionally dropped: it's not a real digit in international\n * dialling, only a hint for in-country dialling.\n */\nfunction buildTelHref(display: string): string {\n const trunkStripped = display.replace(/\\(0\\)/g, '');\n const digits = trunkStripped.replace(/[^\\d+]/g, '');\n return `tel:${digits}`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /**\n * Optional card heading rendered inside `Card.Header` as an `<h2>` —\n * e.g. \"Contact information\" above one or more office blocks. Omit\n * when the card sits inside a section that already has a heading.\n */\n title?: ReactNode;\n /**\n * `Card` variant. Defaults to `default` (subtle border on `--card`\n * surface) to match the marketing site's treatment.\n */\n variant?: 'default' | 'outlined' | 'elevated';\n children: ReactNode;\n}\n\nconst ContactCardRoot = forwardRef<HTMLElement, ContactCardProps>(\n ({ title, variant = 'default', className, children, ...props }, ref) => (\n <Card\n ref={ref}\n variant={variant}\n data-component=\"contact-card\"\n className={className}\n {...props}\n >\n {title !== undefined ? (\n <Card.Header>\n <h2 className=\"type-title-card ds:text-foreground\">{title}</h2>\n </Card.Header>\n ) : null}\n <Card.Body\n className={[\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n // Tighten the body padding-block-start when a header sits\n // above so the whole card reads as one cohesive block rather\n // than two stacked sections — Card.Header already paints\n // bottom padding via `pb-0` + Card.Body's `p-md`.\n ].join(' ')}\n >\n {children}\n </Card.Body>\n </Card>\n ),\n);\nContactCardRoot.displayName = 'ContactCard';\n\n/* ------------------------------------------------------------------ */\n/* Office */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardOfficeProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'children'\n> {\n /**\n * Office name — rendered as the block's bold label next to the pin\n * glyph. Not a heading element by default so a card with multiple\n * offices doesn't fragment the heading outline; pass `nameAs=\"h3\"`\n * (or `h4` etc.) when the consuming page wants a real heading.\n */\n name: ReactNode;\n /**\n * Address lines in document order, one per `<br>`-equivalent. Country\n * / region / postcode formatting is the consumer's responsibility —\n * the kit only inserts the line breaks.\n */\n lines: ReadonlyArray<string>;\n /**\n * VAT / tax-ID number. Rendered on its own line with the kit-owned\n * `ui.contactCard.vatNumberLabel` prefix.\n */\n vatNumber?: string;\n /**\n * Phone number as it should display (with separators, parens, trunk\n * prefix). The kit normalises this into a `tel:` URI internally —\n * see `buildTelHref` for the rules.\n */\n phone?: string;\n /** Heading element used for `name`. Defaults to a non-heading `<p>`. */\n nameAs?: 'p' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst ContactCardOffice = forwardRef<HTMLElement, ContactCardOfficeProps>(\n (\n { name, lines, vatNumber, phone, nameAs = 'p', className, ...props },\n ref,\n ) => {\n const { t } = useTranslation();\n const NameTag = nameAs as 'p';\n\n return (\n <address\n ref={ref as React.Ref<HTMLElement>}\n data-component=\"contact-card-office\"\n className={[\n // `not-italic` overrides the UA default for `<address>` since\n // the kit's type ramp already encodes intent — italic would\n // double up with a heading-bold name and read as emphasis.\n 'ds:not-italic ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <NameTag className=\"ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)] type-label ds:font-semibold ds:text-foreground\">\n <MapPin\n aria-hidden=\"true\"\n className=\"ds:size-[1.25em] ds:text-primary ds:shrink-0\"\n />\n <span>{name}</span>\n </NameTag>\n <div className=\"type-body-sm ds:text-foreground ds:[unicode-bidi:isolate]\">\n {lines.map((line, i) => (\n <Fragment key={i}>\n {line}\n {i < lines.length - 1 ? <br /> : null}\n </Fragment>\n ))}\n </div>\n {vatNumber ? (\n <div className=\"type-body-sm ds:text-muted-foreground\">\n <span className=\"ds:me-[var(--spacing-2xs)]\">\n {t('contactCard.vatNumberLabel')}\n </span>\n <span className=\"ds:[unicode-bidi:isolate]\">{vatNumber}</span>\n </div>\n ) : null}\n {phone ? (\n <div className=\"type-body-sm ds:text-muted-foreground ds:inline-flex ds:items-baseline ds:gap-[var(--spacing-2xs)] ds:flex-wrap\">\n <span>{t('contactCard.phoneLabel')}</span>\n <Link href={buildTelHref(phone)} intent=\"default\">\n <span className=\"ds:[unicode-bidi:isolate]\">{phone}</span>\n </Link>\n </div>\n ) : null}\n </address>\n );\n },\n);\nContactCardOffice.displayName = 'ContactCard.Office';\n\n/* ------------------------------------------------------------------ */\n/* Links */\n/* ------------------------------------------------------------------ */\n\nexport type ContactCardLinksProps = HTMLAttributes<HTMLUListElement>;\n\nconst ContactCardLinks = forwardRef<HTMLUListElement, ContactCardLinksProps>(\n ({ className, children, ...props }, ref) => (\n <ul\n ref={ref}\n data-component=\"contact-card-links\"\n className={[\n 'ds:m-0 ds:p-0 ds:list-none',\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </ul>\n ),\n);\nContactCardLinks.displayName = 'ContactCard.Links';\n\n/* ------------------------------------------------------------------ */\n/* Link */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardLinkProps {\n href: string;\n /**\n * Leading glyph. Rendered with `--primary` so the link list reads as\n * a coloured-icon menu (matches the marketing site's treatment).\n * Consumers pass a bare lucide-react icon; the kit handles colour /\n * size / aria-hidden.\n */\n icon: ReactNode;\n /** Open in a new tab — adds `target=\"_blank\"` and `rel` via `Link`. */\n external?: boolean;\n children: ReactNode;\n}\n\nconst ContactCardLink = forwardRef<HTMLLIElement, ContactCardLinkProps>(\n ({ href, icon, external, children }, ref) => (\n <li ref={ref} className=\"ds:m-0\">\n <Link\n href={href}\n external={external}\n // Wrap in a `text-primary` span so the lucide glyph (which uses\n // `currentColor`) picks up the brand tint without the consumer\n // having to thread a className through every icon. Link adds\n // its own aria-hidden wrapper + `[&_svg]:size-[1em]` outside\n // this; the colour cascades through.\n startIcon={<span className=\"ds:text-primary\">{icon}</span>}\n >\n {children}\n </Link>\n </li>\n ),\n);\nContactCardLink.displayName = 'ContactCard.Link';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const ContactCard = Object.assign(ContactCardRoot, {\n Office: ContactCardOffice,\n Links: ContactCardLinks,\n Link: ContactCardLink,\n});\n\nexport { buildTelHref as __buildTelHref };\n"],"names":["buildTelHref","display","ContactCardRoot","forwardRef","title","variant","className","children","props","ref","jsxs","Card","jsx","ContactCardOffice","name","lines","vatNumber","phone","nameAs","t","useTranslation","NameTag","MapPin","line","i","Fragment","Link","ContactCardLinks","ContactCardLink","href","icon","external","ContactCard"],"mappings":";;;;;;AAwBA,SAASA,EAAaC,GAAyB;AAG7C,SAAO,OAFeA,EAAQ,QAAQ,UAAU,EAAE,EACrB,QAAQ,WAAW,EAAE,CAC9B;AACtB;AAwBA,MAAMC,IAAkBC;AAAA,EACtB,CAAC,EAAE,OAAAC,GAAO,SAAAC,IAAU,WAAW,WAAAC,GAAW,UAAAC,GAAU,GAAGC,KAASC,MAC9D,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,SAAAJ;AAAA,MACA,kBAAe;AAAA,MACf,WAAAC;AAAA,MACC,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAJ,MAAU,SACT,gBAAAQ,EAACD,EAAK,QAAL,EACC,UAAA,gBAAAC,EAAC,MAAA,EAAG,WAAU,sCAAsC,UAAAR,EAAA,CAAM,EAAA,CAC5D,IACE;AAAA,QACJ,gBAAAQ;AAAA,UAACD,EAAK;AAAA,UAAL;AAAA,YACC,WAAW;AAAA,cACT;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA,EAKA,KAAK,GAAG;AAAA,YAET,UAAAJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;AACAL,EAAgB,cAAc;AAsC9B,MAAMW,IAAoBV;AAAA,EACxB,CACE,EAAE,MAAAW,GAAM,OAAAC,GAAO,WAAAC,GAAW,OAAAC,GAAO,QAAAC,IAAS,KAAK,WAAAZ,GAAW,GAAGE,EAAA,GAC7DC,MACG;AACH,UAAM,EAAE,GAAAU,EAAA,IAAMC,EAAA,GACRC,IAAUH;AAEhB,WACE,gBAAAR;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,kBAAe;AAAA,QACf,WAAW;AAAA;AAAA;AAAA;AAAA,UAIT;AAAA,UACAH;AAAA,QAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QACV,GAAGE;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAE,EAACW,GAAA,EAAQ,WAAU,4GACjB,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEZ,gBAAAV,EAAC,UAAM,UAAAE,EAAA,CAAK;AAAA,UAAA,GACd;AAAA,UACA,gBAAAF,EAAC,OAAA,EAAI,WAAU,6DACZ,UAAAG,EAAM,IAAI,CAACQ,GAAMC,MAChB,gBAAAd,EAACe,GAAA,EACE,UAAA;AAAA,YAAAF;AAAA,YACAC,IAAIT,EAAM,SAAS,IAAI,gBAAAH,EAAC,QAAG,IAAK;AAAA,UAAA,KAFpBY,CAGf,CACD,GACH;AAAA,UACCR,IACC,gBAAAN,EAAC,OAAA,EAAI,WAAU,yCACb,UAAA;AAAA,YAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,8BACb,UAAAO,EAAE,4BAA4B,GACjC;AAAA,YACA,gBAAAP,EAAC,QAAA,EAAK,WAAU,6BAA6B,UAAAI,EAAA,CAAU;AAAA,UAAA,EAAA,CACzD,IACE;AAAA,UACHC,IACC,gBAAAP,EAAC,OAAA,EAAI,WAAU,mHACb,UAAA;AAAA,YAAA,gBAAAE,EAAC,QAAA,EAAM,UAAAO,EAAE,wBAAwB,EAAA,CAAE;AAAA,YACnC,gBAAAP,EAACc,GAAA,EAAK,MAAM1B,EAAaiB,CAAK,GAAG,QAAO,WACtC,UAAA,gBAAAL,EAAC,QAAA,EAAK,WAAU,6BAA6B,aAAM,EAAA,CACrD;AAAA,UAAA,EAAA,CACF,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAC,EAAkB,cAAc;AAQhC,MAAMc,IAAmBxB;AAAA,EACvB,CAAC,EAAE,WAAAG,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAClC,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,kBAAe;AAAA,MACf,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACAH;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;AACAoB,EAAiB,cAAc;AAoB/B,MAAMC,IAAkBzB;AAAA,EACtB,CAAC,EAAE,MAAA0B,GAAM,MAAAC,GAAM,UAAAC,GAAU,UAAAxB,EAAA,GAAYE,MACnC,gBAAAG,EAAC,MAAA,EAAG,KAAAH,GAAU,WAAU,UACtB,UAAA,gBAAAG;AAAA,IAACc;AAAA,IAAA;AAAA,MACC,MAAAG;AAAA,MACA,UAAAE;AAAA,MAMA,WAAW,gBAAAnB,EAAC,QAAA,EAAK,WAAU,mBAAmB,UAAAkB,GAAK;AAAA,MAElD,UAAAvB;AAAA,IAAA;AAAA,EAAA,EACH,CACF;AAEJ;AACAqB,EAAgB,cAAc;AAMvB,MAAMI,IAAc,OAAO,OAAO9B,GAAiB;AAAA,EACxD,QAAQW;AAAA,EACR,OAAOc;AAAA,EACP,MAAMC;AACR,CAAC;"}
|
|
1
|
+
{"version":3,"file":"contact-card-Cf8Ktyt3.js","sources":["../../src/components/contact-card/contact-card.tsx"],"sourcesContent":["import {\n forwardRef,\n Fragment,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { MapPin } from 'lucide-react';\nimport { Card } from '../card/card';\nimport { Link } from '../link/link';\n\n/* ------------------------------------------------------------------ */\n/* Phone helper */\n/* ------------------------------------------------------------------ */\n\n/**\n * Strip everything that's not a digit or a leading `+` so the display\n * string (`\"+49 (0)89 51871478\"`) becomes a valid `tel:` URI target\n * (`\"tel:+498951871478\"`). RFC 3966 allows visual separators, but most\n * dialer apps still trip on them — collapsing to a strict E.164-ish\n * form is the safe default. The `(0)` trunk-prefix convention is\n * intentionally dropped: it's not a real digit in international\n * dialling, only a hint for in-country dialling.\n */\nfunction buildTelHref(display: string): string {\n const trunkStripped = display.replace(/\\(0\\)/g, '');\n const digits = trunkStripped.replace(/[^\\d+]/g, '');\n return `tel:${digits}`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'title'\n> {\n /**\n * Optional card heading rendered inside `Card.Header` as an `<h2>` —\n * e.g. \"Contact information\" above one or more office blocks. Omit\n * when the card sits inside a section that already has a heading.\n */\n title?: ReactNode;\n /**\n * `Card` variant. Defaults to `default` (subtle border on `--card`\n * surface) to match the marketing site's treatment.\n */\n variant?: 'default' | 'outlined' | 'elevated';\n children: ReactNode;\n}\n\nconst ContactCardRoot = forwardRef<HTMLElement, ContactCardProps>(\n ({ title, variant = 'default', className, children, ...props }, ref) => (\n <Card\n ref={ref}\n variant={variant}\n data-component=\"contact-card\"\n className={className}\n {...props}\n >\n {title !== undefined ? (\n <Card.Header>\n <h2 className=\"type-title-card ds:text-foreground\">{title}</h2>\n </Card.Header>\n ) : null}\n <Card.Body\n className={[\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n // Tighten the body padding-block-start when a header sits\n // above so the whole card reads as one cohesive block rather\n // than two stacked sections — Card.Header already paints\n // bottom padding via `pb-0` + Card.Body's `p-md`.\n ].join(' ')}\n >\n {children}\n </Card.Body>\n </Card>\n ),\n);\nContactCardRoot.displayName = 'ContactCard';\n\n/* ------------------------------------------------------------------ */\n/* Office */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardOfficeProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'children'\n> {\n /**\n * Office name — rendered as the block's bold label next to the pin\n * glyph. Not a heading element by default so a card with multiple\n * offices doesn't fragment the heading outline; pass `nameAs=\"h3\"`\n * (or `h4` etc.) when the consuming page wants a real heading.\n */\n name: ReactNode;\n /**\n * Address lines in document order, one per `<br>`-equivalent. Country\n * / region / postcode formatting is the consumer's responsibility —\n * the kit only inserts the line breaks.\n */\n lines: ReadonlyArray<string>;\n /**\n * VAT / tax-ID number. Rendered on its own line with the kit-owned\n * `ui.contactCard.vatNumberLabel` prefix.\n */\n vatNumber?: string;\n /**\n * Phone number as it should display (with separators, parens, trunk\n * prefix). The kit normalises this into a `tel:` URI internally —\n * see `buildTelHref` for the rules.\n */\n phone?: string;\n /** Heading element used for `name`. Defaults to a non-heading `<p>`. */\n nameAs?: 'p' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst ContactCardOffice = forwardRef<HTMLElement, ContactCardOfficeProps>(\n (\n { name, lines, vatNumber, phone, nameAs = 'p', className, ...props },\n ref,\n ) => {\n const { t } = useTranslation();\n const NameTag = nameAs as 'p';\n\n return (\n <address\n ref={ref as React.Ref<HTMLElement>}\n data-component=\"contact-card-office\"\n className={[\n // `not-italic` overrides the UA default for `<address>` since\n // the kit's type ramp already encodes intent — italic would\n // double up with a heading-bold name and read as emphasis.\n 'ds:not-italic ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <NameTag className=\"ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)] type-label ds:font-semibold ds:text-foreground\">\n <MapPin\n aria-hidden=\"true\"\n className=\"ds:size-[1.25em] ds:text-primary ds:shrink-0\"\n />\n <span>{name}</span>\n </NameTag>\n <div className=\"type-body-sm ds:text-foreground ds:[unicode-bidi:isolate]\">\n {lines.map((line, i) => (\n <Fragment key={i}>\n {line}\n {i < lines.length - 1 ? <br /> : null}\n </Fragment>\n ))}\n </div>\n {vatNumber ? (\n <div className=\"type-body-sm ds:text-muted-foreground\">\n <span className=\"ds:me-[var(--spacing-2xs)]\">\n {t('contactCard.vatNumberLabel')}\n </span>\n <span className=\"ds:[unicode-bidi:isolate]\">{vatNumber}</span>\n </div>\n ) : null}\n {phone ? (\n <div className=\"type-body-sm ds:text-muted-foreground ds:inline-flex ds:items-baseline ds:gap-[var(--spacing-2xs)] ds:flex-wrap\">\n <span>{t('contactCard.phoneLabel')}</span>\n <Link href={buildTelHref(phone)} intent=\"default\">\n <span className=\"ds:[unicode-bidi:isolate]\">{phone}</span>\n </Link>\n </div>\n ) : null}\n </address>\n );\n },\n);\nContactCardOffice.displayName = 'ContactCard.Office';\n\n/* ------------------------------------------------------------------ */\n/* Links */\n/* ------------------------------------------------------------------ */\n\nexport type ContactCardLinksProps = HTMLAttributes<HTMLUListElement>;\n\nconst ContactCardLinks = forwardRef<HTMLUListElement, ContactCardLinksProps>(\n ({ className, children, ...props }, ref) => (\n <ul\n ref={ref}\n data-component=\"contact-card-links\"\n className={[\n 'ds:m-0 ds:p-0 ds:list-none',\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </ul>\n ),\n);\nContactCardLinks.displayName = 'ContactCard.Links';\n\n/* ------------------------------------------------------------------ */\n/* Link */\n/* ------------------------------------------------------------------ */\n\nexport interface ContactCardLinkProps {\n href: string;\n /**\n * Leading glyph. Rendered with `--primary` so the link list reads as\n * a coloured-icon menu (matches the marketing site's treatment).\n * Consumers pass a bare lucide-react icon; the kit handles colour /\n * size / aria-hidden.\n */\n icon: ReactNode;\n /** Open in a new tab — adds `target=\"_blank\"` and `rel` via `Link`. */\n external?: boolean;\n children: ReactNode;\n}\n\nconst ContactCardLink = forwardRef<HTMLLIElement, ContactCardLinkProps>(\n ({ href, icon, external, children }, ref) => (\n <li ref={ref} className=\"ds:m-0\">\n <Link\n href={href}\n external={external}\n // Wrap in a `text-primary` span so the lucide glyph (which uses\n // `currentColor`) picks up the brand tint without the consumer\n // having to thread a className through every icon. Link adds\n // its own aria-hidden wrapper + `[&_svg]:size-[1em]` outside\n // this; the colour cascades through.\n startIcon={<span className=\"ds:text-primary\">{icon}</span>}\n >\n {children}\n </Link>\n </li>\n ),\n);\nContactCardLink.displayName = 'ContactCard.Link';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const ContactCard = Object.assign(ContactCardRoot, {\n Office: ContactCardOffice,\n Links: ContactCardLinks,\n Link: ContactCardLink,\n});\n\nexport { buildTelHref as __buildTelHref };\n"],"names":["buildTelHref","display","ContactCardRoot","forwardRef","title","variant","className","children","props","ref","jsxs","Card","jsx","ContactCardOffice","name","lines","vatNumber","phone","nameAs","t","useTranslation","NameTag","MapPin","line","i","Fragment","Link","ContactCardLinks","ContactCardLink","href","icon","external","ContactCard"],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { jsxs as u, jsx as e, Fragment as
|
|
2
|
-
import { forwardRef as
|
|
1
|
+
import { jsxs as u, jsx as e, Fragment as R } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as ie, useId as le, useMemo as ce } from "react";
|
|
3
3
|
import { c as se } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as de } from "react-i18next";
|
|
5
|
-
import { B as S } from "./badge-
|
|
6
|
-
import { C as F } from "./card-
|
|
7
|
-
import { K as pe, a as ue } from "./key-value-pair-
|
|
5
|
+
import { B as S } from "./badge-zsf5i5bH.js";
|
|
6
|
+
import { C as F } from "./card-DPmk26CL.js";
|
|
7
|
+
import { K as pe, a as ue } from "./key-value-pair-CkQIb9EG.js";
|
|
8
8
|
import { L as d } from "./link-DrD_cRUg.js";
|
|
9
9
|
import { u as fe } from "./registry-nPAVE19X.js";
|
|
10
|
-
import { S as
|
|
11
|
-
import { H
|
|
12
|
-
import { c as
|
|
13
|
-
import { G as
|
|
14
|
-
import { M as
|
|
15
|
-
import { M as
|
|
10
|
+
import { S as T } from "./stethoscope-DT5qCW8Y.js";
|
|
11
|
+
import { H, S as V, L as z } from "./shield-check-BhHyReu8.js";
|
|
12
|
+
import { c as O } from "./createLucideIcon-CrFbzy84.js";
|
|
13
|
+
import { G as E } from "./globe-BkEFMNSg.js";
|
|
14
|
+
import { M as K } from "./mail-C8irm52s.js";
|
|
15
|
+
import { M as L } from "./message-circle-C23eicgb.js";
|
|
16
16
|
import { M as U } from "./map-pin-B8STOPMJ.js";
|
|
17
17
|
/**
|
|
18
18
|
* @license lucide-react v1.8.0 - ISC
|
|
@@ -24,7 +24,7 @@ const me = [
|
|
|
24
24
|
["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
|
|
25
25
|
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
|
|
26
26
|
["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
|
|
27
|
-
], j =
|
|
27
|
+
], j = O("banknote", me);
|
|
28
28
|
/**
|
|
29
29
|
* @license lucide-react v1.8.0 - ISC
|
|
30
30
|
*
|
|
@@ -39,23 +39,23 @@ const he = [
|
|
|
39
39
|
key: "9njp5v"
|
|
40
40
|
}
|
|
41
41
|
]
|
|
42
|
-
], B =
|
|
43
|
-
id: "
|
|
42
|
+
], B = O("phone", he), ge = {
|
|
43
|
+
id: "contact-profile-card",
|
|
44
44
|
capabilities: ["view_change"],
|
|
45
45
|
state: {
|
|
46
46
|
profession: {
|
|
47
47
|
type: "string",
|
|
48
|
-
descriptionKey: "ui.agent.
|
|
48
|
+
descriptionKey: "ui.agent.contactProfileCard.state.profession",
|
|
49
49
|
description: "Profession string the card is currently rendering — undefined when the consumer omitted it.",
|
|
50
|
-
read: (
|
|
50
|
+
read: (t) => t.getProfession()
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
actions: {},
|
|
54
54
|
domHooks: {
|
|
55
55
|
root: {
|
|
56
56
|
attr: "data-component",
|
|
57
|
-
value: "
|
|
58
|
-
description: "Marks the
|
|
57
|
+
value: "contact-profile-card",
|
|
58
|
+
description: "Marks the ContactProfileCard root region."
|
|
59
59
|
},
|
|
60
60
|
instanceId: {
|
|
61
61
|
attr: "data-component-id",
|
|
@@ -63,46 +63,49 @@ const he = [
|
|
|
63
63
|
description: "Sourced from the id prop."
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
}, ve = se(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
66
|
+
}, ve = se(
|
|
67
|
+
"ds:w-full ds:text-[color:var(--foreground)] ds:[--key-value-pair-icon-color:var(--accent)]",
|
|
68
|
+
{
|
|
69
|
+
variants: {
|
|
70
|
+
// Matches the kit's other `surface` props (Booking, ReviewsPanel).
|
|
71
|
+
// The card itself renders `<Card variant="elevated">` so the
|
|
72
|
+
// `surface="flat"` opt-out is rare — most consumers want the
|
|
73
|
+
// boundary.
|
|
74
|
+
surface: {
|
|
75
|
+
flat: "",
|
|
76
|
+
elevated: ""
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
defaultVariants: { surface: "elevated" }
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
function xe(t) {
|
|
83
|
+
return t.replace(/[^\d+]/g, "");
|
|
81
84
|
}
|
|
82
|
-
function
|
|
83
|
-
const a = `https://wa.me/${
|
|
84
|
-
return
|
|
85
|
+
function ye(t, r) {
|
|
86
|
+
const a = `https://wa.me/${t}`;
|
|
87
|
+
return r ? `${a}?text=${encodeURIComponent(r)}` : a;
|
|
85
88
|
}
|
|
86
|
-
function
|
|
87
|
-
return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
|
|
89
|
+
function Ce(t) {
|
|
90
|
+
return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(t.line)}`;
|
|
88
91
|
}
|
|
89
|
-
function
|
|
92
|
+
function be(t, r, a) {
|
|
90
93
|
try {
|
|
91
94
|
return new Intl.NumberFormat(a, {
|
|
92
95
|
style: "currency",
|
|
93
|
-
currency:
|
|
94
|
-
}).format(
|
|
96
|
+
currency: r
|
|
97
|
+
}).format(t / 100);
|
|
95
98
|
} catch {
|
|
96
|
-
return (
|
|
99
|
+
return (t / 100).toFixed(2);
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
|
-
function
|
|
102
|
+
function Pe() {
|
|
100
103
|
if (typeof document > "u") return "4945a3";
|
|
101
|
-
const
|
|
102
|
-
return
|
|
104
|
+
const t = getComputedStyle(document.documentElement).getPropertyValue("--map-marker-color").trim(), r = /^#?([0-9a-fA-F]{6})$/.exec(t);
|
|
105
|
+
return r ? r[1] : "4945a3";
|
|
103
106
|
}
|
|
104
|
-
function ke({ apiKey:
|
|
105
|
-
const s =
|
|
107
|
+
function ke({ apiKey: t, center: r, zoom: a, altText: c }) {
|
|
108
|
+
const s = Pe(), f = `https://maps.googleapis.com/maps/api/staticmap?center=${r.lat},${r.lng}&zoom=${a}&size=640x192&scale=2&markers=color:0x${s}%7C${r.lat},${r.lng}&key=${encodeURIComponent(t)}`;
|
|
106
109
|
return /* @__PURE__ */ e(
|
|
107
110
|
"img",
|
|
108
111
|
{
|
|
@@ -116,10 +119,10 @@ function ke({ apiKey: r, center: t, zoom: a, altText: c }) {
|
|
|
116
119
|
}
|
|
117
120
|
);
|
|
118
121
|
}
|
|
119
|
-
const we =
|
|
122
|
+
const we = ie(
|
|
120
123
|
({
|
|
121
|
-
heading:
|
|
122
|
-
description:
|
|
124
|
+
heading: t,
|
|
125
|
+
description: r,
|
|
123
126
|
address: a,
|
|
124
127
|
phone: c,
|
|
125
128
|
whatsappNumber: s,
|
|
@@ -130,10 +133,10 @@ const we = oe(
|
|
|
130
133
|
languageLabels: p,
|
|
131
134
|
insurances: v,
|
|
132
135
|
firstVisitPriceCents: x,
|
|
133
|
-
currencyCode:
|
|
134
|
-
profession:
|
|
136
|
+
currencyCode: b = "EUR",
|
|
137
|
+
profession: y,
|
|
135
138
|
specializedInFearPatients: G,
|
|
136
|
-
googleMapsApiKey:
|
|
139
|
+
googleMapsApiKey: P,
|
|
137
140
|
mapZoom: q = 14,
|
|
138
141
|
onPhoneClick: W,
|
|
139
142
|
onWhatsAppClick: D,
|
|
@@ -143,35 +146,35 @@ const we = oe(
|
|
|
143
146
|
footerSlot: X,
|
|
144
147
|
surface: k = "elevated",
|
|
145
148
|
"aria-label": Z,
|
|
146
|
-
id:
|
|
149
|
+
id: C,
|
|
147
150
|
className: ee,
|
|
148
151
|
...ae
|
|
149
|
-
},
|
|
150
|
-
const { t:
|
|
152
|
+
}, te) => {
|
|
153
|
+
const { t: n, i18n: w } = de(), M = le(), $ = w.language ?? "en", N = t ?? n("contactProfileCard.heading"), re = Z ?? N, A = ce(() => {
|
|
151
154
|
if (x != null)
|
|
152
|
-
return
|
|
153
|
-
}, [x,
|
|
154
|
-
if (a &&
|
|
155
|
+
return be(x, b, $);
|
|
156
|
+
}, [x, b, $]), o = [];
|
|
157
|
+
if (a && o.push({
|
|
155
158
|
key: "address",
|
|
156
159
|
icon: /* @__PURE__ */ e(U, { "aria-hidden": "true" }),
|
|
157
|
-
label:
|
|
160
|
+
label: n("contactProfileCard.label.address"),
|
|
158
161
|
value: /* @__PURE__ */ u("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
|
|
159
162
|
/* @__PURE__ */ e("span", { children: a.line }),
|
|
160
163
|
a.lat != null && a.lng != null ? /* @__PURE__ */ e(
|
|
161
164
|
d,
|
|
162
165
|
{
|
|
163
|
-
href:
|
|
166
|
+
href: Ce(a),
|
|
164
167
|
external: !0,
|
|
165
168
|
intent: "default",
|
|
166
169
|
onClick: Y,
|
|
167
|
-
children:
|
|
170
|
+
children: n("contactProfileCard.openInGoogleMaps")
|
|
168
171
|
}
|
|
169
172
|
) : null
|
|
170
173
|
] })
|
|
171
|
-
}), c &&
|
|
174
|
+
}), c && o.push({
|
|
172
175
|
key: "phone",
|
|
173
176
|
icon: /* @__PURE__ */ e(B, { "aria-hidden": "true" }),
|
|
174
|
-
label:
|
|
177
|
+
label: n("contactProfileCard.label.phone"),
|
|
175
178
|
value: /* @__PURE__ */ e(
|
|
176
179
|
d,
|
|
177
180
|
{
|
|
@@ -181,24 +184,24 @@ const we = oe(
|
|
|
181
184
|
children: c
|
|
182
185
|
}
|
|
183
186
|
)
|
|
184
|
-
}), s &&
|
|
187
|
+
}), s && o.push({
|
|
185
188
|
key: "whatsapp",
|
|
186
|
-
icon: /* @__PURE__ */ e(
|
|
187
|
-
label:
|
|
189
|
+
icon: /* @__PURE__ */ e(L, { "aria-hidden": "true" }),
|
|
190
|
+
label: n("contactProfileCard.label.whatsapp"),
|
|
188
191
|
value: /* @__PURE__ */ e(
|
|
189
192
|
d,
|
|
190
193
|
{
|
|
191
|
-
href:
|
|
194
|
+
href: ye(s, f),
|
|
192
195
|
external: !0,
|
|
193
196
|
intent: "default",
|
|
194
197
|
onClick: D,
|
|
195
198
|
children: s
|
|
196
199
|
}
|
|
197
200
|
)
|
|
198
|
-
}), m &&
|
|
201
|
+
}), m && o.push({
|
|
199
202
|
key: "email",
|
|
200
|
-
icon: /* @__PURE__ */ e(
|
|
201
|
-
label:
|
|
203
|
+
icon: /* @__PURE__ */ e(K, { "aria-hidden": "true" }),
|
|
204
|
+
label: n("contactProfileCard.label.email"),
|
|
202
205
|
value: /* @__PURE__ */ e(
|
|
203
206
|
d,
|
|
204
207
|
{
|
|
@@ -208,74 +211,74 @@ const we = oe(
|
|
|
208
211
|
children: m
|
|
209
212
|
}
|
|
210
213
|
)
|
|
211
|
-
}), h &&
|
|
214
|
+
}), h && o.push({
|
|
212
215
|
key: "website",
|
|
213
|
-
icon: /* @__PURE__ */ e(
|
|
214
|
-
label:
|
|
216
|
+
icon: /* @__PURE__ */ e(E, { "aria-hidden": "true" }),
|
|
217
|
+
label: n("contactProfileCard.label.website"),
|
|
215
218
|
value: /* @__PURE__ */ e(d, { href: h, external: !0, intent: "default", children: h })
|
|
216
219
|
}), g && g.length > 0) {
|
|
217
|
-
const
|
|
220
|
+
const i = (l) => {
|
|
218
221
|
if (p != null && p[l]) return p[l];
|
|
219
|
-
const
|
|
220
|
-
return w.exists(
|
|
222
|
+
const I = `languages.${l}`;
|
|
223
|
+
return w.exists(I) ? n(I) : l.toUpperCase();
|
|
221
224
|
};
|
|
222
|
-
|
|
225
|
+
o.push({
|
|
223
226
|
key: "languages",
|
|
224
227
|
icon: /* @__PURE__ */ e(z, { "aria-hidden": "true" }),
|
|
225
|
-
label:
|
|
226
|
-
value: /* @__PURE__ */ e("span", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: g.map((l) => /* @__PURE__ */ e(S, { variant: "neutral", children:
|
|
228
|
+
label: n("contactProfileCard.label.languages"),
|
|
229
|
+
value: /* @__PURE__ */ e("span", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: g.map((l) => /* @__PURE__ */ e(S, { variant: "neutral", children: i(l) }, l)) })
|
|
227
230
|
});
|
|
228
231
|
}
|
|
229
|
-
v && v.length > 0 &&
|
|
232
|
+
v && v.length > 0 && o.push({
|
|
230
233
|
key: "insurances",
|
|
231
234
|
icon: /* @__PURE__ */ e(V, { "aria-hidden": "true" }),
|
|
232
|
-
label:
|
|
233
|
-
value: /* @__PURE__ */ e("span", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: v.map((
|
|
234
|
-
}),
|
|
235
|
+
label: n("contactProfileCard.label.insurances"),
|
|
236
|
+
value: /* @__PURE__ */ e("span", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: v.map((i) => /* @__PURE__ */ e(S, { variant: "info", children: i }, i)) })
|
|
237
|
+
}), A && o.push({
|
|
235
238
|
key: "firstVisitPrice",
|
|
236
239
|
icon: /* @__PURE__ */ e(j, { "aria-hidden": "true" }),
|
|
237
|
-
label:
|
|
238
|
-
value:
|
|
239
|
-
}), G &&
|
|
240
|
+
label: n("contactProfileCard.label.firstVisitPrice"),
|
|
241
|
+
value: A
|
|
242
|
+
}), G && o.push({
|
|
240
243
|
key: "expertForAnxiousPatients",
|
|
241
|
-
icon: /* @__PURE__ */ e(T, { "aria-hidden": "true" }),
|
|
242
|
-
label: i("practiceProfileCard.label.expertForAnxiousPatients"),
|
|
243
|
-
value: i("practiceProfileCard.value.yesShort")
|
|
244
|
-
}), P && n.push({
|
|
245
|
-
key: "profession",
|
|
246
244
|
icon: /* @__PURE__ */ e(H, { "aria-hidden": "true" }),
|
|
247
|
-
label:
|
|
248
|
-
value:
|
|
245
|
+
label: n("contactProfileCard.label.expertForAnxiousPatients"),
|
|
246
|
+
value: n("contactProfileCard.value.yesShort")
|
|
247
|
+
}), y && o.push({
|
|
248
|
+
key: "profession",
|
|
249
|
+
icon: /* @__PURE__ */ e(T, { "aria-hidden": "true" }),
|
|
250
|
+
label: n("contactProfileCard.label.profession"),
|
|
251
|
+
value: y
|
|
249
252
|
}), fe(
|
|
250
253
|
ge,
|
|
251
|
-
{ getProfession: () =>
|
|
252
|
-
|
|
254
|
+
{ getProfession: () => y },
|
|
255
|
+
C
|
|
253
256
|
);
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
+
const ne = /* @__PURE__ */ u(R, { children: [
|
|
258
|
+
r ? /* @__PURE__ */ e("p", { className: "type-body-sm ds:m-0 ds:whitespace-pre-line", children: r }) : null,
|
|
259
|
+
o.length > 0 ? /* @__PURE__ */ e(pe, { rowGap: "md", children: o.map((i) => /* @__PURE__ */ e(
|
|
257
260
|
ue,
|
|
258
261
|
{
|
|
259
|
-
icon:
|
|
260
|
-
label:
|
|
261
|
-
value:
|
|
262
|
+
icon: i.icon,
|
|
263
|
+
label: i.label,
|
|
264
|
+
value: i.value
|
|
262
265
|
},
|
|
263
|
-
|
|
266
|
+
i.key
|
|
264
267
|
)) }) : null,
|
|
265
268
|
X
|
|
266
|
-
] }),
|
|
269
|
+
] }), oe = !!P && (a == null ? void 0 : a.lat) !== void 0 && (a == null ? void 0 : a.lng) !== void 0 ? /* @__PURE__ */ e(
|
|
267
270
|
ke,
|
|
268
271
|
{
|
|
269
|
-
apiKey:
|
|
272
|
+
apiKey: P,
|
|
270
273
|
center: { lat: a.lat, lng: a.lng },
|
|
271
274
|
zoom: q,
|
|
272
|
-
altText:
|
|
275
|
+
altText: n("contactProfileCard.map.alt", {
|
|
273
276
|
address: a.line,
|
|
274
277
|
defaultValue: "Map showing {{address}}"
|
|
275
278
|
})
|
|
276
279
|
}
|
|
277
|
-
) : null,
|
|
278
|
-
|
|
280
|
+
) : null, _ = /* @__PURE__ */ u(R, { children: [
|
|
281
|
+
oe,
|
|
279
282
|
/* @__PURE__ */ u("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
|
|
280
283
|
Q,
|
|
281
284
|
/* @__PURE__ */ e(
|
|
@@ -283,30 +286,30 @@ const we = oe(
|
|
|
283
286
|
{
|
|
284
287
|
id: M,
|
|
285
288
|
className: "type-title-card ds:m-0 ds:text-[color:var(--foreground)]",
|
|
286
|
-
children:
|
|
289
|
+
children: N
|
|
287
290
|
}
|
|
288
291
|
)
|
|
289
292
|
] }),
|
|
290
|
-
|
|
293
|
+
ne
|
|
291
294
|
] });
|
|
292
295
|
return /* @__PURE__ */ e(
|
|
293
296
|
"div",
|
|
294
297
|
{
|
|
295
|
-
ref:
|
|
298
|
+
ref: te,
|
|
296
299
|
role: "region",
|
|
297
|
-
"aria-label":
|
|
300
|
+
"aria-label": re,
|
|
298
301
|
"aria-labelledby": M,
|
|
299
|
-
"data-component": "
|
|
300
|
-
"data-component-id":
|
|
301
|
-
id:
|
|
302
|
+
"data-component": "contact-profile-card",
|
|
303
|
+
"data-component-id": C,
|
|
304
|
+
id: C,
|
|
302
305
|
className: ve({ surface: k, className: ee }),
|
|
303
306
|
...ae,
|
|
304
|
-
children: k === "elevated" ? /* @__PURE__ */ e(F, { variant: "elevated", children: /* @__PURE__ */ e(F.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children:
|
|
307
|
+
children: k === "elevated" ? /* @__PURE__ */ e(F, { variant: "elevated", children: /* @__PURE__ */ e(F.Body, { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: _ }) }) : /* @__PURE__ */ e("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: _ })
|
|
305
308
|
}
|
|
306
309
|
);
|
|
307
310
|
}
|
|
308
311
|
);
|
|
309
|
-
we.displayName = "
|
|
312
|
+
we.displayName = "ContactProfileCard";
|
|
310
313
|
const Ue = [
|
|
311
314
|
"address",
|
|
312
315
|
"phone",
|
|
@@ -321,19 +324,19 @@ const Ue = [
|
|
|
321
324
|
], je = {
|
|
322
325
|
address: U,
|
|
323
326
|
phone: B,
|
|
324
|
-
whatsapp:
|
|
325
|
-
email:
|
|
326
|
-
website:
|
|
327
|
+
whatsapp: L,
|
|
328
|
+
email: K,
|
|
329
|
+
website: E,
|
|
327
330
|
languages: z,
|
|
328
331
|
insurances: V,
|
|
329
332
|
firstVisitPrice: j,
|
|
330
|
-
expertForAnxiousPatients:
|
|
331
|
-
profession:
|
|
333
|
+
expertForAnxiousPatients: H,
|
|
334
|
+
profession: T
|
|
332
335
|
};
|
|
333
336
|
export {
|
|
334
|
-
je as
|
|
337
|
+
je as C,
|
|
335
338
|
Ue as a,
|
|
336
339
|
we as b,
|
|
337
|
-
ge as
|
|
340
|
+
ge as c
|
|
338
341
|
};
|
|
339
|
-
//# sourceMappingURL=
|
|
342
|
+
//# sourceMappingURL=contact-profile-card-Ce-LIDU8.js.map
|