@tonyarbor/components 0.7.0 → 0.8.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/AvatarLogoLockup.d.mts +41 -0
- package/dist/AvatarLogoLockup.d.ts +41 -0
- package/dist/AvatarLogoLockup.js +344 -0
- package/dist/AvatarLogoLockup.js.map +1 -0
- package/dist/AvatarLogoLockup.mjs +9 -0
- package/dist/AvatarLogoLockup.mjs.map +1 -0
- package/dist/SideNavBar.d.mts +35 -0
- package/dist/SideNavBar.d.ts +35 -0
- package/dist/SideNavBar.js +235 -0
- package/dist/SideNavBar.js.map +1 -0
- package/dist/SideNavBar.mjs +8 -0
- package/dist/SideNavBar.mjs.map +1 -0
- package/dist/SideNavButton.d.mts +42 -0
- package/dist/SideNavButton.d.ts +42 -0
- package/dist/SideNavButton.js +136 -0
- package/dist/SideNavButton.js.map +1 -0
- package/dist/SideNavButton.mjs +7 -0
- package/dist/SideNavButton.mjs.map +1 -0
- package/dist/TopNavBar.d.mts +103 -0
- package/dist/TopNavBar.d.ts +103 -0
- package/dist/TopNavBar.js +994 -0
- package/dist/TopNavBar.js.map +1 -0
- package/dist/TopNavBar.mjs +13 -0
- package/dist/TopNavBar.mjs.map +1 -0
- package/dist/TopNavItem.d.mts +33 -0
- package/dist/TopNavItem.d.ts +33 -0
- package/dist/TopNavItem.js +108 -0
- package/dist/TopNavItem.js.map +1 -0
- package/dist/TopNavItem.mjs +7 -0
- package/dist/TopNavItem.mjs.map +1 -0
- package/dist/chunk-AVYGOALO.mjs +72 -0
- package/dist/chunk-AVYGOALO.mjs.map +1 -0
- package/dist/chunk-GO2UDHKM.mjs +107 -0
- package/dist/chunk-GO2UDHKM.mjs.map +1 -0
- package/dist/chunk-HG2ORLLW.mjs +116 -0
- package/dist/chunk-HG2ORLLW.mjs.map +1 -0
- package/dist/chunk-I4ZVW4AI.mjs +100 -0
- package/dist/chunk-I4ZVW4AI.mjs.map +1 -0
- package/dist/chunk-YUXQQX7M.mjs +182 -0
- package/dist/chunk-YUXQQX7M.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +545 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -1
- package/package.json +26 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Logo
|
|
3
|
+
} from "./chunk-NNYU4DPD.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Avatar
|
|
6
|
+
} from "./chunk-JSG27ZZS.mjs";
|
|
7
|
+
|
|
8
|
+
// src/AvatarLogoLockup/AvatarLogoLockup.tsx
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import { ChevronDown } from "lucide-react";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
var AvatarLogoLockup = React.forwardRef(
|
|
13
|
+
({
|
|
14
|
+
avatarSrc,
|
|
15
|
+
avatarInitials,
|
|
16
|
+
avatarAlt = "User avatar",
|
|
17
|
+
onAvatarClick,
|
|
18
|
+
onLogoClick,
|
|
19
|
+
className,
|
|
20
|
+
style
|
|
21
|
+
}, ref) => {
|
|
22
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
23
|
+
const containerStyles = {
|
|
24
|
+
display: "inline-flex",
|
|
25
|
+
alignItems: "center",
|
|
26
|
+
gap: "4px",
|
|
27
|
+
padding: "4px",
|
|
28
|
+
height: "40px",
|
|
29
|
+
backgroundColor: isHovered ? "#f8f8f8" : "#ffffff",
|
|
30
|
+
border: "1px solid #efefef",
|
|
31
|
+
borderRadius: "99px",
|
|
32
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
33
|
+
boxSizing: "border-box",
|
|
34
|
+
transition: "background-color 0.15s ease-in-out",
|
|
35
|
+
...style
|
|
36
|
+
};
|
|
37
|
+
const avatarSectionStyles = {
|
|
38
|
+
display: "flex",
|
|
39
|
+
alignItems: "center",
|
|
40
|
+
gap: "4px",
|
|
41
|
+
borderRadius: "99px",
|
|
42
|
+
cursor: onAvatarClick ? "pointer" : "default",
|
|
43
|
+
backgroundColor: "transparent",
|
|
44
|
+
border: "none",
|
|
45
|
+
padding: 0
|
|
46
|
+
};
|
|
47
|
+
const dividerStyles = {
|
|
48
|
+
width: "1px",
|
|
49
|
+
height: "24px",
|
|
50
|
+
backgroundColor: "#efefef",
|
|
51
|
+
flexShrink: 0
|
|
52
|
+
};
|
|
53
|
+
const logoSectionStyles = {
|
|
54
|
+
display: "flex",
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
cursor: onLogoClick ? "pointer" : "default",
|
|
57
|
+
padding: 0
|
|
58
|
+
};
|
|
59
|
+
const AvatarSection = onAvatarClick ? "button" : "div";
|
|
60
|
+
const LogoSection = onLogoClick ? "button" : "div";
|
|
61
|
+
return /* @__PURE__ */ jsxs(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
ref,
|
|
65
|
+
className,
|
|
66
|
+
style: containerStyles,
|
|
67
|
+
onMouseEnter: () => setIsHovered(true),
|
|
68
|
+
onMouseLeave: () => setIsHovered(false),
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsxs(
|
|
71
|
+
AvatarSection,
|
|
72
|
+
{
|
|
73
|
+
style: {
|
|
74
|
+
...avatarSectionStyles,
|
|
75
|
+
...onAvatarClick ? { outline: "none" } : {}
|
|
76
|
+
},
|
|
77
|
+
onClick: onAvatarClick,
|
|
78
|
+
...onAvatarClick ? { type: "button" } : {},
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ jsx(
|
|
81
|
+
Avatar,
|
|
82
|
+
{
|
|
83
|
+
size: "medium",
|
|
84
|
+
src: avatarSrc,
|
|
85
|
+
initials: avatarInitials,
|
|
86
|
+
alt: avatarAlt
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ jsx(ChevronDown, { size: 12, color: "#2f2f2f", strokeWidth: 2 })
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
/* @__PURE__ */ jsx("div", { style: dividerStyles }),
|
|
94
|
+
/* @__PURE__ */ jsx(
|
|
95
|
+
LogoSection,
|
|
96
|
+
{
|
|
97
|
+
style: {
|
|
98
|
+
...logoSectionStyles,
|
|
99
|
+
...onLogoClick ? { outline: "none", backgroundColor: "transparent", border: "none" } : {}
|
|
100
|
+
},
|
|
101
|
+
onClick: onLogoClick,
|
|
102
|
+
...onLogoClick ? { type: "button" } : {},
|
|
103
|
+
children: /* @__PURE__ */ jsx(Logo, { withText: true, light: true, height: 25 })
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
AvatarLogoLockup.displayName = "AvatarLogoLockup";
|
|
112
|
+
|
|
113
|
+
export {
|
|
114
|
+
AvatarLogoLockup
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=chunk-HG2ORLLW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/AvatarLogoLockup/AvatarLogoLockup.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { Avatar } from '../Avatar';\nimport { Logo } from '../Logo';\n\nexport interface AvatarLogoLockupProps {\n /**\n * Image source URL for the avatar\n */\n avatarSrc?: string;\n /**\n * Initials to display in avatar when no image is provided\n */\n avatarInitials?: string;\n /**\n * Alt text for the avatar image\n */\n avatarAlt?: string;\n /**\n * Click handler for the avatar section\n */\n onAvatarClick?: () => void;\n /**\n * Click handler for the logo section\n */\n onLogoClick?: () => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\n/**\n * AvatarLogoLockup component - Arbor Design System\n *\n * A navigation component combining user avatar with Arbor logo,\n * typically used in the top navigation bar.\n */\nexport const AvatarLogoLockup = React.forwardRef<HTMLDivElement, AvatarLogoLockupProps>(\n (\n {\n avatarSrc,\n avatarInitials,\n avatarAlt = 'User avatar',\n onAvatarClick,\n onLogoClick,\n className,\n style,\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n\n const containerStyles: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n padding: '4px',\n height: '40px',\n backgroundColor: isHovered ? '#f8f8f8' : '#ffffff',\n border: '1px solid #efefef',\n borderRadius: '99px',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n boxSizing: 'border-box',\n transition: 'background-color 0.15s ease-in-out',\n ...style,\n };\n\n const avatarSectionStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n borderRadius: '99px',\n cursor: onAvatarClick ? 'pointer' : 'default',\n backgroundColor: 'transparent',\n border: 'none',\n padding: 0,\n };\n\n const dividerStyles: React.CSSProperties = {\n width: '1px',\n height: '24px',\n backgroundColor: '#efefef',\n flexShrink: 0,\n };\n\n const logoSectionStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n cursor: onLogoClick ? 'pointer' : 'default',\n padding: 0,\n };\n\n const AvatarSection = onAvatarClick ? 'button' : 'div';\n const LogoSection = onLogoClick ? 'button' : 'div';\n\n return (\n <div\n ref={ref}\n className={className}\n style={containerStyles}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <AvatarSection\n style={{\n ...avatarSectionStyles,\n ...(onAvatarClick ? { outline: 'none' } : {}),\n }}\n onClick={onAvatarClick}\n {...(onAvatarClick ? { type: 'button' } : {})}\n >\n <Avatar\n size=\"medium\"\n src={avatarSrc}\n initials={avatarInitials}\n alt={avatarAlt}\n />\n <ChevronDown size={12} color=\"#2f2f2f\" strokeWidth={2} />\n </AvatarSection>\n\n <div style={dividerStyles} />\n\n <LogoSection\n style={{\n ...logoSectionStyles,\n ...(onLogoClick ? { outline: 'none', backgroundColor: 'transparent', border: 'none' } : {}),\n }}\n onClick={onLogoClick}\n {...(onLogoClick ? { type: 'button' } : {})}\n >\n <Logo withText={true} light={true} height={25} />\n </LogoSection>\n </div>\n );\n }\n);\n\nAvatarLogoLockup.displayName = 'AvatarLogoLockup';\n"],"mappings":";;;;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,mBAAmB;AA2GpB,SAQE,KARF;AAlED,IAAM,mBAAyB;AAAA,EACpC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,UAAM,CAAC,WAAW,YAAY,IAAU,eAAS,KAAK;AAEtD,UAAM,kBAAuC;AAAA,MAC3C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,iBAAiB,YAAY,YAAY;AAAA,MACzC,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,GAAG;AAAA,IACL;AAEA,UAAM,sBAA2C;AAAA,MAC/C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,cAAc;AAAA,MACd,QAAQ,gBAAgB,YAAY;AAAA,MACpC,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAEA,UAAM,gBAAqC;AAAA,MACzC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,YAAY;AAAA,IACd;AAEA,UAAM,oBAAyC;AAAA,MAC7C,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ,cAAc,YAAY;AAAA,MAClC,SAAS;AAAA,IACX;AAEA,UAAM,gBAAgB,gBAAgB,WAAW;AACjD,UAAM,cAAc,cAAc,WAAW;AAE7C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,cAAc,MAAM,aAAa,IAAI;AAAA,QACrC,cAAc,MAAM,aAAa,KAAK;AAAA,QAEtC;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,GAAI,gBAAgB,EAAE,SAAS,OAAO,IAAI,CAAC;AAAA,cAC7C;AAAA,cACA,SAAS;AAAA,cACR,GAAI,gBAAgB,EAAE,MAAM,SAAS,IAAI,CAAC;AAAA,cAE3C;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,KAAK;AAAA,oBACL,UAAU;AAAA,oBACV,KAAK;AAAA;AAAA,gBACP;AAAA,gBACA,oBAAC,eAAY,MAAM,IAAI,OAAM,WAAU,aAAa,GAAG;AAAA;AAAA;AAAA,UACzD;AAAA,UAEA,oBAAC,SAAI,OAAO,eAAe;AAAA,UAE3B;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,GAAI,cAAc,EAAE,SAAS,QAAQ,iBAAiB,eAAe,QAAQ,OAAO,IAAI,CAAC;AAAA,cAC3F;AAAA,cACA,SAAS;AAAA,cACR,GAAI,cAAc,EAAE,MAAM,SAAS,IAAI,CAAC;AAAA,cAEzC,8BAAC,QAAK,UAAU,MAAM,OAAO,MAAM,QAAQ,IAAI;AAAA;AAAA,UACjD;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,iBAAiB,cAAc;","names":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/SideNavButton/SideNavButton.tsx
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Home, Menu, Star, Calendar, Bell, AlertTriangle, HelpCircle } from "lucide-react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var SideNavButton = React.forwardRef(
|
|
6
|
+
({
|
|
7
|
+
icon,
|
|
8
|
+
selected = false,
|
|
9
|
+
focused = false,
|
|
10
|
+
onClick,
|
|
11
|
+
"aria-label": ariaLabel,
|
|
12
|
+
className,
|
|
13
|
+
style
|
|
14
|
+
}, ref) => {
|
|
15
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
16
|
+
const [isActive, setIsActive] = React.useState(false);
|
|
17
|
+
const getIconColor = () => {
|
|
18
|
+
if (selected) return "#0e8a0e";
|
|
19
|
+
if (isActive || isHovered) return "#2f2f2f";
|
|
20
|
+
return "#7e7e7e";
|
|
21
|
+
};
|
|
22
|
+
const getBackgroundColor = () => {
|
|
23
|
+
if (selected) return "#f0faf3";
|
|
24
|
+
if (isActive) return "#efefef";
|
|
25
|
+
if (isHovered) return "#f8f8f8";
|
|
26
|
+
return "transparent";
|
|
27
|
+
};
|
|
28
|
+
const buttonStyles = {
|
|
29
|
+
display: "flex",
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
justifyContent: "center",
|
|
32
|
+
width: "42px",
|
|
33
|
+
height: "42px",
|
|
34
|
+
borderRadius: "99px",
|
|
35
|
+
border: "none",
|
|
36
|
+
backgroundColor: getBackgroundColor(),
|
|
37
|
+
cursor: "pointer",
|
|
38
|
+
padding: 0,
|
|
39
|
+
outline: "none",
|
|
40
|
+
transition: "background-color 150ms ease, box-shadow 150ms ease",
|
|
41
|
+
boxShadow: focused ? "0px 0px 0px 3px #3cad51" : "none",
|
|
42
|
+
...style
|
|
43
|
+
};
|
|
44
|
+
const renderIcon = () => {
|
|
45
|
+
const iconColor = getIconColor();
|
|
46
|
+
const iconSize = 20;
|
|
47
|
+
const strokeWidth = 2;
|
|
48
|
+
const iconProps = {
|
|
49
|
+
size: iconSize,
|
|
50
|
+
color: iconColor,
|
|
51
|
+
strokeWidth
|
|
52
|
+
};
|
|
53
|
+
switch (icon) {
|
|
54
|
+
case "side-menu":
|
|
55
|
+
return /* @__PURE__ */ jsx(Menu, { ...iconProps });
|
|
56
|
+
case "home":
|
|
57
|
+
return /* @__PURE__ */ jsx(Home, { ...iconProps });
|
|
58
|
+
case "favourite":
|
|
59
|
+
return /* @__PURE__ */ jsx(Star, { ...iconProps });
|
|
60
|
+
case "calendar":
|
|
61
|
+
return /* @__PURE__ */ jsx(Calendar, { ...iconProps });
|
|
62
|
+
case "notifications":
|
|
63
|
+
return /* @__PURE__ */ jsx(Bell, { ...iconProps });
|
|
64
|
+
case "emergency-alert":
|
|
65
|
+
return /* @__PURE__ */ jsx(AlertTriangle, { ...iconProps });
|
|
66
|
+
case "help":
|
|
67
|
+
return /* @__PURE__ */ jsx(HelpCircle, { ...iconProps });
|
|
68
|
+
default:
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const defaultAriaLabel = icon.charAt(0).toUpperCase() + icon.slice(1);
|
|
73
|
+
return /* @__PURE__ */ jsx(
|
|
74
|
+
"button",
|
|
75
|
+
{
|
|
76
|
+
ref,
|
|
77
|
+
type: "button",
|
|
78
|
+
className,
|
|
79
|
+
style: buttonStyles,
|
|
80
|
+
onClick,
|
|
81
|
+
onMouseEnter: () => setIsHovered(true),
|
|
82
|
+
onMouseLeave: () => {
|
|
83
|
+
setIsHovered(false);
|
|
84
|
+
setIsActive(false);
|
|
85
|
+
},
|
|
86
|
+
onMouseDown: () => setIsActive(true),
|
|
87
|
+
onMouseUp: () => setIsActive(false),
|
|
88
|
+
"aria-label": ariaLabel || defaultAriaLabel,
|
|
89
|
+
"aria-pressed": selected,
|
|
90
|
+
children: renderIcon()
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
SideNavButton.displayName = "SideNavButton";
|
|
96
|
+
|
|
97
|
+
export {
|
|
98
|
+
SideNavButton
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=chunk-I4ZVW4AI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/SideNavButton/SideNavButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Home, Menu, Star, Calendar, Bell, AlertTriangle, HelpCircle } from 'lucide-react';\n\nexport type SideNavButtonIcon = 'side-menu' | 'home' | 'favourite' | 'calendar' | 'notifications' | 'emergency-alert' | 'help';\n\nexport interface SideNavButtonProps {\n /**\n * The icon to display\n */\n icon: SideNavButtonIcon;\n /**\n * Whether the button is selected/active\n */\n selected?: boolean;\n /**\n * Whether the button is focused (shows green ring)\n */\n focused?: boolean;\n /**\n * Click handler\n */\n onClick?: () => void;\n /**\n * Accessible label for the button\n */\n 'aria-label'?: string;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\n/**\n * SideNavButton component - Arbor Design System\n *\n * A circular navigation button used in the side navigation bar.\n * Supports different icons and states (default, hover, active, selected, focused).\n */\nexport const SideNavButton = React.forwardRef<HTMLButtonElement, SideNavButtonProps>(\n (\n {\n icon,\n selected = false,\n focused = false,\n onClick,\n 'aria-label': ariaLabel,\n className,\n style,\n },\n ref\n ) => {\n const [isHovered, setIsHovered] = React.useState(false);\n const [isActive, setIsActive] = React.useState(false);\n\n // Determine icon color based on state\n const getIconColor = () => {\n if (selected) return '#0e8a0e'; // Green for selected\n if (isActive || isHovered) return '#2f2f2f'; // Dark gray for hover/active\n return '#7e7e7e'; // Gray for default\n };\n\n // Determine background color based on state\n const getBackgroundColor = () => {\n if (selected) return '#f0faf3'; // Light green for selected\n if (isActive) return '#efefef'; // Darker gray for active\n if (isHovered) return '#f8f8f8'; // Light gray for hover\n return 'transparent'; // Transparent for default\n };\n\n const buttonStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '42px',\n height: '42px',\n borderRadius: '99px',\n border: 'none',\n backgroundColor: getBackgroundColor(),\n cursor: 'pointer',\n padding: 0,\n outline: 'none',\n transition: 'background-color 150ms ease, box-shadow 150ms ease',\n boxShadow: focused ? '0px 0px 0px 3px #3cad51' : 'none',\n ...style,\n };\n\n // Get the appropriate icon component\n const renderIcon = () => {\n const iconColor = getIconColor();\n const iconSize = 20;\n const strokeWidth = 2;\n\n // All icons are stroke-only (outline), no fill - just color changes\n const iconProps = {\n size: iconSize,\n color: iconColor,\n strokeWidth,\n };\n\n switch (icon) {\n case 'side-menu':\n return <Menu {...iconProps} />;\n case 'home':\n return <Home {...iconProps} />;\n case 'favourite':\n return <Star {...iconProps} />;\n case 'calendar':\n return <Calendar {...iconProps} />;\n case 'notifications':\n return <Bell {...iconProps} />;\n case 'emergency-alert':\n return <AlertTriangle {...iconProps} />;\n case 'help':\n return <HelpCircle {...iconProps} />;\n default:\n return null;\n }\n };\n\n // Default aria-label based on icon\n const defaultAriaLabel = icon.charAt(0).toUpperCase() + icon.slice(1);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={className}\n style={buttonStyles}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsActive(false);\n }}\n onMouseDown={() => setIsActive(true)}\n onMouseUp={() => setIsActive(false)}\n aria-label={ariaLabel || defaultAriaLabel}\n aria-pressed={selected}\n >\n {renderIcon()}\n </button>\n );\n }\n);\n\nSideNavButton.displayName = 'SideNavButton';\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,SAAS,MAAM,MAAM,MAAM,UAAU,MAAM,eAAe,kBAAkB;AAwG3D;AA/DV,IAAM,gBAAsB;AAAA,EACjC,CACE;AAAA,IACE;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,UAAM,CAAC,WAAW,YAAY,IAAU,eAAS,KAAK;AACtD,UAAM,CAAC,UAAU,WAAW,IAAU,eAAS,KAAK;AAGpD,UAAM,eAAe,MAAM;AACzB,UAAI,SAAU,QAAO;AACrB,UAAI,YAAY,UAAW,QAAO;AAClC,aAAO;AAAA,IACT;AAGA,UAAM,qBAAqB,MAAM;AAC/B,UAAI,SAAU,QAAO;AACrB,UAAI,SAAU,QAAO;AACrB,UAAI,UAAW,QAAO;AACtB,aAAO;AAAA,IACT;AAEA,UAAM,eAAoC;AAAA,MACxC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,iBAAiB,mBAAmB;AAAA,MACpC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,WAAW,UAAU,4BAA4B;AAAA,MACjD,GAAG;AAAA,IACL;AAGA,UAAM,aAAa,MAAM;AACvB,YAAM,YAAY,aAAa;AAC/B,YAAM,WAAW;AACjB,YAAM,cAAc;AAGpB,YAAM,YAAY;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,QACP;AAAA,MACF;AAEA,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO,oBAAC,QAAM,GAAG,WAAW;AAAA,QAC9B,KAAK;AACH,iBAAO,oBAAC,QAAM,GAAG,WAAW;AAAA,QAC9B,KAAK;AACH,iBAAO,oBAAC,QAAM,GAAG,WAAW;AAAA,QAC9B,KAAK;AACH,iBAAO,oBAAC,YAAU,GAAG,WAAW;AAAA,QAClC,KAAK;AACH,iBAAO,oBAAC,QAAM,GAAG,WAAW;AAAA,QAC9B,KAAK;AACH,iBAAO,oBAAC,iBAAe,GAAG,WAAW;AAAA,QACvC,KAAK;AACH,iBAAO,oBAAC,cAAY,GAAG,WAAW;AAAA,QACpC;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAGA,UAAM,mBAAmB,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAEpE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,cAAc,MAAM,aAAa,IAAI;AAAA,QACrC,cAAc,MAAM;AAClB,uBAAa,KAAK;AAClB,sBAAY,KAAK;AAAA,QACnB;AAAA,QACA,aAAa,MAAM,YAAY,IAAI;AAAA,QACnC,WAAW,MAAM,YAAY,KAAK;AAAA,QAClC,cAAY,aAAa;AAAA,QACzB,gBAAc;AAAA,QAEb,qBAAW;AAAA;AAAA,IACd;AAAA,EAEJ;AACF;AAEA,cAAc,cAAc;","names":[]}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AvatarLogoLockup
|
|
3
|
+
} from "./chunk-HG2ORLLW.mjs";
|
|
4
|
+
import {
|
|
5
|
+
TopNavItem
|
|
6
|
+
} from "./chunk-AVYGOALO.mjs";
|
|
7
|
+
import {
|
|
8
|
+
SearchGlobal
|
|
9
|
+
} from "./chunk-UPBHDBAK.mjs";
|
|
10
|
+
import {
|
|
11
|
+
Button
|
|
12
|
+
} from "./chunk-NOUFR6W2.mjs";
|
|
13
|
+
|
|
14
|
+
// src/TopNavBar/TopNavBar.tsx
|
|
15
|
+
import * as React from "react";
|
|
16
|
+
import { Sparkles } from "lucide-react";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
var TopNavBar = React.forwardRef(
|
|
19
|
+
({
|
|
20
|
+
schoolLogoSrc,
|
|
21
|
+
schoolLogoAlt = "School logo",
|
|
22
|
+
onSchoolLogoClick,
|
|
23
|
+
navItems = [],
|
|
24
|
+
onNavItemClick,
|
|
25
|
+
searchValue = "",
|
|
26
|
+
onSearchChange,
|
|
27
|
+
onSearchSubmit,
|
|
28
|
+
onSearchClear,
|
|
29
|
+
actionButtonLabel = "Ask Arbor",
|
|
30
|
+
onActionButtonClick,
|
|
31
|
+
showActionButton = true,
|
|
32
|
+
avatarSrc,
|
|
33
|
+
avatarInitials,
|
|
34
|
+
avatarAlt = "User avatar",
|
|
35
|
+
onAvatarClick,
|
|
36
|
+
onLogoClick,
|
|
37
|
+
className,
|
|
38
|
+
style
|
|
39
|
+
}, ref) => {
|
|
40
|
+
const containerStyles = {
|
|
41
|
+
position: "fixed",
|
|
42
|
+
top: 0,
|
|
43
|
+
left: 0,
|
|
44
|
+
right: 0,
|
|
45
|
+
display: "flex",
|
|
46
|
+
alignItems: "center",
|
|
47
|
+
justifyContent: "space-between",
|
|
48
|
+
padding: "4px 8px",
|
|
49
|
+
backgroundColor: "#ffffff",
|
|
50
|
+
boxShadow: "0px 1px 2px 0px rgba(0, 0, 0, 0.08)",
|
|
51
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
52
|
+
boxSizing: "border-box",
|
|
53
|
+
zIndex: 1e3,
|
|
54
|
+
height: "48px",
|
|
55
|
+
...style
|
|
56
|
+
};
|
|
57
|
+
const leftSectionStyles = {
|
|
58
|
+
display: "flex",
|
|
59
|
+
alignItems: "center",
|
|
60
|
+
gap: "16px"
|
|
61
|
+
};
|
|
62
|
+
const schoolLogoContainerStyles = {
|
|
63
|
+
display: "flex",
|
|
64
|
+
alignItems: "center",
|
|
65
|
+
justifyContent: "center",
|
|
66
|
+
width: "64px",
|
|
67
|
+
height: "40px",
|
|
68
|
+
backgroundColor: "#ffffff",
|
|
69
|
+
border: "1px solid #efefef",
|
|
70
|
+
borderRadius: "8px",
|
|
71
|
+
overflow: "hidden",
|
|
72
|
+
padding: "2px",
|
|
73
|
+
boxSizing: "border-box",
|
|
74
|
+
cursor: onSchoolLogoClick ? "pointer" : "default"
|
|
75
|
+
};
|
|
76
|
+
const schoolLogoImageStyles = {
|
|
77
|
+
maxWidth: "100%",
|
|
78
|
+
maxHeight: "100%",
|
|
79
|
+
objectFit: "contain"
|
|
80
|
+
};
|
|
81
|
+
const placeholderStyles = {
|
|
82
|
+
width: "100%",
|
|
83
|
+
height: "100%",
|
|
84
|
+
display: "flex",
|
|
85
|
+
alignItems: "center",
|
|
86
|
+
justifyContent: "center",
|
|
87
|
+
backgroundColor: "#f8f8f8",
|
|
88
|
+
color: "#949494",
|
|
89
|
+
fontSize: "10px",
|
|
90
|
+
fontWeight: 500,
|
|
91
|
+
textAlign: "center"
|
|
92
|
+
};
|
|
93
|
+
const navItemsGroupStyles = {
|
|
94
|
+
display: "flex",
|
|
95
|
+
alignItems: "center",
|
|
96
|
+
gap: "8px"
|
|
97
|
+
};
|
|
98
|
+
const rightSectionStyles = {
|
|
99
|
+
display: "flex",
|
|
100
|
+
alignItems: "center",
|
|
101
|
+
gap: "16px"
|
|
102
|
+
};
|
|
103
|
+
const actionButtonStyles = {
|
|
104
|
+
display: "flex",
|
|
105
|
+
alignItems: "center",
|
|
106
|
+
gap: "8px"
|
|
107
|
+
};
|
|
108
|
+
const SchoolLogoElement = onSchoolLogoClick ? "button" : "div";
|
|
109
|
+
return /* @__PURE__ */ jsxs("nav", { ref, className, style: containerStyles, children: [
|
|
110
|
+
/* @__PURE__ */ jsxs("div", { style: leftSectionStyles, children: [
|
|
111
|
+
/* @__PURE__ */ jsx(
|
|
112
|
+
SchoolLogoElement,
|
|
113
|
+
{
|
|
114
|
+
style: {
|
|
115
|
+
...schoolLogoContainerStyles,
|
|
116
|
+
...onSchoolLogoClick ? { outline: "none", border: "1px solid #efefef" } : {}
|
|
117
|
+
},
|
|
118
|
+
onClick: onSchoolLogoClick,
|
|
119
|
+
...onSchoolLogoClick ? { type: "button" } : {},
|
|
120
|
+
children: schoolLogoSrc ? /* @__PURE__ */ jsx(
|
|
121
|
+
"img",
|
|
122
|
+
{
|
|
123
|
+
src: schoolLogoSrc,
|
|
124
|
+
alt: schoolLogoAlt,
|
|
125
|
+
style: schoolLogoImageStyles
|
|
126
|
+
}
|
|
127
|
+
) : /* @__PURE__ */ jsx("div", { style: placeholderStyles, children: "Logo" })
|
|
128
|
+
}
|
|
129
|
+
),
|
|
130
|
+
/* @__PURE__ */ jsx("div", { style: navItemsGroupStyles, children: navItems.map((item) => /* @__PURE__ */ jsx(
|
|
131
|
+
TopNavItem,
|
|
132
|
+
{
|
|
133
|
+
active: item.active,
|
|
134
|
+
onClick: () => onNavItemClick?.(item),
|
|
135
|
+
children: item.label
|
|
136
|
+
},
|
|
137
|
+
item.id
|
|
138
|
+
)) })
|
|
139
|
+
] }),
|
|
140
|
+
/* @__PURE__ */ jsxs("div", { style: rightSectionStyles, children: [
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
SearchGlobal,
|
|
143
|
+
{
|
|
144
|
+
value: searchValue,
|
|
145
|
+
onChange: onSearchChange,
|
|
146
|
+
onSubmit: onSearchSubmit,
|
|
147
|
+
onClear: onSearchClear
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
showActionButton && /* @__PURE__ */ jsxs(
|
|
151
|
+
Button,
|
|
152
|
+
{
|
|
153
|
+
variant: "secondary",
|
|
154
|
+
size: "small",
|
|
155
|
+
onClick: onActionButtonClick,
|
|
156
|
+
style: actionButtonStyles,
|
|
157
|
+
children: [
|
|
158
|
+
/* @__PURE__ */ jsx(Sparkles, { size: 16, strokeWidth: 2 }),
|
|
159
|
+
actionButtonLabel
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
),
|
|
163
|
+
/* @__PURE__ */ jsx(
|
|
164
|
+
AvatarLogoLockup,
|
|
165
|
+
{
|
|
166
|
+
avatarSrc,
|
|
167
|
+
avatarInitials,
|
|
168
|
+
avatarAlt,
|
|
169
|
+
onAvatarClick,
|
|
170
|
+
onLogoClick
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
] })
|
|
174
|
+
] });
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
TopNavBar.displayName = "TopNavBar";
|
|
178
|
+
|
|
179
|
+
export {
|
|
180
|
+
TopNavBar
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=chunk-YUXQQX7M.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/TopNavBar/TopNavBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Sparkles } from 'lucide-react';\nimport { TopNavItem } from '../TopNavItem';\nimport { SearchGlobal } from '../SearchGlobal';\nimport { Button } from '../Button';\nimport { AvatarLogoLockup } from '../AvatarLogoLockup';\n\nexport interface NavItem {\n /**\n * Unique identifier for the nav item\n */\n id: string;\n /**\n * Display label for the nav item\n */\n label: string;\n /**\n * Whether this nav item is currently active\n */\n active?: boolean;\n}\n\nexport interface TopNavBarProps {\n /**\n * School logo image source URL\n */\n schoolLogoSrc?: string;\n /**\n * Alt text for school logo\n */\n schoolLogoAlt?: string;\n /**\n * Click handler for school logo\n */\n onSchoolLogoClick?: () => void;\n /**\n * Array of navigation items\n */\n navItems?: NavItem[];\n /**\n * Callback when a nav item is clicked\n */\n onNavItemClick?: (item: NavItem) => void;\n /**\n * Search value\n */\n searchValue?: string;\n /**\n * Search change handler\n */\n onSearchChange?: (value: string) => void;\n /**\n * Search submit handler\n */\n onSearchSubmit?: (value: string) => void;\n /**\n * Search clear handler\n */\n onSearchClear?: () => void;\n /**\n * Action button label (e.g., \"Ask Arbor\")\n */\n actionButtonLabel?: string;\n /**\n * Action button click handler\n */\n onActionButtonClick?: () => void;\n /**\n * Whether to show the action button\n */\n showActionButton?: boolean;\n /**\n * User avatar image source URL\n */\n avatarSrc?: string;\n /**\n * User avatar initials (fallback when no image)\n */\n avatarInitials?: string;\n /**\n * User avatar alt text\n */\n avatarAlt?: string;\n /**\n * Avatar section click handler\n */\n onAvatarClick?: () => void;\n /**\n * Logo section click handler\n */\n onLogoClick?: () => void;\n /**\n * Custom className\n */\n className?: string;\n /**\n * Custom style\n */\n style?: React.CSSProperties;\n}\n\n/**\n * TopNavBar component - Arbor Design System\n *\n * A full-width navigation bar fixed to the top of the page.\n * Contains school logo, navigation items, search, action button, and avatar-logo lockup.\n */\nexport const TopNavBar = React.forwardRef<HTMLElement, TopNavBarProps>(\n (\n {\n schoolLogoSrc,\n schoolLogoAlt = 'School logo',\n onSchoolLogoClick,\n navItems = [],\n onNavItemClick,\n searchValue = '',\n onSearchChange,\n onSearchSubmit,\n onSearchClear,\n actionButtonLabel = 'Ask Arbor',\n onActionButtonClick,\n showActionButton = true,\n avatarSrc,\n avatarInitials,\n avatarAlt = 'User avatar',\n onAvatarClick,\n onLogoClick,\n className,\n style,\n },\n ref\n ) => {\n const containerStyles: React.CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '4px 8px',\n backgroundColor: '#ffffff',\n boxShadow: '0px 1px 2px 0px rgba(0, 0, 0, 0.08)',\n fontFamily: \"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n boxSizing: 'border-box',\n zIndex: 1000,\n height: '48px',\n ...style,\n };\n\n const leftSectionStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n };\n\n const schoolLogoContainerStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '64px',\n height: '40px',\n backgroundColor: '#ffffff',\n border: '1px solid #efefef',\n borderRadius: '8px',\n overflow: 'hidden',\n padding: '2px',\n boxSizing: 'border-box',\n cursor: onSchoolLogoClick ? 'pointer' : 'default',\n };\n\n const schoolLogoImageStyles: React.CSSProperties = {\n maxWidth: '100%',\n maxHeight: '100%',\n objectFit: 'contain',\n };\n\n const placeholderStyles: React.CSSProperties = {\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#f8f8f8',\n color: '#949494',\n fontSize: '10px',\n fontWeight: 500,\n textAlign: 'center',\n };\n\n const navItemsGroupStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n };\n\n const rightSectionStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n };\n\n const actionButtonStyles: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n };\n\n const SchoolLogoElement = onSchoolLogoClick ? 'button' : 'div';\n\n return (\n <nav ref={ref} className={className} style={containerStyles}>\n {/* Left section: School logo + Nav items */}\n <div style={leftSectionStyles}>\n <SchoolLogoElement\n style={{\n ...schoolLogoContainerStyles,\n ...(onSchoolLogoClick ? { outline: 'none', border: '1px solid #efefef' } : {}),\n }}\n onClick={onSchoolLogoClick}\n {...(onSchoolLogoClick ? { type: 'button' } : {})}\n >\n {schoolLogoSrc ? (\n <img\n src={schoolLogoSrc}\n alt={schoolLogoAlt}\n style={schoolLogoImageStyles}\n />\n ) : (\n <div style={placeholderStyles}>Logo</div>\n )}\n </SchoolLogoElement>\n\n <div style={navItemsGroupStyles}>\n {navItems.map((item) => (\n <TopNavItem\n key={item.id}\n active={item.active}\n onClick={() => onNavItemClick?.(item)}\n >\n {item.label}\n </TopNavItem>\n ))}\n </div>\n </div>\n\n {/* Right section: Search + Action button + Avatar-Logo lockup */}\n <div style={rightSectionStyles}>\n <SearchGlobal\n value={searchValue}\n onChange={onSearchChange}\n onSubmit={onSearchSubmit}\n onClear={onSearchClear}\n />\n\n {showActionButton && (\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onActionButtonClick}\n style={actionButtonStyles}\n >\n <Sparkles size={16} strokeWidth={2} />\n {actionButtonLabel}\n </Button>\n )}\n\n <AvatarLogoLockup\n avatarSrc={avatarSrc}\n avatarInitials={avatarInitials}\n avatarAlt={avatarAlt}\n onAvatarClick={onAvatarClick}\n onLogoClick={onLogoClick}\n />\n </div>\n </nav>\n );\n }\n);\n\nTopNavBar.displayName = 'TopNavBar';\n"],"mappings":"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","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -34,6 +34,11 @@ export { Section, SectionProps } from './Section.mjs';
|
|
|
34
34
|
export { ModalHeader, ModalHeaderProps } from './ModalHeader.mjs';
|
|
35
35
|
export { ModalFooter, ModalFooterProps } from './ModalFooter.mjs';
|
|
36
36
|
export { Modal, ModalContent, ModalContentProps, ModalProps } from './Modal.mjs';
|
|
37
|
+
export { AvatarLogoLockup, AvatarLogoLockupProps } from './AvatarLogoLockup.mjs';
|
|
38
|
+
export { TopNavItem, TopNavItemProps } from './TopNavItem.mjs';
|
|
39
|
+
export { NavItem, TopNavBar, TopNavBarProps } from './TopNavBar.mjs';
|
|
40
|
+
export { SideNavButton, SideNavButtonIcon, SideNavButtonProps } from './SideNavButton.mjs';
|
|
41
|
+
export { SideNavBar, SideNavBarIcon, SideNavBarProps } from './SideNavBar.mjs';
|
|
37
42
|
import 'react';
|
|
38
43
|
|
|
39
44
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,11 @@ export { Section, SectionProps } from './Section.js';
|
|
|
34
34
|
export { ModalHeader, ModalHeaderProps } from './ModalHeader.js';
|
|
35
35
|
export { ModalFooter, ModalFooterProps } from './ModalFooter.js';
|
|
36
36
|
export { Modal, ModalContent, ModalContentProps, ModalProps } from './Modal.js';
|
|
37
|
+
export { AvatarLogoLockup, AvatarLogoLockupProps } from './AvatarLogoLockup.js';
|
|
38
|
+
export { TopNavItem, TopNavItemProps } from './TopNavItem.js';
|
|
39
|
+
export { NavItem, TopNavBar, TopNavBarProps } from './TopNavBar.js';
|
|
40
|
+
export { SideNavButton, SideNavButtonIcon, SideNavButtonProps } from './SideNavButton.js';
|
|
41
|
+
export { SideNavBar, SideNavBarIcon, SideNavBarProps } from './SideNavBar.js';
|
|
37
42
|
import 'react';
|
|
38
43
|
|
|
39
44
|
/**
|