{"version":3,"sources":["/home/wangzhijun/Projects/payload-lucide-picker/dist/fields/component/index.cjs","../../../src/fields/component/index.tsx"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","component_exports","IconSelectField","default","component_default","module","exports","import_react","require","import_ui","import_dynamicIconImports","import_dynamic","PREDEFINED_SIZES","PREDEFINED_STROKE_WIDTHS","COLOR_PALETTE","tooltip","DEFAULT_ICON_CONFIG","size","color","strokeWidth","absoluteStrokeWidth","useDebounce","delay","useState","debouncedValue","setDebouncedValue","useEffect","timer","setTimeout","clearTimeout","iconCache","Icon","React","memo","props","dynamic","dynamicIconImports","LucideIcon","createElement","displayName","ICONS_PER_PAGE","path","field","label","useField","setValue","fieldIsFocused","setFieldIsFocused","search","setSearch","page","setPage","hoveredIcon","setHoveredIcon","showConfig","setShowConfig","showResetConfirm","setShowResetConfirm","debouncedSearch","allIcons","useMemo","keys","sort","filteredIcons","filter","toLowerCase","includes","totalPages","Math","ceil","length","paginatedIcons","slice","popularIcons","forEach","handleIconSelect","useCallback","iconName","handleConfigChange","newValue","handleClickOutside","event","modalElement","document","querySelector","fieldElement","contains","addEventListener","removeEventListener","handleResetToDefaults","style","width","fontFamily","display","alignItems","gap","marginBottom","fontSize","fontWeight","marginTop","position","justifyContent","height","minWidth","backgroundColor","border","borderRadius","cursor","transition","onClick","tabIndex","role","onKeyDown","e","preventDefault","type","flex","padding","replace","c","toUpperCase","readOnly","top","right","boxShadow","zIndex","borderBottom","margin","background","htmlFor","flexWrap","map","id","onChange","parseInt","min","max","placeholder","colorOption","Fragment","marginRight","parseFloat","step","checked","className","inset","maxWidth","lineHeight","borderTop","left","overflow","flexDirection","autoFocus","gridTemplateColumns","maxHeight","overflowY","onMouseOver","onMouseOut","title","textAlign","whiteSpace","textOverflow","fontStyle","p","disabled","opacity"],"mappings":"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","sourcesContent":["\"use strict\";\n\"use client\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/fields/component/index.tsx\nvar component_exports = {};\n__export(component_exports, {\n  IconSelectField: () => IconSelectField,\n  default: () => component_default\n});\nmodule.exports = __toCommonJS(component_exports);\nvar import_react = __toESM(require(\"react\"), 1);\nvar import_ui = require(\"@payloadcms/ui\");\nvar import_dynamicIconImports = __toESM(require(\"lucide-react/dynamicIconImports\"), 1);\nvar import_dynamic = __toESM(require(\"next/dynamic\"), 1);\nvar PREDEFINED_SIZES = [16, 20, 24, 32, 40, 48, 64];\nvar PREDEFINED_STROKE_WIDTHS = [0.5, 1, 1.5, 2, 2.5, 3];\nvar COLOR_PALETTE = [\n  {\n    value: \"currentColor\",\n    tooltip: \"Uses the text color from your frontend theme (recommended for consistent styling)\"\n  },\n  // Monochrome\n  { value: \"#000000\", tooltip: \"Black\" },\n  { value: \"#ffffff\", tooltip: \"White\" },\n  { value: \"#64748b\", tooltip: \"Slate\" },\n  // Reds\n  { value: \"#ef4444\", tooltip: \"Red\" },\n  { value: \"#dc2626\", tooltip: \"Red (Dark)\" },\n  { value: \"#fca5a5\", tooltip: \"Red (Light)\" },\n  // Oranges\n  { value: \"#f97316\", tooltip: \"Orange\" },\n  { value: \"#ea580c\", tooltip: \"Orange (Dark)\" },\n  { value: \"#fdba74\", tooltip: \"Orange (Light)\" },\n  // Yellows\n  { value: \"#f59e0b\", tooltip: \"Amber\" },\n  { value: \"#d97706\", tooltip: \"Amber (Dark)\" },\n  { value: \"#fcd34d\", tooltip: \"Amber (Light)\" },\n  // Greens\n  { value: \"#22c55e\", tooltip: \"Green\" },\n  { value: \"#16a34a\", tooltip: \"Green (Dark)\" },\n  { value: \"#86efac\", tooltip: \"Green (Light)\" },\n  // Teals\n  { value: \"#14b8a6\", tooltip: \"Teal\" },\n  { value: \"#0d9488\", tooltip: \"Teal (Dark)\" },\n  { value: \"#5eead4\", tooltip: \"Teal (Light)\" },\n  // Blues\n  { value: \"#3b82f6\", tooltip: \"Blue\" },\n  { value: \"#2563eb\", tooltip: \"Blue (Dark)\" },\n  { value: \"#93c5fd\", tooltip: \"Blue (Light)\" },\n  // Purples\n  { value: \"#a855f7\", tooltip: \"Purple\" },\n  { value: \"#9333ea\", tooltip: \"Purple (Dark)\" },\n  { value: \"#d8b4fe\", tooltip: \"Purple (Light)\" },\n  // Pinks\n  { value: \"#ec4899\", tooltip: \"Pink\" },\n  { value: \"#db2777\", tooltip: \"Pink (Dark)\" },\n  { value: \"#f9a8d4\", tooltip: \"Pink (Light)\" }\n];\nvar DEFAULT_ICON_CONFIG = {\n  name: \"\",\n  size: 24,\n  color: \"currentColor\",\n  strokeWidth: 2,\n  absoluteStrokeWidth: false\n};\nvar useDebounce = (value, delay) => {\n  const [debouncedValue, setDebouncedValue] = (0, import_react.useState)(value);\n  (0, import_react.useEffect)(() => {\n    const timer = setTimeout(() => {\n      setDebouncedValue(value);\n    }, delay);\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n  return debouncedValue;\n};\nvar iconCache = {};\nvar Icon = import_react.default.memo(({ name, ...props }) => {\n  if (!iconCache[name]) {\n    iconCache[name] = (0, import_dynamic.default)(import_dynamicIconImports.default[name]);\n  }\n  const LucideIcon = iconCache[name];\n  return /* @__PURE__ */ import_react.default.createElement(LucideIcon, { ...props });\n});\nIcon.displayName = \"Icon\";\nvar ICONS_PER_PAGE = 60;\nvar IconSelectField = (props) => {\n  const {\n    path,\n    field\n  } = props;\n  const label = field.label;\n  const { value = DEFAULT_ICON_CONFIG, setValue } = (0, import_ui.useField)({ path });\n  const [fieldIsFocused, setFieldIsFocused] = (0, import_react.useState)(false);\n  const [search, setSearch] = (0, import_react.useState)(\"\");\n  const [page, setPage] = (0, import_react.useState)(0);\n  const [hoveredIcon, setHoveredIcon] = (0, import_react.useState)(null);\n  const [showConfig, setShowConfig] = (0, import_react.useState)(false);\n  const [showResetConfirm, setShowResetConfirm] = (0, import_react.useState)(false);\n  const debouncedSearch = useDebounce(search, 300);\n  const allIcons = (0, import_react.useMemo)(\n    () => Object.keys(import_dynamicIconImports.default).sort(),\n    []\n  );\n  const filteredIcons = (0, import_react.useMemo)(() => {\n    if (!debouncedSearch) return allIcons;\n    return allIcons.filter(\n      (name) => name.toLowerCase().includes(debouncedSearch.toLowerCase())\n    );\n  }, [debouncedSearch, allIcons]);\n  const totalPages = Math.ceil(filteredIcons.length / ICONS_PER_PAGE);\n  const paginatedIcons = (0, import_react.useMemo)(() => {\n    return filteredIcons.slice(\n      page * ICONS_PER_PAGE,\n      (page + 1) * ICONS_PER_PAGE\n    );\n  }, [filteredIcons, page]);\n  (0, import_react.useEffect)(() => {\n    const popularIcons = [\"check\", \"x\", \"user\", \"settings\", \"home\", \"search\"].filter((name) => name in import_dynamicIconImports.default);\n    popularIcons.forEach((name) => {\n      if (!iconCache[name]) {\n        iconCache[name] = (0, import_dynamic.default)(import_dynamicIconImports.default[name]);\n      }\n    });\n  }, []);\n  (0, import_react.useEffect)(() => {\n    setPage(0);\n  }, [debouncedSearch]);\n  const handleIconSelect = (0, import_react.useCallback)((iconName) => {\n    setValue({\n      ...value,\n      name: iconName\n    });\n    setFieldIsFocused(false);\n    setSearch(\"\");\n  }, [setValue, value]);\n  const handleConfigChange = (0, import_react.useCallback)((field2, newValue) => {\n    setValue({\n      ...value,\n      [field2]: newValue\n    });\n  }, [setValue, value]);\n  (0, import_react.useEffect)(() => {\n    const handleClickOutside = (event) => {\n      const modalElement = document.querySelector(\".icon-picker-modal\");\n      const fieldElement = document.querySelector(\".icon-select-field\");\n      if (fieldIsFocused && modalElement && fieldElement && !modalElement.contains(event.target) && !fieldElement.contains(event.target)) {\n        setFieldIsFocused(false);\n        setSearch(\"\");\n      }\n    };\n    document.addEventListener(\"mousedown\", handleClickOutside);\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [fieldIsFocused]);\n  const handleResetToDefaults = (0, import_react.useCallback)(() => {\n    setValue({\n      ...DEFAULT_ICON_CONFIG,\n      name: value.name\n      // Preserve the selected icon\n    });\n    setShowResetConfirm(false);\n  }, [setValue, value.name]);\n  return /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    width: \"100%\",\n    fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\"label\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"6px\",\n    marginBottom: \"6px\",\n    color: \"var(--theme-elevation-800)\",\n    fontSize: \"12px\",\n    fontWeight: 500\n  } }, /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"palette\", size: 14, style: { color: \"var(--theme-elevation-500)\" } }), label), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: \"8px\",\n    marginTop: \"8px\",\n    position: \"relative\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\n    \"div\",\n    {\n      style: {\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        height: \"40px\",\n        width: \"40px\",\n        minWidth: \"40px\",\n        backgroundColor: \"var(--theme-elevation-50, #f3f3f3)\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: () => setFieldIsFocused(true),\n      tabIndex: 0,\n      role: \"button\",\n      \"aria-label\": \"Open icon selector\",\n      onKeyDown: (e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          setFieldIsFocused(true);\n        }\n      }\n    },\n    value.name ? /* @__PURE__ */ import_react.default.createElement(\n      Icon,\n      {\n        name: value.name,\n        size: value.size,\n        color: value.color,\n        strokeWidth: value.strokeWidth,\n        absoluteStrokeWidth: value.absoluteStrokeWidth,\n        style: { color: \"var(--theme-text, #333)\" }\n      }\n    ) : /* @__PURE__ */ import_react.default.createElement(\"span\", { style: {\n      color: \"var(--theme-elevation-400, #a6a6a6)\",\n      fontSize: \"12px\"\n    } }, \"Icon\")\n  ), /* @__PURE__ */ import_react.default.createElement(\n    \"input\",\n    {\n      type: \"text\",\n      style: {\n        flex: 1,\n        height: \"40px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        padding: \"0 10px\",\n        backgroundColor: \"var(--theme-input-bg, #fff)\",\n        color: \"var(--theme-text, #333)\",\n        cursor: \"pointer\"\n      },\n      value: value.name ? value.name.replace(/-/g, \" \").replace(/\\b\\w/g, (c) => c.toUpperCase()) : \"Select an icon...\",\n      readOnly: true,\n      onClick: () => setFieldIsFocused(true),\n      onKeyDown: (e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          setFieldIsFocused(true);\n        }\n      },\n      \"aria-haspopup\": \"true\",\n      \"aria-expanded\": fieldIsFocused\n    }\n  ), /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      style: {\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        height: \"40px\",\n        width: \"40px\",\n        minWidth: \"40px\",\n        backgroundColor: \"var(--theme-elevation-50, #f3f3f3)\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\",\n        color: \"var(--theme-elevation-800, #525252)\"\n      },\n      onClick: (e) => {\n        e.preventDefault();\n        setShowConfig(!showConfig);\n      },\n      \"aria-label\": \"Configure icon\"\n    },\n    /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"settings\", size: 20 })\n  ), showConfig && /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    position: \"absolute\",\n    top: \"45px\",\n    right: 0,\n    width: \"300px\",\n    backgroundColor: \"var(--theme-bg, #fff)\",\n    border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n    borderRadius: \"4px\",\n    boxShadow: \"0 4px 20px rgba(0, 0, 0, 0.15)\",\n    zIndex: 10\n  } }, /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    padding: \"12px 16px\",\n    borderBottom: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\"h3\", { style: { margin: 0, fontSize: \"14px\", fontWeight: 500 } }, \"Icon Configuration\"), /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      onClick: () => setShowConfig(false),\n      style: {\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        background: \"none\",\n        border: \"none\",\n        color: \"var(--theme-elevation-500, #919191)\",\n        cursor: \"pointer\",\n        padding: \"4px\",\n        borderRadius: \"4px\"\n      }\n    },\n    /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"x\", size: 16 })\n  )), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { padding: \"16px\" } }, /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { marginBottom: \"16px\" } }, /* @__PURE__ */ import_react.default.createElement(\"label\", { htmlFor: \"icon-size\", style: {\n    display: \"block\",\n    fontSize: \"12px\",\n    fontWeight: 500,\n    color: \"var(--theme-elevation-800, #525252)\",\n    marginBottom: \"8px\"\n  } }, \"Size\"), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"4px\",\n    marginBottom: \"8px\"\n  } }, PREDEFINED_SIZES.map((size) => /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      key: size,\n      type: \"button\",\n      style: {\n        padding: \"4px 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        background: value.size === size ? \"var(--theme-text, #333)\" : \"var(--theme-elevation-50, #f3f3f3)\",\n        color: value.size === size ? \"var(--theme-bg, #fff)\" : \"var(--theme-text, #333)\",\n        fontSize: \"12px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: () => handleConfigChange(\"size\", size)\n    },\n    size\n  ))), /* @__PURE__ */ import_react.default.createElement(\n    \"input\",\n    {\n      id: \"icon-size\",\n      type: \"number\",\n      value: value.size,\n      onChange: (e) => handleConfigChange(\"size\", parseInt(e.target.value, 10)),\n      min: 1,\n      max: 100,\n      style: {\n        width: \"100%\",\n        height: \"32px\",\n        padding: \"0 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        fontSize: \"13px\",\n        backgroundColor: \"var(--theme-input-bg, #fff)\"\n      },\n      placeholder: \"Custom size...\"\n    }\n  )), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { marginBottom: \"16px\" } }, /* @__PURE__ */ import_react.default.createElement(\"label\", { htmlFor: \"icon-color\", style: {\n    display: \"block\",\n    fontSize: \"12px\",\n    fontWeight: 500,\n    color: \"var(--theme-elevation-800, #525252)\",\n    marginBottom: \"8px\"\n  } }, \"Color\"), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"4px\",\n    marginBottom: \"8px\"\n  } }, COLOR_PALETTE.map((colorOption) => /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      key: colorOption.value,\n      type: \"button\",\n      style: {\n        padding: \"4px 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        background: value.color === colorOption.value ? \"var(--theme-text, #333)\" : \"var(--theme-elevation-50, #f3f3f3)\",\n        color: value.color === colorOption.value ? \"var(--theme-bg, #fff)\" : \"var(--theme-text, #333)\",\n        fontSize: \"12px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: () => handleConfigChange(\"color\", colorOption.value)\n    },\n    colorOption.value === \"currentColor\" ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"palette\", size: 14 }), /* @__PURE__ */ import_react.default.createElement(\"span\", null, \"currentColor\")) : /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      width: \"16px\",\n      height: \"16px\",\n      backgroundColor: colorOption.value,\n      borderRadius: \"2px\",\n      marginRight: \"4px\"\n    } })\n  ))), /* @__PURE__ */ import_react.default.createElement(\n    \"input\",\n    {\n      id: \"icon-color\",\n      type: \"text\",\n      value: value.color,\n      onChange: (e) => handleConfigChange(\"color\", e.target.value),\n      placeholder: \"Custom color (hex, rgb, etc.)\",\n      style: {\n        width: \"100%\",\n        height: \"32px\",\n        padding: \"0 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        fontSize: \"13px\",\n        backgroundColor: \"var(--theme-input-bg, #fff)\"\n      }\n    }\n  )), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { marginBottom: \"16px\" } }, /* @__PURE__ */ import_react.default.createElement(\"label\", { htmlFor: \"icon-stroke-width\", style: {\n    display: \"block\",\n    fontSize: \"12px\",\n    fontWeight: 500,\n    color: \"var(--theme-elevation-800, #525252)\",\n    marginBottom: \"8px\"\n  } }, \"Stroke Width\"), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"4px\",\n    marginBottom: \"8px\"\n  } }, PREDEFINED_STROKE_WIDTHS.map((width) => /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      key: width,\n      type: \"button\",\n      style: {\n        padding: \"4px 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        background: value.strokeWidth === width ? \"var(--theme-text, #333)\" : \"var(--theme-elevation-50, #f3f3f3)\",\n        color: value.strokeWidth === width ? \"var(--theme-bg, #fff)\" : \"var(--theme-text, #333)\",\n        fontSize: \"12px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: () => handleConfigChange(\"strokeWidth\", width)\n    },\n    width\n  ))), /* @__PURE__ */ import_react.default.createElement(\n    \"input\",\n    {\n      id: \"icon-stroke-width\",\n      type: \"number\",\n      value: value.strokeWidth,\n      onChange: (e) => handleConfigChange(\"strokeWidth\", parseFloat(e.target.value)),\n      min: 0.1,\n      max: 10,\n      step: 0.1,\n      style: {\n        width: \"100%\",\n        height: \"32px\",\n        padding: \"0 8px\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        fontSize: \"13px\",\n        backgroundColor: \"var(--theme-input-bg, #fff)\"\n      },\n      placeholder: \"Custom stroke width...\"\n    }\n  )), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { marginBottom: \"16px\" } }, /* @__PURE__ */ import_react.default.createElement(\"label\", { htmlFor: \"icon-absolute-stroke\", style: {\n    display: \"block\",\n    fontSize: \"12px\",\n    fontWeight: 500,\n    color: \"var(--theme-elevation-800, #525252)\",\n    marginBottom: \"8px\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\n    \"input\",\n    {\n      id: \"icon-absolute-stroke\",\n      type: \"checkbox\",\n      checked: value.absoluteStrokeWidth,\n      onChange: (e) => handleConfigChange(\"absoluteStrokeWidth\", e.target.checked)\n    }\n  ), \"Absolute Stroke Width\")), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: { marginTop: \"16px\", display: \"flex\", justifyContent: \"space-between\" } }, /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      className: \"icon-config-panel__reset\",\n      onClick: () => setShowResetConfirm(true),\n      style: {\n        padding: \"8px 16px\",\n        border: \"none\",\n        background: \"none\",\n        color: \"var(--theme-elevation-800, #525252)\",\n        fontSize: \"12px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      }\n    },\n    /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"rotate-ccw\", size: 14 }),\n    \"Restore Defaults\"\n  ), /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      className: \"icon-config-panel__confirm\",\n      onClick: handleResetToDefaults,\n      style: {\n        padding: \"8px 16px\",\n        border: \"none\",\n        background: \"var(--theme-text, #333)\",\n        color: \"var(--theme-bg, #fff)\",\n        fontSize: \"12px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      }\n    },\n    \"Reset to Defaults\"\n  )))), showResetConfirm && /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    position: \"fixed\",\n    inset: 0,\n    backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    zIndex: 20\n  } }, /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    width: \"100%\",\n    maxWidth: \"400px\",\n    backgroundColor: \"var(--theme-bg, #fff)\",\n    borderRadius: \"6px\",\n    boxShadow: \"0 4px 20px rgba(0, 0, 0, 0.2)\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    padding: \"16px\",\n    borderBottom: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\"h3\", { style: {\n    margin: 0,\n    fontSize: \"16px\",\n    fontWeight: 500,\n    color: \"var(--theme-text, #333)\"\n  } }, \"Reset Configuration\"), /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      onClick: () => setShowResetConfirm(false),\n      style: {\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        background: \"none\",\n        border: \"none\",\n        color: \"var(--theme-elevation-500, #919191)\",\n        cursor: \"pointer\",\n        padding: \"4px\",\n        borderRadius: \"4px\"\n      }\n    },\n    /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"x\", size: 16 })\n  )), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    padding: \"16px\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\"p\", { style: {\n    margin: 0,\n    color: \"var(--theme-text, #333)\",\n    fontSize: \"14px\",\n    lineHeight: 1.5,\n    fontWeight: 500,\n    marginBottom: \"8px\"\n  } }, \"Are you sure you want to restore default configuration?\"), /* @__PURE__ */ import_react.default.createElement(\"p\", { style: {\n    margin: 0,\n    color: \"var(--theme-elevation-600, #666)\",\n    fontSize: \"13px\",\n    lineHeight: 1.5\n  } }, \"This will reset size, color, stroke width, and absolute stroke settings to their default values. The selected icon will be preserved.\")), /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    gap: \"8px\",\n    padding: \"16px\",\n    borderTop: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n  } }, /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      style: {\n        padding: \"8px 16px\",\n        background: \"var(--theme-elevation-50, #f3f3f3)\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        color: \"var(--theme-text, #333)\",\n        fontSize: \"14px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: () => setShowResetConfirm(false)\n    },\n    \"Cancel\"\n  ), /* @__PURE__ */ import_react.default.createElement(\n    \"button\",\n    {\n      type: \"button\",\n      style: {\n        padding: \"8px 16px\",\n        background: \"var(--theme-error-600, #dc2626)\",\n        border: \"1px solid var(--theme-error-700, #b91c1c)\",\n        borderRadius: \"4px\",\n        color: \"white\",\n        fontSize: \"14px\",\n        cursor: \"pointer\",\n        transition: \"all 0.1s ease-in-out\"\n      },\n      onClick: handleResetToDefaults\n    },\n    \"Reset to Defaults\"\n  )))), fieldIsFocused && /* @__PURE__ */ import_react.default.createElement(\n    \"div\",\n    {\n      style: {\n        position: \"absolute\",\n        top: \"45px\",\n        left: 0,\n        width: \"100%\",\n        maxWidth: \"580px\",\n        backgroundColor: \"var(--theme-bg, #fff)\",\n        border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n        borderRadius: \"4px\",\n        boxShadow: \"0 4px 20px rgba(0, 0, 0, 0.15)\",\n        zIndex: 10,\n        overflow: \"hidden\",\n        display: \"flex\",\n        flexDirection: \"column\"\n      },\n      \"aria-label\": \"Icon Picker\",\n      role: \"dialog\"\n    },\n    /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      display: \"flex\",\n      justifyContent: \"space-between\",\n      alignItems: \"center\",\n      padding: \"12px 16px\",\n      borderBottom: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n    } }, /* @__PURE__ */ import_react.default.createElement(\"h2\", { style: {\n      margin: 0,\n      fontSize: \"16px\",\n      fontWeight: 500,\n      color: \"var(--theme-text, #333)\"\n    } }, \"Select an Icon\"), /* @__PURE__ */ import_react.default.createElement(\n      \"button\",\n      {\n        type: \"button\",\n        style: {\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          background: \"none\",\n          border: \"none\",\n          color: \"var(--theme-elevation-500, #919191)\",\n          cursor: \"pointer\",\n          padding: \"4px\",\n          borderRadius: \"4px\"\n        },\n        onClick: (e) => {\n          e.preventDefault();\n          setFieldIsFocused(false);\n          setSearch(\"\");\n        },\n        \"aria-label\": \"Close dialog\"\n      },\n      /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"x\", size: 20 })\n    )),\n    /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      padding: \"12px 16px\",\n      borderBottom: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n    } }, /* @__PURE__ */ import_react.default.createElement(\n      \"input\",\n      {\n        type: \"search\",\n        placeholder: hoveredIcon || \"Search icons...\",\n        value: search,\n        onChange: (e) => setSearch(e.target.value),\n        style: {\n          width: \"100%\",\n          height: \"36px\",\n          padding: \"0 12px\",\n          border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n          borderRadius: \"4px\",\n          backgroundColor: \"var(--theme-input-bg, #fff)\"\n        },\n        autoFocus: true\n      }\n    )),\n    /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      padding: \"8px 16px\",\n      fontSize: \"12px\",\n      color: \"var(--theme-elevation-500, #919191)\",\n      borderBottom: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n    } }, \"Showing \", paginatedIcons.length, \" of \", filteredIcons.length, \" icons\"),\n    /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      display: \"grid\",\n      gridTemplateColumns: \"repeat(auto-fill, minmax(80px, 1fr))\",\n      gap: \"8px\",\n      padding: \"16px\",\n      maxHeight: \"320px\",\n      overflowY: \"auto\"\n    } }, paginatedIcons.length > 0 ? paginatedIcons.map((iconName) => /* @__PURE__ */ import_react.default.createElement(\n      \"button\",\n      {\n        key: iconName,\n        type: \"button\",\n        style: {\n          display: \"flex\",\n          flexDirection: \"column\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          gap: \"4px\",\n          padding: \"8px 4px\",\n          background: value.name === iconName ? \"var(--theme-elevation-100, #f0f0f0)\" : \"none\",\n          border: `1px solid ${value.name === iconName ? \"var(--theme-elevation-300, #c1c1c1)\" : \"var(--theme-elevation-100, #f0f0f0)\"}`,\n          borderRadius: \"4px\",\n          cursor: \"pointer\",\n          transition: \"all 0.1s ease-in-out\",\n          position: \"relative\"\n        },\n        onClick: (e) => {\n          e.preventDefault();\n          handleIconSelect(iconName);\n        },\n        onMouseOver: () => setHoveredIcon(iconName),\n        onMouseOut: () => setHoveredIcon(null),\n        title: iconName.replace(/-/g, \" \").replace(/\\b\\w/g, (c) => c.toUpperCase()),\n        \"aria-selected\": value.name === iconName,\n        \"aria-label\": iconName.replace(/-/g, \" \")\n      },\n      value.name === iconName && /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n        position: \"absolute\",\n        top: \"4px\",\n        right: \"4px\",\n        width: \"8px\",\n        height: \"8px\",\n        borderRadius: \"50%\",\n        backgroundColor: \"var(--theme-success, #4caf50)\"\n      } }),\n      /* @__PURE__ */ import_react.default.createElement(\n        Icon,\n        {\n          name: iconName,\n          size: value.size,\n          color: value.color,\n          strokeWidth: value.strokeWidth,\n          absoluteStrokeWidth: value.absoluteStrokeWidth\n        }\n      ),\n      /* @__PURE__ */ import_react.default.createElement(\"span\", { style: {\n        fontSize: \"10px\",\n        color: \"var(--theme-elevation-800, #525252)\",\n        textAlign: \"center\",\n        whiteSpace: \"nowrap\",\n        overflow: \"hidden\",\n        textOverflow: \"ellipsis\",\n        maxWidth: \"100%\"\n      } }, iconName.replace(/-/g, \" \"))\n    )) : /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      padding: \"32px\",\n      color: \"var(--theme-elevation-500, #919191)\",\n      fontStyle: \"italic\"\n    } }, \"No icons found matching \", debouncedSearch)),\n    totalPages > 1 && /* @__PURE__ */ import_react.default.createElement(\"div\", { style: {\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"space-between\",\n      padding: \"12px 16px\",\n      borderTop: \"1px solid var(--theme-elevation-100, #f0f0f0)\"\n    } }, /* @__PURE__ */ import_react.default.createElement(\n      \"button\",\n      {\n        type: \"button\",\n        onClick: (e) => {\n          e.preventDefault();\n          setPage((p) => Math.max(0, p - 1));\n        },\n        disabled: page === 0,\n        style: {\n          display: \"flex\",\n          alignItems: \"center\",\n          gap: \"4px\",\n          padding: \"6px 12px\",\n          backgroundColor: \"var(--theme-elevation-50, #f3f3f3)\",\n          border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n          borderRadius: \"4px\",\n          color: \"var(--theme-text, #333)\",\n          fontSize: \"14px\",\n          cursor: page === 0 ? \"not-allowed\" : \"pointer\",\n          transition: \"all 0.1s ease-in-out\",\n          opacity: page === 0 ? 0.5 : 1\n        },\n        \"aria-label\": \"Previous page\"\n      },\n      /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"chevron-left\", size: 16 }),\n      \"Previous\"\n    ), /* @__PURE__ */ import_react.default.createElement(\"span\", { style: {\n      fontSize: \"14px\",\n      color: \"var(--theme-elevation-600, #666)\"\n    } }, \"Page \", page + 1, \" of \", totalPages), /* @__PURE__ */ import_react.default.createElement(\n      \"button\",\n      {\n        type: \"button\",\n        onClick: (e) => {\n          e.preventDefault();\n          setPage((p) => Math.min(totalPages - 1, p + 1));\n        },\n        disabled: page === totalPages - 1,\n        style: {\n          display: \"flex\",\n          alignItems: \"center\",\n          gap: \"4px\",\n          padding: \"6px 12px\",\n          backgroundColor: \"var(--theme-elevation-50, #f3f3f3)\",\n          border: \"1px solid var(--theme-elevation-150, #e1e1e1)\",\n          borderRadius: \"4px\",\n          color: \"var(--theme-text, #333)\",\n          fontSize: \"14px\",\n          cursor: page === totalPages - 1 ? \"not-allowed\" : \"pointer\",\n          transition: \"all 0.1s ease-in-out\",\n          opacity: page === totalPages - 1 ? 0.5 : 1\n        },\n        \"aria-label\": \"Next page\"\n      },\n      \"Next\",\n      /* @__PURE__ */ import_react.default.createElement(Icon, { name: \"chevron-right\", size: 16 })\n    ))\n  )));\n};\nvar component_default = IconSelectField;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  IconSelectField\n});\n","\"use client\";\nimport React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport { useField } from '@payloadcms/ui';\nimport { LucideProps } from 'lucide-react';\nimport dynamicIconImports from 'lucide-react/dynamicIconImports';\nimport dynamic from 'next/dynamic';\nimport { LucideIconPickerType } from '@/fields/lucide-icon-picker';\n\n// Predefined options for size and stroke width\nconst PREDEFINED_SIZES = [16, 20, 24, 32, 40, 48, 64];\nconst PREDEFINED_STROKE_WIDTHS = [0.5, 1, 1.5, 2, 2.5, 3];\n\n// Color palette type\ninterface ColorOption {\n  value: string;\n  tooltip: string;\n}\n\n// Color palette with more options and organized by color groups\nconst COLOR_PALETTE: ColorOption[] = [\n  {\n    value: 'currentColor',\n    tooltip: 'Uses the text color from your frontend theme (recommended for consistent styling)',\n  },\n  // Monochrome\n  { value: '#000000', tooltip: 'Black' },\n  { value: '#ffffff', tooltip: 'White' },\n  { value: '#64748b', tooltip: 'Slate' },\n  // Reds\n  { value: '#ef4444', tooltip: 'Red' },\n  { value: '#dc2626', tooltip: 'Red (Dark)' },\n  { value: '#fca5a5', tooltip: 'Red (Light)' },\n  // Oranges\n  { value: '#f97316', tooltip: 'Orange' },\n  { value: '#ea580c', tooltip: 'Orange (Dark)' },\n  { value: '#fdba74', tooltip: 'Orange (Light)' },\n  // Yellows\n  { value: '#f59e0b', tooltip: 'Amber' },\n  { value: '#d97706', tooltip: 'Amber (Dark)' },\n  { value: '#fcd34d', tooltip: 'Amber (Light)' },\n  // Greens\n  { value: '#22c55e', tooltip: 'Green' },\n  { value: '#16a34a', tooltip: 'Green (Dark)' },\n  { value: '#86efac', tooltip: 'Green (Light)' },\n  // Teals\n  { value: '#14b8a6', tooltip: 'Teal' },\n  { value: '#0d9488', tooltip: 'Teal (Dark)' },\n  { value: '#5eead4', tooltip: 'Teal (Light)' },\n  // Blues\n  { value: '#3b82f6', tooltip: 'Blue' },\n  { value: '#2563eb', tooltip: 'Blue (Dark)' },\n  { value: '#93c5fd', tooltip: 'Blue (Light)' },\n  // Purples\n  { value: '#a855f7', tooltip: 'Purple' },\n  { value: '#9333ea', tooltip: 'Purple (Dark)' },\n  { value: '#d8b4fe', tooltip: 'Purple (Light)' },\n  // Pinks\n  { value: '#ec4899', tooltip: 'Pink' },\n  { value: '#db2777', tooltip: 'Pink (Dark)' },\n  { value: '#f9a8d4', tooltip: 'Pink (Light)' },\n];\n\n// Default icon configuration\nconst DEFAULT_ICON_CONFIG = {\n  name: '',\n  size: 24,\n  color: 'currentColor',\n  strokeWidth: 2,\n  absoluteStrokeWidth: false,\n};\n\n// Custom hook for debouncing\nconst useDebounce = <T,>(value: T, delay: number): T => {\n  const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setDebouncedValue(value);\n    }, delay);\n\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [value, delay]);\n\n  return debouncedValue;\n};\n\n// Define proper props type for the component\ntype IconSelectFieldProps = {\n  path: string;\n  field: {\n    label: string;\n  };\n}\n\ninterface IconProps extends LucideProps {\n  name: keyof typeof dynamicIconImports;\n}\n\n// Preload and cache icons to improve performance\nconst iconCache: Record<string, React.ComponentType<LucideProps>> = {};\n\nconst Icon = React.memo(({ name, ...props }: IconProps) => {\n  // Use cached icon component if available\n  if (!iconCache[name]) {\n    iconCache[name] = dynamic(dynamicIconImports[name]);\n  }\n\n  const LucideIcon = iconCache[name];\n  return <LucideIcon {...props} />;\n});\n\nIcon.displayName = 'Icon';\n\n// Maximum number of icons to show per page\nconst ICONS_PER_PAGE = 60;\n\nexport const IconSelectField: React.FC<IconSelectFieldProps> = (props) => {\n  const { \n    path,\n    field\n  } = props;\n\n  const label = field.label;\n  \n  const { value = DEFAULT_ICON_CONFIG, setValue } = useField<LucideIconPickerType>({ path });\n  \n  const [fieldIsFocused, setFieldIsFocused] = useState(false);\n  const [search, setSearch] = useState<string>('');\n  const [page, setPage] = useState(0);\n  const [hoveredIcon, setHoveredIcon] = useState<string | null>(null);\n  const [showConfig, setShowConfig] = useState(false);\n  const [showResetConfirm, setShowResetConfirm] = useState(false);\n  \n  // Debounce search for better performance\n  const debouncedSearch = useDebounce(search, 300);\n  \n  // Memoize all icons\n  const allIcons = useMemo(() => \n    Object.keys(dynamicIconImports).sort(),\n    []\n  );\n\n  // Filter icons based on debounced search\n  const filteredIcons = useMemo(() => {\n    if (!debouncedSearch) return allIcons;\n    \n    return allIcons.filter(name => \n      name.toLowerCase().includes(debouncedSearch.toLowerCase())\n    );\n  }, [debouncedSearch, allIcons]);\n\n  const totalPages = Math.ceil(filteredIcons.length / ICONS_PER_PAGE);\n  \n  // Get the current page of icons\n  const paginatedIcons = useMemo(() => {\n    return filteredIcons.slice(\n      page * ICONS_PER_PAGE, \n      (page + 1) * ICONS_PER_PAGE\n    );\n  }, [filteredIcons, page]);\n\n  // Preload common icons on component mount for fast initial render\n  useEffect(() => {\n    const popularIcons = ['check', 'x', 'user', 'settings', 'home', 'search']\n      .filter(name => name in dynamicIconImports);\n    \n    popularIcons.forEach(name => {\n      if (!iconCache[name]) {\n        iconCache[name] = dynamic(dynamicIconImports[name as keyof typeof dynamicIconImports]);\n      }\n    });\n  }, []);\n\n  // Reset page when search changes\n  useEffect(() => {\n    setPage(0);\n  }, [debouncedSearch]);\n\n  // Handle icon selection\n  const handleIconSelect = useCallback((iconName: string) => {\n    setValue({\n      ...value,\n      name: iconName,\n    });\n    setFieldIsFocused(false);\n    setSearch('');\n  }, [setValue, value]);\n\n  // Handle configuration changes\n  const handleConfigChange = useCallback((field: keyof LucideIconPickerType, newValue: any) => {\n    setValue({\n      ...value,\n      [field]: newValue,\n    });\n}, [setValue, value]);\n\n  // Close modal when clicking outside\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      const modalElement = document.querySelector('.icon-picker-modal');\n      const fieldElement = document.querySelector('.icon-select-field');\n      \n      if (\n        fieldIsFocused && \n        modalElement && \n        fieldElement && \n        !modalElement.contains(event.target as Node) && \n        !fieldElement.contains(event.target as Node)\n      ) {\n        setFieldIsFocused(false);\n        setSearch('');\n      }\n    };\n    \n    document.addEventListener('mousedown', handleClickOutside);\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside);\n    };\n  }, [fieldIsFocused]);\n\n  // Handle reset to defaults\n  const handleResetToDefaults = useCallback(() => {\n    setValue({\n      ...DEFAULT_ICON_CONFIG,\n      name: value.name, // Preserve the selected icon\n    });\n    setShowResetConfirm(false);\n  }, [setValue, value.name]);\n\n  return (\n    <div style={{\n      width: '100%',\n      fontFamily: 'system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif'\n    }}>\n      <label style={{\n        display: 'flex',\n        alignItems: 'center',\n        gap: '6px',\n        marginBottom: '6px',\n        color: 'var(--theme-elevation-800)',\n        fontSize: '12px',\n        fontWeight: 500\n      }}>\n        <Icon name=\"palette\" size={14} style={{color: 'var(--theme-elevation-500)'}} />\n        {label}\n      </label>\n      <div style={{\n        display: 'flex',\n        alignItems: 'center',\n        gap: '8px',\n        marginTop: '8px',\n        position: 'relative'\n      }}>\n        <div \n          style={{\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            height: '40px',\n            width: '40px',\n            minWidth: '40px',\n            backgroundColor: 'var(--theme-elevation-50, #f3f3f3)',\n            border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n            borderRadius: '4px',\n            cursor: 'pointer',\n            transition: 'all 0.1s ease-in-out'\n          }}\n          onClick={() => setFieldIsFocused(true)}\n          tabIndex={0}\n          role=\"button\"\n          aria-label=\"Open icon selector\"\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              e.preventDefault();\n              setFieldIsFocused(true);\n            }\n          }}\n        >\n          {value.name ? (\n            <Icon \n              name={value.name as keyof typeof dynamicIconImports}\n              size={value.size}\n              color={value.color}\n              strokeWidth={value.strokeWidth}\n              absoluteStrokeWidth={value.absoluteStrokeWidth}\n              style={{color: 'var(--theme-text, #333)'}}\n            />\n          ) : (\n            <span style={{\n              color: 'var(--theme-elevation-400, #a6a6a6)',\n              fontSize: '12px'\n            }}>Icon</span>\n          )}\n        </div>\n        \n        <input\n          type=\"text\"\n          style={{\n            flex: 1,\n            height: '40px',\n            border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n            borderRadius: '4px',\n            padding: '0 10px',\n            backgroundColor: 'var(--theme-input-bg, #fff)',\n            color: 'var(--theme-text, #333)',\n            cursor: 'pointer'\n          }}\n          value={value.name ? value.name.replace(/-/g, ' ').replace(/\\b\\w/g, (c: string) => c.toUpperCase()) : 'Select an icon...'}\n          readOnly\n          onClick={() => setFieldIsFocused(true)}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter' || e.key === ' ') {\n              e.preventDefault();\n              setFieldIsFocused(true);\n            }\n          }}\n          aria-haspopup=\"true\"\n          aria-expanded={fieldIsFocused}\n        />\n\n        <button\n          type=\"button\"\n          style={{\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            height: '40px',\n            width: '40px',\n            minWidth: '40px',\n            backgroundColor: 'var(--theme-elevation-50, #f3f3f3)',\n            border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n            borderRadius: '4px',\n            cursor: 'pointer',\n            transition: 'all 0.1s ease-in-out',\n            color: 'var(--theme-elevation-800, #525252)'\n          }}\n          onClick={(e) => {\n            e.preventDefault();\n            setShowConfig(!showConfig);\n          }}\n          aria-label=\"Configure icon\"\n        >\n          <Icon name=\"settings\" size={20} />\n        </button>\n        \n        {showConfig && (\n          <div style={{\n            position: 'absolute',\n            top: '45px',\n            right: 0,\n            width: '300px',\n            backgroundColor: 'var(--theme-bg, #fff)',\n            border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n            borderRadius: '4px',\n            boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n            zIndex: 10\n          }}>\n            <div style={{\n              display: 'flex',\n              justifyContent: 'space-between',\n              alignItems: 'center',\n              padding: '12px 16px',\n              borderBottom: '1px solid var(--theme-elevation-100, #f0f0f0)'\n            }}>\n              <h3 style={{margin: 0, fontSize: '14px', fontWeight: 500}}>Icon Configuration</h3>\n              <button \n                type=\"button\"\n                onClick={() => setShowConfig(false)}\n                style={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center',\n                  background: 'none',\n                  border: 'none',\n                  color: 'var(--theme-elevation-500, #919191)',\n                  cursor: 'pointer',\n                  padding: '4px',\n                  borderRadius: '4px'\n                }}\n              >\n                <Icon name=\"x\" size={16} />\n              </button>\n            </div>\n            <div style={{padding: '16px'}}>\n              <div style={{marginBottom: '16px'}}>\n                <label htmlFor=\"icon-size\" style={{\n                  display: 'block',\n                  fontSize: '12px',\n                  fontWeight: 500,\n                  color: 'var(--theme-elevation-800, #525252)',\n                  marginBottom: '8px'\n                }}>Size</label>\n                <div style={{\n                  display: 'flex',\n                  flexWrap: 'wrap',\n                  gap: '4px',\n                  marginBottom: '8px'\n                }}>\n                  {PREDEFINED_SIZES.map((size) => (\n                    <button\n                      key={size}\n                      type=\"button\"\n                      style={{\n                        padding: '4px 8px',\n                        border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                        borderRadius: '4px',\n                        background: value.size === size \n                          ? 'var(--theme-text, #333)' \n                          : 'var(--theme-elevation-50, #f3f3f3)',\n                        color: value.size === size \n                          ? 'var(--theme-bg, #fff)' \n                          : 'var(--theme-text, #333)',\n                        fontSize: '12px',\n                        cursor: 'pointer',\n                        transition: 'all 0.1s ease-in-out'\n                      }}\n                      onClick={() => handleConfigChange('size', size)}\n                    >\n                      {size}\n                    </button>\n                  ))}\n                </div>\n                <input\n                  id=\"icon-size\"\n                  type=\"number\"\n                  value={value.size}\n                  onChange={(e) => handleConfigChange('size', parseInt(e.target.value, 10))}\n                  min={1}\n                  max={100}\n                  style={{\n                    width: '100%',\n                    height: '32px',\n                    padding: '0 8px',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    fontSize: '13px',\n                    backgroundColor: 'var(--theme-input-bg, #fff)'\n                  }}\n                  placeholder=\"Custom size...\"\n                />\n              </div>\n\n              <div style={{marginBottom: '16px'}}>\n                <label htmlFor=\"icon-color\" style={{\n                  display: 'block',\n                  fontSize: '12px',\n                  fontWeight: 500,\n                  color: 'var(--theme-elevation-800, #525252)',\n                  marginBottom: '8px'\n                }}>Color</label>\n                <div style={{\n                  display: 'flex',\n                  flexWrap: 'wrap',\n                  gap: '4px',\n                  marginBottom: '8px'\n                }}>\n                  {COLOR_PALETTE.map((colorOption) => (\n                    <button\n                      key={colorOption.value}\n                      type=\"button\"\n                      style={{\n                        padding: '4px 8px',\n                        border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                        borderRadius: '4px',\n                        background: value.color === colorOption.value \n                          ? 'var(--theme-text, #333)' \n                          : 'var(--theme-elevation-50, #f3f3f3)',\n                        color: value.color === colorOption.value \n                          ? 'var(--theme-bg, #fff)' \n                          : 'var(--theme-text, #333)',\n                        fontSize: '12px',\n                        cursor: 'pointer',\n                        transition: 'all 0.1s ease-in-out'\n                      }}\n                      onClick={() => handleConfigChange('color', colorOption.value)}\n                    >\n                      {colorOption.value === 'currentColor' ? (\n                        <>\n                          <Icon name=\"palette\" size={14} />\n                          <span>currentColor</span>\n                        </>\n                      ) : (\n                        <div style={{\n                          width: '16px',\n                          height: '16px',\n                          backgroundColor: colorOption.value,\n                          borderRadius: '2px',\n                          marginRight: '4px'\n                        }} />\n                      )}\n                    </button>\n                  ))}\n                </div>\n                <input\n                  id=\"icon-color\"\n                  type=\"text\"\n                  value={value.color}\n                  onChange={(e) => handleConfigChange('color', e.target.value)}\n                  placeholder=\"Custom color (hex, rgb, etc.)\"\n                  style={{\n                    width: '100%',\n                    height: '32px',\n                    padding: '0 8px',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    fontSize: '13px',\n                    backgroundColor: 'var(--theme-input-bg, #fff)'\n                  }}\n                />\n              </div>\n\n              <div style={{marginBottom: '16px'}}>\n                <label htmlFor=\"icon-stroke-width\" style={{\n                  display: 'block',\n                  fontSize: '12px',\n                  fontWeight: 500,\n                  color: 'var(--theme-elevation-800, #525252)',\n                  marginBottom: '8px'\n                }}>Stroke Width</label>\n                <div style={{\n                  display: 'flex',\n                  flexWrap: 'wrap',\n                  gap: '4px',\n                  marginBottom: '8px'\n                }}>\n                  {PREDEFINED_STROKE_WIDTHS.map((width) => (\n                    <button\n                      key={width}\n                      type=\"button\"\n                      style={{\n                        padding: '4px 8px',\n                        border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                        borderRadius: '4px',\n                        background: value.strokeWidth === width \n                          ? 'var(--theme-text, #333)' \n                          : 'var(--theme-elevation-50, #f3f3f3)',\n                        color: value.strokeWidth === width \n                          ? 'var(--theme-bg, #fff)' \n                          : 'var(--theme-text, #333)',\n                        fontSize: '12px',\n                        cursor: 'pointer',\n                        transition: 'all 0.1s ease-in-out'\n                      }}\n                      onClick={() => handleConfigChange('strokeWidth', width)}\n                    >\n                      {width}\n                    </button>\n                  ))}\n                </div>\n                <input\n                  id=\"icon-stroke-width\"\n                  type=\"number\"\n                  value={value.strokeWidth}\n                  onChange={(e) => handleConfigChange('strokeWidth', parseFloat(e.target.value))}\n                  min={0.1}\n                  max={10}\n                  step={0.1}\n                  style={{\n                    width: '100%',\n                    height: '32px',\n                    padding: '0 8px',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    fontSize: '13px',\n                    backgroundColor: 'var(--theme-input-bg, #fff)'\n                  }}\n                  placeholder=\"Custom stroke width...\"\n                />\n              </div>\n\n              <div style={{marginBottom: '16px'}}>\n                <label htmlFor=\"icon-absolute-stroke\" style={{\n                  display: 'block',\n                  fontSize: '12px',\n                  fontWeight: 500,\n                  color: 'var(--theme-elevation-800, #525252)',\n                  marginBottom: '8px'\n                }}>\n                  <input\n                    id=\"icon-absolute-stroke\"\n                    type=\"checkbox\"\n                    checked={value.absoluteStrokeWidth}\n                    onChange={(e) => handleConfigChange('absoluteStrokeWidth', e.target.checked)}\n                  />\n                  Absolute Stroke Width\n                </label>\n              </div>\n\n              <div style={{marginTop: '16px', display: 'flex', justifyContent: 'space-between'}}>\n                <button\n                  type=\"button\"\n                  className=\"icon-config-panel__reset\"\n                  onClick={() => setShowResetConfirm(true)}\n                  style={{\n                    padding: '8px 16px',\n                    border: 'none',\n                    background: 'none',\n                    color: 'var(--theme-elevation-800, #525252)',\n                    fontSize: '12px',\n                    cursor: 'pointer',\n                    transition: 'all 0.1s ease-in-out'\n                  }}\n                >\n                  <Icon name=\"rotate-ccw\" size={14} />\n                  Restore Defaults\n                </button>\n                <button\n                  type=\"button\"\n                  className=\"icon-config-panel__confirm\"\n                  onClick={handleResetToDefaults}\n                  style={{\n                    padding: '8px 16px',\n                    border: 'none',\n                    background: 'var(--theme-text, #333)',\n                    color: 'var(--theme-bg, #fff)',\n                    fontSize: '12px',\n                    cursor: 'pointer',\n                    transition: 'all 0.1s ease-in-out'\n                  }}\n                >\n                  Reset to Defaults\n                </button>\n              </div>\n            </div>\n          </div>\n        )}\n\n        {showResetConfirm && (\n          <div style={{\n            position: 'fixed',\n            inset: 0,\n            backgroundColor: 'rgba(0, 0, 0, 0.5)',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            zIndex: 20\n          }}>\n            <div style={{\n              width: '100%',\n              maxWidth: '400px',\n              backgroundColor: 'var(--theme-bg, #fff)',\n              borderRadius: '6px',\n              boxShadow: '0 4px 20px rgba(0, 0, 0, 0.2)'\n            }}>\n              <div style={{\n                display: 'flex',\n                justifyContent: 'space-between',\n                alignItems: 'center',\n                padding: '16px',\n                borderBottom: '1px solid var(--theme-elevation-100, #f0f0f0)'\n              }}>\n                <h3 style={{\n                  margin: 0,\n                  fontSize: '16px',\n                  fontWeight: 500,\n                  color: 'var(--theme-text, #333)'\n                }}>Reset Configuration</h3>\n                <button \n                  type=\"button\"\n                  onClick={() => setShowResetConfirm(false)}\n                  style={{\n                    display: 'flex',\n                    alignItems: 'center',\n                    justifyContent: 'center',\n                    background: 'none',\n                    border: 'none',\n                    color: 'var(--theme-elevation-500, #919191)',\n                    cursor: 'pointer',\n                    padding: '4px',\n                    borderRadius: '4px'\n                  }}\n                >\n                  <Icon name=\"x\" size={16} />\n                </button>\n              </div>\n              <div style={{\n                padding: '16px'\n              }}>\n                <p style={{\n                  margin: 0,\n                  color: 'var(--theme-text, #333)',\n                  fontSize: '14px',\n                  lineHeight: 1.5,\n                  fontWeight: 500,\n                  marginBottom: '8px'\n                }}>Are you sure you want to restore default configuration?</p>\n                <p style={{\n                  margin: 0,\n                  color: 'var(--theme-elevation-600, #666)',\n                  fontSize: '13px',\n                  lineHeight: 1.5\n                }}>\n                  This will reset size, color, stroke width, and absolute stroke settings to their default values. The selected icon will be preserved.\n                </p>\n              </div>\n              <div style={{\n                display: 'flex',\n                justifyContent: 'flex-end',\n                gap: '8px',\n                padding: '16px',\n                borderTop: '1px solid var(--theme-elevation-100, #f0f0f0)'\n              }}>\n                <button\n                  type=\"button\"\n                  style={{\n                    padding: '8px 16px',\n                    background: 'var(--theme-elevation-50, #f3f3f3)',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    color: 'var(--theme-text, #333)',\n                    fontSize: '14px',\n                    cursor: 'pointer',\n                    transition: 'all 0.1s ease-in-out'\n                  }}\n                  onClick={() => setShowResetConfirm(false)}\n                >\n                  Cancel\n                </button>\n                <button\n                  type=\"button\"\n                  style={{\n                    padding: '8px 16px',\n                    background: 'var(--theme-error-600, #dc2626)',\n                    border: '1px solid var(--theme-error-700, #b91c1c)',\n                    borderRadius: '4px',\n                    color: 'white',\n                    fontSize: '14px',\n                    cursor: 'pointer',\n                    transition: 'all 0.1s ease-in-out'\n                  }}\n                  onClick={handleResetToDefaults}\n                >\n                  Reset to Defaults\n                </button>\n              </div>\n            </div>\n          </div>\n        )}\n        \n        {fieldIsFocused && (\n          <div \n            style={{\n              position: 'absolute',\n              top: '45px',\n              left: 0,\n              width: '100%',\n              maxWidth: '580px',\n              backgroundColor: 'var(--theme-bg, #fff)',\n              border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n              borderRadius: '4px',\n              boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n              zIndex: 10,\n              overflow: 'hidden',\n              display: 'flex',\n              flexDirection: 'column'\n            }}\n            aria-label=\"Icon Picker\"\n            role=\"dialog\"\n          >\n            <div style={{\n              display: 'flex',\n              justifyContent: 'space-between',\n              alignItems: 'center',\n              padding: '12px 16px',\n              borderBottom: '1px solid var(--theme-elevation-100, #f0f0f0)'\n            }}>\n              <h2 style={{\n                margin: 0,\n                fontSize: '16px',\n                fontWeight: 500,\n                color: 'var(--theme-text, #333)'\n              }}>Select an Icon</h2>\n              <button \n                type=\"button\"\n                style={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center',\n                  background: 'none',\n                  border: 'none',\n                  color: 'var(--theme-elevation-500, #919191)',\n                  cursor: 'pointer',\n                  padding: '4px',\n                  borderRadius: '4px'\n                }}\n                onClick={(e) => {\n                  e.preventDefault();\n                  setFieldIsFocused(false);\n                  setSearch('');\n                }}\n                aria-label=\"Close dialog\"\n              >\n                <Icon name=\"x\" size={20} />\n              </button>\n            </div>\n            \n            <div style={{\n              padding: '12px 16px',\n              borderBottom: '1px solid var(--theme-elevation-100, #f0f0f0)'\n            }}>\n              <input\n                type=\"search\"\n                placeholder={hoveredIcon || \"Search icons...\"}\n                value={search}\n                onChange={(e) => setSearch(e.target.value)}\n                style={{\n                  width: '100%',\n                  height: '36px',\n                  padding: '0 12px',\n                  border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                  borderRadius: '4px',\n                  backgroundColor: 'var(--theme-input-bg, #fff)'\n                }}\n                autoFocus\n              />\n            </div>\n            \n            <div style={{\n              padding: '8px 16px',\n              fontSize: '12px',\n              color: 'var(--theme-elevation-500, #919191)',\n              borderBottom: '1px solid var(--theme-elevation-100, #f0f0f0)'\n            }}>\n              Showing {paginatedIcons.length} of {filteredIcons.length} icons\n            </div>\n            \n            <div style={{\n              display: 'grid',\n              gridTemplateColumns: 'repeat(auto-fill, minmax(80px, 1fr))',\n              gap: '8px',\n              padding: '16px',\n              maxHeight: '320px',\n              overflowY: 'auto'\n            }}>\n              {paginatedIcons.length > 0 ? (\n                paginatedIcons.map((iconName) => (\n                  <button\n                    key={iconName}\n                    type=\"button\"\n                    style={{\n                      display: 'flex',\n                      flexDirection: 'column',\n                      alignItems: 'center',\n                      justifyContent: 'center',\n                      gap: '4px',\n                      padding: '8px 4px',\n                      background: value.name === iconName ? 'var(--theme-elevation-100, #f0f0f0)' : 'none',\n                      border: `1px solid ${value.name === iconName ? \n                        'var(--theme-elevation-300, #c1c1c1)' : \n                        'var(--theme-elevation-100, #f0f0f0)'}`,\n                      borderRadius: '4px',\n                      cursor: 'pointer',\n                      transition: 'all 0.1s ease-in-out',\n                      position: 'relative'\n                    }}\n                    onClick={(e) => {\n                      e.preventDefault();\n                      handleIconSelect(iconName);\n                    }}\n                    onMouseOver={() => setHoveredIcon(iconName)}\n                    onMouseOut={() => setHoveredIcon(null)}\n                    title={iconName.replace(/-/g, ' ').replace(/\\b\\w/g, (c: string) => c.toUpperCase())}\n                    aria-selected={value.name === iconName}\n                    aria-label={iconName.replace(/-/g, ' ')}\n                  >\n                    {value.name === iconName && (\n                      <div style={{\n                        position: 'absolute',\n                        top: '4px',\n                        right: '4px',\n                        width: '8px',\n                        height: '8px',\n                        borderRadius: '50%',\n                        backgroundColor: 'var(--theme-success, #4caf50)'\n                      }} />\n                    )}\n                    <Icon \n                      name={iconName as keyof typeof dynamicIconImports} \n                      size={value.size}\n                      color={value.color}\n                      strokeWidth={value.strokeWidth}\n                      absoluteStrokeWidth={value.absoluteStrokeWidth}\n                    />\n                    <span style={{\n                      fontSize: '10px',\n                      color: 'var(--theme-elevation-800, #525252)',\n                      textAlign: 'center',\n                      whiteSpace: 'nowrap',\n                      overflow: 'hidden',\n                      textOverflow: 'ellipsis',\n                      maxWidth: '100%'\n                    }}>\n                      {iconName.replace(/-/g, ' ')}\n                    </span>\n                  </button>\n                ))\n              ) : (\n                <div style={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center',\n                  padding: '32px',\n                  color: 'var(--theme-elevation-500, #919191)',\n                  fontStyle: 'italic'\n                }}>\n                  No icons found matching {debouncedSearch}\n                </div>\n              )}\n            </div>\n            \n            {totalPages > 1 && (\n              <div style={{\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'space-between',\n                padding: '12px 16px',\n                borderTop: '1px solid var(--theme-elevation-100, #f0f0f0)'\n              }}>\n                <button\n                  type=\"button\"\n                  onClick={(e) => {\n                    e.preventDefault();\n                    setPage(p => Math.max(0, p - 1));\n                  }}\n                  disabled={page === 0}\n                  style={{\n                    display: 'flex',\n                    alignItems: 'center',\n                    gap: '4px',\n                    padding: '6px 12px',\n                    backgroundColor: 'var(--theme-elevation-50, #f3f3f3)',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    color: 'var(--theme-text, #333)',\n                    fontSize: '14px',\n                    cursor: page === 0 ? 'not-allowed' : 'pointer',\n                    transition: 'all 0.1s ease-in-out',\n                    opacity: page === 0 ? 0.5 : 1\n                  }}\n                  aria-label=\"Previous page\"\n                >\n                  <Icon name=\"chevron-left\" size={16} />\n                  Previous\n                </button>\n                \n                <span style={{\n                  fontSize: '14px',\n                  color: 'var(--theme-elevation-600, #666)'\n                }}>\n                  Page {page + 1} of {totalPages}\n                </span>\n                \n                <button\n                  type=\"button\"\n                  onClick={(e) => {\n                    e.preventDefault();\n                    setPage(p => Math.min(totalPages - 1, p + 1));\n                  }}\n                  disabled={page === totalPages - 1}\n                  style={{\n                    display: 'flex',\n                    alignItems: 'center',\n                    gap: '4px',\n                    padding: '6px 12px',\n                    backgroundColor: 'var(--theme-elevation-50, #f3f3f3)',\n                    border: '1px solid var(--theme-elevation-150, #e1e1e1)',\n                    borderRadius: '4px',\n                    color: 'var(--theme-text, #333)',\n                    fontSize: '14px',\n                    cursor: page === totalPages - 1 ? 'not-allowed' : 'pointer',\n                    transition: 'all 0.1s ease-in-out',\n                    opacity: page === totalPages - 1 ? 0.5 : 1\n                  }}\n                  aria-label=\"Next page\"\n                >\n                  Next\n                  <Icon name=\"chevron-right\" size={16} />\n                </button>\n              </div>\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default IconSelectField; "]}