@tonyarbor/components 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/AvatarLogoLockup.d.mts +41 -0
  2. package/dist/AvatarLogoLockup.d.ts +41 -0
  3. package/dist/AvatarLogoLockup.js +344 -0
  4. package/dist/AvatarLogoLockup.js.map +1 -0
  5. package/dist/AvatarLogoLockup.mjs +9 -0
  6. package/dist/AvatarLogoLockup.mjs.map +1 -0
  7. package/dist/Button.d.mts +1 -1
  8. package/dist/Button.d.ts +1 -1
  9. package/dist/Button.js +56 -0
  10. package/dist/Button.js.map +1 -1
  11. package/dist/Button.mjs +1 -1
  12. package/dist/Modal.d.mts +73 -0
  13. package/dist/Modal.d.ts +73 -0
  14. package/dist/Modal.js +114 -0
  15. package/dist/Modal.js.map +1 -0
  16. package/dist/Modal.mjs +9 -0
  17. package/dist/Modal.mjs.map +1 -0
  18. package/dist/ModalFooter.d.mts +40 -0
  19. package/dist/ModalFooter.d.ts +40 -0
  20. package/dist/ModalFooter.js +73 -0
  21. package/dist/ModalFooter.js.map +1 -0
  22. package/dist/ModalFooter.mjs +7 -0
  23. package/dist/ModalFooter.mjs.map +1 -0
  24. package/dist/ModalHeader.d.mts +65 -0
  25. package/dist/ModalHeader.d.ts +65 -0
  26. package/dist/ModalHeader.js +257 -0
  27. package/dist/ModalHeader.js.map +1 -0
  28. package/dist/ModalHeader.mjs +8 -0
  29. package/dist/ModalHeader.mjs.map +1 -0
  30. package/dist/TopNavBar.d.mts +103 -0
  31. package/dist/TopNavBar.d.ts +103 -0
  32. package/dist/TopNavBar.js +994 -0
  33. package/dist/TopNavBar.js.map +1 -0
  34. package/dist/TopNavBar.mjs +13 -0
  35. package/dist/TopNavBar.mjs.map +1 -0
  36. package/dist/TopNavItem.d.mts +33 -0
  37. package/dist/TopNavItem.d.ts +33 -0
  38. package/dist/TopNavItem.js +108 -0
  39. package/dist/TopNavItem.js.map +1 -0
  40. package/dist/TopNavItem.mjs +7 -0
  41. package/dist/TopNavItem.mjs.map +1 -0
  42. package/dist/chunk-7JWINM2N.mjs +77 -0
  43. package/dist/chunk-7JWINM2N.mjs.map +1 -0
  44. package/dist/chunk-AVYGOALO.mjs +72 -0
  45. package/dist/chunk-AVYGOALO.mjs.map +1 -0
  46. package/dist/chunk-GIQDPHZQ.mjs +121 -0
  47. package/dist/chunk-GIQDPHZQ.mjs.map +1 -0
  48. package/dist/chunk-HG2ORLLW.mjs +116 -0
  49. package/dist/chunk-HG2ORLLW.mjs.map +1 -0
  50. package/dist/{chunk-ALEJXAZY.mjs → chunk-NOUFR6W2.mjs} +57 -1
  51. package/dist/chunk-NOUFR6W2.mjs.map +1 -0
  52. package/dist/chunk-P7RKUESQ.mjs +37 -0
  53. package/dist/chunk-P7RKUESQ.mjs.map +1 -0
  54. package/dist/chunk-YUXQQX7M.mjs +182 -0
  55. package/dist/chunk-YUXQQX7M.mjs.map +1 -0
  56. package/dist/index.d.mts +7 -1
  57. package/dist/index.d.ts +7 -1
  58. package/dist/index.js +628 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/index.mjs +28 -2
  61. package/package.json +31 -1
  62. package/dist/chunk-ALEJXAZY.mjs.map +0 -1
package/dist/index.js CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  Avatar: () => Avatar,
34
+ AvatarLogoLockup: () => AvatarLogoLockup,
34
35
  Banner: () => Banner,
35
36
  Breadcrumbs: () => Breadcrumbs,
36
37
  Button: () => Button,
@@ -43,6 +44,10 @@ __export(src_exports, {
43
44
  ListRow: () => ListRow,
44
45
  ListRowMultiLine: () => ListRowMultiLine,
45
46
  Logo: () => Logo,
47
+ Modal: () => Modal,
48
+ ModalContent: () => ModalContent,
49
+ ModalFooter: () => ModalFooter,
50
+ ModalHeader: () => ModalHeader,
46
51
  NumericInput: () => NumericInput,
47
52
  Pagination: () => Pagination,
48
53
  Radio: () => Radio,
@@ -62,7 +67,9 @@ __export(src_exports, {
62
67
  TextArea: () => TextArea,
63
68
  Toast: () => Toast,
64
69
  Toggle: () => Toggle,
65
- Tooltip: () => Tooltip
70
+ Tooltip: () => Tooltip,
71
+ TopNavBar: () => TopNavBar,
72
+ TopNavItem: () => TopNavItem
66
73
  });
67
74
  module.exports = __toCommonJS(src_exports);
68
75
 
@@ -134,6 +141,32 @@ var buttonStyles = {
134
141
  cursor: "not-allowed"
135
142
  }
136
143
  },
144
+ tertiary: {
145
+ backgroundColor: "#efefef",
146
+ // grey-100
147
+ color: "#2f2f2f",
148
+ // grey-900
149
+ ":hover": {
150
+ backgroundColor: "#dfdfdf"
151
+ // grey-200
152
+ },
153
+ ":active": {
154
+ backgroundColor: "#d1d1d1"
155
+ // grey-300
156
+ },
157
+ ":focus-visible": {
158
+ outline: "3px solid #3cad51",
159
+ // brand-500
160
+ outlineOffset: "0px"
161
+ },
162
+ ":disabled": {
163
+ backgroundColor: "#f8f8f8",
164
+ // grey-050
165
+ color: "#b3b3b3",
166
+ // grey-400
167
+ cursor: "not-allowed"
168
+ }
169
+ },
137
170
  destructive: {
138
171
  backgroundColor: "#c93232",
139
172
  // destructive-500
@@ -156,6 +189,36 @@ var buttonStyles = {
156
189
  cursor: "not-allowed"
157
190
  }
158
191
  },
192
+ "destructive-secondary": {
193
+ backgroundColor: "#ffffff",
194
+ color: "#a62323",
195
+ // destructive-600
196
+ border: "1px solid #c93232",
197
+ // destructive-500
198
+ ":hover": {
199
+ backgroundColor: "#a62323",
200
+ // destructive-600
201
+ color: "#ffffff",
202
+ border: "1px solid #a62323"
203
+ },
204
+ ":active": {
205
+ backgroundColor: "#920a0a",
206
+ // destructive-700
207
+ color: "#ffffff",
208
+ border: "1px solid #920a0a"
209
+ },
210
+ ":focus-visible": {
211
+ outline: "3px solid #3cad51",
212
+ // brand-500 (green focus ring)
213
+ outlineOffset: "0px"
214
+ },
215
+ ":disabled": {
216
+ backgroundColor: "#ffffff",
217
+ color: "#b3b3b3",
218
+ border: "1px solid #d1d1d1",
219
+ cursor: "not-allowed"
220
+ }
221
+ },
159
222
  ghost: {
160
223
  backgroundColor: "transparent",
161
224
  color: "#0b800b",
@@ -6130,9 +6193,566 @@ var Section = React33.forwardRef(
6130
6193
  }
6131
6194
  );
6132
6195
  Section.displayName = "Section";
6196
+
6197
+ // src/ModalHeader/ModalHeader.tsx
6198
+ var React34 = __toESM(require("react"));
6199
+ var import_clsx29 = require("clsx");
6200
+ var import_jsx_runtime34 = require("react/jsx-runtime");
6201
+ var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
6202
+ "svg",
6203
+ {
6204
+ width: "10",
6205
+ height: "10",
6206
+ viewBox: "0 0 10 10",
6207
+ fill: "none",
6208
+ xmlns: "http://www.w3.org/2000/svg",
6209
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
6210
+ "path",
6211
+ {
6212
+ d: "M1 1L9 9M9 1L1 9",
6213
+ stroke: "#2f2f2f",
6214
+ strokeWidth: "1.5",
6215
+ strokeLinecap: "round",
6216
+ strokeLinejoin: "round"
6217
+ }
6218
+ )
6219
+ }
6220
+ );
6221
+ var modalHeaderStyles = {
6222
+ container: {
6223
+ display: "flex",
6224
+ alignItems: "center",
6225
+ justifyContent: "space-between",
6226
+ width: "100%",
6227
+ padding: "16px",
6228
+ backgroundColor: "#ffffff",
6229
+ boxSizing: "border-box",
6230
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
6231
+ minHeight: "56px"
6232
+ },
6233
+ leftContent: {
6234
+ display: "flex",
6235
+ alignItems: "center",
6236
+ gap: "16px",
6237
+ flex: 1
6238
+ },
6239
+ title: {
6240
+ fontSize: "22px",
6241
+ fontWeight: "600",
6242
+ color: "#2f2f2f",
6243
+ lineHeight: "1.25",
6244
+ margin: 0
6245
+ },
6246
+ closeButton: {
6247
+ display: "flex",
6248
+ alignItems: "center",
6249
+ justifyContent: "center",
6250
+ width: "32px",
6251
+ height: "32px",
6252
+ borderRadius: "16px",
6253
+ backgroundColor: "#ffffff",
6254
+ border: "none",
6255
+ cursor: "pointer",
6256
+ padding: 0,
6257
+ flexShrink: 0,
6258
+ transition: "background-color 0.15s ease-in-out"
6259
+ },
6260
+ closeButtonHover: {
6261
+ backgroundColor: "#f8f8f8"
6262
+ },
6263
+ closeButtonFocus: {
6264
+ outline: "3px solid #3cad51",
6265
+ outlineOffset: "-3px"
6266
+ }
6267
+ };
6268
+ var ModalHeader = React34.forwardRef(
6269
+ ({ title, icon, onClose, className, style, ...props }, ref) => {
6270
+ const [isHovered, setIsHovered] = React34.useState(false);
6271
+ const [isFocused, setIsFocused] = React34.useState(false);
6272
+ const closeButtonStyle = {
6273
+ ...modalHeaderStyles.closeButton,
6274
+ ...isHovered && modalHeaderStyles.closeButtonHover,
6275
+ ...isFocused && modalHeaderStyles.closeButtonFocus
6276
+ };
6277
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
6278
+ "div",
6279
+ {
6280
+ ref,
6281
+ className: (0, import_clsx29.clsx)("arbor-modal-header", className),
6282
+ style: { ...modalHeaderStyles.container, ...style },
6283
+ ...props,
6284
+ children: [
6285
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { style: modalHeaderStyles.leftContent, children: [
6286
+ icon && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SectionIcon, { variant: icon }),
6287
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h2", { style: modalHeaderStyles.title, children: title })
6288
+ ] }),
6289
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
6290
+ "button",
6291
+ {
6292
+ type: "button",
6293
+ onClick: onClose,
6294
+ onMouseEnter: () => setIsHovered(true),
6295
+ onMouseLeave: () => setIsHovered(false),
6296
+ onFocus: () => setIsFocused(true),
6297
+ onBlur: () => setIsFocused(false),
6298
+ style: closeButtonStyle,
6299
+ "aria-label": "Close modal",
6300
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CloseIcon, {})
6301
+ }
6302
+ )
6303
+ ]
6304
+ }
6305
+ );
6306
+ }
6307
+ );
6308
+ ModalHeader.displayName = "ModalHeader";
6309
+
6310
+ // src/ModalFooter/ModalFooter.tsx
6311
+ var React35 = __toESM(require("react"));
6312
+ var import_clsx30 = require("clsx");
6313
+ var import_jsx_runtime35 = require("react/jsx-runtime");
6314
+ var modalFooterStyles = {
6315
+ container: {
6316
+ display: "flex",
6317
+ alignItems: "center",
6318
+ justifyContent: "flex-end",
6319
+ gap: "16px",
6320
+ width: "100%",
6321
+ padding: "16px",
6322
+ backgroundColor: "#ffffff",
6323
+ boxSizing: "border-box",
6324
+ maxHeight: "56px"
6325
+ }
6326
+ };
6327
+ var ModalFooter = React35.forwardRef(
6328
+ ({ children, className, style, ...props }, ref) => {
6329
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
6330
+ "div",
6331
+ {
6332
+ ref,
6333
+ className: (0, import_clsx30.clsx)("arbor-modal-footer", className),
6334
+ style: { ...modalFooterStyles.container, ...style },
6335
+ ...props,
6336
+ children
6337
+ }
6338
+ );
6339
+ }
6340
+ );
6341
+ ModalFooter.displayName = "ModalFooter";
6342
+
6343
+ // src/Modal/Modal.tsx
6344
+ var React36 = __toESM(require("react"));
6345
+ var import_clsx31 = require("clsx");
6346
+ var import_jsx_runtime36 = require("react/jsx-runtime");
6347
+ var modalStyles = {
6348
+ container: {
6349
+ display: "flex",
6350
+ flexDirection: "column",
6351
+ alignItems: "flex-start",
6352
+ backgroundColor: "#f8f8f8",
6353
+ // grey-050
6354
+ borderRadius: "8px",
6355
+ boxShadow: "0px 8px 24px 0px rgba(32, 32, 32, 0.12)",
6356
+ overflow: "hidden",
6357
+ boxSizing: "border-box",
6358
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
6359
+ },
6360
+ content: {
6361
+ display: "flex",
6362
+ alignItems: "center",
6363
+ justifyContent: "center",
6364
+ width: "100%",
6365
+ padding: "32px 16px",
6366
+ backgroundColor: "#f8f8f8",
6367
+ // grey-050
6368
+ boxSizing: "border-box"
6369
+ },
6370
+ contentText: {
6371
+ flex: 1,
6372
+ fontSize: "13px",
6373
+ fontWeight: "400",
6374
+ color: "#2f2f2f",
6375
+ lineHeight: "1.5"
6376
+ }
6377
+ };
6378
+ var Modal = React36.forwardRef(
6379
+ ({ children, width = 584, className, style, ...props }, ref) => {
6380
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
6381
+ "div",
6382
+ {
6383
+ ref,
6384
+ className: (0, import_clsx31.clsx)("arbor-modal", className),
6385
+ style: {
6386
+ ...modalStyles.container,
6387
+ width: typeof width === "number" ? `${width}px` : width,
6388
+ ...style
6389
+ },
6390
+ role: "dialog",
6391
+ "aria-modal": "true",
6392
+ ...props,
6393
+ children
6394
+ }
6395
+ );
6396
+ }
6397
+ );
6398
+ Modal.displayName = "Modal";
6399
+ var ModalContent = React36.forwardRef(
6400
+ ({ children, className, style, ...props }, ref) => {
6401
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
6402
+ "div",
6403
+ {
6404
+ ref,
6405
+ className: (0, import_clsx31.clsx)("arbor-modal-content", className),
6406
+ style: { ...modalStyles.content, ...style },
6407
+ ...props,
6408
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { style: modalStyles.contentText, children })
6409
+ }
6410
+ );
6411
+ }
6412
+ );
6413
+ ModalContent.displayName = "ModalContent";
6414
+
6415
+ // src/AvatarLogoLockup/AvatarLogoLockup.tsx
6416
+ var React37 = __toESM(require("react"));
6417
+ var import_lucide_react14 = require("lucide-react");
6418
+ var import_jsx_runtime37 = require("react/jsx-runtime");
6419
+ var AvatarLogoLockup = React37.forwardRef(
6420
+ ({
6421
+ avatarSrc,
6422
+ avatarInitials,
6423
+ avatarAlt = "User avatar",
6424
+ onAvatarClick,
6425
+ onLogoClick,
6426
+ className,
6427
+ style
6428
+ }, ref) => {
6429
+ const [isHovered, setIsHovered] = React37.useState(false);
6430
+ const containerStyles6 = {
6431
+ display: "inline-flex",
6432
+ alignItems: "center",
6433
+ gap: "4px",
6434
+ padding: "4px",
6435
+ height: "40px",
6436
+ backgroundColor: isHovered ? "#f8f8f8" : "#ffffff",
6437
+ border: "1px solid #efefef",
6438
+ borderRadius: "99px",
6439
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
6440
+ boxSizing: "border-box",
6441
+ transition: "background-color 0.15s ease-in-out",
6442
+ ...style
6443
+ };
6444
+ const avatarSectionStyles = {
6445
+ display: "flex",
6446
+ alignItems: "center",
6447
+ gap: "4px",
6448
+ borderRadius: "99px",
6449
+ cursor: onAvatarClick ? "pointer" : "default",
6450
+ backgroundColor: "transparent",
6451
+ border: "none",
6452
+ padding: 0
6453
+ };
6454
+ const dividerStyles = {
6455
+ width: "1px",
6456
+ height: "24px",
6457
+ backgroundColor: "#efefef",
6458
+ flexShrink: 0
6459
+ };
6460
+ const logoSectionStyles = {
6461
+ display: "flex",
6462
+ alignItems: "center",
6463
+ cursor: onLogoClick ? "pointer" : "default",
6464
+ padding: 0
6465
+ };
6466
+ const AvatarSection = onAvatarClick ? "button" : "div";
6467
+ const LogoSection = onLogoClick ? "button" : "div";
6468
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
6469
+ "div",
6470
+ {
6471
+ ref,
6472
+ className,
6473
+ style: containerStyles6,
6474
+ onMouseEnter: () => setIsHovered(true),
6475
+ onMouseLeave: () => setIsHovered(false),
6476
+ children: [
6477
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
6478
+ AvatarSection,
6479
+ {
6480
+ style: {
6481
+ ...avatarSectionStyles,
6482
+ ...onAvatarClick ? { outline: "none" } : {}
6483
+ },
6484
+ onClick: onAvatarClick,
6485
+ ...onAvatarClick ? { type: "button" } : {},
6486
+ children: [
6487
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
6488
+ Avatar,
6489
+ {
6490
+ size: "medium",
6491
+ src: avatarSrc,
6492
+ initials: avatarInitials,
6493
+ alt: avatarAlt
6494
+ }
6495
+ ),
6496
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react14.ChevronDown, { size: 12, color: "#2f2f2f", strokeWidth: 2 })
6497
+ ]
6498
+ }
6499
+ ),
6500
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { style: dividerStyles }),
6501
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
6502
+ LogoSection,
6503
+ {
6504
+ style: {
6505
+ ...logoSectionStyles,
6506
+ ...onLogoClick ? { outline: "none", backgroundColor: "transparent", border: "none" } : {}
6507
+ },
6508
+ onClick: onLogoClick,
6509
+ ...onLogoClick ? { type: "button" } : {},
6510
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Logo, { withText: true, light: true, height: 25 })
6511
+ }
6512
+ )
6513
+ ]
6514
+ }
6515
+ );
6516
+ }
6517
+ );
6518
+ AvatarLogoLockup.displayName = "AvatarLogoLockup";
6519
+
6520
+ // src/TopNavItem/TopNavItem.tsx
6521
+ var React38 = __toESM(require("react"));
6522
+ var import_lucide_react15 = require("lucide-react");
6523
+ var import_jsx_runtime38 = require("react/jsx-runtime");
6524
+ var TopNavItem = React38.forwardRef(
6525
+ ({
6526
+ children,
6527
+ active = false,
6528
+ onClick,
6529
+ className,
6530
+ style
6531
+ }, ref) => {
6532
+ const [isHovered, setIsHovered] = React38.useState(false);
6533
+ const [isFocused, setIsFocused] = React38.useState(false);
6534
+ const textColor = active ? "#005700" : "#474747";
6535
+ const iconColor = active ? "#005700" : "#474747";
6536
+ const getBackgroundColor = () => {
6537
+ if (active) return "#f0faf3";
6538
+ if (isHovered) return "#f8f8f8";
6539
+ return "transparent";
6540
+ };
6541
+ const containerStyles6 = {
6542
+ display: "inline-flex",
6543
+ alignItems: "center",
6544
+ justifyContent: "center",
6545
+ gap: "4px",
6546
+ padding: "4px 8px",
6547
+ backgroundColor: getBackgroundColor(),
6548
+ borderRadius: "8px",
6549
+ border: "none",
6550
+ cursor: "pointer",
6551
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
6552
+ boxSizing: "border-box",
6553
+ transition: "background-color 0.15s ease-in-out",
6554
+ outline: "none",
6555
+ boxShadow: isFocused ? "0px 0px 0px 3px #3cad51" : "none",
6556
+ ...style
6557
+ };
6558
+ const textStyles3 = {
6559
+ fontSize: "13px",
6560
+ fontWeight: 600,
6561
+ color: textColor,
6562
+ lineHeight: 1.5,
6563
+ textAlign: "center",
6564
+ whiteSpace: "nowrap"
6565
+ };
6566
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
6567
+ "button",
6568
+ {
6569
+ ref,
6570
+ className,
6571
+ style: containerStyles6,
6572
+ onClick,
6573
+ onMouseEnter: () => setIsHovered(true),
6574
+ onMouseLeave: () => setIsHovered(false),
6575
+ onFocus: () => setIsFocused(true),
6576
+ onBlur: () => setIsFocused(false),
6577
+ type: "button",
6578
+ children: [
6579
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { style: textStyles3, children }),
6580
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react15.ChevronDown, { size: 12, color: iconColor, strokeWidth: 2 })
6581
+ ]
6582
+ }
6583
+ );
6584
+ }
6585
+ );
6586
+ TopNavItem.displayName = "TopNavItem";
6587
+
6588
+ // src/TopNavBar/TopNavBar.tsx
6589
+ var React39 = __toESM(require("react"));
6590
+ var import_lucide_react16 = require("lucide-react");
6591
+ var import_jsx_runtime39 = require("react/jsx-runtime");
6592
+ var TopNavBar = React39.forwardRef(
6593
+ ({
6594
+ schoolLogoSrc,
6595
+ schoolLogoAlt = "School logo",
6596
+ onSchoolLogoClick,
6597
+ navItems = [],
6598
+ onNavItemClick,
6599
+ searchValue = "",
6600
+ onSearchChange,
6601
+ onSearchSubmit,
6602
+ onSearchClear,
6603
+ actionButtonLabel = "Ask Arbor",
6604
+ onActionButtonClick,
6605
+ showActionButton = true,
6606
+ avatarSrc,
6607
+ avatarInitials,
6608
+ avatarAlt = "User avatar",
6609
+ onAvatarClick,
6610
+ onLogoClick,
6611
+ className,
6612
+ style
6613
+ }, ref) => {
6614
+ const containerStyles6 = {
6615
+ position: "fixed",
6616
+ top: 0,
6617
+ left: 0,
6618
+ right: 0,
6619
+ display: "flex",
6620
+ alignItems: "center",
6621
+ justifyContent: "space-between",
6622
+ padding: "4px 8px",
6623
+ backgroundColor: "#ffffff",
6624
+ boxShadow: "0px 1px 2px 0px rgba(0, 0, 0, 0.08)",
6625
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
6626
+ boxSizing: "border-box",
6627
+ zIndex: 1e3,
6628
+ height: "48px",
6629
+ ...style
6630
+ };
6631
+ const leftSectionStyles = {
6632
+ display: "flex",
6633
+ alignItems: "center",
6634
+ gap: "16px"
6635
+ };
6636
+ const schoolLogoContainerStyles = {
6637
+ display: "flex",
6638
+ alignItems: "center",
6639
+ justifyContent: "center",
6640
+ width: "64px",
6641
+ height: "40px",
6642
+ backgroundColor: "#ffffff",
6643
+ border: "1px solid #efefef",
6644
+ borderRadius: "8px",
6645
+ overflow: "hidden",
6646
+ padding: "2px",
6647
+ boxSizing: "border-box",
6648
+ cursor: onSchoolLogoClick ? "pointer" : "default"
6649
+ };
6650
+ const schoolLogoImageStyles = {
6651
+ maxWidth: "100%",
6652
+ maxHeight: "100%",
6653
+ objectFit: "contain"
6654
+ };
6655
+ const placeholderStyles = {
6656
+ width: "100%",
6657
+ height: "100%",
6658
+ display: "flex",
6659
+ alignItems: "center",
6660
+ justifyContent: "center",
6661
+ backgroundColor: "#f8f8f8",
6662
+ color: "#949494",
6663
+ fontSize: "10px",
6664
+ fontWeight: 500,
6665
+ textAlign: "center"
6666
+ };
6667
+ const navItemsGroupStyles = {
6668
+ display: "flex",
6669
+ alignItems: "center",
6670
+ gap: "8px"
6671
+ };
6672
+ const rightSectionStyles = {
6673
+ display: "flex",
6674
+ alignItems: "center",
6675
+ gap: "16px"
6676
+ };
6677
+ const actionButtonStyles2 = {
6678
+ display: "flex",
6679
+ alignItems: "center",
6680
+ gap: "8px"
6681
+ };
6682
+ const SchoolLogoElement = onSchoolLogoClick ? "button" : "div";
6683
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("nav", { ref, className, style: containerStyles6, children: [
6684
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { style: leftSectionStyles, children: [
6685
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
6686
+ SchoolLogoElement,
6687
+ {
6688
+ style: {
6689
+ ...schoolLogoContainerStyles,
6690
+ ...onSchoolLogoClick ? { outline: "none", border: "1px solid #efefef" } : {}
6691
+ },
6692
+ onClick: onSchoolLogoClick,
6693
+ ...onSchoolLogoClick ? { type: "button" } : {},
6694
+ children: schoolLogoSrc ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
6695
+ "img",
6696
+ {
6697
+ src: schoolLogoSrc,
6698
+ alt: schoolLogoAlt,
6699
+ style: schoolLogoImageStyles
6700
+ }
6701
+ ) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { style: placeholderStyles, children: "Logo" })
6702
+ }
6703
+ ),
6704
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { style: navItemsGroupStyles, children: navItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
6705
+ TopNavItem,
6706
+ {
6707
+ active: item.active,
6708
+ onClick: () => onNavItemClick?.(item),
6709
+ children: item.label
6710
+ },
6711
+ item.id
6712
+ )) })
6713
+ ] }),
6714
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { style: rightSectionStyles, children: [
6715
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
6716
+ SearchGlobal,
6717
+ {
6718
+ value: searchValue,
6719
+ onChange: onSearchChange,
6720
+ onSubmit: onSearchSubmit,
6721
+ onClear: onSearchClear
6722
+ }
6723
+ ),
6724
+ showActionButton && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
6725
+ Button,
6726
+ {
6727
+ variant: "secondary",
6728
+ size: "small",
6729
+ onClick: onActionButtonClick,
6730
+ style: actionButtonStyles2,
6731
+ children: [
6732
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react16.Sparkles, { size: 16, strokeWidth: 2 }),
6733
+ actionButtonLabel
6734
+ ]
6735
+ }
6736
+ ),
6737
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
6738
+ AvatarLogoLockup,
6739
+ {
6740
+ avatarSrc,
6741
+ avatarInitials,
6742
+ avatarAlt,
6743
+ onAvatarClick,
6744
+ onLogoClick
6745
+ }
6746
+ )
6747
+ ] })
6748
+ ] });
6749
+ }
6750
+ );
6751
+ TopNavBar.displayName = "TopNavBar";
6133
6752
  // Annotate the CommonJS export names for ESM import in node:
6134
6753
  0 && (module.exports = {
6135
6754
  Avatar,
6755
+ AvatarLogoLockup,
6136
6756
  Banner,
6137
6757
  Breadcrumbs,
6138
6758
  Button,
@@ -6145,6 +6765,10 @@ Section.displayName = "Section";
6145
6765
  ListRow,
6146
6766
  ListRowMultiLine,
6147
6767
  Logo,
6768
+ Modal,
6769
+ ModalContent,
6770
+ ModalFooter,
6771
+ ModalHeader,
6148
6772
  NumericInput,
6149
6773
  Pagination,
6150
6774
  Radio,
@@ -6164,6 +6788,8 @@ Section.displayName = "Section";
6164
6788
  TextArea,
6165
6789
  Toast,
6166
6790
  Toggle,
6167
- Tooltip
6791
+ Tooltip,
6792
+ TopNavBar,
6793
+ TopNavItem
6168
6794
  });
6169
6795
  //# sourceMappingURL=index.js.map