pentatrion-design 1.3.6 → 1.3.7
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 +6 -0
- package/dist/{Snack-MJUjbc4-.mjs → Snack-Czn3AgDj.mjs} +1 -3
- package/dist/Snack-Czn3AgDj.mjs.map +1 -0
- package/dist/{color-BL19fpla.mjs → color-DY1l5kYS.mjs} +3 -82
- package/dist/color-DY1l5kYS.mjs.map +1 -0
- package/dist/components/autocomplete/index.mjs +0 -2
- package/dist/components/autocomplete/index.mjs.map +1 -1
- package/dist/components/color/index.d.mts +2 -1
- package/dist/components/color/index.mjs +2 -1
- package/dist/components/dropdown-menu/index.mjs +1 -1
- package/dist/components/fields/checkbox/index.mjs +0 -1
- package/dist/components/fields/checkbox/index.mjs.map +1 -1
- package/dist/components/fields/color/index.d.mts +2 -1
- package/dist/components/fields/color/index.d.mts.map +1 -1
- package/dist/components/fields/color/index.mjs +1 -1
- package/dist/components/fields/field/index.mjs +1 -1
- package/dist/components/fields/input-button/index.mjs +0 -1
- package/dist/components/fields/input-button/index.mjs.map +1 -1
- package/dist/components/fields/select/index.mjs +0 -2
- package/dist/components/fields/select/index.mjs.map +1 -1
- package/dist/components/fields/stars/index.mjs +0 -1
- package/dist/components/fields/stars/index.mjs.map +1 -1
- package/dist/components/fields/text/index.mjs +1 -1
- package/dist/components/fields/wysiwyg/index.mjs +1 -4
- package/dist/components/fields/wysiwyg/index.mjs.map +1 -1
- package/dist/components/notification/index.d.mts +1 -1
- package/dist/components/notification/index.mjs +1 -1
- package/dist/components/popover/index.mjs +0 -2
- package/dist/components/popover/index.mjs.map +1 -1
- package/dist/components/snack/index.mjs +1 -1
- package/dist/components/toast/index.mjs +1 -2
- package/dist/components/toast/index.mjs.map +1 -1
- package/dist/{dropdown-menu-DPA36icH.mjs → dropdown-menu-DfPq6da2.mjs} +1 -2
- package/dist/{dropdown-menu-DPA36icH.mjs.map → dropdown-menu-DfPq6da2.mjs.map} +1 -1
- package/dist/{field-CyUkOve7.mjs → field-DKDfHWvI.mjs} +1 -2
- package/dist/field-DKDfHWvI.mjs.map +1 -0
- package/dist/index-DtOdyi8e.d.mts +55 -0
- package/dist/index-DtOdyi8e.d.mts.map +1 -0
- package/dist/{index-Dx8EhTxo.d.mts → index-LDY3JreK.d.mts} +2 -1
- package/dist/index-LDY3JreK.d.mts.map +1 -0
- package/dist/lib/index.d.mts +3 -2
- package/dist/lib/index.mjs +78 -1
- package/dist/lib/index.mjs.map +1 -1
- package/dist/{index-Dg4usqQd.d.mts → palette-CnNPXdwC.d.mts} +5 -57
- package/dist/palette-CnNPXdwC.d.mts.map +1 -0
- package/dist/{text-B73vztfB.mjs → text-CpQ-JiGY.mjs} +1 -2
- package/dist/{text-B73vztfB.mjs.map → text-CpQ-JiGY.mjs.map} +1 -1
- package/package.json +4 -1
- package/src/components/color/ColorPicker.stories.tsx +1 -1
- package/src/components/color/ColorPreview.tsx +2 -2
- package/src/components/color/NamedColorGrid.stories.tsx +1 -1
- package/src/components/color/NamedColorGrid.tsx +7 -2
- package/src/components/color/config.ts +0 -8
- package/src/components/color/index.ts +1 -1
- package/src/lib/index.ts +1 -0
- package/src/{components/color/util.ts → lib/palette.ts} +10 -1
- package/dist/Snack-MJUjbc4-.mjs.map +0 -1
- package/dist/color-BL19fpla.mjs.map +0 -1
- package/dist/field-CyUkOve7.mjs.map +0 -1
- package/dist/index-Dg4usqQd.d.mts.map +0 -1
- package/dist/index-Dx8EhTxo.d.mts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { n as Loader } from "./loader-D7SvnPiX.mjs";
|
|
2
2
|
import { t as Button } from "./Button-D6kcS-PM.mjs";
|
|
3
|
-
import "./button-DWuLqVgP.mjs";
|
|
4
3
|
import { t as Dialog } from "./Dialog-CpSdL1-f.mjs";
|
|
5
|
-
import "./components/dialog/index.mjs";
|
|
6
4
|
import { c } from "react/compiler-runtime";
|
|
7
5
|
import { useEffect } from "react";
|
|
8
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -107,4 +105,4 @@ function _temp() {}
|
|
|
107
105
|
//#endregion
|
|
108
106
|
export { Snack as t };
|
|
109
107
|
|
|
110
|
-
//# sourceMappingURL=Snack-
|
|
108
|
+
//# sourceMappingURL=Snack-Czn3AgDj.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Snack-Czn3AgDj.mjs","names":["clsx","useEffect","Button","Dialog","Loader","Message","SnackProps","Partial","onRemove","Snack","t0","$","_c","expiration","t1","content","t2","color","t3","withLoader","t4","canClose","t5","t6","undefined","_temp","t7","t8","timeoutId","setTimeout","clearTimeout","t9","Symbol","for","t10","t11","t12","t13","t14","t15"],"sources":["../src/components/snack/Snack.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { useEffect } from \"react\";\n\nimport { Button } from \"../button\";\nimport { Dialog } from \"../dialog\";\nimport { Loader } from \"../loader\";\nimport { Message } from \"../../types\";\n\nexport type SnackProps = Partial<Message> & {\n onRemove?: () => void;\n};\n\nexport function Snack({\n expiration = 5000,\n content = \"\",\n color = \"yellow\",\n withLoader = false,\n canClose = false,\n onRemove = () => {},\n}: SnackProps) {\n useEffect(() => {\n if (expiration === -1) {\n return;\n }\n\n const timeoutId = setTimeout(() => onRemove(), expiration);\n return () => void clearTimeout(timeoutId);\n }, [onRemove, expiration]);\n\n return (\n <Dialog\n className={clsx(\"motion-safe:animate-fade-in pointer-events-auto\", \"ll-snack\")}\n placement=\"top\"\n color={color}\n role={color !== \"red\" ? \"status\" : \"alertdialog\"}\n >\n <div className=\"flex w-fit min-w-60 items-center px-2 py-1\">\n <span className=\"flex-1 pr-4\">{content}</span>\n {withLoader && <Loader size=\"small\" color=\"gray\" />}\n\n {canClose && (\n <Button icon variant=\"text\" color=\"gray\" onClick={onRemove}>\n <i className=\"fe-cancel\"></i>\n </Button>\n )}\n </div>\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { h as useRipple } from "./hooks-BQw3Dsve.mjs";
|
|
2
|
+
import { applyColorVariant, defaultBrandPalette, getColorValue, isColorAvailable } from "./lib/index.mjs";
|
|
2
3
|
import { t as Button } from "./Button-D6kcS-PM.mjs";
|
|
3
|
-
import "./button-DWuLqVgP.mjs";
|
|
4
4
|
import { n as inputConfig } from "./Input-BbXXGsv_.mjs";
|
|
5
5
|
import { a as ModalContent, n as ModalFooter, o as Modal } from "./modal-CTQiEtHr.mjs";
|
|
6
6
|
import { n as useTranslate } from "./i18n-B57GZqP3.mjs";
|
|
7
7
|
import { t as Field } from "./Field-DZmC5a1D.mjs";
|
|
8
|
-
import "./field-CyUkOve7.mjs";
|
|
9
8
|
import { t as Tabs } from "./tabs-Bve-fwd0.mjs";
|
|
10
|
-
import "./text-B73vztfB.mjs";
|
|
11
9
|
import { c } from "react/compiler-runtime";
|
|
12
10
|
import { useImperativeHandle, useRef, useState } from "react";
|
|
13
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -33,7 +31,6 @@ const defaultNamedColor = {
|
|
|
33
31
|
variant: -100,
|
|
34
32
|
type: "named"
|
|
35
33
|
};
|
|
36
|
-
const defaultFallbackColor = "#000000";
|
|
37
34
|
const rawColorSchema = z.object({
|
|
38
35
|
type: z.literal("raw"),
|
|
39
36
|
hex: z.string()
|
|
@@ -45,82 +42,6 @@ const brandPaletteSchema = z.object({
|
|
|
45
42
|
tertiary: z._default(z.nullable(z.string()), null),
|
|
46
43
|
gray: z.string()
|
|
47
44
|
});
|
|
48
|
-
const defaultBrandPalette = {
|
|
49
|
-
primary: "#ffca0a",
|
|
50
|
-
secondary: null,
|
|
51
|
-
tertiary: null,
|
|
52
|
-
gray: "#808080"
|
|
53
|
-
};
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/components/color/util.ts
|
|
56
|
-
function getColorValue(color, palette = defaultBrandPalette, fallbackColor = defaultFallbackColor) {
|
|
57
|
-
if (!color) return fallbackColor;
|
|
58
|
-
if (color.type === "raw") return color.hex;
|
|
59
|
-
return applyColorVariant((color.name === "gray" ? "#808080" : palette[color.name] ?? "#808080") ?? "#808080", color.variant);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Détermine si une couleur hexadécimale (#rgb, #rgba, #rrggbb, #rrggbbaa)
|
|
63
|
-
* est un niveau de gris, c'est-à-dire que ses composantes R, G et B sont égales.
|
|
64
|
-
*/
|
|
65
|
-
function isGrayScale(hex) {
|
|
66
|
-
const normalized = hex.replace("#", "");
|
|
67
|
-
const isShort = normalized.length === 3 || normalized.length === 4;
|
|
68
|
-
const step = isShort ? 1 : 2;
|
|
69
|
-
const r = parseInt(normalized.slice(0, step).repeat(isShort ? 2 : 1), 16);
|
|
70
|
-
const g = parseInt(normalized.slice(step, step * 2).repeat(isShort ? 2 : 1), 16);
|
|
71
|
-
const b = parseInt(normalized.slice(step * 2, step * 3).repeat(isShort ? 2 : 1), 16);
|
|
72
|
-
return r === g && g === b;
|
|
73
|
-
}
|
|
74
|
-
function isColorAvailable(colorName, palette = defaultBrandPalette) {
|
|
75
|
-
if (colorName === "gray") return true;
|
|
76
|
-
return !!palette[colorName];
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`
|
|
80
|
-
* pour variant > 0, vers un gris neutre foncé (`#323232`, pas `black` —
|
|
81
|
-
* mélanger vers du noir pur désature/salit la teinte) pour variant < 0.
|
|
82
|
-
* `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix
|
|
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.
|
|
86
|
-
*/
|
|
87
|
-
function applyColorVariant(base, variant) {
|
|
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;
|
|
123
|
-
}
|
|
124
45
|
//#endregion
|
|
125
46
|
//#region src/components/color/NamedColorGrid.tsx
|
|
126
47
|
const colorLabels = {
|
|
@@ -1220,6 +1141,6 @@ function ColorPicker(t0) {
|
|
|
1220
1141
|
return t36;
|
|
1221
1142
|
}
|
|
1222
1143
|
//#endregion
|
|
1223
|
-
export {
|
|
1144
|
+
export { NamedColorGrid as a, colorSchema as c, rawColorSchema as d, ColorPreview as i, defaultNamedColor as l, HarmonyColorGrid as n, brandPaletteSchema as o, RawColorGrid as r, colorNames as s, ColorPicker as t, namedColorSchema as u };
|
|
1224
1145
|
|
|
1225
|
-
//# sourceMappingURL=color-
|
|
1146
|
+
//# sourceMappingURL=color-DY1l5kYS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-DY1l5kYS.mjs","names":["z","colorNames","const","ColorName","namedColorSchema","object","type","literal","name","enum","variant","number","NamedColor","infer","defaultNamedColor","rawColorSchema","hex","string","RawColor","colorSchema","union","Color","ColorInput","input","brandPaletteSchema","primary","secondary","_default","nullable","tertiary","gray","BrandPalette","clsx","Color","BrandPalette","NamedColor","colorNames","applyColorVariant","defaultBrandPalette","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","BrandPalette","defaultBrandPalette","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/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\" };\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","import clsx from \"clsx\";\nimport { Color, BrandPalette, NamedColor, colorNames } from \"./config\";\nimport {\n applyColorVariant,\n defaultBrandPalette,\n getColorValue,\n isColorAvailable,\n} from \"../../lib/palette\";\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, BrandPalette } from \"./config\";\nimport { defaultBrandPalette, getColorValue } from \"../../lib/palette\";\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;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;E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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { n as Loader } from "../../loader-D7SvnPiX.mjs";
|
|
2
2
|
import { d as useStateDebounce, s as useIsomorphicLayoutEffect } from "../../hooks-BQw3Dsve.mjs";
|
|
3
3
|
import { t as Button } from "../../Button-D6kcS-PM.mjs";
|
|
4
|
-
import "../../button-DWuLqVgP.mjs";
|
|
5
4
|
import { t as Dialog } from "../../Dialog-CpSdL1-f.mjs";
|
|
6
|
-
import "../dialog/index.mjs";
|
|
7
5
|
import { n as inputConfig, r as sizeVariant } from "../../Input-BbXXGsv_.mjs";
|
|
8
6
|
import { c } from "react/compiler-runtime";
|
|
9
7
|
import { createContext, createElement, memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["useInteractions","createContext","useContext","OptionLike","AutocompleteContext","activeIndex","selection","getItemProps","ReturnType","handleSelect","index","useAutocomplete","context","Error","OptionLike","getOptionLabel","option","type","properties","label","getOptionValue","id","value","memo","useId","OptionLike","useListItem","useAutocomplete","clsx","getOptionLabel","getOptionValue","AutocompleteOptionProps","O","AutocompleteOption","props","$","_c","t0","label","id","activeIndex","selection","getItemProps","handleSelect","t1","ref","index","isActive","isSelected","t2","t3","t4","t5","onClick","t6","ChangeEvent","KeyboardEvent","useCallback","useMemo","useRef","useState","ReactNode","ComponentProps","CSSProperties","RefObject","OptionLike","Option","AutocompleteOption","AutocompleteOptionProps","FloatingFocusManager","FloatingList","FloatingPortal","Placement","autoUpdate","flip","offset","size","useDismiss","useFloating","useInteractions","useListNavigation","useRole","AutocompleteContext","clsx","getOptionLabel","getOptionValue","Button","Dialog","Loader","inputConfig","sizeVariant","ThemeColor","AutocompleteProps","icon","color","noSearchSuffix","suffix","placement","searchValue","onChangeSearchValue","value","selectionLabel","selection","O","onChangeSelection","option","options","autocompleteOptionComponent","props","loading","clearSearchButton","selectOnFocus","ref","HTMLInputElement","Autocomplete","className","autoFocus","placeholder","readOnly","rest","isOpen","setIsOpen","activeIndex","setActiveIndex","OptionComponent","listRef","Array","HTMLElement","refs","floatingStyles","context","open","onOpenChange","whileElementsMounted","middleware","padding","apply","rects","elements","availableHeight","Object","assign","floating","style","width","Math","max","reference","firstChild","firstElementChild","maxHeight","min","role","dismiss","listNav","onNavigate","virtual","loop","getReferenceProps","getFloatingProps","getItemProps","handleChangeSearchValue","e","target","current","handleSelect","index","newSelection","autocompleteContext","showClearSearchButton","trim","container","medium","setReference","input","onClick","document","activeElement","select","onChange","onMouseDown","length","onKeyDown","key","setFloating","map","useRef","useState","Autocomplete","AutocompleteProps","Option","OptionLike","useIsomorphicLayoutEffect","getOptionLabel","Props","Omit","O","SimpleAutocomplete","options","selection","onChangeSelection","rest","searchValue","setSearchValue","searchValueRef","current","inputRef","HTMLInputElement","document","activeElement","selectionLabel","filteredOptions","filter","option","optionLabel","toLowerCase","startsWith","useCallback","useEffect","useRef","useState","Autocomplete","AutocompleteProps","OptionLike","Option","getOptionLabel","useStateDebounce","useIsomorphicLayoutEffect","Props","Omit","O","onChangeSearchValueCallback","searchValue","Promise","debounce","LazyAutocomplete","selection","onChangeSelection","rest","searchValueDebounced","setSearchValue","searchValueRef","current","inputRef","HTMLInputElement","loading","setLoading","options","setOptions","handleChangeSelection","document","activeElement","selectionLabel","abort","trim","then","newOptions","catch","newValue","immediate"],"sources":["../../../src/components/autocomplete/useAutocompleteContext.ts","../../../src/components/autocomplete/util.ts","../../../src/components/autocomplete/AutocompleteOption.tsx","../../../src/components/autocomplete/Autocomplete.tsx","../../../src/components/autocomplete/SimpleAutocomplete.tsx","../../../src/components/autocomplete/LazyAutocomplete.tsx"],"sourcesContent":["import { useInteractions } from \"@floating-ui/react\";\nimport { createContext, useContext } from \"react\";\nimport { OptionLike } from \"../select-legacy\";\n\ninterface AutocompleteContext {\n activeIndex: number | null;\n selection: OptionLike | null;\n getItemProps: ReturnType<typeof useInteractions>[\"getItemProps\"];\n handleSelect: (index: number | null) => void;\n}\n\nexport const AutocompleteContext = createContext<AutocompleteContext | null>(null);\n\nexport function useAutocomplete() {\n const context = useContext(AutocompleteContext);\n if (context === null) {\n throw new Error(\"Autocomplete components must be wrapped in <Autocomplete>\");\n }\n return context;\n}\n","import { OptionLike } from \"../select-legacy\";\n\nexport function getOptionLabel(option: OptionLike) {\n switch (option.type) {\n case \"Feature\":\n return option.properties.label;\n default:\n return option.label;\n }\n}\n\nexport function getOptionValue(option: OptionLike) {\n switch (option.type) {\n case \"Feature\":\n return option.properties.id;\n default:\n return option.value;\n }\n}\n","import { memo, useId } from \"react\";\nimport { OptionLike } from \"../select-legacy\";\nimport { useListItem } from \"@floating-ui/react\";\nimport { useAutocomplete } from \"./useAutocompleteContext\";\nimport clsx from \"clsx\";\nimport { getOptionLabel, getOptionValue } from \"./util\";\n\nexport type AutocompleteOptionProps<O extends OptionLike> = O;\n\nexport const AutocompleteOption = memo(function AutocompleteOption<O extends OptionLike>(\n props: AutocompleteOptionProps<O>,\n) {\n const label = getOptionLabel(props);\n\n const id = useId();\n const { activeIndex, selection, getItemProps, handleSelect } = useAutocomplete();\n const { ref, index } = useListItem({ label });\n const isActive = activeIndex === index;\n const isSelected = selection ? getOptionValue(selection) === getOptionValue(props) : false;\n\n return (\n <div\n className={clsx(\"option\", isSelected ? \"bg-gray-2\" : isActive && \"bg-gray-1\")}\n ref={ref}\n role=\"option\"\n id={id}\n data-presentation=\"compact\"\n aria-selected={isActive}\n {...getItemProps({\n onClick: () => handleSelect(index),\n })}\n >\n {label}\n </div>\n );\n});\n","import {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n ReactNode,\n ComponentProps,\n CSSProperties,\n RefObject,\n} from \"react\";\nimport type { OptionLike, Option } from \"../select-legacy\";\nimport { AutocompleteOption, AutocompleteOptionProps } from \"./AutocompleteOption\";\nimport {\n FloatingFocusManager,\n FloatingList,\n FloatingPortal,\n Placement,\n autoUpdate,\n flip,\n offset,\n size,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n} from \"@floating-ui/react\";\nimport { AutocompleteContext } from \"./useAutocompleteContext\";\nimport clsx from \"clsx\";\n\nimport { getOptionLabel, getOptionValue } from \"./util\";\nimport { Button } from \"../button\";\nimport { Dialog } from \"../dialog\";\nimport { Loader } from \"../loader\";\nimport { inputConfig, sizeVariant } from \"../fields/text/Input\";\nimport { ThemeColor } from \"../../types\";\n\nexport interface AutocompleteProps<O extends OptionLike = Option> extends ComponentProps<\"input\"> {\n icon?: boolean | ReactNode;\n\n color?: ThemeColor;\n\n /**\n * render suffix only if selection and searchValue is empty\n */\n noSearchSuffix?: ReactNode;\n\n suffix?: ReactNode;\n\n placement?: Placement;\n /**\n * search string used as value for <input>\n */\n searchValue: string;\n /**\n * change handler when typing in the input\n * or when clicking on an option (the label value is passed)\n */\n onChangeSearchValue: (value: string, selectionLabel: boolean) => void;\n\n selection?: O | null;\n /**\n * select handler for a selection from the autocomplete's dropdown\n * the option object is passed when clicking on an option\n * null value is passed when typing a new character in the input search.\n */\n onChangeSelection: (option: O | null) => void;\n options: O[];\n\n autocompleteOptionComponent?: (props: AutocompleteOptionProps<O>) => ReactNode;\n\n loading?: boolean;\n\n clearSearchButton?: boolean;\n\n selectOnFocus?: boolean;\n\n ref?: RefObject<HTMLInputElement>;\n}\n\nexport function Autocomplete<O extends OptionLike = Option>({\n className,\n autoFocus = false,\n icon = true,\n color = \"yellow\",\n noSearchSuffix,\n suffix,\n placement = \"bottom\",\n placeholder = \"Search...\",\n selection = null,\n onChangeSelection,\n autocompleteOptionComponent,\n loading = false,\n clearSearchButton = false,\n searchValue,\n onChangeSearchValue,\n options,\n selectOnFocus = true,\n readOnly = false,\n ref,\n ...rest\n}: AutocompleteProps<O>) {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const OptionComponent = autocompleteOptionComponent ?? AutocompleteOption;\n\n const listRef = useRef<Array<HTMLElement | null>>([]);\n\n const { refs, floatingStyles, context } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(5),\n flip({ padding: 10 }),\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${Math.max(130, rects.reference.width)}px`,\n });\n const firstChild = elements.floating.firstElementChild as HTMLElement;\n if (firstChild) {\n firstChild.style.maxHeight = `${Math.min(availableHeight, 288)}px`;\n }\n },\n padding: 10,\n }),\n ],\n });\n\n const role = useRole(context, { role: \"listbox\" });\n const dismiss = useDismiss(context);\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n /* we want the real focus to stay on the input, so focus associated to active items is simulated */\n virtual: true,\n loop: true,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n role,\n dismiss,\n listNav,\n ]);\n\n function handleChangeSearchValue(e: ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n\n onChangeSearchValue(value, false);\n\n if (value !== searchValue && selection !== null) {\n onChangeSelection(null);\n setActiveIndex(null);\n return;\n }\n\n if (value) {\n setIsOpen(true);\n /**\n * bug whith LazyAutocomplete activeIndex is set to 0 but the options array has immediately 0 elements\n * so focus can't be set to the first Dom element.\n */\n setActiveIndex(listRef.current[0] ? 0 : null);\n } else {\n setIsOpen(false);\n setActiveIndex(null);\n }\n }\n\n const handleSelect = useCallback(\n (index: number | null) => {\n if (index === null) {\n onChangeSelection(null);\n } else if (options[index]) {\n const newSelection = options[index];\n onChangeSelection(newSelection);\n\n onChangeSearchValue(getOptionLabel(newSelection), true);\n }\n setActiveIndex(null);\n setIsOpen(false);\n },\n\n [options, onChangeSelection, onChangeSearchValue],\n );\n\n const autocompleteContext = useMemo(\n () => ({\n activeIndex,\n selection,\n getItemProps,\n handleSelect,\n }),\n [activeIndex, selection, getItemProps, handleSelect],\n );\n\n const showClearSearchButton =\n clearSearchButton && (searchValue.trim() !== \"\" || selection !== null);\n\n return (\n <div className={className} role=\"combobox\">\n <div\n className={clsx(inputConfig.container, sizeVariant.medium, readOnly && \"readonly\")}\n ref={refs.setReference}\n data-color={color}\n >\n {icon !== false && (\n <div className=\"flex-center relative\">\n <Loader loading={loading} size=\"input\" color=\"gray\" className=\"mr-2\">\n {icon === true ? <i className=\"fe-search text-body-md\"></i> : icon}\n </Loader>\n </div>\n )}\n <input\n autoComplete=\"off\"\n autoFocus={autoFocus}\n spellCheck=\"false\"\n className={clsx(inputConfig.input, icon === false && \"pl-4\")}\n ref={ref}\n type=\"search\"\n readOnly={readOnly}\n value={searchValue}\n placeholder={placeholder}\n aria-autocomplete=\"list\"\n {...getReferenceProps({\n onClick() {\n if (selectOnFocus) {\n // it's better to listen onClick instead of onFocus. the event is triggered later and there\n // was an issue if we listen on onFocus and user click on the text of the textarea with Firefox\n (document.activeElement as HTMLInputElement)?.select();\n }\n },\n onChange: handleChangeSearchValue,\n onMouseDown() {\n if (options.length === 0) {\n return;\n }\n /**\n * There is a already selection\n * and the only element available is the selection,\n * no need to display the dropdown.\n */\n // if (options.length === 1 && options[0].value === selection?.value) {\n // return;\n // }\n setIsOpen((isOpen) => !isOpen);\n },\n onKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\" && activeIndex != null) {\n handleSelect(activeIndex);\n }\n },\n })}\n {...rest}\n />\n <div className=\"flex-center relative\">\n {suffix}\n {showClearSearchButton && (\n <Button\n size=\"input\"\n type=\"button\"\n withRipple={false}\n icon\n color=\"gray\"\n variant=\"text\"\n onClick={() => {\n setIsOpen(false);\n onChangeSelection(null);\n setActiveIndex(null);\n onChangeSearchValue(\"\", true);\n }}\n >\n <i className=\"fe-cancel\"></i>\n </Button>\n )}\n {icon === false && loading && <Loader size=\"medium\" color=\"gray\" />}\n {!selection && searchValue === \"\" && noSearchSuffix}\n </div>\n </div>\n <FloatingPortal>\n <AutocompleteContext.Provider value={autocompleteContext}>\n {isOpen && (\n <FloatingFocusManager\n disabled={selectOnFocus}\n context={context}\n initialFocus={-1}\n visuallyHiddenDismiss\n >\n <div\n className=\"z-dialog outline-hidden\"\n ref={refs.setFloating}\n style={floatingStyles as CSSProperties}\n {...getFloatingProps()}\n >\n <Dialog\n placement={context.placement}\n className=\"motion-safe:animate-fade-in-list overflow-auto\"\n >\n <FloatingList elementsRef={listRef}>\n {options.map((option) => {\n return <OptionComponent {...option} key={getOptionValue(option)} />;\n })}\n </FloatingList>\n </Dialog>\n </div>\n </FloatingFocusManager>\n )}\n </AutocompleteContext.Provider>\n </FloatingPortal>\n </div>\n );\n}\n","import { useRef, useState } from \"react\";\nimport { Autocomplete, AutocompleteProps } from \"./Autocomplete\";\nimport { Option, OptionLike } from \"../select-legacy\";\nimport { useIsomorphicLayoutEffect } from \"../../hooks\";\nimport { getOptionLabel } from \"./util\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface Props<O extends OptionLike = Option> extends Omit<\n AutocompleteProps<O>,\n \"searchValue\" | \"onChangeSearchValue\" | \"loading\" | \"clearSearchButton\" | \"selectOnFocus\"\n> {}\n\nexport function SimpleAutocomplete<O extends OptionLike = Option>({\n options,\n selection = null,\n onChangeSelection,\n ...rest\n}: Props<O>) {\n const [searchValue, setSearchValue] = useState(selection ? getOptionLabel(selection) : \"\");\n\n const searchValueRef = useRef(searchValue);\n searchValueRef.current = searchValue;\n\n const inputRef = useRef<HTMLInputElement>(null!);\n\n // side effect, update the searchValue <input /> value when\n // selection come from outside\n useIsomorphicLayoutEffect(() => {\n if (selection === null) {\n if (document.activeElement !== inputRef.current) {\n setSearchValue(\"\");\n }\n return;\n }\n\n // we need the fresh value of searchValue but we don't\n // want searchValue as useEffect dependency\n const selectionLabel = getOptionLabel(selection);\n if (searchValueRef.current !== getOptionLabel(selection)) {\n setSearchValue(selectionLabel);\n }\n }, [selection, setSearchValue]);\n\n const filteredOptions =\n selection !== null\n ? []\n : options.filter((option) => {\n const optionLabel = getOptionLabel(option);\n return optionLabel.toLowerCase().startsWith(searchValue.toLowerCase());\n });\n\n return (\n <Autocomplete\n ref={inputRef}\n searchValue={searchValue}\n onChangeSearchValue={setSearchValue}\n selection={selection}\n onChangeSelection={onChangeSelection}\n options={filteredOptions}\n {...rest}\n />\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Autocomplete, AutocompleteProps } from \"./Autocomplete\";\nimport { OptionLike, Option } from \"../select-legacy\";\nimport { getOptionLabel } from \"./util\";\nimport { useStateDebounce, useIsomorphicLayoutEffect } from \"../../hooks\";\n\ninterface Props<O extends OptionLike = Option>\n // Omit \"searchValue\" | \"onChangeSearchValue\" | \"options\"\n extends Omit<\n AutocompleteProps<O>,\n \"searchValue\" | \"onChangeSearchValue\" | \"options\" | \"selectOnFocus\"\n > {\n onChangeSearchValueCallback: (searchValue: string) => Promise<O[]>;\n debounce?: number;\n}\n\nexport function LazyAutocomplete<O extends OptionLike = Option>({\n onChangeSearchValueCallback,\n debounce = 5000,\n selection = null,\n onChangeSelection,\n ...rest\n}: Props<O>) {\n const [searchValue, searchValueDebounced, setSearchValue] = useStateDebounce(\n selection ? getOptionLabel(selection) : \"\",\n debounce,\n );\n\n const searchValueRef = useRef(searchValue);\n searchValueRef.current = searchValue;\n\n const inputRef = useRef<HTMLInputElement>(null!);\n\n const [loading, setLoading] = useState(false);\n\n const [options, setOptions] = useState<O[]>([]);\n\n const handleChangeSelection = useCallback(\n (selection: O | null) => {\n onChangeSelection(selection);\n if (selection) {\n setOptions([]);\n }\n },\n [onChangeSelection],\n );\n\n // side effect, update the searchValue <input /> value when\n // selection come from outside\n useIsomorphicLayoutEffect(() => {\n if (selection === null) {\n if (document.activeElement !== inputRef.current) {\n setSearchValue(\"\", true);\n }\n return;\n }\n\n // we need the fresh value of searchValue but we don't\n // want searchValue as useEffect dependency\n const selectionLabel = getOptionLabel(selection);\n if (searchValueRef.current !== selectionLabel) {\n setSearchValue(selectionLabel, true);\n }\n }, [selection, setSearchValue]);\n\n /**\n * set new options when searchValueDebounced change\n */\n useEffect(() => {\n let abort = false;\n\n // when we're selecting option we change searchValue to be the complete label\n // value but we don't want to fetch new research\n if (selection) {\n return;\n }\n\n if (searchValueDebounced.trim() === \"\") {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n onChangeSearchValueCallback(searchValueDebounced)\n ?.then((newOptions) => {\n setLoading(false);\n\n if (!abort) {\n setOptions(newOptions);\n }\n })\n .catch(() => {\n setLoading(false);\n });\n\n return () => {\n setLoading(false);\n abort = true;\n };\n }, [selection, searchValueDebounced, onChangeSearchValueCallback]);\n\n return (\n <Autocomplete\n ref={inputRef}\n searchValue={searchValue}\n onChangeSearchValue={(newValue, immediate) => {\n setSearchValue(newValue, immediate || newValue === \"\" ? true : false);\n }}\n selection={selection}\n onChangeSelection={handleChangeSelection}\n options={options}\n loading={loading}\n {...rest}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["useInteractions","createContext","useContext","OptionLike","AutocompleteContext","activeIndex","selection","getItemProps","ReturnType","handleSelect","index","useAutocomplete","context","Error","OptionLike","getOptionLabel","option","type","properties","label","getOptionValue","id","value","memo","useId","OptionLike","useListItem","useAutocomplete","clsx","getOptionLabel","getOptionValue","AutocompleteOptionProps","O","AutocompleteOption","props","$","_c","t0","label","id","activeIndex","selection","getItemProps","handleSelect","t1","ref","index","isActive","isSelected","t2","t3","t4","t5","onClick","t6","ChangeEvent","KeyboardEvent","useCallback","useMemo","useRef","useState","ReactNode","ComponentProps","CSSProperties","RefObject","OptionLike","Option","AutocompleteOption","AutocompleteOptionProps","FloatingFocusManager","FloatingList","FloatingPortal","Placement","autoUpdate","flip","offset","size","useDismiss","useFloating","useInteractions","useListNavigation","useRole","AutocompleteContext","clsx","getOptionLabel","getOptionValue","Button","Dialog","Loader","inputConfig","sizeVariant","ThemeColor","AutocompleteProps","icon","color","noSearchSuffix","suffix","placement","searchValue","onChangeSearchValue","value","selectionLabel","selection","O","onChangeSelection","option","options","autocompleteOptionComponent","props","loading","clearSearchButton","selectOnFocus","ref","HTMLInputElement","Autocomplete","className","autoFocus","placeholder","readOnly","rest","isOpen","setIsOpen","activeIndex","setActiveIndex","OptionComponent","listRef","Array","HTMLElement","refs","floatingStyles","context","open","onOpenChange","whileElementsMounted","middleware","padding","apply","rects","elements","availableHeight","Object","assign","floating","style","width","Math","max","reference","firstChild","firstElementChild","maxHeight","min","role","dismiss","listNav","onNavigate","virtual","loop","getReferenceProps","getFloatingProps","getItemProps","handleChangeSearchValue","e","target","current","handleSelect","index","newSelection","autocompleteContext","showClearSearchButton","trim","container","medium","setReference","input","onClick","document","activeElement","select","onChange","onMouseDown","length","onKeyDown","key","setFloating","map","useRef","useState","Autocomplete","AutocompleteProps","Option","OptionLike","useIsomorphicLayoutEffect","getOptionLabel","Props","Omit","O","SimpleAutocomplete","options","selection","onChangeSelection","rest","searchValue","setSearchValue","searchValueRef","current","inputRef","HTMLInputElement","document","activeElement","selectionLabel","filteredOptions","filter","option","optionLabel","toLowerCase","startsWith","useCallback","useEffect","useRef","useState","Autocomplete","AutocompleteProps","OptionLike","Option","getOptionLabel","useStateDebounce","useIsomorphicLayoutEffect","Props","Omit","O","onChangeSearchValueCallback","searchValue","Promise","debounce","LazyAutocomplete","selection","onChangeSelection","rest","searchValueDebounced","setSearchValue","searchValueRef","current","inputRef","HTMLInputElement","loading","setLoading","options","setOptions","handleChangeSelection","document","activeElement","selectionLabel","abort","trim","then","newOptions","catch","newValue","immediate"],"sources":["../../../src/components/autocomplete/useAutocompleteContext.ts","../../../src/components/autocomplete/util.ts","../../../src/components/autocomplete/AutocompleteOption.tsx","../../../src/components/autocomplete/Autocomplete.tsx","../../../src/components/autocomplete/SimpleAutocomplete.tsx","../../../src/components/autocomplete/LazyAutocomplete.tsx"],"sourcesContent":["import { useInteractions } from \"@floating-ui/react\";\nimport { createContext, useContext } from \"react\";\nimport { OptionLike } from \"../select-legacy\";\n\ninterface AutocompleteContext {\n activeIndex: number | null;\n selection: OptionLike | null;\n getItemProps: ReturnType<typeof useInteractions>[\"getItemProps\"];\n handleSelect: (index: number | null) => void;\n}\n\nexport const AutocompleteContext = createContext<AutocompleteContext | null>(null);\n\nexport function useAutocomplete() {\n const context = useContext(AutocompleteContext);\n if (context === null) {\n throw new Error(\"Autocomplete components must be wrapped in <Autocomplete>\");\n }\n return context;\n}\n","import { OptionLike } from \"../select-legacy\";\n\nexport function getOptionLabel(option: OptionLike) {\n switch (option.type) {\n case \"Feature\":\n return option.properties.label;\n default:\n return option.label;\n }\n}\n\nexport function getOptionValue(option: OptionLike) {\n switch (option.type) {\n case \"Feature\":\n return option.properties.id;\n default:\n return option.value;\n }\n}\n","import { memo, useId } from \"react\";\nimport { OptionLike } from \"../select-legacy\";\nimport { useListItem } from \"@floating-ui/react\";\nimport { useAutocomplete } from \"./useAutocompleteContext\";\nimport clsx from \"clsx\";\nimport { getOptionLabel, getOptionValue } from \"./util\";\n\nexport type AutocompleteOptionProps<O extends OptionLike> = O;\n\nexport const AutocompleteOption = memo(function AutocompleteOption<O extends OptionLike>(\n props: AutocompleteOptionProps<O>,\n) {\n const label = getOptionLabel(props);\n\n const id = useId();\n const { activeIndex, selection, getItemProps, handleSelect } = useAutocomplete();\n const { ref, index } = useListItem({ label });\n const isActive = activeIndex === index;\n const isSelected = selection ? getOptionValue(selection) === getOptionValue(props) : false;\n\n return (\n <div\n className={clsx(\"option\", isSelected ? \"bg-gray-2\" : isActive && \"bg-gray-1\")}\n ref={ref}\n role=\"option\"\n id={id}\n data-presentation=\"compact\"\n aria-selected={isActive}\n {...getItemProps({\n onClick: () => handleSelect(index),\n })}\n >\n {label}\n </div>\n );\n});\n","import {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n ReactNode,\n ComponentProps,\n CSSProperties,\n RefObject,\n} from \"react\";\nimport type { OptionLike, Option } from \"../select-legacy\";\nimport { AutocompleteOption, AutocompleteOptionProps } from \"./AutocompleteOption\";\nimport {\n FloatingFocusManager,\n FloatingList,\n FloatingPortal,\n Placement,\n autoUpdate,\n flip,\n offset,\n size,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n useRole,\n} from \"@floating-ui/react\";\nimport { AutocompleteContext } from \"./useAutocompleteContext\";\nimport clsx from \"clsx\";\n\nimport { getOptionLabel, getOptionValue } from \"./util\";\nimport { Button } from \"../button\";\nimport { Dialog } from \"../dialog\";\nimport { Loader } from \"../loader\";\nimport { inputConfig, sizeVariant } from \"../fields/text/Input\";\nimport { ThemeColor } from \"../../types\";\n\nexport interface AutocompleteProps<O extends OptionLike = Option> extends ComponentProps<\"input\"> {\n icon?: boolean | ReactNode;\n\n color?: ThemeColor;\n\n /**\n * render suffix only if selection and searchValue is empty\n */\n noSearchSuffix?: ReactNode;\n\n suffix?: ReactNode;\n\n placement?: Placement;\n /**\n * search string used as value for <input>\n */\n searchValue: string;\n /**\n * change handler when typing in the input\n * or when clicking on an option (the label value is passed)\n */\n onChangeSearchValue: (value: string, selectionLabel: boolean) => void;\n\n selection?: O | null;\n /**\n * select handler for a selection from the autocomplete's dropdown\n * the option object is passed when clicking on an option\n * null value is passed when typing a new character in the input search.\n */\n onChangeSelection: (option: O | null) => void;\n options: O[];\n\n autocompleteOptionComponent?: (props: AutocompleteOptionProps<O>) => ReactNode;\n\n loading?: boolean;\n\n clearSearchButton?: boolean;\n\n selectOnFocus?: boolean;\n\n ref?: RefObject<HTMLInputElement>;\n}\n\nexport function Autocomplete<O extends OptionLike = Option>({\n className,\n autoFocus = false,\n icon = true,\n color = \"yellow\",\n noSearchSuffix,\n suffix,\n placement = \"bottom\",\n placeholder = \"Search...\",\n selection = null,\n onChangeSelection,\n autocompleteOptionComponent,\n loading = false,\n clearSearchButton = false,\n searchValue,\n onChangeSearchValue,\n options,\n selectOnFocus = true,\n readOnly = false,\n ref,\n ...rest\n}: AutocompleteProps<O>) {\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const OptionComponent = autocompleteOptionComponent ?? AutocompleteOption;\n\n const listRef = useRef<Array<HTMLElement | null>>([]);\n\n const { refs, floatingStyles, context } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(5),\n flip({ padding: 10 }),\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${Math.max(130, rects.reference.width)}px`,\n });\n const firstChild = elements.floating.firstElementChild as HTMLElement;\n if (firstChild) {\n firstChild.style.maxHeight = `${Math.min(availableHeight, 288)}px`;\n }\n },\n padding: 10,\n }),\n ],\n });\n\n const role = useRole(context, { role: \"listbox\" });\n const dismiss = useDismiss(context);\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n /* we want the real focus to stay on the input, so focus associated to active items is simulated */\n virtual: true,\n loop: true,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n role,\n dismiss,\n listNav,\n ]);\n\n function handleChangeSearchValue(e: ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n\n onChangeSearchValue(value, false);\n\n if (value !== searchValue && selection !== null) {\n onChangeSelection(null);\n setActiveIndex(null);\n return;\n }\n\n if (value) {\n setIsOpen(true);\n /**\n * bug whith LazyAutocomplete activeIndex is set to 0 but the options array has immediately 0 elements\n * so focus can't be set to the first Dom element.\n */\n setActiveIndex(listRef.current[0] ? 0 : null);\n } else {\n setIsOpen(false);\n setActiveIndex(null);\n }\n }\n\n const handleSelect = useCallback(\n (index: number | null) => {\n if (index === null) {\n onChangeSelection(null);\n } else if (options[index]) {\n const newSelection = options[index];\n onChangeSelection(newSelection);\n\n onChangeSearchValue(getOptionLabel(newSelection), true);\n }\n setActiveIndex(null);\n setIsOpen(false);\n },\n\n [options, onChangeSelection, onChangeSearchValue],\n );\n\n const autocompleteContext = useMemo(\n () => ({\n activeIndex,\n selection,\n getItemProps,\n handleSelect,\n }),\n [activeIndex, selection, getItemProps, handleSelect],\n );\n\n const showClearSearchButton =\n clearSearchButton && (searchValue.trim() !== \"\" || selection !== null);\n\n return (\n <div className={className} role=\"combobox\">\n <div\n className={clsx(inputConfig.container, sizeVariant.medium, readOnly && \"readonly\")}\n ref={refs.setReference}\n data-color={color}\n >\n {icon !== false && (\n <div className=\"flex-center relative\">\n <Loader loading={loading} size=\"input\" color=\"gray\" className=\"mr-2\">\n {icon === true ? <i className=\"fe-search text-body-md\"></i> : icon}\n </Loader>\n </div>\n )}\n <input\n autoComplete=\"off\"\n autoFocus={autoFocus}\n spellCheck=\"false\"\n className={clsx(inputConfig.input, icon === false && \"pl-4\")}\n ref={ref}\n type=\"search\"\n readOnly={readOnly}\n value={searchValue}\n placeholder={placeholder}\n aria-autocomplete=\"list\"\n {...getReferenceProps({\n onClick() {\n if (selectOnFocus) {\n // it's better to listen onClick instead of onFocus. the event is triggered later and there\n // was an issue if we listen on onFocus and user click on the text of the textarea with Firefox\n (document.activeElement as HTMLInputElement)?.select();\n }\n },\n onChange: handleChangeSearchValue,\n onMouseDown() {\n if (options.length === 0) {\n return;\n }\n /**\n * There is a already selection\n * and the only element available is the selection,\n * no need to display the dropdown.\n */\n // if (options.length === 1 && options[0].value === selection?.value) {\n // return;\n // }\n setIsOpen((isOpen) => !isOpen);\n },\n onKeyDown(e: KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\" && activeIndex != null) {\n handleSelect(activeIndex);\n }\n },\n })}\n {...rest}\n />\n <div className=\"flex-center relative\">\n {suffix}\n {showClearSearchButton && (\n <Button\n size=\"input\"\n type=\"button\"\n withRipple={false}\n icon\n color=\"gray\"\n variant=\"text\"\n onClick={() => {\n setIsOpen(false);\n onChangeSelection(null);\n setActiveIndex(null);\n onChangeSearchValue(\"\", true);\n }}\n >\n <i className=\"fe-cancel\"></i>\n </Button>\n )}\n {icon === false && loading && <Loader size=\"medium\" color=\"gray\" />}\n {!selection && searchValue === \"\" && noSearchSuffix}\n </div>\n </div>\n <FloatingPortal>\n <AutocompleteContext.Provider value={autocompleteContext}>\n {isOpen && (\n <FloatingFocusManager\n disabled={selectOnFocus}\n context={context}\n initialFocus={-1}\n visuallyHiddenDismiss\n >\n <div\n className=\"z-dialog outline-hidden\"\n ref={refs.setFloating}\n style={floatingStyles as CSSProperties}\n {...getFloatingProps()}\n >\n <Dialog\n placement={context.placement}\n className=\"motion-safe:animate-fade-in-list overflow-auto\"\n >\n <FloatingList elementsRef={listRef}>\n {options.map((option) => {\n return <OptionComponent {...option} key={getOptionValue(option)} />;\n })}\n </FloatingList>\n </Dialog>\n </div>\n </FloatingFocusManager>\n )}\n </AutocompleteContext.Provider>\n </FloatingPortal>\n </div>\n );\n}\n","import { useRef, useState } from \"react\";\nimport { Autocomplete, AutocompleteProps } from \"./Autocomplete\";\nimport { Option, OptionLike } from \"../select-legacy\";\nimport { useIsomorphicLayoutEffect } from \"../../hooks\";\nimport { getOptionLabel } from \"./util\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface Props<O extends OptionLike = Option> extends Omit<\n AutocompleteProps<O>,\n \"searchValue\" | \"onChangeSearchValue\" | \"loading\" | \"clearSearchButton\" | \"selectOnFocus\"\n> {}\n\nexport function SimpleAutocomplete<O extends OptionLike = Option>({\n options,\n selection = null,\n onChangeSelection,\n ...rest\n}: Props<O>) {\n const [searchValue, setSearchValue] = useState(selection ? getOptionLabel(selection) : \"\");\n\n const searchValueRef = useRef(searchValue);\n searchValueRef.current = searchValue;\n\n const inputRef = useRef<HTMLInputElement>(null!);\n\n // side effect, update the searchValue <input /> value when\n // selection come from outside\n useIsomorphicLayoutEffect(() => {\n if (selection === null) {\n if (document.activeElement !== inputRef.current) {\n setSearchValue(\"\");\n }\n return;\n }\n\n // we need the fresh value of searchValue but we don't\n // want searchValue as useEffect dependency\n const selectionLabel = getOptionLabel(selection);\n if (searchValueRef.current !== getOptionLabel(selection)) {\n setSearchValue(selectionLabel);\n }\n }, [selection, setSearchValue]);\n\n const filteredOptions =\n selection !== null\n ? []\n : options.filter((option) => {\n const optionLabel = getOptionLabel(option);\n return optionLabel.toLowerCase().startsWith(searchValue.toLowerCase());\n });\n\n return (\n <Autocomplete\n ref={inputRef}\n searchValue={searchValue}\n onChangeSearchValue={setSearchValue}\n selection={selection}\n onChangeSelection={onChangeSelection}\n options={filteredOptions}\n {...rest}\n />\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Autocomplete, AutocompleteProps } from \"./Autocomplete\";\nimport { OptionLike, Option } from \"../select-legacy\";\nimport { getOptionLabel } from \"./util\";\nimport { useStateDebounce, useIsomorphicLayoutEffect } from \"../../hooks\";\n\ninterface Props<O extends OptionLike = Option>\n // Omit \"searchValue\" | \"onChangeSearchValue\" | \"options\"\n extends Omit<\n AutocompleteProps<O>,\n \"searchValue\" | \"onChangeSearchValue\" | \"options\" | \"selectOnFocus\"\n > {\n onChangeSearchValueCallback: (searchValue: string) => Promise<O[]>;\n debounce?: number;\n}\n\nexport function LazyAutocomplete<O extends OptionLike = Option>({\n onChangeSearchValueCallback,\n debounce = 5000,\n selection = null,\n onChangeSelection,\n ...rest\n}: Props<O>) {\n const [searchValue, searchValueDebounced, setSearchValue] = useStateDebounce(\n selection ? getOptionLabel(selection) : \"\",\n debounce,\n );\n\n const searchValueRef = useRef(searchValue);\n searchValueRef.current = searchValue;\n\n const inputRef = useRef<HTMLInputElement>(null!);\n\n const [loading, setLoading] = useState(false);\n\n const [options, setOptions] = useState<O[]>([]);\n\n const handleChangeSelection = useCallback(\n (selection: O | null) => {\n onChangeSelection(selection);\n if (selection) {\n setOptions([]);\n }\n },\n [onChangeSelection],\n );\n\n // side effect, update the searchValue <input /> value when\n // selection come from outside\n useIsomorphicLayoutEffect(() => {\n if (selection === null) {\n if (document.activeElement !== inputRef.current) {\n setSearchValue(\"\", true);\n }\n return;\n }\n\n // we need the fresh value of searchValue but we don't\n // want searchValue as useEffect dependency\n const selectionLabel = getOptionLabel(selection);\n if (searchValueRef.current !== selectionLabel) {\n setSearchValue(selectionLabel, true);\n }\n }, [selection, setSearchValue]);\n\n /**\n * set new options when searchValueDebounced change\n */\n useEffect(() => {\n let abort = false;\n\n // when we're selecting option we change searchValue to be the complete label\n // value but we don't want to fetch new research\n if (selection) {\n return;\n }\n\n if (searchValueDebounced.trim() === \"\") {\n setOptions([]);\n return;\n }\n\n setLoading(true);\n\n onChangeSearchValueCallback(searchValueDebounced)\n ?.then((newOptions) => {\n setLoading(false);\n\n if (!abort) {\n setOptions(newOptions);\n }\n })\n .catch(() => {\n setLoading(false);\n });\n\n return () => {\n setLoading(false);\n abort = true;\n };\n }, [selection, searchValueDebounced, onChangeSearchValueCallback]);\n\n return (\n <Autocomplete\n ref={inputRef}\n searchValue={searchValue}\n onChangeSearchValue={(newValue, immediate) => {\n setSearchValue(newValue, immediate || newValue === \"\" ? true : false);\n }}\n selection={selection}\n onChangeSelection={handleChangeSelection}\n options={options}\n loading={loading}\n {...rest}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as defaultNamedColor, a as isColorAvailable, c as BrandPalette, d as ColorName, f as NamedColor, g as colorSchema, h as colorNames, i as getColorValue, l as Color, m as brandPaletteSchema, n as defaultBrandPalette, o as isColorDark, p as RawColor, r as defaultFallbackColor, s as isGrayScale, t as applyColorVariant, u as ColorInput, v as namedColorSchema, y as rawColorSchema } from "../../palette-CnNPXdwC.mjs";
|
|
2
|
+
import { a as ColorPicker, i as ColorPreview, n as RawColorGrid, r as NamedColorGrid, t as HarmonyColorGrid } from "../../index-DtOdyi8e.mjs";
|
|
2
3
|
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,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { applyColorVariant, defaultBrandPalette, defaultFallbackColor, getColorValue, isColorAvailable, isColorDark, isGrayScale } from "../../lib/index.mjs";
|
|
2
|
+
import { a as NamedColorGrid, c as colorSchema, d as rawColorSchema, i as ColorPreview, l as defaultNamedColor, n as HarmonyColorGrid, o as brandPaletteSchema, r as RawColorGrid, s as colorNames, t as ColorPicker, u as namedColorSchema } from "../../color-DY1l5kYS.mjs";
|
|
2
3
|
export { ColorPicker, ColorPreview, HarmonyColorGrid, NamedColorGrid, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isColorDark, isGrayScale, namedColorSchema, rawColorSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as useDropdownMenuContext, i as DropdownMenuContext, n as DropdownMenu, r as useDropdownMenu, t as DropdownMenuItem } from "../../dropdown-menu-
|
|
1
|
+
import { a as useDropdownMenuContext, i as DropdownMenuContext, n as DropdownMenu, r as useDropdownMenu, t as DropdownMenuItem } from "../../dropdown-menu-DfPq6da2.mjs";
|
|
2
2
|
export { DropdownMenu, DropdownMenuContext, DropdownMenuItem, useDropdownMenu, useDropdownMenuContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["ComponentProps","RefObject","ThemeColor","clsx","ButtonProps","buttonVariants","CheckboxProps","indeterminate","disabled","color","shape","ref","HTMLInputElement","Checkbox","t0","$","_c","children","className","rest","t1","t2","t3","undefined","t4","Symbol","for","t5","t6","t7","t8","t9","t10","CheckboxButtonProps","Omit","variant","size","width","icon","showInput","CheckboxButton","FieldName","useField","Field","FieldProps","Checkbox","Props","Omit","name","checkboxLabel","CheckboxField","t0","$","_c","forcedId","rest","id","field","t1","defaultChecked","t2","errors","FieldName","useField","Field","FieldProps","SelectOption","Checkbox","clsx","Props","Omit","name","options","direction","CheckboxesField","t0","$","_c","className","forcedId","rest","id","field","t1","fieldErrors","Object","values","flat","itemErrors","errors","length","undefined","t2","t3","t4","defaultOptions","t5","option","value","includes","label","map","t6"],"sources":["../../../../src/components/fields/checkbox/Checkbox.tsx","../../../../src/components/fields/checkbox/CheckboxField.tsx","../../../../src/components/fields/checkbox/CheckboxesField.tsx"],"sourcesContent":["import { ComponentProps, RefObject } from \"react\";\nimport { type ThemeColor } from \"../../../types\";\nimport clsx from \"clsx\";\nimport { ButtonProps, buttonVariants } from \"../../button\";\n\nexport interface CheckboxProps extends ComponentProps<\"input\"> {\n indeterminate?: boolean;\n disabled?: boolean;\n color?: ThemeColor;\n shape?: \"square\" | \"circle\";\n ref?: RefObject<HTMLInputElement>;\n}\n\nexport function Checkbox({\n color = \"yellow\",\n shape = \"square\",\n indeterminate,\n disabled = false,\n className,\n children,\n ref,\n ...rest\n}: CheckboxProps) {\n return (\n <label aria-disabled={disabled} className={clsx(\"flex cursor-pointer items-center\")}>\n <input\n data-color={color}\n ref={ref}\n type=\"checkbox\"\n className={clsx(\n \"p8n-input-checkbox\",\n \"my-1 mr-2 inline-block h-6 w-6 shrink-0 cursor-pointer appearance-none bg-origin-border p-0 outline-offset-0 select-none\",\n shape === \"square\" ? \"rounded-sm\" : \"rounded-full\",\n indeterminate && \"indeterminate\",\n className,\n )}\n {...(disabled ? { disabled } : {})}\n {...rest}\n />\n {children}\n </label>\n );\n}\n\ninterface CheckboxButtonProps extends Omit<ComponentProps<\"input\">, \"size\"> {\n disabled?: boolean;\n color?: ButtonProps[\"color\"];\n variant?: ButtonProps[\"variant\"];\n size?: ButtonProps[\"size\"];\n width?: ButtonProps[\"width\"];\n icon?: boolean;\n showInput?: boolean;\n ref?: RefObject<HTMLInputElement>;\n}\nexport function CheckboxButton({\n color = \"yellow\",\n disabled = false,\n width = \"fit\",\n size,\n icon,\n showInput,\n variant,\n className,\n children,\n ref,\n ...rest\n}: CheckboxButtonProps) {\n return (\n <label\n aria-disabled={disabled}\n className={clsx(\n className,\n showInput && \"pr-2 pl-1\",\n buttonVariants({ variant, size, icon: icon || showInput, width }),\n )}\n data-color={color}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n className={clsx(\n showInput\n ? \"p8n-input-checkbox my-1 mr-2 inline-block h-6 w-6 shrink-0 cursor-pointer appearance-none rounded-2xl bg-origin-border p-0 outline-offset-0 select-none\"\n : \"h-0 w-0 translate-x-[-9999px] overflow-hidden\",\n //indeterminate && \"indeterminate\",\n className,\n )}\n {...(disabled ? { disabled } : {})}\n {...rest}\n />\n {children}\n </label>\n );\n}\n","import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, FieldProps } from \"../field/Field\";\nimport { Checkbox } from \"./Checkbox\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n name: FieldName<boolean | undefined>;\n checkboxLabel: string;\n}\n\nexport function CheckboxField({ name, checkboxLabel, id: forcedId, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n return (\n <Field id={id} errors={field.errors} data-testid={name} {...rest}>\n <Checkbox name={field.name} defaultChecked={field.defaultChecked}>\n {checkboxLabel}\n </Checkbox>\n </Field>\n );\n}\n","import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, FieldProps } from \"../field/Field\";\nimport { SelectOption } from \"../select/types\";\nimport { Checkbox } from \"./Checkbox\";\nimport clsx from \"clsx\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n name: FieldName<(string | number)[] | null | undefined>;\n options: SelectOption[];\n direction?: \"horizontal\" | \"vertical\";\n}\n\nexport function CheckboxesField({\n name,\n options,\n id: forcedId,\n direction,\n className,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const itemErrors = Object.values(field.fieldErrors).flat();\n const errors = field.errors ?? (itemErrors.length > 0 ? itemErrors : undefined);\n\n return (\n <Field id={id} group errors={errors} data-testid={name} {...rest}>\n <div\n className={clsx(\n className,\n !className &&\n direction === \"horizontal\" &&\n \"sm:grid-cols-repeat-fill-160 grid grid-cols-2 gap-x-2 lg:gap-x-4\",\n )}\n >\n {options.map((option) => (\n <Checkbox\n key={option.value}\n name={name}\n value={option.value}\n defaultChecked={field.defaultOptions?.includes(option.value)}\n >\n {option.label}\n </Checkbox>\n ))}\n </div>\n </Field>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["ComponentProps","RefObject","ThemeColor","clsx","ButtonProps","buttonVariants","CheckboxProps","indeterminate","disabled","color","shape","ref","HTMLInputElement","Checkbox","t0","$","_c","children","className","rest","t1","t2","t3","undefined","t4","Symbol","for","t5","t6","t7","t8","t9","t10","CheckboxButtonProps","Omit","variant","size","width","icon","showInput","CheckboxButton","FieldName","useField","Field","FieldProps","Checkbox","Props","Omit","name","checkboxLabel","CheckboxField","t0","$","_c","forcedId","rest","id","field","t1","defaultChecked","t2","errors","FieldName","useField","Field","FieldProps","SelectOption","Checkbox","clsx","Props","Omit","name","options","direction","CheckboxesField","t0","$","_c","className","forcedId","rest","id","field","t1","fieldErrors","Object","values","flat","itemErrors","errors","length","undefined","t2","t3","t4","defaultOptions","t5","option","value","includes","label","map","t6"],"sources":["../../../../src/components/fields/checkbox/Checkbox.tsx","../../../../src/components/fields/checkbox/CheckboxField.tsx","../../../../src/components/fields/checkbox/CheckboxesField.tsx"],"sourcesContent":["import { ComponentProps, RefObject } from \"react\";\nimport { type ThemeColor } from \"../../../types\";\nimport clsx from \"clsx\";\nimport { ButtonProps, buttonVariants } from \"../../button\";\n\nexport interface CheckboxProps extends ComponentProps<\"input\"> {\n indeterminate?: boolean;\n disabled?: boolean;\n color?: ThemeColor;\n shape?: \"square\" | \"circle\";\n ref?: RefObject<HTMLInputElement>;\n}\n\nexport function Checkbox({\n color = \"yellow\",\n shape = \"square\",\n indeterminate,\n disabled = false,\n className,\n children,\n ref,\n ...rest\n}: CheckboxProps) {\n return (\n <label aria-disabled={disabled} className={clsx(\"flex cursor-pointer items-center\")}>\n <input\n data-color={color}\n ref={ref}\n type=\"checkbox\"\n className={clsx(\n \"p8n-input-checkbox\",\n \"my-1 mr-2 inline-block h-6 w-6 shrink-0 cursor-pointer appearance-none bg-origin-border p-0 outline-offset-0 select-none\",\n shape === \"square\" ? \"rounded-sm\" : \"rounded-full\",\n indeterminate && \"indeterminate\",\n className,\n )}\n {...(disabled ? { disabled } : {})}\n {...rest}\n />\n {children}\n </label>\n );\n}\n\ninterface CheckboxButtonProps extends Omit<ComponentProps<\"input\">, \"size\"> {\n disabled?: boolean;\n color?: ButtonProps[\"color\"];\n variant?: ButtonProps[\"variant\"];\n size?: ButtonProps[\"size\"];\n width?: ButtonProps[\"width\"];\n icon?: boolean;\n showInput?: boolean;\n ref?: RefObject<HTMLInputElement>;\n}\nexport function CheckboxButton({\n color = \"yellow\",\n disabled = false,\n width = \"fit\",\n size,\n icon,\n showInput,\n variant,\n className,\n children,\n ref,\n ...rest\n}: CheckboxButtonProps) {\n return (\n <label\n aria-disabled={disabled}\n className={clsx(\n className,\n showInput && \"pr-2 pl-1\",\n buttonVariants({ variant, size, icon: icon || showInput, width }),\n )}\n data-color={color}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n className={clsx(\n showInput\n ? \"p8n-input-checkbox my-1 mr-2 inline-block h-6 w-6 shrink-0 cursor-pointer appearance-none rounded-2xl bg-origin-border p-0 outline-offset-0 select-none\"\n : \"h-0 w-0 translate-x-[-9999px] overflow-hidden\",\n //indeterminate && \"indeterminate\",\n className,\n )}\n {...(disabled ? { disabled } : {})}\n {...rest}\n />\n {children}\n </label>\n );\n}\n","import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, FieldProps } from \"../field/Field\";\nimport { Checkbox } from \"./Checkbox\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n name: FieldName<boolean | undefined>;\n checkboxLabel: string;\n}\n\nexport function CheckboxField({ name, checkboxLabel, id: forcedId, ...rest }: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n return (\n <Field id={id} errors={field.errors} data-testid={name} {...rest}>\n <Checkbox name={field.name} defaultChecked={field.defaultChecked}>\n {checkboxLabel}\n </Checkbox>\n </Field>\n );\n}\n","import { FieldName, useField } from \"@conform-to/react/future\";\nimport { Field, FieldProps } from \"../field/Field\";\nimport { SelectOption } from \"../select/types\";\nimport { Checkbox } from \"./Checkbox\";\nimport clsx from \"clsx\";\n\ninterface Props extends Omit<FieldProps, \"children\" | \"group\"> {\n name: FieldName<(string | number)[] | null | undefined>;\n options: SelectOption[];\n direction?: \"horizontal\" | \"vertical\";\n}\n\nexport function CheckboxesField({\n name,\n options,\n id: forcedId,\n direction,\n className,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n const itemErrors = Object.values(field.fieldErrors).flat();\n const errors = field.errors ?? (itemErrors.length > 0 ? itemErrors : undefined);\n\n return (\n <Field id={id} group errors={errors} data-testid={name} {...rest}>\n <div\n className={clsx(\n className,\n !className &&\n direction === \"horizontal\" &&\n \"sm:grid-cols-repeat-fill-160 grid grid-cols-2 gap-x-2 lg:gap-x-4\",\n )}\n >\n {options.map((option) => (\n <Checkbox\n key={option.value}\n name={name}\n value={option.value}\n defaultChecked={field.defaultOptions?.includes(option.value)}\n >\n {option.label}\n </Checkbox>\n ))}\n </div>\n </Field>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { n as FieldProps } from "../../../Field-DhaPMGcl.mjs";
|
|
2
2
|
import "../../../index-D47GgUvX.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { c as BrandPalette, p as RawColor, u as ColorInput } from "../../../palette-CnNPXdwC.mjs";
|
|
4
|
+
import "../../../index-DtOdyi8e.mjs";
|
|
4
5
|
import { FieldName } from "@conform-to/react/future";
|
|
5
6
|
//#region src/components/fields/color/HexColorField.d.ts
|
|
6
7
|
interface Props$1 extends Omit<FieldProps, "children" | "group"> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/color/HexColorField.tsx","../../../../src/components/fields/color/AdvancedColorField.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/color/HexColorField.tsx","../../../../src/components/fields/color/AdvancedColorField.tsx"],"mappings":";;;;;;UAIU,gBAAc,KAAK;EAC3B,MAAM;EACN;EACA,WAAW;;iBAGG,gBAAgB,MAAM,IAAI,UAAU,iBAAyB,QAAQ,0BAAK,IAAA;;;UCNhF,cAAc,KAAK;EAC3B,MAAM,UAAU;EAChB;EACA,UAAU;EACV,WAAW;;iBAGG,qBACd,MACA,IAAI,UACJ,cACA,SACA,aACG,QACF,wBAAK,IAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as ColorPicker } from "../../../color-
|
|
1
|
+
import { t as ColorPicker } from "../../../color-DY1l5kYS.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
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { t as Button } from "../../../Button-D6kcS-PM.mjs";
|
|
2
|
-
import "../../../button-DWuLqVgP.mjs";
|
|
3
2
|
import { n as inputConfig, r as sizeVariant } from "../../../Input-BbXXGsv_.mjs";
|
|
4
3
|
import { c } from "react/compiler-runtime";
|
|
5
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|