{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "gpuix-icons",
  "type": "registry:lib",
  "title": "Runtime: icons",
  "description": "The `@gpuixui/icons` modules the component items import. Installed automatically with the component; not a component itself.",
  "author": "Cyberistic <https://github.com/Cyberistic>",
  "dependencies": [
    "@gpuix/native@0.11.0",
    "@gpuix/react@0.11.0",
    "effect@4.1.2",
    "react@^19.2.4"
  ],
  "registryDependencies": [
    "https://gpuixui.sudokw.com/gpuix-tokens.json"
  ],
  "files": [
    {
      "path": "packages/icons/src/Icon.tsx",
      "target": "@ui/gpuixui/icons/Icon.tsx",
      "type": "registry:component",
      "content": "/** @jsxImportSource @gpuix/react */\nimport type { ReactElement } from \"react\";\nimport type { MotionProps, StyleDesc, SvgProps } from \"@gpuix/react\";\nimport { rotatedIconMarkup } from \"./registry.js\";\nimport type { IconName } from \"./names.js\";\nimport { iconPixels, type IconSize } from \"./sizes.js\";\n\nexport interface IconProps {\n  readonly name: IconName;\n\n  readonly color: string;\n\n  size?: IconSize | number;\n\n  label?: string;\n\n  testId?: string;\n\n  readonly rotation?: number;\n\n  readonly motion?: MotionProps;\n\n  readonly style?: StyleDesc;\n}\n\nconst iconLabel = (label: string | undefined): string | undefined => {\n  const trimmed = label?.trim();\n  return trimmed === undefined || trimmed === \"\" ? undefined : trimmed;\n};\n\nexport const Icon = ({\n  name,\n  color,\n  size = \"md\",\n  label,\n  testId,\n  rotation = 0,\n  motion,\n  style: extra,\n}: IconProps): ReactElement<SvgProps> => {\n  const pixels = iconPixels(size);\n  const named = iconLabel(label);\n  const style: NonNullable<SvgProps[\"style\"]> = {\n    width: pixels,\n    height: pixels,\n    flexShrink: 0,\n    color,\n\n    pointerEvents: \"none\",\n    ...extra,\n  };\n  return (\n    <svg\n      source={rotatedIconMarkup(name, rotation)}\n      role={named === undefined ? \"presentation\" : \"img\"}\n      aria-label={named}\n      testId={testId}\n      motion={motion}\n      style={style}\n    />\n  );\n};\n\nexport type { IconSize };\n"
    },
    {
      "path": "packages/icons/src/index.ts",
      "target": "@ui/gpuixui/icons/index.ts",
      "type": "registry:lib",
      "content": "export { Icon } from \"./Icon.js\";\nexport type { IconProps } from \"./Icon.js\";\nexport { ICON_NAMES, isIconName } from \"./names.js\";\nexport type { IconName } from \"./names.js\";\nexport {\n  FALLBACK_ICON,\n  iconMarkup,\n  icons,\n  rotatedIconMarkup,\n} from \"./registry.js\";\nexport type { IconMarkup } from \"./registry.js\";\nexport { ICON_SIZES, iconPixels } from \"./sizes.js\";\nexport type { IconSize } from \"./sizes.js\";\n"
    },
    {
      "path": "packages/icons/src/names.ts",
      "target": "@ui/gpuixui/icons/names.ts",
      "type": "registry:lib",
      "content": "import * as Arr from \"effect/Array\";\n\nexport const ICON_NAMES = [\n  \"arrow-down\",\n  \"arrow-left\",\n  \"arrow-right\",\n  \"arrow-up\",\n  \"badge-check\",\n  \"bell\",\n  \"bot\",\n  \"calendar\",\n  \"check\",\n  \"chevron-down\",\n  \"chevron-left\",\n  \"chevron-right\",\n  \"chevron-up\",\n  \"chevrons-up-down\",\n  \"circle\",\n  \"clock\",\n  \"code\",\n  \"copy\",\n  \"credit-card\",\n  \"database\",\n  \"download\",\n  \"ellipsis\",\n  \"ellipsis-vertical\",\n  \"error\",\n  \"external-link\",\n  \"eye\",\n  \"eye-off\",\n  \"file\",\n  \"file-text\",\n  \"filter\",\n  \"folder\",\n  \"folder-open\",\n  \"git-branch\",\n  \"grid\",\n  \"grip-vertical\",\n  \"help\",\n  \"home\",\n  \"image\",\n  \"info\",\n  \"link\",\n  \"list\",\n  \"loader\",\n  \"lock\",\n  \"log-out\",\n  \"mail\",\n  \"maximize\",\n  \"minimize\",\n  \"minus\",\n  \"moon\",\n  \"panel-bottom\",\n  \"panel-left\",\n  \"panel-right\",\n  \"pause\",\n  \"pencil\",\n  \"play\",\n  \"plus\",\n  \"redo\",\n  \"refresh\",\n  \"save\",\n  \"search\",\n  \"send\",\n  \"settings\",\n  \"shield\",\n  \"sliders-horizontal\",\n  \"sort-asc\",\n  \"sort-desc\",\n  \"sparkles\",\n  \"square\",\n  \"star\",\n  \"star-filled\",\n  \"success\",\n  \"sun\",\n  \"table\",\n  \"terminal\",\n  \"trash\",\n  \"undo\",\n  \"upload\",\n  \"user\",\n  \"users\",\n  \"volume-2\",\n  \"volume-x\",\n  \"warning\",\n  \"x\",\n] as const;\n\nexport type IconName = (typeof ICON_NAMES)[number];\n\nconst ICON_SET: ReadonlyArray<string> = ICON_NAMES;\n\nexport const isIconName = (name: unknown): name is IconName =>\n  typeof name === \"string\" && Arr.contains(ICON_SET, name);\n"
    },
    {
      "path": "packages/icons/src/registry.ts",
      "target": "@ui/gpuixui/icons/registry.ts",
      "type": "registry:lib",
      "content": "import * as R from \"effect/Record\";\nimport { isIconName, type IconName } from \"./names.js\";\n\nexport type IconMarkup = string;\n\nconst ATTRIBUTES = [\n  'xmlns=\"http://www.w3.org/2000/svg\"',\n  'viewBox=\"0 0 24 24\"',\n  'fill=\"none\"',\n  'stroke=\"#000\"',\n  'stroke-width=\"2\"',\n  'stroke-linecap=\"round\"',\n  'stroke-linejoin=\"round\"',\n].join(\" \");\n\nconst shapes = {\n  \"arrow-down\": '<path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/>',\n  \"arrow-left\": '<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>',\n  \"arrow-right\": '<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>',\n  \"arrow-up\": '<path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/>',\n  \"badge-check\":\n    '<path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"/><path d=\"m9 12 2 2 4-4\"/>',\n  bell: '<path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/><path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\"/>',\n  bot: '<path d=\"M12 8V4H8\"/><rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\"/><path d=\"M2 14h2\"/><path d=\"M20 14h2\"/><path d=\"M15 13v2\"/><path d=\"M9 13v2\"/>',\n  calendar:\n    '<path d=\"M8 2v4\"/><path d=\"M16 2v4\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/><path d=\"M3 10h18\"/>',\n  check: '<path d=\"M20 6 9 17l-5-5\"/>',\n  \"chevron-down\": '<path d=\"m6 9 6 6 6-6\"/>',\n  \"chevron-left\": '<path d=\"m15 18-6-6 6-6\"/>',\n  \"chevron-right\": '<path d=\"m9 18 6-6-6-6\"/>',\n  \"chevron-up\": '<path d=\"m18 15-6-6-6 6\"/>',\n  \"chevrons-up-down\": '<path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/>',\n  circle: '<circle cx=\"12\" cy=\"12\" r=\"10\"/>',\n  clock: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/>',\n  code: '<path d=\"m16 18 6-6-6-6\"/><path d=\"m8 6-6 6 6 6\"/>',\n  copy: '<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>',\n  \"credit-card\":\n    '<rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\"/><line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\"/>',\n  database:\n    '<path d=\"M21 5a9 3 0 1 1-18 0 9 3 0 0 1 18 0\"/><path d=\"M3 5v14a9 3 0 0 0 18 0V5\"/><path d=\"M3 12a9 3 0 0 0 18 0\"/>',\n  download:\n    '<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m7 10 5 5 5-5\"/><path d=\"M12 15V3\"/>',\n  ellipsis:\n    '<circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"19\" cy=\"12\" r=\"1\"/><circle cx=\"5\" cy=\"12\" r=\"1\"/>',\n  \"ellipsis-vertical\":\n    '<circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"5\" r=\"1\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/>',\n  error:\n    '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 8v4\"/><path d=\"M12 16h.01\"/>',\n  \"external-link\":\n    '<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>',\n  eye: '<path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>',\n  \"eye-off\":\n    '<path d=\"m2 2 20 20\"/><path d=\"M6.7 6.7C3.9 8.2 2 12 2 12s3.5 7 10 7c2 0 3.7-.6 5.1-1.5\"/><path d=\"M9.9 4.2A11 11 0 0 1 12 4c6.5 0 10 7 10 7a18 18 0 0 1-2.2 3.2\"/><path d=\"M9.9 9.9a3 3 0 0 0 4.2 4.2\"/>',\n  file: '<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>',\n  \"file-text\":\n    '<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/><path d=\"M10 9H8\"/><path d=\"M16 13H8\"/><path d=\"M16 17H8\"/>',\n  filter: '<path d=\"M22 3H2l8 9.46V19l4 2v-8.54Z\"/>',\n  folder:\n    '<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>',\n  \"folder-open\":\n    '<path d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\"/>',\n  \"git-branch\":\n    '<path d=\"M15 6a9 9 0 0 0-9 9V3\"/><circle cx=\"18\" cy=\"6\" r=\"3\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/>',\n  grid: '<rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\"/><rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\"/><rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\"/><rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"/>',\n  \"grip-vertical\":\n    '<circle cx=\"9\" cy=\"5\" r=\"1\"/><circle cx=\"9\" cy=\"12\" r=\"1\"/><circle cx=\"9\" cy=\"19\" r=\"1\"/><circle cx=\"15\" cy=\"5\" r=\"1\"/><circle cx=\"15\" cy=\"12\" r=\"1\"/><circle cx=\"15\" cy=\"19\" r=\"1\"/>',\n  help: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path d=\"M12 17h.01\"/>',\n  home: '<path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/><path d=\"M9 22V12h6v10\"/>',\n  image:\n    '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/>',\n  info: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/>',\n  link: '<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>',\n  list: '<path d=\"M8 6h13\"/><path d=\"M8 12h13\"/><path d=\"M8 18h13\"/><path d=\"M3 6h.01\"/><path d=\"M3 12h.01\"/><path d=\"M3 18h.01\"/>',\n  loader:\n    '<path d=\"M12 2v4\"/><path d=\"M12 18v4\"/><path d=\"M2 12h4\"/><path d=\"M18 12h4\"/><path d=\"m4.9 4.9 2.9 2.9\"/><path d=\"m16.2 16.2 2.9 2.9\"/><path d=\"m4.9 19.1 2.9-2.9\"/><path d=\"m16.2 7.8 2.9-2.9\"/>',\n  lock: '<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>',\n  \"log-out\":\n    '<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/><polyline points=\"16 17 21 12 16 7\"/><line x1=\"21\" x2=\"9\" y1=\"12\" y2=\"12\"/>',\n  mail: '<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/>',\n  maximize:\n    '<path d=\"M8 3H5a2 2 0 0 0-2 2v3\"/><path d=\"M21 8V5a2 2 0 0 0-2-2h-3\"/><path d=\"M3 16v3a2 2 0 0 0 2 2h3\"/><path d=\"M16 21h3a2 2 0 0 0 2-2v-3\"/>',\n  minimize:\n    '<path d=\"M8 3v3a2 2 0 0 1-2 2H3\"/><path d=\"M21 8h-3a2 2 0 0 1-2-2V3\"/><path d=\"M3 16h3a2 2 0 0 1 2 2v3\"/><path d=\"M16 21v-3a2 2 0 0 1 2-2h3\"/>',\n  minus: '<path d=\"M5 12h14\"/>',\n  moon: '<path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\"/>',\n  \"panel-bottom\":\n    '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M3 15h18\"/>',\n  \"panel-left\":\n    '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M9 3v18\"/>',\n  \"panel-right\":\n    '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M15 3v18\"/>',\n  pause:\n    '<rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\"/><rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\"/>',\n  pencil: '<path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\"/>',\n  play: '<path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\"/>',\n  plus: '<path d=\"M5 12h14\"/><path d=\"M12 5v14\"/>',\n  redo: '<path d=\"M21 7v6h-6\"/><path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/>',\n  refresh:\n    '<path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"/><path d=\"M3 3v5h5\"/>',\n  save: '<path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\"/><path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\"/><path d=\"M7 3v4a1 1 0 0 0 1 1h7\"/>',\n  search: '<circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>',\n  send: '<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\"/><path d=\"m21.854 2.147-10.94 10.939\"/>',\n  settings:\n    '<path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>',\n  shield:\n    '<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>',\n  \"sliders-horizontal\":\n    '<path d=\"M10 5H3\"/><path d=\"M12 19H3\"/><path d=\"M14 3v4\"/><path d=\"M16 17v4\"/><path d=\"M21 12h-9\"/><path d=\"M21 19h-5\"/><path d=\"M21 5h-7\"/><path d=\"M8 10v4\"/><path d=\"M8 12H3\"/>',\n  \"sort-asc\":\n    '<path d=\"m3 8 4-4 4 4\"/><path d=\"M7 4v16\"/><path d=\"M15 8h6\"/><path d=\"M15 12h6\"/><path d=\"M15 16h6\"/>',\n  \"sort-desc\":\n    '<path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M15 8h6\"/><path d=\"M15 12h6\"/><path d=\"M15 16h6\"/>',\n  sparkles:\n    '<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/><path d=\"M20 2v4\"/><path d=\"M22 4h-4\"/><circle cx=\"4\" cy=\"20\" r=\"2\"/>',\n  square: '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>',\n  star: '<path d=\"m12 2 3.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.01Z\"/>',\n\n  \"star-filled\":\n    '<path d=\"m12 2 3.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.01Z\" fill=\"#000\" stroke=\"none\"/>',\n  success: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/>',\n  sun: '<circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2\"/><path d=\"M12 20v2\"/><path d=\"M2 12h2\"/><path d=\"M20 12h2\"/><path d=\"m4.93 4.93 1.41 1.41\"/><path d=\"m17.66 17.66 1.41 1.41\"/><path d=\"m4.93 19.07 1.41-1.41\"/><path d=\"m17.66 6.34 1.41-1.41\"/>',\n  table:\n    '<path d=\"M12 3v18\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M3 9h18\"/><path d=\"M3 15h18\"/>',\n  terminal: '<path d=\"M12 19h8\"/><path d=\"m4 17 6-6-6-6\"/>',\n  trash:\n    '<path d=\"M3 6h18\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>',\n  undo: '<path d=\"M3 7v6h6\"/><path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/>',\n  upload:\n    '<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m17 8-5-5-5 5\"/><path d=\"M12 3v12\"/>',\n  user: '<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/>',\n  users:\n    '<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/>',\n  \"volume-2\":\n    '<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\"/><path d=\"M16 9a5 5 0 0 1 0 6\"/><path d=\"M19.364 18.364a9 9 0 0 0 0-12.728\"/>',\n  \"volume-x\":\n    '<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\"/><line x1=\"22\" x2=\"16\" y1=\"9\" y2=\"15\"/><line x1=\"16\" x2=\"22\" y1=\"9\" y2=\"15\"/>',\n  warning:\n    '<path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/>',\n  x: '<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>',\n} satisfies Record<IconName, string>;\n\nexport const icons: Record<IconName, IconMarkup> = R.map(\n  shapes,\n  (shape) => `<svg ${ATTRIBUTES}>${shape}</svg>`,\n);\n\nexport const FALLBACK_ICON = \"help\" satisfies IconName;\n\nexport const iconMarkup = (name: unknown): IconMarkup =>\n  isIconName(name) ? icons[name] : icons[FALLBACK_ICON];\n\nconst turned = new Map<string, IconMarkup>();\n\nexport const rotatedIconMarkup = (\n  name: unknown,\n  degrees: number,\n): IconMarkup => {\n  const turn = Number.isFinite(degrees) ? ((degrees % 360) + 360) % 360 : 0;\n  if (turn === 0) return iconMarkup(name);\n\n  const key = `${String(name)}:${turn}`;\n  const cached = turned.get(key);\n  if (cached !== undefined) return cached;\n\n  const markup = iconMarkup(name).replace(\n    /^(<svg[^>]*>)([\\s\\S]*)(<\\/svg>)$/,\n    `$1<g transform=\"rotate(${turn} 12 12)\">$2</g>$3`,\n  );\n  turned.set(key, markup);\n  return markup;\n};\n"
    },
    {
      "path": "packages/icons/src/sizes.ts",
      "target": "@ui/gpuixui/icons/sizes.ts",
      "type": "registry:lib",
      "content": "import { iconSize, isIconSize } from \"../tokens/index.js\";\n\nexport const ICON_SIZES = iconSize;\n\nexport type IconSize = keyof typeof ICON_SIZES;\n\nexport const iconPixels = (size: unknown): number => {\n  if (typeof size === \"number\") {\n    return Number.isFinite(size) && size > 0 ? size : ICON_SIZES.md;\n  }\n  return isIconSize(size) ? ICON_SIZES[size] : ICON_SIZES.md;\n};\n"
    }
  ],
  "docs": "[Runtime: icons](https://gpuixui.sudokw.com/registry) — These are GPUix native components: the files render through GPUix's reconciler against `@gpuix/react`, not the DOM, and need the per-platform `@gpuix/native` binding. The CLI installs the `@gpuixui/*` runtime the components import as registry items, so the copied tree resolves on its own; wrap it in `ThemeProvider` before it renders.",
  "meta": {
    "url": "/registry",
    "kind": "runtime",
    "runtime": "gpuix",
    "registry": "gpuixui"
  }
}