@b3-crow/ui-kit 0.0.34-pr30.4 → 0.0.34

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 (114) hide show
  1. package/dist/components/index.d.ts +0 -1
  2. package/dist/components/index.d.ts.map +1 -1
  3. package/dist/components/index.js +0 -1
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/styles.css +1 -1
  6. package/package.json +13 -20
  7. package/dist/components/dashboard/ChatHistorySection.d.ts +0 -4
  8. package/dist/components/dashboard/ChatHistorySection.d.ts.map +0 -1
  9. package/dist/components/dashboard/ChatHistorySection.js +0 -119
  10. package/dist/components/dashboard/ChatHistorySection.js.map +0 -1
  11. package/dist/components/dashboard/DashboardBackground.d.ts +0 -4
  12. package/dist/components/dashboard/DashboardBackground.d.ts.map +0 -1
  13. package/dist/components/dashboard/DashboardBackground.js +0 -16
  14. package/dist/components/dashboard/DashboardBackground.js.map +0 -1
  15. package/dist/components/dashboard/FilterDropdown.d.ts +0 -14
  16. package/dist/components/dashboard/FilterDropdown.d.ts.map +0 -1
  17. package/dist/components/dashboard/FilterDropdown.js +0 -114
  18. package/dist/components/dashboard/FilterDropdown.js.map +0 -1
  19. package/dist/components/dashboard/GlassPanel.d.ts +0 -13
  20. package/dist/components/dashboard/GlassPanel.d.ts.map +0 -1
  21. package/dist/components/dashboard/GlassPanel.js +0 -20
  22. package/dist/components/dashboard/GlassPanel.js.map +0 -1
  23. package/dist/components/dashboard/Header.d.ts +0 -4
  24. package/dist/components/dashboard/Header.d.ts.map +0 -1
  25. package/dist/components/dashboard/Header.js +0 -123
  26. package/dist/components/dashboard/Header.js.map +0 -1
  27. package/dist/components/dashboard/IconBadge.d.ts +0 -22
  28. package/dist/components/dashboard/IconBadge.d.ts.map +0 -1
  29. package/dist/components/dashboard/IconBadge.js +0 -44
  30. package/dist/components/dashboard/IconBadge.js.map +0 -1
  31. package/dist/components/dashboard/ListItem.d.ts +0 -22
  32. package/dist/components/dashboard/ListItem.d.ts.map +0 -1
  33. package/dist/components/dashboard/ListItem.js +0 -25
  34. package/dist/components/dashboard/ListItem.js.map +0 -1
  35. package/dist/components/dashboard/MetricsCard.d.ts +0 -10
  36. package/dist/components/dashboard/MetricsCard.d.ts.map +0 -1
  37. package/dist/components/dashboard/MetricsCard.js +0 -41
  38. package/dist/components/dashboard/MetricsCard.js.map +0 -1
  39. package/dist/components/dashboard/MobileSidebar.d.ts +0 -4
  40. package/dist/components/dashboard/MobileSidebar.d.ts.map +0 -1
  41. package/dist/components/dashboard/MobileSidebar.js +0 -57
  42. package/dist/components/dashboard/MobileSidebar.js.map +0 -1
  43. package/dist/components/dashboard/NavMenu.d.ts +0 -8
  44. package/dist/components/dashboard/NavMenu.d.ts.map +0 -1
  45. package/dist/components/dashboard/NavMenu.js +0 -66
  46. package/dist/components/dashboard/NavMenu.js.map +0 -1
  47. package/dist/components/dashboard/PatternCard.d.ts +0 -15
  48. package/dist/components/dashboard/PatternCard.d.ts.map +0 -1
  49. package/dist/components/dashboard/PatternCard.js +0 -36
  50. package/dist/components/dashboard/PatternCard.js.map +0 -1
  51. package/dist/components/dashboard/SearchInput.d.ts +0 -30
  52. package/dist/components/dashboard/SearchInput.d.ts.map +0 -1
  53. package/dist/components/dashboard/SearchInput.js +0 -52
  54. package/dist/components/dashboard/SearchInput.js.map +0 -1
  55. package/dist/components/dashboard/SectionHeader.d.ts +0 -13
  56. package/dist/components/dashboard/SectionHeader.d.ts.map +0 -1
  57. package/dist/components/dashboard/SectionHeader.js +0 -19
  58. package/dist/components/dashboard/SectionHeader.js.map +0 -1
  59. package/dist/components/dashboard/SettingsDropup.d.ts +0 -9
  60. package/dist/components/dashboard/SettingsDropup.d.ts.map +0 -1
  61. package/dist/components/dashboard/SettingsDropup.js +0 -98
  62. package/dist/components/dashboard/SettingsDropup.js.map +0 -1
  63. package/dist/components/dashboard/SettingsModal.d.ts +0 -4
  64. package/dist/components/dashboard/SettingsModal.d.ts.map +0 -1
  65. package/dist/components/dashboard/SettingsModal.js +0 -56
  66. package/dist/components/dashboard/SettingsModal.js.map +0 -1
  67. package/dist/components/dashboard/SidePanel.d.ts +0 -12
  68. package/dist/components/dashboard/SidePanel.d.ts.map +0 -1
  69. package/dist/components/dashboard/SidePanel.js +0 -79
  70. package/dist/components/dashboard/SidePanel.js.map +0 -1
  71. package/dist/components/dashboard/Sidebar.d.ts +0 -4
  72. package/dist/components/dashboard/Sidebar.d.ts.map +0 -1
  73. package/dist/components/dashboard/Sidebar.js +0 -28
  74. package/dist/components/dashboard/Sidebar.js.map +0 -1
  75. package/dist/components/dashboard/SidebarLogo.d.ts +0 -7
  76. package/dist/components/dashboard/SidebarLogo.d.ts.map +0 -1
  77. package/dist/components/dashboard/SidebarLogo.js +0 -6
  78. package/dist/components/dashboard/SidebarLogo.js.map +0 -1
  79. package/dist/components/dashboard/SourceIcon.d.ts +0 -15
  80. package/dist/components/dashboard/SourceIcon.d.ts.map +0 -1
  81. package/dist/components/dashboard/SourceIcon.js +0 -28
  82. package/dist/components/dashboard/SourceIcon.js.map +0 -1
  83. package/dist/components/dashboard/StatusBadge.d.ts +0 -26
  84. package/dist/components/dashboard/StatusBadge.d.ts.map +0 -1
  85. package/dist/components/dashboard/StatusBadge.js +0 -42
  86. package/dist/components/dashboard/StatusBadge.js.map +0 -1
  87. package/dist/components/dashboard/StatusIndicator.d.ts +0 -16
  88. package/dist/components/dashboard/StatusIndicator.d.ts.map +0 -1
  89. package/dist/components/dashboard/StatusIndicator.js +0 -35
  90. package/dist/components/dashboard/StatusIndicator.js.map +0 -1
  91. package/dist/components/dashboard/Tag.d.ts +0 -16
  92. package/dist/components/dashboard/Tag.d.ts.map +0 -1
  93. package/dist/components/dashboard/Tag.js +0 -18
  94. package/dist/components/dashboard/Tag.js.map +0 -1
  95. package/dist/components/dashboard/TipCard.d.ts +0 -12
  96. package/dist/components/dashboard/TipCard.d.ts.map +0 -1
  97. package/dist/components/dashboard/TipCard.js +0 -17
  98. package/dist/components/dashboard/TipCard.js.map +0 -1
  99. package/dist/components/dashboard/ToggleSwitch.d.ts +0 -17
  100. package/dist/components/dashboard/ToggleSwitch.d.ts.map +0 -1
  101. package/dist/components/dashboard/ToggleSwitch.js +0 -27
  102. package/dist/components/dashboard/ToggleSwitch.js.map +0 -1
  103. package/dist/components/dashboard/constants.d.ts +0 -28
  104. package/dist/components/dashboard/constants.d.ts.map +0 -1
  105. package/dist/components/dashboard/constants.js +0 -104
  106. package/dist/components/dashboard/constants.js.map +0 -1
  107. package/dist/components/dashboard/index.d.ts +0 -27
  108. package/dist/components/dashboard/index.d.ts.map +0 -1
  109. package/dist/components/dashboard/index.js +0 -27
  110. package/dist/components/dashboard/index.js.map +0 -1
  111. package/dist/components/dashboard/types.d.ts +0 -115
  112. package/dist/components/dashboard/types.d.ts.map +0 -1
  113. package/dist/components/dashboard/types.js +0 -2
  114. package/dist/components/dashboard/types.js.map +0 -1
@@ -1,12 +0,0 @@
1
- export interface SidePanelProps {
2
- isOpen: boolean;
3
- onClose: () => void;
4
- title?: string;
5
- subtitle?: string;
6
- children: React.ReactNode;
7
- width?: 'sm' | 'md' | 'lg';
8
- showBackdrop?: boolean;
9
- className?: string;
10
- }
11
- export declare function SidePanel({ isOpen, onClose, title, subtitle, children, width, showBackdrop, className, }: SidePanelProps): import("react/jsx-runtime").JSX.Element;
12
- //# sourceMappingURL=SidePanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidePanel.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SidePanel.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAY,EACZ,YAAmB,EACnB,SAAS,GACV,EAAE,cAAc,2CA8IhB"}
@@ -1,79 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { X } from 'lucide-react';
4
- import { useCallback, useEffect, useRef } from 'react';
5
- import { cn } from '../../lib/utils';
6
- const FOCUSABLE_ELEMENTS = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
7
- const widthClasses = {
8
- sm: 'w-[380px]',
9
- md: 'w-[480px]',
10
- lg: 'w-[560px]',
11
- };
12
- export function SidePanel({ isOpen, onClose, title, subtitle, children, width = 'md', showBackdrop = true, className, }) {
13
- const scrollContainerRef = useRef(null);
14
- const panelRef = useRef(null);
15
- const previousActiveElement = useRef(null);
16
- const handleKeyDown = useCallback((e) => {
17
- if (e.key === 'Escape') {
18
- onClose();
19
- return;
20
- }
21
- // Focus trap
22
- if (e.key === 'Tab' && panelRef.current) {
23
- const focusableElements = panelRef.current.querySelectorAll(FOCUSABLE_ELEMENTS);
24
- const firstElement = focusableElements[0];
25
- const lastElement = focusableElements[focusableElements.length - 1];
26
- if (e.shiftKey && document.activeElement === firstElement) {
27
- e.preventDefault();
28
- lastElement?.focus();
29
- }
30
- else if (!e.shiftKey && document.activeElement === lastElement) {
31
- e.preventDefault();
32
- firstElement?.focus();
33
- }
34
- }
35
- }, [onClose]);
36
- useEffect(() => {
37
- if (isOpen) {
38
- previousActiveElement.current = document.activeElement;
39
- document.addEventListener('keydown', handleKeyDown);
40
- // Focus first focusable element in panel
41
- setTimeout(() => {
42
- if (panelRef.current) {
43
- const focusableElements = panelRef.current.querySelectorAll(FOCUSABLE_ELEMENTS);
44
- focusableElements[0]?.focus();
45
- }
46
- }, 0);
47
- }
48
- else {
49
- // Restore focus to previous element
50
- previousActiveElement.current?.focus();
51
- }
52
- return () => {
53
- document.removeEventListener('keydown', handleKeyDown);
54
- };
55
- }, [isOpen, handleKeyDown]);
56
- useEffect(() => {
57
- if (isOpen && scrollContainerRef.current) {
58
- scrollContainerRef.current.scrollTop = 0;
59
- }
60
- }, [isOpen]);
61
- return (_jsxs(_Fragment, { children: [showBackdrop && (_jsx("div", { className: cn('fixed inset-0 z-[200] transition-opacity duration-300', isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none'), style: {
62
- background: 'rgba(0, 0, 0, 0.60)',
63
- backdropFilter: 'blur(4px)',
64
- }, onClick: onClose })), _jsxs("div", { ref: panelRef, role: "dialog", "aria-modal": "true", "aria-labelledby": title ? 'side-panel-title' : undefined, className: cn('fixed top-0 right-0 h-full z-[201] flex flex-col transition-transform duration-300 ease-out', widthClasses[width], isOpen ? 'translate-x-0' : 'translate-x-full', className), style: {
65
- background: 'linear-gradient(180deg, rgba(10, 5, 20, 0.98) 0%, rgba(5, 2, 12, 0.99) 100%)',
66
- borderLeft: '1px solid rgba(255, 255, 255, 0.08)',
67
- boxShadow: '-20px 0 60px rgba(0, 0, 0, 0.5)',
68
- }, children: [_jsxs("div", { className: "flex-shrink-0 flex items-start justify-between p-6 border-b", style: { borderColor: 'rgba(255, 255, 255, 0.08)' }, children: [_jsxs("div", { className: "flex-1 min-w-0 pr-4", children: [title && (_jsx("h2", { id: "side-panel-title", className: "text-lg font-semibold truncate text-gray-100", children: title })), subtitle && (_jsx("p", { className: "text-sm mt-1 truncate text-gray-500", children: subtitle }))] }), _jsx("button", { type: "button", onClick: onClose, className: "p-2 -m-2 rounded-lg transition-colors hover:bg-white/5", "aria-label": "Close panel", children: _jsx(X, { size: 20, color: "#6B7280" }) })] }), _jsx("div", { ref: scrollContainerRef, className: "side-panel-content flex-1 overflow-y-auto overscroll-contain", "data-lenis-prevent": true, children: children }), _jsx("style", { children: `
69
- .side-panel-content {
70
- scroll-behavior: smooth;
71
- -ms-overflow-style: none;
72
- scrollbar-width: none;
73
- }
74
- .side-panel-content::-webkit-scrollbar {
75
- display: none;
76
- }
77
- ` })] })] }));
78
- }
79
- //# sourceMappingURL=SidePanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidePanel.js","sourceRoot":"","sources":["../../../src/components/dashboard/SidePanel.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { NavItem, SidebarProps } from './types';
2
- export type { NavItem, SidebarProps };
3
- export declare function Sidebar({ navItems, activeHref, onNavigate, showSettings, logoSrc, userName, userEmail, onLogout, onNotificationsChange, initialNotifications, chatHistory, activeChatId, chatHistoryExpanded, onChatClick, onChatHistoryToggle, onChatRename, onChatDelete, showChatHistory, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
4
- //# sourceMappingURL=Sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/Sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMrD,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAiBtC,wBAAgB,OAAO,CAAC,EACtB,QAA0B,EAC1B,UAAgB,EAChB,UAAU,EACV,YAAmB,EACnB,OAAsB,EACtB,QAAiB,EACjB,SAA8B,EAC9B,QAAQ,EACR,qBAAqB,EACrB,oBAA2B,EAC3B,WAAW,EACX,YAAY,EACZ,mBAA0B,EAC1B,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,eAAuB,GACxB,EAAE,YAAY,2CAyCd"}
@@ -1,28 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ChatHistorySection } from './ChatHistorySection';
4
- import { NavMenu } from './NavMenu';
5
- import { SettingsDropup } from './SettingsDropup';
6
- import { SidebarLogo } from './SidebarLogo';
7
- const defaultNavItems = [
8
- { icon: 'grid_view', label: 'Overview', href: '/' },
9
- { icon: 'chat_bubble', label: 'Ask CROW', href: '/ask-crow' },
10
- {
11
- icon: 'timeline',
12
- label: 'Analysis',
13
- href: '#',
14
- submenu: [
15
- { icon: '', label: 'Interactions', href: '/analysis/interactions' },
16
- { icon: '', label: 'Patterns', href: '/analysis/patterns' },
17
- ],
18
- },
19
- { icon: 'group', label: 'Team', href: '/team' },
20
- ];
21
- export function Sidebar({ navItems = defaultNavItems, activeHref = '/', onNavigate, showSettings = true, logoSrc = '/logo.webp', userName = 'User', userEmail = 'user@example.com', onLogout, onNotificationsChange, initialNotifications = true, chatHistory, activeChatId, chatHistoryExpanded = true, onChatClick, onChatHistoryToggle, onChatRename, onChatDelete, showChatHistory = false, }) {
22
- // Auto-show chat history when on Ask CROW page
23
- const normalizedHref = activeHref?.replace(/\/$/, '') || '';
24
- const isAskCrowPage = normalizedHref === '/ask-crow';
25
- const displayChatHistory = showChatHistory || isAskCrowPage;
26
- return (_jsxs("aside", { className: "w-[280px] h-full relative bg-black overflow-hidden border-r border-white/[0.08] shrink-0 hidden md:flex md:flex-col", children: [_jsx("div", { className: "w-[279px] h-full absolute left-0 top-0 bg-gradient-to-b from-white/[0.02] to-transparent pointer-events-none" }), _jsx("div", { className: "w-[279px] h-32 absolute left-0 top-0 opacity-50 bg-gradient-to-b from-[#100B1A] to-transparent pointer-events-none" }), _jsx(SidebarLogo, { logoSrc: logoSrc }), _jsx(NavMenu, { items: navItems, activeHref: activeHref, onNavigate: onNavigate }), _jsx(ChatHistorySection, { items: chatHistory, activeItemId: activeChatId, isExpanded: chatHistoryExpanded, isVisible: displayChatHistory, onItemClick: onChatClick, onToggleExpanded: onChatHistoryToggle, onRename: onChatRename, onDelete: onChatDelete }), showSettings && (_jsx(SettingsDropup, { userName: userName, userEmail: userEmail, initialNotifications: initialNotifications, onNotificationsChange: onNotificationsChange, onLogout: onLogout }))] }));
27
- }
28
- //# sourceMappingURL=Sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/components/dashboard/Sidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,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,OAAO,CAAC,EACtB,QAAQ,GAAG,eAAe,EAC1B,UAAU,GAAG,GAAG,EAChB,UAAU,EACV,YAAY,GAAG,IAAI,EACnB,OAAO,GAAG,YAAY,EACtB,QAAQ,GAAG,MAAM,EACjB,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,EACR,qBAAqB,EACrB,oBAAoB,GAAG,IAAI,EAC3B,WAAW,EACX,YAAY,EACZ,mBAAmB,GAAG,IAAI,EAC1B,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,eAAe,GAAG,KAAK,GACV;IACb,+CAA+C;IAC/C,MAAM,cAAc,GAAG,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,aAAa,GAAG,cAAc,KAAK,WAAW,CAAC;IACrD,MAAM,kBAAkB,GAAG,eAAe,IAAI,aAAa,CAAC;IAE5D,OAAO,CACL,iBAAO,SAAS,EAAC,qHAAqH,aACpI,cAAK,SAAS,EAAC,8GAA8G,GAAG,EAChI,cAAK,SAAS,EAAC,oHAAoH,GAAG,EAEtI,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,EAEjC,KAAC,OAAO,IACN,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,GACtB,EAEF,KAAC,kBAAkB,IACjB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,mBAAmB,EAC/B,SAAS,EAAE,kBAAkB,EAC7B,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,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,QAAQ,GAClB,CACH,IACK,CACT,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- export interface SidebarLogoProps {
2
- logoSrc: string;
3
- title?: string;
4
- subtitle?: string;
5
- }
6
- export declare function SidebarLogo({ logoSrc, title, subtitle, }: SidebarLogoProps): import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=SidebarLogo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidebarLogo.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SidebarLogo.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAc,EACd,QAAmB,GACpB,EAAE,gBAAgB,2CAgBlB"}
@@ -1,6 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- export function SidebarLogo({ logoSrc, title = 'CROW', subtitle = 'CLIENT', }) {
4
- return (_jsxs("div", { className: "w-[117.43px] h-[60px] absolute left-6 top-[11.75px]", children: [_jsx("img", { src: logoSrc, alt: `${title} Logo`, className: "w-[58px] h-[60px] absolute left-0 top-0 object-contain" }), _jsx("div", { className: "absolute left-[58px] top-[14px] flex flex-col justify-center text-white text-lg font-bold font-[Sora,sans-serif] leading-[18px] tracking-[0.45px]", children: title }), _jsx("div", { className: "absolute left-[58px] top-9 flex flex-col justify-center text-gray-400 text-[9px] font-medium font-[Sora,sans-serif] uppercase leading-[13.5px] tracking-[0.9px]", children: subtitle })] }));
5
- }
6
- //# sourceMappingURL=SidebarLogo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SidebarLogo.js","sourceRoot":"","sources":["../../../src/components/dashboard/SidebarLogo.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAQb,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,KAAK,GAAG,MAAM,EACd,QAAQ,GAAG,QAAQ,GACF;IACjB,OAAO,CACL,eAAK,SAAS,EAAC,qDAAqD,aAClE,cACE,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,KAAK,OAAO,EACpB,SAAS,EAAC,wDAAwD,GAClE,EACF,cAAK,SAAS,EAAC,mJAAmJ,YAC/J,KAAK,GACF,EACN,cAAK,SAAS,EAAC,iKAAiK,YAC7K,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export type SourceType = 'web' | 'cctv' | 'social';
2
- export interface SourceIconProps {
3
- source: SourceType;
4
- size?: 'sm' | 'md';
5
- }
6
- /**
7
- * An icon component that displays source type with color-coded styling
8
- * Used to distinguish between web, CCTV, and social media sources
9
- * @param {SourceIconProps} props - Component props
10
- * @param {'web' | 'cctv' | 'social'} props.source - Type of source
11
- * @param {'sm' | 'md'} [props.size='sm'] - Icon size variant
12
- * @returns {JSX.Element} The source icon component
13
- */
14
- export declare function SourceIcon({ source, size }: SourceIconProps): import("react/jsx-runtime").JSX.Element;
15
- //# sourceMappingURL=SourceIcon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SourceIcon.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SourceIcon.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAeD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,IAAW,EAAE,EAAE,eAAe,2CAclE"}
@@ -1,28 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { Globe, MessageCircle, Video } from 'lucide-react';
4
- const sourceConfig = {
5
- web: { icon: Globe, color: '#60A5FA', bg: 'rgba(96, 165, 250, 0.15)' },
6
- cctv: { icon: Video, color: '#F87171', bg: 'rgba(248, 113, 113, 0.15)' },
7
- social: {
8
- icon: MessageCircle,
9
- color: '#A78BFA',
10
- bg: 'rgba(167, 139, 250, 0.15)',
11
- },
12
- };
13
- /**
14
- * An icon component that displays source type with color-coded styling
15
- * Used to distinguish between web, CCTV, and social media sources
16
- * @param {SourceIconProps} props - Component props
17
- * @param {'web' | 'cctv' | 'social'} props.source - Type of source
18
- * @param {'sm' | 'md'} [props.size='sm'] - Icon size variant
19
- * @returns {JSX.Element} The source icon component
20
- */
21
- export function SourceIcon({ source, size = 'sm' }) {
22
- const config = sourceConfig[source];
23
- const IconComponent = config.icon;
24
- const sizeClasses = size === 'sm' ? 'w-8 h-8' : 'w-10 h-10';
25
- const iconSize = size === 'sm' ? 16 : 20;
26
- return (_jsx("div", { className: `${sizeClasses} rounded-lg flex items-center justify-center`, style: { background: config.bg }, children: _jsx(IconComponent, { size: iconSize, color: config.color }) }));
27
- }
28
- //# sourceMappingURL=SourceIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SourceIcon.js","sourceRoot":"","sources":["../../../src/components/dashboard/SourceIcon.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAS3D,MAAM,YAAY,GAGd;IACF,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE;IACtE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,2BAA2B,EAAE;IACxE,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,SAAS;QAChB,EAAE,EAAE,2BAA2B;KAChC;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAmB;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzC,OAAO,CACL,cACE,SAAS,EAAE,GAAG,WAAW,8CAA8C,EACvE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,YAEhC,KAAC,aAAa,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,GAClD,CACP,CAAC;AACJ,CAAC"}
@@ -1,26 +0,0 @@
1
- import type { VariantProps } from 'class-variance-authority';
2
- declare const badgeVariants: (props?: ({
3
- variant?: "medium" | "high" | "low" | "positive" | "negative" | "neutral" | "warning" | "info" | null | undefined;
4
- size?: "default" | "sm" | null | undefined;
5
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
- export interface StatusBadgeProps extends VariantProps<typeof badgeVariants> {
7
- children: React.ReactNode;
8
- className?: string;
9
- uppercase?: boolean;
10
- tracking?: boolean;
11
- }
12
- /**
13
- * A status badge component for displaying status information
14
- * Supports multiple semantic variants (positive, negative, warning, etc.)
15
- * @param {StatusBadgeProps} props - Component props
16
- * @param {React.ReactNode} props.children - Badge text content
17
- * @param {'positive' | 'negative' | 'warning' | 'neutral' | 'info' | 'high' | 'medium' | 'low'} [props.variant='neutral'] - Semantic variant
18
- * @param {'default' | 'sm'} [props.size='default'] - Badge size
19
- * @param {string} [props.className=''] - Additional CSS classes
20
- * @param {boolean} [props.uppercase=false] - Whether to uppercase the text
21
- * @param {boolean} [props.tracking=false] - Whether to add letter spacing
22
- * @returns {JSX.Element} The status badge component
23
- */
24
- export declare function StatusBadge({ children, variant, size, className, uppercase, tracking, }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
25
- export {};
26
- //# sourceMappingURL=StatusBadge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/StatusBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7D,QAAA,MAAM,aAAa;;;mFAsBjB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,OAAO,aAAa,CAAC;IAC1E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAmB,EACnB,IAAgB,EAChB,SAAc,EACd,SAAiB,EACjB,QAAgB,GACjB,EAAE,gBAAgB,2CAalB"}
@@ -1,42 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cva } from 'class-variance-authority';
4
- import { cn } from '../../lib/utils';
5
- const badgeVariants = cva('inline-flex items-center rounded font-medium', {
6
- variants: {
7
- variant: {
8
- positive: 'bg-emerald-500/10 text-emerald-400 border border-emerald-500/20',
9
- negative: 'bg-rose-500/10 text-rose-400 border border-rose-500/20',
10
- warning: 'bg-yellow-500/10 text-yellow-400 border border-yellow-500/20',
11
- neutral: 'bg-gray-500/10 text-gray-400 border border-gray-500/20',
12
- info: 'bg-violet-500/10 text-violet-300 border border-violet-500/20',
13
- high: 'bg-violet-500/20 text-violet-300 border border-violet-500/20',
14
- medium: 'bg-violet-500/10 text-violet-400 border border-violet-500/10',
15
- low: 'bg-gray-500/10 text-gray-400 border border-gray-500/10',
16
- },
17
- size: {
18
- default: 'px-2 py-0.5 text-[10px]',
19
- sm: 'px-1.5 py-0.5 text-[9px]',
20
- },
21
- },
22
- defaultVariants: {
23
- variant: 'neutral',
24
- size: 'default',
25
- },
26
- });
27
- /**
28
- * A status badge component for displaying status information
29
- * Supports multiple semantic variants (positive, negative, warning, etc.)
30
- * @param {StatusBadgeProps} props - Component props
31
- * @param {React.ReactNode} props.children - Badge text content
32
- * @param {'positive' | 'negative' | 'warning' | 'neutral' | 'info' | 'high' | 'medium' | 'low'} [props.variant='neutral'] - Semantic variant
33
- * @param {'default' | 'sm'} [props.size='default'] - Badge size
34
- * @param {string} [props.className=''] - Additional CSS classes
35
- * @param {boolean} [props.uppercase=false] - Whether to uppercase the text
36
- * @param {boolean} [props.tracking=false] - Whether to add letter spacing
37
- * @returns {JSX.Element} The status badge component
38
- */
39
- export function StatusBadge({ children, variant = 'neutral', size = 'default', className = '', uppercase = false, tracking = false, }) {
40
- return (_jsx("span", { className: cn(badgeVariants({ variant, size }), uppercase && 'uppercase', tracking && 'tracking-wider', className), children: children }));
41
- }
42
- //# sourceMappingURL=StatusBadge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../src/components/dashboard/StatusBadge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,aAAa,GAAG,GAAG,CAAC,8CAA8C,EAAE;IACxE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,QAAQ,EACN,iEAAiE;YACnE,QAAQ,EAAE,wDAAwD;YAClE,OAAO,EAAE,8DAA8D;YACvE,OAAO,EAAE,wDAAwD;YACjE,IAAI,EAAE,8DAA8D;YACpE,IAAI,EAAE,8DAA8D;YACpE,MAAM,EAAE,8DAA8D;YACtE,GAAG,EAAE,wDAAwD;SAC9D;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,yBAAyB;YAClC,EAAE,EAAE,0BAA0B;SAC/B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC,CAAC;AASH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,GACC;IACjB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAChC,SAAS,IAAI,WAAW,EACxB,QAAQ,IAAI,gBAAgB,EAC5B,SAAS,CACV,YAEA,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- export interface StatusIndicatorProps {
2
- status?: 'active' | 'inactive' | 'processing';
3
- label?: string;
4
- className?: string;
5
- }
6
- /**
7
- * A status indicator component that displays system status with a colored dot
8
- * Shows predefined labels for each status or custom labels
9
- * @param {StatusIndicatorProps} props - Component props
10
- * @param {'active' | 'inactive' | 'processing'} [props.status='active'] - Status type
11
- * @param {string} [props.label] - Custom label text (overrides default)
12
- * @param {string} [props.className] - Additional CSS classes
13
- * @returns {JSX.Element} The status indicator component
14
- */
15
- export declare function StatusIndicator({ status, label, className, }: StatusIndicatorProps): import("react/jsx-runtime").JSX.Element;
16
- //# sourceMappingURL=StatusIndicator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/StatusIndicator.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAiB,EACjB,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,2CAuBtB"}
@@ -1,35 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
4
- const statusConfig = {
5
- active: {
6
- dotColor: 'bg-violet-400',
7
- textColor: 'text-violet-300',
8
- label: 'System Active',
9
- },
10
- inactive: {
11
- dotColor: 'bg-gray-500',
12
- textColor: 'text-gray-400',
13
- label: 'System Offline',
14
- },
15
- processing: {
16
- dotColor: 'bg-amber-400',
17
- textColor: 'text-amber-300',
18
- label: 'Processing',
19
- },
20
- };
21
- /**
22
- * A status indicator component that displays system status with a colored dot
23
- * Shows predefined labels for each status or custom labels
24
- * @param {StatusIndicatorProps} props - Component props
25
- * @param {'active' | 'inactive' | 'processing'} [props.status='active'] - Status type
26
- * @param {string} [props.label] - Custom label text (overrides default)
27
- * @param {string} [props.className] - Additional CSS classes
28
- * @returns {JSX.Element} The status indicator component
29
- */
30
- export function StatusIndicator({ status = 'active', label, className, }) {
31
- const config = statusConfig[status];
32
- const displayLabel = label ?? config.label;
33
- return (_jsxs("div", { className: cn('inline-flex items-center gap-2 px-4 py-1.5 rounded-full', 'backdrop-blur-sm bg-violet-500/10 border border-violet-500/20', className), children: [_jsx("div", { className: cn('w-1.5 h-1.5 rounded-full', config.dotColor) }), _jsx("span", { className: cn('text-[10px] font-bold uppercase tracking-[1px] leading-[15px]', config.textColor), children: displayLabel })] }));
34
- }
35
- //# sourceMappingURL=StatusIndicator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusIndicator.js","sourceRoot":"","sources":["../../../src/components/dashboard/StatusIndicator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAQrC,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE;QACN,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,iBAAiB;QAC5B,KAAK,EAAE,eAAe;KACvB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;KACxB;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,YAAY;KACpB;CACO,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,GAAG,QAAQ,EACjB,KAAK,EACL,SAAS,GACY;IACrB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAE3C,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,+DAA+D,EAC/D,SAAS,CACV,aAED,cAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAI,EACnE,eACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,MAAM,CAAC,SAAS,CACjB,YAEA,YAAY,GACR,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -1,16 +0,0 @@
1
- export interface TagProps {
2
- children: React.ReactNode;
3
- variant?: 'default' | 'active';
4
- className?: string;
5
- }
6
- /**
7
- * A simple tag component for displaying labels or categories
8
- * Supports default and active visual states
9
- * @param {TagProps} props - Component props
10
- * @param {React.ReactNode} props.children - Tag text content
11
- * @param {'default' | 'active'} [props.variant='default'] - Visual variant
12
- * @param {string} [props.className] - Additional CSS classes
13
- * @returns {JSX.Element} The tag component
14
- */
15
- export declare function Tag({ children, variant, className }: TagProps): import("react/jsx-runtime").JSX.Element;
16
- //# sourceMappingURL=Tag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/Tag.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAmB,EAAE,SAAS,EAAE,EAAE,QAAQ,2CAgBzE"}
@@ -1,18 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
4
- /**
5
- * A simple tag component for displaying labels or categories
6
- * Supports default and active visual states
7
- * @param {TagProps} props - Component props
8
- * @param {React.ReactNode} props.children - Tag text content
9
- * @param {'default' | 'active'} [props.variant='default'] - Visual variant
10
- * @param {string} [props.className] - Additional CSS classes
11
- * @returns {JSX.Element} The tag component
12
- */
13
- export function Tag({ children, variant = 'default', className }) {
14
- return (_jsx("span", { className: cn('inline-flex items-center px-2 py-0.5 rounded text-[10px] font-medium', className), style: variant === 'active'
15
- ? { background: 'rgba(139, 92, 246, 0.20)', color: '#C4B5FD' }
16
- : { background: 'rgba(107, 114, 128, 0.20)', color: '#9CA3AF' }, children: children }));
17
- }
18
- //# sourceMappingURL=Tag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/components/dashboard/Tag.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAQrC;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,SAAS,EAAY;IACxE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,sEAAsE,EACtE,SAAS,CACV,EACD,KAAK,EACH,OAAO,KAAK,QAAQ;YAClB,CAAC,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,KAAK,EAAE,SAAS,EAAE;YAC9D,CAAC,CAAC,EAAE,UAAU,EAAE,2BAA2B,EAAE,KAAK,EAAE,SAAS,EAAE,YAGlE,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC"}
@@ -1,12 +0,0 @@
1
- export interface TipCardProps {
2
- children: React.ReactNode;
3
- }
4
- /**
5
- * A tip card component for displaying helpful information or tips
6
- * Features a lightbulb icon and glass-morphism styling
7
- * @param {TipCardProps} props - Component props
8
- * @param {React.ReactNode} props.children - Tip text content
9
- * @returns {JSX.Element} The tip card component
10
- */
11
- export declare function TipCard({ children }: TipCardProps): import("react/jsx-runtime").JSX.Element;
12
- //# sourceMappingURL=TipCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TipCard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/TipCard.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAajD"}
@@ -1,17 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Lightbulb } from 'lucide-react';
4
- /**
5
- * A tip card component for displaying helpful information or tips
6
- * Features a lightbulb icon and glass-morphism styling
7
- * @param {TipCardProps} props - Component props
8
- * @param {React.ReactNode} props.children - Tip text content
9
- * @returns {JSX.Element} The tip card component
10
- */
11
- export function TipCard({ children }) {
12
- return (_jsxs("div", { className: "inline-flex items-start gap-3 px-4 py-3 rounded-xl", style: {
13
- background: 'rgba(255, 255, 255, 0.02)',
14
- border: '1px solid rgba(255, 255, 255, 0.06)',
15
- }, children: [_jsx(Lightbulb, { size: 16, className: "text-gray-500 flex-shrink-0 mt-0.5" }), _jsx("p", { className: "text-xs text-gray-400 leading-relaxed", children: children })] }));
16
- }
17
- //# sourceMappingURL=TipCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TipCard.js","sourceRoot":"","sources":["../../../src/components/dashboard/TipCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAgB;IAChD,OAAO,CACL,eACE,SAAS,EAAC,oDAAoD,EAC9D,KAAK,EAAE;YACL,UAAU,EAAE,2BAA2B;YACvC,MAAM,EAAE,qCAAqC;SAC9C,aAED,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,oCAAoC,GAAG,EACtE,YAAG,SAAS,EAAC,uCAAuC,YAAE,QAAQ,GAAK,IAC/D,CACP,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- export interface ToggleSwitchProps {
2
- enabled: boolean;
3
- size?: 'sm' | 'default';
4
- onChange?: (newState: boolean) => void;
5
- 'aria-label'?: string;
6
- }
7
- /**
8
- * An accessible toggle switch component
9
- * Supports keyboard navigation and multiple sizes
10
- * @param {ToggleSwitchProps} props - Component props
11
- * @param {boolean} props.enabled - Whether the toggle is enabled/checked
12
- * @param {'sm' | 'default'} [props.size] - Toggle size variant
13
- * @param {(newState: boolean) => void} [props.onChange] - Callback function when toggle is toggled, receives the new state
14
- * @returns {JSX.Element} The toggle switch component
15
- */
16
- export declare function ToggleSwitch({ enabled, size, onChange, 'aria-label': ariaLabel, }: ToggleSwitchProps): import("react/jsx-runtime").JSX.Element;
17
- //# sourceMappingURL=ToggleSwitch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/ToggleSwitch.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,IAAgB,EAChB,QAAQ,EACR,YAAY,EAAE,SAAS,GACxB,EAAE,iBAAiB,2CAyCnB"}
@@ -1,27 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils';
4
- /**
5
- * An accessible toggle switch component
6
- * Supports keyboard navigation and multiple sizes
7
- * @param {ToggleSwitchProps} props - Component props
8
- * @param {boolean} props.enabled - Whether the toggle is enabled/checked
9
- * @param {'sm' | 'default'} [props.size] - Toggle size variant
10
- * @param {(newState: boolean) => void} [props.onChange] - Callback function when toggle is toggled, receives the new state
11
- * @returns {JSX.Element} The toggle switch component
12
- */
13
- export function ToggleSwitch({ enabled, size = 'default', onChange, 'aria-label': ariaLabel, }) {
14
- const isSmall = size === 'sm';
15
- const handleToggle = () => {
16
- onChange?.(!enabled);
17
- };
18
- return (_jsx("span", { role: "switch", "aria-checked": enabled, "aria-label": ariaLabel, onClick: handleToggle, onKeyDown: onChange
19
- ? e => {
20
- if (e.key === 'Enter' || e.key === ' ') {
21
- e.preventDefault();
22
- handleToggle();
23
- }
24
- }
25
- : undefined, tabIndex: onChange ? 0 : undefined, className: cn('inline-block relative transition-colors duration-200', isSmall ? 'w-9 h-5 rounded-[10px] p-0.5' : 'w-11 h-6 rounded-xl p-0.5', enabled ? 'bg-emerald-500/30' : 'bg-gray-500/30', onChange && 'cursor-pointer'), children: _jsx("div", { className: cn('rounded-full transition-all duration-200', isSmall ? 'w-4 h-4' : 'w-5 h-5', enabled ? 'bg-emerald-500' : 'bg-gray-600', enabled && (isSmall ? 'translate-x-4' : 'translate-x-5')) }) }));
26
- }
27
- //# sourceMappingURL=ToggleSwitch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleSwitch.js","sourceRoot":"","sources":["../../../src/components/dashboard/ToggleSwitch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AASrC;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,IAAI,GAAG,SAAS,EAChB,QAAQ,EACR,YAAY,EAAE,SAAS,GACL;IAClB,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAE9B,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,kBACC,OAAO,gBACT,SAAS,EACrB,OAAO,EAAE,YAAY,EACrB,SAAS,EACP,QAAQ;YACN,CAAC,CAAC,CAAC,CAAC,EAAE;gBACF,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,YAAY,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,EAEf,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAClC,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,2BAA2B,EACtE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,EAChD,QAAQ,IAAI,gBAAgB,CAC7B,YAED,cACE,SAAS,EAAE,EAAE,CACX,0CAA0C,EAC1C,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAC/B,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CACzD,GACD,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Centralized configuration constants for dashboard components
3
- * Used across ui-kit and dashboard-client to maintain consistency
4
- */
5
- import type { FilterOption } from './FilterDropdown';
6
- import type { SeverityLevel, ConfidenceLevel } from './types';
7
- export declare const SEVERITY_CONFIG: Record<SeverityLevel, {
8
- label: string;
9
- color: string;
10
- bg: string;
11
- border: string;
12
- }>;
13
- export declare const CONFIDENCE_CONFIG: Record<ConfidenceLevel, {
14
- label: string;
15
- color: string;
16
- bg: string;
17
- border: string;
18
- }>;
19
- export declare const DEFAULT_DATE_RANGE_OPTIONS: FilterOption[];
20
- export declare const DEFAULT_SEVERITY_OPTIONS: FilterOption[];
21
- export declare const DEFAULT_SOURCE_OPTIONS: FilterOption[];
22
- export declare const DEFAULT_STORE_OPTIONS: FilterOption[];
23
- export declare const DEFAULT_TIME_OPTIONS: FilterOption[];
24
- export declare const DEFAULT_SORT_OPTIONS: FilterOption[];
25
- export declare const DEFAULT_SITE_OPTIONS: FilterOption[];
26
- export declare const DEFAULT_ROLE_OPTIONS: FilterOption[];
27
- export declare const DEFAULT_STATUS_OPTIONS: FilterOption[];
28
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAc,MAAM,SAAS,CAAC;AAG1E,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,aAAa,EACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoB7D,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,eAAe,EACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoB7D,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,YAAY,EAMpD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,EAKlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAKhD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAM/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAM9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAK9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAK9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAK9C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAIhD,CAAC"}