pentatrion-design 1.2.12 → 1.2.14

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/CLAUDE.md +25 -0
  3. package/dist/{Button-Dtp-UNzH.mjs → Button-D6kcS-PM.mjs} +2 -2
  4. package/dist/{Button-Dtp-UNzH.mjs.map → Button-D6kcS-PM.mjs.map} +1 -1
  5. package/dist/{Snack-CoeHh5qF.mjs → Snack-MJUjbc4-.mjs} +4 -4
  6. package/dist/{Snack-CoeHh5qF.mjs.map → Snack-MJUjbc4-.mjs.map} +1 -1
  7. package/dist/{button-CqXVbdMx.mjs → button-DWuLqVgP.mjs} +2 -2
  8. package/dist/{button-CqXVbdMx.mjs.map → button-DWuLqVgP.mjs.map} +1 -1
  9. package/dist/components/autocomplete/index.mjs +3 -3
  10. package/dist/components/button/index.mjs +2 -2
  11. package/dist/components/dropdown-menu-nested/index.mjs +1 -1
  12. package/dist/components/fields/checkbox/index.mjs +2 -2
  13. package/dist/components/fields/color/index.d.mts +10 -3
  14. package/dist/components/fields/color/index.d.mts.map +1 -1
  15. package/dist/components/fields/color/index.mjs +54 -21
  16. package/dist/components/fields/color/index.mjs.map +1 -1
  17. package/dist/components/fields/file/index.mjs +2 -2
  18. package/dist/components/fields/input-button/index.mjs +2 -2
  19. package/dist/components/fields/radio/index.mjs +2 -2
  20. package/dist/components/fields/select/index.mjs +2 -2
  21. package/dist/components/fields/stars/index.mjs +2 -2
  22. package/dist/components/fields/text/index.mjs +1 -1
  23. package/dist/components/fields/wysiwyg/index.d.mts.map +1 -1
  24. package/dist/components/fields/wysiwyg/index.mjs +4 -4
  25. package/dist/components/fields/wysiwyg/index.mjs.map +1 -1
  26. package/dist/components/loader/index.d.mts.map +1 -1
  27. package/dist/components/loader/index.mjs +1 -1
  28. package/dist/components/modal/index.mjs +1 -1
  29. package/dist/components/notification/index.mjs +1 -1
  30. package/dist/components/popover/index.mjs +2 -2
  31. package/dist/components/select-legacy/index.mjs +1 -1
  32. package/dist/components/snack/index.mjs +1 -1
  33. package/dist/components/tabs/index.mjs +58 -46
  34. package/dist/components/tabs/index.mjs.map +1 -1
  35. package/dist/components/toast/index.mjs +1 -1
  36. package/dist/{loader-CBd61lYX.mjs → loader-D7SvnPiX.mjs} +7 -7
  37. package/dist/loader-D7SvnPiX.mjs.map +1 -0
  38. package/dist/{modal-OMEOCOF0.mjs → modal-CTQiEtHr.mjs} +3 -3
  39. package/dist/modal-CTQiEtHr.mjs.map +1 -0
  40. package/dist/{text-Cm7qVcmx.mjs → text-DrWw7Gon.mjs} +3 -3
  41. package/dist/{text-Cm7qVcmx.mjs.map → text-DrWw7Gon.mjs.map} +1 -1
  42. package/package.json +1 -1
  43. package/src/components/fields/color/ColorField.tsx +6 -33
  44. package/src/components/fields/color/ColorSwatchGrid.tsx +36 -0
  45. package/src/components/fields/color/index.ts +1 -0
  46. package/src/components/fields/wysiwyg/style.ts +18 -15
  47. package/src/components/loader/RoundedRectLoader.tsx +4 -4
  48. package/src/components/modal/ModalContent.tsx +4 -1
  49. package/src/components/tabs/Tabs.tsx +31 -27
  50. package/src/tailwind/prose.css +2 -0
  51. package/src/tailwind/theme.css +2 -2
  52. package/dist/loader-CBd61lYX.mjs.map +0 -1
  53. package/dist/modal-OMEOCOF0.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## 1.2.14
2
+
3
+ ### Patch Changes
4
+
5
+ - 701f1c0: add ColorSwatchGrid
6
+ - 701f1c0: responsive wysiwyg
7
+
8
+ ## 1.2.13
9
+
10
+ ### Patch Changes
11
+
12
+ - cd5ab7d: enhance modal
13
+
1
14
  ## 1.2.12
2
15
 
3
16
  ### Patch Changes
package/CLAUDE.md ADDED
@@ -0,0 +1,25 @@
1
+ # Langue
2
+
3
+ - Toujours s'exprimer en français dans les réponses (échanges de conversation avec le développeur).
4
+
5
+ # Conventions de code
6
+
7
+ - Ne pas ajouter de commentaire dans le code sauf s'il précise quelque chose que la seule lecture du code ne permet pas de deviner (contrainte cachée, workaround, comportement surprenant). Si le commentaire ne fait que redire ce que fait le code (ex: `// section hero`, `// on incrémente le compteur`), ne pas l'ajouter.
8
+
9
+ # Tests
10
+
11
+ - Ne pas lancer de tests avec Playwright (ou outils équivalents de pilotage de navigateur), cela consomme beaucoup de ressources. Demander à l'utilisateur avant d'en lancer.
12
+
13
+ # Typecheck
14
+
15
+ - Préférer `tsgo --build --noEmit` à `npx tsc --noEmit` (script `package.json`) : plus rapide.
16
+
17
+ # Méthode de travail entre Claude et le développeur
18
+
19
+ C'est un projet où je privilégie la qualité.
20
+
21
+ 1. Je ne suis pas pressé.
22
+ 2. On favorise la qualité.
23
+ 3. Tu n'écris rien, c'est moi qui écris tout, mais tu me dis ce qu'il faut écrire et pourquoi.
24
+ 4. Ne me redemande jamais la permission d'implémenter (pas de question type "veux-tu que j'implémente ?", via AskUserQuestion ou autrement) : la réponse est toujours non par défaut ici. Une fois la marche à suivre exposée, arrête-toi là.
25
+ 5. Sur les constats de qualité (pas de sécurité critique), privilégier une solution pragmatique quand elle couvre la majorité des cas réels, plutôt que la solution architecturalement complète si celle-ci coûte nettement plus cher à écrire, comprendre et maintenir dans la durée. Ce n'est pas "couper les coins" : présenter les deux options (la complète et la pragmatique) avec leur compromis, mais ne pas pousser vers la complète par défaut — je choisirai en connaissance de cause.
@@ -1,4 +1,4 @@
1
- import { n as Loader, t as RoundedRectLoader } from "./loader-CBd61lYX.mjs";
1
+ import { n as Loader, t as RoundedRectLoader } from "./loader-D7SvnPiX.mjs";
2
2
  import { h as useRipple } from "./hooks-BQw3Dsve.mjs";
3
3
  import { t as Slot } from "./slot-D8EJRq72.mjs";
4
4
  import { c } from "react/compiler-runtime";
@@ -212,4 +212,4 @@ function Button(t0) {
212
212
  //#endregion
213
213
  export { buttonVariants as n, Button as t };
214
214
 
215
- //# sourceMappingURL=Button-Dtp-UNzH.mjs.map
215
+ //# sourceMappingURL=Button-D6kcS-PM.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-Dtp-UNzH.mjs","names":["ComponentProps","RefObject","useImperativeHandle","useRef","clsx","Loader","RoundedRectLoader","useRipple","Slot","cva","ThemeColor","loaderColor","color","ButtonProps","Omit","withRipple","variant","size","width","loading","disabled","focusable","selected","icon","asChild","ref","HTMLButtonElement","buttonVariants","variants","clickable","true","false","small","medium","large","input","custom","scalable","fit","full","contained","light","outlined","text","ghost","defaultVariants","Button","t0","$","_c","children","className","props","t1","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","undefined","inputRef","t12","Symbol","for","current","rippleEnabled","includes","Comp","t13","t14","t15","t16","t17"],"sources":["../src/components/button/Button.tsx"],"sourcesContent":["import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { Loader, RoundedRectLoader } from \"../loader\";\nimport { useRipple } from \"../../hooks\";\nimport { Slot } from \"../slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ThemeColor } from \"../../types\";\n\nfunction loaderColor(color: ThemeColor): ThemeColor {\n switch (color) {\n case \"yellow-alpha\":\n return \"yellow\";\n case \"gray-alpha\":\n return \"gray\";\n default:\n return color;\n }\n}\n\nexport interface ButtonProps extends Omit<ComponentProps<\"button\">, \"color\"> {\n withRipple?: boolean;\n\n variant?: \"contained\" | \"light\" | \"outlined\" | \"text\" | \"ghost\";\n\n size?: \"small\" | \"medium\" | \"large\" | \"custom\" | \"input\" | \"scalable\";\n\n color?: ThemeColor;\n\n width?: \"fit\" | \"full\" | \"custom\";\n\n loading?: boolean;\n\n disabled?: boolean;\n\n focusable?: boolean;\n /**\n * For a selected item inside a group.\n */\n selected?: boolean;\n\n icon?: boolean;\n\n asChild?: boolean;\n\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport const buttonVariants = cva(\n \"relative box-border inline-flex items-center leading-5 no-underline focus-visible-has:outline-2\",\n {\n variants: {\n clickable: {\n true: \"cursor-pointer active:translate-y-px focus-visible-has:z-10\",\n false: \"pointer-events-none\",\n },\n size: {\n small: \"[--h-button:1.5rem] h-(--h-button) truncate\",\n medium: \"[--h-button:2rem] h-(--h-button) truncate\",\n large: \"[--h-button:3rem] h-(--h-button) truncate\",\n input: \"[--h-button:calc(var(--h-input)-2px)] h-(--h-button) truncate\",\n custom: \"truncate\",\n scalable: \"\",\n },\n icon: {\n true: \"rounded-[calc(var(--h-button)/2)] min-w-(--h-button) [&_i,&_img,&_svg]:w-(--h-button) justify-center [&_:last-child:not(i,img,svg,strong)]:pr-4\",\n false: \"rounded-2xl px-4\",\n custom: \"\",\n },\n width: {\n fit: \"w-full max-w-fit\",\n full: \"w-full justify-center\",\n custom: \"\",\n },\n variant: {\n /**\n * src/tailwind/plugin.ts\n * addVariant(\"current\", [\n * `&[aria-checked=\"true\"]`,\n * `&[aria-current=\"page\"]`,\n * `&:has(:checked)`\n * ])\n */\n contained:\n \"shadow-lg hover:shadow-xl active:shadow-xl-active outline-offset-0 text-custom-text bg-custom-3 hover:bg-custom-4 current:bg-custom-4 focus-visible-has:outline-custom-5\",\n light:\n \"shadow-lg hover:shadow-xl has-checked:shadow-xl focus:shadow-xl active:shadow-xl-active outline-offset-0 bg-custom-1 text-gray-text hover:text-custom-text hover:bg-custom-3 current:bg-custom-3 focus-visible-has:outline-custom-4\",\n outlined:\n \"bg-custom-0 hover:shadow-sm active:shadow-sm-active text-gray-7 outline-offset-0 border hover:bg-custom-1 border-custom-border focus-visible-has:outline-custom-5 current:bg-custom-3 focus-visible-has:border-transparent\",\n text: \"bg-transparent hover:shadow-sm active:shadow-sm-active outline-offset-0 hover:bg-custom-1 dark:hover:bg-custom-1/50 text-gray-7 hover:text-gray-8 current:bg-custom-3 focus-visible-has:outline-custom-5\",\n ghost: \"outline-offset-0 current:bg-custom-1 focus-visible-has:outline-custom-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n icon: false,\n variant: \"contained\",\n clickable: true,\n width: \"fit\",\n },\n },\n);\n\nexport function Button({\n withRipple = true,\n variant = \"contained\",\n loading = false,\n color = \"yellow\",\n size = \"medium\",\n focusable = true,\n className,\n disabled = false,\n children,\n selected = false,\n icon = false,\n asChild = false,\n width = \"fit\",\n ref,\n ...props\n}: ButtonProps) {\n const inputRef = useRef<HTMLButtonElement>(null!);\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n ref,\n () => inputRef.current,\n );\n\n const rippleEnabled = !loading && !disabled && withRipple;\n\n useRipple(\n inputRef,\n [\"text\", \"outlined\", \"ghost\"].includes(variant) ? true : false,\n rippleEnabled,\n );\n\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n tabIndex={focusable ? 0 : -1}\n role=\"button\"\n ref={inputRef}\n className={clsx(\n buttonVariants({\n variant,\n size,\n width,\n icon: width === \"custom\" && !icon ? \"custom\" : icon,\n }),\n className,\n )}\n data-color={color}\n data-variant={variant}\n aria-checked={selected}\n suppressHydrationWarning\n aria-busy={loading}\n {...(disabled || loading ? { disabled } : {})}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {/* {!notClickable && withRipple && ripples} */}\n {children}\n {loading &&\n (icon ? (\n <Loader\n color={loaderColor(color)}\n className={clsx(\"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\")}\n position=\"absolute\"\n />\n ) : (\n <RoundedRectLoader color={loaderColor(color)} className=\"absolute inset-0\" />\n ))}\n </>\n )}\n </Comp>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button-D6kcS-PM.mjs","names":["ComponentProps","RefObject","useImperativeHandle","useRef","clsx","Loader","RoundedRectLoader","useRipple","Slot","cva","ThemeColor","loaderColor","color","ButtonProps","Omit","withRipple","variant","size","width","loading","disabled","focusable","selected","icon","asChild","ref","HTMLButtonElement","buttonVariants","variants","clickable","true","false","small","medium","large","input","custom","scalable","fit","full","contained","light","outlined","text","ghost","defaultVariants","Button","t0","$","_c","children","className","props","t1","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","undefined","inputRef","t12","Symbol","for","current","rippleEnabled","includes","Comp","t13","t14","t15","t16","t17"],"sources":["../src/components/button/Button.tsx"],"sourcesContent":["import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { Loader, RoundedRectLoader } from \"../loader\";\nimport { useRipple } from \"../../hooks\";\nimport { Slot } from \"../slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ThemeColor } from \"../../types\";\n\nfunction loaderColor(color: ThemeColor): ThemeColor {\n switch (color) {\n case \"yellow-alpha\":\n return \"yellow\";\n case \"gray-alpha\":\n return \"gray\";\n default:\n return color;\n }\n}\n\nexport interface ButtonProps extends Omit<ComponentProps<\"button\">, \"color\"> {\n withRipple?: boolean;\n\n variant?: \"contained\" | \"light\" | \"outlined\" | \"text\" | \"ghost\";\n\n size?: \"small\" | \"medium\" | \"large\" | \"custom\" | \"input\" | \"scalable\";\n\n color?: ThemeColor;\n\n width?: \"fit\" | \"full\" | \"custom\";\n\n loading?: boolean;\n\n disabled?: boolean;\n\n focusable?: boolean;\n /**\n * For a selected item inside a group.\n */\n selected?: boolean;\n\n icon?: boolean;\n\n asChild?: boolean;\n\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport const buttonVariants = cva(\n \"relative box-border inline-flex items-center leading-5 no-underline focus-visible-has:outline-2\",\n {\n variants: {\n clickable: {\n true: \"cursor-pointer active:translate-y-px focus-visible-has:z-10\",\n false: \"pointer-events-none\",\n },\n size: {\n small: \"[--h-button:1.5rem] h-(--h-button) truncate\",\n medium: \"[--h-button:2rem] h-(--h-button) truncate\",\n large: \"[--h-button:3rem] h-(--h-button) truncate\",\n input: \"[--h-button:calc(var(--h-input)-2px)] h-(--h-button) truncate\",\n custom: \"truncate\",\n scalable: \"\",\n },\n icon: {\n true: \"rounded-[calc(var(--h-button)/2)] min-w-(--h-button) [&_i,&_img,&_svg]:w-(--h-button) justify-center [&_:last-child:not(i,img,svg,strong)]:pr-4\",\n false: \"rounded-2xl px-4\",\n custom: \"\",\n },\n width: {\n fit: \"w-full max-w-fit\",\n full: \"w-full justify-center\",\n custom: \"\",\n },\n variant: {\n /**\n * src/tailwind/plugin.ts\n * addVariant(\"current\", [\n * `&[aria-checked=\"true\"]`,\n * `&[aria-current=\"page\"]`,\n * `&:has(:checked)`\n * ])\n */\n contained:\n \"shadow-lg hover:shadow-xl active:shadow-xl-active outline-offset-0 text-custom-text bg-custom-3 hover:bg-custom-4 current:bg-custom-4 focus-visible-has:outline-custom-5\",\n light:\n \"shadow-lg hover:shadow-xl has-checked:shadow-xl focus:shadow-xl active:shadow-xl-active outline-offset-0 bg-custom-1 text-gray-text hover:text-custom-text hover:bg-custom-3 current:bg-custom-3 focus-visible-has:outline-custom-4\",\n outlined:\n \"bg-custom-0 hover:shadow-sm active:shadow-sm-active text-gray-7 outline-offset-0 border hover:bg-custom-1 border-custom-border focus-visible-has:outline-custom-5 current:bg-custom-3 focus-visible-has:border-transparent\",\n text: \"bg-transparent hover:shadow-sm active:shadow-sm-active outline-offset-0 hover:bg-custom-1 dark:hover:bg-custom-1/50 text-gray-7 hover:text-gray-8 current:bg-custom-3 focus-visible-has:outline-custom-5\",\n ghost: \"outline-offset-0 current:bg-custom-1 focus-visible-has:outline-custom-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n icon: false,\n variant: \"contained\",\n clickable: true,\n width: \"fit\",\n },\n },\n);\n\nexport function Button({\n withRipple = true,\n variant = \"contained\",\n loading = false,\n color = \"yellow\",\n size = \"medium\",\n focusable = true,\n className,\n disabled = false,\n children,\n selected = false,\n icon = false,\n asChild = false,\n width = \"fit\",\n ref,\n ...props\n}: ButtonProps) {\n const inputRef = useRef<HTMLButtonElement>(null!);\n\n useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n ref,\n () => inputRef.current,\n );\n\n const rippleEnabled = !loading && !disabled && withRipple;\n\n useRipple(\n inputRef,\n [\"text\", \"outlined\", \"ghost\"].includes(variant) ? true : false,\n rippleEnabled,\n );\n\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n tabIndex={focusable ? 0 : -1}\n role=\"button\"\n ref={inputRef}\n className={clsx(\n buttonVariants({\n variant,\n size,\n width,\n icon: width === \"custom\" && !icon ? \"custom\" : icon,\n }),\n className,\n )}\n data-color={color}\n data-variant={variant}\n aria-checked={selected}\n suppressHydrationWarning\n aria-busy={loading}\n {...(disabled || loading ? { disabled } : {})}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <>\n {/* {!notClickable && withRipple && ripples} */}\n {children}\n {loading &&\n (icon ? (\n <Loader\n color={loaderColor(color)}\n className={clsx(\"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\")}\n position=\"absolute\"\n />\n ) : (\n <RoundedRectLoader color={loaderColor(color)} className=\"absolute inset-0\" />\n ))}\n </>\n )}\n </Comp>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { n as Loader } from "./loader-CBd61lYX.mjs";
2
- import { t as Button } from "./Button-Dtp-UNzH.mjs";
3
- import "./button-CqXVbdMx.mjs";
1
+ import { n as Loader } from "./loader-D7SvnPiX.mjs";
2
+ import { t as Button } from "./Button-D6kcS-PM.mjs";
3
+ import "./button-DWuLqVgP.mjs";
4
4
  import { t as Dialog } from "./Dialog-CpSdL1-f.mjs";
5
5
  import "./components/dialog/index.mjs";
6
6
  import { c } from "react/compiler-runtime";
@@ -107,4 +107,4 @@ function _temp() {}
107
107
  //#endregion
108
108
  export { Snack as t };
109
109
 
110
- //# sourceMappingURL=Snack-CoeHh5qF.mjs.map
110
+ //# sourceMappingURL=Snack-MJUjbc4-.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Snack-CoeHh5qF.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
+ {"version":3,"file":"Snack-MJUjbc4-.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,5 +1,5 @@
1
1
  import { h as useRipple } from "./hooks-BQw3Dsve.mjs";
2
- import { n as buttonVariants } from "./Button-Dtp-UNzH.mjs";
2
+ import { n as buttonVariants } from "./Button-D6kcS-PM.mjs";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useImperativeHandle, useRef } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -146,4 +146,4 @@ function HrefButton(t0) {
146
146
  //#endregion
147
147
  export { ButtonGroup as n, buttonGroupVariants as r, HrefButton as t };
148
148
 
149
- //# sourceMappingURL=button-CqXVbdMx.mjs.map
149
+ //# sourceMappingURL=button-DWuLqVgP.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-CqXVbdMx.mjs","names":["ComponentProps","ReactNode","clsx","cva","Props","children","direction","buttonGroupVariants","variants","horizontal","vertical","defaultVariants","ButtonGroup","t0","$","_c","className","t1","undefined","t2","t3","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","ButtonProps","buttonVariants","HrefButtonProps","Pick","ref","HTMLAnchorElement","HrefButton","t0","$","_c","children","className","disabled","href","props","t1","t2","t3","t4","t5","t6","t7","withRipple","variant","color","size","width","selected","icon","undefined","anchorRef","t8","Symbol","for","current","ripples","t9","t10","t11"],"sources":["../src/components/button/ButtonGroup.tsx","../src/components/button/HrefButton.tsx"],"sourcesContent":["import { ComponentProps, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { cva } from \"class-variance-authority\";\n\ninterface Props extends ComponentProps<\"div\"> {\n children: ReactNode;\n direction?: \"horizontal\" | \"vertical\";\n}\n\nexport const buttonGroupVariants = cva(\n \"[&_:not(:first-child)]:rounded-tl-none [&_:not(:last-child)]:rounded-br-none\",\n {\n variants: {\n direction: {\n horizontal:\n \"[&_:not(:first-child)]:rounded-bl-none [&_:not(:last-child)]:rounded-tr-none *:data-[variant='outlined']:mx-[-0.5px] *:shadow-none\",\n vertical:\n \"flex flex-col [&_:not(:first-child)]:rounded-tr-none [&_:not(:last-child)]:rounded-bl-none *:data-[variant='outlined']:my-[-0.5px] *:shadow-none\",\n },\n },\n defaultVariants: {\n direction: \"horizontal\",\n },\n },\n);\n\nexport function ButtonGroup({ children, className, direction = \"horizontal\" }: Props) {\n return <div className={clsx(buttonGroupVariants({ direction }), className)}>{children}</div>;\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"../../hooks/useRipple\";\nimport { ButtonProps, buttonVariants } from \"./Button\";\n\nexport type HrefButtonProps = ComponentProps<\"a\"> &\n Pick<\n ButtonProps,\n \"withRipple\" | \"variant\" | \"size\" | \"color\" | \"selected\" | \"icon\" | \"disabled\" | \"width\"\n > & { ref?: RefObject<HTMLAnchorElement> };\n\nexport function HrefButton({\n withRipple = true,\n variant = \"contained\",\n color = \"yellow\",\n size = \"medium\",\n width = \"fit\",\n className,\n disabled,\n children,\n selected = false,\n icon = false,\n href,\n ref,\n ...props\n}: HrefButtonProps) {\n const anchorRef = useRef<HTMLAnchorElement>(null!);\n\n useImperativeHandle<HTMLAnchorElement | null, HTMLAnchorElement | null>(\n ref,\n () => anchorRef.current,\n );\n\n const ripples = useRipple(anchorRef);\n\n return (\n <a\n role=\"button\"\n href={href}\n ref={anchorRef}\n className={clsx(\n buttonVariants({ variant, size, width, icon: size === \"custom\" ? \"custom\" : icon }),\n className,\n selected && \"active\",\n )}\n data-color={color}\n data-variant={variant}\n aria-checked={selected}\n aria-disabled={disabled}\n {...props}\n >\n {!disabled && withRipple && ripples}\n {children}\n </a>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"button-DWuLqVgP.mjs","names":["ComponentProps","ReactNode","clsx","cva","Props","children","direction","buttonGroupVariants","variants","horizontal","vertical","defaultVariants","ButtonGroup","t0","$","_c","className","t1","undefined","t2","t3","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","ButtonProps","buttonVariants","HrefButtonProps","Pick","ref","HTMLAnchorElement","HrefButton","t0","$","_c","children","className","disabled","href","props","t1","t2","t3","t4","t5","t6","t7","withRipple","variant","color","size","width","selected","icon","undefined","anchorRef","t8","Symbol","for","current","ripples","t9","t10","t11"],"sources":["../src/components/button/ButtonGroup.tsx","../src/components/button/HrefButton.tsx"],"sourcesContent":["import { ComponentProps, ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { cva } from \"class-variance-authority\";\n\ninterface Props extends ComponentProps<\"div\"> {\n children: ReactNode;\n direction?: \"horizontal\" | \"vertical\";\n}\n\nexport const buttonGroupVariants = cva(\n \"[&_:not(:first-child)]:rounded-tl-none [&_:not(:last-child)]:rounded-br-none\",\n {\n variants: {\n direction: {\n horizontal:\n \"[&_:not(:first-child)]:rounded-bl-none [&_:not(:last-child)]:rounded-tr-none *:data-[variant='outlined']:mx-[-0.5px] *:shadow-none\",\n vertical:\n \"flex flex-col [&_:not(:first-child)]:rounded-tr-none [&_:not(:last-child)]:rounded-bl-none *:data-[variant='outlined']:my-[-0.5px] *:shadow-none\",\n },\n },\n defaultVariants: {\n direction: \"horizontal\",\n },\n },\n);\n\nexport function ButtonGroup({ children, className, direction = \"horizontal\" }: Props) {\n return <div className={clsx(buttonGroupVariants({ direction }), className)}>{children}</div>;\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"../../hooks/useRipple\";\nimport { ButtonProps, buttonVariants } from \"./Button\";\n\nexport type HrefButtonProps = ComponentProps<\"a\"> &\n Pick<\n ButtonProps,\n \"withRipple\" | \"variant\" | \"size\" | \"color\" | \"selected\" | \"icon\" | \"disabled\" | \"width\"\n > & { ref?: RefObject<HTMLAnchorElement> };\n\nexport function HrefButton({\n withRipple = true,\n variant = \"contained\",\n color = \"yellow\",\n size = \"medium\",\n width = \"fit\",\n className,\n disabled,\n children,\n selected = false,\n icon = false,\n href,\n ref,\n ...props\n}: HrefButtonProps) {\n const anchorRef = useRef<HTMLAnchorElement>(null!);\n\n useImperativeHandle<HTMLAnchorElement | null, HTMLAnchorElement | null>(\n ref,\n () => anchorRef.current,\n );\n\n const ripples = useRipple(anchorRef);\n\n return (\n <a\n role=\"button\"\n href={href}\n ref={anchorRef}\n className={clsx(\n buttonVariants({ variant, size, width, icon: size === \"custom\" ? \"custom\" : icon }),\n className,\n selected && \"active\",\n )}\n data-color={color}\n data-variant={variant}\n aria-checked={selected}\n aria-disabled={disabled}\n {...props}\n >\n {!disabled && withRipple && ripples}\n {children}\n </a>\n );\n}\n"],"mappings":";;;;;;;;AASA,MAAaO,sBAAsBJ,IACjC,gFACA;CACEK,UAAU,EACRF,WAAW;EACTG,YACE;EACFC,UACE;CACJ,EACF;CACAC,iBAAiB,EACfL,WAAW,aACb;AACF,CACF;AAEA,SAAOM,YAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAqB,MAAA,EAAAV,UAAAW,WAAAV,WAAAW,OAAAJ;CAAuB,MAAAP,YAAAW,OAAAC,KAAAA,IAAA,eAAAD;CAAwB,IAAAE;CAAA,IAAAL,EAAA,OAAAE,aAAAF,EAAA,OAAAR,WAAA;EAClDa,KAAAjB,KAAKK,oBAAoB,EAAAD,UAAY,CAAC,GAAGU,SAAS;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAR;EAAAQ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAT,YAAAS,EAAA,OAAAK,IAAA;EAAnEC,KAAA,oBAAA,OAAA;GAAgB,WAAAD;GAAsDd;EAAe,CAAA;EAAAS,EAAA,KAAAT;EAAAS,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAArFM;AAAqF;;;AChB9F,SAAOa,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAV;CAAA,IAAAW;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAb,EAAA,OAAAD,IAAA;EAAoB,CAAA,CAAAe,YAAAP,IAAAQ,SAAAP,IAAAQ,OAAAP,IAAAQ,MAAAP,IAAAQ,OAAAP,IAAAR,WAAAC,UAAAF,UAAAiB,UAAAP,IAAAQ,MAAAP,IAAAR,MAAAT,QAAAU,SAAAP;EAcTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAJ;EAAAI,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;EAAAT,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;CAAA,OAAA;EAAAX,WAAAF,EAAA;EAAAG,YAAAH,EAAA;EAAAI,WAAAJ,EAAA;EAAAK,OAAAL,EAAA;EAAAM,QAAAN,EAAA;EAAAJ,MAAAI,EAAA;EAAAO,KAAAP,EAAA;EAAAQ,KAAAR,EAAA;EAAAS,KAAAT,EAAA;EAAAU,KAAAV,EAAA;EAAAW,KAAAX,EAAA;EAAAY,KAAAZ,EAAA;EAAAa,KAAAb,EAAA;CAAA;CAbhB,MAAAc,aAAAP,OAAAc,KAAAA,IAAA,OAAAd;CACA,MAAAQ,UAAAP,OAAAa,KAAAA,IAAA,cAAAb;CACA,MAAAQ,QAAAP,OAAAY,KAAAA,IAAA,WAAAZ;CACA,MAAAQ,OAAAP,OAAAW,KAAAA,IAAA,WAAAX;CACA,MAAAQ,QAAAP,OAAAU,KAAAA,IAAA,QAAAV;CAIA,MAAAQ,WAAAP,OAAAS,KAAAA,IAAA,QAAAT;CACA,MAAAQ,OAAAP,OAAAQ,KAAAA,IAAA,QAAAR;CAKA,MAAAS,YAAkBjC,OAA0B,IAAK;CAAE,IAAAkC;CAAA,IAAAvB,EAAA,QAAAwB,OAAAC,IAAA,2BAAA,GAAA;EAIjDF,WAAMD,UAASI;EAAQ1B,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAFzBZ,oBACEQ,KACA2B,EACF;CAEA,MAAAI,UAAgBpC,UAAU+B,SAAS;CAAE,IAAAM;CAAA,IAAA5B,EAAA,QAAAG,aAAAH,EAAA,QAAAoB,QAAApB,EAAA,QAAAmB,YAAAnB,EAAA,QAAAiB,QAAAjB,EAAA,QAAAe,WAAAf,EAAA,QAAAkB,OAAA;EAOtBU,KAAAtC,KACTG,eAAe;GAAAsB;GAAAE;GAAAC;GAAAE,MAA8BH,SAAS,WAAT,WAAAG;EAAoC,CAAC,GAClFjB,WACAgB,YAAA,QACF;EAACnB,EAAA,MAAAG;EAAAH,EAAA,MAAAoB;EAAApB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAiB;EAAAjB,EAAA,MAAAe;EAAAf,EAAA,MAAAkB;EAAAlB,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAOA,MAAA6B,MAAA,CAACzB,YAADU,cAAAa;CAAkC,IAAAG;CAAA,IAAA9B,EAAA,QAAAE,YAAAF,EAAA,QAAAgB,SAAAhB,EAAA,QAAAI,YAAAJ,EAAA,QAAAK,QAAAL,EAAA,QAAAM,SAAAN,EAAA,QAAAmB,YAAAnB,EAAA,QAAA6B,OAAA7B,EAAA,QAAA4B,MAAA5B,EAAA,QAAAe,SAAA;EAfrCe,MAAA,qBAAA,KAAA;GACO,MAAA;GACCzB;GACDiB,KAAAA;GACM,WAAAM;GAKCZ,cAAAA;GACED,gBAAAA;GACAI,gBAAAA;GACCf,iBAAAA;GAAQ,GACnBE;GAbN,UAAA,CAeGuB,KACA3B,QACC;;EAAAF,EAAA,MAAAE;EAAAF,EAAA,MAAAgB;EAAAhB,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAmB;EAAAnB,EAAA,MAAA6B;EAAA7B,EAAA,MAAA4B;EAAA5B,EAAA,MAAAe;EAAAf,EAAA,MAAA8B;CAAA,OAAAA,MAAA9B,EAAA;CAAA,OAjBJ8B;AAiBI"}
@@ -1,7 +1,7 @@
1
- import { n as Loader } from "../../loader-CBd61lYX.mjs";
1
+ import { n as Loader } from "../../loader-D7SvnPiX.mjs";
2
2
  import { d as useStateDebounce, s as useIsomorphicLayoutEffect } from "../../hooks-BQw3Dsve.mjs";
3
- import { t as Button } from "../../Button-Dtp-UNzH.mjs";
4
- import "../../button-CqXVbdMx.mjs";
3
+ import { t as Button } from "../../Button-D6kcS-PM.mjs";
4
+ import "../../button-DWuLqVgP.mjs";
5
5
  import { t as Dialog } from "../../Dialog-CpSdL1-f.mjs";
6
6
  import "../dialog/index.mjs";
7
7
  import { n as inputConfig, r as sizeVariant } from "../../Input-BbXXGsv_.mjs";
@@ -1,3 +1,3 @@
1
- import { n as buttonVariants, t as Button } from "../../Button-Dtp-UNzH.mjs";
2
- import { n as ButtonGroup, r as buttonGroupVariants, t as HrefButton } from "../../button-CqXVbdMx.mjs";
1
+ import { n as buttonVariants, t as Button } from "../../Button-D6kcS-PM.mjs";
2
+ import { n as ButtonGroup, r as buttonGroupVariants, t as HrefButton } from "../../button-DWuLqVgP.mjs";
3
3
  export { Button, ButtonGroup, HrefButton, buttonGroupVariants, buttonVariants };
@@ -1,4 +1,4 @@
1
- import { t as Button } from "../../Button-Dtp-UNzH.mjs";
1
+ import { t as Button } from "../../Button-D6kcS-PM.mjs";
2
2
  import { t as Dialog } from "../../Dialog-CpSdL1-f.mjs";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { createContext, useContext, useEffect, useRef, useState } from "react";
@@ -1,5 +1,5 @@
1
- import { n as buttonVariants } from "../../../Button-Dtp-UNzH.mjs";
2
- import "../../../button-CqXVbdMx.mjs";
1
+ import { n as buttonVariants } from "../../../Button-D6kcS-PM.mjs";
2
+ import "../../../button-DWuLqVgP.mjs";
3
3
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -15,11 +15,18 @@ interface ColorProps extends ComponentProps<"button"> {
15
15
  declare function Color({ value, withRipple, color, label, showValue, className, ref, ...rest }: ColorProps): import("react").JSX.Element;
16
16
  //#endregion
17
17
  //#region src/components/fields/color/ColorField.d.ts
18
- interface Props extends Omit<FieldProps, "errors" | "children" | "group"> {
18
+ interface Props$1 extends Omit<FieldProps, "errors" | "children" | "group"> {
19
19
  name: FieldName<string | null | undefined>;
20
20
  allowInherit?: boolean;
21
21
  }
22
- declare function ColorField({ name, id: forcedId, allowInherit, ...rest }: Props): import("react").JSX.Element;
22
+ declare function ColorField({ name, id: forcedId, allowInherit, ...rest }: Props$1): import("react").JSX.Element;
23
23
  //#endregion
24
- export { Color, ColorField };
24
+ //#region src/components/fields/color/ColorSwatchGrid.d.ts
25
+ interface Props {
26
+ value: string | null;
27
+ onChange: (color: string) => void;
28
+ }
29
+ declare function ColorSwatchGrid({ value, onChange }: Props): import("react").JSX.Element;
30
+ //#endregion
31
+ export { Color, ColorField, ColorSwatchGrid };
25
32
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/color/Color.tsx","../../../../src/components/fields/color/ColorField.tsx"],"mappings":";;;;;UAKiB,mBAAmB;EAClC;EAEA;EACA,QAAQ;EACR;EACA;EACA;EACA,MAAM,UAAU;;iBAGF,QACd,OACA,YACA,OACA,OACA,WACA,WACA,QACG,QACF,6BAAU,IAAA;;;UCfH,cAAc,KAAK;EAC3B,MAAM;EACN;;iBAGc,aAAa,MAAM,IAAI,UAAU,iBAAyB,QAAQ,wBAAK,IAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/color/Color.tsx","../../../../src/components/fields/color/ColorField.tsx","../../../../src/components/fields/color/ColorSwatchGrid.tsx"],"mappings":";;;;;UAKiB,mBAAmB;EAClC;EAEA;EACA,QAAQ;EACR;EACA;EACA;EACA,MAAM,UAAU;;iBAGF,QACd,OACA,YACA,OACA,OACA,WACA,WACA,QACG,QACF,6BAAU,IAAA;;;UChBH,gBAAc,KAAK;EAC3B,MAAM;EACN;;iBAGc,aAAa,MAAM,IAAI,UAAU,iBAAyB,QAAQ,0BAAK,IAAA;;;UCX7E;EACR;EACA,WAAW;;iBAGG,kBAAkB,OAAO,YAAY,wBAAK,IAAA"}
@@ -1,8 +1,8 @@
1
1
  import { h as useRipple } from "../../../hooks-BQw3Dsve.mjs";
2
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
2
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
3
3
  import { n as useTranslate } from "../../../i18n-B57GZqP3.mjs";
4
4
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
5
- import { a as ModalContent, n as ModalFooter, o as Modal, r as ModalHeader, t as ModalDescription } from "../../../modal-OMEOCOF0.mjs";
5
+ import { a as ModalContent, n as ModalFooter, o as Modal, r as ModalHeader, t as ModalDescription } from "../../../modal-CTQiEtHr.mjs";
6
6
  import { c } from "react/compiler-runtime";
7
7
  import { useImperativeHandle, useRef, useState } from "react";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -130,6 +130,46 @@ const colorByGroups = Object.entries(rawColors).filter(([name, colorGroup]) => t
130
130
  colors: Object.entries(colorGroup)
131
131
  }));
132
132
  //#endregion
133
+ //#region src/components/fields/color/ColorSwatchGrid.tsx
134
+ function ColorSwatchGrid(t0) {
135
+ const $ = c(5);
136
+ const { value, onChange } = t0;
137
+ let t1;
138
+ if ($[0] !== onChange || $[1] !== value) {
139
+ t1 = colorByGroups.map((t2) => {
140
+ const { name, colors } = t2;
141
+ return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
142
+ className: "text-body-xs truncate",
143
+ children: name
144
+ }), /* @__PURE__ */ jsx("div", {
145
+ className: "grid shadow",
146
+ children: colors.map((t3) => {
147
+ const [colorNumber, colorCode] = t3;
148
+ return /* @__PURE__ */ jsx("button", {
149
+ className: clsx("cursor-pointer", parseInt(colorNumber) > 600 ? "text-white" : "text-black", "hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125", value === colorCode && "outline-yellow-5 z-10 rounded outline-2"),
150
+ style: { backgroundColor: colorCode },
151
+ onClick: () => onChange(colorCode),
152
+ children: colorNumber
153
+ }, colorNumber);
154
+ })
155
+ })] }, name);
156
+ });
157
+ $[0] = onChange;
158
+ $[1] = value;
159
+ $[2] = t1;
160
+ } else t1 = $[2];
161
+ let t2;
162
+ if ($[3] !== t1) {
163
+ t2 = /* @__PURE__ */ jsx("div", {
164
+ className: "grid-cols-repeat-fill-50 grid gap-1 text-center text-sm p-2",
165
+ children: t1
166
+ });
167
+ $[3] = t1;
168
+ $[4] = t2;
169
+ } else t2 = $[4];
170
+ return t2;
171
+ }
172
+ //#endregion
133
173
  //#region src/components/fields/color/ColorField.tsx
134
174
  function ColorField({ name, id: forcedId, allowInherit = false, ...rest }) {
135
175
  const translate = useTranslate();
@@ -146,7 +186,7 @@ function ColorField({ name, id: forcedId, allowInherit = false, ...rest }) {
146
186
  setTempValue(null);
147
187
  }
148
188
  function handleSubmitInherit() {
149
- control.change("inherit");
189
+ control.change(null);
150
190
  setTempValue(null);
151
191
  }
152
192
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
@@ -167,32 +207,25 @@ function ColorField({ name, id: forcedId, allowInherit = false, ...rest }) {
167
207
  type: "button",
168
208
  value: control.value,
169
209
  onClick: () => setTempValue(control.value ?? ""),
170
- label: control.value === "inherit" ? translate?.("form.values.color.inherit") : void 0
210
+ label: control.value ? void 0 : translate?.("form.values.color.inherit")
171
211
  })
172
212
  }),
173
213
  /* @__PURE__ */ jsx(Modal, {
174
214
  open: tempValue !== null,
175
215
  onOpen: (modalKeepOpen) => !modalKeepOpen && setTempValue(null),
176
216
  children: /* @__PURE__ */ jsxs(ModalContent, {
177
- className: "my-4 max-h-[90vh] w-full max-w-190 overflow-auto",
217
+ className: "max-w-190 overflow-auto",
178
218
  zClassName: "z-modal-overlay",
179
219
  children: [
180
220
  /* @__PURE__ */ jsx(ModalHeader, { children: translate?.("form.label.pickYourColor") }),
181
- /* @__PURE__ */ jsx(ModalDescription, { children: /* @__PURE__ */ jsx("div", {
182
- className: "grid-cols-repeat-fill-50 grid gap-1 text-center text-sm",
183
- children: colorByGroups.map(({ name: name_0, colors }) => /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
184
- className: "text-body-xs truncate",
185
- children: name_0
186
- }), /* @__PURE__ */ jsx("div", {
187
- className: "grid shadow",
188
- children: colors.map(([colorNumber, colorCode]) => /* @__PURE__ */ jsx("button", {
189
- className: clsx("cursor-pointer", parseInt(colorNumber) > 600 ? "text-white" : "text-black", "hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125", tempValue === colorCode && "outline-yellow-5 z-10 rounded outline-2"),
190
- style: { backgroundColor: colorCode },
191
- onClick: () => handleSelectAndSubmit(colorCode),
192
- children: colorNumber
193
- }, colorNumber))
194
- })] }, name_0))
195
- }) }),
221
+ /* @__PURE__ */ jsx(ModalDescription, {
222
+ className: "max-h-[calc(100lvh-6.5rem)]",
223
+ scrollable: true,
224
+ children: /* @__PURE__ */ jsx(ColorSwatchGrid, {
225
+ value: tempValue,
226
+ onChange: handleSelectAndSubmit
227
+ })
228
+ }),
196
229
  /* @__PURE__ */ jsx(ModalFooter, {
197
230
  className: "mt-2",
198
231
  children: /* @__PURE__ */ jsxs("div", {
@@ -228,6 +261,6 @@ function ColorField({ name, id: forcedId, allowInherit = false, ...rest }) {
228
261
  ] });
229
262
  }
230
263
  //#endregion
231
- export { Color, ColorField };
264
+ export { Color, ColorField, ColorSwatchGrid };
232
265
 
233
266
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["ComponentProps","RefObject","useImperativeHandle","useRef","ThemeColor","clsx","useRipple","ColorProps","withRipple","value","color","label","showValue","className","ref","HTMLButtonElement","Color","t0","$","_c","rest","t1","t2","t3","undefined","valueToShow","buttonRef","t4","Symbol","for","current","ripples","t5","t6","t7","t8","backgroundColor","t9","t10","t11","t12","t13","rawColors","colorByGroups","Object","entries","filter","name","colorGroup","includes","map","colors","useField","useControl","FieldName","Field","FieldProps","Color","Modal","ModalContent","ModalDescription","ModalFooter","ModalHeader","useState","clsx","Button","colorByGroups","useTranslate","Props","Omit","name","allowInherit","ColorField","id","forcedId","rest","translate","field","control","defaultValue","tempValue","setTempValue","handleSelectAndSubmit","selectedValue","change","handleSubmit","handleSubmitInherit","register","errors","value","undefined","modalKeepOpen","map","colors","colorNumber","colorCode","parseInt","backgroundColor"],"sources":["../../../../src/components/fields/color/Color.tsx","../../../../src/lib/color.ts","../../../../src/components/fields/color/ColorField.tsx"],"sourcesContent":["import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport type { ThemeColor } from \"../../../types\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"../../../hooks\";\n\nexport interface ColorProps extends ComponentProps<\"button\"> {\n withRipple?: boolean;\n\n value?: string;\n color?: ThemeColor;\n label?: string;\n showValue?: boolean;\n className?: string;\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport function Color({\n value,\n withRipple = true,\n color = \"yellow\",\n label,\n showValue = false,\n className,\n ref,\n ...rest\n}: ColorProps) {\n const valueToShow = label ?? (showValue ? value : null);\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 valueToShow === null && \"min-w-12\",\n className,\n )}\n style={{ backgroundColor: value }}\n ></span>\n <span\n className={clsx(\n \"relative flex h-full items-center justify-center px-2\",\n valueToShow === null && \"min-w-12\",\n className,\n )}\n >\n {valueToShow}\n </span>\n </button>\n );\n}\n","import rawColors from \"tailwindcss/colors\";\n\nexport const colorByGroups = Object.entries(rawColors)\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 { useField, useControl, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Color } from \"./Color\";\nimport { Modal, ModalContent, ModalDescription, ModalFooter, ModalHeader } from \"../../modal\";\nimport { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { Button } from \"../../button/Button\";\nimport { colorByGroups } from \"../../../lib/color\";\nimport { useTranslate } from \"../../i18n\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | null | undefined>;\n allowInherit?: boolean;\n}\n\nexport function ColorField({ name, id: forcedId, allowInherit = false, ...rest }: Props) {\n const translate = useTranslate();\n\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n const control = useControl({\n defaultValue: field.defaultValue,\n });\n\n const [tempValue, setTempValue] = useState<null | string>(null);\n\n function handleSelectAndSubmit(selectedValue: string) {\n control.change(selectedValue);\n setTempValue(null);\n }\n\n function handleSubmit() {\n if (tempValue) {\n control.change(tempValue);\n }\n setTempValue(null);\n }\n\n function handleSubmitInherit() {\n control.change(\"inherit\");\n setTempValue(null);\n }\n\n return (\n <>\n <input\n hidden\n type=\"text\"\n name={field.name}\n autoComplete=\"off\"\n ref={control.register}\n defaultValue={field.defaultValue}\n />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Color\n type=\"button\"\n value={control.value}\n onClick={() => setTempValue(control.value ?? \"\")}\n label={control.value === \"inherit\" ? translate?.(\"form.values.color.inherit\") : undefined}\n />\n </Field>\n <Modal\n open={tempValue !== null}\n /* There is not Modal trigger, onOpen is called only by\n * FloatingOverlay to close the modal */\n onOpen={(modalKeepOpen) => !modalKeepOpen && setTempValue(null)}\n >\n <ModalContent\n className=\"my-4 max-h-[90vh] w-full max-w-190 overflow-auto\"\n zClassName=\"z-modal-overlay\"\n >\n <ModalHeader>{translate?.(\"form.label.pickYourColor\")}</ModalHeader>\n <ModalDescription>\n <div className=\"grid-cols-repeat-fill-50 grid gap-1 text-center text-sm\">\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\",\n parseInt(colorNumber) > 600 ? \"text-white\" : \"text-black\",\n \"hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125\",\n tempValue === colorCode && \"outline-yellow-5 z-10 rounded outline-2\",\n )}\n style={{ backgroundColor: colorCode }}\n onClick={() => handleSelectAndSubmit(colorCode)}\n >\n {colorNumber}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n </ModalDescription>\n <ModalFooter className=\"mt-2\">\n <div className=\"flex justify-between\">\n <Button type=\"button\" variant=\"text\" color=\"gray\" onClick={() => setTempValue(null)}>\n {translate?.(\"button.cancel\")}\n </Button>\n {allowInherit && (\n <Button\n icon\n type=\"button\"\n variant=\"outlined\"\n color=\"gray\"\n onClick={handleSubmitInherit}\n >\n <i className=\"fe-settings\"></i>\n <span>{translate?.(\"form.values.color.inherit\")}</span>\n </Button>\n )}\n <Button type=\"button\" color=\"yellow\" onClick={handleSubmit}>\n {translate?.(\"button.validate\")}\n </Button>\n </div>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAgBA,SAAOgB,MAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAN;CAAA,IAAAF;CAAA,IAAAG;CAAA,IAAAM;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAd;CAAA,IAAAS,EAAA,OAAAD,IAAA;EAAe,CAAA,CAAAR,OAAAD,YAAAa,IAAAX,OAAAY,IAAAX,OAAAC,WAAAW,IAAAV,WAAAC,QAAAM,QAAAH;EASTC,EAAA,KAAAD;EAAAC,EAAA,KAAAL;EAAAK,EAAA,KAAAP;EAAAO,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAT;CAAA,OAAA;EAAAI,YAAAK,EAAA;EAAAP,QAAAO,EAAA;EAAAJ,MAAAI,EAAA;EAAAE,OAAAF,EAAA;EAAAG,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAT,QAAAS,EAAA;CAAA;CAPX,MAAAV,aAAAa,OAAAG,KAAAA,IAAA,OAAAH;CACA,MAAAX,QAAAY,OAAAE,KAAAA,IAAA,WAAAF;CAOA,MAAAG,cAAoBd,WALpBY,OAAAC,KAAAA,IAAA,QAAAD,MAK8Bd,QAAA;CAE9B,MAAAiB,YAAkBvB,OAA0B,IAAK;CAAE,IAAAwB;CAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;EAIjDF,WAAMD,UAASI;EAAQZ,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAFzBhB,oBACEY,KACAa,EACF;CAEA,MAAAI,UAAgBzB,UAAUoB,SAAS;CAS9B,MAAAM,KAAAxB,cAAAuB;CAIG,MAAAE,KAAAR,gBAAgB,QAAhB;CAAkC,IAAAS;CAAA,IAAAhB,EAAA,QAAAL,aAAAK,EAAA,QAAAe,IAAA;EAFzBC,KAAA7B,KACT,4GACA4B,IACApB,SACF;EAACK,EAAA,MAAAL;EAAAK,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,QAAAT,OAAA;EACM0B,KAAA,EAAAC,iBAAmB3B,MAAM;EAACS,EAAA,MAAAT;EAAAS,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,IAAA;EANnCE,KAAA,oBAAA,QAAA;GACa,WAAAH;GAKJ,OAAAC;EAA0B,CAAA;EAC3BjB,EAAA,MAAAgB;EAAAhB,EAAA,MAAAiB;EAAAjB,EAAA,MAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAIJ,MAAAoB,MAAAb,gBAAgB,QAAhB;CAAkC,IAAAc;CAAA,IAAArB,EAAA,QAAAL,aAAAK,EAAA,QAAAoB,KAAA;EAFzBC,MAAAlC,KACT,yDACAiC,KACAzB,SACF;EAACK,EAAA,MAAAL;EAAAK,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAAA,MAAArB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAqB,OAAArB,EAAA,QAAAO,aAAA;EALHe,MAAA,oBAAA,QAAA;GACa,WAAAD;GAMVd,UAAAA;EACI,CAAA;EAAAP,EAAA,MAAAqB;EAAArB,EAAA,MAAAO;EAAAP,EAAA,MAAAsB;CAAA,OAAAA,MAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAR,SAAAQ,EAAA,QAAAE,QAAAF,EAAA,QAAAsB,OAAAtB,EAAA,QAAAc,MAAAd,EAAA,QAAAmB,IAAA;EAvBTI,MAAA,qBAAA,UAAA;GACOf,KAAAA;GACOhB,cAAAA;GACF,WAAA;GAA6H,GACnIU;GAJN,UAAA;IAMGY;IACDK;IAQAG;GASO;;EAAAtB,EAAA,MAAAR;EAAAQ,EAAA,MAAAE;EAAAF,EAAA,MAAAsB;EAAAtB,EAAA,MAAAc;EAAAd,EAAA,MAAAmB;EAAAnB,EAAA,MAAAuB;CAAA,OAAAA,MAAAvB,EAAA;CAAA,OAxBTuB;AAwBS;;;AC5Db,MAAaE,gBAAgBC,OAAOC,QAAQH,SAAS,CAAC,CACnDI,QACE,CAACC,MAAMC,gBAMN,OAAOA,eAAe,YACtB,CAAC;CAAC;CAAY;CAAY;CAAY;CAAY;AAAW,CAAC,CAACC,SAASF,IAAI,CAChF,CAAC,CACAG,KAAK,CAACH,MAAMC,iBAAiB;CAC5BD;CACAI,QAAQP,OAAOC,QAAQG,UAAU;AACnC,EAAE;;;ACDJ,SAAgBwB,WAAW,EAAEF,MAAMG,IAAIC,UAAUH,eAAe,OAAO,GAAGI,QAAe;CACvF,MAAMC,YAAYT,aAAa;CAE/B,MAAMU,QAAQzB,SAASkB,IAAI;CAC3B,MAAMG,KAAKC,YAAYG,MAAMJ;CAE7B,MAAMK,UAAUzB,WAAW,EACzB0B,cAAcF,MAAME,aACtB,CAAC;CAED,MAAM,CAACC,WAAWC,gBAAgBlB,SAAwB,IAAI;CAE9D,SAASmB,sBAAsBC,eAAuB;EACpDL,QAAQM,OAAOD,aAAa;EAC5BF,aAAa,IAAI;CACnB;CAEA,SAASI,eAAe;EACtB,IAAIL,WACFF,QAAQM,OAAOJ,SAAS;EAE1BC,aAAa,IAAI;CACnB;CAEA,SAASK,sBAAsB;EAC7BR,QAAQM,OAAO,SAAS;EACxBH,aAAa,IAAI;CACnB;CAEA,OACE,qBAAA,YAAA,EAAA,UAAA;EACE,oBAAC,SAAD;GACE,QAAA;GACA,MAAK;GACL,MAAMJ,MAAMP;GACZ,cAAa;GACb,KAAKQ,QAAQS;GACb,cAAcV,MAAME;EAAa,CAAA;EAEnC,oBAAC,OAAD;GAAWN;GAAI,QAAQI,MAAMW;GAAQ,eAAaX,MAAMP;GAAM,GAAIK;GAChE,UAAA,oBAAC,OAAD;IACE,MAAK;IACL,OAAOG,QAAQW;IACf,eAAeR,aAAaH,QAAQW,SAAS,EAAE;IAC/C,OAAOX,QAAQW,UAAU,YAAYb,YAAY,2BAA2B,IAAIc,KAAAA;GAAU,CAAA;EAEvF,CAAA;EACP,oBAAC,OAAD;GACE,MAAMV,cAAc;GAGpB,SAASW,kBAAkB,CAACA,iBAAiBV,aAAa,IAAI;GAE9D,UAAA,qBAAC,cAAD;IACE,WAAU;IACV,YAAW;IAFb,UAAA;KAIE,oBAAC,aAAD,EAAA,UAAcL,YAAY,0BAA0B,EAAe,CAAA;KACnE,oBAAC,kBAAD,EAAA,UACE,oBAAC,OAAD;MAAK,WAAU;MACZV,UAAAA,cAAc0B,KAAK,EAAEtB,MAAAA,QAAMuB,aAC1B,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,OAAD;OAAK,WAAU;OAAyBvB,UAAAA;MAAU,CAAA,GAClD,oBAAC,OAAD;OAAK,WAAU;OACZuB,UAAAA,OAAOD,KAAK,CAACE,aAAaC,eACzB,oBAAC,UAAD;QAEE,WAAW/B,KACT,kBACAgC,SAASF,WAAW,IAAI,MAAM,eAAe,cAC7C,0EACAd,cAAce,aAAa,yCAC7B;QACA,OAAO,EAAEE,iBAAiBF,UAAU;QACpC,eAAeb,sBAAsBa,SAAS;QAE7CD,UAAAA;OACK,GAXDA,WAWC,CACT;MACE,CAAA,CACF,EAAA,GAnBKxB,MAmBL,CACN;KACE,CAAA,EACW,CAAA;KAClB,oBAAC,aAAD;MAAa,WAAU;MACrB,UAAA,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACE,oBAAC,QAAD;SAAQ,MAAK;SAAS,SAAQ;SAAO,OAAM;SAAO,eAAeW,aAAa,IAAI;SAC/EL,UAAAA,YAAY,eAAe;QACtB,CAAA;QACPL,gBACC,qBAAC,QAAD;SACE,MAAA;SACA,MAAK;SACL,SAAQ;SACR,OAAM;SACN,SAASe;SALX,UAAA,CAOE,oBAAC,KAAD,EAAG,WAAU,cAAiB,CAAA,GAC9B,oBAAC,QAAD,EAAA,UAAOV,YAAY,2BAA2B,EAAQ,CAAA,CAChD;;QAEV,oBAAC,QAAD;SAAQ,MAAK;SAAS,OAAM;SAAS,SAASS;SAC3CT,UAAAA,YAAY,iBAAiB;QACxB,CAAA;OACL;;KACM,CAAA;IACD;;EACT,CAAA;CACT,EAAA,CAAA;AAEJ"}
1
+ {"version":3,"file":"index.mjs","names":["ComponentProps","RefObject","useImperativeHandle","useRef","ThemeColor","clsx","useRipple","ColorProps","withRipple","value","color","label","showValue","className","ref","HTMLButtonElement","Color","t0","$","_c","rest","t1","t2","t3","undefined","valueToShow","buttonRef","t4","Symbol","for","current","ripples","t5","t6","t7","t8","backgroundColor","t9","t10","t11","t12","t13","rawColors","colorByGroups","Object","entries","filter","name","colorGroup","includes","map","colors","clsx","colorByGroups","Props","value","onChange","color","ColorSwatchGrid","t0","$","_c","t1","map","t2","name","colors","t3","colorNumber","colorCode","parseInt","backgroundColor","useField","useControl","FieldName","Field","FieldProps","Color","Modal","ModalContent","ModalDescription","ModalFooter","ModalHeader","useState","Button","ColorSwatchGrid","useTranslate","Props","Omit","name","allowInherit","ColorField","id","forcedId","rest","translate","field","control","defaultValue","tempValue","setTempValue","handleSelectAndSubmit","selectedValue","change","handleSubmit","handleSubmitInherit","register","errors","value","undefined","modalKeepOpen"],"sources":["../../../../src/components/fields/color/Color.tsx","../../../../src/lib/color.ts","../../../../src/components/fields/color/ColorSwatchGrid.tsx","../../../../src/components/fields/color/ColorField.tsx"],"sourcesContent":["import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport type { ThemeColor } from \"../../../types\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"../../../hooks\";\n\nexport interface ColorProps extends ComponentProps<\"button\"> {\n withRipple?: boolean;\n\n value?: string;\n color?: ThemeColor;\n label?: string;\n showValue?: boolean;\n className?: string;\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport function Color({\n value,\n withRipple = true,\n color = \"yellow\",\n label,\n showValue = false,\n className,\n ref,\n ...rest\n}: ColorProps) {\n const valueToShow = label ?? (showValue ? value : null);\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 valueToShow === null && \"min-w-12\",\n className,\n )}\n style={{ backgroundColor: value }}\n ></span>\n <span\n className={clsx(\n \"relative flex h-full items-center justify-center px-2\",\n valueToShow === null && \"min-w-12\",\n className,\n )}\n >\n {valueToShow}\n </span>\n </button>\n );\n}\n","import rawColors from \"tailwindcss/colors\";\n\nexport const colorByGroups = Object.entries(rawColors)\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\";\n\ninterface Props {\n value: string | null;\n onChange: (color: string) => void;\n}\n\nexport function ColorSwatchGrid({ 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\",\n parseInt(colorNumber) > 600 ? \"text-white\" : \"text-black\",\n \"hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125\",\n value === colorCode && \"outline-yellow-5 z-10 rounded outline-2\",\n )}\n style={{ backgroundColor: colorCode }}\n onClick={() => onChange(colorCode)}\n >\n {colorNumber}\n </button>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { useField, useControl, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Color } from \"./Color\";\nimport { Modal, ModalContent, ModalDescription, ModalFooter, ModalHeader } from \"../../modal\";\nimport { useState } from \"react\";\nimport { Button } from \"../../button/Button\";\nimport { ColorSwatchGrid } from \"./ColorSwatchGrid\";\nimport { useTranslate } from \"../../i18n\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<string | null | undefined>;\n allowInherit?: boolean;\n}\n\nexport function ColorField({ name, id: forcedId, allowInherit = false, ...rest }: Props) {\n const translate = useTranslate();\n\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n const control = useControl({\n defaultValue: field.defaultValue,\n });\n\n const [tempValue, setTempValue] = useState<null | string>(null);\n\n function handleSelectAndSubmit(selectedValue: string) {\n control.change(selectedValue);\n setTempValue(null);\n }\n\n function handleSubmit() {\n if (tempValue) {\n control.change(tempValue);\n }\n setTempValue(null);\n }\n\n function handleSubmitInherit() {\n control.change(null);\n setTempValue(null);\n }\n\n return (\n <>\n <input\n hidden\n type=\"text\"\n name={field.name}\n autoComplete=\"off\"\n ref={control.register}\n defaultValue={field.defaultValue}\n />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Color\n type=\"button\"\n value={control.value}\n onClick={() => setTempValue(control.value ?? \"\")}\n label={control.value ? undefined : translate?.(\"form.values.color.inherit\")}\n />\n </Field>\n <Modal\n open={tempValue !== null}\n /* There is not Modal trigger, onOpen is called only by\n * FloatingOverlay to close the modal */\n onOpen={(modalKeepOpen) => !modalKeepOpen && setTempValue(null)}\n >\n <ModalContent className=\"max-w-190 overflow-auto\" zClassName=\"z-modal-overlay\">\n <ModalHeader>{translate?.(\"form.label.pickYourColor\")}</ModalHeader>\n <ModalDescription className=\"max-h-[calc(100lvh-6.5rem)]\" scrollable={true}>\n <ColorSwatchGrid value={tempValue} onChange={handleSelectAndSubmit} />\n </ModalDescription>\n <ModalFooter className=\"mt-2\">\n <div className=\"flex justify-between\">\n <Button type=\"button\" variant=\"text\" color=\"gray\" onClick={() => setTempValue(null)}>\n {translate?.(\"button.cancel\")}\n </Button>\n {allowInherit && (\n <Button\n icon\n type=\"button\"\n variant=\"outlined\"\n color=\"gray\"\n onClick={handleSubmitInherit}\n >\n <i className=\"fe-settings\"></i>\n <span>{translate?.(\"form.values.color.inherit\")}</span>\n </Button>\n )}\n <Button type=\"button\" color=\"yellow\" onClick={handleSubmit}>\n {translate?.(\"button.validate\")}\n </Button>\n </div>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
1
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
2
2
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
3
- import { a as ModalContent, n as ModalFooter, o as Modal, r as ModalHeader, t as ModalDescription } from "../../../modal-OMEOCOF0.mjs";
3
+ import { a as ModalContent, n as ModalFooter, o as Modal, r as ModalHeader, t as ModalDescription } from "../../../modal-CTQiEtHr.mjs";
4
4
  import { n as isMediaImage, t as MediaPreview } from "../../../media-preview-CHOE6JmB.mjs";
5
5
  import { c } from "react/compiler-runtime";
6
6
  import { useState } from "react";
@@ -1,5 +1,5 @@
1
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
2
- import "../../../button-CqXVbdMx.mjs";
1
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
2
+ import "../../../button-DWuLqVgP.mjs";
3
3
  import { n as inputConfig, r as sizeVariant } from "../../../Input-BbXXGsv_.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { n as buttonVariants } from "../../../Button-Dtp-UNzH.mjs";
2
- import { r as buttonGroupVariants } from "../../../button-CqXVbdMx.mjs";
1
+ import { n as buttonVariants } from "../../../Button-D6kcS-PM.mjs";
2
+ import { r as buttonGroupVariants } from "../../../button-DWuLqVgP.mjs";
3
3
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
2
- import "../../../button-CqXVbdMx.mjs";
1
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
2
+ import "../../../button-DWuLqVgP.mjs";
3
3
  import { t as Dialog } from "../../../Dialog-CpSdL1-f.mjs";
4
4
  import "../../dialog/index.mjs";
5
5
  import { r as sizeVariant } from "../../../Input-BbXXGsv_.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as useMergeRefs } from "../../../hooks-BQw3Dsve.mjs";
2
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
3
- import "../../../button-CqXVbdMx.mjs";
2
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
3
+ import "../../../button-DWuLqVgP.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { useRef, useState } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,3 +1,3 @@
1
1
  import { n as inputConfig, t as Input } from "../../../Input-BbXXGsv_.mjs";
2
- import { n as PasswordField, r as TextField, t as SlugField } from "../../../text-Cm7qVcmx.mjs";
2
+ import { n as PasswordField, r as TextField, t as SlugField } from "../../../text-DrWw7Gon.mjs";
3
3
  export { Input, PasswordField, SlugField, TextField, inputConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/wysiwyg/style.ts","../../../../src/components/fields/wysiwyg/types.ts","../../../../src/components/fields/wysiwyg/Wysiwyg.tsx","../../../../src/components/fields/wysiwyg/WysiwygField.tsx","../../../../src/components/fields/wysiwyg/WysiwygReader.tsx","../../../../src/components/fields/wysiwyg/config/html.ts","../../../../src/components/fields/wysiwyg/config/state.ts","../../../../src/components/fields/wysiwyg/config/validation.ts","../../../../src/components/fields/wysiwyg/plugins/SubmitOnEnterPlugin.tsx"],"mappings":";;;;;;;cAGa,kBAAe;;;6CAiB1B;KACU,sBAAsB,oBAAoB;cAEzC;cAGA;cAGA;EACX;EACA;;;;KC3BU;EACV;EACA,OAAO;;cAKI,eAAa,EAAA;;;GAKxB,EAAA,KAAA;iBAIc,kBAAkB,mBAAgB;iBA+BlC,sBAAsB;iBAYtB,oBAAoB,OAAO;;;UCpCjC;EACR;EACA;EACA;EACA,eAAe;EACf;EACA;EAEA;EAEA;;;;EAIA;EACA;;;;;EAKA,gBAAgB;EAChB,iBAAiB;EAEjB,MAAM,UAAU;EAChB;EACA,YAAY,OAAO;EACnB,WAAW;;UAQI;EACf,gBAAgB;EAChB,UAAU,cAAc;EACxB,gBAAgB;EAChB,WAAW,OAAO,uBAAuB;EACzC,QAAQ;;iBAGM,UACd,IACA,kBACA,iBACA,cACA,cACA,UACA,UACA,0BACA,0BACA,oBACA,KACA,eACA,gBACA,gBACA,UACA,YACC,0BAAK,IAAA;;;UC9EE,gBAAc,KAAK;EAC3B,MAAM,UAAU;EAChB,MAAM,UAAU;EAChB;EACA,gBAAgB;EAChB;EACA;EACA;EACA;;iBAGc,eACd,MACA,KACA,gBACA,eACA,0BACA,oBACA,UACA,UACA,IAAI,aACD,QACF,0BAAK,IAAA;;;UCxBE;EACR,OAAO;EACP;EACA;;iBAGc,gBAAgB,OAAO,cAAsB,aAAa,wBAAK,IAAA;;;;;;;iBCyB/D,YAAY,OAAO;;;iBCnCnB,aAAa,OAAO;;;iBCCpB,wBAAwB,iBAAiB,SAAS;iBAelD,oBAAoB,iBAAiB,SAAS;;;UCRpD;;;;;EAKR;;iBAGc,sBACd,4BACC"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/wysiwyg/style.ts","../../../../src/components/fields/wysiwyg/types.ts","../../../../src/components/fields/wysiwyg/Wysiwyg.tsx","../../../../src/components/fields/wysiwyg/WysiwygField.tsx","../../../../src/components/fields/wysiwyg/WysiwygReader.tsx","../../../../src/components/fields/wysiwyg/config/html.ts","../../../../src/components/fields/wysiwyg/config/state.ts","../../../../src/components/fields/wysiwyg/config/validation.ts","../../../../src/components/fields/wysiwyg/plugins/SubmitOnEnterPlugin.tsx"],"mappings":";;;;;;;cAGa,kBAAe;;;6CAoB3B;KACW,sBAAsB,oBAAoB;cAEzC;cAGA;cAGA;EACX;EACA;;;;KC9BU;EACV;EACA,OAAO;;cAKI,eAAa,EAAA;;;GAKxB,EAAA,KAAA;iBAIc,kBAAkB,mBAAgB;iBA+BlC,sBAAsB;iBAYtB,oBAAoB,OAAO;;;UCpCjC;EACR;EACA;EACA;EACA,eAAe;EACf;EACA;EAEA;EAEA;;;;EAIA;EACA;;;;;EAKA,gBAAgB;EAChB,iBAAiB;EAEjB,MAAM,UAAU;EAChB;EACA,YAAY,OAAO;EACnB,WAAW;;UAQI;EACf,gBAAgB;EAChB,UAAU,cAAc;EACxB,gBAAgB;EAChB,WAAW,OAAO,uBAAuB;EACzC,QAAQ;;iBAGM,UACd,IACA,kBACA,iBACA,cACA,cACA,UACA,UACA,0BACA,0BACA,oBACA,KACA,eACA,gBACA,gBACA,UACA,YACC,0BAAK,IAAA;;;UC9EE,gBAAc,KAAK;EAC3B,MAAM,UAAU;EAChB,MAAM,UAAU;EAChB;EACA,gBAAgB;EAChB;EACA;EACA;EACA;;iBAGc,eACd,MACA,KACA,gBACA,eACA,0BACA,oBACA,UACA,UACA,IAAI,aACD,QACF,0BAAK,IAAA;;;UCxBE;EACR,OAAO;EACP;EACA;;iBAGc,gBAAgB,OAAO,cAAsB,aAAa,wBAAK,IAAA;;;;;;;iBCyB/D,YAAY,OAAO;;;iBCnCnB,aAAa,OAAO;;;iBCCpB,wBAAwB,iBAAiB,SAAS;iBAelD,oBAAoB,iBAAiB,SAAS;;;UCRpD;;;;;EAKR;;iBAGc,sBACd,4BACC"}
@@ -1,5 +1,5 @@
1
- import { t as Button } from "../../../Button-Dtp-UNzH.mjs";
2
- import "../../../button-CqXVbdMx.mjs";
1
+ import { t as Button } from "../../../Button-D6kcS-PM.mjs";
2
+ import "../../../button-DWuLqVgP.mjs";
3
3
  import { t as Dialog } from "../../../Dialog-CpSdL1-f.mjs";
4
4
  import "../../dialog/index.mjs";
5
5
  import { t as Input } from "../../../Input-BbXXGsv_.mjs";
@@ -7,7 +7,7 @@ import { n as DropdownMenu, t as DropdownMenuItem } from "../../../dropdown-menu
7
7
  import { proseLinkVariant } from "../../href/index.mjs";
8
8
  import { n as useTranslate } from "../../../i18n-B57GZqP3.mjs";
9
9
  import { t as Field } from "../../../Field-DZmC5a1D.mjs";
10
- import "../../../text-Cm7qVcmx.mjs";
10
+ import "../../../text-DrWw7Gon.mjs";
11
11
  import { c } from "react/compiler-runtime";
12
12
  import { createContext, useContext, useEffect, useImperativeHandle, useRef, useState } from "react";
13
13
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -52,7 +52,7 @@ function focusNextElement() {
52
52
  }
53
53
  //#endregion
54
54
  //#region src/components/fields/wysiwyg/style.ts
55
- const toolbarVariants = cva("p-1 border-custom-2 border gap-1 bg-gray-0/40", {
55
+ const toolbarVariants = cva("p-1 border-custom-2 border gap-1 bg-gray-0/40 overflow-x-scroll", {
56
56
  variants: {
57
57
  sticky: {
58
58
  mobileOnly: "max-lg:sticky max-lg:top-0 max-lg:backdrop-blur-xs lg:rounded-t-2xl",