@b3-crow/ui-kit 0.0.42 → 0.0.44
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/MetricsCard.js +6 -6
- package/dist/components/cards/MetricsCard.js.map +1 -1
- package/dist/components/dashboard/SettingsDropup.d.ts +1 -1
- package/dist/components/dashboard/SettingsDropup.d.ts.map +1 -1
- package/dist/components/dashboard/SettingsDropup.js +5 -27
- package/dist/components/dashboard/SettingsDropup.js.map +1 -1
- package/dist/components/inputs/SettingsDropup.d.ts +1 -1
- package/dist/components/inputs/SettingsDropup.d.ts.map +1 -1
- package/dist/components/inputs/SettingsDropup.js +5 -26
- package/dist/components/inputs/SettingsDropup.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,16 +5,16 @@ import { GlassPanel } from '../layout/GlassPanel';
|
|
|
5
5
|
import { CHART_COLORS } from '../../lib/constants/gradients';
|
|
6
6
|
const DEFAULT_CHART_DATA = [25, 50, 35, 70, 100];
|
|
7
7
|
function MiniChart({ chartData, maxValue, barColor }) {
|
|
8
|
-
return (_jsx("div", { className: "flex items-end gap-
|
|
8
|
+
return (_jsx("div", { className: "flex items-end gap-1", children: chartData.map((value, index) => {
|
|
9
9
|
const isLast = index === chartData.length - 1;
|
|
10
|
-
const height = Math.max((value / maxValue) *
|
|
10
|
+
const height = Math.max((value / maxValue) * 36, 4);
|
|
11
11
|
return (_jsx("div", { style: {
|
|
12
|
-
width: '
|
|
12
|
+
width: '16px',
|
|
13
13
|
height: `${height}px`,
|
|
14
|
-
borderRadius: '
|
|
14
|
+
borderRadius: '3px 3px 0 0',
|
|
15
15
|
background: isLast ? barColor.bg : '#374151',
|
|
16
16
|
boxShadow: isLast ? barColor.shadow : 'none',
|
|
17
|
-
opacity: isLast ? 1 : 0.
|
|
17
|
+
opacity: isLast ? 1 : 0.6,
|
|
18
18
|
} }, `bar-${index}-${value}`));
|
|
19
19
|
}) }));
|
|
20
20
|
}
|
|
@@ -22,6 +22,6 @@ export function MetricsCard({ title, value, change, changeType, chartData = DEFA
|
|
|
22
22
|
const safeChartData = chartData.length > 0 ? chartData : DEFAULT_CHART_DATA;
|
|
23
23
|
const maxValue = Math.max(...safeChartData);
|
|
24
24
|
const barColor = CHART_COLORS[chartColor];
|
|
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 })] })] }) }));
|
|
25
|
+
return (_jsx(GlassPanel, { variant: "light", className: "relative overflow-hidden h-full", 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 whitespace-nowrap truncate", 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 })] })] }) }));
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=MetricsCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsCard.js","sourceRoot":"","sources":["../../../src/components/cards/MetricsCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW7D,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU,CAAC;AAQ1D,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAkB;IAClE,OAAO,CACL,cAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"MetricsCard.js","sourceRoot":"","sources":["../../../src/components/cards/MetricsCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAW7D,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAU,CAAC;AAQ1D,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAkB;IAClE,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YAClC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAEpD,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,KAAK,EAAE,CAS5B,CACH,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,GAAG,kBAAkB,EAC9B,UAAU,GAAG,QAAQ,GACJ;IACjB,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,YAAY,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO,CACL,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,iCAAiC,YACrE,eAAK,SAAS,EAAC,yDAAyD,aACtE,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAM,SAAS,EAAC,wGAAwG,YACrH,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,EACP,KAAC,SAAS,IACR,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GAClB,IACE,IACF,GACK,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -6,5 +6,5 @@ export interface SettingsDropupProps {
|
|
|
6
6
|
onNotificationsChange?: (enabled: boolean) => void;
|
|
7
7
|
onLogout?: () => void;
|
|
8
8
|
}
|
|
9
|
-
export declare function SettingsDropup({ userName, userEmail, userAvatar,
|
|
9
|
+
export declare function SettingsDropup({ userName, userEmail, userAvatar, onLogout, }: SettingsDropupProps): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
//# sourceMappingURL=SettingsDropup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsDropup.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SettingsDropup.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsDropup.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SettingsDropup.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAUD,wBAAgB,cAAc,CAAC,EAC7B,QAAiB,EACjB,SAA8B,EAC9B,UAAU,EACV,QAAQ,GACT,EAAE,mBAAmB,2CA+KrB"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { ChevronUp, LogOut, Settings } from 'lucide-react';
|
|
4
4
|
import { useEffect, useRef, useState } from 'react';
|
|
5
5
|
import { cn } from '../../lib/utils';
|
|
6
|
-
import { ToggleSwitch } from './ToggleSwitch';
|
|
7
6
|
const getInitials = (name) => name
|
|
8
7
|
.split(' ')
|
|
9
8
|
.filter(Boolean)
|
|
10
9
|
.slice(0, 2)
|
|
11
10
|
.map(part => part[0].toUpperCase())
|
|
12
11
|
.join('');
|
|
13
|
-
export function SettingsDropup({ userName = 'User', userEmail = 'user@example.com', userAvatar,
|
|
12
|
+
export function SettingsDropup({ userName = 'User', userEmail = 'user@example.com', userAvatar, onLogout, }) {
|
|
14
13
|
const [isOpen, setIsOpen] = useState(false);
|
|
15
|
-
const [notifications, setNotifications] = useState(initialNotifications);
|
|
16
14
|
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
17
15
|
const ref = useRef(null);
|
|
18
16
|
const triggerRef = useRef(null);
|
|
19
|
-
const notificationsItemRef = useRef(null);
|
|
20
17
|
const logoutItemRef = useRef(null);
|
|
21
18
|
useEffect(() => {
|
|
22
19
|
const handleClickOutside = (event) => {
|
|
@@ -27,8 +24,7 @@ export function SettingsDropup({ userName = 'User', userEmail = 'user@example.co
|
|
|
27
24
|
document.addEventListener('mousedown', handleClickOutside);
|
|
28
25
|
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
29
26
|
}, []);
|
|
30
|
-
|
|
31
|
-
const focusableItemCount = 1 + (onLogout ? 1 : 0);
|
|
27
|
+
const focusableItemCount = onLogout ? 1 : 0;
|
|
32
28
|
useEffect(() => {
|
|
33
29
|
setFocusedIndex(isOpen ? 0 : -1);
|
|
34
30
|
}, [isOpen]);
|
|
@@ -71,32 +67,14 @@ export function SettingsDropup({ userName = 'User', userEmail = 'user@example.co
|
|
|
71
67
|
};
|
|
72
68
|
useEffect(() => {
|
|
73
69
|
if (isOpen && focusedIndex >= 0) {
|
|
74
|
-
if (focusedIndex === 0) {
|
|
75
|
-
notificationsItemRef.current?.focus();
|
|
76
|
-
}
|
|
77
|
-
else if (focusedIndex === 1 && onLogout) {
|
|
70
|
+
if (focusedIndex === 0 && onLogout) {
|
|
78
71
|
logoutItemRef.current?.focus();
|
|
79
72
|
}
|
|
80
73
|
}
|
|
81
74
|
}, [focusedIndex, isOpen, onLogout]);
|
|
82
|
-
const handleNotificationsToggle = () => {
|
|
83
|
-
const newValue = !notifications;
|
|
84
|
-
setNotifications(newValue);
|
|
85
|
-
onNotificationsChange?.(newValue);
|
|
86
|
-
};
|
|
87
75
|
return (_jsxs("div", { ref: ref, className: "w-[247px] absolute left-4 bottom-6", children: [_jsxs("div", { role: "menu", className: cn('absolute bottom-[52px] left-0 w-[247px]', 'bg-[rgba(10,5,20,0.98)] backdrop-blur-[20px] rounded-xl', 'border border-white/[0.08] shadow-[0px_-8px_32px_rgba(0,0,0,0.4)]', 'overflow-hidden z-50 transition-all duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]', isOpen
|
|
88
76
|
? 'opacity-100 translate-y-0 scale-100 pointer-events-auto'
|
|
89
|
-
: 'opacity-0 translate-y-2 scale-[0.96] pointer-events-none'), children: [_jsxs("div", { className: "p-3 px-3 border-b border-white/[0.06] flex items-center gap-2.5", children: [userAvatar ? (_jsx("img", { src: userAvatar, alt: userName, className: "w-9 h-9 rounded-full object-cover border border-violet-500/30 shrink-0" })) : (_jsx("div", { className: "w-9 h-9 rounded-full bg-violet-500/20 flex items-center justify-center border border-violet-500/30 shrink-0 text-violet-400 text-xs font-semibold font-[Sora,sans-serif]", children: getInitials(userName) })), _jsxs("div", { className: "overflow-hidden", children: [_jsx("div", { className: "text-white text-[13px] font-medium font-[Sora,sans-serif] truncate", children: userName }), _jsx("div", { className: "text-gray-500 text-[11px] font-[Sora,sans-serif] truncate", children: userEmail })] })] }), _jsx("div", { className: "p-1.5", children: _jsxs("
|
|
90
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
91
|
-
e.preventDefault();
|
|
92
|
-
handleNotificationsToggle();
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
handleKeyDown(e);
|
|
96
|
-
}
|
|
97
|
-
}, className: cn('w-full py-2.5 px-2 flex items-center justify-between rounded-lg transition-colors cursor-pointer', focusedIndex === 0 && isOpen
|
|
98
|
-
? 'bg-white/[0.06]'
|
|
99
|
-
: 'hover:bg-white/[0.04]'), children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [notifications ? (_jsx(Bell, { size: 15, className: "text-emerald-500", strokeWidth: 2 })) : (_jsx(BellOff, { size: 15, className: "text-gray-500", strokeWidth: 2 })), _jsx("span", { className: "text-gray-300 text-[13px] font-[Sora,sans-serif]", children: "Notifications" })] }), _jsx(ToggleSwitch, { enabled: notifications, size: "sm", "aria-label": "Toggle notifications" })] }) }), onLogout && (_jsx("div", { className: "p-1.5 border-t border-white/[0.06]", children: _jsxs("button", { ref: logoutItemRef, type: "button", role: "menuitem", tabIndex: focusedIndex === 1 && isOpen ? 0 : -1, onClick: onLogout, onKeyDown: handleKeyDown, className: cn('w-full py-2.5 px-2 flex items-center gap-2.5 bg-transparent border-none rounded-lg cursor-pointer transition-colors', focusedIndex === 1 && isOpen
|
|
77
|
+
: 'opacity-0 translate-y-2 scale-[0.96] pointer-events-none'), children: [_jsxs("div", { className: "p-3 px-3 border-b border-white/[0.06] flex items-center gap-2.5", children: [userAvatar ? (_jsx("img", { src: userAvatar, alt: userName, className: "w-9 h-9 rounded-full object-cover border border-violet-500/30 shrink-0" })) : (_jsx("div", { className: "w-9 h-9 rounded-full bg-violet-500/20 flex items-center justify-center border border-violet-500/30 shrink-0 text-violet-400 text-xs font-semibold font-[Sora,sans-serif]", children: getInitials(userName) })), _jsxs("div", { className: "overflow-hidden", children: [_jsx("div", { className: "text-white text-[13px] font-medium font-[Sora,sans-serif] truncate", children: userName }), _jsx("div", { className: "text-gray-500 text-[11px] font-[Sora,sans-serif] truncate", children: userEmail })] })] }), onLogout && (_jsx("div", { className: "p-1.5", children: _jsxs("button", { ref: logoutItemRef, type: "button", role: "menuitem", tabIndex: focusedIndex === 0 && isOpen ? 0 : -1, onClick: onLogout, onKeyDown: handleKeyDown, className: cn('w-full py-2.5 px-2 flex items-center gap-2.5 bg-transparent border-none rounded-lg cursor-pointer transition-colors', focusedIndex === 0 && isOpen
|
|
100
78
|
? 'bg-red-500/10'
|
|
101
79
|
: 'hover:bg-red-500/10'), children: [_jsx(LogOut, { size: 15, className: "text-red-500", strokeWidth: 2 }), _jsx("span", { className: "text-red-500 text-[13px] font-[Sora,sans-serif]", children: "Sign out" })] }) }))] }), _jsx("div", { className: "border-t border-white/[0.08] pt-3", children: _jsxs("button", { ref: triggerRef, type: "button", onClick: () => setIsOpen(!isOpen), onKeyDown: handleKeyDown, "aria-label": "Open settings", "aria-expanded": isOpen, "aria-haspopup": "menu", className: cn('w-[247px] h-[41px] rounded-lg border-none cursor-pointer transition-colors', 'flex items-center pl-3 gap-3', isOpen ? 'bg-white/[0.06]' : 'bg-transparent hover:bg-white/[0.04]'), children: [_jsx("div", { className: "w-5 h-6 flex items-center justify-center", children: _jsx(Settings, { size: 15, className: cn(isOpen ? 'text-violet-400' : 'text-gray-500'), strokeWidth: 2 }) }), _jsx("span", { className: cn('text-sm font-normal leading-[21px] font-[Sora,sans-serif] flex-1 text-left', isOpen ? 'text-white' : 'text-gray-400'), children: "Settings" }), _jsx("div", { className: "w-[18px] h-[22px] flex items-center justify-center mr-3", children: _jsx(ChevronUp, { size: 12, className: cn('transition-transform duration-200', isOpen ? 'text-violet-400 rotate-180' : 'text-gray-600'), strokeWidth: 2 }) })] }) })] }));
|
|
102
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsDropup.js","sourceRoot":"","sources":["../../../src/components/dashboard/SettingsDropup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SettingsDropup.js","sourceRoot":"","sources":["../../../src/components/dashboard/SettingsDropup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,5 @@ export interface SettingsDropupProps {
|
|
|
7
7
|
onLogout?: () => void;
|
|
8
8
|
isCollapsed?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export declare function SettingsDropup({ userName, userEmail, userAvatar,
|
|
10
|
+
export declare function SettingsDropup({ userName, userEmail, userAvatar, onLogout, isCollapsed, }: SettingsDropupProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
//# sourceMappingURL=SettingsDropup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsDropup.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/SettingsDropup.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsDropup.d.ts","sourceRoot":"","sources":["../../../src/components/inputs/SettingsDropup.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAiB,EACjB,SAA8B,EAC9B,UAAU,EACV,QAAQ,EACR,WAAmB,GACpB,EAAE,mBAAmB,2CA6LrB"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { ChevronUp, LogOut, Settings, User } from 'lucide-react';
|
|
4
4
|
import { useEffect, useRef, useState } from 'react';
|
|
5
5
|
import { cn } from '../../lib/utils';
|
|
6
|
-
|
|
7
|
-
export function SettingsDropup({ userName = 'User', userEmail = 'user@example.com', userAvatar, initialNotifications = true, onNotificationsChange, onLogout, isCollapsed = false, }) {
|
|
6
|
+
export function SettingsDropup({ userName = 'User', userEmail = 'user@example.com', userAvatar, onLogout, isCollapsed = false, }) {
|
|
8
7
|
const [isOpen, setIsOpen] = useState(false);
|
|
9
|
-
const [notifications, setNotifications] = useState(initialNotifications);
|
|
10
8
|
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
11
9
|
const ref = useRef(null);
|
|
12
10
|
const triggerRef = useRef(null);
|
|
13
|
-
const notificationsItemRef = useRef(null);
|
|
14
11
|
const logoutItemRef = useRef(null);
|
|
15
12
|
useEffect(() => {
|
|
16
13
|
const handleClickOutside = (event) => {
|
|
@@ -22,7 +19,7 @@ export function SettingsDropup({ userName = 'User', userEmail = 'user@example.co
|
|
|
22
19
|
document.addEventListener('mousedown', handleClickOutside);
|
|
23
20
|
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
24
21
|
}, []);
|
|
25
|
-
const focusableItemCount =
|
|
22
|
+
const focusableItemCount = onLogout ? 1 : 0;
|
|
26
23
|
const handleSettingsKeyDown = (e) => {
|
|
27
24
|
if (!isOpen) {
|
|
28
25
|
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
@@ -62,32 +59,14 @@ export function SettingsDropup({ userName = 'User', userEmail = 'user@example.co
|
|
|
62
59
|
};
|
|
63
60
|
useEffect(() => {
|
|
64
61
|
if (isOpen && focusedIndex >= 0) {
|
|
65
|
-
if (focusedIndex === 0) {
|
|
66
|
-
notificationsItemRef.current?.focus();
|
|
67
|
-
}
|
|
68
|
-
else if (focusedIndex === 1 && onLogout) {
|
|
62
|
+
if (focusedIndex === 0 && onLogout) {
|
|
69
63
|
logoutItemRef.current?.focus();
|
|
70
64
|
}
|
|
71
65
|
}
|
|
72
66
|
}, [focusedIndex, isOpen, onLogout]);
|
|
73
|
-
const handleNotificationsToggle = () => {
|
|
74
|
-
const newValue = !notifications;
|
|
75
|
-
setNotifications(newValue);
|
|
76
|
-
onNotificationsChange?.(newValue);
|
|
77
|
-
};
|
|
78
67
|
return (_jsxs("div", { ref: ref, className: cn('absolute bottom-6 transition-all duration-300', isCollapsed ? 'w-[56px] left-3' : 'w-[247px] left-4'), children: [_jsxs("div", { role: "menu", className: cn('absolute bottom-[52px] w-[247px]', 'bg-[rgba(10,5,20,0.98)] backdrop-blur-[20px] rounded-xl', 'border border-white/[0.08] shadow-[0px_-8px_32px_rgba(0,0,0,0.4)]', 'overflow-hidden z-50 transition-all duration-200 ease-[cubic-bezier(0.16,1,0.3,1)]', isCollapsed ? 'left-[-95px]' : 'left-0', isOpen
|
|
79
68
|
? 'opacity-100 translate-y-0 scale-100 pointer-events-auto'
|
|
80
|
-
: 'opacity-0 translate-y-2 scale-[0.96] pointer-events-none'), children: [_jsxs("div", { className: "p-3 px-3 border-b border-white/[0.06] flex items-center gap-2.5", children: [userAvatar ? (_jsx("img", { src: userAvatar, alt: userName, className: "w-9 h-9 rounded-full object-cover border border-violet-500/30 shrink-0" })) : (_jsx("div", { className: "w-9 h-9 rounded-full bg-violet-500/20 flex items-center justify-center border border-violet-500/30 shrink-0", children: _jsx(User, { size: 18, className: "text-violet-400", strokeWidth: 1.5 }) })), _jsxs("div", { className: "overflow-hidden", children: [_jsx("div", { className: "text-white text-[13px] font-medium font-[Sora,sans-serif] truncate", children: userName }), _jsx("div", { className: "text-gray-500 text-[11px] font-[Sora,sans-serif] truncate", children: userEmail })] })] }), _jsx("div", { className: "p-1.5", children: _jsxs("
|
|
81
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
82
|
-
e.preventDefault();
|
|
83
|
-
handleNotificationsToggle();
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
handleSettingsKeyDown(e);
|
|
87
|
-
}
|
|
88
|
-
}, className: cn('w-full py-2.5 px-2 flex items-center justify-between rounded-lg transition-colors cursor-pointer', focusedIndex === 0 && isOpen
|
|
89
|
-
? 'bg-white/[0.06]'
|
|
90
|
-
: 'hover:bg-white/[0.04]'), children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [notifications ? (_jsx(Bell, { size: 15, className: "text-emerald-500", strokeWidth: 2 })) : (_jsx(BellOff, { size: 15, className: "text-gray-500", strokeWidth: 2 })), _jsx("span", { className: "text-gray-300 text-[13px] font-[Sora,sans-serif]", children: "Notifications" })] }), _jsx(ToggleSwitch, { enabled: notifications, size: "sm", "aria-label": "Toggle notifications" })] }) }), onLogout && (_jsx("div", { className: "p-1.5 border-t border-white/[0.06]", children: _jsxs("button", { ref: logoutItemRef, type: "button", role: "menuitem", tabIndex: focusedIndex === 1 && isOpen ? 0 : -1, onClick: onLogout, onKeyDown: handleSettingsKeyDown, className: cn('w-full py-2.5 px-2 flex items-center gap-2.5 bg-transparent border-none rounded-lg cursor-pointer transition-colors', focusedIndex === 1 && isOpen
|
|
69
|
+
: 'opacity-0 translate-y-2 scale-[0.96] pointer-events-none'), children: [_jsxs("div", { className: "p-3 px-3 border-b border-white/[0.06] flex items-center gap-2.5", children: [userAvatar ? (_jsx("img", { src: userAvatar, alt: userName, className: "w-9 h-9 rounded-full object-cover border border-violet-500/30 shrink-0" })) : (_jsx("div", { className: "w-9 h-9 rounded-full bg-violet-500/20 flex items-center justify-center border border-violet-500/30 shrink-0", children: _jsx(User, { size: 18, className: "text-violet-400", strokeWidth: 1.5 }) })), _jsxs("div", { className: "overflow-hidden", children: [_jsx("div", { className: "text-white text-[13px] font-medium font-[Sora,sans-serif] truncate", children: userName }), _jsx("div", { className: "text-gray-500 text-[11px] font-[Sora,sans-serif] truncate", children: userEmail })] })] }), onLogout && (_jsx("div", { className: "p-1.5", children: _jsxs("button", { ref: logoutItemRef, type: "button", role: "menuitem", tabIndex: focusedIndex === 0 && isOpen ? 0 : -1, onClick: onLogout, onKeyDown: handleSettingsKeyDown, className: cn('w-full py-2.5 px-2 flex items-center gap-2.5 bg-transparent border-none rounded-lg cursor-pointer transition-colors', focusedIndex === 0 && isOpen
|
|
91
70
|
? 'bg-red-500/10'
|
|
92
71
|
: 'hover:bg-red-500/10'), children: [_jsx(LogOut, { size: 15, className: "text-red-500", strokeWidth: 2 }), _jsx("span", { className: "text-red-500 text-[13px] font-[Sora,sans-serif]", children: "Sign out" })] }) }))] }), _jsx("div", { className: cn('border-t border-white/[0.08] transition-all duration-300', isCollapsed ? 'pt-2' : 'pt-3'), children: _jsxs("button", { ref: triggerRef, type: "button", onClick: () => setIsOpen(!isOpen), onKeyDown: handleSettingsKeyDown, "aria-label": "Open settings", "aria-expanded": isOpen, "aria-haspopup": "menu", className: cn('h-[41px] rounded-lg border-none cursor-pointer transition-all duration-300', 'flex items-center gap-3', isCollapsed ? 'w-[56px] justify-center pl-0' : 'w-[247px] pl-3', isOpen ? 'bg-white/[0.06]' : 'bg-transparent hover:bg-white/[0.04]'), children: [_jsx("div", { className: "w-5 h-6 flex items-center justify-center", children: _jsx(Settings, { size: 15, className: cn(isOpen ? 'text-violet-400' : 'text-gray-500'), strokeWidth: 2 }) }), !isCollapsed && (_jsxs(_Fragment, { children: [_jsx("span", { className: cn('text-sm font-normal leading-[21px] font-[Sora,sans-serif] flex-1 text-left transition-opacity duration-200', isOpen ? 'text-white' : 'text-gray-400'), children: "Settings" }), _jsx("div", { className: "w-[18px] h-[22px] flex items-center justify-center mr-3", children: _jsx(ChevronUp, { size: 12, className: cn('transition-transform duration-200', isOpen ? 'text-violet-400 rotate-180' : 'text-gray-600'), strokeWidth: 2 }) })] }))] }) })] }));
|
|
93
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsDropup.js","sourceRoot":"","sources":["../../../src/components/inputs/SettingsDropup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SettingsDropup.js","sourceRoot":"","sources":["../../../src/components/inputs/SettingsDropup.tsx"],"names":[],"mappings":"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"}
|