@b3-crow/ui-kit 0.0.30 → 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.
Files changed (295) hide show
  1. package/dist/components/backgrounds/AnimatedBackground.d.ts.map +1 -0
  2. package/dist/components/backgrounds/AnimatedBackground.js.map +1 -0
  3. package/dist/components/backgrounds/Globe.d.ts.map +1 -0
  4. package/dist/components/backgrounds/Globe.js.map +1 -0
  5. package/dist/components/backgrounds/GradientBackground.d.ts.map +1 -0
  6. package/dist/components/backgrounds/GradientBackground.js.map +1 -0
  7. package/dist/components/{Button.d.ts → buttons/Button.d.ts} +5 -2
  8. package/dist/components/buttons/Button.d.ts.map +1 -0
  9. package/dist/components/buttons/Button.js +41 -0
  10. package/dist/components/buttons/Button.js.map +1 -0
  11. package/dist/components/buttons/CompanyPageButton.d.ts +10 -0
  12. package/dist/components/buttons/CompanyPageButton.d.ts.map +1 -0
  13. package/dist/components/buttons/CompanyPageButton.js +8 -0
  14. package/dist/components/buttons/CompanyPageButton.js.map +1 -0
  15. package/dist/components/cards/Card.d.ts.map +1 -0
  16. package/dist/components/{Card.js → cards/Card.js} +1 -1
  17. package/dist/components/cards/Card.js.map +1 -0
  18. package/dist/components/cards/CheckoutSummary.d.ts +38 -0
  19. package/dist/components/cards/CheckoutSummary.d.ts.map +1 -0
  20. package/dist/components/cards/CheckoutSummary.js +54 -0
  21. package/dist/components/cards/CheckoutSummary.js.map +1 -0
  22. package/dist/components/cards/ConnectionOption.d.ts +13 -0
  23. package/dist/components/cards/ConnectionOption.d.ts.map +1 -0
  24. package/dist/components/cards/ConnectionOption.js +22 -0
  25. package/dist/components/cards/ConnectionOption.js.map +1 -0
  26. package/dist/components/cards/InvitationDetailsCard.d.ts +8 -0
  27. package/dist/components/cards/InvitationDetailsCard.d.ts.map +1 -0
  28. package/dist/components/cards/InvitationDetailsCard.js +5 -0
  29. package/dist/components/cards/InvitationDetailsCard.js.map +1 -0
  30. package/dist/components/cards/OrderSummaryCard.d.ts +29 -0
  31. package/dist/components/cards/OrderSummaryCard.d.ts.map +1 -0
  32. package/dist/components/cards/OrderSummaryCard.js +8 -0
  33. package/dist/components/cards/OrderSummaryCard.js.map +1 -0
  34. package/dist/components/cards/PendingInviteCard.d.ts +26 -0
  35. package/dist/components/cards/PendingInviteCard.d.ts.map +1 -0
  36. package/dist/components/cards/PendingInviteCard.js +63 -0
  37. package/dist/components/cards/PendingInviteCard.js.map +1 -0
  38. package/dist/components/cards/PlanCard.d.ts +50 -0
  39. package/dist/components/cards/PlanCard.d.ts.map +1 -0
  40. package/dist/components/cards/PlanCard.js +40 -0
  41. package/dist/components/cards/PlanCard.js.map +1 -0
  42. package/dist/components/cards/PricingCard.d.ts +35 -0
  43. package/dist/components/cards/PricingCard.d.ts.map +1 -0
  44. package/dist/components/cards/PricingCard.js +42 -0
  45. package/dist/components/cards/PricingCard.js.map +1 -0
  46. package/dist/components/cards/RunAgentCard.d.ts +9 -0
  47. package/dist/components/cards/RunAgentCard.d.ts.map +1 -0
  48. package/dist/components/cards/RunAgentCard.js +15 -0
  49. package/dist/components/cards/RunAgentCard.js.map +1 -0
  50. package/dist/components/cards/SyncStatusCard.d.ts +8 -0
  51. package/dist/components/cards/SyncStatusCard.d.ts.map +1 -0
  52. package/dist/components/cards/SyncStatusCard.js +29 -0
  53. package/dist/components/cards/SyncStatusCard.js.map +1 -0
  54. package/dist/components/dashboard/ChatHistorySection.d.ts +4 -0
  55. package/dist/components/dashboard/ChatHistorySection.d.ts.map +1 -0
  56. package/dist/components/dashboard/ChatHistorySection.js +116 -0
  57. package/dist/components/dashboard/ChatHistorySection.js.map +1 -0
  58. package/dist/components/dashboard/DashboardBackground.d.ts +4 -0
  59. package/dist/components/dashboard/DashboardBackground.d.ts.map +1 -0
  60. package/dist/components/dashboard/DashboardBackground.js +13 -0
  61. package/dist/components/dashboard/DashboardBackground.js.map +1 -0
  62. package/dist/components/dashboard/FilterDropdown.d.ts +14 -0
  63. package/dist/components/dashboard/FilterDropdown.d.ts.map +1 -0
  64. package/dist/components/dashboard/FilterDropdown.js +115 -0
  65. package/dist/components/dashboard/FilterDropdown.js.map +1 -0
  66. package/dist/components/dashboard/GlassPanel.d.ts +4 -0
  67. package/dist/components/dashboard/GlassPanel.d.ts.map +1 -0
  68. package/dist/components/dashboard/GlassPanel.js +11 -0
  69. package/dist/components/dashboard/GlassPanel.js.map +1 -0
  70. package/dist/components/dashboard/Header.d.ts +4 -0
  71. package/dist/components/dashboard/Header.d.ts.map +1 -0
  72. package/dist/components/dashboard/Header.js +126 -0
  73. package/dist/components/dashboard/Header.js.map +1 -0
  74. package/dist/components/dashboard/IconBadge.d.ts +12 -0
  75. package/dist/components/dashboard/IconBadge.d.ts.map +1 -0
  76. package/dist/components/dashboard/IconBadge.js +34 -0
  77. package/dist/components/dashboard/IconBadge.js.map +1 -0
  78. package/dist/components/dashboard/ListItem.d.ts +10 -0
  79. package/dist/components/dashboard/ListItem.d.ts.map +1 -0
  80. package/dist/components/dashboard/ListItem.js +13 -0
  81. package/dist/components/dashboard/ListItem.js.map +1 -0
  82. package/dist/components/dashboard/MetricsCard.d.ts +10 -0
  83. package/dist/components/dashboard/MetricsCard.d.ts.map +1 -0
  84. package/dist/components/dashboard/MetricsCard.js +41 -0
  85. package/dist/components/dashboard/MetricsCard.js.map +1 -0
  86. package/dist/components/dashboard/MobileSidebar.d.ts +4 -0
  87. package/dist/components/dashboard/MobileSidebar.d.ts.map +1 -0
  88. package/dist/components/dashboard/MobileSidebar.js +51 -0
  89. package/dist/components/dashboard/MobileSidebar.js.map +1 -0
  90. package/dist/components/dashboard/NavMenu.d.ts +8 -0
  91. package/dist/components/dashboard/NavMenu.d.ts.map +1 -0
  92. package/dist/components/dashboard/NavMenu.js +66 -0
  93. package/dist/components/dashboard/NavMenu.js.map +1 -0
  94. package/dist/components/dashboard/PatternCard.d.ts +16 -0
  95. package/dist/components/dashboard/PatternCard.d.ts.map +1 -0
  96. package/dist/components/dashboard/PatternCard.js +75 -0
  97. package/dist/components/dashboard/PatternCard.js.map +1 -0
  98. package/dist/components/dashboard/SearchInput.d.ts +14 -0
  99. package/dist/components/dashboard/SearchInput.d.ts.map +1 -0
  100. package/dist/components/dashboard/SearchInput.js +36 -0
  101. package/dist/components/dashboard/SearchInput.js.map +1 -0
  102. package/dist/components/dashboard/SectionHeader.d.ts +13 -0
  103. package/dist/components/dashboard/SectionHeader.d.ts.map +1 -0
  104. package/dist/components/dashboard/SectionHeader.js +19 -0
  105. package/dist/components/dashboard/SectionHeader.js.map +1 -0
  106. package/dist/components/dashboard/SettingsDropup.d.ts +11 -0
  107. package/dist/components/dashboard/SettingsDropup.d.ts.map +1 -0
  108. package/dist/components/dashboard/SettingsDropup.js +35 -0
  109. package/dist/components/dashboard/SettingsDropup.js.map +1 -0
  110. package/dist/components/dashboard/SettingsModal.d.ts +4 -0
  111. package/dist/components/dashboard/SettingsModal.d.ts.map +1 -0
  112. package/dist/components/dashboard/SettingsModal.js +65 -0
  113. package/dist/components/dashboard/SettingsModal.js.map +1 -0
  114. package/dist/components/dashboard/SidePanel.d.ts +12 -0
  115. package/dist/components/dashboard/SidePanel.d.ts.map +1 -0
  116. package/dist/components/dashboard/SidePanel.js +79 -0
  117. package/dist/components/dashboard/SidePanel.js.map +1 -0
  118. package/dist/components/dashboard/Sidebar.d.ts +4 -0
  119. package/dist/components/dashboard/Sidebar.d.ts.map +1 -0
  120. package/dist/components/dashboard/Sidebar.js +24 -0
  121. package/dist/components/dashboard/Sidebar.js.map +1 -0
  122. package/dist/components/dashboard/SidebarLogo.d.ts +7 -0
  123. package/dist/components/dashboard/SidebarLogo.d.ts.map +1 -0
  124. package/dist/components/dashboard/SidebarLogo.js +6 -0
  125. package/dist/components/dashboard/SidebarLogo.js.map +1 -0
  126. package/dist/components/dashboard/SourceIcon.d.ts +7 -0
  127. package/dist/components/dashboard/SourceIcon.d.ts.map +1 -0
  128. package/dist/components/dashboard/SourceIcon.js +20 -0
  129. package/dist/components/dashboard/SourceIcon.js.map +1 -0
  130. package/dist/components/dashboard/StatusBadge.d.ts +14 -0
  131. package/dist/components/dashboard/StatusBadge.d.ts.map +1 -0
  132. package/dist/components/dashboard/StatusBadge.js +30 -0
  133. package/dist/components/dashboard/StatusBadge.js.map +1 -0
  134. package/dist/components/dashboard/StatusIndicator.d.ts +7 -0
  135. package/dist/components/dashboard/StatusIndicator.d.ts.map +1 -0
  136. package/dist/components/dashboard/StatusIndicator.js +26 -0
  137. package/dist/components/dashboard/StatusIndicator.js.map +1 -0
  138. package/dist/components/dashboard/Tag.d.ts +7 -0
  139. package/dist/components/dashboard/Tag.d.ts.map +1 -0
  140. package/dist/components/dashboard/Tag.js +9 -0
  141. package/dist/components/dashboard/Tag.js.map +1 -0
  142. package/dist/components/dashboard/TipCard.d.ts +5 -0
  143. package/dist/components/dashboard/TipCard.d.ts.map +1 -0
  144. package/dist/components/dashboard/TipCard.js +10 -0
  145. package/dist/components/dashboard/TipCard.js.map +1 -0
  146. package/dist/components/dashboard/ToggleSwitch.d.ts +8 -0
  147. package/dist/components/dashboard/ToggleSwitch.d.ts.map +1 -0
  148. package/dist/components/dashboard/ToggleSwitch.js +15 -0
  149. package/dist/components/dashboard/ToggleSwitch.js.map +1 -0
  150. package/dist/components/dashboard/index.d.ts +26 -0
  151. package/dist/components/dashboard/index.d.ts.map +1 -0
  152. package/dist/components/dashboard/index.js +26 -0
  153. package/dist/components/dashboard/index.js.map +1 -0
  154. package/dist/components/dashboard/types.d.ts +111 -0
  155. package/dist/components/dashboard/types.d.ts.map +1 -0
  156. package/dist/components/dashboard/types.js +2 -0
  157. package/dist/components/dashboard/types.js.map +1 -0
  158. package/dist/components/display/CodeBlock.d.ts +10 -0
  159. package/dist/components/display/CodeBlock.d.ts.map +1 -0
  160. package/dist/components/display/CodeBlock.js +20 -0
  161. package/dist/components/display/CodeBlock.js.map +1 -0
  162. package/dist/components/display/ConnectionStatus.d.ts +8 -0
  163. package/dist/components/display/ConnectionStatus.d.ts.map +1 -0
  164. package/dist/components/display/ConnectionStatus.js +5 -0
  165. package/dist/components/display/ConnectionStatus.js.map +1 -0
  166. package/dist/components/display/Logo.d.ts +16 -0
  167. package/dist/components/display/Logo.d.ts.map +1 -0
  168. package/dist/components/display/Logo.js +43 -0
  169. package/dist/components/display/Logo.js.map +1 -0
  170. package/dist/components/display/PackageManagerSelector.d.ts +8 -0
  171. package/dist/components/display/PackageManagerSelector.d.ts.map +1 -0
  172. package/dist/components/display/PackageManagerSelector.js +20 -0
  173. package/dist/components/display/PackageManagerSelector.js.map +1 -0
  174. package/dist/components/index.d.ts +41 -11
  175. package/dist/components/index.d.ts.map +1 -1
  176. package/dist/components/index.js +41 -11
  177. package/dist/components/index.js.map +1 -1
  178. package/dist/components/inputs/ApiKeyInput.d.ts +8 -0
  179. package/dist/components/inputs/ApiKeyInput.d.ts.map +1 -0
  180. package/dist/components/inputs/ApiKeyInput.js +22 -0
  181. package/dist/components/inputs/ApiKeyInput.js.map +1 -0
  182. package/dist/components/inputs/Checkbox.d.ts +11 -0
  183. package/dist/components/inputs/Checkbox.d.ts.map +1 -0
  184. package/dist/components/inputs/Checkbox.js +19 -0
  185. package/dist/components/inputs/Checkbox.js.map +1 -0
  186. package/dist/components/inputs/EmailTagInput.d.ts +9 -0
  187. package/dist/components/inputs/EmailTagInput.d.ts.map +1 -0
  188. package/dist/components/inputs/EmailTagInput.js +61 -0
  189. package/dist/components/inputs/EmailTagInput.js.map +1 -0
  190. package/dist/components/inputs/Input.d.ts +16 -0
  191. package/dist/components/inputs/Input.d.ts.map +1 -0
  192. package/dist/components/inputs/Input.js +42 -0
  193. package/dist/components/inputs/Input.js.map +1 -0
  194. package/dist/components/inputs/InputField.d.ts.map +1 -0
  195. package/dist/components/{InputField.js → inputs/InputField.js} +1 -1
  196. package/dist/components/inputs/InputField.js.map +1 -0
  197. package/dist/components/inputs/NumberStepper.d.ts +15 -0
  198. package/dist/components/inputs/NumberStepper.d.ts.map +1 -0
  199. package/dist/components/inputs/NumberStepper.js +49 -0
  200. package/dist/components/inputs/NumberStepper.js.map +1 -0
  201. package/dist/components/inputs/PermissionToggle.d.ts +15 -0
  202. package/dist/components/inputs/PermissionToggle.d.ts.map +1 -0
  203. package/dist/components/inputs/PermissionToggle.js +18 -0
  204. package/dist/components/inputs/PermissionToggle.js.map +1 -0
  205. package/dist/components/inputs/Select.d.ts +24 -0
  206. package/dist/components/inputs/Select.d.ts.map +1 -0
  207. package/dist/components/inputs/Select.js +156 -0
  208. package/dist/components/inputs/Select.js.map +1 -0
  209. package/dist/components/inputs/TagInput.d.ts +10 -0
  210. package/dist/components/inputs/TagInput.d.ts.map +1 -0
  211. package/dist/components/inputs/TagInput.js +20 -0
  212. package/dist/components/inputs/TagInput.js.map +1 -0
  213. package/dist/components/inputs/ToggleOption.d.ts +20 -0
  214. package/dist/components/inputs/ToggleOption.d.ts.map +1 -0
  215. package/dist/components/inputs/ToggleOption.js +70 -0
  216. package/dist/components/inputs/ToggleOption.js.map +1 -0
  217. package/dist/components/layout/Divider.d.ts +11 -0
  218. package/dist/components/layout/Divider.d.ts.map +1 -0
  219. package/dist/components/layout/Divider.js +15 -0
  220. package/dist/components/layout/Divider.js.map +1 -0
  221. package/dist/components/layout/Footer.d.ts +37 -0
  222. package/dist/components/layout/Footer.d.ts.map +1 -0
  223. package/dist/components/layout/Footer.js +49 -0
  224. package/dist/components/layout/Footer.js.map +1 -0
  225. package/dist/components/layout/FormSection.d.ts +9 -0
  226. package/dist/components/layout/FormSection.d.ts.map +1 -0
  227. package/dist/components/layout/FormSection.js +7 -0
  228. package/dist/components/layout/FormSection.js.map +1 -0
  229. package/dist/components/layout/LinkGroup.d.ts +15 -0
  230. package/dist/components/layout/LinkGroup.d.ts.map +1 -0
  231. package/dist/components/layout/LinkGroup.js +28 -0
  232. package/dist/components/layout/LinkGroup.js.map +1 -0
  233. package/dist/components/layout/Navbar.d.ts +32 -0
  234. package/dist/components/layout/Navbar.d.ts.map +1 -0
  235. package/dist/components/layout/Navbar.js +35 -0
  236. package/dist/components/layout/Navbar.js.map +1 -0
  237. package/dist/components/layout/PageHeader.d.ts +17 -0
  238. package/dist/components/layout/PageHeader.d.ts.map +1 -0
  239. package/dist/components/layout/PageHeader.js +86 -0
  240. package/dist/components/layout/PageHeader.js.map +1 -0
  241. package/dist/components/layout/SegmentedControl.d.ts +16 -0
  242. package/dist/components/layout/SegmentedControl.d.ts.map +1 -0
  243. package/dist/components/layout/SegmentedControl.js +24 -0
  244. package/dist/components/layout/SegmentedControl.js.map +1 -0
  245. package/dist/components/typography/HeroText.d.ts.map +1 -0
  246. package/dist/components/typography/HeroText.js.map +1 -0
  247. package/dist/components/typography/SectionLabel.d.ts.map +1 -0
  248. package/dist/components/typography/SectionLabel.js.map +1 -0
  249. package/dist/components/typography/Subtitle.d.ts.map +1 -0
  250. package/dist/components/typography/Subtitle.js.map +1 -0
  251. package/dist/components/typography/TypewriterText.d.ts.map +1 -0
  252. package/dist/components/typography/TypewriterText.js.map +1 -0
  253. package/dist/styles.css +1 -1
  254. package/package.json +9 -2
  255. package/dist/components/AnimatedBackground.d.ts.map +0 -1
  256. package/dist/components/AnimatedBackground.js.map +0 -1
  257. package/dist/components/Button.d.ts.map +0 -1
  258. package/dist/components/Button.js +0 -26
  259. package/dist/components/Button.js.map +0 -1
  260. package/dist/components/Card.d.ts.map +0 -1
  261. package/dist/components/Card.js.map +0 -1
  262. package/dist/components/Globe.d.ts.map +0 -1
  263. package/dist/components/Globe.js.map +0 -1
  264. package/dist/components/GradientBackground.d.ts.map +0 -1
  265. package/dist/components/GradientBackground.js.map +0 -1
  266. package/dist/components/HeroText.d.ts.map +0 -1
  267. package/dist/components/HeroText.js.map +0 -1
  268. package/dist/components/InputField.d.ts.map +0 -1
  269. package/dist/components/InputField.js.map +0 -1
  270. package/dist/components/Logo.d.ts +0 -6
  271. package/dist/components/Logo.d.ts.map +0 -1
  272. package/dist/components/Logo.js +0 -7
  273. package/dist/components/Logo.js.map +0 -1
  274. package/dist/components/SectionLabel.d.ts.map +0 -1
  275. package/dist/components/SectionLabel.js.map +0 -1
  276. package/dist/components/Subtitle.d.ts.map +0 -1
  277. package/dist/components/Subtitle.js.map +0 -1
  278. package/dist/components/TypewriterText.d.ts.map +0 -1
  279. package/dist/components/TypewriterText.js.map +0 -1
  280. /package/dist/components/{AnimatedBackground.d.ts → backgrounds/AnimatedBackground.d.ts} +0 -0
  281. /package/dist/components/{AnimatedBackground.js → backgrounds/AnimatedBackground.js} +0 -0
  282. /package/dist/components/{Globe.d.ts → backgrounds/Globe.d.ts} +0 -0
  283. /package/dist/components/{Globe.js → backgrounds/Globe.js} +0 -0
  284. /package/dist/components/{GradientBackground.d.ts → backgrounds/GradientBackground.d.ts} +0 -0
  285. /package/dist/components/{GradientBackground.js → backgrounds/GradientBackground.js} +0 -0
  286. /package/dist/components/{Card.d.ts → cards/Card.d.ts} +0 -0
  287. /package/dist/components/{InputField.d.ts → inputs/InputField.d.ts} +0 -0
  288. /package/dist/components/{HeroText.d.ts → typography/HeroText.d.ts} +0 -0
  289. /package/dist/components/{HeroText.js → typography/HeroText.js} +0 -0
  290. /package/dist/components/{SectionLabel.d.ts → typography/SectionLabel.d.ts} +0 -0
  291. /package/dist/components/{SectionLabel.js → typography/SectionLabel.js} +0 -0
  292. /package/dist/components/{Subtitle.d.ts → typography/Subtitle.d.ts} +0 -0
  293. /package/dist/components/{Subtitle.js → typography/Subtitle.js} +0 -0
  294. /package/dist/components/{TypewriterText.d.ts → typography/TypewriterText.d.ts} +0 -0
  295. /package/dist/components/{TypewriterText.js → typography/TypewriterText.js} +0 -0
@@ -0,0 +1,126 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Bell, Calendar, Check, ChevronDown, Menu } from 'lucide-react';
4
+ import { useEffect, useRef, useState } from 'react';
5
+ import { cn } from '../../lib/utils';
6
+ const defaultDateRangeOptions = [
7
+ { label: 'Today', value: 'today' },
8
+ { label: 'Yesterday', value: 'yesterday' },
9
+ { label: 'Last 7 days', value: 'last_7_days' },
10
+ { label: 'Last 14 days', value: 'last_14_days' },
11
+ { label: 'Last 30 days', value: 'last_30_days' },
12
+ { label: 'This month', value: 'this_month' },
13
+ { label: 'Last month', value: 'last_month' },
14
+ { label: 'This quarter', value: 'this_quarter' },
15
+ ];
16
+ export function Header({ orgName = 'Global Retail Ops', dateRange = 'Last 7 days', onDateRangeChange, dateRangeOptions = defaultDateRangeOptions, userInitials = 'SJ', showNotification = true, onNotificationClick, onAvatarClick, minimal = false, onMenuClick, logoSrc, }) {
17
+ const [isOpen, setIsOpen] = useState(false);
18
+ const [selectedRange, setSelectedRange] = useState(dateRange);
19
+ const dropdownRef = useRef(null);
20
+ useEffect(() => {
21
+ setSelectedRange(dateRange);
22
+ }, [dateRange]);
23
+ useEffect(() => {
24
+ const handleClickOutside = (event) => {
25
+ if (dropdownRef.current &&
26
+ !dropdownRef.current.contains(event.target)) {
27
+ setIsOpen(false);
28
+ }
29
+ };
30
+ document.addEventListener('mousedown', handleClickOutside);
31
+ return () => document.removeEventListener('mousedown', handleClickOutside);
32
+ }, []);
33
+ const handleSelect = (option) => {
34
+ setSelectedRange(option.label);
35
+ setIsOpen(false);
36
+ onDateRangeChange?.(option.value);
37
+ };
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 })] }));
39
+ }
40
+ function LeftSection({ orgName, selectedRange, isOpen, setIsOpen, dropdownRef, dateRangeOptions, handleSelect, }) {
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 })] }));
42
+ }
43
+ function DatePickerDropdown({ selectedRange, isOpen, setIsOpen, dropdownRef, dateRangeOptions, handleSelect, }) {
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) })] }));
85
+ }
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) => {
113
+ const isSelected = selectedRange === option.label;
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" }) })] }));
117
+ }
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 }))] }));
122
+ }
123
+ function RightSection({ showNotification, onNotificationClick, onAvatarClick, 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 }) })] }));
125
+ }
126
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/components/dashboard/Header.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { VariantProps } from 'class-variance-authority';
2
+ declare const iconBadgeVariants: (props?: ({
3
+ variant?: "blue" | "gray" | "violet" | "emerald" | "rose" | null | undefined;
4
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
5
+ export interface IconBadgeProps extends VariantProps<typeof iconBadgeVariants> {
6
+ icon: string;
7
+ className?: string;
8
+ iconClassName?: string;
9
+ }
10
+ export declare function IconBadge({ icon, variant, className, iconClassName, }: IconBadgeProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=IconBadge.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,34 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cva } from 'class-variance-authority';
4
+ import { Bell, Home, LayoutGrid, MessageSquare, Search, Settings, TrendingUp, Users, } from 'lucide-react';
5
+ import { cn } from '../../lib/utils';
6
+ const iconBadgeVariants = cva('w-8 h-8 rounded-lg flex items-center justify-center border', {
7
+ variants: {
8
+ variant: {
9
+ gray: 'bg-gray-800/50 border-white/5',
10
+ violet: 'bg-violet-600 border-violet-500/50 shadow-[0_0_15px_rgba(124,58,237,0.5)]',
11
+ blue: 'bg-blue-600/20 border-blue-500/20',
12
+ emerald: 'bg-emerald-600/20 border-emerald-500/20',
13
+ rose: 'bg-rose-600/20 border-rose-500/20',
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ variant: 'gray',
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
+ };
30
+ export function IconBadge({ icon, variant = 'gray', className = '', iconClassName = '', }) {
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 })) }));
33
+ }
34
+ //# sourceMappingURL=IconBadge.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,10 @@
1
+ export interface ListItemProps {
2
+ children: React.ReactNode;
3
+ onClick?: () => void;
4
+ ariaLabel?: string;
5
+ showChevron?: boolean;
6
+ highlighted?: boolean;
7
+ className?: string;
8
+ }
9
+ export declare function ListItem({ children, onClick, ariaLabel, showChevron, highlighted, className, }: ListItemProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=ListItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/ListItem.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,WAAmB,EACnB,WAAmB,EACnB,SAAS,GACV,EAAE,aAAa,2CAoBf"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ChevronRight } from 'lucide-react';
4
+ import { cn } from '../../lib/utils';
5
+ export function ListItem({ children, onClick, ariaLabel, showChevron = false, highlighted = false, className, }) {
6
+ return (_jsx("button", { type: "button", onClick: onClick, "aria-label": ariaLabel, className: cn('w-full px-2.5 sm:px-3 py-2.5 sm:py-3 rounded-lg text-left transition-all group', highlighted
7
+ ? 'border-l-2 border-l-violet-500 bg-violet-500/[0.02] pl-3 sm:pl-3.5'
8
+ : 'hover:bg-white/[0.02]', className), children: _jsxs("div", { className: "flex items-start justify-between", children: [_jsx("div", { className: "flex-1 min-w-0", children: children }), showChevron && _jsx(ChevronIndicator, {})] }) }));
9
+ }
10
+ function ChevronIndicator() {
11
+ return (_jsx("div", { className: "ml-2 opacity-0 group-hover:opacity-100 transition-opacity mt-1 flex-shrink-0", children: _jsx(ChevronRight, { size: 12, className: "text-gray-600 sm:w-3.5 sm:h-3.5", strokeWidth: 2 }) }));
12
+ }
13
+ //# sourceMappingURL=ListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/components/dashboard/ListItem.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAWrC,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,WAAW,GAAG,KAAK,EACnB,WAAW,GAAG,KAAK,EACnB,SAAS,GACK;IACd,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACJ,SAAS,EACrB,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,WAAW;YACT,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,uBAAuB,EAC3B,SAAS,CACV,YAED,eAAK,SAAS,EAAC,kCAAkC,aAC/C,cAAK,SAAS,EAAC,gBAAgB,YAAE,QAAQ,GAAO,EAC/C,WAAW,IAAI,KAAC,gBAAgB,KAAG,IAChC,GACC,CACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,CACL,cAAK,SAAS,EAAC,8EAA8E,YAC3F,KAAC,YAAY,IACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,iCAAiC,EAC3C,WAAW,EAAE,CAAC,GACd,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface MetricsCardProps {
2
+ title: string;
3
+ value: string;
4
+ change: string;
5
+ changeType: 'positive' | 'negative' | 'neutral' | 'info';
6
+ chartData?: readonly number[];
7
+ chartColor?: 'violet' | 'rose' | 'gray';
8
+ }
9
+ export declare function MetricsCard({ title, value, change, changeType, chartData, chartColor, }: MetricsCardProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=MetricsCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsCard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/MetricsCard.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACzD,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CACzC;AAmBD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAA8B,EAC9B,UAAqB,GACtB,EAAE,gBAAgB,2CA8BlB"}
@@ -0,0 +1,41 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { GlassPanel } from './GlassPanel';
4
+ import { StatusBadge } from './StatusBadge';
5
+ const chartColors = {
6
+ violet: {
7
+ bg: '#8B5CF6',
8
+ shadow: '0px 0px 8px rgba(124, 58, 237, 0.50)',
9
+ },
10
+ rose: {
11
+ bg: '#F43F5E',
12
+ shadow: '0px 0px 8px rgba(244, 63, 94, 0.50)',
13
+ },
14
+ gray: {
15
+ bg: '#6B7280',
16
+ shadow: 'none',
17
+ },
18
+ };
19
+ const DEFAULT_CHART_DATA = [25, 50, 35, 70, 100];
20
+ export function MetricsCard({ title, value, change, changeType, chartData = DEFAULT_CHART_DATA, chartColor = 'violet', }) {
21
+ // Safeguard for empty chartData
22
+ const safeChartData = chartData.length > 0 ? chartData : DEFAULT_CHART_DATA;
23
+ const maxValue = Math.max(...safeChartData);
24
+ const barColor = chartColors[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 })] })] }) }));
26
+ }
27
+ function MiniChart({ chartData, maxValue, barColor }) {
28
+ return (_jsx("div", { className: "flex items-end gap-[2px]", children: chartData.map((val, index) => {
29
+ const isLast = index === chartData.length - 1;
30
+ const height = Math.max((val / maxValue) * 20, 3);
31
+ return (_jsx("div", { style: {
32
+ width: '12px',
33
+ height: `${height}px`,
34
+ borderRadius: '2px 2px 0 0',
35
+ background: isLast ? barColor.bg : '#374151',
36
+ boxShadow: isLast ? barColor.shadow : 'none',
37
+ opacity: isLast ? 1 : 0.5,
38
+ } }, `bar-${index}-${val}`));
39
+ }) }));
40
+ }
41
+ //# sourceMappingURL=MetricsCard.js.map
@@ -0,0 +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,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"}
@@ -0,0 +1,4 @@
1
+ import type { MobileSidebarProps } from './types';
2
+ export type { MobileSidebarProps };
3
+ export declare function MobileSidebar({ isOpen, onClose, navItems, activeHref, onNavigate, showSettings, logoSrc, userName, userEmail, onLogout, onThemeChange, onNotificationsChange, initialTheme, initialNotifications, chatHistory, activeChatId, chatHistoryExpanded, onChatClick, onChatHistoryToggle, onChatRename, onChatDelete, }: MobileSidebarProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=MobileSidebar.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { AnimatePresence, motion } from 'framer-motion';
4
+ import { X } from 'lucide-react';
5
+ import { useEffect } from 'react';
6
+ import { ChatHistorySection } from './ChatHistorySection';
7
+ import { NavMenu } from './NavMenu';
8
+ import { SettingsDropup } from './SettingsDropup';
9
+ import { SidebarLogo } from './SidebarLogo';
10
+ const defaultNavItems = [
11
+ { icon: 'grid_view', label: 'Overview', href: '/' },
12
+ { icon: 'chat_bubble', label: 'Ask CROW', href: '/ask-crow' },
13
+ {
14
+ icon: 'timeline',
15
+ label: 'Analysis',
16
+ href: '#',
17
+ submenu: [
18
+ { icon: '', label: 'Interactions', href: '/analysis/interactions' },
19
+ { icon: '', label: 'Patterns', href: '/analysis/patterns' },
20
+ ],
21
+ },
22
+ { icon: 'group', label: 'Team', href: '/team' },
23
+ ];
24
+ export function MobileSidebar({ isOpen, onClose, navItems = defaultNavItems, activeHref = '/', onNavigate, showSettings = true, logoSrc = '/favicon.png', userName = 'User', userEmail = 'user@example.com', onLogout, onThemeChange, onNotificationsChange, initialTheme = 'dark', initialNotifications = true, chatHistory, activeChatId, chatHistoryExpanded = true, onChatClick, onChatHistoryToggle, onChatRename, onChatDelete, }) {
25
+ // Show chat history only on Ask CROW page
26
+ const normalizedHref = activeHref?.replace(/\/$/, '') || '';
27
+ const showChatHistory = normalizedHref === '/ask-crow';
28
+ // Lock body scroll when sidebar is open
29
+ useEffect(() => {
30
+ if (isOpen) {
31
+ document.body.style.overflow = 'hidden';
32
+ }
33
+ else {
34
+ document.body.style.overflow = '';
35
+ }
36
+ return () => {
37
+ document.body.style.overflow = '';
38
+ };
39
+ }, [isOpen]);
40
+ // Handle navigation - close sidebar after navigating
41
+ const handleNavigate = (href) => {
42
+ onNavigate?.(href);
43
+ onClose();
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 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: {
46
+ background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0) 100%)',
47
+ } }), _jsx("div", { className: "absolute left-0 top-0 w-[279px] h-32 opacity-50 pointer-events-none", style: {
48
+ background: 'linear-gradient(180deg, #100B1A 0%, rgba(16, 11, 26, 0) 100%)',
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 }))] })] })] })) }));
50
+ }
51
+ //# sourceMappingURL=MobileSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileSidebar.js","sourceRoot":"","sources":["../../../src/components/dashboard/MobileSidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { NavItem } from './types';
2
+ export interface NavMenuProps {
3
+ items: NavItem[];
4
+ activeHref: string;
5
+ onNavigate?: (href: string) => void;
6
+ }
7
+ export declare function NavMenu({ items, activeHref, onNavigate }: NavMenuProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=NavMenu.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,66 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ChevronDown, LayoutGrid, MessageSquare, TrendingUp, Users, } from 'lucide-react';
4
+ import { useState } from 'react';
5
+ import { cn } from '../../lib/utils';
6
+ const iconComponents = {
7
+ grid_view: LayoutGrid,
8
+ chat_bubble: MessageSquare,
9
+ timeline: TrendingUp,
10
+ group: Users,
11
+ };
12
+ export function NavMenu({ items, activeHref, onNavigate }) {
13
+ const [expandedMenus, setExpandedMenus] = useState([]);
14
+ const normalizePath = (path) => path.replace(/\/$/, '') || '/';
15
+ const isActive = (href) => {
16
+ const normalizedActive = normalizePath(activeHref);
17
+ const normalizedHref = normalizePath(href);
18
+ return normalizedActive === normalizedHref;
19
+ };
20
+ const isSubmenuActive = (subItems) => subItems?.some(item => isActive(item.href));
21
+ const isExpanded = (label) => expandedMenus.includes(label);
22
+ const toggleMenu = (label) => {
23
+ setExpandedMenus(prev => prev.includes(label) ? prev.filter(l => l !== label) : [...prev, label]);
24
+ };
25
+ const handleNavigate = (href, e) => {
26
+ if (onNavigate) {
27
+ e.preventDefault();
28
+ onNavigate(href);
29
+ }
30
+ };
31
+ const handleKeyDown = (label, e) => {
32
+ if (e.key === 'Enter' || e.key === ' ') {
33
+ e.preventDefault();
34
+ toggleMenu(label);
35
+ }
36
+ };
37
+ const renderIcon = (iconName, active) => {
38
+ const IconComponent = iconComponents[iconName];
39
+ if (!IconComponent)
40
+ return null;
41
+ return (_jsx(IconComponent, { size: 15, className: cn('transition-colors', active ? 'text-violet-300' : 'text-gray-500'), strokeWidth: 2 }));
42
+ };
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);
47
+ const expanded = item.submenu && isExpanded(item.label);
48
+ const submenuHeight = item.submenu ? item.submenu.length * 35.5 : 0;
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: {
52
+ maxHeight: expanded ? submenuHeight : 0,
53
+ opacity: expanded ? 1 : 0,
54
+ }, children: item.submenu.map(subitem => {
55
+ const subActive = isActive(subitem.href);
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));
64
+ }) }));
65
+ }
66
+ //# sourceMappingURL=NavMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavMenu.js","sourceRoot":"","sources":["../../../src/components/dashboard/NavMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type SeverityLevel = 'high' | 'medium' | 'low';
2
+ export type ConfidenceLevel = 'high' | 'medium' | 'low';
3
+ export interface PatternCardProps {
4
+ id?: string;
5
+ title: string;
6
+ severity: SeverityLevel;
7
+ affectedStores: string;
8
+ lastSeen: string;
9
+ confidence: ConfidenceLevel;
10
+ onViewDetails?: () => void;
11
+ onViewEvidence?: () => void;
12
+ onCreateAlert?: () => void;
13
+ className?: string;
14
+ }
15
+ export declare function PatternCard({ title, severity, affectedStores, lastSeen, confidence, onViewDetails, onViewEvidence, onCreateAlert, className, }: PatternCardProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=PatternCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternCard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/PatternCard.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkDD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,SAAS,GACV,EAAE,gBAAgB,2CAgHlB"}
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Bell, Clock, MapPin } from 'lucide-react';
4
+ import { cn } from '../../lib/utils';
5
+ const severityConfig = {
6
+ high: {
7
+ label: 'HIGH',
8
+ color: '#F87171',
9
+ bg: 'rgba(239, 68, 68, 0.10)',
10
+ border: 'rgba(239, 68, 68, 0.20)',
11
+ },
12
+ medium: {
13
+ label: 'MEDIUM',
14
+ color: '#FACC15',
15
+ bg: 'rgba(234, 179, 8, 0.10)',
16
+ border: 'rgba(234, 179, 8, 0.20)',
17
+ },
18
+ low: {
19
+ label: 'LOW',
20
+ color: '#60A5FA',
21
+ bg: 'rgba(59, 130, 246, 0.10)',
22
+ border: 'rgba(59, 130, 246, 0.20)',
23
+ },
24
+ };
25
+ const confidenceConfig = {
26
+ high: {
27
+ label: 'High',
28
+ color: '#C4B5FD',
29
+ bg: 'rgba(139, 92, 246, 0.10)',
30
+ border: 'rgba(139, 92, 246, 0.20)',
31
+ },
32
+ medium: {
33
+ label: 'Medium',
34
+ color: '#D1D5DB',
35
+ bg: 'rgba(255, 255, 255, 0.05)',
36
+ border: 'rgba(255, 255, 255, 0.10)',
37
+ },
38
+ low: {
39
+ label: 'Low',
40
+ color: '#D1D5DB',
41
+ bg: 'rgba(255, 255, 255, 0.05)',
42
+ border: 'rgba(255, 255, 255, 0.10)',
43
+ },
44
+ };
45
+ export function PatternCard({ title, severity, affectedStores, lastSeen, confidence, onViewDetails, onViewEvidence, onCreateAlert, className, }) {
46
+ const severityStyle = severityConfig[severity];
47
+ const confidenceStyle = confidenceConfig[confidence];
48
+ return (_jsx("div", { className: cn('relative overflow-hidden rounded-xl', className), style: {
49
+ background: 'rgba(10, 5, 20, 0.40)',
50
+ boxShadow: '0px 4px 6px -4px rgba(0, 0, 0, 0.10)',
51
+ outline: '1px rgba(255, 255, 255, 0.08) solid',
52
+ outlineOffset: '-1px',
53
+ backdropFilter: 'blur(8px)',
54
+ }, children: _jsxs("div", { className: "p-6", children: [_jsxs("div", { className: "flex items-start justify-between gap-4 mb-4", children: [_jsx("h3", { className: "text-base font-semibold leading-6 flex-1", style: { color: 'white' }, children: title }), _jsx("span", { className: "shrink-0 px-2.5 py-1 rounded-lg text-[10px] font-bold uppercase tracking-wide", style: {
55
+ color: severityStyle.color,
56
+ background: severityStyle.bg,
57
+ outline: `1px ${severityStyle.border} solid`,
58
+ outlineOffset: '-1px',
59
+ }, children: severityStyle.label })] }), _jsxs("div", { className: "space-y-2 mb-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { size: 16, color: "#6B7280" }), _jsxs("span", { className: "text-sm leading-5", style: { color: '#9CA3AF' }, children: ["Affected stores: ", affectedStores] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Clock, { size: 16, color: "#6B7280" }), _jsxs("span", { className: "text-sm leading-5", style: { color: '#9CA3AF' }, children: ["Last seen: ", lastSeen] })] })] }), _jsxs("div", { className: "flex items-center gap-2 mb-6", children: [_jsx("span", { className: "text-xs font-medium", style: { color: '#6B7280' }, children: "Confidence:" }), _jsx("span", { className: "px-2.5 py-1 rounded-full text-[10px] font-medium", style: {
60
+ color: confidenceStyle.color,
61
+ background: confidenceStyle.bg,
62
+ outline: `1px ${confidenceStyle.border} solid`,
63
+ outlineOffset: '-1px',
64
+ }, children: confidenceStyle.label })] }), _jsxs("div", { className: "pt-4 flex items-center gap-3", style: { borderTop: '1px solid rgba(255, 255, 255, 0.05)' }, children: [_jsx("button", { type: "button", onClick: onViewDetails, className: "h-[30px] px-3.5 flex items-center justify-center rounded-lg text-xs font-medium text-white transition-colors", style: {
65
+ background: '#7C3AED',
66
+ boxShadow: '0px 0px 10px rgba(124, 58, 237, 0.30)',
67
+ outline: '1px #8B5CF6 solid',
68
+ outlineOffset: '-1px',
69
+ }, children: "View details" }), _jsx("button", { type: "button", onClick: onViewEvidence, className: "h-[30px] px-3.5 flex items-center justify-center rounded-lg text-xs font-medium transition-colors hover:bg-white/5", style: {
70
+ color: '#D1D5DB',
71
+ outline: '1px rgba(255, 255, 255, 0.10) solid',
72
+ outlineOffset: '-1px',
73
+ }, children: "View evidence" }), _jsx("div", { className: "flex-1" }), _jsxs("button", { type: "button", onClick: onCreateAlert, className: "h-7 px-3 flex items-center gap-1.5 rounded-lg text-xs font-medium transition-colors hover:bg-white/5", style: { color: '#9CA3AF' }, children: [_jsx(Bell, { size: 14, color: "#9CA3AF" }), "Create alert"] })] })] }) }));
74
+ }
75
+ //# sourceMappingURL=PatternCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternCard.js","sourceRoot":"","sources":["../../../src/components/dashboard/PatternCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface SearchInputProps {
2
+ placeholder?: string;
3
+ value?: string;
4
+ defaultValue?: string;
5
+ onChange?: (value: string) => void;
6
+ onSubmit?: (value: string) => void;
7
+ showMicButton?: boolean;
8
+ disabled?: boolean;
9
+ className?: string;
10
+ helperText?: string;
11
+ variant?: 'default' | 'transparent';
12
+ }
13
+ export declare function SearchInput({ placeholder, value: controlledValue, defaultValue, onChange, onSubmit, showMicButton, disabled, className, helperText, variant, }: SearchInputProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=SearchInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/SearchInput.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CACrC;AAQD,wBAAgB,WAAW,CAAC,EAC1B,WAAyB,EACzB,KAAK,EAAE,eAAe,EACtB,YAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,aAAoB,EACpB,QAAgB,EAChB,SAAS,EACT,UAAU,EACV,OAAmB,GACpB,EAAE,gBAAgB,2CAkElB"}