@alfadocs/ui-kit-debug 0.51.0 → 0.52.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/{logo-yituK7sE.js → logo-1FuSGx0n.js} +2 -1
- package/dist/_chunks/{logo-yituK7sE.js.map → logo-1FuSGx0n.js.map} +1 -1
- package/dist/_chunks/marketplace-app-shell-C4OYAC22.js +513 -0
- package/dist/_chunks/marketplace-app-shell-C4OYAC22.js.map +1 -0
- package/dist/_chunks/maximize-2-Cm9OUQ2m.js +17 -0
- package/dist/_chunks/maximize-2-Cm9OUQ2m.js.map +1 -0
- package/dist/_chunks/patient-shell-Coarf346.js +162 -0
- package/dist/_chunks/patient-shell-Coarf346.js.map +1 -0
- package/dist/_chunks/{privacy-lock-BmX_gkvt.js → privacy-lock-BN3L-alb.js} +2 -2
- package/dist/_chunks/{privacy-lock-BmX_gkvt.js.map → privacy-lock-BN3L-alb.js.map} +1 -1
- package/dist/_chunks/{public-footer.agent-okt8ZRc5.js → public-footer.agent-CfXuW1x6.js} +2 -2
- package/dist/_chunks/{public-footer.agent-okt8ZRc5.js.map → public-footer.agent-CfXuW1x6.js.map} +1 -1
- package/dist/_chunks/{sign-in-with-alfadocs-button-CuYn_kKP.js → sign-in-with-alfadocs-button-BpAjVmsI.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-CuYn_kKP.js.map → sign-in-with-alfadocs-button-BpAjVmsI.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/brand/product-lockup/product-lockup.d.ts +47 -12
- package/dist/brand/product-lockup/product-lockup.d.ts.map +1 -1
- package/dist/components/logo/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/index.js +6 -6
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +8 -6
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/marketplace-app-shell-Dmo1S9av.js +0 -428
- package/dist/_chunks/marketplace-app-shell-Dmo1S9av.js.map +0 -1
- package/dist/_chunks/patient-shell-c2YixkQw.js +0 -174
- package/dist/_chunks/patient-shell-c2YixkQw.js.map +0 -1
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as k, useState as w } from "react";
|
|
3
|
-
import { useTranslation as m } from "react-i18next";
|
|
4
|
-
import { A } from "./app-frame-BYx1gcV7.js";
|
|
5
|
-
import { I as C } from "./icon-button-CKEOrN37.js";
|
|
6
|
-
import { D as i } from "./dropdown-menu-DwwPovMZ.js";
|
|
7
|
-
import { H, g as x, f as N, e as B, a as M, c as T, d as O } from "./header-Ce1Br27u.js";
|
|
8
|
-
import { L as P } from "./logo-yituK7sE.js";
|
|
9
|
-
import { S as W, a as j, h as R, j as _, k as z, i as D } from "./sidebar-DPEHzxLZ.js";
|
|
10
|
-
import { T as E } from "./theme-root-BOO73p5t.js";
|
|
11
|
-
import { a as q } from "./tooltip-DvmfrNvB.js";
|
|
12
|
-
import { u as F } from "./use-theme-CAuo6EYT.js";
|
|
13
|
-
import { S as U } from "./settings-ca2Yi9R8.js";
|
|
14
|
-
import { c as G } from "./createLucideIcon-CrFbzy84.js";
|
|
15
|
-
import { L as J } from "./log-out-616hnn2-.js";
|
|
16
|
-
/**
|
|
17
|
-
* @license lucide-react v1.8.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/
|
|
22
|
-
const K = [
|
|
23
|
-
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
24
|
-
["path", { d: "m21 3-7 7", key: "1l2asr" }],
|
|
25
|
-
["path", { d: "m3 21 7-7", key: "tjx5ai" }],
|
|
26
|
-
["path", { d: "M9 21H3v-6", key: "wtvkvv" }]
|
|
27
|
-
], Q = G("maximize-2", K);
|
|
28
|
-
function V(a) {
|
|
29
|
-
return a > 99 ? "99+" : String(a);
|
|
30
|
-
}
|
|
31
|
-
function X(a) {
|
|
32
|
-
if (a.startsWith("/") || a.startsWith("#") || a.startsWith("?"))
|
|
33
|
-
return !0;
|
|
34
|
-
try {
|
|
35
|
-
const t = new URL(a, window.location.origin);
|
|
36
|
-
return t.protocol === "http:" || t.protocol === "https:";
|
|
37
|
-
} catch {
|
|
38
|
-
return !1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function Y({
|
|
42
|
-
logoutHref: a,
|
|
43
|
-
onToggleFullscreen: t
|
|
44
|
-
}) {
|
|
45
|
-
const { t: r } = m();
|
|
46
|
-
return /* @__PURE__ */ n(i.Root, { children: [
|
|
47
|
-
/* @__PURE__ */ e(i.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
|
|
48
|
-
C,
|
|
49
|
-
{
|
|
50
|
-
icon: /* @__PURE__ */ e(U, { "aria-hidden": "true" }),
|
|
51
|
-
"aria-label": r("patientShell.settings.triggerAria"),
|
|
52
|
-
tooltip: r("patientShell.settings.triggerAria"),
|
|
53
|
-
"data-testid": "patient-shell-settings-trigger"
|
|
54
|
-
}
|
|
55
|
-
) }),
|
|
56
|
-
/* @__PURE__ */ n(i.Content, { align: "end", children: [
|
|
57
|
-
/* @__PURE__ */ e(
|
|
58
|
-
i.Item,
|
|
59
|
-
{
|
|
60
|
-
startIcon: /* @__PURE__ */ e(Q, { "aria-hidden": "true" }),
|
|
61
|
-
onSelect: t,
|
|
62
|
-
"data-testid": "patient-shell-fullscreen",
|
|
63
|
-
children: r("patientShell.settings.fullscreen")
|
|
64
|
-
}
|
|
65
|
-
),
|
|
66
|
-
/* @__PURE__ */ e(i.Separator, {}),
|
|
67
|
-
/* @__PURE__ */ e(
|
|
68
|
-
i.Item,
|
|
69
|
-
{
|
|
70
|
-
startIcon: /* @__PURE__ */ e(J, { "aria-hidden": "true" }),
|
|
71
|
-
onSelect: () => {
|
|
72
|
-
typeof window > "u" || X(a) && window.location.assign(a);
|
|
73
|
-
},
|
|
74
|
-
"data-testid": "patient-shell-logout",
|
|
75
|
-
children: r("patientShell.settings.logout")
|
|
76
|
-
}
|
|
77
|
-
)
|
|
78
|
-
] })
|
|
79
|
-
] });
|
|
80
|
-
}
|
|
81
|
-
function Z({ menuItems: a }) {
|
|
82
|
-
return /* @__PURE__ */ e(j, { children: a.map((t) => {
|
|
83
|
-
const r = typeof t.badgeCount == "number" && t.badgeCount > 0 ? t.badgeCount : void 0;
|
|
84
|
-
return /* @__PURE__ */ n(
|
|
85
|
-
R,
|
|
86
|
-
{
|
|
87
|
-
href: t.href,
|
|
88
|
-
"aria-label": t.label,
|
|
89
|
-
isActive: t.isActive,
|
|
90
|
-
children: [
|
|
91
|
-
t.icon ? /* @__PURE__ */ e(_, { children: t.icon }) : null,
|
|
92
|
-
/* @__PURE__ */ e(z, { children: t.label }),
|
|
93
|
-
r !== void 0 ? /* @__PURE__ */ e(D, { children: V(r) }) : null
|
|
94
|
-
]
|
|
95
|
-
},
|
|
96
|
-
t.id
|
|
97
|
-
);
|
|
98
|
-
}) });
|
|
99
|
-
}
|
|
100
|
-
const $ = k(
|
|
101
|
-
({
|
|
102
|
-
menuItems: a,
|
|
103
|
-
logoutHref: t,
|
|
104
|
-
onToggleFullscreen: r,
|
|
105
|
-
brandLogo: p,
|
|
106
|
-
brandHref: u = "/",
|
|
107
|
-
mainAriaLabel: f,
|
|
108
|
-
sidebarState: o,
|
|
109
|
-
children: g,
|
|
110
|
-
// `userName` and `userAvatarSrc` are declared on the public API
|
|
111
|
-
// for forward-compatibility (future profile-pill work) — they are
|
|
112
|
-
// intentionally unused today because the legacy patient chrome
|
|
113
|
-
// carries no profile pill.
|
|
114
|
-
userName: ee,
|
|
115
|
-
userAvatarSrc: te
|
|
116
|
-
}, s) => {
|
|
117
|
-
const { t: l } = m(), { theme: b, accessibility: S, resolvedTheme: d } = F(), v = b !== "system" || S !== "system", y = d.startsWith("dark") ? "dark" : "light", I = d.endsWith("-accessible"), [L, c] = w(!1), h = /* @__PURE__ */ e(q, { children: /* @__PURE__ */ e(
|
|
118
|
-
A,
|
|
119
|
-
{
|
|
120
|
-
mainAriaLabel: f,
|
|
121
|
-
mainClassName: "ds:bg-[color:var(--app-shell-background)]",
|
|
122
|
-
header: /* @__PURE__ */ n(H, { children: [
|
|
123
|
-
/* @__PURE__ */ n(x, { children: [
|
|
124
|
-
/* @__PURE__ */ e(N, { href: "#main-content" }),
|
|
125
|
-
/* @__PURE__ */ e(B, { onMenuOpen: () => c(!0) }),
|
|
126
|
-
/* @__PURE__ */ e(
|
|
127
|
-
M,
|
|
128
|
-
{
|
|
129
|
-
logo: p ?? /* @__PURE__ */ e(P, { variant: "monochrome", size: "md", decorative: !0 }),
|
|
130
|
-
href: u,
|
|
131
|
-
"aria-label": l("patientShell.brand.homeAria")
|
|
132
|
-
}
|
|
133
|
-
)
|
|
134
|
-
] }),
|
|
135
|
-
/* @__PURE__ */ e(T, {}),
|
|
136
|
-
/* @__PURE__ */ e(O, { children: /* @__PURE__ */ e(
|
|
137
|
-
Y,
|
|
138
|
-
{
|
|
139
|
-
logoutHref: t,
|
|
140
|
-
onToggleFullscreen: r
|
|
141
|
-
}
|
|
142
|
-
) })
|
|
143
|
-
] }),
|
|
144
|
-
sidebar: /* @__PURE__ */ e(
|
|
145
|
-
W,
|
|
146
|
-
{
|
|
147
|
-
...o !== void 0 ? { state: o } : { defaultState: "expanded" },
|
|
148
|
-
open: L,
|
|
149
|
-
onOpenChange: c,
|
|
150
|
-
"aria-label": l("patientShell.sidebar.panelLabel"),
|
|
151
|
-
"data-testid": "patient-shell-sidebar",
|
|
152
|
-
children: /* @__PURE__ */ e(Z, { menuItems: a })
|
|
153
|
-
}
|
|
154
|
-
),
|
|
155
|
-
children: g
|
|
156
|
-
}
|
|
157
|
-
) });
|
|
158
|
-
return v ? /* @__PURE__ */ e(
|
|
159
|
-
E,
|
|
160
|
-
{
|
|
161
|
-
ref: s,
|
|
162
|
-
theme: y,
|
|
163
|
-
accessible: I,
|
|
164
|
-
className: "ds:contents",
|
|
165
|
-
children: h
|
|
166
|
-
}
|
|
167
|
-
) : /* @__PURE__ */ e("div", { ref: s, className: "ds:contents", children: h });
|
|
168
|
-
}
|
|
169
|
-
);
|
|
170
|
-
$.displayName = "PatientShell";
|
|
171
|
-
export {
|
|
172
|
-
$ as P
|
|
173
|
-
};
|
|
174
|
-
//# sourceMappingURL=patient-shell-c2YixkQw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patient-shell-c2YixkQw.js","sources":["../../node_modules/lucide-react/dist/esm/icons/maximize-2.js","../../src/patterns/patient-shell/patient-shell.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"m21 3-7 7\", key: \"1l2asr\" }],\n [\"path\", { d: \"m3 21 7-7\", key: \"tjx5ai\" }],\n [\"path\", { d: \"M9 21H3v-6\", key: \"wtvkvv\" }]\n];\nconst Maximize2 = createLucideIcon(\"maximize-2\", __iconNode);\n\nexport { __iconNode, Maximize2 as default };\n//# sourceMappingURL=maximize-2.js.map\n","/**\n * Patient Shell — the chrome for AlfaDocs's patient-facing users\n * (patients managing their own appointments and records).\n *\n * Deliberately flatter than the clinician `AppFrame` composition: no\n * command palette, no favourites, no practice/chain affordances, no\n * Alia, no privacy lock. Mirrors the legacy `_header.html.twig`\n * `app.user.type == 'patient'` branch and the `knp_menu_render('pcp')`\n * flat nav menu.\n *\n * Unlike most patterns in this folder, PatientShell exports a runtime\n * component because the consuming patient-portal app mounts it in\n * production — the exports are surfaced via `src/patterns/index.ts`\n * and included in the library bundle.\n */\nimport { forwardRef, useState, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LogOut, Maximize2, Settings as SettingsIcon } from 'lucide-react';\n\nimport { AppFrame } from '../../components/app-frame';\nimport { IconButton } from '../../components/button';\nimport { DropdownMenu } from '../../components/dropdown-menu';\nimport {\n Header,\n HeaderBrand,\n HeaderCenter,\n HeaderEnd,\n HeaderMenuButton,\n HeaderSkipLink,\n HeaderStart,\n} from '../../components/header';\nimport { Logo } from '../../components/logo';\nimport {\n Sidebar,\n SidebarBody,\n SidebarItem,\n SidebarItemBadge,\n SidebarItemIcon,\n SidebarItemLabel,\n type SidebarMode,\n} from '../../components/sidebar';\nimport { ThemeRoot } from '../../components/theme-root';\nimport { TooltipProvider } from '../../components/tooltip';\nimport { useTheme } from '../../hooks/use-theme';\n\n/* ------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------ */\n\nexport interface PatientNavItem {\n id: string;\n /** Pre-translated label — patients' nav labels are emitted already\n * translated by the consuming app's backend (legacy `knp_menu`). */\n label: string;\n href: string;\n /** Optional leading icon. Pass a lucide-react or equivalent element. */\n icon?: ReactNode;\n /** Optional unseen-item count rendered as a pill badge. */\n badgeCount?: number;\n /** Mark the item as the current page (`aria-current='page'`). */\n isActive?: boolean;\n}\n\nexport interface PatientShellProps {\n /** Patient's display name. Used as the avatar fallback by consumers\n * that read the name through a slot; not rendered inside this shell\n * today because the legacy patient chrome carries no profile pill. */\n userName: string;\n /** Optional avatar URL. Reserved for future profile-pill surfaces;\n * no visible effect today. */\n userAvatarSrc?: string;\n /** Flat nav items rendered in the sidebar, in order. */\n menuItems: PatientNavItem[];\n /** URL the \"Logout\" action navigates to — typically `/logout`. */\n logoutHref: string;\n /** Fires when the user toggles fullscreen from the settings menu. */\n onToggleFullscreen?: () => void;\n /** Optional brand logo. Defaults to\n * `<Logo variant=\"monochrome\" size=\"md\" decorative />`. */\n brandLogo?: ReactNode;\n /** Link target for the brand — typically the patient dashboard. */\n brandHref?: string;\n /** Override the accessible name of the `<main>` landmark. */\n mainAriaLabel?: string;\n /**\n * Force the sidebar into a specific mode. Consuming apps typically\n * flip to `'overlay'` on narrow viewports and leave this undefined\n * elsewhere (the sidebar then defaults to `'expanded'`).\n */\n sidebarState?: SidebarMode;\n /** Children render inside the main content region. */\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Internals */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number): string {\n return count > 99 ? '99+' : String(count);\n}\n\n/**\n * Guard against `javascript:` and other non-navigation schemes before\n * handing the URL to `window.location.assign`. A consuming app that lets\n * attacker-controlled input reach `logoutHref` would otherwise execute\n * script. Allow only relative paths, hash fragments, and `http(s)` URLs.\n */\nfunction isSafeLogoutHref(href: string): boolean {\n if (href.startsWith('/') || href.startsWith('#') || href.startsWith('?')) {\n return true;\n }\n try {\n const url = new URL(href, window.location.origin);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nfunction SettingsMenu({\n logoutHref,\n onToggleFullscreen,\n}: {\n logoutHref: string;\n onToggleFullscreen?: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n icon={<SettingsIcon aria-hidden=\"true\" />}\n aria-label={t('patientShell.settings.triggerAria')}\n tooltip={t('patientShell.settings.triggerAria')}\n data-testid=\"patient-shell-settings-trigger\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Item\n startIcon={<Maximize2 aria-hidden=\"true\" />}\n onSelect={onToggleFullscreen}\n data-testid=\"patient-shell-fullscreen\"\n >\n {t('patientShell.settings.fullscreen')}\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item\n startIcon={<LogOut aria-hidden=\"true\" />}\n onSelect={() => {\n if (typeof window === 'undefined') return;\n if (!isSafeLogoutHref(logoutHref)) return;\n window.location.assign(logoutHref);\n }}\n data-testid=\"patient-shell-logout\"\n >\n {t('patientShell.settings.logout')}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n}\n\nfunction PatientSidebarNav({ menuItems }: { menuItems: PatientNavItem[] }) {\n return (\n <SidebarBody>\n {menuItems.map((item) => {\n const badge =\n typeof item.badgeCount === 'number' && item.badgeCount > 0\n ? item.badgeCount\n : undefined;\n return (\n <SidebarItem\n key={item.id}\n href={item.href}\n aria-label={item.label}\n isActive={item.isActive}\n >\n {item.icon ? <SidebarItemIcon>{item.icon}</SidebarItemIcon> : null}\n <SidebarItemLabel>{item.label}</SidebarItemLabel>\n {badge !== undefined ? (\n <SidebarItemBadge>{formatBadgeCount(badge)}</SidebarItemBadge>\n ) : null}\n </SidebarItem>\n );\n })}\n </SidebarBody>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const PatientShell = forwardRef<HTMLDivElement, PatientShellProps>(\n (\n {\n menuItems,\n logoutHref,\n onToggleFullscreen,\n brandLogo,\n brandHref = '/',\n mainAriaLabel,\n sidebarState,\n children,\n // `userName` and `userAvatarSrc` are declared on the public API\n // for forward-compatibility (future profile-pill work) — they are\n // intentionally unused today because the legacy patient chrome\n // carries no profile pill.\n userName: _userName,\n userAvatarSrc: _userAvatarSrc,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n // Only wrap children in a nested <ThemeRoot> when the user has\n // explicitly chosen a theme via the hook (e.g., through an in-app\n // toggle). Otherwise we let the outer cascade win — wrapping with\n // the hook's default `resolvedTheme = 'light'` would clobber a\n // consuming app's `<html>` theme class (or Storybook's decorator)\n // for every child rendered inside the shell.\n const { theme: themePref, accessibility, resolvedTheme } = useTheme();\n const hasExplicitOverride =\n themePref !== 'system' || accessibility !== 'system';\n const themeBase = resolvedTheme.startsWith('dark') ? 'dark' : 'light';\n const themeAccessible = resolvedTheme.endsWith('-accessible');\n\n // Narrow-viewport overlay: `HeaderMenuButton` only renders below the\n // `md` breakpoint, and toggling opens the Sidebar's overlay Dialog.\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const resolvedLogo = brandLogo ?? (\n <Logo variant=\"monochrome\" size=\"md\" decorative />\n );\n\n const shell = (\n <TooltipProvider>\n <AppFrame\n mainAriaLabel={mainAriaLabel}\n mainClassName=\"ds:bg-[color:var(--app-shell-background)]\"\n header={\n <Header>\n <HeaderStart>\n <HeaderSkipLink href=\"#main-content\" />\n <HeaderMenuButton onMenuOpen={() => setSidebarOpen(true)} />\n <HeaderBrand\n logo={resolvedLogo}\n href={brandHref}\n aria-label={t('patientShell.brand.homeAria')}\n />\n </HeaderStart>\n <HeaderCenter />\n <HeaderEnd>\n <SettingsMenu\n logoutHref={logoutHref}\n onToggleFullscreen={onToggleFullscreen}\n />\n </HeaderEnd>\n </Header>\n }\n sidebar={\n <Sidebar\n {...(sidebarState !== undefined\n ? { state: sidebarState }\n : { defaultState: 'expanded' as const })}\n open={sidebarOpen}\n onOpenChange={setSidebarOpen}\n aria-label={t('patientShell.sidebar.panelLabel')}\n data-testid=\"patient-shell-sidebar\"\n >\n <PatientSidebarNav menuItems={menuItems} />\n </Sidebar>\n }\n >\n {children}\n </AppFrame>\n </TooltipProvider>\n );\n\n if (!hasExplicitOverride) {\n // Pass-through wrapper preserves the ref contract without altering\n // the token cascade.\n return (\n <div ref={ref} className=\"ds:contents\">\n {shell}\n </div>\n );\n }\n\n return (\n <ThemeRoot\n ref={ref}\n theme={themeBase}\n accessible={themeAccessible}\n className=\"ds:contents\"\n >\n {shell}\n </ThemeRoot>\n );\n },\n);\n\nPatientShell.displayName = 'PatientShell';\n"],"names":["__iconNode","Maximize2","createLucideIcon","formatBadgeCount","count","isSafeLogoutHref","href","url","SettingsMenu","logoutHref","onToggleFullscreen","t","useTranslation","jsxs","DropdownMenu","jsx","IconButton","SettingsIcon","LogOut","PatientSidebarNav","menuItems","SidebarBody","item","badge","SidebarItem","SidebarItemIcon","SidebarItemLabel","SidebarItemBadge","PatientShell","forwardRef","brandLogo","brandHref","mainAriaLabel","sidebarState","children","_userName","_userAvatarSrc","ref","themePref","accessibility","resolvedTheme","useTheme","hasExplicitOverride","themeBase","themeAccessible","sidebarOpen","setSidebarOpen","useState","shell","TooltipProvider","AppFrame","Header","HeaderStart","HeaderSkipLink","HeaderMenuButton","HeaderBrand","Logo","HeaderCenter","HeaderEnd","Sidebar","ThemeRoot"],"mappings":"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","x_google_ignoreList":[0]}
|