@zendir/ui 0.1.2 → 0.1.4
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/react/core/Icon.js
CHANGED
|
@@ -3,10 +3,24 @@ import { memo } from "react";
|
|
|
3
3
|
import { useTheme } from "../theme/ThemeProvider.js";
|
|
4
4
|
const ICON_PATHS = {
|
|
5
5
|
// === Astro Space/Mission Icons ===
|
|
6
|
-
satellite:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
satellite: [
|
|
7
|
+
"M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59z",
|
|
8
|
+
"M6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z"
|
|
9
|
+
],
|
|
10
|
+
"satellite-transmit": [
|
|
11
|
+
"M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59zM6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z",
|
|
12
|
+
"M17 13c0 2.21-1.79 4-4 4v2c3.31 0 6-2.69 6-6h-2z",
|
|
13
|
+
"M21 13c0 4.42-3.58 8-8 8v2c5.52 0 10-4.48 10-10h-2z"
|
|
14
|
+
],
|
|
15
|
+
"satellite-receive": [
|
|
16
|
+
"M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59zM6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z",
|
|
17
|
+
"M7 11c0-2.21 1.79-4 4-4V5c-3.31 0-6 2.69-6 6h2z",
|
|
18
|
+
"M3 11c0-4.42 3.58-8 8-8V1C5.48 1 1 5.48 1 11h2z"
|
|
19
|
+
],
|
|
20
|
+
"satellite-off": [
|
|
21
|
+
"M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59z",
|
|
22
|
+
"M3.27 3L2 4.27l16.73 16.73L20 19.73 3.27 3z"
|
|
23
|
+
],
|
|
10
24
|
antenna: "M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3h2c0-.55.45-1 1-1s1 .45 1 1h2c0-1.66-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z",
|
|
11
25
|
"antenna-transmit": "M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z",
|
|
12
26
|
"antenna-receive": "M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.js","sources":["../../../src/react/core/Icon.tsx"],"sourcesContent":["/**\n * @zendir/ui - Icon Component\n * \n * Complete icon library following Astro UX Design System.\n * \n * Astro UX Compliance (https://www.astrouxds.com/components/icons-and-symbols/):\n * - Consistent icon sizing\n * - Accessibility via aria-label\n * - Use with MonitoringIcon for status indication\n * \n * IMPORTANT per Astro UX Guidelines:\n * - Icons themselves should NOT change color based on status\n * - Status is communicated via a separate StatusIndicator/StatusSymbol\n * - Use MonitoringIcon component to combine icon + status + label\n * - The `status` prop is provided for convenience but should be used sparingly\n * \n * @example\n * ```tsx\n * // Standard usage - neutral color\n * <Icon name=\"satellite\" />\n * <Icon name=\"antenna\" size={32} />\n * \n * // Custom color (use sparingly)\n * <Icon name=\"thermal\" color=\"#4dacff\" />\n * \n * // For status indication, use MonitoringIcon instead:\n * <MonitoringIcon icon=\"antenna\" status=\"normal\" label=\"Antenna-1\" />\n * ```\n */\n\nimport React, { memo } from 'react';\nimport { useTheme } from '../theme';\nimport type { StatusLevel } from '../utils';\n\nexport type IconName =\n // Astro Space/Mission Icons\n | 'satellite'\n | 'satellite-transmit'\n | 'satellite-receive'\n | 'satellite-off'\n | 'antenna'\n | 'antenna-transmit'\n | 'antenna-receive'\n | 'antenna-off'\n | 'mission'\n | 'altitude'\n | 'solar'\n | 'thermal'\n | 'propulsion'\n | 'payload'\n | 'processor'\n | 'equipment'\n | 'netcom'\n | 'hardware'\n | 'orbit'\n | 'ground-station'\n | 'battery'\n | 'location'\n | 'rocket'\n | 'thermometer'\n // System Icons\n | 'settings'\n | 'notifications'\n | 'notifications-off'\n | 'warning'\n | 'error'\n | 'info'\n | 'check'\n | 'close'\n | 'add'\n | 'remove'\n | 'edit'\n | 'delete'\n | 'search'\n | 'filter'\n | 'refresh'\n | 'sync'\n | 'download'\n | 'upload'\n | 'expand'\n | 'collapse'\n | 'fullscreen'\n | 'fullscreen-exit'\n | 'visibility'\n | 'visibility-off'\n | 'lock'\n | 'unlock'\n // Navigation Icons\n | 'arrow-up'\n | 'arrow-down'\n | 'arrow-left'\n | 'arrow-right'\n | 'chevron-up'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'menu'\n | 'more-vert'\n | 'more-horiz'\n // Data Icons\n | 'chart'\n | 'list'\n | 'grid'\n | 'timeline'\n | 'calendar'\n | 'clock'\n | 'play'\n | 'pause'\n | 'stop'\n | 'record'\n // Communication Icons\n | 'link'\n | 'link-off'\n | 'send'\n | 'message'\n | 'mail'\n | 'photo-camera'\n | 'images'\n | 'error-outline';\n\nexport interface IconProps {\n /** Icon name from the library */\n name: IconName;\n /** Icon size in pixels (default: 24) */\n size?: number;\n /** Status-based coloring (uses Astro status colors) */\n status?: StatusLevel;\n /** Custom color (overrides status) */\n color?: string;\n /** Custom className */\n className?: string;\n /** Accessibility label */\n 'aria-label'?: string;\n /** Click handler */\n onClick?: () => void;\n /** Custom style */\n style?: React.CSSProperties;\n}\n\n/**\n * Complete Astro UX Icon Library\n * SVG paths for 24x24 viewBox\n */\nconst ICON_PATHS: Record<IconName, string | string[]> = {\n // === Astro Space/Mission Icons ===\n satellite: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zm-7-2h2v-4h4v-2h-4V7h-2v4H8v2h4v4z',\n 'satellite-transmit': 'M6 6L1 11l5 5 1.41-1.41L4.83 12l2.58-2.59L6 6zm6-4l-3 7 3 3 3-3-3-7zm6 4l-1.41 1.41L19.17 10H6.83l2.58-2.59L8 6l-5 5 5 5 1.41-1.41L6.83 12h12.34l-2.58 2.59L18 16l5-5-5-5z',\n 'satellite-receive': 'M18 6l-1.41 1.41L19.17 10H6.83l2.58-2.59L8 6l-5 5 5 5 1.41-1.41L6.83 12h12.34l-2.58 2.59L18 16l5-5-5-5z',\n 'satellite-off': 'M1 21l5-5 1.41 1.41-5 5L1 21zm22-9l-5-5-1.41 1.41 5 5L23 12zm-9-9l-5 5 1.41 1.41 5-5L14 3z',\n antenna: 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3h2c0-.55.45-1 1-1s1 .45 1 1h2c0-1.66-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z',\n 'antenna-transmit': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z',\n 'antenna-receive': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z',\n 'antenna-off': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zM2.81 2.81L1.39 4.22l2.69 2.69C2.78 8.6 2 10.2 2 12h2c0-1.26.52-2.4 1.35-3.23l1.42 1.42C5.71 11.04 5.17 12 5.17 12.88L5 13h2c0-.55.45-1 1-1 .23 0 .44.08.6.21l1.42 1.42c-.62.24-1.02.83-1.02 1.5 0 .83.67 1.5 1.5 1.5.67 0 1.26-.4 1.5-1.02l6.78 6.78 1.41-1.41L2.81 2.81zM12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z',\n mission: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z',\n altitude: 'M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71L12 2z',\n solar: 'M20 18V6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zM6 6h12v4H6V6zm0 6h4v6H6v-6zm6 6v-6h6v6h-6z',\n thermal: 'M15 13V5c0-1.66-1.34-3-3-3S9 3.34 9 5v8c-1.21.91-2 2.37-2 4 0 2.76 2.24 5 5 5s5-2.24 5-5c0-1.63-.79-3.09-2-4zm-4-8c0-.55.45-1 1-1s1 .45 1 1h-1v1h1v2h-1v1h1v2h-2V5z',\n propulsion: 'M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42A6.92 6.92 0 0119 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.53 1.37-4.77 3.4-6l-1.42-1.42A8.962 8.962 0 003 12c0 4.97 4.03 9 9 9s9-4.03 9-9a8.96 8.96 0 00-4.17-7.83z',\n payload: 'M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7V5h10v14zm-5-7c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z',\n processor: 'M22 9V7h-2V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v2H2v2h2v2H2v2h2v2H2v2h2v2c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H6V5h12v14zm-5-7h-2V8h2v4zm0 6h-2v-4h2v4z',\n equipment: 'M22 9V7h-2V5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H4V5h14v14zM6 13h5v4H6v-4zm6-6h4v3h-4V7zM6 7h5v5H6V7zm6 4h4v6h-4v-6z',\n netcom: 'M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z',\n hardware: 'M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7V5h10v14zm-3-8h-4v2h4v-2z',\n orbit: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z',\n 'ground-station': 'M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3zm0 11.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z',\n battery: 'M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM11 20v-5.5H9L13 7v5.5h2L11 20z',\n location: 'M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z',\n rocket: 'M12 2c0 0-6.5 5-6.5 12 0 2.5.5 4 1 5.5l5.5-3 5.5 3c.5-1.5 1-3 1-5.5C18.5 7 12 2 12 2zm0 13c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM7 22l1.5-1.5L10 22l2-2 2 2 1.5-1.5L17 22l-2.5-2.5-2.5 2.5-2.5-2.5L7 22z',\n thermometer: 'M15 13V5c0-1.66-1.34-3-3-3S9 3.34 9 5v8c-1.21.91-2 2.37-2 4 0 2.76 2.24 5 5 5s5-2.24 5-5c0-1.63-.79-3.09-2-4zm-4-8c0-.55.45-1 1-1s1 .45 1 1h-1v1h1v2h-1v1h1v2h-2V5z',\n \n // === System Icons ===\n settings: 'M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z',\n notifications: 'M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z',\n 'notifications-off': 'M20 18.69L7.84 6.14 5.27 3.49 4 4.76l2.8 2.8v.01c-.52.99-.8 2.16-.8 3.42v5l-2 2v1h13.73l2 2L21 19.72l-1-1.03zM12 22c1.11 0 2-.89 2-2h-4c0 1.11.89 2 2 2zm6-7.32V11c0-3.08-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.15.03-.29.08-.42.12-.1.03-.2.07-.3.11h-.01c-.01 0-.01 0-.02.01-.23.09-.46.2-.68.31 0 0-.01 0-.01.01L18 14.68z',\n warning: 'M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z',\n error: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z',\n info: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z',\n check: 'M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z',\n close: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z',\n add: 'M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z',\n remove: 'M19 13H5v-2h14v2z',\n edit: 'M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z',\n delete: 'M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z',\n search: 'M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z',\n filter: 'M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z',\n refresh: 'M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z',\n sync: 'M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z',\n download: 'M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z',\n upload: 'M9 16h6v-6h4l-7-7-7 7h4v6zm-4 2h14v2H5v-2z',\n expand: 'M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z',\n collapse: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',\n fullscreen: 'M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z',\n 'fullscreen-exit': 'M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z',\n visibility: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z',\n 'visibility-off': 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z',\n lock: 'M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z',\n unlock: 'M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z',\n \n // === Navigation Icons ===\n 'arrow-up': 'M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z',\n 'arrow-down': 'M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z',\n 'arrow-left': 'M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z',\n 'arrow-right': 'M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z',\n 'chevron-up': 'M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z',\n 'chevron-down': 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',\n 'chevron-left': 'M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z',\n 'chevron-right': 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z',\n menu: 'M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z',\n 'more-vert': 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z',\n 'more-horiz': 'M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z',\n \n // === Data Icons ===\n chart: 'M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z',\n list: 'M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z',\n grid: 'M3 3h8v8H3V3zm0 10h8v8H3v-8zm10-10h8v8h-8V3zm0 10h8v8h-8v-8z',\n timeline: 'M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z',\n calendar: 'M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM9 10H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2z',\n clock: 'M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z',\n play: 'M8 5v14l11-7z',\n pause: 'M6 19h4V5H6v14zm8-14v14h4V5h-4z',\n stop: 'M6 6h12v12H6z',\n record: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z',\n \n // === Communication Icons ===\n link: 'M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z',\n 'link-off': 'M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16v-2zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z',\n send: 'M2.01 21L23 12 2.01 3 2 10l15 2-15 2z',\n message: 'M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z',\n mail: 'M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z',\n 'photo-camera': 'M12 12m-3.2 0a3.2 3.2 0 1 0 6.4 0 3.2 3.2 0 1 0-6.4 0M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z',\n images: 'M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z',\n 'error-outline': 'M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z',\n};\n\nexport const Icon = memo(function Icon({\n name,\n size = 24,\n status,\n color,\n className = '',\n 'aria-label': ariaLabel,\n onClick,\n style,\n}: IconProps): React.ReactElement {\n const { tokens } = useTheme();\n \n // Determine color: custom > status > default\n const iconColor = color \n ?? (status ? tokens.colors.status[status] : tokens.colors.text.primary);\n \n const pathData = ICON_PATHS[name];\n const isInteractive = !!onClick;\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={iconColor}\n className={className}\n role={ariaLabel ? 'img' : 'presentation'}\n aria-label={ariaLabel ?? name}\n aria-hidden={!ariaLabel}\n onClick={onClick}\n onKeyDown={onClick ? (e: React.KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick(); } } : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n style={{\n cursor: isInteractive ? 'pointer' : 'default',\n flexShrink: 0,\n transition: `fill ${tokens.animation.fast}`,\n ...style,\n }}\n >\n {Array.isArray(pathData) ? (\n pathData.map((d, i) => <path key={i} d={d} />)\n ) : (\n <path d={pathData} />\n )}\n </svg>\n );\n});\n\n/**\n * Get all available icon names\n */\nexport function getIconNames(): IconName[] {\n return Object.keys(ICON_PATHS) as IconName[];\n}\n\n/**\n * Check if an icon name exists\n */\nexport function isValidIconName(name: string): name is IconName {\n return name in ICON_PATHS;\n}\n\nexport default Icon;\n"],"names":["Icon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Icon.js","sources":["../../../src/react/core/Icon.tsx"],"sourcesContent":["/**\n * @zendir/ui - Icon Component\n * \n * Complete icon library following Astro UX Design System.\n * \n * Astro UX Compliance (https://www.astrouxds.com/components/icons-and-symbols/):\n * - Consistent icon sizing\n * - Accessibility via aria-label\n * - Use with MonitoringIcon for status indication\n * \n * IMPORTANT per Astro UX Guidelines:\n * - Icons themselves should NOT change color based on status\n * - Status is communicated via a separate StatusIndicator/StatusSymbol\n * - Use MonitoringIcon component to combine icon + status + label\n * - The `status` prop is provided for convenience but should be used sparingly\n * \n * @example\n * ```tsx\n * // Standard usage - neutral color\n * <Icon name=\"satellite\" />\n * <Icon name=\"antenna\" size={32} />\n * \n * // Custom color (use sparingly)\n * <Icon name=\"thermal\" color=\"#4dacff\" />\n * \n * // For status indication, use MonitoringIcon instead:\n * <MonitoringIcon icon=\"antenna\" status=\"normal\" label=\"Antenna-1\" />\n * ```\n */\n\nimport React, { memo } from 'react';\nimport { useTheme } from '../theme';\nimport type { StatusLevel } from '../utils';\n\nexport type IconName =\n // Astro Space/Mission Icons\n | 'satellite'\n | 'satellite-transmit'\n | 'satellite-receive'\n | 'satellite-off'\n | 'antenna'\n | 'antenna-transmit'\n | 'antenna-receive'\n | 'antenna-off'\n | 'mission'\n | 'altitude'\n | 'solar'\n | 'thermal'\n | 'propulsion'\n | 'payload'\n | 'processor'\n | 'equipment'\n | 'netcom'\n | 'hardware'\n | 'orbit'\n | 'ground-station'\n | 'battery'\n | 'location'\n | 'rocket'\n | 'thermometer'\n // System Icons\n | 'settings'\n | 'notifications'\n | 'notifications-off'\n | 'warning'\n | 'error'\n | 'info'\n | 'check'\n | 'close'\n | 'add'\n | 'remove'\n | 'edit'\n | 'delete'\n | 'search'\n | 'filter'\n | 'refresh'\n | 'sync'\n | 'download'\n | 'upload'\n | 'expand'\n | 'collapse'\n | 'fullscreen'\n | 'fullscreen-exit'\n | 'visibility'\n | 'visibility-off'\n | 'lock'\n | 'unlock'\n // Navigation Icons\n | 'arrow-up'\n | 'arrow-down'\n | 'arrow-left'\n | 'arrow-right'\n | 'chevron-up'\n | 'chevron-down'\n | 'chevron-left'\n | 'chevron-right'\n | 'menu'\n | 'more-vert'\n | 'more-horiz'\n // Data Icons\n | 'chart'\n | 'list'\n | 'grid'\n | 'timeline'\n | 'calendar'\n | 'clock'\n | 'play'\n | 'pause'\n | 'stop'\n | 'record'\n // Communication Icons\n | 'link'\n | 'link-off'\n | 'send'\n | 'message'\n | 'mail'\n | 'photo-camera'\n | 'images'\n | 'error-outline';\n\nexport interface IconProps {\n /** Icon name from the library */\n name: IconName;\n /** Icon size in pixels (default: 24) */\n size?: number;\n /** Status-based coloring (uses Astro status colors) */\n status?: StatusLevel;\n /** Custom color (overrides status) */\n color?: string;\n /** Custom className */\n className?: string;\n /** Accessibility label */\n 'aria-label'?: string;\n /** Click handler */\n onClick?: () => void;\n /** Custom style */\n style?: React.CSSProperties;\n}\n\n/**\n * Complete Astro UX Icon Library\n * SVG paths for 24x24 viewBox\n */\nconst ICON_PATHS: Record<IconName, string | string[]> = {\n // === Astro Space/Mission Icons ===\n satellite: [\n 'M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59z',\n 'M6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z',\n ],\n 'satellite-transmit': [\n 'M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59zM6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z',\n 'M17 13c0 2.21-1.79 4-4 4v2c3.31 0 6-2.69 6-6h-2z',\n 'M21 13c0 4.42-3.58 8-8 8v2c5.52 0 10-4.48 10-10h-2z',\n ],\n 'satellite-receive': [\n 'M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59zM6.6 20.19l-2.79-2.79.71-.71 2.79 2.79-.71.71z',\n 'M7 11c0-2.21 1.79-4 4-4V5c-3.31 0-6 2.69-6 6h2z',\n 'M3 11c0-4.42 3.58-8 8-8V1C5.48 1 1 5.48 1 11h2z',\n ],\n 'satellite-off': [\n 'M15.44.59l-3.18 3.18c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.24-1.25c-.78-.78-2.05-.78-2.83 0L5.54 10.48c-.78.78-.78 2.05 0 2.83l1.24 1.24-.71.71-1.23-1.25c-.78-.78-2.05-.78-2.83 0L.59 14.59 9.41 23.41l.59-.59c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.25c.78.78 2.05.78 2.83 0l3.18-3.18c.78-.78.78-2.05 0-2.83l-1.24-1.24.71-.71 1.24 1.24c.78.78 2.05.78 2.83 0l.58-.58L15.44.59z',\n 'M3.27 3L2 4.27l16.73 16.73L20 19.73 3.27 3z',\n ],\n antenna: 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3h2c0-.55.45-1 1-1s1 .45 1 1h2c0-1.66-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z',\n 'antenna-transmit': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0 4c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm0-8C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z',\n 'antenna-receive': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11zm0 18c-3.87 0-7-3.13-7-7H3c0 4.97 4.03 9 9 9s9-4.03 9-9h-2c0 3.87-3.13 7-7 7z',\n 'antenna-off': 'M12 5c-3.87 0-7 3.13-7 7h2c0-2.76 2.24-5 5-5s5 2.24 5 5h2c0-3.87-3.13-7-7-7zM2.81 2.81L1.39 4.22l2.69 2.69C2.78 8.6 2 10.2 2 12h2c0-1.26.52-2.4 1.35-3.23l1.42 1.42C5.71 11.04 5.17 12 5.17 12.88L5 13h2c0-.55.45-1 1-1 .23 0 .44.08.6.21l1.42 1.42c-.62.24-1.02.83-1.02 1.5 0 .83.67 1.5 1.5 1.5.67 0 1.26-.4 1.5-1.02l6.78 6.78 1.41-1.41L2.81 2.81zM12 1C5.93 1 1 5.93 1 12h2c0-4.97 4.03-9 9-9s9 4.03 9 9h2c0-6.07-4.93-11-11-11z',\n mission: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z',\n altitude: 'M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71L12 2z',\n solar: 'M20 18V6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zM6 6h12v4H6V6zm0 6h4v6H6v-6zm6 6v-6h6v6h-6z',\n thermal: 'M15 13V5c0-1.66-1.34-3-3-3S9 3.34 9 5v8c-1.21.91-2 2.37-2 4 0 2.76 2.24 5 5 5s5-2.24 5-5c0-1.63-.79-3.09-2-4zm-4-8c0-.55.45-1 1-1s1 .45 1 1h-1v1h1v2h-1v1h1v2h-2V5z',\n propulsion: 'M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42A6.92 6.92 0 0119 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.53 1.37-4.77 3.4-6l-1.42-1.42A8.962 8.962 0 003 12c0 4.97 4.03 9 9 9s9-4.03 9-9a8.96 8.96 0 00-4.17-7.83z',\n payload: 'M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7V5h10v14zm-5-7c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3 1.34 3 3 3z',\n processor: 'M22 9V7h-2V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v2H2v2h2v2H2v2h2v2H2v2h2v2c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H6V5h12v14zm-5-7h-2V8h2v4zm0 6h-2v-4h2v4z',\n equipment: 'M22 9V7h-2V5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-2h2v-2h-2v-2h2v-2h-2V9h2zm-4 10H4V5h14v14zM6 13h5v4H6v-4zm6-6h4v3h-4V7zM6 7h5v5H6V7zm6 4h4v6h-4v-6z',\n netcom: 'M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1z',\n hardware: 'M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7V5h10v14zm-3-8h-4v2h4v-2z',\n orbit: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6zm0 10c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z',\n 'ground-station': 'M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3zm0 11.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z',\n battery: 'M15.67 4H14V2h-4v2H8.33C7.6 4 7 4.6 7 5.33v15.33C7 21.4 7.6 22 8.33 22h7.33c.74 0 1.34-.6 1.34-1.33V5.33C17 4.6 16.4 4 15.67 4zM11 20v-5.5H9L13 7v5.5h2L11 20z',\n location: 'M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z',\n rocket: 'M12 2c0 0-6.5 5-6.5 12 0 2.5.5 4 1 5.5l5.5-3 5.5 3c.5-1.5 1-3 1-5.5C18.5 7 12 2 12 2zm0 13c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM7 22l1.5-1.5L10 22l2-2 2 2 1.5-1.5L17 22l-2.5-2.5-2.5 2.5-2.5-2.5L7 22z',\n thermometer: 'M15 13V5c0-1.66-1.34-3-3-3S9 3.34 9 5v8c-1.21.91-2 2.37-2 4 0 2.76 2.24 5 5 5s5-2.24 5-5c0-1.63-.79-3.09-2-4zm-4-8c0-.55.45-1 1-1s1 .45 1 1h-1v1h1v2h-1v1h1v2h-2V5z',\n \n // === System Icons ===\n settings: 'M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z',\n notifications: 'M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z',\n 'notifications-off': 'M20 18.69L7.84 6.14 5.27 3.49 4 4.76l2.8 2.8v.01c-.52.99-.8 2.16-.8 3.42v5l-2 2v1h13.73l2 2L21 19.72l-1-1.03zM12 22c1.11 0 2-.89 2-2h-4c0 1.11.89 2 2 2zm6-7.32V11c0-3.08-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.15.03-.29.08-.42.12-.1.03-.2.07-.3.11h-.01c-.01 0-.01 0-.02.01-.23.09-.46.2-.68.31 0 0-.01 0-.01.01L18 14.68z',\n warning: 'M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z',\n error: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z',\n info: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z',\n check: 'M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z',\n close: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z',\n add: 'M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z',\n remove: 'M19 13H5v-2h14v2z',\n edit: 'M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z',\n delete: 'M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z',\n search: 'M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z',\n filter: 'M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z',\n refresh: 'M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z',\n sync: 'M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z',\n download: 'M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z',\n upload: 'M9 16h6v-6h4l-7-7-7 7h4v6zm-4 2h14v2H5v-2z',\n expand: 'M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z',\n collapse: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',\n fullscreen: 'M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z',\n 'fullscreen-exit': 'M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z',\n visibility: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z',\n 'visibility-off': 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z',\n lock: 'M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z',\n unlock: 'M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z',\n \n // === Navigation Icons ===\n 'arrow-up': 'M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z',\n 'arrow-down': 'M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z',\n 'arrow-left': 'M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z',\n 'arrow-right': 'M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z',\n 'chevron-up': 'M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z',\n 'chevron-down': 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',\n 'chevron-left': 'M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z',\n 'chevron-right': 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z',\n menu: 'M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z',\n 'more-vert': 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z',\n 'more-horiz': 'M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z',\n \n // === Data Icons ===\n chart: 'M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z',\n list: 'M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z',\n grid: 'M3 3h8v8H3V3zm0 10h8v8H3v-8zm10-10h8v8h-8V3zm0 10h8v8h-8v-8z',\n timeline: 'M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z',\n calendar: 'M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM9 10H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2z',\n clock: 'M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z',\n play: 'M8 5v14l11-7z',\n pause: 'M6 19h4V5H6v14zm8-14v14h4V5h-4z',\n stop: 'M6 6h12v12H6z',\n record: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z',\n \n // === Communication Icons ===\n link: 'M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z',\n 'link-off': 'M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5zm-1 4h-2.19l2 2H16v-2zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3 2 4.27z',\n send: 'M2.01 21L23 12 2.01 3 2 10l15 2-15 2z',\n message: 'M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z',\n mail: 'M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z',\n 'photo-camera': 'M12 12m-3.2 0a3.2 3.2 0 1 0 6.4 0 3.2 3.2 0 1 0-6.4 0M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z',\n images: 'M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z',\n 'error-outline': 'M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z',\n};\n\nexport const Icon = memo(function Icon({\n name,\n size = 24,\n status,\n color,\n className = '',\n 'aria-label': ariaLabel,\n onClick,\n style,\n}: IconProps): React.ReactElement {\n const { tokens } = useTheme();\n \n // Determine color: custom > status > default\n const iconColor = color \n ?? (status ? tokens.colors.status[status] : tokens.colors.text.primary);\n \n const pathData = ICON_PATHS[name];\n const isInteractive = !!onClick;\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={iconColor}\n className={className}\n role={ariaLabel ? 'img' : 'presentation'}\n aria-label={ariaLabel ?? name}\n aria-hidden={!ariaLabel}\n onClick={onClick}\n onKeyDown={onClick ? (e: React.KeyboardEvent) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick(); } } : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n style={{\n cursor: isInteractive ? 'pointer' : 'default',\n flexShrink: 0,\n transition: `fill ${tokens.animation.fast}`,\n ...style,\n }}\n >\n {Array.isArray(pathData) ? (\n pathData.map((d, i) => <path key={i} d={d} />)\n ) : (\n <path d={pathData} />\n )}\n </svg>\n );\n});\n\n/**\n * Get all available icon names\n */\nexport function getIconNames(): IconName[] {\n return Object.keys(ICON_PATHS) as IconName[];\n}\n\n/**\n * Check if an icon name exists\n */\nexport function isValidIconName(name: string): name is IconName {\n return name in ICON_PATHS;\n}\n\nexport default Icon;\n"],"names":["Icon"],"mappings":"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"}
|