@syscore/ui-library 1.1.12 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/client/components/icons/AchievementBadges.tsx +33 -0
  2. package/client/components/icons/ConceptIcons.tsx +169 -22
  3. package/client/components/icons/NavLogo.tsx +4 -4
  4. package/client/components/icons/ProviderBadges.tsx +28 -28
  5. package/client/components/icons/ProviderSeals.tsx +35 -35
  6. package/client/components/icons/StandardLogo.tsx +47 -0
  7. package/client/components/icons/UtilityChevronDown.tsx +1 -1
  8. package/client/components/icons/UtilityClearRegular.tsx +43 -0
  9. package/client/components/icons/UtilityCompare.tsx +71 -0
  10. package/client/components/icons/UtilityHome.tsx +26 -0
  11. package/client/components/icons/UtilityReset.tsx +7 -7
  12. package/client/components/icons/UtilitySave.tsx +35 -0
  13. package/client/components/icons/UtilityScopeLarge.tsx +86 -0
  14. package/client/components/icons/UtilityShow.tsx +41 -0
  15. package/client/components/icons/UtilityTarget.tsx +21 -0
  16. package/client/components/icons/UtilityTargetActive.tsx +34 -0
  17. package/client/components/icons/UtilityText.tsx +8 -8
  18. package/client/components/ui/accordion.tsx +6 -9
  19. package/client/components/ui/alert-dialog.tsx +6 -19
  20. package/client/components/ui/alert.tsx +5 -6
  21. package/client/components/ui/avatar.tsx +3 -9
  22. package/client/components/ui/badge.tsx +5 -8
  23. package/client/components/ui/breadcrumb.tsx +24 -11
  24. package/client/components/ui/button.tsx +40 -56
  25. package/client/components/ui/calendar.tsx +24 -28
  26. package/client/components/ui/card.tsx +6 -9
  27. package/client/components/ui/carousel.tsx +14 -14
  28. package/client/components/ui/chart.tsx +25 -28
  29. package/client/components/ui/checkbox.tsx +3 -8
  30. package/client/components/ui/code-badge.tsx +22 -0
  31. package/client/components/ui/command.tsx +12 -48
  32. package/client/components/ui/context-menu.tsx +17 -32
  33. package/client/components/ui/dialog.tsx +9 -18
  34. package/client/components/ui/drawer.tsx +7 -13
  35. package/client/components/ui/dropdown-menu.tsx +17 -29
  36. package/client/components/ui/form.tsx +4 -4
  37. package/client/components/ui/hover-card.tsx +1 -4
  38. package/client/components/ui/input-otp.tsx +7 -10
  39. package/client/components/ui/input.tsx +34 -9
  40. package/client/components/ui/label.tsx +2 -4
  41. package/client/components/ui/menubar.tsx +19 -40
  42. package/client/components/ui/navigation-menu.tsx +10 -27
  43. package/client/components/ui/navigation.tsx +861 -0
  44. package/client/components/ui/pagination.tsx +8 -8
  45. package/client/components/ui/popover.tsx +1 -4
  46. package/client/components/ui/progress.tsx +2 -5
  47. package/client/components/ui/radio-group.tsx +4 -7
  48. package/client/components/ui/resizable.tsx +4 -10
  49. package/client/components/ui/scroll-area.tsx +5 -8
  50. package/client/components/ui/{SearchField.tsx → search.tsx} +7 -10
  51. package/client/components/ui/select.tsx +19 -44
  52. package/client/components/ui/separator.tsx +2 -2
  53. package/client/components/ui/sheet.tsx +12 -23
  54. package/client/components/ui/sidebar.tsx +55 -82
  55. package/client/components/ui/skeleton.tsx +1 -1
  56. package/client/components/ui/slider.tsx +4 -7
  57. package/client/components/ui/sonner.tsx +5 -8
  58. package/client/components/ui/switch.tsx +2 -9
  59. package/client/components/ui/table.tsx +9 -18
  60. package/client/components/ui/tabs.tsx +43 -203
  61. package/client/components/ui/tag.tsx +68 -0
  62. package/client/components/ui/textarea.tsx +1 -4
  63. package/client/components/ui/toast.tsx +9 -19
  64. package/client/components/ui/toaster.tsx +1 -1
  65. package/client/components/ui/toggle-group.tsx +20 -3
  66. package/client/components/ui/toggle.tsx +13 -13
  67. package/client/components/ui/tooltip.tsx +147 -10
  68. package/client/global.css +5421 -1049
  69. package/client/storybook.css +1164 -0
  70. package/client/ui/AspectRatio.stories.tsx +1 -1
  71. package/client/ui/Button.stories.tsx +5 -5
  72. package/client/ui/Card.stories.tsx +223 -2
  73. package/client/ui/CodeBadge.stories.tsx +76 -0
  74. package/client/ui/Dialog.stories.tsx +52 -5
  75. package/client/ui/Icons.stories.tsx +31 -31
  76. package/client/ui/Input.stories.tsx +125 -0
  77. package/client/ui/Label.stories.tsx +8 -11
  78. package/client/ui/Navigation.stories.tsx +1 -1
  79. package/client/ui/RadioGroup/RadioGroup.stories.tsx +1 -1
  80. package/client/ui/SearchField.stories.tsx +1 -1
  81. package/client/ui/{Select/Select.stories.tsx → Select.stories.tsx} +2 -2
  82. package/client/ui/{Switch/Switch.stories.tsx → Switch.stories.tsx} +3 -3
  83. package/client/ui/Tabs.stories.tsx +174 -10
  84. package/client/ui/Tag.stories.tsx +48 -1
  85. package/client/ui/{Textarea/Textarea.stories.tsx → Textarea.stories.tsx} +9 -10
  86. package/client/ui/Toggle.stories.tsx +3 -3
  87. package/client/ui/Tooltip.stories.tsx +28 -4
  88. package/dist/ui/index.cjs.js +1 -1
  89. package/dist/ui/index.d.ts +4 -6
  90. package/dist/ui/index.es.js +1227 -2235
  91. package/dist/ui/ui-library.css +1 -0
  92. package/package.json +3 -3
  93. package/client/components/ui/Navigation.tsx +0 -958
  94. package/client/components/ui/StrategyTable.tsx +0 -303
  95. package/client/components/ui/Tag.tsx +0 -127
  96. package/client/ui/Input/Input.stories.tsx +0 -69
  97. package/client/ui/StrategyTable.stories.tsx +0 -138
  98. package/client/ui/WELLDashboard/WELLDashboard.stories.tsx +0 -115
  99. package/client/ui/WELLDashboard/index.tsx +0 -317
  100. /package/client/hooks/{UseTabs.tsx → use-tabs.tsx} +0 -0
@@ -0,0 +1,861 @@
1
+ import * as React from "react";
2
+ import { AnimatePresence, motion } from "motion/react";
3
+ import { cn } from "@/lib/utils";
4
+ import { UtilityClose } from "../icons/UtilityClose";
5
+ import { NavLogo } from "../icons/NavLogo";
6
+ import { NavAccount } from "../icons/NavAccount";
7
+ import { NavBullet } from "../icons/NavBullet";
8
+ import { Button } from "@/components/ui/button";
9
+
10
+ export interface NavItem {
11
+ label: string;
12
+ active?: boolean;
13
+ }
14
+
15
+ // Define a Link component type that matches common routing patterns
16
+ export type LinkComponent = React.ComponentType<{
17
+ href: string;
18
+ className?: string;
19
+ "aria-label"?: string;
20
+ children: React.ReactNode;
21
+ onClick?: (e: React.MouseEvent) => void;
22
+ }>;
23
+
24
+ interface NavigationProps {
25
+ navItems?: NavItem[];
26
+ isStrategy?: boolean;
27
+ Link?: LinkComponent; // Optional Link component from routing library
28
+ onLinkClick?: (href: string) => void; // Fallback callback for navigation
29
+ onClose?: () => void;
30
+ }
31
+
32
+ export const Navigation: React.FC<NavigationProps> = ({
33
+ navItems,
34
+ isStrategy = false,
35
+ Link: LinkComponent,
36
+ onLinkClick,
37
+ onClose,
38
+ }) => {
39
+ const [isOpen, setIsOpen] = React.useState(false);
40
+ const [activeItem, setActiveItem] = React.useState<number | null>(null);
41
+
42
+ const containerRef = React.useRef<HTMLElement>(null);
43
+ const menuRef = React.useRef<HTMLDivElement>(null);
44
+ const menuItemsRef = React.useRef<HTMLDivElement>(null);
45
+ const overlayRef = React.useRef<HTMLDivElement>(null);
46
+
47
+ const handleMouseLeave = () => {
48
+ setIsOpen(false);
49
+ setActiveItem(null);
50
+ };
51
+
52
+ const handleNavItemMouseEnter = (index: number) => {
53
+ setIsOpen(true);
54
+ setActiveItem(index + 1);
55
+ };
56
+
57
+ // Internal NavLink component that handles different routing scenarios
58
+ const NavLink: React.FC<{
59
+ href: string;
60
+ className?: string;
61
+ "aria-label"?: string;
62
+ children: React.ReactNode;
63
+ }> = ({ href, className, "aria-label": ariaLabel, children }) => {
64
+ // If Link component is provided, use it
65
+ if (LinkComponent) {
66
+ return (
67
+ <LinkComponent href={href} className={className} aria-label={ariaLabel}>
68
+ {children}
69
+ </LinkComponent>
70
+ );
71
+ }
72
+
73
+ // If onLinkClick callback is provided, use anchor with click handler
74
+ if (onLinkClick) {
75
+ return (
76
+ <a
77
+ href={href}
78
+ className={className}
79
+ aria-label={ariaLabel}
80
+ onClick={(e) => {
81
+ e.preventDefault();
82
+ onLinkClick(href);
83
+ }}
84
+ >
85
+ {children}
86
+ </a>
87
+ );
88
+ }
89
+
90
+ // Default: plain anchor tag (browser navigation)
91
+ return (
92
+ <a href={href} className={className} aria-label={ariaLabel}>
93
+ {children}
94
+ </a>
95
+ );
96
+ };
97
+
98
+ return (
99
+ <nav
100
+ ref={containerRef}
101
+ className={cn("navigation", isStrategy && "navigation--strategy")}
102
+ data-strategy={isStrategy}
103
+ onMouseLeave={handleMouseLeave}
104
+ >
105
+ {!isStrategy && (
106
+ <div
107
+ ref={overlayRef}
108
+ className="navigation-overlay"
109
+ data-open={isOpen}
110
+ />
111
+ )}
112
+
113
+ <div className="navigation-container">
114
+ <div className="navigation-logo-container">
115
+ {isStrategy ? (
116
+ <Button
117
+ className="navigation-close-button"
118
+ size="icon"
119
+ onClick={(e) => {
120
+ e.preventDefault();
121
+ if (onClose) {
122
+ onClose();
123
+ } else if (onLinkClick) {
124
+ onLinkClick("/");
125
+ }
126
+ }}
127
+ >
128
+ <UtilityClose className="navigation-close-icon" />
129
+ </Button>
130
+ ) : null}
131
+
132
+ <NavLink
133
+ href="/"
134
+ className={cn(
135
+ "navigation-logo-link",
136
+ isStrategy && "navigation-logo-link--strategy",
137
+ )}
138
+ data-strategy={isStrategy}
139
+ aria-label="Home"
140
+ >
141
+ <NavLogo dark={isStrategy} />
142
+ </NavLink>
143
+ </div>
144
+
145
+ {!isStrategy ? (
146
+ <div className="navigation-nav-container">
147
+ <ul className="navigation-nav-list">
148
+ {navItems
149
+ ? navItems.map((item, index) => (
150
+ <li
151
+ key={index + 1}
152
+ className="navigation-nav-item"
153
+ onMouseEnter={() => handleNavItemMouseEnter(index)}
154
+ >
155
+ <span className="navigation-nav-link">{item.label}</span>
156
+
157
+ {/* Underline */}
158
+ {activeItem === index + 1 && (
159
+ <motion.div
160
+ id="underline"
161
+ className="navigation-underline"
162
+ layoutId="underline"
163
+ transition={{ duration: 0.2, ease: "easeOut" }}
164
+ >
165
+ <div
166
+ className="navigation-underline-circle navigation-underline-circle--gradient"
167
+ style={{
168
+ width: "10px",
169
+ height: "5px",
170
+ borderBottomLeftRadius: "100px",
171
+ borderBottomRightRadius: "100px",
172
+ borderBottom: "0",
173
+ boxSizing: "border-box",
174
+ }}
175
+ />
176
+ </motion.div>
177
+ )}
178
+ {index === 0 && (
179
+ <div
180
+ className="navigation-underline navigation-underline--static"
181
+ style={{ transition: "all 0.2s ease-out" }}
182
+ >
183
+ <div
184
+ className="navigation-underline-circle navigation-underline-circle--white"
185
+ style={{
186
+ width: "10px",
187
+ height: "5px",
188
+ borderTopLeftRadius: "100px",
189
+ borderTopRightRadius: "100px",
190
+ borderBottom: "0",
191
+ boxSizing: "border-box",
192
+ }}
193
+ />
194
+ </div>
195
+ )}
196
+ </li>
197
+ ))
198
+ : null}
199
+ </ul>
200
+ </div>
201
+ ) : null}
202
+
203
+ <div className="navigation-actions">
204
+ <NavLink
205
+ href="/"
206
+ aria-label="Account link"
207
+ className="navigation-account-link"
208
+ data-open={isOpen}
209
+ data-strategy={isStrategy}
210
+ >
211
+ <NavAccount
212
+ className={cn(
213
+ "navigation-account-icon",
214
+ isStrategy
215
+ ? "navigation-account-icon--strategy"
216
+ : "navigation-account-icon--default",
217
+ )}
218
+ />
219
+ </NavLink>
220
+ </div>
221
+ </div>
222
+
223
+ {isOpen && <div className="navigation-divider" />}
224
+
225
+ {/* Tray */}
226
+ <div ref={menuRef} className="navigation-tray" data-open={isOpen}>
227
+ <div className="navigation-tray-content">
228
+ <div ref={menuItemsRef} className="navigation-tray-grid">
229
+ <AnimatePresence mode="wait">
230
+ <motion.div
231
+ key={activeItem ? activeItem + 1 : "empty"}
232
+ initial={{ y: 10, opacity: 0 }}
233
+ animate={{ y: 0, opacity: 1 }}
234
+ exit={{ y: -10, opacity: 0 }}
235
+ transition={{ duration: 0.2 }}
236
+ >
237
+ {/* WELL Tray */}
238
+ {activeItem === 1 && (
239
+ <div className="navigation-tray-section">
240
+ <h2
241
+ className="navigation-tray-heading"
242
+ style={{
243
+ background:
244
+ "linear-gradient(90deg, #41D5F6 0%, #3EECD1 25%, #66FCD9 50%, #66FCD9 75%, #3EECD1 100%)",
245
+ WebkitBackgroundClip: "text",
246
+ WebkitTextFillColor: "transparent",
247
+ backgroundClip: "text",
248
+ }}
249
+ >
250
+ WELL sets the standard for people-first places
251
+ </h2>
252
+
253
+ <div className="navigation-tray-columns">
254
+ <div className="navigation-tray-column">
255
+ <h3 className="navigation-tray-column-title">
256
+ Everything
257
+ </h3>
258
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
259
+ <li>
260
+ <NavLink href="/" className="navigation-tray-link">
261
+ Explore WELL
262
+ </NavLink>
263
+ </li>
264
+ <li>
265
+ <NavLink href="/" className="navigation-tray-link">
266
+ Enroll in WELL
267
+ </NavLink>
268
+ </li>
269
+ <li>
270
+ <NavLink href="/" className="navigation-tray-link">
271
+ What's new
272
+ </NavLink>
273
+ </li>
274
+ </ul>
275
+ </div>
276
+ <div className="navigation-tray-column">
277
+ <h3 className="navigation-tray-column-title">
278
+ WHY WELL
279
+ </h3>
280
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
281
+ <li>
282
+ <NavLink href="/" className="navigation-tray-link">
283
+ Performance
284
+ </NavLink>
285
+ </li>
286
+ <li>
287
+ <NavLink href="/" className="navigation-tray-link">
288
+ ROI
289
+ </NavLink>
290
+ </li>
291
+ <li>
292
+ <NavLink href="/" className="navigation-tray-link">
293
+ Impact
294
+ </NavLink>
295
+ </li>
296
+ </ul>
297
+ </div>
298
+ <div className="navigation-tray-column">
299
+ <h3 className="navigation-tray-column-title">
300
+ Standard
301
+ </h3>
302
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
303
+ <li>
304
+ <NavLink href="/" className="navigation-tray-link">
305
+ Strategies
306
+ </NavLink>
307
+ </li>
308
+ <li>
309
+ <NavLink href="/" className="navigation-tray-link">
310
+ Themes
311
+ </NavLink>
312
+ </li>
313
+ <li>
314
+ <NavLink href="/" className="navigation-tray-link">
315
+ Milestones
316
+ </NavLink>
317
+ </li>
318
+ </ul>
319
+ </div>
320
+ <div className="navigation-tray-column">
321
+ <h3 className="navigation-tray-column-title">
322
+ Network
323
+ </h3>
324
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
325
+ <li>
326
+ <NavLink href="/" className="navigation-tray-link">
327
+ Organizations
328
+ </NavLink>
329
+ </li>
330
+ <li>
331
+ <NavLink href="/" className="navigation-tray-link">
332
+ People
333
+ </NavLink>
334
+ </li>
335
+ </ul>
336
+ </div>
337
+ <div className="navigation-tray-column">
338
+ <h3 className="navigation-tray-column-title">
339
+ Solutions
340
+ </h3>
341
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
342
+ <li>
343
+ <NavLink href="/" className="navigation-tray-link">
344
+ Products
345
+ </NavLink>
346
+ </li>
347
+ <li>
348
+ <NavLink href="/" className="navigation-tray-link">
349
+ Services
350
+ </NavLink>
351
+ </li>
352
+ </ul>
353
+ </div>
354
+ <div className="navigation-tray-column">
355
+ <h3 className="navigation-tray-column-title">Places</h3>
356
+ <ul className="navigation-tray-column-list navigation-tray-column-list--spacing-5">
357
+ <li>
358
+ <NavLink href="/" className="navigation-tray-link">
359
+ Locations
360
+ </NavLink>
361
+ </li>
362
+ <li>
363
+ <NavLink href="/" className="navigation-tray-link">
364
+ Portfolios
365
+ </NavLink>
366
+ </li>
367
+ </ul>
368
+ </div>
369
+ </div>
370
+ </div>
371
+ )}
372
+
373
+ {/* Pursuits Tray */}
374
+ {activeItem === 2 && (
375
+ <div className="navigation-tray-section">
376
+ <h2
377
+ className="navigation-tray-heading"
378
+ style={{
379
+ background:
380
+ "linear-gradient(99deg, #41D5F6 3.39%, #3EECD1 57.86%, #66FCD9 112.32%)",
381
+ backgroundClip: "text",
382
+ WebkitBackgroundClip: "text",
383
+ WebkitTextFillColor: "transparent",
384
+ }}
385
+ >
386
+ WELL works everywhere, at any scale
387
+ </h2>
388
+ <div className="navigation-tray-columns">
389
+ <div className="navigation-tray-column">
390
+ <h3 className="navigation-tray-column-title">
391
+ SUBSCRIBE
392
+ </h3>
393
+ <ul className="navigation-tray-column-list">
394
+ <li>
395
+ <NavLink href="/" className="navigation-tray-link">
396
+ WELL at scale
397
+ </NavLink>
398
+ </li>
399
+ <li>
400
+ <div className="navigation-tray-bullet-item">
401
+ <div className="navigation-tray-bullet" />
402
+ <NavLink href="/">
403
+ <span className="navigation-tray-link-small">
404
+ Pricing
405
+ </span>
406
+ </NavLink>
407
+ </div>
408
+ </li>
409
+ <li>
410
+ <div className="navigation-tray-bullet-item">
411
+ <div className="navigation-tray-bullet" />
412
+ <NavLink href="/">
413
+ <span className="navigation-tray-link-small">
414
+ Leaderboard
415
+ </span>
416
+ </NavLink>
417
+ </div>
418
+ </li>
419
+ </ul>
420
+ </div>
421
+ <div className="navigation-tray-column">
422
+ <h3 className="navigation-tray-column-title">
423
+ Certify
424
+ </h3>
425
+ <ul className="navigation-tray-column-list">
426
+ <li>
427
+ <NavLink href="/" className="navigation-tray-link">
428
+ WELL Certification
429
+ </NavLink>
430
+ </li>
431
+ <li>
432
+ <NavLink
433
+ href="/"
434
+ className="navigation-tray-link navigation-tray-link--with-badge"
435
+ >
436
+ WELL Residence
437
+ <span className="navigation-tray-badge">
438
+ PILOT
439
+ </span>
440
+ </NavLink>
441
+ </li>
442
+ </ul>
443
+ </div>
444
+ <div className="navigation-tray-column">
445
+ <h3 className="navigation-tray-column-title">
446
+ Get rated
447
+ </h3>
448
+ <ul className="navigation-tray-column-list">
449
+ <li>
450
+ <NavLink href="/" className="navigation-tray-link">
451
+ WELL Ratings
452
+ </NavLink>
453
+ </li>
454
+ <li>
455
+ <div className="navigation-tray-bullet-item">
456
+ <NavBullet color="#F3E7D8" />
457
+ <NavLink
458
+ href="/"
459
+ className="navigation-tray-link-small"
460
+ >
461
+ Health-Safety Rating
462
+ </NavLink>
463
+ </div>
464
+ </li>
465
+ <li>
466
+ <div className="navigation-tray-bullet-item">
467
+ <NavBullet color="#0F748A" />
468
+ <NavLink
469
+ href="/"
470
+ className="navigation-tray-link-small"
471
+ >
472
+ Performance Rating
473
+ </NavLink>
474
+ </div>
475
+ </li>
476
+ <li>
477
+ <div className="navigation-tray-bullet-item">
478
+ <NavBullet color="#17AA8D" />
479
+ <NavLink
480
+ href="/"
481
+ className="navigation-tray-link-small"
482
+ >
483
+ Equity Rating
484
+ </NavLink>
485
+ </div>
486
+ </li>
487
+ </ul>
488
+ </div>
489
+ </div>
490
+ </div>
491
+ )}
492
+
493
+ {/* Network Tray */}
494
+ {activeItem === 3 && (
495
+ <div className="navigation-tray-section">
496
+ <h2
497
+ className="navigation-tray-heading"
498
+ style={{
499
+ background:
500
+ "linear-gradient(90deg, #41D5F6 0%, #3EECD1 25%, #66FCD9 50%, #66FCD9 75%, #3EECD1 100%)",
501
+ WebkitBackgroundClip: "text",
502
+ WebkitTextFillColor: "transparent",
503
+ }}
504
+ >
505
+ Our network drives our movement
506
+ </h2>
507
+
508
+ <div className="navigation-tray-columns">
509
+ <div className="navigation-tray-column">
510
+ <h3 className="navigation-tray-column-title">JOIN</h3>
511
+ <ul className="navigation-tray-column-list">
512
+ <li>
513
+ <NavLink href="/" className="navigation-tray-link">
514
+ Membership
515
+ </NavLink>
516
+ </li>
517
+ <li>
518
+ <NavLink href="/" className="navigation-tray-link">
519
+ Works with WELL
520
+ </NavLink>
521
+ </li>
522
+ <li>
523
+ <div className="navigation-tray-bullet-item">
524
+ <NavBullet color="#2E74AD" />
525
+ <NavLink
526
+ href="/"
527
+ className="navigation-tray-link-small"
528
+ >
529
+ Enterprise Provider
530
+ </NavLink>
531
+ </div>
532
+ </li>
533
+ <li>
534
+ <div className="navigation-tray-bullet-item">
535
+ <NavBullet color="#149EBD" />
536
+ <NavLink
537
+ href="/"
538
+ className="navigation-tray-link-small"
539
+ >
540
+ Product Provider
541
+ </NavLink>
542
+ </div>
543
+ </li>
544
+ <li>
545
+ <div className="navigation-tray-bullet-item">
546
+ <NavBullet color="#ED896F" />
547
+ <NavLink
548
+ href="/"
549
+ className="navigation-tray-link-small"
550
+ >
551
+ Performance Testing Provider
552
+ </NavLink>
553
+ </div>
554
+ </li>
555
+ </ul>
556
+ </div>
557
+
558
+ <div className="navigation-tray-column">
559
+ <h3 className="navigation-tray-column-title">EARN</h3>
560
+ <ul className="navigation-tray-column-list">
561
+ <li>
562
+ <NavLink href="/" className="navigation-tray-link">
563
+ WELL AP
564
+ </NavLink>
565
+ </li>
566
+ <li>
567
+ <NavLink href="/" className="navigation-tray-link">
568
+ WELL Faculty
569
+ </NavLink>
570
+ </li>
571
+ </ul>
572
+ </div>
573
+ </div>
574
+ </div>
575
+ )}
576
+
577
+ {/* Knowledge Tray */}
578
+ {activeItem === 4 && (
579
+ <div className="navigation-tray-section">
580
+ <h2
581
+ className="navigation-tray-heading"
582
+ style={{
583
+ background:
584
+ "linear-gradient(90deg, #41D5F6 0%, #3EECD1 25%, #66FCD9 50%, #66FCD9 75%, #3EECD1 100%)",
585
+ WebkitBackgroundClip: "text",
586
+ WebkitTextFillColor: "transparent",
587
+ }}
588
+ >
589
+ Learn from the experts on health
590
+ </h2>
591
+
592
+ <div className="navigation-tray-columns">
593
+ <div className="navigation-tray-column">
594
+ <h3 className="navigation-tray-column-title">LEARN</h3>
595
+ <ul className="navigation-tray-column-list">
596
+ <li>
597
+ <NavLink href="/" className="navigation-tray-link">
598
+ WELL Forum
599
+ </NavLink>
600
+ </li>
601
+ <li>
602
+ <div className="navigation-tray-bullet-item">
603
+ <div className="navigation-tray-bullet" />
604
+ <NavLink
605
+ href="/"
606
+ className="navigation-tray-link-small"
607
+ >
608
+ Threads
609
+ </NavLink>
610
+ </div>
611
+ </li>
612
+ <li>
613
+ <div className="navigation-tray-bullet-item">
614
+ <div className="navigation-tray-bullet" />
615
+ <NavLink
616
+ href="/"
617
+ className="navigation-tray-link-small"
618
+ >
619
+ Webcasts
620
+ </NavLink>
621
+ </div>
622
+ </li>
623
+ <li>
624
+ <div className="navigation-tray-bullet-item">
625
+ <div className="navigation-tray-bullet" />
626
+ <NavLink
627
+ href="/"
628
+ className="navigation-tray-link-small"
629
+ >
630
+ Trainings
631
+ </NavLink>
632
+ </div>
633
+ </li>
634
+ </ul>
635
+ </div>
636
+ <div className="navigation-tray-column">
637
+ <h3 className="navigation-tray-column-title">ATTEND</h3>
638
+ <ul className="navigation-tray-column-list">
639
+ <li>
640
+ <NavLink href="/" className="navigation-tray-link">
641
+ WELL 2025
642
+ </NavLink>
643
+ </li>
644
+ <li>
645
+ <div className="navigation-tray-bullet-item">
646
+ <div className="navigation-tray-bullet" />
647
+ <NavLink
648
+ href="/"
649
+ className="navigation-tray-link-small"
650
+ >
651
+ Flagship events
652
+ </NavLink>
653
+ </div>
654
+ </li>
655
+ <li>
656
+ <div className="navigation-tray-bullet-item">
657
+ <div className="navigation-tray-bullet" />
658
+ <NavLink
659
+ href="/"
660
+ className="navigation-tray-link-small"
661
+ >
662
+ Thematic summits
663
+ </NavLink>
664
+ </div>
665
+ </li>
666
+ <li>
667
+ <div className="navigation-tray-bullet-item">
668
+ <div className="navigation-tray-bullet" />
669
+ <NavLink
670
+ href="/"
671
+ className="navigation-tray-link-small"
672
+ >
673
+ Regional summits
674
+ </NavLink>
675
+ </div>
676
+ </li>
677
+ </ul>
678
+ </div>
679
+ <div className="navigation-tray-column">
680
+ <h3 className="navigation-tray-column-title">
681
+ GUIDANCE
682
+ </h3>
683
+ <ul className="navigation-tray-column-list">
684
+ <li>
685
+ <NavLink href="/" className="navigation-tray-link">
686
+ Knowledge base
687
+ </NavLink>
688
+ </li>
689
+ <li>
690
+ <div className="navigation-tray-bullet-item">
691
+ <div className="navigation-tray-bullet" />
692
+ <NavLink
693
+ href="/"
694
+ className="navigation-tray-link-small"
695
+ >
696
+ Tutorials
697
+ </NavLink>
698
+ </div>
699
+ </li>
700
+ <li>
701
+ <div className="navigation-tray-bullet-item">
702
+ <div className="navigation-tray-bullet" />
703
+ <NavLink
704
+ href="/"
705
+ className="navigation-tray-link-small"
706
+ >
707
+ Guides
708
+ </NavLink>
709
+ </div>
710
+ </li>
711
+ <li>
712
+ <div className="navigation-tray-bullet-item">
713
+ <div className="navigation-tray-bullet" />
714
+ <NavLink
715
+ href="/"
716
+ className="navigation-tray-link-small"
717
+ >
718
+ FAQs
719
+ </NavLink>
720
+ </div>
721
+ </li>
722
+ </ul>
723
+ </div>
724
+ <div className="navigation-tray-column">
725
+ <h3 className="navigation-tray-column-title">
726
+ Resources
727
+ </h3>
728
+ <ul className="navigation-tray-column-list">
729
+ <li>
730
+ <NavLink href="/" className="navigation-tray-link">
731
+ Resource library
732
+ </NavLink>
733
+ </li>
734
+ <li>
735
+ <div className="navigation-tray-bullet-item">
736
+ <div className="navigation-tray-bullet" />
737
+ <NavLink
738
+ href="/"
739
+ className="navigation-tray-link-small"
740
+ >
741
+ Technical tools
742
+ </NavLink>
743
+ </div>
744
+ </li>
745
+ <li>
746
+ <div className="navigation-tray-bullet-item">
747
+ <div className="navigation-tray-bullet" />
748
+ <NavLink
749
+ href="/"
750
+ className="navigation-tray-link-small"
751
+ >
752
+ Sales tools
753
+ </NavLink>
754
+ </div>
755
+ </li>
756
+ <li>
757
+ <div className="navigation-tray-bullet-item">
758
+ <div className="navigation-tray-bullet" />
759
+ <NavLink
760
+ href="/"
761
+ className="navigation-tray-link-small"
762
+ >
763
+ Media
764
+ </NavLink>
765
+ </div>
766
+ </li>
767
+ </ul>
768
+ </div>
769
+ </div>
770
+ </div>
771
+ )}
772
+
773
+ {/* IWBI Tray */}
774
+ {activeItem === 5 && (
775
+ <div className="navigation-tray-section">
776
+ <h2
777
+ className="navigation-tray-heading"
778
+ style={{
779
+ background:
780
+ "linear-gradient(90deg, #41D5F6 0%, #3EECD1 25%, #66FCD9 50%, #66FCD9 75%, #3EECD1 100%)",
781
+ WebkitBackgroundClip: "text",
782
+ WebkitTextFillColor: "transparent",
783
+ }}
784
+ >
785
+ The International WELL Building Institute (IWBI)
786
+ </h2>
787
+
788
+ <div className="navigation-tray-columns">
789
+ <div className="navigation-tray-column">
790
+ <h3 className="navigation-tray-column-title">About</h3>
791
+ <ul className="navigation-tray-column-list">
792
+ <li>
793
+ <NavLink href="/" className="navigation-tray-link">
794
+ IWBI
795
+ </NavLink>
796
+ </li>
797
+ <li>
798
+ <NavLink href="/" className="navigation-tray-link">
799
+ Research
800
+ </NavLink>
801
+ </li>
802
+ <li>
803
+ <NavLink href="/" className="navigation-tray-link">
804
+ Advocacy
805
+ </NavLink>
806
+ </li>
807
+ </ul>
808
+ </div>
809
+ <div className="navigation-tray-column">
810
+ <h3 className="navigation-tray-column-title">Meet</h3>
811
+ <ul className="navigation-tray-column-list">
812
+ <li>
813
+ <NavLink href="/" className="navigation-tray-link">
814
+ Team
815
+ </NavLink>
816
+ </li>
817
+ <li>
818
+ <NavLink href="/" className="navigation-tray-link">
819
+ Advisories
820
+ </NavLink>
821
+ </li>
822
+ <li>
823
+ <NavLink href="/" className="navigation-tray-link">
824
+ Governance Council
825
+ </NavLink>
826
+ </li>
827
+ </ul>
828
+ </div>
829
+ <div className="navigation-tray-column">
830
+ <h3 className="navigation-tray-column-title">
831
+ Explore
832
+ </h3>
833
+ <ul className="navigation-tray-column-list">
834
+ <li>
835
+ <NavLink href="/" className="navigation-tray-link">
836
+ Newsroom
837
+ </NavLink>
838
+ </li>
839
+ <li>
840
+ <NavLink href="/" className="navigation-tray-link">
841
+ Jobs
842
+ </NavLink>
843
+ </li>
844
+ <li>
845
+ <NavLink href="/" className="navigation-tray-link">
846
+ Blog
847
+ </NavLink>
848
+ </li>
849
+ </ul>
850
+ </div>
851
+ </div>
852
+ </div>
853
+ )}
854
+ </motion.div>
855
+ </AnimatePresence>
856
+ </div>
857
+ </div>
858
+ </div>
859
+ </nav>
860
+ );
861
+ };