{"_id":"@darthrapid/react-native-color-picker","_rev":"6-8db4a8e523b2ae87153eb1f544bd70da","name":"@darthrapid/react-native-color-picker","dist-tags":{"latest":"1.2.1"},"versions":{"0.1.0":{"name":"@darthrapid/react-native-color-picker","version":"0.1.0","keywords":["react-native","color-picker","hsb","hue","saturation","svg","modal","inline","i18n","expo","ios","android"],"author":{"url":"https://github.com/MartinRapcan","name":"Martin Rapčan","email":"rapcan.rmartin@gmail.com"},"license":"MIT","_id":"@darthrapid/react-native-color-picker@0.1.0","maintainers":[{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"}],"homepage":"https://github.com/MartinRapcan/react-native-color-picker#readme","bugs":{"url":"https://github.com/MartinRapcan/react-native-color-picker/issues"},"dist":{"shasum":"f273672003379896838cd6cb53d630477f5a9c11","tarball":"https://registry.npmjs.org/@darthrapid/react-native-color-picker/-/react-native-color-picker-0.1.0.tgz","fileCount":65,"integrity":"sha512-qsfJBgFeE8M/BYwPuHl+rFF9VKR1DGB1zlpCJn5hjtxFeGbU68vSv20Xq9X4iju9cwclg5PyIHPgnwkpZ1FN1w==","signatures":[{"sig":"MEUCIQCS5nlQMuzWIY5iIlI7nyLXglz37tV61cOhoOP6gkS1qgIgSWiMsGHTcLCNowpnLnXjFBWA49ltaKH5szcm+gozT8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122024},"jest":{"preset":"react-native","transformIgnorePatterns":["node_modules/(?!(.bun|react-native|@react-native|react-native-svg)/)"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"da5474905c2178d95432c9ab2b93fb9ccd8d92ab","scripts":{"test":"jest","clean":"del-cli lib","example":"bun run --cwd example","prepare":"bob build","typecheck":"tsc"},"_npmUser":{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/MartinRapcan/react-native-color-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.3","description":"Lightweight HSB color picker for React Native with modal/inline modes, tabs, and i18n support. Pure JS, Expo compatible.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","del-cli":"^6.0.0","lefthook":"^2.0.3","commitlint":"^19.8.1","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.81.5","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.83.0","@commitlint/config-conventional":"^19.8.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-svg":"^15.15.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-color-picker_0.1.0_1771067204185_0.24740758658548678","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"tsc":"node_modules/typescript/bin/tsc","project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook"],"version":"0.57.2","languages":"js"}},"1.1.0":{"name":"@darthrapid/react-native-color-picker","version":"1.1.0","keywords":["react-native","color-picker","hsb","hue","saturation","svg","modal","inline","i18n","expo","ios","android"],"author":{"url":"https://github.com/MartinRapcan","name":"Martin Rapčan","email":"rapcan.rmartin@gmail.com"},"license":"MIT","_id":"@darthrapid/react-native-color-picker@1.1.0","maintainers":[{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"}],"homepage":"https://github.com/MartinRapcan/react-native-color-picker#readme","bugs":{"url":"https://github.com/MartinRapcan/react-native-color-picker/issues"},"dist":{"shasum":"5e1499388b89bb0d688efc91917b1469987141fe","tarball":"https://registry.npmjs.org/@darthrapid/react-native-color-picker/-/react-native-color-picker-1.1.0.tgz","fileCount":75,"integrity":"sha512-yl5qestKJXLCYYwx/RyxK9PY0JFvpXFy6yE9U+MdPswd8aylntE/sfMn9Fri4mULwZgGluM0X8VryerNDiKbKg==","signatures":[{"sig":"MEUCIQDZloQ99Jb9skbU+WmdM3qY9z1Ep/UwiwSON494h1pjLAIgDpkyjSqEjZAyqTMiNzC+pBASmP2ylMGsRkX0O0CWVS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232688},"jest":{"preset":"react-native","transformIgnorePatterns":["node_modules/(?!(.bun|react-native|@react-native|react-native-svg)/)"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"3eef82afb05819f0e209b327b37dbab84760431a","scripts":{"test":"jest","clean":"del-cli lib","example":"bun run --cwd example","prepare":"bob build","typecheck":"tsc"},"_npmUser":{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/MartinRapcan/react-native-color-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.3","description":"Lightweight HSB color picker for React Native with modal/inline modes, tabs, and i18n support. Pure JS, Expo compatible.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","del-cli":"^6.0.0","lefthook":"^2.0.3","commitlint":"^19.8.1","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.81.5","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.83.0","@commitlint/config-conventional":"^19.8.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-svg":"^15.15.3"},"_npmOperationalInternal":{"tmp":"tmp/react-native-color-picker_1.1.0_1771291192845_0.48319111514554636","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"tsc":"node_modules/typescript/bin/tsc","project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook"],"version":"0.57.2","languages":"js"}},"1.2.0":{"name":"@darthrapid/react-native-color-picker","version":"1.2.0","keywords":["react-native","color-picker","hsb","hue","saturation","svg","modal","inline","i18n","expo","ios","android"],"author":{"url":"https://github.com/MartinRapcan","name":"Martin Rapčan","email":"rapcan.rmartin@gmail.com"},"license":"MIT","_id":"@darthrapid/react-native-color-picker@1.2.0","maintainers":[{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"}],"homepage":"https://github.com/MartinRapcan/react-native-color-picker#readme","bugs":{"url":"https://github.com/MartinRapcan/react-native-color-picker/issues"},"dist":{"shasum":"0a0ad878ac57073e47dcc5e78eb9ebdae720e414","tarball":"https://registry.npmjs.org/@darthrapid/react-native-color-picker/-/react-native-color-picker-1.2.0.tgz","fileCount":75,"integrity":"sha512-JFWJ4iPED14+RRp2fY1roqODzfNGDKT0n0UwpIaWH9SHJIpFz6HBj8sQcpGRSe5pl37si0j7gn4kK0t9HU1/qQ==","signatures":[{"sig":"MEYCIQC8c3w0RlipRotOrU7ZTOWJpTjD+NWfUrJyY1zd59wBhwIhALkJHgcZu5FK5SsjtSyGbUJvR/u1BBuhGmSC5sfdHxHG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244415},"jest":{"preset":"react-native","transformIgnorePatterns":["node_modules/(?!(.bun|react-native|@react-native|react-native-svg)/)"],"modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"ec2b12a6366698002859d80cfa512d44cfab023a","scripts":{"test":"jest","clean":"del-cli lib","example":"bun run --cwd example","prepare":"bob build","typecheck":"tsc"},"_npmUser":{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"},"commitlint":{"rules":{"body-max-line-length":[0],"footer-max-line-length":[0]},"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/MartinRapcan/react-native-color-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.3","description":"Lightweight HSB color picker for React Native with modal/inline modes, tabs, and i18n support. Pure JS, Expo compatible.","directories":{},"_nodeVersion":"22.20.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"19.1.0","turbo":"^2.5.6","del-cli":"^6.0.0","lefthook":"^2.0.3","commitlint":"^19.8.1","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.81.5","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.83.0","@commitlint/config-conventional":"^19.8.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-svg":"^15.15.5"},"_npmOperationalInternal":{"tmp":"tmp/react-native-color-picker_1.2.0_1785093580441_0.6675075561472805","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"tsc":"node_modules/typescript/bin/tsc","project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","tools":["jest","lefthook"],"version":"0.57.2","languages":"js"}},"1.2.1":{"name":"@darthrapid/react-native-color-picker","version":"1.2.1","description":"Lightweight HSB color picker for React Native with modal/inline modes, tabs, and i18n support. Pure JS, Expo compatible.","main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"source":"./src/index.tsx","types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"scripts":{"example":"bun run --cwd example","clean":"del-cli lib","prepare":"bob build","typecheck":"tsc","test":"jest"},"keywords":["react-native","color-picker","hsb","hue","saturation","svg","modal","inline","i18n","expo","ios","android"],"repository":{"type":"git","url":"git+https://github.com/MartinRapcan/react-native-color-picker.git"},"author":{"name":"Martin Rapčan","email":"rapcan.rmartin@gmail.com","url":"https://github.com/MartinRapcan"},"license":"MIT","bugs":{"url":"https://github.com/MartinRapcan/react-native-color-picker/issues"},"homepage":"https://github.com/MartinRapcan/react-native-color-picker#readme","publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@commitlint/config-conventional":"^19.8.1","@react-native/babel-preset":"0.83.0","@types/jest":"^29.5.14","@types/react":"^19.1.12","commitlint":"^19.8.1","del-cli":"^6.0.0","jest":"^29.7.0","lefthook":"^2.0.3","react":"19.1.0","react-native":"0.81.5","react-native-builder-bob":"^0.40.13","turbo":"^2.5.6","typescript":"^5.9.2"},"peerDependencies":{"react":"*","react-native":"*","react-native-svg":"^15.15.5"},"workspaces":["example"],"react-native-builder-bob":{"source":"src","output":"lib","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json","tsc":"node_modules/typescript/bin/tsc"}]]},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"],"transformIgnorePatterns":["node_modules/(?!(.bun|react-native|@react-native|react-native-svg)/)"]},"commitlint":{"extends":["@commitlint/config-conventional"],"rules":{"body-max-line-length":[0],"footer-max-line-length":[0]}},"create-react-native-library":{"type":"library","languages":"js","tools":["jest","lefthook"],"version":"0.57.2"},"gitHead":"77b03d87b5021d982fdcd788eb09d8c69536e0c9","_id":"@darthrapid/react-native-color-picker@1.2.1","_nodeVersion":"22.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-hHYeOmv9Y1u0KWPZ8e+iwWkVq/w1qPRLl9zpUd1JsUc4uYwZ+JBHTAPOD2HMwKmcdDt56Z0jejEhHc/IIGVrbA==","shasum":"9304319f817dfe238830260d33f128759f2b0ab9","tarball":"https://registry.npmjs.org/@darthrapid/react-native-color-picker/-/react-native-color-picker-1.2.1.tgz","fileCount":75,"unpackedSize":244447,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@darthrapid%2freact-native-color-picker@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDBgt7FKZFsadzZ2vZCcRSmxtKG567ASipn4kR7dIU2vAIhANGf5dy/wjtI+y0DnQOHnjCIJwu7SDj2+XiPQVoPR4Wq"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:59d4ad8c-144e-4498-b2ad-50b60bf75f87"}},"directories":{},"maintainers":[{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-color-picker_1.2.1_1785821893222_0.201846850601886"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-14T11:06:44.061Z","modified":"2026-08-04T05:38:13.689Z","1.0.0":"2026-02-14T10:59:52.329Z","0.1.0":"2026-02-14T11:06:44.350Z","1.1.0":"2026-02-17T01:19:53.003Z","1.2.0":"2026-07-26T19:19:40.581Z","1.2.1":"2026-08-04T05:38:13.371Z"},"bugs":{"url":"https://github.com/MartinRapcan/react-native-color-picker/issues"},"author":{"name":"Martin Rapčan","email":"rapcan.rmartin@gmail.com","url":"https://github.com/MartinRapcan"},"license":"MIT","homepage":"https://github.com/MartinRapcan/react-native-color-picker#readme","keywords":["react-native","color-picker","hsb","hue","saturation","svg","modal","inline","i18n","expo","ios","android"],"repository":{"type":"git","url":"git+https://github.com/MartinRapcan/react-native-color-picker.git"},"description":"Lightweight HSB color picker for React Native with modal/inline modes, tabs, and i18n support. Pure JS, Expo compatible.","maintainers":[{"name":"darthrapid","email":"rapcan.rmartin@gmail.com"}],"readme":"# @darthrapid/react-native-color-picker\n\nLightweight HSB color picker for React Native with alpha channel, color palettes, saved colors with per-item delete, modal/inline modes, light/dark themes and i18n. Pure JS, works in Expo Go.\n\n## Installation\n\n```bash\nbun add @darthrapid/react-native-color-picker\n```\n\n### Peer dependency\n\n```bash\nbun add react-native-svg\n```\n\nRequires `react-native-svg >= 15.15.5` (peer). Works with anything Expo SDK 54+ ships.\n\n## What's new in 1.2.0\n\n- **`onRemoveSavedColor` prop** and **`ref.removeSavedColor(hex)`** — delete a specific saved color in controlled or programmatic flows.\n- **Red ✕ delete button** on each saved swatch — visible in the Palettes tab's \"Saved\" section (overflows the swatch corner for a badge look).\n- **`picker` tab is auto-enforced** — if you pass `tabs={[\"values\"]}` the package normalizes it to `[\"picker\", \"values\"]`. You can never accidentally ship a picker without any way to pick.\n- **Visible panel border on light theme** — no more invisible edge on white backgrounds.\n- **Progressive palette rendering** — big palettes (e.g. Tailwind, ~22 groups) render the first rows immediately and stream the rest across frames.\n- **Safe to nest inside a ScrollView** — the palettes list no longer uses a `FlatList`, so consumers can drop `<ColorPicker inline>` into any layout without the \"VirtualizedLists should never be nested\" warning.\n\n## Basic Usage\n\nBy default, renders as a small color swatch. Tap it to open the picker in a modal.\n\n```tsx\nimport { useState } from \"react\";\nimport { ColorPicker } from \"@darthrapid/react-native-color-picker\";\n\nexport default function App() {\n  const [color, setColor] = useState(\"#007AFF\");\n\n  return <ColorPicker value={color} onChange={setColor} />;\n}\n```\n\n## Inline Mode\n\nRenders the picker directly in your layout — adapts to parent width.\n\n```tsx\n<ColorPicker value={color} onChange={setColor} inline />\n```\n\n## Tabs\n\nThe picker has 3 tabs. You choose which are shown; **`picker` is always included** even if you omit it (the package prepends it).\n\n```tsx\n// All tabs (default)\n<ColorPicker tabs={[\"picker\", \"values\", \"palettes\"]} />\n\n// Picker + Values only\n<ColorPicker tabs={[\"picker\", \"values\"]} />\n\n// Picker + Palettes only\n<ColorPicker tabs={[\"picker\", \"palettes\"]} />\n\n// Picker only — tab bar is hidden\n<ColorPicker tabs={[\"picker\"]} />\n\n// Passing only [\"values\"] is normalized to [\"picker\", \"values\"]\n<ColorPicker tabs={[\"values\"]} />\n```\n\n| Tab | Content |\n|---|---|\n| `picker` | Saturation/brightness pad + hue slider (+ alpha slider when enabled) |\n| `values` | Hex input, RGB and HSB values |\n| `palettes` | Color palettes + saved colors grid (with per-item delete) |\n\n## Alpha Channel\n\nEnable alpha with `showAlpha`. Values become 8-digit hex (`#RRGGBBAA`).\n\n```tsx\nconst [color, setColor] = useState(\"#007AFFCC\");\n\n<ColorPicker\n  value={color}\n  onChange={setColor}\n  showAlpha\n/>\n```\n\n## Color Palettes\n\nEach palette can contain simple colors or color groups with shades.\n\n```tsx\nimport { ColorPicker, tailwindPalette } from \"@darthrapid/react-native-color-picker\";\n\n// Built-in Tailwind palette\n<ColorPicker value={color} onChange={setColor} palettes={[tailwindPalette]} />\n\n// Custom palette with simple colors\n<ColorPicker\n  value={color}\n  onChange={setColor}\n  palettes={[\n    {\n      name: \"Brand\",\n      colors: {\n        primary: \"#007AFF\",\n        secondary: \"#5856D6\",\n        accent: \"#FF2D55\",\n      },\n    },\n  ]}\n/>\n\n// Custom palette with color shades\n<ColorPicker\n  value={color}\n  onChange={setColor}\n  palettes={[\n    {\n      name: \"Brand\",\n      colors: {\n        blue: { 100: \"#DBEAFE\", 500: \"#3B82F6\", 900: \"#1E3A8A\" },\n        gray: { 100: \"#F3F4F6\", 500: \"#6B7280\", 900: \"#111827\" },\n      },\n    },\n  ]}\n/>\n```\n\nYou can pass multiple palettes — a horizontal palette picker appears above the swatches.\n\n## Saved Colors\n\nThe Palettes tab has a **Saved** section where users can save colors and remove them individually via the red ✕ badge on each swatch.\n\n### Uncontrolled (session-only)\n\nLet the component manage saved colors internally — data isn't persisted across mounts.\n\n```tsx\n<ColorPicker value={color} onChange={setColor} />\n```\n\n### Controlled (persistable)\n\nBind the saved list to your own state so you can persist it (AsyncStorage, MMKV, backend…).\n\n```tsx\nconst [savedColors, setSavedColors] = useState<string[]>([]);\n\n<ColorPicker\n  value={color}\n  onChange={setColor}\n  savedColors={savedColors}\n  onSaveColor={(hex) =>\n    setSavedColors((prev) => (prev.includes(hex) ? prev : [hex, ...prev]))\n  }\n  onRemoveSavedColor={(hex) =>\n    setSavedColors((prev) => prev.filter((c) => c !== hex))\n  }\n  onClearSaved={() => setSavedColors([])}\n/>\n```\n\nCallbacks:\n| Callback | Fired when |\n|---|---|\n| `onSaveColor(hex)` | User taps **Save** in the color preview header |\n| `onRemoveSavedColor(hex)` | User taps the red ✕ on a saved swatch |\n| `onClearSaved()` | User taps **Clear** in the Saved section header |\n\n## Light / Dark Theme\n\n```tsx\n<ColorPicker theme=\"dark\" />  // default\n<ColorPicker theme=\"light\" />\n```\n\nThe panel has a subtle border in both themes so it stays visible on any background (including white).\n\n## i18n / Custom Labels\n\nOverride only the labels you want — the rest stays English by default.\n\n```tsx\n<ColorPicker\n  labels={{\n    picker: \"Výber\",\n    values: \"Hodnoty\",\n    palettes: \"Palety\",\n    save: \"Uložiť\",\n    saved: \"Uložené\",\n    clearSaved: \"Vymazať\",\n    noSavedColors: \"Žiadne uložené farby\",\n  }}\n/>\n```\n\n## Props\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `value` | `string` | `\"#007AFF\"` | Current color (6- or 8-digit hex) |\n| `onChange` | `(hex: string) => void` | – | Called when color changes |\n| `tabs` | `TabId[]` | `[\"picker\", \"values\", \"palettes\"]` | Which tabs to show. `\"picker\"` is auto-prepended if missing |\n| `panelWidth` | `DimensionValue` | `\"100%\"` | Panel width in modal mode. Ignored when `inline` |\n| `hueStripHeight` | `number` | `28` | Hue/alpha slider height |\n| `theme` | `\"light\" \\| \"dark\"` | `\"dark\"` | Color theme |\n| `disabled` | `boolean` | `false` | Disables all touch input |\n| `style` | `ViewStyle` | – | Style for the picker panel |\n| `swatchSize` | `number` | `48` | Size of the modal-trigger swatch |\n| `swatchBorderRadius` | `number` | `12` | Border radius of the swatch |\n| `swatchStyle` | `ViewStyle` | – | Extra style for the swatch |\n| `inline` | `boolean` | `false` | Renders picker inline without modal |\n| `labels` | `ColorPickerLabels` | – | Custom labels (i18n) |\n| `contentStyle` | `ViewStyle` | – | Style for the modal content wrapper |\n| `showAlpha` | `boolean` | `false` | Show alpha channel slider |\n| `palettes` | `ColorPalette[]` | – | Color palettes for the Palettes tab |\n| `savedColors` | `string[]` | – | Saved colors (controlled). If provided, component won't manage saved colors internally |\n| `onSaveColor` | `(hex: string) => void` | – | Called when user saves a color |\n| `onRemoveSavedColor` | `(hex: string) => void` | – | Called when user removes a specific saved color |\n| `onClearSaved` | `() => void` | – | Called when user clears all saved colors |\n\n## Ref API\n\n```tsx\nimport { useRef } from \"react\";\nimport { ColorPicker, type ColorPickerRef } from \"@darthrapid/react-native-color-picker\";\n\nconst ref = useRef<ColorPickerRef>(null);\n\n<ColorPicker ref={ref} value={color} onChange={setColor} />\n```\n\n| Method | Description |\n|---|---|\n| `getColor()` | Returns current color as hex string |\n| `setColor(hex)` | Sets the color programmatically |\n| `removeSavedColor(hex)` | Removes a specific saved color (works in both modes) |\n| `clearSaved()` | Clears all saved colors |\n| `open()` | Opens the modal (no-op when `inline`) |\n| `close()` | Closes the modal (no-op when `inline`) |\n\n## Exports\n\n```tsx\nimport {\n  ColorPicker,\n  type ColorPickerProps,\n  type ColorPickerRef,\n  type ColorPickerLabels,\n  type ColorPalette,\n  type TabId,\n  tailwindPalette,\n  tailwindColors,\n} from \"@darthrapid/react-native-color-picker\";\n```\n\n## Full Example\n\nFull-featured picker with alpha, Tailwind palette, and persistable saved colors.\n\n```tsx\nimport { useState } from \"react\";\nimport { ColorPicker, tailwindPalette } from \"@darthrapid/react-native-color-picker\";\n\nexport default function App() {\n  const [color, setColor] = useState(\"#3B82F6\");\n  const [savedColors, setSavedColors] = useState<string[]>([]);\n\n  return (\n    <ColorPicker\n      value={color}\n      onChange={setColor}\n      showAlpha\n      palettes={[tailwindPalette]}\n      savedColors={savedColors}\n      onSaveColor={(hex) =>\n        setSavedColors((prev) => (prev.includes(hex) ? prev : [hex, ...prev]))\n      }\n      onRemoveSavedColor={(hex) =>\n        setSavedColors((prev) => prev.filter((c) => c !== hex))\n      }\n      onClearSaved={() => setSavedColors([])}\n    />\n  );\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}