pentatrion-design 1.3.4 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 1.3.6
2
+
3
+ ### Patch Changes
4
+
5
+ - d04c163: slugfield add placeholder
6
+
7
+ ## 1.3.5
8
+
9
+ ### Patch Changes
10
+
11
+ - ed057f1: color better management of dark mode computation
12
+
1
13
  ## 1.3.4
2
14
 
3
15
  ### Patch Changes
@@ -7,7 +7,7 @@ import { n as useTranslate } from "./i18n-B57GZqP3.mjs";
7
7
  import { t as Field } from "./Field-DZmC5a1D.mjs";
8
8
  import "./field-CyUkOve7.mjs";
9
9
  import { t as Tabs } from "./tabs-Bve-fwd0.mjs";
10
- import "./text-DrWw7Gon.mjs";
10
+ import "./text-B73vztfB.mjs";
11
11
  import { c } from "react/compiler-runtime";
12
12
  import { useImperativeHandle, useRef, useState } from "react";
13
13
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -77,14 +77,49 @@ function isColorAvailable(colorName, palette = defaultBrandPalette) {
77
77
  }
78
78
  /**
79
79
  * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`
80
- * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —
80
+ * pour variant > 0, vers un gris neutre foncé (`#323232`, pas `black` —
81
81
  * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.
82
82
  * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix
83
83
  * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).
84
+ * `#323232` est fixé en dur (pas `var(--color-gray-7)`) pour que le résultat
85
+ * ne s'inverse pas silencieusement sous `.dark`, où ce token désigne un gris clair.
84
86
  */
85
87
  function applyColorVariant(base, variant) {
86
- if (variant === 0) return base;
87
- return variant > 0 ? `color-mix(in oklab, ${base} ${100 - variant}%, white)` : `color-mix(in oklab, ${base} ${100 - Math.abs(variant)}%, ${isGrayScale(base) ? "black" : "var(--color-gray-7)"})`;
88
+ const mix = resolveVariantMix(base, variant);
89
+ if (!mix) return base;
90
+ return `color-mix(in oklab, ${base} ${mix.baseWeight}%, ${mix.target})`;
91
+ }
92
+ function resolveVariantMix(base, variant) {
93
+ if (variant === 0) return null;
94
+ else if (variant > 0) return {
95
+ target: "white",
96
+ baseWeight: 100 - variant
97
+ };
98
+ return {
99
+ target: isGrayScale(base) ? "black" : "#323232",
100
+ baseWeight: 100 - Math.abs(variant)
101
+ };
102
+ }
103
+ function hexLuminance(hex) {
104
+ const normalized = hex.replace("#", "");
105
+ const full = normalized.length === 3 ? normalized.split("").map((c) => c + c).join("") : normalized;
106
+ if (full.length !== 6) return 1;
107
+ const r = parseInt(full.slice(0, 2), 16);
108
+ const g = parseInt(full.slice(2, 4), 16);
109
+ const b = parseInt(full.slice(4, 6), 16);
110
+ return (.299 * r + .587 * g + .114 * b) / 255;
111
+ }
112
+ const TARGET_LUMINANCE = {
113
+ white: 1,
114
+ black: 0,
115
+ "#323232": hexLuminance("#323232")
116
+ };
117
+ function isColorDark(color, palette = defaultBrandPalette) {
118
+ if (color.type === "raw") return hexLuminance(color.hex) < .5;
119
+ const base = color.name === "gray" ? "#808080" : palette[color.name] ?? "#808080";
120
+ const mix = resolveVariantMix(base, color.variant);
121
+ if (!mix) return hexLuminance(base) < .5;
122
+ return (hexLuminance(base) * mix.baseWeight + TARGET_LUMINANCE[mix.target] * (100 - mix.baseWeight)) / 100 < .5;
88
123
  }
89
124
  //#endregion
90
125
  //#region src/components/color/NamedColorGrid.tsx
@@ -1185,6 +1220,6 @@ function ColorPicker(t0) {
1185
1220
  return t36;
1186
1221
  }
1187
1222
  //#endregion
1188
- export { rawColorSchema as _, NamedColorGrid as a, isColorAvailable as c, colorNames as d, colorSchema as f, namedColorSchema as g, defaultNamedColor as h, ColorPreview as i, isGrayScale as l, defaultFallbackColor as m, HarmonyColorGrid as n, applyColorVariant as o, defaultBrandPalette as p, RawColorGrid as r, getColorValue as s, ColorPicker as t, brandPaletteSchema as u };
1223
+ export { namedColorSchema as _, NamedColorGrid as a, isColorAvailable as c, brandPaletteSchema as d, colorNames as f, defaultNamedColor as g, defaultFallbackColor as h, ColorPreview as i, isColorDark as l, defaultBrandPalette as m, HarmonyColorGrid as n, applyColorVariant as o, colorSchema as p, RawColorGrid as r, getColorValue as s, ColorPicker as t, isGrayScale as u, rawColorSchema as v };
1189
1224
 
1190
- //# sourceMappingURL=color-CoLi_qPR.mjs.map
1225
+ //# sourceMappingURL=color-BL19fpla.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-BL19fpla.mjs","names":["z","colorNames","const","ColorName","namedColorSchema","object","type","literal","name","enum","variant","number","NamedColor","infer","defaultNamedColor","defaultFallbackColor","rawColorSchema","hex","string","RawColor","colorSchema","union","Color","ColorInput","input","brandPaletteSchema","primary","secondary","_default","nullable","tertiary","gray","BrandPalette","defaultBrandPalette","Color","ColorName","defaultBrandPalette","defaultFallbackColor","getColorValue","color","palette","fallbackColor","type","hex","base","name","applyColorVariant","variant","isGrayScale","normalized","replace","isShort","length","step","r","parseInt","slice","repeat","g","b","isColorAvailable","colorName","mix","resolveVariantMix","baseWeight","target","Math","abs","hexLuminance","full","split","map","c","join","TARGET_LUMINANCE","Record","white","black","isColorDark","luminance","clsx","Color","defaultBrandPalette","BrandPalette","NamedColor","colorNames","applyColorVariant","getColorValue","isColorAvailable","useTranslate","Props","palette","value","onChange","variants","colorLabels","Record","primary","secondary","tertiary","gray","variantMagnitude","getVariantSteps","Array","isArray","min","max","from","length","_","i","Math","round","colorButtonStyle","base","selected","NamedColorGrid","t0","$","_c","t1","t2","undefined","t","t3","name","variant","t4","filter","map","name_0","steps","c","type","v","backgroundColor","t5","t6","variant_0","c_0","t7","t8","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","Color","defaultBrandPalette","BrandPalette","getColorValue","ThemeColor","useTranslate","ColorPreviewProps","Omit","withRipple","value","color","label","palette","showValue","className","ref","HTMLButtonElement","ColorPreview","t0","$","_c","rest","t1","t2","t3","t4","unknownColor","undefined","t","t5","type","hex","t6","name","valueLabel","buttonRef","t7","Symbol","for","current","ripples","t8","t9","t10","t11","t12","backgroundColor","t13","t14","t15","t16","t17","t18","rawColorsHex","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","neutral","slate","gray","zinc","stone","mauve","olive","mist","taupe","const","rawColorsHex","colorByGroups","Object","entries","filter","name","colorGroup","includes","map","colors","clsx","colorByGroups","RawColor","Props","value","onChange","RawColorGrid","t0","$","_c","t1","hex","map","t2","name","colors","t3","colorNumber","colorCode","parseInt","backgroundColor","type","clsx","colord","extend","harmoniesPlugin","HarmonyType","RawColor","colorButtonStyle","useTranslate","harmonyLabels","Record","complementary","analogous","triadic","rectangle","tetradic","harmonyTypes","Object","keys","Props","refColor","value","onChange","HarmonyColorGrid","t0","$","_c","t","t1","t2","hex","baseColor","map","harmonyType","harmonies","harmonyColor","index","toHex","base","selected","backgroundColor","type","t3","Modal","ModalContent","ModalFooter","useState","Field","FieldProps","NamedColorGrid","Button","ColorPreview","Color","BrandPalette","RawColor","Tabs","HexColorInput","HexColorPicker","inputConfig","clsx","useTranslate","RawColorGrid","HarmonyColorGrid","Props","Omit","palette","value","refColor","onChange","allowInherit","variants","ColorPicker","t0","$","_c","rest","t1","undefined","t","isOpen","setIsOpen","tempValue","setTempValue","tabId","setTabId","type","t2","handleSubmit","t3","handleInherit","t4","id","title","content","t5","t6","t7","t8","t9","t10","t11","hex","t12","Symbol","for","t13","t14","container","t15","t16","hex_0","t17","input","t18","t19","t20","tabs","t21","t22","t23","t24","modalKeepOpen","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36"],"sources":["../src/components/color/config.ts","../src/components/color/util.ts","../src/components/color/NamedColorGrid.tsx","../src/components/color/ColorPreview.tsx","../src/lib/colors.generated.ts","../src/lib/color.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx","../src/components/color/ColorPicker.tsx"],"sourcesContent":["import { z } from \"zod/v4-mini\";\n\nexport const colorNames = [\"primary\", \"secondary\", \"tertiary\", \"gray\"] as const;\nexport type ColorName = (typeof colorNames)[number];\n\nexport const namedColorSchema = z.object({\n type: z.literal(\"named\"),\n name: z.enum(colorNames),\n variant: z.number(), // -100, 100\n});\nexport type NamedColor = z.infer<typeof namedColorSchema>;\n\nexport const defaultNamedColor: NamedColor = { name: \"gray\", variant: -100, type: \"named\" };\nexport const defaultFallbackColor = \"#000000\";\n\nexport const rawColorSchema = z.object({\n type: z.literal(\"raw\"),\n hex: z.string(),\n});\nexport type RawColor = z.infer<typeof rawColorSchema>;\n\nexport const colorSchema = z.union([namedColorSchema, rawColorSchema]);\nexport type Color = z.infer<typeof colorSchema>;\n\nexport type ColorInput = z.input<typeof colorSchema>;\n\nexport const brandPaletteSchema = z.object({\n primary: z.string(),\n secondary: z._default(z.nullable(z.string()), null),\n tertiary: z._default(z.nullable(z.string()), null),\n gray: z.string(),\n});\nexport type BrandPalette = z.infer<typeof brandPaletteSchema>;\n\nexport const defaultBrandPalette: BrandPalette = {\n primary: \"#ffca0a\",\n secondary: null,\n tertiary: null,\n gray: \"#808080\",\n};\n","import { Color, ColorName, defaultBrandPalette, defaultFallbackColor } from \"./config\";\n\nexport function getColorValue(\n color: Color | null,\n palette = defaultBrandPalette,\n fallbackColor = defaultFallbackColor,\n): string {\n if (!color) {\n return fallbackColor;\n }\n\n if (color.type === \"raw\") {\n return color.hex;\n }\n\n const base = color.name === \"gray\" ? \"#808080\" : (palette[color.name] ?? \"#808080\");\n\n return applyColorVariant(base ?? \"#808080\", color.variant);\n}\n\n/**\n * Détermine si une couleur hexadécimale (#rgb, #rgba, #rrggbb, #rrggbbaa)\n * est un niveau de gris, c'est-à-dire que ses composantes R, G et B sont égales.\n */\nexport function isGrayScale(hex: string): boolean {\n const normalized = hex.replace(\"#\", \"\");\n const isShort = normalized.length === 3 || normalized.length === 4;\n const step = isShort ? 1 : 2;\n\n const r = parseInt(normalized.slice(0, step).repeat(isShort ? 2 : 1), 16);\n const g = parseInt(normalized.slice(step, step * 2).repeat(isShort ? 2 : 1), 16);\n const b = parseInt(normalized.slice(step * 2, step * 3).repeat(isShort ? 2 : 1), 16);\n\n return r === g && g === b;\n}\n\nexport function isColorAvailable(colorName: ColorName, palette = defaultBrandPalette): boolean {\n if (colorName === \"gray\") {\n return true;\n }\n return !!palette[colorName];\n}\n\n/**\n * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`\n * pour variant > 0, vers un gris neutre foncé (`#323232`, pas `black` —\n * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.\n * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix\n * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).\n * `#323232` est fixé en dur (pas `var(--color-gray-7)`) pour que le résultat\n * ne s'inverse pas silencieusement sous `.dark`, où ce token désigne un gris clair.\n */\nexport function applyColorVariant(base: string, variant: number): string {\n const mix = resolveVariantMix(base, variant);\n if (!mix) {\n return base;\n }\n\n return `color-mix(in oklab, ${base} ${mix.baseWeight}%, ${mix.target})`;\n}\n\nfunction resolveVariantMix(\n base: string,\n variant: number,\n): { target: \"white\" | \"black\" | \"#323232\"; baseWeight: number } | null {\n if (variant === 0) {\n return null;\n } else if (variant > 0) {\n return { target: \"white\", baseWeight: 100 - variant };\n }\n return { target: isGrayScale(base) ? \"black\" : \"#323232\", baseWeight: 100 - Math.abs(variant) };\n}\n\nfunction hexLuminance(hex: string): number {\n const normalized = hex.replace(\"#\", \"\");\n const full =\n normalized.length === 3\n ? normalized\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n : normalized;\n\n if (full.length !== 6) {\n return 1;\n }\n\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n\n return (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n}\n\nconst TARGET_LUMINANCE: Record<\"white\" | \"black\" | \"#323232\", number> = {\n white: 1,\n black: 0,\n \"#323232\": hexLuminance(\"#323232\"),\n};\n\nexport function isColorDark(color: Color, palette = defaultBrandPalette): boolean {\n if (color.type === \"raw\") {\n return hexLuminance(color.hex) < 0.5;\n }\n\n const base = color.name === \"gray\" ? \"#808080\" : (palette[color.name] ?? \"#808080\");\n const mix = resolveVariantMix(base, color.variant);\n\n if (!mix) {\n return hexLuminance(base) < 0.5;\n }\n\n // la luminance étant linéaire en r/g/b, la luminance du mélange = mélange des luminances\n const luminance =\n (hexLuminance(base) * mix.baseWeight + TARGET_LUMINANCE[mix.target] * (100 - mix.baseWeight)) /\n 100;\n\n return luminance < 0.5;\n}\n","import clsx from \"clsx\";\nimport { Color, defaultBrandPalette, BrandPalette, NamedColor, colorNames } from \"./config\";\nimport { applyColorVariant, getColorValue, isColorAvailable } from \"./util\";\nimport { useTranslate } from \"../i18n\";\n\ninterface Props {\n palette?: BrandPalette;\n value: NamedColor | null;\n onChange: (value: NamedColor) => void;\n variants?: number | number[];\n}\n\nconst colorLabels: Record<(typeof colorNames)[number], string> = {\n primary: \"Principale\",\n secondary: \"Secondaire\",\n tertiary: \"Tertiaire\",\n gray: \"Niveau de gris\",\n};\n// bornes à -80/80 plutôt que -100/100 : à 100% la base disparaît complètement\n// du color-mix, le swatch ne reproduit plus que du blanc/gris pur, redondant\n// avec les entrées white/black déjà présentes dans la grille.\nconst variantMagnitude = 80;\n\nfunction getVariantSteps(variants: number | number[]): number[] {\n if (Array.isArray(variants)) {\n return variants;\n }\n const min = -variantMagnitude;\n const max = variantMagnitude;\n if (variants <= 1) {\n return [0];\n }\n return Array.from({ length: variants }, (_, i) =>\n Math.round(min + (i * (max - min)) / (variants - 1)),\n );\n}\n\nexport const colorButtonStyle = {\n base: \"cursor-pointer hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125 first-of-type:rounded-l-md last-of-type:rounded-r-md\",\n selected: \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n};\n\nexport function NamedColorGrid({\n palette = defaultBrandPalette,\n value,\n onChange,\n variants = 9,\n}: Props) {\n const t = useTranslate();\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {colorNames\n .filter((name) => isColorAvailable(name, palette))\n .map((name) => {\n // une seule vignette pour black : color-mix(black, black) est un no-op,\n // toute une rampe serait visuellement identique\n const steps = getVariantSteps(variants);\n\n return (\n <div key={name}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorNames.${name}`) ?? colorLabels[name]}\n </div>\n <div className=\"flex\">\n {steps.map((variant) => {\n const c: Color = { type: \"named\", name, variant };\n const v = getColorValue(c, palette);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`${c.name} (${variant}%)`}\n className={clsx(\n \"h-8 flex-1\",\n colorButtonStyle.base,\n value?.name === name &&\n value?.variant === variant &&\n colorButtonStyle.selected,\n )}\n style={{ backgroundColor: v }}\n onClick={() => onChange(c)}\n />\n );\n })}\n </div>\n </div>\n );\n })}\n\n <div>\n <div className=\"text-body-xs truncate\">\n {t?.(\"form.values.colorNames.blackAndWhite\") ?? \"Noir & Blanc\"}\n </div>\n <div className=\"flex\">\n {[-100, 100].map((variant) => {\n const c = applyColorVariant(\"#808080\", variant);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`gray (${variant}%)`}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.name === \"gray\" && value?.variant === variant && colorButtonStyle.selected,\n variant === 100 && \"border border-gray-2\",\n )}\n style={{ backgroundColor: c }}\n onClick={() => onChange({ type: \"named\", name: \"gray\", variant })}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"pentatrion-design/hooks\";\nimport { Color, defaultBrandPalette, BrandPalette } from \"./config\";\nimport { getColorValue } from \"./util\";\nimport { ThemeColor } from \"../../types\";\nimport { useTranslate } from \"../i18n\";\n\nexport interface ColorPreviewProps extends Omit<ComponentProps<\"button\">, \"color\" | \"value\"> {\n withRipple?: boolean;\n\n value?: Color | null | string;\n color?: ThemeColor;\n label?: string;\n palette?: BrandPalette;\n showValue?: boolean;\n className?: string;\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport function ColorPreview({\n value: unknownColor,\n withRipple = true,\n color = \"yellow\",\n label,\n showValue = false,\n palette = defaultBrandPalette,\n className,\n ref,\n ...rest\n}: ColorPreviewProps) {\n const t = useTranslate();\n const value: Color | null =\n typeof unknownColor === \"string\" ? { type: \"raw\", hex: unknownColor } : (unknownColor ?? null);\n\n const valueLabel =\n label ??\n (value\n ? showValue\n ? value.type === \"raw\"\n ? value.hex\n : value.name\n : null\n : (t?.(\"form.values.color.inherit\") ?? \"Par défault\"));\n\n const buttonRef = useRef<HTMLButtonElement>(null!);\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n ref,\n () => buttonRef.current,\n );\n\n const ripples = useRipple(buttonRef);\n\n return (\n <button\n ref={buttonRef}\n data-color={color}\n className=\"p8n-input-text group relative flex h-8 cursor-pointer overflow-clip rounded-2xl p-1 -outline-offset-1 active:translate-y-px\"\n {...rest}\n >\n {withRipple && ripples}\n <span\n className={clsx(\n \"absolute inset-1 flex items-center justify-center rounded-2xl transition-transform group-hover:scale-150\",\n valueLabel === null && \"min-w-12\",\n className,\n )}\n style={{ backgroundColor: value ? getColorValue(value, palette) : undefined }}\n ></span>\n <span\n className={clsx(\n \"relative flex h-full items-center justify-center px-2 rounded-2xl\",\n valueLabel === null && \"min-w-12\",\n className,\n !value && \"border border-dashed border-gray-3\",\n )}\n >\n {valueLabel}\n </span>\n </button>\n );\n}\n","// généré par scripts/generate-colors.ts à partir de tailwindcss/colors (oklch -> hex via culori)\nexport const rawColorsHex = {\n red: {\n \"50\": \"#fef2f2\",\n \"100\": \"#ffe2e2\",\n \"200\": \"#ffc9c9\",\n \"300\": \"#ffa2a2\",\n \"400\": \"#ff6467\",\n \"500\": \"#fb2c36\",\n \"600\": \"#e7000b\",\n \"700\": \"#c10007\",\n \"800\": \"#9f0712\",\n \"900\": \"#82181a\",\n \"950\": \"#460809\",\n },\n orange: {\n \"50\": \"#fff7ed\",\n \"100\": \"#ffedd4\",\n \"200\": \"#ffd6a7\",\n \"300\": \"#ffb86a\",\n \"400\": \"#ff8904\",\n \"500\": \"#ff6900\",\n \"600\": \"#f54900\",\n \"700\": \"#ca3500\",\n \"800\": \"#9f2d00\",\n \"900\": \"#7e2a0c\",\n \"950\": \"#441306\",\n },\n amber: {\n \"50\": \"#fffbeb\",\n \"100\": \"#fef3c6\",\n \"200\": \"#fee685\",\n \"300\": \"#ffd230\",\n \"400\": \"#ffb900\",\n \"500\": \"#fe9a00\",\n \"600\": \"#e17100\",\n \"700\": \"#bb4d00\",\n \"800\": \"#973c00\",\n \"900\": \"#7b3306\",\n \"950\": \"#461901\",\n },\n yellow: {\n \"50\": \"#fefce8\",\n \"100\": \"#fef9c2\",\n \"200\": \"#fff085\",\n \"300\": \"#ffdf20\",\n \"400\": \"#fdc700\",\n \"500\": \"#f0b100\",\n \"600\": \"#d08700\",\n \"700\": \"#a65f00\",\n \"800\": \"#894b00\",\n \"900\": \"#733e0a\",\n \"950\": \"#432004\",\n },\n lime: {\n \"50\": \"#f7fee7\",\n \"100\": \"#ecfcca\",\n \"200\": \"#d8f999\",\n \"300\": \"#bbf451\",\n \"400\": \"#9ae600\",\n \"500\": \"#7ccf00\",\n \"600\": \"#5ea500\",\n \"700\": \"#497d00\",\n \"800\": \"#3c6300\",\n \"900\": \"#35530e\",\n \"950\": \"#192e03\",\n },\n green: {\n \"50\": \"#f0fdf4\",\n \"100\": \"#dcfce7\",\n \"200\": \"#b9f8cf\",\n \"300\": \"#7bf1a8\",\n \"400\": \"#05df72\",\n \"500\": \"#00c950\",\n \"600\": \"#00a63e\",\n \"700\": \"#008236\",\n \"800\": \"#016630\",\n \"900\": \"#0d542b\",\n \"950\": \"#032e15\",\n },\n emerald: {\n \"50\": \"#ecfdf5\",\n \"100\": \"#d0fae5\",\n \"200\": \"#a4f4cf\",\n \"300\": \"#5ee9b5\",\n \"400\": \"#00d492\",\n \"500\": \"#00bc7d\",\n \"600\": \"#009966\",\n \"700\": \"#007a55\",\n \"800\": \"#006045\",\n \"900\": \"#004f3b\",\n \"950\": \"#002c22\",\n },\n teal: {\n \"50\": \"#f0fdfa\",\n \"100\": \"#cbfbf1\",\n \"200\": \"#96f7e4\",\n \"300\": \"#46ecd5\",\n \"400\": \"#00d5be\",\n \"500\": \"#00bba7\",\n \"600\": \"#009689\",\n \"700\": \"#00786f\",\n \"800\": \"#005f5a\",\n \"900\": \"#0b4f4a\",\n \"950\": \"#022f2e\",\n },\n cyan: {\n \"50\": \"#ecfeff\",\n \"100\": \"#cefafe\",\n \"200\": \"#a2f4fd\",\n \"300\": \"#53eafd\",\n \"400\": \"#00d3f2\",\n \"500\": \"#00b8db\",\n \"600\": \"#0092b8\",\n \"700\": \"#007595\",\n \"800\": \"#005f78\",\n \"900\": \"#104e64\",\n \"950\": \"#053345\",\n },\n sky: {\n \"50\": \"#f0f9ff\",\n \"100\": \"#dff2fe\",\n \"200\": \"#b8e6fe\",\n \"300\": \"#74d4ff\",\n \"400\": \"#00bcff\",\n \"500\": \"#00a6f4\",\n \"600\": \"#0084d1\",\n \"700\": \"#0069a8\",\n \"800\": \"#00598a\",\n \"900\": \"#024a70\",\n \"950\": \"#052f4a\",\n },\n blue: {\n \"50\": \"#eff6ff\",\n \"100\": \"#dbeafe\",\n \"200\": \"#bedbff\",\n \"300\": \"#8ec5ff\",\n \"400\": \"#51a2ff\",\n \"500\": \"#2b7fff\",\n \"600\": \"#155dfc\",\n \"700\": \"#1447e6\",\n \"800\": \"#193cb8\",\n \"900\": \"#1c398e\",\n \"950\": \"#162456\",\n },\n indigo: {\n \"50\": \"#eef2ff\",\n \"100\": \"#e0e7ff\",\n \"200\": \"#c6d2ff\",\n \"300\": \"#a3b3ff\",\n \"400\": \"#7c86ff\",\n \"500\": \"#615fff\",\n \"600\": \"#4f39f6\",\n \"700\": \"#432dd7\",\n \"800\": \"#372aac\",\n \"900\": \"#312c85\",\n \"950\": \"#1e1a4d\",\n },\n violet: {\n \"50\": \"#f5f3ff\",\n \"100\": \"#ede9fe\",\n \"200\": \"#ddd6ff\",\n \"300\": \"#c4b4ff\",\n \"400\": \"#a684ff\",\n \"500\": \"#8e51ff\",\n \"600\": \"#7f22fe\",\n \"700\": \"#7008e7\",\n \"800\": \"#5d0ec0\",\n \"900\": \"#4d179a\",\n \"950\": \"#2f0d68\",\n },\n purple: {\n \"50\": \"#faf5ff\",\n \"100\": \"#f3e8ff\",\n \"200\": \"#e9d4ff\",\n \"300\": \"#dab2ff\",\n \"400\": \"#c27aff\",\n \"500\": \"#ad46ff\",\n \"600\": \"#9810fa\",\n \"700\": \"#8200db\",\n \"800\": \"#6e11b0\",\n \"900\": \"#59168b\",\n \"950\": \"#3c0366\",\n },\n fuchsia: {\n \"50\": \"#fdf4ff\",\n \"100\": \"#fae8ff\",\n \"200\": \"#f6cfff\",\n \"300\": \"#f4a8ff\",\n \"400\": \"#ed6aff\",\n \"500\": \"#e12afb\",\n \"600\": \"#c800de\",\n \"700\": \"#a800b7\",\n \"800\": \"#8a0194\",\n \"900\": \"#721378\",\n \"950\": \"#4b004f\",\n },\n pink: {\n \"50\": \"#fdf2f8\",\n \"100\": \"#fce7f3\",\n \"200\": \"#fccee8\",\n \"300\": \"#fda5d5\",\n \"400\": \"#fb64b6\",\n \"500\": \"#f6339a\",\n \"600\": \"#e60076\",\n \"700\": \"#c6005c\",\n \"800\": \"#a3004c\",\n \"900\": \"#861043\",\n \"950\": \"#510424\",\n },\n rose: {\n \"50\": \"#fff1f2\",\n \"100\": \"#ffe4e6\",\n \"200\": \"#ffccd3\",\n \"300\": \"#ffa1ad\",\n \"400\": \"#ff637e\",\n \"500\": \"#ff2056\",\n \"600\": \"#ec003f\",\n \"700\": \"#c70036\",\n \"800\": \"#a50036\",\n \"900\": \"#8b0836\",\n \"950\": \"#4d0218\",\n },\n neutral: {\n \"50\": \"#fafafa\",\n \"100\": \"#f5f5f5\",\n \"200\": \"#e5e5e5\",\n \"300\": \"#d4d4d4\",\n \"400\": \"#a1a1a1\",\n \"500\": \"#737373\",\n \"600\": \"#525252\",\n \"700\": \"#404040\",\n \"800\": \"#262626\",\n \"900\": \"#171717\",\n \"950\": \"#0a0a0a\",\n },\n slate: {\n \"50\": \"#f8fafc\",\n \"100\": \"#f1f5f9\",\n \"200\": \"#e2e8f0\",\n \"300\": \"#cad5e2\",\n \"400\": \"#90a1b9\",\n \"500\": \"#62748e\",\n \"600\": \"#45556c\",\n \"700\": \"#314158\",\n \"800\": \"#1d293d\",\n \"900\": \"#0f172b\",\n \"950\": \"#020618\",\n },\n gray: {\n \"50\": \"#f9fafb\",\n \"100\": \"#f3f4f6\",\n \"200\": \"#e5e7eb\",\n \"300\": \"#d1d5dc\",\n \"400\": \"#99a1af\",\n \"500\": \"#6a7282\",\n \"600\": \"#4a5565\",\n \"700\": \"#364153\",\n \"800\": \"#1e2939\",\n \"900\": \"#101828\",\n \"950\": \"#030712\",\n },\n zinc: {\n \"50\": \"#fafafa\",\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#9f9fa9\",\n \"500\": \"#71717b\",\n \"600\": \"#52525c\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n \"950\": \"#09090b\",\n },\n\n stone: {\n \"50\": \"#fafaf9\",\n \"100\": \"#f5f5f4\",\n \"200\": \"#e7e5e4\",\n \"300\": \"#d6d3d1\",\n \"400\": \"#a6a09b\",\n \"500\": \"#79716b\",\n \"600\": \"#57534d\",\n \"700\": \"#44403b\",\n \"800\": \"#292524\",\n \"900\": \"#1c1917\",\n \"950\": \"#0c0a09\",\n },\n mauve: {\n \"50\": \"#fafafa\",\n \"100\": \"#f3f1f3\",\n \"200\": \"#e7e4e7\",\n \"300\": \"#d7d0d7\",\n \"400\": \"#a89ea9\",\n \"500\": \"#79697b\",\n \"600\": \"#594c5b\",\n \"700\": \"#463947\",\n \"800\": \"#2a212c\",\n \"900\": \"#1d161e\",\n \"950\": \"#0c090c\",\n },\n olive: {\n \"50\": \"#fbfbf9\",\n \"100\": \"#f4f4f0\",\n \"200\": \"#e8e8e3\",\n \"300\": \"#d8d8d0\",\n \"400\": \"#abab9c\",\n \"500\": \"#7c7c67\",\n \"600\": \"#5b5b4b\",\n \"700\": \"#474739\",\n \"800\": \"#2b2b22\",\n \"900\": \"#1d1d16\",\n \"950\": \"#0c0c09\",\n },\n mist: {\n \"50\": \"#f9fbfb\",\n \"100\": \"#f1f3f3\",\n \"200\": \"#e3e7e8\",\n \"300\": \"#d0d6d8\",\n \"400\": \"#9ca8ab\",\n \"500\": \"#67787c\",\n \"600\": \"#4b585b\",\n \"700\": \"#394447\",\n \"800\": \"#22292b\",\n \"900\": \"#161b1d\",\n \"950\": \"#090b0c\",\n },\n taupe: {\n \"50\": \"#fbfaf9\",\n \"100\": \"#f3f1f1\",\n \"200\": \"#e8e4e3\",\n \"300\": \"#d8d2d0\",\n \"400\": \"#aba09c\",\n \"500\": \"#7c6d67\",\n \"600\": \"#5b4f4b\",\n \"700\": \"#473c39\",\n \"800\": \"#2b2422\",\n \"900\": \"#1d1816\",\n \"950\": \"#0c0a09\",\n },\n} as const;\n","import { rawColorsHex } from \"./colors.generated\";\n\nexport const colorByGroups = Object.entries(rawColorsHex)\n .filter(\n ([name, colorGroup]) =>\n // blueGray === slate\n // coolGray === gray\n // neutral === trueGray\n // stone === warmGray\n // ski === lightBlue\n typeof colorGroup !== \"string\" &&\n ![\"blueGray\", \"coolGray\", \"trueGray\", \"warmGray\", \"lightBlue\"].includes(name),\n )\n .map(([name, colorGroup]) => ({\n name,\n colors: Object.entries(colorGroup) as [string, string][],\n }));\n","import clsx from \"clsx\";\nimport { colorByGroups } from \"../../lib/color\";\nimport { RawColor } from \"./config\";\n\ninterface Props {\n value: RawColor | null;\n onChange: (value: RawColor) => void;\n}\n\nexport function RawColorGrid({ value, onChange }: Props) {\n return (\n <div className=\"grid-cols-repeat-fill-50 grid gap-1 text-center text-sm p-2\">\n {colorByGroups.map(({ name, colors }) => (\n <div key={name}>\n <div className=\"text-body-xs truncate\">{name}</div>\n <div className=\"grid shadow\">\n {colors.map(([colorNumber, colorCode]) => (\n <button\n key={colorNumber}\n className={clsx(\n \"cursor-pointer first-of-type:rounded-t-md last-of-type:rounded-b-md\",\n parseInt(colorNumber) > 600 ? \"text-white\" : \"text-black\",\n \"hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125\",\n value?.hex === colorCode &&\n \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n )}\n style={{ backgroundColor: colorCode }}\n onClick={() => onChange({ type: \"raw\", hex: colorCode })}\n >\n {colorNumber}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import clsx from \"clsx\";\nimport { colord, extend } from \"colord\";\nimport harmoniesPlugin, { type HarmonyType } from \"colord/plugins/harmonies\";\nimport { RawColor } from \"./config\";\nimport { colorButtonStyle } from \"./NamedColorGrid\";\nimport { useTranslate } from \"../i18n\";\n\nextend([harmoniesPlugin]);\n\nconst harmonyLabels: Record<HarmonyType, string> = {\n complementary: \"Complémentaire\",\n analogous: \"Analogue\",\n triadic: \"Triadique\",\n \"split-complementary\": \"Complémentaire divisée\",\n rectangle: \"Rectangle\",\n tetradic: \"Tétradique\",\n \"double-split-complementary\": \"Double complémentaire divisée\",\n};\n\nconst harmonyTypes = Object.keys(harmonyLabels) as HarmonyType[];\n\ninterface Props {\n refColor: RawColor;\n value: RawColor | null;\n onChange: (value: RawColor) => void;\n}\n\nexport function HarmonyColorGrid({ refColor, value, onChange }: Props) {\n const t = useTranslate();\n const baseColor = colord(refColor.hex);\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {harmonyTypes.map((harmonyType) => (\n <div key={harmonyType}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorHarmony.${harmonyType}`) ?? harmonyLabels[harmonyType]}\n </div>\n <div className=\"flex\">\n {baseColor.harmonies(harmonyType).map((harmonyColor, index) => {\n const hex = harmonyColor.toHex();\n return (\n <button\n key={index}\n type=\"button\"\n title={hex}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.hex === hex && colorButtonStyle.selected,\n )}\n style={{ backgroundColor: hex }}\n onClick={() => onChange({ type: \"raw\", hex })}\n />\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { Modal, ModalContent, ModalFooter } from \"pentatrion-design/modal\";\nimport { useState } from \"react\";\nimport { Field, FieldProps } from \"pentatrion-design/fields/field\";\nimport { NamedColorGrid } from \"./NamedColorGrid\";\nimport { Button } from \"pentatrion-design/button\";\nimport { ColorPreview } from \"./ColorPreview\";\nimport { Color, BrandPalette, RawColor } from \"./config\";\nimport { Tabs } from \"pentatrion-design/tabs\";\nimport { HexColorInput, HexColorPicker } from \"react-colorful\";\nimport { inputConfig } from \"pentatrion-design/fields/text\";\nimport clsx from \"clsx\";\nimport { useTranslate } from \"../i18n\";\nimport { RawColorGrid } from \"./RawColorGrid\";\nimport { HarmonyColorGrid } from \"./HarmonyColorGrid\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n palette?: BrandPalette;\n value: Color | null;\n refColor?: RawColor;\n onChange: (value: Color | null) => void;\n allowInherit?: boolean;\n variants?: number | number[];\n}\n\nexport function ColorPicker({\n palette,\n value,\n refColor,\n onChange,\n variants,\n allowInherit = false,\n ...rest\n}: Props) {\n const t = useTranslate();\n\n const [isOpen, setIsOpen] = useState(false);\n const [tempValue, setTempValue] = useState<null | Color>(null);\n const [tabId, setTabId] = useState<string | number>(\n value?.type === \"raw\" ? \"custom\" : palette ? \"palette\" : \"swatches\",\n );\n\n function handleSubmit() {\n onChange(tempValue);\n setIsOpen(false);\n }\n\n function handleInherit() {\n onChange(null);\n setIsOpen(false);\n }\n\n const tabs = [\n ...(palette\n ? [\n {\n id: \"palette\",\n title: t?.(\"common.brandPalette\") ?? \"Couleurs du thème\",\n content: (\n <NamedColorGrid\n palette={palette}\n value={tempValue?.type === \"named\" ? tempValue : null}\n onChange={setTempValue}\n variants={variants}\n />\n ),\n },\n ]\n : []),\n ...(refColor\n ? [\n {\n id: \"harmony\",\n title: t?.(\"common.harmonyColors\") ?? \"Harmonies\",\n content: (\n <HarmonyColorGrid\n refColor={refColor}\n value={tempValue?.type === \"raw\" ? tempValue : null}\n onChange={setTempValue}\n />\n ),\n },\n ]\n : []),\n {\n id: \"swatches\",\n title: t?.(\"common.colorSwatches\") ?? \"Nuancier\",\n content: (\n <RawColorGrid\n value={tempValue?.type === \"raw\" ? tempValue : null}\n onChange={setTempValue}\n />\n ),\n },\n {\n id: \"custom\",\n title: t?.(\"common.colorCustom\") ?? \"Sur mesure\",\n content: (\n <div className=\"p-2 flex flex-col gap-2 react-colorful-container\">\n <HexColorPicker\n color={tempValue?.type === \"raw\" ? tempValue.hex : undefined}\n onChange={(hex) => {\n setTempValue({ type: \"raw\", hex });\n }}\n />\n <div\n data-color=\"yellow\"\n data-variant=\"normal\"\n className={clsx(inputConfig.container, \"px-2\")}\n >\n <HexColorInput\n className={inputConfig.input}\n prefixed={true}\n color={tempValue?.type === \"raw\" ? tempValue.hex : undefined}\n onChange={(hex) => setTempValue({ type: \"raw\", hex })}\n />\n </div>\n </div>\n ),\n },\n ];\n\n return (\n <>\n <Field {...rest}>\n <ColorPreview\n type=\"button\"\n palette={palette}\n value={value}\n onClick={() => {\n setIsOpen(true);\n setTempValue(value);\n }}\n />\n </Field>\n <Modal\n open={isOpen}\n /* There is not Modal trigger, onOpen is called only by\n * FloatingOverlay to close the modal */\n onOpen={(modalKeepOpen) => !modalKeepOpen && setIsOpen(false)}\n >\n <ModalContent className=\"max-w-140\" zClassName=\"z-modal-overlay\">\n <div>\n <Tabs\n tabs={tabs}\n value={tabId}\n onChange={setTabId}\n contentClassName=\"h-[320px] overflow-auto\"\n className=\"rounded-t-2xl\"\n action={\n <Button icon variant=\"text\" color=\"gray\" onClick={() => setIsOpen(false)}>\n <i className=\"fe-cancel\"></i>\n </Button>\n }\n />\n </div>\n\n <ModalFooter className=\"mt-2\">\n <div className=\"flex justify-between\">\n <Button type=\"button\" variant=\"text\" color=\"gray\" onClick={() => setIsOpen(false)}>\n {t?.(\"button.cancel\") ?? \"Annuler\"}\n </Button>\n {allowInherit && (\n <Button icon type=\"button\" variant=\"outlined\" color=\"gray\" onClick={handleInherit}>\n <i className=\"fe-settings\"></i>\n <span>{t?.(\"form.values.color.inherit\") ?? \"Par défault\"}</span>\n </Button>\n )}\n <Button type=\"button\" color=\"yellow\" onClick={handleSubmit}>\n {t?.(\"button.validate\") ?? \"Valider\"}\n </Button>\n </div>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>\n );\n}\n"],"mappings":"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OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,KAAK;EACH,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CAEAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;E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"}
@@ -1,2 +1,2 @@
1
- import { C as rawColorSchema, S as namedColorSchema, _ as colorNames, a as isColorAvailable, b as defaultFallbackColor, c as ColorPreview, d as Color, f as ColorInput, g as brandPaletteSchema, h as RawColor, i as getColorValue, l as ColorPicker, m as NamedColor, n as RawColorGrid, o as isGrayScale, p as ColorName, r as applyColorVariant, s as NamedColorGrid, t as HarmonyColorGrid, u as BrandPalette, v as colorSchema, x as defaultNamedColor, y as defaultBrandPalette } from "../../index--vYAkVqX.mjs";
2
- export { BrandPalette, Color, ColorInput, ColorName, ColorPicker, ColorPreview, HarmonyColorGrid, NamedColor, NamedColorGrid, RawColor, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isGrayScale, namedColorSchema, rawColorSchema };
1
+ import { C as namedColorSchema, S as defaultNamedColor, _ as brandPaletteSchema, a as isColorAvailable, b as defaultBrandPalette, c as NamedColorGrid, d as BrandPalette, f as Color, g as RawColor, h as NamedColor, i as getColorValue, l as ColorPreview, m as ColorName, n as RawColorGrid, o as isColorDark, p as ColorInput, r as applyColorVariant, s as isGrayScale, t as HarmonyColorGrid, u as ColorPicker, v as colorNames, w as rawColorSchema, x as defaultFallbackColor, y as colorSchema } from "../../index-Dg4usqQd.mjs";
2
+ export { BrandPalette, Color, ColorInput, ColorName, ColorPicker, ColorPreview, HarmonyColorGrid, NamedColor, NamedColorGrid, RawColor, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isColorDark, isGrayScale, namedColorSchema, rawColorSchema };
@@ -1,2 +1,2 @@
1
- import { _ as rawColorSchema, a as NamedColorGrid, c as isColorAvailable, d as colorNames, f as colorSchema, g as namedColorSchema, h as defaultNamedColor, i as ColorPreview, l as isGrayScale, m as defaultFallbackColor, n as HarmonyColorGrid, o as applyColorVariant, p as defaultBrandPalette, r as RawColorGrid, s as getColorValue, t as ColorPicker, u as brandPaletteSchema } from "../../color-CoLi_qPR.mjs";
2
- export { ColorPicker, ColorPreview, HarmonyColorGrid, NamedColorGrid, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isGrayScale, namedColorSchema, rawColorSchema };
1
+ import { _ as namedColorSchema, a as NamedColorGrid, c as isColorAvailable, d as brandPaletteSchema, f as colorNames, g as defaultNamedColor, h as defaultFallbackColor, i as ColorPreview, l as isColorDark, m as defaultBrandPalette, n as HarmonyColorGrid, o as applyColorVariant, p as colorSchema, r as RawColorGrid, s as getColorValue, t as ColorPicker, u as isGrayScale, v as rawColorSchema } from "../../color-BL19fpla.mjs";
2
+ export { ColorPicker, ColorPreview, HarmonyColorGrid, NamedColorGrid, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isColorDark, isGrayScale, namedColorSchema, rawColorSchema };
@@ -1,6 +1,6 @@
1
1
  import { n as FieldProps } from "../../../Field-DhaPMGcl.mjs";
2
2
  import "../../../index-D47GgUvX.mjs";
3
- import { f as ColorInput, h as RawColor, u as BrandPalette } from "../../../index--vYAkVqX.mjs";
3
+ import { d as BrandPalette, g as RawColor, p as ColorInput } from "../../../index-Dg4usqQd.mjs";
4
4
  import { FieldName } from "@conform-to/react/future";
5
5
  //#region src/components/fields/color/HexColorField.d.ts
6
6
  interface Props$1 extends Omit<FieldProps, "children" | "group"> {
@@ -1,4 +1,4 @@
1
- import { t as ColorPicker } from "../../../color-CoLi_qPR.mjs";
1
+ import { t as ColorPicker } from "../../../color-BL19fpla.mjs";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useControl, useField } from "@conform-to/react/future";
4
4
  //#region src/components/fields/color/HexColorField.tsx
@@ -39,8 +39,9 @@ declare function PasswordField({ name, showScore, id: forcedId, ...rest }: Props
39
39
  //#region src/components/fields/text/SlugField.d.ts
40
40
  interface Props extends Omit<FieldProps, "errors" | "children" | "group"> {
41
41
  name: FieldName<string | null | undefined>;
42
+ placeholder?: string;
42
43
  }
43
- declare function SlugField({ name, id: forcedId, ...rest }: Props): import("react").JSX.Element;
44
+ declare function SlugField({ name, id: forcedId, placeholder, ...rest }: Props): import("react").JSX.Element;
44
45
  //#endregion
45
46
  export { Input, type InputProps, PasswordField, SlugField, TextField, inputConfig };
46
47
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/text/Input.tsx","../../../../src/components/fields/text/TextField.tsx","../../../../src/components/fields/text/PasswordField.tsx","../../../../src/components/fields/text/SlugField.tsx"],"mappings":";;;;;UAIiB,mBAAmB,KAAK;EACvC;EACA;EACA,SAAS;EACT,SAAS;EACT,QAAQ;EACR;EACA;EACA,WAAW;EACX;EACA;EACA;;cAUW;EACX;EACA;EACA;;iBAGc,QACd,SACA,OACA,UACA,QACA,QACA,WACA,gBACA,UACA,MACA,eACA,MACA,UACA,KACA,iBACA,oBACG,QACF,6BAAU,IAAA;;;KC5CR,UAAQ,KAAK,oCAChB,KACE;EAcA,MAAM;;iBAGM,YACd,MACA,MACA,aACA,QACA,QACA,SACA,OACA,MACA,UACA,UACA,gBACA,iBACA,iBACA,IAAI,aACD,QACF,0BAAK,IAAA;;;UC/BE,gBAAc,KAAK;EAC3B,MAAM;EACN;;iBAGc,gBAAgB,MAAM,WAAmB,IAAI,aAAa,QAAQ,0BAAK,IAAA;;;UCP7E,cAAc,KAAK;EAC3B,MAAM;;iBAGQ,YAAY,MAAM,IAAI,aAAa,QAAQ,wBAAK,IAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/text/Input.tsx","../../../../src/components/fields/text/TextField.tsx","../../../../src/components/fields/text/PasswordField.tsx","../../../../src/components/fields/text/SlugField.tsx"],"mappings":";;;;;UAIiB,mBAAmB,KAAK;EACvC;EACA;EACA,SAAS;EACT,SAAS;EACT,QAAQ;EACR;EACA;EACA,WAAW;EACX;EACA;EACA;;cAUW;EACX;EACA;EACA;;iBAGc,QACd,SACA,OACA,UACA,QACA,QACA,WACA,gBACA,UACA,MACA,eACA,MACA,UACA,KACA,iBACA,oBACG,QACF,6BAAU,IAAA;;;KC5CR,UAAQ,KAAK,oCAChB,KACE;EAcA,MAAM;;iBAGM,YACd,MACA,MACA,aACA,QACA,QACA,SACA,OACA,MACA,UACA,UACA,gBACA,iBACA,iBACA,IAAI,aACD,QACF,0BAAK,IAAA;;;UC/BE,gBAAc,KAAK;EAC3B,MAAM;EACN;;iBAGc,gBAAgB,MAAM,WAAmB,IAAI,aAAa,QAAQ,0BAAK,IAAA;;;UCP7E,cAAc,KAAK;EAC3B,MAAM;EACN;;iBAGc,YAAY,MAAM,IAAI,UAAU,gBAAgB,QAAQ,wBAAK,IAAA"}
@@ -1,3 +1,3 @@
1
1
  import { n as inputConfig, t as Input } from "../../../Input-BbXXGsv_.mjs";
2
- import { n as PasswordField, r as TextField, t as SlugField } from "../../../text-DrWw7Gon.mjs";
2
+ import { n as PasswordField, r as TextField, t as SlugField } from "../../../text-B73vztfB.mjs";
3
3
  export { Input, PasswordField, SlugField, TextField, inputConfig };
@@ -5,7 +5,7 @@ import "../../dialog/index.mjs";
5
5
  import { t as Input } from "../../../Input-BbXXGsv_.mjs";
6
6
  import { n as useTranslate } from "../../../i18n-B57GZqP3.mjs";
7
7
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
8
- import "../../../text-DrWw7Gon.mjs";
8
+ import "../../../text-B73vztfB.mjs";
9
9
  import { n as DropdownMenu, t as DropdownMenuItem } from "../../../dropdown-menu-DPA36icH.mjs";
10
10
  import { proseLinkVariant } from "../../href/index.mjs";
11
11
  import { c } from "react/compiler-runtime";
@@ -101,12 +101,20 @@ declare function isColorAvailable(colorName: ColorName, palette?: {
101
101
  }): boolean;
102
102
  /**
103
103
  * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`
104
- * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —
104
+ * pour variant > 0, vers un gris neutre foncé (`#323232`, pas `black` —
105
105
  * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.
106
106
  * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix
107
107
  * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).
108
+ * `#323232` est fixé en dur (pas `var(--color-gray-7)`) pour que le résultat
109
+ * ne s'inverse pas silencieusement sous `.dark`, où ce token désigne un gris clair.
108
110
  */
109
111
  declare function applyColorVariant(base: string, variant: number): string;
112
+ declare function isColorDark(color: Color, palette?: {
113
+ primary: string;
114
+ secondary: string | null;
115
+ tertiary: string | null;
116
+ gray: string;
117
+ }): boolean;
110
118
  //#endregion
111
119
  //#region src/components/color/RawColorGrid.d.ts
112
120
  interface Props$1 {
@@ -123,5 +131,5 @@ interface Props {
123
131
  }
124
132
  declare function HarmonyColorGrid({ refColor, value, onChange }: Props): import("react").JSX.Element;
125
133
  //#endregion
126
- export { rawColorSchema as C, namedColorSchema as S, colorNames as _, isColorAvailable as a, defaultFallbackColor as b, ColorPreview as c, Color as d, ColorInput as f, brandPaletteSchema as g, RawColor as h, getColorValue as i, ColorPicker as l, NamedColor as m, RawColorGrid as n, isGrayScale as o, ColorName as p, applyColorVariant as r, NamedColorGrid as s, HarmonyColorGrid as t, BrandPalette as u, colorSchema as v, defaultNamedColor as x, defaultBrandPalette as y };
127
- //# sourceMappingURL=index--vYAkVqX.d.mts.map
134
+ export { namedColorSchema as C, defaultNamedColor as S, brandPaletteSchema as _, isColorAvailable as a, defaultBrandPalette as b, NamedColorGrid as c, BrandPalette as d, Color as f, RawColor as g, NamedColor as h, getColorValue as i, ColorPreview as l, ColorName as m, RawColorGrid as n, isColorDark as o, ColorInput as p, applyColorVariant as r, isGrayScale as s, HarmonyColorGrid as t, ColorPicker as u, colorNames as v, rawColorSchema as w, defaultFallbackColor as x, colorSchema as y };
135
+ //# sourceMappingURL=index-Dg4usqQd.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index--vYAkVqX.d.mts","names":[],"sources":["../src/components/color/config.ts","../src/components/color/ColorPicker.tsx","../src/components/color/ColorPreview.tsx","../src/components/color/NamedColorGrid.tsx","../src/components/color/util.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx"],"mappings":";;;;;;cAEa;KACD,oBAAoB;cAEnB,kBAAgB,EAAA;;;;;;;;;GAI3B,EAAA,KAAA;KACU,aAAa,EAAE,aAAa;cAE3B,mBAAmB;cACnB;cAEA,gBAAc,EAAA;;;GAGzB,EAAA,KAAA;KACU,WAAW,EAAE,aAAa;cAEzB,aAAW,EAAA,uBAAA,EAAA;;;;;;;;;;;;GAA8C,EAAA,KAAA;KAC1D,QAAQ,EAAE,aAAa;KAEvB,aAAa,EAAE,aAAa;cAE3B,oBAAkB,EAAA;;;;;GAK7B,EAAA,KAAA;KACU,eAAe,EAAE,aAAa;cAE7B,qBAAqB;;;UCnBxB,gBAAc,KAAK;EAC3B,UAAU;EACV,OAAO;EACP,WAAW;EACX,WAAW,OAAO;EAClB;EACA;;iBAGc,cACd,SACA,OACA,UACA,UACA,UACA,iBACG,QACF,0BAAK,IAAA;;;UCxBS,0BAA0B,KAAK;EAC9C;EAEA,QAAQ;EACR,QAAQ;EACR;EACA,UAAU;EACV;EACA;EACA,MAAM,UAAU;;iBAGF,eACd,OAAO,cACP,YACA,OACA,OACA,WACA,SACA,WACA,QACG,QACF,oCAAiB,IAAA;;;UCzBV;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;EAClB;;iBAiCc,iBACd,SACA,OACA,UACA,YACC,0BAAK,IAAA;;;iBC7CQ,cACd,OAAO,cACP;;;;;GACA;;;;;iBAmBc,YAAY;iBAYZ,iBAAiB,WAAW,WAAW;;;;;;;;;;;;;iBAcvC,kBAAkB,cAAc;;;UC9CtC;EACR,OAAO;EACP,WAAW,OAAO;;iBAGJ,eAAe,OAAO,YAAY,0BAAK,IAAA;;;UCY7C;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;;iBAGJ,mBAAmB,UAAU,OAAO,YAAY,wBAAK,IAAA"}
1
+ {"version":3,"file":"index-Dg4usqQd.d.mts","names":[],"sources":["../src/components/color/config.ts","../src/components/color/ColorPicker.tsx","../src/components/color/ColorPreview.tsx","../src/components/color/NamedColorGrid.tsx","../src/components/color/util.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx"],"mappings":";;;;;;cAEa;KACD,oBAAoB;cAEnB,kBAAgB,EAAA;;;;;;;;;GAI3B,EAAA,KAAA;KACU,aAAa,EAAE,aAAa;cAE3B,mBAAmB;cACnB;cAEA,gBAAc,EAAA;;;GAGzB,EAAA,KAAA;KACU,WAAW,EAAE,aAAa;cAEzB,aAAW,EAAA,uBAAA,EAAA;;;;;;;;;;;;GAA8C,EAAA,KAAA;KAC1D,QAAQ,EAAE,aAAa;KAEvB,aAAa,EAAE,aAAa;cAE3B,oBAAkB,EAAA;;;;;GAK7B,EAAA,KAAA;KACU,eAAe,EAAE,aAAa;cAE7B,qBAAqB;;;UCnBxB,gBAAc,KAAK;EAC3B,UAAU;EACV,OAAO;EACP,WAAW;EACX,WAAW,OAAO;EAClB;EACA;;iBAGc,cACd,SACA,OACA,UACA,UACA,UACA,iBACG,QACF,0BAAK,IAAA;;;UCxBS,0BAA0B,KAAK;EAC9C;EAEA,QAAQ;EACR,QAAQ;EACR;EACA,UAAU;EACV;EACA;EACA,MAAM,UAAU;;iBAGF,eACd,OAAO,cACP,YACA,OACA,OACA,WACA,SACA,WACA,QACG,QACF,oCAAiB,IAAA;;;UCzBV;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;EAClB;;iBAiCc,iBACd,SACA,OACA,UACA,YACC,0BAAK,IAAA;;;iBC7CQ,cACd,OAAO,cACP;;;;;GACA;;;;;iBAmBc,YAAY;iBAYZ,iBAAiB,WAAW,WAAW;;;;;;;;;;;;;;;iBAgBvC,kBAAkB,cAAc;iBAgDhC,YAAY,OAAO,OAAO;;;;;;;;UChGhC;EACR,OAAO;EACP,WAAW,OAAO;;iBAGJ,eAAe,OAAO,YAAY,0BAAK,IAAA;;;UCY7C;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;;iBAGJ,mBAAmB,UAAU,OAAO,YAAY,wBAAK,IAAA"}
@@ -295,7 +295,7 @@ function _temp(s) {
295
295
  }
296
296
  //#endregion
297
297
  //#region src/components/fields/text/SlugField.tsx
298
- function SlugField({ name, id: forcedId, ...rest }) {
298
+ function SlugField({ name, id: forcedId, placeholder, ...rest }) {
299
299
  const field = useField(name);
300
300
  const id = forcedId ?? field.id;
301
301
  const control = useControl({ defaultValue: field.defaultValue });
@@ -320,11 +320,12 @@ function SlugField({ name, id: forcedId, ...rest }) {
320
320
  children: /* @__PURE__ */ jsx(Input, {
321
321
  value: control.value ?? "",
322
322
  onBlur: handleBlur,
323
- onChange: handleChange
323
+ onChange: handleChange,
324
+ placeholder
324
325
  })
325
326
  })] });
326
327
  }
327
328
  //#endregion
328
329
  export { PasswordField as n, TextField as r, SlugField as t };
329
330
 
330
- //# sourceMappingURL=text-DrWw7Gon.mjs.map
331
+ //# sourceMappingURL=text-B73vztfB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-B73vztfB.mjs","names":["FieldName","useField","Field","FieldProps","Input","InputProps","Props","Omit","Pick","name","TextField","t0","$","_c","color","disabled","forcedId","inputClassName","placeholder","prefix","prefixClassName","readOnly","rest","size","suffix","suffixClassName","type","variant","id","field","t1","defaultValue","t2","errors","getPasswordStrength","password","score","length","test","Math","min","gradientVariantFromScore","getFieldValue","useField","useFormData","FieldName","Field","FieldProps","Input","Button","useState","getPasswordStrength","gradientVariantFromScore","clsx","Props","Omit","name","showScore","PasswordField","t0","$","_c","forcedId","rest","t1","id","undefined","field","showPassword","setShowPassword","t2","formData","type","value","formId","T0","T1","t10","t11","t12","t3","t4","t5","t6","t7","t8","t9","defaultValue","errors","passwordScore","t13","Symbol","for","_temp","t14","width","s","useField","useControl","FieldName","Field","FieldProps","Input","slugify","ChangeEvent","Props","Omit","name","placeholder","SlugField","id","forcedId","rest","field","control","defaultValue","handleChange","e","HTMLInputElement","change","target","value","handleBlur","blur","register","errors"],"sources":["../src/components/fields/text/TextField.tsx","../src/lib/pass-checker.ts","../src/components/fields/text/PasswordField.tsx","../src/components/fields/text/SlugField.tsx"],"sourcesContent":["import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input, type InputProps } from \"./Input\";\n\ntype Props = Omit<FieldProps, \"children\" | \"group\"> &\n Pick<\n InputProps,\n | \"type\"\n | \"placeholder\"\n | \"prefix\"\n | \"suffix\"\n | \"variant\"\n | \"color\"\n | \"size\"\n | \"disabled\"\n | \"readOnly\"\n | \"inputClassName\"\n | \"prefixClassName\"\n | \"suffixClassName\"\n > & {\n name: FieldName<string | number | null | undefined>;\n };\n\nexport function TextField({\n name,\n type,\n placeholder,\n prefix,\n suffix,\n variant,\n color,\n size,\n disabled,\n readOnly,\n inputClassName,\n prefixClassName,\n suffixClassName,\n id: forcedId,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n return (\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input\n name={field.name}\n defaultValue={field.defaultValue}\n type={type}\n placeholder={placeholder}\n prefix={prefix}\n suffix={suffix}\n variant={variant}\n color={color}\n size={size}\n disabled={disabled}\n readOnly={readOnly}\n inputClassName={inputClassName}\n prefixClassName={prefixClassName}\n suffixClassName={suffixClassName}\n />\n </Field>\n );\n}\n","export function getPasswordStrength(password: string = \"\"): number {\n let score = 0;\n const length = password.length;\n\n if (length === 0) {\n return 0;\n }\n\n if (length >= 8) score++; // Baseline minimale\n if (length >= 12) score++; // Longueur robuste\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) score++; // Majuscules + minuscules\n if (/\\d/.test(password)) score++; // Chiffres\n if (/[^A-Za-z0-9]/.test(password)) score++; // Caractères spéciaux\n\n // Ajustements pour éviter des scores trop élevés avec de faibles critères\n if (length < 8) return 1; // Trop court = très faible sécurité\n if (score === 5 && length < 10) score--; // Évite un score max avec un mot de passe trop court\n\n return Math.min(score, 5);\n}\n\nexport function gradientVariantFromScore(score: number) {\n if (score <= 1) {\n return \"from-red-5 to-red-3\";\n } else if (score <= 2) {\n return \"from-red-4 to-orange-3\";\n } else if (score <= 3) {\n return \"from-red-3 to-green-3\";\n } else if (score <= 4) {\n return \"from-orange-3 to-green-4\";\n } else {\n return \"from-green-4 to-green-4\";\n }\n}\n","import { getFieldValue, useField, useFormData, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input } from \"./Input\";\nimport { Button } from \"../../button\";\nimport { useState } from \"react\";\nimport { getPasswordStrength, gradientVariantFromScore } from \"../../../lib/pass-checker\";\nimport clsx from \"clsx\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | undefined | null>;\n showScore?: boolean;\n}\n\nexport function PasswordField({ name, showScore = false, id: forcedId, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const [showPassword, setShowPassword] = useState(false);\n\n const value = useFormData(field.formId, (formData) =>\n getFieldValue(formData, field.name, { type: \"string\" }),\n );\n\n const passwordScore = getPasswordStrength(value);\n\n return (\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input\n className=\"relative overflow-hidden\"\n suffix={\n <Button\n size=\"input\"\n type=\"button\"\n withRipple={true}\n icon\n variant=\"ghost\"\n color=\"gray\"\n onClick={() => setShowPassword((s) => !s)}\n >\n <i className={showPassword ? \"fe-eye\" : \"fe-eye-closed\"}></i>\n </Button>\n }\n defaultValue={field.defaultValue}\n name={field.name}\n type={showPassword ? \"text\" : \"password\"}\n >\n {showScore && (\n <div\n className=\"absolute bottom-0 left-0 h-[3px] overflow-hidden\"\n style={{ width: `${passwordScore * 20}%` }}\n >\n <div\n className={clsx(\n \"absolute right-0 -bottom-px left-0 h-[3px] rounded-xs bg-linear-to-r\",\n gradientVariantFromScore(passwordScore),\n )}\n ></div>\n </div>\n )}\n </Input>\n </Field>\n );\n}\n","import { useField, useControl, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input } from \"./Input\";\nimport { slugify } from \"../../../lib/strUtil\";\nimport type { ChangeEvent } from \"react\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | null | undefined>;\n placeholder?: string;\n}\n\nexport function SlugField({ name, id: forcedId, placeholder, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const control = useControl({\n defaultValue: field.defaultValue,\n });\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n control.change(slugify(e.target.value, false, false));\n }\n\n function handleBlur() {\n if (control.value) {\n control.change(slugify(control.value, false));\n }\n control.blur();\n }\n\n return (\n <>\n <input\n type=\"text\"\n hidden\n name={field.name}\n ref={control.register}\n defaultValue={field.defaultValue}\n />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input\n value={control.value ?? \"\"}\n onBlur={handleBlur}\n onChange={handleChange}\n placeholder={placeholder}\n />\n </Field>\n </>\n );\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pentatrion-design",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Hugues Tavernier",
@@ -43,17 +43,77 @@ export function isColorAvailable(colorName: ColorName, palette = defaultBrandPal
43
43
 
44
44
  /**
45
45
  * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`
46
- * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —
46
+ * pour variant > 0, vers un gris neutre foncé (`#323232`, pas `black` —
47
47
  * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.
48
48
  * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix
49
49
  * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).
50
+ * `#323232` est fixé en dur (pas `var(--color-gray-7)`) pour que le résultat
51
+ * ne s'inverse pas silencieusement sous `.dark`, où ce token désigne un gris clair.
50
52
  */
51
53
  export function applyColorVariant(base: string, variant: number): string {
52
- if (variant === 0) {
54
+ const mix = resolveVariantMix(base, variant);
55
+ if (!mix) {
53
56
  return base;
54
57
  }
55
58
 
56
- return variant > 0
57
- ? `color-mix(in oklab, ${base} ${100 - variant}%, white)`
58
- : `color-mix(in oklab, ${base} ${100 - Math.abs(variant)}%, ${isGrayScale(base) ? "black" : "var(--color-gray-7)"})`;
59
+ return `color-mix(in oklab, ${base} ${mix.baseWeight}%, ${mix.target})`;
60
+ }
61
+
62
+ function resolveVariantMix(
63
+ base: string,
64
+ variant: number,
65
+ ): { target: "white" | "black" | "#323232"; baseWeight: number } | null {
66
+ if (variant === 0) {
67
+ return null;
68
+ } else if (variant > 0) {
69
+ return { target: "white", baseWeight: 100 - variant };
70
+ }
71
+ return { target: isGrayScale(base) ? "black" : "#323232", baseWeight: 100 - Math.abs(variant) };
72
+ }
73
+
74
+ function hexLuminance(hex: string): number {
75
+ const normalized = hex.replace("#", "");
76
+ const full =
77
+ normalized.length === 3
78
+ ? normalized
79
+ .split("")
80
+ .map((c) => c + c)
81
+ .join("")
82
+ : normalized;
83
+
84
+ if (full.length !== 6) {
85
+ return 1;
86
+ }
87
+
88
+ const r = parseInt(full.slice(0, 2), 16);
89
+ const g = parseInt(full.slice(2, 4), 16);
90
+ const b = parseInt(full.slice(4, 6), 16);
91
+
92
+ return (0.299 * r + 0.587 * g + 0.114 * b) / 255;
93
+ }
94
+
95
+ const TARGET_LUMINANCE: Record<"white" | "black" | "#323232", number> = {
96
+ white: 1,
97
+ black: 0,
98
+ "#323232": hexLuminance("#323232"),
99
+ };
100
+
101
+ export function isColorDark(color: Color, palette = defaultBrandPalette): boolean {
102
+ if (color.type === "raw") {
103
+ return hexLuminance(color.hex) < 0.5;
104
+ }
105
+
106
+ const base = color.name === "gray" ? "#808080" : (palette[color.name] ?? "#808080");
107
+ const mix = resolveVariantMix(base, color.variant);
108
+
109
+ if (!mix) {
110
+ return hexLuminance(base) < 0.5;
111
+ }
112
+
113
+ // la luminance étant linéaire en r/g/b, la luminance du mélange = mélange des luminances
114
+ const luminance =
115
+ (hexLuminance(base) * mix.baseWeight + TARGET_LUMINANCE[mix.target] * (100 - mix.baseWeight)) /
116
+ 100;
117
+
118
+ return luminance < 0.5;
59
119
  }
@@ -6,9 +6,10 @@ import type { ChangeEvent } from "react";
6
6
 
7
7
  interface Props extends Omit<FieldProps, "errors" | "children" | "group"> {
8
8
  name: FieldName<string | null | undefined>;
9
+ placeholder?: string;
9
10
  }
10
11
 
11
- export function SlugField({ name, id: forcedId, ...rest }: Props) {
12
+ export function SlugField({ name, id: forcedId, placeholder, ...rest }: Props) {
12
13
  const field = useField(name);
13
14
  const id = forcedId ?? field.id;
14
15
  const control = useControl({
@@ -36,7 +37,12 @@ export function SlugField({ name, id: forcedId, ...rest }: Props) {
36
37
  defaultValue={field.defaultValue}
37
38
  />
38
39
  <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>
39
- <Input value={control.value ?? ""} onBlur={handleBlur} onChange={handleChange} />
40
+ <Input
41
+ value={control.value ?? ""}
42
+ onBlur={handleBlur}
43
+ onChange={handleChange}
44
+ placeholder={placeholder}
45
+ />
40
46
  </Field>
41
47
  </>
42
48
  );
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-CoLi_qPR.mjs","names":["z","colorNames","const","ColorName","namedColorSchema","object","type","literal","name","enum","variant","number","NamedColor","infer","defaultNamedColor","defaultFallbackColor","rawColorSchema","hex","string","RawColor","colorSchema","union","Color","ColorInput","input","brandPaletteSchema","primary","secondary","_default","nullable","tertiary","gray","BrandPalette","defaultBrandPalette","Color","ColorName","defaultBrandPalette","defaultFallbackColor","getColorValue","color","palette","fallbackColor","type","hex","base","name","applyColorVariant","variant","isGrayScale","normalized","replace","isShort","length","step","r","parseInt","slice","repeat","g","b","isColorAvailable","colorName","Math","abs","clsx","Color","defaultBrandPalette","BrandPalette","NamedColor","colorNames","applyColorVariant","getColorValue","isColorAvailable","useTranslate","Props","palette","value","onChange","variants","colorLabels","Record","primary","secondary","tertiary","gray","variantMagnitude","getVariantSteps","Array","isArray","min","max","from","length","_","i","Math","round","colorButtonStyle","base","selected","NamedColorGrid","t0","$","_c","t1","t2","undefined","t","t3","name","variant","t4","filter","map","name_0","steps","c","type","v","backgroundColor","t5","t6","variant_0","c_0","t7","t8","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","Color","defaultBrandPalette","BrandPalette","getColorValue","ThemeColor","useTranslate","ColorPreviewProps","Omit","withRipple","value","color","label","palette","showValue","className","ref","HTMLButtonElement","ColorPreview","t0","$","_c","rest","t1","t2","t3","t4","unknownColor","undefined","t","t5","type","hex","t6","name","valueLabel","buttonRef","t7","Symbol","for","current","ripples","t8","t9","t10","t11","t12","backgroundColor","t13","t14","t15","t16","t17","t18","rawColorsHex","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","neutral","slate","gray","zinc","stone","mauve","olive","mist","taupe","const","rawColorsHex","colorByGroups","Object","entries","filter","name","colorGroup","includes","map","colors","clsx","colorByGroups","RawColor","Props","value","onChange","RawColorGrid","t0","$","_c","t1","hex","map","t2","name","colors","t3","colorNumber","colorCode","parseInt","backgroundColor","type","clsx","colord","extend","harmoniesPlugin","HarmonyType","RawColor","colorButtonStyle","useTranslate","harmonyLabels","Record","complementary","analogous","triadic","rectangle","tetradic","harmonyTypes","Object","keys","Props","refColor","value","onChange","HarmonyColorGrid","t0","$","_c","t","t1","t2","hex","baseColor","map","harmonyType","harmonies","harmonyColor","index","toHex","base","selected","backgroundColor","type","t3","Modal","ModalContent","ModalFooter","useState","Field","FieldProps","NamedColorGrid","Button","ColorPreview","Color","BrandPalette","RawColor","Tabs","HexColorInput","HexColorPicker","inputConfig","clsx","useTranslate","RawColorGrid","HarmonyColorGrid","Props","Omit","palette","value","refColor","onChange","allowInherit","variants","ColorPicker","t0","$","_c","rest","t1","undefined","t","isOpen","setIsOpen","tempValue","setTempValue","tabId","setTabId","type","t2","handleSubmit","t3","handleInherit","t4","id","title","content","t5","t6","t7","t8","t9","t10","t11","hex","t12","Symbol","for","t13","t14","container","t15","t16","hex_0","t17","input","t18","t19","t20","tabs","t21","t22","t23","t24","modalKeepOpen","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36"],"sources":["../src/components/color/config.ts","../src/components/color/util.ts","../src/components/color/NamedColorGrid.tsx","../src/components/color/ColorPreview.tsx","../src/lib/colors.generated.ts","../src/lib/color.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx","../src/components/color/ColorPicker.tsx"],"sourcesContent":["import { z } from \"zod/v4-mini\";\n\nexport const colorNames = [\"primary\", \"secondary\", \"tertiary\", \"gray\"] as const;\nexport type ColorName = (typeof colorNames)[number];\n\nexport const namedColorSchema = z.object({\n type: z.literal(\"named\"),\n name: z.enum(colorNames),\n variant: z.number(), // -100, 100\n});\nexport type NamedColor = z.infer<typeof namedColorSchema>;\n\nexport const defaultNamedColor: NamedColor = { name: \"gray\", variant: -100, type: \"named\" };\nexport const defaultFallbackColor = \"#000000\";\n\nexport const rawColorSchema = z.object({\n type: z.literal(\"raw\"),\n hex: z.string(),\n});\nexport type RawColor = z.infer<typeof rawColorSchema>;\n\nexport const colorSchema = z.union([namedColorSchema, rawColorSchema]);\nexport type Color = z.infer<typeof colorSchema>;\n\nexport type ColorInput = z.input<typeof colorSchema>;\n\nexport const brandPaletteSchema = z.object({\n primary: z.string(),\n secondary: z._default(z.nullable(z.string()), null),\n tertiary: z._default(z.nullable(z.string()), null),\n gray: z.string(),\n});\nexport type BrandPalette = z.infer<typeof brandPaletteSchema>;\n\nexport const defaultBrandPalette: BrandPalette = {\n primary: \"#ffca0a\",\n secondary: null,\n tertiary: null,\n gray: \"#808080\",\n};\n","import { Color, ColorName, defaultBrandPalette, defaultFallbackColor } from \"./config\";\n\nexport function getColorValue(\n color: Color | null,\n palette = defaultBrandPalette,\n fallbackColor = defaultFallbackColor,\n): string {\n if (!color) {\n return fallbackColor;\n }\n\n if (color.type === \"raw\") {\n return color.hex;\n }\n\n const base = color.name === \"gray\" ? \"#808080\" : (palette[color.name] ?? \"#808080\");\n\n return applyColorVariant(base ?? \"#808080\", color.variant);\n}\n\n/**\n * Détermine si une couleur hexadécimale (#rgb, #rgba, #rrggbb, #rrggbbaa)\n * est un niveau de gris, c'est-à-dire que ses composantes R, G et B sont égales.\n */\nexport function isGrayScale(hex: string): boolean {\n const normalized = hex.replace(\"#\", \"\");\n const isShort = normalized.length === 3 || normalized.length === 4;\n const step = isShort ? 1 : 2;\n\n const r = parseInt(normalized.slice(0, step).repeat(isShort ? 2 : 1), 16);\n const g = parseInt(normalized.slice(step, step * 2).repeat(isShort ? 2 : 1), 16);\n const b = parseInt(normalized.slice(step * 2, step * 3).repeat(isShort ? 2 : 1), 16);\n\n return r === g && g === b;\n}\n\nexport function isColorAvailable(colorName: ColorName, palette = defaultBrandPalette): boolean {\n if (colorName === \"gray\") {\n return true;\n }\n return !!palette[colorName];\n}\n\n/**\n * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`\n * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —\n * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.\n * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix\n * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).\n */\nexport function applyColorVariant(base: string, variant: number): string {\n if (variant === 0) {\n return base;\n }\n\n return variant > 0\n ? `color-mix(in oklab, ${base} ${100 - variant}%, white)`\n : `color-mix(in oklab, ${base} ${100 - Math.abs(variant)}%, ${isGrayScale(base) ? \"black\" : \"var(--color-gray-7)\"})`;\n}\n","import clsx from \"clsx\";\nimport { Color, defaultBrandPalette, BrandPalette, NamedColor, colorNames } from \"./config\";\nimport { applyColorVariant, getColorValue, isColorAvailable } from \"./util\";\nimport { useTranslate } from \"../i18n\";\n\ninterface Props {\n palette?: BrandPalette;\n value: NamedColor | null;\n onChange: (value: NamedColor) => void;\n variants?: number | number[];\n}\n\nconst colorLabels: Record<(typeof colorNames)[number], string> = {\n primary: \"Principale\",\n secondary: \"Secondaire\",\n tertiary: \"Tertiaire\",\n gray: \"Niveau de gris\",\n};\n// bornes à -80/80 plutôt que -100/100 : à 100% la base disparaît complètement\n// du color-mix, le swatch ne reproduit plus que du blanc/gris pur, redondant\n// avec les entrées white/black déjà présentes dans la grille.\nconst variantMagnitude = 80;\n\nfunction getVariantSteps(variants: number | number[]): number[] {\n if (Array.isArray(variants)) {\n return variants;\n }\n const min = -variantMagnitude;\n const max = variantMagnitude;\n if (variants <= 1) {\n return [0];\n }\n return Array.from({ length: variants }, (_, i) =>\n Math.round(min + (i * (max - min)) / (variants - 1)),\n );\n}\n\nexport const colorButtonStyle = {\n base: \"cursor-pointer hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125 first-of-type:rounded-l-md last-of-type:rounded-r-md\",\n selected: \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n};\n\nexport function NamedColorGrid({\n palette = defaultBrandPalette,\n value,\n onChange,\n variants = 9,\n}: Props) {\n const t = useTranslate();\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {colorNames\n .filter((name) => isColorAvailable(name, palette))\n .map((name) => {\n // une seule vignette pour black : color-mix(black, black) est un no-op,\n // toute une rampe serait visuellement identique\n const steps = getVariantSteps(variants);\n\n return (\n <div key={name}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorNames.${name}`) ?? colorLabels[name]}\n </div>\n <div className=\"flex\">\n {steps.map((variant) => {\n const c: Color = { type: \"named\", name, variant };\n const v = getColorValue(c, palette);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`${c.name} (${variant}%)`}\n className={clsx(\n \"h-8 flex-1\",\n colorButtonStyle.base,\n value?.name === name &&\n value?.variant === variant &&\n colorButtonStyle.selected,\n )}\n style={{ backgroundColor: v }}\n onClick={() => onChange(c)}\n />\n );\n })}\n </div>\n </div>\n );\n })}\n\n <div>\n <div className=\"text-body-xs truncate\">\n {t?.(\"form.values.colorNames.blackAndWhite\") ?? \"Noir & Blanc\"}\n </div>\n <div className=\"flex\">\n {[-100, 100].map((variant) => {\n const c = applyColorVariant(\"#808080\", variant);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`gray (${variant}%)`}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.name === \"gray\" && value?.variant === variant && colorButtonStyle.selected,\n variant === 100 && \"border border-gray-2\",\n )}\n style={{ backgroundColor: c }}\n onClick={() => onChange({ type: \"named\", name: \"gray\", variant })}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"pentatrion-design/hooks\";\nimport { Color, defaultBrandPalette, BrandPalette } from \"./config\";\nimport { getColorValue } from \"./util\";\nimport { ThemeColor } from \"../../types\";\nimport { useTranslate } from \"../i18n\";\n\nexport interface ColorPreviewProps extends Omit<ComponentProps<\"button\">, \"color\" | \"value\"> {\n withRipple?: boolean;\n\n value?: Color | null | string;\n color?: ThemeColor;\n label?: string;\n palette?: BrandPalette;\n showValue?: boolean;\n className?: string;\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport function ColorPreview({\n value: unknownColor,\n withRipple = true,\n color = \"yellow\",\n label,\n showValue = false,\n palette = defaultBrandPalette,\n className,\n ref,\n ...rest\n}: ColorPreviewProps) {\n const t = useTranslate();\n const value: Color | null =\n typeof unknownColor === \"string\" ? { type: \"raw\", hex: unknownColor } : (unknownColor ?? null);\n\n const valueLabel =\n label ??\n (value\n ? showValue\n ? value.type === \"raw\"\n ? value.hex\n : value.name\n : null\n : (t?.(\"form.values.color.inherit\") ?? \"Par défault\"));\n\n const buttonRef = useRef<HTMLButtonElement>(null!);\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n ref,\n () => buttonRef.current,\n );\n\n const ripples = useRipple(buttonRef);\n\n return (\n <button\n ref={buttonRef}\n data-color={color}\n className=\"p8n-input-text group relative flex h-8 cursor-pointer overflow-clip rounded-2xl p-1 -outline-offset-1 active:translate-y-px\"\n {...rest}\n >\n {withRipple && ripples}\n <span\n className={clsx(\n \"absolute inset-1 flex items-center justify-center rounded-2xl transition-transform group-hover:scale-150\",\n valueLabel === null && \"min-w-12\",\n className,\n )}\n style={{ backgroundColor: value ? getColorValue(value, palette) : undefined }}\n ></span>\n <span\n className={clsx(\n \"relative flex h-full items-center justify-center px-2 rounded-2xl\",\n valueLabel === null && \"min-w-12\",\n className,\n !value && \"border border-dashed border-gray-3\",\n )}\n >\n {valueLabel}\n </span>\n </button>\n );\n}\n","// généré par scripts/generate-colors.ts à partir de tailwindcss/colors (oklch -> hex via culori)\nexport const rawColorsHex = {\n red: {\n \"50\": \"#fef2f2\",\n \"100\": \"#ffe2e2\",\n \"200\": \"#ffc9c9\",\n \"300\": \"#ffa2a2\",\n \"400\": \"#ff6467\",\n \"500\": \"#fb2c36\",\n \"600\": \"#e7000b\",\n \"700\": \"#c10007\",\n \"800\": \"#9f0712\",\n \"900\": \"#82181a\",\n \"950\": \"#460809\",\n },\n orange: {\n \"50\": \"#fff7ed\",\n \"100\": \"#ffedd4\",\n \"200\": \"#ffd6a7\",\n \"300\": \"#ffb86a\",\n \"400\": \"#ff8904\",\n \"500\": \"#ff6900\",\n \"600\": \"#f54900\",\n \"700\": \"#ca3500\",\n \"800\": \"#9f2d00\",\n \"900\": \"#7e2a0c\",\n \"950\": \"#441306\",\n },\n amber: {\n \"50\": \"#fffbeb\",\n \"100\": \"#fef3c6\",\n \"200\": \"#fee685\",\n \"300\": \"#ffd230\",\n \"400\": \"#ffb900\",\n \"500\": \"#fe9a00\",\n \"600\": \"#e17100\",\n \"700\": \"#bb4d00\",\n \"800\": \"#973c00\",\n \"900\": \"#7b3306\",\n \"950\": \"#461901\",\n },\n yellow: {\n \"50\": \"#fefce8\",\n \"100\": \"#fef9c2\",\n \"200\": \"#fff085\",\n \"300\": \"#ffdf20\",\n \"400\": \"#fdc700\",\n \"500\": \"#f0b100\",\n \"600\": \"#d08700\",\n \"700\": \"#a65f00\",\n \"800\": \"#894b00\",\n \"900\": \"#733e0a\",\n \"950\": \"#432004\",\n },\n lime: {\n \"50\": \"#f7fee7\",\n \"100\": \"#ecfcca\",\n \"200\": \"#d8f999\",\n \"300\": \"#bbf451\",\n \"400\": \"#9ae600\",\n \"500\": \"#7ccf00\",\n \"600\": \"#5ea500\",\n \"700\": \"#497d00\",\n \"800\": \"#3c6300\",\n \"900\": \"#35530e\",\n \"950\": \"#192e03\",\n },\n green: {\n \"50\": \"#f0fdf4\",\n \"100\": \"#dcfce7\",\n \"200\": \"#b9f8cf\",\n \"300\": \"#7bf1a8\",\n \"400\": \"#05df72\",\n \"500\": \"#00c950\",\n \"600\": \"#00a63e\",\n \"700\": \"#008236\",\n \"800\": \"#016630\",\n \"900\": \"#0d542b\",\n \"950\": \"#032e15\",\n },\n emerald: {\n \"50\": \"#ecfdf5\",\n \"100\": \"#d0fae5\",\n \"200\": \"#a4f4cf\",\n \"300\": \"#5ee9b5\",\n \"400\": \"#00d492\",\n \"500\": \"#00bc7d\",\n \"600\": \"#009966\",\n \"700\": \"#007a55\",\n \"800\": \"#006045\",\n \"900\": \"#004f3b\",\n \"950\": \"#002c22\",\n },\n teal: {\n \"50\": \"#f0fdfa\",\n \"100\": \"#cbfbf1\",\n \"200\": \"#96f7e4\",\n \"300\": \"#46ecd5\",\n \"400\": \"#00d5be\",\n \"500\": \"#00bba7\",\n \"600\": \"#009689\",\n \"700\": \"#00786f\",\n \"800\": \"#005f5a\",\n \"900\": \"#0b4f4a\",\n \"950\": \"#022f2e\",\n },\n cyan: {\n \"50\": \"#ecfeff\",\n \"100\": \"#cefafe\",\n \"200\": \"#a2f4fd\",\n \"300\": \"#53eafd\",\n \"400\": \"#00d3f2\",\n \"500\": \"#00b8db\",\n \"600\": \"#0092b8\",\n \"700\": \"#007595\",\n \"800\": \"#005f78\",\n \"900\": \"#104e64\",\n \"950\": \"#053345\",\n },\n sky: {\n \"50\": \"#f0f9ff\",\n \"100\": \"#dff2fe\",\n \"200\": \"#b8e6fe\",\n \"300\": \"#74d4ff\",\n \"400\": \"#00bcff\",\n \"500\": \"#00a6f4\",\n \"600\": \"#0084d1\",\n \"700\": \"#0069a8\",\n \"800\": \"#00598a\",\n \"900\": \"#024a70\",\n \"950\": \"#052f4a\",\n },\n blue: {\n \"50\": \"#eff6ff\",\n \"100\": \"#dbeafe\",\n \"200\": \"#bedbff\",\n \"300\": \"#8ec5ff\",\n \"400\": \"#51a2ff\",\n \"500\": \"#2b7fff\",\n \"600\": \"#155dfc\",\n \"700\": \"#1447e6\",\n \"800\": \"#193cb8\",\n \"900\": \"#1c398e\",\n \"950\": \"#162456\",\n },\n indigo: {\n \"50\": \"#eef2ff\",\n \"100\": \"#e0e7ff\",\n \"200\": \"#c6d2ff\",\n \"300\": \"#a3b3ff\",\n \"400\": \"#7c86ff\",\n \"500\": \"#615fff\",\n \"600\": \"#4f39f6\",\n \"700\": \"#432dd7\",\n \"800\": \"#372aac\",\n \"900\": \"#312c85\",\n \"950\": \"#1e1a4d\",\n },\n violet: {\n \"50\": \"#f5f3ff\",\n \"100\": \"#ede9fe\",\n \"200\": \"#ddd6ff\",\n \"300\": \"#c4b4ff\",\n \"400\": \"#a684ff\",\n \"500\": \"#8e51ff\",\n \"600\": \"#7f22fe\",\n \"700\": \"#7008e7\",\n \"800\": \"#5d0ec0\",\n \"900\": \"#4d179a\",\n \"950\": \"#2f0d68\",\n },\n purple: {\n \"50\": \"#faf5ff\",\n \"100\": \"#f3e8ff\",\n \"200\": \"#e9d4ff\",\n \"300\": \"#dab2ff\",\n \"400\": \"#c27aff\",\n \"500\": \"#ad46ff\",\n \"600\": \"#9810fa\",\n \"700\": \"#8200db\",\n \"800\": \"#6e11b0\",\n \"900\": \"#59168b\",\n \"950\": \"#3c0366\",\n },\n fuchsia: {\n \"50\": \"#fdf4ff\",\n \"100\": \"#fae8ff\",\n \"200\": \"#f6cfff\",\n \"300\": \"#f4a8ff\",\n \"400\": \"#ed6aff\",\n \"500\": \"#e12afb\",\n \"600\": \"#c800de\",\n \"700\": \"#a800b7\",\n \"800\": \"#8a0194\",\n \"900\": \"#721378\",\n \"950\": \"#4b004f\",\n },\n pink: {\n \"50\": \"#fdf2f8\",\n \"100\": \"#fce7f3\",\n \"200\": \"#fccee8\",\n \"300\": \"#fda5d5\",\n \"400\": \"#fb64b6\",\n \"500\": \"#f6339a\",\n \"600\": \"#e60076\",\n \"700\": \"#c6005c\",\n \"800\": \"#a3004c\",\n \"900\": \"#861043\",\n \"950\": \"#510424\",\n },\n rose: {\n \"50\": \"#fff1f2\",\n \"100\": \"#ffe4e6\",\n \"200\": \"#ffccd3\",\n \"300\": \"#ffa1ad\",\n \"400\": \"#ff637e\",\n \"500\": \"#ff2056\",\n \"600\": \"#ec003f\",\n \"700\": \"#c70036\",\n \"800\": \"#a50036\",\n \"900\": \"#8b0836\",\n \"950\": \"#4d0218\",\n },\n neutral: {\n \"50\": \"#fafafa\",\n \"100\": \"#f5f5f5\",\n \"200\": \"#e5e5e5\",\n \"300\": \"#d4d4d4\",\n \"400\": \"#a1a1a1\",\n \"500\": \"#737373\",\n \"600\": \"#525252\",\n \"700\": \"#404040\",\n \"800\": \"#262626\",\n \"900\": \"#171717\",\n \"950\": \"#0a0a0a\",\n },\n slate: {\n \"50\": \"#f8fafc\",\n \"100\": \"#f1f5f9\",\n \"200\": \"#e2e8f0\",\n \"300\": \"#cad5e2\",\n \"400\": \"#90a1b9\",\n \"500\": \"#62748e\",\n \"600\": \"#45556c\",\n \"700\": \"#314158\",\n \"800\": \"#1d293d\",\n \"900\": \"#0f172b\",\n \"950\": \"#020618\",\n },\n gray: {\n \"50\": \"#f9fafb\",\n \"100\": \"#f3f4f6\",\n \"200\": \"#e5e7eb\",\n \"300\": \"#d1d5dc\",\n \"400\": \"#99a1af\",\n \"500\": \"#6a7282\",\n \"600\": \"#4a5565\",\n \"700\": \"#364153\",\n \"800\": \"#1e2939\",\n \"900\": \"#101828\",\n \"950\": \"#030712\",\n },\n zinc: {\n \"50\": \"#fafafa\",\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#9f9fa9\",\n \"500\": \"#71717b\",\n \"600\": \"#52525c\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n \"950\": \"#09090b\",\n },\n\n stone: {\n \"50\": \"#fafaf9\",\n \"100\": \"#f5f5f4\",\n \"200\": \"#e7e5e4\",\n \"300\": \"#d6d3d1\",\n \"400\": \"#a6a09b\",\n \"500\": \"#79716b\",\n \"600\": \"#57534d\",\n \"700\": \"#44403b\",\n \"800\": \"#292524\",\n \"900\": \"#1c1917\",\n \"950\": \"#0c0a09\",\n },\n mauve: {\n \"50\": \"#fafafa\",\n \"100\": \"#f3f1f3\",\n \"200\": \"#e7e4e7\",\n \"300\": \"#d7d0d7\",\n \"400\": \"#a89ea9\",\n \"500\": \"#79697b\",\n \"600\": \"#594c5b\",\n \"700\": \"#463947\",\n \"800\": \"#2a212c\",\n \"900\": \"#1d161e\",\n \"950\": \"#0c090c\",\n },\n olive: {\n \"50\": \"#fbfbf9\",\n \"100\": \"#f4f4f0\",\n \"200\": \"#e8e8e3\",\n \"300\": \"#d8d8d0\",\n \"400\": \"#abab9c\",\n \"500\": \"#7c7c67\",\n \"600\": \"#5b5b4b\",\n \"700\": \"#474739\",\n \"800\": \"#2b2b22\",\n \"900\": \"#1d1d16\",\n \"950\": \"#0c0c09\",\n },\n mist: {\n \"50\": \"#f9fbfb\",\n \"100\": \"#f1f3f3\",\n \"200\": \"#e3e7e8\",\n \"300\": \"#d0d6d8\",\n \"400\": \"#9ca8ab\",\n \"500\": \"#67787c\",\n \"600\": \"#4b585b\",\n \"700\": \"#394447\",\n \"800\": \"#22292b\",\n \"900\": \"#161b1d\",\n \"950\": \"#090b0c\",\n },\n taupe: {\n \"50\": \"#fbfaf9\",\n \"100\": \"#f3f1f1\",\n \"200\": \"#e8e4e3\",\n \"300\": \"#d8d2d0\",\n \"400\": \"#aba09c\",\n \"500\": \"#7c6d67\",\n \"600\": \"#5b4f4b\",\n \"700\": \"#473c39\",\n \"800\": \"#2b2422\",\n \"900\": \"#1d1816\",\n \"950\": \"#0c0a09\",\n },\n} as const;\n","import { rawColorsHex } from \"./colors.generated\";\n\nexport const colorByGroups = Object.entries(rawColorsHex)\n .filter(\n ([name, colorGroup]) =>\n // blueGray === slate\n // coolGray === gray\n // neutral === trueGray\n // stone === warmGray\n // ski === lightBlue\n typeof colorGroup !== \"string\" &&\n ![\"blueGray\", \"coolGray\", \"trueGray\", \"warmGray\", \"lightBlue\"].includes(name),\n )\n .map(([name, colorGroup]) => ({\n name,\n colors: Object.entries(colorGroup) as [string, string][],\n }));\n","import clsx from \"clsx\";\nimport { colorByGroups } from \"../../lib/color\";\nimport { RawColor } from \"./config\";\n\ninterface Props {\n value: RawColor | null;\n onChange: (value: RawColor) => void;\n}\n\nexport function RawColorGrid({ value, onChange }: Props) {\n return (\n <div className=\"grid-cols-repeat-fill-50 grid gap-1 text-center text-sm p-2\">\n {colorByGroups.map(({ name, colors }) => (\n <div key={name}>\n <div className=\"text-body-xs truncate\">{name}</div>\n <div className=\"grid shadow\">\n {colors.map(([colorNumber, colorCode]) => (\n <button\n key={colorNumber}\n className={clsx(\n \"cursor-pointer first-of-type:rounded-t-md last-of-type:rounded-b-md\",\n parseInt(colorNumber) > 600 ? \"text-white\" : \"text-black\",\n \"hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125\",\n value?.hex === colorCode &&\n \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n )}\n style={{ backgroundColor: colorCode }}\n onClick={() => onChange({ type: \"raw\", hex: colorCode })}\n >\n {colorNumber}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import clsx from \"clsx\";\nimport { colord, extend } from \"colord\";\nimport harmoniesPlugin, { type HarmonyType } from \"colord/plugins/harmonies\";\nimport { RawColor } from \"./config\";\nimport { colorButtonStyle } from \"./NamedColorGrid\";\nimport { useTranslate } from \"../i18n\";\n\nextend([harmoniesPlugin]);\n\nconst harmonyLabels: Record<HarmonyType, string> = {\n complementary: \"Complémentaire\",\n analogous: \"Analogue\",\n triadic: \"Triadique\",\n \"split-complementary\": \"Complémentaire divisée\",\n rectangle: \"Rectangle\",\n tetradic: \"Tétradique\",\n \"double-split-complementary\": \"Double complémentaire divisée\",\n};\n\nconst harmonyTypes = Object.keys(harmonyLabels) as HarmonyType[];\n\ninterface Props {\n refColor: RawColor;\n value: RawColor | null;\n onChange: (value: RawColor) => void;\n}\n\nexport function HarmonyColorGrid({ refColor, value, onChange }: Props) {\n const t = useTranslate();\n const baseColor = colord(refColor.hex);\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {harmonyTypes.map((harmonyType) => (\n <div key={harmonyType}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorHarmony.${harmonyType}`) ?? harmonyLabels[harmonyType]}\n </div>\n <div className=\"flex\">\n {baseColor.harmonies(harmonyType).map((harmonyColor, index) => {\n const hex = harmonyColor.toHex();\n return (\n <button\n key={index}\n type=\"button\"\n title={hex}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.hex === hex && colorButtonStyle.selected,\n )}\n style={{ backgroundColor: hex }}\n onClick={() => onChange({ type: \"raw\", hex })}\n />\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { Modal, ModalContent, ModalFooter } from \"pentatrion-design/modal\";\nimport { useState } from \"react\";\nimport { Field, FieldProps } from \"pentatrion-design/fields/field\";\nimport { NamedColorGrid } from \"./NamedColorGrid\";\nimport { Button } from \"pentatrion-design/button\";\nimport { ColorPreview } from \"./ColorPreview\";\nimport { Color, BrandPalette, RawColor } from \"./config\";\nimport { Tabs } from \"pentatrion-design/tabs\";\nimport { HexColorInput, HexColorPicker } from \"react-colorful\";\nimport { inputConfig } from \"pentatrion-design/fields/text\";\nimport clsx from \"clsx\";\nimport { useTranslate } from \"../i18n\";\nimport { RawColorGrid } from \"./RawColorGrid\";\nimport { HarmonyColorGrid } from \"./HarmonyColorGrid\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n palette?: BrandPalette;\n value: Color | null;\n refColor?: RawColor;\n onChange: (value: Color | null) => void;\n allowInherit?: boolean;\n variants?: number | number[];\n}\n\nexport function ColorPicker({\n palette,\n value,\n refColor,\n onChange,\n variants,\n allowInherit = false,\n ...rest\n}: Props) {\n const t = useTranslate();\n\n const [isOpen, setIsOpen] = useState(false);\n const [tempValue, setTempValue] = useState<null | Color>(null);\n const [tabId, setTabId] = useState<string | number>(\n value?.type === \"raw\" ? \"custom\" : palette ? \"palette\" : \"swatches\",\n );\n\n function handleSubmit() {\n onChange(tempValue);\n setIsOpen(false);\n }\n\n function handleInherit() {\n onChange(null);\n setIsOpen(false);\n }\n\n const tabs = [\n ...(palette\n ? [\n {\n id: \"palette\",\n title: t?.(\"common.brandPalette\") ?? \"Couleurs du thème\",\n content: (\n <NamedColorGrid\n palette={palette}\n value={tempValue?.type === \"named\" ? tempValue : null}\n onChange={setTempValue}\n variants={variants}\n />\n ),\n },\n ]\n : []),\n ...(refColor\n ? [\n {\n id: \"harmony\",\n title: t?.(\"common.harmonyColors\") ?? \"Harmonies\",\n content: (\n <HarmonyColorGrid\n refColor={refColor}\n value={tempValue?.type === \"raw\" ? tempValue : null}\n onChange={setTempValue}\n />\n ),\n },\n ]\n : []),\n {\n id: \"swatches\",\n title: t?.(\"common.colorSwatches\") ?? \"Nuancier\",\n content: (\n <RawColorGrid\n value={tempValue?.type === \"raw\" ? tempValue : null}\n onChange={setTempValue}\n />\n ),\n },\n {\n id: \"custom\",\n title: t?.(\"common.colorCustom\") ?? \"Sur mesure\",\n content: (\n <div className=\"p-2 flex flex-col gap-2 react-colorful-container\">\n <HexColorPicker\n color={tempValue?.type === \"raw\" ? tempValue.hex : undefined}\n onChange={(hex) => {\n setTempValue({ type: \"raw\", hex });\n }}\n />\n <div\n data-color=\"yellow\"\n data-variant=\"normal\"\n className={clsx(inputConfig.container, \"px-2\")}\n >\n <HexColorInput\n className={inputConfig.input}\n prefixed={true}\n color={tempValue?.type === \"raw\" ? tempValue.hex : undefined}\n onChange={(hex) => setTempValue({ type: \"raw\", hex })}\n />\n </div>\n </div>\n ),\n },\n ];\n\n return (\n <>\n <Field {...rest}>\n <ColorPreview\n type=\"button\"\n palette={palette}\n value={value}\n onClick={() => {\n setIsOpen(true);\n setTempValue(value);\n }}\n />\n </Field>\n <Modal\n open={isOpen}\n /* There is not Modal trigger, onOpen is called only by\n * FloatingOverlay to close the modal */\n onOpen={(modalKeepOpen) => !modalKeepOpen && setIsOpen(false)}\n >\n <ModalContent className=\"max-w-140\" zClassName=\"z-modal-overlay\">\n <div>\n <Tabs\n tabs={tabs}\n value={tabId}\n onChange={setTabId}\n contentClassName=\"h-[320px] overflow-auto\"\n className=\"rounded-t-2xl\"\n action={\n <Button icon variant=\"text\" color=\"gray\" onClick={() => setIsOpen(false)}>\n <i className=\"fe-cancel\"></i>\n </Button>\n }\n />\n </div>\n\n <ModalFooter className=\"mt-2\">\n <div className=\"flex justify-between\">\n <Button type=\"button\" variant=\"text\" color=\"gray\" onClick={() => setIsOpen(false)}>\n {t?.(\"button.cancel\") ?? \"Annuler\"}\n </Button>\n {allowInherit && (\n <Button icon type=\"button\" variant=\"outlined\" color=\"gray\" onClick={handleInherit}>\n <i className=\"fe-settings\"></i>\n <span>{t?.(\"form.values.color.inherit\") ?? \"Par défault\"}</span>\n </Button>\n )}\n <Button type=\"button\" color=\"yellow\" onClick={handleSubmit}>\n {t?.(\"button.validate\") ?? \"Valider\"}\n </Button>\n </div>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,MAAaC,aAAa;CAAC;CAAW;CAAa;CAAY;AAAM;AAGrE,MAAaG,mBAAmBJ,EAAEK,OAAO;CACvCC,MAAMN,EAAEO,QAAQ,OAAO;CACvBC,MAAMR,EAAES,KAAKR,UAAU;CACvBS,SAASV,EAAEW,OAAO;AACpB,CAAC;AAGD,MAAaG,oBAAgC;CAAEN,MAAM;CAAQE,SAAS;CAAMJ,MAAM;AAAQ;AAC1F,MAAaS,uBAAuB;AAEpC,MAAaC,iBAAiBhB,EAAEK,OAAO;CACrCC,MAAMN,EAAEO,QAAQ,KAAK;CACrBU,KAAKjB,EAAEkB,OAAO;AAChB,CAAC;AAGD,MAAaE,cAAcpB,EAAEqB,MAAM,CAACjB,kBAAkBY,cAAc,CAAC;AAKrE,MAAaS,qBAAqBzB,EAAEK,OAAO;CACzCqB,SAAS1B,EAAEkB,OAAO;CAClBS,WAAW3B,EAAE4B,SAAS5B,EAAE6B,SAAS7B,EAAEkB,OAAO,CAAC,GAAG,IAAI;CAClDY,UAAU9B,EAAE4B,SAAS5B,EAAE6B,SAAS7B,EAAEkB,OAAO,CAAC,GAAG,IAAI;CACjDa,MAAM/B,EAAEkB,OAAO;AACjB,CAAC;AAGD,MAAae,sBAAoC;CAC/CP,SAAS;CACTC,WAAW;CACXG,UAAU;CACVC,MAAM;AACR;;;ACrCA,SAAgBO,cACdC,OACAC,UAAUJ,qBACVK,gBAAgBJ,sBACR;CACR,IAAI,CAACE,OACH,OAAOE;CAGT,IAAIF,MAAMG,SAAS,OACjB,OAAOH,MAAMI;CAKf,OAAOG,mBAFMP,MAAMM,SAAS,SAAS,YAAaL,QAAQD,MAAMM,SAAS,cAExC,WAAWN,MAAMQ,OAAO;AAC3D;;;;;AAMA,SAAgBC,YAAYL,KAAsB;CAChD,MAAMM,aAAaN,IAAIO,QAAQ,KAAK,EAAE;CACtC,MAAMC,UAAUF,WAAWG,WAAW,KAAKH,WAAWG,WAAW;CACjE,MAAMC,OAAOF,UAAU,IAAI;CAE3B,MAAMG,IAAIC,SAASN,WAAWO,MAAM,GAAGH,IAAI,CAAC,CAACI,OAAON,UAAU,IAAI,CAAC,GAAG,EAAE;CACxE,MAAMO,IAAIH,SAASN,WAAWO,MAAMH,MAAMA,OAAO,CAAC,CAAC,CAACI,OAAON,UAAU,IAAI,CAAC,GAAG,EAAE;CAC/E,MAAMQ,IAAIJ,SAASN,WAAWO,MAAMH,OAAO,GAAGA,OAAO,CAAC,CAAC,CAACI,OAAON,UAAU,IAAI,CAAC,GAAG,EAAE;CAEnF,OAAOG,MAAMI,KAAKA,MAAMC;AAC1B;AAEA,SAAgBC,iBAAiBC,WAAsBrB,UAAUJ,qBAA8B;CAC7F,IAAIyB,cAAc,QAChB,OAAO;CAET,OAAO,CAAC,CAACrB,QAAQqB;AACnB;;;;;;;;AASA,SAAgBf,kBAAkBF,MAAcG,SAAyB;CACvE,IAAIA,YAAY,GACd,OAAOH;CAGT,OAAOG,UAAU,IACb,uBAAuBH,KAAI,GAAI,MAAMG,QAAO,aAC5C,uBAAuBH,KAAI,GAAI,MAAMkB,KAAKC,IAAIhB,OAAO,EAAC,KAAMC,YAAYJ,IAAI,IAAI,UAAU,sBAAqB;AACrH;;;AC9CA,MAAMmC,cAA2D;CAC/DE,SAAS;CACTC,WAAW;CACXC,UAAU;CACVC,MAAM;AACR;AAMA,SAASE,gBAAgBR,UAAuC;CAC9D,IAAIS,MAAMC,QAAQV,QAAQ,GACxB,OAAOA;CAET,MAAMW,MAAM;CAEZ,IAAIX,YAAY,GACd,OAAO,CAAC,CAAC;CAEX,OAAOS,MAAMI,KAAK,EAAEC,QAAQd,SAAS,IAAIe,GAAGC,MAC1CC,KAAKC,MAAMP,MAAOK,IAAKJ,OAAeZ,WAAW,EAAE,CACrD;AACF;AAEA,MAAamB,mBAAmB;CAC9BC,MAAM;CACNC,UAAU;AACZ;AAEA,SAAOC,eAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAwB,MAAA,EAAA5B,SAAA6B,IAAA5B,OAAAC,UAAAC,UAAA2B,OAAAJ;CAC7B,MAAA1B,UAAA6B,OAAAE,KAAAA,IAAAxC,sBAAAsC;CAGA,MAAA1B,WAAA2B,OAAAC,KAAAA,IAAA,IAAAD;CAEA,MAAAE,IAAUlC,aAAa;CAAE,IAAAmC;CAAA,IAAAN,EAAA,OAAAzB,YAAAyB,EAAA,OAAA3B,WAAA2B,EAAA,OAAAK,KAAAL,EAAA,OAAA1B,OAAAiC,QAAAP,EAAA,OAAA1B,OAAAkC,WAAAR,EAAA,OAAAxB,UAAA;EAAA,IAAAiC;EAAA,IAAAT,EAAA,OAAA3B,SAAA;GAKXoC,MAAAF,SAAUrC,iBAAiBqC,MAAMlC,OAAO;GAAC2B,EAAA,KAAA3B;GAAA2B,EAAA,KAAAS;EAAA,OAAAA,KAAAT,EAAA;EADlDM,KAAAvC,WAAU2C,OACDD,EAAyC,CAAC,CAAAE,KAC7CC,WAAA;GAGH,MAAAC,QAAc7B,gBAAgBR,QAAQ;GAAE,OAGtC,qBAAA,OAAA,EAAA,UAAA,CACE,oBAAA,OAAA;IAAe,WAAA;IACZ6B,UAAAA,IAAI,0BAA0BE,QAA2B,KAAhB9B,YAAY8B;GAClD,CAAA,GACN,oBAAA,OAAA;IAAe,WAAA;IACZM,UAAAA,MAAKF,KAAKH,YAAA;KACT,MAAAM,IAAiB;MAAAC,MAAQ;MAAOR,MAAEA;MAAIC;KAAU;KAChD,MAAAQ,IAAU/C,cAAc6C,GAAGzC,OAAO;KAAE,OAElC,oBAAA,UAAA;MAEO,MAAA;MACE,OAAA,GAAGyC,EAACP,KAAK,IAAKC,QAAO;MACjB,WAAA9C,KACT,cACAiC,iBAAgBC,MAChBtB,OAAKiC,SAAWA,UACdjC,OAAKkC,YAAcA,WACnBb,iBAAgBE,QACpB;MACO,OAAA,EAAAoB,iBAAmBD,EAAE;MACnB,eAAMzC,SAASuC,CAAC;KAAC,GAXrBN,OAWqB;IAC1B,CAEL;GACG,CAAA,CACF,EAAA,GA1BID,MA0BJ;EAAA,CAET;EAACP,EAAA,KAAAzB;EAAAyB,EAAA,KAAA3B;EAAA2B,EAAA,KAAAK;EAAAL,EAAA,KAAA1B,OAAAiC;EAAAP,EAAA,KAAA1B,OAAAkC;EAAAR,EAAA,KAAAxB;EAAAwB,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAK,GAAA;EAICI,KAAAJ,IAAI,sCAAwD,KAA5D;EAA6DL,EAAA,KAAAK;EAAAL,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,QAAAS,IAAA;EADhES,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZT,UAAAA;EACG,CAAA;EAAAT,EAAA,MAAAS;EAAAT,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,QAAAzB,YAAAyB,EAAA,QAAA1B,OAAAiC,QAAAP,EAAA,QAAA1B,OAAAkC,SAAA;EACNW,KAAA,oBAAA,OAAA;GAAe,WAAA;GACZ,UAAA,CAAC,MAAM,GAAG,CAAC,CAAAR,KAAKS,cAAA;IACf,MAAAC,MAAUrD,kBAAkB,WAAWwC,SAAO;IAAE,OAE9C,oBAAA,UAAA;KAEO,MAAA;KACE,OAAA,SAASA,UAAO;KACZ,WAAA9C,KACT,iCACAiC,iBAAgBC,MAChBtB,OAAKiC,SAAW,UAAUjC,OAAKkC,YAAcA,aAAWb,iBAAgBE,UACxEW,cAAY,OAAZ,sBACF;KACO,OAAA,EAAAS,iBAAmBH,IAAE;KACnB,eAAMvC,SAAS;MAAAwC,MAAQ;MAAOR,MAAQ;MAAMC,SAAEA;KAAQ,CAAC;IAAC,GAV5DA,SAU4D;GACjE,CAEL;EACG,CAAA;EAAAR,EAAA,MAAAzB;EAAAyB,EAAA,MAAA1B,OAAAiC;EAAAP,EAAA,MAAA1B,OAAAkC;EAAAR,EAAA,MAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAkB,MAAAlB,EAAA,QAAAmB,IAAA;EAvBRG,KAAA,qBAAA,OAAA,EAAA,UAAA,CACEJ,IAGAC,EAoBI,EAAA,CAAA;EAAAnB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAM,MAAAN,EAAA,QAAAsB,IAAA;EA/DRC,KAAA,qBAAA,OAAA;GAAe,WAAA;GAAf,UAAA,CACGjB,IAsCDgB,EAyBI;;EAAAtB,EAAA,MAAAM;EAAAN,EAAA,MAAAsB;EAAAtB,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAhENuB;AAgEM;;;AC/FV,SAAOwB,aAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAN;CAAA,IAAAH;CAAA,IAAAI;CAAA,IAAAM;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAAsB,CAAA,CAAAT,OAAAiB,cAAAlB,YAAAc,IAAAZ,OAAAa,IAAAZ,OAAAE,WAAAW,IAAAZ,SAAAa,IAAAX,WAAAC,KAAA,GAAAM,QAAAH;EAUTC,EAAA,KAAAD;EAAAC,EAAA,KAAAL;EAAAK,EAAA,KAAAR;EAAAQ,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAZ,YAAAK,EAAA;EAAAR,QAAAQ,EAAA;EAAAJ,MAAAI,EAAA;EAAAE,OAAAF,EAAA;EAAAG,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;EAAAO,eAAAP,EAAA;CAAA;CARlB,MAAAX,aAAAc,OAAAK,KAAAA,IAAA,OAAAL;CACA,MAAAZ,QAAAa,OAAAI,KAAAA,IAAA,WAAAJ;CAEA,MAAAV,YAAAW,OAAAG,KAAAA,IAAA,QAAAH;CACA,MAAAZ,UAAAa,OAAAE,KAAAA,IAAA1B,sBAAAwB;CAKA,MAAAG,IAAUvB,aAAa;CAAE,IAAAwB;CAAA,IAAAV,EAAA,QAAAO,cAAA;EAEvBG,KAAA,OAAOH,iBAAiB,WAAxB;GAAAI,MAA2C;GAAKC,KAAOL;EAAsC,IAApBA,gBAAA;EAAqBP,EAAA,MAAAO;EAAAP,EAAA,MAAAU;CAAA,OAAAA,KAAAV,EAAA;CADhG,MAAAV,QACEoB;CAA+F,IAAAG;CAAA,IAAAb,EAAA,QAAAR,SAAAQ,EAAA,QAAAN,aAAAM,EAAA,QAAAS,KAAAT,EAAA,QAAAV,OAAA;EAG/FuB,KAAArB,UACCF,QACGI,YACEJ,MAAKqB,SAAU,QACbrB,MAAKsB,MACLtB,MAAKwB,OAHT,OAKCL,IAAI,2BAA4C,KAAhD;EAAmDT,EAAA,MAAAR;EAAAQ,EAAA,MAAAN;EAAAM,EAAA,MAAAS;EAAAT,EAAA,MAAAV;EAAAU,EAAA,MAAAa;CAAA,OAAAA,KAAAb,EAAA;CAR1D,MAAAe,aACEF;CASF,MAAAG,YAAkBtC,OAA0B,IAAK;CAAE,IAAAuC;CAAA,IAAAjB,EAAA,QAAAkB,OAAAC,IAAA,2BAAA,GAAA;EAIjDF,WAAMD,UAASI;EAAQpB,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAFzBvB,oBACEmB,KACAqB,EACF;CAEA,MAAAI,UAAgBzC,UAAUoC,SAAS;CAS9B,MAAAM,KAAAjC,cAAAgC;CAIG,MAAAE,KAAAR,eAAe,QAAf;CAAiC,IAAAS;CAAA,IAAAxB,EAAA,QAAAL,aAAAK,EAAA,QAAAuB,IAAA;EAFxBC,MAAA7C,KACT,4GACA4C,IACA5B,SACF;EAACK,EAAA,MAAAL;EAAAK,EAAA,MAAAuB;EAAAvB,EAAA,MAAAwB;CAAA,OAAAA,MAAAxB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAP,WAAAO,EAAA,QAAAV,OAAA;EACyBmC,MAAAnC,QAAQN,cAAcM,OAAOG,OAAmB,IAAhDe,KAAAA;EAAiDR,EAAA,MAAAP;EAAAO,EAAA,MAAAV;EAAAU,EAAA,MAAAyB;CAAA,OAAAA,MAAAzB,EAAA;CAAA,IAAA0B;CAAA,IAAA1B,EAAA,QAAAyB,KAAA;EAApEC,MAAA,EAAAC,iBAAmBF,IAAkD;EAACzB,EAAA,MAAAyB;EAAAzB,EAAA,MAAA0B;CAAA,OAAAA,MAAA1B,EAAA;CAAA,IAAA4B;CAAA,IAAA5B,EAAA,QAAAwB,OAAAxB,EAAA,QAAA0B,KAAA;EAN/EE,MAAA,oBAAA,QAAA;GACa,WAAAJ;GAKJ,OAAAE;EAAsE,CAAA;EACvE1B,EAAA,MAAAwB;EAAAxB,EAAA,MAAA0B;EAAA1B,EAAA,MAAA4B;CAAA,OAAAA,MAAA5B,EAAA;CAIJ,MAAA6B,MAAAd,eAAe,QAAf;CAEA,MAAAe,MAAA,CAACxC,SAAD;CAA8C,IAAAyC;CAAA,IAAA/B,EAAA,QAAAL,aAAAK,EAAA,QAAA6B,OAAA7B,EAAA,QAAA8B,KAAA;EAJrCC,MAAApD,KACT,qEACAkD,KACAlC,WACAmC,GACF;EAAC9B,EAAA,MAAAL;EAAAK,EAAA,MAAA6B;EAAA7B,EAAA,MAAA8B;EAAA9B,EAAA,MAAA+B;CAAA,OAAAA,MAAA/B,EAAA;CAAA,IAAAgC;CAAA,IAAAhC,EAAA,QAAA+B,OAAA/B,EAAA,QAAAe,YAAA;EANHiB,MAAA,oBAAA,QAAA;GACa,WAAAD;GAOVhB,UAAAA;EACI,CAAA;EAAAf,EAAA,MAAA+B;EAAA/B,EAAA,MAAAe;EAAAf,EAAA,MAAAgC;CAAA,OAAAA,MAAAhC,EAAA;CAAA,IAAAiC;CAAA,IAAAjC,EAAA,QAAAT,SAAAS,EAAA,QAAAE,QAAAF,EAAA,QAAA4B,OAAA5B,EAAA,QAAAgC,OAAAhC,EAAA,QAAAsB,IAAA;EAxBTW,MAAA,qBAAA,UAAA;GACOjB,KAAAA;GACOzB,cAAAA;GACF,WAAA;GAA6H,GACnIW;GAJN,UAAA;IAMGoB;IACDM;IAQAI;GAUO;;EAAAhC,EAAA,MAAAT;EAAAS,EAAA,MAAAE;EAAAF,EAAA,MAAA4B;EAAA5B,EAAA,MAAAgC;EAAAhC,EAAA,MAAAsB;EAAAtB,EAAA,MAAAiC;CAAA,OAAAA,MAAAjC,EAAA;CAAA,OAzBTiC;AAyBS;;;AE9Eb,MAAa8B,gBAAgBC,OAAOC,QAAQH;CDA1C3B,KAAK;EACH,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,KAAK;EACH,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CAEAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EAC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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-DrWw7Gon.mjs","names":["FieldName","useField","Field","FieldProps","Input","InputProps","Props","Omit","Pick","name","TextField","t0","$","_c","color","disabled","forcedId","inputClassName","placeholder","prefix","prefixClassName","readOnly","rest","size","suffix","suffixClassName","type","variant","id","field","t1","defaultValue","t2","errors","getPasswordStrength","password","score","length","test","Math","min","gradientVariantFromScore","getFieldValue","useField","useFormData","FieldName","Field","FieldProps","Input","Button","useState","getPasswordStrength","gradientVariantFromScore","clsx","Props","Omit","name","showScore","PasswordField","t0","$","_c","forcedId","rest","t1","id","undefined","field","showPassword","setShowPassword","t2","formData","type","value","formId","T0","T1","t10","t11","t12","t3","t4","t5","t6","t7","t8","t9","defaultValue","errors","passwordScore","t13","Symbol","for","_temp","t14","width","s","useField","useControl","FieldName","Field","FieldProps","Input","slugify","ChangeEvent","Props","Omit","name","SlugField","id","forcedId","rest","field","control","defaultValue","handleChange","e","HTMLInputElement","change","target","value","handleBlur","blur","register","errors"],"sources":["../src/components/fields/text/TextField.tsx","../src/lib/pass-checker.ts","../src/components/fields/text/PasswordField.tsx","../src/components/fields/text/SlugField.tsx"],"sourcesContent":["import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input, type InputProps } from \"./Input\";\n\ntype Props = Omit<FieldProps, \"children\" | \"group\"> &\n Pick<\n InputProps,\n | \"type\"\n | \"placeholder\"\n | \"prefix\"\n | \"suffix\"\n | \"variant\"\n | \"color\"\n | \"size\"\n | \"disabled\"\n | \"readOnly\"\n | \"inputClassName\"\n | \"prefixClassName\"\n | \"suffixClassName\"\n > & {\n name: FieldName<string | number | null | undefined>;\n };\n\nexport function TextField({\n name,\n type,\n placeholder,\n prefix,\n suffix,\n variant,\n color,\n size,\n disabled,\n readOnly,\n inputClassName,\n prefixClassName,\n suffixClassName,\n id: forcedId,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n return (\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input\n name={field.name}\n defaultValue={field.defaultValue}\n type={type}\n placeholder={placeholder}\n prefix={prefix}\n suffix={suffix}\n variant={variant}\n color={color}\n size={size}\n disabled={disabled}\n readOnly={readOnly}\n inputClassName={inputClassName}\n prefixClassName={prefixClassName}\n suffixClassName={suffixClassName}\n />\n </Field>\n );\n}\n","export function getPasswordStrength(password: string = \"\"): number {\n let score = 0;\n const length = password.length;\n\n if (length === 0) {\n return 0;\n }\n\n if (length >= 8) score++; // Baseline minimale\n if (length >= 12) score++; // Longueur robuste\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) score++; // Majuscules + minuscules\n if (/\\d/.test(password)) score++; // Chiffres\n if (/[^A-Za-z0-9]/.test(password)) score++; // Caractères spéciaux\n\n // Ajustements pour éviter des scores trop élevés avec de faibles critères\n if (length < 8) return 1; // Trop court = très faible sécurité\n if (score === 5 && length < 10) score--; // Évite un score max avec un mot de passe trop court\n\n return Math.min(score, 5);\n}\n\nexport function gradientVariantFromScore(score: number) {\n if (score <= 1) {\n return \"from-red-5 to-red-3\";\n } else if (score <= 2) {\n return \"from-red-4 to-orange-3\";\n } else if (score <= 3) {\n return \"from-red-3 to-green-3\";\n } else if (score <= 4) {\n return \"from-orange-3 to-green-4\";\n } else {\n return \"from-green-4 to-green-4\";\n }\n}\n","import { getFieldValue, useField, useFormData, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input } from \"./Input\";\nimport { Button } from \"../../button\";\nimport { useState } from \"react\";\nimport { getPasswordStrength, gradientVariantFromScore } from \"../../../lib/pass-checker\";\nimport clsx from \"clsx\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | undefined | null>;\n showScore?: boolean;\n}\n\nexport function PasswordField({ name, showScore = false, id: forcedId, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const [showPassword, setShowPassword] = useState(false);\n\n const value = useFormData(field.formId, (formData) =>\n getFieldValue(formData, field.name, { type: \"string\" }),\n );\n\n const passwordScore = getPasswordStrength(value);\n\n return (\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input\n className=\"relative overflow-hidden\"\n suffix={\n <Button\n size=\"input\"\n type=\"button\"\n withRipple={true}\n icon\n variant=\"ghost\"\n color=\"gray\"\n onClick={() => setShowPassword((s) => !s)}\n >\n <i className={showPassword ? \"fe-eye\" : \"fe-eye-closed\"}></i>\n </Button>\n }\n defaultValue={field.defaultValue}\n name={field.name}\n type={showPassword ? \"text\" : \"password\"}\n >\n {showScore && (\n <div\n className=\"absolute bottom-0 left-0 h-[3px] overflow-hidden\"\n style={{ width: `${passwordScore * 20}%` }}\n >\n <div\n className={clsx(\n \"absolute right-0 -bottom-px left-0 h-[3px] rounded-xs bg-linear-to-r\",\n gradientVariantFromScore(passwordScore),\n )}\n ></div>\n </div>\n )}\n </Input>\n </Field>\n );\n}\n","import { useField, useControl, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Input } from \"./Input\";\nimport { slugify } from \"../../../lib/strUtil\";\nimport type { ChangeEvent } from \"react\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | null | undefined>;\n}\n\nexport function SlugField({ name, id: forcedId, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const control = useControl({\n defaultValue: field.defaultValue,\n });\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n control.change(slugify(e.target.value, false, false));\n }\n\n function handleBlur() {\n if (control.value) {\n control.change(slugify(control.value, false));\n }\n control.blur();\n }\n\n return (\n <>\n <input\n type=\"text\"\n hidden\n name={field.name}\n ref={control.register}\n defaultValue={field.defaultValue}\n />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Input value={control.value ?? \"\"} onBlur={handleBlur} onChange={handleChange} />\n </Field>\n </>\n );\n}\n"],"mappings":"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"}