@tapizlabs/ui 0.2.7 → 0.2.8

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/icons/BaseIcons.tsx","../src/components/icons/NavigationIcons.tsx","../src/components/icons/ActionIcons.tsx","../src/components/icons/AuthIcons.tsx","../src/components/icons/FeedbackIcons.tsx","../src/components/icons/SettingsIcons.tsx","../src/components/icons/LogoIcons.tsx","../src/components/icons/FormsIcons.tsx","../src/components/icons/StatusIcons.tsx","../src/components/icons/LayoutIcons.tsx","../src/components/forms/Button.tsx","../src/components/feedback/Spinner.tsx","../src/components/forms/Input.tsx","../src/components/forms/Select.tsx","../src/components/forms/Textarea.tsx","../src/components/forms/FieldLabel.tsx","../src/components/forms/FieldHint.tsx","../src/components/forms/Checkbox.tsx","../src/components/forms/RadioButton.tsx","../src/components/feedback/PageSpinner.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/ToastProvider.tsx","../src/components/feedback/FormError.tsx","../src/components/feedback/ErrorBoundary.tsx","../src/components/modals/BaseModal.tsx","../src/components/modals/ConfirmDialog.tsx","../src/components/shared/Tooltip.tsx","../src/components/shared/Card.tsx","../src/components/shared/Skeleton.tsx","../src/components/shared/SkeletonBlocks.tsx","../src/components/shared/Badge.tsx","../src/components/shared/EmptyState.tsx","../src/components/shared/InfoBanner.tsx","../src/components/shared/PageHeader.tsx","../src/components/shared/MetricCard.tsx","../src/components/shared/StatGrid.tsx","../src/components/shared/SectionCard.tsx","../src/components/shared/SearchInput.tsx","../src/components/shared/Pagination.tsx","../src/components/shared/SectionTitle.tsx","../src/components/shared/StatusBadge.tsx","../src/components/shared/ActionMenu.tsx","../src/components/table/DataTable.tsx","../src/components/table/DataTableRow.tsx","../src/components/marketing/MarketingShell.tsx","../src/components/marketing/HeroFrame.tsx","../src/components/marketing/FeatureCard.tsx","../src/components/marketing/FeatureGrid.tsx","../src/components/marketing/CTASection.tsx","../src/components/marketing/MockupFrame.tsx","../src/components/marketing/ComparisonTable.tsx","../src/components/layout/AppShell.tsx","../src/components/layout/SplitPane.tsx","../src/components/layout/Stack.tsx","../src/components/layout/Cluster.tsx","../src/components/navigation/Breadcrumbs.tsx","../src/components/navigation/SidebarNav.tsx","../src/components/navigation/TopNav.tsx","../src/components/disclosure/Tabs.tsx","../src/components/disclosure/Accordion.tsx","../src/components/disclosure/Stepper.tsx","../src/components/overlays/Drawer.tsx","../src/components/overlays/Popover.tsx","../src/components/overlays/CommandMenu.tsx","../src/components/forms/FormField.tsx","../src/components/forms/Switch.tsx","../src/components/forms/ToggleGroup.tsx","../src/components/forms/InputGroup.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Progress.tsx","../src/components/shared/Avatar.tsx","../src/components/shared/Kbd.tsx","../src/components/shared/Timeline.tsx","../src/components/shared/KeyValueList.tsx","../src/components/shared/CodeBlock.tsx","../src/components/marketing/LogoCloud.tsx","../src/components/marketing/TestimonialCard.tsx","../src/components/marketing/PricingCard.tsx","../src/components/marketing/StatsBand.tsx","../src/presets/framework.ts","../src/components/layout/Container.tsx","../src/components/layout/Surface.tsx","../src/components/layout/Divider.tsx","../src/components/layout/ResponsiveGrid.tsx","../src/components/data-display/Sparkline.tsx","../src/components/data-display/BarList.tsx","../src/components/data-display/DonutMetric.tsx","../src/components/data-display/FilterChip.tsx","../src/components/data-display/DataToolbar.tsx","../src/components/framework/ResourceCard.tsx","../src/components/framework/IntegrationCard.tsx","../src/components/framework/HealthIndicator.tsx","../src/components/framework/AuditLog.tsx","../src/components/framework/KanbanBoard.tsx","../src/components/framework/AccessMatrix.tsx","../src/components/framework/CalendarGrid.tsx","../src/components/forms/Slider.tsx","../src/components/forms/FileDropzone.tsx","../src/components/forms/PasswordInput.tsx","../src/components/forms/TextareaCounter.tsx","../src/components/feedback/Callout.tsx","../src/components/feedback/LoadingOverlay.tsx","../src/components/feedback/NotificationList.tsx","../src/components/layout/MasonryGrid.tsx","../src/components/layout/PageRail.tsx","../src/components/layout/StickyBar.tsx","../src/components/forms/Combobox.tsx","../src/components/forms/DateRangePicker.tsx","../src/components/forms/ColorSwatchPicker.tsx","../src/components/forms/RatingInput.tsx","../src/components/data-display/ScoreRing.tsx","../src/components/data-display/HeatmapGrid.tsx","../src/components/data-display/FunnelChart.tsx","../src/components/data-display/ComparisonMeter.tsx","../src/components/framework/ActivityFeed.tsx","../src/components/framework/InboxList.tsx","../src/components/framework/ApprovalQueue.tsx","../src/components/framework/SLAStatus.tsx","../src/components/framework/FeatureFlagTable.tsx","../src/components/framework/PlanUsage.tsx","../src/components/marketing/AnnouncementBar.tsx","../src/components/marketing/FAQSection.tsx","../src/components/marketing/RoadmapList.tsx","../src/components/feedback/InlineStatus.tsx"],"sourcesContent":["import type React from \"react\";\r\n\r\nexport interface IconProps {\r\n size?: number;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const base = (_d: unknown, size: number, style?: React.CSSProperties) => ({\r\n width: size,\r\n height: size,\r\n viewBox: \"0 0 24 24\",\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeWidth: 1.75,\r\n strokeLinecap: \"round\" as const,\r\n strokeLinejoin: \"round\" as const,\r\n style,\r\n});\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Clipboard = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" />\r\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\r\n <path d=\"M12 11h4M12 16h4M8 11h.01M8 16h.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Home = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\r\n <polyline points=\"9 22 9 12 15 12 15 22\" />\r\n </svg>\r\n);\r\n\r\nexport const Scan = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2\" />\r\n <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\" />\r\n </svg>\r\n);\r\n\r\nexport const Users = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\" />\r\n </svg>\r\n);\r\n\r\nexport const Book = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\" />\r\n <path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\" />\r\n </svg>\r\n);\r\n\r\nexport const Calendar = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n </svg>\r\n);\r\n\r\nexport const CheckSquare = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"9 11 12 14 22 4\" />\r\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\r\n </svg>\r\n);\r\n\r\nexport const BarChart = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\r\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\r\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\r\n <line x1=\"2\" y1=\"20\" x2=\"22\" y2=\"20\" />\r\n </svg>\r\n);\r\n\r\nexport const Table = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M3 9h18M9 21V9\" />\r\n </svg>\r\n);\r\n\r\nexport const Report = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\r\n <polyline points=\"10 9 9 9 8 9\" />\r\n </svg>\r\n);\r\n\r\nexport const QrCode = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\r\n <path d=\"M14 14h3v3h-3zM17 17h3v3h-3zM14 17h3\" />\r\n </svg>\r\n);\r\n\r\nexport const Layers = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\r\n <polyline points=\"2 12 12 17 22 12\" />\r\n <polyline points=\"2 17 12 22 22 17\" />\r\n </svg>\r\n);\r\n\r\nexport const OfficeHours = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M8 3h8\" />\r\n <path d=\"M9 2v2M15 2v2\" />\r\n <rect x=\"4\" y=\"5\" width=\"16\" height=\"15\" rx=\"2\" />\r\n <path d=\"M4 10h16\" />\r\n <path d=\"M12 13v4\" />\r\n <path d=\"M12 13l2.5-1.5\" />\r\n </svg>\r\n);\r\n\r\nexport const FileUpload = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <polyline points=\"12 18 12 12\" />\r\n <polyline points=\"9 15 12 12 15 15\" />\r\n </svg>\r\n);\r\n\r\nexport const University = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M12 3l9 3H3l9-3z\" />\r\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\r\n <line x1=\"5\" y1=\"6\" x2=\"5\" y2=\"18\" />\r\n <line x1=\"10\" y1=\"6\" x2=\"10\" y2=\"18\" />\r\n <line x1=\"14\" y1=\"6\" x2=\"14\" y2=\"18\" />\r\n <line x1=\"19\" y1=\"6\" x2=\"19\" y2=\"18\" />\r\n <line x1=\"2\" y1=\"18\" x2=\"22\" y2=\"18\" />\r\n <line x1=\"2\" y1=\"21\" x2=\"22\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const Faculty = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.5}>\r\n {/* central tower */}\r\n <rect x=\"7\" y=\"2\" width=\"10\" height=\"19\" />\r\n {/* left wing */}\r\n <rect x=\"2\" y=\"8\" width=\"5\" height=\"13\" />\r\n {/* right wing */}\r\n <rect x=\"17\" y=\"8\" width=\"5\" height=\"13\" />\r\n {/* tower windows row 1 */}\r\n <rect x=\"9\" y=\"4\" width=\"2.5\" height=\"2.5\" />\r\n <rect x=\"12.5\" y=\"4\" width=\"2.5\" height=\"2.5\" />\r\n {/* tower windows row 2 */}\r\n <rect x=\"9\" y=\"8\" width=\"2.5\" height=\"2.5\" />\r\n <rect x=\"12.5\" y=\"8\" width=\"2.5\" height=\"2.5\" />\r\n {/* entrance */}\r\n <rect x=\"10\" y=\"15\" width=\"4\" height=\"6\" />\r\n {/* base line */}\r\n <line x1=\"1\" y1=\"21\" x2=\"23\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const GraduationCap = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M22 10v6M2 10l10-5 10 5-10 5z\" />\r\n <path d=\"M6 12v5c0 1.657 2.686 3 6 3s6-1.343 6-3v-5\" />\r\n </svg>\r\n);\r\n\r\nexport const Globe = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\" />\r\n </svg>\r\n);\r\n\r\nexport const CreditCard = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\r\n <path d=\"M2 10h20\" />\r\n </svg>\r\n);\r\n\r\nexport const HelpCircle = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\r\n <circle cx=\"12\" cy=\"17\" r=\".5\" fill=\"currentColor\" stroke=\"none\" />\r\n </svg>\r\n);\r\n\r\nexport const NavQrAttendance = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"5.5\" y=\"5.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"16.5\" y=\"5.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"5.5\" y=\"16.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <polyline points=\"14,16 16,18 20,13\" />\r\n </svg>\r\n);\r\n\r\nexport const NavScoresheet = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.3}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M3 9h18M3 14h18M9 9v9M15 9v9\" />\r\n </svg>\r\n);\r\n\r\nexport const NavAnalytics = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <path d=\"M3 3v18h18\" /><path d=\"M7 16l4-5 4 3 5-6\" />\r\n </svg>\r\n);\r\n\r\nexport const NavSecurity = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <path d=\"M12 2L4 6v6c0 5.25 3.5 9.74 8 11 4.5-1.26 8-5.75 8-11V6L12 2Z\" />\r\n <path d=\"M9 12l2 2 4-4\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Edit = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\r\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\r\n </svg>\r\n);\r\n\r\nexport const Trash = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"3 6 5 6 21 6\" />\r\n <path d=\"M19 6l-1 14H6L5 6M10 11v6M14 11v6M9 6V4h6v2\" />\r\n </svg>\r\n);\r\n\r\nexport const Plus = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n);\r\n\r\nexport const Download = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n <polyline points=\"7 10 12 15 17 10\" />\r\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const Refresh = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\r\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n </svg>\r\n);\r\n\r\nexport const UserPlus = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\r\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\r\n </svg>\r\n);\r\n\r\nexport const UserMinus = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\r\n </svg>\r\n);\r\n\r\nexport const UserCog = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <circle cx=\"19\" cy=\"19\" r=\"2\" />\r\n <path d=\"M19 15v2M19 21v2M15.27 16.27l1.42 1.42M22.31 21.31l-1.42-1.42M15 19h2M21 19h2M15.27 21.73l1.42-1.42M22.31 16.69l-1.42 1.42\" />\r\n </svg>\r\n);\r\n\r\nexport const Check = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n);\r\n\r\nexport const X = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2.5} className={className}>\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\n\r\nexport const Menu = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" /><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\nexport const Grid = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />\r\n </svg>\r\n);\r\n\r\nexport const GitCompare = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M18 21l4-4-4-4\" />\r\n <path d=\"M6 21l-4-4 4-4\" />\r\n <path d=\"M14 3l4 4-4 4\" />\r\n <path d=\"M2 21V3a2 2 0 0 1 2-2h6\" />\r\n <path d=\"M22 21V7a2 2 0 0 0-2-2h-6\" />\r\n </svg>\r\n);\r\nexport const History = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n <path d=\"M12 7v5l4 2\" />\r\n </svg>\r\n);\r\n\r\nexport const RotateCcw = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n </svg>\r\n);\r\n\r\nexport const Pdf = ({ size = 14, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 1920 1920\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <g fillRule=\"evenodd\">\r\n <path d=\"M1251.654 0c44.499 0 88.207 18.07 119.718 49.581l329.223 329.224c31.963 31.962 49.581 74.54 49.581 119.717V1920H169V0Zm-66.183 112.941H281.94V1807.06h1355.294V564.706H1185.47V112.94Zm112.94 23.379v315.445h315.445L1298.412 136.32Z\"/>\r\n <path d=\"M900.497 677.67c26.767 0 50.372 12.65 67.991 37.835 41.901 59.068 38.965 121.976 23.492 206.682-5.308 29.14.113 58.617 16.263 83.125 22.814 34.786 55.68 82.673 87.981 123.219 23.718 29.93 60.198 45.854 97.13 40.885 23.718-3.276 52.292-5.986 81.656-5.986 131.012 0 121.186 46.757 133.045 89.675 6.55 25.976 3.275 48.678-10.165 65.506-16.715 22.701-51.162 34.447-101.534 34.447-55.793 0-74.202-9.487-122.767-24.96-27.445-8.81-55.906-10.617-83.69-3.275-55.453 14.456-146.936 36.48-223.284 46.983-40.772 5.647-77.816 26.654-102.438 60.875-55.454 76.8-106.842 148.518-188.273 148.518-21.007 0-40.32-7.567-56.244-22.701-23.492-23.492-33.544-49.581-28.574-79.85 13.778-92.95 128.075-144.79 196.066-182.625 16.037-8.923 28.687-22.589 36.592-39.53l107.86-233.223c7.68-16.377 10.051-34.56 7.228-52.518-12.537-79.059-31.06-211.99 18.748-272.075 10.955-13.44 26.09-21.007 42.917-21.007Zm20.556 339.953c-43.257 126.607-119.718 264.282-129.996 280.32 92.273-43.37 275.916-65.28 275.916-65.28-92.386-88.998-145.92-215.04-145.92-215.04Z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport const Printer = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M6 9V3h12v6\" />\r\n <path d=\"M6 21h12v-6H6v6z\" />\r\n <path d=\"M18 9H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2z\" />\r\n <circle cx=\"17\" cy=\"13\" r=\"1\" />\r\n <path d=\"M8 13h3\" />\r\n </svg>\r\n);\r\n\r\nexport const ExternalLink = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\r\n <polyline points=\"15 3 21 3 21 9\" />\r\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const Image = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\r\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\r\n <polyline points=\"21 15 16 10 5 21\" />\r\n </svg>\r\n);\r\n\r\nexport const Star = ({ size = 14, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" />\r\n </svg>\r\n);\r\n\r\nexport const AppleIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 814 1000\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76 0-103.7 40.8-165.9 40.8s-105-38.8-155.8-103.2C115.1 757.2 61.9 645.7 61.9 540.4c0-168.3 109.8-257.3 217.3-257.3 59.7 0 109.7 39.9 147.6 39.9 36 0 92.8-42.3 158.8-42.3 25.7 0 108.2 2.6 168.3 78.2zm-104.5-166.2c31.4-37.9 54.3-91.1 54.3-144.3 0-7.1-.6-14.3-1.9-20.1-51.5 1.9-112.4 34.3-149.6 77.2-28.8 32.1-55.8 85.9-55.8 140.3 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 46.5 0 102.8-31.4 137.5-72.5z\" />\r\n </svg>\r\n);\r\n\r\nexport const GooglePlayIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 512 512\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l2.4 1.4 247.2-247v-5.8L47 0zm425.6 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c17.1-9.8 17.1-25.9.8-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Mail = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\r\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\r\n </svg>\r\n);\r\n\r\nexport const LockIcon = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\r\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\r\n </svg>\r\n);\r\n\r\nexport const TwoFAIcon = ({ size = 16, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n {/* Smartphone */}\r\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n {/* Key overlay */}\r\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" />\r\n <line x1=\"11\" y1=\"10\" x2=\"16\" y2=\"10\" />\r\n <line x1=\"13\" y1=\"7.5\" x2=\"13\" y2=\"6\" />\r\n <line x1=\"15\" y1=\"8.5\" x2=\"15\" y2=\"7.5\" />\r\n </svg>\r\n);\r\n\r\nexport const FingerprintIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\r\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\r\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\r\n <path d=\"M2 12a10 10 0 0 1 18-6\" />\r\n <path d=\"M2 16h.01\" />\r\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\r\n <path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" />\r\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\r\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\" />\r\n </svg>\r\n);\r\n\r\nexport const Eye = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const EyeOff = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a18.45 18.45 0 0 1 5.06-5.94\" />\r\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a18.5 18.5 0 0 1-2.16 3.19\" />\r\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\r\n </svg>\r\n);\r\n\r\nexport const User = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n);\r\n\r\nexport const UserCheck = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <polyline points=\"16 11 18 13 22 9\" />\r\n </svg>\r\n);\r\n\r\nexport const Hash = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\" />\r\n <line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\" />\r\n <line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\" />\r\n <line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const LogOut = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.75\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"15\" y1=\"12\" x2=\"5\" y2=\"12\" />\r\n <polyline points=\"9 8 5 12 9 16\" />\r\n <path d=\"M19 4 h-4 v16 h4 Z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Alert = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n);\r\n\r\nexport const Info = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n);\r\n\r\nexport const CheckCircle = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\r\n <polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Ban = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\r\n </svg>\r\n);\r\n\r\nexport const ArrowRight = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\r\n </svg>\r\n);\r\n\r\nexport const ArrowLeft = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M19 12H5M12 19l-7-7 7-7\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronLeft = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronRight = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronDown = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"m6 9 6 6 6-6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronUp = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"18 15 12 9 6 15\" />\r\n </svg>\r\n);\r\n\r\nexport const Search = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"M21 21l-4.35-4.35\" />\r\n </svg>\r\n);\r\n\r\nexport const Bell = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\r\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\r\n </svg>\r\n);\r\n\r\nexport const Shield = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\r\n </svg>\r\n);\r\n\r\nexport const Copy = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\r\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\r\n </svg>\r\n);\r\n\r\nexport const Repeat = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"17 1 21 5 17 9\" />\r\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\r\n <polyline points=\"7 23 3 19 7 15\" />\r\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\r\n </svg>\r\n);\r\n\r\nexport const FileText = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\r\n <polyline points=\"10 9 9 9 8 9\" />\r\n </svg>\r\n);\r\n\r\nexport const Trophy = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M6 9H4.5a2.5 2.5 0 0 1 0-5H6\" />\r\n <path d=\"M18 9h1.5a2.5 2.5 0 0 0 0-5H18\" />\r\n <path d=\"M4 22h16\" />\r\n <path d=\"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22\" />\r\n <path d=\"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22\" />\r\n <path d=\"M18 2H6v7a6 6 0 0 0 12 0V2Z\" />\r\n </svg>\r\n);\r\n\r\nexport const Monitor = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const Smartphone = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\nexport const Tablet = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\n// Aktivnost – linija otkucaja (pulse)\r\nexport const ActivityMenu = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"8\" width=\"3\" height=\"8\" rx=\"1\" />\r\n <rect x=\"9\" y=\"4\" width=\"3\" height=\"16\" rx=\"1\" />\r\n <rect x=\"15\" y=\"6\" width=\"3\" height=\"12\" rx=\"1\" />\r\n </svg>\r\n);\r\n// Poređenje – dva stuba sa strelicama za upoređivanje\r\nexport const Compare = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\r\n <rect x=\"9\" y=\"9\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\r\n <line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeDasharray=\"3 2\" />\r\n </svg>\r\n);\r\n\r\n// Presečni status – Venn dijagram (dva presječena kruga)\r\nexport const Intersect = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\r\n <circle cx=\"9\" cy=\"12\" r=\"6\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"6\" />\r\n </svg>\r\n);\r\n\r\nexport const Megaphone = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\r\n <path d=\"M3 11l19-9-9 19-2-8-8-2z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Sun = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\r\n <circle cx=\"12\" cy=\"12\" r=\"5\" /><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" /><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\r\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" /><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\r\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\r\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" /><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\r\n </svg>\r\n);\r\n\r\nexport const Moon = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\r\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\r\n </svg>\r\n);\r\n\r\nexport const Gear = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\" />\r\n </svg>\r\n);\r\n\r\nexport const Clock = ({ size = 13, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <polyline points=\"12 6 12 12 16 14\" />\r\n </svg>\r\n);\r\n","interface LogoMarkProps {\r\n size?: number;\r\n className?: string;\r\n bgClassName?: string;\r\n bgFill?: string;\r\n bgOpacity?: number;\r\n}\r\n\r\n// Brutalist square logo – ugaone zagrade + slovo 't' sa eksponentom 'LMS'\r\nexport const LogoMark = ({\r\n size = 28,\r\n className,\r\n}: LogoMarkProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n className={`${className} w-[${size}px] h-[${size}px]`}\r\n viewBox=\"0 0 32 32\"\r\n fill=\"none\"\r\n >\r\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"none\" />\r\n <path d=\"M5 9 L5 5 L9 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\r\n <path d=\"M23 5 L27 5 L27 9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\r\n <path d=\"M5 23 L5 27 L9 27\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\r\n <path d=\"M23 27 L27 27 L27 23\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" className=\"opacity-50\" />\r\n\r\n <g fill=\"currentColor\">\r\n <rect x=\"15\" y=\"10\" width=\"2\" height=\"14\" />\r\n <rect x=\"10\" y=\"10\" width=\"12\" height=\"2\" />\r\n </g>\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const FormIcon = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M8 7h8M8 11h8M8 15h5\" />\r\n </svg>\r\n);\r\n\r\nexport const CalendarWeek = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n <path d=\"M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01\" />\r\n </svg>\r\n);\r\n\r\nexport const CalendarMonth = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n <rect x=\"7\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\r\n <rect x=\"13\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\r\n <rect x=\"7\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\r\n <rect x=\"13\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\r\n </svg>\r\n);\r\n\r\nexport const NumberIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"4\" y=\"18\" fontSize=\"18\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">12</text>\r\n </svg>\r\n);\r\n\r\nexport const TextIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"6\" y=\"18\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">T</text>\r\n </svg>\r\n);\r\n\r\nexport const FormulaIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"3\" y=\"16\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">ƒ</text>\r\n <text x=\"12\" y=\"16\" fontSize=\"16\" fill=\"currentColor\" stroke=\"none\">x</text>\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const RefreshCw = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\r\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\r\n <path d=\"M23 4v6h-6\" />\r\n <path d=\"M1 20v-6h6\" />\r\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10\" />\r\n <path d=\"M20.49 15a9 9 0 0 1-14.85 3.36L1 14\" />\r\n </svg>\r\n);\r\n\r\nexport const Database = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\r\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\r\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\r\n </svg>\r\n);\r\n\r\nexport const Server = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\r\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"6\" y2=\"6.01\" />\r\n <line x1=\"6\" y1=\"18\" x2=\"6\" y2=\"18.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Activity = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\" />\r\n </svg>\r\n);\r\n\r\nexport const Cpu = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\" />\r\n <rect x=\"9\" y=\"9\" width=\"6\" height=\"6\" />\r\n <line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\" />\r\n <line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\" />\r\n <line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\" />\r\n <line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\" />\r\n <line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\" />\r\n <line x1=\"1\" y1=\"15\" x2=\"4\" y2=\"15\" />\r\n <line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\" />\r\n <line x1=\"20\" y1=\"15\" x2=\"23\" y2=\"15\" />\r\n </svg>\r\n);\r\n\r\nexport const Zap = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\r\n </svg>\r\n);\r\n\r\nexport const HardDrive = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\" />\r\n <path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />\r\n <line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\" />\r\n <line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\" />\r\n </svg>\r\n);\r\n","import { X, Grid, UserMinus, UserCog, History, ExternalLink } from \"./ActionIcons\";\r\nimport { LockIcon, LogOut, User, UserCheck, EyeOff } from \"./AuthIcons\";\r\nimport { BarChart, Book, Calendar, CheckSquare, Clipboard, Faculty, Home, Layers, OfficeHours, QrCode, Report, Scan, Table, University, Users } from \"./NavigationIcons\";\r\nimport { ActivityMenu, Compare, Info, Intersect, Megaphone, Repeat, FileText } from \"./FeedbackIcons\";\r\nimport { Gear } from \"./SettingsIcons\";\r\nimport { CalendarWeek, FormIcon } from \"./FormsIcons\";\r\nimport { Zap } from \"./StatusIcons\";\r\n\r\nexport const SectionIcons = {\r\n studenti: <Users size={13} />,\r\n nastava: <Book size={13} />,\r\n evidencija: <CheckSquare size={13} />,\r\n analitika: <BarChart size={13} />,\r\n forme: <FormIcon size={13} />,\r\n nastavaS: <CalendarWeek size={13} />,\r\n evidencijaS:<CheckSquare size={13} />,\r\n};\r\n\r\nexport const Icons = {\r\n clipboard: <Faculty size={18} />,\r\n postClipboard: <Clipboard size={18} />,\r\n university: <University size={18} />,\r\n users: <Users size={18} />,\r\n book: <Book size={18} />,\r\n layers: <Layers size={18} />,\r\n officeHours: <OfficeHours size={18} />,\r\n calendar: <Calendar size={18} />,\r\n calendarAlt: <CalendarWeek size={18} />,\r\n checkSquare: <CheckSquare size={18} />,\r\n barChart: <BarChart size={18} />,\r\n qrCode: <QrCode size={18} />,\r\n home: <Home size={18} />,\r\n scan: <Scan size={18} />,\r\n lock: <LockIcon size={16} />,\r\n logOut: <LogOut size={16} />,\r\n logOutAlt: <LogOut size={16} />,\r\n user: <User size={16} />,\r\n cancel: <X size={16} />,\r\n report: <Report size={18} />,\r\n table: <Table size={18} />,\r\n gear: <Gear size={16} />,\r\n formIcon: <FormIcon size={18} />,\r\n grades: <BarChart size={18} />,\r\n activity: <ActivityMenu size={18} />,\r\n zap: <Zap size={18} />,\r\n compare: <Compare size={18} />,\r\n intersect: <Intersect size={18} />,\r\n repeat: <Repeat size={18} />,\r\n info: <Info size={16} />,\r\n todos: <CheckSquare size={18} />,\r\n eyeOff: <EyeOff size={18} />,\r\n userMinus: <UserMinus size={18} />,\r\n fileText: <FileText size={18} />,\r\n megaphone: <Megaphone size={18} />,\r\n grid: <Grid size={18} />,\r\n userCheck: <UserCheck size={18} />,\r\n fm: <UserCog size={18} />,\r\n history: <History size={18} />,\r\n externalLink: <ExternalLink size={18} />\r\n};\r\n","import type { BaseProps } from \"../../types\";\r\nimport { createElement, isValidElement } from \"react\";\r\nimport type { ComponentType, MouseEvent, ReactNode } from \"react\";\r\nimport { Spinner } from \"../feedback/Spinner\";\r\n\r\ntype Variant =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"ghost\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"info\"\r\n | \"muted-primary\"\r\n | \"outline-primary\"\r\n | \"outline-secondary\"\r\n | \"outline-danger\"\r\n | \"outline-success\"\r\n | \"brutal\"\r\n | \"link\";\r\n\r\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface ButtonProps extends BaseProps {\r\n children?: ReactNode;\r\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n variant?: Variant;\r\n size?: Size;\r\n icon?: ButtonIcon;\r\n iconRight?: ButtonIcon;\r\n\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n title?: string;\r\n fullWidth?: boolean;\r\n}\r\n\r\ntype ButtonIcon = ReactNode | ComponentType<{\r\n size?: number | string;\r\n strokeWidth?: number;\r\n className?: string;\r\n}>;\r\n\r\nconst TOKEN_BASE = \"inline-flex items-center justify-center gap-2 cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-150\";\r\n\r\nconst variantClasses: Record<Variant, string> = {\r\n primary: \"btn-primary\",\r\n secondary: \"btn-secondary\",\r\n danger: \"btn-danger\",\r\n\r\n ghost: `${TOKEN_BASE} font-medium border border-transparent\r\n text-[var(--color-txt-3)] hover:border-[var(--color-primary-300)] hover:text-[var(--color-primary-300)]`,\r\n\r\n success: `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\r\n bg-transparent hover:bg-[rgba(77,214,163,0.08)]`,\r\n\r\n warning: `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\r\n bg-transparent hover:bg-[rgba(255,122,77,0.08)]`,\r\n\r\n info: `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n bg-transparent hover:bg-[rgba(94,231,255,0.08)]`,\r\n\r\n \"muted-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n bg-[rgba(94,231,255,0.06)] hover:bg-[rgba(94,231,255,0.12)]`,\r\n\r\n \"outline-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n hover:bg-[rgba(94,231,255,0.08)]`,\r\n\r\n \"outline-secondary\": `${TOKEN_BASE} border border-[var(--color-border-hi)] text-[var(--color-txt-2)]\r\n hover:border-[var(--color-txt-2)] hover:text-[var(--color-txt-1)]`,\r\n\r\n \"outline-danger\": `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\r\n hover:bg-[rgba(255,122,77,0.08)]`,\r\n\r\n \"outline-success\": `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\r\n hover:bg-[rgba(77,214,163,0.08)]`,\r\n\r\n brutal: `${TOKEN_BASE} border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)]\r\n shadow-[var(--tapiz-shadow-brutal)] font-bold hover:-translate-x-0.5 hover:-translate-y-0.5 hover:shadow-[var(--tapiz-shadow-brutal-lg)]`,\r\n\r\n link: \"text-[var(--color-primary-300)] hover:text-[var(--color-primary-400)] disabled:opacity-40 disabled:cursor-not-allowed inline-flex items-center gap-1\",\r\n};\r\n\r\nconst sizeClasses: Record<Size, string> = {\r\n xs: \"px-2 py-1 text-xs gap-1\",\r\n sm: \"px-3 py-1.5 text-xs gap-1.5\",\r\n md: \"px-4 py-2 text-sm gap-2\",\r\n lg: \"px-5 py-2.5 text-sm gap-2\",\r\n xl: \"px-6 py-3 text-base gap-2.5\",\r\n};\r\n\r\nexport function Button({\r\n children,\r\n onClick,\r\n disabled,\r\n loading,\r\n variant = \"primary\",\r\n size = \"md\",\r\n icon,\r\n iconRight,\r\n className = \"\",\r\n type = \"button\",\r\n title,\r\n fullWidth,\r\n}: ButtonProps) {\r\n const isDisabled = disabled || loading;\r\n const isLink = variant === \"link\";\r\n const shouldApplySize = !isLink;\r\n const renderedIcon = renderIcon(icon);\r\n const renderedIconRight = renderIcon(iconRight);\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={isDisabled}\r\n title={title}\r\n className={[\r\n variantClasses[variant],\r\n shouldApplySize ? sizeClasses[size] : \"\",\r\n fullWidth ? \"w-full\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n >\r\n {loading\r\n ? <Spinner color={variant === \"primary\" ? \"text-black\" : \"text-[var(--color-txt-2)]\"} />\r\n : renderedIcon ? <span>{renderedIcon}</span> : null}\r\n {children}\r\n {!loading && renderedIconRight}\r\n </button>\r\n );\r\n}\r\n\r\nfunction renderIcon(icon?: ButtonIcon) {\r\n if (!icon) return null;\r\n if (isValidElement(icon)) return icon;\r\n if (typeof icon === \"function\") {\r\n return createElement(icon, { size: 14, strokeWidth: 1.75 });\r\n }\r\n return icon;\r\n}\r\n","export interface SpinnerProps {\r\n size?: string;\r\n color?: string;\r\n}\r\n\r\nexport const Spinner = ({ size = \"w-3 h-3\", color = \"text-primary-700\" }: SpinnerProps) => (\r\n <svg\r\n className={`inline-block ${size} animate-spin ${color}`}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray=\"31.4 31.4\"\r\n strokeDashoffset=\"15.7\"\r\n />\r\n </svg>\r\n);\r\n","import type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Input({ className = \"\", invalid = false, ...props }: InputProps) {\r\n return (\r\n <input\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { SelectHTMLAttributes } from \"react\";\r\n\r\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Select({ className = \"\", invalid = false, ...props }: SelectProps) {\r\n return (\r\n <select\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { TextareaHTMLAttributes } from \"react\";\r\n\r\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Textarea({ className = \"\", invalid = false, ...props }: TextareaProps) {\r\n return (\r\n <textarea\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { LabelHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FieldLabel({ children, className = \"\", ...props }: FieldLabelProps) {\r\n return (\r\n <label {...props} className={`kicker mb-1 block ${className}`.trim()}>\r\n {children}\r\n </label>\r\n );\r\n}\r\n","import type { HTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FieldHintProps extends HTMLAttributes<HTMLParagraphElement> {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FieldHint({ children, className = \"\", ...props }: FieldHintProps) {\r\n return (\r\n <p {...props} className={`font-mono text-[10px] text-txt-4 ${className}`.trim()}>\r\n {children}\r\n </p>\r\n );\r\n}\r\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\r\n\r\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\r\n label?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizeMap = {\r\n sm: { box: \"w-3.5 h-3.5\", icon: 10, text: \"text-xs\", gap: \"gap-1.5\" },\r\n md: { box: \"w-4 h-4\", icon: 11, text: \"text-sm\", gap: \"gap-2\" },\r\n lg: { box: \"w-5 h-5\", icon: 13, text: \"text-base\", gap: \"gap-2.5\" },\r\n} as const;\r\n\r\nexport function Checkbox({\r\n label,\r\n size = \"md\",\r\n className = \"\",\r\n id: providedId,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...props\r\n}: CheckboxProps) {\r\n const generatedId = useId();\r\n const id = providedId ?? generatedId;\r\n const s = sizeMap[size];\r\n\r\n const isControlled = checked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\r\n const isChecked = isControlled ? checked : internalChecked;\r\n const [focused, setFocused] = useState(false);\r\n\r\n return (\r\n <label\r\n htmlFor={id}\r\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\r\n >\r\n <span className=\"relative shrink-0\">\r\n <input\r\n {...props}\r\n id={id}\r\n type=\"checkbox\"\r\n checked={isControlled ? checked : internalChecked}\r\n onChange={(e) => {\r\n if (!isControlled) setInternalChecked(e.target.checked);\r\n onChange?.(e);\r\n }}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => setFocused(false)}\r\n className=\"sr-only\"\r\n />\r\n <span\r\n className={`\r\n flex items-center justify-center ${s.box}\r\n border transition-all duration-150\r\n ${isChecked\r\n ? \"bg-primary-300 border-primary-300\"\r\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\r\n }\r\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\r\n `}\r\n >\r\n {isChecked && (\r\n <svg\r\n width={s.icon}\r\n height={s.icon}\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n stroke=\"#000\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"square\"\r\n >\r\n <polyline points=\"1.5,6 4.5,9.5 10.5,2.5\" />\r\n </svg>\r\n )}\r\n </span>\r\n </span>\r\n\r\n {label && (\r\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n}\r\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\r\n\r\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\r\n label?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizeMap = {\r\n sm: { outer: \"w-3.5 h-3.5\", inner: \"w-1.5 h-1.5\", text: \"text-xs\", gap: \"gap-1.5\" },\r\n md: { outer: \"w-4 h-4\", inner: \"w-2 h-2\", text: \"text-sm\", gap: \"gap-2\" },\r\n lg: { outer: \"w-5 h-5\", inner: \"w-2.5 h-2.5\", text: \"text-base\", gap: \"gap-2.5\" },\r\n} as const;\r\n\r\nexport function RadioButton({\r\n label,\r\n size = \"md\",\r\n className = \"\",\r\n id: providedId,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...props\r\n}: RadioButtonProps) {\r\n const generatedId = useId();\r\n const id = providedId ?? generatedId;\r\n const s = sizeMap[size];\r\n\r\n const isControlled = checked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\r\n const isChecked = isControlled ? checked : internalChecked;\r\n const [focused, setFocused] = useState(false);\r\n\r\n return (\r\n <label\r\n htmlFor={id}\r\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\r\n >\r\n <span className=\"relative shrink-0\">\r\n <input\r\n {...props}\r\n id={id}\r\n type=\"radio\"\r\n checked={isControlled ? checked : internalChecked}\r\n onChange={(e) => {\r\n if (!isControlled) setInternalChecked(e.target.checked);\r\n onChange?.(e);\r\n }}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => setFocused(false)}\r\n className=\"sr-only\"\r\n />\r\n {/* outer ring — square to match app aesthetic, full for radio feel */}\r\n <span\r\n className={`\r\n flex items-center justify-center ${s.outer}\r\n rounded-full border transition-all duration-150\r\n ${isChecked\r\n ? \"bg-ink-400 border-primary-300 shadow-[0_0_0_1px_var(--color-primary-300)]\"\r\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\r\n }\r\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\r\n `}\r\n >\r\n {isChecked && (\r\n <span className={`${s.inner} rounded-full bg-primary-300`} />\r\n )}\r\n </span>\r\n </span>\r\n\r\n {label && (\r\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n}\r\n","import { Spinner } from \"./Spinner\";\r\n\r\nexport function PageSpinner() {\r\n return (\r\n <div className=\"flex h-48 flex-col items-center justify-center gap-3\">\r\n <Spinner size=\"w-8 h-8\" />\r\n <span className=\"kicker\">loading</span>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Check, X } from \"../icons/index\";\r\n\r\nexport interface ToastProps {\r\n message: string;\r\n ok: boolean;\r\n durationMs?: number;\r\n}\r\n\r\nexport function Toast({ message, ok, durationMs = 5000 }: ToastProps) {\r\n const [progress, setProgress] = useState(100);\r\n const [visible, setVisible] = useState(false);\r\n const startRef = useRef<number | null>(null);\r\n const rafRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const id = requestAnimationFrame(() => setVisible(true));\r\n return () => cancelAnimationFrame(id);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const tick = (now: number) => {\r\n if (!startRef.current) startRef.current = now;\r\n const elapsed = now - startRef.current;\r\n setProgress(Math.max(0, 100 - (elapsed / durationMs) * 100));\r\n if (elapsed < durationMs) rafRef.current = requestAnimationFrame(tick);\r\n };\r\n rafRef.current = requestAnimationFrame(tick);\r\n return () => {\r\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\r\n };\r\n }, [durationMs]);\r\n\r\n const transform = visible\r\n ? \"opacity-100 translate-y-0\"\r\n : \"opacity-0 translate-y-2 sm:translate-x-4 sm:translate-y-0\";\r\n\r\n const borderColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\r\n const accentColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\r\n\r\n return createPortal(\r\n <div className=\"pointer-events-none fixed bottom-20 left-4 right-4 z-9999 flex justify-center min-[600px]:bottom-auto min-[600px]:left-auto min-[600px]:right-5 min-[600px]:top-5 min-[600px]:justify-end\">\r\n <div\r\n className={`${transform} pointer-events-auto relative flex w-full max-w-sm items-center gap-2.5 overflow-hidden px-4 py-3 text-sm font-medium transition-all duration-300 sm:w-auto sm:max-w-xs`}\r\n style={{\r\n background: \"var(--color-ink-300)\",\r\n border: `1px solid ${borderColor}`,\r\n borderLeft: `3px solid ${borderColor}`,\r\n color: \"var(--color-txt-1)\",\r\n }}\r\n >\r\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\" style={{ color: accentColor }}>\r\n {ok ? <Check size={12} /> : <X size={12} />}\r\n </span>\r\n <span className=\"flex-1 text-[12px] leading-snug sm:text-[13px]\" style={{ fontFamily: \"var(--font-mono)\" }}>\r\n {message}\r\n </span>\r\n <div\r\n className=\"absolute bottom-0 left-0 h-0.5 transition-none\"\r\n style={{ width: `${progress}%`, background: accentColor }}\r\n />\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import { createContext, useContext, useMemo, useState, type ReactNode } from \"react\";\r\nimport { Toast } from \"./Toast\";\r\n\r\nexport interface ToastState {\r\n message: string;\r\n ok: boolean;\r\n durationMs?: number;\r\n}\r\n\r\ninterface ToastContextValue {\r\n hideToast: () => void;\r\n showToast: (message: string, ok: boolean, durationMs?: number) => void;\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\nexport interface ToastProviderProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport function ToastProvider({ children }: ToastProviderProps) {\r\n const [toast, setToast] = useState<ToastState | null>(null);\r\n\r\n const value = useMemo<ToastContextValue>(() => ({\r\n hideToast: () => setToast(null),\r\n showToast: (message, ok, durationMs = 5000) => {\r\n setToast({ message, ok, durationMs });\r\n window.setTimeout(() => setToast(current => (\r\n current?.message === message && current?.ok === ok ? null : current\r\n )), durationMs);\r\n },\r\n }), []);\r\n\r\n return (\r\n <ToastContext.Provider value={value}>\r\n {children}\r\n {toast ? <Toast message={toast.message} ok={toast.ok} durationMs={toast.durationMs} /> : null}\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error(\"useToast must be used within ToastProvider\");\r\n }\r\n return context;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport { Alert } from \"../icons/index\";\r\n\r\nexport interface FormErrorProps extends BaseProps {\r\n message: string | null | undefined;\r\n}\r\n\r\nexport function FormError({ message, className = \"\" }: FormErrorProps) {\r\n if (!message) return null;\r\n return (\r\n <div\r\n className={`flex items-start gap-2 px-3 py-2.5 text-sm text-warn bg-warn/8 border border-warn/25 border-l-[3px] border-l-warn animate-scale-in ${className}`}\r\n >\r\n <Alert size={14} className=\"shrink-0 mt-0.5\" />\r\n <span className=\"font-mono text-[12px]\">{message}</span>\r\n </div>\r\n );\r\n}\r\n","import { Component, type ErrorInfo, type ReactNode } from \"react\";\r\n\r\ninterface ErrorBoundaryProps {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n hasError: boolean;\r\n}\r\n\r\ninterface DefaultErrorFallbackProps {\r\n title?: string;\r\n description?: string;\r\n label?: string;\r\n reloadLabel?: string;\r\n}\r\n\r\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n state: ErrorBoundaryState = { hasError: false };\r\n\r\n static getDerivedStateFromError(): ErrorBoundaryState {\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error: Error, info: ErrorInfo) {\r\n console.error(\"Unhandled UI error\", error, info);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return this.props.fallback ?? <DefaultErrorFallback />;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport function DefaultErrorFallback({\r\n title = \"Something went wrong\",\r\n description = \"An unexpected error occurred. Reload the page and try again.\",\r\n label = \"Tapiz UI · Runtime Error\",\r\n reloadLabel = \"Reload page\",\r\n}: DefaultErrorFallbackProps) {\r\n return (\r\n <div\r\n className=\"fixed inset-0 flex flex-col items-center justify-center overflow-hidden px-6\"\r\n style={{ background: \"var(--color-ink-100)\" }}\r\n >\r\n <GridBg />\r\n <Spotlight color=\"rgba(255,100,100,0.06)\" />\r\n\r\n <div\r\n className=\"relative z-10 flex w-full max-w-sm flex-col items-center gap-6 text-center\"\r\n style={{ animation: \"var(--animate-fade-in-up)\" }}\r\n >\r\n <div>\r\n <div\r\n className=\"font-mono font-bold leading-none\"\r\n style={{ fontSize: \"clamp(72px,16vw,120px)\", color: \"var(--color-border-hi)\", letterSpacing: \"-0.04em\" }}\r\n >\r\n 500\r\n </div>\r\n <div\r\n className=\"mt-1 h-0.5 w-full\"\r\n style={{ background: \"linear-gradient(90deg,transparent,rgba(255,80,80,0.7),transparent)\", opacity: 0.5 }}\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1.5\">\r\n <p className=\"text-base font-semibold\" style={{ color: \"var(--color-txt-1)\" }}>{title}</p>\r\n <p className=\"font-mono text-[11px] leading-relaxed\" style={{ color: \"var(--color-txt-3)\" }}>{description}</p>\r\n </div>\r\n\r\n <div\r\n className=\"font-mono text-[9px] uppercase px-2 py-1\"\r\n style={{\r\n letterSpacing: \".2em\",\r\n color: \"rgba(255,80,80,0.9)\",\r\n border: \"1px solid rgba(255,80,80,0.25)\",\r\n background: \"rgba(255,80,80,0.05)\",\r\n }}\r\n >\r\n {label}\r\n </div>\r\n\r\n <div className=\"w-full\">\r\n <button\r\n type=\"button\"\r\n onClick={() => window.location.reload()}\r\n style={{\r\n width: \"100%\",\r\n padding: \"10px\",\r\n fontSize: \"12px\",\r\n background: \"var(--color-primary-300)\",\r\n color: \"var(--color-ink-100)\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n fontFamily: \"var(--font-mono)\",\r\n letterSpacing: \"0.05em\",\r\n }}\r\n >\r\n {reloadLabel} →\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function GridBg() {\r\n return (\r\n <div className=\"pointer-events-none absolute inset-0 opacity-50 bg-[linear-gradient(var(--color-border)_1px,transparent_1px),linear-gradient(90deg,var(--color-border)_1px,transparent_1px)] bg-size-[32px_32px]\" />\r\n );\r\n}\r\n\r\nexport function Spotlight({ color }: { color: string }) {\r\n return (\r\n <div\r\n className=\"pointer-events-none absolute left-1/2 top-1/5 h-60 w-120 -translate-x-1/2\"\r\n style={{ background: `radial-gradient(ellipse at center, ${color} 0%, transparent 70%)` }}\r\n />\r\n );\r\n}\r\n","import { ReactNode, useId } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { X } from \"../icons/index\";\r\n\r\nexport interface BaseModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title: string;\r\n subtitle?: string;\r\n children: ReactNode;\r\n xShown?: boolean;\r\n icon?: ReactNode;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n closeLabel?: string;\r\n}\r\n\r\nconst sizeClass: Record<NonNullable<BaseModalProps[\"size\"]>, string> = {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-md\",\r\n lg: \"max-w-lg\",\r\n xl: \"max-w-2xl\",\r\n};\r\n\r\nexport function BaseModal({\r\n isOpen,\r\n onClose,\r\n title,\r\n subtitle,\r\n children,\r\n icon,\r\n xShown = false,\r\n size = \"md\",\r\n closeLabel = \"Close dialog\",\r\n}: BaseModalProps) {\r\n const titleId = useId();\r\n if (!isOpen) return null;\r\n\r\n return createPortal(\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-[rgba(5,6,8,0.75)] backdrop-blur-[2px]\"\r\n onClick={(e) => e.target === e.currentTarget && onClose()}\r\n >\r\n <div\r\n className={`w-full ${sizeClass[size]} p-6 space-y-4 bg-ink-200 border border-border-hi border-t-2 border-t-primary-300 animate-scale-in`}\r\n >\r\n <div className=\"flex items-start justify-between\">\r\n <div className=\"flex items-center gap-3\">\r\n {icon && (\r\n <div className=\"flex items-center justify-center w-10 h-10 shrink-0 bg-ink-300 border border-border-hi text-primary-300\">\r\n {icon}\r\n </div>\r\n )}\r\n <div>\r\n <h3 id={titleId} className=\"font-display text-[15px] font-semibold text-txt-1\">{title}</h3>\r\n {subtitle && (\r\n <p className=\"font-mono text-[10px] text-primary-300 mt-0.5 tracking-widest\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n {xShown && (\r\n <button\r\n onClick={onClose}\r\n className=\"w-7 h-7 flex items-center justify-center text-txt-3 border border-transparent hover:text-txt-1 hover:border-border-hi transition-colors\"\r\n aria-label={closeLabel}\r\n title={closeLabel}\r\n >\r\n <X size={14} />\r\n </button>\r\n )}\r\n </div>\r\n {children}\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import { ReactNode } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { X, Check, Trash } from \"../icons/index\";\r\n\r\nexport interface ConfirmDialogProps {\r\n title: string;\r\n description?: ReactNode;\r\n message?: ReactNode;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n loading?: boolean;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n icon?: ReactNode;\r\n danger?: boolean;\r\n open?: boolean;\r\n}\r\n\r\nexport function ConfirmDialog({\r\n title,\r\n description,\r\n message,\r\n confirmLabel,\r\n cancelLabel,\r\n loading = false,\r\n onConfirm,\r\n onCancel,\r\n icon,\r\n danger = false,\r\n open = true,\r\n}: ConfirmDialogProps) {\r\n const resolvedConfirm = confirmLabel ?? \"Confirm\";\r\n const resolvedCancel = cancelLabel ?? \"Cancel\";\r\n const resolvedDescription = description ?? message;\r\n if (!open) return null;\r\n return createPortal(\r\n <div\r\n className=\"fixed inset-0 z-300 flex items-center justify-center px-4 bg-[rgba(5,6,8,0.4)] backdrop-blur-sm\"\r\n onClick={onCancel}\r\n >\r\n <div\r\n className={`relative w-full max-w-sm bg-ink-200 border border-border-hi border-t-2 animate-scale-in ${danger ? \"border-t-(--color-danger,#f87171)\" : \"border-t-primary-300\"}`}\r\n onClick={e => e.stopPropagation()}\r\n >\r\n <div className=\"p-6 flex flex-col gap-4\">\r\n {/* Icon + title row */}\r\n <div className=\"flex items-center gap-3\">\r\n {icon && (\r\n <div\r\n className={`flex items-center justify-center w-9 h-9 shrink-0 border ${danger ? \"bg-[rgba(248,113,113,0.1)] border-[rgba(248,113,113,0.25)] text-(--color-danger,#f87171)\" : \"bg-primary-300/8 border-primary-300/15 text-primary-300\"}`}\r\n >\r\n {icon}\r\n </div>\r\n )}\r\n <p className=\"text-sm font-semibold text-txt-1\">\r\n {title}\r\n </p>\r\n </div>\r\n\r\n {/* Description */}\r\n <p className=\"text-sm text-txt-3\">\r\n {resolvedDescription}\r\n </p>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center justify-end gap-2\">\r\n <Button variant=\"ghost\" size=\"sm\" icon={<X size={13} />} onClick={onCancel} disabled={loading}>\r\n {resolvedCancel}\r\n </Button>\r\n <Button\r\n variant={danger ? \"danger\" : \"primary\"}\r\n size=\"sm\"\r\n icon={danger ? <Trash size={13} /> : <Check size={13} />}\r\n onClick={onConfirm}\r\n loading={loading}\r\n >\r\n {resolvedConfirm}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\n\r\nexport interface TooltipProps {\r\n text: string;\r\n children: ReactNode;\r\n position?: \"top\" | \"bottom\";\r\n align?: \"center\" | \"right\";\r\n width?: string;\r\n wFull?: boolean;\r\n}\r\n\r\nexport function Tooltip({ text, children, position = \"top\", align = \"center\", width = \"max-w-[200px]\", wFull }: TooltipProps) {\r\n const alignClass = align === \"right\" ? \"right-0\" : \"left-1/2 -translate-x-1/2\";\r\n return (\r\n <span className={`group relative inline-flex items-center${wFull ? \" w-full\" : \"\"}`}>\r\n {children}\r\n <span\r\n className={`pointer-events-none absolute ${alignClass} ${width} w-max px-2.5 py-1.5\r\n text-center text-[11px] leading-snug\r\n opacity-0 group-hover:opacity-100 transition-opacity duration-150\r\n ${position === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\"}`}\r\n style={{\r\n zIndex: 60,\r\n background: \"var(--color-ink-300)\",\r\n border: \"1px solid var(--color-border-hi)\",\r\n color: \"var(--color-txt-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n letterSpacing: \"0.04em\",\r\n }}\r\n >\r\n {text}\r\n <span\r\n className={`absolute left-1/2 -translate-x-1/2 w-0 h-0 border-x-4 border-x-transparent\r\n ${position === \"top\" ? \"top-full border-t-4\" : \"bottom-full border-b-4\"}`}\r\n style={position === \"top\"\r\n ? { borderTopColor: \"var(--color-border-hi)\" }\r\n : { borderBottomColor: \"var(--color-border-hi)\" }}\r\n />\r\n </span>\r\n </span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type CardVariant = \"surface\" | \"raised\" | \"outlined\" | \"brutal\" | \"glass\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport interface CardProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n hover?: boolean;\r\n style?: CSSProperties;\r\n variant?: CardVariant;\r\n padding?: CardPadding;\r\n}\r\n\r\nexport interface CardSectionProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst variantClasses: Record<CardVariant, string> = {\r\n surface: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-sm)]\",\r\n raised: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-raised)] shadow-[var(--tapiz-shadow-md)]\",\r\n outlined: \"border border-[var(--tapiz-border-strong)] bg-transparent\",\r\n brutal: \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal)]\",\r\n glass: \"border border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-surface)_78%,transparent)] shadow-[var(--tapiz-shadow-md)] backdrop-blur-xl\",\r\n};\r\n\r\nconst paddingClasses: Record<CardPadding, string> = {\r\n none: \"p-0\",\r\n sm: \"p-3\",\r\n md: \"p-5\",\r\n lg: \"p-6\",\r\n};\r\n\r\nexport function Card({\r\n children,\r\n className = \"\",\r\n hover = false,\r\n style,\r\n variant = \"surface\",\r\n padding = \"md\",\r\n}: CardProps) {\r\n return (\r\n <div\r\n className={[\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n hover ? \"card-hover\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardHeader({ children, className = \"\" }: CardSectionProps) {\r\n return <div className={`border-b border-[var(--tapiz-border-subtle)] px-5 py-3 ${className}`}>{children}</div>;\r\n}\r\n\r\nexport function CardBody({ children, className = \"\" }: CardSectionProps) {\r\n return <div className={`p-5 ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface SkeletonProps extends BaseProps {\r\n}\r\n\r\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\r\n return <div aria-hidden=\"true\" className={`skeleton ${className}`} />;\r\n}\r\n","import { Skeleton } from \"./Skeleton\";\r\n\r\nexport function SkeletonCard({ className = \"\" }: { className?: string }) {\r\n return (\r\n <div className={`card ${className}`.trim()}>\r\n <Skeleton className=\"mb-3 h-4 w-2/5\" />\r\n <Skeleton className=\"mb-2 h-3 w-3/4\" />\r\n <Skeleton className=\"h-3 w-1/2\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonKpiCard({ delay = 0 }: { delay?: number }) {\r\n return (\r\n <div\r\n className=\"card animate-pulse\"\r\n style={{\r\n animationDelay: `${delay}ms`,\r\n minHeight: 142,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 8,\r\n padding: \"16px 18px\",\r\n borderLeft: \"3px solid var(--color-border-hi)\",\r\n }}\r\n >\r\n <Skeleton className=\"mb-1 h-2 w-24\" />\r\n <Skeleton className=\"h-8 w-16\" />\r\n <Skeleton className=\"mt-1 h-2 w-20\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonBanner() {\r\n return (\r\n <div\r\n className=\"animate-pulse overflow-hidden p-5\"\r\n style={{\r\n background: \"var(--color-ink-300)\",\r\n border: \"1px solid var(--color-border)\",\r\n borderTop: \"2px solid var(--color-border-hi)\",\r\n }}\r\n >\r\n <Skeleton className=\"mb-2 h-3 w-24\" />\r\n <Skeleton className=\"mb-3 h-6 w-48\" />\r\n <div className=\"flex gap-4\">\r\n <Skeleton className=\"h-4 w-28\" />\r\n <Skeleton className=\"h-4 w-24\" />\r\n <Skeleton className=\"h-4 w-20\" />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SkeletonTableRow({ cols = 4 }: { cols?: number }) {\r\n const widths = [\"w-24\", \"w-40\", \"w-32\", \"w-20\", \"w-16\"];\r\n return (\r\n <tr className=\"border-b border-border\">\r\n {Array.from({ length: cols }).map((_, i) => (\r\n <td key={i} className=\"px-4 py-3\">\r\n <Skeleton className={`h-4 ${widths[i % widths.length]}`} />\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n}\r\n\r\nexport function SkeletonTable({ rows = 6, cols = 4 }: { rows?: number; cols?: number }) {\r\n return (\r\n <div className=\"card overflow-hidden p-0\">\r\n <div className=\"overflow-x-auto\">\r\n <table className=\"w-full text-sm\">\r\n <thead>\r\n <tr className=\"border-b border-border bg-ink-300\">\r\n {Array.from({ length: cols }).map((_, i) => (\r\n <th key={i} className=\"px-4 py-3\">\r\n <Skeleton className=\"h-3 w-16\" />\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {Array.from({ length: rows }).map((_, i) => (\r\n <SkeletonTableRow key={i} cols={cols} />\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonPageHeader() {\r\n return (\r\n <div className=\"flex animate-pulse items-center justify-between\">\r\n <div>\r\n <Skeleton className=\"mb-2 h-7 w-40\" />\r\n <Skeleton className=\"h-4 w-24\" />\r\n </div>\r\n <Skeleton className=\"h-9 w-32\" />\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\ntype Variant = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"muted\";\r\n\r\nconst variantClasses: Record<Variant, string> = {\r\n default: \"border-[var(--tapiz-accent)] text-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)]\",\r\n success: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n info: \"border-[var(--tapiz-info)] text-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n muted: \"border-txt-3 text-txt-3\",\r\n};\r\n\r\ninterface BadgeProps extends BaseProps {\r\n children: ReactNode;\r\n variant?: Variant;\r\n}\r\n\r\nexport function Badge({ children, variant = \"default\", className = \"\" }: BadgeProps) {\r\n return (\r\n <span\r\n className={`inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-widest ${variantClasses[variant]} ${className}`}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport { Info } from \"../icons/index\";\r\n\r\nexport interface EmptyStateProps {\r\n title?: string;\r\n description?: string;\r\n message?: string;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport function EmptyState({ title, description, message, icon }: EmptyStateProps) {\r\n const resolvedTitle = title ?? message ?? \"No data\";\r\n\r\n return (\r\n <div className=\"border border-border bg-ink-200 px-4 py-10 text-center\">\r\n <div className=\"mb-2 flex justify-center text-txt-4\">\r\n {icon ?? <Info size={22} />}\r\n </div>\r\n <p className=\"font-mono text-[11px] tracking-widest text-txt-4\">{resolvedTitle}</p>\r\n {description ? (\r\n <p className=\"mt-1 font-mono text-[10px] text-txt-4 opacity-70\">{description}</p>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ErrorState({\r\n title = \"Failed to load\",\r\n error,\r\n}: {\r\n title?: string;\r\n error: Error | null;\r\n}) {\r\n return (\r\n <div className=\"border border-warn bg-ink-200 px-4 py-10 text-center\">\r\n <div className=\"mb-2 flex justify-center text-warn\">\r\n <Info size={22} />\r\n </div>\r\n <p className=\"font-mono text-[11px] tracking-widest text-warn\">{title}</p>\r\n {error ? <p className=\"mt-1 font-mono text-[10px] text-txt-3\">{error.message}</p> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport { Info, LockIcon } from \"../icons/index\";\r\n\r\ninterface StructuredInfoBannerProps extends BaseProps {\r\n title: string;\r\n description: string;\r\n text?: never;\r\n variant?: never;\r\n}\r\n\r\ninterface InlineInfoBannerProps extends BaseProps {\r\n text: string;\r\n variant?: \"info\" | \"warn\" | \"lock\";\r\n\r\n title?: never;\r\n description?: never;\r\n}\r\n\r\nexport type InfoBannerProps = StructuredInfoBannerProps | InlineInfoBannerProps;\r\n\r\nexport function InfoBanner(props: InfoBannerProps) {\r\n if (\"text\" in props) {\r\n const { text, variant = \"info\", className = \"\" } = props;\r\n const styles =\r\n variant === \"warn\"\r\n ? \"bg-warn/8 border-warn/25 text-warn\"\r\n : variant === \"lock\"\r\n ? \"bg-warn/8 border-warn/30 text-warn\"\r\n : \"bg-primary-500/10 border-primary-100 text-primary-500\";\r\n\r\n const icon = variant === \"lock\"\r\n ? <LockIcon size={14} className=\"mt-1 shrink-0\" />\r\n : <Info size={14} className=\"mt-1 shrink-0\" />;\r\n\r\n return (\r\n <div className={`app-info-banner flex items-start gap-2 border px-3 py-2.5 text-[13px] ${styles} ${className}`}>\r\n {icon}\r\n <p className=\"font-mono\">{text}</p>\r\n </div>\r\n );\r\n }\r\n\r\n const { title, description, className = \"\" } = props;\r\n\r\n return (\r\n <div\r\n className={`app-info-banner px-4 py-3 bg-primary-300/4 border border-primary-300/12 border-l-[3px] border-l-primary-300 ${className}`}\r\n >\r\n <p className=\"mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest text-primary-300\">\r\n {title}\r\n </p>\r\n <p className=\"font-mono text-[11px] leading-relaxed text-txt-2\">\r\n {description}\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PageHeaderProps extends BaseProps {\r\n title: string;\r\n subtitle?: string;\r\n description?: ReactNode;\r\n action?: ReactNode;\r\n actions?: ReactNode;\r\n icon?: ReactNode;\r\n banner?: ReactNode;\r\n breadcrumbs?: ReactNode;\r\n meta?: ReactNode;\r\n\r\n variant?: \"default\" | \"enterprise\" | \"brutal\";\r\n}\r\n\r\nexport function PageHeader({\r\n title,\r\n subtitle,\r\n description,\r\n action,\r\n actions,\r\n icon,\r\n banner,\r\n breadcrumbs,\r\n meta,\r\n className = \"\",\r\n variant = \"default\",\r\n}: PageHeaderProps) {\r\n const resolvedActions = actions ?? action;\r\n const variantClass = variant === \"brutal\"\r\n ? \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-brutal)]\"\r\n : variant === \"enterprise\"\r\n ? \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-sm)]\"\r\n : \"border-b border-[var(--tapiz-border-subtle)] pb-4\";\r\n\r\n return (\r\n <div className={`page-header mb-5 flex flex-col gap-3 animate-fade-in-up ${variantClass} ${className}`.trim()}>\r\n {breadcrumbs ? <div className=\"font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{breadcrumbs}</div> : null}\r\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\r\n <div className=\"min-w-0\">\r\n {subtitle ? <div className=\"kicker mb-1.5\">{subtitle}</div> : null}\r\n <div className=\"flex items-center gap-2.5\">\r\n {icon ? <span className=\"text-[var(--tapiz-accent)]\">{icon}</span> : null}\r\n <h2 className=\"font-(--font-display) text-[22px] tracking-[-0.03em] text-[var(--tapiz-text-primary)] md:text-[26px]\">\r\n {title}\r\n </h2>\r\n </div>\r\n {description ? <div className=\"mt-2 max-w-3xl text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</div> : null}\r\n {meta ? <div className=\"mt-3 font-mono text-[11px] text-[var(--tapiz-text-disabled)]\">{meta}</div> : null}\r\n </div>\r\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap gap-2\">{resolvedActions}</div> : null}\r\n </div>\r\n {banner ? banner : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"./Card\";\r\n\r\nexport type MetricTrendTone = \"positive\" | \"negative\" | \"neutral\" | \"warning\";\r\n\r\nexport interface MetricCardProps extends BaseProps {\r\n label: ReactNode;\r\n value: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n trend?: ReactNode;\r\n trendTone?: MetricTrendTone;\r\n\r\n variant?: \"surface\" | \"raised\" | \"brutal\";\r\n}\r\n\r\nconst trendClasses: Record<MetricTrendTone, string> = {\r\n positive: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n negative: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n neutral: \"border-[var(--tapiz-border-strong)] text-[var(--tapiz-text-muted)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n};\r\n\r\nexport function MetricCard({\r\n label,\r\n value,\r\n description,\r\n icon,\r\n trend,\r\n trendTone = \"neutral\",\r\n className = \"\",\r\n variant = \"surface\",\r\n}: MetricCardProps) {\r\n return (\r\n <Card variant={variant} padding=\"md\" hover className={`relative overflow-hidden ${className}`}>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"min-w-0\">\r\n <p className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">\r\n {label}\r\n </p>\r\n <div className=\"mt-2 font-display text-3xl font-semibold tracking-[-0.05em] text-[var(--tapiz-text-primary)]\">\r\n {value}\r\n </div>\r\n </div>\r\n {icon ? (\r\n <div className=\"grid h-10 w-10 shrink-0 place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--color-icon-bg)] text-[var(--tapiz-accent)]\">\r\n {icon}\r\n </div>\r\n ) : null}\r\n </div>\r\n {(description || trend) ? (\r\n <div className=\"mt-4 flex flex-wrap items-center gap-2\">\r\n {trend ? (\r\n <span className={`inline-flex border px-2 py-0.5 font-mono text-[10px] font-bold uppercase tracking-widest ${trendClasses[trendTone]}`}>\r\n {trend}\r\n </span>\r\n ) : null}\r\n {description ? <p className=\"text-xs text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n ) : null}\r\n </Card>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StatGridProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n minColumnWidth?: string;\r\n}\r\n\r\nexport function StatGrid({ children, className = \"\", minColumnWidth = \"14rem\" }: StatGridProps) {\r\n return (\r\n <div\r\n className={`grid gap-4 ${className}`}\r\n style={{ gridTemplateColumns: `repeat(auto-fit, minmax(${minColumnWidth}, 1fr))` }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"./Card\";\r\n\r\nexport interface SectionCardProps extends BaseProps {\r\n title?: ReactNode;\r\n eyebrow?: ReactNode;\r\n description?: ReactNode;\r\n action?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function SectionCard({ title, eyebrow, description, action, children, className = \"\" }: SectionCardProps) {\r\n return (\r\n <Card variant=\"surface\" padding=\"none\" className={className}>\r\n {(title || eyebrow || description || action) ? (\r\n <div className=\"flex flex-col gap-3 border-b border-[var(--tapiz-border-subtle)] px-5 py-4 sm:flex-row sm:items-start sm:justify-between\">\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-1\">{eyebrow}</div> : null}\r\n {title ? <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n {action ? <div className=\"shrink-0\">{action}</div> : null}\r\n </div>\r\n ) : null}\r\n <div className=\"p-5\">{children}</div>\r\n </Card>\r\n );\r\n}\r\n","import type { CSSProperties, InputHTMLAttributes } from \"react\";\r\nimport { Search, X } from \"../icons/index\";\r\nimport { Input } from \"../forms/Input\";\r\n\r\nexport interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\r\n value: string;\r\n onChange: (value: string) => void;\r\n wrapperClassName?: string;\r\n wrapperStyle?: CSSProperties;\r\n inputClassName?: string;\r\n iconClassName?: string;\r\n clearable?: boolean;\r\n clearTitle?: string;\r\n}\r\n\r\nexport function SearchInput({\r\n value,\r\n onChange,\r\n placeholder = \"Search\",\r\n wrapperClassName = \"\",\r\n wrapperStyle,\r\n inputClassName = \"\",\r\n iconClassName = \"text-txt-4\",\r\n clearable = true,\r\n clearTitle = \"Clear search\",\r\n ...props\r\n}: SearchInputProps) {\r\n return (\r\n <div className={`relative ${wrapperClassName}`.trim()} style={wrapperStyle}>\r\n <span className={`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 ${iconClassName}`.trim()}>\r\n <Search size={15} />\r\n </span>\r\n <Input\r\n {...props}\r\n type=\"text\"\r\n value={value}\r\n onChange={e => onChange(e.target.value)}\r\n placeholder={placeholder}\r\n className={`pl-9 ${inputClassName}`.trim()}\r\n />\r\n {clearable && value ? (\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(\"\")}\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 rounded-lg p-1 text-txt-4 transition-colors hover:bg-ink-300 hover:text-txt-2\"\r\n title={clearTitle}\r\n >\r\n <X size={14} />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { ChevronLeft, ChevronRight } from \"../icons/index\";\r\n\r\nexport interface PaginationLabels {\r\n showing?: (args: { from: number; to: number; total: number }) => string;\r\n page?: (args: { page: number; totalPages: number }) => string;\r\n prev?: string;\r\n next?: string;\r\n prevTitle?: string;\r\n nextTitle?: string;\r\n}\r\n\r\nexport interface PaginationProps {\r\n page: number;\r\n totalPages: number;\r\n onChange: (page: number) => void;\r\n totalItems?: number;\r\n pageSize?: number;\r\n labels?: PaginationLabels;\r\n}\r\n\r\nfunction getPageNumbers(page: number, totalPages: number): (number | \"…\")[] {\r\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n const pages: (number | \"…\")[] = [1];\r\n if (page > 3) pages.push(\"…\");\r\n for (let i = Math.max(2, page - 1); i <= Math.min(totalPages - 1, page + 1); i += 1) pages.push(i);\r\n if (page < totalPages - 2) pages.push(\"…\");\r\n pages.push(totalPages);\r\n return pages;\r\n}\r\n\r\nconst defaultLabels: Required<PaginationLabels> = {\r\n showing: ({ from, to, total }) => `Showing ${from}-${to} of ${total}`,\r\n page: ({ page, totalPages }) => `Page ${page} of ${totalPages}`,\r\n prev: \"Prev\",\r\n next: \"Next\",\r\n prevTitle: \"Previous page\",\r\n nextTitle: \"Next page\",\r\n};\r\n\r\nexport function Pagination({ page, totalPages, onChange, totalItems, pageSize, labels }: PaginationProps) {\r\n if (totalPages <= 1) return null;\r\n\r\n const copy = { ...defaultLabels, ...labels };\r\n const pageNumbers = getPageNumbers(page, totalPages);\r\n const from = pageSize ? (page - 1) * pageSize + 1 : null;\r\n const to = pageSize && totalItems ? Math.min(page * pageSize, totalItems) : null;\r\n\r\n return (\r\n <div className=\"flex flex-col items-center justify-between gap-3 border-t border-border pt-3 sm:flex-row\">\r\n {totalItems != null && from != null && to != null ? (\r\n <span className=\"order-2 font-mono text-[12px] text-txt-4 sm:order-1\">\r\n {copy.showing({ from, to, total: totalItems })}\r\n </span>\r\n ) : (\r\n <span className=\"order-2 font-mono text-[11px] text-txt-4 sm:order-1\">\r\n {copy.page({ page, totalPages })}\r\n </span>\r\n )}\r\n\r\n <div className=\"order-1 flex items-center gap-1 sm:order-2\">\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(Math.max(1, page - 1))}\r\n disabled={page === 1}\r\n title={copy.prevTitle}\r\n className=\"flex items-center gap-1 border border-border px-2.5 py-1.5 font-mono text-[11px] text-txt-3 transition-colors hover:border-border-hi hover:text-txt-1 disabled:cursor-not-allowed disabled:opacity-30\"\r\n >\r\n <ChevronLeft size={12} />\r\n <span className=\"hidden sm:inline\">{copy.prev}</span>\r\n </button>\r\n\r\n <div className=\"flex items-center gap-1\">\r\n {pageNumbers.map((entry, index) =>\r\n entry === \"…\" ? (\r\n <span key={`ellipsis-${index}`} className=\"w-7 text-center font-mono text-[11px] text-txt-4\">\r\n …\r\n </span>\r\n ) : (\r\n <button\r\n key={entry}\r\n type=\"button\"\r\n onClick={() => onChange(entry)}\r\n className={`h-7 w-7 border font-mono text-[11px] transition-colors ${\r\n page === entry\r\n ? \"border-primary-300 bg-primary-300/10 text-primary-300\"\r\n : \"border-border text-txt-3 hover:border-border-hi hover:text-txt-1\"\r\n }`}\r\n >\r\n {entry}\r\n </button>\r\n ),\r\n )}\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(Math.min(totalPages, page + 1))}\r\n disabled={page >= totalPages}\r\n title={copy.nextTitle}\r\n className=\"flex items-center gap-1 border border-border px-2.5 py-1.5 font-mono text-[10px] text-txt-3 transition-colors hover:border-border-hi hover:text-txt-1 disabled:cursor-not-allowed disabled:opacity-30\"\r\n >\r\n <span className=\"hidden sm:inline\">{copy.next}</span>\r\n <ChevronRight size={12} />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SectionTitleProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function SectionTitle({ children, className = \"\" }: SectionTitleProps) {\r\n return <h3 className={`mb-1 text-sm font-semibold text-txt-1 ${className}`.trim()}>{children}</h3>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type StatusBadgeVariant =\r\n | \"default\"\r\n | \"active\"\r\n | \"inactive\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"info\"\r\n | \"pending\";\r\n\r\nexport interface StatusBadgeProps extends BaseProps {\r\n label: ReactNode;\r\n variant?: StatusBadgeVariant;\r\n}\r\n\r\nconst BASE =\r\n \"inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-[0.15em]\";\r\n\r\nconst variantStyles: Record<StatusBadgeVariant, string> = {\r\n default: \"border-[var(--tapiz-border-strong)] text-[var(--tapiz-text-secondary)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n active: \"border-[var(--tapiz-accent)] text-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)]\",\r\n success: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n inactive: \"border-[var(--tapiz-text-disabled)] text-[var(--tapiz-text-disabled)] bg-transparent\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n info: \"border-[var(--tapiz-info)] text-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n pending: \"border-[var(--tapiz-text-muted)] text-[var(--tapiz-text-muted)] bg-transparent\",\r\n};\r\n\r\nexport function StatusBadge({ label, variant = \"default\", className = \"\" }: StatusBadgeProps) {\r\n return <span className={`${BASE} ${variantStyles[variant]} ${className}`.trim()}>{label}</span>;\r\n}\r\n","import type { CSSProperties, ReactNode } from \"react\";\r\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { Spinner } from \"../feedback/Spinner\";\r\nimport { ChevronDown } from \"../icons/index\";\r\n\r\nexport interface ActionMenuItem {\r\n key: string;\r\n label: string;\r\n onSelect: () => void;\r\n icon?: ReactNode;\r\n danger?: boolean;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n}\r\n\r\nexport interface ActionMenuProps {\r\n label: string;\r\n items: ActionMenuItem[];\r\n icon?: ReactNode;\r\n buttonSize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n buttonVariant?: \"primary\" | \"secondary\" | \"danger\" | \"ghost\" | \"success\" | \"warning\" | \"info\" | \"muted-primary\" | \"outline-primary\" | \"outline-secondary\" | \"outline-danger\" | \"outline-success\" | \"link\";\r\n buttonClassName?: string;\r\n menuClassName?: string;\r\n menuStyle?: CSSProperties;\r\n fullWidth?: boolean;\r\n closeLabel?: string;\r\n}\r\n\r\nconst defaultMenuStyle: CSSProperties = {\r\n background: \"var(--color-ink-200)\",\r\n border: \"1px solid var(--color-border-hi)\",\r\n borderTop: \"2px solid var(--color-primary-300)\",\r\n boxShadow: \"0 16px 48px -8px rgba(0,0,0,0.45)\",\r\n maxHeight: \"min(320px, calc(100vh - 180px))\",\r\n};\r\n\r\nconst itemBaseClass =\r\n \"flex w-full items-center gap-2.5 border-l-2 border-transparent px-4 py-2.5 text-left text-sm transition-colors duration-100 hover:border-[var(--color-primary-300)] disabled:cursor-not-allowed disabled:opacity-40\";\r\n\r\ninterface MenuPosition {\r\n top?: number;\r\n bottom?: number;\r\n left: number;\r\n width: number;\r\n maxHeight?: number;\r\n}\r\n\r\nexport function ActionMenu({\r\n label,\r\n items,\r\n icon,\r\n buttonSize = \"sm\",\r\n buttonVariant = \"secondary\",\r\n buttonClassName = \"\",\r\n menuClassName,\r\n menuStyle,\r\n fullWidth = false,\r\n closeLabel,\r\n}: ActionMenuProps) {\r\n const [open, setOpen] = useState(false);\r\n const [pos, setPos] = useState<MenuPosition | null>(null);\r\n const btnRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (!open || !btnRef.current) return;\r\n\r\n const updatePosition = () => {\r\n const buttonElement = btnRef.current;\r\n if (!buttonElement) return;\r\n const rect = buttonElement.getBoundingClientRect();\r\n const viewportPadding = 8;\r\n const menuOffset = 4;\r\n const menuW = Math.min(320, window.innerWidth - viewportPadding * 2);\r\n const left = Math.max(\r\n viewportPadding,\r\n Math.min(rect.right - menuW, window.innerWidth - menuW - viewportPadding),\r\n );\r\n const estimatedMenuHeight = Math.min(320, items.length * 44 + 16);\r\n const spaceAbove = Math.max(0, rect.top - viewportPadding - menuOffset);\r\n const spaceBelow = Math.max(0, window.innerHeight - rect.bottom - viewportPadding - menuOffset);\r\n const preferBelow = spaceBelow >= estimatedMenuHeight || spaceBelow >= spaceAbove;\r\n\r\n if (preferBelow) {\r\n setPos({\r\n top: Math.min(rect.bottom + menuOffset, window.innerHeight - viewportPadding),\r\n left,\r\n width: menuW,\r\n maxHeight: Math.max(120, spaceBelow),\r\n });\r\n return;\r\n }\r\n\r\n setPos({\r\n bottom: Math.max(window.innerHeight - rect.top + menuOffset, viewportPadding),\r\n left,\r\n width: menuW,\r\n maxHeight: Math.max(120, spaceAbove),\r\n });\r\n };\r\n\r\n updatePosition();\r\n window.addEventListener(\"resize\", updatePosition);\r\n document.addEventListener(\"scroll\", updatePosition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", updatePosition);\r\n document.removeEventListener(\"scroll\", updatePosition, true);\r\n };\r\n }, [items.length, open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n function handle(e: MouseEvent | KeyboardEvent) {\r\n if (e instanceof KeyboardEvent) { if (e.key === \"Escape\") setOpen(false); return; }\r\n const target = e.target as Node;\r\n if (btnRef.current?.contains(target) || menuRef.current?.contains(target)) return;\r\n setOpen(false);\r\n }\r\n document.addEventListener(\"mousedown\", handle);\r\n document.addEventListener(\"keydown\", handle);\r\n return () => { document.removeEventListener(\"mousedown\", handle); document.removeEventListener(\"keydown\", handle); };\r\n }, [open]);\r\n\r\n const menuNode = open && pos ? (\r\n <>\r\n <div className=\"fixed inset-0 z-9998\" onClick={() => setOpen(false)} />\r\n <div\r\n ref={menuRef}\r\n className={menuClassName ?? \"overflow-auto\"}\r\n style={{\r\n position: \"fixed\",\r\n top: pos.top !== undefined ? pos.top : undefined,\r\n bottom: pos.bottom !== undefined ? pos.bottom : undefined,\r\n left: pos.left,\r\n width: pos.width,\r\n maxWidth: \"calc(100vw - 16px)\",\r\n zIndex: 9999,\r\n ...defaultMenuStyle,\r\n maxHeight: pos.maxHeight ?? defaultMenuStyle.maxHeight,\r\n ...menuStyle,\r\n }}\r\n >\r\n {items.map((item, index) => (\r\n <div key={item.key}>\r\n {index > 0 && item.danger ? <div style={{ borderTop: \"1px solid var(--color-border)\" }} /> : null}\r\n <button\r\n type=\"button\"\r\n className={itemBaseClass}\r\n style={{ color: item.danger ? \"var(--color-warn)\" : \"var(--color-txt-2)\" }}\r\n disabled={item.disabled || item.loading}\r\n onClick={() => {\r\n setOpen(false);\r\n item.onSelect();\r\n }}\r\n >\r\n {item.loading ? (\r\n <Spinner color=\"text-[var(--color-txt-3)]\" />\r\n ) : (\r\n <span className={item.danger ? \"shrink-0 text-warn\" : \"shrink-0 text-primary-300\"}>{item.icon}</span>\r\n )}\r\n <span>{item.label}</span>\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <div ref={btnRef} className={fullWidth ? \"relative w-full\" : \"relative inline-block max-w-full\"}>\r\n <Button\r\n size={buttonSize}\r\n variant={buttonVariant}\r\n icon={icon}\r\n iconRight={<ChevronDown size={11} />}\r\n onClick={() => setOpen(value => !value)}\r\n className={buttonClassName}\r\n fullWidth={fullWidth}\r\n >\r\n {label}\r\n </Button>\r\n {typeof document !== \"undefined\" ? createPortal(menuNode, document.body) : null}\r\n </div>\r\n );\r\n}\r\n","import { useMemo, useState, type ReactNode } from \"react\";\r\nimport { ChevronDown, ChevronUp } from \"../icons/index\";\r\nimport { DataTableRow } from \"./DataTableRow\";\r\nimport type { Column, ColumnAlign, ServerSort, SortDirection, SortState } from \"./types\";\r\n\r\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\r\nexport type DataTableVariant = \"default\" | \"enterprise\" | \"brutal\";\r\n\r\nexport interface DataTableProps<T> {\r\n data: T[];\r\n columns: Column<T>[];\r\n /** Stable unique key per row. */\r\n rowKey: (row: T) => string;\r\n isLoading?: boolean;\r\n /** Rendered (inside a full-width row) when there is no data. */\r\n emptyState?: ReactNode;\r\n onRowClick?: (row: T) => void;\r\n /** Number of skeleton rows shown while loading. Defaults to 8. */\r\n loadingRows?: number;\r\n /**\r\n * When provided, renders an extra right-aligned column at the end of every\r\n * row. The function receives the row and must return a `ReactNode` (e.g.\r\n * action buttons). When omitted, no extra column is added.\r\n */\r\n rowActions?: (row: T) => ReactNode;\r\n /**\r\n * When provided, disables internal client-side sort and delegates sorting to\r\n * the caller. Clicking a sortable column header calls `onSort(column.id)`.\r\n * `aria-sort` reflects `field` and `dir`.\r\n */\r\n serverSort?: ServerSort;\r\n /**\r\n * When provided, renders the node below the `<table>` inside the outer\r\n * border wrapper. No styling is added — callers own all padding/layout.\r\n */\r\n footer?: ReactNode;\r\n /**\r\n * When provided:\r\n * - The `<table>` is hidden on small screens (`hidden md:table`).\r\n * - A `<div className=\"md:hidden\">` is rendered before the table, mapping\r\n * each row to a card via this function (keyed by `rowKey(row)`).\r\n */\r\n mobileCard?: (row: T) => ReactNode;\r\n /** Visual density of header and cells. Defaults to comfortable. */\r\n density?: DataTableDensity;\r\n /** Enterprise adds stronger surface treatment; brutal adds 2px border + hard shadow. */\r\n variant?: DataTableVariant;\r\n /** Makes the table header sticky inside the scroll container. */\r\n stickyHeader?: boolean;\r\n /** Applies token-based zebra striping. Defaults to true. */\r\n striped?: boolean;\r\n className?: string;\r\n}\r\n\r\nfunction compareValues(\r\n a: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\r\n b: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\r\n): number {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return -1;\r\n if (b == null) return 1;\r\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\r\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\r\n if (typeof a === \"boolean\" && typeof b === \"boolean\") return Number(a) - Number(b);\r\n return String(a).localeCompare(String(b));\r\n}\r\n\r\nfunction ariaSort(active: boolean, direction: SortDirection): \"ascending\" | \"descending\" | \"none\" {\r\n if (!active) return \"none\";\r\n return direction === \"asc\" ? \"ascending\" : \"descending\";\r\n}\r\n\r\n/**\r\n * Generic, accessible, client-sortable table.\r\n *\r\n * - Pass already-translated `ReactNode`s for headers and `emptyState`; the\r\n * component never hardcodes user-facing strings (full i18n compatibility).\r\n * - Sorting toggles asc/desc on sortable columns and is purely client-side\r\n * unless `serverSort` is provided.\r\n * - Rows are memoized and the sorted view is memoized via `useMemo`.\r\n * - Optional `rowActions`, `serverSort`, `footer`, and `mobileCard` props are\r\n * all additive — existing usages continue to work with zero changes.\r\n */\r\nexport function DataTable<T>({\r\n data,\r\n columns,\r\n rowKey,\r\n isLoading = false,\r\n emptyState,\r\n onRowClick,\r\n loadingRows = 8,\r\n rowActions,\r\n serverSort,\r\n footer,\r\n mobileCard,\r\n density = \"comfortable\",\r\n variant = \"default\",\r\n stickyHeader = false,\r\n striped = true,\r\n className = \"\",\r\n}: DataTableProps<T>) {\r\n const [sort, setSort] = useState<SortState | null>(null);\r\n\r\n // When serverSort is active, skip client-side sort entirely.\r\n const sortedData = useMemo(() => {\r\n if (serverSort) return data;\r\n if (!sort) return data;\r\n const column = columns.find((c) => c.id === sort.columnId);\r\n if (!column?.sortAccessor) return data;\r\n const accessor = column.sortAccessor;\r\n const factor = sort.direction === \"asc\" ? 1 : -1;\r\n return [...data].sort((a, b) => compareValues(accessor(a), accessor(b)) * factor);\r\n }, [data, columns, sort, serverSort]);\r\n\r\n const toggleSort = (columnId: string) => {\r\n if (serverSort) {\r\n serverSort.onSort(columnId);\r\n return;\r\n }\r\n setSort((prev) => {\r\n if (prev?.columnId !== columnId) return { columnId, direction: \"asc\" };\r\n return { columnId, direction: prev.direction === \"asc\" ? \"desc\" : \"asc\" };\r\n });\r\n };\r\n\r\n const hasActions = rowActions !== undefined;\r\n const colCount = columns.length + (hasActions ? 1 : 0);\r\n const tableClass = mobileCard !== undefined ? \"hidden md:table w-full text-sm table-collapse\" : \"w-full text-sm table-collapse\";\r\n const densityHeaderClass = density === \"compact\" ? \"px-3 py-2\" : density === \"spacious\" ? \"px-4 py-4\" : \"px-3 py-2.5\";\r\n const densityCellClass = density === \"compact\" ? \"px-3 py-2\" : density === \"spacious\" ? \"px-4 py-4\" : \"px-3 py-2.5\";\r\n const wrapperClass = [\r\n \"overflow-x-auto\",\r\n variant === \"brutal\" ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\" : \"border border-[var(--tapiz-border-subtle)]\",\r\n variant === \"enterprise\" ? \"bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-md)]\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {/* Mobile card slot — only present when mobileCard is provided */}\r\n {mobileCard !== undefined && (\r\n <div className=\"md:hidden\">\r\n {isLoading\r\n ? Array.from({ length: loadingRows }).map((_, i) => (\r\n <div key={i} className=\"h-16 animate-pulse bg-ink-300\" />\r\n ))\r\n : sortedData.length === 0\r\n ? emptyState\r\n : sortedData.map((row) => (\r\n <div key={rowKey(row)}>{mobileCard(row)}</div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n <table className={tableClass}>\r\n <thead>\r\n <tr className=\"border-b border-border bg-ink-300\">\r\n {columns.map((column) => {\r\n const baseClass = `${densityHeaderClass} ${stickyHeader ? \"sticky top-0 z-10\" : \"\"} ${ALIGN_CLASS[column.align ?? \"left\"]} font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap`;\r\n\r\n if (!column.sortable || !column.sortAccessor) {\r\n return (\r\n <th key={column.id} scope=\"col\" className={baseClass}>\r\n {column.header}\r\n </th>\r\n );\r\n }\r\n\r\n // aria-sort: serverSort drives the active column; fall back to local sort state.\r\n const active = serverSort\r\n ? serverSort.field === column.id\r\n : sort?.columnId === column.id;\r\n const direction = serverSort\r\n ? serverSort.dir\r\n : (sort?.direction ?? \"asc\");\r\n\r\n return (\r\n <th\r\n key={column.id}\r\n scope=\"col\"\r\n aria-sort={ariaSort(active, direction)}\r\n className={baseClass}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={() => toggleSort(column.id)}\r\n className={`inline-flex items-center gap-1 select-none transition-colors hover:text-txt-1 ${\r\n active ? \"text-txt-1\" : \"\"\r\n }`}\r\n >\r\n {column.header}\r\n {active &&\r\n (direction === \"asc\" ? <ChevronUp size={12} /> : <ChevronDown size={12} />)}\r\n </button>\r\n </th>\r\n );\r\n })}\r\n {hasActions && (\r\n <th scope=\"col\" className=\"px-3 py-2.5 text-right font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap\" />\r\n )}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {isLoading ? (\r\n Array.from({ length: loadingRows }).map((_, rowIndex) => (\r\n <tr key={rowIndex} className=\"border-b border-[var(--tapiz-border-subtle)]\">\r\n {Array.from({ length: colCount }).map((__, colIndex) => (\r\n <td key={colIndex} className={densityCellClass}>\r\n <div className=\"h-4 w-24 animate-pulse bg-[var(--tapiz-bg-surface-muted)]\" />\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n ) : sortedData.length === 0 ? (\r\n <tr>\r\n <td colSpan={colCount} className=\"px-4 py-10 text-center text-txt-4 text-sm font-mono\">\r\n {emptyState}\r\n </td>\r\n </tr>\r\n ) : (\r\n sortedData.map((row) => (\r\n <DataTableRow\r\n key={rowKey(row)}\r\n row={row}\r\n columns={columns}\r\n onRowClick={onRowClick}\r\n rowActions={rowActions}\r\n densityCellClass={densityCellClass}\r\n striped={striped}\r\n />\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n\r\n {footer !== undefined && footer}\r\n </div>\r\n );\r\n}\r\n","import { memo, type ReactNode } from \"react\";\r\nimport type { Column, ColumnAlign } from \"./types\";\r\n\r\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\ninterface DataTableRowProps<T> {\r\n row: T;\r\n columns: Column<T>[];\r\n onRowClick?: (row: T) => void;\r\n rowActions?: (row: T) => ReactNode;\r\n densityCellClass?: string;\r\n striped?: boolean;\r\n}\r\n\r\nfunction DataTableRowInner<T>({ row, columns, onRowClick, rowActions, densityCellClass = \"px-3 py-2.5\", striped = true }: DataTableRowProps<T>) {\r\n const clickable = Boolean(onRowClick);\r\n return (\r\n <tr\r\n onClick={clickable ? () => onRowClick?.(row) : undefined}\r\n className={`border-b border-[var(--tapiz-border-subtle)] transition-colors hover:bg-[var(--tapiz-bg-surface-muted)] ${striped ? \"even:bg-[color-mix(in_srgb,var(--tapiz-bg-surface-muted)_35%,var(--tapiz-bg-surface))]\" : \"\"} ${\r\n clickable ? \"cursor-pointer\" : \"\"\r\n }`}\r\n >\r\n {columns.map((column) => (\r\n <td\r\n key={column.id}\r\n className={`${densityCellClass} text-xs text-[var(--tapiz-text-secondary)] ${ALIGN_CLASS[column.align ?? \"left\"]} ${\r\n column.className ?? \"\"\r\n }`}\r\n >\r\n {column.cell(row)}\r\n </td>\r\n ))}\r\n {rowActions !== undefined && (\r\n <td className={`${densityCellClass} text-right`}>{rowActions(row)}</td>\r\n )}\r\n </tr>\r\n );\r\n}\r\n\r\n/**\r\n * Memoized row. Re-renders only when its `row`, `columns`, or `onRowClick`\r\n * reference changes — keeping large lists cheap to re-render.\r\n *\r\n * `memo` strips generics, so we re-assert the generic signature on the export.\r\n */\r\nexport const DataTableRow = memo(DataTableRowInner) as typeof DataTableRowInner;\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface MarketingShellProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n grid?: boolean;\r\n noise?: boolean;\r\n}\r\n\r\nexport function MarketingShell({ children, className = \"\", grid = true, noise = true }: MarketingShellProps) {\r\n return (\r\n <main\r\n className={[\r\n \"min-h-screen overflow-hidden bg-[var(--tapiz-bg-page)] text-[var(--tapiz-text-primary)]\",\r\n grid ? \"tapiz-grid-bg\" : \"\",\r\n noise ? \"tapiz-noise-bg\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </main>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface HeroFrameProps extends BaseProps {\r\n eyebrow?: ReactNode;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n actions?: ReactNode;\r\n visual?: ReactNode;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport function HeroFrame({ eyebrow, title, description, actions, visual, meta, className = \"\" }: HeroFrameProps) {\r\n return (\r\n <section className={`mx-auto grid max-w-7xl gap-10 px-[var(--tapiz-space-page-x)] py-[var(--tapiz-space-section-y)] lg:grid-cols-[1fr_0.9fr] lg:items-center ${className}`}>\r\n <div className=\"animate-fade-in-up\">\r\n {eyebrow ? <div className=\"kicker mb-4\">{eyebrow}</div> : null}\r\n <h1 className=\"max-w-4xl text-5xl font-semibold leading-[0.95] tracking-[-0.07em] text-[var(--tapiz-text-primary)] md:text-7xl\">\r\n {title}\r\n </h1>\r\n {description ? <p className=\"mt-6 max-w-2xl text-base leading-7 text-[var(--tapiz-text-secondary)] md:text-lg\">{description}</p> : null}\r\n {actions ? <div className=\"mt-8 flex flex-wrap gap-3\">{actions}</div> : null}\r\n {meta ? <div className=\"mt-8 border-l-2 border-[var(--tapiz-accent)] pl-4 font-mono text-xs text-[var(--tapiz-text-muted)]\">{meta}</div> : null}\r\n </div>\r\n {visual ? (\r\n <div className=\"animate-scale-in border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-brutal-lg)]\">\r\n {visual}\r\n </div>\r\n ) : null}\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"../shared/Card\";\r\n\r\nexport interface FeatureCardProps extends BaseProps {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n eyebrow?: ReactNode;\r\n children?: ReactNode;\r\n\r\n variant?: \"surface\" | \"brutal\" | \"raised\";\r\n}\r\n\r\nexport function FeatureCard({ title, description, icon, eyebrow, children, className = \"\", variant = \"surface\" }: FeatureCardProps) {\r\n return (\r\n <Card variant={variant} hover className={`group ${className}`}>\r\n <div className=\"flex items-start gap-4\">\r\n {icon ? <div className=\"grid h-11 w-11 shrink-0 place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--color-icon-bg)] text-[var(--tapiz-accent)] group-hover:translate-x-[-1px] group-hover:translate-y-[-1px]\">{icon}</div> : null}\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-1\">{eyebrow}</div> : null}\r\n <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n {description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n {children ? <div className=\"mt-5\">{children}</div> : null}\r\n </Card>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FeatureGridProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FeatureGrid({ children, className = \"\" }: FeatureGridProps) {\r\n return <div className={`grid gap-4 md:grid-cols-2 xl:grid-cols-3 ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CTASectionProps extends BaseProps {\r\n eyebrow?: ReactNode;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function CTASection({ eyebrow, title, description, actions, className = \"\" }: CTASectionProps) {\r\n return (\r\n <section className={`mx-auto max-w-7xl px-[var(--tapiz-space-page-x)] py-[var(--tapiz-space-section-y)] ${className}`}>\r\n <div className=\"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-8 shadow-[var(--tapiz-shadow-brutal-lg)] md:p-12\">\r\n {eyebrow ? <div className=\"kicker mb-3\">{eyebrow}</div> : null}\r\n <div className=\"grid gap-6 lg:grid-cols-[1fr_auto] lg:items-end\">\r\n <div>\r\n <h2 className=\"max-w-3xl text-3xl font-semibold tracking-[-0.05em] md:text-5xl\">{title}</h2>\r\n {description ? <p className=\"mt-4 max-w-2xl text-base leading-7 text-[var(--tapiz-text-secondary)]\">{description}</p> : null}\r\n </div>\r\n {actions ? <div className=\"flex flex-wrap gap-3\">{actions}</div> : null}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface MockupFrameProps extends BaseProps {\r\n children: ReactNode;\r\n title?: ReactNode;\r\n toolbar?: ReactNode;\r\n}\r\n\r\nexport function MockupFrame({ children, title, toolbar, className = \"\" }: MockupFrameProps) {\r\n return (\r\n <div className={`overflow-hidden border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal)] ${className}`}>\r\n <div className=\"flex items-center justify-between border-b border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] px-3 py-2\">\r\n <div className=\"flex items-center gap-1.5\">\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-danger)]\" />\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-warning)]\" />\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-success)]\" />\r\n </div>\r\n {title ? <div className=\"font-mono text-[10px] uppercase tracking-widest text-[var(--tapiz-text-muted)]\">{title}</div> : null}\r\n <div>{toolbar}</div>\r\n </div>\r\n <div className=\"p-4\">{children}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ComparisonTableRow {\r\n feature: ReactNode;\r\n included: ReactNode;\r\n alternative?: ReactNode;\r\n}\r\n\r\nexport interface ComparisonTableProps extends BaseProps {\r\n rows: ComparisonTableRow[];\r\n featureHeader?: ReactNode;\r\n includedHeader?: ReactNode;\r\n alternativeHeader?: ReactNode;\r\n}\r\n\r\nexport function ComparisonTable({ rows, featureHeader = \"Feature\", includedHeader = \"Tapiz\", alternativeHeader = \"Other\", className = \"\" }: ComparisonTableProps) {\r\n return (\r\n <div className={`overflow-x-auto border border-[var(--tapiz-border-strong)] ${className}`}>\r\n <table className=\"w-full text-sm\">\r\n <thead>\r\n <tr>\r\n <th className=\"px-4 py-3 text-left\">{featureHeader}</th>\r\n <th className=\"px-4 py-3 text-left\">{includedHeader}</th>\r\n <th className=\"px-4 py-3 text-left\">{alternativeHeader}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {rows.map((row, index) => (\r\n <tr key={index} className=\"border-t border-[var(--tapiz-border-subtle)]\">\r\n <td className=\"px-4 py-3 font-medium text-[var(--tapiz-text-primary)]\">{row.feature}</td>\r\n <td className=\"px-4 py-3 text-[var(--tapiz-text-secondary)]\">{row.included}</td>\r\n <td className=\"px-4 py-3 text-[var(--tapiz-text-muted)]\">{row.alternative}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AppShellProps extends BaseProps {\r\n sidebar?: ReactNode;\r\n topbar?: ReactNode;\r\n children: ReactNode;\r\n aside?: ReactNode;\r\n\r\n contentClassName?: string;\r\n variant?: \"default\" | \"grid\" | \"noise\";\r\n}\r\n\r\nconst variantClasses = {\r\n default: \"bg-[var(--tapiz-bg-page)]\",\r\n grid: \"bg-[var(--tapiz-bg-page)] tapiz-grid-bg\",\r\n noise: \"bg-[var(--tapiz-bg-page)] tapiz-noise-bg\",\r\n};\r\n\r\nexport function AppShell({ sidebar, topbar, children, aside, className = \"\", contentClassName = \"\", variant = \"default\" }: AppShellProps) {\r\n return (\r\n <div className={`min-h-screen text-[var(--tapiz-text-primary)] ${variantClasses[variant]} ${className}`}>\r\n {topbar}\r\n <div className=\"mx-auto flex w-full max-w-[1600px]\">\r\n {sidebar ? <aside className=\"hidden min-h-[calc(100vh-1px)] w-72 shrink-0 border-r border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] lg:block\">{sidebar}</aside> : null}\r\n <main className={`min-w-0 flex-1 px-[var(--tapiz-space-page-x)] py-6 ${contentClassName}`}>{children}</main>\r\n {aside ? <aside className=\"hidden w-80 shrink-0 border-l border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] xl:block\">{aside}</aside> : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SplitPaneProps extends BaseProps {\r\n primary: ReactNode;\r\n secondary: ReactNode;\r\n ratio?: \"50/50\" | \"60/40\" | \"70/30\";\r\n reverseOnMobile?: boolean;\r\n}\r\n\r\nconst ratios = {\r\n \"50/50\": \"lg:grid-cols-2\",\r\n \"60/40\": \"lg:grid-cols-[minmax(0,3fr)_minmax(320px,2fr)]\",\r\n \"70/30\": \"lg:grid-cols-[minmax(0,7fr)_minmax(280px,3fr)]\",\r\n};\r\n\r\nexport function SplitPane({ primary, secondary, ratio = \"60/40\", reverseOnMobile = false, className = \"\" }: SplitPaneProps) {\r\n return (\r\n <div className={`grid gap-5 ${ratios[ratio]} ${className}`}>\r\n <div className={reverseOnMobile ? \"order-2 lg:order-1\" : \"\"}>{primary}</div>\r\n <div className={reverseOnMobile ? \"order-1 lg:order-2\" : \"\"}>{secondary}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StackProps extends BaseProps {\r\n children: ReactNode;\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n direction?: \"vertical\" | \"horizontal\";\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n justify?: \"start\" | \"center\" | \"between\" | \"end\";\r\n wrap?: boolean;\r\n}\r\n\r\nconst gapClasses = { xs: \"gap-1\", sm: \"gap-2\", md: \"gap-4\", lg: \"gap-6\", xl: \"gap-8\" };\r\nconst alignClasses = { start: \"items-start\", center: \"items-center\", end: \"items-end\", stretch: \"items-stretch\" };\r\nconst justifyClasses = { start: \"justify-start\", center: \"justify-center\", between: \"justify-between\", end: \"justify-end\" };\r\n\r\nexport function Stack({ children, gap = \"md\", direction = \"vertical\", align = \"stretch\", justify = \"start\", wrap = false, className = \"\" }: StackProps) {\r\n return (\r\n <div className={`flex ${direction === \"vertical\" ? \"flex-col\" : \"flex-row\"} ${gapClasses[gap]} ${alignClasses[align]} ${justifyClasses[justify]} ${wrap ? \"flex-wrap\" : \"\"} ${className}`}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ClusterProps extends BaseProps {\r\n children: ReactNode;\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n justify?: \"start\" | \"center\" | \"between\" | \"end\";\r\n}\r\n\r\nconst gapClasses = { xs: \"gap-1\", sm: \"gap-2\", md: \"gap-3\", lg: \"gap-5\" };\r\nconst alignClasses = { start: \"items-start\", center: \"items-center\", end: \"items-end\" };\r\nconst justifyClasses = { start: \"justify-start\", center: \"justify-center\", between: \"justify-between\", end: \"justify-end\" };\r\n\r\nexport function Cluster({ children, gap = \"sm\", align = \"center\", justify = \"start\", className = \"\" }: ClusterProps) {\r\n return <div className={`flex flex-wrap ${gapClasses[gap]} ${alignClasses[align]} ${justifyClasses[justify]} ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface BreadcrumbItem {\r\n label: ReactNode;\r\n href?: string;\r\n current?: boolean;\r\n}\r\n\r\nexport interface BreadcrumbsProps extends BaseProps {\r\n items: BreadcrumbItem[];\r\n separator?: ReactNode;\r\n}\r\n\r\nexport function Breadcrumbs({ items, separator = \"/\", className = \"\" }: BreadcrumbsProps) {\r\n return (\r\n <nav aria-label=\"Breadcrumb\" className={`font-mono text-[10px] uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)] ${className}`}>\r\n <ol className=\"flex flex-wrap items-center gap-2\">\r\n {items.map((item, index) => (\r\n <li key={index} className=\"flex items-center gap-2\">\r\n {index > 0 ? <span aria-hidden=\"true\" className=\"text-[var(--tapiz-text-disabled)]\">{separator}</span> : null}\r\n {item.href && !item.current ? (\r\n <a className=\"hover:text-[var(--tapiz-accent)]\" href={item.href}>{item.label}</a>\r\n ) : (\r\n <span aria-current={item.current ? \"page\" : undefined} className={item.current ? \"text-[var(--tapiz-text-primary)]\" : \"\"}>{item.label}</span>\r\n )}\r\n </li>\r\n ))}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SidebarNavItem {\r\n label: ReactNode;\r\n href?: string;\r\n icon?: ReactNode;\r\n badge?: ReactNode;\r\n active?: boolean;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface SidebarNavGroup {\r\n label?: ReactNode;\r\n items: SidebarNavItem[];\r\n}\r\n\r\nexport interface SidebarNavProps extends BaseProps {\r\n groups: SidebarNavGroup[];\r\n header?: ReactNode;\r\n footer?: ReactNode;\r\n}\r\n\r\nexport function SidebarNav({ groups, header, footer, className = \"\" }: SidebarNavProps) {\r\n return (\r\n <div className={`flex h-full min-h-screen flex-col bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {header ? <div className=\"border-b border-[var(--tapiz-border-subtle)] p-4\">{header}</div> : null}\r\n <nav className=\"flex-1 space-y-6 p-3\">\r\n {groups.map((group, groupIndex) => (\r\n <div key={groupIndex}>\r\n {group.label ? <div className=\"mb-2 px-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{group.label}</div> : null}\r\n <div className=\"space-y-1\">\r\n {group.items.map((item, itemIndex) => <SidebarNavLink key={itemIndex} item={item} />)}\r\n </div>\r\n </div>\r\n ))}\r\n </nav>\r\n {footer ? <div className=\"border-t border-[var(--tapiz-border-subtle)] p-4\">{footer}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarNavLink({ item }: { item: SidebarNavItem }) {\r\n const className = [\r\n \"flex w-full items-center gap-3 border px-3 py-2 text-left text-sm font-medium\",\r\n item.active\r\n ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)] shadow-[inset_3px_0_0_var(--tapiz-accent)]\"\r\n : \"border-transparent text-[var(--tapiz-text-secondary)] hover:border-[var(--tapiz-border-subtle)] hover:bg-[var(--tapiz-bg-surface-muted)] hover:text-[var(--tapiz-text-primary)]\",\r\n item.disabled ? \"pointer-events-none opacity-40\" : \"\",\r\n ].filter(Boolean).join(\" \");\r\n\r\n const content = (\r\n <>\r\n {item.icon ? <span className=\"grid size-5 place-items-center text-[var(--tapiz-text-muted)]\">{item.icon}</span> : null}\r\n <span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\r\n {item.badge ? <span>{item.badge}</span> : null}\r\n </>\r\n );\r\n\r\n return item.href ? <a className={className} href={item.href}>{content}</a> : <button type=\"button\" className={className} onClick={item.onClick} disabled={item.disabled}>{content}</button>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TopNavLink {\r\n label: ReactNode;\r\n href?: string;\r\n active?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface TopNavProps extends BaseProps {\r\n brand?: ReactNode;\r\n links?: TopNavLink[];\r\n actions?: ReactNode;\r\n\r\n sticky?: boolean;\r\n}\r\n\r\nexport function TopNav({ brand, links = [], actions, className = \"\", sticky = true }: TopNavProps) {\r\n return (\r\n <header className={`${sticky ? \"sticky top-0 z-40\" : \"\"} border-b border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-surface)_88%,transparent)] backdrop-blur-xl ${className}`}>\r\n <div className=\"mx-auto flex h-16 max-w-[1600px] items-center gap-6 px-[var(--tapiz-space-page-x)]\">\r\n {brand ? <div className=\"shrink-0\">{brand}</div> : null}\r\n <nav className=\"hidden items-center gap-1 md:flex\">\r\n {links.map((link, index) => {\r\n const cls = `border px-3 py-1.5 text-sm font-medium ${link.active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-text-primary)]\" : \"border-transparent text-[var(--tapiz-text-secondary)] hover:border-[var(--tapiz-border-subtle)] hover:text-[var(--tapiz-text-primary)]\"}`;\r\n return link.href ? <a key={index} href={link.href} className={cls}>{link.label}</a> : <button key={index} type=\"button\" onClick={link.onClick} className={cls}>{link.label}</button>;\r\n })}\r\n </nav>\r\n {actions ? <div className=\"ml-auto flex items-center gap-2\">{actions}</div> : null}\r\n </div>\r\n </header>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TabItem {\r\n id: string;\r\n label: ReactNode;\r\n content: ReactNode;\r\n badge?: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface TabsProps extends BaseProps {\r\n items: TabItem[];\r\n activeId: string;\r\n onChange?: (id: string) => void;\r\n\r\n variant?: \"line\" | \"boxed\" | \"brutal\";\r\n}\r\n\r\nconst variants = {\r\n line: \"border-b border-[var(--tapiz-border-subtle)]\",\r\n boxed: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-1\",\r\n brutal: \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-1 shadow-[var(--tapiz-shadow-brutal)]\",\r\n};\r\n\r\nexport function Tabs({ items, activeId, onChange, className = \"\", variant = \"line\" }: TabsProps) {\r\n const active = items.find((item) => item.id === activeId) ?? items[0];\r\n return (\r\n <div className={className}>\r\n <div role=\"tablist\" className={`flex flex-wrap gap-1 ${variants[variant]}`}>\r\n {items.map((item) => {\r\n const selected = item.id === active?.id;\r\n return (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n disabled={item.disabled}\r\n onClick={() => onChange?.(item.id)}\r\n className={`inline-flex items-center gap-2 px-3 py-2 text-sm font-semibold disabled:cursor-not-allowed disabled:opacity-40 ${selected ? \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] shadow-[inset_0_-2px_0_var(--tapiz-accent)]\" : \"text-[var(--tapiz-text-muted)] hover:bg-[var(--tapiz-bg-surface)] hover:text-[var(--tapiz-text-primary)]\"}`}\r\n >\r\n {item.label}\r\n {item.badge}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div role=\"tabpanel\" className=\"pt-4\">{active?.content}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AccordionItem {\r\n id: string;\r\n title: ReactNode;\r\n content: ReactNode;\r\n meta?: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface AccordionProps extends BaseProps {\r\n items: AccordionItem[];\r\n openIds?: string[];\r\n onToggle?: (id: string) => void;\r\n\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, openIds = [], onToggle, className = \"\" }: AccordionProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item) => {\r\n const open = openIds.includes(item.id);\r\n return (\r\n <section key={item.id}>\r\n <button\r\n type=\"button\"\r\n disabled={item.disabled}\r\n aria-expanded={open}\r\n onClick={() => onToggle?.(item.id)}\r\n className=\"flex w-full items-center justify-between gap-4 px-4 py-3 text-left disabled:opacity-40\"\r\n >\r\n <span className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</span>\r\n <span className=\"flex items-center gap-3 text-[var(--tapiz-text-muted)]\">\r\n {item.meta}\r\n <span aria-hidden=\"true\" className=\"font-mono text-lg\">{open ? \"−\" : \"+\"}</span>\r\n </span>\r\n </button>\r\n {open ? <div className=\"border-t border-[var(--tapiz-border-subtle)] px-4 py-4 text-sm text-[var(--tapiz-text-secondary)]\">{item.content}</div> : null}\r\n </section>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StepItem {\r\n id: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n status?: \"complete\" | \"current\" | \"upcoming\" | \"error\";\r\n}\r\n\r\nexport interface StepperProps extends BaseProps {\r\n steps: StepItem[];\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nconst tone = {\r\n complete: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n current: \"border-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-accent)]\",\r\n upcoming: \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n error: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Stepper({ steps, orientation = \"horizontal\", className = \"\" }: StepperProps) {\r\n return (\r\n <ol className={`grid gap-3 ${orientation === \"horizontal\" ? \"md:grid-cols-[repeat(auto-fit,minmax(0,1fr))]\" : \"\"} ${className}`}>\r\n {steps.map((step, index) => {\r\n const status = step.status ?? \"upcoming\";\r\n return (\r\n <li key={step.id} className=\"flex gap-3\">\r\n <span className={`grid size-8 shrink-0 place-items-center border font-mono text-xs font-bold ${tone[status]}`}>{status === \"complete\" ? \"✓\" : index + 1}</span>\r\n <span className=\"min-w-0\">\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{step.label}</span>\r\n {step.description ? <span className=\"mt-1 block text-xs text-[var(--tapiz-text-muted)]\">{step.description}</span> : null}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DrawerProps extends BaseProps {\r\n open: boolean;\r\n onClose?: () => void;\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n children: ReactNode;\r\n footer?: ReactNode;\r\n side?: \"left\" | \"right\";\r\n}\r\n\r\nexport function Drawer({ open, onClose, title, description, children, footer, side = \"right\", className = \"\" }: DrawerProps) {\r\n if (!open) return null;\r\n return (\r\n <div className=\"fixed inset-0 z-50\">\r\n <button type=\"button\" aria-label=\"Close drawer\" className=\"absolute inset-0 bg-(--tapiz-bg-overlay)\" onClick={onClose} />\r\n <section className={`absolute top-0 h-full w-full max-w-md border-(--tapiz-border-strong) bg-(--tapiz-bg-surface) shadow-(--tapiz-shadow-lg) ${side === \"right\" ? \"right-0 border-l\" : \"left-0 border-r\"} ${className}`}>\r\n <header className=\"flex items-start justify-between gap-4 border-b border-(--tapiz-border-subtle) p-5\">\r\n <div>\r\n {title ? <h2 className=\"text-lg font-semibold text-(--tapiz-text-primary)\">{title}</h2> : null}\r\n {description ? <p className=\"mt-1 text-sm text-(--tapiz-text-muted)\">{description}</p> : null}\r\n </div>\r\n <button type=\"button\" onClick={onClose} className=\"border border-(--tapiz-border-subtle) px-2 py-1 font-mono text-sm text-(--tapiz-text-muted) hover:text-(--tapiz-text-primary)\">×</button>\r\n </header>\r\n <div className=\"max-h-[calc(100vh-9rem)] overflow-auto p-5\">{children}</div>\r\n {footer ? <footer className=\"border-t border-(--tapiz-border-subtle) p-4\">{footer}</footer> : null}\r\n </section>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PopoverProps extends BaseProps {\r\n trigger: ReactNode;\r\n children: ReactNode;\r\n open?: boolean;\r\n align?: \"start\" | \"end\";\r\n}\r\n\r\nexport function Popover({ trigger, children, open = false, align = \"start\", className = \"\" }: PopoverProps) {\r\n return (\r\n <div className={`relative inline-block ${className}`}>\r\n {trigger}\r\n {open ? (\r\n <div className={`absolute top-full z-40 mt-2 min-w-64 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-2 shadow-[var(--tapiz-shadow-md)] ${align === \"end\" ? \"right-0\" : \"left-0\"}`}>\r\n {children}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport { SearchInput } from \"../shared/SearchInput\";\r\n\r\nexport interface CommandItem {\r\n id: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n shortcut?: ReactNode;\r\n disabled?: boolean;\r\n onSelect?: () => void;\r\n}\r\n\r\nexport interface CommandGroup {\r\n label?: ReactNode;\r\n items: CommandItem[];\r\n}\r\n\r\nexport interface CommandMenuProps {\r\n open: boolean;\r\n onClose?: () => void;\r\n query?: string;\r\n onQueryChange?: (value: string) => void;\r\n groups: CommandGroup[];\r\n placeholder?: string;\r\n empty?: ReactNode;\r\n}\r\n\r\nexport function CommandMenu({ open, onClose, query = \"\", onQueryChange, groups, placeholder = \"Search commands…\", empty = \"No commands found.\" }: CommandMenuProps) {\r\n if (!open) return null;\r\n const hasItems = groups.some((group) => group.items.length > 0);\r\n return (\r\n <div className=\"fixed inset-0 z-50 grid place-items-start bg-[var(--tapiz-bg-overlay)] px-4 pt-[12vh]\" onClick={onClose}>\r\n <div className=\"mx-auto w-full max-w-2xl border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal-lg)]\" onClick={(e) => e.stopPropagation()}>\r\n <div className=\"border-b border-[var(--tapiz-border-subtle)] p-3\">\r\n <SearchInput value={query} onChange={(value) => onQueryChange?.(value)} placeholder={placeholder} autoFocus />\r\n </div>\r\n <div className=\"max-h-[50vh] overflow-auto p-2\">\r\n {!hasItems ? <div className=\"p-6 text-center text-sm text-[var(--tapiz-text-muted)]\">{empty}</div> : null}\r\n {groups.map((group, groupIndex) => (\r\n <div key={groupIndex} className=\"py-2\">\r\n {group.label ? <div className=\"px-2 pb-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{group.label}</div> : null}\r\n {group.items.map((item) => (\r\n <button key={item.id} type=\"button\" disabled={item.disabled} onClick={item.onSelect} className=\"flex w-full items-center gap-3 border border-transparent px-3 py-2 text-left hover:border-[var(--tapiz-border-subtle)] hover:bg-[var(--tapiz-bg-surface-muted)] disabled:opacity-40\">\r\n {item.icon ? <span className=\"grid size-8 place-items-center border border-[var(--tapiz-border-subtle)] text-[var(--tapiz-text-muted)]\">{item.icon}</span> : null}\r\n <span className=\"min-w-0 flex-1\">\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.label}</span>\r\n {item.description ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{item.description}</span> : null}\r\n </span>\r\n {item.shortcut ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.shortcut}</span> : null}\r\n </button>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { FieldHint } from \"./FieldHint\";\r\nimport { FieldLabel } from \"./FieldLabel\";\r\nimport { FormError } from \"../feedback/FormError\";\r\n\r\nexport interface FormFieldProps extends BaseProps {\r\n label?: ReactNode;\r\n hint?: ReactNode;\r\n error?: ReactNode;\r\n required?: boolean;\r\n htmlFor?: string;\r\n children: ReactNode;\r\n}\r\n\r\nexport function FormField({ label, hint, error, required, htmlFor, children, className = \"\" }: FormFieldProps) {\r\n return (\r\n <div className={`space-y-1.5 ${className}`}>\r\n {label ? <FieldLabel htmlFor={htmlFor}>{label}{required ? \" *\" : \"\"}</FieldLabel> : null}\r\n {children}\r\n {error ? <FormError message={String(error)} /> : hint ? <FieldHint>{hint}</FieldHint> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SwitchProps extends BaseProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n label?: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport function Switch({ checked = false, onChange, disabled, label, description, className = \"\" }: SwitchProps) {\r\n return (\r\n <label className={`flex cursor-pointer items-start gap-3 ${disabled ? \"cursor-not-allowed opacity-50\" : \"\"} ${className}`}>\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={`relative mt-0.5 h-6 w-11 border border-[var(--tapiz-border-strong)] ${checked ? \"bg-[var(--tapiz-accent)]\" : \"bg-[var(--tapiz-bg-surface-muted)]\"}`}\r\n >\r\n <span className={`absolute top-0.5 size-4 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] transition-transform ${checked ? \"left-5\" : \"left-0.5\"}`} />\r\n </button>\r\n {(label || description) ? (\r\n <span>\r\n {label ? <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{label}</span> : null}\r\n {description ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{description}</span> : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ToggleOption {\r\n value: string;\r\n label: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ToggleGroupProps extends BaseProps {\r\n options: ToggleOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n\r\n fullWidth?: boolean;\r\n}\r\n\r\nexport function ToggleGroup({ options, value, onChange, className = \"\", fullWidth = false }: ToggleGroupProps) {\r\n return (\r\n <div className={`inline-flex border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] p-1 ${fullWidth ? \"w-full\" : \"\"} ${className}`}>\r\n {options.map((option) => {\r\n const selected = option.value === value;\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n disabled={option.disabled}\r\n onClick={() => onChange?.(option.value)}\r\n className={`px-3 py-1.5 text-sm font-semibold disabled:opacity-40 ${fullWidth ? \"flex-1\" : \"\"} ${selected ? \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] shadow-[inset_0_-2px_0_var(--tapiz-accent)]\" : \"text-[var(--tapiz-text-muted)] hover:text-[var(--tapiz-text-primary)]\"}`}\r\n >\r\n {option.label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface InputGroupProps extends BaseProps {\r\n prefix?: ReactNode;\r\n suffix?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function InputGroup({ prefix, suffix, children, className = \"\" }: InputGroupProps) {\r\n return (\r\n <div className={`flex items-stretch border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] focus-within:border-[var(--tapiz-border-focus)] focus-within:shadow-[inset_3px_0_0_var(--tapiz-signal)] ${className}`}>\r\n {prefix ? <div className=\"flex items-center border-r border-[var(--tapiz-border-subtle)] px-3 text-sm text-[var(--tapiz-text-muted)]\">{prefix}</div> : null}\r\n <div className=\"min-w-0 flex-1 [&_input]:border-0 [&_input]:shadow-none [&_input]:focus:shadow-none\">{children}</div>\r\n {suffix ? <div className=\"flex items-center border-l border-[var(--tapiz-border-subtle)] px-3 text-sm text-[var(--tapiz-text-muted)]\">{suffix}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\r\n\r\nexport interface AlertProps extends BaseProps {\r\n tone?: AlertTone;\r\n title?: ReactNode;\r\n children?: ReactNode;\r\n icon?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<AlertTone, string> = {\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)] text-[var(--tapiz-info)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)] text-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n neutral: \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-secondary)]\",\r\n};\r\n\r\nexport function Alert({ tone = \"info\", title, children, icon, actions, className = \"\" }: AlertProps) {\r\n return (\r\n <div className={`flex gap-3 border p-4 ${toneClasses[tone]} ${className}`}>\r\n {icon ? <div className=\"mt-0.5 shrink-0\">{icon}</div> : null}\r\n <div className=\"min-w-0 flex-1\">\r\n {title ? <div className=\"font-semibold text-[var(--tapiz-text-primary)]\">{title}</div> : null}\r\n {children ? <div className=\"mt-1 text-sm text-[var(--tapiz-text-secondary)]\">{children}</div> : null}\r\n </div>\r\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface ProgressProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: string;\r\n showValue?: boolean;\r\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nconst tones = {\r\n accent: \"bg-[var(--tapiz-accent)]\",\r\n success: \"bg-[var(--tapiz-success)]\",\r\n warning: \"bg-[var(--tapiz-warning)]\",\r\n danger: \"bg-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Progress({ value, max = 100, label, showValue = false, tone = \"accent\", className = \"\" }: ProgressProps) {\r\n const percentage = Math.max(0, Math.min(100, (value / max) * 100));\r\n return (\r\n <div className={className}>\r\n {(label || showValue) ? (\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-xs text-[var(--tapiz-text-muted)]\">\r\n {label ? <span>{label}</span> : <span />}\r\n {showValue ? <span className=\"font-mono\">{Math.round(percentage)}%</span> : null}\r\n </div>\r\n ) : null}\r\n <div className=\"h-2 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n <div className={`h-full ${tones[tone]}`} style={{ width: `${percentage}%` }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface AvatarProps extends BaseProps {\r\n src?: string;\r\n name?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizes = { xs: \"size-6 text-[10px]\", sm: \"size-8 text-xs\", md: \"size-10 text-sm\", lg: \"size-14 text-base\" };\r\n\r\nexport function Avatar({ src, name = \"?\", size = \"md\", className = \"\" }: AvatarProps) {\r\n const initials = name.split(\" \").filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase()).join(\"\") || \"?\";\r\n return src ? (\r\n <img src={src} alt={name} className={`border border-[var(--tapiz-border-strong)] object-cover ${sizes[size]} ${className}`} />\r\n ) : (\r\n <span className={`inline-grid place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] font-mono font-bold text-[var(--tapiz-accent)] ${sizes[size]} ${className}`}>{initials}</span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KbdProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Kbd({ children, className = \"\" }: KbdProps) {\r\n return <kbd className={`inline-flex min-w-5 items-center justify-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] px-1.5 py-0.5 font-mono text-[10px] font-bold text-[var(--tapiz-text-secondary)] shadow-[1px_1px_0_var(--tapiz-border-strong)] ${className}`}>{children}</kbd>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TimelineItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n time?: ReactNode;\r\n icon?: ReactNode;\r\n tone?: \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nexport interface TimelineProps extends BaseProps {\r\n items: TimelineItem[];\r\n}\r\n\r\nconst tones = {\r\n neutral: \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)] text-[var(--tapiz-info)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)] text-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Timeline({ items, className = \"\" }: TimelineProps) {\r\n return (\r\n <ol className={`relative space-y-4 before:absolute before:left-4 before:top-2 before:h-[calc(100%-1rem)] before:w-px before:bg-[var(--tapiz-border-subtle)] ${className}`}>\r\n {items.map((item) => (\r\n <li key={item.id} className=\"relative flex gap-3\">\r\n <span className={`z-10 grid size-8 shrink-0 place-items-center border text-xs ${tones[item.tone ?? \"neutral\"]}`}>{item.icon ?? \"•\"}</span>\r\n <span className=\"min-w-0 flex-1 pb-2\">\r\n <span className=\"flex flex-wrap items-baseline justify-between gap-2\">\r\n <span className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</span>\r\n {item.time ? <span className=\"font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}\r\n </span>\r\n {item.description ? <span className=\"mt-1 block text-sm text-[var(--tapiz-text-secondary)]\">{item.description}</span> : null}\r\n </span>\r\n </li>\r\n ))}\r\n </ol>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KeyValueItem {\r\n keyLabel: ReactNode;\r\n value: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface KeyValueListProps extends BaseProps {\r\n items: KeyValueItem[];\r\n\r\n density?: \"compact\" | \"normal\";\r\n}\r\n\r\nexport function KeyValueList({ items, className = \"\", density = \"normal\" }: KeyValueListProps) {\r\n return (\r\n <dl className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item, index) => (\r\n <div key={index} className={`grid gap-2 ${density === \"compact\" ? \"p-3 md:grid-cols-[160px_1fr]\" : \"p-4 md:grid-cols-[220px_1fr]\"}`}>\r\n <dt className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{item.keyLabel}</dt>\r\n <dd>\r\n <div className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.value}</div>\r\n {item.description ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.description}</div> : null}\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CodeBlockProps extends BaseProps {\r\n children: ReactNode;\r\n language?: string;\r\n title?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function CodeBlock({ children, language, title, actions, className = \"\" }: CodeBlockProps) {\r\n return (\r\n <figure className={`overflow-hidden border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {(title || language || actions) ? (\r\n <figcaption className=\"flex items-center justify-between gap-3 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] px-3 py-2\">\r\n <span className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{title ?? language}</span>\r\n {actions}\r\n </figcaption>\r\n ) : null}\r\n <pre className=\"overflow-auto p-4 text-sm leading-6 text-[var(--tapiz-text-secondary)]\"><code>{children}</code></pre>\r\n </figure>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface LogoCloudItem {\r\n name: string;\r\n logo?: ReactNode;\r\n}\r\n\r\nexport interface LogoCloudProps extends BaseProps {\r\n title?: ReactNode;\r\n items: LogoCloudItem[];\r\n}\r\n\r\nexport function LogoCloud({ title, items, className = \"\" }: LogoCloudProps) {\r\n return (\r\n <section className={`border-y border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] py-8 ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-[var(--tapiz-space-page-x)]\">\r\n {title ? <p className=\"mb-6 text-center font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{title}</p> : null}\r\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4 lg:grid-cols-6\">\r\n {items.map((item) => (\r\n <div key={item.name} className=\"grid min-h-20 place-items-center border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] px-4 text-center text-sm font-semibold text-[var(--tapiz-text-secondary)]\">\r\n {item.logo ?? item.name}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface TestimonialCardProps extends BaseProps {\r\n quote: ReactNode;\r\n author: string;\r\n role?: ReactNode;\r\n avatarSrc?: string;\r\n\r\n variant?: \"surface\" | \"brutal\";\r\n}\r\n\r\nexport function TestimonialCard({ quote, author, role, avatarSrc, className = \"\", variant = \"surface\" }: TestimonialCardProps) {\r\n return (\r\n <figure className={`border bg-[var(--tapiz-bg-surface)] p-5 ${variant === \"brutal\" ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\" : \"border-[var(--tapiz-border-subtle)] shadow-[var(--tapiz-shadow-sm)]\"} ${className}`}>\r\n <blockquote className=\"text-base leading-7 text-[var(--tapiz-text-secondary)]\">“{quote}”</blockquote>\r\n <figcaption className=\"mt-5 flex items-center gap-3\">\r\n <Avatar name={author} src={avatarSrc} size=\"sm\" />\r\n <span>\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{author}</span>\r\n {role ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{role}</span> : null}\r\n </span>\r\n </figcaption>\r\n </figure>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"../forms/Button\";\r\n\r\nexport interface PricingCardProps extends BaseProps {\r\n name: ReactNode;\r\n price: ReactNode;\r\n description?: ReactNode;\r\n features?: ReactNode[];\r\n cta?: ReactNode;\r\n highlighted?: boolean;\r\n}\r\n\r\nexport function PricingCard({ name, price, description, features = [], cta, highlighted = false, className = \"\" }: PricingCardProps) {\r\n return (\r\n <section className={`flex h-full flex-col border bg-[var(--tapiz-bg-surface)] p-6 ${highlighted ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal-lg)]\" : \"border-[var(--tapiz-border-subtle)] shadow-[var(--tapiz-shadow-sm)]\"} ${className}`}>\r\n <div className=\"flex-1\">\r\n <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{name}</h3>\r\n {description ? <p className=\"mt-2 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n <div className=\"mt-6 text-4xl font-semibold tracking-tight text-[var(--tapiz-text-primary)]\">{price}</div>\r\n <ul className=\"mt-6 space-y-3 text-sm text-[var(--tapiz-text-secondary)]\">\r\n {features.map((feature, index) => <li key={index} className=\"flex gap-2\"><span className=\"text-[var(--tapiz-success)]\">✓</span><span>{feature}</span></li>)}\r\n </ul>\r\n </div>\r\n <div className=\"mt-6\">{cta ?? <Button variant={highlighted ? \"primary\" : \"secondary\"} fullWidth>Get started</Button>}</div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StatsBandItem {\r\n value: ReactNode;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface StatsBandProps extends BaseProps {\r\n items: StatsBandItem[];\r\n}\r\n\r\nexport function StatsBand({ items, className = \"\" }: StatsBandProps) {\r\n return (\r\n <section className={`border-y border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-inverse)] text-[var(--tapiz-text-inverse)] ${className}`}>\r\n <div className=\"mx-auto grid max-w-7xl divide-y divide-[color-mix(in_srgb,var(--tapiz-text-inverse)_24%,transparent)] px-[var(--tapiz-space-page-x)] md:grid-cols-3 md:divide-x md:divide-y-0\">\r\n {items.map((item, index) => (\r\n <div key={index} className=\"p-6 md:p-8\">\r\n <div className=\"text-3xl font-semibold tracking-tight\">{item.value}</div>\r\n <div className=\"mt-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] opacity-70\">{item.label}</div>\r\n {item.description ? <div className=\"mt-3 text-sm opacity-70\">{item.description}</div> : null}\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n );\r\n}\r\n","export type TapizFrameworkPreset = \"enterprise\" | \"brutal\" | \"dashboard\" | \"marketing\" | \"compact\";\r\n\r\nexport interface TapizPresetDefinition {\r\n shell: string;\r\n card: string;\r\n button: \"primary\" | \"secondary\" | \"brutal\";\r\n density: \"compact\" | \"comfortable\" | \"spacious\";\r\n}\r\n\r\nexport const tapizFrameworkPresets: Record<TapizFrameworkPreset, TapizPresetDefinition> = {\r\n enterprise: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"tapiz-enterprise-card\",\r\n button: \"primary\",\r\n density: \"comfortable\",\r\n },\r\n brutal: {\r\n shell: \"tapiz-enterprise-shell tapiz-grid-bg\",\r\n card: \"tapiz-brutal-card\",\r\n button: \"brutal\",\r\n density: \"comfortable\",\r\n },\r\n dashboard: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"stat-card\",\r\n button: \"secondary\",\r\n density: \"compact\",\r\n },\r\n marketing: {\r\n shell: \"tapiz-enterprise-shell tapiz-noise-bg\",\r\n card: \"tapiz-enterprise-card\",\r\n button: \"primary\",\r\n density: \"spacious\",\r\n },\r\n compact: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"card\",\r\n button: \"secondary\",\r\n density: \"compact\",\r\n },\r\n};\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport interface ContainerProps extends BaseProps {\r\n children: ReactNode;\r\n size?: ContainerSize;\r\n padded?: boolean;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst sizeClasses: Record<ContainerSize, string> = {\r\n sm: \"max-w-3xl\",\r\n md: \"max-w-5xl\",\r\n lg: \"max-w-7xl\",\r\n xl: \"max-w-[90rem]\",\r\n full: \"max-w-none\",\r\n};\r\n\r\nexport function Container({ children, size = \"lg\", padded = true, className = \"\", style }: ContainerProps) {\r\n return (\r\n <div\r\n className={[\"mx-auto w-full\", sizeClasses[size], padded ? \"px-[var(--tapiz-space-page-x)]\" : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type SurfaceVariant = \"canvas\" | \"surface\" | \"raised\" | \"muted\" | \"brutal\" | \"inverse\";\r\nexport type SurfacePadding = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface SurfaceProps extends BaseProps {\r\n children: ReactNode;\r\n variant?: SurfaceVariant;\r\n padding?: SurfacePadding;\r\n bordered?: boolean;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst variantClasses: Record<SurfaceVariant, string> = {\r\n canvas: \"bg-[var(--tapiz-bg-page)] text-[var(--tapiz-text-primary)]\",\r\n surface: \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)]\",\r\n raised: \"bg-[var(--tapiz-bg-surface-raised)] text-[var(--tapiz-text-primary)] shadow-[var(--tapiz-shadow-md)]\",\r\n muted: \"bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-text-primary)]\",\r\n brutal: \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\",\r\n inverse: \"bg-[var(--tapiz-bg-surface-inverse)] text-[var(--tapiz-text-inverse)]\",\r\n};\r\n\r\nconst paddingClasses: Record<SurfacePadding, string> = {\r\n none: \"p-0\",\r\n sm: \"p-3\",\r\n md: \"p-5\",\r\n lg: \"p-6\",\r\n xl: \"p-8\",\r\n};\r\n\r\nexport function Surface({ children, variant = \"surface\", padding = \"md\", bordered = true, className = \"\", style }: SurfaceProps) {\r\n return (\r\n <section\r\n className={[variantClasses[variant], paddingClasses[padding], bordered && variant !== \"brutal\" ? \"border border-[var(--tapiz-border-subtle)]\" : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface DividerProps extends BaseProps {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n label?: string;\r\n}\r\n\r\nexport function Divider({ orientation = \"horizontal\", label, className = \"\" }: DividerProps) {\r\n if (orientation === \"vertical\") {\r\n return <div className={`mx-2 min-h-6 w-px bg-[var(--tapiz-border-subtle)] ${className}`} aria-hidden=\"true\" />;\r\n }\r\n\r\n if (label) {\r\n return (\r\n <div className={`flex items-center gap-3 ${className}`}>\r\n <div className=\"h-px flex-1 bg-[var(--tapiz-border-subtle)]\" />\r\n <span className=\"font-mono text-[10px] uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{label}</span>\r\n <div className=\"h-px flex-1 bg-[var(--tapiz-border-subtle)]\" />\r\n </div>\r\n );\r\n }\r\n\r\n return <hr className={`border-[var(--tapiz-border-subtle)] ${className}`} />;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface ResponsiveGridProps extends BaseProps {\r\n children: ReactNode;\r\n min?: string;\r\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst gapClasses = {\r\n sm: \"gap-3\",\r\n md: \"gap-4\",\r\n lg: \"gap-6\",\r\n xl: \"gap-8\",\r\n};\r\n\r\nexport function ResponsiveGrid({ children, min = \"18rem\", gap = \"md\", className = \"\", style }: ResponsiveGridProps) {\r\n return (\r\n <div\r\n className={`grid ${gapClasses[gap]} ${className}`}\r\n style={{ gridTemplateColumns: `repeat(auto-fit, minmax(${min}, 1fr))`, ...style }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties } from \"react\";\r\n\r\nexport interface SparklineProps extends BaseProps {\r\n values: number[];\r\n width?: number;\r\n height?: number;\r\n label?: string;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function Sparkline({ values, width = 160, height = 48, label = \"Trend\", className = \"\", style }: SparklineProps) {\r\n const safeValues = values.length ? values : [0];\r\n const min = Math.min(...safeValues);\r\n const max = Math.max(...safeValues);\r\n const range = max - min || 1;\r\n const step = safeValues.length > 1 ? width / (safeValues.length - 1) : width;\r\n const points = safeValues\r\n .map((value, index) => {\r\n const x = index * step;\r\n const y = height - ((value - min) / range) * (height - 6) - 3;\r\n return `${x},${y}`;\r\n })\r\n .join(\" \");\r\n\r\n return (\r\n <svg className={className} style={style} width={width} height={height} viewBox={`0 0 ${width} ${height}`} role=\"img\" aria-label={label}>\r\n <polyline points={points} fill=\"none\" stroke=\"var(--tapiz-accent)\" strokeWidth=\"2\" strokeLinecap=\"square\" strokeLinejoin=\"miter\" />\r\n <line x1=\"0\" x2={width} y1={height - 1} y2={height - 1} stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"1\" />\r\n </svg>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface BarListItem {\r\n label: ReactNode;\r\n value: number;\r\n detail?: ReactNode;\r\n}\r\n\r\nexport interface BarListProps extends BaseProps {\r\n items: BarListItem[];\r\n max?: number;\r\n valueFormatter?: (value: number) => ReactNode;\r\n}\r\n\r\nexport function BarList({ items, max, valueFormatter = (value) => value, className = \"\" }: BarListProps) {\r\n const computedMax = max ?? Math.max(1, ...items.map((item) => item.value));\r\n\r\n return (\r\n <div className={`space-y-3 ${className}`}>\r\n {items.map((item, index) => {\r\n const percent = Math.max(0, Math.min(100, (item.value / computedMax) * 100));\r\n return (\r\n <div key={index}>\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-sm\">\r\n <span className=\"font-medium text-[var(--tapiz-text-secondary)]\">{item.label}</span>\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{valueFormatter(item.value)}</span>\r\n </div>\r\n <div className=\"h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n <div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${percent}%` }} />\r\n </div>\r\n {item.detail ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.detail}</div> : null}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DonutMetricProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: ReactNode;\r\n caption?: ReactNode;\r\n size?: number;\r\n}\r\n\r\nexport function DonutMetric({ value, max = 100, label, caption, size = 112, className = \"\" }: DonutMetricProps) {\r\n const radius = 42;\r\n const circumference = 2 * Math.PI * radius;\r\n const ratio = Math.max(0, Math.min(1, value / max));\r\n const offset = circumference * (1 - ratio);\r\n\r\n return (\r\n <div className={`inline-flex items-center gap-4 ${className}`}>\r\n <svg width={size} height={size} viewBox=\"0 0 112 112\" role=\"img\" aria-label={`${Math.round(ratio * 100)}%`}>\r\n <circle cx=\"56\" cy=\"56\" r={radius} fill=\"none\" stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"10\" />\r\n <circle\r\n cx=\"56\"\r\n cy=\"56\"\r\n r={radius}\r\n fill=\"none\"\r\n stroke=\"var(--tapiz-accent)\"\r\n strokeWidth=\"10\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={offset}\r\n strokeLinecap=\"square\"\r\n transform=\"rotate(-90 56 56)\"\r\n />\r\n <text x=\"56\" y=\"61\" textAnchor=\"middle\" className=\"fill-[var(--tapiz-text-primary)] font-mono text-lg font-bold\">\r\n {Math.round(ratio * 100)}%\r\n </text>\r\n </svg>\r\n {(label || caption) ? (\r\n <div>\r\n {label ? <div className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{label}</div> : null}\r\n {caption ? <div className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{caption}</div> : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FilterChipProps extends BaseProps {\r\n children: ReactNode;\r\n active?: boolean;\r\n onRemove?: () => void;\r\n}\r\n\r\nexport function FilterChip({ children, active = false, onRemove, className = \"\" }: FilterChipProps) {\r\n return (\r\n <span\r\n className={[\r\n \"inline-flex items-center gap-2 border px-2.5 py-1 font-mono text-[11px] uppercase tracking-[0.12em]\",\r\n active\r\n ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)]\"\r\n : \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n className,\r\n ].join(\" \")}\r\n >\r\n {children}\r\n {onRemove ? (\r\n <button type=\"button\" onClick={onRemove} className=\"text-[var(--tapiz-text-muted)] hover:text-[var(--tapiz-danger)]\" aria-label=\"Remove filter\">\r\n ×\r\n </button>\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DataToolbarProps extends BaseProps {\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n search?: ReactNode;\r\n filters?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function DataToolbar({ title, description, search, filters, actions, className = \"\" }: DataToolbarProps) {\r\n return (\r\n <div className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4 ${className}`}>\r\n <div className=\"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between\">\r\n <div>\r\n {title ? <h3 className=\"text-base font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n {actions ? <div className=\"flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n {(search || filters) ? (\r\n <div className=\"mt-4 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between\">\r\n {search ? <div className=\"min-w-0 flex-1\">{search}</div> : null}\r\n {filters ? <div className=\"flex flex-wrap gap-2\">{filters}</div> : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface ResourceCardProps extends BaseProps {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n eyebrow?: ReactNode;\r\n icon?: ReactNode;\r\n meta?: ReactNode;\r\n status?: ReactNode;\r\n actions?: ReactNode;\r\n href?: string;\r\n}\r\n\r\nexport function ResourceCard({ title, description, eyebrow, icon, meta, status, actions, href, className = \"\" }: ResourceCardProps) {\r\n const content = (\r\n <>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"flex min-w-0 items-start gap-3\">\r\n {icon ? <div className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-2 text-[var(--tapiz-accent)]\">{icon}</div> : null}\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-2\">{eyebrow}</div> : null}\r\n <h3 className=\"truncate text-base font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n {description ? <p className=\"mt-2 line-clamp-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n {status ? <Badge>{status}</Badge> : null}\r\n </div>\r\n {(meta || actions) ? (\r\n <div className=\"mt-5 flex flex-wrap items-center justify-between gap-3 border-t border-[var(--tapiz-border-subtle)] pt-4\">\r\n {meta ? <div className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{meta}</div> : <span />}\r\n {actions ? <div className=\"flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n ) : null}\r\n </>\r\n );\r\n\r\n const classes = `block border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-sm)] hover:border-[var(--tapiz-border-strong)] hover:shadow-[var(--tapiz-shadow-md)] ${className}`;\r\n\r\n return href ? <a href={href} className={classes}>{content}</a> : <article className={classes}>{content}</article>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { StatusBadge } from \"../shared/StatusBadge\";\r\n\r\nexport type IntegrationStatus = \"connected\" | \"disconnected\" | \"syncing\" | \"error\";\r\n\r\nexport interface IntegrationCardProps extends BaseProps {\r\n name: ReactNode;\r\n description?: ReactNode;\r\n logo?: ReactNode;\r\n status?: IntegrationStatus;\r\n lastSync?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst statusLabel: Record<IntegrationStatus, string> = {\r\n connected: \"Connected\",\r\n disconnected: \"Disconnected\",\r\n syncing: \"Syncing\",\r\n error: \"Error\",\r\n};\r\n\r\nconst statusVariant: Record<IntegrationStatus, \"success\" | \"default\" | \"info\" | \"danger\"> = {\r\n connected: \"success\",\r\n disconnected: \"default\",\r\n syncing: \"info\",\r\n error: \"danger\",\r\n};\r\n\r\nexport function IntegrationCard({ name, description, logo, status = \"disconnected\", lastSync, actions, className = \"\" }: IntegrationCardProps) {\r\n return (\r\n <article className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 ${className}`}>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"flex items-start gap-3\">\r\n <div className=\"flex size-11 items-center justify-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-accent)]\">\r\n {logo ?? <span className=\"font-mono text-xs\">API</span>}\r\n </div>\r\n <div>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{name}</h3>\r\n {description ? <p className=\"mt-1 text-sm leading-5 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n <StatusBadge variant={statusVariant[status]} label={statusLabel[status]} />\r\n </div>\r\n <div className=\"mt-5 flex flex-wrap items-center justify-between gap-3 border-t border-[var(--tapiz-border-subtle)] pt-4\">\r\n <div className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{lastSync ?? \"No sync yet\"}</div>\r\n {actions ? <div className=\"flex gap-2\">{actions}</div> : null}\r\n </div>\r\n </article>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type HealthTone = \"operational\" | \"degraded\" | \"outage\" | \"unknown\";\r\n\r\nexport interface HealthIndicatorProps extends BaseProps {\r\n tone?: HealthTone;\r\n label?: ReactNode;\r\n detail?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<HealthTone, string> = {\r\n operational: \"bg-[var(--tapiz-success)]\",\r\n degraded: \"bg-[var(--tapiz-warning)]\",\r\n outage: \"bg-[var(--tapiz-danger)]\",\r\n unknown: \"bg-[var(--tapiz-text-disabled)]\",\r\n};\r\n\r\nconst defaultLabel: Record<HealthTone, string> = {\r\n operational: \"Operational\",\r\n degraded: \"Degraded\",\r\n outage: \"Outage\",\r\n unknown: \"Unknown\",\r\n};\r\n\r\nexport function HealthIndicator({ tone = \"unknown\", label, detail, className = \"\" }: HealthIndicatorProps) {\r\n return (\r\n <div className={`inline-flex items-center gap-3 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] px-3 py-2 ${className}`}>\r\n <span className={`size-2.5 ${toneClasses[tone]}`} aria-hidden=\"true\" />\r\n <span className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{label ?? defaultLabel[tone]}</span>\r\n {detail ? <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{detail}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface AuditLogItem {\r\n actor: string;\r\n action: ReactNode;\r\n timestamp: ReactNode;\r\n detail?: ReactNode;\r\n initials?: string;\r\n}\r\n\r\nexport interface AuditLogProps extends BaseProps {\r\n items: AuditLogItem[];\r\n}\r\n\r\nexport function AuditLog({ items, className = \"\" }: AuditLogProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item, index) => (\r\n <div key={index} className=\"flex gap-3 p-4\">\r\n <Avatar name={item.initials ?? item.actor} size=\"sm\" />\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\r\n <p className=\"text-sm text-[var(--tapiz-text-secondary)]\"><strong className=\"text-[var(--tapiz-text-primary)]\">{item.actor}</strong> {item.action}</p>\r\n <span className=\"font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.timestamp}</span>\r\n </div>\r\n {item.detail ? <div className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{item.detail}</div> : null}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KanbanCardItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n meta?: ReactNode;\r\n tone?: \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nexport interface KanbanColumn {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n items: KanbanCardItem[];\r\n}\r\n\r\nexport interface KanbanBoardProps extends BaseProps {\r\n columns: KanbanColumn[];\r\n}\r\n\r\nconst toneClasses: Record<NonNullable<KanbanCardItem[\"tone\"]>, string> = {\r\n default: \"border-[var(--tapiz-border-subtle)]\",\r\n accent: \"border-[var(--tapiz-accent)]\",\r\n success: \"border-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function KanbanBoard({ columns, className = \"\" }: KanbanBoardProps) {\r\n return (\r\n <div className={`grid gap-4 overflow-x-auto md:grid-flow-col md:auto-cols-[minmax(18rem,1fr)] ${className}`}>\r\n {columns.map((column) => (\r\n <section key={column.id} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-3\">\r\n <div className=\"mb-3 flex items-start justify-between gap-3\">\r\n <div>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{column.title}</h3>\r\n {column.description ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{column.description}</p> : null}\r\n </div>\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{column.items.length}</span>\r\n </div>\r\n <div className=\"space-y-3\">\r\n {column.items.map((item) => (\r\n <article key={item.id} className={`border-l-2 bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-sm)] ${toneClasses[item.tone ?? \"default\"]}`}>\r\n <h4 className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{item.title}</h4>\r\n {item.description ? <p className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}\r\n {item.meta ? <div className=\"mt-3 font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.meta}</div> : null}\r\n </article>\r\n ))}\r\n </div>\r\n </section>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AccessMatrixRole {\r\n key: string;\r\n label: ReactNode;\r\n}\r\n\r\nexport interface AccessMatrixPermission {\r\n key: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n roles: Record<string, boolean>;\r\n}\r\n\r\nexport interface AccessMatrixProps extends BaseProps {\r\n roles: AccessMatrixRole[];\r\n permissions: AccessMatrixPermission[];\r\n}\r\n\r\nexport function AccessMatrix({ roles, permissions, className = \"\" }: AccessMatrixProps) {\r\n return (\r\n <div className={`overflow-x-auto border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n <table className=\"min-w-full text-sm\">\r\n <thead>\r\n <tr>\r\n <th className=\"px-4 py-3 text-left\">Permission</th>\r\n {roles.map((role) => <th key={role.key} className=\"px-4 py-3 text-center\">{role.label}</th>)}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {permissions.map((permission) => (\r\n <tr key={permission.key}>\r\n <td className=\"px-4 py-3\">\r\n <div className=\"font-medium text-[var(--tapiz-text-primary)]\">{permission.label}</div>\r\n {permission.description ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{permission.description}</div> : null}\r\n </td>\r\n {roles.map((role) => (\r\n <td key={role.key} className=\"px-4 py-3 text-center\">\r\n <span className={permission.roles[role.key] ? \"text-[var(--tapiz-success)]\" : \"text-[var(--tapiz-text-disabled)]\"}>\r\n {permission.roles[role.key] ? \"✓\" : \"—\"}\r\n </span>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CalendarGridDay {\r\n date: ReactNode;\r\n label?: ReactNode;\r\n muted?: boolean;\r\n selected?: boolean;\r\n events?: ReactNode[];\r\n}\r\n\r\nexport interface CalendarGridProps extends BaseProps {\r\n days: CalendarGridDay[];\r\n weekdays?: ReactNode[];\r\n}\r\n\r\nconst defaultWeekdays = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\r\n\r\nexport function CalendarGrid({ days, weekdays = defaultWeekdays, className = \"\" }: CalendarGridProps) {\r\n return (\r\n <div className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n <div className=\"grid grid-cols-7 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n {weekdays.map((day, index) => <div key={index} className=\"px-3 py-2 font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{day}</div>)}\r\n </div>\r\n <div className=\"grid grid-cols-7\">\r\n {days.map((day, index) => (\r\n <div key={index} className={`min-h-28 border-b border-r border-[var(--tapiz-border-subtle)] p-2 ${day.muted ? \"opacity-45\" : \"\"} ${day.selected ? \"bg-[var(--tapiz-accent-soft)]\" : \"\"}`}>\r\n <div className=\"flex items-center justify-between gap-2\">\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-primary)]\">{day.date}</span>\r\n {day.label ? <span className=\"text-[10px] text-[var(--tapiz-text-muted)]\">{day.label}</span> : null}\r\n </div>\r\n {day.events?.length ? (\r\n <div className=\"mt-2 space-y-1\">\r\n {day.events.map((event, eventIndex) => <div key={eventIndex} className=\"truncate border-l-2 border-[var(--tapiz-accent)] bg-[var(--tapiz-bg-surface-muted)] px-2 py-1 text-[11px] text-[var(--tapiz-text-secondary)]\">{event}</div>)}\r\n </div>\r\n ) : null}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\r\n label?: string;\r\n valueLabel?: string;\r\n}\r\n\r\nexport function Slider({ label, valueLabel, className = \"\", ...props }: SliderProps) {\r\n return (\r\n <label className={`block ${className}`}>\r\n {(label || valueLabel) ? (\r\n <span className=\"mb-2 flex items-center justify-between gap-3 text-sm\">\r\n {label ? <span className=\"font-medium text-[var(--tapiz-text-secondary)]\">{label}</span> : <span />}\r\n {valueLabel ? <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{valueLabel}</span> : null}\r\n </span>\r\n ) : null}\r\n <input\r\n {...props}\r\n type=\"range\"\r\n className=\"h-2 w-full cursor-pointer appearance-none border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] accent-[var(--tapiz-accent)]\"\r\n />\r\n </label>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { InputHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FileDropzoneProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"title\"> { \r\n title?: ReactNode;\r\n description?: ReactNode;\r\n actionLabel?: ReactNode;\r\n\r\n}\r\n\r\nexport function FileDropzone({ title = \"Drop files here\", description, actionLabel = \"Browse\", className = \"\", ...props }: FileDropzoneProps) {\r\n return (\r\n <label className={`block cursor-pointer border-2 border-dashed border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-6 text-center hover:bg-[var(--tapiz-bg-surface-muted)] ${className}`}>\r\n <input {...props} type=\"file\" className=\"sr-only\" />\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</span>\r\n {description ? <span className=\"mt-2 block text-sm text-[var(--tapiz-text-muted)]\">{description}</span> : null}\r\n <span className=\"mt-4 inline-flex border border-[var(--tapiz-border-strong)] px-3 py-1.5 font-mono text-xs uppercase tracking-[0.12em] text-[var(--tapiz-accent)]\">{actionLabel}</span>\r\n </label>\r\n );\r\n}\r\n","import { useState } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Eye, EyeOff } from \"../icons/index\";\n\nexport interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Accessible label for the reveal toggle. */\n revealLabel?: string;\n}\n\nexport function PasswordInput({\n revealLabel = \"Show password\",\n className = \"\",\n ...props\n}: PasswordInputProps) {\n const [visible, setVisible] = useState(false);\n\n return (\n <div\n className={`flex border border-(--tapiz-border-strong) bg-(--tapiz-bg-surface) focus-within:border-(--tapiz-border-focus) focus-within:shadow-[inset_3px_0_0_0_var(--tapiz-signal)] ${className}`}\n >\n {/* Wrapper već prikazuje focus signal (focus-within); inner input ga ne sme duplirati,\n inače se signal pomera sa paddingom wrappera (npr. pl-10 zbog ikonice). */}\n <input\n {...props}\n type={visible ? \"text\" : \"password\"}\n className=\"min-w-0 flex-1 border-0 bg-transparent px-3 py-2 text-sm text-(--tapiz-text-primary) outline-none focus:shadow-none!\"\n />\n <button\n type=\"button\"\n aria-label={revealLabel}\n aria-pressed={visible}\n onClick={() => setVisible((v) => !v)}\n tabIndex={-1}\n className=\"grid place-items-center px-3 text-(--tapiz-text-muted) transition-colors hover:text-(--tapiz-text-primary)\"\n >\n {visible ? <EyeOff size={15} /> : <Eye size={15} />}\n </button>\n </div>\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\r\n\r\nexport interface TextareaCounterProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n maxLength: number;\r\n value?: string;\r\n}\r\n\r\nexport function TextareaCounter({ maxLength, value = \"\", className = \"\", ...props }: TextareaCounterProps) {\r\n const count = value.length;\r\n return (\r\n <div className={className}>\r\n <textarea {...props} value={value} maxLength={maxLength} className=\"input-field min-h-28\" />\r\n <div className=\"mt-1 text-right font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{count}/{maxLength}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type CalloutTone = \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\r\n\r\nexport interface CalloutProps extends BaseProps {\r\n title?: ReactNode;\r\n children?: ReactNode;\r\n tone?: CalloutTone;\r\n icon?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<CalloutTone, string> = {\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n neutral: \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n};\r\n\r\nexport function Callout({ title, children, tone = \"info\", icon, actions, className = \"\" }: CalloutProps) {\r\n return (\r\n <aside className={`border-l-4 p-4 ${toneClasses[tone]} ${className}`}>\r\n <div className=\"flex gap-3\">\r\n {icon ? <div className=\"text-[var(--tapiz-text-primary)]\">{icon}</div> : null}\r\n <div className=\"min-w-0 flex-1\">\r\n {title ? <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {children ? <div className=\"mt-1 text-sm leading-6 text-[var(--tapiz-text-secondary)]\">{children}</div> : null}\r\n {actions ? <div className=\"mt-3 flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n </div>\r\n </aside>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Spinner } from \"./Spinner\";\r\n\r\nexport interface LoadingOverlayProps extends BaseProps {\r\n visible?: boolean;\r\n label?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function LoadingOverlay({ visible = false, label = \"Loading\", children, className = \"\" }: LoadingOverlayProps) {\r\n return (\r\n <div className={`relative ${className}`}>\r\n {children}\r\n {visible ? (\r\n <div className=\"absolute inset-0 grid place-items-center border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-overlay)] backdrop-blur-sm\">\r\n <div className=\"flex items-center gap-3 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] px-4 py-3 text-sm text-[var(--tapiz-text-primary)] shadow-[var(--tapiz-shadow-brutal)]\">\r\n <Spinner />\r\n <span>{label}</span>\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface NotificationItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n time?: ReactNode;\r\n unread?: boolean;\r\n action?: ReactNode;\r\n}\r\n\r\nexport interface NotificationListProps extends BaseProps {\r\n items: NotificationItem[];\r\n}\r\n\r\nexport function NotificationList({ items, className = \"\" }: NotificationListProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item) => (\r\n <article key={item.id} className=\"flex gap-3 p-4\">\r\n <span className={`mt-1 size-2.5 ${item.unread ? \"bg-[var(--tapiz-accent)]\" : \"bg-[var(--tapiz-border-subtle)]\"}`} aria-hidden=\"true\" />\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex items-start justify-between gap-3\">\r\n <h3 className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{item.title}</h3>\r\n {item.time ? <span className=\"font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}\r\n </div>\r\n {item.description ? <p className=\"mt-1 text-sm leading-5 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}\r\n {item.action ? <div className=\"mt-3\">{item.action}</div> : null}\r\n </div>\r\n </article>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface MasonryGridProps extends BaseProps {\r\n children: ReactNode;\r\n columns?: 2 | 3 | 4;\r\n gap?: \"sm\" | \"md\" | \"lg\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst columnClasses = { 2: \"md:columns-2\", 3: \"md:columns-2 xl:columns-3\", 4: \"md:columns-2 lg:columns-3 xl:columns-4\" } as const;\r\nconst gapClasses = { sm: \"gap-3\", md: \"gap-5\", lg: \"gap-8\" } as const;\r\n\r\nexport function MasonryGrid({ children, columns = 3, gap = \"md\", className = \"\", style }: MasonryGridProps) {\r\n return <div className={[columnClasses[columns], gapClasses[gap], className].filter(Boolean).join(\" \")} style={style}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface PageRailItem {\r\n label: ReactNode;\r\n href?: string;\r\n active?: boolean;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface PageRailProps extends BaseProps {\r\n title?: ReactNode;\r\n items: PageRailItem[];\r\n actions?: ReactNode;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function PageRail({ title, items, actions, className = \"\", style }: PageRailProps) {\r\n return (\r\n <aside className={[\"sticky top-20 rounded-none border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-sm)]\", className].filter(Boolean).join(\" \")} style={style}>\r\n {title ? <div className=\"kicker mb-3 px-2\">{title}</div> : null}\r\n <nav className=\"flex flex-col gap-1\">\r\n {items.map((item, index) => {\r\n const content = <><span className=\"truncate\">{item.label}</span>{item.meta ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.meta}</span> : null}</>;\r\n const classes = [\"flex items-center justify-between gap-3 border px-3 py-2 text-sm transition\", item.active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)]\" : \"border-transparent text-[var(--tapiz-text-muted)] hover:border-[var(--tapiz-border-subtle)] hover:text-[var(--tapiz-text-primary)]\"].join(\" \");\r\n return item.href ? <a key={index} href={item.href} className={classes}>{content}</a> : <div key={index} className={classes}>{content}</div>;\r\n })}\r\n </nav>\r\n {actions ? <div className=\"mt-3 border-t border-[var(--tapiz-border-subtle)] pt-3\">{actions}</div> : null}\r\n </aside>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface StickyBarProps extends BaseProps {\r\n children: ReactNode;\r\n position?: \"top\" | \"bottom\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function StickyBar({ children, position = \"top\", className = \"\", style }: StickyBarProps) {\r\n return (\r\n <div\r\n className={[\"z-30 border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-canvas)_88%,transparent)] px-4 py-3 backdrop-blur-xl\", position === \"top\" ? \"sticky top-0 border-b\" : \"sticky bottom-0 border-t\", className].filter(Boolean).join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode, SelectHTMLAttributes } from \"react\";\r\n\r\nexport interface ComboboxOption {\r\n value: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface ComboboxProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"children\"> {\r\n options: ComboboxOption[];\r\n placeholder?: string;\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Combobox({ options, placeholder = \"Select option\", invalid = false, className = \"\", ...props }: ComboboxProps) {\r\n return (\r\n <select {...props} className={[\"input-field appearance-none bg-[var(--tapiz-bg-surface)]\", invalid ? \"border-warn focus:border-warn\" : \"\", className].filter(Boolean).join(\" \")}>\r\n <option value=\"\">{placeholder}</option>\r\n {options.map((option) => <option key={option.value} value={option.value}>{String(option.label)}</option>)}\r\n </select>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface DateRangePickerProps extends BaseProps {\r\n startLabel?: string;\r\n endLabel?: string;\r\n startProps?: InputHTMLAttributes<HTMLInputElement>;\r\n endProps?: InputHTMLAttributes<HTMLInputElement>;\r\n}\r\n\r\nexport function DateRangePicker({ startLabel = \"From\", endLabel = \"To\", startProps, endProps, className = \"\" }: DateRangePickerProps) {\r\n return (\r\n <div className={[\"grid gap-3 md:grid-cols-2\", className].filter(Boolean).join(\" \")}>\r\n <label className=\"flex flex-col gap-1.5 text-sm text-[var(--tapiz-text-muted)]\"><span>{startLabel}</span><input type=\"date\" {...startProps} className={[\"input-field\", startProps?.className || \"\"].join(\" \")} /></label>\r\n <label className=\"flex flex-col gap-1.5 text-sm text-[var(--tapiz-text-muted)]\"><span>{endLabel}</span><input type=\"date\" {...endProps} className={[\"input-field\", endProps?.className || \"\"].join(\" \")} /></label>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface ColorSwatchOption {\r\n value: string;\r\n label: ReactNode;\r\n color: string;\r\n}\r\n\r\nexport interface ColorSwatchPickerProps extends BaseProps {\r\n options: ColorSwatchOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n}\r\n\r\nexport function ColorSwatchPicker({ options, value, onChange, className = \"\" }: ColorSwatchPickerProps) {\r\n return (\r\n <div className={[\"flex flex-wrap gap-2\", className].filter(Boolean).join(\" \")}>\r\n {options.map((option) => {\r\n const selected = option.value === value;\r\n return (\r\n <button key={option.value} type=\"button\" aria-pressed={selected} onClick={() => onChange?.(option.value)} className={[\"flex items-center gap-2 border px-3 py-2 text-sm transition\", selected ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)]\" : \"border-[var(--tapiz-border-subtle)] hover:border-[var(--tapiz-border-strong)]\"].join(\" \")}>\r\n <span className=\"h-4 w-4 border border-[var(--tapiz-border-strong)]\" style={{ background: option.color } as CSSProperties} />\r\n <span>{option.label}</span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface RatingInputProps extends BaseProps {\r\n value?: number;\r\n max?: number;\r\n icon?: ReactNode;\r\n onChange?: (value: number) => void;\r\n label?: string;\r\n}\r\n\r\nexport function RatingInput({ value = 0, max = 5, icon = \"★\", onChange, label = \"Rating\", className = \"\" }: RatingInputProps) {\r\n return (\r\n <div className={[\"inline-flex items-center gap-1\", className].filter(Boolean).join(\" \")} role=\"radiogroup\" aria-label={label}>\r\n {Array.from({ length: max }, (_, index) => {\r\n const score = index + 1;\r\n const active = score <= value;\r\n return <button key={score} type=\"button\" role=\"radio\" aria-checked={active} onClick={() => onChange?.(score)} className={[\"grid h-9 w-9 place-items-center border text-base transition\", active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-accent)]\" : \"border-[var(--tapiz-border-subtle)] text-[var(--tapiz-text-muted)] hover:border-[var(--tapiz-border-strong)]\"].join(\" \")}>{icon}</button>;\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ScoreRingProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: ReactNode;\r\n size?: number;\r\n}\r\n\r\nexport function ScoreRing({ value, max = 100, label, size = 112, className = \"\" }: ScoreRingProps) {\r\n const normalized = Math.max(0, Math.min(1, value / max));\r\n const radius = 42;\r\n const circumference = 2 * Math.PI * radius;\r\n const dash = circumference * normalized;\r\n return (\r\n <div className={[\"inline-grid place-items-center\", className].filter(Boolean).join(\" \")} style={{ width: size, height: size }}>\r\n <svg viewBox=\"0 0 100 100\" className=\"h-full w-full -rotate-90\">\r\n <circle cx=\"50\" cy=\"50\" r={radius} fill=\"none\" stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"10\" />\r\n <circle cx=\"50\" cy=\"50\" r={radius} fill=\"none\" stroke=\"var(--tapiz-accent)\" strokeWidth=\"10\" strokeLinecap=\"square\" strokeDasharray={`${dash} ${circumference - dash}`} />\r\n </svg>\r\n <div className=\"absolute text-center\"><div className=\"font-display text-2xl font-semibold text-[var(--tapiz-text-primary)]\">{Math.round(normalized * 100)}%</div>{label ? <div className=\"font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{label}</div> : null}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface HeatmapCell {\r\n value: number;\r\n label?: ReactNode;\r\n title?: string;\r\n}\r\n\r\nexport interface HeatmapGridProps extends BaseProps {\r\n cells: HeatmapCell[];\r\n columns?: number;\r\n max?: number;\r\n}\r\n\r\nexport function HeatmapGrid({ cells, columns = 7, max, className = \"\" }: HeatmapGridProps) {\r\n const peak = max ?? Math.max(1, ...cells.map((cell) => cell.value));\r\n return (\r\n <div className={[\"grid gap-1\", className].filter(Boolean).join(\" \")} style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}>\r\n {cells.map((cell, index) => {\r\n const opacity = 0.15 + Math.min(1, cell.value / peak) * 0.75;\r\n return <div key={index} title={cell.title} className=\"aspect-square border border-[var(--tapiz-border-subtle)]\" style={{ background: `color-mix(in srgb, var(--tapiz-accent) ${Math.round(opacity * 100)}%, transparent)` }}>{cell.label ? <span className=\"sr-only\">{cell.label}</span> : null}</div>;\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FunnelStep {\r\n label: ReactNode;\r\n value: number;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface FunnelChartProps extends BaseProps {\r\n steps: FunnelStep[];\r\n}\r\n\r\nexport function FunnelChart({ steps, className = \"\" }: FunnelChartProps) {\r\n const max = Math.max(1, ...steps.map((step) => step.value));\r\n return (\r\n <div className={[\"space-y-3\", className].filter(Boolean).join(\" \")}>\r\n {steps.map((step, index) => {\r\n const width = Math.max(8, (step.value / max) * 100);\r\n return (\r\n <div key={index}>\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-sm\"><span className=\"font-medium text-[var(--tapiz-text-primary)]\">{step.label}</span><span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{step.value}{step.meta ? ` · ${String(step.meta)}` : \"\"}</span></div>\r\n <div className=\"h-9 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full border-r border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)]\" style={{ width: `${width}%` }} /></div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ComparisonMeterProps extends BaseProps {\r\n leftLabel: ReactNode;\r\n rightLabel: ReactNode;\r\n value: number;\r\n}\r\n\r\nexport function ComparisonMeter({ leftLabel, rightLabel, value, className = \"\" }: ComparisonMeterProps) {\r\n const clamped = Math.max(0, Math.min(100, value));\r\n return (\r\n <div className={className}>\r\n <div className=\"mb-2 flex justify-between gap-3 text-sm text-[var(--tapiz-text-muted)]\"><span>{leftLabel}</span><span>{rightLabel}</span></div>\r\n <div className=\"relative h-3 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${clamped}%` }} /><div className=\"absolute top-[-6px] h-6 w-px bg-[var(--tapiz-border-strong)]\" style={{ left: `${clamped}%` }} /></div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface ActivityFeedItem {\r\n actor: string;\r\n action: ReactNode;\r\n time?: ReactNode;\r\n avatarUrl?: string;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface ActivityFeedProps extends BaseProps {\r\n items: ActivityFeedItem[];\r\n}\r\n\r\nexport function ActivityFeed({ items, className = \"\" }: ActivityFeedProps) {\r\n return (\r\n <div className={[\"divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)]\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <div key={index} className=\"flex gap-3 p-4\"><Avatar name={item.actor} src={item.avatarUrl} size=\"sm\" /><div className=\"min-w-0 flex-1\"><p className=\"text-sm text-[var(--tapiz-text-primary)]\"><strong>{item.actor}</strong> {item.action}</p>{item.meta ? <div className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{item.meta}</div> : null}</div>{item.time ? <div className=\"font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\">{item.time}</div> : null}</div>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface InboxItem {\r\n title: ReactNode;\r\n sender?: ReactNode;\r\n snippet?: ReactNode;\r\n time?: ReactNode;\r\n unread?: boolean;\r\n tag?: ReactNode;\r\n}\r\n\r\nexport interface InboxListProps extends BaseProps {\r\n items: InboxItem[];\r\n}\r\n\r\nexport function InboxList({ items, className = \"\" }: InboxListProps) {\r\n return (\r\n <div className={[\"divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)]\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <article key={index} className={[\"p-4 transition hover:bg-[var(--tapiz-bg-surface-muted)]\", item.unread ? \"border-l-4 border-l-[var(--tapiz-accent)]\" : \"\"].join(\" \")}><div className=\"flex items-start justify-between gap-3\"><div className=\"min-w-0\"><h3 className=\"truncate text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.sender ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.sender}</p> : null}</div><div className=\"flex shrink-0 items-center gap-2\">{item.tag ? <Badge>{item.tag}</Badge> : null}{item.time ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}</div></div>{item.snippet ? <p className=\"mt-2 line-clamp-2 text-sm text-[var(--tapiz-text-muted)]\">{item.snippet}</p> : null}</article>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface ApprovalItem {\r\n title: ReactNode;\r\n requester?: ReactNode;\r\n description?: ReactNode;\r\n priority?: \"low\" | \"medium\" | \"high\";\r\n}\r\n\r\nexport interface ApprovalQueueProps extends BaseProps {\r\n items: ApprovalItem[];\r\n onApprove?: (index: number) => void;\r\n onReject?: (index: number) => void;\r\n}\r\n\r\nexport function ApprovalQueue({ items, onApprove, onReject, className = \"\" }: ApprovalQueueProps) {\r\n return (\r\n <div className={[\"space-y-3\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <article key={index} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4\"><div className=\"flex flex-col gap-4 md:flex-row md:items-start md:justify-between\"><div><div className=\"flex flex-wrap items-center gap-2\"><h3 className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.priority ? <Badge variant={item.priority === \"high\" ? \"danger\" : item.priority === \"medium\" ? \"warning\" : \"default\"}>{item.priority}</Badge> : null}</div>{item.requester ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">Requested by {item.requester}</p> : null}{item.description ? <p className=\"mt-2 text-sm text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}</div><div className=\"flex gap-2\"><Button size=\"sm\" variant=\"secondary\" onClick={() => onReject?.(index)}>Reject</Button><Button size=\"sm\" onClick={() => onApprove?.(index)}>Approve</Button></div></div></article>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SLAStatusProps extends BaseProps {\r\n label: ReactNode;\r\n value: number;\r\n target?: number;\r\n}\r\n\r\nexport function SLAStatus({ label, value, target = 95, className = \"\" }: SLAStatusProps) {\r\n const ok = value >= target;\r\n return (\r\n <div className={[\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4\", className].filter(Boolean).join(\" \")}>\r\n <div className=\"flex items-center justify-between gap-3\"><span className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{label}</span><span className={[\"font-mono text-xs\", ok ? \"text-[var(--tapiz-success)]\" : \"text-[var(--tapiz-warning)]\"].join(\" \")}>{ok ? \"Within SLA\" : \"At risk\"}</span></div>\r\n <div className=\"mt-3 h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${Math.max(0, Math.min(100, value))}%` }} /></div>\r\n <div className=\"mt-2 flex justify-between font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\"><span>{value}%</span><span>Target {target}%</span></div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Switch } from \"../forms/Switch\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface FeatureFlag {\r\n key: string;\r\n name: ReactNode;\r\n description?: ReactNode;\r\n enabled?: boolean;\r\n rollout?: ReactNode;\r\n}\r\n\r\nexport interface FeatureFlagTableProps extends BaseProps {\r\n flags: FeatureFlag[];\r\n onToggle?: (key: string, enabled: boolean) => void;\r\n}\r\n\r\nexport function FeatureFlagTable({ flags, onToggle, className = \"\" }: FeatureFlagTableProps) {\r\n return (\r\n <div className={[\"overflow-hidden border border-[var(--tapiz-border-subtle)]\", className].filter(Boolean).join(\" \")}>\r\n {flags.map((flag) => <div key={flag.key} className=\"grid gap-3 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4 last:border-b-0 md:grid-cols-[1fr_auto_auto] md:items-center\"><div><div className=\"flex flex-wrap items-center gap-2\"><h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{flag.name}</h3><Badge>{flag.key}</Badge></div>{flag.description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{flag.description}</p> : null}</div><div className=\"text-sm text-[var(--tapiz-text-muted)]\">{flag.rollout}</div><Switch checked={flag.enabled} onChange={(checked) => onToggle?.(flag.key, checked)} /></div>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PlanUsageItem {\r\n label: ReactNode;\r\n used: number;\r\n limit: number;\r\n}\r\n\r\nexport interface PlanUsageProps extends BaseProps {\r\n title?: ReactNode;\r\n items: PlanUsageItem[];\r\n}\r\n\r\nexport function PlanUsage({ title = \"Plan usage\", items, className = \"\" }: PlanUsageProps) {\r\n return (\r\n <section className={[\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5\", className].filter(Boolean).join(\" \")}>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n <div className=\"mt-4 space-y-4\">\r\n {items.map((item, index) => { const pct = item.limit ? Math.min(100, (item.used / item.limit) * 100) : 0; return <div key={index}><div className=\"mb-1 flex justify-between text-sm\"><span className=\"text-[var(--tapiz-text-primary)]\">{item.label}</span><span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{item.used}/{item.limit}</span></div><div className=\"h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${pct}%` }} /></div></div>; })}\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AnnouncementBarProps extends BaseProps {\r\n children: ReactNode;\r\n action?: ReactNode;\r\n}\r\n\r\nexport function AnnouncementBar({ children, action, className = \"\" }: AnnouncementBarProps) {\r\n return <div className={[\"border-b border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] px-4 py-3 text-sm text-[var(--tapiz-text-primary)]\", className].filter(Boolean).join(\" \")}><div className=\"mx-auto flex max-w-7xl flex-wrap items-center justify-center gap-3 text-center\"> <span>{children}</span>{action ? <span>{action}</span> : null}</div></div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Accordion } from \"../disclosure/Accordion\";\r\n\r\nexport interface FAQItem {\r\n question: ReactNode;\r\n answer: ReactNode;\r\n}\r\n\r\nexport interface FAQSectionProps extends BaseProps {\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n items: FAQItem[];\r\n}\r\n\r\nexport function FAQSection({ title = \"Frequently asked questions\", description, items, className = \"\" }: FAQSectionProps) {\r\n return <section className={className}><div className=\"mb-6 max-w-2xl\"><div className=\"kicker\">FAQ</div><h2 className=\"mt-2 text-3xl font-semibold tracking-[-0.05em] text-[var(--tapiz-text-primary)]\">{title}</h2>{description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}</div><Accordion items={items.map((item, index) => ({ id: `faq-${index}`, title: item.question, content: item.answer }))} /></section>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface RoadmapItem {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n status?: ReactNode;\r\n quarter?: ReactNode;\r\n}\r\n\r\nexport interface RoadmapListProps extends BaseProps {\r\n items: RoadmapItem[];\r\n}\r\n\r\nexport function RoadmapList({ items, className = \"\" }: RoadmapListProps) {\r\n return <div className={[\"grid gap-3 md:grid-cols-3\", className].filter(Boolean).join(\" \")}>{items.map((item, index) => <article key={index} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5\"><div className=\"flex items-center justify-between gap-3\"><span className=\"kicker\">{item.quarter ?? `0${index + 1}`}</span>{item.status ? <Badge>{item.status}</Badge> : null}</div><h3 className=\"mt-4 font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}</article>)}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type InlineStatusTone = \"neutral\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n\r\nexport interface InlineStatusProps extends BaseProps {\r\n tone?: InlineStatusTone;\r\n children: ReactNode;\r\n pulse?: boolean;\r\n}\r\n\r\nconst toneClasses: Record<InlineStatusTone, string> = {\r\n neutral: \"bg-[var(--tapiz-text-muted)]\",\r\n success: \"bg-[var(--tapiz-success)]\",\r\n warning: \"bg-[var(--tapiz-warning)]\",\r\n danger: \"bg-[var(--tapiz-danger)]\",\r\n info: \"bg-[var(--tapiz-info)]\",\r\n};\r\n\r\nexport function InlineStatus({ tone = \"neutral\", children, pulse = false, className = \"\" }: InlineStatusProps) {\r\n return <span className={[\"inline-flex items-center gap-2 text-sm text-[var(--tapiz-text-muted)]\", className].filter(Boolean).join(\" \")}><span className={[\"h-2 w-2 rounded-full\", toneClasses[tone], pulse ? \"animate-pulse\" : \"\"].filter(Boolean).join(\" \")} />{children}</span>;\r\n}\r\n"],"mappings":";AAQO,IAAM,OAAO,CAAC,IAAa,MAAc,WAAiC;AAAA,EAC/E,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB;AACF;;;ACfE,SACE,KADF;AADK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI,IAAG,KAAI;AAAA,EAC9C,oBAAC,UAAK,GAAE,4EAA2E;AAAA,EACnF,oBAAC,UAAK,GAAE,sCAAqC;AAAA,GAC/C;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,kDAAiD;AAAA,EACzD,oBAAC,cAAS,QAAO,yBAAwB;AAAA,GAC3C;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,kGAAiG;AAAA,EACzG,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,oBAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,oBAAC,UAAK,GAAE,uDAAsD;AAAA,GAChE;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,mCAAkC;AAAA,EAC1C,oBAAC,UAAK,GAAE,kEAAiE;AAAA,GAC3E;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,oBAAC,UAAK,GAAE,yBAAwB;AAAA,GAClC;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,cAAS,QAAO,mBAAkB;AAAA,EACnC,oBAAC,UAAK,GAAE,6DAA4D;AAAA,GACtE;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACtC,oBAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI;AAAA,EACrC,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACpC,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,oBAAC,UAAK,GAAE,kBAAiB;AAAA,GAC3B;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,8DAA6D;AAAA,EACrE,oBAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,oBAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACrC,oBAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACrC,oBAAC,cAAS,QAAO,gBAAe;AAAA,GAClC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI;AAAA,EACvC,oBAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI;AAAA,EACxC,oBAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI;AAAA,EACxC,oBAAC,UAAK,GAAE,wCAAuC;AAAA,GACjD;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,aAAQ,QAAO,4BAA2B;AAAA,EAC3C,oBAAC,cAAS,QAAO,oBAAmB;AAAA,EACpC,oBAAC,cAAS,QAAO,oBAAmB;AAAA,GACtC;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,UAAS;AAAA,EACjB,oBAAC,UAAK,GAAE,iBAAgB;AAAA,EACxB,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,oBAAC,UAAK,GAAE,YAAW;AAAA,EACnB,oBAAC,UAAK,GAAE,YAAW;AAAA,EACnB,oBAAC,UAAK,GAAE,kBAAiB;AAAA,GAC3B;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,8DAA6D;AAAA,EACrE,oBAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,oBAAC,cAAS,QAAO,eAAc;AAAA,EAC/B,oBAAC,cAAS,QAAO,oBAAmB;AAAA,GACtC;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,oBAAmB;AAAA,EAC3B,oBAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EACnC,oBAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK;AAAA,EACnC,oBAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,oBAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,oBAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KAEnE;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK;AAAA,EAEzC,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,MAAK;AAAA,EAExC,oBAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,MAAK;AAAA,EAEzC,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,OAAM,QAAO,OAAM;AAAA,EAC3C,oBAAC,UAAK,GAAE,QAAO,GAAE,KAAI,OAAM,OAAM,QAAO,OAAM;AAAA,EAE9C,oBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,OAAM,QAAO,OAAM;AAAA,EAC3C,oBAAC,UAAK,GAAE,QAAO,GAAE,KAAI,OAAM,OAAM,QAAO,OAAM;AAAA,EAE9C,oBAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI;AAAA,EAEzC,oBAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,gBAAgB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC1D,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,UAAK,GAAE,iCAAgC;AAAA,EACxC,oBAAC,UAAK,GAAE,8CAA6C;AAAA,GACvD;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,sBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,EAC/B,oBAAC,UAAK,GAAE,sGAAqG;AAAA,GAC/G;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,oBAAC,UAAK,GAAE,YAAW;AAAA,GACrB;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,EAC/B,oBAAC,UAAK,GAAE,wCAAuC;AAAA,EAC/C,oBAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,MAAK,gBAAe,QAAO,QAAO;AAAA,GACnE;AAGK,IAAM,kBAAkB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC5D,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EAAE,oBAAC,UAAK,GAAE,OAAM,GAAE,OAAM,OAAM,KAAI,QAAO,KAAI,IAAG,MAAK,MAAK,gBAAe,QAAO,QAAO;AAAA,EACvI,oBAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EAAE,oBAAC,UAAK,GAAE,QAAO,GAAE,OAAM,OAAM,KAAI,QAAO,KAAI,IAAG,MAAK,MAAK,gBAAe,QAAO,QAAO;AAAA,EACzI,oBAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EAAE,oBAAC,UAAK,GAAE,OAAM,GAAE,QAAO,OAAM,KAAI,QAAO,KAAI,IAAG,MAAK,MAAK,gBAAe,QAAO,QAAO;AAAA,EACzI,oBAAC,cAAS,QAAO,qBAAoB;AAAA,GACvC;AAGK,IAAM,gBAAgB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC1D,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,oBAAC,UAAK,GAAE,gCAA+B;AAAA,GACzC;AAGK,IAAM,eAAe,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACzD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,UAAK,GAAE,cAAa;AAAA,EAAE,oBAAC,UAAK,GAAE,qBAAoB;AAAA,GACrD;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,qBAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,KACnE;AAAA,sBAAC,UAAK,GAAE,iEAAgE;AAAA,EACxE,oBAAC,UAAK,GAAE,iBAAgB;AAAA,GAC1B;;;AC1MA,SACE,OAAAA,MADF,QAAAC,aAAA;AADK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,8DAA6D;AAAA,EACrE,gBAAAA,KAAC,UAAK,GAAE,2DAA0D;AAAA,GACpE;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,cAAS,QAAO,gBAAe;AAAA,EAChC,gBAAAA,KAAC,UAAK,GAAE,+CAA8C;AAAA,GACxD;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,cAAS,QAAO,oBAAmB;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI;AAAA,GACvC;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,UAAU,MAAM,MAC9D,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,WAAW,iBAAiB,EAAE,IAAI,aAAa,EAAE,IAC/F;AAAA,kBAAAD,KAAC,UAAK,GAAE,qDAAoD;AAAA,EAC5D,gBAAAA,KAAC,UAAK,GAAE,YAAW;AAAA,GACrB;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACxC;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACxC;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAC9B,gBAAAA,KAAC,UAAK,GAAE,8HAA6H;AAAA,GACvI;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,cAAS,QAAO,kBAAiB,GACpC;AAGK,IAAM,IAAI,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC9C,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,KAAK,WAClD;AAAA,kBAAAD,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,GACtC;AAIK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACnH;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI;AAAA,EACvC,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI;AAAA,EACxC,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI;AAAA,EACxC,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI;AAAA,GAC3C;AAYK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,gBAAAE,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAC,KAAC,UAAK,GAAE,qDAAoD;AAAA,EAC5D,gBAAAA,KAAC,UAAK,GAAE,YAAW;AAAA,EACnB,gBAAAA,KAAC,UAAK,GAAE,eAAc;AAAA,GACxB;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAD,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAC,KAAC,UAAK,GAAE,qDAAoD;AAAA,EAC5D,gBAAAA,KAAC,UAAK,GAAE,YAAW;AAAA,GACrB;AAGK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAQ;AAAA,IACR,MAAK;AAAA,IACL;AAAA,IACA;AAAA,IAEA,0BAAAD,MAAC,OAAE,UAAS,WACV;AAAA,sBAAAC,KAAC,UAAK,GAAE,yOAAuO;AAAA,MAC/O,gBAAAA,KAAC,UAAK,GAAE,ggCAA8/B;AAAA,OACxgC;AAAA;AACF;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,gBAAAD,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAC,KAAC,UAAK,GAAE,eAAc;AAAA,EACtB,gBAAAA,KAAC,UAAK,GAAE,oBAAmB;AAAA,EAC3B,gBAAAA,KAAC,UAAK,GAAE,4EAA2E;AAAA,EACnF,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAC9B,gBAAAA,KAAC,UAAK,GAAE,WAAU;AAAA,GACpB;AAGK,IAAM,eAAe,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACzD,gBAAAD,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAC,KAAC,UAAK,GAAE,4DAA2D;AAAA,EACnE,gBAAAA,KAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI;AAAA,GACvC;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,gBAAAD,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAC,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,YAAO,IAAG,OAAM,IAAG,OAAM,GAAE,OAAM;AAAA,EAClC,gBAAAA,KAAC,cAAS,QAAO,oBAAmB;AAAA,GACtC;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAQ;AAAA,IACR,MAAK;AAAA,IACL;AAAA,IACA;AAAA,IAEA,0BAAAA,KAAC,UAAK,GAAE,gGAA+F;AAAA;AACzG;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAQ;AAAA,IACR,MAAK;AAAA,IACL;AAAA,IACA;AAAA,IAEA,0BAAAA,KAAC,UAAK,GAAE,ujBAAsjB;AAAA;AAChkB;AAGK,IAAM,iBAAiB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC3D,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAQ;AAAA,IACR,MAAK;AAAA,IACL;AAAA,IACA;AAAA,IAEA,0BAAAA,KAAC,UAAK,GAAE,wQAAuQ;AAAA;AACjR;;;AChMA,SACE,OAAAC,MADF,QAAAC,aAAA;AADK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,gBAAAA,KAAC,UAAK,GAAE,6CAA4C;AAAA,GACtD;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EACjD,gBAAAA,KAAC,UAAK,GAAE,4BAA2B;AAAA,GACrC;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACE,GAAG,KAAK,MAAM,MAAM,KAAK;AAAA,IAC1B;AAAA,IACA,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IAGf;AAAA,sBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,MACvD,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,MAAK;AAAA,MAEzC,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM;AAAA,MAChC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,MACtC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,OAAM,IAAG,MAAK,IAAG,KAAI;AAAA,MACtC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,OAAM,IAAG,MAAK,IAAG,OAAM;AAAA;AAAA;AAC1C;AAGK,IAAM,kBAAkB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC5D,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACE,GAAG,KAAK,MAAM,MAAM,KAAK;AAAA,IAC1B;AAAA,IACA,OAAM;AAAA,IACN,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IAEf;AAAA,sBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,MACpD,gBAAAA,KAAC,UAAK,GAAE,kCAAiC;AAAA,MACzC,gBAAAA,KAAC,UAAK,GAAE,qCAAoC;AAAA,MAC5C,gBAAAA,KAAC,UAAK,GAAE,0BAAyB;AAAA,MACjC,gBAAAA,KAAC,UAAK,GAAE,aAAY;AAAA,MACpB,gBAAAA,KAAC,UAAK,GAAE,gCAA+B;AAAA,MACvC,gBAAAA,KAAC,UAAK,GAAE,4CAA2C;AAAA,MACnD,gBAAAA,KAAC,UAAK,GAAE,iCAAgC;AAAA,MACxC,gBAAAA,KAAC,UAAK,GAAE,4BAA2B;AAAA;AAAA;AACrC;AAGK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,gDAA+C;AAAA,EACvD,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,GAChC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,mFAAkF;AAAA,EAC1F,gBAAAA,KAAC,UAAK,GAAE,0EAAyE;AAAA,EACjF,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,GACtC;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,KAAI;AAAA,GAC/B;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,6CAA4C;AAAA,EACpD,gBAAAA,KAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,KAAI;AAAA,EAC5B,gBAAAA,KAAC,cAAS,QAAO,oBAAmB;AAAA,GACtC;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EACnC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,GACvC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC;AAAA,EAAC;AAAA;AAAA,IACE,GAAG,KAAK,MAAM,MAAM,KAAK;AAAA,IAC1B;AAAA,IACA,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,eAAc;AAAA,IACd,gBAAe;AAAA,IAEf;AAAA,sBAAAD,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,MACrC,gBAAAA,KAAC,cAAS,QAAO,iBAAgB;AAAA,MACjC,gBAAAA,KAAC,UAAK,GAAE,sBAAqB;AAAA;AAAA;AAC/B;;;AChHA,SACE,OAAAE,MADF,QAAAC,aAAA;AADK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,UAAK,GAAE,4FAA2F;AAAA,EACnG,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,MAAK;AAAA,GAC3C;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,EAC/B,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACtC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,SAAQ,IAAG,KAAI;AAAA,GACzC;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,UAAK,GAAE,sCAAqC;AAAA,EAC7C,gBAAAA,KAAC,cAAS,QAAO,yBAAwB;AAAA,GAC3C;AAGK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,EAC/B,gBAAAA,KAAC,UAAK,IAAG,QAAO,IAAG,QAAO,IAAG,SAAQ,IAAG,SAAQ;AAAA,GAClD;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,UAAK,GAAE,yBAAwB,GAClC;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,UAAK,GAAE,2BAA0B,GACpC;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,cAAS,QAAO,mBAAkB,GACrC;AAGK,IAAM,eAAe,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACzD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,cAAS,QAAO,kBAAiB,GACpC;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD,0BAAAA,KAAC,UAAK,GAAE,gBAAe,GACzB;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,cAAS,QAAO,mBAAkB,GACrC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAC9B,gBAAAA,KAAC,UAAK,GAAE,qBAAoB;AAAA,GAC9B;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,+CAA8C;AAAA,EACtD,gBAAAA,KAAC,UAAK,GAAE,8BAA6B;AAAA,GACvC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,UAAK,GAAE,+CAA8C,GACxD;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,gBAAAA,KAAC,UAAK,GAAE,2DAA0D;AAAA,GACpE;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,aAAa,GAAG,WAChD;AAAA,kBAAAD,KAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,gBAAAA,KAAC,UAAK,GAAE,4BAA2B;AAAA,EACnC,gBAAAA,KAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,gBAAAA,KAAC,UAAK,GAAE,4BAA2B;AAAA,GACrC;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,8DAA6D;AAAA,EACrE,gBAAAA,KAAC,cAAS,QAAO,kBAAiB;AAAA,EAClC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,cAAS,QAAO,gBAAe;AAAA,GAClC;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,gCAA+B;AAAA,EACvC,gBAAAA,KAAC,UAAK,GAAE,kCAAiC;AAAA,EACzC,gBAAAA,KAAC,UAAK,GAAE,YAAW;AAAA,EACnB,gBAAAA,KAAC,UAAK,GAAE,8DAA6D;AAAA,EACrE,gBAAAA,KAAC,UAAK,GAAE,+DAA8D;AAAA,EACtE,gBAAAA,KAAC,UAAK,GAAE,+BAA8B;AAAA,GACxC;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACxC;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,MAAK;AAAA,GAC3C;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,MAAK;AAAA,GAC3C;AAIK,IAAM,eAAe,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACzD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI,IAAG,KAAI;AAAA,EAC9C,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,MAAK,IAAG,KAAI;AAAA,EAC/C,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,MAAK,IAAG,KAAI;AAAA,GAClD;AAGK,IAAM,UAAU,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACpD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM,MAAK,QAAO;AAAA,EAC9D,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM,MAAK,QAAO;AAAA,EAC9D,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,QAAO,gBAAe,aAAY,OAAM,iBAAgB,OAAM;AAAA,GACpG;AAIK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,MACnE;AAAA,kBAAAD,KAAC,YAAO,IAAG,KAAI,IAAG,MAAK,GAAE,KAAI;AAAA,EAC7B,gBAAAA,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,GAChC;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,MACnE,0BAAAA,KAAC,UAAK,GAAE,4BAA2B,GACrC;;;AC5KA,SACE,OAAAE,MADF,QAAAC,aAAA;AADK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,GACnE;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EAC5G,gBAAAA,KAAC,UAAK,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,SAAQ,IAAG,SAAQ,IAAG,SAAQ,IAAG,SAAQ;AAAA,EAClG,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EAC5E,gBAAAA,KAAC,UAAK,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO,IAAG,SAAQ;AAAA,EAAE,gBAAAA,KAAC,UAAK,IAAG,SAAQ,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO;AAAA,GACpG;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAsB,aAAa,GACnE,0BAAAA,KAAC,UAAK,GAAE,mDAAkD,GAC5D;AAGK,IAAM,OAAO,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACjD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,EAC9B,gBAAAA,KAAC,UAAK,GAAE,0mBAAymB;AAAA,GACnnB;AAGK,IAAM,QAAQ,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAClD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK;AAAA,EAC/B,gBAAAA,KAAC,cAAS,QAAO,oBAAmB;AAAA,GACtC;;;ACRE,gBAAAE,MAMA,QAAAC,aANA;AAXG,IAAM,WAAW,CAAC;AAAA,EACvB,OAAO;AAAA,EACP;AACF,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW,GAAG,SAAS,OAAO,IAAI,UAAU,IAAI;AAAA,IAChD,SAAQ;AAAA,IACR,MAAK;AAAA,IAEL;AAAA,sBAAAD,KAAC,UAAK,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,MAAK,QAAO;AAAA,MAChD,gBAAAA,KAAC,UAAK,GAAE,kBAAiB,QAAO,gBAAe,aAAY,KAAI,eAAc,UAAS;AAAA,MACtF,gBAAAA,KAAC,UAAK,GAAE,qBAAoB,QAAO,gBAAe,aAAY,KAAI,eAAc,UAAS;AAAA,MACzF,gBAAAA,KAAC,UAAK,GAAE,qBAAoB,QAAO,gBAAe,aAAY,KAAI,eAAc,UAAS;AAAA,MACzF,gBAAAA,KAAC,UAAK,GAAE,wBAAuB,QAAO,gBAAe,aAAY,KAAI,eAAc,UAAS,WAAU,cAAa;AAAA,MAEnH,gBAAAC,MAAC,OAAE,MAAK,gBACN;AAAA,wBAAAD,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,MAAK;AAAA,QAC1C,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,MAAK,QAAO,KAAI;AAAA,SAC5C;AAAA;AAAA;AACF;;;AC3BA,SACE,OAAAE,MADF,QAAAC,aAAA;AADK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,gBAAAA,KAAC,UAAK,GAAE,wBAAuB;AAAA,GACjC;AAGK,IAAM,eAAe,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACzD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,gBAAAA,KAAC,UAAK,GAAE,yBAAwB;AAAA,EAChC,gBAAAA,KAAC,UAAK,GAAE,8DAA6D;AAAA,GACvE;AAGK,IAAM,gBAAgB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAC1D,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,EAChD,gBAAAA,KAAC,UAAK,GAAE,yBAAwB;AAAA,EAChC,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EACjD,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EAClD,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,EACjD,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,KAAI,IAAG,OAAM;AAAA,GACpD;AAGK,IAAM,aAAa,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACvD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,UAAS,MAAK,YAAW,QAAO,MAAK,gBAAe,QAAO,QAAO,gBAAE,GACzF;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,UAAS,MAAK,YAAW,QAAO,MAAK,gBAAe,QAAO,QAAO,eAAC,GACxF;AAGK,IAAM,cAAc,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACxD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,UAAS,MAAK,YAAW,QAAO,MAAK,gBAAe,QAAO,QAAO,oBAAC;AAAA,EACtF,gBAAAA,KAAC,UAAK,GAAE,MAAK,GAAE,MAAK,UAAS,MAAK,MAAK,gBAAe,QAAO,QAAO,eAAC;AAAA,GACvE;;;ACzCA,SACE,OAAAE,MADF,QAAAC,aAAA;AADK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,UAAU,MAAM,MAChE,gBAAAA,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,WAAW,iBAAiB,EAAE,IAAI,aAAa,EAAE,IAC/F;AAAA,kBAAAD,KAAC,UAAK,GAAE,cAAa;AAAA,EACrB,gBAAAA,KAAC,UAAK,GAAE,cAAa;AAAA,EACrB,gBAAAA,KAAC,UAAK,GAAE,sCAAqC;AAAA,EAC7C,gBAAAA,KAAC,UAAK,GAAE,uCAAsC;AAAA,GAChD;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,aAAQ,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI;AAAA,EACtC,gBAAAA,KAAC,UAAK,GAAE,qCAAoC;AAAA,EAC5C,gBAAAA,KAAC,UAAK,GAAE,uCAAsC;AAAA,GAChD;AAGK,IAAM,SAAS,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACnD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,KAAI,IAAG,KAAI,IAAG,KAAI;AAAA,EACtD,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,MAAK,QAAO,KAAI,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,QAAO;AAAA,EACrC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,SAAQ;AAAA,GACzC;AAGK,IAAM,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACrD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,cAAS,QAAO,mCAAkC,GACrD;AAGK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI,IAAG,KAAI;AAAA,EACvD,gBAAAA,KAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAI;AAAA,EACvC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI;AAAA,EAClC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,EACtC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI;AAAA,EAClC,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,EACpC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK;AAAA,GACxC;AAGK,IAAM,MAAM,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAChD,gBAAAA,KAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC,0BAAAA,KAAC,aAAQ,QAAO,0CAAyC,GAC3D;AAGK,IAAM,YAAY,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MACtD,gBAAAC,MAAC,SAAK,GAAG,KAAK,MAAM,MAAM,KAAK,GAAG,WAChC;AAAA,kBAAAD,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK;AAAA,EACrC,gBAAAA,KAAC,UAAK,GAAE,8GAA6G;AAAA,EACrH,gBAAAA,KAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,QAAO,IAAG,MAAK;AAAA,EACvC,gBAAAA,KAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,MAAK;AAAA,GAC3C;;;ACpDY,gBAAAE,YAAA;AADP,IAAM,eAAe;AAAA,EAC1B,UAAY,gBAAAA,KAAC,SAAM,MAAM,IAAI;AAAA,EAC7B,SAAY,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC5B,YAAY,gBAAAA,KAAC,eAAY,MAAM,IAAI;AAAA,EACnC,WAAY,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EAChC,OAAY,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EAChC,UAAY,gBAAAA,KAAC,gBAAa,MAAM,IAAI;AAAA,EACpC,aAAY,gBAAAA,KAAC,eAAY,MAAM,IAAI;AACrC;AAEO,IAAM,QAAQ;AAAA,EACnB,WAAa,gBAAAA,KAAC,WAAQ,MAAM,IAAI;AAAA,EAChC,eAAe,gBAAAA,KAAC,aAAU,MAAM,IAAI;AAAA,EACpC,YAAa,gBAAAA,KAAC,cAAW,MAAM,IAAI;AAAA,EACnC,OAAa,gBAAAA,KAAC,SAAM,MAAM,IAAI;AAAA,EAC9B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,aAAa,gBAAAA,KAAC,eAAY,MAAM,IAAI;AAAA,EACpC,UAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,aAAa,gBAAAA,KAAC,gBAAa,MAAM,IAAI;AAAA,EACrC,aAAa,gBAAAA,KAAC,eAAY,MAAM,IAAI;AAAA,EACpC,UAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,MAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,WAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,QAAa,gBAAAA,KAAC,KAAE,MAAM,IAAI;AAAA,EAC1B,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,OAAa,gBAAAA,KAAC,SAAM,MAAM,IAAI;AAAA,EAC9B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,UAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,QAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,UAAa,gBAAAA,KAAC,gBAAa,MAAM,IAAI;AAAA,EACrC,KAAa,gBAAAA,KAAC,OAAI,MAAM,IAAI;AAAA,EAC5B,SAAa,gBAAAA,KAAC,WAAQ,MAAM,IAAI;AAAA,EAChC,WAAa,gBAAAA,KAAC,aAAU,MAAM,IAAI;AAAA,EAClC,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,OAAa,gBAAAA,KAAC,eAAY,MAAM,IAAI;AAAA,EACpC,QAAa,gBAAAA,KAAC,UAAO,MAAM,IAAI;AAAA,EAC/B,WAAa,gBAAAA,KAAC,aAAU,MAAM,IAAI;AAAA,EAClC,UAAa,gBAAAA,KAAC,YAAS,MAAM,IAAI;AAAA,EACjC,WAAa,gBAAAA,KAAC,aAAU,MAAM,IAAI;AAAA,EAClC,MAAa,gBAAAA,KAAC,QAAK,MAAM,IAAI;AAAA,EAC7B,WAAa,gBAAAA,KAAC,aAAU,MAAM,IAAI;AAAA,EAClC,IAAa,gBAAAA,KAAC,WAAQ,MAAM,IAAI;AAAA,EAChC,SAAa,gBAAAA,KAAC,WAAQ,MAAM,IAAI;AAAA,EAChC,cAAc,gBAAAA,KAAC,gBAAa,MAAM,IAAI;AACxC;;;AC1DA,SAAS,eAAe,sBAAsB;;;ACW1C,gBAAAC,aAAA;AAPG,IAAM,UAAU,CAAC,EAAE,OAAO,WAAW,QAAQ,mBAAmB,MACrE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,gBAAgB,IAAI,iBAAiB,KAAK;AAAA,IACrD,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IAEN,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,GAAE;AAAA,QACF,QAAO;AAAA,QACP,aAAY;AAAA,QACZ,eAAc;AAAA,QACd,iBAAgB;AAAA,QAChB,kBAAiB;AAAA;AAAA,IACnB;AAAA;AACF;;;AD2FE,SAaM,OAAAC,OAbN,QAAAC,aAAA;AArEJ,IAAM,aAAa;AAEnB,IAAM,iBAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EAER,OAAO,GAAG,UAAU;AAAA;AAAA,EAGpB,SAAS,GAAG,UAAU;AAAA;AAAA,EAGtB,SAAS,GAAG,UAAU;AAAA;AAAA,EAGtB,MAAM,GAAG,UAAU;AAAA;AAAA,EAGnB,iBAAiB,GAAG,UAAU;AAAA;AAAA,EAG9B,mBAAmB,GAAG,UAAU;AAAA;AAAA,EAGhC,qBAAqB,GAAG,UAAU;AAAA;AAAA,EAGlC,kBAAkB,GAAG,UAAU;AAAA;AAAA,EAG/B,mBAAmB,GAAG,UAAU;AAAA;AAAA,EAGhC,QAAQ,GAAG,UAAU;AAAA;AAAA,EAGrB,MAAM;AACR;AAEA,IAAM,cAAoC;AAAA,EACxC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAgB;AACd,QAAM,aAAa,YAAY;AAC/B,QAAM,SAAS,YAAY;AAC3B,QAAM,kBAAkB,CAAC;AACzB,QAAM,eAAe,WAAW,IAAI;AACpC,QAAM,oBAAoB,WAAW,SAAS;AAE9C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT,eAAe,OAAO;AAAA,QACtB,kBAAkB,YAAY,IAAI,IAAI;AAAA,QACtC,YAAY,WAAW;AAAA,QACvB;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAEzB;AAAA,kBACG,gBAAAD,MAAC,WAAQ,OAAO,YAAY,YAAY,eAAe,6BAA6B,IACpF,eAAe,gBAAAA,MAAC,UAAM,wBAAa,IAAU;AAAA,QAChD;AAAA,QACA,CAAC,WAAW;AAAA;AAAA;AAAA,EACf;AAEJ;AAEA,SAAS,WAAW,MAAmB;AACrC,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,eAAe,IAAI,EAAG,QAAO;AACjC,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO,cAAc,MAAM,EAAE,MAAM,IAAI,aAAa,KAAK,CAAC;AAAA,EAC5D;AACA,SAAO;AACT;;;AErII,gBAAAE,aAAA;AAFG,SAAS,MAAM,EAAE,YAAY,IAAI,UAAU,OAAO,GAAG,MAAM,GAAe;AAC/E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA,UAAU,kCAAkC;AAAA,QAC5C;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA;AAAA,EAC5B;AAEJ;;;ACTI,gBAAAC,aAAA;AAFG,SAAS,OAAO,EAAE,YAAY,IAAI,UAAU,OAAO,GAAG,MAAM,GAAgB;AACjF,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA,UAAU,kCAAkC;AAAA,QAC5C;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA;AAAA,EAC5B;AAEJ;;;ACTI,gBAAAC,aAAA;AAFG,SAAS,SAAS,EAAE,YAAY,IAAI,UAAU,OAAO,GAAG,MAAM,GAAkB;AACrF,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA,UAAU,kCAAkC;AAAA,QAC5C;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA;AAAA,EAC5B;AAEJ;;;ACTI,gBAAAC,aAAA;AAFG,SAAS,WAAW,EAAE,UAAU,YAAY,IAAI,GAAG,MAAM,GAAoB;AAClF,SACE,gBAAAA,MAAC,WAAO,GAAG,OAAO,WAAW,qBAAqB,SAAS,GAAG,KAAK,GAChE,UACH;AAEJ;;;ACJI,gBAAAC,aAAA;AAFG,SAAS,UAAU,EAAE,UAAU,YAAY,IAAI,GAAG,MAAM,GAAmB;AAChF,SACE,gBAAAA,MAAC,OAAG,GAAG,OAAO,WAAW,oCAAoC,SAAS,GAAG,KAAK,GAC3E,UACH;AAEJ;;;ACZA,SAAmC,OAAO,gBAAgB;AAqCpD,SACE,OAAAC,OADF,QAAAC,cAAA;AA9BN,IAAM,UAAU;AAAA,EACd,IAAI,EAAE,KAAK,eAAe,MAAM,IAAI,MAAM,WAAa,KAAK,UAAU;AAAA,EACtE,IAAI,EAAE,KAAK,WAAe,MAAM,IAAI,MAAM,WAAa,KAAK,QAAU;AAAA,EACtE,IAAI,EAAE,KAAK,WAAe,MAAM,IAAI,MAAM,aAAa,KAAK,UAAU;AACxE;AAEO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,cAAc,MAAM;AAC1B,QAAM,KAAK,cAAc;AACzB,QAAM,IAAI,QAAQ,IAAI;AAEtB,QAAM,eAAe,YAAY;AACjC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,kBAAkB,KAAK;AAC9E,QAAM,YAAY,eAAe,UAAU;AAC3C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW,4BAA4B,EAAE,GAAG,qCAAqC,MAAM,WAAW,sDAAsD,EAAE,IAAI,SAAS;AAAA,MAEvK;AAAA,wBAAAA,OAAC,UAAK,WAAU,qBACd;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACJ;AAAA,cACA,MAAK;AAAA,cACL,SAAS,eAAe,UAAU;AAAA,cAClC,UAAU,CAAC,MAAM;AACf,oBAAI,CAAC,aAAc,oBAAmB,EAAE,OAAO,OAAO;AACtD,2BAAW,CAAC;AAAA,cACd;AAAA,cACA,SAAS,MAAM,WAAW,IAAI;AAAA,cAC9B,QAAQ,MAAM,WAAW,KAAK;AAAA,cAC9B,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,+CAC0B,EAAE,GAAG;AAAA;AAAA,cAEtC,YACE,sCACA,4DACJ;AAAA,cACE,UAAU,4BAA4B,EAAE;AAAA;AAAA,cAG3C,uBACC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO,EAAE;AAAA,kBACT,QAAQ,EAAE;AAAA,kBACV,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,QAAO;AAAA,kBACP,aAAY;AAAA,kBACZ,eAAc;AAAA,kBAEd,0BAAAA,MAAC,cAAS,QAAO,0BAAyB;AAAA;AAAA,cAC5C;AAAA;AAAA,UAEJ;AAAA,WACF;AAAA,QAEC,SACC,gBAAAA,MAAC,UAAK,WAAW,GAAG,EAAE,IAAI,qEACvB,iBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACrFA,SAAmC,SAAAE,QAAO,YAAAC,iBAAgB;AAqCpD,SACE,OAAAC,OADF,QAAAC,cAAA;AA9BN,IAAMC,WAAU;AAAA,EACd,IAAI,EAAE,OAAO,eAAe,OAAO,eAAe,MAAM,WAAa,KAAK,UAAU;AAAA,EACpF,IAAI,EAAE,OAAO,WAAe,OAAO,WAAgB,MAAM,WAAa,KAAK,QAAU;AAAA,EACrF,IAAI,EAAE,OAAO,WAAe,OAAO,eAAgB,MAAM,aAAa,KAAK,UAAU;AACvF;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqB;AACnB,QAAM,cAAcJ,OAAM;AAC1B,QAAM,KAAK,cAAc;AACzB,QAAM,IAAII,SAAQ,IAAI;AAEtB,QAAM,eAAe,YAAY;AACjC,QAAM,CAAC,iBAAiB,kBAAkB,IAAIH,UAAS,kBAAkB,KAAK;AAC9E,QAAM,YAAY,eAAe,UAAU;AAC3C,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW,4BAA4B,EAAE,GAAG,qCAAqC,MAAM,WAAW,sDAAsD,EAAE,IAAI,SAAS;AAAA,MAEvK;AAAA,wBAAAA,OAAC,UAAK,WAAU,qBACd;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACJ;AAAA,cACA,MAAK;AAAA,cACL,SAAS,eAAe,UAAU;AAAA,cAClC,UAAU,CAAC,MAAM;AACf,oBAAI,CAAC,aAAc,oBAAmB,EAAE,OAAO,OAAO;AACtD,2BAAW,CAAC;AAAA,cACd;AAAA,cACA,SAAS,MAAM,WAAW,IAAI;AAAA,cAC9B,QAAQ,MAAM,WAAW,KAAK;AAAA,cAC9B,WAAU;AAAA;AAAA,UACZ;AAAA,UAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,+CAC0B,EAAE,KAAK;AAAA;AAAA,cAExC,YACE,8EACA,4DACJ;AAAA,cACE,UAAU,4BAA4B,EAAE;AAAA;AAAA,cAG3C,uBACC,gBAAAA,MAAC,UAAK,WAAW,GAAG,EAAE,KAAK,gCAAgC;AAAA;AAAA,UAE/D;AAAA,WACF;AAAA,QAEC,SACC,gBAAAA,MAAC,UAAK,WAAW,GAAG,EAAE,IAAI,qEACvB,iBACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ACxEI,SACE,OAAAG,OADF,QAAAC,cAAA;AAFG,SAAS,cAAc;AAC5B,SACE,gBAAAA,OAAC,SAAI,WAAU,wDACb;AAAA,oBAAAD,MAAC,WAAQ,MAAK,WAAU;AAAA,IACxB,gBAAAA,MAAC,UAAK,WAAU,UAAS,qBAAO;AAAA,KAClC;AAEJ;;;ACTA,SAAS,WAAW,QAAQ,YAAAE,iBAAgB;AAC5C,SAAS,oBAAoB;AA0CvB,SAUU,OAAAC,OAVV,QAAAC,cAAA;AAjCC,SAAS,MAAM,EAAE,SAAS,IAAI,aAAa,IAAK,GAAe;AACpE,QAAM,CAAC,UAAU,WAAW,IAAIC,UAAS,GAAG;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,WAAW,OAAsB,IAAI;AAC3C,QAAM,SAAS,OAAsB,IAAI;AAEzC,YAAU,MAAM;AACd,UAAM,KAAK,sBAAsB,MAAM,WAAW,IAAI,CAAC;AACvD,WAAO,MAAM,qBAAqB,EAAE;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,OAAO,CAAC,QAAgB;AAC5B,UAAI,CAAC,SAAS,QAAS,UAAS,UAAU;AAC1C,YAAM,UAAU,MAAM,SAAS;AAC/B,kBAAY,KAAK,IAAI,GAAG,MAAO,UAAU,aAAc,GAAG,CAAC;AAC3D,UAAI,UAAU,WAAY,QAAO,UAAU,sBAAsB,IAAI;AAAA,IACvE;AACA,WAAO,UAAU,sBAAsB,IAAI;AAC3C,WAAO,MAAM;AACX,UAAI,OAAO,QAAS,sBAAqB,OAAO,OAAO;AAAA,IACzD;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,YAAY,UACd,8BACA;AAEJ,QAAM,cAAc,KAAK,sBAAsB;AAC/C,QAAM,cAAc,KAAK,sBAAsB;AAE/C,SAAO;AAAA,IACL,gBAAAF,MAAC,SAAI,WAAU,6LACb,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,GAAG,SAAS;AAAA,QACvB,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ,aAAa,WAAW;AAAA,UAChC,YAAY,aAAa,WAAW;AAAA,UACpC,OAAO;AAAA,QACT;AAAA,QAEA;AAAA,0BAAAD,MAAC,UAAK,WAAU,qDAAoD,OAAO,EAAE,OAAO,YAAY,GAC7F,eAAK,gBAAAA,MAAC,SAAM,MAAM,IAAI,IAAK,gBAAAA,MAAC,KAAE,MAAM,IAAI,GAC3C;AAAA,UACA,gBAAAA,MAAC,UAAK,WAAU,kDAAiD,OAAO,EAAE,YAAY,mBAAmB,GACtG,mBACH;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,OAAO,GAAG,QAAQ,KAAK,YAAY,YAAY;AAAA;AAAA,UAC1D;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;;;AClEA,SAAS,eAAe,YAAY,SAAS,YAAAG,iBAAgC;AAkCzE,SAEW,OAAAC,OAFX,QAAAC,cAAA;AApBJ,IAAM,eAAe,cAAwC,IAAI;AAM1D,SAAS,cAAc,EAAE,SAAS,GAAuB;AAC9D,QAAM,CAAC,OAAO,QAAQ,IAAIC,UAA4B,IAAI;AAE1D,QAAM,QAAQ,QAA2B,OAAO;AAAA,IAC9C,WAAW,MAAM,SAAS,IAAI;AAAA,IAC9B,WAAW,CAAC,SAAS,IAAI,aAAa,QAAS;AAC7C,eAAS,EAAE,SAAS,IAAI,WAAW,CAAC;AACpC,aAAO,WAAW,MAAM,SAAS,aAC/B,SAAS,YAAY,WAAW,SAAS,OAAO,KAAK,OAAO,OAC7D,GAAG,UAAU;AAAA,IAChB;AAAA,EACF,IAAI,CAAC,CAAC;AAEN,SACE,gBAAAD,OAAC,aAAa,UAAb,EAAsB,OACpB;AAAA;AAAA,IACA,QAAQ,gBAAAD,MAAC,SAAM,SAAS,MAAM,SAAS,IAAI,MAAM,IAAI,YAAY,MAAM,YAAY,IAAK;AAAA,KAC3F;AAEJ;AAEO,SAAS,WAAW;AACzB,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;;;ACrCI,SAGE,OAAAG,OAHF,QAAAC,cAAA;AAHG,SAAS,UAAU,EAAE,SAAS,YAAY,GAAG,GAAmB;AACrE,MAAI,CAAC,QAAS,QAAO;AACrB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,sIAAsI,SAAS;AAAA,MAE1J;AAAA,wBAAAD,MAAC,SAAM,MAAM,IAAI,WAAU,mBAAkB;AAAA,QAC7C,gBAAAA,MAAC,UAAK,WAAU,yBAAyB,mBAAQ;AAAA;AAAA;AAAA,EACnD;AAEJ;;;ACjBA,SAAS,iBAAiD;AA+BtB,gBAAAE,OAyB5B,QAAAC,cAzB4B;AAb7B,IAAM,gBAAN,cAA4B,UAAkD;AAAA,EAA9E;AAAA;AACL,iBAA4B,EAAE,UAAU,MAAM;AAAA;AAAA,EAE9C,OAAO,2BAA+C;AACpD,WAAO,EAAE,UAAU,KAAK;AAAA,EAC1B;AAAA,EAEA,kBAAkB,OAAc,MAAiB;AAC/C,YAAQ,MAAM,sBAAsB,OAAO,IAAI;AAAA,EACjD;AAAA,EAEA,SAAS;AACP,QAAI,KAAK,MAAM,UAAU;AACvB,aAAO,KAAK,MAAM,YAAY,gBAAAD,MAAC,wBAAqB;AAAA,IACtD;AAEA,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;AAEO,SAAS,qBAAqB;AAAA,EACnC,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,cAAc;AAChB,GAA8B;AAC5B,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,YAAY,uBAAuB;AAAA,MAE5C;AAAA,wBAAAD,MAAC,UAAO;AAAA,QACR,gBAAAA,MAAC,aAAU,OAAM,0BAAyB;AAAA,QAE1C,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,WAAW,4BAA4B;AAAA,YAEhD;AAAA,8BAAAA,OAAC,SACC;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO,EAAE,UAAU,0BAA0B,OAAO,0BAA0B,eAAe,UAAU;AAAA,oBACxG;AAAA;AAAA,gBAED;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO,EAAE,YAAY,sEAAsE,SAAS,IAAI;AAAA;AAAA,gBAC1G;AAAA,iBACF;AAAA,cAEA,gBAAAC,OAAC,SAAI,WAAU,yBACb;AAAA,gCAAAD,MAAC,OAAE,WAAU,2BAA0B,OAAO,EAAE,OAAO,qBAAqB,GAAI,iBAAM;AAAA,gBACtF,gBAAAA,MAAC,OAAE,WAAU,yCAAwC,OAAO,EAAE,OAAO,qBAAqB,GAAI,uBAAY;AAAA,iBAC5G;AAAA,cAEA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,eAAe;AAAA,oBACf,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,YAAY;AAAA,kBACd;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cAEA,gBAAAA,MAAC,SAAI,WAAU,UACb,0BAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,MAAM,OAAO,SAAS,OAAO;AAAA,kBACtC,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,YAAY;AAAA,oBACZ,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,YAAY;AAAA,oBACZ,eAAe;AAAA,kBACjB;AAAA,kBAEC;AAAA;AAAA,oBAAY;AAAA;AAAA;AAAA,cACf,GACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,SAAS;AACvB,SACE,gBAAAD,MAAC,SAAI,WAAU,oMAAmM;AAEtN;AAEO,SAAS,UAAU,EAAE,MAAM,GAAsB;AACtD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,YAAY,sCAAsC,KAAK,wBAAwB;AAAA;AAAA,EAC1F;AAEJ;;;AC3HA,SAAoB,SAAAE,cAAa;AACjC,SAAS,gBAAAC,qBAAoB;AAkDf,gBAAAC,OAIF,QAAAC,cAJE;AAnCd,IAAM,YAAiE;AAAA,EACrE,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AACf,GAAmB;AACjB,QAAM,UAAUC,OAAM;AACtB,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAOC;AAAA,IACL,gBAAAH;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,cAAW;AAAA,QACX,mBAAiB;AAAA,QACjB,WAAU;AAAA,QACV,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,QAAQ;AAAA,QAExD,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,UAAU,UAAU,IAAI,CAAC;AAAA,YAEpC;AAAA,8BAAAA,OAAC,SAAI,WAAU,oCACb;AAAA,gCAAAA,OAAC,SAAI,WAAU,2BACZ;AAAA,0BACC,gBAAAD,MAAC,SAAI,WAAU,2GACZ,gBACH;AAAA,kBAEF,gBAAAC,OAAC,SACC;AAAA,oCAAAD,MAAC,QAAG,IAAI,SAAS,WAAU,qDAAqD,iBAAM;AAAA,oBACrF,YACC,gBAAAA,MAAC,OAAE,WAAU,iEACV,oBACH;AAAA,qBAEJ;AAAA,mBACF;AAAA,gBACC,UACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS;AAAA,oBACT,WAAU;AAAA,oBACV,cAAY;AAAA,oBACZ,OAAO;AAAA,oBAEP,0BAAAA,MAAC,KAAE,MAAM,IAAI;AAAA;AAAA,gBACf;AAAA,iBAEJ;AAAA,cACC;AAAA;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;;;AC/EA,SAAS,gBAAAI,qBAAoB;AA8CnB,SAEI,OAAAC,OAFJ,QAAAC,cAAA;AA5BH,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,GAAuB;AACrB,QAAM,kBAAkB,gBAAgB;AACxC,QAAM,iBAAiB,eAAe;AACtC,QAAM,sBAAsB,eAAe;AAC3C,MAAI,CAAC,KAAM,QAAO;AAClB,SAAOC;AAAA,IACL,gBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS;AAAA,QAET,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,2FAA2F,SAAS,sCAAsC,sBAAsB;AAAA,YAC3K,SAAS,OAAK,EAAE,gBAAgB;AAAA,YAEhC,0BAAAC,OAAC,SAAI,WAAU,2BAEb;AAAA,8BAAAA,OAAC,SAAI,WAAU,2BACZ;AAAA,wBACC,gBAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAW,4DAA4D,SAAS,6FAA6F,yDAAyD;AAAA,oBAErO;AAAA;AAAA,gBACH;AAAA,gBAEF,gBAAAA,MAAC,OAAE,WAAU,oCACV,iBACH;AAAA,iBACF;AAAA,cAGA,gBAAAA,MAAC,OAAE,WAAU,sBACV,+BACH;AAAA,cAGA,gBAAAC,OAAC,SAAI,WAAU,uCACb;AAAA,gCAAAD,MAAC,UAAO,SAAQ,SAAQ,MAAK,MAAK,MAAM,gBAAAA,MAAC,KAAE,MAAM,IAAI,GAAI,SAAS,UAAU,UAAU,SACnF,0BACH;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,SAAS,WAAW;AAAA,oBAC7B,MAAK;AAAA,oBACL,MAAM,SAAS,gBAAAA,MAAC,SAAM,MAAM,IAAI,IAAK,gBAAAA,MAAC,SAAM,MAAM,IAAI;AAAA,oBACtD,SAAS;AAAA,oBACT;AAAA,oBAEC;AAAA;AAAA,gBACH;AAAA,iBACF;AAAA,eACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;;;ACrEM,SAeE,OAAAG,OAfF,QAAAC,cAAA;AALC,SAAS,QAAQ,EAAE,MAAM,UAAU,WAAW,OAAO,QAAQ,UAAU,QAAQ,iBAAiB,MAAM,GAAiB;AAC5H,QAAM,aAAa,UAAU,UAAU,YAAY;AACnD,SACE,gBAAAA,OAAC,UAAK,WAAW,0CAA0C,QAAQ,YAAY,EAAE,IAC9E;AAAA;AAAA,IACD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,gCAAgC,UAAU,IAAI,KAAK;AAAA;AAAA;AAAA,YAG1D,aAAa,QAAQ,qBAAqB,eAAe;AAAA,QAC7D,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,eAAe;AAAA,QACjB;AAAA,QAEC;AAAA;AAAA,UACD,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,cACP,aAAa,QAAQ,wBAAwB,wBAAwB;AAAA,cACzE,OAAO,aAAa,QAChB,EAAE,gBAAgB,yBAAyB,IAC3C,EAAE,mBAAmB,yBAAyB;AAAA;AAAA,UACpD;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;ACEI,gBAAAE,aAAA;AAxBJ,IAAMC,kBAA8C;AAAA,EAClD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,iBAA8C;AAAA,EAClD,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,KAAK;AAAA,EACnB;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AACZ,GAAc;AACZ,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACTC,gBAAe,OAAO;AAAA,QACtB,eAAe,OAAO;AAAA,QACtB,QAAQ,eAAe;AAAA,QACvB;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC1B;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,WAAW,EAAE,UAAU,YAAY,GAAG,GAAqB;AACzE,SAAO,gBAAAD,MAAC,SAAI,WAAW,0DAA0D,SAAS,IAAK,UAAS;AAC1G;AAEO,SAAS,SAAS,EAAE,UAAU,YAAY,GAAG,GAAqB;AACvE,SAAO,gBAAAA,MAAC,SAAI,WAAW,OAAO,SAAS,IAAK,UAAS;AACvD;;;AC1DS,gBAAAE,aAAA;AADF,SAAS,SAAS,EAAE,YAAY,GAAG,GAAkB;AAC1D,SAAO,gBAAAA,MAAC,SAAI,eAAY,QAAO,WAAW,YAAY,SAAS,IAAI;AACrE;;;ACFI,SACE,OAAAC,OADF,QAAAC,cAAA;AAFG,SAAS,aAAa,EAAE,YAAY,GAAG,GAA2B;AACvE,SACE,gBAAAA,OAAC,SAAI,WAAW,QAAQ,SAAS,GAAG,KAAK,GACvC;AAAA,oBAAAD,MAAC,YAAS,WAAU,kBAAiB;AAAA,IACrC,gBAAAA,MAAC,YAAS,WAAU,kBAAiB;AAAA,IACrC,gBAAAA,MAAC,YAAS,WAAU,aAAY;AAAA,KAClC;AAEJ;AAEO,SAAS,gBAAgB,EAAE,QAAQ,EAAE,GAAuB;AACjE,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,gBAAgB,GAAG,KAAK;AAAA,QACxB,WAAW;AAAA,QACX,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,MACd;AAAA,MAEA;AAAA,wBAAAD,MAAC,YAAS,WAAU,iBAAgB;AAAA,QACpC,gBAAAA,MAAC,YAAS,WAAU,YAAW;AAAA,QAC/B,gBAAAA,MAAC,YAAS,WAAU,iBAAgB;AAAA;AAAA;AAAA,EACtC;AAEJ;AAEO,SAAS,iBAAiB;AAC/B,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA,MAEA;AAAA,wBAAAD,MAAC,YAAS,WAAU,iBAAgB;AAAA,QACpC,gBAAAA,MAAC,YAAS,WAAU,iBAAgB;AAAA,QACpC,gBAAAC,OAAC,SAAI,WAAU,cACb;AAAA,0BAAAD,MAAC,YAAS,WAAU,YAAW;AAAA,UAC/B,gBAAAA,MAAC,YAAS,WAAU,YAAW;AAAA,UAC/B,gBAAAA,MAAC,YAAS,WAAU,YAAW;AAAA,WACjC;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,iBAAiB,EAAE,OAAO,EAAE,GAAsB;AACzD,QAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AACtD,SACE,gBAAAA,MAAC,QAAG,WAAU,0BACX,gBAAM,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,MACpC,gBAAAA,MAAC,QAAW,WAAU,aACpB,0BAAAA,MAAC,YAAS,WAAW,OAAO,OAAO,IAAI,OAAO,MAAM,CAAC,IAAI,KADlD,CAET,CACD,GACH;AAEJ;AAEO,SAAS,cAAc,EAAE,OAAO,GAAG,OAAO,EAAE,GAAqC;AACtF,SACE,gBAAAA,MAAC,SAAI,WAAU,4BACb,0BAAAA,MAAC,SAAI,WAAU,mBACb,0BAAAC,OAAC,WAAM,WAAU,kBACf;AAAA,oBAAAD,MAAC,WACC,0BAAAA,MAAC,QAAG,WAAU,qCACX,gBAAM,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,MACpC,gBAAAA,MAAC,QAAW,WAAU,aACpB,0BAAAA,MAAC,YAAS,WAAU,YAAW,KADxB,CAET,CACD,GACH,GACF;AAAA,IACA,gBAAAA,MAAC,WACE,gBAAM,KAAK,EAAE,QAAQ,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,MACpC,gBAAAA,MAAC,oBAAyB,QAAH,CAAe,CACvC,GACH;AAAA,KACF,GACF,GACF;AAEJ;AAEO,SAAS,qBAAqB;AACnC,SACE,gBAAAC,OAAC,SAAI,WAAU,mDACb;AAAA,oBAAAA,OAAC,SACC;AAAA,sBAAAD,MAAC,YAAS,WAAU,iBAAgB;AAAA,MACpC,gBAAAA,MAAC,YAAS,WAAU,YAAW;AAAA,OACjC;AAAA,IACA,gBAAAA,MAAC,YAAS,WAAU,YAAW;AAAA,KACjC;AAEJ;;;ACjFI,gBAAAE,aAAA;AAhBJ,IAAMC,kBAA0C;AAAA,EAC9C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT;AAOO,SAAS,MAAM,EAAE,UAAU,UAAU,WAAW,YAAY,GAAG,GAAe;AACnF,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,wGAAwGC,gBAAe,OAAO,CAAC,IAAI,SAAS;AAAA,MAEtJ;AAAA;AAAA,EACH;AAEJ;;;ACbI,SAEa,OAAAC,OAFb,QAAAC,cAAA;AAJG,SAAS,WAAW,EAAE,OAAO,aAAa,SAAS,KAAK,GAAoB;AACjF,QAAM,gBAAgB,SAAS,WAAW;AAE1C,SACE,gBAAAA,OAAC,SAAI,WAAU,0DACb;AAAA,oBAAAD,MAAC,SAAI,WAAU,uCACZ,kBAAQ,gBAAAA,MAAC,QAAK,MAAM,IAAI,GAC3B;AAAA,IACA,gBAAAA,MAAC,OAAE,WAAU,oDAAoD,yBAAc;AAAA,IAC9E,cACC,gBAAAA,MAAC,OAAE,WAAU,oDAAoD,uBAAY,IAC3E;AAAA,KACN;AAEJ;AAEO,SAAS,WAAW;AAAA,EACzB,QAAQ;AAAA,EACR;AACF,GAGG;AACD,SACE,gBAAAC,OAAC,SAAI,WAAU,wDACb;AAAA,oBAAAD,MAAC,SAAI,WAAU,sCACb,0BAAAA,MAAC,QAAK,MAAM,IAAI,GAClB;AAAA,IACA,gBAAAA,MAAC,OAAE,WAAU,mDAAmD,iBAAM;AAAA,IACrE,QAAQ,gBAAAA,MAAC,OAAE,WAAU,yCAAyC,gBAAM,SAAQ,IAAO;AAAA,KACtF;AAEJ;;;ACXQ,gBAAAE,OAIF,QAAAC,cAJE;AAXD,SAAS,WAAW,OAAwB;AACjD,MAAI,UAAU,OAAO;AACnB,UAAM,EAAE,MAAM,UAAU,QAAQ,WAAAC,aAAY,GAAG,IAAI;AACnD,UAAM,SACJ,YAAY,SACR,uCACA,YAAY,SACV,uCACA;AAER,UAAM,OAAO,YAAY,SACrB,gBAAAF,MAAC,YAAS,MAAM,IAAI,WAAU,iBAAgB,IAC9C,gBAAAA,MAAC,QAAK,MAAM,IAAI,WAAU,iBAAgB;AAE9C,WACE,gBAAAC,OAAC,SAAI,WAAW,yEAAyE,MAAM,IAAIC,UAAS,IACzG;AAAA;AAAA,MACD,gBAAAF,MAAC,OAAE,WAAU,aAAa,gBAAK;AAAA,OACjC;AAAA,EAEJ;AAEA,QAAM,EAAE,OAAO,aAAa,YAAY,GAAG,IAAI;AAE/C,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,+GAA+G,SAAS;AAAA,MAEnI;AAAA,wBAAAD,MAAC,OAAE,WAAU,yFACV,iBACH;AAAA,QACA,gBAAAA,MAAC,OAAE,WAAU,oDACV,uBACH;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACjBqB,gBAAAG,OAIX,QAAAC,cAJW;AAtBd,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,UAAU;AACZ,GAAoB;AAClB,QAAM,kBAAkB,WAAW;AACnC,QAAM,eAAe,YAAY,WAC7B,sHACA,YAAY,eACV,gHACA;AAEN,SACE,gBAAAA,OAAC,SAAI,WAAW,2DAA2D,YAAY,IAAI,SAAS,GAAG,KAAK,GACzG;AAAA,kBAAc,gBAAAD,MAAC,SAAI,WAAU,oFAAoF,uBAAY,IAAS;AAAA,IACvI,gBAAAC,OAAC,SAAI,WAAU,qEACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,WACZ;AAAA,mBAAW,gBAAAD,MAAC,SAAI,WAAU,iBAAiB,oBAAS,IAAS;AAAA,QAC9D,gBAAAC,OAAC,SAAI,WAAU,6BACZ;AAAA,iBAAO,gBAAAD,MAAC,UAAK,WAAU,8BAA8B,gBAAK,IAAU;AAAA,UACrE,gBAAAA,MAAC,QAAG,WAAU,wGACX,iBACH;AAAA,WACF;AAAA,QACC,cAAc,gBAAAA,MAAC,SAAI,WAAU,mEAAmE,uBAAY,IAAS;AAAA,QACrH,OAAO,gBAAAA,MAAC,SAAI,WAAU,gEAAgE,gBAAK,IAAS;AAAA,SACvG;AAAA,MACC,kBAAkB,gBAAAA,MAAC,SAAI,WAAU,iCAAiC,2BAAgB,IAAS;AAAA,OAC9F;AAAA,IACC,SAAS,SAAS;AAAA,KACrB;AAEJ;;;ACpBQ,SACE,OAAAE,OADF,QAAAC,cAAA;AApBR,IAAM,eAAgD;AAAA,EACpD,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AACZ,GAAoB;AAClB,SACE,gBAAAA,OAAC,QAAK,SAAkB,SAAQ,MAAK,OAAK,MAAC,WAAW,4BAA4B,SAAS,IACzF;AAAA,oBAAAA,OAAC,SAAI,WAAU,0CACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,WACb;AAAA,wBAAAD,MAAC,OAAE,WAAU,8FACV,iBACH;AAAA,QACA,gBAAAA,MAAC,SAAI,WAAU,gGACZ,iBACH;AAAA,SACF;AAAA,MACC,OACC,gBAAAA,MAAC,SAAI,WAAU,8IACZ,gBACH,IACE;AAAA,OACN;AAAA,IACE,eAAe,QACf,gBAAAC,OAAC,SAAI,WAAU,0CACZ;AAAA,cACC,gBAAAD,MAAC,UAAK,WAAW,4FAA4F,aAAa,SAAS,CAAC,IACjI,iBACH,IACE;AAAA,MACH,cAAc,gBAAAA,MAAC,OAAE,WAAU,0CAA0C,uBAAY,IAAO;AAAA,OAC3F,IACE;AAAA,KACN;AAEJ;;;ACpDI,gBAAAE,aAAA;AAFG,SAAS,SAAS,EAAE,UAAU,YAAY,IAAI,iBAAiB,QAAQ,GAAkB;AAC9F,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,cAAc,SAAS;AAAA,MAClC,OAAO,EAAE,qBAAqB,2BAA2B,cAAc,UAAU;AAAA,MAEhF;AAAA;AAAA,EACH;AAEJ;;;ACDU,SACa,OAAAC,OADb,QAAAC,cAAA;AALH,SAAS,YAAY,EAAE,OAAO,SAAS,aAAa,QAAQ,UAAU,YAAY,GAAG,GAAqB;AAC/G,SACE,gBAAAA,OAAC,QAAK,SAAQ,WAAU,SAAQ,QAAO,WACnC;AAAA,aAAS,WAAW,eAAe,SACnC,gBAAAA,OAAC,SAAI,WAAU,4HACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,WACZ;AAAA,kBAAU,gBAAAD,MAAC,SAAI,WAAU,eAAe,mBAAQ,IAAS;AAAA,QACzD,QAAQ,gBAAAA,MAAC,QAAG,WAAU,0DAA0D,iBAAM,IAAQ;AAAA,QAC9F,cAAc,gBAAAA,MAAC,OAAE,WAAU,+CAA+C,uBAAY,IAAO;AAAA,SAChG;AAAA,MACC,SAAS,gBAAAA,MAAC,SAAI,WAAU,YAAY,kBAAO,IAAS;AAAA,OACvD,IACE;AAAA,IACJ,gBAAAA,MAAC,SAAI,WAAU,OAAO,UAAS;AAAA,KACjC;AAEJ;;;ACAI,SAEI,OAAAE,OAFJ,QAAAC,cAAA;AAbG,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,GAAG;AACL,GAAqB;AACnB,SACE,gBAAAA,OAAC,SAAI,WAAW,YAAY,gBAAgB,GAAG,KAAK,GAAG,OAAO,cAC5D;AAAA,oBAAAD,MAAC,UAAK,WAAW,gEAAgE,aAAa,GAAG,KAAK,GACpG,0BAAAA,MAAC,UAAO,MAAM,IAAI,GACpB;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,MAAK;AAAA,QACL;AAAA,QACA,UAAU,OAAK,SAAS,EAAE,OAAO,KAAK;AAAA,QACtC;AAAA,QACA,WAAW,QAAQ,cAAc,GAAG,KAAK;AAAA;AAAA,IAC3C;AAAA,IACC,aAAa,QACZ,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM,SAAS,EAAE;AAAA,QAC1B,WAAU;AAAA,QACV,OAAO;AAAA,QAEP,0BAAAA,MAAC,KAAE,MAAM,IAAI;AAAA;AAAA,IACf,IACE;AAAA,KACN;AAEJ;;;ACFQ,gBAAAE,OAUA,QAAAC,cAVA;AA9BR,SAAS,eAAe,MAAc,YAAsC;AAC1E,MAAI,cAAc,EAAG,QAAO,MAAM,KAAK,EAAE,QAAQ,WAAW,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC;AAC9E,QAAM,QAA0B,CAAC,CAAC;AAClC,MAAI,OAAO,EAAG,OAAM,KAAK,QAAG;AAC5B,WAAS,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,KAAK,KAAK,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,KAAK,EAAG,OAAM,KAAK,CAAC;AACjG,MAAI,OAAO,aAAa,EAAG,OAAM,KAAK,QAAG;AACzC,QAAM,KAAK,UAAU;AACrB,SAAO;AACT;AAEA,IAAM,gBAA4C;AAAA,EAChD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,MAAM,WAAW,IAAI,IAAI,EAAE,OAAO,KAAK;AAAA,EACnE,MAAM,CAAC,EAAE,MAAM,WAAW,MAAM,QAAQ,IAAI,OAAO,UAAU;AAAA,EAC7D,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AACb;AAEO,SAAS,WAAW,EAAE,MAAM,YAAY,UAAU,YAAY,UAAU,OAAO,GAAoB;AACxG,MAAI,cAAc,EAAG,QAAO;AAE5B,QAAM,OAAO,EAAE,GAAG,eAAe,GAAG,OAAO;AAC3C,QAAM,cAAc,eAAe,MAAM,UAAU;AACnD,QAAM,OAAO,YAAY,OAAO,KAAK,WAAW,IAAI;AACpD,QAAM,KAAK,YAAY,aAAa,KAAK,IAAI,OAAO,UAAU,UAAU,IAAI;AAE5E,SACE,gBAAAA,OAAC,SAAI,WAAU,4FACZ;AAAA,kBAAc,QAAQ,QAAQ,QAAQ,MAAM,OAC3C,gBAAAD,MAAC,UAAK,WAAU,uDACb,eAAK,QAAQ,EAAE,MAAM,IAAI,OAAO,WAAW,CAAC,GAC/C,IAEA,gBAAAA,MAAC,UAAK,WAAU,uDACb,eAAK,KAAK,EAAE,MAAM,WAAW,CAAC,GACjC;AAAA,IAGF,gBAAAC,OAAC,SAAI,WAAU,8CACb;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC;AAAA,UAC7C,UAAU,SAAS;AAAA,UACnB,OAAO,KAAK;AAAA,UACZ,WAAU;AAAA,UAEV;AAAA,4BAAAD,MAAC,eAAY,MAAM,IAAI;AAAA,YACvB,gBAAAA,MAAC,UAAK,WAAU,oBAAoB,eAAK,MAAK;AAAA;AAAA;AAAA,MAChD;AAAA,MAEA,gBAAAA,MAAC,SAAI,WAAU,2BACZ,sBAAY;AAAA,QAAI,CAAC,OAAO,UACvB,UAAU,WACR,gBAAAA,MAAC,UAA+B,WAAU,oDAAmD,sBAAlF,YAAY,KAAK,EAE5B,IAEA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAS,MAAM,SAAS,KAAK;AAAA,YAC7B,WAAW,0DACT,SAAS,QACL,0DACA,kEACN;AAAA,YAEC;AAAA;AAAA,UATI;AAAA,QAUP;AAAA,MAEJ,GACF;AAAA,MAEA,gBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM,SAAS,KAAK,IAAI,YAAY,OAAO,CAAC,CAAC;AAAA,UACtD,UAAU,QAAQ;AAAA,UAClB,OAAO,KAAK;AAAA,UACZ,WAAU;AAAA,UAEV;AAAA,4BAAAD,MAAC,UAAK,WAAU,oBAAoB,eAAK,MAAK;AAAA,YAC9C,gBAAAA,MAAC,gBAAa,MAAM,IAAI;AAAA;AAAA;AAAA,MAC1B;AAAA,OACF;AAAA,KACF;AAEJ;;;ACnGS,gBAAAE,aAAA;AADF,SAAS,aAAa,EAAE,UAAU,YAAY,GAAG,GAAsB;AAC5E,SAAO,gBAAAA,MAAC,QAAG,WAAW,yCAAyC,SAAS,GAAG,KAAK,GAAI,UAAS;AAC/F;;;ACwBS,gBAAAC,aAAA;AAfT,IAAM,OACJ;AAEF,IAAM,gBAAoD;AAAA,EACxD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AACX;AAEO,SAAS,YAAY,EAAE,OAAO,UAAU,WAAW,YAAY,GAAG,GAAqB;AAC5F,SAAO,gBAAAA,MAAC,UAAK,WAAW,GAAG,IAAI,IAAI,cAAc,OAAO,CAAC,IAAI,SAAS,GAAG,KAAK,GAAI,iBAAM;AAC1F;;;ACjCA,SAAS,aAAAC,YAAW,iBAAiB,UAAAC,SAAQ,YAAAC,iBAAgB;AAC7D,SAAS,gBAAAC,qBAAoB;AA4HzB,mBACE,OAAAC,OAoBM,QAAAC,cArBR;AAhGJ,IAAM,mBAAkC;AAAA,EACtC,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb;AAEA,IAAM,gBACJ;AAUK,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AACF,GAAoB;AAClB,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,CAAC,KAAK,MAAM,IAAIA,UAA8B,IAAI;AACxD,QAAM,SAASC,QAAuB,IAAI;AAC1C,QAAM,UAAUA,QAAuB,IAAI;AAE3C,kBAAgB,MAAM;AACpB,QAAI,CAAC,QAAQ,CAAC,OAAO,QAAS;AAE9B,UAAM,iBAAiB,MAAM;AAC3B,YAAM,gBAAgB,OAAO;AAC7B,UAAI,CAAC,cAAe;AACpB,YAAM,OAAO,cAAc,sBAAsB;AACjD,YAAM,kBAAkB;AACxB,YAAM,aAAa;AACnB,YAAM,QAAQ,KAAK,IAAI,KAAK,OAAO,aAAa,kBAAkB,CAAC;AACnE,YAAM,OAAO,KAAK;AAAA,QAChB;AAAA,QACA,KAAK,IAAI,KAAK,QAAQ,OAAO,OAAO,aAAa,QAAQ,eAAe;AAAA,MAC1E;AACA,YAAM,sBAAsB,KAAK,IAAI,KAAK,MAAM,SAAS,KAAK,EAAE;AAChE,YAAM,aAAa,KAAK,IAAI,GAAG,KAAK,MAAM,kBAAkB,UAAU;AACtE,YAAM,aAAa,KAAK,IAAI,GAAG,OAAO,cAAc,KAAK,SAAS,kBAAkB,UAAU;AAC9F,YAAM,cAAc,cAAc,uBAAuB,cAAc;AAEvE,UAAI,aAAa;AACf,eAAO;AAAA,UACL,KAAK,KAAK,IAAI,KAAK,SAAS,YAAY,OAAO,cAAc,eAAe;AAAA,UAC5E;AAAA,UACA,OAAO;AAAA,UACP,WAAW,KAAK,IAAI,KAAK,UAAU;AAAA,QACrC,CAAC;AACD;AAAA,MACF;AAEA,aAAO;AAAA,QACL,QAAQ,KAAK,IAAI,OAAO,cAAc,KAAK,MAAM,YAAY,eAAe;AAAA,QAC5E;AAAA,QACA,OAAO;AAAA,QACP,WAAW,KAAK,IAAI,KAAK,UAAU;AAAA,MACrC,CAAC;AAAA,IACH;AAEA,mBAAe;AACf,WAAO,iBAAiB,UAAU,cAAc;AAChD,aAAS,iBAAiB,UAAU,gBAAgB,IAAI;AACxD,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,cAAc;AACnD,eAAS,oBAAoB,UAAU,gBAAgB,IAAI;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,IAAI,CAAC;AAEvB,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,KAAM;AACX,aAAS,OAAO,GAA+B;AAC7C,UAAI,aAAa,eAAe;AAAE,YAAI,EAAE,QAAQ,SAAU,SAAQ,KAAK;AAAG;AAAA,MAAQ;AAClF,YAAM,SAAS,EAAE;AACjB,UAAI,OAAO,SAAS,SAAS,MAAM,KAAK,QAAQ,SAAS,SAAS,MAAM,EAAG;AAC3E,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,iBAAiB,aAAa,MAAM;AAC7C,aAAS,iBAAiB,WAAW,MAAM;AAC3C,WAAO,MAAM;AAAE,eAAS,oBAAoB,aAAa,MAAM;AAAG,eAAS,oBAAoB,WAAW,MAAM;AAAA,IAAG;AAAA,EACrH,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,WAAW,QAAQ,MACvB,gBAAAH,OAAA,YACE;AAAA,oBAAAD,MAAC,SAAI,WAAU,wBAAuB,SAAS,MAAM,QAAQ,KAAK,GAAG;AAAA,IACrE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW,iBAAiB;AAAA,QAC5B,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK,IAAI,QAAQ,SAAY,IAAI,MAAM;AAAA,UACvC,QAAQ,IAAI,WAAW,SAAY,IAAI,SAAS;AAAA,UAChD,MAAM,IAAI;AAAA,UACV,OAAO,IAAI;AAAA,UACX,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,GAAG;AAAA,UACH,WAAW,IAAI,aAAa,iBAAiB;AAAA,UAC7C,GAAG;AAAA,QACL;AAAA,QAEC,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAC,OAAC,SACE;AAAA,kBAAQ,KAAK,KAAK,SAAS,gBAAAD,MAAC,SAAI,OAAO,EAAE,WAAW,gCAAgC,GAAG,IAAK;AAAA,UAC7F,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW;AAAA,cACX,OAAO,EAAE,OAAO,KAAK,SAAS,sBAAsB,qBAAqB;AAAA,cACzE,UAAU,KAAK,YAAY,KAAK;AAAA,cAChC,SAAS,MAAM;AACb,wBAAQ,KAAK;AACb,qBAAK,SAAS;AAAA,cAChB;AAAA,cAEC;AAAA,qBAAK,UACJ,gBAAAD,MAAC,WAAQ,OAAM,6BAA4B,IAE3C,gBAAAA,MAAC,UAAK,WAAW,KAAK,SAAS,uBAAuB,6BAA8B,eAAK,MAAK;AAAA,gBAEhG,gBAAAA,MAAC,UAAM,eAAK,OAAM;AAAA;AAAA;AAAA,UACpB;AAAA,aAlBQ,KAAK,GAmBf,CACD;AAAA;AAAA,IACH;AAAA,KACF,IACE;AAEJ,SACE,gBAAAC,OAAC,SAAI,KAAK,QAAQ,WAAW,YAAY,oBAAoB,oCAC3D;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,QACA,WAAW,gBAAAA,MAAC,eAAY,MAAM,IAAI;AAAA,QAClC,SAAS,MAAM,QAAQ,WAAS,CAAC,KAAK;AAAA,QACtC,WAAW;AAAA,QACX;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IACC,OAAO,aAAa,cAAcK,cAAa,UAAU,SAAS,IAAI,IAAI;AAAA,KAC7E;AAEJ;;;AC1LA,SAAS,WAAAC,UAAS,YAAAC,iBAAgC;;;ACAlD,SAAS,YAA4B;AAqBjC,SAOI,OAAAC,OAPJ,QAAAC,cAAA;AAlBJ,IAAM,cAA2C;AAAA,EAC/C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAWA,SAAS,kBAAqB,EAAE,KAAK,SAAS,YAAY,YAAY,mBAAmB,eAAe,UAAU,KAAK,GAAyB;AAC9I,QAAM,YAAY,QAAQ,UAAU;AACpC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,YAAY,MAAM,aAAa,GAAG,IAAI;AAAA,MAC/C,WAAW,2GAA2G,UAAU,2FAA2F,EAAE,IAC3N,YAAY,mBAAmB,EACjC;AAAA,MAEC;AAAA,gBAAQ,IAAI,CAAC,WACZ,gBAAAD;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW,GAAG,gBAAgB,+CAA+C,YAAY,OAAO,SAAS,MAAM,CAAC,IAC9G,OAAO,aAAa,EACtB;AAAA,YAEC,iBAAO,KAAK,GAAG;AAAA;AAAA,UALX,OAAO;AAAA,QAMd,CACD;AAAA,QACA,eAAe,UACd,gBAAAA,MAAC,QAAG,WAAW,GAAG,gBAAgB,eAAgB,qBAAW,GAAG,GAAE;AAAA;AAAA;AAAA,EAEtE;AAEJ;AAQO,IAAM,eAAe,KAAK,iBAAiB;;;ADoGlC,gBAAAE,OAuCE,QAAAC,cAvCF;AAjJhB,IAAMC,eAA2C;AAAA,EAC/C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAmDA,SAAS,cACP,GACA,GACQ;AACR,MAAI,KAAK,QAAQ,KAAK,KAAM,QAAO;AACnC,MAAI,KAAK,KAAM,QAAO;AACtB,MAAI,KAAK,KAAM,QAAO;AACtB,MAAI,aAAa,QAAQ,aAAa,KAAM,QAAO,EAAE,QAAQ,IAAI,EAAE,QAAQ;AAC3E,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SAAU,QAAO,IAAI;AAC/D,MAAI,OAAO,MAAM,aAAa,OAAO,MAAM,UAAW,QAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AACjF,SAAO,OAAO,CAAC,EAAE,cAAc,OAAO,CAAC,CAAC;AAC1C;AAEA,SAAS,SAAS,QAAiB,WAA+D;AAChG,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,cAAc,QAAQ,cAAc;AAC7C;AAaO,SAAS,UAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,YAAY;AACd,GAAsB;AACpB,QAAM,CAAC,MAAM,OAAO,IAAIC,UAA2B,IAAI;AAGvD,QAAM,aAAaC,SAAQ,MAAM;AAC/B,QAAI,WAAY,QAAO;AACvB,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,SAAS,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ;AACzD,QAAI,CAAC,QAAQ,aAAc,QAAO;AAClC,UAAM,WAAW,OAAO;AACxB,UAAM,SAAS,KAAK,cAAc,QAAQ,IAAI;AAC9C,WAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,MAAM;AAAA,EAClF,GAAG,CAAC,MAAM,SAAS,MAAM,UAAU,CAAC;AAEpC,QAAM,aAAa,CAAC,aAAqB;AACvC,QAAI,YAAY;AACd,iBAAW,OAAO,QAAQ;AAC1B;AAAA,IACF;AACA,YAAQ,CAAC,SAAS;AAChB,UAAI,MAAM,aAAa,SAAU,QAAO,EAAE,UAAU,WAAW,MAAM;AACrE,aAAO,EAAE,UAAU,WAAW,KAAK,cAAc,QAAQ,SAAS,MAAM;AAAA,IAC1E,CAAC;AAAA,EACH;AAEA,QAAM,aAAa,eAAe;AAClC,QAAM,WAAW,QAAQ,UAAU,aAAa,IAAI;AACpD,QAAM,aAAa,eAAe,SAAY,kDAAkD;AAChG,QAAM,qBAAqB,YAAY,YAAY,cAAc,YAAY,aAAa,cAAc;AACxG,QAAM,mBAAmB,YAAY,YAAY,cAAc,YAAY,aAAa,cAAc;AACtG,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,YAAY,WAAW,qFAAqF;AAAA,IAC5G,YAAY,eAAe,iEAAiE;AAAA,IAC5F;AAAA,EACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SACE,gBAAAH,OAAC,SAAI,WAAW,cAEb;AAAA,mBAAe,UACd,gBAAAD,MAAC,SAAI,WAAU,aACZ,sBACG,MAAM,KAAK,EAAE,QAAQ,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,MAC1C,gBAAAA,MAAC,SAAY,WAAU,mCAAb,CAA6C,CACxD,IACD,WAAW,WAAW,IACpB,aACA,WAAW,IAAI,CAAC,QACd,gBAAAA,MAAC,SAAuB,qBAAW,GAAG,KAA5B,OAAO,GAAG,CAAoB,CACzC,GACT;AAAA,IAGF,gBAAAC,OAAC,WAAM,WAAW,YAChB;AAAA,sBAAAD,MAAC,WACC,0BAAAC,OAAC,QAAG,WAAU,qCACX;AAAA,gBAAQ,IAAI,CAAC,WAAW;AACvB,gBAAM,YAAY,GAAG,kBAAkB,IAAI,eAAe,sBAAsB,EAAE,IAAIC,aAAY,OAAO,SAAS,MAAM,CAAC;AAEzH,cAAI,CAAC,OAAO,YAAY,CAAC,OAAO,cAAc;AAC5C,mBACE,gBAAAF,MAAC,QAAmB,OAAM,OAAM,WAAW,WACxC,iBAAO,UADD,OAAO,EAEhB;AAAA,UAEJ;AAGA,gBAAM,SAAS,aACX,WAAW,UAAU,OAAO,KAC5B,MAAM,aAAa,OAAO;AAC9B,gBAAM,YAAY,aACd,WAAW,MACV,MAAM,aAAa;AAExB,iBACE,gBAAAA;AAAA,YAAC;AAAA;AAAA,cAEC,OAAM;AAAA,cACN,aAAW,SAAS,QAAQ,SAAS;AAAA,cACrC,WAAW;AAAA,cAEX,0BAAAC;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,MAAM,WAAW,OAAO,EAAE;AAAA,kBACnC,WAAW,iFACT,SAAS,eAAe,EAC1B;AAAA,kBAEC;AAAA,2BAAO;AAAA,oBACP,WACE,cAAc,QAAQ,gBAAAD,MAAC,aAAU,MAAM,IAAI,IAAK,gBAAAA,MAAC,eAAY,MAAM,IAAI;AAAA;AAAA;AAAA,cAC5E;AAAA;AAAA,YAfK,OAAO;AAAA,UAgBd;AAAA,QAEJ,CAAC;AAAA,QACA,cACC,gBAAAA,MAAC,QAAG,OAAM,OAAM,WAAU,4GAA2G;AAAA,SAEzI,GACF;AAAA,MACA,gBAAAA,MAAC,WACE,sBACC,MAAM,KAAK,EAAE,QAAQ,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,aAC1C,gBAAAA,MAAC,QAAkB,WAAU,gDAC1B,gBAAM,KAAK,EAAE,QAAQ,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,aACzC,gBAAAA,MAAC,QAAkB,WAAW,kBAC5B,0BAAAA,MAAC,SAAI,WAAU,6DAA4D,KADpE,QAET,CACD,KALM,QAMT,CACD,IACC,WAAW,WAAW,IACxB,gBAAAA,MAAC,QACC,0BAAAA,MAAC,QAAG,SAAS,UAAU,WAAU,uDAC9B,sBACH,GACF,IAEA,WAAW,IAAI,CAAC,QACd,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QANK,OAAO,GAAG;AAAA,MAOjB,CACD,GAEL;AAAA,OACF;AAAA,IAEC,WAAW,UAAa;AAAA,KAC3B;AAEJ;;;AExOI,gBAAAK,aAAA;AAFG,SAAS,eAAe,EAAE,UAAU,YAAY,IAAI,OAAO,MAAM,QAAQ,KAAK,GAAwB;AAC3G,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,OAAO,kBAAkB;AAAA,QACzB,QAAQ,mBAAmB;AAAA,QAC3B;AAAA,MACF,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAEzB;AAAA;AAAA,EACH;AAEJ;;;ACRM,SACa,OAAAC,OADb,QAAAC,cAAA;AAHC,SAAS,UAAU,EAAE,SAAS,OAAO,aAAa,SAAS,QAAQ,MAAM,YAAY,GAAG,GAAmB;AAChH,SACE,gBAAAA,OAAC,aAAQ,WAAW,2IAA2I,SAAS,IACtK;AAAA,oBAAAA,OAAC,SAAI,WAAU,sBACZ;AAAA,gBAAU,gBAAAD,MAAC,SAAI,WAAU,eAAe,mBAAQ,IAAS;AAAA,MAC1D,gBAAAA,MAAC,QAAG,WAAU,mHACX,iBACH;AAAA,MACC,cAAc,gBAAAA,MAAC,OAAE,WAAU,oFAAoF,uBAAY,IAAO;AAAA,MAClI,UAAU,gBAAAA,MAAC,SAAI,WAAU,6BAA6B,mBAAQ,IAAS;AAAA,MACvE,OAAO,gBAAAA,MAAC,SAAI,WAAU,sGAAsG,gBAAK,IAAS;AAAA,OAC7I;AAAA,IACC,SACC,gBAAAA,MAAC,SAAI,WAAU,yIACZ,kBACH,IACE;AAAA,KACN;AAEJ;;;ACbgB,gBAAAE,OACR,QAAAC,cADQ;AAJT,SAAS,YAAY,EAAE,OAAO,aAAa,MAAM,SAAS,UAAU,YAAY,IAAI,UAAU,UAAU,GAAqB;AAClI,SACE,gBAAAA,OAAC,QAAK,SAAkB,OAAK,MAAC,WAAW,SAAS,SAAS,IACzD;AAAA,oBAAAA,OAAC,SAAI,WAAU,0BACZ;AAAA,aAAO,gBAAAD,MAAC,SAAI,WAAU,4MAA4M,gBAAK,IAAS;AAAA,MACjP,gBAAAC,OAAC,SAAI,WAAU,WACZ;AAAA,kBAAU,gBAAAD,MAAC,SAAI,WAAU,eAAe,mBAAQ,IAAS;AAAA,QAC1D,gBAAAA,MAAC,QAAG,WAAU,0DAA0D,iBAAM;AAAA,QAC7E,cAAc,gBAAAA,MAAC,OAAE,WAAU,yDAAyD,uBAAY,IAAO;AAAA,SAC1G;AAAA,OACF;AAAA,IACC,WAAW,gBAAAA,MAAC,SAAI,WAAU,QAAQ,UAAS,IAAS;AAAA,KACvD;AAEJ;;;ACpBS,gBAAAE,aAAA;AADF,SAAS,YAAY,EAAE,UAAU,YAAY,GAAG,GAAqB;AAC1E,SAAO,gBAAAA,MAAC,SAAI,WAAW,4CAA4C,SAAS,IAAK,UAAS;AAC5F;;;ACKmB,gBAAAC,OAET,QAAAC,cAFS;AAJZ,SAAS,WAAW,EAAE,SAAS,OAAO,aAAa,SAAS,YAAY,GAAG,GAAoB;AACpG,SACE,gBAAAD,MAAC,aAAQ,WAAW,sFAAsF,SAAS,IACjH,0BAAAC,OAAC,SAAI,WAAU,gIACZ;AAAA,cAAU,gBAAAD,MAAC,SAAI,WAAU,eAAe,mBAAQ,IAAS;AAAA,IAC1D,gBAAAC,OAAC,SAAI,WAAU,mDACb;AAAA,sBAAAA,OAAC,SACC;AAAA,wBAAAD,MAAC,QAAG,WAAU,mEAAmE,iBAAM;AAAA,QACtF,cAAc,gBAAAA,MAAC,OAAE,WAAU,yEAAyE,uBAAY,IAAO;AAAA,SAC1H;AAAA,MACC,UAAU,gBAAAA,MAAC,SAAI,WAAU,wBAAwB,mBAAQ,IAAS;AAAA,OACrE;AAAA,KACF,GACF;AAEJ;;;ACZQ,SACE,OAAAE,OADF,QAAAC,cAAA;AAJD,SAAS,YAAY,EAAE,UAAU,OAAO,SAAS,YAAY,GAAG,GAAqB;AAC1F,SACE,gBAAAA,OAAC,SAAI,WAAW,iIAAiI,SAAS,IACxJ;AAAA,oBAAAA,OAAC,SAAI,WAAU,+HACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,6BACb;AAAA,wBAAAD,MAAC,UAAK,WAAU,mFAAkF;AAAA,QAClG,gBAAAA,MAAC,UAAK,WAAU,oFAAmF;AAAA,QACnG,gBAAAA,MAAC,UAAK,WAAU,oFAAmF;AAAA,SACrG;AAAA,MACC,QAAQ,gBAAAA,MAAC,SAAI,WAAU,kFAAkF,iBAAM,IAAS;AAAA,MACzH,gBAAAA,MAAC,SAAK,mBAAQ;AAAA,OAChB;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,OAAO,UAAS;AAAA,KACjC;AAEJ;;;ACHU,SACE,OAAAE,OADF,QAAAC,cAAA;AALH,SAAS,gBAAgB,EAAE,MAAM,gBAAgB,WAAW,iBAAiB,SAAS,oBAAoB,SAAS,YAAY,GAAG,GAAyB;AAChK,SACE,gBAAAD,MAAC,SAAI,WAAW,8DAA8D,SAAS,IACrF,0BAAAC,OAAC,WAAM,WAAU,kBACf;AAAA,oBAAAD,MAAC,WACC,0BAAAC,OAAC,QACC;AAAA,sBAAAD,MAAC,QAAG,WAAU,uBAAuB,yBAAc;AAAA,MACnD,gBAAAA,MAAC,QAAG,WAAU,uBAAuB,0BAAe;AAAA,MACpD,gBAAAA,MAAC,QAAG,WAAU,uBAAuB,6BAAkB;AAAA,OACzD,GACF;AAAA,IACA,gBAAAA,MAAC,WACE,eAAK,IAAI,CAAC,KAAK,UACd,gBAAAC,OAAC,QAAe,WAAU,gDACxB;AAAA,sBAAAD,MAAC,QAAG,WAAU,0DAA0D,cAAI,SAAQ;AAAA,MACpF,gBAAAA,MAAC,QAAG,WAAU,gDAAgD,cAAI,UAAS;AAAA,MAC3E,gBAAAA,MAAC,QAAG,WAAU,4CAA4C,cAAI,aAAY;AAAA,SAHnE,KAIT,CACD,GACH;AAAA,KACF,GACF;AAEJ;;;AChBM,SACa,OAAAE,OADb,QAAAC,cAAA;AAVN,IAAMC,kBAAiB;AAAA,EACrB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AAEO,SAAS,SAAS,EAAE,SAAS,QAAQ,UAAU,OAAO,YAAY,IAAI,mBAAmB,IAAI,UAAU,UAAU,GAAkB;AACxI,SACE,gBAAAD,OAAC,SAAI,WAAW,iDAAiDC,gBAAe,OAAO,CAAC,IAAI,SAAS,IAClG;AAAA;AAAA,IACD,gBAAAD,OAAC,SAAI,WAAU,sCACZ;AAAA,gBAAU,gBAAAD,MAAC,WAAM,WAAU,mIAAmI,mBAAQ,IAAW;AAAA,MAClL,gBAAAA,MAAC,UAAK,WAAW,sDAAsD,gBAAgB,IAAK,UAAS;AAAA,MACpG,QAAQ,gBAAAA,MAAC,WAAM,WAAU,2GAA2G,iBAAM,IAAW;AAAA,OACxJ;AAAA,KACF;AAEJ;;;ACZI,SACE,OAAAG,OADF,QAAAC,cAAA;AARJ,IAAM,SAAS;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,UAAU,EAAE,SAAS,WAAW,QAAQ,SAAS,kBAAkB,OAAO,YAAY,GAAG,GAAmB;AAC1H,SACE,gBAAAA,OAAC,SAAI,WAAW,cAAc,OAAO,KAAK,CAAC,IAAI,SAAS,IACtD;AAAA,oBAAAD,MAAC,SAAI,WAAW,kBAAkB,uBAAuB,IAAK,mBAAQ;AAAA,IACtE,gBAAAA,MAAC,SAAI,WAAW,kBAAkB,uBAAuB,IAAK,qBAAU;AAAA,KAC1E;AAEJ;;;ACLI,gBAAAE,aAAA;AANJ,IAAM,aAAa,EAAE,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ;AACrF,IAAM,eAAe,EAAE,OAAO,eAAe,QAAQ,gBAAgB,KAAK,aAAa,SAAS,gBAAgB;AAChH,IAAM,iBAAiB,EAAE,OAAO,iBAAiB,QAAQ,kBAAkB,SAAS,mBAAmB,KAAK,cAAc;AAEnH,SAAS,MAAM,EAAE,UAAU,MAAM,MAAM,YAAY,YAAY,QAAQ,WAAW,UAAU,SAAS,OAAO,OAAO,YAAY,GAAG,GAAe;AACtJ,SACE,gBAAAA,MAAC,SAAI,WAAW,QAAQ,cAAc,aAAa,aAAa,UAAU,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,eAAe,OAAO,CAAC,IAAI,OAAO,cAAc,EAAE,IAAI,SAAS,IACpL,UACH;AAEJ;;;ACPS,gBAAAC,aAAA;AALT,IAAMC,cAAa,EAAE,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ;AACxE,IAAMC,gBAAe,EAAE,OAAO,eAAe,QAAQ,gBAAgB,KAAK,YAAY;AACtF,IAAMC,kBAAiB,EAAE,OAAO,iBAAiB,QAAQ,kBAAkB,SAAS,mBAAmB,KAAK,cAAc;AAEnH,SAAS,QAAQ,EAAE,UAAU,MAAM,MAAM,QAAQ,UAAU,UAAU,SAAS,YAAY,GAAG,GAAiB;AACnH,SAAO,gBAAAH,MAAC,SAAI,WAAW,kBAAkBC,YAAW,GAAG,CAAC,IAAIC,cAAa,KAAK,CAAC,IAAIC,gBAAe,OAAO,CAAC,IAAI,SAAS,IAAK,UAAS;AACvI;;;ACGU,SACe,OAAAC,OADf,QAAAC,cAAA;AALH,SAAS,YAAY,EAAE,OAAO,YAAY,KAAK,YAAY,GAAG,GAAqB;AACxF,SACE,gBAAAD,MAAC,SAAI,cAAW,cAAa,WAAW,oFAAoF,SAAS,IACnI,0BAAAA,MAAC,QAAG,WAAU,qCACX,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAC,OAAC,QAAe,WAAU,2BACvB;AAAA,YAAQ,IAAI,gBAAAD,MAAC,UAAK,eAAY,QAAO,WAAU,qCAAqC,qBAAU,IAAU;AAAA,IACxG,KAAK,QAAQ,CAAC,KAAK,UAClB,gBAAAA,MAAC,OAAE,WAAU,oCAAmC,MAAM,KAAK,MAAO,eAAK,OAAM,IAE7E,gBAAAA,MAAC,UAAK,gBAAc,KAAK,UAAU,SAAS,QAAW,WAAW,KAAK,UAAU,qCAAqC,IAAK,eAAK,OAAM;AAAA,OALjI,KAOT,CACD,GACH,GACF;AAEJ;;;ACJgB,SA0BZ,YAAAE,WA1BY,OAAAC,OAGN,QAAAC,cAHM;AAHT,SAAS,WAAW,EAAE,QAAQ,QAAQ,QAAQ,YAAY,GAAG,GAAoB;AACtF,SACE,gBAAAA,OAAC,SAAI,WAAW,kEAAkE,SAAS,IACxF;AAAA,aAAS,gBAAAD,MAAC,SAAI,WAAU,oDAAoD,kBAAO,IAAS;AAAA,IAC7F,gBAAAA,MAAC,SAAI,WAAU,wBACZ,iBAAO,IAAI,CAAC,OAAO,eAClB,gBAAAC,OAAC,SACE;AAAA,YAAM,QAAQ,gBAAAD,MAAC,SAAI,WAAU,wGAAwG,gBAAM,OAAM,IAAS;AAAA,MAC3J,gBAAAA,MAAC,SAAI,WAAU,aACZ,gBAAM,MAAM,IAAI,CAAC,MAAM,cAAc,gBAAAA,MAAC,kBAA+B,QAAX,SAAuB,CAAE,GACtF;AAAA,SAJQ,UAKV,CACD,GACH;AAAA,IACC,SAAS,gBAAAA,MAAC,SAAI,WAAU,oDAAoD,kBAAO,IAAS;AAAA,KAC/F;AAEJ;AAEA,SAAS,eAAe,EAAE,KAAK,GAA6B;AAC1D,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,KAAK,SACD,kJACA;AAAA,IACJ,KAAK,WAAW,mCAAmC;AAAA,EACrD,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,UACJ,gBAAAC,OAAAF,WAAA,EACG;AAAA,SAAK,OAAO,gBAAAC,MAAC,UAAK,WAAU,iEAAiE,eAAK,MAAK,IAAU;AAAA,IAClH,gBAAAA,MAAC,UAAK,WAAU,2BAA2B,eAAK,OAAM;AAAA,IACrD,KAAK,QAAQ,gBAAAA,MAAC,UAAM,eAAK,OAAM,IAAU;AAAA,KAC5C;AAGF,SAAO,KAAK,OAAO,gBAAAA,MAAC,OAAE,WAAsB,MAAM,KAAK,MAAO,mBAAQ,IAAO,gBAAAA,MAAC,YAAO,MAAK,UAAS,WAAsB,SAAS,KAAK,SAAS,UAAU,KAAK,UAAW,mBAAQ;AACpL;;;ACxCM,SACW,OAAAE,OADX,QAAAC,cAAA;AAHC,SAAS,OAAO,EAAE,OAAO,QAAQ,CAAC,GAAG,SAAS,YAAY,IAAI,SAAS,KAAK,GAAgB;AACjG,SACE,gBAAAD,MAAC,YAAO,WAAW,GAAG,SAAS,sBAAsB,EAAE,kIAAkI,SAAS,IAChM,0BAAAC,OAAC,SAAI,WAAU,sFACZ;AAAA,YAAQ,gBAAAD,MAAC,SAAI,WAAU,YAAY,iBAAM,IAAS;AAAA,IACnD,gBAAAA,MAAC,SAAI,WAAU,qCACZ,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,YAAM,MAAM,0CAA0C,KAAK,SAAS,4GAA4G,wIAAwI;AACxT,aAAO,KAAK,OAAO,gBAAAA,MAAC,OAAc,MAAM,KAAK,MAAM,WAAW,KAAM,eAAK,SAA9C,KAAoD,IAAO,gBAAAA,MAAC,YAAmB,MAAK,UAAS,SAAS,KAAK,SAAS,WAAW,KAAM,eAAK,SAAlE,KAAwE;AAAA,IAC7K,CAAC,GACH;AAAA,IACC,UAAU,gBAAAA,MAAC,SAAI,WAAU,mCAAmC,mBAAQ,IAAS;AAAA,KAChF,GACF;AAEJ;;;ACJM,gBAAAE,OAIM,QAAAC,cAJN;AAVN,IAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,SAAS,KAAK,EAAE,OAAO,UAAU,UAAU,YAAY,IAAI,UAAU,OAAO,GAAc;AAC/F,QAAM,SAAS,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,QAAQ,KAAK,MAAM,CAAC;AACpE,SACE,gBAAAA,OAAC,SAAI,WACH;AAAA,oBAAAD,MAAC,SAAI,MAAK,WAAU,WAAW,wBAAwB,SAAS,OAAO,CAAC,IACrE,gBAAM,IAAI,CAAC,SAAS;AACnB,YAAM,WAAW,KAAK,OAAO,QAAQ;AACrC,aACE,gBAAAC;AAAA,QAAC;AAAA;AAAA,UAEC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,iBAAe;AAAA,UACf,UAAU,KAAK;AAAA,UACf,SAAS,MAAM,WAAW,KAAK,EAAE;AAAA,UACjC,WAAW,kHAAkH,WAAW,8GAA8G,0GAA0G;AAAA,UAE/V;AAAA,iBAAK;AAAA,YACL,KAAK;AAAA;AAAA;AAAA,QATD,KAAK;AAAA,MAUZ;AAAA,IAEJ,CAAC,GACH;AAAA,IACA,gBAAAD,MAAC,SAAI,MAAK,YAAW,WAAU,QAAQ,kBAAQ,SAAQ;AAAA,KACzD;AAEJ;;;AClBc,gBAAAE,OACA,QAAAC,cADA;AAdP,SAAS,UAAU,EAAE,OAAO,UAAU,CAAC,GAAG,UAAU,YAAY,GAAG,GAAmB;AAC3F,SACE,gBAAAD,MAAC,SAAI,WAAW,wHAAwH,SAAS,IAC9I,gBAAM,IAAI,CAAC,SAAS;AACnB,UAAM,OAAO,QAAQ,SAAS,KAAK,EAAE;AACrC,WACE,gBAAAC,OAAC,aACC;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,UAAU,KAAK;AAAA,UACf,iBAAe;AAAA,UACf,SAAS,MAAM,WAAW,KAAK,EAAE;AAAA,UACjC,WAAU;AAAA,UAEV;AAAA,4BAAAD,MAAC,UAAK,WAAU,kDAAkD,eAAK,OAAM;AAAA,YAC7E,gBAAAC,OAAC,UAAK,WAAU,0DACb;AAAA,mBAAK;AAAA,cACN,gBAAAD,MAAC,UAAK,eAAY,QAAO,WAAU,qBAAqB,iBAAO,WAAM,KAAI;AAAA,eAC3E;AAAA;AAAA;AAAA,MACF;AAAA,MACC,OAAO,gBAAAA,MAAC,SAAI,WAAU,qGAAqG,eAAK,SAAQ,IAAS;AAAA,SAdtI,KAAK,EAenB;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AChBY,gBAAAE,OACA,QAAAC,cADA;AAdZ,IAAM,OAAO;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AACT;AAEO,SAAS,QAAQ,EAAE,OAAO,cAAc,cAAc,YAAY,GAAG,GAAiB;AAC3F,SACE,gBAAAD,MAAC,QAAG,WAAW,cAAc,gBAAgB,eAAe,kDAAkD,EAAE,IAAI,SAAS,IAC1H,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,SAAS,KAAK,UAAU;AAC9B,WACE,gBAAAC,OAAC,QAAiB,WAAU,cAC1B;AAAA,sBAAAD,MAAC,UAAK,WAAW,8EAA8E,KAAK,MAAM,CAAC,IAAK,qBAAW,aAAa,WAAM,QAAQ,GAAE;AAAA,MACxJ,gBAAAC,OAAC,UAAK,WAAU,WACd;AAAA,wBAAAD,MAAC,UAAK,WAAU,gEAAgE,eAAK,OAAM;AAAA,QAC1F,KAAK,cAAc,gBAAAA,MAAC,UAAK,WAAU,qDAAqD,eAAK,aAAY,IAAU;AAAA,SACtH;AAAA,SALO,KAAK,EAMd;AAAA,EAEJ,CAAC,GACH;AAEJ;;;ACtBM,gBAAAE,OAGI,QAAAC,cAHJ;AAJC,SAAS,OAAO,EAAE,MAAM,SAAS,OAAO,aAAa,UAAU,QAAQ,OAAO,SAAS,YAAY,GAAG,GAAgB;AAC3H,MAAI,CAAC,KAAM,QAAO;AAClB,SACE,gBAAAA,OAAC,SAAI,WAAU,sBACb;AAAA,oBAAAD,MAAC,YAAO,MAAK,UAAS,cAAW,gBAAe,WAAU,4CAA2C,SAAS,SAAS;AAAA,IACvH,gBAAAC,OAAC,aAAQ,WAAW,2HAA2H,SAAS,UAAU,qBAAqB,iBAAiB,IAAI,SAAS,IACnN;AAAA,sBAAAA,OAAC,YAAO,WAAU,sFAChB;AAAA,wBAAAA,OAAC,SACE;AAAA,kBAAQ,gBAAAD,MAAC,QAAG,WAAU,qDAAqD,iBAAM,IAAQ;AAAA,UACzF,cAAc,gBAAAA,MAAC,OAAE,WAAU,0CAA0C,uBAAY,IAAO;AAAA,WAC3F;AAAA,QACA,gBAAAA,MAAC,YAAO,MAAK,UAAS,SAAS,SAAS,WAAU,iIAAgI,kBAAC;AAAA,SACrL;AAAA,MACA,gBAAAA,MAAC,SAAI,WAAU,8CAA8C,UAAS;AAAA,MACrE,SAAS,gBAAAA,MAAC,YAAO,WAAU,+CAA+C,kBAAO,IAAY;AAAA,OAChG;AAAA,KACF;AAEJ;;;ACnBI,SAGI,OAAAE,OAHJ,QAAAC,cAAA;AAFG,SAAS,QAAQ,EAAE,SAAS,UAAU,OAAO,OAAO,QAAQ,SAAS,YAAY,GAAG,GAAiB;AAC1G,SACE,gBAAAA,OAAC,SAAI,WAAW,yBAAyB,SAAS,IAC/C;AAAA;AAAA,IACA,OACC,gBAAAD,MAAC,SAAI,WAAW,oJAAoJ,UAAU,QAAQ,YAAY,QAAQ,IACvM,UACH,IACE;AAAA,KACN;AAEJ;;;ACcU,gBAAAE,OAUQ,QAAAC,cAVR;AAPH,SAAS,YAAY,EAAE,MAAM,SAAS,QAAQ,IAAI,eAAe,QAAQ,cAAc,yBAAoB,QAAQ,qBAAqB,GAAqB;AAClK,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,WAAW,OAAO,KAAK,CAAC,UAAU,MAAM,MAAM,SAAS,CAAC;AAC9D,SACE,gBAAAD,MAAC,SAAI,WAAU,yFAAwF,SAAS,SAC9G,0BAAAC,OAAC,SAAI,WAAU,6IAA4I,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAC3L;AAAA,oBAAAD,MAAC,SAAI,WAAU,oDACb,0BAAAA,MAAC,eAAY,OAAO,OAAO,UAAU,CAAC,UAAU,gBAAgB,KAAK,GAAG,aAA0B,WAAS,MAAC,GAC9G;AAAA,IACA,gBAAAC,OAAC,SAAI,WAAU,kCACZ;AAAA,OAAC,WAAW,gBAAAD,MAAC,SAAI,WAAU,0DAA0D,iBAAM,IAAS;AAAA,MACpG,OAAO,IAAI,CAAC,OAAO,eAClB,gBAAAC,OAAC,SAAqB,WAAU,QAC7B;AAAA,cAAM,QAAQ,gBAAAD,MAAC,SAAI,WAAU,wGAAwG,gBAAM,OAAM,IAAS;AAAA,QAC1J,MAAM,MAAM,IAAI,CAAC,SAChB,gBAAAC,OAAC,YAAqB,MAAK,UAAS,UAAU,KAAK,UAAU,SAAS,KAAK,UAAU,WAAU,uLAC5F;AAAA,eAAK,OAAO,gBAAAD,MAAC,UAAK,WAAU,4GAA4G,eAAK,MAAK,IAAU;AAAA,UAC7J,gBAAAC,OAAC,UAAK,WAAU,kBACd;AAAA,4BAAAD,MAAC,UAAK,WAAU,gEAAgE,eAAK,OAAM;AAAA,YAC1F,KAAK,cAAc,gBAAAA,MAAC,UAAK,WAAU,gDAAgD,eAAK,aAAY,IAAU;AAAA,aACjH;AAAA,UACC,KAAK,WAAW,gBAAAA,MAAC,UAAK,WAAU,wDAAwD,eAAK,UAAS,IAAU;AAAA,aANtG,KAAK,EAOlB,CACD;AAAA,WAXO,UAYV,CACD;AAAA,OACH;AAAA,KACF,GACF;AAEJ;;;ACxCe,SAEA,OAAAE,OAFA,QAAAC,cAAA;AAHR,SAAS,UAAU,EAAE,OAAO,MAAM,OAAO,UAAU,SAAS,UAAU,YAAY,GAAG,GAAmB;AAC7G,SACE,gBAAAA,OAAC,SAAI,WAAW,eAAe,SAAS,IACrC;AAAA,YAAQ,gBAAAA,OAAC,cAAW,SAAmB;AAAA;AAAA,MAAO,WAAW,OAAO;AAAA,OAAG,IAAgB;AAAA,IACnF;AAAA,IACA,QAAQ,gBAAAD,MAAC,aAAU,SAAS,OAAO,KAAK,GAAG,IAAK,OAAO,gBAAAA,MAAC,aAAW,gBAAK,IAAe;AAAA,KAC1F;AAEJ;;;ACDQ,gBAAAE,OAGA,QAAAC,cAHA;AAXD,SAAS,OAAO,EAAE,UAAU,OAAO,UAAU,UAAU,OAAO,aAAa,YAAY,GAAG,GAAgB;AAC/G,SACE,gBAAAA,OAAC,WAAM,WAAW,yCAAyC,WAAW,kCAAkC,EAAE,IAAI,SAAS,IACrH;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,gBAAc;AAAA,QACd;AAAA,QACA,SAAS,MAAM,WAAW,CAAC,OAAO;AAAA,QAClC,WAAW,uEAAuE,UAAU,6BAA6B,oCAAoC;AAAA,QAE7J,0BAAAA,MAAC,UAAK,WAAW,wHAAwH,UAAU,WAAW,UAAU,IAAI;AAAA;AAAA,IAC9K;AAAA,IACE,SAAS,cACT,gBAAAC,OAAC,UACE;AAAA,cAAQ,gBAAAD,MAAC,UAAK,WAAU,gEAAgE,iBAAM,IAAU;AAAA,MACxG,cAAc,gBAAAA,MAAC,UAAK,WAAU,gDAAgD,uBAAY,IAAU;AAAA,OACvG,IACE;AAAA,KACN;AAEJ;;;ACTU,gBAAAE,aAAA;AANH,SAAS,YAAY,EAAE,SAAS,OAAO,UAAU,YAAY,IAAI,YAAY,MAAM,GAAqB;AAC7G,SACE,gBAAAA,MAAC,SAAI,WAAW,iGAAiG,YAAY,WAAW,EAAE,IAAI,SAAS,IACpJ,kBAAQ,IAAI,CAAC,WAAW;AACvB,UAAM,WAAW,OAAO,UAAU;AAClC,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,UAAU,OAAO;AAAA,QACjB,SAAS,MAAM,WAAW,OAAO,KAAK;AAAA,QACtC,WAAW,yDAAyD,YAAY,WAAW,EAAE,IAAI,WAAW,8GAA8G,uEAAuE;AAAA,QAEhS,iBAAO;AAAA;AAAA,MANH,OAAO;AAAA,IAOd;AAAA,EAEJ,CAAC,GACH;AAEJ;;;ACzBI,SACY,OAAAC,OADZ,QAAAC,cAAA;AAFG,SAAS,WAAW,EAAE,QAAQ,QAAQ,UAAU,YAAY,GAAG,GAAoB;AACxF,SACE,gBAAAA,OAAC,SAAI,WAAW,sMAAsM,SAAS,IAC5N;AAAA,aAAS,gBAAAD,MAAC,SAAI,WAAU,8GAA8G,kBAAO,IAAS;AAAA,IACvJ,gBAAAA,MAAC,SAAI,WAAU,uFAAuF,UAAS;AAAA,IAC9G,SAAS,gBAAAA,MAAC,SAAI,WAAU,8GAA8G,kBAAO,IAAS;AAAA,KACzJ;AAEJ;;;ACOc,gBAAAE,OACR,QAAAC,cADQ;AAXd,IAAM,cAAyC;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,SAASC,OAAM,EAAE,MAAAC,QAAO,QAAQ,OAAO,UAAU,MAAM,SAAS,YAAY,GAAG,GAAe;AACnG,SACE,gBAAAF,OAAC,SAAI,WAAW,yBAAyB,YAAYE,KAAI,CAAC,IAAI,SAAS,IACpE;AAAA,WAAO,gBAAAH,MAAC,SAAI,WAAU,mBAAmB,gBAAK,IAAS;AAAA,IACxD,gBAAAC,OAAC,SAAI,WAAU,kBACZ;AAAA,cAAQ,gBAAAD,MAAC,SAAI,WAAU,kDAAkD,iBAAM,IAAS;AAAA,MACxF,WAAW,gBAAAA,MAAC,SAAI,WAAU,mDAAmD,UAAS,IAAS;AAAA,OAClG;AAAA,IACC,UAAU,gBAAAA,MAAC,SAAI,WAAU,YAAY,mBAAQ,IAAS;AAAA,KACzD;AAEJ;;;ACVmB,gBAAAI,OACI,QAAAC,cADJ;AAbnB,IAAM,QAAQ;AAAA,EACZ,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,SAAS,SAAS,EAAE,OAAO,MAAM,KAAK,OAAO,YAAY,OAAO,MAAAC,QAAO,UAAU,YAAY,GAAG,GAAkB;AACvH,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,KAAM,QAAQ,MAAO,GAAG,CAAC;AACjE,SACE,gBAAAD,OAAC,SAAI,WACD;AAAA,aAAS,YACT,gBAAAA,OAAC,SAAI,WAAU,uFACZ;AAAA,cAAQ,gBAAAD,MAAC,UAAM,iBAAM,IAAU,gBAAAA,MAAC,UAAK;AAAA,MACrC,YAAY,gBAAAC,OAAC,UAAK,WAAU,aAAa;AAAA,aAAK,MAAM,UAAU;AAAA,QAAE;AAAA,SAAC,IAAU;AAAA,OAC9E,IACE;AAAA,IACJ,gBAAAD,MAAC,SAAI,WAAU,qFACb,0BAAAA,MAAC,SAAI,WAAW,UAAU,MAAME,KAAI,CAAC,IAAI,OAAO,EAAE,OAAO,GAAG,UAAU,IAAI,GAAG,GAC/E;AAAA,KACF;AAEJ;;;ACnBI,gBAAAC,aAAA;AALJ,IAAM,QAAQ,EAAE,IAAI,sBAAsB,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,oBAAoB;AAExG,SAAS,OAAO,EAAE,KAAK,OAAO,KAAK,OAAO,MAAM,YAAY,GAAG,GAAgB;AACpF,QAAM,WAAW,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK;AAC/G,SAAO,MACL,gBAAAA,MAAC,SAAI,KAAU,KAAK,MAAM,WAAW,2DAA2D,MAAM,IAAI,CAAC,IAAI,SAAS,IAAI,IAE5H,gBAAAA,MAAC,UAAK,WAAW,0JAA0J,MAAM,IAAI,CAAC,IAAI,SAAS,IAAK,oBAAS;AAErN;;;ACRS,gBAAAC,aAAA;AADF,SAAS,IAAI,EAAE,UAAU,YAAY,GAAG,GAAa;AAC1D,SAAO,gBAAAA,MAAC,SAAI,WAAW,gQAAgQ,SAAS,IAAK,UAAS;AAChT;;;ACoBU,gBAAAC,OAEE,QAAAC,cAFF;AAbV,IAAMC,SAAQ;AAAA,EACZ,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,SAAS,SAAS,EAAE,OAAO,YAAY,GAAG,GAAkB;AACjE,SACE,gBAAAF,MAAC,QAAG,WAAW,+IAA+I,SAAS,IACpK,gBAAM,IAAI,CAAC,SACV,gBAAAC,OAAC,QAAiB,WAAU,uBAC1B;AAAA,oBAAAD,MAAC,UAAK,WAAW,+DAA+DE,OAAM,KAAK,QAAQ,SAAS,CAAC,IAAK,eAAK,QAAQ,UAAI;AAAA,IACnI,gBAAAD,OAAC,UAAK,WAAU,uBACd;AAAA,sBAAAA,OAAC,UAAK,WAAU,uDACd;AAAA,wBAAAD,MAAC,UAAK,WAAU,kDAAkD,eAAK,OAAM;AAAA,QAC5E,KAAK,OAAO,gBAAAA,MAAC,UAAK,WAAU,oFAAoF,eAAK,MAAK,IAAU;AAAA,SACvI;AAAA,MACC,KAAK,cAAc,gBAAAA,MAAC,UAAK,WAAU,yDAAyD,eAAK,aAAY,IAAU;AAAA,OAC1H;AAAA,OARO,KAAK,EASd,CACD,GACH;AAEJ;;;ACrBU,gBAAAG,OACA,QAAAC,cADA;AALH,SAAS,aAAa,EAAE,OAAO,YAAY,IAAI,UAAU,SAAS,GAAsB;AAC7F,SACE,gBAAAD,MAAC,QAAG,WAAW,wHAAwH,SAAS,IAC7I,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAC,OAAC,SAAgB,WAAW,cAAc,YAAY,YAAY,iCAAiC,8BAA8B,IAC/H;AAAA,oBAAAD,MAAC,QAAG,WAAU,8FAA8F,eAAK,UAAS;AAAA,IAC1H,gBAAAC,OAAC,QACC;AAAA,sBAAAD,MAAC,SAAI,WAAU,0DAA0D,eAAK,OAAM;AAAA,MACnF,KAAK,cAAc,gBAAAA,MAAC,SAAI,WAAU,+CAA+C,eAAK,aAAY,IAAS;AAAA,OAC9G;AAAA,OALQ,KAMV,CACD,GACH;AAEJ;;;ACfQ,SACE,OAAAE,OADF,QAAAC,cAAA;AAJD,SAAS,UAAU,EAAE,UAAU,UAAU,OAAO,SAAS,YAAY,GAAG,GAAmB;AAChG,SACE,gBAAAA,OAAC,YAAO,WAAW,2FAA2F,SAAS,IACnH;AAAA,aAAS,YAAY,UACrB,gBAAAA,OAAC,gBAAW,WAAU,qIACpB;AAAA,sBAAAD,MAAC,UAAK,WAAU,8FAA8F,mBAAS,UAAS;AAAA,MAC/H;AAAA,OACH,IACE;AAAA,IACJ,gBAAAA,MAAC,SAAI,WAAU,0EAAyE,0BAAAA,MAAC,UAAM,UAAS,GAAO;AAAA,KACjH;AAEJ;;;ACNM,SACW,OAAAE,OADX,QAAAC,cAAA;AAHC,SAAS,UAAU,EAAE,OAAO,OAAO,YAAY,GAAG,GAAmB;AAC1E,SACE,gBAAAD,MAAC,aAAQ,WAAW,kFAAkF,SAAS,IAC7G,0BAAAC,OAAC,SAAI,WAAU,oDACZ;AAAA,YAAQ,gBAAAD,MAAC,OAAE,WAAU,+GAA+G,iBAAM,IAAO;AAAA,IAClJ,gBAAAA,MAAC,SAAI,WAAU,wDACZ,gBAAM,IAAI,CAAC,SACV,gBAAAA,MAAC,SAAoB,WAAU,4LAC5B,eAAK,QAAQ,KAAK,QADX,KAAK,IAEf,CACD,GACH;AAAA,KACF,GACF;AAEJ;;;ACZM,SAEE,OAAAE,OAFF,QAAAC,cAAA;AAHC,SAAS,gBAAgB,EAAE,OAAO,QAAQ,MAAM,WAAW,YAAY,IAAI,UAAU,UAAU,GAAyB;AAC7H,SACE,gBAAAA,OAAC,YAAO,WAAW,2CAA2C,YAAY,WAAW,qFAAqF,qEAAqE,IAAI,SAAS,IAC1P;AAAA,oBAAAA,OAAC,gBAAW,WAAU,0DAAyD;AAAA;AAAA,MAAE;AAAA,MAAM;AAAA,OAAC;AAAA,IACxF,gBAAAA,OAAC,gBAAW,WAAU,gCACpB;AAAA,sBAAAD,MAAC,UAAO,MAAM,QAAQ,KAAK,WAAW,MAAK,MAAK;AAAA,MAChD,gBAAAC,OAAC,UACC;AAAA,wBAAAD,MAAC,UAAK,WAAU,gEAAgE,kBAAO;AAAA,QACtF,OAAO,gBAAAA,MAAC,UAAK,WAAU,gDAAgD,gBAAK,IAAU;AAAA,SACzF;AAAA,OACF;AAAA,KACF;AAEJ;;;ACTQ,gBAAAE,OAIoC,QAAAC,cAJpC;AAJD,SAAS,YAAY,EAAE,MAAM,OAAO,aAAa,WAAW,CAAC,GAAG,KAAK,cAAc,OAAO,YAAY,GAAG,GAAqB;AACnI,SACE,gBAAAA,OAAC,aAAQ,WAAW,gEAAgE,cAAc,wFAAwF,qEAAqE,IAAI,SAAS,IAC1Q;AAAA,oBAAAA,OAAC,SAAI,WAAU,UACb;AAAA,sBAAAD,MAAC,QAAG,WAAU,0DAA0D,gBAAK;AAAA,MAC5E,cAAc,gBAAAA,MAAC,OAAE,WAAU,+CAA+C,uBAAY,IAAO;AAAA,MAC9F,gBAAAA,MAAC,SAAI,WAAU,+EAA+E,iBAAM;AAAA,MACpG,gBAAAA,MAAC,QAAG,WAAU,6DACX,mBAAS,IAAI,CAAC,SAAS,UAAU,gBAAAC,OAAC,QAAe,WAAU,cAAa;AAAA,wBAAAD,MAAC,UAAK,WAAU,+BAA8B,oBAAC;AAAA,QAAO,gBAAAA,MAAC,UAAM,mBAAQ;AAAA,WAAnG,KAA0G,CAAK,GAC5J;AAAA,OACF;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,QAAQ,iBAAO,gBAAAA,MAAC,UAAO,SAAS,cAAc,YAAY,aAAa,WAAS,MAAC,yBAAW,GAAU;AAAA,KACvH;AAEJ;;;ACTU,SACE,OAAAE,OADF,QAAAC,cAAA;AALH,SAAS,UAAU,EAAE,OAAO,YAAY,GAAG,GAAmB;AACnE,SACE,gBAAAD,MAAC,aAAQ,WAAW,sHAAsH,SAAS,IACjJ,0BAAAA,MAAC,SAAI,WAAU,iLACZ,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAC,OAAC,SAAgB,WAAU,cACzB;AAAA,oBAAAD,MAAC,SAAI,WAAU,yCAAyC,eAAK,OAAM;AAAA,IACnE,gBAAAA,MAAC,SAAI,WAAU,+EAA+E,eAAK,OAAM;AAAA,IACxG,KAAK,cAAc,gBAAAA,MAAC,SAAI,WAAU,2BAA2B,eAAK,aAAY,IAAS;AAAA,OAHhF,KAIV,CACD,GACH,GACF;AAEJ;;;AClBO,IAAM,wBAA6E;AAAA,EACxF,YAAY;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;;;ACjBI,gBAAAE,aAAA;AAVJ,IAAMC,eAA6C;AAAA,EACjD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACR;AAEO,SAAS,UAAU,EAAE,UAAU,OAAO,MAAM,SAAS,MAAM,YAAY,IAAI,MAAM,GAAmB;AACzG,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,CAAC,kBAAkBC,aAAY,IAAI,GAAG,SAAS,mCAAmC,IAAI,SAAS,EACvG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACEI,gBAAAC,aAAA;AAnBJ,IAAMC,kBAAiD;AAAA,EACrD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAMC,kBAAiD;AAAA,EACrD,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,QAAQ,EAAE,UAAU,UAAU,WAAW,UAAU,MAAM,WAAW,MAAM,YAAY,IAAI,MAAM,GAAiB;AAC/H,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,CAACC,gBAAe,OAAO,GAAGC,gBAAe,OAAO,GAAG,YAAY,YAAY,WAAW,+CAA+C,IAAI,SAAS,EAC1J,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACnCW,gBAAAC,OAKL,QAAAC,cALK;AAFJ,SAAS,QAAQ,EAAE,cAAc,cAAc,OAAO,YAAY,GAAG,GAAiB;AAC3F,MAAI,gBAAgB,YAAY;AAC9B,WAAO,gBAAAD,MAAC,SAAI,WAAW,qDAAqD,SAAS,IAAI,eAAY,QAAO;AAAA,EAC9G;AAEA,MAAI,OAAO;AACT,WACE,gBAAAC,OAAC,SAAI,WAAW,2BAA2B,SAAS,IAClD;AAAA,sBAAAD,MAAC,SAAI,WAAU,+CAA8C;AAAA,MAC7D,gBAAAA,MAAC,UAAK,WAAU,oFAAoF,iBAAM;AAAA,MAC1G,gBAAAA,MAAC,SAAI,WAAU,+CAA8C;AAAA,OAC/D;AAAA,EAEJ;AAEA,SAAO,gBAAAA,MAAC,QAAG,WAAW,uCAAuC,SAAS,IAAI;AAC5E;;;ACFI,gBAAAE,aAAA;AATJ,IAAMC,cAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,SAAS,eAAe,EAAE,UAAU,MAAM,SAAS,MAAM,MAAM,YAAY,IAAI,MAAM,GAAwB;AAClH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,QAAQC,YAAW,GAAG,CAAC,IAAI,SAAS;AAAA,MAC/C,OAAO,EAAE,qBAAqB,2BAA2B,GAAG,WAAW,GAAG,MAAM;AAAA,MAE/E;AAAA;AAAA,EACH;AAEJ;;;ACAI,SACE,OAAAC,OADF,QAAAC,cAAA;AAfG,SAAS,UAAU,EAAE,QAAQ,QAAQ,KAAK,SAAS,IAAI,QAAQ,SAAS,YAAY,IAAI,MAAM,GAAmB;AACtH,QAAM,aAAa,OAAO,SAAS,SAAS,CAAC,CAAC;AAC9C,QAAM,MAAM,KAAK,IAAI,GAAG,UAAU;AAClC,QAAM,MAAM,KAAK,IAAI,GAAG,UAAU;AAClC,QAAM,QAAQ,MAAM,OAAO;AAC3B,QAAM,OAAO,WAAW,SAAS,IAAI,SAAS,WAAW,SAAS,KAAK;AACvE,QAAM,SAAS,WACZ,IAAI,CAAC,OAAO,UAAU;AACrB,UAAM,IAAI,QAAQ;AAClB,UAAM,IAAI,UAAW,QAAQ,OAAO,SAAU,SAAS,KAAK;AAC5D,WAAO,GAAG,CAAC,IAAI,CAAC;AAAA,EAClB,CAAC,EACA,KAAK,GAAG;AAEX,SACE,gBAAAA,OAAC,SAAI,WAAsB,OAAc,OAAc,QAAgB,SAAS,OAAO,KAAK,IAAI,MAAM,IAAI,MAAK,OAAM,cAAY,OAC/H;AAAA,oBAAAD,MAAC,cAAS,QAAgB,MAAK,QAAO,QAAO,uBAAsB,aAAY,KAAI,eAAc,UAAS,gBAAe,SAAQ;AAAA,IACjI,gBAAAA,MAAC,UAAK,IAAG,KAAI,IAAI,OAAO,IAAI,SAAS,GAAG,IAAI,SAAS,GAAG,QAAO,8BAA6B,aAAY,KAAI;AAAA,KAC9G;AAEJ;;;ACRY,SACE,OAAAE,OADF,QAAAC,cAAA;AATL,SAAS,QAAQ,EAAE,OAAO,KAAK,iBAAiB,CAAC,UAAU,OAAO,YAAY,GAAG,GAAiB;AACvG,QAAM,cAAc,OAAO,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAEzE,SACE,gBAAAD,MAAC,SAAI,WAAW,aAAa,SAAS,IACnC,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,KAAM,KAAK,QAAQ,cAAe,GAAG,CAAC;AAC3E,WACE,gBAAAC,OAAC,SACC;AAAA,sBAAAA,OAAC,SAAI,WAAU,wDACb;AAAA,wBAAAD,MAAC,UAAK,WAAU,kDAAkD,eAAK,OAAM;AAAA,QAC7E,gBAAAA,MAAC,UAAK,WAAU,oDAAoD,yBAAe,KAAK,KAAK,GAAE;AAAA,SACjG;AAAA,MACA,gBAAAA,MAAC,SAAI,WAAU,qFACb,0BAAAA,MAAC,SAAI,WAAU,mCAAkC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,GAAG,GACpF;AAAA,MACC,KAAK,SAAS,gBAAAA,MAAC,SAAI,WAAU,+CAA+C,eAAK,QAAO,IAAS;AAAA,SAR1F,KASV;AAAA,EAEJ,CAAC,GACH;AAEJ;;;ACjBQ,gBAAAE,OAaA,QAAAC,cAbA;AATD,SAAS,YAAY,EAAE,OAAO,MAAM,KAAK,OAAO,SAAS,OAAO,KAAK,YAAY,GAAG,GAAqB;AAC9G,QAAM,SAAS;AACf,QAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,QAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,GAAG,CAAC;AAClD,QAAM,SAAS,iBAAiB,IAAI;AAEpC,SACE,gBAAAA,OAAC,SAAI,WAAW,kCAAkC,SAAS,IACzD;AAAA,oBAAAA,OAAC,SAAI,OAAO,MAAM,QAAQ,MAAM,SAAQ,eAAc,MAAK,OAAM,cAAY,GAAG,KAAK,MAAM,QAAQ,GAAG,CAAC,KACrG;AAAA,sBAAAD,MAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAG,QAAQ,MAAK,QAAO,QAAO,8BAA6B,aAAY,MAAK;AAAA,MACpG,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,IAAG;AAAA,UACH,GAAG;AAAA,UACH,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,eAAc;AAAA,UACd,WAAU;AAAA;AAAA,MACZ;AAAA,MACA,gBAAAC,OAAC,UAAK,GAAE,MAAK,GAAE,MAAK,YAAW,UAAS,WAAU,gEAC/C;AAAA,aAAK,MAAM,QAAQ,GAAG;AAAA,QAAE;AAAA,SAC3B;AAAA,OACF;AAAA,IACE,SAAS,UACT,gBAAAA,OAAC,SACE;AAAA,cAAQ,gBAAAD,MAAC,SAAI,WAAU,0DAA0D,iBAAM,IAAS;AAAA,MAChG,UAAU,gBAAAA,MAAC,SAAI,WAAU,yDAAyD,mBAAQ,IAAS;AAAA,OACtG,IACE;AAAA,KACN;AAEJ;;;AClCI,SAWI,OAAAE,OAXJ,QAAAC,cAAA;AAFG,SAAS,WAAW,EAAE,UAAU,SAAS,OAAO,UAAU,YAAY,GAAG,GAAoB;AAClG,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SACI,uGACA;AAAA,QACJ;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MAET;AAAA;AAAA,QACA,WACC,gBAAAD,MAAC,YAAO,MAAK,UAAS,SAAS,UAAU,WAAU,mEAAkE,cAAW,iBAAgB,kBAEhJ,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;;;ACbQ,SACW,OAAAE,OADX,QAAAC,cAAA;AAJD,SAAS,YAAY,EAAE,OAAO,aAAa,QAAQ,SAAS,SAAS,YAAY,GAAG,GAAqB;AAC9G,SACE,gBAAAA,OAAC,SAAI,WAAW,+EAA+E,SAAS,IACtG;AAAA,oBAAAA,OAAC,SAAI,WAAU,qEACb;AAAA,sBAAAA,OAAC,SACE;AAAA,gBAAQ,gBAAAD,MAAC,QAAG,WAAU,4DAA4D,iBAAM,IAAQ;AAAA,QAChG,cAAc,gBAAAA,MAAC,OAAE,WAAU,+CAA+C,uBAAY,IAAO;AAAA,SAChG;AAAA,MACC,UAAU,gBAAAA,MAAC,SAAI,WAAU,wBAAwB,mBAAQ,IAAS;AAAA,OACrE;AAAA,IACE,UAAU,UACV,gBAAAC,OAAC,SAAI,WAAU,2EACZ;AAAA,eAAS,gBAAAD,MAAC,SAAI,WAAU,kBAAkB,kBAAO,IAAS;AAAA,MAC1D,UAAU,gBAAAA,MAAC,SAAI,WAAU,wBAAwB,mBAAQ,IAAS;AAAA,OACrE,IACE;AAAA,KACN;AAEJ;;;ACZI,qBAAAE,WAGc,OAAAC,OACR,QAAAC,cAJN;AAFG,SAAS,aAAa,EAAE,OAAO,aAAa,SAAS,MAAM,MAAM,QAAQ,SAAS,MAAM,YAAY,GAAG,GAAsB;AAClI,QAAM,UACJ,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAE,OAAC,SAAI,WAAU,0CACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,kCACZ;AAAA,eAAO,gBAAAD,MAAC,SAAI,WAAU,gHAAgH,gBAAK,IAAS;AAAA,QACrJ,gBAAAC,OAAC,SAAI,WAAU,WACZ;AAAA,oBAAU,gBAAAD,MAAC,SAAI,WAAU,eAAe,mBAAQ,IAAS;AAAA,UAC1D,gBAAAA,MAAC,QAAG,WAAU,qEAAqE,iBAAM;AAAA,UACxF,cAAc,gBAAAA,MAAC,OAAE,WAAU,sEAAsE,uBAAY,IAAO;AAAA,WACvH;AAAA,SACF;AAAA,MACC,SAAS,gBAAAA,MAAC,SAAO,kBAAO,IAAW;AAAA,OACtC;AAAA,IACE,QAAQ,UACR,gBAAAC,OAAC,SAAI,WAAU,4GACZ;AAAA,aAAO,gBAAAD,MAAC,SAAI,WAAU,oDAAoD,gBAAK,IAAS,gBAAAA,MAAC,UAAK;AAAA,MAC9F,UAAU,gBAAAA,MAAC,SAAI,WAAU,wBAAwB,mBAAQ,IAAS;AAAA,OACrE,IACE;AAAA,KACN;AAGF,QAAM,UAAU,qMAAqM,SAAS;AAE9N,SAAO,OAAO,gBAAAA,MAAC,OAAE,MAAY,WAAW,SAAU,mBAAQ,IAAO,gBAAAA,MAAC,aAAQ,WAAW,SAAU,mBAAQ;AACzG;;;ACNqB,gBAAAE,OAEX,QAAAC,cAFW;AApBrB,IAAM,cAAiD;AAAA,EACrD,WAAW;AAAA,EACX,cAAc;AAAA,EACd,SAAS;AAAA,EACT,OAAO;AACT;AAEA,IAAM,gBAAsF;AAAA,EAC1F,WAAW;AAAA,EACX,cAAc;AAAA,EACd,SAAS;AAAA,EACT,OAAO;AACT;AAEO,SAAS,gBAAgB,EAAE,MAAM,aAAa,MAAM,SAAS,gBAAgB,UAAU,SAAS,YAAY,GAAG,GAAyB;AAC7I,SACE,gBAAAA,OAAC,aAAQ,WAAW,+EAA+E,SAAS,IAC1G;AAAA,oBAAAA,OAAC,SAAI,WAAU,0CACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,0BACb;AAAA,wBAAAD,MAAC,SAAI,WAAU,qJACZ,kBAAQ,gBAAAA,MAAC,UAAK,WAAU,qBAAoB,iBAAG,GAClD;AAAA,QACA,gBAAAC,OAAC,SACC;AAAA,0BAAAD,MAAC,QAAG,WAAU,0DAA0D,gBAAK;AAAA,UAC5E,cAAc,gBAAAA,MAAC,OAAE,WAAU,yDAAyD,uBAAY,IAAO;AAAA,WAC1G;AAAA,SACF;AAAA,MACA,gBAAAA,MAAC,eAAY,SAAS,cAAc,MAAM,GAAG,OAAO,YAAY,MAAM,GAAG;AAAA,OAC3E;AAAA,IACA,gBAAAC,OAAC,SAAI,WAAU,4GACb;AAAA,sBAAAD,MAAC,SAAI,WAAU,oDAAoD,sBAAY,eAAc;AAAA,MAC5F,UAAU,gBAAAA,MAAC,SAAI,WAAU,cAAc,mBAAQ,IAAS;AAAA,OAC3D;AAAA,KACF;AAEJ;;;ACvBI,SACE,OAAAE,OADF,QAAAC,cAAA;AAhBJ,IAAMC,eAA0C;AAAA,EAC9C,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AACX;AAEA,IAAM,eAA2C;AAAA,EAC/C,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,SAAS,gBAAgB,EAAE,MAAAC,QAAO,WAAW,OAAO,QAAQ,YAAY,GAAG,GAAyB;AACzG,SACE,gBAAAF,OAAC,SAAI,WAAW,oHAAoH,SAAS,IAC3I;AAAA,oBAAAD,MAAC,UAAK,WAAW,YAAYE,aAAYC,KAAI,CAAC,IAAI,eAAY,QAAO;AAAA,IACrE,gBAAAH,MAAC,UAAK,WAAU,wDAAwD,mBAAS,aAAaG,KAAI,GAAE;AAAA,IACnG,SAAS,gBAAAH,MAAC,UAAK,WAAU,oDAAoD,kBAAO,IAAU;AAAA,KACjG;AAEJ;;;ACZU,gBAAAI,OAGI,QAAAC,cAHJ;AALH,SAAS,SAAS,EAAE,OAAO,YAAY,GAAG,GAAkB;AACjE,SACE,gBAAAD,MAAC,SAAI,WAAW,wHAAwH,SAAS,IAC9I,gBAAM,IAAI,CAAC,MAAM,UAChB,gBAAAC,OAAC,SAAgB,WAAU,kBACzB;AAAA,oBAAAD,MAAC,UAAO,MAAM,KAAK,YAAY,KAAK,OAAO,MAAK,MAAK;AAAA,IACrD,gBAAAC,OAAC,SAAI,WAAU,kBACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,qDACb;AAAA,wBAAAA,OAAC,OAAE,WAAU,8CAA6C;AAAA,0BAAAD,MAAC,YAAO,WAAU,oCAAoC,eAAK,OAAM;AAAA,UAAS;AAAA,UAAE,KAAK;AAAA,WAAO;AAAA,QAClJ,gBAAAA,MAAC,UAAK,WAAU,wDAAwD,eAAK,WAAU;AAAA,SACzF;AAAA,MACC,KAAK,SAAS,gBAAAA,MAAC,SAAI,WAAU,yDAAyD,eAAK,QAAO,IAAS;AAAA,OAC9G;AAAA,OARQ,KASV,CACD,GACH;AAEJ;;;ACGY,SACE,OAAAE,OADF,QAAAC,cAAA;AAdZ,IAAMC,eAAmE;AAAA,EACvE,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,SAAS,YAAY,EAAE,SAAS,YAAY,GAAG,GAAqB;AACzE,SACE,gBAAAF,MAAC,SAAI,WAAW,gFAAgF,SAAS,IACtG,kBAAQ,IAAI,CAAC,WACZ,gBAAAC,OAAC,aAAwB,WAAU,qFACjC;AAAA,oBAAAA,OAAC,SAAI,WAAU,+CACb;AAAA,sBAAAA,OAAC,SACC;AAAA,wBAAAD,MAAC,QAAG,WAAU,0DAA0D,iBAAO,OAAM;AAAA,QACpF,OAAO,cAAc,gBAAAA,MAAC,OAAE,WAAU,+CAA+C,iBAAO,aAAY,IAAO;AAAA,SAC9G;AAAA,MACA,gBAAAA,MAAC,UAAK,WAAU,oDAAoD,iBAAO,MAAM,QAAO;AAAA,OAC1F;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,aACZ,iBAAO,MAAM,IAAI,CAAC,SACjB,gBAAAC,OAAC,aAAsB,WAAW,+EAA+EC,aAAY,KAAK,QAAQ,SAAS,CAAC,IAClJ;AAAA,sBAAAF,MAAC,QAAG,WAAU,wDAAwD,eAAK,OAAM;AAAA,MAChF,KAAK,cAAc,gBAAAA,MAAC,OAAE,WAAU,yDAAyD,eAAK,aAAY,IAAO;AAAA,MACjH,KAAK,OAAO,gBAAAA,MAAC,SAAI,WAAU,6DAA6D,eAAK,MAAK,IAAS;AAAA,SAHhG,KAAK,EAInB,CACD,GACH;AAAA,OAhBY,OAAO,EAiBrB,CACD,GACH;AAEJ;;;AC9BU,SACE,OAAAG,OADF,QAAAC,cAAA;AALH,SAAS,aAAa,EAAE,OAAO,aAAa,YAAY,GAAG,GAAsB;AACtF,SACE,gBAAAD,MAAC,SAAI,WAAW,2FAA2F,SAAS,IAClH,0BAAAC,OAAC,WAAM,WAAU,sBACf;AAAA,oBAAAD,MAAC,WACC,0BAAAC,OAAC,QACC;AAAA,sBAAAD,MAAC,QAAG,WAAU,uBAAsB,wBAAU;AAAA,MAC7C,MAAM,IAAI,CAAC,SAAS,gBAAAA,MAAC,QAAkB,WAAU,yBAAyB,eAAK,SAAlD,KAAK,GAAmD,CAAK;AAAA,OAC7F,GACF;AAAA,IACA,gBAAAA,MAAC,WACE,sBAAY,IAAI,CAAC,eAChB,gBAAAC,OAAC,QACC;AAAA,sBAAAA,OAAC,QAAG,WAAU,aACZ;AAAA,wBAAAD,MAAC,SAAI,WAAU,gDAAgD,qBAAW,OAAM;AAAA,QAC/E,WAAW,cAAc,gBAAAA,MAAC,SAAI,WAAU,+CAA+C,qBAAW,aAAY,IAAS;AAAA,SAC1H;AAAA,MACC,MAAM,IAAI,CAAC,SACV,gBAAAA,MAAC,QAAkB,WAAU,yBAC3B,0BAAAA,MAAC,UAAK,WAAW,WAAW,MAAM,KAAK,GAAG,IAAI,gCAAgC,qCAC3E,qBAAW,MAAM,KAAK,GAAG,IAAI,WAAM,UACtC,KAHO,KAAK,GAId,CACD;AAAA,SAXM,WAAW,GAYpB,CACD,GACH;AAAA,KACF,GACF;AAEJ;;;AC5BsC,gBAAAE,OAK1B,QAAAC,cAL0B;AANtC,IAAM,kBAAkB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAEjE,SAAS,aAAa,EAAE,MAAM,WAAW,iBAAiB,YAAY,GAAG,GAAsB;AACpG,SACE,gBAAAA,OAAC,SAAI,WAAW,2EAA2E,SAAS,IAClG;AAAA,oBAAAD,MAAC,SAAI,WAAU,oGACZ,mBAAS,IAAI,CAAC,KAAK,UAAU,gBAAAA,MAAC,SAAgB,WAAU,8FAA8F,iBAA/G,KAAmH,CAAM,GACnK;AAAA,IACA,gBAAAA,MAAC,SAAI,WAAU,oBACZ,eAAK,IAAI,CAAC,KAAK,UACd,gBAAAC,OAAC,SAAgB,WAAW,sEAAsE,IAAI,QAAQ,eAAe,EAAE,IAAI,IAAI,WAAW,kCAAkC,EAAE,IACpL;AAAA,sBAAAA,OAAC,SAAI,WAAU,2CACb;AAAA,wBAAAD,MAAC,UAAK,WAAU,sDAAsD,cAAI,MAAK;AAAA,QAC9E,IAAI,QAAQ,gBAAAA,MAAC,UAAK,WAAU,8CAA8C,cAAI,OAAM,IAAU;AAAA,SACjG;AAAA,MACC,IAAI,QAAQ,SACX,gBAAAA,MAAC,SAAI,WAAU,kBACZ,cAAI,OAAO,IAAI,CAAC,OAAO,eAAe,gBAAAA,MAAC,SAAqB,WAAU,gJAAgJ,mBAAtK,UAA4K,CAAM,GACrO,IACE;AAAA,SATI,KAUV,CACD,GACH;AAAA,KACF;AAEJ;;;AC9BQ,SACW,OAAAE,OADX,QAAAC,cAAA;AAJD,SAAS,OAAO,EAAE,OAAO,YAAY,YAAY,IAAI,GAAG,MAAM,GAAgB;AACnF,SACE,gBAAAA,OAAC,WAAM,WAAW,SAAS,SAAS,IAChC;AAAA,aAAS,aACT,gBAAAA,OAAC,UAAK,WAAU,wDACb;AAAA,cAAQ,gBAAAD,MAAC,UAAK,WAAU,kDAAkD,iBAAM,IAAU,gBAAAA,MAAC,UAAK;AAAA,MAChG,aAAa,gBAAAA,MAAC,UAAK,WAAU,oDAAoD,sBAAW,IAAU;AAAA,OACzG,IACE;AAAA,IACJ,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,MAAK;AAAA,QACL,WAAU;AAAA;AAAA,IACZ;AAAA,KACF;AAEJ;;;ACXI,SACE,OAAAE,OADF,QAAAC,cAAA;AAFG,SAAS,aAAa,EAAE,QAAQ,mBAAmB,aAAa,cAAc,UAAU,YAAY,IAAI,GAAG,MAAM,GAAsB;AAC5I,SACE,gBAAAA,OAAC,WAAM,WAAW,yKAAyK,SAAS,IAClM;AAAA,oBAAAD,MAAC,WAAO,GAAG,OAAO,MAAK,QAAO,WAAU,WAAU;AAAA,IAClD,gBAAAA,MAAC,UAAK,WAAU,gEAAgE,iBAAM;AAAA,IACrF,cAAc,gBAAAA,MAAC,UAAK,WAAU,qDAAqD,uBAAY,IAAU;AAAA,IAC1G,gBAAAA,MAAC,UAAK,WAAU,oJAAoJ,uBAAY;AAAA,KAClL;AAEJ;;;ACnBA,SAAS,YAAAE,iBAAgB;AAiBrB,SAKE,OAAAC,OALF,QAAAC,cAAA;AARG,SAAS,cAAc;AAAA,EAC5B,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,GAAG;AACL,GAAuB;AACrB,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAS,KAAK;AAE5C,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,2KAA2K,SAAS;AAAA,MAI/L;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,MAAM,UAAU,SAAS;AAAA,YACzB,WAAU;AAAA;AAAA,QACZ;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAY;AAAA,YACZ,gBAAc;AAAA,YACd,SAAS,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;AAAA,YACnC,UAAU;AAAA,YACV,WAAU;AAAA,YAET,oBAAU,gBAAAA,MAAC,UAAO,MAAM,IAAI,IAAK,gBAAAA,MAAC,OAAI,MAAM,IAAI;AAAA;AAAA,QACnD;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC5BM,gBAAAG,OACA,QAAAC,cADA;AAJC,SAAS,gBAAgB,EAAE,WAAW,QAAQ,IAAI,YAAY,IAAI,GAAG,MAAM,GAAyB;AACzG,QAAM,QAAQ,MAAM;AACpB,SACE,gBAAAA,OAAC,SAAI,WACH;AAAA,oBAAAD,MAAC,cAAU,GAAG,OAAO,OAAc,WAAsB,WAAU,wBAAuB;AAAA,IAC1F,gBAAAC,OAAC,SAAI,WAAU,wEAAwE;AAAA;AAAA,MAAM;AAAA,MAAE;AAAA,OAAU;AAAA,KAC3G;AAEJ;;;ACUgB,gBAAAC,OACR,QAAAC,cADQ;AAZhB,IAAMC,eAA2C;AAAA,EAC/C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,SAAS,QAAQ,EAAE,OAAO,UAAU,MAAAC,QAAO,QAAQ,MAAM,SAAS,YAAY,GAAG,GAAiB;AACvG,SACE,gBAAAH,MAAC,WAAM,WAAW,kBAAkBE,aAAYC,KAAI,CAAC,IAAI,SAAS,IAChE,0BAAAF,OAAC,SAAI,WAAU,cACZ;AAAA,WAAO,gBAAAD,MAAC,SAAI,WAAU,oCAAoC,gBAAK,IAAS;AAAA,IACzE,gBAAAC,OAAC,SAAI,WAAU,kBACZ;AAAA,cAAQ,gBAAAD,MAAC,QAAG,WAAU,0DAA0D,iBAAM,IAAQ;AAAA,MAC9F,WAAW,gBAAAA,MAAC,SAAI,WAAU,6DAA6D,UAAS,IAAS;AAAA,MACzG,UAAU,gBAAAA,MAAC,SAAI,WAAU,6BAA6B,mBAAQ,IAAS;AAAA,OAC1E;AAAA,KACF,GACF;AAEJ;;;AClBU,SACE,OAAAI,QADF,QAAAC,cAAA;AANH,SAAS,eAAe,EAAE,UAAU,OAAO,QAAQ,WAAW,UAAU,YAAY,GAAG,GAAwB;AACpH,SACE,gBAAAA,OAAC,SAAI,WAAW,YAAY,SAAS,IAClC;AAAA;AAAA,IACA,UACC,gBAAAD,OAAC,SAAI,WAAU,qIACb,0BAAAC,OAAC,SAAI,WAAU,0LACb;AAAA,sBAAAD,OAAC,WAAQ;AAAA,MACT,gBAAAA,OAAC,UAAM,iBAAM;AAAA,OACf,GACF,IACE;AAAA,KACN;AAEJ;;;ACHU,gBAAAE,QAEE,QAAAC,cAFF;AALH,SAAS,iBAAiB,EAAE,OAAO,YAAY,GAAG,GAA0B;AACjF,SACE,gBAAAD,OAAC,SAAI,WAAW,wHAAwH,SAAS,IAC9I,gBAAM,IAAI,CAAC,SACV,gBAAAC,OAAC,aAAsB,WAAU,kBAC/B;AAAA,oBAAAD,OAAC,UAAK,WAAW,iBAAiB,KAAK,SAAS,6BAA6B,iCAAiC,IAAI,eAAY,QAAO;AAAA,IACrI,gBAAAC,OAAC,SAAI,WAAU,kBACb;AAAA,sBAAAA,OAAC,SAAI,WAAU,0CACb;AAAA,wBAAAD,OAAC,QAAG,WAAU,wDAAwD,eAAK,OAAM;AAAA,QAChF,KAAK,OAAO,gBAAAA,OAAC,UAAK,WAAU,wDAAwD,eAAK,MAAK,IAAU;AAAA,SAC3G;AAAA,MACC,KAAK,cAAc,gBAAAA,OAAC,OAAE,WAAU,yDAAyD,eAAK,aAAY,IAAO;AAAA,MACjH,KAAK,SAAS,gBAAAA,OAAC,SAAI,WAAU,QAAQ,eAAK,QAAO,IAAS;AAAA,OAC7D;AAAA,OATY,KAAK,EAUnB,CACD,GACH;AAEJ;;;ACnBS,gBAAAE,cAAA;AAJT,IAAM,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,6BAA6B,GAAG,yCAAyC;AACvH,IAAMC,cAAa,EAAE,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ;AAEpD,SAAS,YAAY,EAAE,UAAU,UAAU,GAAG,MAAM,MAAM,YAAY,IAAI,MAAM,GAAqB;AAC1G,SAAO,gBAAAD,OAAC,SAAI,WAAW,CAAC,cAAc,OAAO,GAAGC,YAAW,GAAG,GAAG,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAe,UAAS;AACjI;;;ACKe,SAGW,YAAAC,WAHX,OAAAC,QAGW,QAAAC,cAHX;AAHR,SAAS,SAAS,EAAE,OAAO,OAAO,SAAS,YAAY,IAAI,MAAM,GAAkB;AACxF,SACE,gBAAAA,OAAC,WAAM,WAAW,CAAC,0IAA0I,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAChM;AAAA,YAAQ,gBAAAD,OAAC,SAAI,WAAU,oBAAoB,iBAAM,IAAS;AAAA,IAC3D,gBAAAA,OAAC,SAAI,WAAU,uBACZ,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,YAAM,UAAU,gBAAAC,OAAAF,WAAA,EAAE;AAAA,wBAAAC,OAAC,UAAK,WAAU,YAAY,eAAK,OAAM;AAAA,QAAQ,KAAK,OAAO,gBAAAA,OAAC,UAAK,WAAU,wDAAwD,eAAK,MAAK,IAAU;AAAA,SAAK;AAC9K,YAAM,UAAU,CAAC,+EAA+E,KAAK,SAAS,uGAAuG,oIAAoI,EAAE,KAAK,GAAG;AACnW,aAAO,KAAK,OAAO,gBAAAA,OAAC,OAAc,MAAM,KAAK,MAAM,WAAW,SAAU,qBAA7C,KAAqD,IAAO,gBAAAA,OAAC,SAAgB,WAAW,SAAU,qBAA5B,KAAoC;AAAA,IACvI,CAAC,GACH;AAAA,IACC,UAAU,gBAAAA,OAAC,SAAI,WAAU,0DAA0D,mBAAQ,IAAS;AAAA,KACvG;AAEJ;;;ACpBI,gBAAAE,cAAA;AAFG,SAAS,UAAU,EAAE,UAAU,WAAW,OAAO,YAAY,IAAI,MAAM,GAAmB;AAC/F,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,CAAC,sIAAsI,aAAa,QAAQ,0BAA0B,4BAA4B,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAChQ;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACHI,SACE,OAAAC,QADF,QAAAC,cAAA;AAFG,SAAS,SAAS,EAAE,SAAS,cAAc,iBAAiB,UAAU,OAAO,YAAY,IAAI,GAAG,MAAM,GAAkB;AAC7H,SACE,gBAAAA,OAAC,YAAQ,GAAG,OAAO,WAAW,CAAC,4DAA4D,UAAU,kCAAkC,IAAI,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC5K;AAAA,oBAAAD,OAAC,YAAO,OAAM,IAAI,uBAAY;AAAA,IAC7B,QAAQ,IAAI,CAAC,WAAW,gBAAAA,OAAC,YAA0B,OAAO,OAAO,OAAQ,iBAAO,OAAO,KAAK,KAAvD,OAAO,KAAkD,CAAS;AAAA,KAC1G;AAEJ;;;ACRM,SAAgF,OAAAE,QAAhF,QAAAC,cAAA;AAHC,SAAS,gBAAgB,EAAE,aAAa,QAAQ,WAAW,MAAM,YAAY,UAAU,YAAY,GAAG,GAAyB;AACpI,SACE,gBAAAA,OAAC,SAAI,WAAW,CAAC,6BAA6B,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC/E;AAAA,oBAAAA,OAAC,WAAM,WAAU,gEAA+D;AAAA,sBAAAD,OAAC,UAAM,sBAAW;AAAA,MAAO,gBAAAA,OAAC,WAAM,MAAK,QAAQ,GAAG,YAAY,WAAW,CAAC,eAAe,YAAY,aAAa,EAAE,EAAE,KAAK,GAAG,GAAG;AAAA,OAAE;AAAA,IACjN,gBAAAC,OAAC,WAAM,WAAU,gEAA+D;AAAA,sBAAAD,OAAC,UAAM,oBAAS;AAAA,MAAO,gBAAAA,OAAC,WAAM,MAAK,QAAQ,GAAG,UAAU,WAAW,CAAC,eAAe,UAAU,aAAa,EAAE,EAAE,KAAK,GAAG,GAAG;AAAA,OAAE;AAAA,KAC7M;AAEJ;;;ACIU,SACE,OAAAE,QADF,QAAAC,cAAA;AANH,SAAS,kBAAkB,EAAE,SAAS,OAAO,UAAU,YAAY,GAAG,GAA2B;AACtG,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,wBAAwB,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACzE,kBAAQ,IAAI,CAAC,WAAW;AACvB,UAAM,WAAW,OAAO,UAAU;AAClC,WACE,gBAAAC,OAAC,YAA0B,MAAK,UAAS,gBAAc,UAAU,SAAS,MAAM,WAAW,OAAO,KAAK,GAAG,WAAW,CAAC,+DAA+D,WAAW,sEAAsE,+EAA+E,EAAE,KAAK,GAAG,GAC7V;AAAA,sBAAAD,OAAC,UAAK,WAAU,sDAAqD,OAAO,EAAE,YAAY,OAAO,MAAM,GAAoB;AAAA,MAC3H,gBAAAA,OAAC,UAAM,iBAAO,OAAM;AAAA,SAFT,OAAO,KAGpB;AAAA,EAEJ,CAAC,GACH;AAEJ;;;ACZe,gBAAAE,cAAA;AANR,SAAS,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,UAAK,UAAU,QAAQ,UAAU,YAAY,GAAG,GAAqB;AAC5H,SACE,gBAAAA,OAAC,SAAI,WAAW,CAAC,kCAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,MAAK,cAAa,cAAY,OACpH,gBAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,UAAU;AACzC,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,SAAS;AACxB,WAAO,gBAAAA,OAAC,YAAmB,MAAK,UAAS,MAAK,SAAQ,gBAAc,QAAQ,SAAS,MAAM,WAAW,KAAK,GAAG,WAAW,CAAC,+DAA+D,SAAS,iGAAiG,8GAA8G,EAAE,KAAK,GAAG,GAAI,kBAA3Y,KAAgZ;AAAA,EACta,CAAC,GACH;AAEJ;;;ACJM,SACE,OAAAC,QADF,QAAAC,cAAA;AAPC,SAAS,UAAU,EAAE,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK,YAAY,GAAG,GAAmB;AACjG,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,GAAG,CAAC;AACvD,QAAM,SAAS;AACf,QAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,QAAM,OAAO,gBAAgB;AAC7B,SACE,gBAAAA,OAAC,SAAI,WAAW,CAAC,kCAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAO,EAAE,OAAO,MAAM,QAAQ,KAAK,GAC1H;AAAA,oBAAAA,OAAC,SAAI,SAAQ,eAAc,WAAU,4BACnC;AAAA,sBAAAD,OAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAG,QAAQ,MAAK,QAAO,QAAO,8BAA6B,aAAY,MAAK;AAAA,MACpG,gBAAAA,OAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAG,QAAQ,MAAK,QAAO,QAAO,uBAAsB,aAAY,MAAK,eAAc,UAAS,iBAAiB,GAAG,IAAI,IAAI,gBAAgB,IAAI,IAAI;AAAA,OAC1K;AAAA,IACA,gBAAAC,OAAC,SAAI,WAAU,wBAAuB;AAAA,sBAAAA,OAAC,SAAI,WAAU,wEAAwE;AAAA,aAAK,MAAM,aAAa,GAAG;AAAA,QAAE;AAAA,SAAC;AAAA,MAAO,QAAQ,gBAAAD,OAAC,SAAI,WAAU,oFAAoF,iBAAM,IAAS;AAAA,OAAK;AAAA,KACnS;AAEJ;;;ACHmP,gBAAAE,cAAA;AAN5O,SAAS,YAAY,EAAE,OAAO,UAAU,GAAG,KAAK,YAAY,GAAG,GAAqB;AACzF,QAAM,OAAO,OAAO,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAClE,SACE,gBAAAA,OAAC,SAAI,WAAW,CAAC,cAAc,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAO,EAAE,qBAAqB,UAAU,OAAO,oBAAoB,GACrI,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,UAAU,OAAO,KAAK,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI;AACxD,WAAO,gBAAAA,OAAC,SAAgB,OAAO,KAAK,OAAO,WAAU,4DAA2D,OAAO,EAAE,YAAY,0CAA0C,KAAK,MAAM,UAAU,GAAG,CAAC,kBAAkB,GAAI,eAAK,QAAQ,gBAAAA,OAAC,UAAK,WAAU,WAAW,eAAK,OAAM,IAAU,QAA1Q,KAA+Q;AAAA,EAClS,CAAC,GACH;AAEJ;;;ACJkF,gBAAAC,QAAkF,QAAAC,cAAlF;AAR3E,SAAS,YAAY,EAAE,OAAO,YAAY,GAAG,GAAqB;AACvE,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAC1D,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,aAAa,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC9D,gBAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,UAAM,QAAQ,KAAK,IAAI,GAAI,KAAK,QAAQ,MAAO,GAAG;AAClD,WACE,gBAAAC,OAAC,SACC;AAAA,sBAAAA,OAAC,SAAI,WAAU,wDAAuD;AAAA,wBAAAD,OAAC,UAAK,WAAU,gDAAgD,eAAK,OAAM;AAAA,QAAO,gBAAAC,OAAC,UAAK,WAAU,oDAAoD;AAAA,eAAK;AAAA,UAAO,KAAK,OAAO,SAAM,OAAO,KAAK,IAAI,CAAC,KAAK;AAAA,WAAG;AAAA,SAAO;AAAA,MAC1R,gBAAAD,OAAC,SAAI,WAAU,qFAAoF,0BAAAA,OAAC,SAAI,WAAU,qFAAoF,OAAO,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,GAAE;AAAA,SAF/N,KAGV;AAAA,EAEJ,CAAC,GACH;AAEJ;;;ACfM,SAAwF,OAAAE,QAAxF,QAAAC,cAAA;AAJC,SAAS,gBAAgB,EAAE,WAAW,YAAY,OAAO,YAAY,GAAG,GAAyB;AACtG,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC;AAChD,SACE,gBAAAA,OAAC,SAAI,WACH;AAAA,oBAAAA,OAAC,SAAI,WAAU,0EAAyE;AAAA,sBAAAD,OAAC,UAAM,qBAAU;AAAA,MAAO,gBAAAA,OAAC,UAAM,sBAAW;AAAA,OAAO;AAAA,IACzI,gBAAAC,OAAC,SAAI,WAAU,8FAA6F;AAAA,sBAAAD,OAAC,SAAI,WAAU,mCAAkC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,GAAG;AAAA,MAAE,gBAAAA,OAAC,SAAI,WAAU,gEAA+D,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG;AAAA,OAAE;AAAA,KAClT;AAEJ;;;ACE8E,gBAAAE,QAA2F,QAAAC,cAA3F;AAHvE,SAAS,aAAa,EAAE,OAAO,YAAY,GAAG,GAAsB;AACzE,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,wHAAwH,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACzK,gBAAM,IAAI,CAAC,MAAM,UAAU,gBAAAC,OAAC,SAAgB,WAAU,kBAAiB;AAAA,oBAAAD,OAAC,UAAO,MAAM,KAAK,OAAO,KAAK,KAAK,WAAW,MAAK,MAAK;AAAA,IAAE,gBAAAC,OAAC,SAAI,WAAU,kBAAiB;AAAA,sBAAAA,OAAC,OAAE,WAAU,4CAA2C;AAAA,wBAAAD,OAAC,YAAQ,eAAK,OAAM;AAAA,QAAS;AAAA,QAAE,KAAK;AAAA,SAAO;AAAA,MAAK,KAAK,OAAO,gBAAAA,OAAC,SAAI,WAAU,+CAA+C,eAAK,MAAK,IAAS;AAAA,OAAK;AAAA,IAAO,KAAK,OAAO,gBAAAA,OAAC,SAAI,WAAU,oFAAoF,eAAK,MAAK,IAAS;AAAA,OAAhd,KAAqd,CAAM,GACngB;AAEJ;;;ACFiQ,SAAyB,OAAAE,QAAzB,QAAAC,cAAA;AAH1P,SAAS,UAAU,EAAE,OAAO,YAAY,GAAG,GAAmB;AACnE,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,wHAAwH,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACzK,gBAAM,IAAI,CAAC,MAAM,UAAU,gBAAAC,OAAC,aAAoB,WAAW,CAAC,2DAA2D,KAAK,SAAS,8CAA8C,EAAE,EAAE,KAAK,GAAG,GAAG;AAAA,oBAAAA,OAAC,SAAI,WAAU,0CAAyC;AAAA,sBAAAA,OAAC,SAAI,WAAU,WAAU;AAAA,wBAAAD,OAAC,QAAG,WAAU,mEAAmE,eAAK,OAAM;AAAA,QAAM,KAAK,SAAS,gBAAAA,OAAC,OAAE,WAAU,+CAA+C,eAAK,QAAO,IAAO;AAAA,SAAK;AAAA,MAAM,gBAAAC,OAAC,SAAI,WAAU,oCAAoC;AAAA,aAAK,MAAM,gBAAAD,OAAC,SAAO,eAAK,KAAI,IAAW;AAAA,QAAM,KAAK,OAAO,gBAAAA,OAAC,UAAK,WAAU,wDAAwD,eAAK,MAAK,IAAU;AAAA,SAAK;AAAA,OAAM;AAAA,IAAO,KAAK,UAAU,gBAAAA,OAAC,OAAE,WAAU,4DAA4D,eAAK,SAAQ,IAAO;AAAA,OAA1vB,KAA+vB,CAAU,GACrzB;AAEJ;;;ACFuO,SAAmD,OAAAE,QAAnD,QAAAC,cAAA;AAHhO,SAAS,cAAc,EAAE,OAAO,WAAW,UAAU,YAAY,GAAG,GAAuB;AAChG,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,aAAa,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC9D,gBAAM,IAAI,CAAC,MAAM,UAAU,gBAAAA,OAAC,aAAoB,WAAU,+EAA8E,0BAAAC,OAAC,SAAI,WAAU,qEAAoE;AAAA,oBAAAA,OAAC,SAAI;AAAA,sBAAAA,OAAC,SAAI,WAAU,qCAAoC;AAAA,wBAAAD,OAAC,QAAG,WAAU,kDAAkD,eAAK,OAAM;AAAA,QAAM,KAAK,WAAW,gBAAAA,OAAC,SAAM,SAAS,KAAK,aAAa,SAAS,WAAW,KAAK,aAAa,WAAW,YAAY,WAAY,eAAK,UAAS,IAAW;AAAA,SAAK;AAAA,MAAO,KAAK,YAAY,gBAAAC,OAAC,OAAE,WAAU,+CAA8C;AAAA;AAAA,QAAc,KAAK;AAAA,SAAU,IAAO;AAAA,MAAM,KAAK,cAAc,gBAAAD,OAAC,OAAE,WAAU,+CAA+C,eAAK,aAAY,IAAO;AAAA,OAAK;AAAA,IAAM,gBAAAC,OAAC,SAAI,WAAU,cAAa;AAAA,sBAAAD,OAAC,UAAO,MAAK,MAAK,SAAQ,aAAY,SAAS,MAAM,WAAW,KAAK,GAAG,oBAAM;AAAA,MAAS,gBAAAA,OAAC,UAAO,MAAK,MAAK,SAAS,MAAM,YAAY,KAAK,GAAG,qBAAO;AAAA,OAAS;AAAA,KAAM,KAAj4B,KAAu4B,CAAU,GAC77B;AAEJ;;;ACXM,SAAyD,OAAAE,QAAzD,QAAAC,cAAA;AAJC,SAAS,UAAU,EAAE,OAAO,OAAO,SAAS,IAAI,YAAY,GAAG,GAAmB;AACvF,QAAM,KAAK,SAAS;AACpB,SACE,gBAAAA,OAAC,SAAI,WAAW,CAAC,+EAA+E,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACjI;AAAA,oBAAAA,OAAC,SAAI,WAAU,2CAA0C;AAAA,sBAAAD,OAAC,UAAK,WAAU,wDAAwD,iBAAM;AAAA,MAAO,gBAAAA,OAAC,UAAK,WAAW,CAAC,qBAAqB,KAAK,gCAAgC,6BAA6B,EAAE,KAAK,GAAG,GAAI,eAAK,eAAe,WAAU;AAAA,OAAO;AAAA,IAC1S,gBAAAA,OAAC,SAAI,WAAU,0FAAyF,0BAAAA,OAAC,SAAI,WAAU,mCAAkC,OAAO,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,GAAE;AAAA,IACtN,gBAAAC,OAAC,SAAI,WAAU,8GAA6G;AAAA,sBAAAA,OAAC,UAAM;AAAA;AAAA,QAAM;AAAA,SAAC;AAAA,MAAO,gBAAAA,OAAC,UAAK;AAAA;AAAA,QAAQ;AAAA,QAAO;AAAA,SAAC;AAAA,OAAO;AAAA,KAChL;AAEJ;;;ACGsN,SAAmD,OAAAC,QAAnD,QAAAC,cAAA;AAH/M,SAAS,iBAAiB,EAAE,OAAO,UAAU,YAAY,GAAG,GAA0B;AAC3F,SACE,gBAAAD,OAAC,SAAI,WAAW,CAAC,8DAA8D,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC/G,gBAAM,IAAI,CAAC,SAAS,gBAAAC,OAAC,SAAmB,WAAU,yJAAwJ;AAAA,oBAAAA,OAAC,SAAI;AAAA,sBAAAA,OAAC,SAAI,WAAU,qCAAoC;AAAA,wBAAAD,OAAC,QAAG,WAAU,0DAA0D,eAAK,MAAK;AAAA,QAAK,gBAAAA,OAAC,SAAO,eAAK,KAAI;AAAA,SAAQ;AAAA,MAAO,KAAK,cAAc,gBAAAA,OAAC,OAAE,WAAU,+CAA+C,eAAK,aAAY,IAAO;AAAA,OAAK;AAAA,IAAM,gBAAAA,OAAC,SAAI,WAAU,0CAA0C,eAAK,SAAQ;AAAA,IAAM,gBAAAA,OAAC,UAAO,SAAS,KAAK,SAAS,UAAU,CAAC,YAAY,WAAW,KAAK,KAAK,OAAO,GAAG;AAAA,OAA9mB,KAAK,GAA2mB,CAAM,GACvpB;AAEJ;;;ACPM,gBAAAE,QAE6P,QAAAC,cAF7P;AAHC,SAAS,UAAU,EAAE,QAAQ,cAAc,OAAO,YAAY,GAAG,GAAmB;AACzF,SACE,gBAAAA,OAAC,aAAQ,WAAW,CAAC,+EAA+E,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACrI;AAAA,oBAAAD,OAAC,QAAG,WAAU,0DAA0D,iBAAM;AAAA,IAC9E,gBAAAA,OAAC,SAAI,WAAU,kBACZ,gBAAM,IAAI,CAAC,MAAM,UAAU;AAAE,YAAM,MAAM,KAAK,QAAQ,KAAK,IAAI,KAAM,KAAK,OAAO,KAAK,QAAS,GAAG,IAAI;AAAG,aAAO,gBAAAC,OAAC,SAAgB;AAAA,wBAAAA,OAAC,SAAI,WAAU,qCAAoC;AAAA,0BAAAD,OAAC,UAAK,WAAU,oCAAoC,eAAK,OAAM;AAAA,UAAO,gBAAAC,OAAC,UAAK,WAAU,oDAAoD;AAAA,iBAAK;AAAA,YAAK;AAAA,YAAE,KAAK;AAAA,aAAM;AAAA,WAAO;AAAA,QAAM,gBAAAD,OAAC,SAAI,WAAU,qFAAoF,0BAAAA,OAAC,SAAI,WAAU,mCAAkC,OAAO,EAAE,OAAO,GAAG,GAAG,IAAI,GAAG,GAAE;AAAA,WAA3Z,KAAia;AAAA,IAAQ,CAAC,GACviB;AAAA,KACF;AAEJ;;;ACdiM,SAAiG,OAAAE,QAAjG,QAAAC,cAAA;AAD1L,SAAS,gBAAgB,EAAE,UAAU,QAAQ,YAAY,GAAG,GAAyB;AAC1F,SAAO,gBAAAD,OAAC,SAAI,WAAW,CAAC,iIAAiI,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,0BAAAC,OAAC,SAAI,WAAU,kFAAiF;AAAA;AAAA,IAAC,gBAAAD,OAAC,UAAM,UAAS;AAAA,IAAQ,SAAS,gBAAAA,OAAC,UAAM,kBAAO,IAAU;AAAA,KAAK,GAAM;AACtW;;;ACMwC,SAAgC,OAAAE,QAAhC,QAAAC,cAAA;AADjC,SAAS,WAAW,EAAE,QAAQ,8BAA8B,aAAa,OAAO,YAAY,GAAG,GAAoB;AACxH,SAAO,gBAAAA,OAAC,aAAQ,WAAsB;AAAA,oBAAAA,OAAC,SAAI,WAAU,kBAAiB;AAAA,sBAAAD,OAAC,SAAI,WAAU,UAAS,iBAAG;AAAA,MAAM,gBAAAA,OAAC,QAAG,WAAU,mFAAmF,iBAAM;AAAA,MAAM,cAAc,gBAAAA,OAAC,OAAE,WAAU,yDAAyD,uBAAY,IAAO;AAAA,OAAK;AAAA,IAAM,gBAAAA,OAAC,aAAU,OAAO,MAAM,IAAI,CAAC,MAAM,WAAW,EAAE,IAAI,OAAO,KAAK,IAAI,OAAO,KAAK,UAAU,SAAS,KAAK,OAAO,EAAE,GAAG;AAAA,KAAE;AAC9b;;;ACDsO,SAAyD,OAAAE,QAAzD,QAAAC,cAAA;AAD/N,SAAS,YAAY,EAAE,OAAO,YAAY,GAAG,GAAqB;AACvE,SAAO,gBAAAD,OAAC,SAAI,WAAW,CAAC,6BAA6B,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAI,gBAAM,IAAI,CAAC,MAAM,UAAU,gBAAAC,OAAC,aAAoB,WAAU,+EAA8E;AAAA,oBAAAA,OAAC,SAAI,WAAU,2CAA0C;AAAA,sBAAAD,OAAC,UAAK,WAAU,UAAU,eAAK,WAAW,IAAI,QAAQ,CAAC,IAAG;AAAA,MAAQ,KAAK,SAAS,gBAAAA,OAAC,SAAO,eAAK,QAAO,IAAW;AAAA,OAAK;AAAA,IAAM,gBAAAA,OAAC,QAAG,WAAU,uDAAuD,eAAK,OAAM;AAAA,IAAM,KAAK,cAAc,gBAAAA,OAAC,OAAE,WAAU,yDAAyD,eAAK,aAAY,IAAO;AAAA,OAAzd,KAA8d,CAAU,GAAE;AACjnB;;;ACGS,SAAiI,OAAAE,QAAjI,QAAAC,cAAA;AATT,IAAMC,eAAgD;AAAA,EACpD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR;AAEO,SAAS,aAAa,EAAE,MAAAC,QAAO,WAAW,UAAU,QAAQ,OAAO,YAAY,GAAG,GAAsB;AAC7G,SAAO,gBAAAF,OAAC,UAAK,WAAW,CAAC,yEAAyE,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG;AAAA,oBAAAD,OAAC,UAAK,WAAW,CAAC,wBAAwBE,aAAYC,KAAI,GAAG,QAAQ,kBAAkB,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG;AAAA,IAAG;AAAA,KAAS;AAC5Q;","names":["jsx","jsxs","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","useId","useState","jsx","jsxs","sizeMap","jsx","jsxs","useState","jsx","jsxs","useState","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","useId","createPortal","jsx","jsxs","useId","createPortal","createPortal","jsx","jsxs","createPortal","jsx","jsxs","jsx","variantClasses","jsx","jsx","jsxs","jsx","variantClasses","jsx","jsxs","jsx","jsxs","className","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","useEffect","useRef","useState","createPortal","jsx","jsxs","useState","useRef","useEffect","createPortal","useMemo","useState","jsx","jsxs","jsx","jsxs","ALIGN_CLASS","useState","useMemo","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","variantClasses","jsx","jsxs","jsx","jsx","gapClasses","alignClasses","justifyClasses","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","Alert","tone","jsx","jsxs","tone","jsx","jsx","jsx","jsxs","tones","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","sizeClasses","jsx","variantClasses","paddingClasses","jsx","jsxs","jsx","gapClasses","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","toneClasses","tone","jsx","jsxs","jsx","jsxs","toneClasses","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","toneClasses","tone","jsx","jsxs","jsx","jsxs","jsx","gapClasses","Fragment","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","toneClasses","tone"]}
1
+ {"version":3,"sources":["../src/components/icons/BaseIcons.tsx","../src/components/icons/NavigationIcons.tsx","../src/components/icons/ActionIcons.tsx","../src/components/icons/AuthIcons.tsx","../src/components/icons/FeedbackIcons.tsx","../src/components/icons/SettingsIcons.tsx","../src/components/icons/LogoIcons.tsx","../src/components/icons/FormsIcons.tsx","../src/components/icons/StatusIcons.tsx","../src/components/icons/LayoutIcons.tsx","../src/components/forms/Button.tsx","../src/components/feedback/Spinner.tsx","../src/components/forms/Input.tsx","../src/components/forms/Select.tsx","../src/components/forms/Textarea.tsx","../src/components/forms/FieldLabel.tsx","../src/components/forms/FieldHint.tsx","../src/components/forms/Checkbox.tsx","../src/components/forms/RadioButton.tsx","../src/components/feedback/PageSpinner.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/ToastProvider.tsx","../src/components/feedback/FormError.tsx","../src/components/feedback/ErrorBoundary.tsx","../src/components/modals/BaseModal.tsx","../src/components/modals/ConfirmDialog.tsx","../src/components/shared/Tooltip.tsx","../src/components/shared/Card.tsx","../src/components/shared/Skeleton.tsx","../src/components/shared/SkeletonBlocks.tsx","../src/components/shared/Badge.tsx","../src/components/shared/EmptyState.tsx","../src/components/shared/InfoBanner.tsx","../src/components/shared/PageHeader.tsx","../src/components/shared/MetricCard.tsx","../src/components/shared/StatGrid.tsx","../src/components/shared/SectionCard.tsx","../src/components/shared/SearchInput.tsx","../src/components/shared/Pagination.tsx","../src/components/shared/SectionTitle.tsx","../src/components/shared/StatusBadge.tsx","../src/components/shared/ActionMenu.tsx","../src/components/table/DataTable.tsx","../src/components/table/DataTableRow.tsx","../src/components/marketing/MarketingShell.tsx","../src/components/marketing/HeroFrame.tsx","../src/components/marketing/FeatureCard.tsx","../src/components/marketing/FeatureGrid.tsx","../src/components/marketing/CTASection.tsx","../src/components/marketing/MockupFrame.tsx","../src/components/marketing/ComparisonTable.tsx","../src/components/layout/AppShell.tsx","../src/components/layout/SplitPane.tsx","../src/components/layout/Stack.tsx","../src/components/layout/Cluster.tsx","../src/components/navigation/Breadcrumbs.tsx","../src/components/navigation/SidebarNav.tsx","../src/components/navigation/TopNav.tsx","../src/components/disclosure/Tabs.tsx","../src/components/disclosure/Accordion.tsx","../src/components/disclosure/Stepper.tsx","../src/components/overlays/Drawer.tsx","../src/components/overlays/Popover.tsx","../src/components/overlays/CommandMenu.tsx","../src/components/forms/FormField.tsx","../src/components/forms/Switch.tsx","../src/components/forms/ToggleGroup.tsx","../src/components/forms/InputGroup.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Progress.tsx","../src/components/shared/Avatar.tsx","../src/components/shared/Kbd.tsx","../src/components/shared/Timeline.tsx","../src/components/shared/KeyValueList.tsx","../src/components/shared/CodeBlock.tsx","../src/components/marketing/LogoCloud.tsx","../src/components/marketing/TestimonialCard.tsx","../src/components/marketing/PricingCard.tsx","../src/components/marketing/StatsBand.tsx","../src/presets/framework.ts","../src/components/layout/Container.tsx","../src/components/layout/Surface.tsx","../src/components/layout/Divider.tsx","../src/components/layout/ResponsiveGrid.tsx","../src/components/data-display/Sparkline.tsx","../src/components/data-display/BarList.tsx","../src/components/data-display/DonutMetric.tsx","../src/components/data-display/FilterChip.tsx","../src/components/data-display/DataToolbar.tsx","../src/components/framework/ResourceCard.tsx","../src/components/framework/IntegrationCard.tsx","../src/components/framework/HealthIndicator.tsx","../src/components/framework/AuditLog.tsx","../src/components/framework/KanbanBoard.tsx","../src/components/framework/AccessMatrix.tsx","../src/components/framework/CalendarGrid.tsx","../src/components/forms/Slider.tsx","../src/components/forms/FileDropzone.tsx","../src/components/forms/PasswordInput.tsx","../src/components/forms/TextareaCounter.tsx","../src/components/feedback/Callout.tsx","../src/components/feedback/LoadingOverlay.tsx","../src/components/feedback/NotificationList.tsx","../src/components/layout/MasonryGrid.tsx","../src/components/layout/PageRail.tsx","../src/components/layout/StickyBar.tsx","../src/components/forms/Combobox.tsx","../src/components/forms/DateRangePicker.tsx","../src/components/forms/ColorSwatchPicker.tsx","../src/components/forms/RatingInput.tsx","../src/components/data-display/ScoreRing.tsx","../src/components/data-display/HeatmapGrid.tsx","../src/components/data-display/FunnelChart.tsx","../src/components/data-display/ComparisonMeter.tsx","../src/components/framework/ActivityFeed.tsx","../src/components/framework/InboxList.tsx","../src/components/framework/ApprovalQueue.tsx","../src/components/framework/SLAStatus.tsx","../src/components/framework/FeatureFlagTable.tsx","../src/components/framework/PlanUsage.tsx","../src/components/marketing/AnnouncementBar.tsx","../src/components/marketing/FAQSection.tsx","../src/components/marketing/RoadmapList.tsx","../src/components/feedback/InlineStatus.tsx"],"sourcesContent":["import type React from \"react\";\r\n\r\nexport interface IconProps {\r\n size?: number;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport const base = (_d: unknown, size: number, style?: React.CSSProperties) => ({\r\n width: size,\r\n height: size,\r\n viewBox: \"0 0 24 24\",\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeWidth: 1.75,\r\n strokeLinecap: \"round\" as const,\r\n strokeLinejoin: \"round\" as const,\r\n style,\r\n});\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Clipboard = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" />\r\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\r\n <path d=\"M12 11h4M12 16h4M8 11h.01M8 16h.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Home = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\r\n <polyline points=\"9 22 9 12 15 12 15 22\" />\r\n </svg>\r\n);\r\n\r\nexport const Scan = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2\" />\r\n <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\" />\r\n </svg>\r\n);\r\n\r\nexport const Users = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\" />\r\n </svg>\r\n);\r\n\r\nexport const Book = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\" />\r\n <path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\" />\r\n </svg>\r\n);\r\n\r\nexport const Calendar = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n </svg>\r\n);\r\n\r\nexport const CheckSquare = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"9 11 12 14 22 4\" />\r\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\r\n </svg>\r\n);\r\n\r\nexport const BarChart = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\r\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\r\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\r\n <line x1=\"2\" y1=\"20\" x2=\"22\" y2=\"20\" />\r\n </svg>\r\n);\r\n\r\nexport const Table = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M3 9h18M9 21V9\" />\r\n </svg>\r\n);\r\n\r\nexport const Report = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\r\n <polyline points=\"10 9 9 9 8 9\" />\r\n </svg>\r\n);\r\n\r\nexport const QrCode = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\r\n <path d=\"M14 14h3v3h-3zM17 17h3v3h-3zM14 17h3\" />\r\n </svg>\r\n);\r\n\r\nexport const Layers = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\r\n <polyline points=\"2 12 12 17 22 12\" />\r\n <polyline points=\"2 17 12 22 22 17\" />\r\n </svg>\r\n);\r\n\r\nexport const OfficeHours = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M8 3h8\" />\r\n <path d=\"M9 2v2M15 2v2\" />\r\n <rect x=\"4\" y=\"5\" width=\"16\" height=\"15\" rx=\"2\" />\r\n <path d=\"M4 10h16\" />\r\n <path d=\"M12 13v4\" />\r\n <path d=\"M12 13l2.5-1.5\" />\r\n </svg>\r\n);\r\n\r\nexport const FileUpload = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <polyline points=\"12 18 12 12\" />\r\n <polyline points=\"9 15 12 12 15 15\" />\r\n </svg>\r\n);\r\n\r\nexport const University = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M12 3l9 3H3l9-3z\" />\r\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\r\n <line x1=\"5\" y1=\"6\" x2=\"5\" y2=\"18\" />\r\n <line x1=\"10\" y1=\"6\" x2=\"10\" y2=\"18\" />\r\n <line x1=\"14\" y1=\"6\" x2=\"14\" y2=\"18\" />\r\n <line x1=\"19\" y1=\"6\" x2=\"19\" y2=\"18\" />\r\n <line x1=\"2\" y1=\"18\" x2=\"22\" y2=\"18\" />\r\n <line x1=\"2\" y1=\"21\" x2=\"22\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const Faculty = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.5}>\r\n {/* central tower */}\r\n <rect x=\"7\" y=\"2\" width=\"10\" height=\"19\" />\r\n {/* left wing */}\r\n <rect x=\"2\" y=\"8\" width=\"5\" height=\"13\" />\r\n {/* right wing */}\r\n <rect x=\"17\" y=\"8\" width=\"5\" height=\"13\" />\r\n {/* tower windows row 1 */}\r\n <rect x=\"9\" y=\"4\" width=\"2.5\" height=\"2.5\" />\r\n <rect x=\"12.5\" y=\"4\" width=\"2.5\" height=\"2.5\" />\r\n {/* tower windows row 2 */}\r\n <rect x=\"9\" y=\"8\" width=\"2.5\" height=\"2.5\" />\r\n <rect x=\"12.5\" y=\"8\" width=\"2.5\" height=\"2.5\" />\r\n {/* entrance */}\r\n <rect x=\"10\" y=\"15\" width=\"4\" height=\"6\" />\r\n {/* base line */}\r\n <line x1=\"1\" y1=\"21\" x2=\"23\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const GraduationCap = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M22 10v6M2 10l10-5 10 5-10 5z\" />\r\n <path d=\"M6 12v5c0 1.657 2.686 3 6 3s6-1.343 6-3v-5\" />\r\n </svg>\r\n);\r\n\r\nexport const Globe = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\" />\r\n </svg>\r\n);\r\n\r\nexport const CreditCard = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\r\n <path d=\"M2 10h20\" />\r\n </svg>\r\n);\r\n\r\nexport const HelpCircle = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\r\n <circle cx=\"12\" cy=\"17\" r=\".5\" fill=\"currentColor\" stroke=\"none\" />\r\n </svg>\r\n);\r\n\r\nexport const NavQrAttendance = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"5.5\" y=\"5.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"16.5\" y=\"5.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1.5\" /><rect x=\"5.5\" y=\"16.5\" width=\"2\" height=\"2\" rx=\".4\" fill=\"currentColor\" stroke=\"none\" />\r\n <polyline points=\"14,16 16,18 20,13\" />\r\n </svg>\r\n);\r\n\r\nexport const NavScoresheet = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.3}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M3 9h18M3 14h18M9 9v9M15 9v9\" />\r\n </svg>\r\n);\r\n\r\nexport const NavAnalytics = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <path d=\"M3 3v18h18\" /><path d=\"M7 16l4-5 4 3 5-6\" />\r\n </svg>\r\n);\r\n\r\nexport const NavSecurity = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\r\n <path d=\"M12 2L4 6v6c0 5.25 3.5 9.74 8 11 4.5-1.26 8-5.75 8-11V6L12 2Z\" />\r\n <path d=\"M9 12l2 2 4-4\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Edit = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\r\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\r\n </svg>\r\n);\r\n\r\nexport const Trash = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"3 6 5 6 21 6\" />\r\n <path d=\"M19 6l-1 14H6L5 6M10 11v6M14 11v6M9 6V4h6v2\" />\r\n </svg>\r\n);\r\n\r\nexport const Plus = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n);\r\n\r\nexport const Download = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n <polyline points=\"7 10 12 15 17 10\" />\r\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const Refresh = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\r\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n </svg>\r\n);\r\n\r\nexport const UserPlus = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\r\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\r\n </svg>\r\n);\r\n\r\nexport const UserMinus = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\r\n </svg>\r\n);\r\n\r\nexport const UserCog = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <circle cx=\"19\" cy=\"19\" r=\"2\" />\r\n <path d=\"M19 15v2M19 21v2M15.27 16.27l1.42 1.42M22.31 21.31l-1.42-1.42M15 19h2M21 19h2M15.27 21.73l1.42-1.42M22.31 16.69l-1.42 1.42\" />\r\n </svg>\r\n);\r\n\r\nexport const Check = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n);\r\n\r\nexport const X = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2.5} className={className}>\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\n\r\nexport const Menu = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" /><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\nexport const Grid = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\r\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\r\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />\r\n </svg>\r\n);\r\n\r\nexport const GitCompare = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M18 21l4-4-4-4\" />\r\n <path d=\"M6 21l-4-4 4-4\" />\r\n <path d=\"M14 3l4 4-4 4\" />\r\n <path d=\"M2 21V3a2 2 0 0 1 2-2h6\" />\r\n <path d=\"M22 21V7a2 2 0 0 0-2-2h-6\" />\r\n </svg>\r\n);\r\nexport const History = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n <path d=\"M12 7v5l4 2\" />\r\n </svg>\r\n);\r\n\r\nexport const RotateCcw = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n <path d=\"M3 3v5h5\" />\r\n </svg>\r\n);\r\n\r\nexport const Pdf = ({ size = 14, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 1920 1920\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <g fillRule=\"evenodd\">\r\n <path d=\"M1251.654 0c44.499 0 88.207 18.07 119.718 49.581l329.223 329.224c31.963 31.962 49.581 74.54 49.581 119.717V1920H169V0Zm-66.183 112.941H281.94V1807.06h1355.294V564.706H1185.47V112.94Zm112.94 23.379v315.445h315.445L1298.412 136.32Z\"/>\r\n <path d=\"M900.497 677.67c26.767 0 50.372 12.65 67.991 37.835 41.901 59.068 38.965 121.976 23.492 206.682-5.308 29.14.113 58.617 16.263 83.125 22.814 34.786 55.68 82.673 87.981 123.219 23.718 29.93 60.198 45.854 97.13 40.885 23.718-3.276 52.292-5.986 81.656-5.986 131.012 0 121.186 46.757 133.045 89.675 6.55 25.976 3.275 48.678-10.165 65.506-16.715 22.701-51.162 34.447-101.534 34.447-55.793 0-74.202-9.487-122.767-24.96-27.445-8.81-55.906-10.617-83.69-3.275-55.453 14.456-146.936 36.48-223.284 46.983-40.772 5.647-77.816 26.654-102.438 60.875-55.454 76.8-106.842 148.518-188.273 148.518-21.007 0-40.32-7.567-56.244-22.701-23.492-23.492-33.544-49.581-28.574-79.85 13.778-92.95 128.075-144.79 196.066-182.625 16.037-8.923 28.687-22.589 36.592-39.53l107.86-233.223c7.68-16.377 10.051-34.56 7.228-52.518-12.537-79.059-31.06-211.99 18.748-272.075 10.955-13.44 26.09-21.007 42.917-21.007Zm20.556 339.953c-43.257 126.607-119.718 264.282-129.996 280.32 92.273-43.37 275.916-65.28 275.916-65.28-92.386-88.998-145.92-215.04-145.92-215.04Z\"/>\r\n </g>\r\n </svg>\r\n);\r\n\r\nexport const Printer = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M6 9V3h12v6\" />\r\n <path d=\"M6 21h12v-6H6v6z\" />\r\n <path d=\"M18 9H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2z\" />\r\n <circle cx=\"17\" cy=\"13\" r=\"1\" />\r\n <path d=\"M8 13h3\" />\r\n </svg>\r\n);\r\n\r\nexport const ExternalLink = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\r\n <polyline points=\"15 3 21 3 21 9\" />\r\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const Image = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\r\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\r\n <polyline points=\"21 15 16 10 5 21\" />\r\n </svg>\r\n);\r\n\r\nexport const Star = ({ size = 14, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" />\r\n </svg>\r\n);\r\n\r\nexport const AppleIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 814 1000\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M788.1 340.9c-5.8 4.5-108.2 62.2-108.2 190.5 0 148.4 130.3 200.9 134.2 202.2-.6 3.2-20.7 71.9-68.7 141.9-42.8 61.6-87.5 123.1-155.5 123.1s-85.5-39.5-164-39.5c-76 0-103.7 40.8-165.9 40.8s-105-38.8-155.8-103.2C115.1 757.2 61.9 645.7 61.9 540.4c0-168.3 109.8-257.3 217.3-257.3 59.7 0 109.7 39.9 147.6 39.9 36 0 92.8-42.3 158.8-42.3 25.7 0 108.2 2.6 168.3 78.2zm-104.5-166.2c31.4-37.9 54.3-91.1 54.3-144.3 0-7.1-.6-14.3-1.9-20.1-51.5 1.9-112.4 34.3-149.6 77.2-28.8 32.1-55.8 85.9-55.8 140.3 0 7.8 1.3 15.6 1.9 18.1 3.2.6 8.4 1.3 13.6 1.3 46.5 0 102.8-31.4 137.5-72.5z\" />\r\n </svg>\r\n);\r\n\r\nexport const GooglePlayIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 512 512\"\r\n fill=\"currentColor\"\r\n style={style}\r\n className={className}\r\n >\r\n <path d=\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l2.4 1.4 247.2-247v-5.8L47 0zm425.6 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c17.1-9.8 17.1-25.9.8-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Mail = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\r\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\r\n </svg>\r\n);\r\n\r\nexport const LockIcon = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\r\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\r\n </svg>\r\n);\r\n\r\nexport const TwoFAIcon = ({ size = 16, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n {/* Smartphone */}\r\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n {/* Key overlay */}\r\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" />\r\n <line x1=\"11\" y1=\"10\" x2=\"16\" y2=\"10\" />\r\n <line x1=\"13\" y1=\"7.5\" x2=\"13\" y2=\"6\" />\r\n <line x1=\"15\" y1=\"8.5\" x2=\"15\" y2=\"7.5\" />\r\n </svg>\r\n);\r\n\r\nexport const FingerprintIcon = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\r\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\r\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\r\n <path d=\"M2 12a10 10 0 0 1 18-6\" />\r\n <path d=\"M2 16h.01\" />\r\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\r\n <path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" />\r\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\r\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\" />\r\n </svg>\r\n);\r\n\r\nexport const Eye = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n </svg>\r\n);\r\n\r\nexport const EyeOff = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a18.45 18.45 0 0 1 5.06-5.94\" />\r\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a18.5 18.5 0 0 1-2.16 3.19\" />\r\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\r\n </svg>\r\n);\r\n\r\nexport const User = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n);\r\n\r\nexport const UserCheck = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n <polyline points=\"16 11 18 13 22 9\" />\r\n </svg>\r\n);\r\n\r\nexport const Hash = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\" />\r\n <line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\" />\r\n <line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\" />\r\n <line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const LogOut = ({ size = 20, className, style }: IconProps) => (\r\n <svg\r\n {...base(null, size, style)}\r\n className={className}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.75\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"15\" y1=\"12\" x2=\"5\" y2=\"12\" />\r\n <polyline points=\"9 8 5 12 9 16\" />\r\n <path d=\"M19 4 h-4 v16 h4 Z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Alert = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n);\r\n\r\nexport const Info = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n);\r\n\r\nexport const CheckCircle = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\r\n <polyline points=\"22 4 12 14.01 9 11.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Ban = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\r\n </svg>\r\n);\r\n\r\nexport const ArrowRight = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\r\n </svg>\r\n);\r\n\r\nexport const ArrowLeft = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"M19 12H5M12 19l-7-7 7-7\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronLeft = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronRight = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronDown = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <path d=\"m6 9 6 6 6-6\" />\r\n </svg>\r\n);\r\n\r\nexport const ChevronUp = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"18 15 12 9 6 15\" />\r\n </svg>\r\n);\r\n\r\nexport const Search = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"M21 21l-4.35-4.35\" />\r\n </svg>\r\n);\r\n\r\nexport const Bell = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\r\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\r\n </svg>\r\n);\r\n\r\nexport const Shield = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\r\n </svg>\r\n);\r\n\r\nexport const Copy = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\r\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\r\n </svg>\r\n);\r\n\r\nexport const Repeat = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\r\n <polyline points=\"17 1 21 5 17 9\" />\r\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\r\n <polyline points=\"7 23 3 19 7 15\" />\r\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\r\n </svg>\r\n);\r\n\r\nexport const FileText = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\r\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\r\n <polyline points=\"10 9 9 9 8 9\" />\r\n </svg>\r\n);\r\n\r\nexport const Trophy = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <path d=\"M6 9H4.5a2.5 2.5 0 0 1 0-5H6\" />\r\n <path d=\"M18 9h1.5a2.5 2.5 0 0 0 0-5H18\" />\r\n <path d=\"M4 22h16\" />\r\n <path d=\"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22\" />\r\n <path d=\"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22\" />\r\n <path d=\"M18 2H6v7a6 6 0 0 0 12 0V2Z\" />\r\n </svg>\r\n);\r\n\r\nexport const Monitor = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\r\n </svg>\r\n);\r\n\r\nexport const Smartphone = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\nexport const Tablet = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\r\n </svg>\r\n);\r\n\r\n// Aktivnost – linija otkucaja (pulse)\r\nexport const ActivityMenu = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"8\" width=\"3\" height=\"8\" rx=\"1\" />\r\n <rect x=\"9\" y=\"4\" width=\"3\" height=\"16\" rx=\"1\" />\r\n <rect x=\"15\" y=\"6\" width=\"3\" height=\"12\" rx=\"1\" />\r\n </svg>\r\n);\r\n// Poređenje – dva stuba sa strelicama za upoređivanje\r\nexport const Compare = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\r\n <rect x=\"9\" y=\"9\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\r\n <line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeDasharray=\"3 2\" />\r\n </svg>\r\n);\r\n\r\n// Presečni status – Venn dijagram (dva presječena kruga)\r\nexport const Intersect = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\r\n <circle cx=\"9\" cy=\"12\" r=\"6\" />\r\n <circle cx=\"15\" cy=\"12\" r=\"6\" />\r\n </svg>\r\n);\r\n\r\nexport const Megaphone = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\r\n <path d=\"M3 11l19-9-9 19-2-8-8-2z\" />\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const Sun = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\r\n <circle cx=\"12\" cy=\"12\" r=\"5\" /><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" /><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\r\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" /><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\r\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\r\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" /><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\r\n </svg>\r\n);\r\n\r\nexport const Moon = ({ size = 15, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\r\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\r\n </svg>\r\n);\r\n\r\nexport const Gear = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z\" />\r\n </svg>\r\n);\r\n\r\nexport const Clock = ({ size = 13, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <polyline points=\"12 6 12 12 16 14\" />\r\n </svg>\r\n);\r\n","interface LogoMarkProps {\n size?: number;\n className?: string;\n bgClassName?: string;\n bgFill?: string;\n bgOpacity?: number;\n /** Product glyph: \"lms\" = T monogram, \"boards\" = kanban columns */\n variant?: \"lms\" | \"boards\";\n}\n\n// Solid teal tile with white product glyph in negative space.\n// LMS = T monogram, Boards = kanban columns — same tile, different glyph.\nexport const LogoMark = ({\n size = 28,\n className,\n bgClassName,\n bgFill = \"#1496b3\",\n bgOpacity = 1,\n variant = \"lms\",\n}: LogoMarkProps) => (\n <svg\n width={size}\n height={size}\n className={className}\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n >\n <rect width=\"64\" height=\"64\" rx=\"14\" fill={bgFill} opacity={bgOpacity} className={bgClassName} />\n {variant === \"lms\" ? (\n <g fill=\"#fff\">\n <rect x=\"14\" y=\"14\" width=\"36\" height=\"10\" rx=\"3\" />\n <rect x=\"27\" y=\"14\" width=\"10\" height=\"36\" rx=\"3\" />\n </g>\n ) : (\n <g fill=\"#fff\">\n <rect x=\"13\" y=\"15\" width=\"10\" height=\"26\" rx=\"5\" />\n <rect x=\"27\" y=\"15\" width=\"10\" height=\"34\" rx=\"5\" />\n <rect x=\"41\" y=\"15\" width=\"10\" height=\"20\" rx=\"5\" />\n </g>\n )}\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const FormIcon = ({ size = 18, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M8 7h8M8 11h8M8 15h5\" />\r\n </svg>\r\n);\r\n\r\nexport const CalendarWeek = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n <path d=\"M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01\" />\r\n </svg>\r\n);\r\n\r\nexport const CalendarMonth = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\r\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\r\n <rect x=\"7\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\r\n <rect x=\"13\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\r\n <rect x=\"7\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\r\n <rect x=\"13\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\r\n </svg>\r\n);\r\n\r\nexport const NumberIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"4\" y=\"18\" fontSize=\"18\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">12</text>\r\n </svg>\r\n);\r\n\r\nexport const TextIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"6\" y=\"18\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">T</text>\r\n </svg>\r\n);\r\n\r\nexport const FormulaIcon = ({ size = 14, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <text x=\"3\" y=\"16\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">ƒ</text>\r\n <text x=\"12\" y=\"16\" fontSize=\"16\" fill=\"currentColor\" stroke=\"none\">x</text>\r\n </svg>\r\n);\r\n","import { IconProps, base } from \"./BaseIcons\";\r\n\r\nexport const RefreshCw = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\r\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\r\n <path d=\"M23 4v6h-6\" />\r\n <path d=\"M1 20v-6h6\" />\r\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10\" />\r\n <path d=\"M20.49 15a9 9 0 0 1-14.85 3.36L1 14\" />\r\n </svg>\r\n);\r\n\r\nexport const Database = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\r\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\r\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\r\n </svg>\r\n);\r\n\r\nexport const Server = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\r\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"6\" y2=\"6.01\" />\r\n <line x1=\"6\" y1=\"18\" x2=\"6\" y2=\"18.01\" />\r\n </svg>\r\n);\r\n\r\nexport const Activity = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\" />\r\n </svg>\r\n);\r\n\r\nexport const Cpu = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\" />\r\n <rect x=\"9\" y=\"9\" width=\"6\" height=\"6\" />\r\n <line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\" />\r\n <line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\" />\r\n <line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\" />\r\n <line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\" />\r\n <line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\" />\r\n <line x1=\"1\" y1=\"15\" x2=\"4\" y2=\"15\" />\r\n <line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\" />\r\n <line x1=\"20\" y1=\"15\" x2=\"23\" y2=\"15\" />\r\n </svg>\r\n);\r\n\r\nexport const Zap = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\r\n </svg>\r\n);\r\n\r\nexport const HardDrive = ({ size = 16, className, style }: IconProps) => (\r\n <svg {...base(null, size, style)} className={className}>\r\n <line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\" />\r\n <path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\" />\r\n <line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\" />\r\n <line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\" />\r\n </svg>\r\n);\r\n","import { X, Grid, UserMinus, UserCog, History, ExternalLink } from \"./ActionIcons\";\r\nimport { LockIcon, LogOut, User, UserCheck, EyeOff } from \"./AuthIcons\";\r\nimport { BarChart, Book, Calendar, CheckSquare, Clipboard, Faculty, Home, Layers, OfficeHours, QrCode, Report, Scan, Table, University, Users } from \"./NavigationIcons\";\r\nimport { ActivityMenu, Compare, Info, Intersect, Megaphone, Repeat, FileText } from \"./FeedbackIcons\";\r\nimport { Gear } from \"./SettingsIcons\";\r\nimport { CalendarWeek, FormIcon } from \"./FormsIcons\";\r\nimport { Zap } from \"./StatusIcons\";\r\n\r\nexport const SectionIcons = {\r\n studenti: <Users size={13} />,\r\n nastava: <Book size={13} />,\r\n evidencija: <CheckSquare size={13} />,\r\n analitika: <BarChart size={13} />,\r\n forme: <FormIcon size={13} />,\r\n nastavaS: <CalendarWeek size={13} />,\r\n evidencijaS:<CheckSquare size={13} />,\r\n};\r\n\r\nexport const Icons = {\r\n clipboard: <Faculty size={18} />,\r\n postClipboard: <Clipboard size={18} />,\r\n university: <University size={18} />,\r\n users: <Users size={18} />,\r\n book: <Book size={18} />,\r\n layers: <Layers size={18} />,\r\n officeHours: <OfficeHours size={18} />,\r\n calendar: <Calendar size={18} />,\r\n calendarAlt: <CalendarWeek size={18} />,\r\n checkSquare: <CheckSquare size={18} />,\r\n barChart: <BarChart size={18} />,\r\n qrCode: <QrCode size={18} />,\r\n home: <Home size={18} />,\r\n scan: <Scan size={18} />,\r\n lock: <LockIcon size={16} />,\r\n logOut: <LogOut size={16} />,\r\n logOutAlt: <LogOut size={16} />,\r\n user: <User size={16} />,\r\n cancel: <X size={16} />,\r\n report: <Report size={18} />,\r\n table: <Table size={18} />,\r\n gear: <Gear size={16} />,\r\n formIcon: <FormIcon size={18} />,\r\n grades: <BarChart size={18} />,\r\n activity: <ActivityMenu size={18} />,\r\n zap: <Zap size={18} />,\r\n compare: <Compare size={18} />,\r\n intersect: <Intersect size={18} />,\r\n repeat: <Repeat size={18} />,\r\n info: <Info size={16} />,\r\n todos: <CheckSquare size={18} />,\r\n eyeOff: <EyeOff size={18} />,\r\n userMinus: <UserMinus size={18} />,\r\n fileText: <FileText size={18} />,\r\n megaphone: <Megaphone size={18} />,\r\n grid: <Grid size={18} />,\r\n userCheck: <UserCheck size={18} />,\r\n fm: <UserCog size={18} />,\r\n history: <History size={18} />,\r\n externalLink: <ExternalLink size={18} />\r\n};\r\n","import type { BaseProps } from \"../../types\";\r\nimport { createElement, isValidElement } from \"react\";\r\nimport type { ComponentType, MouseEvent, ReactNode } from \"react\";\r\nimport { Spinner } from \"../feedback/Spinner\";\r\n\r\ntype Variant =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"ghost\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"info\"\r\n | \"muted-primary\"\r\n | \"outline-primary\"\r\n | \"outline-secondary\"\r\n | \"outline-danger\"\r\n | \"outline-success\"\r\n | \"brutal\"\r\n | \"link\";\r\n\r\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface ButtonProps extends BaseProps {\r\n children?: ReactNode;\r\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n variant?: Variant;\r\n size?: Size;\r\n icon?: ButtonIcon;\r\n iconRight?: ButtonIcon;\r\n\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n title?: string;\r\n fullWidth?: boolean;\r\n}\r\n\r\ntype ButtonIcon = ReactNode | ComponentType<{\r\n size?: number | string;\r\n strokeWidth?: number;\r\n className?: string;\r\n}>;\r\n\r\nconst TOKEN_BASE = \"inline-flex items-center justify-center gap-2 cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-150\";\r\n\r\nconst variantClasses: Record<Variant, string> = {\r\n primary: \"btn-primary\",\r\n secondary: \"btn-secondary\",\r\n danger: \"btn-danger\",\r\n\r\n ghost: `${TOKEN_BASE} font-medium border border-transparent\r\n text-[var(--color-txt-3)] hover:border-[var(--color-primary-300)] hover:text-[var(--color-primary-300)]`,\r\n\r\n success: `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\r\n bg-transparent hover:bg-[rgba(77,214,163,0.08)]`,\r\n\r\n warning: `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\r\n bg-transparent hover:bg-[rgba(255,122,77,0.08)]`,\r\n\r\n info: `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n bg-transparent hover:bg-[rgba(94,231,255,0.08)]`,\r\n\r\n \"muted-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n bg-[rgba(94,231,255,0.06)] hover:bg-[rgba(94,231,255,0.12)]`,\r\n\r\n \"outline-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\r\n hover:bg-[rgba(94,231,255,0.08)]`,\r\n\r\n \"outline-secondary\": `${TOKEN_BASE} border border-[var(--color-border-hi)] text-[var(--color-txt-2)]\r\n hover:border-[var(--color-txt-2)] hover:text-[var(--color-txt-1)]`,\r\n\r\n \"outline-danger\": `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\r\n hover:bg-[rgba(255,122,77,0.08)]`,\r\n\r\n \"outline-success\": `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\r\n hover:bg-[rgba(77,214,163,0.08)]`,\r\n\r\n brutal: `${TOKEN_BASE} border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)]\r\n shadow-[var(--tapiz-shadow-brutal)] font-bold hover:-translate-x-0.5 hover:-translate-y-0.5 hover:shadow-[var(--tapiz-shadow-brutal-lg)]`,\r\n\r\n link: \"text-[var(--color-primary-300)] hover:text-[var(--color-primary-400)] disabled:opacity-40 disabled:cursor-not-allowed inline-flex items-center gap-1\",\r\n};\r\n\r\nconst sizeClasses: Record<Size, string> = {\r\n xs: \"px-2 py-1 text-xs gap-1\",\r\n sm: \"px-3 py-1.5 text-xs gap-1.5\",\r\n md: \"px-4 py-2 text-sm gap-2\",\r\n lg: \"px-5 py-2.5 text-sm gap-2\",\r\n xl: \"px-6 py-3 text-base gap-2.5\",\r\n};\r\n\r\nexport function Button({\r\n children,\r\n onClick,\r\n disabled,\r\n loading,\r\n variant = \"primary\",\r\n size = \"md\",\r\n icon,\r\n iconRight,\r\n className = \"\",\r\n type = \"button\",\r\n title,\r\n fullWidth,\r\n}: ButtonProps) {\r\n const isDisabled = disabled || loading;\r\n const isLink = variant === \"link\";\r\n const shouldApplySize = !isLink;\r\n const renderedIcon = renderIcon(icon);\r\n const renderedIconRight = renderIcon(iconRight);\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={isDisabled}\r\n title={title}\r\n className={[\r\n variantClasses[variant],\r\n shouldApplySize ? sizeClasses[size] : \"\",\r\n fullWidth ? \"w-full\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n >\r\n {loading\r\n ? <Spinner color={variant === \"primary\" ? \"text-black\" : \"text-[var(--color-txt-2)]\"} />\r\n : renderedIcon ? <span>{renderedIcon}</span> : null}\r\n {children}\r\n {!loading && renderedIconRight}\r\n </button>\r\n );\r\n}\r\n\r\nfunction renderIcon(icon?: ButtonIcon) {\r\n if (!icon) return null;\r\n if (isValidElement(icon)) return icon;\r\n if (typeof icon === \"function\") {\r\n return createElement(icon, { size: 14, strokeWidth: 1.75 });\r\n }\r\n return icon;\r\n}\r\n","export interface SpinnerProps {\r\n size?: string;\r\n color?: string;\r\n}\r\n\r\nexport const Spinner = ({ size = \"w-3 h-3\", color = \"text-primary-700\" }: SpinnerProps) => (\r\n <svg\r\n className={`inline-block ${size} animate-spin ${color}`}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray=\"31.4 31.4\"\r\n strokeDashoffset=\"15.7\"\r\n />\r\n </svg>\r\n);\r\n","import type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Input({ className = \"\", invalid = false, ...props }: InputProps) {\r\n return (\r\n <input\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { SelectHTMLAttributes } from \"react\";\r\n\r\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Select({ className = \"\", invalid = false, ...props }: SelectProps) {\r\n return (\r\n <select\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { TextareaHTMLAttributes } from \"react\";\r\n\r\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Textarea({ className = \"\", invalid = false, ...props }: TextareaProps) {\r\n return (\r\n <textarea\r\n {...props}\r\n className={[\r\n \"input-field\",\r\n invalid ? \"border-warn focus:border-warn\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n />\r\n );\r\n}\r\n","import type { LabelHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FieldLabel({ children, className = \"\", ...props }: FieldLabelProps) {\r\n return (\r\n <label {...props} className={`kicker mb-1 block ${className}`.trim()}>\r\n {children}\r\n </label>\r\n );\r\n}\r\n","import type { HTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FieldHintProps extends HTMLAttributes<HTMLParagraphElement> {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FieldHint({ children, className = \"\", ...props }: FieldHintProps) {\r\n return (\r\n <p {...props} className={`font-mono text-[10px] text-txt-4 ${className}`.trim()}>\r\n {children}\r\n </p>\r\n );\r\n}\r\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\r\n\r\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\r\n label?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizeMap = {\r\n sm: { box: \"w-3.5 h-3.5\", icon: 10, text: \"text-xs\", gap: \"gap-1.5\" },\r\n md: { box: \"w-4 h-4\", icon: 11, text: \"text-sm\", gap: \"gap-2\" },\r\n lg: { box: \"w-5 h-5\", icon: 13, text: \"text-base\", gap: \"gap-2.5\" },\r\n} as const;\r\n\r\nexport function Checkbox({\r\n label,\r\n size = \"md\",\r\n className = \"\",\r\n id: providedId,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...props\r\n}: CheckboxProps) {\r\n const generatedId = useId();\r\n const id = providedId ?? generatedId;\r\n const s = sizeMap[size];\r\n\r\n const isControlled = checked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\r\n const isChecked = isControlled ? checked : internalChecked;\r\n const [focused, setFocused] = useState(false);\r\n\r\n return (\r\n <label\r\n htmlFor={id}\r\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\r\n >\r\n <span className=\"relative shrink-0\">\r\n <input\r\n {...props}\r\n id={id}\r\n type=\"checkbox\"\r\n checked={isControlled ? checked : internalChecked}\r\n onChange={(e) => {\r\n if (!isControlled) setInternalChecked(e.target.checked);\r\n onChange?.(e);\r\n }}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => setFocused(false)}\r\n className=\"sr-only\"\r\n />\r\n <span\r\n className={`\r\n flex items-center justify-center ${s.box}\r\n border transition-all duration-150\r\n ${isChecked\r\n ? \"bg-primary-300 border-primary-300\"\r\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\r\n }\r\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\r\n `}\r\n >\r\n {isChecked && (\r\n <svg\r\n width={s.icon}\r\n height={s.icon}\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n stroke=\"#000\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"square\"\r\n >\r\n <polyline points=\"1.5,6 4.5,9.5 10.5,2.5\" />\r\n </svg>\r\n )}\r\n </span>\r\n </span>\r\n\r\n {label && (\r\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n}\r\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\r\n\r\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\r\n label?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizeMap = {\r\n sm: { outer: \"w-3.5 h-3.5\", inner: \"w-1.5 h-1.5\", text: \"text-xs\", gap: \"gap-1.5\" },\r\n md: { outer: \"w-4 h-4\", inner: \"w-2 h-2\", text: \"text-sm\", gap: \"gap-2\" },\r\n lg: { outer: \"w-5 h-5\", inner: \"w-2.5 h-2.5\", text: \"text-base\", gap: \"gap-2.5\" },\r\n} as const;\r\n\r\nexport function RadioButton({\r\n label,\r\n size = \"md\",\r\n className = \"\",\r\n id: providedId,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...props\r\n}: RadioButtonProps) {\r\n const generatedId = useId();\r\n const id = providedId ?? generatedId;\r\n const s = sizeMap[size];\r\n\r\n const isControlled = checked !== undefined;\r\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\r\n const isChecked = isControlled ? checked : internalChecked;\r\n const [focused, setFocused] = useState(false);\r\n\r\n return (\r\n <label\r\n htmlFor={id}\r\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\r\n >\r\n <span className=\"relative shrink-0\">\r\n <input\r\n {...props}\r\n id={id}\r\n type=\"radio\"\r\n checked={isControlled ? checked : internalChecked}\r\n onChange={(e) => {\r\n if (!isControlled) setInternalChecked(e.target.checked);\r\n onChange?.(e);\r\n }}\r\n onFocus={() => setFocused(true)}\r\n onBlur={() => setFocused(false)}\r\n className=\"sr-only\"\r\n />\r\n {/* outer ring — square to match app aesthetic, full for radio feel */}\r\n <span\r\n className={`\r\n flex items-center justify-center ${s.outer}\r\n rounded-full border transition-all duration-150\r\n ${isChecked\r\n ? \"bg-ink-400 border-primary-300 shadow-[0_0_0_1px_var(--color-primary-300)]\"\r\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\r\n }\r\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\r\n `}\r\n >\r\n {isChecked && (\r\n <span className={`${s.inner} rounded-full bg-primary-300`} />\r\n )}\r\n </span>\r\n </span>\r\n\r\n {label && (\r\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n}\r\n","import { Spinner } from \"./Spinner\";\r\n\r\nexport function PageSpinner() {\r\n return (\r\n <div className=\"flex h-48 flex-col items-center justify-center gap-3\">\r\n <Spinner size=\"w-8 h-8\" />\r\n <span className=\"kicker\">loading</span>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Check, X } from \"../icons/index\";\r\n\r\nexport interface ToastProps {\r\n message: string;\r\n ok: boolean;\r\n durationMs?: number;\r\n}\r\n\r\nexport function Toast({ message, ok, durationMs = 5000 }: ToastProps) {\r\n const [progress, setProgress] = useState(100);\r\n const [visible, setVisible] = useState(false);\r\n const startRef = useRef<number | null>(null);\r\n const rafRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const id = requestAnimationFrame(() => setVisible(true));\r\n return () => cancelAnimationFrame(id);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const tick = (now: number) => {\r\n if (!startRef.current) startRef.current = now;\r\n const elapsed = now - startRef.current;\r\n setProgress(Math.max(0, 100 - (elapsed / durationMs) * 100));\r\n if (elapsed < durationMs) rafRef.current = requestAnimationFrame(tick);\r\n };\r\n rafRef.current = requestAnimationFrame(tick);\r\n return () => {\r\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\r\n };\r\n }, [durationMs]);\r\n\r\n const transform = visible\r\n ? \"opacity-100 translate-y-0\"\r\n : \"opacity-0 translate-y-2 sm:translate-x-4 sm:translate-y-0\";\r\n\r\n const borderColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\r\n const accentColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\r\n\r\n return createPortal(\r\n <div className=\"pointer-events-none fixed bottom-20 left-4 right-4 z-9999 flex justify-center min-[600px]:bottom-auto min-[600px]:left-auto min-[600px]:right-5 min-[600px]:top-5 min-[600px]:justify-end\">\r\n <div\r\n className={`${transform} pointer-events-auto relative flex w-full max-w-sm items-center gap-2.5 overflow-hidden px-4 py-3 text-sm font-medium transition-all duration-300 sm:w-auto sm:max-w-xs`}\r\n style={{\r\n background: \"var(--color-ink-300)\",\r\n border: `1px solid ${borderColor}`,\r\n borderLeft: `3px solid ${borderColor}`,\r\n color: \"var(--color-txt-1)\",\r\n }}\r\n >\r\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\" style={{ color: accentColor }}>\r\n {ok ? <Check size={12} /> : <X size={12} />}\r\n </span>\r\n <span className=\"flex-1 text-[12px] leading-snug sm:text-[13px]\" style={{ fontFamily: \"var(--font-mono)\" }}>\r\n {message}\r\n </span>\r\n <div\r\n className=\"absolute bottom-0 left-0 h-0.5 transition-none\"\r\n style={{ width: `${progress}%`, background: accentColor }}\r\n />\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import { createContext, useContext, useMemo, useState, type ReactNode } from \"react\";\r\nimport { Toast } from \"./Toast\";\r\n\r\nexport interface ToastState {\r\n message: string;\r\n ok: boolean;\r\n durationMs?: number;\r\n}\r\n\r\ninterface ToastContextValue {\r\n hideToast: () => void;\r\n showToast: (message: string, ok: boolean, durationMs?: number) => void;\r\n}\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\nexport interface ToastProviderProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport function ToastProvider({ children }: ToastProviderProps) {\r\n const [toast, setToast] = useState<ToastState | null>(null);\r\n\r\n const value = useMemo<ToastContextValue>(() => ({\r\n hideToast: () => setToast(null),\r\n showToast: (message, ok, durationMs = 5000) => {\r\n setToast({ message, ok, durationMs });\r\n window.setTimeout(() => setToast(current => (\r\n current?.message === message && current?.ok === ok ? null : current\r\n )), durationMs);\r\n },\r\n }), []);\r\n\r\n return (\r\n <ToastContext.Provider value={value}>\r\n {children}\r\n {toast ? <Toast message={toast.message} ok={toast.ok} durationMs={toast.durationMs} /> : null}\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error(\"useToast must be used within ToastProvider\");\r\n }\r\n return context;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport { Alert } from \"../icons/index\";\r\n\r\nexport interface FormErrorProps extends BaseProps {\r\n message: string | null | undefined;\r\n}\r\n\r\nexport function FormError({ message, className = \"\" }: FormErrorProps) {\r\n if (!message) return null;\r\n return (\r\n <div\r\n className={`flex items-start gap-2 px-3 py-2.5 text-sm text-warn bg-warn/8 border border-warn/25 border-l-[3px] border-l-warn animate-scale-in ${className}`}\r\n >\r\n <Alert size={14} className=\"shrink-0 mt-0.5\" />\r\n <span className=\"font-mono text-[12px]\">{message}</span>\r\n </div>\r\n );\r\n}\r\n","import { Component, type ErrorInfo, type ReactNode } from \"react\";\r\n\r\ninterface ErrorBoundaryProps {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n hasError: boolean;\r\n}\r\n\r\ninterface DefaultErrorFallbackProps {\r\n title?: string;\r\n description?: string;\r\n label?: string;\r\n reloadLabel?: string;\r\n}\r\n\r\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n state: ErrorBoundaryState = { hasError: false };\r\n\r\n static getDerivedStateFromError(): ErrorBoundaryState {\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error: Error, info: ErrorInfo) {\r\n console.error(\"Unhandled UI error\", error, info);\r\n }\r\n\r\n render() {\r\n if (this.state.hasError) {\r\n return this.props.fallback ?? <DefaultErrorFallback />;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport function DefaultErrorFallback({\r\n title = \"Something went wrong\",\r\n description = \"An unexpected error occurred. Reload the page and try again.\",\r\n label = \"Tapiz UI · Runtime Error\",\r\n reloadLabel = \"Reload page\",\r\n}: DefaultErrorFallbackProps) {\r\n return (\r\n <div\r\n className=\"fixed inset-0 flex flex-col items-center justify-center overflow-hidden px-6\"\r\n style={{ background: \"var(--color-ink-100)\" }}\r\n >\r\n <GridBg />\r\n <Spotlight color=\"rgba(255,100,100,0.06)\" />\r\n\r\n <div\r\n className=\"relative z-10 flex w-full max-w-sm flex-col items-center gap-6 text-center\"\r\n style={{ animation: \"var(--animate-fade-in-up)\" }}\r\n >\r\n <div>\r\n <div\r\n className=\"font-mono font-bold leading-none\"\r\n style={{ fontSize: \"clamp(72px,16vw,120px)\", color: \"var(--color-border-hi)\", letterSpacing: \"-0.04em\" }}\r\n >\r\n 500\r\n </div>\r\n <div\r\n className=\"mt-1 h-0.5 w-full\"\r\n style={{ background: \"linear-gradient(90deg,transparent,rgba(255,80,80,0.7),transparent)\", opacity: 0.5 }}\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1.5\">\r\n <p className=\"text-base font-semibold\" style={{ color: \"var(--color-txt-1)\" }}>{title}</p>\r\n <p className=\"font-mono text-[11px] leading-relaxed\" style={{ color: \"var(--color-txt-3)\" }}>{description}</p>\r\n </div>\r\n\r\n <div\r\n className=\"font-mono text-[9px] uppercase px-2 py-1\"\r\n style={{\r\n letterSpacing: \".2em\",\r\n color: \"rgba(255,80,80,0.9)\",\r\n border: \"1px solid rgba(255,80,80,0.25)\",\r\n background: \"rgba(255,80,80,0.05)\",\r\n }}\r\n >\r\n {label}\r\n </div>\r\n\r\n <div className=\"w-full\">\r\n <button\r\n type=\"button\"\r\n onClick={() => window.location.reload()}\r\n style={{\r\n width: \"100%\",\r\n padding: \"10px\",\r\n fontSize: \"12px\",\r\n background: \"var(--color-primary-300)\",\r\n color: \"var(--color-ink-100)\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n fontFamily: \"var(--font-mono)\",\r\n letterSpacing: \"0.05em\",\r\n }}\r\n >\r\n {reloadLabel} →\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function GridBg() {\r\n return (\r\n <div className=\"pointer-events-none absolute inset-0 opacity-50 bg-[linear-gradient(var(--color-border)_1px,transparent_1px),linear-gradient(90deg,var(--color-border)_1px,transparent_1px)] bg-size-[32px_32px]\" />\r\n );\r\n}\r\n\r\nexport function Spotlight({ color }: { color: string }) {\r\n return (\r\n <div\r\n className=\"pointer-events-none absolute left-1/2 top-1/5 h-60 w-120 -translate-x-1/2\"\r\n style={{ background: `radial-gradient(ellipse at center, ${color} 0%, transparent 70%)` }}\r\n />\r\n );\r\n}\r\n","import { ReactNode, useId } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { X } from \"../icons/index\";\r\n\r\nexport interface BaseModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title: string;\r\n subtitle?: string;\r\n children: ReactNode;\r\n xShown?: boolean;\r\n icon?: ReactNode;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n closeLabel?: string;\r\n}\r\n\r\nconst sizeClass: Record<NonNullable<BaseModalProps[\"size\"]>, string> = {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-md\",\r\n lg: \"max-w-lg\",\r\n xl: \"max-w-2xl\",\r\n};\r\n\r\nexport function BaseModal({\r\n isOpen,\r\n onClose,\r\n title,\r\n subtitle,\r\n children,\r\n icon,\r\n xShown = false,\r\n size = \"md\",\r\n closeLabel = \"Close dialog\",\r\n}: BaseModalProps) {\r\n const titleId = useId();\r\n if (!isOpen) return null;\r\n\r\n return createPortal(\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-[rgba(5,6,8,0.75)] backdrop-blur-[2px]\"\r\n onClick={(e) => e.target === e.currentTarget && onClose()}\r\n >\r\n <div\r\n className={`w-full ${sizeClass[size]} p-6 space-y-4 bg-ink-200 border border-border-hi border-t-2 border-t-primary-300 animate-scale-in`}\r\n >\r\n <div className=\"flex items-start justify-between\">\r\n <div className=\"flex items-center gap-3\">\r\n {icon && (\r\n <div className=\"flex items-center justify-center w-10 h-10 shrink-0 bg-ink-300 border border-border-hi text-primary-300\">\r\n {icon}\r\n </div>\r\n )}\r\n <div>\r\n <h3 id={titleId} className=\"font-display text-[15px] font-semibold text-txt-1\">{title}</h3>\r\n {subtitle && (\r\n <p className=\"font-mono text-[10px] text-primary-300 mt-0.5 tracking-widest\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n {xShown && (\r\n <button\r\n onClick={onClose}\r\n className=\"w-7 h-7 flex items-center justify-center text-txt-3 border border-transparent hover:text-txt-1 hover:border-border-hi transition-colors\"\r\n aria-label={closeLabel}\r\n title={closeLabel}\r\n >\r\n <X size={14} />\r\n </button>\r\n )}\r\n </div>\r\n {children}\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import { ReactNode } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { X, Check, Trash } from \"../icons/index\";\r\n\r\nexport interface ConfirmDialogProps {\r\n title: string;\r\n description?: ReactNode;\r\n message?: ReactNode;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n loading?: boolean;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n icon?: ReactNode;\r\n danger?: boolean;\r\n open?: boolean;\r\n}\r\n\r\nexport function ConfirmDialog({\r\n title,\r\n description,\r\n message,\r\n confirmLabel,\r\n cancelLabel,\r\n loading = false,\r\n onConfirm,\r\n onCancel,\r\n icon,\r\n danger = false,\r\n open = true,\r\n}: ConfirmDialogProps) {\r\n const resolvedConfirm = confirmLabel ?? \"Confirm\";\r\n const resolvedCancel = cancelLabel ?? \"Cancel\";\r\n const resolvedDescription = description ?? message;\r\n if (!open) return null;\r\n return createPortal(\r\n <div\r\n className=\"fixed inset-0 z-300 flex items-center justify-center px-4 bg-[rgba(5,6,8,0.4)] backdrop-blur-sm\"\r\n onClick={onCancel}\r\n >\r\n <div\r\n className={`relative w-full max-w-sm bg-ink-200 border border-border-hi border-t-2 animate-scale-in ${danger ? \"border-t-(--color-danger,#f87171)\" : \"border-t-primary-300\"}`}\r\n onClick={e => e.stopPropagation()}\r\n >\r\n <div className=\"p-6 flex flex-col gap-4\">\r\n {/* Icon + title row */}\r\n <div className=\"flex items-center gap-3\">\r\n {icon && (\r\n <div\r\n className={`flex items-center justify-center w-9 h-9 shrink-0 border ${danger ? \"bg-[rgba(248,113,113,0.1)] border-[rgba(248,113,113,0.25)] text-(--color-danger,#f87171)\" : \"bg-primary-300/8 border-primary-300/15 text-primary-300\"}`}\r\n >\r\n {icon}\r\n </div>\r\n )}\r\n <p className=\"text-sm font-semibold text-txt-1\">\r\n {title}\r\n </p>\r\n </div>\r\n\r\n {/* Description */}\r\n <p className=\"text-sm text-txt-3\">\r\n {resolvedDescription}\r\n </p>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center justify-end gap-2\">\r\n <Button variant=\"ghost\" size=\"sm\" icon={<X size={13} />} onClick={onCancel} disabled={loading}>\r\n {resolvedCancel}\r\n </Button>\r\n <Button\r\n variant={danger ? \"danger\" : \"primary\"}\r\n size=\"sm\"\r\n icon={danger ? <Trash size={13} /> : <Check size={13} />}\r\n onClick={onConfirm}\r\n loading={loading}\r\n >\r\n {resolvedConfirm}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\n\r\nexport interface TooltipProps {\r\n text: string;\r\n children: ReactNode;\r\n position?: \"top\" | \"bottom\";\r\n align?: \"center\" | \"right\";\r\n width?: string;\r\n wFull?: boolean;\r\n}\r\n\r\nexport function Tooltip({ text, children, position = \"top\", align = \"center\", width = \"max-w-[200px]\", wFull }: TooltipProps) {\r\n const alignClass = align === \"right\" ? \"right-0\" : \"left-1/2 -translate-x-1/2\";\r\n return (\r\n <span className={`group relative inline-flex items-center${wFull ? \" w-full\" : \"\"}`}>\r\n {children}\r\n <span\r\n className={`pointer-events-none absolute ${alignClass} ${width} w-max px-2.5 py-1.5\r\n text-center text-[11px] leading-snug\r\n opacity-0 group-hover:opacity-100 transition-opacity duration-150\r\n ${position === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\"}`}\r\n style={{\r\n zIndex: 60,\r\n background: \"var(--color-ink-300)\",\r\n border: \"1px solid var(--color-border-hi)\",\r\n color: \"var(--color-txt-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n letterSpacing: \"0.04em\",\r\n }}\r\n >\r\n {text}\r\n <span\r\n className={`absolute left-1/2 -translate-x-1/2 w-0 h-0 border-x-4 border-x-transparent\r\n ${position === \"top\" ? \"top-full border-t-4\" : \"bottom-full border-b-4\"}`}\r\n style={position === \"top\"\r\n ? { borderTopColor: \"var(--color-border-hi)\" }\r\n : { borderBottomColor: \"var(--color-border-hi)\" }}\r\n />\r\n </span>\r\n </span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type CardVariant = \"surface\" | \"raised\" | \"outlined\" | \"brutal\" | \"glass\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport interface CardProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n hover?: boolean;\r\n style?: CSSProperties;\r\n variant?: CardVariant;\r\n padding?: CardPadding;\r\n}\r\n\r\nexport interface CardSectionProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst variantClasses: Record<CardVariant, string> = {\r\n surface: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-sm)]\",\r\n raised: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-raised)] shadow-[var(--tapiz-shadow-md)]\",\r\n outlined: \"border border-[var(--tapiz-border-strong)] bg-transparent\",\r\n brutal: \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal)]\",\r\n glass: \"border border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-surface)_78%,transparent)] shadow-[var(--tapiz-shadow-md)] backdrop-blur-xl\",\r\n};\r\n\r\nconst paddingClasses: Record<CardPadding, string> = {\r\n none: \"p-0\",\r\n sm: \"p-3\",\r\n md: \"p-5\",\r\n lg: \"p-6\",\r\n};\r\n\r\nexport function Card({\r\n children,\r\n className = \"\",\r\n hover = false,\r\n style,\r\n variant = \"surface\",\r\n padding = \"md\",\r\n}: CardProps) {\r\n return (\r\n <div\r\n className={[\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n hover ? \"card-hover\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardHeader({ children, className = \"\" }: CardSectionProps) {\r\n return <div className={`border-b border-[var(--tapiz-border-subtle)] px-5 py-3 ${className}`}>{children}</div>;\r\n}\r\n\r\nexport function CardBody({ children, className = \"\" }: CardSectionProps) {\r\n return <div className={`p-5 ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface SkeletonProps extends BaseProps {\r\n}\r\n\r\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\r\n return <div aria-hidden=\"true\" className={`skeleton ${className}`} />;\r\n}\r\n","import { Skeleton } from \"./Skeleton\";\r\n\r\nexport function SkeletonCard({ className = \"\" }: { className?: string }) {\r\n return (\r\n <div className={`card ${className}`.trim()}>\r\n <Skeleton className=\"mb-3 h-4 w-2/5\" />\r\n <Skeleton className=\"mb-2 h-3 w-3/4\" />\r\n <Skeleton className=\"h-3 w-1/2\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonKpiCard({ delay = 0 }: { delay?: number }) {\r\n return (\r\n <div\r\n className=\"card animate-pulse\"\r\n style={{\r\n animationDelay: `${delay}ms`,\r\n minHeight: 142,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 8,\r\n padding: \"16px 18px\",\r\n borderLeft: \"3px solid var(--color-border-hi)\",\r\n }}\r\n >\r\n <Skeleton className=\"mb-1 h-2 w-24\" />\r\n <Skeleton className=\"h-8 w-16\" />\r\n <Skeleton className=\"mt-1 h-2 w-20\" />\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonBanner() {\r\n return (\r\n <div\r\n className=\"animate-pulse overflow-hidden p-5\"\r\n style={{\r\n background: \"var(--color-ink-300)\",\r\n border: \"1px solid var(--color-border)\",\r\n borderTop: \"2px solid var(--color-border-hi)\",\r\n }}\r\n >\r\n <Skeleton className=\"mb-2 h-3 w-24\" />\r\n <Skeleton className=\"mb-3 h-6 w-48\" />\r\n <div className=\"flex gap-4\">\r\n <Skeleton className=\"h-4 w-28\" />\r\n <Skeleton className=\"h-4 w-24\" />\r\n <Skeleton className=\"h-4 w-20\" />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SkeletonTableRow({ cols = 4 }: { cols?: number }) {\r\n const widths = [\"w-24\", \"w-40\", \"w-32\", \"w-20\", \"w-16\"];\r\n return (\r\n <tr className=\"border-b border-border\">\r\n {Array.from({ length: cols }).map((_, i) => (\r\n <td key={i} className=\"px-4 py-3\">\r\n <Skeleton className={`h-4 ${widths[i % widths.length]}`} />\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n}\r\n\r\nexport function SkeletonTable({ rows = 6, cols = 4 }: { rows?: number; cols?: number }) {\r\n return (\r\n <div className=\"card overflow-hidden p-0\">\r\n <div className=\"overflow-x-auto\">\r\n <table className=\"w-full text-sm\">\r\n <thead>\r\n <tr className=\"border-b border-border bg-ink-300\">\r\n {Array.from({ length: cols }).map((_, i) => (\r\n <th key={i} className=\"px-4 py-3\">\r\n <Skeleton className=\"h-3 w-16\" />\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {Array.from({ length: rows }).map((_, i) => (\r\n <SkeletonTableRow key={i} cols={cols} />\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function SkeletonPageHeader() {\r\n return (\r\n <div className=\"flex animate-pulse items-center justify-between\">\r\n <div>\r\n <Skeleton className=\"mb-2 h-7 w-40\" />\r\n <Skeleton className=\"h-4 w-24\" />\r\n </div>\r\n <Skeleton className=\"h-9 w-32\" />\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\ntype Variant = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"muted\";\r\n\r\nconst variantClasses: Record<Variant, string> = {\r\n default: \"border-[var(--tapiz-accent)] text-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)]\",\r\n success: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n info: \"border-[var(--tapiz-info)] text-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n muted: \"border-txt-3 text-txt-3\",\r\n};\r\n\r\ninterface BadgeProps extends BaseProps {\r\n children: ReactNode;\r\n variant?: Variant;\r\n}\r\n\r\nexport function Badge({ children, variant = \"default\", className = \"\" }: BadgeProps) {\r\n return (\r\n <span\r\n className={`inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-widest ${variantClasses[variant]} ${className}`}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport { Info } from \"../icons/index\";\r\n\r\nexport interface EmptyStateProps {\r\n title?: string;\r\n description?: string;\r\n message?: string;\r\n icon?: ReactNode;\r\n}\r\n\r\nexport function EmptyState({ title, description, message, icon }: EmptyStateProps) {\r\n const resolvedTitle = title ?? message ?? \"No data\";\r\n\r\n return (\r\n <div className=\"border border-border bg-ink-200 px-4 py-10 text-center\">\r\n <div className=\"mb-2 flex justify-center text-txt-4\">\r\n {icon ?? <Info size={22} />}\r\n </div>\r\n <p className=\"font-mono text-[11px] tracking-widest text-txt-4\">{resolvedTitle}</p>\r\n {description ? (\r\n <p className=\"mt-1 font-mono text-[10px] text-txt-4 opacity-70\">{description}</p>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ErrorState({\r\n title = \"Failed to load\",\r\n error,\r\n}: {\r\n title?: string;\r\n error: Error | null;\r\n}) {\r\n return (\r\n <div className=\"border border-warn bg-ink-200 px-4 py-10 text-center\">\r\n <div className=\"mb-2 flex justify-center text-warn\">\r\n <Info size={22} />\r\n </div>\r\n <p className=\"font-mono text-[11px] tracking-widest text-warn\">{title}</p>\r\n {error ? <p className=\"mt-1 font-mono text-[10px] text-txt-3\">{error.message}</p> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport { Info, LockIcon } from \"../icons/index\";\r\n\r\ninterface StructuredInfoBannerProps extends BaseProps {\r\n title: string;\r\n description: string;\r\n text?: never;\r\n variant?: never;\r\n}\r\n\r\ninterface InlineInfoBannerProps extends BaseProps {\r\n text: string;\r\n variant?: \"info\" | \"warn\" | \"lock\";\r\n\r\n title?: never;\r\n description?: never;\r\n}\r\n\r\nexport type InfoBannerProps = StructuredInfoBannerProps | InlineInfoBannerProps;\r\n\r\nexport function InfoBanner(props: InfoBannerProps) {\r\n if (\"text\" in props) {\r\n const { text, variant = \"info\", className = \"\" } = props;\r\n const styles =\r\n variant === \"warn\"\r\n ? \"bg-warn/8 border-warn/25 text-warn\"\r\n : variant === \"lock\"\r\n ? \"bg-warn/8 border-warn/30 text-warn\"\r\n : \"bg-primary-500/10 border-primary-100 text-primary-500\";\r\n\r\n const icon = variant === \"lock\"\r\n ? <LockIcon size={14} className=\"mt-1 shrink-0\" />\r\n : <Info size={14} className=\"mt-1 shrink-0\" />;\r\n\r\n return (\r\n <div className={`app-info-banner flex items-start gap-2 border px-3 py-2.5 text-[13px] ${styles} ${className}`}>\r\n {icon}\r\n <p className=\"font-mono\">{text}</p>\r\n </div>\r\n );\r\n }\r\n\r\n const { title, description, className = \"\" } = props;\r\n\r\n return (\r\n <div\r\n className={`app-info-banner px-4 py-3 bg-primary-300/4 border border-primary-300/12 border-l-[3px] border-l-primary-300 ${className}`}\r\n >\r\n <p className=\"mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest text-primary-300\">\r\n {title}\r\n </p>\r\n <p className=\"font-mono text-[11px] leading-relaxed text-txt-2\">\r\n {description}\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PageHeaderProps extends BaseProps {\r\n title: string;\r\n subtitle?: string;\r\n description?: ReactNode;\r\n action?: ReactNode;\r\n actions?: ReactNode;\r\n icon?: ReactNode;\r\n banner?: ReactNode;\r\n breadcrumbs?: ReactNode;\r\n meta?: ReactNode;\r\n\r\n variant?: \"default\" | \"enterprise\" | \"brutal\";\r\n}\r\n\r\nexport function PageHeader({\r\n title,\r\n subtitle,\r\n description,\r\n action,\r\n actions,\r\n icon,\r\n banner,\r\n breadcrumbs,\r\n meta,\r\n className = \"\",\r\n variant = \"default\",\r\n}: PageHeaderProps) {\r\n const resolvedActions = actions ?? action;\r\n const variantClass = variant === \"brutal\"\r\n ? \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-brutal)]\"\r\n : variant === \"enterprise\"\r\n ? \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-sm)]\"\r\n : \"border-b border-[var(--tapiz-border-subtle)] pb-4\";\r\n\r\n return (\r\n <div className={`page-header mb-5 flex flex-col gap-3 animate-fade-in-up ${variantClass} ${className}`.trim()}>\r\n {breadcrumbs ? <div className=\"font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{breadcrumbs}</div> : null}\r\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\r\n <div className=\"min-w-0\">\r\n {subtitle ? <div className=\"kicker mb-1.5\">{subtitle}</div> : null}\r\n <div className=\"flex items-center gap-2.5\">\r\n {icon ? <span className=\"text-[var(--tapiz-accent)]\">{icon}</span> : null}\r\n <h2 className=\"font-(--font-display) text-[22px] tracking-[-0.03em] text-[var(--tapiz-text-primary)] md:text-[26px]\">\r\n {title}\r\n </h2>\r\n </div>\r\n {description ? <div className=\"mt-2 max-w-3xl text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</div> : null}\r\n {meta ? <div className=\"mt-3 font-mono text-[11px] text-[var(--tapiz-text-disabled)]\">{meta}</div> : null}\r\n </div>\r\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap gap-2\">{resolvedActions}</div> : null}\r\n </div>\r\n {banner ? banner : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"./Card\";\r\n\r\nexport type MetricTrendTone = \"positive\" | \"negative\" | \"neutral\" | \"warning\";\r\n\r\nexport interface MetricCardProps extends BaseProps {\r\n label: ReactNode;\r\n value: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n trend?: ReactNode;\r\n trendTone?: MetricTrendTone;\r\n\r\n variant?: \"surface\" | \"raised\" | \"brutal\";\r\n}\r\n\r\nconst trendClasses: Record<MetricTrendTone, string> = {\r\n positive: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n negative: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n neutral: \"border-[var(--tapiz-border-strong)] text-[var(--tapiz-text-muted)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n};\r\n\r\nexport function MetricCard({\r\n label,\r\n value,\r\n description,\r\n icon,\r\n trend,\r\n trendTone = \"neutral\",\r\n className = \"\",\r\n variant = \"surface\",\r\n}: MetricCardProps) {\r\n return (\r\n <Card variant={variant} padding=\"md\" hover className={`relative overflow-hidden ${className}`}>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"min-w-0\">\r\n <p className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">\r\n {label}\r\n </p>\r\n <div className=\"mt-2 font-display text-3xl font-semibold tracking-[-0.05em] text-[var(--tapiz-text-primary)]\">\r\n {value}\r\n </div>\r\n </div>\r\n {icon ? (\r\n <div className=\"grid h-10 w-10 shrink-0 place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--color-icon-bg)] text-[var(--tapiz-accent)]\">\r\n {icon}\r\n </div>\r\n ) : null}\r\n </div>\r\n {(description || trend) ? (\r\n <div className=\"mt-4 flex flex-wrap items-center gap-2\">\r\n {trend ? (\r\n <span className={`inline-flex border px-2 py-0.5 font-mono text-[10px] font-bold uppercase tracking-widest ${trendClasses[trendTone]}`}>\r\n {trend}\r\n </span>\r\n ) : null}\r\n {description ? <p className=\"text-xs text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n ) : null}\r\n </Card>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StatGridProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n minColumnWidth?: string;\r\n}\r\n\r\nexport function StatGrid({ children, className = \"\", minColumnWidth = \"14rem\" }: StatGridProps) {\r\n return (\r\n <div\r\n className={`grid gap-4 ${className}`}\r\n style={{ gridTemplateColumns: `repeat(auto-fit, minmax(${minColumnWidth}, 1fr))` }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"./Card\";\r\n\r\nexport interface SectionCardProps extends BaseProps {\r\n title?: ReactNode;\r\n eyebrow?: ReactNode;\r\n description?: ReactNode;\r\n action?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function SectionCard({ title, eyebrow, description, action, children, className = \"\" }: SectionCardProps) {\r\n return (\r\n <Card variant=\"surface\" padding=\"none\" className={className}>\r\n {(title || eyebrow || description || action) ? (\r\n <div className=\"flex flex-col gap-3 border-b border-[var(--tapiz-border-subtle)] px-5 py-4 sm:flex-row sm:items-start sm:justify-between\">\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-1\">{eyebrow}</div> : null}\r\n {title ? <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n {action ? <div className=\"shrink-0\">{action}</div> : null}\r\n </div>\r\n ) : null}\r\n <div className=\"p-5\">{children}</div>\r\n </Card>\r\n );\r\n}\r\n","import type { CSSProperties, InputHTMLAttributes } from \"react\";\r\nimport { Search, X } from \"../icons/index\";\r\nimport { Input } from \"../forms/Input\";\r\n\r\nexport interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\r\n value: string;\r\n onChange: (value: string) => void;\r\n wrapperClassName?: string;\r\n wrapperStyle?: CSSProperties;\r\n inputClassName?: string;\r\n iconClassName?: string;\r\n clearable?: boolean;\r\n clearTitle?: string;\r\n}\r\n\r\nexport function SearchInput({\r\n value,\r\n onChange,\r\n placeholder = \"Search\",\r\n wrapperClassName = \"\",\r\n wrapperStyle,\r\n inputClassName = \"\",\r\n iconClassName = \"text-txt-4\",\r\n clearable = true,\r\n clearTitle = \"Clear search\",\r\n ...props\r\n}: SearchInputProps) {\r\n return (\r\n <div className={`relative ${wrapperClassName}`.trim()} style={wrapperStyle}>\r\n <span className={`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 ${iconClassName}`.trim()}>\r\n <Search size={15} />\r\n </span>\r\n <Input\r\n {...props}\r\n type=\"text\"\r\n value={value}\r\n onChange={e => onChange(e.target.value)}\r\n placeholder={placeholder}\r\n className={`pl-9 ${inputClassName}`.trim()}\r\n />\r\n {clearable && value ? (\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(\"\")}\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 rounded-lg p-1 text-txt-4 transition-colors hover:bg-ink-300 hover:text-txt-2\"\r\n title={clearTitle}\r\n >\r\n <X size={14} />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { ChevronLeft, ChevronRight } from \"../icons/index\";\r\n\r\nexport interface PaginationLabels {\r\n showing?: (args: { from: number; to: number; total: number }) => string;\r\n page?: (args: { page: number; totalPages: number }) => string;\r\n prev?: string;\r\n next?: string;\r\n prevTitle?: string;\r\n nextTitle?: string;\r\n}\r\n\r\nexport interface PaginationProps {\r\n page: number;\r\n totalPages: number;\r\n onChange: (page: number) => void;\r\n totalItems?: number;\r\n pageSize?: number;\r\n labels?: PaginationLabels;\r\n}\r\n\r\nfunction getPageNumbers(page: number, totalPages: number): (number | \"…\")[] {\r\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n const pages: (number | \"…\")[] = [1];\r\n if (page > 3) pages.push(\"…\");\r\n for (let i = Math.max(2, page - 1); i <= Math.min(totalPages - 1, page + 1); i += 1) pages.push(i);\r\n if (page < totalPages - 2) pages.push(\"…\");\r\n pages.push(totalPages);\r\n return pages;\r\n}\r\n\r\nconst defaultLabels: Required<PaginationLabels> = {\r\n showing: ({ from, to, total }) => `Showing ${from}-${to} of ${total}`,\r\n page: ({ page, totalPages }) => `Page ${page} of ${totalPages}`,\r\n prev: \"Prev\",\r\n next: \"Next\",\r\n prevTitle: \"Previous page\",\r\n nextTitle: \"Next page\",\r\n};\r\n\r\nexport function Pagination({ page, totalPages, onChange, totalItems, pageSize, labels }: PaginationProps) {\r\n if (totalPages <= 1) return null;\r\n\r\n const copy = { ...defaultLabels, ...labels };\r\n const pageNumbers = getPageNumbers(page, totalPages);\r\n const from = pageSize ? (page - 1) * pageSize + 1 : null;\r\n const to = pageSize && totalItems ? Math.min(page * pageSize, totalItems) : null;\r\n\r\n return (\r\n <div className=\"flex flex-col items-center justify-between gap-3 border-t border-border pt-3 sm:flex-row\">\r\n {totalItems != null && from != null && to != null ? (\r\n <span className=\"order-2 font-mono text-[12px] text-txt-4 sm:order-1\">\r\n {copy.showing({ from, to, total: totalItems })}\r\n </span>\r\n ) : (\r\n <span className=\"order-2 font-mono text-[11px] text-txt-4 sm:order-1\">\r\n {copy.page({ page, totalPages })}\r\n </span>\r\n )}\r\n\r\n <div className=\"order-1 flex items-center gap-1 sm:order-2\">\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(Math.max(1, page - 1))}\r\n disabled={page === 1}\r\n title={copy.prevTitle}\r\n className=\"flex items-center gap-1 border border-border px-2.5 py-1.5 font-mono text-[11px] text-txt-3 transition-colors hover:border-border-hi hover:text-txt-1 disabled:cursor-not-allowed disabled:opacity-30\"\r\n >\r\n <ChevronLeft size={12} />\r\n <span className=\"hidden sm:inline\">{copy.prev}</span>\r\n </button>\r\n\r\n <div className=\"flex items-center gap-1\">\r\n {pageNumbers.map((entry, index) =>\r\n entry === \"…\" ? (\r\n <span key={`ellipsis-${index}`} className=\"w-7 text-center font-mono text-[11px] text-txt-4\">\r\n …\r\n </span>\r\n ) : (\r\n <button\r\n key={entry}\r\n type=\"button\"\r\n onClick={() => onChange(entry)}\r\n className={`h-7 w-7 border font-mono text-[11px] transition-colors ${\r\n page === entry\r\n ? \"border-primary-300 bg-primary-300/10 text-primary-300\"\r\n : \"border-border text-txt-3 hover:border-border-hi hover:text-txt-1\"\r\n }`}\r\n >\r\n {entry}\r\n </button>\r\n ),\r\n )}\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(Math.min(totalPages, page + 1))}\r\n disabled={page >= totalPages}\r\n title={copy.nextTitle}\r\n className=\"flex items-center gap-1 border border-border px-2.5 py-1.5 font-mono text-[10px] text-txt-3 transition-colors hover:border-border-hi hover:text-txt-1 disabled:cursor-not-allowed disabled:opacity-30\"\r\n >\r\n <span className=\"hidden sm:inline\">{copy.next}</span>\r\n <ChevronRight size={12} />\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SectionTitleProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function SectionTitle({ children, className = \"\" }: SectionTitleProps) {\r\n return <h3 className={`mb-1 text-sm font-semibold text-txt-1 ${className}`.trim()}>{children}</h3>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type StatusBadgeVariant =\r\n | \"default\"\r\n | \"active\"\r\n | \"inactive\"\r\n | \"warning\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"info\"\r\n | \"pending\";\r\n\r\nexport interface StatusBadgeProps extends BaseProps {\r\n label: ReactNode;\r\n variant?: StatusBadgeVariant;\r\n}\r\n\r\nconst BASE =\r\n \"inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-[0.15em]\";\r\n\r\nconst variantStyles: Record<StatusBadgeVariant, string> = {\r\n default: \"border-[var(--tapiz-border-strong)] text-[var(--tapiz-text-secondary)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n active: \"border-[var(--tapiz-accent)] text-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)]\",\r\n success: \"border-[var(--tapiz-success)] text-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n inactive: \"border-[var(--tapiz-text-disabled)] text-[var(--tapiz-text-disabled)] bg-transparent\",\r\n warning: \"border-[var(--tapiz-warning)] text-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] text-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n info: \"border-[var(--tapiz-info)] text-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n pending: \"border-[var(--tapiz-text-muted)] text-[var(--tapiz-text-muted)] bg-transparent\",\r\n};\r\n\r\nexport function StatusBadge({ label, variant = \"default\", className = \"\" }: StatusBadgeProps) {\r\n return <span className={`${BASE} ${variantStyles[variant]} ${className}`.trim()}>{label}</span>;\r\n}\r\n","import type { CSSProperties, ReactNode } from \"react\";\r\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { Spinner } from \"../feedback/Spinner\";\r\nimport { ChevronDown } from \"../icons/index\";\r\n\r\nexport interface ActionMenuItem {\r\n key: string;\r\n label: string;\r\n onSelect: () => void;\r\n icon?: ReactNode;\r\n danger?: boolean;\r\n disabled?: boolean;\r\n loading?: boolean;\r\n}\r\n\r\nexport interface ActionMenuProps {\r\n label: string;\r\n items: ActionMenuItem[];\r\n icon?: ReactNode;\r\n buttonSize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n buttonVariant?: \"primary\" | \"secondary\" | \"danger\" | \"ghost\" | \"success\" | \"warning\" | \"info\" | \"muted-primary\" | \"outline-primary\" | \"outline-secondary\" | \"outline-danger\" | \"outline-success\" | \"link\";\r\n buttonClassName?: string;\r\n menuClassName?: string;\r\n menuStyle?: CSSProperties;\r\n fullWidth?: boolean;\r\n closeLabel?: string;\r\n}\r\n\r\nconst defaultMenuStyle: CSSProperties = {\r\n background: \"var(--color-ink-200)\",\r\n border: \"1px solid var(--color-border-hi)\",\r\n borderTop: \"2px solid var(--color-primary-300)\",\r\n boxShadow: \"0 16px 48px -8px rgba(0,0,0,0.45)\",\r\n maxHeight: \"min(320px, calc(100vh - 180px))\",\r\n};\r\n\r\nconst itemBaseClass =\r\n \"flex w-full items-center gap-2.5 border-l-2 border-transparent px-4 py-2.5 text-left text-sm transition-colors duration-100 hover:border-[var(--color-primary-300)] disabled:cursor-not-allowed disabled:opacity-40\";\r\n\r\ninterface MenuPosition {\r\n top?: number;\r\n bottom?: number;\r\n left: number;\r\n width: number;\r\n maxHeight?: number;\r\n}\r\n\r\nexport function ActionMenu({\r\n label,\r\n items,\r\n icon,\r\n buttonSize = \"sm\",\r\n buttonVariant = \"secondary\",\r\n buttonClassName = \"\",\r\n menuClassName,\r\n menuStyle,\r\n fullWidth = false,\r\n closeLabel,\r\n}: ActionMenuProps) {\r\n const [open, setOpen] = useState(false);\r\n const [pos, setPos] = useState<MenuPosition | null>(null);\r\n const btnRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (!open || !btnRef.current) return;\r\n\r\n const updatePosition = () => {\r\n const buttonElement = btnRef.current;\r\n if (!buttonElement) return;\r\n const rect = buttonElement.getBoundingClientRect();\r\n const viewportPadding = 8;\r\n const menuOffset = 4;\r\n const menuW = Math.min(320, window.innerWidth - viewportPadding * 2);\r\n const left = Math.max(\r\n viewportPadding,\r\n Math.min(rect.right - menuW, window.innerWidth - menuW - viewportPadding),\r\n );\r\n const estimatedMenuHeight = Math.min(320, items.length * 44 + 16);\r\n const spaceAbove = Math.max(0, rect.top - viewportPadding - menuOffset);\r\n const spaceBelow = Math.max(0, window.innerHeight - rect.bottom - viewportPadding - menuOffset);\r\n const preferBelow = spaceBelow >= estimatedMenuHeight || spaceBelow >= spaceAbove;\r\n\r\n if (preferBelow) {\r\n setPos({\r\n top: Math.min(rect.bottom + menuOffset, window.innerHeight - viewportPadding),\r\n left,\r\n width: menuW,\r\n maxHeight: Math.max(120, spaceBelow),\r\n });\r\n return;\r\n }\r\n\r\n setPos({\r\n bottom: Math.max(window.innerHeight - rect.top + menuOffset, viewportPadding),\r\n left,\r\n width: menuW,\r\n maxHeight: Math.max(120, spaceAbove),\r\n });\r\n };\r\n\r\n updatePosition();\r\n window.addEventListener(\"resize\", updatePosition);\r\n document.addEventListener(\"scroll\", updatePosition, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", updatePosition);\r\n document.removeEventListener(\"scroll\", updatePosition, true);\r\n };\r\n }, [items.length, open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n function handle(e: MouseEvent | KeyboardEvent) {\r\n if (e instanceof KeyboardEvent) { if (e.key === \"Escape\") setOpen(false); return; }\r\n const target = e.target as Node;\r\n if (btnRef.current?.contains(target) || menuRef.current?.contains(target)) return;\r\n setOpen(false);\r\n }\r\n document.addEventListener(\"mousedown\", handle);\r\n document.addEventListener(\"keydown\", handle);\r\n return () => { document.removeEventListener(\"mousedown\", handle); document.removeEventListener(\"keydown\", handle); };\r\n }, [open]);\r\n\r\n const menuNode = open && pos ? (\r\n <>\r\n <div className=\"fixed inset-0 z-9998\" onClick={() => setOpen(false)} />\r\n <div\r\n ref={menuRef}\r\n className={menuClassName ?? \"overflow-auto\"}\r\n style={{\r\n position: \"fixed\",\r\n top: pos.top !== undefined ? pos.top : undefined,\r\n bottom: pos.bottom !== undefined ? pos.bottom : undefined,\r\n left: pos.left,\r\n width: pos.width,\r\n maxWidth: \"calc(100vw - 16px)\",\r\n zIndex: 9999,\r\n ...defaultMenuStyle,\r\n maxHeight: pos.maxHeight ?? defaultMenuStyle.maxHeight,\r\n ...menuStyle,\r\n }}\r\n >\r\n {items.map((item, index) => (\r\n <div key={item.key}>\r\n {index > 0 && item.danger ? <div style={{ borderTop: \"1px solid var(--color-border)\" }} /> : null}\r\n <button\r\n type=\"button\"\r\n className={itemBaseClass}\r\n style={{ color: item.danger ? \"var(--color-warn)\" : \"var(--color-txt-2)\" }}\r\n disabled={item.disabled || item.loading}\r\n onClick={() => {\r\n setOpen(false);\r\n item.onSelect();\r\n }}\r\n >\r\n {item.loading ? (\r\n <Spinner color=\"text-[var(--color-txt-3)]\" />\r\n ) : (\r\n <span className={item.danger ? \"shrink-0 text-warn\" : \"shrink-0 text-primary-300\"}>{item.icon}</span>\r\n )}\r\n <span>{item.label}</span>\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <div ref={btnRef} className={fullWidth ? \"relative w-full\" : \"relative inline-block max-w-full\"}>\r\n <Button\r\n size={buttonSize}\r\n variant={buttonVariant}\r\n icon={icon}\r\n iconRight={<ChevronDown size={11} />}\r\n onClick={() => setOpen(value => !value)}\r\n className={buttonClassName}\r\n fullWidth={fullWidth}\r\n >\r\n {label}\r\n </Button>\r\n {typeof document !== \"undefined\" ? createPortal(menuNode, document.body) : null}\r\n </div>\r\n );\r\n}\r\n","import { useMemo, useState, type ReactNode } from \"react\";\r\nimport { ChevronDown, ChevronUp } from \"../icons/index\";\r\nimport { DataTableRow } from \"./DataTableRow\";\r\nimport type { Column, ColumnAlign, ServerSort, SortDirection, SortState } from \"./types\";\r\n\r\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\nexport type DataTableDensity = \"compact\" | \"comfortable\" | \"spacious\";\r\nexport type DataTableVariant = \"default\" | \"enterprise\" | \"brutal\";\r\n\r\nexport interface DataTableProps<T> {\r\n data: T[];\r\n columns: Column<T>[];\r\n /** Stable unique key per row. */\r\n rowKey: (row: T) => string;\r\n isLoading?: boolean;\r\n /** Rendered (inside a full-width row) when there is no data. */\r\n emptyState?: ReactNode;\r\n onRowClick?: (row: T) => void;\r\n /** Number of skeleton rows shown while loading. Defaults to 8. */\r\n loadingRows?: number;\r\n /**\r\n * When provided, renders an extra right-aligned column at the end of every\r\n * row. The function receives the row and must return a `ReactNode` (e.g.\r\n * action buttons). When omitted, no extra column is added.\r\n */\r\n rowActions?: (row: T) => ReactNode;\r\n /**\r\n * When provided, disables internal client-side sort and delegates sorting to\r\n * the caller. Clicking a sortable column header calls `onSort(column.id)`.\r\n * `aria-sort` reflects `field` and `dir`.\r\n */\r\n serverSort?: ServerSort;\r\n /**\r\n * When provided, renders the node below the `<table>` inside the outer\r\n * border wrapper. No styling is added — callers own all padding/layout.\r\n */\r\n footer?: ReactNode;\r\n /**\r\n * When provided:\r\n * - The `<table>` is hidden on small screens (`hidden md:table`).\r\n * - A `<div className=\"md:hidden\">` is rendered before the table, mapping\r\n * each row to a card via this function (keyed by `rowKey(row)`).\r\n */\r\n mobileCard?: (row: T) => ReactNode;\r\n /** Visual density of header and cells. Defaults to comfortable. */\r\n density?: DataTableDensity;\r\n /** Enterprise adds stronger surface treatment; brutal adds 2px border + hard shadow. */\r\n variant?: DataTableVariant;\r\n /** Makes the table header sticky inside the scroll container. */\r\n stickyHeader?: boolean;\r\n /** Applies token-based zebra striping. Defaults to true. */\r\n striped?: boolean;\r\n className?: string;\r\n}\r\n\r\nfunction compareValues(\r\n a: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\r\n b: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\r\n): number {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return -1;\r\n if (b == null) return 1;\r\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\r\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\r\n if (typeof a === \"boolean\" && typeof b === \"boolean\") return Number(a) - Number(b);\r\n return String(a).localeCompare(String(b));\r\n}\r\n\r\nfunction ariaSort(active: boolean, direction: SortDirection): \"ascending\" | \"descending\" | \"none\" {\r\n if (!active) return \"none\";\r\n return direction === \"asc\" ? \"ascending\" : \"descending\";\r\n}\r\n\r\n/**\r\n * Generic, accessible, client-sortable table.\r\n *\r\n * - Pass already-translated `ReactNode`s for headers and `emptyState`; the\r\n * component never hardcodes user-facing strings (full i18n compatibility).\r\n * - Sorting toggles asc/desc on sortable columns and is purely client-side\r\n * unless `serverSort` is provided.\r\n * - Rows are memoized and the sorted view is memoized via `useMemo`.\r\n * - Optional `rowActions`, `serverSort`, `footer`, and `mobileCard` props are\r\n * all additive — existing usages continue to work with zero changes.\r\n */\r\nexport function DataTable<T>({\r\n data,\r\n columns,\r\n rowKey,\r\n isLoading = false,\r\n emptyState,\r\n onRowClick,\r\n loadingRows = 8,\r\n rowActions,\r\n serverSort,\r\n footer,\r\n mobileCard,\r\n density = \"comfortable\",\r\n variant = \"default\",\r\n stickyHeader = false,\r\n striped = true,\r\n className = \"\",\r\n}: DataTableProps<T>) {\r\n const [sort, setSort] = useState<SortState | null>(null);\r\n\r\n // When serverSort is active, skip client-side sort entirely.\r\n const sortedData = useMemo(() => {\r\n if (serverSort) return data;\r\n if (!sort) return data;\r\n const column = columns.find((c) => c.id === sort.columnId);\r\n if (!column?.sortAccessor) return data;\r\n const accessor = column.sortAccessor;\r\n const factor = sort.direction === \"asc\" ? 1 : -1;\r\n return [...data].sort((a, b) => compareValues(accessor(a), accessor(b)) * factor);\r\n }, [data, columns, sort, serverSort]);\r\n\r\n const toggleSort = (columnId: string) => {\r\n if (serverSort) {\r\n serverSort.onSort(columnId);\r\n return;\r\n }\r\n setSort((prev) => {\r\n if (prev?.columnId !== columnId) return { columnId, direction: \"asc\" };\r\n return { columnId, direction: prev.direction === \"asc\" ? \"desc\" : \"asc\" };\r\n });\r\n };\r\n\r\n const hasActions = rowActions !== undefined;\r\n const colCount = columns.length + (hasActions ? 1 : 0);\r\n const tableClass = mobileCard !== undefined ? \"hidden md:table w-full text-sm table-collapse\" : \"w-full text-sm table-collapse\";\r\n const densityHeaderClass = density === \"compact\" ? \"px-3 py-2\" : density === \"spacious\" ? \"px-4 py-4\" : \"px-3 py-2.5\";\r\n const densityCellClass = density === \"compact\" ? \"px-3 py-2\" : density === \"spacious\" ? \"px-4 py-4\" : \"px-3 py-2.5\";\r\n const wrapperClass = [\r\n \"overflow-x-auto\",\r\n variant === \"brutal\" ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\" : \"border border-[var(--tapiz-border-subtle)]\",\r\n variant === \"enterprise\" ? \"bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-md)]\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {/* Mobile card slot — only present when mobileCard is provided */}\r\n {mobileCard !== undefined && (\r\n <div className=\"md:hidden\">\r\n {isLoading\r\n ? Array.from({ length: loadingRows }).map((_, i) => (\r\n <div key={i} className=\"h-16 animate-pulse bg-ink-300\" />\r\n ))\r\n : sortedData.length === 0\r\n ? emptyState\r\n : sortedData.map((row) => (\r\n <div key={rowKey(row)}>{mobileCard(row)}</div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n <table className={tableClass}>\r\n <thead>\r\n <tr className=\"border-b border-border bg-ink-300\">\r\n {columns.map((column) => {\r\n const baseClass = `${densityHeaderClass} ${stickyHeader ? \"sticky top-0 z-10\" : \"\"} ${ALIGN_CLASS[column.align ?? \"left\"]} font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap`;\r\n\r\n if (!column.sortable || !column.sortAccessor) {\r\n return (\r\n <th key={column.id} scope=\"col\" className={baseClass}>\r\n {column.header}\r\n </th>\r\n );\r\n }\r\n\r\n // aria-sort: serverSort drives the active column; fall back to local sort state.\r\n const active = serverSort\r\n ? serverSort.field === column.id\r\n : sort?.columnId === column.id;\r\n const direction = serverSort\r\n ? serverSort.dir\r\n : (sort?.direction ?? \"asc\");\r\n\r\n return (\r\n <th\r\n key={column.id}\r\n scope=\"col\"\r\n aria-sort={ariaSort(active, direction)}\r\n className={baseClass}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={() => toggleSort(column.id)}\r\n className={`inline-flex items-center gap-1 select-none transition-colors hover:text-txt-1 ${\r\n active ? \"text-txt-1\" : \"\"\r\n }`}\r\n >\r\n {column.header}\r\n {active &&\r\n (direction === \"asc\" ? <ChevronUp size={12} /> : <ChevronDown size={12} />)}\r\n </button>\r\n </th>\r\n );\r\n })}\r\n {hasActions && (\r\n <th scope=\"col\" className=\"px-3 py-2.5 text-right font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap\" />\r\n )}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {isLoading ? (\r\n Array.from({ length: loadingRows }).map((_, rowIndex) => (\r\n <tr key={rowIndex} className=\"border-b border-[var(--tapiz-border-subtle)]\">\r\n {Array.from({ length: colCount }).map((__, colIndex) => (\r\n <td key={colIndex} className={densityCellClass}>\r\n <div className=\"h-4 w-24 animate-pulse bg-[var(--tapiz-bg-surface-muted)]\" />\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n ) : sortedData.length === 0 ? (\r\n <tr>\r\n <td colSpan={colCount} className=\"px-4 py-10 text-center text-txt-4 text-sm font-mono\">\r\n {emptyState}\r\n </td>\r\n </tr>\r\n ) : (\r\n sortedData.map((row) => (\r\n <DataTableRow\r\n key={rowKey(row)}\r\n row={row}\r\n columns={columns}\r\n onRowClick={onRowClick}\r\n rowActions={rowActions}\r\n densityCellClass={densityCellClass}\r\n striped={striped}\r\n />\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n\r\n {footer !== undefined && footer}\r\n </div>\r\n );\r\n}\r\n","import { memo, type ReactNode } from \"react\";\r\nimport type { Column, ColumnAlign } from \"./types\";\r\n\r\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n};\r\n\r\ninterface DataTableRowProps<T> {\r\n row: T;\r\n columns: Column<T>[];\r\n onRowClick?: (row: T) => void;\r\n rowActions?: (row: T) => ReactNode;\r\n densityCellClass?: string;\r\n striped?: boolean;\r\n}\r\n\r\nfunction DataTableRowInner<T>({ row, columns, onRowClick, rowActions, densityCellClass = \"px-3 py-2.5\", striped = true }: DataTableRowProps<T>) {\r\n const clickable = Boolean(onRowClick);\r\n return (\r\n <tr\r\n onClick={clickable ? () => onRowClick?.(row) : undefined}\r\n className={`border-b border-[var(--tapiz-border-subtle)] transition-colors hover:bg-[var(--tapiz-bg-surface-muted)] ${striped ? \"even:bg-[color-mix(in_srgb,var(--tapiz-bg-surface-muted)_35%,var(--tapiz-bg-surface))]\" : \"\"} ${\r\n clickable ? \"cursor-pointer\" : \"\"\r\n }`}\r\n >\r\n {columns.map((column) => (\r\n <td\r\n key={column.id}\r\n className={`${densityCellClass} text-xs text-[var(--tapiz-text-secondary)] ${ALIGN_CLASS[column.align ?? \"left\"]} ${\r\n column.className ?? \"\"\r\n }`}\r\n >\r\n {column.cell(row)}\r\n </td>\r\n ))}\r\n {rowActions !== undefined && (\r\n <td className={`${densityCellClass} text-right`}>{rowActions(row)}</td>\r\n )}\r\n </tr>\r\n );\r\n}\r\n\r\n/**\r\n * Memoized row. Re-renders only when its `row`, `columns`, or `onRowClick`\r\n * reference changes — keeping large lists cheap to re-render.\r\n *\r\n * `memo` strips generics, so we re-assert the generic signature on the export.\r\n */\r\nexport const DataTableRow = memo(DataTableRowInner) as typeof DataTableRowInner;\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface MarketingShellProps extends BaseProps {\r\n children: ReactNode;\r\n\r\n grid?: boolean;\r\n noise?: boolean;\r\n}\r\n\r\nexport function MarketingShell({ children, className = \"\", grid = true, noise = true }: MarketingShellProps) {\r\n return (\r\n <main\r\n className={[\r\n \"min-h-screen overflow-hidden bg-[var(--tapiz-bg-page)] text-[var(--tapiz-text-primary)]\",\r\n grid ? \"tapiz-grid-bg\" : \"\",\r\n noise ? \"tapiz-noise-bg\" : \"\",\r\n className,\r\n ].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </main>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface HeroFrameProps extends BaseProps {\r\n eyebrow?: ReactNode;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n actions?: ReactNode;\r\n visual?: ReactNode;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport function HeroFrame({ eyebrow, title, description, actions, visual, meta, className = \"\" }: HeroFrameProps) {\r\n return (\r\n <section className={`mx-auto grid max-w-7xl gap-10 px-[var(--tapiz-space-page-x)] py-[var(--tapiz-space-section-y)] lg:grid-cols-[1fr_0.9fr] lg:items-center ${className}`}>\r\n <div className=\"animate-fade-in-up\">\r\n {eyebrow ? <div className=\"kicker mb-4\">{eyebrow}</div> : null}\r\n <h1 className=\"max-w-4xl text-5xl font-semibold leading-[0.95] tracking-[-0.07em] text-[var(--tapiz-text-primary)] md:text-7xl\">\r\n {title}\r\n </h1>\r\n {description ? <p className=\"mt-6 max-w-2xl text-base leading-7 text-[var(--tapiz-text-secondary)] md:text-lg\">{description}</p> : null}\r\n {actions ? <div className=\"mt-8 flex flex-wrap gap-3\">{actions}</div> : null}\r\n {meta ? <div className=\"mt-8 border-l-2 border-[var(--tapiz-accent)] pl-4 font-mono text-xs text-[var(--tapiz-text-muted)]\">{meta}</div> : null}\r\n </div>\r\n {visual ? (\r\n <div className=\"animate-scale-in border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-brutal-lg)]\">\r\n {visual}\r\n </div>\r\n ) : null}\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Card } from \"../shared/Card\";\r\n\r\nexport interface FeatureCardProps extends BaseProps {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n eyebrow?: ReactNode;\r\n children?: ReactNode;\r\n\r\n variant?: \"surface\" | \"brutal\" | \"raised\";\r\n}\r\n\r\nexport function FeatureCard({ title, description, icon, eyebrow, children, className = \"\", variant = \"surface\" }: FeatureCardProps) {\r\n return (\r\n <Card variant={variant} hover className={`group ${className}`}>\r\n <div className=\"flex items-start gap-4\">\r\n {icon ? <div className=\"grid h-11 w-11 shrink-0 place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--color-icon-bg)] text-[var(--tapiz-accent)] group-hover:translate-x-[-1px] group-hover:translate-y-[-1px]\">{icon}</div> : null}\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-1\">{eyebrow}</div> : null}\r\n <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n {description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n {children ? <div className=\"mt-5\">{children}</div> : null}\r\n </Card>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FeatureGridProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FeatureGrid({ children, className = \"\" }: FeatureGridProps) {\r\n return <div className={`grid gap-4 md:grid-cols-2 xl:grid-cols-3 ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CTASectionProps extends BaseProps {\r\n eyebrow?: ReactNode;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function CTASection({ eyebrow, title, description, actions, className = \"\" }: CTASectionProps) {\r\n return (\r\n <section className={`mx-auto max-w-7xl px-[var(--tapiz-space-page-x)] py-[var(--tapiz-space-section-y)] ${className}`}>\r\n <div className=\"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-8 shadow-[var(--tapiz-shadow-brutal-lg)] md:p-12\">\r\n {eyebrow ? <div className=\"kicker mb-3\">{eyebrow}</div> : null}\r\n <div className=\"grid gap-6 lg:grid-cols-[1fr_auto] lg:items-end\">\r\n <div>\r\n <h2 className=\"max-w-3xl text-3xl font-semibold tracking-[-0.05em] md:text-5xl\">{title}</h2>\r\n {description ? <p className=\"mt-4 max-w-2xl text-base leading-7 text-[var(--tapiz-text-secondary)]\">{description}</p> : null}\r\n </div>\r\n {actions ? <div className=\"flex flex-wrap gap-3\">{actions}</div> : null}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface MockupFrameProps extends BaseProps {\r\n children: ReactNode;\r\n title?: ReactNode;\r\n toolbar?: ReactNode;\r\n}\r\n\r\nexport function MockupFrame({ children, title, toolbar, className = \"\" }: MockupFrameProps) {\r\n return (\r\n <div className={`overflow-hidden border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal)] ${className}`}>\r\n <div className=\"flex items-center justify-between border-b border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] px-3 py-2\">\r\n <div className=\"flex items-center gap-1.5\">\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-danger)]\" />\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-warning)]\" />\r\n <span className=\"h-2.5 w-2.5 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-success)]\" />\r\n </div>\r\n {title ? <div className=\"font-mono text-[10px] uppercase tracking-widest text-[var(--tapiz-text-muted)]\">{title}</div> : null}\r\n <div>{toolbar}</div>\r\n </div>\r\n <div className=\"p-4\">{children}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ComparisonTableRow {\r\n feature: ReactNode;\r\n included: ReactNode;\r\n alternative?: ReactNode;\r\n}\r\n\r\nexport interface ComparisonTableProps extends BaseProps {\r\n rows: ComparisonTableRow[];\r\n featureHeader?: ReactNode;\r\n includedHeader?: ReactNode;\r\n alternativeHeader?: ReactNode;\r\n}\r\n\r\nexport function ComparisonTable({ rows, featureHeader = \"Feature\", includedHeader = \"Tapiz\", alternativeHeader = \"Other\", className = \"\" }: ComparisonTableProps) {\r\n return (\r\n <div className={`overflow-x-auto border border-[var(--tapiz-border-strong)] ${className}`}>\r\n <table className=\"w-full text-sm\">\r\n <thead>\r\n <tr>\r\n <th className=\"px-4 py-3 text-left\">{featureHeader}</th>\r\n <th className=\"px-4 py-3 text-left\">{includedHeader}</th>\r\n <th className=\"px-4 py-3 text-left\">{alternativeHeader}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {rows.map((row, index) => (\r\n <tr key={index} className=\"border-t border-[var(--tapiz-border-subtle)]\">\r\n <td className=\"px-4 py-3 font-medium text-[var(--tapiz-text-primary)]\">{row.feature}</td>\r\n <td className=\"px-4 py-3 text-[var(--tapiz-text-secondary)]\">{row.included}</td>\r\n <td className=\"px-4 py-3 text-[var(--tapiz-text-muted)]\">{row.alternative}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AppShellProps extends BaseProps {\r\n sidebar?: ReactNode;\r\n topbar?: ReactNode;\r\n children: ReactNode;\r\n aside?: ReactNode;\r\n\r\n contentClassName?: string;\r\n variant?: \"default\" | \"grid\" | \"noise\";\r\n}\r\n\r\nconst variantClasses = {\r\n default: \"bg-[var(--tapiz-bg-page)]\",\r\n grid: \"bg-[var(--tapiz-bg-page)] tapiz-grid-bg\",\r\n noise: \"bg-[var(--tapiz-bg-page)] tapiz-noise-bg\",\r\n};\r\n\r\nexport function AppShell({ sidebar, topbar, children, aside, className = \"\", contentClassName = \"\", variant = \"default\" }: AppShellProps) {\r\n return (\r\n <div className={`min-h-screen text-[var(--tapiz-text-primary)] ${variantClasses[variant]} ${className}`}>\r\n {topbar}\r\n <div className=\"mx-auto flex w-full max-w-[1600px]\">\r\n {sidebar ? <aside className=\"hidden min-h-[calc(100vh-1px)] w-72 shrink-0 border-r border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] lg:block\">{sidebar}</aside> : null}\r\n <main className={`min-w-0 flex-1 px-[var(--tapiz-space-page-x)] py-6 ${contentClassName}`}>{children}</main>\r\n {aside ? <aside className=\"hidden w-80 shrink-0 border-l border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] xl:block\">{aside}</aside> : null}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SplitPaneProps extends BaseProps {\r\n primary: ReactNode;\r\n secondary: ReactNode;\r\n ratio?: \"50/50\" | \"60/40\" | \"70/30\";\r\n reverseOnMobile?: boolean;\r\n}\r\n\r\nconst ratios = {\r\n \"50/50\": \"lg:grid-cols-2\",\r\n \"60/40\": \"lg:grid-cols-[minmax(0,3fr)_minmax(320px,2fr)]\",\r\n \"70/30\": \"lg:grid-cols-[minmax(0,7fr)_minmax(280px,3fr)]\",\r\n};\r\n\r\nexport function SplitPane({ primary, secondary, ratio = \"60/40\", reverseOnMobile = false, className = \"\" }: SplitPaneProps) {\r\n return (\r\n <div className={`grid gap-5 ${ratios[ratio]} ${className}`}>\r\n <div className={reverseOnMobile ? \"order-2 lg:order-1\" : \"\"}>{primary}</div>\r\n <div className={reverseOnMobile ? \"order-1 lg:order-2\" : \"\"}>{secondary}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StackProps extends BaseProps {\r\n children: ReactNode;\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n direction?: \"vertical\" | \"horizontal\";\r\n align?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n justify?: \"start\" | \"center\" | \"between\" | \"end\";\r\n wrap?: boolean;\r\n}\r\n\r\nconst gapClasses = { xs: \"gap-1\", sm: \"gap-2\", md: \"gap-4\", lg: \"gap-6\", xl: \"gap-8\" };\r\nconst alignClasses = { start: \"items-start\", center: \"items-center\", end: \"items-end\", stretch: \"items-stretch\" };\r\nconst justifyClasses = { start: \"justify-start\", center: \"justify-center\", between: \"justify-between\", end: \"justify-end\" };\r\n\r\nexport function Stack({ children, gap = \"md\", direction = \"vertical\", align = \"stretch\", justify = \"start\", wrap = false, className = \"\" }: StackProps) {\r\n return (\r\n <div className={`flex ${direction === \"vertical\" ? \"flex-col\" : \"flex-row\"} ${gapClasses[gap]} ${alignClasses[align]} ${justifyClasses[justify]} ${wrap ? \"flex-wrap\" : \"\"} ${className}`}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ClusterProps extends BaseProps {\r\n children: ReactNode;\r\n gap?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n align?: \"start\" | \"center\" | \"end\";\r\n justify?: \"start\" | \"center\" | \"between\" | \"end\";\r\n}\r\n\r\nconst gapClasses = { xs: \"gap-1\", sm: \"gap-2\", md: \"gap-3\", lg: \"gap-5\" };\r\nconst alignClasses = { start: \"items-start\", center: \"items-center\", end: \"items-end\" };\r\nconst justifyClasses = { start: \"justify-start\", center: \"justify-center\", between: \"justify-between\", end: \"justify-end\" };\r\n\r\nexport function Cluster({ children, gap = \"sm\", align = \"center\", justify = \"start\", className = \"\" }: ClusterProps) {\r\n return <div className={`flex flex-wrap ${gapClasses[gap]} ${alignClasses[align]} ${justifyClasses[justify]} ${className}`}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface BreadcrumbItem {\r\n label: ReactNode;\r\n href?: string;\r\n current?: boolean;\r\n}\r\n\r\nexport interface BreadcrumbsProps extends BaseProps {\r\n items: BreadcrumbItem[];\r\n separator?: ReactNode;\r\n}\r\n\r\nexport function Breadcrumbs({ items, separator = \"/\", className = \"\" }: BreadcrumbsProps) {\r\n return (\r\n <nav aria-label=\"Breadcrumb\" className={`font-mono text-[10px] uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)] ${className}`}>\r\n <ol className=\"flex flex-wrap items-center gap-2\">\r\n {items.map((item, index) => (\r\n <li key={index} className=\"flex items-center gap-2\">\r\n {index > 0 ? <span aria-hidden=\"true\" className=\"text-[var(--tapiz-text-disabled)]\">{separator}</span> : null}\r\n {item.href && !item.current ? (\r\n <a className=\"hover:text-[var(--tapiz-accent)]\" href={item.href}>{item.label}</a>\r\n ) : (\r\n <span aria-current={item.current ? \"page\" : undefined} className={item.current ? \"text-[var(--tapiz-text-primary)]\" : \"\"}>{item.label}</span>\r\n )}\r\n </li>\r\n ))}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SidebarNavItem {\r\n label: ReactNode;\r\n href?: string;\r\n icon?: ReactNode;\r\n badge?: ReactNode;\r\n active?: boolean;\r\n disabled?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface SidebarNavGroup {\r\n label?: ReactNode;\r\n items: SidebarNavItem[];\r\n}\r\n\r\nexport interface SidebarNavProps extends BaseProps {\r\n groups: SidebarNavGroup[];\r\n header?: ReactNode;\r\n footer?: ReactNode;\r\n}\r\n\r\nexport function SidebarNav({ groups, header, footer, className = \"\" }: SidebarNavProps) {\r\n return (\r\n <div className={`flex h-full min-h-screen flex-col bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {header ? <div className=\"border-b border-[var(--tapiz-border-subtle)] p-4\">{header}</div> : null}\r\n <nav className=\"flex-1 space-y-6 p-3\">\r\n {groups.map((group, groupIndex) => (\r\n <div key={groupIndex}>\r\n {group.label ? <div className=\"mb-2 px-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{group.label}</div> : null}\r\n <div className=\"space-y-1\">\r\n {group.items.map((item, itemIndex) => <SidebarNavLink key={itemIndex} item={item} />)}\r\n </div>\r\n </div>\r\n ))}\r\n </nav>\r\n {footer ? <div className=\"border-t border-[var(--tapiz-border-subtle)] p-4\">{footer}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarNavLink({ item }: { item: SidebarNavItem }) {\r\n const className = [\r\n \"flex w-full items-center gap-3 border px-3 py-2 text-left text-sm font-medium\",\r\n item.active\r\n ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)] shadow-[inset_3px_0_0_var(--tapiz-accent)]\"\r\n : \"border-transparent text-[var(--tapiz-text-secondary)] hover:border-[var(--tapiz-border-subtle)] hover:bg-[var(--tapiz-bg-surface-muted)] hover:text-[var(--tapiz-text-primary)]\",\r\n item.disabled ? \"pointer-events-none opacity-40\" : \"\",\r\n ].filter(Boolean).join(\" \");\r\n\r\n const content = (\r\n <>\r\n {item.icon ? <span className=\"grid size-5 place-items-center text-[var(--tapiz-text-muted)]\">{item.icon}</span> : null}\r\n <span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\r\n {item.badge ? <span>{item.badge}</span> : null}\r\n </>\r\n );\r\n\r\n return item.href ? <a className={className} href={item.href}>{content}</a> : <button type=\"button\" className={className} onClick={item.onClick} disabled={item.disabled}>{content}</button>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TopNavLink {\r\n label: ReactNode;\r\n href?: string;\r\n active?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport interface TopNavProps extends BaseProps {\r\n brand?: ReactNode;\r\n links?: TopNavLink[];\r\n actions?: ReactNode;\r\n\r\n sticky?: boolean;\r\n}\r\n\r\nexport function TopNav({ brand, links = [], actions, className = \"\", sticky = true }: TopNavProps) {\r\n return (\r\n <header className={`${sticky ? \"sticky top-0 z-40\" : \"\"} border-b border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-surface)_88%,transparent)] backdrop-blur-xl ${className}`}>\r\n <div className=\"mx-auto flex h-16 max-w-[1600px] items-center gap-6 px-[var(--tapiz-space-page-x)]\">\r\n {brand ? <div className=\"shrink-0\">{brand}</div> : null}\r\n <nav className=\"hidden items-center gap-1 md:flex\">\r\n {links.map((link, index) => {\r\n const cls = `border px-3 py-1.5 text-sm font-medium ${link.active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-text-primary)]\" : \"border-transparent text-[var(--tapiz-text-secondary)] hover:border-[var(--tapiz-border-subtle)] hover:text-[var(--tapiz-text-primary)]\"}`;\r\n return link.href ? <a key={index} href={link.href} className={cls}>{link.label}</a> : <button key={index} type=\"button\" onClick={link.onClick} className={cls}>{link.label}</button>;\r\n })}\r\n </nav>\r\n {actions ? <div className=\"ml-auto flex items-center gap-2\">{actions}</div> : null}\r\n </div>\r\n </header>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TabItem {\r\n id: string;\r\n label: ReactNode;\r\n content: ReactNode;\r\n badge?: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface TabsProps extends BaseProps {\r\n items: TabItem[];\r\n activeId: string;\r\n onChange?: (id: string) => void;\r\n\r\n variant?: \"line\" | \"boxed\" | \"brutal\";\r\n}\r\n\r\nconst variants = {\r\n line: \"border-b border-[var(--tapiz-border-subtle)]\",\r\n boxed: \"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-1\",\r\n brutal: \"border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-1 shadow-[var(--tapiz-shadow-brutal)]\",\r\n};\r\n\r\nexport function Tabs({ items, activeId, onChange, className = \"\", variant = \"line\" }: TabsProps) {\r\n const active = items.find((item) => item.id === activeId) ?? items[0];\r\n return (\r\n <div className={className}>\r\n <div role=\"tablist\" className={`flex flex-wrap gap-1 ${variants[variant]}`}>\r\n {items.map((item) => {\r\n const selected = item.id === active?.id;\r\n return (\r\n <button\r\n key={item.id}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n disabled={item.disabled}\r\n onClick={() => onChange?.(item.id)}\r\n className={`inline-flex items-center gap-2 px-3 py-2 text-sm font-semibold disabled:cursor-not-allowed disabled:opacity-40 ${selected ? \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] shadow-[inset_0_-2px_0_var(--tapiz-accent)]\" : \"text-[var(--tapiz-text-muted)] hover:bg-[var(--tapiz-bg-surface)] hover:text-[var(--tapiz-text-primary)]\"}`}\r\n >\r\n {item.label}\r\n {item.badge}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div role=\"tabpanel\" className=\"pt-4\">{active?.content}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AccordionItem {\r\n id: string;\r\n title: ReactNode;\r\n content: ReactNode;\r\n meta?: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface AccordionProps extends BaseProps {\r\n items: AccordionItem[];\r\n openIds?: string[];\r\n onToggle?: (id: string) => void;\r\n\r\n allowMultiple?: boolean;\r\n}\r\n\r\nexport function Accordion({ items, openIds = [], onToggle, className = \"\" }: AccordionProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item) => {\r\n const open = openIds.includes(item.id);\r\n return (\r\n <section key={item.id}>\r\n <button\r\n type=\"button\"\r\n disabled={item.disabled}\r\n aria-expanded={open}\r\n onClick={() => onToggle?.(item.id)}\r\n className=\"flex w-full items-center justify-between gap-4 px-4 py-3 text-left disabled:opacity-40\"\r\n >\r\n <span className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</span>\r\n <span className=\"flex items-center gap-3 text-[var(--tapiz-text-muted)]\">\r\n {item.meta}\r\n <span aria-hidden=\"true\" className=\"font-mono text-lg\">{open ? \"−\" : \"+\"}</span>\r\n </span>\r\n </button>\r\n {open ? <div className=\"border-t border-[var(--tapiz-border-subtle)] px-4 py-4 text-sm text-[var(--tapiz-text-secondary)]\">{item.content}</div> : null}\r\n </section>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StepItem {\r\n id: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n status?: \"complete\" | \"current\" | \"upcoming\" | \"error\";\r\n}\r\n\r\nexport interface StepperProps extends BaseProps {\r\n steps: StepItem[];\r\n orientation?: \"horizontal\" | \"vertical\";\r\n}\r\n\r\nconst tone = {\r\n complete: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n current: \"border-[var(--tapiz-accent)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-accent)]\",\r\n upcoming: \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n error: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Stepper({ steps, orientation = \"horizontal\", className = \"\" }: StepperProps) {\r\n return (\r\n <ol className={`grid gap-3 ${orientation === \"horizontal\" ? \"md:grid-cols-[repeat(auto-fit,minmax(0,1fr))]\" : \"\"} ${className}`}>\r\n {steps.map((step, index) => {\r\n const status = step.status ?? \"upcoming\";\r\n return (\r\n <li key={step.id} className=\"flex gap-3\">\r\n <span className={`grid size-8 shrink-0 place-items-center border font-mono text-xs font-bold ${tone[status]}`}>{status === \"complete\" ? \"✓\" : index + 1}</span>\r\n <span className=\"min-w-0\">\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{step.label}</span>\r\n {step.description ? <span className=\"mt-1 block text-xs text-[var(--tapiz-text-muted)]\">{step.description}</span> : null}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DrawerProps extends BaseProps {\r\n open: boolean;\r\n onClose?: () => void;\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n children: ReactNode;\r\n footer?: ReactNode;\r\n side?: \"left\" | \"right\";\r\n}\r\n\r\nexport function Drawer({ open, onClose, title, description, children, footer, side = \"right\", className = \"\" }: DrawerProps) {\r\n if (!open) return null;\r\n return (\r\n <div className=\"fixed inset-0 z-50\">\r\n <button type=\"button\" aria-label=\"Close drawer\" className=\"absolute inset-0 bg-(--tapiz-bg-overlay)\" onClick={onClose} />\r\n <section className={`absolute top-0 h-full w-full max-w-md border-(--tapiz-border-strong) bg-(--tapiz-bg-surface) shadow-(--tapiz-shadow-lg) ${side === \"right\" ? \"right-0 border-l\" : \"left-0 border-r\"} ${className}`}>\r\n <header className=\"flex items-start justify-between gap-4 border-b border-(--tapiz-border-subtle) p-5\">\r\n <div>\r\n {title ? <h2 className=\"text-lg font-semibold text-(--tapiz-text-primary)\">{title}</h2> : null}\r\n {description ? <p className=\"mt-1 text-sm text-(--tapiz-text-muted)\">{description}</p> : null}\r\n </div>\r\n <button type=\"button\" onClick={onClose} className=\"border border-(--tapiz-border-subtle) px-2 py-1 font-mono text-sm text-(--tapiz-text-muted) hover:text-(--tapiz-text-primary)\">×</button>\r\n </header>\r\n <div className=\"max-h-[calc(100vh-9rem)] overflow-auto p-5\">{children}</div>\r\n {footer ? <footer className=\"border-t border-(--tapiz-border-subtle) p-4\">{footer}</footer> : null}\r\n </section>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PopoverProps extends BaseProps {\r\n trigger: ReactNode;\r\n children: ReactNode;\r\n open?: boolean;\r\n align?: \"start\" | \"end\";\r\n}\r\n\r\nexport function Popover({ trigger, children, open = false, align = \"start\", className = \"\" }: PopoverProps) {\r\n return (\r\n <div className={`relative inline-block ${className}`}>\r\n {trigger}\r\n {open ? (\r\n <div className={`absolute top-full z-40 mt-2 min-w-64 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-2 shadow-[var(--tapiz-shadow-md)] ${align === \"end\" ? \"right-0\" : \"left-0\"}`}>\r\n {children}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport { SearchInput } from \"../shared/SearchInput\";\r\n\r\nexport interface CommandItem {\r\n id: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n icon?: ReactNode;\r\n shortcut?: ReactNode;\r\n disabled?: boolean;\r\n onSelect?: () => void;\r\n}\r\n\r\nexport interface CommandGroup {\r\n label?: ReactNode;\r\n items: CommandItem[];\r\n}\r\n\r\nexport interface CommandMenuProps {\r\n open: boolean;\r\n onClose?: () => void;\r\n query?: string;\r\n onQueryChange?: (value: string) => void;\r\n groups: CommandGroup[];\r\n placeholder?: string;\r\n empty?: ReactNode;\r\n}\r\n\r\nexport function CommandMenu({ open, onClose, query = \"\", onQueryChange, groups, placeholder = \"Search commands…\", empty = \"No commands found.\" }: CommandMenuProps) {\r\n if (!open) return null;\r\n const hasItems = groups.some((group) => group.items.length > 0);\r\n return (\r\n <div className=\"fixed inset-0 z-50 grid place-items-start bg-[var(--tapiz-bg-overlay)] px-4 pt-[12vh]\" onClick={onClose}>\r\n <div className=\"mx-auto w-full max-w-2xl border-2 border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] shadow-[var(--tapiz-shadow-brutal-lg)]\" onClick={(e) => e.stopPropagation()}>\r\n <div className=\"border-b border-[var(--tapiz-border-subtle)] p-3\">\r\n <SearchInput value={query} onChange={(value) => onQueryChange?.(value)} placeholder={placeholder} autoFocus />\r\n </div>\r\n <div className=\"max-h-[50vh] overflow-auto p-2\">\r\n {!hasItems ? <div className=\"p-6 text-center text-sm text-[var(--tapiz-text-muted)]\">{empty}</div> : null}\r\n {groups.map((group, groupIndex) => (\r\n <div key={groupIndex} className=\"py-2\">\r\n {group.label ? <div className=\"px-2 pb-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{group.label}</div> : null}\r\n {group.items.map((item) => (\r\n <button key={item.id} type=\"button\" disabled={item.disabled} onClick={item.onSelect} className=\"flex w-full items-center gap-3 border border-transparent px-3 py-2 text-left hover:border-[var(--tapiz-border-subtle)] hover:bg-[var(--tapiz-bg-surface-muted)] disabled:opacity-40\">\r\n {item.icon ? <span className=\"grid size-8 place-items-center border border-[var(--tapiz-border-subtle)] text-[var(--tapiz-text-muted)]\">{item.icon}</span> : null}\r\n <span className=\"min-w-0 flex-1\">\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.label}</span>\r\n {item.description ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{item.description}</span> : null}\r\n </span>\r\n {item.shortcut ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.shortcut}</span> : null}\r\n </button>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { FieldHint } from \"./FieldHint\";\r\nimport { FieldLabel } from \"./FieldLabel\";\r\nimport { FormError } from \"../feedback/FormError\";\r\n\r\nexport interface FormFieldProps extends BaseProps {\r\n label?: ReactNode;\r\n hint?: ReactNode;\r\n error?: ReactNode;\r\n required?: boolean;\r\n htmlFor?: string;\r\n children: ReactNode;\r\n}\r\n\r\nexport function FormField({ label, hint, error, required, htmlFor, children, className = \"\" }: FormFieldProps) {\r\n return (\r\n <div className={`space-y-1.5 ${className}`}>\r\n {label ? <FieldLabel htmlFor={htmlFor}>{label}{required ? \" *\" : \"\"}</FieldLabel> : null}\r\n {children}\r\n {error ? <FormError message={String(error)} /> : hint ? <FieldHint>{hint}</FieldHint> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SwitchProps extends BaseProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n label?: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport function Switch({ checked = false, onChange, disabled, label, description, className = \"\" }: SwitchProps) {\r\n return (\r\n <label className={`flex cursor-pointer items-start gap-3 ${disabled ? \"cursor-not-allowed opacity-50\" : \"\"} ${className}`}>\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={`relative mt-0.5 h-6 w-11 border border-[var(--tapiz-border-strong)] ${checked ? \"bg-[var(--tapiz-accent)]\" : \"bg-[var(--tapiz-bg-surface-muted)]\"}`}\r\n >\r\n <span className={`absolute top-0.5 size-4 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] transition-transform ${checked ? \"left-5\" : \"left-0.5\"}`} />\r\n </button>\r\n {(label || description) ? (\r\n <span>\r\n {label ? <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{label}</span> : null}\r\n {description ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{description}</span> : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ToggleOption {\r\n value: string;\r\n label: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface ToggleGroupProps extends BaseProps {\r\n options: ToggleOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n\r\n fullWidth?: boolean;\r\n}\r\n\r\nexport function ToggleGroup({ options, value, onChange, className = \"\", fullWidth = false }: ToggleGroupProps) {\r\n return (\r\n <div className={`inline-flex border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] p-1 ${fullWidth ? \"w-full\" : \"\"} ${className}`}>\r\n {options.map((option) => {\r\n const selected = option.value === value;\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n disabled={option.disabled}\r\n onClick={() => onChange?.(option.value)}\r\n className={`px-3 py-1.5 text-sm font-semibold disabled:opacity-40 ${fullWidth ? \"flex-1\" : \"\"} ${selected ? \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] shadow-[inset_0_-2px_0_var(--tapiz-accent)]\" : \"text-[var(--tapiz-text-muted)] hover:text-[var(--tapiz-text-primary)]\"}`}\r\n >\r\n {option.label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface InputGroupProps extends BaseProps {\r\n prefix?: ReactNode;\r\n suffix?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function InputGroup({ prefix, suffix, children, className = \"\" }: InputGroupProps) {\r\n return (\r\n <div className={`flex items-stretch border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] focus-within:border-[var(--tapiz-border-focus)] focus-within:shadow-[inset_3px_0_0_var(--tapiz-signal)] ${className}`}>\r\n {prefix ? <div className=\"flex items-center border-r border-[var(--tapiz-border-subtle)] px-3 text-sm text-[var(--tapiz-text-muted)]\">{prefix}</div> : null}\r\n <div className=\"min-w-0 flex-1 [&_input]:border-0 [&_input]:shadow-none [&_input]:focus:shadow-none\">{children}</div>\r\n {suffix ? <div className=\"flex items-center border-l border-[var(--tapiz-border-subtle)] px-3 text-sm text-[var(--tapiz-text-muted)]\">{suffix}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\r\n\r\nexport interface AlertProps extends BaseProps {\r\n tone?: AlertTone;\r\n title?: ReactNode;\r\n children?: ReactNode;\r\n icon?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<AlertTone, string> = {\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)] text-[var(--tapiz-info)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)] text-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n neutral: \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-secondary)]\",\r\n};\r\n\r\nexport function Alert({ tone = \"info\", title, children, icon, actions, className = \"\" }: AlertProps) {\r\n return (\r\n <div className={`flex gap-3 border p-4 ${toneClasses[tone]} ${className}`}>\r\n {icon ? <div className=\"mt-0.5 shrink-0\">{icon}</div> : null}\r\n <div className=\"min-w-0 flex-1\">\r\n {title ? <div className=\"font-semibold text-[var(--tapiz-text-primary)]\">{title}</div> : null}\r\n {children ? <div className=\"mt-1 text-sm text-[var(--tapiz-text-secondary)]\">{children}</div> : null}\r\n </div>\r\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface ProgressProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: string;\r\n showValue?: boolean;\r\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nconst tones = {\r\n accent: \"bg-[var(--tapiz-accent)]\",\r\n success: \"bg-[var(--tapiz-success)]\",\r\n warning: \"bg-[var(--tapiz-warning)]\",\r\n danger: \"bg-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Progress({ value, max = 100, label, showValue = false, tone = \"accent\", className = \"\" }: ProgressProps) {\r\n const percentage = Math.max(0, Math.min(100, (value / max) * 100));\r\n return (\r\n <div className={className}>\r\n {(label || showValue) ? (\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-xs text-[var(--tapiz-text-muted)]\">\r\n {label ? <span>{label}</span> : <span />}\r\n {showValue ? <span className=\"font-mono\">{Math.round(percentage)}%</span> : null}\r\n </div>\r\n ) : null}\r\n <div className=\"h-2 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n <div className={`h-full ${tones[tone]}`} style={{ width: `${percentage}%` }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface AvatarProps extends BaseProps {\r\n src?: string;\r\n name?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst sizes = { xs: \"size-6 text-[10px]\", sm: \"size-8 text-xs\", md: \"size-10 text-sm\", lg: \"size-14 text-base\" };\r\n\r\nexport function Avatar({ src, name = \"?\", size = \"md\", className = \"\" }: AvatarProps) {\r\n const initials = name.split(\" \").filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase()).join(\"\") || \"?\";\r\n return src ? (\r\n <img src={src} alt={name} className={`border border-[var(--tapiz-border-strong)] object-cover ${sizes[size]} ${className}`} />\r\n ) : (\r\n <span className={`inline-grid place-items-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] font-mono font-bold text-[var(--tapiz-accent)] ${sizes[size]} ${className}`}>{initials}</span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KbdProps extends BaseProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function Kbd({ children, className = \"\" }: KbdProps) {\r\n return <kbd className={`inline-flex min-w-5 items-center justify-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] px-1.5 py-0.5 font-mono text-[10px] font-bold text-[var(--tapiz-text-secondary)] shadow-[1px_1px_0_var(--tapiz-border-strong)] ${className}`}>{children}</kbd>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface TimelineItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n time?: ReactNode;\r\n icon?: ReactNode;\r\n tone?: \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nexport interface TimelineProps extends BaseProps {\r\n items: TimelineItem[];\r\n}\r\n\r\nconst tones = {\r\n neutral: \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)] text-[var(--tapiz-info)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)] text-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)] text-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)] text-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function Timeline({ items, className = \"\" }: TimelineProps) {\r\n return (\r\n <ol className={`relative space-y-4 before:absolute before:left-4 before:top-2 before:h-[calc(100%-1rem)] before:w-px before:bg-[var(--tapiz-border-subtle)] ${className}`}>\r\n {items.map((item) => (\r\n <li key={item.id} className=\"relative flex gap-3\">\r\n <span className={`z-10 grid size-8 shrink-0 place-items-center border text-xs ${tones[item.tone ?? \"neutral\"]}`}>{item.icon ?? \"•\"}</span>\r\n <span className=\"min-w-0 flex-1 pb-2\">\r\n <span className=\"flex flex-wrap items-baseline justify-between gap-2\">\r\n <span className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</span>\r\n {item.time ? <span className=\"font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}\r\n </span>\r\n {item.description ? <span className=\"mt-1 block text-sm text-[var(--tapiz-text-secondary)]\">{item.description}</span> : null}\r\n </span>\r\n </li>\r\n ))}\r\n </ol>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KeyValueItem {\r\n keyLabel: ReactNode;\r\n value: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface KeyValueListProps extends BaseProps {\r\n items: KeyValueItem[];\r\n\r\n density?: \"compact\" | \"normal\";\r\n}\r\n\r\nexport function KeyValueList({ items, className = \"\", density = \"normal\" }: KeyValueListProps) {\r\n return (\r\n <dl className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item, index) => (\r\n <div key={index} className={`grid gap-2 ${density === \"compact\" ? \"p-3 md:grid-cols-[160px_1fr]\" : \"p-4 md:grid-cols-[220px_1fr]\"}`}>\r\n <dt className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{item.keyLabel}</dt>\r\n <dd>\r\n <div className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.value}</div>\r\n {item.description ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.description}</div> : null}\r\n </dd>\r\n </div>\r\n ))}\r\n </dl>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CodeBlockProps extends BaseProps {\r\n children: ReactNode;\r\n language?: string;\r\n title?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function CodeBlock({ children, language, title, actions, className = \"\" }: CodeBlockProps) {\r\n return (\r\n <figure className={`overflow-hidden border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {(title || language || actions) ? (\r\n <figcaption className=\"flex items-center justify-between gap-3 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] px-3 py-2\">\r\n <span className=\"font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{title ?? language}</span>\r\n {actions}\r\n </figcaption>\r\n ) : null}\r\n <pre className=\"overflow-auto p-4 text-sm leading-6 text-[var(--tapiz-text-secondary)]\"><code>{children}</code></pre>\r\n </figure>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface LogoCloudItem {\r\n name: string;\r\n logo?: ReactNode;\r\n}\r\n\r\nexport interface LogoCloudProps extends BaseProps {\r\n title?: ReactNode;\r\n items: LogoCloudItem[];\r\n}\r\n\r\nexport function LogoCloud({ title, items, className = \"\" }: LogoCloudProps) {\r\n return (\r\n <section className={`border-y border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] py-8 ${className}`}>\r\n <div className=\"mx-auto max-w-7xl px-[var(--tapiz-space-page-x)]\">\r\n {title ? <p className=\"mb-6 text-center font-mono text-[10px] font-bold uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{title}</p> : null}\r\n <div className=\"grid grid-cols-2 gap-3 md:grid-cols-4 lg:grid-cols-6\">\r\n {items.map((item) => (\r\n <div key={item.name} className=\"grid min-h-20 place-items-center border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] px-4 text-center text-sm font-semibold text-[var(--tapiz-text-secondary)]\">\r\n {item.logo ?? item.name}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface TestimonialCardProps extends BaseProps {\r\n quote: ReactNode;\r\n author: string;\r\n role?: ReactNode;\r\n avatarSrc?: string;\r\n\r\n variant?: \"surface\" | \"brutal\";\r\n}\r\n\r\nexport function TestimonialCard({ quote, author, role, avatarSrc, className = \"\", variant = \"surface\" }: TestimonialCardProps) {\r\n return (\r\n <figure className={`border bg-[var(--tapiz-bg-surface)] p-5 ${variant === \"brutal\" ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\" : \"border-[var(--tapiz-border-subtle)] shadow-[var(--tapiz-shadow-sm)]\"} ${className}`}>\r\n <blockquote className=\"text-base leading-7 text-[var(--tapiz-text-secondary)]\">“{quote}”</blockquote>\r\n <figcaption className=\"mt-5 flex items-center gap-3\">\r\n <Avatar name={author} src={avatarSrc} size=\"sm\" />\r\n <span>\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{author}</span>\r\n {role ? <span className=\"block text-xs text-[var(--tapiz-text-muted)]\">{role}</span> : null}\r\n </span>\r\n </figcaption>\r\n </figure>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"../forms/Button\";\r\n\r\nexport interface PricingCardProps extends BaseProps {\r\n name: ReactNode;\r\n price: ReactNode;\r\n description?: ReactNode;\r\n features?: ReactNode[];\r\n cta?: ReactNode;\r\n highlighted?: boolean;\r\n}\r\n\r\nexport function PricingCard({ name, price, description, features = [], cta, highlighted = false, className = \"\" }: PricingCardProps) {\r\n return (\r\n <section className={`flex h-full flex-col border bg-[var(--tapiz-bg-surface)] p-6 ${highlighted ? \"border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal-lg)]\" : \"border-[var(--tapiz-border-subtle)] shadow-[var(--tapiz-shadow-sm)]\"} ${className}`}>\r\n <div className=\"flex-1\">\r\n <h3 className=\"text-lg font-semibold text-[var(--tapiz-text-primary)]\">{name}</h3>\r\n {description ? <p className=\"mt-2 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n <div className=\"mt-6 text-4xl font-semibold tracking-tight text-[var(--tapiz-text-primary)]\">{price}</div>\r\n <ul className=\"mt-6 space-y-3 text-sm text-[var(--tapiz-text-secondary)]\">\r\n {features.map((feature, index) => <li key={index} className=\"flex gap-2\"><span className=\"text-[var(--tapiz-success)]\">✓</span><span>{feature}</span></li>)}\r\n </ul>\r\n </div>\r\n <div className=\"mt-6\">{cta ?? <Button variant={highlighted ? \"primary\" : \"secondary\"} fullWidth>Get started</Button>}</div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface StatsBandItem {\r\n value: ReactNode;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface StatsBandProps extends BaseProps {\r\n items: StatsBandItem[];\r\n}\r\n\r\nexport function StatsBand({ items, className = \"\" }: StatsBandProps) {\r\n return (\r\n <section className={`border-y border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-inverse)] text-[var(--tapiz-text-inverse)] ${className}`}>\r\n <div className=\"mx-auto grid max-w-7xl divide-y divide-[color-mix(in_srgb,var(--tapiz-text-inverse)_24%,transparent)] px-[var(--tapiz-space-page-x)] md:grid-cols-3 md:divide-x md:divide-y-0\">\r\n {items.map((item, index) => (\r\n <div key={index} className=\"p-6 md:p-8\">\r\n <div className=\"text-3xl font-semibold tracking-tight\">{item.value}</div>\r\n <div className=\"mt-2 font-mono text-[10px] font-bold uppercase tracking-[0.18em] opacity-70\">{item.label}</div>\r\n {item.description ? <div className=\"mt-3 text-sm opacity-70\">{item.description}</div> : null}\r\n </div>\r\n ))}\r\n </div>\r\n </section>\r\n );\r\n}\r\n","export type TapizFrameworkPreset = \"enterprise\" | \"brutal\" | \"dashboard\" | \"marketing\" | \"compact\";\r\n\r\nexport interface TapizPresetDefinition {\r\n shell: string;\r\n card: string;\r\n button: \"primary\" | \"secondary\" | \"brutal\";\r\n density: \"compact\" | \"comfortable\" | \"spacious\";\r\n}\r\n\r\nexport const tapizFrameworkPresets: Record<TapizFrameworkPreset, TapizPresetDefinition> = {\r\n enterprise: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"tapiz-enterprise-card\",\r\n button: \"primary\",\r\n density: \"comfortable\",\r\n },\r\n brutal: {\r\n shell: \"tapiz-enterprise-shell tapiz-grid-bg\",\r\n card: \"tapiz-brutal-card\",\r\n button: \"brutal\",\r\n density: \"comfortable\",\r\n },\r\n dashboard: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"stat-card\",\r\n button: \"secondary\",\r\n density: \"compact\",\r\n },\r\n marketing: {\r\n shell: \"tapiz-enterprise-shell tapiz-noise-bg\",\r\n card: \"tapiz-enterprise-card\",\r\n button: \"primary\",\r\n density: \"spacious\",\r\n },\r\n compact: {\r\n shell: \"tapiz-enterprise-shell\",\r\n card: \"card\",\r\n button: \"secondary\",\r\n density: \"compact\",\r\n },\r\n};\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type ContainerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport interface ContainerProps extends BaseProps {\r\n children: ReactNode;\r\n size?: ContainerSize;\r\n padded?: boolean;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst sizeClasses: Record<ContainerSize, string> = {\r\n sm: \"max-w-3xl\",\r\n md: \"max-w-5xl\",\r\n lg: \"max-w-7xl\",\r\n xl: \"max-w-[90rem]\",\r\n full: \"max-w-none\",\r\n};\r\n\r\nexport function Container({ children, size = \"lg\", padded = true, className = \"\", style }: ContainerProps) {\r\n return (\r\n <div\r\n className={[\"mx-auto w-full\", sizeClasses[size], padded ? \"px-[var(--tapiz-space-page-x)]\" : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport type SurfaceVariant = \"canvas\" | \"surface\" | \"raised\" | \"muted\" | \"brutal\" | \"inverse\";\r\nexport type SurfacePadding = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface SurfaceProps extends BaseProps {\r\n children: ReactNode;\r\n variant?: SurfaceVariant;\r\n padding?: SurfacePadding;\r\n bordered?: boolean;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst variantClasses: Record<SurfaceVariant, string> = {\r\n canvas: \"bg-[var(--tapiz-bg-page)] text-[var(--tapiz-text-primary)]\",\r\n surface: \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)]\",\r\n raised: \"bg-[var(--tapiz-bg-surface-raised)] text-[var(--tapiz-text-primary)] shadow-[var(--tapiz-shadow-md)]\",\r\n muted: \"bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-text-primary)]\",\r\n brutal: \"bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-primary)] border-2 border-[var(--tapiz-border-strong)] shadow-[var(--tapiz-shadow-brutal)]\",\r\n inverse: \"bg-[var(--tapiz-bg-surface-inverse)] text-[var(--tapiz-text-inverse)]\",\r\n};\r\n\r\nconst paddingClasses: Record<SurfacePadding, string> = {\r\n none: \"p-0\",\r\n sm: \"p-3\",\r\n md: \"p-5\",\r\n lg: \"p-6\",\r\n xl: \"p-8\",\r\n};\r\n\r\nexport function Surface({ children, variant = \"surface\", padding = \"md\", bordered = true, className = \"\", style }: SurfaceProps) {\r\n return (\r\n <section\r\n className={[variantClasses[variant], paddingClasses[padding], bordered && variant !== \"brutal\" ? \"border border-[var(--tapiz-border-subtle)]\" : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nexport interface DividerProps extends BaseProps {\r\n orientation?: \"horizontal\" | \"vertical\";\r\n label?: string;\r\n}\r\n\r\nexport function Divider({ orientation = \"horizontal\", label, className = \"\" }: DividerProps) {\r\n if (orientation === \"vertical\") {\r\n return <div className={`mx-2 min-h-6 w-px bg-[var(--tapiz-border-subtle)] ${className}`} aria-hidden=\"true\" />;\r\n }\r\n\r\n if (label) {\r\n return (\r\n <div className={`flex items-center gap-3 ${className}`}>\r\n <div className=\"h-px flex-1 bg-[var(--tapiz-border-subtle)]\" />\r\n <span className=\"font-mono text-[10px] uppercase tracking-[0.18em] text-[var(--tapiz-text-muted)]\">{label}</span>\r\n <div className=\"h-px flex-1 bg-[var(--tapiz-border-subtle)]\" />\r\n </div>\r\n );\r\n }\r\n\r\n return <hr className={`border-[var(--tapiz-border-subtle)] ${className}`} />;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface ResponsiveGridProps extends BaseProps {\r\n children: ReactNode;\r\n min?: string;\r\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst gapClasses = {\r\n sm: \"gap-3\",\r\n md: \"gap-4\",\r\n lg: \"gap-6\",\r\n xl: \"gap-8\",\r\n};\r\n\r\nexport function ResponsiveGrid({ children, min = \"18rem\", gap = \"md\", className = \"\", style }: ResponsiveGridProps) {\r\n return (\r\n <div\r\n className={`grid ${gapClasses[gap]} ${className}`}\r\n style={{ gridTemplateColumns: `repeat(auto-fit, minmax(${min}, 1fr))`, ...style }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties } from \"react\";\r\n\r\nexport interface SparklineProps extends BaseProps {\r\n values: number[];\r\n width?: number;\r\n height?: number;\r\n label?: string;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function Sparkline({ values, width = 160, height = 48, label = \"Trend\", className = \"\", style }: SparklineProps) {\r\n const safeValues = values.length ? values : [0];\r\n const min = Math.min(...safeValues);\r\n const max = Math.max(...safeValues);\r\n const range = max - min || 1;\r\n const step = safeValues.length > 1 ? width / (safeValues.length - 1) : width;\r\n const points = safeValues\r\n .map((value, index) => {\r\n const x = index * step;\r\n const y = height - ((value - min) / range) * (height - 6) - 3;\r\n return `${x},${y}`;\r\n })\r\n .join(\" \");\r\n\r\n return (\r\n <svg className={className} style={style} width={width} height={height} viewBox={`0 0 ${width} ${height}`} role=\"img\" aria-label={label}>\r\n <polyline points={points} fill=\"none\" stroke=\"var(--tapiz-accent)\" strokeWidth=\"2\" strokeLinecap=\"square\" strokeLinejoin=\"miter\" />\r\n <line x1=\"0\" x2={width} y1={height - 1} y2={height - 1} stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"1\" />\r\n </svg>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface BarListItem {\r\n label: ReactNode;\r\n value: number;\r\n detail?: ReactNode;\r\n}\r\n\r\nexport interface BarListProps extends BaseProps {\r\n items: BarListItem[];\r\n max?: number;\r\n valueFormatter?: (value: number) => ReactNode;\r\n}\r\n\r\nexport function BarList({ items, max, valueFormatter = (value) => value, className = \"\" }: BarListProps) {\r\n const computedMax = max ?? Math.max(1, ...items.map((item) => item.value));\r\n\r\n return (\r\n <div className={`space-y-3 ${className}`}>\r\n {items.map((item, index) => {\r\n const percent = Math.max(0, Math.min(100, (item.value / computedMax) * 100));\r\n return (\r\n <div key={index}>\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-sm\">\r\n <span className=\"font-medium text-[var(--tapiz-text-secondary)]\">{item.label}</span>\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{valueFormatter(item.value)}</span>\r\n </div>\r\n <div className=\"h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n <div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${percent}%` }} />\r\n </div>\r\n {item.detail ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.detail}</div> : null}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DonutMetricProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: ReactNode;\r\n caption?: ReactNode;\r\n size?: number;\r\n}\r\n\r\nexport function DonutMetric({ value, max = 100, label, caption, size = 112, className = \"\" }: DonutMetricProps) {\r\n const radius = 42;\r\n const circumference = 2 * Math.PI * radius;\r\n const ratio = Math.max(0, Math.min(1, value / max));\r\n const offset = circumference * (1 - ratio);\r\n\r\n return (\r\n <div className={`inline-flex items-center gap-4 ${className}`}>\r\n <svg width={size} height={size} viewBox=\"0 0 112 112\" role=\"img\" aria-label={`${Math.round(ratio * 100)}%`}>\r\n <circle cx=\"56\" cy=\"56\" r={radius} fill=\"none\" stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"10\" />\r\n <circle\r\n cx=\"56\"\r\n cy=\"56\"\r\n r={radius}\r\n fill=\"none\"\r\n stroke=\"var(--tapiz-accent)\"\r\n strokeWidth=\"10\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={offset}\r\n strokeLinecap=\"square\"\r\n transform=\"rotate(-90 56 56)\"\r\n />\r\n <text x=\"56\" y=\"61\" textAnchor=\"middle\" className=\"fill-[var(--tapiz-text-primary)] font-mono text-lg font-bold\">\r\n {Math.round(ratio * 100)}%\r\n </text>\r\n </svg>\r\n {(label || caption) ? (\r\n <div>\r\n {label ? <div className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{label}</div> : null}\r\n {caption ? <div className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{caption}</div> : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FilterChipProps extends BaseProps {\r\n children: ReactNode;\r\n active?: boolean;\r\n onRemove?: () => void;\r\n}\r\n\r\nexport function FilterChip({ children, active = false, onRemove, className = \"\" }: FilterChipProps) {\r\n return (\r\n <span\r\n className={[\r\n \"inline-flex items-center gap-2 border px-2.5 py-1 font-mono text-[11px] uppercase tracking-[0.12em]\",\r\n active\r\n ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)]\"\r\n : \"border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] text-[var(--tapiz-text-muted)]\",\r\n className,\r\n ].join(\" \")}\r\n >\r\n {children}\r\n {onRemove ? (\r\n <button type=\"button\" onClick={onRemove} className=\"text-[var(--tapiz-text-muted)] hover:text-[var(--tapiz-danger)]\" aria-label=\"Remove filter\">\r\n ×\r\n </button>\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface DataToolbarProps extends BaseProps {\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n search?: ReactNode;\r\n filters?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nexport function DataToolbar({ title, description, search, filters, actions, className = \"\" }: DataToolbarProps) {\r\n return (\r\n <div className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4 ${className}`}>\r\n <div className=\"flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between\">\r\n <div>\r\n {title ? <h3 className=\"text-base font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n {actions ? <div className=\"flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n {(search || filters) ? (\r\n <div className=\"mt-4 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between\">\r\n {search ? <div className=\"min-w-0 flex-1\">{search}</div> : null}\r\n {filters ? <div className=\"flex flex-wrap gap-2\">{filters}</div> : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface ResourceCardProps extends BaseProps {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n eyebrow?: ReactNode;\r\n icon?: ReactNode;\r\n meta?: ReactNode;\r\n status?: ReactNode;\r\n actions?: ReactNode;\r\n href?: string;\r\n}\r\n\r\nexport function ResourceCard({ title, description, eyebrow, icon, meta, status, actions, href, className = \"\" }: ResourceCardProps) {\r\n const content = (\r\n <>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"flex min-w-0 items-start gap-3\">\r\n {icon ? <div className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-2 text-[var(--tapiz-accent)]\">{icon}</div> : null}\r\n <div className=\"min-w-0\">\r\n {eyebrow ? <div className=\"kicker mb-2\">{eyebrow}</div> : null}\r\n <h3 className=\"truncate text-base font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n {description ? <p className=\"mt-2 line-clamp-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n {status ? <Badge>{status}</Badge> : null}\r\n </div>\r\n {(meta || actions) ? (\r\n <div className=\"mt-5 flex flex-wrap items-center justify-between gap-3 border-t border-[var(--tapiz-border-subtle)] pt-4\">\r\n {meta ? <div className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{meta}</div> : <span />}\r\n {actions ? <div className=\"flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n ) : null}\r\n </>\r\n );\r\n\r\n const classes = `block border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 shadow-[var(--tapiz-shadow-sm)] hover:border-[var(--tapiz-border-strong)] hover:shadow-[var(--tapiz-shadow-md)] ${className}`;\r\n\r\n return href ? <a href={href} className={classes}>{content}</a> : <article className={classes}>{content}</article>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { StatusBadge } from \"../shared/StatusBadge\";\r\n\r\nexport type IntegrationStatus = \"connected\" | \"disconnected\" | \"syncing\" | \"error\";\r\n\r\nexport interface IntegrationCardProps extends BaseProps {\r\n name: ReactNode;\r\n description?: ReactNode;\r\n logo?: ReactNode;\r\n status?: IntegrationStatus;\r\n lastSync?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst statusLabel: Record<IntegrationStatus, string> = {\r\n connected: \"Connected\",\r\n disconnected: \"Disconnected\",\r\n syncing: \"Syncing\",\r\n error: \"Error\",\r\n};\r\n\r\nconst statusVariant: Record<IntegrationStatus, \"success\" | \"default\" | \"info\" | \"danger\"> = {\r\n connected: \"success\",\r\n disconnected: \"default\",\r\n syncing: \"info\",\r\n error: \"danger\",\r\n};\r\n\r\nexport function IntegrationCard({ name, description, logo, status = \"disconnected\", lastSync, actions, className = \"\" }: IntegrationCardProps) {\r\n return (\r\n <article className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5 ${className}`}>\r\n <div className=\"flex items-start justify-between gap-4\">\r\n <div className=\"flex items-start gap-3\">\r\n <div className=\"flex size-11 items-center justify-center border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] text-[var(--tapiz-accent)]\">\r\n {logo ?? <span className=\"font-mono text-xs\">API</span>}\r\n </div>\r\n <div>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{name}</h3>\r\n {description ? <p className=\"mt-1 text-sm leading-5 text-[var(--tapiz-text-muted)]\">{description}</p> : null}\r\n </div>\r\n </div>\r\n <StatusBadge variant={statusVariant[status]} label={statusLabel[status]} />\r\n </div>\r\n <div className=\"mt-5 flex flex-wrap items-center justify-between gap-3 border-t border-[var(--tapiz-border-subtle)] pt-4\">\r\n <div className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{lastSync ?? \"No sync yet\"}</div>\r\n {actions ? <div className=\"flex gap-2\">{actions}</div> : null}\r\n </div>\r\n </article>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type HealthTone = \"operational\" | \"degraded\" | \"outage\" | \"unknown\";\r\n\r\nexport interface HealthIndicatorProps extends BaseProps {\r\n tone?: HealthTone;\r\n label?: ReactNode;\r\n detail?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<HealthTone, string> = {\r\n operational: \"bg-[var(--tapiz-success)]\",\r\n degraded: \"bg-[var(--tapiz-warning)]\",\r\n outage: \"bg-[var(--tapiz-danger)]\",\r\n unknown: \"bg-[var(--tapiz-text-disabled)]\",\r\n};\r\n\r\nconst defaultLabel: Record<HealthTone, string> = {\r\n operational: \"Operational\",\r\n degraded: \"Degraded\",\r\n outage: \"Outage\",\r\n unknown: \"Unknown\",\r\n};\r\n\r\nexport function HealthIndicator({ tone = \"unknown\", label, detail, className = \"\" }: HealthIndicatorProps) {\r\n return (\r\n <div className={`inline-flex items-center gap-3 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] px-3 py-2 ${className}`}>\r\n <span className={`size-2.5 ${toneClasses[tone]}`} aria-hidden=\"true\" />\r\n <span className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{label ?? defaultLabel[tone]}</span>\r\n {detail ? <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{detail}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface AuditLogItem {\r\n actor: string;\r\n action: ReactNode;\r\n timestamp: ReactNode;\r\n detail?: ReactNode;\r\n initials?: string;\r\n}\r\n\r\nexport interface AuditLogProps extends BaseProps {\r\n items: AuditLogItem[];\r\n}\r\n\r\nexport function AuditLog({ items, className = \"\" }: AuditLogProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item, index) => (\r\n <div key={index} className=\"flex gap-3 p-4\">\r\n <Avatar name={item.initials ?? item.actor} size=\"sm\" />\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\r\n <p className=\"text-sm text-[var(--tapiz-text-secondary)]\"><strong className=\"text-[var(--tapiz-text-primary)]\">{item.actor}</strong> {item.action}</p>\r\n <span className=\"font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.timestamp}</span>\r\n </div>\r\n {item.detail ? <div className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{item.detail}</div> : null}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface KanbanCardItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n meta?: ReactNode;\r\n tone?: \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\r\n}\r\n\r\nexport interface KanbanColumn {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n items: KanbanCardItem[];\r\n}\r\n\r\nexport interface KanbanBoardProps extends BaseProps {\r\n columns: KanbanColumn[];\r\n}\r\n\r\nconst toneClasses: Record<NonNullable<KanbanCardItem[\"tone\"]>, string> = {\r\n default: \"border-[var(--tapiz-border-subtle)]\",\r\n accent: \"border-[var(--tapiz-accent)]\",\r\n success: \"border-[var(--tapiz-success)]\",\r\n warning: \"border-[var(--tapiz-warning)]\",\r\n danger: \"border-[var(--tapiz-danger)]\",\r\n};\r\n\r\nexport function KanbanBoard({ columns, className = \"\" }: KanbanBoardProps) {\r\n return (\r\n <div className={`grid gap-4 overflow-x-auto md:grid-flow-col md:auto-cols-[minmax(18rem,1fr)] ${className}`}>\r\n {columns.map((column) => (\r\n <section key={column.id} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)] p-3\">\r\n <div className=\"mb-3 flex items-start justify-between gap-3\">\r\n <div>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{column.title}</h3>\r\n {column.description ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{column.description}</p> : null}\r\n </div>\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{column.items.length}</span>\r\n </div>\r\n <div className=\"space-y-3\">\r\n {column.items.map((item) => (\r\n <article key={item.id} className={`border-l-2 bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-sm)] ${toneClasses[item.tone ?? \"default\"]}`}>\r\n <h4 className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{item.title}</h4>\r\n {item.description ? <p className=\"mt-1 text-xs leading-5 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}\r\n {item.meta ? <div className=\"mt-3 font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.meta}</div> : null}\r\n </article>\r\n ))}\r\n </div>\r\n </section>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AccessMatrixRole {\r\n key: string;\r\n label: ReactNode;\r\n}\r\n\r\nexport interface AccessMatrixPermission {\r\n key: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n roles: Record<string, boolean>;\r\n}\r\n\r\nexport interface AccessMatrixProps extends BaseProps {\r\n roles: AccessMatrixRole[];\r\n permissions: AccessMatrixPermission[];\r\n}\r\n\r\nexport function AccessMatrix({ roles, permissions, className = \"\" }: AccessMatrixProps) {\r\n return (\r\n <div className={`overflow-x-auto border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n <table className=\"min-w-full text-sm\">\r\n <thead>\r\n <tr>\r\n <th className=\"px-4 py-3 text-left\">Permission</th>\r\n {roles.map((role) => <th key={role.key} className=\"px-4 py-3 text-center\">{role.label}</th>)}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {permissions.map((permission) => (\r\n <tr key={permission.key}>\r\n <td className=\"px-4 py-3\">\r\n <div className=\"font-medium text-[var(--tapiz-text-primary)]\">{permission.label}</div>\r\n {permission.description ? <div className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{permission.description}</div> : null}\r\n </td>\r\n {roles.map((role) => (\r\n <td key={role.key} className=\"px-4 py-3 text-center\">\r\n <span className={permission.roles[role.key] ? \"text-[var(--tapiz-success)]\" : \"text-[var(--tapiz-text-disabled)]\"}>\r\n {permission.roles[role.key] ? \"✓\" : \"—\"}\r\n </span>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface CalendarGridDay {\r\n date: ReactNode;\r\n label?: ReactNode;\r\n muted?: boolean;\r\n selected?: boolean;\r\n events?: ReactNode[];\r\n}\r\n\r\nexport interface CalendarGridProps extends BaseProps {\r\n days: CalendarGridDay[];\r\n weekdays?: ReactNode[];\r\n}\r\n\r\nconst defaultWeekdays = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\r\n\r\nexport function CalendarGrid({ days, weekdays = defaultWeekdays, className = \"\" }: CalendarGridProps) {\r\n return (\r\n <div className={`border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n <div className=\"grid grid-cols-7 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\">\r\n {weekdays.map((day, index) => <div key={index} className=\"px-3 py-2 font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{day}</div>)}\r\n </div>\r\n <div className=\"grid grid-cols-7\">\r\n {days.map((day, index) => (\r\n <div key={index} className={`min-h-28 border-b border-r border-[var(--tapiz-border-subtle)] p-2 ${day.muted ? \"opacity-45\" : \"\"} ${day.selected ? \"bg-[var(--tapiz-accent-soft)]\" : \"\"}`}>\r\n <div className=\"flex items-center justify-between gap-2\">\r\n <span className=\"font-mono text-xs text-[var(--tapiz-text-primary)]\">{day.date}</span>\r\n {day.label ? <span className=\"text-[10px] text-[var(--tapiz-text-muted)]\">{day.label}</span> : null}\r\n </div>\r\n {day.events?.length ? (\r\n <div className=\"mt-2 space-y-1\">\r\n {day.events.map((event, eventIndex) => <div key={eventIndex} className=\"truncate border-l-2 border-[var(--tapiz-accent)] bg-[var(--tapiz-bg-surface-muted)] px-2 py-1 text-[11px] text-[var(--tapiz-text-secondary)]\">{event}</div>)}\r\n </div>\r\n ) : null}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\r\n label?: string;\r\n valueLabel?: string;\r\n}\r\n\r\nexport function Slider({ label, valueLabel, className = \"\", ...props }: SliderProps) {\r\n return (\r\n <label className={`block ${className}`}>\r\n {(label || valueLabel) ? (\r\n <span className=\"mb-2 flex items-center justify-between gap-3 text-sm\">\r\n {label ? <span className=\"font-medium text-[var(--tapiz-text-secondary)]\">{label}</span> : <span />}\r\n {valueLabel ? <span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{valueLabel}</span> : null}\r\n </span>\r\n ) : null}\r\n <input\r\n {...props}\r\n type=\"range\"\r\n className=\"h-2 w-full cursor-pointer appearance-none border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)] accent-[var(--tapiz-accent)]\"\r\n />\r\n </label>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { InputHTMLAttributes, ReactNode } from \"react\";\r\n\r\nexport interface FileDropzoneProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"title\"> { \r\n title?: ReactNode;\r\n description?: ReactNode;\r\n actionLabel?: ReactNode;\r\n\r\n}\r\n\r\nexport function FileDropzone({ title = \"Drop files here\", description, actionLabel = \"Browse\", className = \"\", ...props }: FileDropzoneProps) {\r\n return (\r\n <label className={`block cursor-pointer border-2 border-dashed border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] p-6 text-center hover:bg-[var(--tapiz-bg-surface-muted)] ${className}`}>\r\n <input {...props} type=\"file\" className=\"sr-only\" />\r\n <span className=\"block text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</span>\r\n {description ? <span className=\"mt-2 block text-sm text-[var(--tapiz-text-muted)]\">{description}</span> : null}\r\n <span className=\"mt-4 inline-flex border border-[var(--tapiz-border-strong)] px-3 py-1.5 font-mono text-xs uppercase tracking-[0.12em] text-[var(--tapiz-accent)]\">{actionLabel}</span>\r\n </label>\r\n );\r\n}\r\n","import { useState } from \"react\";\nimport type { InputHTMLAttributes } from \"react\";\nimport { Eye, EyeOff } from \"../icons/index\";\n\nexport interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /** Accessible label for the reveal toggle. */\n revealLabel?: string;\n}\n\nexport function PasswordInput({\n revealLabel = \"Show password\",\n className = \"\",\n ...props\n}: PasswordInputProps) {\n const [visible, setVisible] = useState(false);\n\n return (\n <div\n className={`flex border border-(--tapiz-border-strong) bg-(--tapiz-bg-surface) focus-within:border-(--tapiz-border-focus) focus-within:shadow-[inset_3px_0_0_0_var(--tapiz-signal)] ${className}`}\n >\n {/* Wrapper već prikazuje focus signal (focus-within); inner input ga ne sme duplirati,\n inače se signal pomera sa paddingom wrappera (npr. pl-10 zbog ikonice). */}\n <input\n {...props}\n type={visible ? \"text\" : \"password\"}\n className=\"min-w-0 flex-1 border-0 bg-transparent px-3 py-2 text-sm text-(--tapiz-text-primary) outline-none focus:shadow-none!\"\n />\n <button\n type=\"button\"\n aria-label={revealLabel}\n aria-pressed={visible}\n onClick={() => setVisible((v) => !v)}\n tabIndex={-1}\n className=\"grid place-items-center px-3 text-(--tapiz-text-muted) transition-colors hover:text-(--tapiz-text-primary)\"\n >\n {visible ? <EyeOff size={15} /> : <Eye size={15} />}\n </button>\n </div>\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\r\n\r\nexport interface TextareaCounterProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n maxLength: number;\r\n value?: string;\r\n}\r\n\r\nexport function TextareaCounter({ maxLength, value = \"\", className = \"\", ...props }: TextareaCounterProps) {\r\n const count = value.length;\r\n return (\r\n <div className={className}>\r\n <textarea {...props} value={value} maxLength={maxLength} className=\"input-field min-h-28\" />\r\n <div className=\"mt-1 text-right font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{count}/{maxLength}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type CalloutTone = \"info\" | \"success\" | \"warning\" | \"danger\" | \"neutral\";\r\n\r\nexport interface CalloutProps extends BaseProps {\r\n title?: ReactNode;\r\n children?: ReactNode;\r\n tone?: CalloutTone;\r\n icon?: ReactNode;\r\n actions?: ReactNode;\r\n}\r\n\r\nconst toneClasses: Record<CalloutTone, string> = {\r\n info: \"border-[var(--tapiz-info)] bg-[var(--tapiz-info-soft)]\",\r\n success: \"border-[var(--tapiz-success)] bg-[var(--tapiz-success-soft)]\",\r\n warning: \"border-[var(--tapiz-warning)] bg-[var(--tapiz-warning-soft)]\",\r\n danger: \"border-[var(--tapiz-danger)] bg-[var(--tapiz-danger-soft)]\",\r\n neutral: \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\",\r\n};\r\n\r\nexport function Callout({ title, children, tone = \"info\", icon, actions, className = \"\" }: CalloutProps) {\r\n return (\r\n <aside className={`border-l-4 p-4 ${toneClasses[tone]} ${className}`}>\r\n <div className=\"flex gap-3\">\r\n {icon ? <div className=\"text-[var(--tapiz-text-primary)]\">{icon}</div> : null}\r\n <div className=\"min-w-0 flex-1\">\r\n {title ? <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3> : null}\r\n {children ? <div className=\"mt-1 text-sm leading-6 text-[var(--tapiz-text-secondary)]\">{children}</div> : null}\r\n {actions ? <div className=\"mt-3 flex flex-wrap gap-2\">{actions}</div> : null}\r\n </div>\r\n </div>\r\n </aside>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Spinner } from \"./Spinner\";\r\n\r\nexport interface LoadingOverlayProps extends BaseProps {\r\n visible?: boolean;\r\n label?: ReactNode;\r\n children: ReactNode;\r\n}\r\n\r\nexport function LoadingOverlay({ visible = false, label = \"Loading\", children, className = \"\" }: LoadingOverlayProps) {\r\n return (\r\n <div className={`relative ${className}`}>\r\n {children}\r\n {visible ? (\r\n <div className=\"absolute inset-0 grid place-items-center border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-overlay)] backdrop-blur-sm\">\r\n <div className=\"flex items-center gap-3 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface)] px-4 py-3 text-sm text-[var(--tapiz-text-primary)] shadow-[var(--tapiz-shadow-brutal)]\">\r\n <Spinner />\r\n <span>{label}</span>\r\n </div>\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface NotificationItem {\r\n id: string;\r\n title: ReactNode;\r\n description?: ReactNode;\r\n time?: ReactNode;\r\n unread?: boolean;\r\n action?: ReactNode;\r\n}\r\n\r\nexport interface NotificationListProps extends BaseProps {\r\n items: NotificationItem[];\r\n}\r\n\r\nexport function NotificationList({ items, className = \"\" }: NotificationListProps) {\r\n return (\r\n <div className={`divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] ${className}`}>\r\n {items.map((item) => (\r\n <article key={item.id} className=\"flex gap-3 p-4\">\r\n <span className={`mt-1 size-2.5 ${item.unread ? \"bg-[var(--tapiz-accent)]\" : \"bg-[var(--tapiz-border-subtle)]\"}`} aria-hidden=\"true\" />\r\n <div className=\"min-w-0 flex-1\">\r\n <div className=\"flex items-start justify-between gap-3\">\r\n <h3 className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{item.title}</h3>\r\n {item.time ? <span className=\"font-mono text-[11px] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}\r\n </div>\r\n {item.description ? <p className=\"mt-1 text-sm leading-5 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}\r\n {item.action ? <div className=\"mt-3\">{item.action}</div> : null}\r\n </div>\r\n </article>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface MasonryGridProps extends BaseProps {\r\n children: ReactNode;\r\n columns?: 2 | 3 | 4;\r\n gap?: \"sm\" | \"md\" | \"lg\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nconst columnClasses = { 2: \"md:columns-2\", 3: \"md:columns-2 xl:columns-3\", 4: \"md:columns-2 lg:columns-3 xl:columns-4\" } as const;\r\nconst gapClasses = { sm: \"gap-3\", md: \"gap-5\", lg: \"gap-8\" } as const;\r\n\r\nexport function MasonryGrid({ children, columns = 3, gap = \"md\", className = \"\", style }: MasonryGridProps) {\r\n return <div className={[columnClasses[columns], gapClasses[gap], className].filter(Boolean).join(\" \")} style={style}>{children}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface PageRailItem {\r\n label: ReactNode;\r\n href?: string;\r\n active?: boolean;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface PageRailProps extends BaseProps {\r\n title?: ReactNode;\r\n items: PageRailItem[];\r\n actions?: ReactNode;\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function PageRail({ title, items, actions, className = \"\", style }: PageRailProps) {\r\n return (\r\n <aside className={[\"sticky top-20 rounded-none border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-3 shadow-[var(--tapiz-shadow-sm)]\", className].filter(Boolean).join(\" \")} style={style}>\r\n {title ? <div className=\"kicker mb-3 px-2\">{title}</div> : null}\r\n <nav className=\"flex flex-col gap-1\">\r\n {items.map((item, index) => {\r\n const content = <><span className=\"truncate\">{item.label}</span>{item.meta ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.meta}</span> : null}</>;\r\n const classes = [\"flex items-center justify-between gap-3 border px-3 py-2 text-sm transition\", item.active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-text-primary)]\" : \"border-transparent text-[var(--tapiz-text-muted)] hover:border-[var(--tapiz-border-subtle)] hover:text-[var(--tapiz-text-primary)]\"].join(\" \");\r\n return item.href ? <a key={index} href={item.href} className={classes}>{content}</a> : <div key={index} className={classes}>{content}</div>;\r\n })}\r\n </nav>\r\n {actions ? <div className=\"mt-3 border-t border-[var(--tapiz-border-subtle)] pt-3\">{actions}</div> : null}\r\n </aside>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface StickyBarProps extends BaseProps {\r\n children: ReactNode;\r\n position?: \"top\" | \"bottom\";\r\n\r\n style?: CSSProperties;\r\n}\r\n\r\nexport function StickyBar({ children, position = \"top\", className = \"\", style }: StickyBarProps) {\r\n return (\r\n <div\r\n className={[\"z-30 border-[var(--tapiz-border-subtle)] bg-[color-mix(in_srgb,var(--tapiz-bg-canvas)_88%,transparent)] px-4 py-3 backdrop-blur-xl\", position === \"top\" ? \"sticky top-0 border-b\" : \"sticky bottom-0 border-t\", className].filter(Boolean).join(\" \")}\r\n style={style}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode, SelectHTMLAttributes } from \"react\";\r\n\r\nexport interface ComboboxOption {\r\n value: string;\r\n label: ReactNode;\r\n description?: ReactNode;\r\n}\r\n\r\nexport interface ComboboxProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"children\"> {\r\n options: ComboboxOption[];\r\n placeholder?: string;\r\n invalid?: boolean;\r\n}\r\n\r\nexport function Combobox({ options, placeholder = \"Select option\", invalid = false, className = \"\", ...props }: ComboboxProps) {\r\n return (\r\n <select {...props} className={[\"input-field appearance-none bg-[var(--tapiz-bg-surface)]\", invalid ? \"border-warn focus:border-warn\" : \"\", className].filter(Boolean).join(\" \")}>\r\n <option value=\"\">{placeholder}</option>\r\n {options.map((option) => <option key={option.value} value={option.value}>{String(option.label)}</option>)}\r\n </select>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { InputHTMLAttributes } from \"react\";\r\n\r\nexport interface DateRangePickerProps extends BaseProps {\r\n startLabel?: string;\r\n endLabel?: string;\r\n startProps?: InputHTMLAttributes<HTMLInputElement>;\r\n endProps?: InputHTMLAttributes<HTMLInputElement>;\r\n}\r\n\r\nexport function DateRangePicker({ startLabel = \"From\", endLabel = \"To\", startProps, endProps, className = \"\" }: DateRangePickerProps) {\r\n return (\r\n <div className={[\"grid gap-3 md:grid-cols-2\", className].filter(Boolean).join(\" \")}>\r\n <label className=\"flex flex-col gap-1.5 text-sm text-[var(--tapiz-text-muted)]\"><span>{startLabel}</span><input type=\"date\" {...startProps} className={[\"input-field\", startProps?.className || \"\"].join(\" \")} /></label>\r\n <label className=\"flex flex-col gap-1.5 text-sm text-[var(--tapiz-text-muted)]\"><span>{endLabel}</span><input type=\"date\" {...endProps} className={[\"input-field\", endProps?.className || \"\"].join(\" \")} /></label>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { CSSProperties, ReactNode } from \"react\";\r\n\r\nexport interface ColorSwatchOption {\r\n value: string;\r\n label: ReactNode;\r\n color: string;\r\n}\r\n\r\nexport interface ColorSwatchPickerProps extends BaseProps {\r\n options: ColorSwatchOption[];\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n}\r\n\r\nexport function ColorSwatchPicker({ options, value, onChange, className = \"\" }: ColorSwatchPickerProps) {\r\n return (\r\n <div className={[\"flex flex-wrap gap-2\", className].filter(Boolean).join(\" \")}>\r\n {options.map((option) => {\r\n const selected = option.value === value;\r\n return (\r\n <button key={option.value} type=\"button\" aria-pressed={selected} onClick={() => onChange?.(option.value)} className={[\"flex items-center gap-2 border px-3 py-2 text-sm transition\", selected ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)]\" : \"border-[var(--tapiz-border-subtle)] hover:border-[var(--tapiz-border-strong)]\"].join(\" \")}>\r\n <span className=\"h-4 w-4 border border-[var(--tapiz-border-strong)]\" style={{ background: option.color } as CSSProperties} />\r\n <span>{option.label}</span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface RatingInputProps extends BaseProps {\r\n value?: number;\r\n max?: number;\r\n icon?: ReactNode;\r\n onChange?: (value: number) => void;\r\n label?: string;\r\n}\r\n\r\nexport function RatingInput({ value = 0, max = 5, icon = \"★\", onChange, label = \"Rating\", className = \"\" }: RatingInputProps) {\r\n return (\r\n <div className={[\"inline-flex items-center gap-1\", className].filter(Boolean).join(\" \")} role=\"radiogroup\" aria-label={label}>\r\n {Array.from({ length: max }, (_, index) => {\r\n const score = index + 1;\r\n const active = score <= value;\r\n return <button key={score} type=\"button\" role=\"radio\" aria-checked={active} onClick={() => onChange?.(score)} className={[\"grid h-9 w-9 place-items-center border text-base transition\", active ? \"border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] text-[var(--tapiz-accent)]\" : \"border-[var(--tapiz-border-subtle)] text-[var(--tapiz-text-muted)] hover:border-[var(--tapiz-border-strong)]\"].join(\" \")}>{icon}</button>;\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ScoreRingProps extends BaseProps {\r\n value: number;\r\n max?: number;\r\n label?: ReactNode;\r\n size?: number;\r\n}\r\n\r\nexport function ScoreRing({ value, max = 100, label, size = 112, className = \"\" }: ScoreRingProps) {\r\n const normalized = Math.max(0, Math.min(1, value / max));\r\n const radius = 42;\r\n const circumference = 2 * Math.PI * radius;\r\n const dash = circumference * normalized;\r\n return (\r\n <div className={[\"inline-grid place-items-center\", className].filter(Boolean).join(\" \")} style={{ width: size, height: size }}>\r\n <svg viewBox=\"0 0 100 100\" className=\"h-full w-full -rotate-90\">\r\n <circle cx=\"50\" cy=\"50\" r={radius} fill=\"none\" stroke=\"var(--tapiz-border-subtle)\" strokeWidth=\"10\" />\r\n <circle cx=\"50\" cy=\"50\" r={radius} fill=\"none\" stroke=\"var(--tapiz-accent)\" strokeWidth=\"10\" strokeLinecap=\"square\" strokeDasharray={`${dash} ${circumference - dash}`} />\r\n </svg>\r\n <div className=\"absolute text-center\"><div className=\"font-display text-2xl font-semibold text-[var(--tapiz-text-primary)]\">{Math.round(normalized * 100)}%</div>{label ? <div className=\"font-mono text-[10px] uppercase tracking-[0.16em] text-[var(--tapiz-text-muted)]\">{label}</div> : null}</div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface HeatmapCell {\r\n value: number;\r\n label?: ReactNode;\r\n title?: string;\r\n}\r\n\r\nexport interface HeatmapGridProps extends BaseProps {\r\n cells: HeatmapCell[];\r\n columns?: number;\r\n max?: number;\r\n}\r\n\r\nexport function HeatmapGrid({ cells, columns = 7, max, className = \"\" }: HeatmapGridProps) {\r\n const peak = max ?? Math.max(1, ...cells.map((cell) => cell.value));\r\n return (\r\n <div className={[\"grid gap-1\", className].filter(Boolean).join(\" \")} style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}>\r\n {cells.map((cell, index) => {\r\n const opacity = 0.15 + Math.min(1, cell.value / peak) * 0.75;\r\n return <div key={index} title={cell.title} className=\"aspect-square border border-[var(--tapiz-border-subtle)]\" style={{ background: `color-mix(in srgb, var(--tapiz-accent) ${Math.round(opacity * 100)}%, transparent)` }}>{cell.label ? <span className=\"sr-only\">{cell.label}</span> : null}</div>;\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface FunnelStep {\r\n label: ReactNode;\r\n value: number;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface FunnelChartProps extends BaseProps {\r\n steps: FunnelStep[];\r\n}\r\n\r\nexport function FunnelChart({ steps, className = \"\" }: FunnelChartProps) {\r\n const max = Math.max(1, ...steps.map((step) => step.value));\r\n return (\r\n <div className={[\"space-y-3\", className].filter(Boolean).join(\" \")}>\r\n {steps.map((step, index) => {\r\n const width = Math.max(8, (step.value / max) * 100);\r\n return (\r\n <div key={index}>\r\n <div className=\"mb-1 flex items-center justify-between gap-3 text-sm\"><span className=\"font-medium text-[var(--tapiz-text-primary)]\">{step.label}</span><span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{step.value}{step.meta ? ` · ${String(step.meta)}` : \"\"}</span></div>\r\n <div className=\"h-9 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full border-r border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)]\" style={{ width: `${width}%` }} /></div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface ComparisonMeterProps extends BaseProps {\r\n leftLabel: ReactNode;\r\n rightLabel: ReactNode;\r\n value: number;\r\n}\r\n\r\nexport function ComparisonMeter({ leftLabel, rightLabel, value, className = \"\" }: ComparisonMeterProps) {\r\n const clamped = Math.max(0, Math.min(100, value));\r\n return (\r\n <div className={className}>\r\n <div className=\"mb-2 flex justify-between gap-3 text-sm text-[var(--tapiz-text-muted)]\"><span>{leftLabel}</span><span>{rightLabel}</span></div>\r\n <div className=\"relative h-3 border border-[var(--tapiz-border-strong)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${clamped}%` }} /><div className=\"absolute top-[-6px] h-6 w-px bg-[var(--tapiz-border-strong)]\" style={{ left: `${clamped}%` }} /></div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Avatar } from \"../shared/Avatar\";\r\n\r\nexport interface ActivityFeedItem {\r\n actor: string;\r\n action: ReactNode;\r\n time?: ReactNode;\r\n avatarUrl?: string;\r\n meta?: ReactNode;\r\n}\r\n\r\nexport interface ActivityFeedProps extends BaseProps {\r\n items: ActivityFeedItem[];\r\n}\r\n\r\nexport function ActivityFeed({ items, className = \"\" }: ActivityFeedProps) {\r\n return (\r\n <div className={[\"divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)]\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <div key={index} className=\"flex gap-3 p-4\"><Avatar name={item.actor} src={item.avatarUrl} size=\"sm\" /><div className=\"min-w-0 flex-1\"><p className=\"text-sm text-[var(--tapiz-text-primary)]\"><strong>{item.actor}</strong> {item.action}</p>{item.meta ? <div className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{item.meta}</div> : null}</div>{item.time ? <div className=\"font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\">{item.time}</div> : null}</div>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface InboxItem {\r\n title: ReactNode;\r\n sender?: ReactNode;\r\n snippet?: ReactNode;\r\n time?: ReactNode;\r\n unread?: boolean;\r\n tag?: ReactNode;\r\n}\r\n\r\nexport interface InboxListProps extends BaseProps {\r\n items: InboxItem[];\r\n}\r\n\r\nexport function InboxList({ items, className = \"\" }: InboxListProps) {\r\n return (\r\n <div className={[\"divide-y divide-[var(--tapiz-border-subtle)] border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)]\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <article key={index} className={[\"p-4 transition hover:bg-[var(--tapiz-bg-surface-muted)]\", item.unread ? \"border-l-4 border-l-[var(--tapiz-accent)]\" : \"\"].join(\" \")}><div className=\"flex items-start justify-between gap-3\"><div className=\"min-w-0\"><h3 className=\"truncate text-sm font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.sender ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">{item.sender}</p> : null}</div><div className=\"flex shrink-0 items-center gap-2\">{item.tag ? <Badge>{item.tag}</Badge> : null}{item.time ? <span className=\"font-mono text-[10px] text-[var(--tapiz-text-muted)]\">{item.time}</span> : null}</div></div>{item.snippet ? <p className=\"mt-2 line-clamp-2 text-sm text-[var(--tapiz-text-muted)]\">{item.snippet}</p> : null}</article>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Button } from \"../forms/Button\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface ApprovalItem {\r\n title: ReactNode;\r\n requester?: ReactNode;\r\n description?: ReactNode;\r\n priority?: \"low\" | \"medium\" | \"high\";\r\n}\r\n\r\nexport interface ApprovalQueueProps extends BaseProps {\r\n items: ApprovalItem[];\r\n onApprove?: (index: number) => void;\r\n onReject?: (index: number) => void;\r\n}\r\n\r\nexport function ApprovalQueue({ items, onApprove, onReject, className = \"\" }: ApprovalQueueProps) {\r\n return (\r\n <div className={[\"space-y-3\", className].filter(Boolean).join(\" \")}>\r\n {items.map((item, index) => <article key={index} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4\"><div className=\"flex flex-col gap-4 md:flex-row md:items-start md:justify-between\"><div><div className=\"flex flex-wrap items-center gap-2\"><h3 className=\"font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.priority ? <Badge variant={item.priority === \"high\" ? \"danger\" : item.priority === \"medium\" ? \"warning\" : \"default\"}>{item.priority}</Badge> : null}</div>{item.requester ? <p className=\"mt-1 text-xs text-[var(--tapiz-text-muted)]\">Requested by {item.requester}</p> : null}{item.description ? <p className=\"mt-2 text-sm text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}</div><div className=\"flex gap-2\"><Button size=\"sm\" variant=\"secondary\" onClick={() => onReject?.(index)}>Reject</Button><Button size=\"sm\" onClick={() => onApprove?.(index)}>Approve</Button></div></div></article>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface SLAStatusProps extends BaseProps {\r\n label: ReactNode;\r\n value: number;\r\n target?: number;\r\n}\r\n\r\nexport function SLAStatus({ label, value, target = 95, className = \"\" }: SLAStatusProps) {\r\n const ok = value >= target;\r\n return (\r\n <div className={[\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4\", className].filter(Boolean).join(\" \")}>\r\n <div className=\"flex items-center justify-between gap-3\"><span className=\"text-sm font-medium text-[var(--tapiz-text-primary)]\">{label}</span><span className={[\"font-mono text-xs\", ok ? \"text-[var(--tapiz-success)]\" : \"text-[var(--tapiz-warning)]\"].join(\" \")}>{ok ? \"Within SLA\" : \"At risk\"}</span></div>\r\n <div className=\"mt-3 h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${Math.max(0, Math.min(100, value))}%` }} /></div>\r\n <div className=\"mt-2 flex justify-between font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--tapiz-text-muted)]\"><span>{value}%</span><span>Target {target}%</span></div>\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Switch } from \"../forms/Switch\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface FeatureFlag {\r\n key: string;\r\n name: ReactNode;\r\n description?: ReactNode;\r\n enabled?: boolean;\r\n rollout?: ReactNode;\r\n}\r\n\r\nexport interface FeatureFlagTableProps extends BaseProps {\r\n flags: FeatureFlag[];\r\n onToggle?: (key: string, enabled: boolean) => void;\r\n}\r\n\r\nexport function FeatureFlagTable({ flags, onToggle, className = \"\" }: FeatureFlagTableProps) {\r\n return (\r\n <div className={[\"overflow-hidden border border-[var(--tapiz-border-subtle)]\", className].filter(Boolean).join(\" \")}>\r\n {flags.map((flag) => <div key={flag.key} className=\"grid gap-3 border-b border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-4 last:border-b-0 md:grid-cols-[1fr_auto_auto] md:items-center\"><div><div className=\"flex flex-wrap items-center gap-2\"><h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{flag.name}</h3><Badge>{flag.key}</Badge></div>{flag.description ? <p className=\"mt-1 text-sm text-[var(--tapiz-text-muted)]\">{flag.description}</p> : null}</div><div className=\"text-sm text-[var(--tapiz-text-muted)]\">{flag.rollout}</div><Switch checked={flag.enabled} onChange={(checked) => onToggle?.(flag.key, checked)} /></div>)}\r\n </div>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface PlanUsageItem {\r\n label: ReactNode;\r\n used: number;\r\n limit: number;\r\n}\r\n\r\nexport interface PlanUsageProps extends BaseProps {\r\n title?: ReactNode;\r\n items: PlanUsageItem[];\r\n}\r\n\r\nexport function PlanUsage({ title = \"Plan usage\", items, className = \"\" }: PlanUsageProps) {\r\n return (\r\n <section className={[\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5\", className].filter(Boolean).join(\" \")}>\r\n <h3 className=\"text-sm font-semibold text-[var(--tapiz-text-primary)]\">{title}</h3>\r\n <div className=\"mt-4 space-y-4\">\r\n {items.map((item, index) => { const pct = item.limit ? Math.min(100, (item.used / item.limit) * 100) : 0; return <div key={index}><div className=\"mb-1 flex justify-between text-sm\"><span className=\"text-[var(--tapiz-text-primary)]\">{item.label}</span><span className=\"font-mono text-xs text-[var(--tapiz-text-muted)]\">{item.used}/{item.limit}</span></div><div className=\"h-2 border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface-muted)]\"><div className=\"h-full bg-[var(--tapiz-accent)]\" style={{ width: `${pct}%` }} /></div></div>; })}\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface AnnouncementBarProps extends BaseProps {\r\n children: ReactNode;\r\n action?: ReactNode;\r\n}\r\n\r\nexport function AnnouncementBar({ children, action, className = \"\" }: AnnouncementBarProps) {\r\n return <div className={[\"border-b border-[var(--tapiz-border-strong)] bg-[var(--tapiz-accent-soft)] px-4 py-3 text-sm text-[var(--tapiz-text-primary)]\", className].filter(Boolean).join(\" \")}><div className=\"mx-auto flex max-w-7xl flex-wrap items-center justify-center gap-3 text-center\"> <span>{children}</span>{action ? <span>{action}</span> : null}</div></div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Accordion } from \"../disclosure/Accordion\";\r\n\r\nexport interface FAQItem {\r\n question: ReactNode;\r\n answer: ReactNode;\r\n}\r\n\r\nexport interface FAQSectionProps extends BaseProps {\r\n title?: ReactNode;\r\n description?: ReactNode;\r\n items: FAQItem[];\r\n}\r\n\r\nexport function FAQSection({ title = \"Frequently asked questions\", description, items, className = \"\" }: FAQSectionProps) {\r\n return <section className={className}><div className=\"mb-6 max-w-2xl\"><div className=\"kicker\">FAQ</div><h2 className=\"mt-2 text-3xl font-semibold tracking-[-0.05em] text-[var(--tapiz-text-primary)]\">{title}</h2>{description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{description}</p> : null}</div><Accordion items={items.map((item, index) => ({ id: `faq-${index}`, title: item.question, content: item.answer }))} /></section>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\nimport { Badge } from \"../shared/Badge\";\r\n\r\nexport interface RoadmapItem {\r\n title: ReactNode;\r\n description?: ReactNode;\r\n status?: ReactNode;\r\n quarter?: ReactNode;\r\n}\r\n\r\nexport interface RoadmapListProps extends BaseProps {\r\n items: RoadmapItem[];\r\n}\r\n\r\nexport function RoadmapList({ items, className = \"\" }: RoadmapListProps) {\r\n return <div className={[\"grid gap-3 md:grid-cols-3\", className].filter(Boolean).join(\" \")}>{items.map((item, index) => <article key={index} className=\"border border-[var(--tapiz-border-subtle)] bg-[var(--tapiz-bg-surface)] p-5\"><div className=\"flex items-center justify-between gap-3\"><span className=\"kicker\">{item.quarter ?? `0${index + 1}`}</span>{item.status ? <Badge>{item.status}</Badge> : null}</div><h3 className=\"mt-4 font-semibold text-[var(--tapiz-text-primary)]\">{item.title}</h3>{item.description ? <p className=\"mt-2 text-sm leading-6 text-[var(--tapiz-text-muted)]\">{item.description}</p> : null}</article>)}</div>;\r\n}\r\n","import type { BaseProps } from \"../../types\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport type InlineStatusTone = \"neutral\" | \"success\" | \"warning\" | \"danger\" | \"info\";\r\n\r\nexport interface InlineStatusProps extends BaseProps {\r\n tone?: InlineStatusTone;\r\n children: ReactNode;\r\n pulse?: boolean;\r\n}\r\n\r\nconst toneClasses: Record<InlineStatusTone, string> = {\r\n neutral: \"bg-[var(--tapiz-text-muted)]\",\r\n success: \"bg-[var(--tapiz-success)]\",\r\n warning: \"bg-[var(--tapiz-warning)]\",\r\n danger: \"bg-[var(--tapiz-danger)]\",\r\n info: \"bg-[var(--tapiz-info)]\",\r\n};\r\n\r\nexport function InlineStatus({ tone = \"neutral\", children, pulse = false, className = \"\" }: InlineStatusProps) {\r\n return <span className={[\"inline-flex items-center gap-2 text-sm text-[var(--tapiz-text-muted)]\", className].filter(Boolean).join(\" \")}><span className={[\"h-2 w-2 rounded-full\", toneClasses[tone], pulse ? \"animate-pulse\" : \"\"].filter(Boolean).join(\" \")} />{children}</span>;\r\n}\r\n"],"mappings":"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","names":["jsx","jsxs","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","useId","useState","jsx","jsxs","sizeMap","jsx","jsxs","useState","jsx","jsxs","useState","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","useId","createPortal","jsx","jsxs","useId","createPortal","createPortal","jsx","jsxs","createPortal","jsx","jsxs","jsx","variantClasses","jsx","jsx","jsxs","jsx","variantClasses","jsx","jsxs","jsx","jsxs","className","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","useEffect","useRef","useState","createPortal","jsx","jsxs","useState","useRef","useEffect","createPortal","useMemo","useState","jsx","jsxs","jsx","jsxs","ALIGN_CLASS","useState","useMemo","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","variantClasses","jsx","jsxs","jsx","jsx","gapClasses","alignClasses","justifyClasses","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","Alert","tone","jsx","jsxs","tone","jsx","jsx","jsx","jsxs","tones","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","sizeClasses","jsx","variantClasses","paddingClasses","jsx","jsxs","jsx","gapClasses","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","toneClasses","tone","jsx","jsxs","jsx","jsxs","toneClasses","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","toneClasses","tone","jsx","jsxs","jsx","jsxs","jsx","gapClasses","Fragment","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","toneClasses","tone"]}