@b3-crow/ui-kit 0.0.31-pr25.10 → 0.0.31-pr30.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.
- package/dist/components/cards/PricingCard.d.ts +35 -0
- package/dist/components/cards/PricingCard.d.ts.map +1 -0
- package/dist/components/cards/PricingCard.js +42 -0
- package/dist/components/cards/PricingCard.js.map +1 -0
- package/dist/components/dashboard/ChatHistorySection.d.ts.map +1 -1
- package/dist/components/dashboard/ChatHistorySection.js +25 -47
- package/dist/components/dashboard/ChatHistorySection.js.map +1 -1
- package/dist/components/dashboard/DashboardBackground.d.ts +1 -1
- package/dist/components/dashboard/DashboardBackground.d.ts.map +1 -1
- package/dist/components/dashboard/DashboardBackground.js +7 -79
- package/dist/components/dashboard/DashboardBackground.js.map +1 -1
- package/dist/components/dashboard/FilterDropdown.d.ts.map +1 -1
- package/dist/components/dashboard/FilterDropdown.js +54 -7
- package/dist/components/dashboard/FilterDropdown.js.map +1 -1
- package/dist/components/dashboard/GlassPanel.d.ts.map +1 -1
- package/dist/components/dashboard/GlassPanel.js.map +1 -1
- package/dist/components/dashboard/Header.d.ts.map +1 -1
- package/dist/components/dashboard/Header.js +83 -44
- package/dist/components/dashboard/Header.js.map +1 -1
- package/dist/components/dashboard/IconBadge.d.ts +1 -1
- package/dist/components/dashboard/IconBadge.d.ts.map +1 -1
- package/dist/components/dashboard/IconBadge.js +13 -1
- package/dist/components/dashboard/IconBadge.js.map +1 -1
- package/dist/components/dashboard/MetricsCard.js +4 -2
- package/dist/components/dashboard/MetricsCard.js.map +1 -1
- package/dist/components/dashboard/MobileSidebar.d.ts.map +1 -1
- package/dist/components/dashboard/MobileSidebar.js +3 -20
- package/dist/components/dashboard/MobileSidebar.js.map +1 -1
- package/dist/components/dashboard/NavMenu.d.ts.map +1 -1
- package/dist/components/dashboard/NavMenu.js +27 -106
- package/dist/components/dashboard/NavMenu.js.map +1 -1
- package/dist/components/dashboard/PatternCard.d.ts +1 -1
- package/dist/components/dashboard/PatternCard.d.ts.map +1 -1
- package/dist/components/dashboard/PatternCard.js +1 -1
- package/dist/components/dashboard/PatternCard.js.map +1 -1
- package/dist/components/dashboard/SearchInput.d.ts +0 -1
- package/dist/components/dashboard/SearchInput.d.ts.map +1 -1
- package/dist/components/dashboard/SearchInput.js +5 -10
- package/dist/components/dashboard/SearchInput.js.map +1 -1
- package/dist/components/dashboard/SectionHeader.d.ts.map +1 -1
- package/dist/components/dashboard/SectionHeader.js +3 -6
- package/dist/components/dashboard/SectionHeader.js.map +1 -1
- package/dist/components/dashboard/SettingsDropup.d.ts.map +1 -1
- package/dist/components/dashboard/SettingsDropup.js +6 -140
- package/dist/components/dashboard/SettingsDropup.js.map +1 -1
- package/dist/components/dashboard/SettingsModal.d.ts.map +1 -1
- package/dist/components/dashboard/SettingsModal.js +9 -184
- package/dist/components/dashboard/SettingsModal.js.map +1 -1
- package/dist/components/dashboard/SidePanel.d.ts.map +1 -1
- package/dist/components/dashboard/SidePanel.js +41 -7
- package/dist/components/dashboard/SidePanel.js.map +1 -1
- package/dist/components/dashboard/Sidebar.d.ts +1 -1
- package/dist/components/dashboard/Sidebar.d.ts.map +1 -1
- package/dist/components/dashboard/Sidebar.js +2 -30
- package/dist/components/dashboard/Sidebar.js.map +1 -1
- package/dist/components/dashboard/SidebarLogo.d.ts.map +1 -1
- package/dist/components/dashboard/SidebarLogo.js +1 -41
- package/dist/components/dashboard/SidebarLogo.js.map +1 -1
- package/dist/components/dashboard/SourceIcon.d.ts.map +1 -1
- package/dist/components/dashboard/SourceIcon.js +5 -1
- package/dist/components/dashboard/SourceIcon.js.map +1 -1
- package/dist/components/dashboard/StatusBadge.d.ts +2 -2
- package/dist/components/dashboard/StatusBadge.d.ts.map +1 -1
- package/dist/components/dashboard/StatusBadge.js.map +1 -1
- package/dist/components/dashboard/StatusIndicator.d.ts.map +1 -1
- package/dist/components/dashboard/StatusIndicator.js +1 -4
- package/dist/components/dashboard/StatusIndicator.js.map +1 -1
- package/dist/components/dashboard/ToggleSwitch.d.ts +1 -1
- package/dist/components/dashboard/ToggleSwitch.d.ts.map +1 -1
- package/dist/components/dashboard/ToggleSwitch.js +10 -26
- package/dist/components/dashboard/ToggleSwitch.js.map +1 -1
- package/dist/components/dashboard/index.d.ts +1 -1
- package/dist/components/dashboard/index.d.ts.map +1 -1
- package/dist/components/dashboard/index.js +1 -1
- package/dist/components/dashboard/index.js.map +1 -1
- package/dist/components/dashboard/types.d.ts +3 -0
- package/dist/components/dashboard/types.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/Navbar.js +1 -1
- package/dist/components/layout/Navbar.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Bell, Calendar, Check, ChevronDown, Menu } from 'lucide-react';
|
|
4
|
+
import { useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
5
6
|
const defaultDateRangeOptions = [
|
|
6
7
|
{ label: 'Today', value: 'today' },
|
|
7
8
|
{ label: 'Yesterday', value: 'yesterday' },
|
|
@@ -16,6 +17,9 @@ export function Header({ orgName = 'Global Retail Ops', dateRange = 'Last 7 days
|
|
|
16
17
|
const [isOpen, setIsOpen] = useState(false);
|
|
17
18
|
const [selectedRange, setSelectedRange] = useState(dateRange);
|
|
18
19
|
const dropdownRef = useRef(null);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setSelectedRange(dateRange);
|
|
22
|
+
}, [dateRange]);
|
|
19
23
|
useEffect(() => {
|
|
20
24
|
const handleClickOutside = (event) => {
|
|
21
25
|
if (dropdownRef.current &&
|
|
@@ -31,57 +35,92 @@ export function Header({ orgName = 'Global Retail Ops', dateRange = 'Last 7 days
|
|
|
31
35
|
setIsOpen(false);
|
|
32
36
|
onDateRangeChange?.(option.value);
|
|
33
37
|
};
|
|
34
|
-
return (_jsxs("header", { className:
|
|
38
|
+
return (_jsxs("header", { className: "w-full h-16 sticky top-0 flex-shrink-0 z-50 flex items-center justify-between px-4 sm:px-6 lg:px-8 border-b border-white/[0.06] bg-[rgba(3,0,5,0.85)] backdrop-blur-xl", children: [_jsxs("div", { className: "flex items-center gap-3 md:hidden", children: [onMenuClick && (_jsx("button", { type: "button", onClick: onMenuClick, className: "w-8 h-8 flex items-center justify-center rounded-lg transition-colors hover:bg-white/[0.06]", "aria-label": "Toggle menu", children: _jsx(Menu, { size: 20, className: "text-gray-400", strokeWidth: 2 }) })), logoSrc && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("img", { src: logoSrc, alt: "CROW Client logo", className: "w-6 h-6" }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-bold text-white leading-none", children: "CROW" }), _jsx("span", { className: "text-[8px] font-medium text-gray-500 tracking-[0.15em] uppercase leading-none", children: "CLIENT" })] })] }))] }), !minimal && (_jsx(LeftSection, { orgName: orgName, selectedRange: selectedRange, isOpen: isOpen, setIsOpen: setIsOpen, dropdownRef: dropdownRef, dateRangeOptions: dateRangeOptions, handleSelect: handleSelect })), minimal && _jsx("div", { className: "hidden md:block flex-1" }), _jsx(RightSection, { showNotification: showNotification, onNotificationClick: onNotificationClick, onAvatarClick: onAvatarClick, userInitials: userInitials })] }));
|
|
35
39
|
}
|
|
36
40
|
function LeftSection({ orgName, selectedRange, isOpen, setIsOpen, dropdownRef, dateRangeOptions, handleSelect, }) {
|
|
37
41
|
return (_jsxs("div", { className: "hidden md:flex items-center gap-3 sm:gap-6 min-w-0", children: [_jsx("span", { className: "text-sm font-medium text-white tracking-wide hidden sm:block truncate max-w-[140px] lg:max-w-none", children: orgName }), _jsx("div", { className: "hidden sm:block w-px h-4 bg-white/10" }), _jsx(DatePickerDropdown, { selectedRange: selectedRange, isOpen: isOpen, setIsOpen: setIsOpen, dropdownRef: dropdownRef, dateRangeOptions: dateRangeOptions, handleSelect: handleSelect })] }));
|
|
38
42
|
}
|
|
39
43
|
function DatePickerDropdown({ selectedRange, isOpen, setIsOpen, dropdownRef, dateRangeOptions, handleSelect, }) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
45
|
+
const handleKeyDown = (e) => {
|
|
46
|
+
if (!isOpen) {
|
|
47
|
+
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
setIsOpen(true);
|
|
50
|
+
setFocusedIndex(0);
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
switch (e.key) {
|
|
55
|
+
case 'Escape':
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
setIsOpen(false);
|
|
58
|
+
setFocusedIndex(-1);
|
|
59
|
+
break;
|
|
60
|
+
case 'ArrowDown':
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
setFocusedIndex(prev => prev < dateRangeOptions.length - 1 ? prev + 1 : 0);
|
|
63
|
+
break;
|
|
64
|
+
case 'ArrowUp':
|
|
65
|
+
e.preventDefault();
|
|
66
|
+
setFocusedIndex(prev => prev > 0 ? prev - 1 : dateRangeOptions.length - 1);
|
|
67
|
+
break;
|
|
68
|
+
case 'Enter':
|
|
69
|
+
case ' ':
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
if (focusedIndex >= 0 && focusedIndex < dateRangeOptions.length) {
|
|
72
|
+
handleSelect(dateRangeOptions[focusedIndex]);
|
|
73
|
+
setFocusedIndex(-1);
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
case 'Tab':
|
|
77
|
+
setIsOpen(false);
|
|
78
|
+
setFocusedIndex(-1);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
return (_jsxs("div", { ref: dropdownRef, className: "relative", children: [_jsxs("button", { type: "button", onClick: () => setIsOpen(!isOpen), onKeyDown: handleKeyDown, "aria-label": "Select date range", "aria-expanded": isOpen, "aria-haspopup": "listbox", className: cn('h-[30px] px-3 flex items-center gap-2 rounded-full transition-all', isOpen
|
|
83
|
+
? 'bg-violet-500/15 outline outline-1 outline-violet-500/40 -outline-offset-1'
|
|
84
|
+
: 'bg-white/[0.03] outline outline-1 outline-white/10 -outline-offset-1'), children: [_jsx(Calendar, { size: 12, className: cn(isOpen ? 'text-violet-400' : 'text-gray-400'), strokeWidth: 2 }), _jsx("span", { className: cn('text-xs font-medium whitespace-nowrap', isOpen ? 'text-violet-200' : 'text-gray-300'), children: selectedRange }), _jsx(ChevronDown, { size: 10, className: cn('transition-transform duration-200', isOpen ? 'text-violet-400 rotate-180' : 'text-gray-500'), strokeWidth: 2 })] }), _jsx(DropdownMenu, { isOpen: isOpen, dateRangeOptions: dateRangeOptions, selectedRange: selectedRange, handleSelect: handleSelect, focusedIndex: focusedIndex, setFocusedIndex: setFocusedIndex, onClose: () => setIsOpen(false) })] }));
|
|
49
85
|
}
|
|
50
|
-
function DropdownMenu({ isOpen, dateRangeOptions, selectedRange, handleSelect, }) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
86
|
+
function DropdownMenu({ isOpen, dateRangeOptions, selectedRange, handleSelect, focusedIndex, setFocusedIndex, onClose, }) {
|
|
87
|
+
const handleKeyDown = (e) => {
|
|
88
|
+
switch (e.key) {
|
|
89
|
+
case 'Escape':
|
|
90
|
+
e.preventDefault();
|
|
91
|
+
onClose();
|
|
92
|
+
break;
|
|
93
|
+
case 'ArrowDown':
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
setFocusedIndex(focusedIndex < dateRangeOptions.length - 1 ? focusedIndex + 1 : 0);
|
|
96
|
+
break;
|
|
97
|
+
case 'ArrowUp':
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
setFocusedIndex(focusedIndex > 0 ? focusedIndex - 1 : dateRangeOptions.length - 1);
|
|
100
|
+
break;
|
|
101
|
+
case 'Enter':
|
|
102
|
+
case ' ':
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
if (focusedIndex >= 0) {
|
|
105
|
+
handleSelect(dateRangeOptions[focusedIndex]);
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return (_jsxs("div", { role: "listbox", "aria-label": "Date range options", onKeyDown: handleKeyDown, className: cn('absolute top-[38px] left-0 w-[200px] rounded-xl overflow-hidden z-50', 'bg-[rgba(10,5,20,0.98)] backdrop-blur-[20px]', 'border border-white/[0.08]', 'shadow-[0px_20px_40px_rgba(0,0,0,0.5),0px_0px_1px_rgba(139,92,246,0.3)]', 'transition-all duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]', isOpen
|
|
111
|
+
? 'opacity-100 translate-y-0 scale-100 pointer-events-auto'
|
|
112
|
+
: 'opacity-0 -translate-y-2 scale-[0.96] pointer-events-none'), children: [_jsx("div", { className: "px-4 pt-3 pb-2 border-b border-white/[0.06]", children: _jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wide text-gray-500", children: "Select time range" }) }), _jsx("div", { className: "p-1.5", children: dateRangeOptions.map((option, index) => {
|
|
63
113
|
const isSelected = selectedRange === option.label;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}, children: _jsx("span", { className: "text-[10px] text-gray-600", children: "Data refreshes every 5 min" }) })] }));
|
|
114
|
+
const isFocused = focusedIndex === index;
|
|
115
|
+
return (_jsx(DropdownOption, { option: option, isSelected: isSelected, isFocused: isFocused, handleSelect: handleSelect }, option.value));
|
|
116
|
+
}) }), _jsx("div", { className: "px-4 py-2 border-t border-white/[0.06] bg-gradient-to-b from-transparent to-violet-500/[0.03]", children: _jsx("span", { className: "text-[10px] text-gray-600", children: "Data refreshes every 5 min" }) })] }));
|
|
68
117
|
}
|
|
69
|
-
function DropdownOption({ option, isSelected, handleSelect, }) {
|
|
70
|
-
return (_jsxs("button", { type: "button", role: "option", "aria-selected": isSelected, onClick: () => handleSelect(option), className:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
color: isSelected ? '#E9D5FF' : '#D1D5DB',
|
|
74
|
-
fontWeight: isSelected ? 500 : 400,
|
|
75
|
-
}, children: option.label }), isSelected && _jsx(Check, { size: 14, color: "#A78BFA", strokeWidth: 2.5 })] }));
|
|
118
|
+
function DropdownOption({ option, isSelected, isFocused, handleSelect, }) {
|
|
119
|
+
return (_jsxs("button", { type: "button", role: "option", "aria-selected": isSelected, onClick: () => handleSelect(option), className: cn('w-full px-3 py-2.5 flex items-center justify-between rounded-lg transition-all', isSelected && 'bg-violet-500/15', isFocused && !isSelected && 'bg-white/[0.04]', !isSelected && !isFocused && 'hover:bg-white/[0.04]'), children: [_jsx("span", { className: cn('text-[13px]', isSelected
|
|
120
|
+
? 'text-violet-200 font-medium'
|
|
121
|
+
: 'text-gray-300 font-normal'), children: option.label }), isSelected && (_jsx(Check, { size: 14, className: "text-violet-400", strokeWidth: 2.5 }))] }));
|
|
76
122
|
}
|
|
77
123
|
function RightSection({ showNotification, onNotificationClick, onAvatarClick, userInitials, }) {
|
|
78
|
-
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: onNotificationClick, "aria-label": showNotification ? 'View notifications (new)' : 'View notifications', className: "w-8 h-8 flex items-center justify-center rounded-lg relative transition-colors hover:bg-white/[0.06]", children: [_jsx(Bell, { size: 16,
|
|
79
|
-
background: '#8B5CF6',
|
|
80
|
-
border: '1.5px solid rgba(3, 0, 5, 0.9)',
|
|
81
|
-
} }))] }), _jsx("button", { type: "button", onClick: onAvatarClick, "aria-label": "User menu", className: "w-8 h-8 rounded-full flex items-center justify-center transition-all hover:outline-violet-500/40", style: {
|
|
82
|
-
background: 'rgba(76, 29, 149, 0.40)',
|
|
83
|
-
outline: '1px rgba(255, 255, 255, 0.10) solid',
|
|
84
|
-
outlineOffset: '-1px',
|
|
85
|
-
}, children: _jsx("span", { className: "text-xs font-semibold text-white", children: userInitials }) })] }));
|
|
124
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: onNotificationClick, "aria-label": showNotification ? 'View notifications (new)' : 'View notifications', className: "w-8 h-8 flex items-center justify-center rounded-lg relative transition-colors hover:bg-white/[0.06]", children: [_jsx(Bell, { size: 16, className: "text-gray-500", strokeWidth: 2 }), showNotification && (_jsx("div", { className: "absolute top-1.5 right-1.5 w-1.5 h-1.5 rounded-full bg-violet-500 border-[1.5px] border-[rgba(3,0,5,0.9)]" }))] }), _jsx("button", { type: "button", onClick: onAvatarClick, "aria-label": "User menu", className: "w-8 h-8 rounded-full flex items-center justify-center bg-violet-900/40 outline outline-1 outline-white/10 -outline-offset-1 transition-all hover:outline-violet-500/40", children: _jsx("span", { className: "text-xs font-semibold text-white", children: userInitials }) })] }));
|
|
86
125
|
}
|
|
87
126
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/components/dashboard/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/components/dashboard/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { VariantProps } from 'class-variance-authority';
|
|
2
2
|
declare const iconBadgeVariants: (props?: ({
|
|
3
3
|
variant?: "blue" | "gray" | "violet" | "emerald" | "rose" | null | undefined;
|
|
4
4
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconBadge.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/IconBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"IconBadge.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/IconBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAe7D,QAAA,MAAM,iBAAiB;;mFAiBtB,CAAC;AAaF,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,OAAO,iBAAiB,CAAC;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAgB,EAChB,SAAc,EACd,aAAkB,GACnB,EAAE,cAAc,2CA2BhB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { Bell, Home, LayoutGrid, MessageSquare, Search, Settings, TrendingUp, Users, } from 'lucide-react';
|
|
4
5
|
import { cn } from '../../lib/utils';
|
|
5
6
|
const iconBadgeVariants = cva('w-8 h-8 rounded-lg flex items-center justify-center border', {
|
|
6
7
|
variants: {
|
|
@@ -16,7 +17,18 @@ const iconBadgeVariants = cva('w-8 h-8 rounded-lg flex items-center justify-cent
|
|
|
16
17
|
variant: 'gray',
|
|
17
18
|
},
|
|
18
19
|
});
|
|
20
|
+
const iconMap = {
|
|
21
|
+
grid_view: LayoutGrid,
|
|
22
|
+
chat_bubble: MessageSquare,
|
|
23
|
+
timeline: TrendingUp,
|
|
24
|
+
group: Users,
|
|
25
|
+
settings: Settings,
|
|
26
|
+
notifications: Bell,
|
|
27
|
+
search: Search,
|
|
28
|
+
home: Home,
|
|
29
|
+
};
|
|
19
30
|
export function IconBadge({ icon, variant = 'gray', className = '', iconClassName = '', }) {
|
|
20
|
-
|
|
31
|
+
const IconComponent = iconMap[icon];
|
|
32
|
+
return (_jsx("div", { className: cn(iconBadgeVariants({ variant }), className), children: IconComponent ? (_jsx(IconComponent, { size: 18, className: cn(variant === 'gray' ? 'text-gray-400' : 'text-white', iconClassName), strokeWidth: 2 })) : (_jsx("span", { className: cn('text-[18px]', variant === 'gray' ? 'text-gray-400' : 'text-white', iconClassName), children: icon })) }));
|
|
21
33
|
}
|
|
22
34
|
//# sourceMappingURL=IconBadge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconBadge.js","sourceRoot":"","sources":["../../../src/components/dashboard/IconBadge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"IconBadge.js","sourceRoot":"","sources":["../../../src/components/dashboard/IconBadge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,GACN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,iBAAiB,GAAG,GAAG,CAC3B,4DAA4D,EAC5D;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,IAAI,EAAE,+BAA+B;YACrC,MAAM,EACJ,2EAA2E;YAC7E,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,mCAAmC;SAC1C;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,MAAM;KAChB;CACF,CACF,CAAC;AAEF,MAAM,OAAO,GAA+B;IAC1C,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;CACX,CAAC;AAQF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,EAAE,EACd,aAAa,GAAG,EAAE,GACH;IACf,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,YAC1D,aAAa,CAAC,CAAC,CAAC,CACf,KAAC,aAAa,IACZ,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,EAAE,CACX,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EACnD,aAAa,CACd,EACD,WAAW,EAAE,CAAC,GACd,CACH,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAE,EAAE,CACX,aAAa,EACb,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EACnD,aAAa,CACd,YAEA,IAAI,GACA,CACR,GACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -18,9 +18,11 @@ const chartColors = {
|
|
|
18
18
|
};
|
|
19
19
|
const DEFAULT_CHART_DATA = [25, 50, 35, 70, 100];
|
|
20
20
|
export function MetricsCard({ title, value, change, changeType, chartData = DEFAULT_CHART_DATA, chartColor = 'violet', }) {
|
|
21
|
-
|
|
21
|
+
// Safeguard for empty chartData
|
|
22
|
+
const safeChartData = chartData.length > 0 ? chartData : DEFAULT_CHART_DATA;
|
|
23
|
+
const maxValue = Math.max(...safeChartData);
|
|
22
24
|
const barColor = chartColors[chartColor];
|
|
23
|
-
return (_jsx(GlassPanel, { variant: "light", className: "relative overflow-hidden", children: _jsxs("div", { className: "p-4 sm:p-5 min-h-[100px] sm:min-h-[109px] flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-2 mb-auto", children: [_jsx("span", { className: "text-[10px] sm:text-xs font-semibold uppercase tracking-wider text-gray-400", children: title }), _jsx(StatusBadge, { variant: changeType, children: change })] }), _jsxs("div", { className: "flex items-end justify-between mt-4", children: [_jsx("span", { className: "text-xl sm:text-2xl font-bold text-white", children: value }), _jsx(MiniChart, { chartData:
|
|
25
|
+
return (_jsx(GlassPanel, { variant: "light", className: "relative overflow-hidden", children: _jsxs("div", { className: "p-4 sm:p-5 min-h-[100px] sm:min-h-[109px] flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-2 mb-auto", children: [_jsx("span", { className: "text-[10px] sm:text-xs font-semibold uppercase tracking-wider text-gray-400", children: title }), _jsx(StatusBadge, { variant: changeType, children: change })] }), _jsxs("div", { className: "flex items-end justify-between mt-4", children: [_jsx("span", { className: "text-xl sm:text-2xl font-bold text-white", children: value }), _jsx(MiniChart, { chartData: safeChartData, maxValue: maxValue, barColor: barColor })] })] }) }));
|
|
24
26
|
}
|
|
25
27
|
function MiniChart({ chartData, maxValue, barColor }) {
|
|
26
28
|
return (_jsx("div", { className: "flex items-end gap-[2px]", children: chartData.map((val, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsCard.js","sourceRoot":"","sources":["../../../src/components/dashboard/MetricsCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,sCAAsC;KAC/C;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,qCAAqC;KAC9C;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,MAAM;KACf;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU,CAAC;AAE1D,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,GAAG,kBAAkB,EAC9B,UAAU,GAAG,QAAQ,GACJ;IACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"MetricsCard.js","sourceRoot":"","sources":["../../../src/components/dashboard/MetricsCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,sCAAsC;KAC/C;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,qCAAqC;KAC9C;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,SAAS;QACb,MAAM,EAAE,MAAM;KACf;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU,CAAC;AAE1D,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,GAAG,kBAAkB,EAC9B,UAAU,GAAG,QAAQ,GACJ;IACjB,gCAAgC;IAChC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAEzC,OAAO,CACL,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,0BAA0B,YAC9D,eAAK,SAAS,EAAC,yDAAyD,aACtE,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAM,SAAS,EAAC,6EAA6E,YAC1F,KAAK,GACD,EACP,KAAC,WAAW,IAAC,OAAO,EAAE,UAAU,YAAG,MAAM,GAAe,IACpD,EAEN,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAM,SAAS,EAAC,0CAA0C,YACvD,KAAK,GACD,EAEP,KAAC,SAAS,IACR,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,IACE,IACF,GACK,CACd,CAAC;AACJ,CAAC;AAQD,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAkB;IAClE,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACtC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAElD,OAAO,CACL,cAEE,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,GAAG,MAAM,IAAI;oBACrB,YAAY,EAAE,aAAa;oBAC3B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;oBAC5C,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBAC5C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;iBAC1B,IARI,OAAO,KAAK,IAAI,GAAG,EAAE,CAS1B,CACH,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/MobileSidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MobileSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/MobileSidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAC;AAS3D,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAiBnC,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,OAAO,EACP,QAA0B,EAC1B,UAAgB,EAChB,UAAU,EACV,YAAmB,EACnB,OAAwB,EACxB,QAAiB,EACjB,SAA8B,EAC9B,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,YAAqB,EACrB,oBAA2B,EAC3B,WAAW,EACX,YAAY,EACZ,mBAA0B,EAC1B,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,EAAE,kBAAkB,2CAyGpB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
3
|
import { AnimatePresence, motion } from 'framer-motion';
|
|
5
4
|
import { X } from 'lucide-react';
|
|
5
|
+
import { useEffect } from 'react';
|
|
6
6
|
import { ChatHistorySection } from './ChatHistorySection';
|
|
7
7
|
import { NavMenu } from './NavMenu';
|
|
8
8
|
import { SettingsDropup } from './SettingsDropup';
|
|
@@ -42,27 +42,10 @@ export function MobileSidebar({ isOpen, onClose, navItems = defaultNavItems, act
|
|
|
42
42
|
onNavigate?.(href);
|
|
43
43
|
onClose();
|
|
44
44
|
};
|
|
45
|
-
return (_jsx(AnimatePresence, { children: isOpen && (_jsxs(_Fragment, { children: [_jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.2 }, className: "fixed inset-0 bg-black/60 z-[100] md:hidden", onClick: onClose, "aria-hidden": "true" }), _jsxs(motion.aside, { initial: { x: '-100%' }, animate: { x: 0 }, exit: { x: '-100%' }, transition: { type: 'spring', damping: 25, stiffness: 300 }, className: "fixed left-0 top-0 h-full z-[101] md:hidden", style: {
|
|
46
|
-
width: 280,
|
|
47
|
-
background: 'black',
|
|
48
|
-
borderRight: '1px rgba(255, 255, 255, 0.08) solid',
|
|
49
|
-
}, children: [_jsx("div", { style: {
|
|
50
|
-
width: 279,
|
|
51
|
-
height: '100%',
|
|
52
|
-
left: 0,
|
|
53
|
-
top: 0,
|
|
54
|
-
position: 'absolute',
|
|
45
|
+
return (_jsx(AnimatePresence, { children: isOpen && (_jsxs(_Fragment, { children: [_jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.2 }, className: "fixed inset-0 bg-black/60 z-[100] md:hidden", onClick: onClose, "aria-hidden": "true" }), _jsxs(motion.aside, { initial: { x: '-100%' }, animate: { x: 0 }, exit: { x: '-100%' }, transition: { type: 'spring', damping: 25, stiffness: 300 }, className: "fixed left-0 top-0 h-full w-[280px] bg-black border-r border-white/[0.08] z-[101] md:hidden", children: [_jsx("div", { className: "absolute inset-0 w-[279px] h-full pointer-events-none", style: {
|
|
55
46
|
background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0) 100%)',
|
|
56
|
-
|
|
57
|
-
} }), _jsx("div", { style: {
|
|
58
|
-
width: 279,
|
|
59
|
-
height: 128,
|
|
60
|
-
left: 0,
|
|
61
|
-
top: 0,
|
|
62
|
-
position: 'absolute',
|
|
63
|
-
opacity: 0.50,
|
|
47
|
+
} }), _jsx("div", { className: "absolute left-0 top-0 w-[279px] h-32 opacity-50 pointer-events-none", style: {
|
|
64
48
|
background: 'linear-gradient(180deg, #100B1A 0%, rgba(16, 11, 26, 0) 100%)',
|
|
65
|
-
pointerEvents: 'none',
|
|
66
49
|
} }), _jsx("button", { type: "button", onClick: onClose, className: "absolute top-4 right-4 w-8 h-8 flex items-center justify-center rounded-lg z-10 transition-colors hover:bg-white/[0.06]", "aria-label": "Close menu", children: _jsx(X, { size: 20, color: "#9CA3AF", strokeWidth: 2 }) }), _jsxs("div", { className: "flex flex-col h-full", children: [_jsx(SidebarLogo, { logoSrc: logoSrc }), _jsx(NavMenu, { items: navItems, activeHref: activeHref, onNavigate: handleNavigate }), _jsx(ChatHistorySection, { items: chatHistory, activeItemId: activeChatId, isExpanded: chatHistoryExpanded, isVisible: showChatHistory, onItemClick: onChatClick, onToggleExpanded: onChatHistoryToggle, onRename: onChatRename, onDelete: onChatDelete }), showSettings && (_jsx(SettingsDropup, { userName: userName, userEmail: userEmail, initialTheme: initialTheme, initialNotifications: initialNotifications, onThemeChange: onThemeChange, onNotificationsChange: onNotificationsChange, onLogout: onLogout }))] })] })] })) }));
|
|
67
50
|
}
|
|
68
51
|
//# sourceMappingURL=MobileSidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileSidebar.js","sourceRoot":"","sources":["../../../src/components/dashboard/MobileSidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"MobileSidebar.js","sourceRoot":"","sources":["../../../src/components/dashboard/MobileSidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,eAAe,GAAc;IACjC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;IACnD,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;IAC7D;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,GAAG;QACT,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,wBAAwB,EAAE;YACnE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE;SAC5D;KACF;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;CAChD,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,OAAO,EACP,QAAQ,GAAG,eAAe,EAC1B,UAAU,GAAG,GAAG,EAChB,UAAU,EACV,YAAY,GAAG,IAAI,EACnB,OAAO,GAAG,cAAc,EACxB,QAAQ,GAAG,MAAM,EACjB,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,YAAY,GAAG,MAAM,EACrB,oBAAoB,GAAG,IAAI,EAC3B,WAAW,EACX,YAAY,EACZ,mBAAmB,GAAG,IAAI,EAC1B,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACO;IACnB,0CAA0C;IAC1C,MAAM,cAAc,GAAG,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,eAAe,GAAG,cAAc,KAAK,WAAW,CAAC;IAEvD,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,qDAAqD;IACrD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE;QACtC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,eAAe,cACb,MAAM,IAAI,CACT,8BACE,KAAC,MAAM,CAAC,GAAG,IACT,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACpB,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC7B,SAAS,EAAC,6CAA6C,EACvD,OAAO,EAAE,OAAO,iBACJ,MAAM,GAClB,EAEF,MAAC,MAAM,CAAC,KAAK,IACX,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EACvB,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EACjB,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EACpB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAC3D,SAAS,EAAC,6FAA6F,aAEvG,cACE,SAAS,EAAC,uDAAuD,EACjE,KAAK,EAAE;gCACL,UAAU,EACR,oFAAoF;6BACvF,GACD,EACF,cACE,SAAS,EAAC,qEAAqE,EAC/E,KAAK,EAAE;gCACL,UAAU,EACR,+DAA+D;6BAClE,GACD,EAEF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,yHAAyH,gBACxH,YAAY,YAEvB,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GACxC,EAET,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,EAEjC,KAAC,OAAO,IACN,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,GAC1B,EAEF,KAAC,kBAAkB,IACjB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,mBAAmB,EAC/B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,mBAAmB,EACrC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,GACtB,EAED,YAAY,IAAI,CACf,KAAC,cAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,EAC1C,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,QAAQ,GAClB,CACH,IACG,IACO,IACd,CACJ,GACe,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/NavMenu.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NavMenu.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/NavMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAWvC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAWD,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,YAAY,2CAmKtE"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown, LayoutGrid, MessageSquare, TrendingUp, Users, } from 'lucide-react';
|
|
3
4
|
import { useState } from 'react';
|
|
4
|
-
import {
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
5
6
|
const iconComponents = {
|
|
6
7
|
grid_view: LayoutGrid,
|
|
7
8
|
chat_bubble: MessageSquare,
|
|
@@ -10,17 +11,16 @@ const iconComponents = {
|
|
|
10
11
|
};
|
|
11
12
|
export function NavMenu({ items, activeHref, onNavigate }) {
|
|
12
13
|
const [expandedMenus, setExpandedMenus] = useState([]);
|
|
13
|
-
// Normalize paths for comparison (handle trailing slashes)
|
|
14
14
|
const normalizePath = (path) => path.replace(/\/$/, '') || '/';
|
|
15
15
|
const isActive = (href) => {
|
|
16
16
|
const normalizedActive = normalizePath(activeHref);
|
|
17
17
|
const normalizedHref = normalizePath(href);
|
|
18
18
|
return normalizedActive === normalizedHref;
|
|
19
19
|
};
|
|
20
|
-
const isSubmenuActive = (subItems) => subItems?.some(
|
|
20
|
+
const isSubmenuActive = (subItems) => subItems?.some(item => isActive(item.href));
|
|
21
21
|
const isExpanded = (label) => expandedMenus.includes(label);
|
|
22
22
|
const toggleMenu = (label) => {
|
|
23
|
-
setExpandedMenus(
|
|
23
|
+
setExpandedMenus(prev => prev.includes(label) ? prev.filter(l => l !== label) : [...prev, label]);
|
|
24
24
|
};
|
|
25
25
|
const handleNavigate = (href, e) => {
|
|
26
26
|
if (onNavigate) {
|
|
@@ -28,118 +28,39 @@ export function NavMenu({ items, activeHref, onNavigate }) {
|
|
|
28
28
|
onNavigate(href);
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
+
const handleKeyDown = (label, e) => {
|
|
32
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
toggleMenu(label);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
31
37
|
const renderIcon = (iconName, active) => {
|
|
32
38
|
const IconComponent = iconComponents[iconName];
|
|
33
39
|
if (!IconComponent)
|
|
34
40
|
return null;
|
|
35
|
-
return (_jsx(IconComponent, { size: 15,
|
|
41
|
+
return (_jsx(IconComponent, { size: 15, className: cn('transition-colors', active ? 'text-violet-300' : 'text-gray-500'), strokeWidth: 2 }));
|
|
36
42
|
};
|
|
37
|
-
return (_jsx("nav", {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
display: 'flex',
|
|
42
|
-
flexDirection: 'column',
|
|
43
|
-
gap: 4,
|
|
44
|
-
}, children: items.map((item) => {
|
|
45
|
-
const itemIsActive = item.submenu ? isSubmenuActive(item.submenu) : isActive(item.href);
|
|
43
|
+
return (_jsx("nav", { className: "w-[247px] ml-4 mt-[99.5px] flex flex-col gap-1", children: items.map(item => {
|
|
44
|
+
const itemIsActive = item.submenu
|
|
45
|
+
? isSubmenuActive(item.submenu)
|
|
46
|
+
: isActive(item.href);
|
|
46
47
|
const expanded = item.submenu && isExpanded(item.label);
|
|
47
48
|
const submenuHeight = item.submenu ? item.submenu.length * 35.5 : 0;
|
|
48
|
-
return item.submenu ? (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => toggleMenu(item.label), "aria-label": `${item.label} menu`, "aria-expanded": expanded,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
position: 'relative',
|
|
52
|
-
borderRadius: 8,
|
|
53
|
-
background: expanded ? 'rgba(255, 255, 255, 0.03)' : 'transparent',
|
|
54
|
-
border: 'none',
|
|
55
|
-
cursor: 'pointer',
|
|
56
|
-
display: 'flex',
|
|
57
|
-
alignItems: 'center',
|
|
58
|
-
paddingLeft: 12,
|
|
59
|
-
gap: 12,
|
|
60
|
-
transition: 'background 0.15s ease',
|
|
61
|
-
}, onMouseEnter: (e) => {
|
|
62
|
-
if (!expanded)
|
|
63
|
-
e.currentTarget.style.background = 'rgba(255, 255, 255, 0.04)';
|
|
64
|
-
}, onMouseLeave: (e) => {
|
|
65
|
-
if (!expanded)
|
|
66
|
-
e.currentTarget.style.background = 'transparent';
|
|
67
|
-
}, children: [_jsx("div", { style: { width: 20, height: 24, display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }, children: renderIcon(item.icon, !!itemIsActive) }), _jsx("span", { style: {
|
|
68
|
-
color: itemIsActive ? 'white' : '#9CA3AF',
|
|
69
|
-
fontSize: 14,
|
|
70
|
-
fontFamily: 'Sora, sans-serif',
|
|
71
|
-
fontWeight: 400,
|
|
72
|
-
lineHeight: '21px',
|
|
73
|
-
flex: 1,
|
|
74
|
-
textAlign: 'left',
|
|
75
|
-
}, children: item.label }), _jsx("div", { style: { width: 18, height: 22, display: 'flex', alignItems: 'center', justifyContent: 'center', marginRight: 12, transition: 'transform 0.2s ease' }, children: _jsx(ChevronDown, { size: 12, color: "#4B5563", strokeWidth: 2, style: {
|
|
76
|
-
transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
77
|
-
transition: 'transform 0.2s ease',
|
|
78
|
-
} }) })] }), _jsx("div", { style: {
|
|
79
|
-
marginLeft: 44,
|
|
80
|
-
overflow: 'hidden',
|
|
49
|
+
return item.submenu ? (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => toggleMenu(item.label), onKeyDown: e => handleKeyDown(item.label, e), "aria-label": `${item.label} menu`, "aria-expanded": expanded, className: cn('w-[247px] h-[41px] relative rounded-lg border-none cursor-pointer', 'flex items-center pl-3 gap-3 transition-colors duration-150', expanded
|
|
50
|
+
? 'bg-white/[0.03]'
|
|
51
|
+
: 'bg-transparent hover:bg-white/[0.04]'), children: [_jsx("div", { className: "w-5 h-6 flex items-center justify-center shrink-0", children: renderIcon(item.icon, !!itemIsActive) }), _jsx("span", { className: cn('text-sm font-normal leading-[21px] flex-1 text-left font-[Sora,sans-serif]', itemIsActive ? 'text-white' : 'text-gray-400'), children: item.label }), _jsx("div", { className: "w-[18px] h-[22px] flex items-center justify-center mr-3", children: _jsx(ChevronDown, { size: 12, className: cn('text-gray-600 transition-transform duration-200', expanded && 'rotate-180'), strokeWidth: 2 }) })] }), _jsx("div", { className: "ml-11 overflow-hidden transition-all duration-250", style: {
|
|
81
52
|
maxHeight: expanded ? submenuHeight : 0,
|
|
82
53
|
opacity: expanded ? 1 : 0,
|
|
83
|
-
|
|
84
|
-
}, children: item.submenu.map((subitem) => {
|
|
54
|
+
}, children: item.submenu.map(subitem => {
|
|
85
55
|
const subActive = isActive(subitem.href);
|
|
86
|
-
return (_jsx("a", { href: subitem.href, onClick:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
cursor: 'pointer',
|
|
95
|
-
transition: 'background 0.15s ease',
|
|
96
|
-
background: subActive ? 'rgba(139, 92, 246, 0.10)' : 'transparent',
|
|
97
|
-
}, onMouseEnter: (e) => {
|
|
98
|
-
if (!subActive)
|
|
99
|
-
e.currentTarget.style.background = 'rgba(255, 255, 255, 0.04)';
|
|
100
|
-
}, onMouseLeave: (e) => {
|
|
101
|
-
if (!subActive)
|
|
102
|
-
e.currentTarget.style.background = 'transparent';
|
|
103
|
-
}, children: _jsx("span", { style: {
|
|
104
|
-
color: subActive ? '#C4B5FD' : '#6B7280',
|
|
105
|
-
fontSize: 13,
|
|
106
|
-
fontFamily: 'Sora, sans-serif',
|
|
107
|
-
fontWeight: subActive ? 500 : 400,
|
|
108
|
-
lineHeight: '19.5px',
|
|
109
|
-
transition: 'color 0.15s ease',
|
|
110
|
-
}, children: subitem.label }) }, subitem.label));
|
|
111
|
-
}) })] }, item.label)) : (_jsxs("a", { href: item.href, onClick: (e) => handleNavigate(item.href, e), style: {
|
|
112
|
-
width: 247,
|
|
113
|
-
height: 41,
|
|
114
|
-
borderRadius: 8,
|
|
115
|
-
display: 'flex',
|
|
116
|
-
alignItems: 'center',
|
|
117
|
-
paddingLeft: 12,
|
|
118
|
-
gap: 12,
|
|
119
|
-
textDecoration: 'none',
|
|
120
|
-
transition: 'all 0.15s ease',
|
|
121
|
-
cursor: 'pointer',
|
|
122
|
-
...(itemIsActive ? {
|
|
123
|
-
background: 'rgba(255, 255, 255, 0.08)',
|
|
124
|
-
boxShadow: '0px 1px 0px 1px rgba(255, 255, 255, 0.05) inset',
|
|
125
|
-
outline: '1px rgba(255, 255, 255, 0.05) solid',
|
|
126
|
-
outlineOffset: '-1px',
|
|
127
|
-
} : {
|
|
128
|
-
background: 'transparent',
|
|
129
|
-
}),
|
|
130
|
-
}, onMouseEnter: (e) => {
|
|
131
|
-
if (!itemIsActive)
|
|
132
|
-
e.currentTarget.style.background = 'rgba(255, 255, 255, 0.04)';
|
|
133
|
-
}, onMouseLeave: (e) => {
|
|
134
|
-
if (!itemIsActive)
|
|
135
|
-
e.currentTarget.style.background = 'transparent';
|
|
136
|
-
}, children: [_jsx("div", { style: { width: 20, height: 24, display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }, children: renderIcon(item.icon, !!itemIsActive) }), _jsx("span", { style: {
|
|
137
|
-
color: itemIsActive ? 'white' : '#9CA3AF',
|
|
138
|
-
fontSize: 14,
|
|
139
|
-
fontFamily: 'Sora, sans-serif',
|
|
140
|
-
fontWeight: 400,
|
|
141
|
-
lineHeight: '21px',
|
|
142
|
-
}, children: item.label })] }, item.label));
|
|
56
|
+
return (_jsx("a", { href: subitem.href, onClick: e => handleNavigate(subitem.href, e), className: cn('w-[203px] h-[35.5px] rounded-lg flex items-center pl-3', 'no-underline cursor-pointer transition-colors duration-150', subActive
|
|
57
|
+
? 'bg-violet-500/10'
|
|
58
|
+
: 'bg-transparent hover:bg-white/[0.04]'), children: _jsx("span", { className: cn('text-[13px] leading-[19.5px] font-[Sora,sans-serif] transition-colors duration-150', subActive
|
|
59
|
+
? 'text-violet-300 font-medium'
|
|
60
|
+
: 'text-gray-500 font-normal'), children: subitem.label }) }, subitem.label));
|
|
61
|
+
}) })] }, item.label)) : (_jsxs("a", { href: item.href, onClick: e => handleNavigate(item.href, e), className: cn('w-[247px] h-[41px] rounded-lg flex items-center pl-3 gap-3', 'no-underline cursor-pointer transition-all duration-150', itemIsActive
|
|
62
|
+
? 'bg-white/[0.08] shadow-[inset_0px_1px_0px_1px_rgba(255,255,255,0.05)] outline outline-1 outline-white/[0.05] -outline-offset-1'
|
|
63
|
+
: 'bg-transparent hover:bg-white/[0.04]'), children: [_jsx("div", { className: "w-5 h-6 flex items-center justify-center shrink-0", children: renderIcon(item.icon, !!itemIsActive) }), _jsx("span", { className: cn('text-sm font-normal leading-[21px] font-[Sora,sans-serif]', itemIsActive ? 'text-white' : 'text-gray-400'), children: item.label })] }, item.label));
|
|
143
64
|
}) }));
|
|
144
65
|
}
|
|
145
66
|
//# sourceMappingURL=NavMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavMenu.js","sourceRoot":"","sources":["../../../src/components/dashboard/NavMenu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"NavMenu.js","sourceRoot":"","sources":["../../../src/components/dashboard/NavMenu.tsx"],"names":[],"mappings":"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"}
|