@tapizlabs/ui 0.1.5 → 0.1.6

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/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"],"sourcesContent":["import type React from \"react\";\n\nexport interface IconProps {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const base = (_d: unknown, size: number, style?: React.CSSProperties) => ({\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1.75,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n style,\n});\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Clipboard = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" />\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\" />\n <path d=\"M12 11h4M12 16h4M8 11h.01M8 16h.01\" />\n </svg>\n);\n\nexport const Home = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n);\n\nexport const Scan = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\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\" />\n <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\" />\n </svg>\n);\n\nexport const Users = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n);\n\nexport const Book = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\" />\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\" />\n </svg>\n);\n\nexport const Calendar = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n </svg>\n);\n\nexport const CheckSquare = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"9 11 12 14 22 4\" />\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\n </svg>\n);\n\nexport const BarChart = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\n <line x1=\"2\" y1=\"20\" x2=\"22\" y2=\"20\" />\n </svg>\n);\n\nexport const Table = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M9 21V9\" />\n </svg>\n);\n\nexport const Report = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n);\n\nexport const QrCode = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\n <path d=\"M14 14h3v3h-3zM17 17h3v3h-3zM14 17h3\" />\n </svg>\n);\n\nexport const Layers = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 12 12 17 22 12\" />\n <polyline points=\"2 17 12 22 22 17\" />\n </svg>\n);\n\nexport const OfficeHours = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M8 3h8\" />\n <path d=\"M9 2v2M15 2v2\" />\n <rect x=\"4\" y=\"5\" width=\"16\" height=\"15\" rx=\"2\" />\n <path d=\"M4 10h16\" />\n <path d=\"M12 13v4\" />\n <path d=\"M12 13l2.5-1.5\" />\n </svg>\n);\n\nexport const FileUpload = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <polyline points=\"12 18 12 12\" />\n <polyline points=\"9 15 12 12 15 15\" />\n </svg>\n);\n\nexport const University = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M12 3l9 3H3l9-3z\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"5\" y1=\"6\" x2=\"5\" y2=\"18\" />\n <line x1=\"10\" y1=\"6\" x2=\"10\" y2=\"18\" />\n <line x1=\"14\" y1=\"6\" x2=\"14\" y2=\"18\" />\n <line x1=\"19\" y1=\"6\" x2=\"19\" y2=\"18\" />\n <line x1=\"2\" y1=\"18\" x2=\"22\" y2=\"18\" />\n <line x1=\"2\" y1=\"21\" x2=\"22\" y2=\"21\" />\n </svg>\n);\n\nexport const Faculty = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.5}>\n {/* central tower */}\n <rect x=\"7\" y=\"2\" width=\"10\" height=\"19\" />\n {/* left wing */}\n <rect x=\"2\" y=\"8\" width=\"5\" height=\"13\" />\n {/* right wing */}\n <rect x=\"17\" y=\"8\" width=\"5\" height=\"13\" />\n {/* tower windows row 1 */}\n <rect x=\"9\" y=\"4\" width=\"2.5\" height=\"2.5\" />\n <rect x=\"12.5\" y=\"4\" width=\"2.5\" height=\"2.5\" />\n {/* tower windows row 2 */}\n <rect x=\"9\" y=\"8\" width=\"2.5\" height=\"2.5\" />\n <rect x=\"12.5\" y=\"8\" width=\"2.5\" height=\"2.5\" />\n {/* entrance */}\n <rect x=\"10\" y=\"15\" width=\"4\" height=\"6\" />\n {/* base line */}\n <line x1=\"1\" y1=\"21\" x2=\"23\" y2=\"21\" />\n </svg>\n);\n\nexport const GraduationCap = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M22 10v6M2 10l10-5 10 5-10 5z\" />\n <path d=\"M6 12v5c0 1.657 2.686 3 6 3s6-1.343 6-3v-5\" />\n </svg>\n);\n\nexport const Globe = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\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\" />\n </svg>\n);\n\nexport const CreditCard = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 10h20\" />\n </svg>\n);\n\nexport const HelpCircle = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <circle cx=\"12\" cy=\"17\" r=\".5\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n);\n\nexport const NavQrAttendance = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\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\" />\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\" />\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\" />\n <polyline points=\"14,16 16,18 20,13\" />\n </svg>\n);\n\nexport const NavScoresheet = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.3}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M3 14h18M9 9v9M15 9v9\" />\n </svg>\n);\n\nexport const NavAnalytics = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <path d=\"M3 3v18h18\" /><path d=\"M7 16l4-5 4 3 5-6\" />\n </svg>\n);\n\nexport const NavSecurity = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <path d=\"M12 2L4 6v6c0 5.25 3.5 9.74 8 11 4.5-1.26 8-5.75 8-11V6L12 2Z\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Edit = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n);\n\nexport const Trash = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"3 6 5 6 21 6\" />\n <path d=\"M19 6l-1 14H6L5 6M10 11v6M14 11v6M9 6V4h6v2\" />\n </svg>\n);\n\nexport const Plus = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n);\n\nexport const Download = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n);\n\nexport const Refresh = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n);\n\nexport const UserPlus = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n);\n\nexport const UserMinus = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n);\n\nexport const UserCog = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <circle cx=\"19\" cy=\"19\" r=\"2\" />\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\" />\n </svg>\n);\n\nexport const Check = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\nexport const X = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2.5} className={className}>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\n\nexport const Menu = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\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\" />\n </svg>\n);\n\nexport const Grid = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />\n </svg>\n);\n\nexport const GitCompare = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M18 21l4-4-4-4\" />\n <path d=\"M6 21l-4-4 4-4\" />\n <path d=\"M14 3l4 4-4 4\" />\n <path d=\"M2 21V3a2 2 0 0 1 2-2h6\" />\n <path d=\"M22 21V7a2 2 0 0 0-2-2h-6\" />\n </svg>\n);\nexport const History = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n </svg>\n);\n\nexport const RotateCcw = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n);\n\nexport const Pdf = ({ size = 14, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 1920 1920\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\n <g fillRule=\"evenodd\">\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\"/>\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\"/>\n </g>\n </svg>\n);\n\nexport const Printer = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M6 9V3h12v6\" />\n <path d=\"M6 21h12v-6H6v6z\" />\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\" />\n <circle cx=\"17\" cy=\"13\" r=\"1\" />\n <path d=\"M8 13h3\" />\n </svg>\n);\n\nexport const ExternalLink = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n);\n\nexport const Image = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <polyline points=\"21 15 16 10 5 21\" />\n </svg>\n);\n\nexport const Star = ({ size = 14, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n\nexport const AppleIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 814 1000\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n\nexport const GooglePlayIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 512 512\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Mail = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n </svg>\n);\n\nexport const LockIcon = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n);\n\nexport const TwoFAIcon = ({ size = 16, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {/* Smartphone */}\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n {/* Key overlay */}\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" />\n <line x1=\"11\" y1=\"10\" x2=\"16\" y2=\"10\" />\n <line x1=\"13\" y1=\"7.5\" x2=\"13\" y2=\"6\" />\n <line x1=\"15\" y1=\"8.5\" x2=\"15\" y2=\"7.5\" />\n </svg>\n);\n\nexport const FingerprintIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\n <path d=\"M2 12a10 10 0 0 1 18-6\" />\n <path d=\"M2 16h.01\" />\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\n <path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" />\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\" />\n </svg>\n);\n\nexport const Eye = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n);\n\nexport const EyeOff = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\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\" />\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\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n);\n\nexport const User = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nexport const UserCheck = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n);\n\nexport const Hash = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\" />\n <line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\" />\n <line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\" />\n <line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\" />\n </svg>\n);\n\nexport const LogOut = ({ size = 20, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"15\" y1=\"12\" x2=\"5\" y2=\"12\" />\n <polyline points=\"9 8 5 12 9 16\" />\n <path d=\"M19 4 h-4 v16 h4 Z\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Alert = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\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\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n);\n\nexport const Info = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n);\n\nexport const CheckCircle = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n);\n\nexport const Ban = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </svg>\n);\n\nexport const ArrowRight = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n);\n\nexport const ArrowLeft = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M19 12H5M12 19l-7-7 7-7\" />\n </svg>\n);\n\nexport const ChevronLeft = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\nexport const ChevronRight = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nexport const ChevronDown = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport const ChevronUp = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n);\n\nexport const Search = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M21 21l-4.35-4.35\" />\n </svg>\n);\n\nexport const Bell = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n);\n\nexport const Shield = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n);\n\nexport const Copy = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n);\n\nexport const Repeat = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </svg>\n);\n\nexport const FileText = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n);\n\nexport const Trophy = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M6 9H4.5a2.5 2.5 0 0 1 0-5H6\" />\n <path d=\"M18 9h1.5a2.5 2.5 0 0 0 0-5H18\" />\n <path d=\"M4 22h16\" />\n <path d=\"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22\" />\n <path d=\"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22\" />\n <path d=\"M18 2H6v7a6 6 0 0 0 12 0V2Z\" />\n </svg>\n);\n\nexport const Monitor = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n);\n\nexport const Smartphone = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n </svg>\n);\n\nexport const Tablet = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n </svg>\n);\n\n// Aktivnost – linija otkucaja (pulse)\nexport const ActivityMenu = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"8\" width=\"3\" height=\"8\" rx=\"1\" />\n <rect x=\"9\" y=\"4\" width=\"3\" height=\"16\" rx=\"1\" />\n <rect x=\"15\" y=\"6\" width=\"3\" height=\"12\" rx=\"1\" />\n </svg>\n);\n// Poređenje – dva stuba sa strelicama za upoređivanje\nexport const Compare = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\n <rect x=\"9\" y=\"9\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\n <line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeDasharray=\"3 2\" />\n </svg>\n);\n\n// Presečni status – Venn dijagram (dva presječena kruga)\nexport const Intersect = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\n <circle cx=\"9\" cy=\"12\" r=\"6\" />\n <circle cx=\"15\" cy=\"12\" r=\"6\" />\n </svg>\n);\n\nexport const Megaphone = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\n <path d=\"M3 11l19-9-9 19-2-8-8-2z\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Sun = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\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\" />\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\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\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\" />\n </svg>\n);\n\nexport const Moon = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n);\n\nexport const Gear = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\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\" />\n </svg>\n);\n\nexport const Clock = ({ size = 13, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n);\n","interface LogoMarkProps {\n size?: number;\n className?: string;\n bgClassName?: string;\n bgFill?: string;\n bgOpacity?: number;\n}\n\n// Brutalist square logo – ugaone zagrade + slovo 't' sa eksponentom 'LMS'\nexport const LogoMark = ({\n size = 28,\n className,\n}: LogoMarkProps) => (\n <svg\n width={size}\n height={size}\n className={`${className} w-[${size}px] h-[${size}px]`}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n >\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"none\" />\n <path d=\"M5 9 L5 5 L9 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M23 5 L27 5 L27 9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M5 23 L5 27 L9 27\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M23 27 L27 27 L27 23\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" className=\"opacity-50\" />\n\n <g fill=\"currentColor\">\n <rect x=\"15\" y=\"10\" width=\"2\" height=\"14\" />\n <rect x=\"10\" y=\"10\" width=\"12\" height=\"2\" />\n </g>\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const FormIcon = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M8 7h8M8 11h8M8 15h5\" />\n </svg>\n);\n\nexport const CalendarWeek = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n <path d=\"M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01\" />\n </svg>\n);\n\nexport const CalendarMonth = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n <rect x=\"7\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\n <rect x=\"13\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\n <rect x=\"7\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\n <rect x=\"13\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\n </svg>\n);\n\nexport const NumberIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"4\" y=\"18\" fontSize=\"18\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">12</text>\n </svg>\n);\n\nexport const TextIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"6\" y=\"18\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">T</text>\n </svg>\n);\n\nexport const FormulaIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"3\" y=\"16\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">ƒ</text>\n <text x=\"12\" y=\"16\" fontSize=\"16\" fill=\"currentColor\" stroke=\"none\">x</text>\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const RefreshCw = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\n <path d=\"M23 4v6h-6\" />\n <path d=\"M1 20v-6h6\" />\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10\" />\n <path d=\"M20.49 15a9 9 0 0 1-14.85 3.36L1 14\" />\n </svg>\n);\n\nexport const Database = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </svg>\n);\n\nexport const Server = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <line x1=\"6\" y1=\"6\" x2=\"6\" y2=\"6.01\" />\n <line x1=\"6\" y1=\"18\" x2=\"6\" y2=\"18.01\" />\n </svg>\n);\n\nexport const Activity = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\" />\n </svg>\n);\n\nexport const Cpu = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\" />\n <rect x=\"9\" y=\"9\" width=\"6\" height=\"6\" />\n <line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\" />\n <line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\" />\n <line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\" />\n <line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\" />\n <line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\" />\n <line x1=\"1\" y1=\"15\" x2=\"4\" y2=\"15\" />\n <line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\" />\n <line x1=\"20\" y1=\"15\" x2=\"23\" y2=\"15\" />\n </svg>\n);\n\nexport const Zap = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\n </svg>\n);\n\nexport const HardDrive = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\" />\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\" />\n <line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\" />\n <line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\" />\n </svg>\n);\n","import { X, Grid, UserMinus, UserCog, History, ExternalLink } from \"./ActionIcons\";\nimport { LockIcon, LogOut, User, UserCheck, EyeOff } from \"./AuthIcons\";\nimport { BarChart, Book, Calendar, CheckSquare, Clipboard, Faculty, Home, Layers, OfficeHours, QrCode, Report, Scan, Table, University, Users } from \"./NavigationIcons\";\nimport { ActivityMenu, Compare, Info, Intersect, Megaphone, Repeat, FileText } from \"./FeedbackIcons\";\nimport { Gear } from \"./SettingsIcons\";\nimport { CalendarWeek, FormIcon } from \"./FormsIcons\";\nimport { Zap } from \"./StatusIcons\";\n\nexport const SectionIcons = {\n studenti: <Users size={13} />,\n nastava: <Book size={13} />,\n evidencija: <CheckSquare size={13} />,\n analitika: <BarChart size={13} />,\n forme: <FormIcon size={13} />,\n nastavaS: <CalendarWeek size={13} />,\n evidencijaS:<CheckSquare size={13} />,\n};\n\nexport const Icons = {\n clipboard: <Faculty size={18} />,\n postClipboard: <Clipboard size={18} />,\n university: <University size={18} />,\n users: <Users size={18} />,\n book: <Book size={18} />,\n layers: <Layers size={18} />,\n officeHours: <OfficeHours size={18} />,\n calendar: <Calendar size={18} />,\n calendarAlt: <CalendarWeek size={18} />,\n checkSquare: <CheckSquare size={18} />,\n barChart: <BarChart size={18} />,\n qrCode: <QrCode size={18} />,\n home: <Home size={18} />,\n scan: <Scan size={18} />,\n lock: <LockIcon size={16} />,\n logOut: <LogOut size={16} />,\n logOutAlt: <LogOut size={16} />,\n user: <User size={16} />,\n cancel: <X size={16} />,\n report: <Report size={18} />,\n table: <Table size={18} />,\n gear: <Gear size={16} />,\n formIcon: <FormIcon size={18} />,\n grades: <BarChart size={18} />,\n activity: <ActivityMenu size={18} />,\n zap: <Zap size={18} />,\n compare: <Compare size={18} />,\n intersect: <Intersect size={18} />,\n repeat: <Repeat size={18} />,\n info: <Info size={16} />,\n todos: <CheckSquare size={18} />,\n eyeOff: <EyeOff size={18} />,\n userMinus: <UserMinus size={18} />,\n fileText: <FileText size={18} />,\n megaphone: <Megaphone size={18} />,\n grid: <Grid size={18} />,\n userCheck: <UserCheck size={18} />,\n fm: <UserCog size={18} />,\n history: <History size={18} />,\n externalLink: <ExternalLink size={18} />\n};\n","import { createElement, isValidElement } from \"react\";\nimport type { ComponentType, MouseEvent, ReactNode } from \"react\";\nimport { Spinner } from \"../feedback/Spinner\";\n\ntype Variant =\n | \"primary\"\n | \"secondary\"\n | \"danger\"\n | \"ghost\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted-primary\"\n | \"outline-primary\"\n | \"outline-secondary\"\n | \"outline-danger\"\n | \"outline-success\"\n | \"link\";\n\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface ButtonProps {\n children?: ReactNode;\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n disabled?: boolean;\n loading?: boolean;\n variant?: Variant;\n size?: Size;\n icon?: ButtonIcon;\n iconRight?: ButtonIcon;\n className?: string;\n type?: \"button\" | \"submit\" | \"reset\";\n title?: string;\n fullWidth?: boolean;\n}\n\ntype ButtonIcon = ReactNode | ComponentType<{\n size?: number | string;\n strokeWidth?: number;\n className?: string;\n}>;\n\nconst TOKEN_BASE = \"inline-flex items-center justify-center gap-2 cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-150\";\n\nconst variantClasses: Record<Variant, string> = {\n primary: \"btn-primary\",\n secondary: \"btn-secondary\",\n danger: \"btn-danger\",\n\n ghost: `${TOKEN_BASE} font-medium border border-transparent\n text-[var(--color-txt-3)] hover:border-[var(--color-primary-300)] hover:text-[var(--color-primary-300)]`,\n\n success: `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\n bg-transparent hover:bg-[rgba(77,214,163,0.08)]`,\n\n warning: `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\n bg-transparent hover:bg-[rgba(255,122,77,0.08)]`,\n\n info: `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n bg-transparent hover:bg-[rgba(94,231,255,0.08)]`,\n\n \"muted-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n bg-[rgba(94,231,255,0.06)] hover:bg-[rgba(94,231,255,0.12)]`,\n\n \"outline-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n hover:bg-[rgba(94,231,255,0.08)]`,\n\n \"outline-secondary\": `${TOKEN_BASE} border border-[var(--color-border-hi)] text-[var(--color-txt-2)]\n hover:border-[var(--color-txt-2)] hover:text-[var(--color-txt-1)]`,\n\n \"outline-danger\": `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\n hover:bg-[rgba(255,122,77,0.08)]`,\n\n \"outline-success\": `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\n hover:bg-[rgba(77,214,163,0.08)]`,\n\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\",\n};\n\nconst sizeClasses: Record<Size, string> = {\n xs: \"px-2 py-1 text-xs gap-1\",\n sm: \"px-3 py-1.5 text-xs gap-1.5\",\n md: \"px-4 py-2 text-sm gap-2\",\n lg: \"px-5 py-2.5 text-sm gap-2\",\n xl: \"px-6 py-3 text-base gap-2.5\",\n};\n\nexport function Button({\n children,\n onClick,\n disabled,\n loading,\n variant = \"primary\",\n size = \"md\",\n icon,\n iconRight,\n className = \"\",\n type = \"button\",\n title,\n fullWidth,\n}: ButtonProps) {\n const isDisabled = disabled || loading;\n const isLink = variant === \"link\";\n const shouldApplySize = !isLink;\n const renderedIcon = renderIcon(icon);\n const renderedIconRight = renderIcon(iconRight);\n\n return (\n <button\n type={type}\n onClick={onClick}\n disabled={isDisabled}\n title={title}\n className={[\n variantClasses[variant],\n shouldApplySize ? sizeClasses[size] : \"\",\n fullWidth ? \"w-full\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n >\n {loading\n ? <Spinner color={variant === \"primary\" ? \"text-black\" : \"text-[var(--color-txt-2)]\"} />\n : renderedIcon ? <span>{renderedIcon}</span> : null}\n {children}\n {!loading && renderedIconRight}\n </button>\n );\n}\n\nfunction renderIcon(icon?: ButtonIcon) {\n if (!icon) return null;\n if (isValidElement(icon)) return icon;\n if (typeof icon === \"function\") {\n return createElement(icon, { size: 14, strokeWidth: 1.75 });\n }\n return icon;\n}\n","export interface SpinnerProps {\n size?: string;\n color?: string;\n}\n\nexport const Spinner = ({ size = \"w-3 h-3\", color = \"text-primary-700\" }: SpinnerProps) => (\n <svg\n className={`inline-block ${size} animate-spin ${color}`}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray=\"31.4 31.4\"\n strokeDashoffset=\"15.7\"\n />\n </svg>\n);\n","import type { InputHTMLAttributes } from \"react\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n}\n\nexport function Input({ className = \"\", invalid = false, ...props }: InputProps) {\n return (\n <input\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { SelectHTMLAttributes } from \"react\";\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport function Select({ className = \"\", invalid = false, ...props }: SelectProps) {\n return (\n <select\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport function Textarea({ className = \"\", invalid = false, ...props }: TextareaProps) {\n return (\n <textarea\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { LabelHTMLAttributes, ReactNode } from \"react\";\n\nexport interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n children: ReactNode;\n}\n\nexport function FieldLabel({ children, className = \"\", ...props }: FieldLabelProps) {\n return (\n <label {...props} className={`kicker mb-1 block ${className}`.trim()}>\n {children}\n </label>\n );\n}\n","import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport interface FieldHintProps extends HTMLAttributes<HTMLParagraphElement> {\n children: ReactNode;\n}\n\nexport function FieldHint({ children, className = \"\", ...props }: FieldHintProps) {\n return (\n <p {...props} className={`font-mono text-[10px] text-txt-4 ${className}`.trim()}>\n {children}\n </p>\n );\n}\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeMap = {\n sm: { box: \"w-3.5 h-3.5\", icon: 10, text: \"text-xs\", gap: \"gap-1.5\" },\n md: { box: \"w-4 h-4\", icon: 11, text: \"text-sm\", gap: \"gap-2\" },\n lg: { box: \"w-5 h-5\", icon: 13, text: \"text-base\", gap: \"gap-2.5\" },\n} as const;\n\nexport function Checkbox({\n label,\n size = \"md\",\n className = \"\",\n id: providedId,\n checked,\n defaultChecked,\n onChange,\n ...props\n}: CheckboxProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const s = sizeMap[size];\n\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isChecked = isControlled ? checked : internalChecked;\n const [focused, setFocused] = useState(false);\n\n return (\n <label\n htmlFor={id}\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\n >\n <span className=\"relative shrink-0\">\n <input\n {...props}\n id={id}\n type=\"checkbox\"\n checked={isControlled ? checked : internalChecked}\n onChange={(e) => {\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e);\n }}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n className=\"sr-only\"\n />\n <span\n className={`\n flex items-center justify-center ${s.box}\n border transition-all duration-150\n ${isChecked\n ? \"bg-primary-300 border-primary-300\"\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\n }\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\n `}\n >\n {isChecked && (\n <svg\n width={s.icon}\n height={s.icon}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"square\"\n >\n <polyline points=\"1.5,6 4.5,9.5 10.5,2.5\" />\n </svg>\n )}\n </span>\n </span>\n\n {label && (\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\n {label}\n </span>\n )}\n </label>\n );\n}\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeMap = {\n sm: { outer: \"w-3.5 h-3.5\", inner: \"w-1.5 h-1.5\", text: \"text-xs\", gap: \"gap-1.5\" },\n md: { outer: \"w-4 h-4\", inner: \"w-2 h-2\", text: \"text-sm\", gap: \"gap-2\" },\n lg: { outer: \"w-5 h-5\", inner: \"w-2.5 h-2.5\", text: \"text-base\", gap: \"gap-2.5\" },\n} as const;\n\nexport function RadioButton({\n label,\n size = \"md\",\n className = \"\",\n id: providedId,\n checked,\n defaultChecked,\n onChange,\n ...props\n}: RadioButtonProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const s = sizeMap[size];\n\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isChecked = isControlled ? checked : internalChecked;\n const [focused, setFocused] = useState(false);\n\n return (\n <label\n htmlFor={id}\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\n >\n <span className=\"relative shrink-0\">\n <input\n {...props}\n id={id}\n type=\"radio\"\n checked={isControlled ? checked : internalChecked}\n onChange={(e) => {\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e);\n }}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n className=\"sr-only\"\n />\n {/* outer ring — square to match app aesthetic, full for radio feel */}\n <span\n className={`\n flex items-center justify-center ${s.outer}\n rounded-full border transition-all duration-150\n ${isChecked\n ? \"bg-ink-400 border-primary-300 shadow-[0_0_0_1px_var(--color-primary-300)]\"\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\n }\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\n `}\n >\n {isChecked && (\n <span className={`${s.inner} rounded-full bg-primary-300`} />\n )}\n </span>\n </span>\n\n {label && (\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\n {label}\n </span>\n )}\n </label>\n );\n}\n","import { Spinner } from \"./Spinner\";\n\nexport function PageSpinner() {\n return (\n <div className=\"flex h-48 flex-col items-center justify-center gap-3\">\n <Spinner size=\"w-8 h-8\" />\n <span className=\"kicker\">loading</span>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Check, X } from \"../icons/index\";\n\nexport interface ToastProps {\n message: string;\n ok: boolean;\n durationMs?: number;\n}\n\nexport function Toast({ message, ok, durationMs = 5000 }: ToastProps) {\n const [progress, setProgress] = useState(100);\n const [visible, setVisible] = useState(false);\n const startRef = useRef<number | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const id = requestAnimationFrame(() => setVisible(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n useEffect(() => {\n const tick = (now: number) => {\n if (!startRef.current) startRef.current = now;\n const elapsed = now - startRef.current;\n setProgress(Math.max(0, 100 - (elapsed / durationMs) * 100));\n if (elapsed < durationMs) rafRef.current = requestAnimationFrame(tick);\n };\n rafRef.current = requestAnimationFrame(tick);\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, [durationMs]);\n\n const transform = visible\n ? \"opacity-100 translate-y-0\"\n : \"opacity-0 translate-y-2 sm:translate-x-4 sm:translate-y-0\";\n\n const borderColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\n const accentColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\n\n return createPortal(\n <div className=\"pointer-events-none fixed bottom-20 left-4 right-4 z-60 flex justify-center sm:bottom-auto sm:left-auto sm:right-5 sm:top-5 sm:justify-end\">\n <div\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`}\n style={{\n background: \"var(--color-ink-300)\",\n border: `1px solid ${borderColor}`,\n borderLeft: `3px solid ${borderColor}`,\n color: \"var(--color-txt-1)\",\n }}\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\" style={{ color: accentColor }}>\n {ok ? <Check size={12} /> : <X size={12} />}\n </span>\n <span className=\"flex-1 text-[12px] leading-snug sm:text-[13px]\" style={{ fontFamily: \"var(--font-mono)\" }}>\n {message}\n </span>\n <div\n className=\"absolute bottom-0 left-0 h-0.5 transition-none\"\n style={{ width: `${progress}%`, background: accentColor }}\n />\n </div>\n </div>,\n document.body,\n );\n}\n","import { createContext, useContext, useMemo, useState, type ReactNode } from \"react\";\nimport { Toast } from \"./Toast\";\n\nexport interface ToastState {\n message: string;\n ok: boolean;\n durationMs?: number;\n}\n\ninterface ToastContextValue {\n hideToast: () => void;\n showToast: (message: string, ok: boolean, durationMs?: number) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport interface ToastProviderProps {\n children?: ReactNode;\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toast, setToast] = useState<ToastState | null>(null);\n\n const value = useMemo<ToastContextValue>(() => ({\n hideToast: () => setToast(null),\n showToast: (message, ok, durationMs = 5000) => {\n setToast({ message, ok, durationMs });\n window.setTimeout(() => setToast(current => (\n current?.message === message && current?.ok === ok ? null : current\n )), durationMs);\n },\n }), []);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {toast ? <Toast message={toast.message} ok={toast.ok} durationMs={toast.durationMs} /> : null}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within ToastProvider\");\n }\n return context;\n}\n","import { Alert } from \"../icons/index\";\n\nexport interface FormErrorProps {\n message: string | null | undefined;\n className?: string;\n}\n\nexport function FormError({ message, className = \"\" }: FormErrorProps) {\n if (!message) return null;\n return (\n <div\n className={`flex items-start gap-2 px-3 py-2.5 text-sm ${className}`}\n style={{\n background: \"color-mix(in srgb, var(--color-warn) 8%, transparent)\",\n border: \"1px solid color-mix(in srgb, var(--color-warn) 25%, transparent)\",\n borderLeft: \"3px solid var(--color-warn)\",\n color: \"var(--color-warn)\",\n animation: \"var(--animate-scale-in)\",\n }}\n >\n <Alert size={14} className=\"shrink-0 mt-0.5\" />\n <span style={{ fontFamily: \"var(--font-mono)\", fontSize: 12 }}>{message}</span>\n </div>\n );\n}\n","import { Component, type ErrorInfo, type ReactNode } from \"react\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n}\n\ninterface DefaultErrorFallbackProps {\n title?: string;\n description?: string;\n label?: string;\n reloadLabel?: string;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { hasError: false };\n\n static getDerivedStateFromError(): ErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Unhandled UI error\", error, info);\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback ?? <DefaultErrorFallback />;\n }\n\n return this.props.children;\n }\n}\n\nexport function DefaultErrorFallback({\n title = \"Something went wrong\",\n description = \"An unexpected error occurred. Reload the page and try again.\",\n label = \"Tapiz UI · Runtime Error\",\n reloadLabel = \"Reload page\",\n}: DefaultErrorFallbackProps) {\n return (\n <div className=\"fixed inset-0 flex flex-col items-center justify-center overflow-hidden bg-ink-100 px-6\">\n <GridBg />\n <Spotlight color=\"rgba(255,100,100,0.06)\" />\n\n <div className=\"relative z-10 flex w-full max-w-sm animate-fade-in-up flex-col items-center gap-6 text-center\">\n <div>\n <div className=\"font-mono text-[clamp(72px,16vw,120px)] font-bold leading-none tracking-[-0.04em] text-border-hi\">\n 500\n </div>\n <div className=\"mt-1 h-0.5 w-full opacity-35 [background:linear-gradient(90deg,transparent,var(--color-warn),transparent)]\" />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-base font-semibold text-txt-1\">{title}</p>\n <p className=\"font-mono text-[11px] leading-relaxed text-txt-3\">{description}</p>\n </div>\n\n <div className=\"bg-[rgba(255,180,0,0.04)] px-2 py-1 font-mono text-[9px] uppercase tracking-[.2em] text-warn [border:1px_solid_rgba(255,180,0,0.2)]\">\n {label}\n </div>\n\n <div className=\"w-full\">\n <button\n type=\"button\"\n onClick={() => window.location.reload()}\n className=\"btn-primary w-full py-2.5 text-xs\"\n >\n {reloadLabel} →\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport function GridBg() {\n return (\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]\" />\n );\n}\n\nexport function Spotlight({ color }: { color: string }) {\n return (\n <div\n className=\"pointer-events-none absolute left-1/2 top-1/5 h-60 w-120 -translate-x-1/2\"\n style={{ background: `radial-gradient(ellipse at center, ${color} 0%, transparent 70%)` }}\n />\n );\n}\n","import { ReactNode, useId } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"../icons/index\";\n\nexport interface BaseModalProps {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n subtitle?: string;\n children: ReactNode;\n xShown?: boolean;\n icon?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n closeLabel?: string;\n}\n\nconst sizeClass: Record<NonNullable<BaseModalProps[\"size\"]>, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-2xl\",\n};\n\nexport function BaseModal({\n isOpen,\n onClose,\n title,\n subtitle,\n children,\n icon,\n xShown = false,\n size = \"md\",\n closeLabel = \"Close dialog\",\n}: BaseModalProps) {\n const titleId = useId();\n if (!isOpen) return null;\n\n return createPortal(\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4\"\n style={{ background: \"rgba(5,6,8,0.75)\", backdropFilter: \"blur(2px)\" }}\n onClick={(e) => e.target === e.currentTarget && onClose()}\n >\n <div\n className={`w-full ${sizeClass[size]} p-6 space-y-4`}\n style={{\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: \"2px solid var(--color-primary-300)\",\n animation: \"var(--animate-scale-in)\",\n }}\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div\n className=\"flex items-center justify-center w-10 h-10 shrink-0\"\n style={{ background: \"var(--color-ink-300)\", border: \"1px solid var(--color-border-hi)\", color: \"var(--color-primary-300)\" }}\n >\n {icon}\n </div>\n )}\n <div>\n <h3 id={titleId} style={{ fontFamily: \"var(--font-display)\", fontSize: 15, fontWeight: 600, color: \"var(--color-txt-1)\" }}>{title}</h3>\n {subtitle && (\n <p style={{ fontFamily: \"var(--font-mono)\", fontSize: 10, color: \"var(--color-primary-300)\", marginTop: 2, letterSpacing: \"0.1em\" }}>\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {xShown && (\n <button\n onClick={onClose}\n className=\"w-7 h-7 flex items-center justify-center\"\n style={{ color: \"var(--color-txt-3)\", border: \"1px solid transparent\" }}\n onMouseEnter={e => { (e.currentTarget as HTMLElement).style.color = \"var(--color-txt-1)\"; (e.currentTarget as HTMLElement).style.borderColor = \"var(--color-border-hi)\"; }}\n onMouseLeave={e => { (e.currentTarget as HTMLElement).style.color = \"var(--color-txt-3)\"; (e.currentTarget as HTMLElement).style.borderColor = \"transparent\"; }}\n aria-label={closeLabel}\n title={closeLabel}\n >\n <X size={14} />\n </button>\n )}\n </div>\n {children}\n </div>\n </div>,\n document.body,\n );\n}\n","import { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Button } from \"../forms/Button\";\nimport { X, Check, Trash } from \"../icons/index\";\n\nexport interface ConfirmDialogProps {\n title: string;\n description?: ReactNode;\n message?: ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n loading?: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n icon?: ReactNode;\n danger?: boolean;\n open?: boolean;\n}\n\nexport function ConfirmDialog({\n title,\n description,\n message,\n confirmLabel,\n cancelLabel,\n loading = false,\n onConfirm,\n onCancel,\n icon,\n danger = false,\n open = true,\n}: ConfirmDialogProps) {\n const resolvedConfirm = confirmLabel ?? \"Confirm\";\n const resolvedCancel = cancelLabel ?? \"Cancel\";\n const resolvedDescription = description ?? message;\n if (!open) return null;\n return createPortal(\n <div\n className=\"fixed inset-0 z-300 flex items-center justify-center px-4\"\n style={{ background: \"rgba(5,6,8,0.4)\", backdropFilter: \"blur(8px)\" }}\n onClick={onCancel}\n >\n <div\n className=\"relative w-full max-w-sm\"\n style={{\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: danger ? \"2px solid var(--color-danger, #f87171)\" : \"2px solid var(--color-primary-300)\",\n animation: \"var(--animate-scale-in)\",\n }}\n onClick={e => e.stopPropagation()}\n >\n <div className=\"p-6 flex flex-col gap-4\">\n {/* Icon + title row */}\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div\n className=\"flex items-center justify-center w-9 h-9 shrink-0\"\n style={{\n background: danger ? \"rgba(248,113,113,0.1)\" : \"rgba(94,231,255,0.08)\",\n border: danger ? \"1px solid rgba(248,113,113,0.25)\" : \"1px solid rgba(94,231,255,0.15)\",\n color: danger ? \"var(--color-danger, #f87171)\" : \"var(--color-primary-300)\",\n }}\n >\n {icon}\n </div>\n )}\n <p className=\"text-sm font-semibold\" style={{ color: \"var(--color-txt-1)\" }}>\n {title}\n </p>\n </div>\n\n {/* Description */}\n <p className=\"text-sm\" style={{ color: \"var(--color-txt-3)\" }}>\n {resolvedDescription}\n </p>\n\n {/* Actions */}\n <div className=\"flex items-center justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" icon={<X size={13} />} onClick={onCancel} disabled={loading}>\n {resolvedCancel}\n </Button>\n <Button\n variant={danger ? \"danger\" : \"primary\"}\n size=\"sm\"\n icon={danger ? <Trash size={13} /> : <Check size={13} />}\n onClick={onConfirm}\n loading={loading}\n >\n {resolvedConfirm}\n </Button>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface TooltipProps {\n text: string;\n children: ReactNode;\n position?: \"top\" | \"bottom\";\n align?: \"center\" | \"right\";\n width?: string;\n wFull?: boolean;\n}\n\nexport function Tooltip({ text, children, position = \"top\", align = \"center\", width = \"max-w-[200px]\", wFull }: TooltipProps) {\n const alignClass = align === \"right\" ? \"right-0\" : \"left-1/2 -translate-x-1/2\";\n return (\n <span className={`group relative inline-flex items-center${wFull ? \" w-full\" : \"\"}`}>\n {children}\n <span\n className={`pointer-events-none absolute ${alignClass} z-60 ${width} w-max px-2.5 py-1.5\n text-center text-[11px] leading-snug\n opacity-0 group-hover:opacity-100 transition-opacity duration-150\n ${position === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\"}`}\n style={{\n background: \"var(--color-ink-300)\",\n border: \"1px solid var(--color-border-hi)\",\n color: \"var(--color-txt-2)\",\n fontFamily: \"var(--font-mono)\",\n letterSpacing: \"0.04em\",\n }}\n >\n {text}\n <span\n className={`absolute left-1/2 -translate-x-1/2 w-0 h-0 border-x-4 border-x-transparent\n ${position === \"top\" ? \"top-full border-t-4\" : \"bottom-full border-b-4\"}`}\n style={position === \"top\"\n ? { borderTopColor: \"var(--color-border-hi)\" }\n : { borderBottomColor: \"var(--color-border-hi)\" }}\n />\n </span>\n </span>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\n\nexport interface CardProps {\n children: ReactNode;\n className?: string;\n hover?: boolean;\n style?: CSSProperties;\n}\n\nexport interface CardSectionProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Card({ children, className = \"\", hover = false, style }: CardProps) {\n return (\n <div className={`card ${hover ? \"card-hover transition-all\" : \"\"} ${className}`} style={style}>\n {children}\n </div>\n );\n}\n\nexport function CardHeader({ children, className = \"\" }: CardSectionProps) {\n return <div className={`border-b border-border px-5 py-3 ${className}`}>{children}</div>;\n}\n\nexport function CardBody({ children, className = \"\" }: CardSectionProps) {\n return <div className={`p-5 ${className}`}>{children}</div>;\n}\n","export interface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\n return <div aria-hidden=\"true\" className={`skeleton ${className}`} />;\n}\n","import { Skeleton } from \"./Skeleton\";\n\nexport function SkeletonCard({ className = \"\" }: { className?: string }) {\n return (\n <div className={`card ${className}`.trim()}>\n <Skeleton className=\"mb-3 h-4 w-2/5\" />\n <Skeleton className=\"mb-2 h-3 w-3/4\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n );\n}\n\nexport function SkeletonKpiCard({ delay = 0 }: { delay?: number }) {\n return (\n <div\n className=\"card animate-pulse\"\n style={{\n animationDelay: `${delay}ms`,\n minHeight: 142,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n padding: \"16px 18px\",\n borderLeft: \"3px solid var(--color-border-hi)\",\n }}\n >\n <Skeleton className=\"mb-1 h-2 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n <Skeleton className=\"mt-1 h-2 w-20\" />\n </div>\n );\n}\n\nexport function SkeletonBanner() {\n return (\n <div\n className=\"animate-pulse overflow-hidden p-5\"\n style={{\n background: \"var(--color-ink-300)\",\n border: \"1px solid var(--color-border)\",\n borderTop: \"2px solid var(--color-border-hi)\",\n }}\n >\n <Skeleton className=\"mb-2 h-3 w-24\" />\n <Skeleton className=\"mb-3 h-6 w-48\" />\n <div className=\"flex gap-4\">\n <Skeleton className=\"h-4 w-28\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-4 w-20\" />\n </div>\n </div>\n );\n}\n\nfunction SkeletonTableRow({ cols = 4 }: { cols?: number }) {\n const widths = [\"w-24\", \"w-40\", \"w-32\", \"w-20\", \"w-16\"];\n return (\n <tr className=\"border-b border-border\">\n {Array.from({ length: cols }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className={`h-4 ${widths[i % widths.length]}`} />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function SkeletonTable({ rows = 6, cols = 4 }: { rows?: number; cols?: number }) {\n return (\n <div className=\"card overflow-hidden p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border bg-ink-300\">\n {Array.from({ length: cols }).map((_, i) => (\n <th key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-3 w-16\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <SkeletonTableRow key={i} cols={cols} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function SkeletonPageHeader() {\n return (\n <div className=\"flex animate-pulse items-center justify-between\">\n <div>\n <Skeleton className=\"mb-2 h-7 w-40\" />\n <Skeleton className=\"h-4 w-24\" />\n </div>\n <Skeleton className=\"h-9 w-32\" />\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype Variant = \"default\" | \"success\" | \"warning\" | \"danger\" | \"muted\";\n\nconst variantClasses: Record<Variant, string> = {\n default: \"border-primary-300 text-primary-300\",\n success: \"border-good text-good\",\n warning: \"border-signal-400 text-signal-400\",\n danger: \"border-warn text-warn\",\n muted: \"border-txt-3 text-txt-3\",\n};\n\ninterface BadgeProps {\n children: ReactNode;\n variant?: Variant;\n className?: string;\n}\n\nexport function Badge({ children, variant = \"default\", className = \"\" }: BadgeProps) {\n return (\n <span\n className={`inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-widest ${variantClasses[variant]} ${className}`}\n >\n {children}\n </span>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { Info } from \"../icons/index\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n message?: string;\n icon?: ReactNode;\n}\n\nexport function EmptyState({ title, description, message, icon }: EmptyStateProps) {\n const resolvedTitle = title ?? message ?? \"No data\";\n\n return (\n <div className=\"border border-border bg-ink-200 px-4 py-10 text-center\">\n <div className=\"mb-2 flex justify-center text-txt-4\">\n {icon ?? <Info size={22} />}\n </div>\n <p className=\"font-mono text-[11px] tracking-widest text-txt-4\">{resolvedTitle}</p>\n {description ? (\n <p className=\"mt-1 font-mono text-[10px] text-txt-4 opacity-70\">{description}</p>\n ) : null}\n </div>\n );\n}\n\nexport function ErrorState({\n title = \"Failed to load\",\n error,\n}: {\n title?: string;\n error: Error | null;\n}) {\n return (\n <div className=\"border border-warn bg-ink-200 px-4 py-10 text-center\">\n <div className=\"mb-2 flex justify-center text-warn\">\n <Info size={22} />\n </div>\n <p className=\"font-mono text-[11px] tracking-widest text-warn\">{title}</p>\n {error ? <p className=\"mt-1 font-mono text-[10px] text-txt-3\">{error.message}</p> : null}\n </div>\n );\n}\n","import { Info, LockIcon } from \"../icons/index\";\n\ninterface StructuredInfoBannerProps {\n title: string;\n description: string;\n text?: never;\n variant?: never;\n className?: string;\n}\n\ninterface InlineInfoBannerProps {\n text: string;\n variant?: \"info\" | \"warn\" | \"lock\";\n className?: string;\n title?: never;\n description?: never;\n}\n\nexport type InfoBannerProps = StructuredInfoBannerProps | InlineInfoBannerProps;\n\nexport function InfoBanner(props: InfoBannerProps) {\n if (\"text\" in props) {\n const { text, variant = \"info\", className = \"\" } = props;\n const styles =\n variant === \"warn\"\n ? \"bg-warn/8 border-warn/25 text-warn\"\n : variant === \"lock\"\n ? \"bg-warn/8 border-warn/30 text-warn\"\n : \"bg-primary-500/10 border-primary-100 text-primary-500\";\n\n const icon = variant === \"lock\"\n ? <LockIcon size={14} className=\"mt-1 shrink-0\" />\n : <Info size={14} className=\"mt-1 shrink-0\" />;\n\n return (\n <div className={`flex items-start gap-2 border px-3 py-2.5 text-[13px] ${styles} ${className}`}>\n {icon}\n <p style={{ fontFamily: \"var(--font-mono)\" }}>{text}</p>\n </div>\n );\n }\n\n const { title, description, className = \"\" } = props;\n\n return (\n <div\n className={`px-4 py-3 ${className}`}\n style={{\n background: \"rgba(94,231,255,0.04)\",\n border: \"1px solid rgba(94,231,255,0.12)\",\n borderLeft: \"3px solid var(--color-primary-300)\",\n }}\n >\n <p\n className=\"mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest\"\n style={{ color: \"var(--color-primary-300)\" }}\n >\n {title}\n </p>\n <p className=\"font-mono text-[11px] leading-relaxed\" style={{ color: \"var(--color-txt-2)\" }}>\n {description}\n </p>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface PageHeaderProps {\n title: string;\n subtitle?: string;\n action?: ReactNode;\n icon?: ReactNode;\n className?: string;\n}\n\nexport function PageHeader({ title, subtitle, action, icon, className = \"\" }: PageHeaderProps) {\n return (\n <div\n className={`mb-5 flex flex-col gap-3 border-b border-border pb-4 animate-fade-in-up sm:flex-row sm:items-start sm:justify-between ${className}`.trim()}\n >\n <div>\n {subtitle ? <div className=\"kicker mb-1.5 text-primary-300!\">{subtitle}</div> : null}\n <div className=\"flex items-center gap-2.5\">\n {icon ? <span className=\"text-primary-300\">{icon}</span> : null}\n <h2 className=\"font-(--font-display) text-[22px] tracking-[-0.03em] text-txt-1\">\n {title}\n </h2>\n </div>\n </div>\n {action ? <div>{action}</div> : null}\n </div>\n );\n}\n","import type { CSSProperties, InputHTMLAttributes } from \"react\";\nimport { Search, X } from \"../icons/index\";\nimport { Input } from \"../forms/Input\";\n\nexport interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n wrapperClassName?: string;\n wrapperStyle?: CSSProperties;\n inputClassName?: string;\n iconClassName?: string;\n clearable?: boolean;\n clearTitle?: string;\n}\n\nexport function SearchInput({\n value,\n onChange,\n placeholder = \"Search\",\n wrapperClassName = \"\",\n wrapperStyle,\n inputClassName = \"\",\n iconClassName = \"text-txt-4\",\n clearable = true,\n clearTitle = \"Clear search\",\n ...props\n}: SearchInputProps) {\n return (\n <div className={`relative ${wrapperClassName}`.trim()} style={wrapperStyle}>\n <span className={`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 ${iconClassName}`.trim()}>\n <Search size={15} />\n </span>\n <Input\n {...props}\n type=\"text\"\n value={value}\n onChange={e => onChange(e.target.value)}\n placeholder={placeholder}\n className={`pl-9 ${inputClassName}`.trim()}\n />\n {clearable && value ? (\n <button\n type=\"button\"\n onClick={() => onChange(\"\")}\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\"\n title={clearTitle}\n >\n <X size={14} />\n </button>\n ) : null}\n </div>\n );\n}\n","import { ChevronLeft, ChevronRight } from \"../icons/index\";\n\nexport interface PaginationLabels {\n showing?: (args: { from: number; to: number; total: number }) => string;\n page?: (args: { page: number; totalPages: number }) => string;\n prev?: string;\n next?: string;\n prevTitle?: string;\n nextTitle?: string;\n}\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onChange: (page: number) => void;\n totalItems?: number;\n pageSize?: number;\n labels?: PaginationLabels;\n}\n\nfunction getPageNumbers(page: number, totalPages: number): (number | \"…\")[] {\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, i) => i + 1);\n const pages: (number | \"…\")[] = [1];\n if (page > 3) pages.push(\"…\");\n for (let i = Math.max(2, page - 1); i <= Math.min(totalPages - 1, page + 1); i += 1) pages.push(i);\n if (page < totalPages - 2) pages.push(\"…\");\n pages.push(totalPages);\n return pages;\n}\n\nconst defaultLabels: Required<PaginationLabels> = {\n showing: ({ from, to, total }) => `Showing ${from}-${to} of ${total}`,\n page: ({ page, totalPages }) => `Page ${page} of ${totalPages}`,\n prev: \"Prev\",\n next: \"Next\",\n prevTitle: \"Previous page\",\n nextTitle: \"Next page\",\n};\n\nexport function Pagination({ page, totalPages, onChange, totalItems, pageSize, labels }: PaginationProps) {\n if (totalPages <= 1) return null;\n\n const copy = { ...defaultLabels, ...labels };\n const pageNumbers = getPageNumbers(page, totalPages);\n const from = pageSize ? (page - 1) * pageSize + 1 : null;\n const to = pageSize && totalItems ? Math.min(page * pageSize, totalItems) : null;\n\n return (\n <div className=\"flex flex-col items-center justify-between gap-3 border-t border-border pt-3 sm:flex-row\">\n {totalItems != null && from != null && to != null ? (\n <span className=\"order-2 font-mono text-[12px] text-txt-4 sm:order-1\">\n {copy.showing({ from, to, total: totalItems })}\n </span>\n ) : (\n <span className=\"order-2 font-mono text-[11px] text-txt-4 sm:order-1\">\n {copy.page({ page, totalPages })}\n </span>\n )}\n\n <div className=\"order-1 flex items-center gap-1 sm:order-2\">\n <button\n type=\"button\"\n onClick={() => onChange(Math.max(1, page - 1))}\n disabled={page === 1}\n title={copy.prevTitle}\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\"\n >\n <ChevronLeft size={12} />\n <span className=\"hidden sm:inline\">{copy.prev}</span>\n </button>\n\n <div className=\"flex items-center gap-1\">\n {pageNumbers.map((entry, index) =>\n entry === \"…\" ? (\n <span key={`ellipsis-${index}`} className=\"w-7 text-center font-mono text-[11px] text-txt-4\">\n …\n </span>\n ) : (\n <button\n key={entry}\n type=\"button\"\n onClick={() => onChange(entry)}\n className={`h-7 w-7 border font-mono text-[11px] transition-colors ${\n page === entry\n ? \"border-primary-300 bg-primary-300/10 text-primary-300\"\n : \"border-border text-txt-3 hover:border-border-hi hover:text-txt-1\"\n }`}\n >\n {entry}\n </button>\n ),\n )}\n </div>\n\n <button\n type=\"button\"\n onClick={() => onChange(Math.min(totalPages, page + 1))}\n disabled={page >= totalPages}\n title={copy.nextTitle}\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\"\n >\n <span className=\"hidden sm:inline\">{copy.next}</span>\n <ChevronRight size={12} />\n </button>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface SectionTitleProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function SectionTitle({ children, className = \"\" }: SectionTitleProps) {\n return <h3 className={`mb-1 text-sm font-semibold text-txt-1 ${className}`.trim()}>{children}</h3>;\n}\n","import type { ReactNode } from \"react\";\n\nexport type StatusBadgeVariant =\n | \"default\"\n | \"active\"\n | \"inactive\"\n | \"warning\"\n | \"success\"\n | \"danger\"\n | \"pending\";\n\nexport interface StatusBadgeProps {\n label: ReactNode;\n variant?: StatusBadgeVariant;\n className?: string;\n}\n\nconst BASE =\n \"inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-medium uppercase tracking-[0.15em]\";\n\nconst variantStyles: Record<StatusBadgeVariant, string> = {\n default: \"border-border-hi text-txt-2\",\n active: \"border-primary-300 text-primary-300\",\n success: \"border-good text-good\",\n inactive: \"border-txt-4 text-txt-4\",\n warning: \"border-warn text-warn\",\n danger: \"border-warn text-warn\",\n pending: \"border-txt-3 text-txt-3\",\n};\n\nexport function StatusBadge({ label, variant = \"default\", className = \"\" }: StatusBadgeProps) {\n return <span className={`${BASE} ${variantStyles[variant]} ${className}`.trim()}>{label}</span>;\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Button } from \"../forms/Button\";\nimport { Spinner } from \"../feedback/Spinner\";\nimport { ChevronDown } from \"../icons/index\";\n\nexport interface ActionMenuItem {\n key: string;\n label: string;\n onSelect: () => void;\n icon?: ReactNode;\n danger?: boolean;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport interface ActionMenuProps {\n label: string;\n items: ActionMenuItem[];\n icon?: ReactNode;\n buttonSize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n buttonVariant?: \"primary\" | \"secondary\" | \"danger\" | \"ghost\" | \"success\" | \"warning\" | \"info\" | \"muted-primary\" | \"outline-primary\" | \"outline-secondary\" | \"outline-danger\" | \"outline-success\" | \"link\";\n buttonClassName?: string;\n menuClassName?: string;\n menuStyle?: CSSProperties;\n fullWidth?: boolean;\n closeLabel?: string;\n}\n\nconst defaultMenuStyle: CSSProperties = {\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: \"2px solid var(--color-primary-300)\",\n boxShadow: \"0 16px 48px -8px rgba(0,0,0,0.45)\",\n maxHeight: \"min(320px, calc(100vh - 180px))\",\n};\n\nconst itemBaseClass =\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\";\n\nexport function ActionMenu({\n label,\n items,\n icon,\n buttonSize = \"sm\",\n buttonVariant = \"secondary\",\n buttonClassName = \"\",\n menuClassName = \"absolute bottom-full right-0 z-50 mb-1 w-[min(20rem,calc(100vw-1.5rem))] max-w-[calc(100vw-1.5rem)] overflow-auto sm:min-w-52 sm:w-auto\",\n menuStyle,\n fullWidth = false,\n closeLabel,\n}: ActionMenuProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleOutside(event: MouseEvent) {\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n }\n\n document.addEventListener(\"mousedown\", handleOutside);\n return () => document.removeEventListener(\"mousedown\", handleOutside);\n }, []);\n\n return (\n <div ref={rootRef} className=\"relative\">\n <Button\n size={buttonSize}\n variant={buttonVariant}\n icon={icon}\n iconRight={<ChevronDown size={11} />}\n onClick={() => setOpen(value => !value)}\n className={buttonClassName}\n fullWidth={fullWidth}\n >\n {label}\n </Button>\n\n {open ? (\n <>\n <button\n type=\"button\"\n className=\"fixed inset-0 z-40 bg-black/10 backdrop-blur-[3px]\"\n aria-label={closeLabel ?? label}\n onClick={() => setOpen(false)}\n />\n <div className={menuClassName} style={{ ...defaultMenuStyle, ...menuStyle }}>\n {items.map((item, index) => (\n <div key={item.key}>\n {index > 0 && item.danger ? <div style={{ borderTop: \"1px solid var(--color-border)\" }} /> : null}\n <button\n type=\"button\"\n className={itemBaseClass}\n style={{ color: item.danger ? \"var(--color-warn)\" : \"var(--color-txt-2)\" }}\n disabled={item.disabled || item.loading}\n onClick={() => {\n setOpen(false);\n item.onSelect();\n }}\n >\n {item.loading ? (\n <Spinner color=\"text-[var(--color-txt-3)]\" />\n ) : (\n <span className={item.danger ? \"shrink-0 text-warn\" : \"shrink-0 text-primary-300\"}>{item.icon}</span>\n )}\n <span>{item.label}</span>\n </button>\n </div>\n ))}\n </div>\n </>\n ) : null}\n </div>\n );\n}\n","import { useMemo, useState, type ReactNode } from \"react\";\nimport { ChevronDown, ChevronUp } from \"../icons/index\";\nimport { DataTableRow } from \"./DataTableRow\";\nimport type { Column, ColumnAlign, ServerSort, SortDirection, SortState } from \"./types\";\n\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: Column<T>[];\n /** Stable unique key per row. */\n rowKey: (row: T) => string;\n isLoading?: boolean;\n /** Rendered (inside a full-width row) when there is no data. */\n emptyState?: ReactNode;\n onRowClick?: (row: T) => void;\n /** Number of skeleton rows shown while loading. Defaults to 8. */\n loadingRows?: number;\n /**\n * When provided, renders an extra right-aligned column at the end of every\n * row. The function receives the row and must return a `ReactNode` (e.g.\n * action buttons). When omitted, no extra column is added.\n */\n rowActions?: (row: T) => ReactNode;\n /**\n * When provided, disables internal client-side sort and delegates sorting to\n * the caller. Clicking a sortable column header calls `onSort(column.id)`.\n * `aria-sort` reflects `field` and `dir`.\n */\n serverSort?: ServerSort;\n /**\n * When provided, renders the node below the `<table>` inside the outer\n * border wrapper. No styling is added — callers own all padding/layout.\n */\n footer?: ReactNode;\n /**\n * When provided:\n * - The `<table>` is hidden on small screens (`hidden md:table`).\n * - A `<div className=\"md:hidden\">` is rendered before the table, mapping\n * each row to a card via this function (keyed by `rowKey(row)`).\n */\n mobileCard?: (row: T) => ReactNode;\n}\n\nfunction compareValues(\n a: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\n b: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\n): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n if (typeof a === \"boolean\" && typeof b === \"boolean\") return Number(a) - Number(b);\n return String(a).localeCompare(String(b));\n}\n\nfunction ariaSort(active: boolean, direction: SortDirection): \"ascending\" | \"descending\" | \"none\" {\n if (!active) return \"none\";\n return direction === \"asc\" ? \"ascending\" : \"descending\";\n}\n\n/**\n * Generic, accessible, client-sortable table.\n *\n * - Pass already-translated `ReactNode`s for headers and `emptyState`; the\n * component never hardcodes user-facing strings (full i18n compatibility).\n * - Sorting toggles asc/desc on sortable columns and is purely client-side\n * unless `serverSort` is provided.\n * - Rows are memoized and the sorted view is memoized via `useMemo`.\n * - Optional `rowActions`, `serverSort`, `footer`, and `mobileCard` props are\n * all additive — existing usages continue to work with zero changes.\n */\nexport function DataTable<T>({\n data,\n columns,\n rowKey,\n isLoading = false,\n emptyState,\n onRowClick,\n loadingRows = 8,\n rowActions,\n serverSort,\n footer,\n mobileCard,\n}: DataTableProps<T>) {\n const [sort, setSort] = useState<SortState | null>(null);\n\n // When serverSort is active, skip client-side sort entirely.\n const sortedData = useMemo(() => {\n if (serverSort) return data;\n if (!sort) return data;\n const column = columns.find((c) => c.id === sort.columnId);\n if (!column?.sortAccessor) return data;\n const accessor = column.sortAccessor;\n const factor = sort.direction === \"asc\" ? 1 : -1;\n return [...data].sort((a, b) => compareValues(accessor(a), accessor(b)) * factor);\n }, [data, columns, sort, serverSort]);\n\n const toggleSort = (columnId: string) => {\n if (serverSort) {\n serverSort.onSort(columnId);\n return;\n }\n setSort((prev) => {\n if (prev?.columnId !== columnId) return { columnId, direction: \"asc\" };\n return { columnId, direction: prev.direction === \"asc\" ? \"desc\" : \"asc\" };\n });\n };\n\n const hasActions = rowActions !== undefined;\n const colCount = columns.length + (hasActions ? 1 : 0);\n const tableClass = mobileCard !== undefined ? \"hidden md:table w-full text-sm table-collapse\" : \"w-full text-sm table-collapse\";\n\n return (\n <div className=\"border border-border overflow-x-auto\">\n {/* Mobile card slot — only present when mobileCard is provided */}\n {mobileCard !== undefined && (\n <div className=\"md:hidden\">\n {isLoading\n ? Array.from({ length: loadingRows }).map((_, i) => (\n <div key={i} className=\"h-16 animate-pulse bg-ink-300\" />\n ))\n : sortedData.length === 0\n ? emptyState\n : sortedData.map((row) => (\n <div key={rowKey(row)}>{mobileCard(row)}</div>\n ))}\n </div>\n )}\n\n <table className={tableClass}>\n <thead>\n <tr className=\"border-b border-border bg-ink-300\">\n {columns.map((column) => {\n const baseClass = `px-3 py-2.5 ${ALIGN_CLASS[column.align ?? \"left\"]} font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap`;\n\n if (!column.sortable || !column.sortAccessor) {\n return (\n <th key={column.id} scope=\"col\" className={baseClass}>\n {column.header}\n </th>\n );\n }\n\n // aria-sort: serverSort drives the active column; fall back to local sort state.\n const active = serverSort\n ? serverSort.field === column.id\n : sort?.columnId === column.id;\n const direction = serverSort\n ? serverSort.dir\n : (sort?.direction ?? \"asc\");\n\n return (\n <th\n key={column.id}\n scope=\"col\"\n aria-sort={ariaSort(active, direction)}\n className={baseClass}\n >\n <button\n type=\"button\"\n onClick={() => toggleSort(column.id)}\n className={`inline-flex items-center gap-1 select-none transition-colors hover:text-txt-1 ${\n active ? \"text-txt-1\" : \"\"\n }`}\n >\n {column.header}\n {active &&\n (direction === \"asc\" ? <ChevronUp size={12} /> : <ChevronDown size={12} />)}\n </button>\n </th>\n );\n })}\n {hasActions && (\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\" />\n )}\n </tr>\n </thead>\n <tbody>\n {isLoading ? (\n Array.from({ length: loadingRows }).map((_, rowIndex) => (\n <tr key={rowIndex} className=\"border-b border-border\">\n {Array.from({ length: colCount }).map((__, colIndex) => (\n <td key={colIndex} className=\"px-3 py-2\">\n <div className=\"h-4 bg-ink-300 rounded animate-pulse w-24\" />\n </td>\n ))}\n </tr>\n ))\n ) : sortedData.length === 0 ? (\n <tr>\n <td colSpan={colCount} className=\"px-4 py-10 text-center text-txt-4 text-sm font-mono\">\n {emptyState}\n </td>\n </tr>\n ) : (\n sortedData.map((row) => (\n <DataTableRow\n key={rowKey(row)}\n row={row}\n columns={columns}\n onRowClick={onRowClick}\n rowActions={rowActions}\n />\n ))\n )}\n </tbody>\n </table>\n\n {footer !== undefined && footer}\n </div>\n );\n}\n","import { memo, type ReactNode } from \"react\";\nimport type { Column, ColumnAlign } from \"./types\";\n\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\ninterface DataTableRowProps<T> {\n row: T;\n columns: Column<T>[];\n onRowClick?: (row: T) => void;\n rowActions?: (row: T) => ReactNode;\n}\n\nfunction DataTableRowInner<T>({ row, columns, onRowClick, rowActions }: DataTableRowProps<T>) {\n const clickable = Boolean(onRowClick);\n return (\n <tr\n onClick={clickable ? () => onRowClick?.(row) : undefined}\n className={`border-b border-border transition-colors hover:bg-ink-300/30 ${\n clickable ? \"cursor-pointer\" : \"\"\n }`}\n >\n {columns.map((column) => (\n <td\n key={column.id}\n className={`px-3 py-2 text-xs text-txt-3 ${ALIGN_CLASS[column.align ?? \"left\"]} ${\n column.className ?? \"\"\n }`}\n >\n {column.cell(row)}\n </td>\n ))}\n {rowActions !== undefined && (\n <td className=\"px-3 py-2 text-right\">{rowActions(row)}</td>\n )}\n </tr>\n );\n}\n\n/**\n * Memoized row. Re-renders only when its `row`, `columns`, or `onRowClick`\n * reference changes — keeping large lists cheap to re-render.\n *\n * `memo` strips generics, so we re-assert the generic signature on the export.\n */\nexport const DataTableRow = memo(DataTableRowInner) as typeof DataTableRowInner;\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","jsx","jsx","jsxs","jsx","variantClasses","jsx","jsxs","jsx","jsxs","className","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useEffect","useMemo","useState","jsx","jsxs","jsx","jsxs","ALIGN_CLASS","useState","useMemo"]}
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/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"],"sourcesContent":["import type React from \"react\";\n\nexport interface IconProps {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const base = (_d: unknown, size: number, style?: React.CSSProperties) => ({\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1.75,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n style,\n});\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Clipboard = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" />\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\" />\n <path d=\"M12 11h4M12 16h4M8 11h.01M8 16h.01\" />\n </svg>\n);\n\nexport const Home = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9 22 9 12 15 12 15 22\" />\n </svg>\n);\n\nexport const Scan = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\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\" />\n <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\" />\n </svg>\n);\n\nexport const Users = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n);\n\nexport const Book = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\" />\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\" />\n </svg>\n);\n\nexport const Calendar = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n </svg>\n);\n\nexport const CheckSquare = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"9 11 12 14 22 4\" />\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\n </svg>\n);\n\nexport const BarChart = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\n <line x1=\"2\" y1=\"20\" x2=\"22\" y2=\"20\" />\n </svg>\n);\n\nexport const Table = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M9 21V9\" />\n </svg>\n);\n\nexport const Report = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n);\n\nexport const QrCode = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\n <path d=\"M14 14h3v3h-3zM17 17h3v3h-3zM14 17h3\" />\n </svg>\n);\n\nexport const Layers = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\" />\n <polyline points=\"2 12 12 17 22 12\" />\n <polyline points=\"2 17 12 22 22 17\" />\n </svg>\n);\n\nexport const OfficeHours = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M8 3h8\" />\n <path d=\"M9 2v2M15 2v2\" />\n <rect x=\"4\" y=\"5\" width=\"16\" height=\"15\" rx=\"2\" />\n <path d=\"M4 10h16\" />\n <path d=\"M12 13v4\" />\n <path d=\"M12 13l2.5-1.5\" />\n </svg>\n);\n\nexport const FileUpload = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <polyline points=\"12 18 12 12\" />\n <polyline points=\"9 15 12 12 15 15\" />\n </svg>\n);\n\nexport const University = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M12 3l9 3H3l9-3z\" />\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"5\" y1=\"6\" x2=\"5\" y2=\"18\" />\n <line x1=\"10\" y1=\"6\" x2=\"10\" y2=\"18\" />\n <line x1=\"14\" y1=\"6\" x2=\"14\" y2=\"18\" />\n <line x1=\"19\" y1=\"6\" x2=\"19\" y2=\"18\" />\n <line x1=\"2\" y1=\"18\" x2=\"22\" y2=\"18\" />\n <line x1=\"2\" y1=\"21\" x2=\"22\" y2=\"21\" />\n </svg>\n);\n\nexport const Faculty = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.5}>\n {/* central tower */}\n <rect x=\"7\" y=\"2\" width=\"10\" height=\"19\" />\n {/* left wing */}\n <rect x=\"2\" y=\"8\" width=\"5\" height=\"13\" />\n {/* right wing */}\n <rect x=\"17\" y=\"8\" width=\"5\" height=\"13\" />\n {/* tower windows row 1 */}\n <rect x=\"9\" y=\"4\" width=\"2.5\" height=\"2.5\" />\n <rect x=\"12.5\" y=\"4\" width=\"2.5\" height=\"2.5\" />\n {/* tower windows row 2 */}\n <rect x=\"9\" y=\"8\" width=\"2.5\" height=\"2.5\" />\n <rect x=\"12.5\" y=\"8\" width=\"2.5\" height=\"2.5\" />\n {/* entrance */}\n <rect x=\"10\" y=\"15\" width=\"4\" height=\"6\" />\n {/* base line */}\n <line x1=\"1\" y1=\"21\" x2=\"23\" y2=\"21\" />\n </svg>\n);\n\nexport const GraduationCap = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M22 10v6M2 10l10-5 10 5-10 5z\" />\n <path d=\"M6 12v5c0 1.657 2.686 3 6 3s6-1.343 6-3v-5\" />\n </svg>\n);\n\nexport const Globe = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\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\" />\n </svg>\n);\n\nexport const CreditCard = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 10h20\" />\n </svg>\n);\n\nexport const HelpCircle = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <circle cx=\"12\" cy=\"17\" r=\".5\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n);\n\nexport const NavQrAttendance = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\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\" />\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\" />\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\" />\n <polyline points=\"14,16 16,18 20,13\" />\n </svg>\n);\n\nexport const NavScoresheet = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.3}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M3 14h18M9 9v9M15 9v9\" />\n </svg>\n);\n\nexport const NavAnalytics = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <path d=\"M3 3v18h18\" /><path d=\"M7 16l4-5 4 3 5-6\" />\n </svg>\n);\n\nexport const NavSecurity = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.8}>\n <path d=\"M12 2L4 6v6c0 5.25 3.5 9.74 8 11 4.5-1.26 8-5.75 8-11V6L12 2Z\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Edit = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n);\n\nexport const Trash = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"3 6 5 6 21 6\" />\n <path d=\"M19 6l-1 14H6L5 6M10 11v6M14 11v6M9 6V4h6v2\" />\n </svg>\n);\n\nexport const Plus = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n);\n\nexport const Download = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n);\n\nexport const Refresh = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n);\n\nexport const UserPlus = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"19\" y1=\"8\" x2=\"19\" y2=\"14\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n);\n\nexport const UserMinus = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <line x1=\"22\" y1=\"11\" x2=\"16\" y2=\"11\" />\n </svg>\n);\n\nexport const UserCog = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <circle cx=\"19\" cy=\"19\" r=\"2\" />\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\" />\n </svg>\n);\n\nexport const Check = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\nexport const X = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2.5} className={className}>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\n\nexport const Menu = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\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\" />\n </svg>\n);\n\nexport const Grid = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" />\n <rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" />\n <rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" />\n </svg>\n);\n\nexport const GitCompare = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M18 21l4-4-4-4\" />\n <path d=\"M6 21l-4-4 4-4\" />\n <path d=\"M14 3l4 4-4 4\" />\n <path d=\"M2 21V3a2 2 0 0 1 2-2h6\" />\n <path d=\"M22 21V7a2 2 0 0 0-2-2h-6\" />\n </svg>\n);\nexport const History = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n <path d=\"M12 7v5l4 2\" />\n </svg>\n);\n\nexport const RotateCcw = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n);\n\nexport const Pdf = ({ size = 14, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 1920 1920\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\n <g fillRule=\"evenodd\">\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\"/>\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\"/>\n </g>\n </svg>\n);\n\nexport const Printer = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M6 9V3h12v6\" />\n <path d=\"M6 21h12v-6H6v6z\" />\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\" />\n <circle cx=\"17\" cy=\"13\" r=\"1\" />\n <path d=\"M8 13h3\" />\n </svg>\n);\n\nexport const ExternalLink = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n);\n\nexport const Image = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" />\n <polyline points=\"21 15 16 10 5 21\" />\n </svg>\n);\n\nexport const Star = ({ size = 14, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n\nexport const AppleIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 814 1000\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n\nexport const GooglePlayIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 512 512\"\n fill=\"currentColor\"\n style={style}\n className={className}\n >\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\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Mail = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\n <path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n </svg>\n);\n\nexport const LockIcon = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n);\n\nexport const TwoFAIcon = ({ size = 16, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {/* Smartphone */}\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n {/* Key overlay */}\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" />\n <line x1=\"11\" y1=\"10\" x2=\"16\" y2=\"10\" />\n <line x1=\"13\" y1=\"7.5\" x2=\"13\" y2=\"6\" />\n <line x1=\"15\" y1=\"8.5\" x2=\"15\" y2=\"7.5\" />\n </svg>\n);\n\nexport const FingerprintIcon = ({ size = 20, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" />\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\" />\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\" />\n <path d=\"M2 12a10 10 0 0 1 18-6\" />\n <path d=\"M2 16h.01\" />\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\" />\n <path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" />\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\" />\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\" />\n </svg>\n);\n\nexport const Eye = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n);\n\nexport const EyeOff = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\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\" />\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\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n);\n\nexport const User = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nexport const UserCheck = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <polyline points=\"16 11 18 13 22 9\" />\n </svg>\n);\n\nexport const Hash = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\" />\n <line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\" />\n <line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\" />\n <line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\" />\n </svg>\n);\n\nexport const LogOut = ({ size = 20, className, style }: IconProps) => (\n <svg\n {...base(null, size, style)}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"15\" y1=\"12\" x2=\"5\" y2=\"12\" />\n <polyline points=\"9 8 5 12 9 16\" />\n <path d=\"M19 4 h-4 v16 h4 Z\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Alert = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\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\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n);\n\nexport const Info = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n);\n\nexport const CheckCircle = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n);\n\nexport const Ban = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\" />\n </svg>\n);\n\nexport const ArrowRight = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\n </svg>\n);\n\nexport const ArrowLeft = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"M19 12H5M12 19l-7-7 7-7\" />\n </svg>\n);\n\nexport const ChevronLeft = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\nexport const ChevronRight = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nexport const ChevronDown = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport const ChevronUp = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n);\n\nexport const Search = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"M21 21l-4.35-4.35\" />\n </svg>\n);\n\nexport const Bell = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.73 21a2 2 0 0 1-3.46 0\" />\n </svg>\n);\n\nexport const Shield = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n);\n\nexport const Copy = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n);\n\nexport const Repeat = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} strokeWidth={2} className={className}>\n <polyline points=\"17 1 21 5 17 9\" />\n <path d=\"M3 11V9a4 4 0 0 1 4-4h14\" />\n <polyline points=\"7 23 3 19 7 15\" />\n <path d=\"M21 13v2a4 4 0 0 1-4 4H3\" />\n </svg>\n);\n\nexport const FileText = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" />\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" />\n <polyline points=\"10 9 9 9 8 9\" />\n </svg>\n);\n\nexport const Trophy = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <path d=\"M6 9H4.5a2.5 2.5 0 0 1 0-5H6\" />\n <path d=\"M18 9h1.5a2.5 2.5 0 0 0 0-5H18\" />\n <path d=\"M4 22h16\" />\n <path d=\"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22\" />\n <path d=\"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22\" />\n <path d=\"M18 2H6v7a6 6 0 0 0 12 0V2Z\" />\n </svg>\n);\n\nexport const Monitor = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\" />\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\" />\n </svg>\n);\n\nexport const Smartphone = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n </svg>\n);\n\nexport const Tablet = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"12\" y1=\"18\" x2=\"12.01\" y2=\"18\" />\n </svg>\n);\n\n// Aktivnost – linija otkucaja (pulse)\nexport const ActivityMenu = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"8\" width=\"3\" height=\"8\" rx=\"1\" />\n <rect x=\"9\" y=\"4\" width=\"3\" height=\"16\" rx=\"1\" />\n <rect x=\"15\" y=\"6\" width=\"3\" height=\"12\" rx=\"1\" />\n </svg>\n);\n// Poređenje – dva stuba sa strelicama za upoređivanje\nexport const Compare = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\n <rect x=\"9\" y=\"9\" width=\"12\" height=\"12\" rx=\"1.5\" fill=\"none\" />\n <line x1=\"3\" y1=\"21\" x2=\"21\" y2=\"3\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeDasharray=\"3 2\" />\n </svg>\n);\n\n// Presečni status – Venn dijagram (dva presječena kruga)\nexport const Intersect = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\n <circle cx=\"9\" cy=\"12\" r=\"6\" />\n <circle cx=\"15\" cy=\"12\" r=\"6\" />\n </svg>\n);\n\nexport const Megaphone = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={1.75}>\n <path d=\"M3 11l19-9-9 19-2-8-8-2z\" />\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const Sun = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\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\" />\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\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" /><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\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\" />\n </svg>\n);\n\nexport const Moon = ({ size = 15, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className} strokeWidth={2}>\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n);\n\nexport const Gear = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\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\" />\n </svg>\n);\n\nexport const Clock = ({ size = 13, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n);\n","interface LogoMarkProps {\n size?: number;\n className?: string;\n bgClassName?: string;\n bgFill?: string;\n bgOpacity?: number;\n}\n\n// Brutalist square logo – ugaone zagrade + slovo 't' sa eksponentom 'LMS'\nexport const LogoMark = ({\n size = 28,\n className,\n}: LogoMarkProps) => (\n <svg\n width={size}\n height={size}\n className={`${className} w-[${size}px] h-[${size}px]`}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n >\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"none\" />\n <path d=\"M5 9 L5 5 L9 5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M23 5 L27 5 L27 9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M5 23 L5 27 L9 27\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" />\n <path d=\"M23 27 L27 27 L27 23\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"square\" className=\"opacity-50\" />\n\n <g fill=\"currentColor\">\n <rect x=\"15\" y=\"10\" width=\"2\" height=\"14\" />\n <rect x=\"10\" y=\"10\" width=\"12\" height=\"2\" />\n </g>\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const FormIcon = ({ size = 18, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M8 7h8M8 11h8M8 15h5\" />\n </svg>\n);\n\nexport const CalendarWeek = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n <path d=\"M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01\" />\n </svg>\n);\n\nexport const CalendarMonth = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n <rect x=\"7\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\n <rect x=\"13\" y=\"14\" width=\"4\" height=\"4\" rx=\"0.5\" />\n <rect x=\"7\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\n <rect x=\"13\" y=\"18\" width=\"4\" height=\"2\" rx=\"0.5\" />\n </svg>\n);\n\nexport const NumberIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"4\" y=\"18\" fontSize=\"18\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">12</text>\n </svg>\n);\n\nexport const TextIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"6\" y=\"18\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">T</text>\n </svg>\n);\n\nexport const FormulaIcon = ({ size = 14, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <text x=\"3\" y=\"16\" fontSize=\"20\" fontWeight=\"bold\" fill=\"currentColor\" stroke=\"none\">ƒ</text>\n <text x=\"12\" y=\"16\" fontSize=\"16\" fill=\"currentColor\" stroke=\"none\">x</text>\n </svg>\n);\n","import { IconProps, base } from \"./BaseIcons\";\n\nexport const RefreshCw = ({ size = 15, className, spinning, style }: IconProps & { spinning?: boolean }) => (\n <svg {...base(null, size, style)} className={`${spinning ? \"animate-spin\" : \"\"} ${className ?? \"\"}`}>\n <path d=\"M23 4v6h-6\" />\n <path d=\"M1 20v-6h6\" />\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10\" />\n <path d=\"M20.49 15a9 9 0 0 1-14.85 3.36L1 14\" />\n </svg>\n);\n\nexport const Database = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\" />\n <path d=\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\" />\n </svg>\n);\n\nexport const Server = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <rect x=\"2\" y=\"14\" width=\"20\" height=\"8\" rx=\"2\" ry=\"2\" />\n <line x1=\"6\" y1=\"6\" x2=\"6\" y2=\"6.01\" />\n <line x1=\"6\" y1=\"18\" x2=\"6\" y2=\"18.01\" />\n </svg>\n);\n\nexport const Activity = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\" />\n </svg>\n);\n\nexport const Cpu = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\" ry=\"2\" />\n <rect x=\"9\" y=\"9\" width=\"6\" height=\"6\" />\n <line x1=\"9\" y1=\"1\" x2=\"9\" y2=\"4\" />\n <line x1=\"15\" y1=\"1\" x2=\"15\" y2=\"4\" />\n <line x1=\"9\" y1=\"20\" x2=\"9\" y2=\"23\" />\n <line x1=\"15\" y1=\"20\" x2=\"15\" y2=\"23\" />\n <line x1=\"1\" y1=\"9\" x2=\"4\" y2=\"9\" />\n <line x1=\"1\" y1=\"15\" x2=\"4\" y2=\"15\" />\n <line x1=\"20\" y1=\"9\" x2=\"23\" y2=\"9\" />\n <line x1=\"20\" y1=\"15\" x2=\"23\" y2=\"15\" />\n </svg>\n);\n\nexport const Zap = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\n </svg>\n);\n\nexport const HardDrive = ({ size = 16, className, style }: IconProps) => (\n <svg {...base(null, size, style)} className={className}>\n <line x1=\"22\" y1=\"12\" x2=\"2\" y2=\"12\" />\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\" />\n <line x1=\"6\" y1=\"16\" x2=\"6.01\" y2=\"16\" />\n <line x1=\"10\" y1=\"16\" x2=\"10.01\" y2=\"16\" />\n </svg>\n);\n","import { X, Grid, UserMinus, UserCog, History, ExternalLink } from \"./ActionIcons\";\nimport { LockIcon, LogOut, User, UserCheck, EyeOff } from \"./AuthIcons\";\nimport { BarChart, Book, Calendar, CheckSquare, Clipboard, Faculty, Home, Layers, OfficeHours, QrCode, Report, Scan, Table, University, Users } from \"./NavigationIcons\";\nimport { ActivityMenu, Compare, Info, Intersect, Megaphone, Repeat, FileText } from \"./FeedbackIcons\";\nimport { Gear } from \"./SettingsIcons\";\nimport { CalendarWeek, FormIcon } from \"./FormsIcons\";\nimport { Zap } from \"./StatusIcons\";\n\nexport const SectionIcons = {\n studenti: <Users size={13} />,\n nastava: <Book size={13} />,\n evidencija: <CheckSquare size={13} />,\n analitika: <BarChart size={13} />,\n forme: <FormIcon size={13} />,\n nastavaS: <CalendarWeek size={13} />,\n evidencijaS:<CheckSquare size={13} />,\n};\n\nexport const Icons = {\n clipboard: <Faculty size={18} />,\n postClipboard: <Clipboard size={18} />,\n university: <University size={18} />,\n users: <Users size={18} />,\n book: <Book size={18} />,\n layers: <Layers size={18} />,\n officeHours: <OfficeHours size={18} />,\n calendar: <Calendar size={18} />,\n calendarAlt: <CalendarWeek size={18} />,\n checkSquare: <CheckSquare size={18} />,\n barChart: <BarChart size={18} />,\n qrCode: <QrCode size={18} />,\n home: <Home size={18} />,\n scan: <Scan size={18} />,\n lock: <LockIcon size={16} />,\n logOut: <LogOut size={16} />,\n logOutAlt: <LogOut size={16} />,\n user: <User size={16} />,\n cancel: <X size={16} />,\n report: <Report size={18} />,\n table: <Table size={18} />,\n gear: <Gear size={16} />,\n formIcon: <FormIcon size={18} />,\n grades: <BarChart size={18} />,\n activity: <ActivityMenu size={18} />,\n zap: <Zap size={18} />,\n compare: <Compare size={18} />,\n intersect: <Intersect size={18} />,\n repeat: <Repeat size={18} />,\n info: <Info size={16} />,\n todos: <CheckSquare size={18} />,\n eyeOff: <EyeOff size={18} />,\n userMinus: <UserMinus size={18} />,\n fileText: <FileText size={18} />,\n megaphone: <Megaphone size={18} />,\n grid: <Grid size={18} />,\n userCheck: <UserCheck size={18} />,\n fm: <UserCog size={18} />,\n history: <History size={18} />,\n externalLink: <ExternalLink size={18} />\n};\n","import { createElement, isValidElement } from \"react\";\nimport type { ComponentType, MouseEvent, ReactNode } from \"react\";\nimport { Spinner } from \"../feedback/Spinner\";\n\ntype Variant =\n | \"primary\"\n | \"secondary\"\n | \"danger\"\n | \"ghost\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"muted-primary\"\n | \"outline-primary\"\n | \"outline-secondary\"\n | \"outline-danger\"\n | \"outline-success\"\n | \"link\";\n\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface ButtonProps {\n children?: ReactNode;\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n disabled?: boolean;\n loading?: boolean;\n variant?: Variant;\n size?: Size;\n icon?: ButtonIcon;\n iconRight?: ButtonIcon;\n className?: string;\n type?: \"button\" | \"submit\" | \"reset\";\n title?: string;\n fullWidth?: boolean;\n}\n\ntype ButtonIcon = ReactNode | ComponentType<{\n size?: number | string;\n strokeWidth?: number;\n className?: string;\n}>;\n\nconst TOKEN_BASE = \"inline-flex items-center justify-center gap-2 cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-150\";\n\nconst variantClasses: Record<Variant, string> = {\n primary: \"btn-primary\",\n secondary: \"btn-secondary\",\n danger: \"btn-danger\",\n\n ghost: `${TOKEN_BASE} font-medium border border-transparent\n text-[var(--color-txt-3)] hover:border-[var(--color-primary-300)] hover:text-[var(--color-primary-300)]`,\n\n success: `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\n bg-transparent hover:bg-[rgba(77,214,163,0.08)]`,\n\n warning: `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\n bg-transparent hover:bg-[rgba(255,122,77,0.08)]`,\n\n info: `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n bg-transparent hover:bg-[rgba(94,231,255,0.08)]`,\n\n \"muted-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n bg-[rgba(94,231,255,0.06)] hover:bg-[rgba(94,231,255,0.12)]`,\n\n \"outline-primary\": `${TOKEN_BASE} border border-[var(--color-primary-300)] text-[var(--color-primary-300)]\n hover:bg-[rgba(94,231,255,0.08)]`,\n\n \"outline-secondary\": `${TOKEN_BASE} border border-[var(--color-border-hi)] text-[var(--color-txt-2)]\n hover:border-[var(--color-txt-2)] hover:text-[var(--color-txt-1)]`,\n\n \"outline-danger\": `${TOKEN_BASE} border border-[var(--color-warn)] text-[var(--color-warn)]\n hover:bg-[rgba(255,122,77,0.08)]`,\n\n \"outline-success\": `${TOKEN_BASE} border border-[var(--color-good)] text-[var(--color-good)]\n hover:bg-[rgba(77,214,163,0.08)]`,\n\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\",\n};\n\nconst sizeClasses: Record<Size, string> = {\n xs: \"px-2 py-1 text-xs gap-1\",\n sm: \"px-3 py-1.5 text-xs gap-1.5\",\n md: \"px-4 py-2 text-sm gap-2\",\n lg: \"px-5 py-2.5 text-sm gap-2\",\n xl: \"px-6 py-3 text-base gap-2.5\",\n};\n\nexport function Button({\n children,\n onClick,\n disabled,\n loading,\n variant = \"primary\",\n size = \"md\",\n icon,\n iconRight,\n className = \"\",\n type = \"button\",\n title,\n fullWidth,\n}: ButtonProps) {\n const isDisabled = disabled || loading;\n const isLink = variant === \"link\";\n const shouldApplySize = !isLink;\n const renderedIcon = renderIcon(icon);\n const renderedIconRight = renderIcon(iconRight);\n\n return (\n <button\n type={type}\n onClick={onClick}\n disabled={isDisabled}\n title={title}\n className={[\n variantClasses[variant],\n shouldApplySize ? sizeClasses[size] : \"\",\n fullWidth ? \"w-full\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n >\n {loading\n ? <Spinner color={variant === \"primary\" ? \"text-black\" : \"text-[var(--color-txt-2)]\"} />\n : renderedIcon ? <span>{renderedIcon}</span> : null}\n {children}\n {!loading && renderedIconRight}\n </button>\n );\n}\n\nfunction renderIcon(icon?: ButtonIcon) {\n if (!icon) return null;\n if (isValidElement(icon)) return icon;\n if (typeof icon === \"function\") {\n return createElement(icon, { size: 14, strokeWidth: 1.75 });\n }\n return icon;\n}\n","export interface SpinnerProps {\n size?: string;\n color?: string;\n}\n\nexport const Spinner = ({ size = \"w-3 h-3\", color = \"text-primary-700\" }: SpinnerProps) => (\n <svg\n className={`inline-block ${size} animate-spin ${color}`}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray=\"31.4 31.4\"\n strokeDashoffset=\"15.7\"\n />\n </svg>\n);\n","import type { InputHTMLAttributes } from \"react\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n}\n\nexport function Input({ className = \"\", invalid = false, ...props }: InputProps) {\n return (\n <input\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { SelectHTMLAttributes } from \"react\";\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport function Select({ className = \"\", invalid = false, ...props }: SelectProps) {\n return (\n <select\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport function Textarea({ className = \"\", invalid = false, ...props }: TextareaProps) {\n return (\n <textarea\n {...props}\n className={[\n \"input-field\",\n invalid ? \"border-warn focus:border-warn\" : \"\",\n className,\n ].filter(Boolean).join(\" \")}\n />\n );\n}\n","import type { LabelHTMLAttributes, ReactNode } from \"react\";\n\nexport interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n children: ReactNode;\n}\n\nexport function FieldLabel({ children, className = \"\", ...props }: FieldLabelProps) {\n return (\n <label {...props} className={`kicker mb-1 block ${className}`.trim()}>\n {children}\n </label>\n );\n}\n","import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport interface FieldHintProps extends HTMLAttributes<HTMLParagraphElement> {\n children: ReactNode;\n}\n\nexport function FieldHint({ children, className = \"\", ...props }: FieldHintProps) {\n return (\n <p {...props} className={`font-mono text-[10px] text-txt-4 ${className}`.trim()}>\n {children}\n </p>\n );\n}\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeMap = {\n sm: { box: \"w-3.5 h-3.5\", icon: 10, text: \"text-xs\", gap: \"gap-1.5\" },\n md: { box: \"w-4 h-4\", icon: 11, text: \"text-sm\", gap: \"gap-2\" },\n lg: { box: \"w-5 h-5\", icon: 13, text: \"text-base\", gap: \"gap-2.5\" },\n} as const;\n\nexport function Checkbox({\n label,\n size = \"md\",\n className = \"\",\n id: providedId,\n checked,\n defaultChecked,\n onChange,\n ...props\n}: CheckboxProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const s = sizeMap[size];\n\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isChecked = isControlled ? checked : internalChecked;\n const [focused, setFocused] = useState(false);\n\n return (\n <label\n htmlFor={id}\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\n >\n <span className=\"relative shrink-0\">\n <input\n {...props}\n id={id}\n type=\"checkbox\"\n checked={isControlled ? checked : internalChecked}\n onChange={(e) => {\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e);\n }}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n className=\"sr-only\"\n />\n <span\n className={`\n flex items-center justify-center ${s.box}\n border transition-all duration-150\n ${isChecked\n ? \"bg-primary-300 border-primary-300\"\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\n }\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\n `}\n >\n {isChecked && (\n <svg\n width={s.icon}\n height={s.icon}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"square\"\n >\n <polyline points=\"1.5,6 4.5,9.5 10.5,2.5\" />\n </svg>\n )}\n </span>\n </span>\n\n {label && (\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\n {label}\n </span>\n )}\n </label>\n );\n}\n","import { type InputHTMLAttributes, useId, useState } from \"react\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeMap = {\n sm: { outer: \"w-3.5 h-3.5\", inner: \"w-1.5 h-1.5\", text: \"text-xs\", gap: \"gap-1.5\" },\n md: { outer: \"w-4 h-4\", inner: \"w-2 h-2\", text: \"text-sm\", gap: \"gap-2\" },\n lg: { outer: \"w-5 h-5\", inner: \"w-2.5 h-2.5\", text: \"text-base\", gap: \"gap-2.5\" },\n} as const;\n\nexport function RadioButton({\n label,\n size = \"md\",\n className = \"\",\n id: providedId,\n checked,\n defaultChecked,\n onChange,\n ...props\n}: RadioButtonProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const s = sizeMap[size];\n\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isChecked = isControlled ? checked : internalChecked;\n const [focused, setFocused] = useState(false);\n\n return (\n <label\n htmlFor={id}\n className={`inline-flex items-center ${s.gap} cursor-pointer select-none group ${props.disabled ? \"opacity-50 cursor-not-allowed pointer-events-none\" : \"\"} ${className}`}\n >\n <span className=\"relative shrink-0\">\n <input\n {...props}\n id={id}\n type=\"radio\"\n checked={isControlled ? checked : internalChecked}\n onChange={(e) => {\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e);\n }}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n className=\"sr-only\"\n />\n {/* outer ring — square to match app aesthetic, full for radio feel */}\n <span\n className={`\n flex items-center justify-center ${s.outer}\n rounded-full border transition-all duration-150\n ${isChecked\n ? \"bg-ink-400 border-primary-300 shadow-[0_0_0_1px_var(--color-primary-300)]\"\n : \"bg-ink-400 border-border-hi group-hover:border-primary-400\"\n }\n ${focused ? \"ring-1 ring-primary-300\" : \"\"}\n `}\n >\n {isChecked && (\n <span className={`${s.inner} rounded-full bg-primary-300`} />\n )}\n </span>\n </span>\n\n {label && (\n <span className={`${s.text} text-txt-2 group-hover:text-txt-1 transition-colors duration-150`}>\n {label}\n </span>\n )}\n </label>\n );\n}\n","import { Spinner } from \"./Spinner\";\n\nexport function PageSpinner() {\n return (\n <div className=\"flex h-48 flex-col items-center justify-center gap-3\">\n <Spinner size=\"w-8 h-8\" />\n <span className=\"kicker\">loading</span>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Check, X } from \"../icons/index\";\n\nexport interface ToastProps {\n message: string;\n ok: boolean;\n durationMs?: number;\n}\n\nexport function Toast({ message, ok, durationMs = 5000 }: ToastProps) {\n const [progress, setProgress] = useState(100);\n const [visible, setVisible] = useState(false);\n const startRef = useRef<number | null>(null);\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n const id = requestAnimationFrame(() => setVisible(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n useEffect(() => {\n const tick = (now: number) => {\n if (!startRef.current) startRef.current = now;\n const elapsed = now - startRef.current;\n setProgress(Math.max(0, 100 - (elapsed / durationMs) * 100));\n if (elapsed < durationMs) rafRef.current = requestAnimationFrame(tick);\n };\n rafRef.current = requestAnimationFrame(tick);\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, [durationMs]);\n\n const transform = visible\n ? \"opacity-100 translate-y-0\"\n : \"opacity-0 translate-y-2 sm:translate-x-4 sm:translate-y-0\";\n\n const borderColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\n const accentColor = ok ? \"var(--color-good)\" : \"var(--color-warn)\";\n\n return createPortal(\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\">\n <div\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`}\n style={{\n background: \"var(--color-ink-300)\",\n border: `1px solid ${borderColor}`,\n borderLeft: `3px solid ${borderColor}`,\n color: \"var(--color-txt-1)\",\n }}\n >\n <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\" style={{ color: accentColor }}>\n {ok ? <Check size={12} /> : <X size={12} />}\n </span>\n <span className=\"flex-1 text-[12px] leading-snug sm:text-[13px]\" style={{ fontFamily: \"var(--font-mono)\" }}>\n {message}\n </span>\n <div\n className=\"absolute bottom-0 left-0 h-0.5 transition-none\"\n style={{ width: `${progress}%`, background: accentColor }}\n />\n </div>\n </div>,\n document.body,\n );\n}\n","import { createContext, useContext, useMemo, useState, type ReactNode } from \"react\";\nimport { Toast } from \"./Toast\";\n\nexport interface ToastState {\n message: string;\n ok: boolean;\n durationMs?: number;\n}\n\ninterface ToastContextValue {\n hideToast: () => void;\n showToast: (message: string, ok: boolean, durationMs?: number) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport interface ToastProviderProps {\n children?: ReactNode;\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toast, setToast] = useState<ToastState | null>(null);\n\n const value = useMemo<ToastContextValue>(() => ({\n hideToast: () => setToast(null),\n showToast: (message, ok, durationMs = 5000) => {\n setToast({ message, ok, durationMs });\n window.setTimeout(() => setToast(current => (\n current?.message === message && current?.ok === ok ? null : current\n )), durationMs);\n },\n }), []);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n {toast ? <Toast message={toast.message} ok={toast.ok} durationMs={toast.durationMs} /> : null}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within ToastProvider\");\n }\n return context;\n}\n","import { Alert } from \"../icons/index\";\n\nexport interface FormErrorProps {\n message: string | null | undefined;\n className?: string;\n}\n\nexport function FormError({ message, className = \"\" }: FormErrorProps) {\n if (!message) return null;\n return (\n <div\n className={`flex items-start gap-2 px-3 py-2.5 text-sm ${className}`}\n style={{\n background: \"color-mix(in srgb, var(--color-warn) 8%, transparent)\",\n border: \"1px solid color-mix(in srgb, var(--color-warn) 25%, transparent)\",\n borderLeft: \"3px solid var(--color-warn)\",\n color: \"var(--color-warn)\",\n animation: \"var(--animate-scale-in)\",\n }}\n >\n <Alert size={14} className=\"shrink-0 mt-0.5\" />\n <span style={{ fontFamily: \"var(--font-mono)\", fontSize: 12 }}>{message}</span>\n </div>\n );\n}\n","import { Component, type ErrorInfo, type ReactNode } from \"react\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n}\n\ninterface DefaultErrorFallbackProps {\n title?: string;\n description?: string;\n label?: string;\n reloadLabel?: string;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { hasError: false };\n\n static getDerivedStateFromError(): ErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Unhandled UI error\", error, info);\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallback ?? <DefaultErrorFallback />;\n }\n\n return this.props.children;\n }\n}\n\nexport function DefaultErrorFallback({\n title = \"Something went wrong\",\n description = \"An unexpected error occurred. Reload the page and try again.\",\n label = \"Tapiz UI · Runtime Error\",\n reloadLabel = \"Reload page\",\n}: DefaultErrorFallbackProps) {\n return (\n <div\n className=\"fixed inset-0 flex flex-col items-center justify-center overflow-hidden px-6\"\n style={{ background: \"var(--color-ink-100)\" }}\n >\n <GridBg />\n <Spotlight color=\"rgba(255,100,100,0.06)\" />\n\n <div\n className=\"relative z-10 flex w-full max-w-sm flex-col items-center gap-6 text-center\"\n style={{ animation: \"var(--animate-fade-in-up)\" }}\n >\n <div>\n <div\n className=\"font-mono font-bold leading-none\"\n style={{ fontSize: \"clamp(72px,16vw,120px)\", color: \"var(--color-border-hi)\", letterSpacing: \"-0.04em\" }}\n >\n 500\n </div>\n <div\n className=\"mt-1 h-0.5 w-full\"\n style={{ background: \"linear-gradient(90deg,transparent,rgba(255,80,80,0.7),transparent)\", opacity: 0.5 }}\n />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-base font-semibold\" style={{ color: \"var(--color-txt-1)\" }}>{title}</p>\n <p className=\"font-mono text-[11px] leading-relaxed\" style={{ color: \"var(--color-txt-3)\" }}>{description}</p>\n </div>\n\n <div\n className=\"font-mono text-[9px] uppercase px-2 py-1\"\n style={{\n letterSpacing: \".2em\",\n color: \"rgba(255,80,80,0.9)\",\n border: \"1px solid rgba(255,80,80,0.25)\",\n background: \"rgba(255,80,80,0.05)\",\n }}\n >\n {label}\n </div>\n\n <div className=\"w-full\">\n <button\n type=\"button\"\n onClick={() => window.location.reload()}\n style={{\n width: \"100%\",\n padding: \"10px\",\n fontSize: \"12px\",\n background: \"var(--color-primary-300)\",\n color: \"var(--color-ink-100)\",\n border: \"none\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-mono)\",\n letterSpacing: \"0.05em\",\n }}\n >\n {reloadLabel} →\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport function GridBg() {\n return (\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]\" />\n );\n}\n\nexport function Spotlight({ color }: { color: string }) {\n return (\n <div\n className=\"pointer-events-none absolute left-1/2 top-1/5 h-60 w-120 -translate-x-1/2\"\n style={{ background: `radial-gradient(ellipse at center, ${color} 0%, transparent 70%)` }}\n />\n );\n}\n","import { ReactNode, useId } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"../icons/index\";\n\nexport interface BaseModalProps {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n subtitle?: string;\n children: ReactNode;\n xShown?: boolean;\n icon?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n closeLabel?: string;\n}\n\nconst sizeClass: Record<NonNullable<BaseModalProps[\"size\"]>, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-2xl\",\n};\n\nexport function BaseModal({\n isOpen,\n onClose,\n title,\n subtitle,\n children,\n icon,\n xShown = false,\n size = \"md\",\n closeLabel = \"Close dialog\",\n}: BaseModalProps) {\n const titleId = useId();\n if (!isOpen) return null;\n\n return createPortal(\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4\"\n style={{ background: \"rgba(5,6,8,0.75)\", backdropFilter: \"blur(2px)\" }}\n onClick={(e) => e.target === e.currentTarget && onClose()}\n >\n <div\n className={`w-full ${sizeClass[size]} p-6 space-y-4`}\n style={{\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: \"2px solid var(--color-primary-300)\",\n animation: \"var(--animate-scale-in)\",\n }}\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div\n className=\"flex items-center justify-center w-10 h-10 shrink-0\"\n style={{ background: \"var(--color-ink-300)\", border: \"1px solid var(--color-border-hi)\", color: \"var(--color-primary-300)\" }}\n >\n {icon}\n </div>\n )}\n <div>\n <h3 id={titleId} style={{ fontFamily: \"var(--font-display)\", fontSize: 15, fontWeight: 600, color: \"var(--color-txt-1)\" }}>{title}</h3>\n {subtitle && (\n <p style={{ fontFamily: \"var(--font-mono)\", fontSize: 10, color: \"var(--color-primary-300)\", marginTop: 2, letterSpacing: \"0.1em\" }}>\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {xShown && (\n <button\n onClick={onClose}\n className=\"w-7 h-7 flex items-center justify-center\"\n style={{ color: \"var(--color-txt-3)\", border: \"1px solid transparent\" }}\n onMouseEnter={e => { (e.currentTarget as HTMLElement).style.color = \"var(--color-txt-1)\"; (e.currentTarget as HTMLElement).style.borderColor = \"var(--color-border-hi)\"; }}\n onMouseLeave={e => { (e.currentTarget as HTMLElement).style.color = \"var(--color-txt-3)\"; (e.currentTarget as HTMLElement).style.borderColor = \"transparent\"; }}\n aria-label={closeLabel}\n title={closeLabel}\n >\n <X size={14} />\n </button>\n )}\n </div>\n {children}\n </div>\n </div>,\n document.body,\n );\n}\n","import { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Button } from \"../forms/Button\";\nimport { X, Check, Trash } from \"../icons/index\";\n\nexport interface ConfirmDialogProps {\n title: string;\n description?: ReactNode;\n message?: ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n loading?: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n icon?: ReactNode;\n danger?: boolean;\n open?: boolean;\n}\n\nexport function ConfirmDialog({\n title,\n description,\n message,\n confirmLabel,\n cancelLabel,\n loading = false,\n onConfirm,\n onCancel,\n icon,\n danger = false,\n open = true,\n}: ConfirmDialogProps) {\n const resolvedConfirm = confirmLabel ?? \"Confirm\";\n const resolvedCancel = cancelLabel ?? \"Cancel\";\n const resolvedDescription = description ?? message;\n if (!open) return null;\n return createPortal(\n <div\n className=\"fixed inset-0 z-300 flex items-center justify-center px-4\"\n style={{ background: \"rgba(5,6,8,0.4)\", backdropFilter: \"blur(8px)\" }}\n onClick={onCancel}\n >\n <div\n className=\"relative w-full max-w-sm\"\n style={{\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: danger ? \"2px solid var(--color-danger, #f87171)\" : \"2px solid var(--color-primary-300)\",\n animation: \"var(--animate-scale-in)\",\n }}\n onClick={e => e.stopPropagation()}\n >\n <div className=\"p-6 flex flex-col gap-4\">\n {/* Icon + title row */}\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div\n className=\"flex items-center justify-center w-9 h-9 shrink-0\"\n style={{\n background: danger ? \"rgba(248,113,113,0.1)\" : \"rgba(94,231,255,0.08)\",\n border: danger ? \"1px solid rgba(248,113,113,0.25)\" : \"1px solid rgba(94,231,255,0.15)\",\n color: danger ? \"var(--color-danger, #f87171)\" : \"var(--color-primary-300)\",\n }}\n >\n {icon}\n </div>\n )}\n <p className=\"text-sm font-semibold\" style={{ color: \"var(--color-txt-1)\" }}>\n {title}\n </p>\n </div>\n\n {/* Description */}\n <p className=\"text-sm\" style={{ color: \"var(--color-txt-3)\" }}>\n {resolvedDescription}\n </p>\n\n {/* Actions */}\n <div className=\"flex items-center justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" icon={<X size={13} />} onClick={onCancel} disabled={loading}>\n {resolvedCancel}\n </Button>\n <Button\n variant={danger ? \"danger\" : \"primary\"}\n size=\"sm\"\n icon={danger ? <Trash size={13} /> : <Check size={13} />}\n onClick={onConfirm}\n loading={loading}\n >\n {resolvedConfirm}\n </Button>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface TooltipProps {\n text: string;\n children: ReactNode;\n position?: \"top\" | \"bottom\";\n align?: \"center\" | \"right\";\n width?: string;\n wFull?: boolean;\n}\n\nexport function Tooltip({ text, children, position = \"top\", align = \"center\", width = \"max-w-[200px]\", wFull }: TooltipProps) {\n const alignClass = align === \"right\" ? \"right-0\" : \"left-1/2 -translate-x-1/2\";\n return (\n <span className={`group relative inline-flex items-center${wFull ? \" w-full\" : \"\"}`}>\n {children}\n <span\n className={`pointer-events-none absolute ${alignClass} ${width} w-max px-2.5 py-1.5\n text-center text-[11px] leading-snug\n opacity-0 group-hover:opacity-100 transition-opacity duration-150\n ${position === \"top\" ? \"bottom-full mb-2\" : \"top-full mt-2\"}`}\n style={{\n zIndex: 60,\n background: \"var(--color-ink-300)\",\n border: \"1px solid var(--color-border-hi)\",\n color: \"var(--color-txt-2)\",\n fontFamily: \"var(--font-mono)\",\n letterSpacing: \"0.04em\",\n }}\n >\n {text}\n <span\n className={`absolute left-1/2 -translate-x-1/2 w-0 h-0 border-x-4 border-x-transparent\n ${position === \"top\" ? \"top-full border-t-4\" : \"bottom-full border-b-4\"}`}\n style={position === \"top\"\n ? { borderTopColor: \"var(--color-border-hi)\" }\n : { borderBottomColor: \"var(--color-border-hi)\" }}\n />\n </span>\n </span>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\n\nexport interface CardProps {\n children: ReactNode;\n className?: string;\n hover?: boolean;\n style?: CSSProperties;\n}\n\nexport interface CardSectionProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Card({ children, className = \"\", hover = false, style }: CardProps) {\n return (\n <div className={`card ${hover ? \"card-hover transition-all\" : \"\"} ${className}`} style={style}>\n {children}\n </div>\n );\n}\n\nexport function CardHeader({ children, className = \"\" }: CardSectionProps) {\n return <div className={`border-b border-border px-5 py-3 ${className}`}>{children}</div>;\n}\n\nexport function CardBody({ children, className = \"\" }: CardSectionProps) {\n return <div className={`p-5 ${className}`}>{children}</div>;\n}\n","export interface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\n return <div aria-hidden=\"true\" className={`skeleton ${className}`} />;\n}\n","import { Skeleton } from \"./Skeleton\";\n\nexport function SkeletonCard({ className = \"\" }: { className?: string }) {\n return (\n <div className={`card ${className}`.trim()}>\n <Skeleton className=\"mb-3 h-4 w-2/5\" />\n <Skeleton className=\"mb-2 h-3 w-3/4\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n );\n}\n\nexport function SkeletonKpiCard({ delay = 0 }: { delay?: number }) {\n return (\n <div\n className=\"card animate-pulse\"\n style={{\n animationDelay: `${delay}ms`,\n minHeight: 142,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n padding: \"16px 18px\",\n borderLeft: \"3px solid var(--color-border-hi)\",\n }}\n >\n <Skeleton className=\"mb-1 h-2 w-24\" />\n <Skeleton className=\"h-8 w-16\" />\n <Skeleton className=\"mt-1 h-2 w-20\" />\n </div>\n );\n}\n\nexport function SkeletonBanner() {\n return (\n <div\n className=\"animate-pulse overflow-hidden p-5\"\n style={{\n background: \"var(--color-ink-300)\",\n border: \"1px solid var(--color-border)\",\n borderTop: \"2px solid var(--color-border-hi)\",\n }}\n >\n <Skeleton className=\"mb-2 h-3 w-24\" />\n <Skeleton className=\"mb-3 h-6 w-48\" />\n <div className=\"flex gap-4\">\n <Skeleton className=\"h-4 w-28\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-4 w-20\" />\n </div>\n </div>\n );\n}\n\nfunction SkeletonTableRow({ cols = 4 }: { cols?: number }) {\n const widths = [\"w-24\", \"w-40\", \"w-32\", \"w-20\", \"w-16\"];\n return (\n <tr className=\"border-b border-border\">\n {Array.from({ length: cols }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <Skeleton className={`h-4 ${widths[i % widths.length]}`} />\n </td>\n ))}\n </tr>\n );\n}\n\nexport function SkeletonTable({ rows = 6, cols = 4 }: { rows?: number; cols?: number }) {\n return (\n <div className=\"card overflow-hidden p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border bg-ink-300\">\n {Array.from({ length: cols }).map((_, i) => (\n <th key={i} className=\"px-4 py-3\">\n <Skeleton className=\"h-3 w-16\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: rows }).map((_, i) => (\n <SkeletonTableRow key={i} cols={cols} />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function SkeletonPageHeader() {\n return (\n <div className=\"flex animate-pulse items-center justify-between\">\n <div>\n <Skeleton className=\"mb-2 h-7 w-40\" />\n <Skeleton className=\"h-4 w-24\" />\n </div>\n <Skeleton className=\"h-9 w-32\" />\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype Variant = \"default\" | \"success\" | \"warning\" | \"danger\" | \"muted\";\n\nconst variantClasses: Record<Variant, string> = {\n default: \"border-primary-300 text-primary-300\",\n success: \"border-good text-good\",\n warning: \"border-signal-400 text-signal-400\",\n danger: \"border-warn text-warn\",\n muted: \"border-txt-3 text-txt-3\",\n};\n\ninterface BadgeProps {\n children: ReactNode;\n variant?: Variant;\n className?: string;\n}\n\nexport function Badge({ children, variant = \"default\", className = \"\" }: BadgeProps) {\n return (\n <span\n className={`inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-bold uppercase tracking-widest ${variantClasses[variant]} ${className}`}\n >\n {children}\n </span>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { Info } from \"../icons/index\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n message?: string;\n icon?: ReactNode;\n}\n\nexport function EmptyState({ title, description, message, icon }: EmptyStateProps) {\n const resolvedTitle = title ?? message ?? \"No data\";\n\n return (\n <div className=\"border border-border bg-ink-200 px-4 py-10 text-center\">\n <div className=\"mb-2 flex justify-center text-txt-4\">\n {icon ?? <Info size={22} />}\n </div>\n <p className=\"font-mono text-[11px] tracking-widest text-txt-4\">{resolvedTitle}</p>\n {description ? (\n <p className=\"mt-1 font-mono text-[10px] text-txt-4 opacity-70\">{description}</p>\n ) : null}\n </div>\n );\n}\n\nexport function ErrorState({\n title = \"Failed to load\",\n error,\n}: {\n title?: string;\n error: Error | null;\n}) {\n return (\n <div className=\"border border-warn bg-ink-200 px-4 py-10 text-center\">\n <div className=\"mb-2 flex justify-center text-warn\">\n <Info size={22} />\n </div>\n <p className=\"font-mono text-[11px] tracking-widest text-warn\">{title}</p>\n {error ? <p className=\"mt-1 font-mono text-[10px] text-txt-3\">{error.message}</p> : null}\n </div>\n );\n}\n","import { Info, LockIcon } from \"../icons/index\";\n\ninterface StructuredInfoBannerProps {\n title: string;\n description: string;\n text?: never;\n variant?: never;\n className?: string;\n}\n\ninterface InlineInfoBannerProps {\n text: string;\n variant?: \"info\" | \"warn\" | \"lock\";\n className?: string;\n title?: never;\n description?: never;\n}\n\nexport type InfoBannerProps = StructuredInfoBannerProps | InlineInfoBannerProps;\n\nexport function InfoBanner(props: InfoBannerProps) {\n if (\"text\" in props) {\n const { text, variant = \"info\", className = \"\" } = props;\n const styles =\n variant === \"warn\"\n ? \"bg-warn/8 border-warn/25 text-warn\"\n : variant === \"lock\"\n ? \"bg-warn/8 border-warn/30 text-warn\"\n : \"bg-primary-500/10 border-primary-100 text-primary-500\";\n\n const icon = variant === \"lock\"\n ? <LockIcon size={14} className=\"mt-1 shrink-0\" />\n : <Info size={14} className=\"mt-1 shrink-0\" />;\n\n return (\n <div className={`app-info-banner flex items-start gap-2 border px-3 py-2.5 text-[13px] ${styles} ${className}`}>\n {icon}\n <p style={{ fontFamily: \"var(--font-mono)\" }}>{text}</p>\n </div>\n );\n }\n\n const { title, description, className = \"\" } = props;\n\n return (\n <div\n className={`app-info-banner px-4 py-3 ${className}`}\n style={{\n background: \"rgba(94,231,255,0.04)\",\n border: \"1px solid rgba(94,231,255,0.12)\",\n borderLeft: \"3px solid var(--color-primary-300)\",\n }}\n >\n <p\n className=\"mb-0.5 font-mono text-[10px] font-semibold uppercase tracking-widest\"\n style={{ color: \"var(--color-primary-300)\" }}\n >\n {title}\n </p>\n <p className=\"font-mono text-[11px] leading-relaxed\" style={{ color: \"var(--color-txt-2)\" }}>\n {description}\n </p>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface PageHeaderProps {\n title: string;\n subtitle?: string;\n action?: ReactNode;\n icon?: ReactNode;\n banner?: ReactNode;\n className?: string;\n}\n\nexport function PageHeader({ title, subtitle, action, icon, banner, className = \"\" }: PageHeaderProps) {\n return (\n <div\n className={`page-header mb-5 flex flex-col gap-3 border-b border-border pb-4 animate-fade-in-up ${className}`.trim()}\n >\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n {subtitle ? <div className=\"kicker mb-1.5\">{subtitle}</div> : null}\n <div className=\"flex items-center gap-2.5\">\n {icon ? <span className=\"text-primary-300\">{icon}</span> : null}\n <h2 className=\"font-(--font-display) text-[22px] tracking-[-0.03em] text-txt-1\">\n {title}\n </h2>\n </div>\n </div>\n {action ? <div>{action}</div> : null}\n </div>\n {banner ? banner : null}\n </div>\n );\n}\n","import type { CSSProperties, InputHTMLAttributes } from \"react\";\nimport { Search, X } from \"../icons/index\";\nimport { Input } from \"../forms/Input\";\n\nexport interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string;\n onChange: (value: string) => void;\n wrapperClassName?: string;\n wrapperStyle?: CSSProperties;\n inputClassName?: string;\n iconClassName?: string;\n clearable?: boolean;\n clearTitle?: string;\n}\n\nexport function SearchInput({\n value,\n onChange,\n placeholder = \"Search\",\n wrapperClassName = \"\",\n wrapperStyle,\n inputClassName = \"\",\n iconClassName = \"text-txt-4\",\n clearable = true,\n clearTitle = \"Clear search\",\n ...props\n}: SearchInputProps) {\n return (\n <div className={`relative ${wrapperClassName}`.trim()} style={wrapperStyle}>\n <span className={`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 ${iconClassName}`.trim()}>\n <Search size={15} />\n </span>\n <Input\n {...props}\n type=\"text\"\n value={value}\n onChange={e => onChange(e.target.value)}\n placeholder={placeholder}\n className={`pl-9 ${inputClassName}`.trim()}\n />\n {clearable && value ? (\n <button\n type=\"button\"\n onClick={() => onChange(\"\")}\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\"\n title={clearTitle}\n >\n <X size={14} />\n </button>\n ) : null}\n </div>\n );\n}\n","import { ChevronLeft, ChevronRight } from \"../icons/index\";\n\nexport interface PaginationLabels {\n showing?: (args: { from: number; to: number; total: number }) => string;\n page?: (args: { page: number; totalPages: number }) => string;\n prev?: string;\n next?: string;\n prevTitle?: string;\n nextTitle?: string;\n}\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onChange: (page: number) => void;\n totalItems?: number;\n pageSize?: number;\n labels?: PaginationLabels;\n}\n\nfunction getPageNumbers(page: number, totalPages: number): (number | \"…\")[] {\n if (totalPages <= 7) return Array.from({ length: totalPages }, (_, i) => i + 1);\n const pages: (number | \"…\")[] = [1];\n if (page > 3) pages.push(\"…\");\n for (let i = Math.max(2, page - 1); i <= Math.min(totalPages - 1, page + 1); i += 1) pages.push(i);\n if (page < totalPages - 2) pages.push(\"…\");\n pages.push(totalPages);\n return pages;\n}\n\nconst defaultLabels: Required<PaginationLabels> = {\n showing: ({ from, to, total }) => `Showing ${from}-${to} of ${total}`,\n page: ({ page, totalPages }) => `Page ${page} of ${totalPages}`,\n prev: \"Prev\",\n next: \"Next\",\n prevTitle: \"Previous page\",\n nextTitle: \"Next page\",\n};\n\nexport function Pagination({ page, totalPages, onChange, totalItems, pageSize, labels }: PaginationProps) {\n if (totalPages <= 1) return null;\n\n const copy = { ...defaultLabels, ...labels };\n const pageNumbers = getPageNumbers(page, totalPages);\n const from = pageSize ? (page - 1) * pageSize + 1 : null;\n const to = pageSize && totalItems ? Math.min(page * pageSize, totalItems) : null;\n\n return (\n <div className=\"flex flex-col items-center justify-between gap-3 border-t border-border pt-3 sm:flex-row\">\n {totalItems != null && from != null && to != null ? (\n <span className=\"order-2 font-mono text-[12px] text-txt-4 sm:order-1\">\n {copy.showing({ from, to, total: totalItems })}\n </span>\n ) : (\n <span className=\"order-2 font-mono text-[11px] text-txt-4 sm:order-1\">\n {copy.page({ page, totalPages })}\n </span>\n )}\n\n <div className=\"order-1 flex items-center gap-1 sm:order-2\">\n <button\n type=\"button\"\n onClick={() => onChange(Math.max(1, page - 1))}\n disabled={page === 1}\n title={copy.prevTitle}\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\"\n >\n <ChevronLeft size={12} />\n <span className=\"hidden sm:inline\">{copy.prev}</span>\n </button>\n\n <div className=\"flex items-center gap-1\">\n {pageNumbers.map((entry, index) =>\n entry === \"…\" ? (\n <span key={`ellipsis-${index}`} className=\"w-7 text-center font-mono text-[11px] text-txt-4\">\n …\n </span>\n ) : (\n <button\n key={entry}\n type=\"button\"\n onClick={() => onChange(entry)}\n className={`h-7 w-7 border font-mono text-[11px] transition-colors ${\n page === entry\n ? \"border-primary-300 bg-primary-300/10 text-primary-300\"\n : \"border-border text-txt-3 hover:border-border-hi hover:text-txt-1\"\n }`}\n >\n {entry}\n </button>\n ),\n )}\n </div>\n\n <button\n type=\"button\"\n onClick={() => onChange(Math.min(totalPages, page + 1))}\n disabled={page >= totalPages}\n title={copy.nextTitle}\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\"\n >\n <span className=\"hidden sm:inline\">{copy.next}</span>\n <ChevronRight size={12} />\n </button>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface SectionTitleProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function SectionTitle({ children, className = \"\" }: SectionTitleProps) {\n return <h3 className={`mb-1 text-sm font-semibold text-txt-1 ${className}`.trim()}>{children}</h3>;\n}\n","import type { ReactNode } from \"react\";\n\nexport type StatusBadgeVariant =\n | \"default\"\n | \"active\"\n | \"inactive\"\n | \"warning\"\n | \"success\"\n | \"danger\"\n | \"pending\";\n\nexport interface StatusBadgeProps {\n label: ReactNode;\n variant?: StatusBadgeVariant;\n className?: string;\n}\n\nconst BASE =\n \"inline-flex items-center border px-2 py-0.5 font-mono text-[9px] font-medium uppercase tracking-[0.15em]\";\n\nconst variantStyles: Record<StatusBadgeVariant, string> = {\n default: \"border-border-hi text-txt-2\",\n active: \"border-primary-300 text-primary-300\",\n success: \"border-good text-good\",\n inactive: \"border-txt-4 text-txt-4\",\n warning: \"border-warn text-warn\",\n danger: \"border-warn text-warn\",\n pending: \"border-txt-3 text-txt-3\",\n};\n\nexport function StatusBadge({ label, variant = \"default\", className = \"\" }: StatusBadgeProps) {\n return <span className={`${BASE} ${variantStyles[variant]} ${className}`.trim()}>{label}</span>;\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Button } from \"../forms/Button\";\nimport { Spinner } from \"../feedback/Spinner\";\nimport { ChevronDown } from \"../icons/index\";\n\nexport interface ActionMenuItem {\n key: string;\n label: string;\n onSelect: () => void;\n icon?: ReactNode;\n danger?: boolean;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport interface ActionMenuProps {\n label: string;\n items: ActionMenuItem[];\n icon?: ReactNode;\n buttonSize?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n buttonVariant?: \"primary\" | \"secondary\" | \"danger\" | \"ghost\" | \"success\" | \"warning\" | \"info\" | \"muted-primary\" | \"outline-primary\" | \"outline-secondary\" | \"outline-danger\" | \"outline-success\" | \"link\";\n buttonClassName?: string;\n menuClassName?: string;\n menuStyle?: CSSProperties;\n fullWidth?: boolean;\n closeLabel?: string;\n}\n\nconst defaultMenuStyle: CSSProperties = {\n background: \"var(--color-ink-200)\",\n border: \"1px solid var(--color-border-hi)\",\n borderTop: \"2px solid var(--color-primary-300)\",\n boxShadow: \"0 16px 48px -8px rgba(0,0,0,0.45)\",\n maxHeight: \"min(320px, calc(100vh - 180px))\",\n};\n\nconst itemBaseClass =\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\";\n\ninterface MenuPosition {\n top?: number;\n bottom?: number;\n left: number;\n width: number;\n maxHeight?: number;\n}\n\nexport function ActionMenu({\n label,\n items,\n icon,\n buttonSize = \"sm\",\n buttonVariant = \"secondary\",\n buttonClassName = \"\",\n menuClassName,\n menuStyle,\n fullWidth = false,\n closeLabel,\n}: ActionMenuProps) {\n const [open, setOpen] = useState(false);\n const [pos, setPos] = useState<MenuPosition | null>(null);\n const btnRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (!open || !btnRef.current) return;\n\n const updatePosition = () => {\n const buttonElement = btnRef.current;\n if (!buttonElement) return;\n const rect = buttonElement.getBoundingClientRect();\n const viewportPadding = 8;\n const menuOffset = 4;\n const menuW = Math.min(320, window.innerWidth - viewportPadding * 2);\n const left = Math.max(\n viewportPadding,\n Math.min(rect.right - menuW, window.innerWidth - menuW - viewportPadding),\n );\n const estimatedMenuHeight = Math.min(320, items.length * 44 + 16);\n const spaceAbove = Math.max(0, rect.top - viewportPadding - menuOffset);\n const spaceBelow = Math.max(0, window.innerHeight - rect.bottom - viewportPadding - menuOffset);\n const preferBelow = spaceBelow >= estimatedMenuHeight || spaceBelow >= spaceAbove;\n\n if (preferBelow) {\n setPos({\n top: Math.min(rect.bottom + menuOffset, window.innerHeight - viewportPadding),\n left,\n width: menuW,\n maxHeight: Math.max(120, spaceBelow),\n });\n return;\n }\n\n setPos({\n bottom: Math.max(window.innerHeight - rect.top + menuOffset, viewportPadding),\n left,\n width: menuW,\n maxHeight: Math.max(120, spaceAbove),\n });\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n document.addEventListener(\"scroll\", updatePosition, true);\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n document.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [items.length, open]);\n\n useEffect(() => {\n if (!open) return;\n function handle(e: MouseEvent | KeyboardEvent) {\n if (e instanceof KeyboardEvent) { if (e.key === \"Escape\") setOpen(false); return; }\n const target = e.target as Node;\n if (btnRef.current?.contains(target) || menuRef.current?.contains(target)) return;\n setOpen(false);\n }\n document.addEventListener(\"mousedown\", handle);\n document.addEventListener(\"keydown\", handle);\n return () => { document.removeEventListener(\"mousedown\", handle); document.removeEventListener(\"keydown\", handle); };\n }, [open]);\n\n const menuNode = open && pos ? (\n <>\n <div className=\"fixed inset-0 z-9998\" onClick={() => setOpen(false)} />\n <div\n ref={menuRef}\n className={menuClassName ?? \"overflow-auto\"}\n style={{\n position: \"fixed\",\n top: pos.top !== undefined ? pos.top : undefined,\n bottom: pos.bottom !== undefined ? pos.bottom : undefined,\n left: pos.left,\n width: pos.width,\n maxWidth: \"calc(100vw - 16px)\",\n zIndex: 9999,\n ...defaultMenuStyle,\n maxHeight: pos.maxHeight ?? defaultMenuStyle.maxHeight,\n ...menuStyle,\n }}\n >\n {items.map((item, index) => (\n <div key={item.key}>\n {index > 0 && item.danger ? <div style={{ borderTop: \"1px solid var(--color-border)\" }} /> : null}\n <button\n type=\"button\"\n className={itemBaseClass}\n style={{ color: item.danger ? \"var(--color-warn)\" : \"var(--color-txt-2)\" }}\n disabled={item.disabled || item.loading}\n onClick={() => {\n setOpen(false);\n item.onSelect();\n }}\n >\n {item.loading ? (\n <Spinner color=\"text-[var(--color-txt-3)]\" />\n ) : (\n <span className={item.danger ? \"shrink-0 text-warn\" : \"shrink-0 text-primary-300\"}>{item.icon}</span>\n )}\n <span>{item.label}</span>\n </button>\n </div>\n ))}\n </div>\n </>\n ) : null;\n\n return (\n <div ref={btnRef} className={fullWidth ? \"relative w-full\" : \"relative inline-block max-w-full\"}>\n <Button\n size={buttonSize}\n variant={buttonVariant}\n icon={icon}\n iconRight={<ChevronDown size={11} />}\n onClick={() => setOpen(value => !value)}\n className={buttonClassName}\n fullWidth={fullWidth}\n >\n {label}\n </Button>\n {typeof document !== \"undefined\" ? createPortal(menuNode, document.body) : null}\n </div>\n );\n}\n","import { useMemo, useState, type ReactNode } from \"react\";\nimport { ChevronDown, ChevronUp } from \"../icons/index\";\nimport { DataTableRow } from \"./DataTableRow\";\nimport type { Column, ColumnAlign, ServerSort, SortDirection, SortState } from \"./types\";\n\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: Column<T>[];\n /** Stable unique key per row. */\n rowKey: (row: T) => string;\n isLoading?: boolean;\n /** Rendered (inside a full-width row) when there is no data. */\n emptyState?: ReactNode;\n onRowClick?: (row: T) => void;\n /** Number of skeleton rows shown while loading. Defaults to 8. */\n loadingRows?: number;\n /**\n * When provided, renders an extra right-aligned column at the end of every\n * row. The function receives the row and must return a `ReactNode` (e.g.\n * action buttons). When omitted, no extra column is added.\n */\n rowActions?: (row: T) => ReactNode;\n /**\n * When provided, disables internal client-side sort and delegates sorting to\n * the caller. Clicking a sortable column header calls `onSort(column.id)`.\n * `aria-sort` reflects `field` and `dir`.\n */\n serverSort?: ServerSort;\n /**\n * When provided, renders the node below the `<table>` inside the outer\n * border wrapper. No styling is added — callers own all padding/layout.\n */\n footer?: ReactNode;\n /**\n * When provided:\n * - The `<table>` is hidden on small screens (`hidden md:table`).\n * - A `<div className=\"md:hidden\">` is rendered before the table, mapping\n * each row to a card via this function (keyed by `rowKey(row)`).\n */\n mobileCard?: (row: T) => ReactNode;\n}\n\nfunction compareValues(\n a: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\n b: ReturnType<NonNullable<Column<unknown>[\"sortAccessor\"]>>,\n): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n if (typeof a === \"boolean\" && typeof b === \"boolean\") return Number(a) - Number(b);\n return String(a).localeCompare(String(b));\n}\n\nfunction ariaSort(active: boolean, direction: SortDirection): \"ascending\" | \"descending\" | \"none\" {\n if (!active) return \"none\";\n return direction === \"asc\" ? \"ascending\" : \"descending\";\n}\n\n/**\n * Generic, accessible, client-sortable table.\n *\n * - Pass already-translated `ReactNode`s for headers and `emptyState`; the\n * component never hardcodes user-facing strings (full i18n compatibility).\n * - Sorting toggles asc/desc on sortable columns and is purely client-side\n * unless `serverSort` is provided.\n * - Rows are memoized and the sorted view is memoized via `useMemo`.\n * - Optional `rowActions`, `serverSort`, `footer`, and `mobileCard` props are\n * all additive — existing usages continue to work with zero changes.\n */\nexport function DataTable<T>({\n data,\n columns,\n rowKey,\n isLoading = false,\n emptyState,\n onRowClick,\n loadingRows = 8,\n rowActions,\n serverSort,\n footer,\n mobileCard,\n}: DataTableProps<T>) {\n const [sort, setSort] = useState<SortState | null>(null);\n\n // When serverSort is active, skip client-side sort entirely.\n const sortedData = useMemo(() => {\n if (serverSort) return data;\n if (!sort) return data;\n const column = columns.find((c) => c.id === sort.columnId);\n if (!column?.sortAccessor) return data;\n const accessor = column.sortAccessor;\n const factor = sort.direction === \"asc\" ? 1 : -1;\n return [...data].sort((a, b) => compareValues(accessor(a), accessor(b)) * factor);\n }, [data, columns, sort, serverSort]);\n\n const toggleSort = (columnId: string) => {\n if (serverSort) {\n serverSort.onSort(columnId);\n return;\n }\n setSort((prev) => {\n if (prev?.columnId !== columnId) return { columnId, direction: \"asc\" };\n return { columnId, direction: prev.direction === \"asc\" ? \"desc\" : \"asc\" };\n });\n };\n\n const hasActions = rowActions !== undefined;\n const colCount = columns.length + (hasActions ? 1 : 0);\n const tableClass = mobileCard !== undefined ? \"hidden md:table w-full text-sm table-collapse\" : \"w-full text-sm table-collapse\";\n\n return (\n <div className=\"border border-border overflow-x-auto\">\n {/* Mobile card slot — only present when mobileCard is provided */}\n {mobileCard !== undefined && (\n <div className=\"md:hidden\">\n {isLoading\n ? Array.from({ length: loadingRows }).map((_, i) => (\n <div key={i} className=\"h-16 animate-pulse bg-ink-300\" />\n ))\n : sortedData.length === 0\n ? emptyState\n : sortedData.map((row) => (\n <div key={rowKey(row)}>{mobileCard(row)}</div>\n ))}\n </div>\n )}\n\n <table className={tableClass}>\n <thead>\n <tr className=\"border-b border-border bg-ink-300\">\n {columns.map((column) => {\n const baseClass = `px-3 py-2.5 ${ALIGN_CLASS[column.align ?? \"left\"]} font-mono text-[11px] tracking-[.08em] text-txt-4 font-semibold whitespace-nowrap`;\n\n if (!column.sortable || !column.sortAccessor) {\n return (\n <th key={column.id} scope=\"col\" className={baseClass}>\n {column.header}\n </th>\n );\n }\n\n // aria-sort: serverSort drives the active column; fall back to local sort state.\n const active = serverSort\n ? serverSort.field === column.id\n : sort?.columnId === column.id;\n const direction = serverSort\n ? serverSort.dir\n : (sort?.direction ?? \"asc\");\n\n return (\n <th\n key={column.id}\n scope=\"col\"\n aria-sort={ariaSort(active, direction)}\n className={baseClass}\n >\n <button\n type=\"button\"\n onClick={() => toggleSort(column.id)}\n className={`inline-flex items-center gap-1 select-none transition-colors hover:text-txt-1 ${\n active ? \"text-txt-1\" : \"\"\n }`}\n >\n {column.header}\n {active &&\n (direction === \"asc\" ? <ChevronUp size={12} /> : <ChevronDown size={12} />)}\n </button>\n </th>\n );\n })}\n {hasActions && (\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\" />\n )}\n </tr>\n </thead>\n <tbody>\n {isLoading ? (\n Array.from({ length: loadingRows }).map((_, rowIndex) => (\n <tr key={rowIndex} className=\"border-b border-border\">\n {Array.from({ length: colCount }).map((__, colIndex) => (\n <td key={colIndex} className=\"px-3 py-2\">\n <div className=\"h-4 bg-ink-300 rounded animate-pulse w-24\" />\n </td>\n ))}\n </tr>\n ))\n ) : sortedData.length === 0 ? (\n <tr>\n <td colSpan={colCount} className=\"px-4 py-10 text-center text-txt-4 text-sm font-mono\">\n {emptyState}\n </td>\n </tr>\n ) : (\n sortedData.map((row) => (\n <DataTableRow\n key={rowKey(row)}\n row={row}\n columns={columns}\n onRowClick={onRowClick}\n rowActions={rowActions}\n />\n ))\n )}\n </tbody>\n </table>\n\n {footer !== undefined && footer}\n </div>\n );\n}\n","import { memo, type ReactNode } from \"react\";\nimport type { Column, ColumnAlign } from \"./types\";\n\nconst ALIGN_CLASS: Record<ColumnAlign, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\ninterface DataTableRowProps<T> {\n row: T;\n columns: Column<T>[];\n onRowClick?: (row: T) => void;\n rowActions?: (row: T) => ReactNode;\n}\n\nfunction DataTableRowInner<T>({ row, columns, onRowClick, rowActions }: DataTableRowProps<T>) {\n const clickable = Boolean(onRowClick);\n return (\n <tr\n onClick={clickable ? () => onRowClick?.(row) : undefined}\n className={`border-b border-border transition-colors hover:bg-ink-300/30 ${\n clickable ? \"cursor-pointer\" : \"\"\n }`}\n >\n {columns.map((column) => (\n <td\n key={column.id}\n className={`px-3 py-2 text-xs text-txt-3 ${ALIGN_CLASS[column.align ?? \"left\"]} ${\n column.className ?? \"\"\n }`}\n >\n {column.cell(row)}\n </td>\n ))}\n {rowActions !== undefined && (\n <td className=\"px-3 py-2 text-right\">{rowActions(row)}</td>\n )}\n </tr>\n );\n}\n\n/**\n * Memoized row. Re-renders only when its `row`, `columns`, or `onRowClick`\n * reference changes — keeping large lists cheap to re-render.\n *\n * `memo` strips generics, so we re-assert the generic signature on the export.\n */\nexport const DataTableRow = memo(DataTableRowInner) as typeof DataTableRowInner;\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","jsx","jsx","jsxs","jsx","variantClasses","jsx","jsxs","jsx","jsxs","className","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"]}