@b3-crow/ui-kit 0.0.30 → 0.0.31-pr25.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/backgrounds/AnimatedBackground.d.ts.map +1 -0
- package/dist/components/backgrounds/AnimatedBackground.js.map +1 -0
- package/dist/components/backgrounds/Globe.d.ts.map +1 -0
- package/dist/components/backgrounds/Globe.js.map +1 -0
- package/dist/components/backgrounds/GradientBackground.d.ts.map +1 -0
- package/dist/components/backgrounds/GradientBackground.js.map +1 -0
- package/dist/components/{Button.d.ts → buttons/Button.d.ts} +5 -2
- package/dist/components/buttons/Button.d.ts.map +1 -0
- package/dist/components/buttons/Button.js +41 -0
- package/dist/components/buttons/Button.js.map +1 -0
- package/dist/components/buttons/CompanyPageButton.d.ts +10 -0
- package/dist/components/buttons/CompanyPageButton.d.ts.map +1 -0
- package/dist/components/buttons/CompanyPageButton.js +8 -0
- package/dist/components/buttons/CompanyPageButton.js.map +1 -0
- package/dist/components/cards/Card.d.ts.map +1 -0
- package/dist/components/{Card.js → cards/Card.js} +1 -1
- package/dist/components/cards/Card.js.map +1 -0
- package/dist/components/cards/CheckoutSummary.d.ts +38 -0
- package/dist/components/cards/CheckoutSummary.d.ts.map +1 -0
- package/dist/components/cards/CheckoutSummary.js +54 -0
- package/dist/components/cards/CheckoutSummary.js.map +1 -0
- package/dist/components/cards/ConnectionOption.d.ts +13 -0
- package/dist/components/cards/ConnectionOption.d.ts.map +1 -0
- package/dist/components/cards/ConnectionOption.js +22 -0
- package/dist/components/cards/ConnectionOption.js.map +1 -0
- package/dist/components/cards/InvitationDetailsCard.d.ts +8 -0
- package/dist/components/cards/InvitationDetailsCard.d.ts.map +1 -0
- package/dist/components/cards/InvitationDetailsCard.js +5 -0
- package/dist/components/cards/InvitationDetailsCard.js.map +1 -0
- package/dist/components/cards/OrderSummaryCard.d.ts +29 -0
- package/dist/components/cards/OrderSummaryCard.d.ts.map +1 -0
- package/dist/components/cards/OrderSummaryCard.js +8 -0
- package/dist/components/cards/OrderSummaryCard.js.map +1 -0
- package/dist/components/cards/PendingInviteCard.d.ts +26 -0
- package/dist/components/cards/PendingInviteCard.d.ts.map +1 -0
- package/dist/components/cards/PendingInviteCard.js +63 -0
- package/dist/components/cards/PendingInviteCard.js.map +1 -0
- package/dist/components/cards/PlanCard.d.ts +50 -0
- package/dist/components/cards/PlanCard.d.ts.map +1 -0
- package/dist/components/cards/PlanCard.js +40 -0
- package/dist/components/cards/PlanCard.js.map +1 -0
- package/dist/components/cards/RunAgentCard.d.ts +9 -0
- package/dist/components/cards/RunAgentCard.d.ts.map +1 -0
- package/dist/components/cards/RunAgentCard.js +15 -0
- package/dist/components/cards/RunAgentCard.js.map +1 -0
- package/dist/components/cards/SyncStatusCard.d.ts +8 -0
- package/dist/components/cards/SyncStatusCard.d.ts.map +1 -0
- package/dist/components/cards/SyncStatusCard.js +29 -0
- package/dist/components/cards/SyncStatusCard.js.map +1 -0
- package/dist/components/dashboard/ChatHistorySection.d.ts +4 -0
- package/dist/components/dashboard/ChatHistorySection.d.ts.map +1 -0
- package/dist/components/dashboard/ChatHistorySection.js +138 -0
- package/dist/components/dashboard/ChatHistorySection.js.map +1 -0
- package/dist/components/dashboard/DashboardBackground.d.ts +4 -0
- package/dist/components/dashboard/DashboardBackground.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardBackground.js +85 -0
- package/dist/components/dashboard/DashboardBackground.js.map +1 -0
- package/dist/components/dashboard/FilterDropdown.d.ts +14 -0
- package/dist/components/dashboard/FilterDropdown.d.ts.map +1 -0
- package/dist/components/dashboard/FilterDropdown.js +68 -0
- package/dist/components/dashboard/FilterDropdown.js.map +1 -0
- package/dist/components/dashboard/GlassPanel.d.ts +4 -0
- package/dist/components/dashboard/GlassPanel.d.ts.map +1 -0
- package/dist/components/dashboard/GlassPanel.js +11 -0
- package/dist/components/dashboard/GlassPanel.js.map +1 -0
- package/dist/components/dashboard/Header.d.ts +4 -0
- package/dist/components/dashboard/Header.d.ts.map +1 -0
- package/dist/components/dashboard/Header.js +87 -0
- package/dist/components/dashboard/Header.js.map +1 -0
- package/dist/components/dashboard/IconBadge.d.ts +12 -0
- package/dist/components/dashboard/IconBadge.d.ts.map +1 -0
- package/dist/components/dashboard/IconBadge.js +22 -0
- package/dist/components/dashboard/IconBadge.js.map +1 -0
- package/dist/components/dashboard/ListItem.d.ts +10 -0
- package/dist/components/dashboard/ListItem.d.ts.map +1 -0
- package/dist/components/dashboard/ListItem.js +13 -0
- package/dist/components/dashboard/ListItem.js.map +1 -0
- package/dist/components/dashboard/MetricsCard.d.ts +10 -0
- package/dist/components/dashboard/MetricsCard.d.ts.map +1 -0
- package/dist/components/dashboard/MetricsCard.js +39 -0
- package/dist/components/dashboard/MetricsCard.js.map +1 -0
- package/dist/components/dashboard/MobileSidebar.d.ts +4 -0
- package/dist/components/dashboard/MobileSidebar.d.ts.map +1 -0
- package/dist/components/dashboard/MobileSidebar.js +68 -0
- package/dist/components/dashboard/MobileSidebar.js.map +1 -0
- package/dist/components/dashboard/NavMenu.d.ts +8 -0
- package/dist/components/dashboard/NavMenu.d.ts.map +1 -0
- package/dist/components/dashboard/NavMenu.js +145 -0
- package/dist/components/dashboard/NavMenu.js.map +1 -0
- package/dist/components/dashboard/PatternCard.d.ts +16 -0
- package/dist/components/dashboard/PatternCard.d.ts.map +1 -0
- package/dist/components/dashboard/PatternCard.js +75 -0
- package/dist/components/dashboard/PatternCard.js.map +1 -0
- package/dist/components/dashboard/SearchInput.d.ts +15 -0
- package/dist/components/dashboard/SearchInput.d.ts.map +1 -0
- package/dist/components/dashboard/SearchInput.js +41 -0
- package/dist/components/dashboard/SearchInput.js.map +1 -0
- package/dist/components/dashboard/SectionHeader.d.ts +13 -0
- package/dist/components/dashboard/SectionHeader.d.ts.map +1 -0
- package/dist/components/dashboard/SectionHeader.js +22 -0
- package/dist/components/dashboard/SectionHeader.js.map +1 -0
- package/dist/components/dashboard/SettingsDropup.d.ts +11 -0
- package/dist/components/dashboard/SettingsDropup.d.ts.map +1 -0
- package/dist/components/dashboard/SettingsDropup.js +169 -0
- package/dist/components/dashboard/SettingsDropup.js.map +1 -0
- package/dist/components/dashboard/SettingsModal.d.ts +4 -0
- package/dist/components/dashboard/SettingsModal.d.ts.map +1 -0
- package/dist/components/dashboard/SettingsModal.js +240 -0
- package/dist/components/dashboard/SettingsModal.js.map +1 -0
- package/dist/components/dashboard/SidePanel.d.ts +12 -0
- package/dist/components/dashboard/SidePanel.d.ts.map +1 -0
- package/dist/components/dashboard/SidePanel.js +45 -0
- package/dist/components/dashboard/SidePanel.js.map +1 -0
- package/dist/components/dashboard/Sidebar.d.ts +4 -0
- package/dist/components/dashboard/Sidebar.d.ts.map +1 -0
- package/dist/components/dashboard/Sidebar.js +52 -0
- package/dist/components/dashboard/Sidebar.js.map +1 -0
- package/dist/components/dashboard/SidebarLogo.d.ts +7 -0
- package/dist/components/dashboard/SidebarLogo.d.ts.map +1 -0
- package/dist/components/dashboard/SidebarLogo.js +46 -0
- package/dist/components/dashboard/SidebarLogo.js.map +1 -0
- package/dist/components/dashboard/SourceIcon.d.ts +7 -0
- package/dist/components/dashboard/SourceIcon.d.ts.map +1 -0
- package/dist/components/dashboard/SourceIcon.js +16 -0
- package/dist/components/dashboard/SourceIcon.js.map +1 -0
- package/dist/components/dashboard/StatusBadge.d.ts +14 -0
- package/dist/components/dashboard/StatusBadge.d.ts.map +1 -0
- package/dist/components/dashboard/StatusBadge.js +30 -0
- package/dist/components/dashboard/StatusBadge.js.map +1 -0
- package/dist/components/dashboard/StatusIndicator.d.ts +7 -0
- package/dist/components/dashboard/StatusIndicator.d.ts.map +1 -0
- package/dist/components/dashboard/StatusIndicator.js +29 -0
- package/dist/components/dashboard/StatusIndicator.js.map +1 -0
- package/dist/components/dashboard/Tag.d.ts +7 -0
- package/dist/components/dashboard/Tag.d.ts.map +1 -0
- package/dist/components/dashboard/Tag.js +9 -0
- package/dist/components/dashboard/Tag.js.map +1 -0
- package/dist/components/dashboard/TipCard.d.ts +5 -0
- package/dist/components/dashboard/TipCard.d.ts.map +1 -0
- package/dist/components/dashboard/TipCard.js +10 -0
- package/dist/components/dashboard/TipCard.js.map +1 -0
- package/dist/components/dashboard/ToggleSwitch.d.ts +8 -0
- package/dist/components/dashboard/ToggleSwitch.d.ts.map +1 -0
- package/dist/components/dashboard/ToggleSwitch.js +31 -0
- package/dist/components/dashboard/ToggleSwitch.js.map +1 -0
- package/dist/components/dashboard/index.d.ts +26 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/dashboard/index.js +26 -0
- package/dist/components/dashboard/index.js.map +1 -0
- package/dist/components/dashboard/types.d.ts +108 -0
- package/dist/components/dashboard/types.d.ts.map +1 -0
- package/dist/components/dashboard/types.js +2 -0
- package/dist/components/dashboard/types.js.map +1 -0
- package/dist/components/display/CodeBlock.d.ts +10 -0
- package/dist/components/display/CodeBlock.d.ts.map +1 -0
- package/dist/components/display/CodeBlock.js +20 -0
- package/dist/components/display/CodeBlock.js.map +1 -0
- package/dist/components/display/ConnectionStatus.d.ts +8 -0
- package/dist/components/display/ConnectionStatus.d.ts.map +1 -0
- package/dist/components/display/ConnectionStatus.js +5 -0
- package/dist/components/display/ConnectionStatus.js.map +1 -0
- package/dist/components/display/Logo.d.ts +16 -0
- package/dist/components/display/Logo.d.ts.map +1 -0
- package/dist/components/display/Logo.js +43 -0
- package/dist/components/display/Logo.js.map +1 -0
- package/dist/components/display/PackageManagerSelector.d.ts +8 -0
- package/dist/components/display/PackageManagerSelector.d.ts.map +1 -0
- package/dist/components/display/PackageManagerSelector.js +20 -0
- package/dist/components/display/PackageManagerSelector.js.map +1 -0
- package/dist/components/index.d.ts +40 -11
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +40 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/inputs/ApiKeyInput.d.ts +8 -0
- package/dist/components/inputs/ApiKeyInput.d.ts.map +1 -0
- package/dist/components/inputs/ApiKeyInput.js +22 -0
- package/dist/components/inputs/ApiKeyInput.js.map +1 -0
- package/dist/components/inputs/Checkbox.d.ts +11 -0
- package/dist/components/inputs/Checkbox.d.ts.map +1 -0
- package/dist/components/inputs/Checkbox.js +19 -0
- package/dist/components/inputs/Checkbox.js.map +1 -0
- package/dist/components/inputs/EmailTagInput.d.ts +9 -0
- package/dist/components/inputs/EmailTagInput.d.ts.map +1 -0
- package/dist/components/inputs/EmailTagInput.js +61 -0
- package/dist/components/inputs/EmailTagInput.js.map +1 -0
- package/dist/components/inputs/Input.d.ts +16 -0
- package/dist/components/inputs/Input.d.ts.map +1 -0
- package/dist/components/inputs/Input.js +42 -0
- package/dist/components/inputs/Input.js.map +1 -0
- package/dist/components/inputs/InputField.d.ts.map +1 -0
- package/dist/components/{InputField.js → inputs/InputField.js} +1 -1
- package/dist/components/inputs/InputField.js.map +1 -0
- package/dist/components/inputs/NumberStepper.d.ts +15 -0
- package/dist/components/inputs/NumberStepper.d.ts.map +1 -0
- package/dist/components/inputs/NumberStepper.js +49 -0
- package/dist/components/inputs/NumberStepper.js.map +1 -0
- package/dist/components/inputs/PermissionToggle.d.ts +15 -0
- package/dist/components/inputs/PermissionToggle.d.ts.map +1 -0
- package/dist/components/inputs/PermissionToggle.js +18 -0
- package/dist/components/inputs/PermissionToggle.js.map +1 -0
- package/dist/components/inputs/Select.d.ts +24 -0
- package/dist/components/inputs/Select.d.ts.map +1 -0
- package/dist/components/inputs/Select.js +156 -0
- package/dist/components/inputs/Select.js.map +1 -0
- package/dist/components/inputs/TagInput.d.ts +10 -0
- package/dist/components/inputs/TagInput.d.ts.map +1 -0
- package/dist/components/inputs/TagInput.js +20 -0
- package/dist/components/inputs/TagInput.js.map +1 -0
- package/dist/components/inputs/ToggleOption.d.ts +20 -0
- package/dist/components/inputs/ToggleOption.d.ts.map +1 -0
- package/dist/components/inputs/ToggleOption.js +70 -0
- package/dist/components/inputs/ToggleOption.js.map +1 -0
- package/dist/components/layout/Divider.d.ts +11 -0
- package/dist/components/layout/Divider.d.ts.map +1 -0
- package/dist/components/layout/Divider.js +15 -0
- package/dist/components/layout/Divider.js.map +1 -0
- package/dist/components/layout/Footer.d.ts +37 -0
- package/dist/components/layout/Footer.d.ts.map +1 -0
- package/dist/components/layout/Footer.js +49 -0
- package/dist/components/layout/Footer.js.map +1 -0
- package/dist/components/layout/FormSection.d.ts +9 -0
- package/dist/components/layout/FormSection.d.ts.map +1 -0
- package/dist/components/layout/FormSection.js +7 -0
- package/dist/components/layout/FormSection.js.map +1 -0
- package/dist/components/layout/LinkGroup.d.ts +15 -0
- package/dist/components/layout/LinkGroup.d.ts.map +1 -0
- package/dist/components/layout/LinkGroup.js +28 -0
- package/dist/components/layout/LinkGroup.js.map +1 -0
- package/dist/components/layout/Navbar.d.ts +32 -0
- package/dist/components/layout/Navbar.d.ts.map +1 -0
- package/dist/components/layout/Navbar.js +35 -0
- package/dist/components/layout/Navbar.js.map +1 -0
- package/dist/components/layout/PageHeader.d.ts +17 -0
- package/dist/components/layout/PageHeader.d.ts.map +1 -0
- package/dist/components/layout/PageHeader.js +86 -0
- package/dist/components/layout/PageHeader.js.map +1 -0
- package/dist/components/layout/SegmentedControl.d.ts +16 -0
- package/dist/components/layout/SegmentedControl.d.ts.map +1 -0
- package/dist/components/layout/SegmentedControl.js +24 -0
- package/dist/components/layout/SegmentedControl.js.map +1 -0
- package/dist/components/typography/HeroText.d.ts.map +1 -0
- package/dist/components/typography/HeroText.js.map +1 -0
- package/dist/components/typography/SectionLabel.d.ts.map +1 -0
- package/dist/components/typography/SectionLabel.js.map +1 -0
- package/dist/components/typography/Subtitle.d.ts.map +1 -0
- package/dist/components/typography/Subtitle.js.map +1 -0
- package/dist/components/typography/TypewriterText.d.ts.map +1 -0
- package/dist/components/typography/TypewriterText.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +9 -2
- package/dist/components/AnimatedBackground.d.ts.map +0 -1
- package/dist/components/AnimatedBackground.js.map +0 -1
- package/dist/components/Button.d.ts.map +0 -1
- package/dist/components/Button.js +0 -26
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Card.d.ts.map +0 -1
- package/dist/components/Card.js.map +0 -1
- package/dist/components/Globe.d.ts.map +0 -1
- package/dist/components/Globe.js.map +0 -1
- package/dist/components/GradientBackground.d.ts.map +0 -1
- package/dist/components/GradientBackground.js.map +0 -1
- package/dist/components/HeroText.d.ts.map +0 -1
- package/dist/components/HeroText.js.map +0 -1
- package/dist/components/InputField.d.ts.map +0 -1
- package/dist/components/InputField.js.map +0 -1
- package/dist/components/Logo.d.ts +0 -6
- package/dist/components/Logo.d.ts.map +0 -1
- package/dist/components/Logo.js +0 -7
- package/dist/components/Logo.js.map +0 -1
- package/dist/components/SectionLabel.d.ts.map +0 -1
- package/dist/components/SectionLabel.js.map +0 -1
- package/dist/components/Subtitle.d.ts.map +0 -1
- package/dist/components/Subtitle.js.map +0 -1
- package/dist/components/TypewriterText.d.ts.map +0 -1
- package/dist/components/TypewriterText.js.map +0 -1
- /package/dist/components/{AnimatedBackground.d.ts → backgrounds/AnimatedBackground.d.ts} +0 -0
- /package/dist/components/{AnimatedBackground.js → backgrounds/AnimatedBackground.js} +0 -0
- /package/dist/components/{Globe.d.ts → backgrounds/Globe.d.ts} +0 -0
- /package/dist/components/{Globe.js → backgrounds/Globe.js} +0 -0
- /package/dist/components/{GradientBackground.d.ts → backgrounds/GradientBackground.d.ts} +0 -0
- /package/dist/components/{GradientBackground.js → backgrounds/GradientBackground.js} +0 -0
- /package/dist/components/{Card.d.ts → cards/Card.d.ts} +0 -0
- /package/dist/components/{InputField.d.ts → inputs/InputField.d.ts} +0 -0
- /package/dist/components/{HeroText.d.ts → typography/HeroText.d.ts} +0 -0
- /package/dist/components/{HeroText.js → typography/HeroText.js} +0 -0
- /package/dist/components/{SectionLabel.d.ts → typography/SectionLabel.d.ts} +0 -0
- /package/dist/components/{SectionLabel.js → typography/SectionLabel.js} +0 -0
- /package/dist/components/{Subtitle.d.ts → typography/Subtitle.d.ts} +0 -0
- /package/dist/components/{Subtitle.js → typography/Subtitle.js} +0 -0
- /package/dist/components/{TypewriterText.d.ts → typography/TypewriterText.d.ts} +0 -0
- /package/dist/components/{TypewriterText.js → typography/TypewriterText.js} +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { motion } from 'framer-motion';
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
import { Checkbox } from '../inputs/Checkbox';
|
|
5
|
+
export function PlanCard({ children, className = '', variant = 'default', padding = 'md', animated = true, animationDelay = 0, header, price, featuresTitle = 'INCLUDED LIMITS', specs, showSpecsDivider = true, features, footer, recommended = false, disabled = false, selected = false, showCheckbox = false, onCheckboxChange, }) {
|
|
6
|
+
const variantStyles = {
|
|
7
|
+
default: 'bg-white/[0.02] border border-white/10',
|
|
8
|
+
elevated: 'bg-white/[0.04] border border-white/20 shadow-card-glow',
|
|
9
|
+
outlined: 'bg-transparent border-2 border-white/20',
|
|
10
|
+
glass: 'bg-white/[0.03] backdrop-blur-lg border border-white/10',
|
|
11
|
+
plan: recommended
|
|
12
|
+
? 'bg-white/[0.04] border border-violet-500/30 shadow-card-glow ring-1 ring-violet-500/20'
|
|
13
|
+
: 'bg-white/[0.02] border border-white/10 hover:border-white/20',
|
|
14
|
+
};
|
|
15
|
+
const paddingStyles = {
|
|
16
|
+
none: 'p-0',
|
|
17
|
+
sm: 'p-5',
|
|
18
|
+
md: 'p-8',
|
|
19
|
+
lg: 'p-10',
|
|
20
|
+
};
|
|
21
|
+
const buttonStyles = {
|
|
22
|
+
primary: 'bg-violet-600 hover:bg-violet-700 text-white shadow-glow hover:shadow-glow-hover',
|
|
23
|
+
secondary: 'bg-white/[0.03] hover:bg-white/[0.08] border border-white/10 text-white',
|
|
24
|
+
outline: 'bg-transparent border border-white/20 hover:bg-white/5 text-gray-300 hover:text-white',
|
|
25
|
+
};
|
|
26
|
+
const cardClasses = cn(variantStyles[variant], paddingStyles[padding], 'rounded-3xl transition-all duration-300 relative h-full flex flex-col', disabled && 'opacity-50 cursor-not-allowed', selected && 'ring-2 ring-violet-500', className);
|
|
27
|
+
const CardContent = (_jsxs("div", { className: cardClasses, children: [recommended && (_jsx("div", { className: "absolute top-0 right-0 left-0 flex justify-center -mt-3", children: _jsx("span", { className: "bg-violet-600 text-[10px] font-bold uppercase tracking-wider text-white px-3 py-1 rounded-full shadow-lg", children: "Recommended" }) })), showCheckbox && (_jsx("div", { className: "absolute top-6 right-6", children: _jsx(Checkbox, { checked: selected, onChange: e => onCheckboxChange?.(e.target.checked), size: "lg" }) })), header && (_jsxs("div", { className: cn('mb-3', recommended && 'mt-2', header.badge && 'mt-3'), children: [header.badge && (_jsx("span", { className: "inline-block bg-violet-600/20 text-violet-400 text-[10px] font-bold uppercase tracking-wider px-2 py-0.5 rounded mb-2", children: header.badge })), header.icon && (_jsx("div", { className: "mb-3 flex items-center justify-center", children: header.icon })), header.title && (_jsx("h3", { className: "text-lg font-semibold text-white mb-1", children: header.title })), header.description && (_jsx("p", { className: "text-xs text-gray-500 leading-relaxed", children: header.description }))] })), price && (_jsx("div", { className: "mb-6", children: _jsxs("div", { className: "flex items-baseline gap-1", children: [_jsx("span", { className: "text-4xl font-bold text-white", children: price.amount }), price.period && (_jsxs("span", { className: "text-gray-400 text-sm", children: ["/", price.period] }))] }) })), specs && specs.length > 0 && (_jsx("div", { className: cn('mb-5 space-y-1.5', showSpecsDivider && 'border-t border-white/5 pt-3'), children: specs.map((spec, index) => (_jsxs("div", { className: "flex justify-between text-[11px] text-gray-400", children: [_jsx("span", { children: spec.label }), _jsx("span", { className: cn(spec.highlighted ? 'text-white font-medium' : 'text-gray-200'), children: spec.value })] }, index))) })), features && features.length > 0 && (_jsxs("div", { className: "flex-grow mb-6", children: [featuresTitle && (_jsx("h4", { className: "text-[10px] font-bold uppercase tracking-wider text-gray-500 mb-4", children: featuresTitle })), _jsx("div", { className: "space-y-3", children: features.map((feature, index) => {
|
|
28
|
+
const textColor = feature.variant === 'disabled'
|
|
29
|
+
? 'text-gray-500'
|
|
30
|
+
: feature.variant === 'highlighted'
|
|
31
|
+
? 'text-gray-200 font-medium'
|
|
32
|
+
: 'text-gray-300';
|
|
33
|
+
return (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-violet-500 flex-shrink-0 text-sm", children: feature.icon }), _jsx("span", { className: cn('text-xs', textColor), children: feature.text })] }, index));
|
|
34
|
+
}) })] })), children && _jsx("div", { className: "flex-grow", children: children }), footer && (_jsxs("div", { className: "mt-auto", children: [footer.buttons && footer.buttons.length > 0 && (_jsx("div", { className: "space-y-2", children: footer.buttons.map((button, index) => (_jsx("button", { type: "button", onClick: button.onClick, disabled: disabled, className: cn('w-full text-sm font-medium py-2.5 rounded-full transition-all duration-200', 'disabled:opacity-50 disabled:cursor-not-allowed', buttonStyles[button.variant || 'outline']), children: button.text }, index))) })), footer.content && _jsx("div", { children: footer.content })] }))] }));
|
|
35
|
+
if (animated) {
|
|
36
|
+
return (_jsx(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.5, delay: animationDelay }, children: CardContent }));
|
|
37
|
+
}
|
|
38
|
+
return CardContent;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=PlanCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanCard.js","sourceRoot":"","sources":["../../../src/components/cards/PlanCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface RunAgentCardProps {
|
|
2
|
+
command: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
onCopy?: (success: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function RunAgentCard({ command, description, title, onCopy, }: RunAgentCardProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=RunAgentCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAgentCard.d.ts","sourceRoot":"","sources":["../../../src/components/cards/RunAgentCard.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,WAA4F,EAC5F,KAAmB,EACnB,MAAM,GACP,EAAE,iBAAiB,2CAqCnB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { LuCopy } from 'react-icons/lu';
|
|
3
|
+
export function RunAgentCard({ command, description = 'Run this command on your local CCTV server to initiate the secure handshake.', title = 'Run agent', onCopy, }) {
|
|
4
|
+
const handleCopy = async () => {
|
|
5
|
+
try {
|
|
6
|
+
await navigator.clipboard.writeText(command);
|
|
7
|
+
onCopy?.(true);
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
onCopy?.(false);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
return (_jsxs("div", { className: "bg-white/[0.03] backdrop-blur-md border border-white/10 rounded-xl p-4 flex flex-col gap-3 h-full", children: [_jsx("h3", { className: "text-xs font-semibold text-violet-200/70 tracking-tight uppercase", children: title }), _jsxs("div", { className: "flex-grow flex flex-col justify-start", children: [_jsxs("div", { className: "w-full bg-[#050508] border border-white/10 rounded-lg p-3 flex items-center justify-between group-hover:border-violet-500/30 transition-colors overflow-hidden", children: [_jsx("code", { className: "text-xs text-gray-300 font-mono whitespace-nowrap overflow-x-auto pb-1 -mb-1 scrollbar-hide mr-2", children: command }), _jsx("div", { className: "bg-[#050508] pl-2 sticky right-0", children: _jsx("button", { type: "button", onClick: handleCopy, className: "text-gray-500 hover:text-white transition-colors", "aria-label": "Copy command to clipboard", children: _jsx(LuCopy, { className: "text-[14px]" }) }) })] }), _jsx("p", { className: "text-[10px] text-gray-600 mt-2 leading-tight", children: description })] })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=RunAgentCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAgentCard.js","sourceRoot":"","sources":["../../../src/components/cards/RunAgentCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AASxC,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,WAAW,GAAG,8EAA8E,EAC5F,KAAK,GAAG,WAAW,EACnB,MAAM,GACY;IAClB,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,mGAAmG,aAChH,aAAI,SAAS,EAAC,mEAAmE,YAC9E,KAAK,GACH,EACL,eAAK,SAAS,EAAC,uCAAuC,aACpD,eAAK,SAAS,EAAC,gKAAgK,aAC7K,eAAM,SAAS,EAAC,kGAAkG,YAC/G,OAAO,GACH,EACP,cAAK,SAAS,EAAC,kCAAkC,YAC/C,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,kDAAkD,gBACjD,2BAA2B,YAEtC,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,GAAG,GAC3B,GACL,IACF,EACN,YAAG,SAAS,EAAC,8CAA8C,YACxD,WAAW,GACV,IACA,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface SyncStatusCardProps {
|
|
2
|
+
lastSync?: string;
|
|
3
|
+
mentions?: number;
|
|
4
|
+
status?: 'ready' | 'syncing' | 'error';
|
|
5
|
+
}
|
|
6
|
+
export declare function SyncStatusCard({ lastSync, mentions, status, }: SyncStatusCardProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=SyncStatusCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncStatusCard.d.ts","sourceRoot":"","sources":["../../../src/components/cards/SyncStatusCard.tsx"],"names":[],"mappings":"AAAA,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CACxC;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAsB,EACtB,QAAe,EACf,MAAgB,GACjB,EAAE,mBAAmB,2CAkDrB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function SyncStatusCard({ lastSync = '2 min ago', mentions = 1284, status = 'ready', }) {
|
|
3
|
+
const statusConfig = {
|
|
4
|
+
ready: {
|
|
5
|
+
label: 'SYNC READY',
|
|
6
|
+
color: 'bg-violet-400',
|
|
7
|
+
borderColor: 'border-violet-500/30',
|
|
8
|
+
bgColor: 'bg-violet-500/5',
|
|
9
|
+
textColor: 'text-violet-300',
|
|
10
|
+
},
|
|
11
|
+
syncing: {
|
|
12
|
+
label: 'SYNCING',
|
|
13
|
+
color: 'bg-blue-400',
|
|
14
|
+
borderColor: 'border-blue-500/30',
|
|
15
|
+
bgColor: 'bg-blue-500/5',
|
|
16
|
+
textColor: 'text-blue-300',
|
|
17
|
+
},
|
|
18
|
+
error: {
|
|
19
|
+
label: 'ERROR',
|
|
20
|
+
color: 'bg-red-400',
|
|
21
|
+
borderColor: 'border-red-500/30',
|
|
22
|
+
bgColor: 'bg-red-500/5',
|
|
23
|
+
textColor: 'text-red-300',
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const currentStatus = statusConfig[status];
|
|
27
|
+
return (_jsxs("div", { className: "mt-auto bg-[#0a0a0f]/60 rounded-xl p-3 border border-white/5 flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center justify-between text-[11px] text-gray-400", children: [_jsxs("span", { children: ["Last sync: ", _jsx("span", { className: "text-gray-300", children: lastSync })] }), _jsxs("span", { children: ["Mentions:", ' ', _jsx("span", { className: "text-gray-300", children: mentions.toLocaleString() })] })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsxs("div", { className: `px-2 py-0.5 rounded-full border ${currentStatus.borderColor} text-[10px] font-bold tracking-wider ${currentStatus.textColor} uppercase ${currentStatus.bgColor} flex items-center gap-1.5`, children: [_jsx("div", { className: `w-1.5 h-1.5 rounded-full ${currentStatus.color} shadow-[0_0_5px_rgba(167,139,250,0.5)]` }), currentStatus.label] }) })] }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=SyncStatusCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncStatusCard.js","sourceRoot":"","sources":["../../../src/components/cards/SyncStatusCard.tsx"],"names":[],"mappings":";AAMA,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,GAAG,WAAW,EACtB,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,OAAO,GACI;IACpB,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE;YACL,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,iBAAiB;SAC7B;QACD,OAAO,EAAE;YACP,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,eAAe;SAC3B;QACD,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,cAAc;SAC1B;KACF,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,CACL,eAAK,SAAS,EAAC,kFAAkF,aAC/F,eAAK,SAAS,EAAC,6DAA6D,aAC1E,0CACa,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAQ,IACvD,EACP,wCACY,GAAG,EACb,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,CAAC,cAAc,EAAE,GAAQ,IAC7D,IACH,EACN,cAAK,SAAS,EAAC,yBAAyB,YACtC,eACE,SAAS,EAAE,mCAAmC,aAAa,CAAC,WAAW,yCAAyC,aAAa,CAAC,SAAS,cAAc,aAAa,CAAC,OAAO,4BAA4B,aAEtM,cACE,SAAS,EAAE,4BAA4B,aAAa,CAAC,KAAK,yCAAyC,GAC9F,EACN,aAAa,CAAC,KAAK,IAChB,GACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ChatHistoryItem, ChatHistorySectionProps } from './types';
|
|
2
|
+
export type { ChatHistoryItem, ChatHistorySectionProps };
|
|
3
|
+
export declare function ChatHistorySection({ items, activeItemId, isExpanded, isVisible, onItemClick, onToggleExpanded, onRename, onDelete, title, emptyMessage, }: ChatHistorySectionProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
|
+
//# sourceMappingURL=ChatHistorySection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatHistorySection.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/ChatHistorySection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAExE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AAEzD,wBAAgB,kBAAkB,CAAC,EACjC,KAAU,EACV,YAAY,EACZ,UAAiB,EACjB,SAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,KAAsB,EACtB,YAAoD,GACrD,EAAE,uBAAuB,kDAkQzB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { ChevronDown, MoreHorizontal, Pencil, Trash2 } from 'lucide-react';
|
|
5
|
+
export function ChatHistorySection({ items = [], activeItemId, isExpanded = true, isVisible = true, onItemClick, onToggleExpanded, onRename, onDelete, title = 'Chat History', emptyMessage = 'No chats yet. Start a conversation!', }) {
|
|
6
|
+
// Track newly added item for animation
|
|
7
|
+
const [newItemId, setNewItemId] = useState(null);
|
|
8
|
+
const [canAnimate, setCanAnimate] = useState(false);
|
|
9
|
+
const [openMenuId, setOpenMenuId] = useState(null);
|
|
10
|
+
const [editingId, setEditingId] = useState(null);
|
|
11
|
+
const [editValue, setEditValue] = useState('');
|
|
12
|
+
const menuRef = useRef(null);
|
|
13
|
+
const inputRef = useRef(null);
|
|
14
|
+
// Track all seen item IDs to avoid re-animating
|
|
15
|
+
const seenItemsRef = useRef(new Set());
|
|
16
|
+
// Enable animations only after initial load settles (prevents animation on refresh)
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
// Mark all current items as seen immediately
|
|
19
|
+
for (const item of items) {
|
|
20
|
+
seenItemsRef.current.add(item.id);
|
|
21
|
+
}
|
|
22
|
+
// Wait before enabling animations for new items
|
|
23
|
+
const timer = setTimeout(() => {
|
|
24
|
+
setCanAnimate(true);
|
|
25
|
+
}, 600);
|
|
26
|
+
return () => clearTimeout(timer);
|
|
27
|
+
}, []); // Only run once on mount
|
|
28
|
+
// Detect truly new items only after animation is enabled
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (!canAnimate) {
|
|
31
|
+
// Still track items as seen even before animation is enabled
|
|
32
|
+
for (const item of items) {
|
|
33
|
+
seenItemsRef.current.add(item.id);
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const seenItems = seenItemsRef.current;
|
|
38
|
+
const firstItem = items[0];
|
|
39
|
+
// Check if the first item is new (not seen before)
|
|
40
|
+
if (firstItem && !seenItems.has(firstItem.id)) {
|
|
41
|
+
setNewItemId(firstItem.id);
|
|
42
|
+
seenItems.add(firstItem.id);
|
|
43
|
+
const timer = setTimeout(() => setNewItemId(null), 350);
|
|
44
|
+
return () => clearTimeout(timer);
|
|
45
|
+
}
|
|
46
|
+
// Add any other new items to seen set (without animating)
|
|
47
|
+
for (const item of items) {
|
|
48
|
+
seenItems.add(item.id);
|
|
49
|
+
}
|
|
50
|
+
}, [items, canAnimate]);
|
|
51
|
+
// Close menu when clicking outside
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (!openMenuId)
|
|
54
|
+
return;
|
|
55
|
+
const handleClickOutside = (e) => {
|
|
56
|
+
if (menuRef.current && !menuRef.current.contains(e.target)) {
|
|
57
|
+
setOpenMenuId(null);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
61
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
62
|
+
}, [openMenuId]);
|
|
63
|
+
// Focus input when entering edit mode
|
|
64
|
+
useEffect(() => {
|
|
65
|
+
if (editingId && inputRef.current) {
|
|
66
|
+
inputRef.current.focus();
|
|
67
|
+
inputRef.current.select();
|
|
68
|
+
}
|
|
69
|
+
}, [editingId]);
|
|
70
|
+
const handleMenuClick = (e, itemId) => {
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
setOpenMenuId(openMenuId === itemId ? null : itemId);
|
|
73
|
+
};
|
|
74
|
+
const handleRenameStart = (item) => {
|
|
75
|
+
setEditingId(item.id);
|
|
76
|
+
setEditValue(item.title);
|
|
77
|
+
setOpenMenuId(null);
|
|
78
|
+
};
|
|
79
|
+
const handleRenameSubmit = () => {
|
|
80
|
+
if (editingId && editValue.trim()) {
|
|
81
|
+
onRename?.(editingId, editValue.trim());
|
|
82
|
+
}
|
|
83
|
+
setEditingId(null);
|
|
84
|
+
setEditValue('');
|
|
85
|
+
};
|
|
86
|
+
const handleRenameKeyDown = (e) => {
|
|
87
|
+
if (e.key === 'Enter') {
|
|
88
|
+
handleRenameSubmit();
|
|
89
|
+
}
|
|
90
|
+
else if (e.key === 'Escape') {
|
|
91
|
+
setEditingId(null);
|
|
92
|
+
setEditValue('');
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const handleDelete = (id) => {
|
|
96
|
+
setOpenMenuId(null);
|
|
97
|
+
onDelete?.(id);
|
|
98
|
+
};
|
|
99
|
+
if (!isVisible)
|
|
100
|
+
return null;
|
|
101
|
+
return (_jsxs("div", { className: "px-4 mt-4 transition-opacity duration-300 ease-in-out", style: { opacity: isVisible ? 1 : 0 }, children: [_jsxs("button", { type: "button", onClick: onToggleExpanded, className: "flex items-center justify-between w-full group", children: [_jsx("span", { className: "text-[13px] font-normal", style: { color: '#9CA3AF', lineHeight: '21px' }, children: title }), _jsx(ChevronDown, { size: 16, className: "text-[#4B5563] transition-transform duration-200", style: {
|
|
102
|
+
transform: isExpanded ? 'rotate(0deg)' : 'rotate(-90deg)',
|
|
103
|
+
} })] }), _jsx("div", { className: "overflow-hidden transition-all duration-300 ease-in-out", style: {
|
|
104
|
+
maxHeight: isExpanded ? `${Math.max(items.length * 42 + 16, 60)}px` : '0px',
|
|
105
|
+
opacity: isExpanded ? 1 : 0,
|
|
106
|
+
}, children: _jsx("div", { className: "mt-2 flex flex-col gap-1", children: items.length === 0 ? (_jsx("p", { className: "text-[12px] italic py-2", style: { color: '#6B7280' }, children: emptyMessage })) : (items.map((item) => {
|
|
107
|
+
const isActive = item.id === activeItemId;
|
|
108
|
+
const isNew = item.id === newItemId;
|
|
109
|
+
const isEditing = editingId === item.id;
|
|
110
|
+
const isMenuOpen = openMenuId === item.id;
|
|
111
|
+
return (_jsxs("div", { className: "relative", ref: isMenuOpen ? menuRef : undefined, children: [_jsxs("button", { type: "button", onClick: () => !isEditing && onItemClick?.(item.id), className: "group relative flex items-center justify-between w-full rounded-lg transition-all duration-200 hover:bg-white/5", style: {
|
|
112
|
+
height: 37,
|
|
113
|
+
background: isActive ? 'rgba(255, 255, 255, 0.08)' : 'transparent',
|
|
114
|
+
boxShadow: isActive
|
|
115
|
+
? '0px 1px 0px 1px rgba(255, 255, 255, 0.05) inset'
|
|
116
|
+
: 'none',
|
|
117
|
+
outline: isActive ? '1px rgba(255, 255, 255, 0.05) solid' : 'none',
|
|
118
|
+
outlineOffset: '-1px',
|
|
119
|
+
animation: isNew ? 'chatHistorySlideIn 0.3s ease-out forwards' : 'none',
|
|
120
|
+
}, children: [isEditing ? (_jsx("input", { ref: inputRef, type: "text", value: editValue, onChange: (e) => setEditValue(e.target.value), onBlur: handleRenameSubmit, onKeyDown: handleRenameKeyDown, className: "text-[13px] font-bold bg-transparent border-none outline-none pl-3 pr-8 w-full", style: { color: '#E6E6E6', lineHeight: '21px' }, onClick: (e) => e.stopPropagation() })) : (_jsx("span", { className: "text-[13px] font-bold truncate pl-3 pr-8 text-left", style: { color: '#E6E6E6', lineHeight: '21px', maxWidth: 198 }, children: item.title })), isActive && !isEditing && (_jsx("div", { className: "absolute right-2 flex items-center justify-center w-[19px] h-[19px] cursor-pointer hover:bg-white/10 rounded", onClick: (e) => handleMenuClick(e, item.id), children: _jsx(MoreHorizontal, { size: 14, className: "text-white" }) }))] }), isMenuOpen && (_jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 min-w-[140px] rounded-lg overflow-hidden", style: {
|
|
121
|
+
background: 'rgba(30, 30, 30, 0.95)',
|
|
122
|
+
border: '1px solid rgba(255, 255, 255, 0.1)',
|
|
123
|
+
boxShadow: '0 4px 12px rgba(0, 0, 0, 0.5)',
|
|
124
|
+
}, children: [_jsxs("button", { type: "button", onClick: () => handleRenameStart(item), className: "flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-white/10 transition-colors", children: [_jsx(Pencil, { size: 14, className: "text-gray-400" }), _jsx("span", { className: "text-[13px] text-gray-200", children: "Rename" })] }), _jsxs("button", { type: "button", onClick: () => handleDelete(item.id), className: "flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-red-500/20 transition-colors", children: [_jsx(Trash2, { size: 14, className: "text-red-400" }), _jsx("span", { className: "text-[13px] text-red-400", children: "Delete" })] })] }))] }, item.id));
|
|
125
|
+
})) }) }), _jsx("style", { children: `
|
|
126
|
+
@keyframes chatHistorySlideIn {
|
|
127
|
+
from {
|
|
128
|
+
opacity: 0;
|
|
129
|
+
transform: translateX(-20px);
|
|
130
|
+
}
|
|
131
|
+
to {
|
|
132
|
+
opacity: 1;
|
|
133
|
+
transform: translateX(0);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
` })] }));
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=ChatHistorySection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatHistorySection.js","sourceRoot":"","sources":["../../../src/components/dashboard/ChatHistorySection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DashboardBackgroundProps } from './types';
|
|
2
|
+
export type { DashboardBackgroundProps };
|
|
3
|
+
export declare function DashboardBackground({ variant, noiseTextureSrc, }: DashboardBackgroundProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=DashboardBackground.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardBackground.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/DashboardBackground.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAExD,YAAY,EAAE,wBAAwB,EAAE,CAAC;AAOzC,wBAAgB,mBAAmB,CAAC,EAClC,OAAmB,EACnB,eAAuC,GACxC,EAAE,wBAAwB,2CA0H1B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
const DEFAULT_NOISE_TEXTURE = 'https://api.builder.io/api/v1/image/assets/TEMP/01cf5743ccbc8becbbc870a231ecce44d240df94?width=3840';
|
|
4
|
+
// Sidebar width for centering calculations
|
|
5
|
+
const SIDEBAR_WIDTH = 280;
|
|
6
|
+
export function DashboardBackground({ variant = 'default', noiseTextureSrc = DEFAULT_NOISE_TEXTURE, }) {
|
|
7
|
+
if (variant === 'minimal') {
|
|
8
|
+
return (_jsx("div", { style: { position: 'fixed', inset: 0, pointerEvents: 'none', zIndex: 0 }, children: _jsx("div", { style: { position: 'absolute', inset: 0, background: '#030005' } }) }));
|
|
9
|
+
}
|
|
10
|
+
return (_jsxs("div", { style: { position: 'fixed', inset: 0, pointerEvents: 'none', zIndex: 0, overflow: 'hidden' }, children: [_jsx("style", { children: `
|
|
11
|
+
@keyframes riseFromBelow {
|
|
12
|
+
0% {
|
|
13
|
+
opacity: 0;
|
|
14
|
+
transform: translate(-50%, 100%);
|
|
15
|
+
}
|
|
16
|
+
100% {
|
|
17
|
+
opacity: 1;
|
|
18
|
+
transform: translate(-50%, 85%);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@keyframes fadeInHalf {
|
|
23
|
+
0% { opacity: 0; }
|
|
24
|
+
100% { opacity: 0.5; }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@keyframes fadeIn {
|
|
28
|
+
0% { opacity: 0; }
|
|
29
|
+
100% { opacity: 1; }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.dashboard-bg-blob {
|
|
33
|
+
left: 50%;
|
|
34
|
+
transform: translate(-50%, 85%);
|
|
35
|
+
animation: riseFromBelow 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.dashboard-bg-gradient {
|
|
39
|
+
animation: fadeInHalf 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
40
|
+
opacity: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dashboard-bg-vignette {
|
|
44
|
+
animation: fadeIn 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
45
|
+
opacity: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@media (min-width: 768px) {
|
|
49
|
+
.dashboard-bg-blob {
|
|
50
|
+
left: calc(50% + ${SIDEBAR_WIDTH / 2}px);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
` }), _jsx("div", { style: {
|
|
54
|
+
position: 'absolute',
|
|
55
|
+
inset: 0,
|
|
56
|
+
background: '#030005',
|
|
57
|
+
} }), _jsx("div", { className: "dashboard-bg-gradient", style: {
|
|
58
|
+
position: 'absolute',
|
|
59
|
+
top: 0,
|
|
60
|
+
bottom: 0,
|
|
61
|
+
right: 0,
|
|
62
|
+
left: `calc(${SIDEBAR_WIDTH}px + 25%)`,
|
|
63
|
+
background: 'linear-gradient(270deg, #1E1035 0%, #0A0515 50%, rgba(10, 5, 21, 0) 100%)',
|
|
64
|
+
} }), _jsx("img", { src: noiseTextureSrc, alt: "", role: "presentation", style: {
|
|
65
|
+
position: 'absolute',
|
|
66
|
+
inset: 0,
|
|
67
|
+
width: '100%',
|
|
68
|
+
height: '100%',
|
|
69
|
+
opacity: 0.07,
|
|
70
|
+
mixBlendMode: 'overlay',
|
|
71
|
+
objectFit: 'cover',
|
|
72
|
+
} }), _jsx("div", { className: "dashboard-bg-vignette", style: {
|
|
73
|
+
position: 'absolute',
|
|
74
|
+
inset: 0,
|
|
75
|
+
background: `radial-gradient(ellipse 55% 90% at calc(50% + ${SIDEBAR_WIDTH / 2}px) 50%, rgba(3, 0, 5, 0) 0%, rgba(3, 0, 5, 0.50) 100%)`,
|
|
76
|
+
} }), _jsx("div", { className: "dashboard-bg-blob", style: {
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
width: 950,
|
|
79
|
+
height: 450,
|
|
80
|
+
bottom: 0,
|
|
81
|
+
background: 'rgba(133, 78, 210, 0.45)',
|
|
82
|
+
filter: 'blur(150px)',
|
|
83
|
+
} })] }));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=DashboardBackground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardBackground.js","sourceRoot":"","sources":["../../../src/components/dashboard/DashboardBackground.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAMb,MAAM,qBAAqB,GAAG,qGAAqG,CAAC;AAEpI,2CAA2C;AAC3C,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,GAAG,SAAS,EACnB,eAAe,GAAG,qBAAqB,GACd;IACzB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAC3E,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAI,GACrE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAG/F,0BACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAwCwB,aAAa,GAAG,CAAC;;;SAGzC,GACK,EAGR,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,UAAU,EAAE,SAAS;iBACtB,GACD,EAGF,cACE,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,QAAQ,aAAa,WAAW;oBACtC,UAAU,EAAE,2EAA2E;iBACxF,GACD,EAGF,cACE,GAAG,EAAE,eAAe,EACpB,GAAG,EAAC,EAAE,EACN,IAAI,EAAC,cAAc,EACnB,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,SAAS;oBACvB,SAAS,EAAE,OAAO;iBACnB,GACD,EAGF,cACE,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,CAAC;oBACR,UAAU,EAAE,iDAAiD,aAAa,GAAG,CAAC,yDAAyD;iBACxI,GACD,EAGF,cACE,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,CAAC;oBACT,UAAU,EAAE,0BAA0B;oBACtC,MAAM,EAAE,aAAa;iBACtB,GACD,IACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface FilterOption {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
export interface FilterDropdownProps {
|
|
6
|
+
label: string;
|
|
7
|
+
options: FilterOption[];
|
|
8
|
+
value?: string;
|
|
9
|
+
onChange?: (value: string) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
showBorder?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function FilterDropdown({ label, options, value, onChange, className, showBorder, }: FilterDropdownProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=FilterDropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/FilterDropdown.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAkB,GACnB,EAAE,mBAAmB,2CAsHrB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Check, ChevronDown } from 'lucide-react';
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { createPortal } from 'react-dom';
|
|
6
|
+
import { cn } from '../../lib/utils';
|
|
7
|
+
export function FilterDropdown({ label, options, value, onChange, className, showBorder = false, }) {
|
|
8
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
9
|
+
const [selectedValue, setSelectedValue] = useState(value || options[0]?.value);
|
|
10
|
+
const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0 });
|
|
11
|
+
const buttonRef = useRef(null);
|
|
12
|
+
const dropdownRef = useRef(null);
|
|
13
|
+
const selectedOption = options.find((opt) => opt.value === selectedValue);
|
|
14
|
+
const updatePosition = useCallback(() => {
|
|
15
|
+
if (buttonRef.current) {
|
|
16
|
+
const rect = buttonRef.current.getBoundingClientRect();
|
|
17
|
+
setDropdownPosition({
|
|
18
|
+
top: rect.bottom + 4,
|
|
19
|
+
left: rect.left,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}, []);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
function handleClickOutside(event) {
|
|
25
|
+
const target = event.target;
|
|
26
|
+
if (buttonRef.current &&
|
|
27
|
+
!buttonRef.current.contains(target) &&
|
|
28
|
+
dropdownRef.current &&
|
|
29
|
+
!dropdownRef.current.contains(target)) {
|
|
30
|
+
setIsOpen(false);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
34
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
35
|
+
}, []);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (isOpen) {
|
|
38
|
+
updatePosition();
|
|
39
|
+
window.addEventListener('scroll', updatePosition, true);
|
|
40
|
+
window.addEventListener('resize', updatePosition);
|
|
41
|
+
return () => {
|
|
42
|
+
window.removeEventListener('scroll', updatePosition, true);
|
|
43
|
+
window.removeEventListener('resize', updatePosition);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}, [isOpen, updatePosition]);
|
|
47
|
+
const handleSelect = (optionValue) => {
|
|
48
|
+
setSelectedValue(optionValue);
|
|
49
|
+
onChange?.(optionValue);
|
|
50
|
+
setIsOpen(false);
|
|
51
|
+
};
|
|
52
|
+
const handleToggle = () => {
|
|
53
|
+
if (!isOpen) {
|
|
54
|
+
updatePosition();
|
|
55
|
+
}
|
|
56
|
+
setIsOpen(!isOpen);
|
|
57
|
+
};
|
|
58
|
+
return (_jsxs("div", { className: cn('relative', className), children: [_jsxs("button", { ref: buttonRef, type: "button", onClick: handleToggle, className: cn('h-[34px] px-3 flex items-center gap-2 rounded-lg transition-colors hover:bg-white/5', showBorder && 'border-r border-white/10 rounded-r-none pr-4'), style: { background: isOpen ? 'rgba(255, 255, 255, 0.05)' : 'transparent' }, children: [_jsx("span", { className: "text-xs font-medium text-gray-300", children: selectedOption?.label || label }), _jsx(ChevronDown, { size: 12, className: cn('text-gray-500 transition-transform', isOpen && 'rotate-180') })] }), isOpen &&
|
|
59
|
+
typeof document !== 'undefined' &&
|
|
60
|
+
createPortal(_jsx("div", { ref: dropdownRef, className: "fixed min-w-[160px] py-1 rounded-lg z-[9999]", style: {
|
|
61
|
+
top: dropdownPosition.top,
|
|
62
|
+
left: dropdownPosition.left,
|
|
63
|
+
background: 'rgba(20, 10, 35, 0.98)',
|
|
64
|
+
border: '1px solid rgba(255, 255, 255, 0.10)',
|
|
65
|
+
boxShadow: '0 10px 40px rgba(0, 0, 0, 0.5)',
|
|
66
|
+
}, children: options.map((option) => (_jsxs("button", { type: "button", onClick: () => handleSelect(option.value), className: "w-full px-3 py-2 flex items-center justify-between text-left hover:bg-white/5 transition-colors", children: [_jsx("span", { className: cn('text-xs', selectedValue === option.value ? 'text-white' : 'text-gray-400'), children: option.label }), selectedValue === option.value && _jsx(Check, { size: 12, className: "text-purple-400" })] }, option.value))) }), document.body)] }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=FilterDropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterDropdown.js","sourceRoot":"","sources":["../../../src/components/dashboard/FilterDropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlassPanel.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/GlassPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAiB,EACjB,SAAc,GACf,EAAE,eAAe,2CAUjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
export function GlassPanel({ children, variant = 'light', className = '', }) {
|
|
5
|
+
const baseClasses = 'rounded-xl border';
|
|
6
|
+
const variantClasses = variant === 'light'
|
|
7
|
+
? 'bg-white/[0.02] border-white/[0.06] backdrop-blur-sm'
|
|
8
|
+
: 'border-white/[0.06] bg-white/[0.01]';
|
|
9
|
+
return (_jsx("div", { className: cn(baseClasses, variantClasses, className), children: children }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GlassPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlassPanel.js","sourceRoot":"","sources":["../../../src/components/dashboard/GlassPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAKrC,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,GAAG,OAAO,EACjB,SAAS,GAAG,EAAE,GACE;IAChB,MAAM,WAAW,GAAG,mBAAmB,CAAC;IACxC,MAAM,cAAc,GAClB,OAAO,KAAK,OAAO;QACjB,CAAC,CAAC,sDAAsD;QACxD,CAAC,CAAC,qCAAqC,CAAC;IAE5C,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,YAAG,QAAQ,GAAO,CAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DateRangeOption, HeaderProps } from './types';
|
|
2
|
+
export type { DateRangeOption, HeaderProps };
|
|
3
|
+
export declare function Header({ orgName, dateRange, onDateRangeChange, dateRangeOptions, userInitials, showNotification, onNotificationClick, onAvatarClick, minimal, onMenuClick, logoSrc, }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/Header.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE5D,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAa7C,wBAAgB,MAAM,CAAC,EACrB,OAA6B,EAC7B,SAAyB,EACzB,iBAAiB,EACjB,gBAA0C,EAC1C,YAAmB,EACnB,gBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,OAAe,EACf,WAAW,EACX,OAAO,GACR,EAAE,WAAW,2CAyEb"}
|