{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "flight-status-card", "type": "registry:ui", "title": "Flight Status Card", "description": "A detailed flight status widget with dot-matrix airport codes, progress tracking, and ETA information.", "dependencies": ["framer-motion"], "devDependencies": [], "registryDependencies": [], "files": [ { "path": "components/ui/flight-status-card.tsx", "type": "registry:ui", "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { motion } from \"framer-motion\"\n\nconst DOT_MATRIX: Record = {\n Y: [[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],\n Z: [[1,1,1,1,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],\n H: [[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],\n N: [[1,0,0,0,1],[1,1,0,0,1],[1,0,1,0,1],[1,0,0,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],\n D: [[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],\n A: [[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],\n B: [[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],\n C: [[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,1],[0,1,1,1,0]],\n E: [[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],\n F: [[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],\n G: [[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],\n I: [[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1]],\n J: [[0,0,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0],[1,0,0,1,0],[1,0,0,1,0],[0,1,1,0,0]],\n K: [[1,0,0,0,1],[1,0,0,1,0],[1,0,1,0,0],[1,1,0,0,0],[1,0,1,0,0],[1,0,0,1,0],[1,0,0,0,1]],\n L: [[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],\n M: [[1,0,0,0,1],[1,1,0,1,1],[1,0,1,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],\n O: [[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],\n P: [[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],\n Q: [[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,1,0],[0,1,1,0,1]],\n R: [[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,1,0,0],[1,0,0,1,0],[1,0,0,0,1]],\n S: [[0,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[0,0,0,0,1],[1,1,1,1,0]],\n T: [[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],\n U: [[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],\n V: [[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,1,0,1,0],[0,0,1,0,0]],\n W: [[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,1,0,1],[1,1,0,1,1],[1,0,0,0,1]],\n X: [[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1]]\n}\n\ninterface DotMatrixCharProps {\n char: string\n dotSize?: number\n gap?: number\n activeColor?: string\n inactiveColor?: string\n className?: string\n delay?: number\n}\n\nfunction DotMatrixChar({\n char,\n dotSize = 4,\n gap = 2,\n activeColor = \"#b4f54e\",\n inactiveColor = \"rgba(180, 245, 78, 0.1)\",\n className,\n delay = 0,\n}: DotMatrixCharProps) {\n const matrix = DOT_MATRIX[char.toUpperCase()] ?? DOT_MATRIX[\"A\"]!\n const width = 5 * dotSize + 4 * gap\n const height = 7 * dotSize + 6 * gap\n\n return (\n \n {matrix!.map((row, rowIndex) =>\n row.map((cell, colIndex) => (\n \n ))\n )}\n \n )\n}\n\ninterface DotMatrixTextProps {\n text: string\n dotSize?: number\n gap?: number\n charGap?: number\n activeColor?: string\n inactiveColor?: string\n className?: string\n}\n\nfunction DotMatrixText({\n text,\n dotSize = 4,\n gap = 2,\n charGap = 8,\n activeColor = \"#b4f54e\",\n inactiveColor = \"rgba(180, 245, 78, 0.1)\",\n className,\n}: DotMatrixTextProps) {\n return (\n
\n {text.split(\"\").map((char, index) => (\n \n ))}\n
\n )\n}\n\nfunction HalftonePattern({ className }: { className?: string }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction PlaneIcon({ className }: { className?: string }) {\n return (\n \n \n \n )\n}\n\nfunction SwapIcon({ className }: { className?: string }) {\n return (\n \n \n \n \n )\n}\n\ninterface FlightStatusCardProps {\n departureCode?: string\n arrivalCode?: string\n departureCity?: string\n arrivalCity?: string\n departureTime?: string\n arrivalTime?: string\n eta?: string\n timezone?: string\n nextEvent?: string\n nextEventTime?: string\n progress?: number\n remainingTime?: string\n className?: string\n}\n\nfunction FlightStatusCard({\n departureCode = \"YYZ\",\n arrivalCode = \"HND\",\n departureCity = \"Toronto\",\n arrivalCity = \"Tokyo\",\n departureTime = \"MON, 6:14 PM\",\n arrivalTime = \"TUE, 7:14 AM\",\n eta = \"ETA 2:15 PM\",\n timezone = \"Tokyo Time\",\n nextEvent = \"DINNER IN\",\n nextEventTime = \"2:34H\",\n progress = 45,\n remainingTime = \"-7H 01M\",\n className,\n}: FlightStatusCardProps) {\n return (\n \n \n
\n
\n
\n
\n \n {departureCity}\n {departureTime}\n
\n
\n \n \n \n
\n
\n \n {arrivalCity}\n {arrivalTime}\n
\n
\n \n
\n {eta}\n \n
\n {timezone}\n {nextEvent} {nextEventTime}\n
\n
\n
\n
\n \n \n \n \n \n \n
\n {remainingTime}\n
\n
\n \n )\n}\n\nfunction FlightStatusCardLight({\n departureCode = \"YYZ\",\n arrivalCode = \"HND\",\n departureCity = \"Toronto\",\n arrivalCity = \"Tokyo\",\n departureTime = \"MON, 6:14 PM\",\n arrivalTime = \"TUE, 7:14 AM\",\n eta = \"ETA 2:15 PM\",\n timezone = \"Tokyo Time\",\n nextEvent = \"DINNER IN\",\n nextEventTime = \"2:34H\",\n progress = 45,\n remainingTime = \"-7H 01M\",\n className,\n}: FlightStatusCardProps) {\n return (\n \n \n
\n
\n
\n
\n \n {departureCity}\n {departureTime}\n
\n
\n \n \n \n
\n
\n \n {arrivalCity}\n {arrivalTime}\n
\n
\n \n
\n {eta}\n \n
\n {timezone}\n {nextEvent} {nextEventTime}\n
\n
\n
\n
\n \n \n \n \n \n
\n {remainingTime}\n
\n
\n \n )\n}\n\nfunction HalftoneLightPattern({ className }: { className?: string }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction FlightStatusCardAdaptive(props: FlightStatusCardProps) {\n return (\n <>\n
\n \n
\n
\n \n
\n \n )\n}\n\nexport { FlightStatusCard, FlightStatusCardLight, FlightStatusCardAdaptive, DotMatrixText, DotMatrixChar }\n" } ], "tailwind": {}, "cssVars": {}, "meta": {} }