@fab1o978/react-ui 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -223,7 +223,8 @@ var ColorPicker = ({
223
223
  showAlpha = true,
224
224
  recentColors = [],
225
225
  accent,
226
- className
226
+ className,
227
+ theme
227
228
  }) => {
228
229
  const init = parseInitial(value);
229
230
  const [h, setH] = react.useState(init[0]);
@@ -402,6 +403,7 @@ var ColorPicker = ({
402
403
  "div",
403
404
  {
404
405
  className: [ColorPicker_module_default.colorPicker, className ?? ""].filter(Boolean).join(" "),
406
+ "data-theme": theme,
405
407
  style: accentVars,
406
408
  children: [
407
409
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: ColorPicker_module_default.topRow, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ColorPicker_module_default.discWrapper, children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ColorPicker/ColorPicker.module.scss","../../../src/utils/color.ts","../../../src/components/ColorPicker/ColorPicker.tsx"],"names":["colorPicker","topRow","discWrapper","disc","dot","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputWrapper","inputAddon","input","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch","jsxs","jsx","useState","useEffect","useRef","rr","gg","bb","useCallback"],"mappings":"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","file":"index.cjs","sourcesContent":["@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0, 0, 0, 0.04);\n font-family: var(--font-family-base);\n width: calc(200px + 2rem);\n box-sizing: border-box;\n user-select: none;\n}\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: 200px;\n height: 200px;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: 200px;\n height: 200px;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n}\n.eyedropperBtn:hover {\n background: rgba(255, 255, 255, 0.4);\n}\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.tab:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n}\n\n.tabActive {\n background: var(--colorpicker-accent, var(--accent));\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem;\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.input:focus {\n border-color: var(--colorpicker-accent, var(--accent));\n box-shadow: 0 0 0 2px var(--colorpicker-accent-glow, var(--accent-glow));\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.inputCopyBtn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkNvbG9yUGlja2VyLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3JGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLE9BakNLO0VBa0NMLFFBbENLO0VBbUNMO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLE9BMUNLO0VBMkNMLFFBM0NLO0VBNENMO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxPQXpFVztFQTBFWCxRQTFFVztFQTJFWDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLE9BbkdXO0VBb0dYLFFBcEdXO0VBcUdYO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOzs7QUFNSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBSUo7RUFDRSxZQTFMYTtFQTJMYjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxjQTlOVztFQStOWDs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7OztBQU9KO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJzYXNzOmNvbG9yXCI7XG5cbkBpbXBvcnQgdXJsKFwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwJmRpc3BsYXk9c3dhcFwiKTtcblxuLy8gQWNjZW50IGRpIGRlZmF1bHQg4oCUIGNhbWJpYSBxdWkgcGVyIGFnZ2lvcm5hcmUgdHV0dGEgbGEgbGlicmVyaWFcbiRhY2NlbnQ6ICMzYjgyZjY7XG5cbjpyb290IHtcbiAgLy8gQWNjZW50IHNjYWxlIOKAlCBkZXJpdmF0YSBkYSAkYWNjZW50IGEgY29tcGlsZSB0aW1lXG4gIC0tYWNjZW50OiAgICAgICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZG90OiAgICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDEyJSl9O1xuICAtLWFjY2VudC10cmFjazogICN7JGFjY2VudH07XG4gIC0tYWNjZW50LXJpbmc6ICAgI3skYWNjZW50fTtcbiAgLS1hY2NlbnQtZ2xvdzogICAje2NvbG9yLmNoYW5nZSgkYWNjZW50LCAkYWxwaGE6IDAuMyl9O1xuICAtLWFjY2VudC1saWdodDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDUlLCAkc2F0dXJhdGlvbjogLTIwJSl9O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgKG1hbnRlbnV0YSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCBjb24gQnV0dG9uLCBCYWRnZSwgSW5wdXQpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogNDklLCAkc2F0dXJhdGlvbjogLTMwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktMTAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQyJSwgJHNhdHVyYXRpb246IC0xNSUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTQwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogI3skYWNjZW50fTtcbiAgLS1jb2xvci1wcmltYXJ5LTYwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAtMTAlKX07XG4gIC0tY29sb3ItcHJpbWFyeS03MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTIwJSl9O1xuXG4gIC8vIE5ldXRyYWxcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgI2ZmZmZmZjtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogI2YzZjRmNjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogI2U1ZTdlYjtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzljYTNhZjtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogIzRiNTU2MztcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogIzExMTgyNztcblxuICAvLyBTZW1hbnRpY1xuICAtLWNvbG9yLXN1Y2Nlc3MtNTAwOiAjMjJjNTVlO1xuICAtLWNvbG9yLXN1Y2Nlc3MtNjAwOiAjMTZhMzRhO1xuICAtLWNvbG9yLWRhbmdlci01MDA6ICAjZWY0NDQ0O1xuICAtLWNvbG9yLWRhbmdlci02MDA6ICAjZGMyNjI2O1xuICAtLWNvbG9yLXdhcm5pbmctNTAwOiAjZjU5ZTBiO1xuICAtLWNvbG9yLXdhcm5pbmctNjAwOiAjZDk3NzA2O1xuXG4gIC8vIFR5cG9ncmFwaHlcbiAgLS1mb250LWZhbWlseS1iYXNlOiBcIkludGVyXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjtcbiAgLS1mb250LXNpemUteHM6IDAuNzVyZW07XG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTtcbiAgLS1mb250LXNpemUtbWQ6IDFyZW07XG4gIC0tZm9udC1zaXplLWxnOiAxLjEyNXJlbTtcblxuICAvLyBTcGFjaW5nXG4gIC0tc3BhY2luZy0xOiAwLjI1cmVtO1xuICAtLXNwYWNpbmctMjogMC41cmVtO1xuICAtLXNwYWNpbmctMzogMC43NXJlbTtcbiAgLS1zcGFjaW5nLTQ6IDFyZW07XG5cbiAgLy8gUmFkaXVzXG4gIC0tcmFkaXVzLXNtOiAgIDAuMjVyZW07XG4gIC0tcmFkaXVzLW1kOiAgIDAuMzc1cmVtO1xuICAtLXJhZGl1cy1sZzogICAwLjVyZW07XG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDtcblxuICAvLyBTaGFkb3dzXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG5cbiAgLy8gVHJhbnNpdGlvbnNcbiAgLS10cmFuc2l0aW9uLWZhc3Q6IDE1MG1zIGVhc2U7XG5cbiAgLy8gU3VyZmFjZSAoYmFja2dyb3VuZCBkaSBjYXJkL3BhbmVsKVxuICAtLWNvbG9yLXN1cmZhY2U6ICAgICAgICAgICNmZmZmZmY7XG4gIC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbn1cblxuLy8g4pSA4pSA4pSAIERhcmsgdGhlbWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBBcHBsaWNhdG8gdmlhIGRhdGEtdGhlbWU9XCJkYXJrXCIgc3VsbCdlbGVtZW50byByb290IChnZXN0aXRvIGRhIFN0b3J5Ym9vayBkZWNvcmF0b3Jcbi8vIGUgZGFsbCdhcHAgY29uc3VtZXIpLiBJIGNvbXBvbmVudGkgbm9uIGRldm9ubyBmYXJlIG51bGxhIGRpIHNwZWNpYWxlOiBiYXN0YSBjaGVcbi8vIHVzaW5vIGkgdG9rZW4gdmFyKCkgZSByaWNldmVyYW5ubyBhdXRvbWF0aWNhbWVudGUgaSB2YWxvcmkgZGFyay5cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLy8gTmV1dHJhbCAoc2NhbGEgaW52ZXJ0aXRhKVxuICAtLWNvbG9yLW5ldXRyYWwtMDogICAjMGYxNzJhO1xuICAtLWNvbG9yLW5ldXRyYWwtMTAwOiAjMWUyOTNiO1xuICAtLWNvbG9yLW5ldXRyYWwtMjAwOiAjMzM0MTU1O1xuICAtLWNvbG9yLW5ldXRyYWwtNDAwOiAjOTRhM2I4O1xuICAtLWNvbG9yLW5ldXRyYWwtNjAwOiAjY2JkNWUxO1xuICAtLWNvbG9yLW5ldXRyYWwtOTAwOiAjZjhmYWZjO1xuXG4gIC8vIFN1cmZhY2VcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjMWUyOTNiO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICMyNzM1NDk7XG5cbiAgLy8gUHJpbWFyeSBzY2FsZSBkYXJrIChwZXIgaWwgZGVmYXVsdCBhY2NlbnQgYmx1IOKAlCBsZSBzZnVtYXR1cmUgY2hpYXJlIGRpdmVudGFubyBzY3VyZSlcbiAgLS1jb2xvci1wcmltYXJ5LTUwOiAgIzE3MjU1NDtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogIzFlM2E4YTtcbiAgLy8gNDAwIC8gNTAwIC8gNjAwIC8gNzAwIHJpbWFuZ29ubyBpbnZhcmlhdGkgKGFiYmFzdGFuemEgc2F0dXJpIHN1IGJnIHNjdXJvKVxuXG4gIC8vIEFjY2VudCBsaWdodDogdmFyaWFudGUgc2N1cmFcbiAgLS1hY2NlbnQtbGlnaHQ6ICMxNzI1NTQ7XG5cbiAgLy8gU2hhZG93cyAocGnDuSBmb3J0aSBzdSBiZyBzY3VybylcbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDAuNCk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjQpO1xufVxuIiwiQHVzZSBcIi4uLy4uL3N0eWxlcy90b2tlbnNcIiBhcyAqO1xuXG4kYWNjZW50LWJhc2U6ICB2YXIoLS1jb2xvcnBpY2tlci1hY2NlbnQsICAgICAgIHZhcigtLWFjY2VudCkpO1xuJGFjY2VudC1yaW5nOiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LXJpbmcsICB2YXIoLS1hY2NlbnQtcmluZykpO1xuJGFjY2VudC1nbG93OiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LWdsb3csICB2YXIoLS1hY2NlbnQtZ2xvdykpO1xuJGFjY2VudC1saWdodDogdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LWxpZ2h0LCB2YXIoLS1hY2NlbnQtbGlnaHQpKTtcblxuJGRpc2M6IDIwMHB4O1xuJHNsaWRlci13OiAyMHB4O1xuJHRodW1iLXNpemU6IDIwcHg7XG4kZ2FwOiAwLjVyZW07XG5cbi8vIOKUgOKUgOKUgCBDYXJkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uY29sb3JQaWNrZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxNnB4KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDAgMCAxcHggcmdiYSgwLDAsMCwwLjA0KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWJhc2UpO1xuICB3aWR0aDogY2FsYygjeyRkaXNjfSArIDJyZW0pOyAvLyBkaXNjICsgY2FyZCBwYWRkaW5nICgxcmVtIMOXIDIgc2lkZXMpXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vLyDilIDilIDilIAgRGlzYyArIEwgc2xpZGVyIHJvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLnRvcFJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGlzY1dyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAkZGlzYztcbiAgaGVpZ2h0OiAkZGlzYztcbiAgZmxleC1zaHJpbms6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMS41cHggdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xufVxuXG4uZGlzYyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJGRpc2M7XG4gIGhlaWdodDogJGRpc2M7XG4gIGN1cnNvcjogY3Jvc3NoYWlyO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbi5kb3Qge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAycHggc29saWQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgMS41cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLy8g4pSA4pSA4pSAIExpZ2h0bmVzcyBzbGlkZXIgKGhvcml6b250YWwpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4ubFNsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGN1cnNvcjogZXctcmVzaXplO1xuICBtYXJnaW4tYmxvY2s6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4ubFRodW1iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6ICR0aHVtYi1zaXplO1xuICBoZWlnaHQ6ICR0aHVtYi1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBBbHBoYSBzbGlkZXIgKGhvcml6b250YWwpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uYWxwaGFTbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgbWFyZ2luLWJsb2NrOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuXG4uYWxwaGFUaHVtYiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHdpZHRoOiAkdGh1bWItc2l6ZTtcbiAgaGVpZ2h0OiAkdGh1bWItc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vLyDilIDilIDilIAgUHJldmlldyBzd2F0Y2gg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5wcmV2aWV3U3dhdGNoIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAgMC41cmVtO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uZXllZHJvcHBlckJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIH1cbn1cblxuLy8g4pSA4pSA4pSAIElucHV0cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLmlucHV0U2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xufVxuXG4udGFicyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgcGFkZGluZzogMnB4O1xuICBnYXA6IDJweDtcbn1cblxuLnRhYiB7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmc6IDAuMnJlbSAwO1xuICBmb250LXNpemU6IDAuNjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1yYWRpdXMtc20pIC0gMXB4KTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXI6bm90KC50YWJBY3RpdmUpIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC02MDApO1xuICB9XG59XG5cbi50YWJBY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYWNjZW50LWJhc2U7XG4gIGNvbG9yOiAjZmZmO1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLmlucHV0V3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmlucHV0QWRkb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBmb250LWZhbWlseTogXCJTRiBNb25vXCIsIFwiRmlyYSBDb2RlXCIsIFwiQ29uc29sYXNcIiwgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwLjRyZW0gMnJlbTsgLy8gc3ltbWV0cmljOiByb29tIGZvciAjIG9uIGxlZnQgYW5kIGNvcHkgaWNvbiBvbiByaWdodFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgZm9udC1mYW1pbHk6IFwiU0YgTW9ub1wiLCBcIkZpcmEgQ29kZVwiLCBcIkNvbnNvbGFzXCIsIG1vbm9zcGFjZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC0wKTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgYm94LXNoYWRvdyB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGFjY2VudC1iYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAkYWNjZW50LWdsb3c7XG4gIH1cbn1cblxuLmlucHV0Q29weUJ0biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDAuMzVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjJweDtcbiAgaGVpZ2h0OiAyMnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1uZXV0cmFsLTEwMCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgfVxufVxuXG5cbi8vIOKUgOKUgOKUgCBSZWNlbnQgY29sb3JzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4ucmVjZW50cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnJlY2VudHNMYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC00MDApO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnN3YXRjaGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAwLjM1cmVtO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnJlY2VudFN3YXRjaCB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4iXX0= */","export function hexToHsl(hex: string): [number, number, number] {\n const r = parseInt(hex.slice(1, 3), 16) / 255;\n const g = parseInt(hex.slice(3, 5), 16) / 255;\n const b = parseInt(hex.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return [h * 360, s * 100, l * 100];\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, \"0\");\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n return Math.round(255 * (ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)));\n };\n return { r: f(0), g: f(8), b: f(4) };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): [number, number, number] {\n const rr = r / 255, gg = g / 255, bb = b / 255;\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const l = (max + min) / 2;\n let h = 0, s = 0;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rr: h = ((gg - bb) / d + (gg < bb ? 6 : 0)) / 6; break;\n case gg: h = ((bb - rr) / d + 2) / 6; break;\n case bb: h = ((rr - gg) / d + 4) / 6; break;\n }\n }\n return [h * 360, s * 100, l * 100];\n}\n\nfunction hslToRgba(h: number, s: number, l: number, alpha: number): string {\n const { r, g, b } = hslToRgb(h, s, l);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport interface AccentTokens {\n base: string;\n dot: string;\n track: string;\n ring: string;\n glow: string;\n light: string;\n}\n\nexport interface ColorValue {\n hex: string;\n hexa: string;\n hsl: string;\n hsla: string;\n rgb: string;\n rgba: string;\n h: number;\n s: number;\n l: number;\n a: number;\n}\n\nexport function buildColorValue(h: number, s: number, l: number, a: number): ColorValue {\n const { r, g, b } = hslToRgb(h, s, l);\n const hex = hslToHex(h, s, l);\n const alphaHex = Math.round(a * 255).toString(16).padStart(2, \"0\");\n const hR = Math.round(h), sR = Math.round(s), lR = Math.round(l);\n const aR = Math.round(a * 100) / 100;\n return {\n hex,\n hexa: `${hex}${alphaHex}`,\n hsl: `hsl(${hR}, ${sR}%, ${lR}%)`,\n hsla: `hsla(${hR}, ${sR}%, ${lR}%, ${aR})`,\n rgb: `rgb(${r}, ${g}, ${b})`,\n rgba: `rgba(${r}, ${g}, ${b}, ${aR})`,\n h, s, l, a,\n };\n}\n\nexport function deriveAccent(hex: string): AccentTokens {\n const [h, s, l] = hexToHsl(hex);\n return {\n base: hex,\n dot: hslToHex(h, s, Math.min(l + 12, 95)),\n track: hex,\n ring: hex,\n glow: hslToRgba(h, s, l, 0.3),\n light: hslToHex(h, Math.max(s - 20, 0), Math.min(l + 45, 96)),\n };\n}\n\nexport function accentToCssVars(\n tokens: AccentTokens,\n prefix: string\n): Record<string, string> {\n return {\n [`--${prefix}-accent`]: tokens.base,\n [`--${prefix}-accent-dot`]: tokens.dot,\n [`--${prefix}-accent-track`]: tokens.track,\n [`--${prefix}-accent-ring`]: tokens.ring,\n [`--${prefix}-accent-glow`]: tokens.glow,\n [`--${prefix}-accent-light`]: tokens.light,\n };\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./ColorPicker.module.scss\";\nimport {\n accentToCssVars,\n buildColorValue,\n deriveAccent,\n hexToHsl,\n hslToHex,\n hslToRgb,\n rgbToHsl,\n} from \"../../utils/color\";\nimport type { ColorValue } from \"../../utils/color\";\n\ndeclare global {\n interface Window {\n EyeDropper?: new () => { open(): Promise<{ sRGBHex: string }> };\n }\n}\n\nconst DISC = 200;\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nconst CopyIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"7\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n <path d=\"M2 9V2.5A.5.5 0 0 1 2.5 2H9\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyedropperIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9.5 2.5L11.5 4.5L6 10L3 11L4 8L9.5 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <path d=\"M8 4L10 6\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"2.5\" cy=\"11.5\" r=\"1\" fill=\"currentColor\" />\n </svg>\n);\n\n// ─── Input sub-component ──────────────────────────────────────────────────────\n\ntype InputMode = \"hex\" | \"hsl\" | \"rgb\";\n\ninterface ColorInputProps {\n mode: InputMode;\n h: number; s: number; l: number;\n r: number; g: number; b: number;\n hex: string;\n onChange: (h: number, s: number, l: number) => void;\n onCopy: () => void;\n copied: boolean;\n}\n\nfunction formatValue(mode: InputMode, h: number, s: number, l: number, r: number, g: number, b: number, hex: string): string {\n if (mode === \"hex\") return hex.replace(\"#\", \"\");\n if (mode === \"hsl\") return `${Math.round(h)} ${Math.round(s)} ${Math.round(l)}`;\n return `${r} ${g} ${b}`;\n}\n\nfunction parseValue(mode: InputMode, raw: string): [number, number, number] | null {\n if (mode === \"hex\") {\n const clean = raw.replace(/^#/, \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(clean)) return null;\n const [h, s, l] = hexToHsl(`#${clean}`);\n return [h, s, l];\n }\n const parts = raw.trim().split(/[\\s,]+/).map(Number);\n if (parts.length !== 3 || parts.some(isNaN)) return null;\n if (mode === \"hsl\") {\n const [h, s, l] = parts;\n if (h < 0 || h > 360 || s < 0 || s > 100 || l < 0 || l > 100) return null;\n return [h, s, l];\n }\n // rgb\n const [r, g, b] = parts;\n if ([r, g, b].some((v) => v < 0 || v > 255)) return null;\n return rgbToHsl(r, g, b);\n}\n\nconst ColorInput: React.FC<ColorInputProps> = ({ mode, h, s, l, r, g, b, hex, onChange, onCopy, copied }) => {\n const [draft, setDraft] = useState(() => formatValue(mode, h, s, l, r, g, b, hex));\n const [focused, setFocused] = useState(false);\n\n // sync from outside only when not focused\n useEffect(() => {\n if (!focused) setDraft(formatValue(mode, h, s, l, r, g, b, hex));\n }, [focused, mode, h, s, l, r, g, b, hex]);\n\n const placeholder = mode === \"hex\" ? \"3b82f6\" : mode === \"hsl\" ? \"217 91 60\" : \"59 130 246\";\n\n return (\n <div className={styles.inputWrapper}>\n {mode === \"hex\" && <span className={styles.inputAddon}>#</span>}\n <input\n className={styles.input}\n value={draft}\n placeholder={placeholder}\n spellCheck={false}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n onChange={(e) => {\n const raw = e.target.value;\n setDraft(raw);\n const result = parseValue(mode, raw);\n if (result) onChange(...result);\n }}\n />\n <button className={styles.inputCopyBtn} onClick={onCopy} tabIndex={-1} title=\"Copia\">\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n </div>\n );\n};\n\n// ─── Main component ────────────────────────────────────────────────────────────\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: ColorValue) => void;\n showAlpha?: boolean;\n recentColors?: string[];\n accent?: string;\n className?: string;\n}\n\nfunction parseInitial(value?: string): [number, number, number, number] {\n if (value?.startsWith(\"#\")) {\n const [h, s, l] = hexToHsl(value);\n return [h, s, l, 1];\n }\n return [217, 91, 60, 1];\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n value,\n onChange,\n showAlpha = true,\n recentColors = [],\n accent,\n className,\n}) => {\n const init = parseInitial(value);\n const [h, setH] = useState(init[0]);\n const [s, setS] = useState(init[1]);\n const [l, setL] = useState(init[2]);\n const [a, setA] = useState(init[3]);\n const [mode, setMode] = useState<\"hex\" | \"hsl\" | \"rgb\">(\"hex\");\n const [copied, setCopied] = useState(false);\n const [hasEyeDropper, setHasEyeDropper] = useState(false);\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n setHasEyeDropper(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n }, []);\n\n // Sync from value prop (controlled)\n useEffect(() => {\n if (value?.startsWith(\"#\")) {\n const [nh, ns, nl] = hexToHsl(value);\n setH(nh); setS(ns); setL(nl);\n }\n }, [value]);\n\n // Render disc canvas via ImageData\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n const img = ctx.createImageData(DISC, DISC);\n const data = img.data;\n const cx = DISC / 2;\n const cy = DISC / 2;\n const radius = DISC / 2;\n\n for (let py = 0; py < DISC; py++) {\n for (let px = 0; px < DISC; px++) {\n const dx = px - cx;\n const dy = py - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const idx = (py * DISC + px) * 4;\n if (r > radius) { data[idx + 3] = 0; continue; }\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const hue = (theta + 360) % 360;\n const sat = (r / radius) * 100;\n const { r: rr, g: gg, b: bb } = hslToRgb(hue, sat, l);\n data[idx] = rr;\n data[idx + 1] = gg;\n data[idx + 2] = bb;\n // soft edge anti-alias\n data[idx + 3] = r > radius - 1 ? Math.round(255 * (radius - r)) : 255;\n }\n }\n ctx.putImageData(img, 0, 0);\n }, [l]);\n\n const notify = useCallback(\n (nh: number, ns: number, nl: number, na: number) => {\n onChange?.(buildColorValue(nh, ns, nl, na));\n },\n [onChange]\n );\n\n // Disc drag\n const updateDisc = useCallback(\n (clientX: number, clientY: number, rect: DOMRect) => {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const radius = rect.width / 2;\n const clampedR = Math.min(r, radius);\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const nh = (theta + 360) % 360;\n const ns = (clampedR / radius) * 100;\n setH(nh); setS(ns);\n notify(nh, ns, l, a);\n },\n [l, a, notify]\n );\n\n const handleDiscPointerDown = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n const handleDiscPointerMove = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n if (e.buttons === 0) return;\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n // Lightness slider (horizontal)\n const updateL = useCallback(\n (clientX: number, rect: DOMRect) => {\n const nl = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n setL(nl);\n notify(h, s, nl, a);\n },\n [h, s, a, notify]\n );\n\n const handleLPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n const handleLPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n // Alpha slider (horizontal)\n const updateA = useCallback(\n (clientX: number, rect: DOMRect) => {\n const na = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n setA(na);\n notify(h, s, l, na);\n },\n [h, s, l, notify]\n );\n\n const handleAPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n const handleAPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n // Computed\n const { r: rr, g: gg, b: bb } = hslToRgb(h, s, l);\n const hexStr = hslToHex(h, s, l);\n const rgbStr = `rgb(${rr}, ${gg}, ${bb})`;\n const colorValue = buildColorValue(h, s, l, a);\n\n // Dot position on canvas (canvas coords → CSS px)\n const dotX = DISC / 2 + (s / 100) * (DISC / 2) * Math.cos((h * Math.PI) / 180);\n const dotY = DISC / 2 + (s / 100) * (DISC / 2) * Math.sin((h * Math.PI) / 180);\n\n // L slider gradient\n const lGradient = `linear-gradient(to right,\n hsl(${h}, ${s}%, 5%),\n hsl(${h}, ${s}%, 50%),\n hsl(${h}, ${s}%, 95%))`;\n\n // Alpha gradient\n const alphaGradient = `linear-gradient(to right, transparent, ${rgbStr})`;\n\n // EyeDropper\n const handleEyeDropper = async () => {\n if (!window.EyeDropper) return;\n try {\n const result = await new window.EyeDropper().open();\n const [nh, ns, nl] = hexToHsl(result.sRGBHex);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n } catch {\n // user cancelled\n }\n };\n\n // Copy\n const handleCopy = () => {\n const text =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n };\n\n // Swatch click\n const handleSwatch = (color: string) => {\n const [nh, ns, nl] = hexToHsl(color);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n };\n\n // Accent vars\n const accentVars = accent ? accentToCssVars(deriveAccent(accent), \"colorpicker\") : {};\n\n const displayValue =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n\n return (\n <div\n className={[styles.colorPicker, className ?? \"\"].filter(Boolean).join(\" \")}\n style={accentVars as React.CSSProperties}\n >\n {/* Disc */}\n <div className={styles.topRow}>\n <div className={styles.discWrapper}>\n <canvas\n ref={canvasRef}\n width={DISC}\n height={DISC}\n className={styles.disc}\n onPointerDown={handleDiscPointerDown}\n onPointerMove={handleDiscPointerMove}\n />\n <div\n className={styles.dot}\n style={{\n left: dotX,\n top: dotY,\n borderColor: l > 55 ? \"rgba(0,0,0,0.5)\" : \"rgba(255,255,255,0.85)\",\n }}\n />\n </div>\n </div>\n\n {/* Lightness slider */}\n <div\n className={styles.lSlider}\n style={{ backgroundImage: lGradient }}\n onPointerDown={handleLPointerDown}\n onPointerMove={handleLPointerMove}\n >\n <div\n className={styles.lThumb}\n style={{ left: `${l}%` }}\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div\n className={styles.alphaSlider}\n style={{ backgroundImage: alphaGradient }}\n onPointerDown={handleAPointerDown}\n onPointerMove={handleAPointerMove}\n >\n <div\n className={styles.alphaThumb}\n style={{ left: `${a * 100}%` }}\n />\n </div>\n )}\n\n {/* Preview swatch */}\n <div\n className={styles.previewSwatch}\n style={{ background: showAlpha ? colorValue.rgba : hexStr }}\n >\n {hasEyeDropper && (\n <button className={styles.eyedropperBtn} onClick={handleEyeDropper} title=\"Pick color\">\n <EyedropperIcon />\n </button>\n )}\n </div>\n\n {/* Mode tabs + inputs */}\n <div className={styles.inputSection}>\n <div className={styles.tabs}>\n {([\"hex\", \"hsl\", \"rgb\"] as const).map((m) => (\n <button\n key={m}\n className={[styles.tab, mode === m ? styles.tabActive : \"\"].filter(Boolean).join(\" \")}\n onClick={() => setMode(m)}\n >\n {m.toUpperCase()}\n </button>\n ))}\n </div>\n\n <ColorInput\n mode={mode}\n h={h} s={s} l={l}\n r={rr} g={gg} b={bb}\n hex={hexStr}\n onChange={(nh, ns, nl) => {\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n }}\n onCopy={handleCopy}\n copied={copied}\n />\n </div>\n\n {/* Recent colors */}\n {recentColors.length > 0 && (\n <div className={styles.recents}>\n <span className={styles.recentsLabel}>Recent</span>\n <div className={styles.swatches}>\n {recentColors.slice(0, 8).map((c, i) => (\n <button\n key={i}\n className={styles.recentSwatch}\n style={{ background: c }}\n onClick={() => handleSwatch(c)}\n title={c}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../../../src/components/ColorPicker/ColorPicker.module.scss","../../../src/utils/color.ts","../../../src/components/ColorPicker/ColorPicker.tsx"],"names":["colorPicker","topRow","discWrapper","disc","dot","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputWrapper","inputAddon","input","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch","jsxs","jsx","useState","useEffect","useRef","rr","gg","bb","useCallback"],"mappings":"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","file":"index.cjs","sourcesContent":["@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n:root {\n --accent: #3b82f6;\n --accent-dot: rgb(82.52, 145, 247.08);\n --accent-track: #3b82f6;\n --accent-ring: #3b82f6;\n --accent-glow: rgba(59, 130, 246, 0.3);\n --accent-light: rgb(157.485, 188.725, 239.765);\n --color-primary-50: rgb(169.3455, 194.6925, 236.1045);\n --color-primary-100: rgb(149.4545, 184.4575, 241.6455);\n --color-primary-400: rgb(82.52, 145, 247.08);\n --color-primary-500: #3b82f6;\n --color-primary-600: rgb(29.8390243902, 111.4024390244, 244.6609756098);\n --color-primary-700: rgb(10.712195122, 95.2195121951, 233.287804878);\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --transition-fast: 150ms ease;\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n --accent-light: #172554;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker[data-theme=dark] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0, 0, 0, 0.04);\n font-family: var(--font-family-base);\n width: calc(200px + 2rem);\n box-sizing: border-box;\n user-select: none;\n}\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: 200px;\n height: 200px;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: 200px;\n height: 200px;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n}\n.eyedropperBtn:hover {\n background: rgba(255, 255, 255, 0.4);\n}\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.tab:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n}\n\n.tabActive {\n background: var(--colorpicker-accent, var(--accent));\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem;\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n.input:focus {\n border-color: var(--colorpicker-accent, var(--accent));\n box-shadow: 0 0 0 2px var(--colorpicker-accent-glow, var(--accent-glow));\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n}\n.inputCopyBtn:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n}\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWxlcy90b2tlbnMuc2NzcyIsIkNvbG9yUGlja2VyLm1vZHVsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVRO0FBS1I7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7OztBQVFGO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFJQTtFQUdBO0VBQ0E7OztBQ3BGRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQSxPQWhESztFQWlETCxRQWpESztFQWtETDtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQSxPQXpESztFQTBETCxRQTFESztFQTJETDtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsT0F4Rlc7RUF5RlgsUUF6Rlc7RUEwRlg7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxPQWxIVztFQW1IWCxRQW5IVztFQW9IWDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUtGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBTUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQUlKO0VBQ0UsWUF6TWE7RUEwTWI7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0UsY0E3T1c7RUE4T1g7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOzs7QUFPSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlIFwic2Fzczpjb2xvclwiO1xuXG5AaW1wb3J0IHVybChcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMCZkaXNwbGF5PXN3YXBcIik7XG5cbi8vIEFjY2VudCBkaSBkZWZhdWx0IOKAlCBjYW1iaWEgcXVpIHBlciBhZ2dpb3JuYXJlIHR1dHRhIGxhIGxpYnJlcmlhXG4kYWNjZW50OiAjM2I4MmY2O1xuXG46cm9vdCB7XG4gIC8vIEFjY2VudCBzY2FsZSDigJQgZGVyaXZhdGEgZGEgJGFjY2VudCBhIGNvbXBpbGUgdGltZVxuICAtLWFjY2VudDogICAgICAgICN7JGFjY2VudH07XG4gIC0tYWNjZW50LWRvdDogICAgI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiAxMiUpfTtcbiAgLS1hY2NlbnQtdHJhY2s6ICAjeyRhY2NlbnR9O1xuICAtLWFjY2VudC1yaW5nOiAgICN7JGFjY2VudH07XG4gIC0tYWNjZW50LWdsb3c6ICAgI3tjb2xvci5jaGFuZ2UoJGFjY2VudCwgJGFscGhhOiAwLjMpfTtcbiAgLS1hY2NlbnQtbGlnaHQ6ICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQ1JSwgJHNhdHVyYXRpb246IC0yMCUpfTtcblxuICAvLyBQcmltYXJ5IHNjYWxlIChtYW50ZW51dGEgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgY29uIEJ1dHRvbiwgQmFkZ2UsIElucHV0KVxuICAtLWNvbG9yLXByaW1hcnktNTA6ICAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IDQ5JSwgJHNhdHVyYXRpb246IC0zMCUpfTtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogI3tjb2xvci5zY2FsZSgkYWNjZW50LCAkbGlnaHRuZXNzOiA0MiUsICRzYXR1cmF0aW9uOiAtMTUlKX07XG4gIC0tY29sb3ItcHJpbWFyeS00MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogMTIlKX07XG4gIC0tY29sb3ItcHJpbWFyeS01MDA6ICN7JGFjY2VudH07XG4gIC0tY29sb3ItcHJpbWFyeS02MDA6ICN7Y29sb3Iuc2NhbGUoJGFjY2VudCwgJGxpZ2h0bmVzczogLTEwJSl9O1xuICAtLWNvbG9yLXByaW1hcnktNzAwOiAje2NvbG9yLnNjYWxlKCRhY2NlbnQsICRsaWdodG5lc3M6IC0yMCUpfTtcblxuICAvLyBOZXV0cmFsXG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICNmZmZmZmY7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICNmM2Y0ZjY7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICNlNWU3ZWI7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5Y2EzYWY7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICM0YjU1NjM7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICMxMTE4Mjc7XG5cbiAgLy8gU2VtYW50aWNcbiAgLS1jb2xvci1zdWNjZXNzLTUwMDogIzIyYzU1ZTtcbiAgLS1jb2xvci1zdWNjZXNzLTYwMDogIzE2YTM0YTtcbiAgLS1jb2xvci1kYW5nZXItNTAwOiAgI2VmNDQ0NDtcbiAgLS1jb2xvci1kYW5nZXItNjAwOiAgI2RjMjYyNjtcbiAgLS1jb2xvci13YXJuaW5nLTUwMDogI2Y1OWUwYjtcbiAgLS1jb2xvci13YXJuaW5nLTYwMDogI2Q5NzcwNjtcblxuICAvLyBUeXBvZ3JhcGh5XG4gIC0tZm9udC1mYW1pbHktYmFzZTogXCJJbnRlclwiLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7XG4gIC0tZm9udC1zaXplLXhzOiAwLjc1cmVtO1xuICAtLWZvbnQtc2l6ZS1zbTogMC44NzVyZW07XG4gIC0tZm9udC1zaXplLW1kOiAxcmVtO1xuICAtLWZvbnQtc2l6ZS1sZzogMS4xMjVyZW07XG5cbiAgLy8gU3BhY2luZ1xuICAtLXNwYWNpbmctMTogMC4yNXJlbTtcbiAgLS1zcGFjaW5nLTI6IDAuNXJlbTtcbiAgLS1zcGFjaW5nLTM6IDAuNzVyZW07XG4gIC0tc3BhY2luZy00OiAxcmVtO1xuXG4gIC8vIFJhZGl1c1xuICAtLXJhZGl1cy1zbTogICAwLjI1cmVtO1xuICAtLXJhZGl1cy1tZDogICAwLjM3NXJlbTtcbiAgLS1yYWRpdXMtbGc6ICAgMC41cmVtO1xuICAtLXJhZGl1cy1mdWxsOiA5OTk5cHg7XG5cbiAgLy8gU2hhZG93c1xuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjEpO1xuXG4gIC8vIFRyYW5zaXRpb25zXG4gIC0tdHJhbnNpdGlvbi1mYXN0OiAxNTBtcyBlYXNlO1xuXG4gIC8vIFN1cmZhY2UgKGJhY2tncm91bmQgZGkgY2FyZC9wYW5lbClcbiAgLS1jb2xvci1zdXJmYWNlOiAgICAgICAgICAjZmZmZmZmO1xuICAtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6ICNmZmZmZmY7XG59XG5cbi8vIOKUgOKUgOKUgCBEYXJrIHRoZW1lIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQXBwbGljYXRvIHZpYSBkYXRhLXRoZW1lPVwiZGFya1wiIHN1bGwnZWxlbWVudG8gcm9vdCAoZ2VzdGl0byBkYSBTdG9yeWJvb2sgZGVjb3JhdG9yXG4vLyBlIGRhbGwnYXBwIGNvbnN1bWVyKS4gSSBjb21wb25lbnRpIG5vbiBkZXZvbm8gZmFyZSBudWxsYSBkaSBzcGVjaWFsZTogYmFzdGEgY2hlXG4vLyB1c2lubyBpIHRva2VuIHZhcigpIGUgcmljZXZlcmFubm8gYXV0b21hdGljYW1lbnRlIGkgdmFsb3JpIGRhcmsuXG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSB7XG4gIC8vIE5ldXRyYWwgKHNjYWxhIGludmVydGl0YSlcbiAgLS1jb2xvci1uZXV0cmFsLTA6ICAgIzBmMTcyYTtcbiAgLS1jb2xvci1uZXV0cmFsLTEwMDogIzFlMjkzYjtcbiAgLS1jb2xvci1uZXV0cmFsLTIwMDogIzMzNDE1NTtcbiAgLS1jb2xvci1uZXV0cmFsLTQwMDogIzk0YTNiODtcbiAgLS1jb2xvci1uZXV0cmFsLTYwMDogI2NiZDVlMTtcbiAgLS1jb2xvci1uZXV0cmFsLTkwMDogI2Y4ZmFmYztcblxuICAvLyBTdXJmYWNlXG4gIC0tY29sb3Itc3VyZmFjZTogICAgICAgICAgIzFlMjkzYjtcbiAgLS1jb2xvci1zdXJmYWNlLWVsZXZhdGVkOiAjMjczNTQ5O1xuXG4gIC8vIFByaW1hcnkgc2NhbGUgZGFyayAocGVyIGlsIGRlZmF1bHQgYWNjZW50IGJsdSDigJQgbGUgc2Z1bWF0dXJlIGNoaWFyZSBkaXZlbnRhbm8gc2N1cmUpXG4gIC0tY29sb3ItcHJpbWFyeS01MDogICMxNzI1NTQ7XG4gIC0tY29sb3ItcHJpbWFyeS0xMDA6ICMxZTNhOGE7XG4gIC8vIDQwMCAvIDUwMCAvIDYwMCAvIDcwMCByaW1hbmdvbm8gaW52YXJpYXRpIChhYmJhc3RhbnphIHNhdHVyaSBzdSBiZyBzY3VybylcblxuICAvLyBBY2NlbnQgbGlnaHQ6IHZhcmlhbnRlIHNjdXJhXG4gIC0tYWNjZW50LWxpZ2h0OiAjMTcyNTU0O1xuXG4gIC8vIFNoYWRvd3MgKHBpw7kgZm9ydGkgc3UgYmcgc2N1cm8pXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjQpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC41KSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC40KTtcbn1cbiIsIkB1c2UgXCIuLi8uLi9zdHlsZXMvdG9rZW5zXCIgYXMgKjtcblxuJGFjY2VudC1iYXNlOiAgdmFyKC0tY29sb3JwaWNrZXItYWNjZW50LCAgICAgICB2YXIoLS1hY2NlbnQpKTtcbiRhY2NlbnQtcmluZzogIHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1yaW5nLCAgdmFyKC0tYWNjZW50LXJpbmcpKTtcbiRhY2NlbnQtZ2xvdzogIHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1nbG93LCAgdmFyKC0tYWNjZW50LWdsb3cpKTtcbiRhY2NlbnQtbGlnaHQ6IHZhcigtLWNvbG9ycGlja2VyLWFjY2VudC1saWdodCwgdmFyKC0tYWNjZW50LWxpZ2h0KSk7XG5cbiRkaXNjOiAyMDBweDtcbiRzbGlkZXItdzogMjBweDtcbiR0aHVtYi1zaXplOiAyMHB4O1xuJGdhcDogMC41cmVtO1xuXG4vLyDilIDilIDilIAgRGFyayB0aGVtZSBzY29wZWQgc3VsbCdlbGVtZW50byAocHJvcCB0aGVtZT1cImRhcmtcIikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTb3ZyYXNjcml2ZSBpIHRva2VuIGdsb2JhbGkgbG9jYWxtZW50ZSDigJQgbm9uIGRpcGVuZGUgZGFsIGRhdGEtdGhlbWUgZGVsbCdhcHAuXG5cbi5jb2xvclBpY2tlcltkYXRhLXRoZW1lPVwiZGFya1wiXSB7XG4gIC0tY29sb3ItbmV1dHJhbC0wOiAgICMwZjE3MmE7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICMxZTI5M2I7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICMzMzQxNTU7XG4gIC0tY29sb3ItbmV1dHJhbC00MDA6ICM5NGEzYjg7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICNjYmQ1ZTE7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICNmOGZhZmM7XG4gIC0tY29sb3Itc3VyZmFjZTogICAgICMxZTI5M2I7XG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjQpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC41KSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC40KTtcbn1cblxuLy8g4pSA4pSA4pSAIENhcmQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5jb2xvclBpY2tlciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTZweCk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgMCAwIDFweCByZ2JhKDAsMCwwLDAuMDQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIHdpZHRoOiBjYWxjKCN7JGRpc2N9ICsgMnJlbSk7IC8vIGRpc2MgKyBjYXJkIHBhZGRpbmcgKDFyZW0gw5cgMiBzaWRlcylcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBEaXNjICsgTCBzbGlkZXIgcm93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4udG9wUm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kaXNjV3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6ICRkaXNjO1xuICBoZWlnaHQ6ICRkaXNjO1xuICBmbGV4LXNocmluazogMDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAwIDAgMCAxLjVweCB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG59XG5cbi5kaXNjIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkZGlzYztcbiAgaGVpZ2h0OiAkZGlzYztcbiAgY3Vyc29yOiBjcm9zc2hhaXI7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLmRvdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDJweCBzb2xpZDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMCAxLjVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4vLyDilIDilIDilIAgTGlnaHRuZXNzIHNsaWRlciAoaG9yaXpvbnRhbCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5sU2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG4gIG1hcmdpbi1ibG9jazogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTIwMCk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5sVGh1bWIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogJHRodW1iLXNpemU7XG4gIGhlaWdodDogJHRodW1iLXNpemU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLy8g4pSA4pSA4pSAIEFscGhhIHNsaWRlciAoaG9yaXpvbnRhbCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5hbHBoYVNsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGN1cnNvcjogZXctcmVzaXplO1xuICBtYXJnaW4tYmxvY2s6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC0yMDApO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG5cbi5hbHBoYVRodW1iIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6ICR0aHVtYi1zaXplO1xuICBoZWlnaHQ6ICR0aHVtYi1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8vIOKUgOKUgOKUgCBQcmV2aWV3IHN3YXRjaCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLnByZXZpZXdTd2F0Y2gge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZzogMCAwLjVyZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5leWVkcm9wcGVyQnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyOHB4O1xuICBoZWlnaHQ6IDI4cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgfVxufVxuXG4vLyDilIDilIDilIAgSW5wdXRzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4uaW5wdXRTZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi50YWJzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBwYWRkaW5nOiAycHg7XG4gIGdhcDogMnB4O1xufVxuXG4udGFiIHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMC4ycmVtIDA7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiBjYWxjKHZhcigtLXJhZGl1cy1zbSkgLSAxcHgpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLW5ldXRyYWwtNDAwKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24tZmFzdCksIGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgJjpob3Zlcjpub3QoLnRhYkFjdGl2ZSkge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTYwMCk7XG4gIH1cbn1cblxuLnRhYkFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRhY2NlbnQtYmFzZTtcbiAgY29sb3I6ICNmZmY7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuXG4uaW5wdXRXcmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXRBZGRvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMC41cmVtO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gIGZvbnQtZmFtaWx5OiBcIlNGIE1vbm9cIiwgXCJGaXJhIENvZGVcIiwgXCJDb25zb2xhc1wiLCBtb25vc3BhY2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLmlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDAuNHJlbSAycmVtOyAvLyBzeW1tZXRyaWM6IHJvb20gZm9yICMgb24gbGVmdCBhbmQgY29weSBpY29uIG9uIHJpZ2h0XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW5ldXRyYWwtMjAwKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICBmb250LWZhbWlseTogXCJTRiBNb25vXCIsIFwiRmlyYSBDb2RlXCIsIFwiQ29uc29sYXNcIiwgbW9ub3NwYWNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC05MDApO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1uZXV0cmFsLTApO1xuICBvdXRsaW5lOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgJjpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LWJhc2U7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICRhY2NlbnQtZ2xvdztcbiAgfVxufVxuXG4uaW5wdXRDb3B5QnRuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMC4zNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyMnB4O1xuICBoZWlnaHQ6IDIycHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItbmV1dHJhbC05MDApO1xuICB9XG59XG5cblxuLy8g4pSA4pSA4pSAIFJlY2VudCBjb2xvcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi5yZWNlbnRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItbmV1dHJhbC0xMDApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucmVjZW50c0xhYmVsIHtcbiAgZm9udC1zaXplOiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTQwMCk7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc3dhdGNoZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDAuMzVyZW07XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucmVjZW50U3dhdGNoIHtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDEuNXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAwO1xuICBmbGV4LXNocmluazogMDtcbn1cbiJdfQ== */","export function hexToHsl(hex: string): [number, number, number] {\n const r = parseInt(hex.slice(1, 3), 16) / 255;\n const g = parseInt(hex.slice(3, 5), 16) / 255;\n const b = parseInt(hex.slice(5, 7), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return [h * 360, s * 100, l * 100];\n}\n\nexport function hslToHex(h: number, s: number, l: number): string {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n const color = ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, \"0\");\n };\n return `#${f(0)}${f(8)}${f(4)}`;\n}\n\nexport function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n const sl = s / 100;\n const ll = l / 100;\n const a = sl * Math.min(ll, 1 - ll);\n const f = (n: number) => {\n const k = (n + h / 30) % 12;\n return Math.round(255 * (ll - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)));\n };\n return { r: f(0), g: f(8), b: f(4) };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): [number, number, number] {\n const rr = r / 255, gg = g / 255, bb = b / 255;\n const max = Math.max(rr, gg, bb);\n const min = Math.min(rr, gg, bb);\n const l = (max + min) / 2;\n let h = 0, s = 0;\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rr: h = ((gg - bb) / d + (gg < bb ? 6 : 0)) / 6; break;\n case gg: h = ((bb - rr) / d + 2) / 6; break;\n case bb: h = ((rr - gg) / d + 4) / 6; break;\n }\n }\n return [h * 360, s * 100, l * 100];\n}\n\nfunction hslToRgba(h: number, s: number, l: number, alpha: number): string {\n const { r, g, b } = hslToRgb(h, s, l);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport interface AccentTokens {\n base: string;\n dot: string;\n track: string;\n ring: string;\n glow: string;\n light: string;\n}\n\nexport interface ColorValue {\n hex: string;\n hexa: string;\n hsl: string;\n hsla: string;\n rgb: string;\n rgba: string;\n h: number;\n s: number;\n l: number;\n a: number;\n}\n\nexport function buildColorValue(h: number, s: number, l: number, a: number): ColorValue {\n const { r, g, b } = hslToRgb(h, s, l);\n const hex = hslToHex(h, s, l);\n const alphaHex = Math.round(a * 255).toString(16).padStart(2, \"0\");\n const hR = Math.round(h), sR = Math.round(s), lR = Math.round(l);\n const aR = Math.round(a * 100) / 100;\n return {\n hex,\n hexa: `${hex}${alphaHex}`,\n hsl: `hsl(${hR}, ${sR}%, ${lR}%)`,\n hsla: `hsla(${hR}, ${sR}%, ${lR}%, ${aR})`,\n rgb: `rgb(${r}, ${g}, ${b})`,\n rgba: `rgba(${r}, ${g}, ${b}, ${aR})`,\n h, s, l, a,\n };\n}\n\nexport function deriveAccent(hex: string): AccentTokens {\n const [h, s, l] = hexToHsl(hex);\n return {\n base: hex,\n dot: hslToHex(h, s, Math.min(l + 12, 95)),\n track: hex,\n ring: hex,\n glow: hslToRgba(h, s, l, 0.3),\n light: hslToHex(h, Math.max(s - 20, 0), Math.min(l + 45, 96)),\n };\n}\n\nexport function accentToCssVars(\n tokens: AccentTokens,\n prefix: string\n): Record<string, string> {\n return {\n [`--${prefix}-accent`]: tokens.base,\n [`--${prefix}-accent-dot`]: tokens.dot,\n [`--${prefix}-accent-track`]: tokens.track,\n [`--${prefix}-accent-ring`]: tokens.ring,\n [`--${prefix}-accent-glow`]: tokens.glow,\n [`--${prefix}-accent-light`]: tokens.light,\n };\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./ColorPicker.module.scss\";\nimport {\n accentToCssVars,\n buildColorValue,\n deriveAccent,\n hexToHsl,\n hslToHex,\n hslToRgb,\n rgbToHsl,\n} from \"../../utils/color\";\nimport type { ColorValue } from \"../../utils/color\";\n\ndeclare global {\n interface Window {\n EyeDropper?: new () => { open(): Promise<{ sRGBHex: string }> };\n }\n}\n\nconst DISC = 200;\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nconst CopyIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"7\" height=\"7\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.4\" />\n <path d=\"M2 9V2.5A.5.5 0 0 1 2.5 2H9\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M2.5 7L5.5 10L11.5 4\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nconst EyedropperIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9.5 2.5L11.5 4.5L6 10L3 11L4 8L9.5 2.5Z\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\n <path d=\"M8 4L10 6\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n <circle cx=\"2.5\" cy=\"11.5\" r=\"1\" fill=\"currentColor\" />\n </svg>\n);\n\n// ─── Input sub-component ──────────────────────────────────────────────────────\n\ntype InputMode = \"hex\" | \"hsl\" | \"rgb\";\n\ninterface ColorInputProps {\n mode: InputMode;\n h: number; s: number; l: number;\n r: number; g: number; b: number;\n hex: string;\n onChange: (h: number, s: number, l: number) => void;\n onCopy: () => void;\n copied: boolean;\n}\n\nfunction formatValue(mode: InputMode, h: number, s: number, l: number, r: number, g: number, b: number, hex: string): string {\n if (mode === \"hex\") return hex.replace(\"#\", \"\");\n if (mode === \"hsl\") return `${Math.round(h)} ${Math.round(s)} ${Math.round(l)}`;\n return `${r} ${g} ${b}`;\n}\n\nfunction parseValue(mode: InputMode, raw: string): [number, number, number] | null {\n if (mode === \"hex\") {\n const clean = raw.replace(/^#/, \"\");\n if (!/^[0-9a-fA-F]{6}$/.test(clean)) return null;\n const [h, s, l] = hexToHsl(`#${clean}`);\n return [h, s, l];\n }\n const parts = raw.trim().split(/[\\s,]+/).map(Number);\n if (parts.length !== 3 || parts.some(isNaN)) return null;\n if (mode === \"hsl\") {\n const [h, s, l] = parts;\n if (h < 0 || h > 360 || s < 0 || s > 100 || l < 0 || l > 100) return null;\n return [h, s, l];\n }\n // rgb\n const [r, g, b] = parts;\n if ([r, g, b].some((v) => v < 0 || v > 255)) return null;\n return rgbToHsl(r, g, b);\n}\n\nconst ColorInput: React.FC<ColorInputProps> = ({ mode, h, s, l, r, g, b, hex, onChange, onCopy, copied }) => {\n const [draft, setDraft] = useState(() => formatValue(mode, h, s, l, r, g, b, hex));\n const [focused, setFocused] = useState(false);\n\n // sync from outside only when not focused\n useEffect(() => {\n if (!focused) setDraft(formatValue(mode, h, s, l, r, g, b, hex));\n }, [focused, mode, h, s, l, r, g, b, hex]);\n\n const placeholder = mode === \"hex\" ? \"3b82f6\" : mode === \"hsl\" ? \"217 91 60\" : \"59 130 246\";\n\n return (\n <div className={styles.inputWrapper}>\n {mode === \"hex\" && <span className={styles.inputAddon}>#</span>}\n <input\n className={styles.input}\n value={draft}\n placeholder={placeholder}\n spellCheck={false}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n onChange={(e) => {\n const raw = e.target.value;\n setDraft(raw);\n const result = parseValue(mode, raw);\n if (result) onChange(...result);\n }}\n />\n <button className={styles.inputCopyBtn} onClick={onCopy} tabIndex={-1} title=\"Copia\">\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n </div>\n );\n};\n\n// ─── Main component ────────────────────────────────────────────────────────────\n\nexport interface ColorPickerProps {\n value?: string;\n onChange?: (color: ColorValue) => void;\n showAlpha?: boolean;\n recentColors?: string[];\n accent?: string;\n className?: string;\n theme?: \"light\" | \"dark\";\n}\n\nfunction parseInitial(value?: string): [number, number, number, number] {\n if (value?.startsWith(\"#\")) {\n const [h, s, l] = hexToHsl(value);\n return [h, s, l, 1];\n }\n return [217, 91, 60, 1];\n}\n\nexport const ColorPicker: React.FC<ColorPickerProps> = ({\n value,\n onChange,\n showAlpha = true,\n recentColors = [],\n accent,\n className,\n theme,\n}) => {\n const init = parseInitial(value);\n const [h, setH] = useState(init[0]);\n const [s, setS] = useState(init[1]);\n const [l, setL] = useState(init[2]);\n const [a, setA] = useState(init[3]);\n const [mode, setMode] = useState<\"hex\" | \"hsl\" | \"rgb\">(\"hex\");\n const [copied, setCopied] = useState(false);\n const [hasEyeDropper, setHasEyeDropper] = useState(false);\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n setHasEyeDropper(typeof window !== \"undefined\" && \"EyeDropper\" in window);\n }, []);\n\n // Sync from value prop (controlled)\n useEffect(() => {\n if (value?.startsWith(\"#\")) {\n const [nh, ns, nl] = hexToHsl(value);\n setH(nh); setS(ns); setL(nl);\n }\n }, [value]);\n\n // Render disc canvas via ImageData\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n const img = ctx.createImageData(DISC, DISC);\n const data = img.data;\n const cx = DISC / 2;\n const cy = DISC / 2;\n const radius = DISC / 2;\n\n for (let py = 0; py < DISC; py++) {\n for (let px = 0; px < DISC; px++) {\n const dx = px - cx;\n const dy = py - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const idx = (py * DISC + px) * 4;\n if (r > radius) { data[idx + 3] = 0; continue; }\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const hue = (theta + 360) % 360;\n const sat = (r / radius) * 100;\n const { r: rr, g: gg, b: bb } = hslToRgb(hue, sat, l);\n data[idx] = rr;\n data[idx + 1] = gg;\n data[idx + 2] = bb;\n // soft edge anti-alias\n data[idx + 3] = r > radius - 1 ? Math.round(255 * (radius - r)) : 255;\n }\n }\n ctx.putImageData(img, 0, 0);\n }, [l]);\n\n const notify = useCallback(\n (nh: number, ns: number, nl: number, na: number) => {\n onChange?.(buildColorValue(nh, ns, nl, na));\n },\n [onChange]\n );\n\n // Disc drag\n const updateDisc = useCallback(\n (clientX: number, clientY: number, rect: DOMRect) => {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const r = Math.sqrt(dx * dx + dy * dy);\n const radius = rect.width / 2;\n const clampedR = Math.min(r, radius);\n const theta = (Math.atan2(dy, dx) * 180) / Math.PI;\n const nh = (theta + 360) % 360;\n const ns = (clampedR / radius) * 100;\n setH(nh); setS(ns);\n notify(nh, ns, l, a);\n },\n [l, a, notify]\n );\n\n const handleDiscPointerDown = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n const handleDiscPointerMove = useCallback(\n (e: React.PointerEvent<HTMLCanvasElement>) => {\n if (e.buttons === 0) return;\n updateDisc(e.clientX, e.clientY, e.currentTarget.getBoundingClientRect());\n },\n [updateDisc]\n );\n\n // Lightness slider (horizontal)\n const updateL = useCallback(\n (clientX: number, rect: DOMRect) => {\n const nl = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n setL(nl);\n notify(h, s, nl, a);\n },\n [h, s, a, notify]\n );\n\n const handleLPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n const handleLPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateL(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateL]\n );\n\n // Alpha slider (horizontal)\n const updateA = useCallback(\n (clientX: number, rect: DOMRect) => {\n const na = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n setA(na);\n notify(h, s, l, na);\n },\n [h, s, l, notify]\n );\n\n const handleAPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n e.currentTarget.setPointerCapture(e.pointerId);\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n const handleAPointerMove = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 0) return;\n updateA(e.clientX, e.currentTarget.getBoundingClientRect());\n },\n [updateA]\n );\n\n // Computed\n const { r: rr, g: gg, b: bb } = hslToRgb(h, s, l);\n const hexStr = hslToHex(h, s, l);\n const rgbStr = `rgb(${rr}, ${gg}, ${bb})`;\n const colorValue = buildColorValue(h, s, l, a);\n\n // Dot position on canvas (canvas coords → CSS px)\n const dotX = DISC / 2 + (s / 100) * (DISC / 2) * Math.cos((h * Math.PI) / 180);\n const dotY = DISC / 2 + (s / 100) * (DISC / 2) * Math.sin((h * Math.PI) / 180);\n\n // L slider gradient\n const lGradient = `linear-gradient(to right,\n hsl(${h}, ${s}%, 5%),\n hsl(${h}, ${s}%, 50%),\n hsl(${h}, ${s}%, 95%))`;\n\n // Alpha gradient\n const alphaGradient = `linear-gradient(to right, transparent, ${rgbStr})`;\n\n // EyeDropper\n const handleEyeDropper = async () => {\n if (!window.EyeDropper) return;\n try {\n const result = await new window.EyeDropper().open();\n const [nh, ns, nl] = hexToHsl(result.sRGBHex);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n } catch {\n // user cancelled\n }\n };\n\n // Copy\n const handleCopy = () => {\n const text =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n });\n };\n\n // Swatch click\n const handleSwatch = (color: string) => {\n const [nh, ns, nl] = hexToHsl(color);\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n };\n\n // Accent vars\n const accentVars = accent ? accentToCssVars(deriveAccent(accent), \"colorpicker\") : {};\n\n const displayValue =\n mode === \"hex\" ? colorValue.hexa :\n mode === \"hsl\" ? colorValue.hsla :\n colorValue.rgba;\n\n return (\n <div\n className={[styles.colorPicker, className ?? \"\"].filter(Boolean).join(\" \")}\n data-theme={theme}\n style={accentVars as React.CSSProperties}\n >\n {/* Disc */}\n <div className={styles.topRow}>\n <div className={styles.discWrapper}>\n <canvas\n ref={canvasRef}\n width={DISC}\n height={DISC}\n className={styles.disc}\n onPointerDown={handleDiscPointerDown}\n onPointerMove={handleDiscPointerMove}\n />\n <div\n className={styles.dot}\n style={{\n left: dotX,\n top: dotY,\n borderColor: l > 55 ? \"rgba(0,0,0,0.5)\" : \"rgba(255,255,255,0.85)\",\n }}\n />\n </div>\n </div>\n\n {/* Lightness slider */}\n <div\n className={styles.lSlider}\n style={{ backgroundImage: lGradient }}\n onPointerDown={handleLPointerDown}\n onPointerMove={handleLPointerMove}\n >\n <div\n className={styles.lThumb}\n style={{ left: `${l}%` }}\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div\n className={styles.alphaSlider}\n style={{ backgroundImage: alphaGradient }}\n onPointerDown={handleAPointerDown}\n onPointerMove={handleAPointerMove}\n >\n <div\n className={styles.alphaThumb}\n style={{ left: `${a * 100}%` }}\n />\n </div>\n )}\n\n {/* Preview swatch */}\n <div\n className={styles.previewSwatch}\n style={{ background: showAlpha ? colorValue.rgba : hexStr }}\n >\n {hasEyeDropper && (\n <button className={styles.eyedropperBtn} onClick={handleEyeDropper} title=\"Pick color\">\n <EyedropperIcon />\n </button>\n )}\n </div>\n\n {/* Mode tabs + inputs */}\n <div className={styles.inputSection}>\n <div className={styles.tabs}>\n {([\"hex\", \"hsl\", \"rgb\"] as const).map((m) => (\n <button\n key={m}\n className={[styles.tab, mode === m ? styles.tabActive : \"\"].filter(Boolean).join(\" \")}\n onClick={() => setMode(m)}\n >\n {m.toUpperCase()}\n </button>\n ))}\n </div>\n\n <ColorInput\n mode={mode}\n h={h} s={s} l={l}\n r={rr} g={gg} b={bb}\n hex={hexStr}\n onChange={(nh, ns, nl) => {\n setH(nh); setS(ns); setL(nl);\n notify(nh, ns, nl, a);\n }}\n onCopy={handleCopy}\n copied={copied}\n />\n </div>\n\n {/* Recent colors */}\n {recentColors.length > 0 && (\n <div className={styles.recents}>\n <span className={styles.recentsLabel}>Recent</span>\n <div className={styles.swatches}>\n {recentColors.slice(0, 8).map((c, i) => (\n <button\n key={i}\n className={styles.recentSwatch}\n style={{ background: c }}\n onClick={() => handleSwatch(c)}\n title={c}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}
@@ -64,6 +64,17 @@
64
64
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);
65
65
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);
66
66
  }
67
+ .ColorPicker_module_colorPicker2[data-theme=dark] {
68
+ --color-neutral-0: #0f172a;
69
+ --color-neutral-100: #1e293b;
70
+ --color-neutral-200: #334155;
71
+ --color-neutral-400: #94a3b8;
72
+ --color-neutral-600: #cbd5e1;
73
+ --color-neutral-900: #f8fafc;
74
+ --color-surface: #1e293b;
75
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);
76
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);
77
+ }
67
78
  .ColorPicker_module_colorPicker2 {
68
79
  display: inline-flex;
69
80
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/styles/tokens.scss","../../../src/components/ColorPicker/ColorPicker.module.scss"],"sourcesContent":["@use \"sass:color\";\n\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n// Accent di default — cambia qui per aggiornare tutta la libreria\n$accent: #3b82f6;\n\n:root {\n // Accent scale — derivata da $accent a compile time\n --accent: #{$accent};\n --accent-dot: #{color.scale($accent, $lightness: 12%)};\n --accent-track: #{$accent};\n --accent-ring: #{$accent};\n --accent-glow: #{color.change($accent, $alpha: 0.3)};\n --accent-light: #{color.scale($accent, $lightness: 45%, $saturation: -20%)};\n\n // Primary scale (mantenuta per retrocompatibilità con Button, Badge, Input)\n --color-primary-50: #{color.scale($accent, $lightness: 49%, $saturation: -30%)};\n --color-primary-100: #{color.scale($accent, $lightness: 42%, $saturation: -15%)};\n --color-primary-400: #{color.scale($accent, $lightness: 12%)};\n --color-primary-500: #{$accent};\n --color-primary-600: #{color.scale($accent, $lightness: -10%)};\n --color-primary-700: #{color.scale($accent, $lightness: -20%)};\n\n // Neutral\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n\n // Semantic\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n\n // Typography\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n\n // Spacing\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n\n // Radius\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n\n // Shadows\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n\n // Transitions\n --transition-fast: 150ms ease;\n\n // Surface (background di card/panel)\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n// ─── Dark theme ────────────────────────────────────────────────────────────────\n// Applicato via data-theme=\"dark\" sull'elemento root (gestito da Storybook decorator\n// e dall'app consumer). I componenti non devono fare nulla di speciale: basta che\n// usino i token var() e riceveranno automaticamente i valori dark.\n\n[data-theme=\"dark\"] {\n // Neutral (scala invertita)\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n\n // Surface\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n\n // Primary scale dark (per il default accent blu — le sfumature chiare diventano scure)\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n // 400 / 500 / 600 / 700 rimangono invariati (abbastanza saturi su bg scuro)\n\n // Accent light: variante scura\n --accent-light: #172554;\n\n // Shadows (più forti su bg scuro)\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n","@use \"../../styles/tokens\" as *;\n\n$accent-base: var(--colorpicker-accent, var(--accent));\n$accent-ring: var(--colorpicker-accent-ring, var(--accent-ring));\n$accent-glow: var(--colorpicker-accent-glow, var(--accent-glow));\n$accent-light: var(--colorpicker-accent-light, var(--accent-light));\n\n$disc: 200px;\n$slider-w: 20px;\n$thumb-size: 20px;\n$gap: 0.5rem;\n\n// ─── Card ──────────────────────────────────────────────────────────────────────\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0,0,0,0.04);\n font-family: var(--font-family-base);\n width: calc(#{$disc} + 2rem); // disc + card padding (1rem × 2 sides)\n box-sizing: border-box;\n user-select: none;\n}\n\n// ─── Disc + L slider row ───────────────────────────────────────────────────────\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: $disc;\n height: $disc;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: $disc;\n height: $disc;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n// ─── Lightness slider (horizontal) ────────────────────────────────────────────\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: $thumb-size;\n height: $thumb-size;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n// ─── Alpha slider (horizontal) ────────────────────────────────────────────────\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: $thumb-size;\n height: $thumb-size;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n// ─── Preview swatch ────────────────────────────────────────────────────────────\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n\n &:hover {\n background: rgba(255, 255, 255, 0.4);\n }\n}\n\n// ─── Inputs ────────────────────────────────────────────────────────────────────\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n\n &:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n }\n}\n\n.tabActive {\n background: $accent-base;\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem; // symmetric: room for # on left and copy icon on right\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n\n &:focus {\n border-color: $accent-base;\n box-shadow: 0 0 0 2px $accent-glow;\n }\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n\n &:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n }\n}\n\n\n// ─── Recent colors ─────────────────────────────────────────────────────────────\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n"],"mappings":";;;AAOA;AAEE,YAAA;AACA,gBAAA,IAAA,KAAA,EAAA,GAAA,EAAA;AACA,kBAAA;AACA,iBAAA;AACA,iBAAA,KAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,kBAAA,IAAA,OAAA,EAAA,OAAA,EAAA;AAGA,sBAAA,IAAA,QAAA,EAAA,QAAA,EAAA;AACA,uBAAA,IAAA,QAAA,EAAA,QAAA,EAAA;AACA,uBAAA,IAAA,KAAA,EAAA,GAAA,EAAA;AACA,uBAAA;AACA,uBAAA,IAAA,aAAA,EAAA,cAAA,EAAA;AACA,uBAAA,IAAA,YAAA,EAAA,aAAA,EAAA;AAGA,qBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AAGA,uBAAA;AACA,uBAAA;AACA,sBAAA;AACA,sBAAA;AACA,uBAAA;AACA,uBAAA;AAGA;IAAA,OAAA;IAAA,SAAA;IAAA,aAAA;IAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AACA,kBAAA;AAGA,eAAA;AACA,eAAA;AACA,eAAA;AACA,eAAA;AAGA,eAAA;AACA,eAAA;AACA,eAAA;AACA,iBAAA;AAGA,eAAA,EAAA,IAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA;AACA,eAAA,EAAA,IAAA,IAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA;AAGA,qBAAA,MAAA;AAGA,mBAAA;AACA,4BAAA;;AAQF,CAAA;AAEE,qBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AACA,uBAAA;AAGA,mBAAA;AACA,4BAAA;AAGA,sBAAA;AACA,uBAAA;AAIA,kBAAA;AAGA,eAAA,EAAA,IAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA;AACA,eAAA,EAAA,IAAA,IAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAAA,KAAA,IAAA,EAAA,EAAA,EAAA,EAAA;;ACrFF,CAAAA;AACE,WAAA;AACA,kBAAA;AACA,OAAA;AACA,WAAA;AACA,cAAA,IAAA;AACA,mBAAA,KAAA;AACA,2BAAA,KAAA;AACA,UAAA,IAAA,MAAA,IAAA;AACA,iBAAA,IAAA;AACA,cAAA,IAAA,YAAA,EAAA,EAAA,EAAA,EAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,eAAA,IAAA;AACA,SAAA,KAAA,MAAA,EAAA;AACA,cAAA;AACA,eAAA;;AAKF,CAAAC;AACE,WAAA;AACA,mBAAA;;AAGF,CAAAC;AACE,YAAA;AACA,SAjCK;AAkCL,UAlCK;AAmCL,eAAA;AACA,iBAAA;AACA,cAAA,EAAA,EAAA,EAAA,MAAA,IAAA;;AAGF,CAAAC;AACE,WAAA;AACA,SA1CK;AA2CL,UA3CK;AA4CL,UAAA;AACA,iBAAA;;AAGF,CAAAC;AACE,YAAA;AACA,SAAA;AACA,UAAA;AACA,iBAAA;AACA,UAAA,IAAA;AACA,aAAA,UAAA,IAAA,EAAA;AACA,kBAAA;AACA,cAAA,EAAA,EAAA,EAAA,MAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,cAAA;;AAKF,CAAAC;AACE,YAAA;AACA,UAAA;AACA,iBAAA;AACA,UAAA;AACA,gBAAA;AACA,oBAAA,IAAA;AACA,cAAA,MAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;;AAGF,CAAAC;AACE,YAAA;AACA,OAAA;AACA,SAzEW;AA0EX,UA1EW;AA2EX,iBAAA;AACA,aAAA,UAAA,IAAA,EAAA;AACA,cAAA;AACA,UAAA,IAAA,MAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,cAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,kBAAA;;AAKF,CAAAC;AACE,YAAA;AACA,UAAA;AACA,iBAAA;AACA,UAAA;AACA,gBAAA;AACA,oBAAA,IAAA;AACA,cAAA,MAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;;AAIF,CAAAC;AACE,YAAA;AACA,OAAA;AACA,SAnGW;AAoGX,UApGW;AAqGX,iBAAA;AACA,aAAA,UAAA,IAAA,EAAA;AACA,cAAA;AACA,UAAA,IAAA,MAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,cAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,kBAAA;;AAKF,CAAAC;AACE,SAAA;AACA,UAAA;AACA,iBAAA,IAAA;AACA,UAAA,IAAA,MAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,cAAA,MAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,YAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AACA,WAAA,EAAA;AACA,cAAA;;AAGF,CAAAC;AACE,WAAA;AACA,eAAA;AACA,mBAAA;AACA,SAAA;AACA,UAAA;AACA,UAAA;AACA,iBAAA,IAAA;AACA,cAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,SAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,UAAA;AACA,mBAAA,KAAA;AACA,cAAA,WAAA,IAAA;;AAEA,CAdFA,iCAcE;AACE,cAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;;AAMJ,CAAAC;AACE,WAAA;AACA,kBAAA;AACA,OAAA;;AAGF,CAAAC;AACE,WAAA;AACA,cAAA,IAAA;AACA,iBAAA,IAAA;AACA,WAAA;AACA,OAAA;;AAGF,CAAAC;AACE,QAAA;AACA,WAAA,OAAA;AACA,aAAA;AACA,eAAA;AACA,kBAAA;AACA,UAAA;AACA,iBAAA,KAAA,IAAA,aAAA,EAAA;AACA,cAAA;AACA,SAAA,IAAA;AACA,UAAA;AACA,cAAA,WAAA,IAAA,kBAAA,EAAA,MAAA,IAAA;;AAEA,CAbFA,uBAaE,MAAA,KAAA,CAAAC;AACE,SAAA,IAAA;;AAIJ,CALEA;AAMA,cA1La,IAAA,oBAAA,EAAA,IAAA;AA2Lb,SAAA;AACA,cAAA,EAAA,IAAA,IAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;;AAGF,CAAAC;AACE,YAAA;AACA,WAAA;AACA,eAAA;;AAGF,CAAAC;AACE,YAAA;AACA,QAAA;AACA,aAAA,IAAA;AACA;IAAA,SAAA;IAAA,WAAA;IAAA,UAAA;IAAA;AACA,SAAA,IAAA;AACA,kBAAA;AACA,eAAA;;AAGF,CAAAC;AACE,SAAA;AACA,cAAA;AACA,WAAA,OAAA;AACA,UAAA,IAAA,MAAA,IAAA;AACA,iBAAA,IAAA;AACA,aAAA,IAAA;AACA;IAAA,SAAA;IAAA,WAAA;IAAA,UAAA;IAAA;AACA,SAAA,IAAA;AACA,cAAA,IAAA;AACA,WAAA;AACA,cAAA;AACA,cAAA,aAAA,IAAA,kBAAA,EAAA,WAAA,IAAA;;AAEA,CAdFA,yBAcE;AACE,gBA9NW,IAAA,oBAAA,EAAA,IAAA;AA+NX,cAAA,EAAA,EAAA,EAAA,IAAA,IAAA,yBAAA,EAAA,IAAA;;AAIJ,CAAAC;AACE,YAAA;AACA,SAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AACA,SAAA;AACA,UAAA;AACA,UAAA;AACA,iBAAA,IAAA;AACA,cAAA;AACA,SAAA,IAAA;AACA,UAAA;AACA,cAAA,WAAA,IAAA,kBAAA,EAAA,MAAA,IAAA;;AAEA,CAfFA,gCAeE;AACE,cAAA,IAAA;AACA,SAAA,IAAA;;AAOJ,CAAAC;AACE,WAAA;AACA,eAAA;AACA,OAAA;AACA,eAAA;AACA,cAAA,IAAA,MAAA,IAAA;AACA,YAAA;;AAGF,CAAAC;AACE,aAAA;AACA,eAAA;AACA,kBAAA;AACA,kBAAA;AACA,SAAA,IAAA;AACA,eAAA;;AAGF,CAAAC;AACE,WAAA;AACA,OAAA;AACA,aAAA;AACA,YAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;AACA,iBAAA;AACA,UAAA,MAAA,MAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA;AACA,UAAA;AACA,WAAA;AACA,eAAA;;","names":["colorPicker","topRow","discWrapper","disc","dot","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputWrapper","inputAddon","input","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch"]}
1
+ {"version":3,"sources":["../../../src/styles/tokens.scss","../../../src/components/ColorPicker/ColorPicker.module.scss"],"sourcesContent":["@use \"sass:color\";\n\n@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap\");\n\n// Accent di default — cambia qui per aggiornare tutta la libreria\n$accent: #3b82f6;\n\n:root {\n // Accent scale — derivata da $accent a compile time\n --accent: #{$accent};\n --accent-dot: #{color.scale($accent, $lightness: 12%)};\n --accent-track: #{$accent};\n --accent-ring: #{$accent};\n --accent-glow: #{color.change($accent, $alpha: 0.3)};\n --accent-light: #{color.scale($accent, $lightness: 45%, $saturation: -20%)};\n\n // Primary scale (mantenuta per retrocompatibilità con Button, Badge, Input)\n --color-primary-50: #{color.scale($accent, $lightness: 49%, $saturation: -30%)};\n --color-primary-100: #{color.scale($accent, $lightness: 42%, $saturation: -15%)};\n --color-primary-400: #{color.scale($accent, $lightness: 12%)};\n --color-primary-500: #{$accent};\n --color-primary-600: #{color.scale($accent, $lightness: -10%)};\n --color-primary-700: #{color.scale($accent, $lightness: -20%)};\n\n // Neutral\n --color-neutral-0: #ffffff;\n --color-neutral-100: #f3f4f6;\n --color-neutral-200: #e5e7eb;\n --color-neutral-400: #9ca3af;\n --color-neutral-600: #4b5563;\n --color-neutral-900: #111827;\n\n // Semantic\n --color-success-500: #22c55e;\n --color-success-600: #16a34a;\n --color-danger-500: #ef4444;\n --color-danger-600: #dc2626;\n --color-warning-500: #f59e0b;\n --color-warning-600: #d97706;\n\n // Typography\n --font-family-base: \"Inter\", system-ui, -apple-system, sans-serif;\n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-md: 1rem;\n --font-size-lg: 1.125rem;\n\n // Spacing\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-3: 0.75rem;\n --spacing-4: 1rem;\n\n // Radius\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n\n // Shadows\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n\n // Transitions\n --transition-fast: 150ms ease;\n\n // Surface (background di card/panel)\n --color-surface: #ffffff;\n --color-surface-elevated: #ffffff;\n}\n\n// ─── Dark theme ────────────────────────────────────────────────────────────────\n// Applicato via data-theme=\"dark\" sull'elemento root (gestito da Storybook decorator\n// e dall'app consumer). I componenti non devono fare nulla di speciale: basta che\n// usino i token var() e riceveranno automaticamente i valori dark.\n\n[data-theme=\"dark\"] {\n // Neutral (scala invertita)\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n\n // Surface\n --color-surface: #1e293b;\n --color-surface-elevated: #273549;\n\n // Primary scale dark (per il default accent blu — le sfumature chiare diventano scure)\n --color-primary-50: #172554;\n --color-primary-100: #1e3a8a;\n // 400 / 500 / 600 / 700 rimangono invariati (abbastanza saturi su bg scuro)\n\n // Accent light: variante scura\n --accent-light: #172554;\n\n // Shadows (più forti su bg scuro)\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n","@use \"../../styles/tokens\" as *;\n\n$accent-base: var(--colorpicker-accent, var(--accent));\n$accent-ring: var(--colorpicker-accent-ring, var(--accent-ring));\n$accent-glow: var(--colorpicker-accent-glow, var(--accent-glow));\n$accent-light: var(--colorpicker-accent-light, var(--accent-light));\n\n$disc: 200px;\n$slider-w: 20px;\n$thumb-size: 20px;\n$gap: 0.5rem;\n\n// ─── Dark theme scoped sull'elemento (prop theme=\"dark\") ──────────────────────\n// Sovrascrive i token globali localmente — non dipende dal data-theme dell'app.\n\n.colorPicker[data-theme=\"dark\"] {\n --color-neutral-0: #0f172a;\n --color-neutral-100: #1e293b;\n --color-neutral-200: #334155;\n --color-neutral-400: #94a3b8;\n --color-neutral-600: #cbd5e1;\n --color-neutral-900: #f8fafc;\n --color-surface: #1e293b;\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.5), 0 2px 4px -2px rgb(0 0 0 / 0.4);\n}\n\n// ─── Card ──────────────────────────────────────────────────────────────────────\n\n.colorPicker {\n display: inline-flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem;\n background: var(--color-surface);\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md), 0 0 0 1px rgba(0,0,0,0.04);\n font-family: var(--font-family-base);\n width: calc(#{$disc} + 2rem); // disc + card padding (1rem × 2 sides)\n box-sizing: border-box;\n user-select: none;\n}\n\n// ─── Disc + L slider row ───────────────────────────────────────────────────────\n\n.topRow {\n display: flex;\n justify-content: center;\n}\n\n.discWrapper {\n position: relative;\n width: $disc;\n height: $disc;\n flex-shrink: 0;\n border-radius: 50%;\n box-shadow: 0 0 0 1.5px var(--color-neutral-200);\n}\n\n.disc {\n display: block;\n width: $disc;\n height: $disc;\n cursor: crosshair;\n border-radius: 50%;\n}\n\n.dot {\n position: absolute;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid;\n transform: translate(-50%, -50%);\n pointer-events: none;\n box-shadow: 0 0 0 1.5px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2);\n background: transparent;\n}\n\n// ─── Lightness slider (horizontal) ────────────────────────────────────────────\n\n.lSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.lThumb {\n position: absolute;\n top: 50%;\n width: $thumb-size;\n height: $thumb-size;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n// ─── Alpha slider (horizontal) ────────────────────────────────────────────────\n\n.alphaSlider {\n position: relative;\n height: 10px;\n border-radius: 5px;\n cursor: ew-resize;\n margin-block: 5px;\n background-color: var(--color-neutral-200);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n\n.alphaThumb {\n position: absolute;\n top: 50%;\n width: $thumb-size;\n height: $thumb-size;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border: 2px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);\n pointer-events: none;\n}\n\n// ─── Preview swatch ────────────────────────────────────────────────────────────\n\n.previewSwatch {\n width: 100%;\n height: 48px;\n border-radius: var(--radius-md);\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0 0.5rem;\n box-sizing: border-box;\n}\n\n.eyedropperBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--radius-sm);\n background: rgba(255, 255, 255, 0.25);\n color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n backdrop-filter: blur(4px);\n transition: background var(--transition-fast);\n\n &:hover {\n background: rgba(255, 255, 255, 0.4);\n }\n}\n\n// ─── Inputs ────────────────────────────────────────────────────────────────────\n\n.inputSection {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.tabs {\n display: flex;\n background: var(--color-neutral-100);\n border-radius: var(--radius-sm);\n padding: 2px;\n gap: 2px;\n}\n\n.tab {\n flex: 1;\n padding: 0.2rem 0;\n font-size: 0.65rem;\n font-weight: 600;\n letter-spacing: 0.04em;\n border: none;\n border-radius: calc(var(--radius-sm) - 1px);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n\n &:hover:not(.tabActive) {\n color: var(--color-neutral-600);\n }\n}\n\n.tabActive {\n background: $accent-base;\n color: #fff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n.inputWrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.inputAddon {\n position: absolute;\n left: 0.5rem;\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-400);\n pointer-events: none;\n line-height: 1;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4rem 2rem; // symmetric: room for # on left and copy icon on right\n border: 1px solid var(--color-neutral-200);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: \"SF Mono\", \"Fira Code\", \"Consolas\", monospace;\n color: var(--color-neutral-900);\n background: var(--color-neutral-0);\n outline: none;\n text-align: center;\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n\n &:focus {\n border-color: $accent-base;\n box-shadow: 0 0 0 2px $accent-glow;\n }\n}\n\n.inputCopyBtn {\n position: absolute;\n right: 0.35rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n border: none;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--color-neutral-400);\n cursor: pointer;\n transition: background var(--transition-fast), color var(--transition-fast);\n\n &:hover {\n background: var(--color-neutral-100);\n color: var(--color-neutral-900);\n }\n}\n\n\n// ─── Recent colors ─────────────────────────────────────────────────────────────\n\n.recents {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding-top: 0.25rem;\n border-top: 1px solid var(--color-neutral-100);\n overflow: hidden;\n}\n\n.recentsLabel {\n font-size: 0.6rem;\n font-weight: 600;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--color-neutral-400);\n flex-shrink: 0;\n}\n\n.swatches {\n display: flex;\n gap: 0.35rem;\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.recentSwatch {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 1.5px solid rgba(0, 0, 0, 0.1);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n"],"mappings":"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","names":["colorPicker","topRow","discWrapper","disc","dot","lSlider","lThumb","alphaSlider","alphaThumb","previewSwatch","eyedropperBtn","inputSection","tabs","tab","tabActive","inputWrapper","inputAddon","input","inputCopyBtn","recents","recentsLabel","swatches","recentSwatch"]}
@@ -29,6 +29,7 @@ interface ColorPickerProps {
29
29
  recentColors?: string[];
30
30
  accent?: string;
31
31
  className?: string;
32
+ theme?: "light" | "dark";
32
33
  }
33
34
  declare const ColorPicker: React.FC<ColorPickerProps>;
34
35
 
@@ -29,6 +29,7 @@ interface ColorPickerProps {
29
29
  recentColors?: string[];
30
30
  accent?: string;
31
31
  className?: string;
32
+ theme?: "light" | "dark";
32
33
  }
33
34
  declare const ColorPicker: React.FC<ColorPickerProps>;
34
35
 
@@ -221,7 +221,8 @@ var ColorPicker = ({
221
221
  showAlpha = true,
222
222
  recentColors = [],
223
223
  accent,
224
- className
224
+ className,
225
+ theme
225
226
  }) => {
226
227
  const init = parseInitial(value);
227
228
  const [h, setH] = useState(init[0]);
@@ -400,6 +401,7 @@ var ColorPicker = ({
400
401
  "div",
401
402
  {
402
403
  className: [ColorPicker_module_default.colorPicker, className ?? ""].filter(Boolean).join(" "),
404
+ "data-theme": theme,
403
405
  style: accentVars,
404
406
  children: [
405
407
  /* @__PURE__ */ jsx("div", { className: ColorPicker_module_default.topRow, children: /* @__PURE__ */ jsxs("div", { className: ColorPicker_module_default.discWrapper, children: [