pentatrion-design 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 1.3.1
2
+
3
+ ### Patch Changes
4
+
5
+ - 8bad967: fix range ref
6
+ - 8bad967: fix color refactor inside storybook
7
+
1
8
  ## 1.3.0
2
9
 
3
10
  ### Minor Changes
@@ -799,15 +799,16 @@ function HarmonyColorGrid(t0) {
799
799
  //#endregion
800
800
  //#region src/components/color/ColorPicker.tsx
801
801
  function ColorPicker(t0) {
802
- const $ = c(88);
802
+ const $ = c(90);
803
803
  let onChange;
804
804
  let palette;
805
805
  let refColor;
806
806
  let rest;
807
807
  let t1;
808
808
  let value;
809
+ let variants;
809
810
  if ($[0] !== t0) {
810
- ({palette, value, refColor, onChange, allowInherit: t1, ...rest} = t0);
811
+ ({palette, value, refColor, onChange, variants, allowInherit: t1, ...rest} = t0);
811
812
  $[0] = t0;
812
813
  $[1] = onChange;
813
814
  $[2] = palette;
@@ -815,6 +816,7 @@ function ColorPicker(t0) {
815
816
  $[4] = rest;
816
817
  $[5] = t1;
817
818
  $[6] = value;
819
+ $[7] = variants;
818
820
  } else {
819
821
  onChange = $[1];
820
822
  palette = $[2];
@@ -822,6 +824,7 @@ function ColorPicker(t0) {
822
824
  rest = $[4];
823
825
  t1 = $[5];
824
826
  value = $[6];
827
+ variants = $[7];
825
828
  }
826
829
  const allowInherit = t1 === void 0 ? false : t1;
827
830
  const t = useTranslate();
@@ -829,44 +832,46 @@ function ColorPicker(t0) {
829
832
  const [tempValue, setTempValue] = useState(null);
830
833
  const [tabId, setTabId] = useState(value?.type === "raw" ? "custom" : palette ? "palette" : "swatches");
831
834
  let t2;
832
- if ($[7] !== onChange || $[8] !== tempValue) {
835
+ if ($[8] !== onChange || $[9] !== tempValue) {
833
836
  t2 = function handleSubmit() {
834
837
  onChange(tempValue);
835
838
  setIsOpen(false);
836
839
  };
837
- $[7] = onChange;
838
- $[8] = tempValue;
839
- $[9] = t2;
840
- } else t2 = $[9];
840
+ $[8] = onChange;
841
+ $[9] = tempValue;
842
+ $[10] = t2;
843
+ } else t2 = $[10];
841
844
  const handleSubmit = t2;
842
845
  let t3;
843
- if ($[10] !== onChange) {
846
+ if ($[11] !== onChange) {
844
847
  t3 = function handleInherit() {
845
848
  onChange(null);
846
849
  setIsOpen(false);
847
850
  };
848
- $[10] = onChange;
849
- $[11] = t3;
850
- } else t3 = $[11];
851
+ $[11] = onChange;
852
+ $[12] = t3;
853
+ } else t3 = $[12];
851
854
  const handleInherit = t3;
852
855
  let t4;
853
- if ($[12] !== palette || $[13] !== t || $[14] !== tempValue) {
856
+ if ($[13] !== palette || $[14] !== t || $[15] !== tempValue || $[16] !== variants) {
854
857
  t4 = palette ? [{
855
858
  id: "palette",
856
859
  title: t?.("common.brandPalette") ?? "Couleurs du thème",
857
860
  content: /* @__PURE__ */ jsx(NamedColorGrid, {
858
861
  palette,
859
862
  value: tempValue?.type === "named" ? tempValue : null,
860
- onChange: setTempValue
863
+ onChange: setTempValue,
864
+ variants
861
865
  })
862
866
  }] : [];
863
- $[12] = palette;
864
- $[13] = t;
865
- $[14] = tempValue;
866
- $[15] = t4;
867
- } else t4 = $[15];
867
+ $[13] = palette;
868
+ $[14] = t;
869
+ $[15] = tempValue;
870
+ $[16] = variants;
871
+ $[17] = t4;
872
+ } else t4 = $[17];
868
873
  let t5;
869
- if ($[16] !== refColor || $[17] !== t || $[18] !== tempValue) {
874
+ if ($[18] !== refColor || $[19] !== t || $[20] !== tempValue) {
870
875
  t5 = refColor ? [{
871
876
  id: "harmony",
872
877
  title: t?.("common.harmonyColors") ?? "Harmonies",
@@ -876,80 +881,80 @@ function ColorPicker(t0) {
876
881
  onChange: setTempValue
877
882
  })
878
883
  }] : [];
879
- $[16] = refColor;
880
- $[17] = t;
881
- $[18] = tempValue;
882
- $[19] = t5;
883
- } else t5 = $[19];
884
+ $[18] = refColor;
885
+ $[19] = t;
886
+ $[20] = tempValue;
887
+ $[21] = t5;
888
+ } else t5 = $[21];
884
889
  let t6;
885
- if ($[20] !== t) {
890
+ if ($[22] !== t) {
886
891
  t6 = t?.("common.colorSwatches") ?? "Nuancier";
887
- $[20] = t;
888
- $[21] = t6;
889
- } else t6 = $[21];
892
+ $[22] = t;
893
+ $[23] = t6;
894
+ } else t6 = $[23];
890
895
  const t7 = tempValue?.type === "raw" ? tempValue : null;
891
896
  let t8;
892
- if ($[22] !== t7) {
897
+ if ($[24] !== t7) {
893
898
  t8 = /* @__PURE__ */ jsx(RawColorGrid, {
894
899
  value: t7,
895
900
  onChange: setTempValue
896
901
  });
897
- $[22] = t7;
898
- $[23] = t8;
899
- } else t8 = $[23];
902
+ $[24] = t7;
903
+ $[25] = t8;
904
+ } else t8 = $[25];
900
905
  let t9;
901
- if ($[24] !== t6 || $[25] !== t8) {
906
+ if ($[26] !== t6 || $[27] !== t8) {
902
907
  t9 = {
903
908
  id: "swatches",
904
909
  title: t6,
905
910
  content: t8
906
911
  };
907
- $[24] = t6;
908
- $[25] = t8;
909
- $[26] = t9;
910
- } else t9 = $[26];
912
+ $[26] = t6;
913
+ $[27] = t8;
914
+ $[28] = t9;
915
+ } else t9 = $[28];
911
916
  let t10;
912
- if ($[27] !== t) {
917
+ if ($[29] !== t) {
913
918
  t10 = t?.("common.colorCustom") ?? "Sur mesure";
914
- $[27] = t;
915
- $[28] = t10;
916
- } else t10 = $[28];
919
+ $[29] = t;
920
+ $[30] = t10;
921
+ } else t10 = $[30];
917
922
  const t11 = tempValue?.type === "raw" ? tempValue.hex : void 0;
918
923
  let t12;
919
- if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
924
+ if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
920
925
  t12 = (hex) => {
921
926
  setTempValue({
922
927
  type: "raw",
923
928
  hex
924
929
  });
925
930
  };
926
- $[29] = t12;
927
- } else t12 = $[29];
931
+ $[31] = t12;
932
+ } else t12 = $[31];
928
933
  let t13;
929
- if ($[30] !== t11) {
934
+ if ($[32] !== t11) {
930
935
  t13 = /* @__PURE__ */ jsx(HexColorPicker, {
931
936
  color: t11,
932
937
  onChange: t12
933
938
  });
934
- $[30] = t11;
935
- $[31] = t13;
936
- } else t13 = $[31];
939
+ $[32] = t11;
940
+ $[33] = t13;
941
+ } else t13 = $[33];
937
942
  let t14;
938
- if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
943
+ if ($[34] === Symbol.for("react.memo_cache_sentinel")) {
939
944
  t14 = clsx(inputConfig.container, "px-2");
940
- $[32] = t14;
941
- } else t14 = $[32];
945
+ $[34] = t14;
946
+ } else t14 = $[34];
942
947
  const t15 = tempValue?.type === "raw" ? tempValue.hex : void 0;
943
948
  let t16;
944
- if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
949
+ if ($[35] === Symbol.for("react.memo_cache_sentinel")) {
945
950
  t16 = (hex_0) => setTempValue({
946
951
  type: "raw",
947
952
  hex: hex_0
948
953
  });
949
- $[33] = t16;
950
- } else t16 = $[33];
954
+ $[35] = t16;
955
+ } else t16 = $[35];
951
956
  let t17;
952
- if ($[34] !== t15) {
957
+ if ($[36] !== t15) {
953
958
  t17 = /* @__PURE__ */ jsx("div", {
954
959
  "data-color": "yellow",
955
960
  "data-variant": "normal",
@@ -961,84 +966,84 @@ function ColorPicker(t0) {
961
966
  onChange: t16
962
967
  })
963
968
  });
964
- $[34] = t15;
965
- $[35] = t17;
966
- } else t17 = $[35];
969
+ $[36] = t15;
970
+ $[37] = t17;
971
+ } else t17 = $[37];
967
972
  let t18;
968
- if ($[36] !== t13 || $[37] !== t17) {
973
+ if ($[38] !== t13 || $[39] !== t17) {
969
974
  t18 = /* @__PURE__ */ jsxs("div", {
970
975
  className: "p-2 flex flex-col gap-2 react-colorful-container",
971
976
  children: [t13, t17]
972
977
  });
973
- $[36] = t13;
974
- $[37] = t17;
975
- $[38] = t18;
976
- } else t18 = $[38];
978
+ $[38] = t13;
979
+ $[39] = t17;
980
+ $[40] = t18;
981
+ } else t18 = $[40];
977
982
  let t19;
978
- if ($[39] !== t10 || $[40] !== t18) {
983
+ if ($[41] !== t10 || $[42] !== t18) {
979
984
  t19 = {
980
985
  id: "custom",
981
986
  title: t10,
982
987
  content: t18
983
988
  };
984
- $[39] = t10;
985
- $[40] = t18;
986
- $[41] = t19;
987
- } else t19 = $[41];
989
+ $[41] = t10;
990
+ $[42] = t18;
991
+ $[43] = t19;
992
+ } else t19 = $[43];
988
993
  let t20;
989
- if ($[42] !== t19 || $[43] !== t4 || $[44] !== t5 || $[45] !== t9) {
994
+ if ($[44] !== t19 || $[45] !== t4 || $[46] !== t5 || $[47] !== t9) {
990
995
  t20 = [
991
996
  ...t4,
992
997
  ...t5,
993
998
  t9,
994
999
  t19
995
1000
  ];
996
- $[42] = t19;
997
- $[43] = t4;
998
- $[44] = t5;
999
- $[45] = t9;
1000
- $[46] = t20;
1001
- } else t20 = $[46];
1001
+ $[44] = t19;
1002
+ $[45] = t4;
1003
+ $[46] = t5;
1004
+ $[47] = t9;
1005
+ $[48] = t20;
1006
+ } else t20 = $[48];
1002
1007
  const tabs = t20;
1003
1008
  let t21;
1004
- if ($[47] !== value) {
1009
+ if ($[49] !== value) {
1005
1010
  t21 = () => {
1006
1011
  setIsOpen(true);
1007
1012
  setTempValue(value);
1008
1013
  };
1009
- $[47] = value;
1010
- $[48] = t21;
1011
- } else t21 = $[48];
1014
+ $[49] = value;
1015
+ $[50] = t21;
1016
+ } else t21 = $[50];
1012
1017
  let t22;
1013
- if ($[49] !== palette || $[50] !== t21 || $[51] !== value) {
1018
+ if ($[51] !== palette || $[52] !== t21 || $[53] !== value) {
1014
1019
  t22 = /* @__PURE__ */ jsx(ColorPreview, {
1015
1020
  type: "button",
1016
1021
  palette,
1017
1022
  value,
1018
1023
  onClick: t21
1019
1024
  });
1020
- $[49] = palette;
1021
- $[50] = t21;
1022
- $[51] = value;
1023
- $[52] = t22;
1024
- } else t22 = $[52];
1025
+ $[51] = palette;
1026
+ $[52] = t21;
1027
+ $[53] = value;
1028
+ $[54] = t22;
1029
+ } else t22 = $[54];
1025
1030
  let t23;
1026
- if ($[53] !== rest || $[54] !== t22) {
1031
+ if ($[55] !== rest || $[56] !== t22) {
1027
1032
  t23 = /* @__PURE__ */ jsx(Field, {
1028
1033
  ...rest,
1029
1034
  children: t22
1030
1035
  });
1031
- $[53] = rest;
1032
- $[54] = t22;
1033
- $[55] = t23;
1034
- } else t23 = $[55];
1036
+ $[55] = rest;
1037
+ $[56] = t22;
1038
+ $[57] = t23;
1039
+ } else t23 = $[57];
1035
1040
  let t24;
1036
- if ($[56] === Symbol.for("react.memo_cache_sentinel")) {
1041
+ if ($[58] === Symbol.for("react.memo_cache_sentinel")) {
1037
1042
  t24 = (modalKeepOpen) => !modalKeepOpen && setIsOpen(false);
1038
- $[56] = t24;
1039
- } else t24 = $[56];
1043
+ $[58] = t24;
1044
+ } else t24 = $[58];
1040
1045
  let t25;
1041
- if ($[57] === Symbol.for("react.memo_cache_sentinel")) {
1046
+ if ($[59] === Symbol.for("react.memo_cache_sentinel")) {
1042
1047
  t25 = /* @__PURE__ */ jsx(Button, {
1043
1048
  icon: true,
1044
1049
  variant: "text",
@@ -1046,10 +1051,10 @@ function ColorPicker(t0) {
1046
1051
  onClick: () => setIsOpen(false),
1047
1052
  children: /* @__PURE__ */ jsx("i", { className: "fe-cancel" })
1048
1053
  });
1049
- $[57] = t25;
1050
- } else t25 = $[57];
1054
+ $[59] = t25;
1055
+ } else t25 = $[59];
1051
1056
  let t26;
1052
- if ($[58] !== tabId || $[59] !== tabs) {
1057
+ if ($[60] !== tabId || $[61] !== tabs) {
1053
1058
  t26 = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Tabs, {
1054
1059
  tabs,
1055
1060
  value: tabId,
@@ -1058,23 +1063,23 @@ function ColorPicker(t0) {
1058
1063
  className: "rounded-t-2xl",
1059
1064
  action: t25
1060
1065
  }) });
1061
- $[58] = tabId;
1062
- $[59] = tabs;
1063
- $[60] = t26;
1064
- } else t26 = $[60];
1066
+ $[60] = tabId;
1067
+ $[61] = tabs;
1068
+ $[62] = t26;
1069
+ } else t26 = $[62];
1065
1070
  let t27;
1066
- if ($[61] === Symbol.for("react.memo_cache_sentinel")) {
1071
+ if ($[63] === Symbol.for("react.memo_cache_sentinel")) {
1067
1072
  t27 = () => setIsOpen(false);
1068
- $[61] = t27;
1069
- } else t27 = $[61];
1073
+ $[63] = t27;
1074
+ } else t27 = $[63];
1070
1075
  let t28;
1071
- if ($[62] !== t) {
1076
+ if ($[64] !== t) {
1072
1077
  t28 = t?.("button.cancel") ?? "Annuler";
1073
- $[62] = t;
1074
- $[63] = t28;
1075
- } else t28 = $[63];
1078
+ $[64] = t;
1079
+ $[65] = t28;
1080
+ } else t28 = $[65];
1076
1081
  let t29;
1077
- if ($[64] !== t28) {
1082
+ if ($[66] !== t28) {
1078
1083
  t29 = /* @__PURE__ */ jsx(Button, {
1079
1084
  type: "button",
1080
1085
  variant: "text",
@@ -1082,11 +1087,11 @@ function ColorPicker(t0) {
1082
1087
  onClick: t27,
1083
1088
  children: t28
1084
1089
  });
1085
- $[64] = t28;
1086
- $[65] = t29;
1087
- } else t29 = $[65];
1090
+ $[66] = t28;
1091
+ $[67] = t29;
1092
+ } else t29 = $[67];
1088
1093
  let t30;
1089
- if ($[66] !== allowInherit || $[67] !== handleInherit || $[68] !== t) {
1094
+ if ($[68] !== allowInherit || $[69] !== handleInherit || $[70] !== t) {
1090
1095
  t30 = allowInherit && /* @__PURE__ */ jsxs(Button, {
1091
1096
  icon: true,
1092
1097
  type: "button",
@@ -1095,31 +1100,31 @@ function ColorPicker(t0) {
1095
1100
  onClick: handleInherit,
1096
1101
  children: [/* @__PURE__ */ jsx("i", { className: "fe-settings" }), /* @__PURE__ */ jsx("span", { children: t?.("form.values.color.inherit") ?? "Par défault" })]
1097
1102
  });
1098
- $[66] = allowInherit;
1099
- $[67] = handleInherit;
1100
- $[68] = t;
1101
- $[69] = t30;
1102
- } else t30 = $[69];
1103
+ $[68] = allowInherit;
1104
+ $[69] = handleInherit;
1105
+ $[70] = t;
1106
+ $[71] = t30;
1107
+ } else t30 = $[71];
1103
1108
  let t31;
1104
- if ($[70] !== t) {
1109
+ if ($[72] !== t) {
1105
1110
  t31 = t?.("button.validate") ?? "Valider";
1106
- $[70] = t;
1107
- $[71] = t31;
1108
- } else t31 = $[71];
1111
+ $[72] = t;
1112
+ $[73] = t31;
1113
+ } else t31 = $[73];
1109
1114
  let t32;
1110
- if ($[72] !== handleSubmit || $[73] !== t31) {
1115
+ if ($[74] !== handleSubmit || $[75] !== t31) {
1111
1116
  t32 = /* @__PURE__ */ jsx(Button, {
1112
1117
  type: "button",
1113
1118
  color: "yellow",
1114
1119
  onClick: handleSubmit,
1115
1120
  children: t31
1116
1121
  });
1117
- $[72] = handleSubmit;
1118
- $[73] = t31;
1119
- $[74] = t32;
1120
- } else t32 = $[74];
1122
+ $[74] = handleSubmit;
1123
+ $[75] = t31;
1124
+ $[76] = t32;
1125
+ } else t32 = $[76];
1121
1126
  let t33;
1122
- if ($[75] !== t29 || $[76] !== t30 || $[77] !== t32) {
1127
+ if ($[77] !== t29 || $[78] !== t30 || $[79] !== t32) {
1123
1128
  t33 = /* @__PURE__ */ jsx(ModalFooter, {
1124
1129
  className: "mt-2",
1125
1130
  children: /* @__PURE__ */ jsxs("div", {
@@ -1131,43 +1136,43 @@ function ColorPicker(t0) {
1131
1136
  ]
1132
1137
  })
1133
1138
  });
1134
- $[75] = t29;
1135
- $[76] = t30;
1136
- $[77] = t32;
1137
- $[78] = t33;
1138
- } else t33 = $[78];
1139
+ $[77] = t29;
1140
+ $[78] = t30;
1141
+ $[79] = t32;
1142
+ $[80] = t33;
1143
+ } else t33 = $[80];
1139
1144
  let t34;
1140
- if ($[79] !== t26 || $[80] !== t33) {
1145
+ if ($[81] !== t26 || $[82] !== t33) {
1141
1146
  t34 = /* @__PURE__ */ jsxs(ModalContent, {
1142
1147
  className: "max-w-140",
1143
1148
  zClassName: "z-modal-overlay",
1144
1149
  children: [t26, t33]
1145
1150
  });
1146
- $[79] = t26;
1147
- $[80] = t33;
1148
- $[81] = t34;
1149
- } else t34 = $[81];
1151
+ $[81] = t26;
1152
+ $[82] = t33;
1153
+ $[83] = t34;
1154
+ } else t34 = $[83];
1150
1155
  let t35;
1151
- if ($[82] !== isOpen || $[83] !== t34) {
1156
+ if ($[84] !== isOpen || $[85] !== t34) {
1152
1157
  t35 = /* @__PURE__ */ jsx(Modal, {
1153
1158
  open: isOpen,
1154
1159
  onOpen: t24,
1155
1160
  children: t34
1156
1161
  });
1157
- $[82] = isOpen;
1158
- $[83] = t34;
1159
- $[84] = t35;
1160
- } else t35 = $[84];
1162
+ $[84] = isOpen;
1163
+ $[85] = t34;
1164
+ $[86] = t35;
1165
+ } else t35 = $[86];
1161
1166
  let t36;
1162
- if ($[85] !== t23 || $[86] !== t35) {
1167
+ if ($[87] !== t23 || $[88] !== t35) {
1163
1168
  t36 = /* @__PURE__ */ jsxs(Fragment$1, { children: [t23, t35] });
1164
- $[85] = t23;
1165
- $[86] = t35;
1166
- $[87] = t36;
1167
- } else t36 = $[87];
1169
+ $[87] = t23;
1170
+ $[88] = t35;
1171
+ $[89] = t36;
1172
+ } else t36 = $[89];
1168
1173
  return t36;
1169
1174
  }
1170
1175
  //#endregion
1171
1176
  export { rawColorSchema as _, NamedColorGrid as a, isColorAvailable as c, colorNames as d, colorSchema as f, namedColorSchema as g, defaultNamedColor as h, ColorPreview as i, isGrayScale as l, defaultFallbackColor as m, HarmonyColorGrid as n, applyColorVariant as o, defaultBrandPalette as p, RawColorGrid as r, getColorValue as s, ColorPicker as t, brandPaletteSchema as u };
1172
1177
 
1173
- //# sourceMappingURL=color-DCGVVZ0Z.mjs.map
1178
+ //# sourceMappingURL=color-Bhhbmy0k.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-Bhhbmy0k.mjs","names":["z","colorNames","const","ColorName","namedColorSchema","object","type","literal","name","enum","variant","number","NamedColor","infer","defaultNamedColor","defaultFallbackColor","rawColorSchema","hex","string","RawColor","colorSchema","union","Color","ColorInput","input","brandPaletteSchema","primary","secondary","_default","nullable","tertiary","gray","BrandPalette","defaultBrandPalette","Color","ColorName","defaultBrandPalette","defaultFallbackColor","getColorValue","color","palette","fallbackColor","type","hex","base","name","applyColorVariant","variant","isGrayScale","normalized","replace","isShort","length","step","r","parseInt","slice","repeat","g","b","isColorAvailable","colorName","Math","abs","clsx","Color","defaultBrandPalette","BrandPalette","NamedColor","colorNames","applyColorVariant","getColorValue","isColorAvailable","useTranslate","Props","palette","value","onChange","variants","colorLabels","Record","primary","secondary","tertiary","gray","variantMagnitude","getVariantSteps","Array","isArray","min","max","from","length","_","i","Math","round","colorButtonStyle","base","selected","NamedColorGrid","t0","$","_c","t1","t2","undefined","t","t3","name","variant","t4","filter","map","name_0","steps","c","type","v","backgroundColor","t5","t6","variant_0","c_0","t7","t8","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","Color","defaultBrandPalette","defaultNamedColor","BrandPalette","getColorValue","ThemeColor","ColorPreviewProps","Omit","withRipple","value","color","label","palette","showValue","className","ref","HTMLButtonElement","ColorPreview","t0","$","_c","rest","t1","t2","t3","t4","unknownColor","undefined","t5","type","hex","valueToShow","name","buttonRef","t6","Symbol","for","current","ripples","t7","t8","t9","t10","t11","backgroundColor","t12","t13","t14","t15","t16","rawColorsHex","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose","neutral","slate","gray","zinc","stone","mauve","olive","mist","taupe","const","rawColorsHex","colorByGroups","Object","entries","filter","name","colorGroup","includes","map","colors","clsx","colorByGroups","RawColor","Props","value","onChange","RawColorGrid","t0","$","_c","t1","hex","map","t2","name","colors","t3","colorNumber","colorCode","parseInt","backgroundColor","type","clsx","colord","extend","harmoniesPlugin","HarmonyType","RawColor","colorButtonStyle","useTranslate","harmonyLabels","Record","complementary","analogous","triadic","rectangle","tetradic","harmonyTypes","Object","keys","Props","refColor","value","onChange","HarmonyColorGrid","t0","$","_c","t","t1","t2","hex","baseColor","map","harmonyType","harmonies","harmonyColor","index","toHex","base","selected","backgroundColor","type","t3","Modal","ModalContent","ModalFooter","useState","Field","FieldProps","NamedColorGrid","Button","ColorPreview","Color","BrandPalette","RawColor","Tabs","HexColorInput","HexColorPicker","inputConfig","clsx","useTranslate","RawColorGrid","HarmonyColorGrid","Props","Omit","palette","value","refColor","onChange","allowInherit","variants","ColorPicker","t0","$","_c","rest","t1","undefined","t","isOpen","setIsOpen","tempValue","setTempValue","tabId","setTabId","type","t2","handleSubmit","t3","handleInherit","t4","id","title","content","t5","t6","t7","t8","t9","t10","t11","hex","t12","Symbol","for","t13","t14","container","t15","t16","hex_0","t17","input","t18","t19","t20","tabs","t21","t22","t23","t24","modalKeepOpen","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36"],"sources":["../src/components/color/config.ts","../src/components/color/util.ts","../src/components/color/NamedColorGrid.tsx","../src/components/color/ColorPreview.tsx","../src/lib/colors.generated.ts","../src/lib/color.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx","../src/components/color/ColorPicker.tsx"],"sourcesContent":["import { z } from \"zod/v4-mini\";\n\nexport const colorNames = [\"primary\", \"secondary\", \"tertiary\", \"gray\"] as const;\nexport type ColorName = (typeof colorNames)[number];\n\nexport const namedColorSchema = z.object({\n type: z.literal(\"named\"),\n name: z.enum(colorNames),\n variant: z.number(), // -100, 100\n});\nexport type NamedColor = z.infer<typeof namedColorSchema>;\n\nexport const defaultNamedColor: NamedColor = { name: \"gray\", variant: -100, type: \"named\" };\nexport const defaultFallbackColor = \"#000000\";\n\nexport const rawColorSchema = z.object({\n type: z.literal(\"raw\"),\n hex: z.string(),\n});\nexport type RawColor = z.infer<typeof rawColorSchema>;\n\nexport const colorSchema = z.union([namedColorSchema, rawColorSchema]);\nexport type Color = z.infer<typeof colorSchema>;\n\nexport type ColorInput = z.input<typeof colorSchema>;\n\nexport const brandPaletteSchema = z.object({\n primary: z.string(),\n secondary: z._default(z.nullable(z.string()), null),\n tertiary: z._default(z.nullable(z.string()), null),\n gray: z.string(),\n});\nexport type BrandPalette = z.infer<typeof brandPaletteSchema>;\n\nexport const defaultBrandPalette: BrandPalette = {\n primary: \"#ffca0a\",\n secondary: null,\n tertiary: null,\n gray: \"#808080\",\n};\n","import { Color, ColorName, defaultBrandPalette, defaultFallbackColor } from \"./config\";\n\nexport function getColorValue(\n color: Color | null,\n palette = defaultBrandPalette,\n fallbackColor = defaultFallbackColor,\n): string {\n if (!color) {\n return fallbackColor;\n }\n\n if (color.type === \"raw\") {\n return color.hex;\n }\n\n const base = color.name === \"gray\" ? \"#808080\" : (palette[color.name] ?? \"#808080\");\n\n return applyColorVariant(base ?? \"#808080\", color.variant);\n}\n\n/**\n * Détermine si une couleur hexadécimale (#rgb, #rgba, #rrggbb, #rrggbbaa)\n * est un niveau de gris, c'est-à-dire que ses composantes R, G et B sont égales.\n */\nexport function isGrayScale(hex: string): boolean {\n const normalized = hex.replace(\"#\", \"\");\n const isShort = normalized.length === 3 || normalized.length === 4;\n const step = isShort ? 1 : 2;\n\n const r = parseInt(normalized.slice(0, step).repeat(isShort ? 2 : 1), 16);\n const g = parseInt(normalized.slice(step, step * 2).repeat(isShort ? 2 : 1), 16);\n const b = parseInt(normalized.slice(step * 2, step * 3).repeat(isShort ? 2 : 1), 16);\n\n return r === g && g === b;\n}\n\nexport function isColorAvailable(colorName: ColorName, palette = defaultBrandPalette): boolean {\n if (colorName === \"gray\") {\n return true;\n }\n return !!palette[colorName];\n}\n\n/**\n * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`\n * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —\n * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.\n * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix\n * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).\n */\nexport function applyColorVariant(base: string, variant: number): string {\n if (variant === 0) {\n return base;\n }\n\n return variant > 0\n ? `color-mix(in oklab, ${base} ${100 - variant}%, white)`\n : `color-mix(in oklab, ${base} ${100 - Math.abs(variant)}%, ${isGrayScale(base) ? \"black\" : \"var(--color-gray-7)\"})`;\n}\n","import clsx from \"clsx\";\nimport { Color, defaultBrandPalette, BrandPalette, NamedColor, colorNames } from \"./config\";\nimport { applyColorVariant, getColorValue, isColorAvailable } from \"./util\";\nimport { useTranslate } from \"../i18n\";\n\ninterface Props {\n palette?: BrandPalette;\n value: NamedColor | null;\n onChange: (value: NamedColor) => void;\n variants?: number | number[];\n}\n\nconst colorLabels: Record<(typeof colorNames)[number], string> = {\n primary: \"Principale\",\n secondary: \"Secondaire\",\n tertiary: \"Tertiaire\",\n gray: \"Niveau de gris\",\n};\n// bornes à -80/80 plutôt que -100/100 : à 100% la base disparaît complètement\n// du color-mix, le swatch ne reproduit plus que du blanc/gris pur, redondant\n// avec les entrées white/black déjà présentes dans la grille.\nconst variantMagnitude = 80;\n\nfunction getVariantSteps(variants: number | number[]): number[] {\n if (Array.isArray(variants)) {\n return variants;\n }\n const min = -variantMagnitude;\n const max = variantMagnitude;\n if (variants <= 1) {\n return [0];\n }\n return Array.from({ length: variants }, (_, i) =>\n Math.round(min + (i * (max - min)) / (variants - 1)),\n );\n}\n\nexport const colorButtonStyle = {\n base: \"cursor-pointer hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125 first-of-type:rounded-l-md last-of-type:rounded-r-md\",\n selected: \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n};\n\nexport function NamedColorGrid({\n palette = defaultBrandPalette,\n value,\n onChange,\n variants = 9,\n}: Props) {\n const t = useTranslate();\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {colorNames\n .filter((name) => isColorAvailable(name, palette))\n .map((name) => {\n // une seule vignette pour black : color-mix(black, black) est un no-op,\n // toute une rampe serait visuellement identique\n const steps = getVariantSteps(variants);\n\n return (\n <div key={name}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorNames.${name}`) ?? colorLabels[name]}\n </div>\n <div className=\"flex\">\n {steps.map((variant) => {\n const c: Color = { type: \"named\", name, variant };\n const v = getColorValue(c, palette);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`${c.name} (${variant}%)`}\n className={clsx(\n \"h-8 flex-1\",\n colorButtonStyle.base,\n value?.name === name &&\n value?.variant === variant &&\n colorButtonStyle.selected,\n )}\n style={{ backgroundColor: v }}\n onClick={() => onChange(c)}\n />\n );\n })}\n </div>\n </div>\n );\n })}\n\n <div>\n <div className=\"text-body-xs truncate\">\n {t?.(\"form.values.colorNames.blackAndWhite\") ?? \"Noir & Blanc\"}\n </div>\n <div className=\"flex\">\n {[-100, 100].map((variant) => {\n const c = applyColorVariant(\"#808080\", variant);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`gray (${variant}%)`}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.name === \"gray\" && value?.variant === variant && colorButtonStyle.selected,\n variant === 100 && \"border border-gray-2\",\n )}\n style={{ backgroundColor: c }}\n onClick={() => onChange({ type: \"named\", name: \"gray\", variant })}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"pentatrion-design/hooks\";\nimport { Color, defaultBrandPalette, defaultNamedColor, BrandPalette } from \"./config\";\nimport { getColorValue } from \"./util\";\nimport { ThemeColor } from \"../../types\";\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 value: Color =\n typeof unknownColor === \"string\"\n ? { type: \"raw\", hex: unknownColor }\n : (unknownColor ?? defaultNamedColor);\n\n const valueToShow = label ?? (showValue ? (value.type === \"raw\" ? value.hex : value.name) : 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: getColorValue(value, palette) }}\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","// 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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O;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,KAAK;EACH,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CAEAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;AClV0CE,CAAY,CAAC,CACtDI,QACE,CAACC,MAAMC,gBAMN,OAAOA,eAAe,YACtB,CAAC;CAAC;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"}
@@ -1,2 +1,2 @@
1
- import { C as rawColorSchema, S as namedColorSchema, _ as colorNames, a as isColorAvailable, b as defaultFallbackColor, c as ColorPreview, d as Color, f as ColorInput, g as brandPaletteSchema, h as RawColor, i as getColorValue, l as ColorPicker, m as NamedColor, n as RawColorGrid, o as isGrayScale, p as ColorName, r as applyColorVariant, s as NamedColorGrid, t as HarmonyColorGrid, u as BrandPalette, v as colorSchema, x as defaultNamedColor, y as defaultBrandPalette } from "../../index-D6UHIpjx.mjs";
1
+ import { C as rawColorSchema, S as namedColorSchema, _ as colorNames, a as isColorAvailable, b as defaultFallbackColor, c as ColorPreview, d as Color, f as ColorInput, g as brandPaletteSchema, h as RawColor, i as getColorValue, l as ColorPicker, m as NamedColor, n as RawColorGrid, o as isGrayScale, p as ColorName, r as applyColorVariant, s as NamedColorGrid, t as HarmonyColorGrid, u as BrandPalette, v as colorSchema, x as defaultNamedColor, y as defaultBrandPalette } from "../../index--vYAkVqX.mjs";
2
2
  export { BrandPalette, Color, ColorInput, ColorName, ColorPicker, ColorPreview, HarmonyColorGrid, NamedColor, NamedColorGrid, RawColor, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isGrayScale, namedColorSchema, rawColorSchema };
@@ -1,2 +1,2 @@
1
- import { _ as rawColorSchema, a as NamedColorGrid, c as isColorAvailable, d as colorNames, f as colorSchema, g as namedColorSchema, h as defaultNamedColor, i as ColorPreview, l as isGrayScale, m as defaultFallbackColor, n as HarmonyColorGrid, o as applyColorVariant, p as defaultBrandPalette, r as RawColorGrid, s as getColorValue, t as ColorPicker, u as brandPaletteSchema } from "../../color-DCGVVZ0Z.mjs";
1
+ import { _ as rawColorSchema, a as NamedColorGrid, c as isColorAvailable, d as colorNames, f as colorSchema, g as namedColorSchema, h as defaultNamedColor, i as ColorPreview, l as isGrayScale, m as defaultFallbackColor, n as HarmonyColorGrid, o as applyColorVariant, p as defaultBrandPalette, r as RawColorGrid, s as getColorValue, t as ColorPicker, u as brandPaletteSchema } from "../../color-Bhhbmy0k.mjs";
2
2
  export { ColorPicker, ColorPreview, HarmonyColorGrid, NamedColorGrid, RawColorGrid, applyColorVariant, brandPaletteSchema, colorNames, colorSchema, defaultBrandPalette, defaultFallbackColor, defaultNamedColor, getColorValue, isColorAvailable, isGrayScale, namedColorSchema, rawColorSchema };
@@ -1,6 +1,6 @@
1
1
  import { n as FieldProps } from "../../../Field-DhaPMGcl.mjs";
2
2
  import "../../../index-D47GgUvX.mjs";
3
- import { f as ColorInput, h as RawColor, u as BrandPalette } from "../../../index-D6UHIpjx.mjs";
3
+ import { f as ColorInput, h as RawColor, u as BrandPalette } from "../../../index--vYAkVqX.mjs";
4
4
  import { FieldName } from "@conform-to/react/future";
5
5
  //#region src/components/fields/color/HexColorField.d.ts
6
6
  interface Props$1 extends Omit<FieldProps, "children" | "group"> {
@@ -1,4 +1,4 @@
1
- import { t as ColorPicker } from "../../../color-DCGVVZ0Z.mjs";
1
+ import { t as ColorPicker } from "../../../color-Bhhbmy0k.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 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/range/Range.tsx","../../../../src/components/fields/range/AudioRange.tsx","../../../../src/components/fields/range/RangeField.tsx"],"mappings":";;;;;UAKiB,qBAAmB,KAClC;EAWA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA,QAAQ;EAER,aAAa;EAEb,qBAAqB;;iBAKP,QACd,WACA,oBACA,OAAO,iBACP,KACA,KACA,OACA,YACA,MACA,cACA,WACA,OACA,WACA,UACA,sBACG,QACF,+BAAU,IAAA;;;UCzCI,mBAAmB,KAClC;EAYA;EAEA;EACA;EACA;EAEA,QAAQ;EAER,aAAa;EAEb;EAEA,qBAAqB;;iBAKP,aACd,WACA,gBACA,OAAO,iBACP,KACA,KACA,OACA,MACA,WACA,UACA,sBACG,QACF,6BAAU,IAAA;;;UCvDH,cAAc,KAAK;EAC3B,MAAM;EAEN;EACA;EACA;EACA;EACA;;iBAGc,aACd,MACA,KACA,KACA,MACA,YACA,WACA,IAAI,aACD,QACF,wBAAK,IAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/components/fields/range/Range.tsx","../../../../src/components/fields/range/AudioRange.tsx","../../../../src/components/fields/range/RangeField.tsx"],"mappings":";;;;;UAaiB,qBAAmB,KAClC;EAWA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA,QAAQ;EAER,aAAa;EAEb,qBAAqB;;iBAKP,QACd,WACA,oBACA,OAAO,iBACP,KACA,KACA,OACA,YACA,MACA,cACA,WACA,OACA,WACA,UACA,sBACG,QACF,+BAAU,IAAA;;;UCjDI,mBAAmB,KAClC;EAYA;EAEA;EACA;EACA;EAEA,QAAQ;EAER,aAAa;EAEb;EAEA,qBAAqB;;iBAKP,aACd,WACA,gBACA,OAAO,iBACP,KACA,KACA,OACA,MACA,WACA,UACA,sBACG,QACF,6BAAU,IAAA;;;UCvDH,cAAc,KAAK;EAC3B,MAAM;EAEN;EACA;EACA;EACA;EACA;;iBAGc,aACd,MACA,KACA,KACA,MACA,YACA,WACA,IAAI,aACD,QACF,wBAAK,IAAA"}
@@ -7,7 +7,6 @@ import { useControl, useField } from "@conform-to/react/future";
7
7
  //#region src/components/fields/range/Range.tsx
8
8
  const trackBase$1 = "pointer-events-none absolute top-0 left-0 h-full";
9
9
  function Range({ className, additionalBarValue, value: controlledValue, min = 0, max = 100, color = "yellow", showMinMax = "onHover", step = 1, valuesByTick, showValue = true, ticks = false, formatter = (str) => str?.toString(), onChange, onChangeCommitted, ...rest }) {
10
- const rangeRef = useRef(null);
11
10
  const [tempValue, setTempValue] = useState(void 0);
12
11
  const isTemp = typeof tempValue !== "undefined";
13
12
  const value = isTemp ? tempValue : controlledValue;
@@ -23,15 +22,15 @@ function Range({ className, additionalBarValue, value: controlledValue, min = 0,
23
22
  if (isTemp) setTempValue(e.target.valueAsNumber);
24
23
  onChange?.(e);
25
24
  };
26
- function handleSeekStart() {
27
- setTempValue(rangeRef.current.valueAsNumber);
25
+ function handleSeekStart(event) {
26
+ setTempValue(event.target.valueAsNumber);
28
27
  }
29
- function handleSeekEnd() {
28
+ function handleSeekEnd(event_0) {
30
29
  setTempValue(void 0);
31
- onChangeCommitted?.(rangeRef.current.valueAsNumber);
30
+ onChangeCommitted?.(event_0.target.valueAsNumber);
32
31
  }
33
- function handleKeyUp() {
34
- onChangeCommitted?.(rangeRef.current.valueAsNumber);
32
+ function handleKeyUp(event_1) {
33
+ onChangeCommitted?.(event_1.target.valueAsNumber);
35
34
  }
36
35
  return /* @__PURE__ */ jsxs("div", {
37
36
  className: clsx("group relative flex", className),
@@ -67,7 +66,6 @@ function Range({ className, additionalBarValue, value: controlledValue, min = 0,
67
66
  /* @__PURE__ */ jsx("input", {
68
67
  type: "range",
69
68
  className: clsx("p8n-input-range h-8 w-full min-w-0 bg-transparent outline-offset-[0.75rem]"),
70
- ref: rangeRef,
71
69
  min,
72
70
  max,
73
71
  step,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["useMemo","ComponentProps","useState","ChangeEvent","useRef","clsx","ThemeColor","RangeProps","Omit","value","additionalBarValue","min","max","step","showMinMax","showValue","ticks","valuesByTick","color","formatter","str","onChangeCommitted","valueAsNumber","trackBase","Range","className","controlledValue","toString","onChange","rest","rangeRef","HTMLInputElement","tempValue","setTempValue","undefined","isTemp","range","percent","additionalPercent","nbOfTicks","Math","floor","cssVars","handleChange","e","target","handleSeekStart","current","handleSeekEnd","handleKeyUp","Array","from","length","map","_","i","useMemo","useState","ChangeEvent","useRef","KeyboardEvent","ComponentProps","clsx","ThemeColor","formatTime","time","seconds","foo","minutes","Math","floor","toFixed","RangeProps","Omit","value","min","max","step","color","formatter","str","valueClassName","onChangeCommitted","valueAsNumber","trackBase","AudioRange","t0","$","_c","className","controlledValue","onChange","rest","t1","t2","t3","t4","t5","undefined","rangeRef","tempValue","setTempValue","isTemp","range","percent","t6","t7","cssVars","t8","e","target","handleChange","t9","Symbol","for","handleSeekStart","current","t10","handleSeekEnd","t11","handleKeyDown","e_0","currentVal","bb41","code","preventDefault","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","useControl","useField","FieldName","Field","FieldProps","Range","Props","Omit","name","min","max","step","showMinMax","showValue","RangeField","id","forcedId","rest","field","control","defaultValue","parse","payload","Error","parseInt","serialize","value","toString","register","errors","change","blur"],"sources":["../../../../src/components/fields/range/Range.tsx","../../../../src/components/fields/range/AudioRange.tsx","../../../../src/components/fields/range/RangeField.tsx"],"sourcesContent":["import { useMemo, ComponentProps, useState, ChangeEvent, useRef } from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport interface RangeProps extends Omit<\n ComponentProps<\"input\">,\n | \"value\"\n | \"defaultValue\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"onPointerDown\"\n | \"onPointerUp\"\n | \"onTouchEnd\"\n | \"ref\"\n> {\n value: number;\n\n additionalBarValue?: number;\n\n min?: number;\n max?: number;\n step?: number;\n\n showMinMax?: \"onHover\" | \"always\" | \"never\";\n\n showValue?: boolean;\n\n ticks?: boolean;\n\n valuesByTick?: number;\n\n color?: ThemeColor;\n\n formatter?: (str: number) => string;\n\n onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function Range({\n className,\n additionalBarValue,\n value: controlledValue,\n min = 0,\n max = 100,\n color = \"yellow\",\n showMinMax = \"onHover\",\n step = 1,\n valuesByTick,\n showValue = true,\n ticks = false,\n formatter = (str) => str?.toString(),\n onChange,\n onChangeCommitted,\n ...rest\n}: RangeProps) {\n const rangeRef = useRef<HTMLInputElement>(null!);\n\n const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n const isTemp = typeof tempValue !== \"undefined\";\n\n const value = isTemp ? tempValue : controlledValue;\n\n const range = max - min;\n const percent = (value - min) / range;\n const additionalPercent = additionalBarValue ? (additionalBarValue - min) / range : 0;\n const nbOfTicks = 1 + Math.floor(range / (valuesByTick ?? step ?? 5));\n\n const cssVars = useMemo(\n () => ({\n \"--p8n-range-progress-percent\": `${percent * 100}%`,\n \"--p8n-range-additional-percent\": `${additionalPercent * 100}%`,\n }),\n [percent, additionalPercent],\n );\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (isTemp) {\n setTempValue(e.target.valueAsNumber);\n }\n onChange?.(e);\n };\n\n function handleSeekStart() {\n setTempValue(rangeRef.current.valueAsNumber);\n }\n function handleSeekEnd() {\n setTempValue(undefined);\n onChangeCommitted?.(rangeRef.current.valueAsNumber);\n }\n\n function handleKeyUp() {\n onChangeCommitted?.(rangeRef.current.valueAsNumber);\n }\n\n return (\n <div className={clsx(\"group relative flex\", className)} style={cssVars} data-color={color}>\n {showMinMax !== \"never\" && (\n <>\n <div\n className={clsx(\n \"text-body-xs absolute top-6 left-4 -translate-x-2/4\",\n showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n {formatter(min)}\n </div>\n <div\n className={clsx(\n \"text-body-xs absolute top-6 right-4 translate-x-2/4\",\n showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n {formatter(max)}\n </div>\n </>\n )}\n\n <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n {/* track full */}\n <div\n className={clsx(\n trackBase,\n \"track w-full bg-custom-1 after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:bg-custom-1\",\n )}\n ></div>\n {typeof additionalBarValue !== \"undefined\" && (\n <div\n className={clsx(\n trackBase,\n \"w-(--p8n-range-additional-percent) rounded-[3px] bg-custom-2 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-2\",\n )}\n ></div>\n )}\n {showValue && (\n <div className=\"text-body-sm pointer-events-none absolute bottom-4 left-(--p8n-range-progress-percent) -translate-x-2/4\">\n {formatter(value)}\n </div>\n )}\n {/* active zone */}\n <div\n className={clsx(\n trackBase,\n \"w-(--p8n-range-progress-percent) rounded-[3px] bg-custom-4 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-4\",\n )}\n ></div>\n {/* ticks */}\n {ticks && (\n <div\n className={clsx(\n trackBase,\n \"-mx-0.5 flex w-[calc(100%+0.25rem)] items-center justify-between\",\n )}\n >\n {Array.from({ length: nbOfTicks }).map((_, i) => (\n <span key={i} className=\"bg-gray-0 h-1 w-1 rounded-full\"></span>\n ))}\n </div>\n )}\n </div>\n </div>\n <input\n type=\"range\"\n className={clsx(\n \"p8n-input-range h-8 w-full min-w-0 bg-transparent outline-offset-[0.75rem]\",\n )}\n ref={rangeRef}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onPointerDown={handleSeekStart}\n onPointerUp={handleSeekEnd}\n onTouchEnd={handleSeekEnd}\n onKeyUp={handleKeyUp}\n {...rest}\n />\n </div>\n );\n}\n","import { useMemo, useState, ChangeEvent, useRef, KeyboardEvent, ComponentProps } from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport const formatTime = (time: number) => {\n let seconds: string | number = time % 60;\n const foo = time - seconds;\n const minutes = foo / 60;\n if (seconds < 10) {\n seconds = `0${Math.floor(seconds)}`;\n } else {\n seconds = Math.floor(seconds).toFixed(0);\n }\n return minutes + \":\" + seconds;\n};\n\nexport interface RangeProps extends Omit<\n ComponentProps<\"input\">,\n | \"value\"\n | \"defaultValue\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"onPointerDown\"\n | \"onPointerUp\"\n | \"onTouchEnd\"\n | \"onKeyDown\"\n | \"ref\"\n> {\n value: number;\n\n min?: number;\n max?: number;\n step?: number;\n\n color?: ThemeColor;\n\n formatter?: (str: number) => string;\n\n valueClassName?: string;\n\n onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function AudioRange({\n className,\n valueClassName,\n value: controlledValue,\n min = 0,\n max = 100,\n color = \"yellow\",\n step = 1,\n formatter = formatTime,\n onChange,\n onChangeCommitted,\n ...rest\n}: RangeProps) {\n const rangeRef = useRef<HTMLInputElement>(null!);\n\n const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n\n const isTemp = typeof tempValue !== \"undefined\";\n\n const value = isTemp ? tempValue : controlledValue;\n\n const range = max - min;\n const percent = (value - min) / range;\n\n const cssVars = useMemo(\n () => ({\n \"--p8n-range-progress-percent\": `${percent * 100}%`,\n }),\n [percent],\n );\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (isTemp) {\n setTempValue(e.target.valueAsNumber);\n }\n onChange?.(e);\n };\n\n function handleSeekStart() {\n setTempValue(rangeRef.current.valueAsNumber);\n }\n function handleSeekEnd() {\n setTempValue(undefined);\n onChangeCommitted?.(rangeRef.current.valueAsNumber);\n }\n\n function handleKeyDown(e: KeyboardEvent) {\n const currentVal = rangeRef.current.valueAsNumber;\n switch (e.code) {\n case \"ArrowLeft\": {\n e.preventDefault();\n onChangeCommitted?.(Math.max(min, currentVal - 5));\n break;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n onChangeCommitted?.(Math.min(max, currentVal + 5));\n break;\n }\n }\n }\n\n return (\n <div className=\"flex items-center\">\n <div className={clsx(\"text-right\", valueClassName)}>{formatter(value)}</div>\n\n <div\n className={clsx(\"group relative flex flex-1\", className)}\n style={cssVars}\n data-color={color}\n >\n <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n {/* track full */}\n <div\n className={clsx(\n trackBase,\n \"track bg-custom-2/50 after:bg-custom-2/50 w-full after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:mask-l-from-50% after:mask-l-to-transparent after:mask-l-to-50%\",\n )}\n ></div>\n\n {/* active zone */}\n <div\n className={clsx(\n trackBase,\n \"from-gray-8/70 to-gray-8/50 before:bg-gray-8/70 bg-linear-to-r from-5%\",\n \"group-hover:from-custom-4 group-hover:to-custom-3 group-hover:before:bg-custom-4 group-hover:bg-linear-to-r\",\n\n \"w-(--p8n-range-progress-percent) rounded-r-sm\",\n \"before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:mask-r-from-50% before:mask-r-to-transparent before:mask-r-to-50%\",\n )}\n ></div>\n </div>\n </div>\n <input\n autoComplete=\"off\"\n type=\"range\"\n className={clsx(\n \"p8n-input-audio-range h-8 w-full min-w-0 cursor-pointer bg-transparent outline-offset-[0.75rem]\",\n )}\n ref={rangeRef}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onPointerDown={handleSeekStart}\n onPointerUp={handleSeekEnd}\n onTouchEnd={handleSeekEnd}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n </div>\n <div className={clsx(valueClassName)}>{formatter(max)}</div>\n </div>\n );\n}\n","import { useControl, useField, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Range } from \"./Range\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<number | null | undefined>;\n\n min?: number;\n max?: number;\n step?: number;\n showMinMax?: \"onHover\" | \"always\" | \"never\";\n showValue?: boolean;\n}\n\nexport function RangeField({\n name,\n min,\n max,\n step,\n showMinMax,\n showValue,\n id: forcedId,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n const control = useControl<number, string>({\n defaultValue: field.defaultValue,\n parse(payload) {\n if (typeof payload !== \"string\") {\n throw new Error(\"range input must return string\");\n }\n return parseInt(payload);\n },\n serialize(value) {\n return value.toString();\n },\n });\n\n return (\n <>\n <input type=\"text\" name={field.name} ref={control.register} hidden />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Range\n value={control.payload ?? 0}\n min={min}\n max={max}\n step={step}\n showMinMax={showMinMax}\n showValue={showValue}\n onChangeCommitted={(value: number) => {\n control.change(value);\n }}\n onBlur={() => control.blur()}\n />\n </Field>\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["useMemo","ComponentProps","useState","ChangeEvent","PointerEvent","TouchEvent","KeyboardEvent","clsx","ThemeColor","RangeProps","Omit","value","additionalBarValue","min","max","step","showMinMax","showValue","ticks","valuesByTick","color","formatter","str","onChangeCommitted","valueAsNumber","trackBase","Range","className","controlledValue","toString","onChange","rest","tempValue","setTempValue","undefined","isTemp","range","percent","additionalPercent","nbOfTicks","Math","floor","cssVars","handleChange","e","HTMLInputElement","target","handleSeekStart","event","handleSeekEnd","handleKeyUp","Array","from","length","map","_","i","useMemo","useState","ChangeEvent","useRef","KeyboardEvent","ComponentProps","clsx","ThemeColor","formatTime","time","seconds","foo","minutes","Math","floor","toFixed","RangeProps","Omit","value","min","max","step","color","formatter","str","valueClassName","onChangeCommitted","valueAsNumber","trackBase","AudioRange","t0","$","_c","className","controlledValue","onChange","rest","t1","t2","t3","t4","t5","undefined","rangeRef","tempValue","setTempValue","isTemp","range","percent","t6","t7","cssVars","t8","e","target","handleChange","t9","Symbol","for","handleSeekStart","current","t10","handleSeekEnd","t11","handleKeyDown","e_0","currentVal","bb41","code","preventDefault","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","useControl","useField","FieldName","Field","FieldProps","Range","Props","Omit","name","min","max","step","showMinMax","showValue","RangeField","id","forcedId","rest","field","control","defaultValue","parse","payload","Error","parseInt","serialize","value","toString","register","errors","change","blur"],"sources":["../../../../src/components/fields/range/Range.tsx","../../../../src/components/fields/range/AudioRange.tsx","../../../../src/components/fields/range/RangeField.tsx"],"sourcesContent":["import {\n useMemo,\n ComponentProps,\n useState,\n ChangeEvent,\n PointerEvent,\n TouchEvent,\n KeyboardEvent,\n} from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport interface RangeProps extends Omit<\n ComponentProps<\"input\">,\n | \"value\"\n | \"defaultValue\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"onPointerDown\"\n | \"onPointerUp\"\n | \"onTouchEnd\"\n | \"ref\"\n> {\n value: number;\n\n additionalBarValue?: number;\n\n min?: number;\n max?: number;\n step?: number;\n\n showMinMax?: \"onHover\" | \"always\" | \"never\";\n\n showValue?: boolean;\n\n ticks?: boolean;\n\n valuesByTick?: number;\n\n color?: ThemeColor;\n\n formatter?: (str: number) => string;\n\n onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function Range({\n className,\n additionalBarValue,\n value: controlledValue,\n min = 0,\n max = 100,\n color = \"yellow\",\n showMinMax = \"onHover\",\n step = 1,\n valuesByTick,\n showValue = true,\n ticks = false,\n formatter = (str) => str?.toString(),\n onChange,\n onChangeCommitted,\n ...rest\n}: RangeProps) {\n const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n const isTemp = typeof tempValue !== \"undefined\";\n\n const value = isTemp ? tempValue : controlledValue;\n\n const range = max - min;\n const percent = (value - min) / range;\n const additionalPercent = additionalBarValue ? (additionalBarValue - min) / range : 0;\n const nbOfTicks = 1 + Math.floor(range / (valuesByTick ?? step ?? 5));\n\n const cssVars = useMemo(\n () => ({\n \"--p8n-range-progress-percent\": `${percent * 100}%`,\n \"--p8n-range-additional-percent\": `${additionalPercent * 100}%`,\n }),\n [percent, additionalPercent],\n );\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (isTemp) {\n setTempValue(e.target.valueAsNumber);\n }\n onChange?.(e);\n };\n\n function handleSeekStart(event: PointerEvent<HTMLInputElement>) {\n setTempValue((event.target as HTMLInputElement).valueAsNumber);\n }\n function handleSeekEnd(event: TouchEvent<HTMLInputElement> | PointerEvent<HTMLInputElement>) {\n setTempValue(undefined);\n onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);\n }\n\n function handleKeyUp(event: KeyboardEvent) {\n onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);\n }\n\n return (\n <div className={clsx(\"group relative flex\", className)} style={cssVars} data-color={color}>\n {showMinMax !== \"never\" && (\n <>\n <div\n className={clsx(\n \"text-body-xs absolute top-6 left-4 -translate-x-2/4\",\n showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n {formatter(min)}\n </div>\n <div\n className={clsx(\n \"text-body-xs absolute top-6 right-4 translate-x-2/4\",\n showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n )}\n >\n {formatter(max)}\n </div>\n </>\n )}\n\n <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n {/* track full */}\n <div\n className={clsx(\n trackBase,\n \"track w-full bg-custom-1 after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:bg-custom-1\",\n )}\n ></div>\n {typeof additionalBarValue !== \"undefined\" && (\n <div\n className={clsx(\n trackBase,\n \"w-(--p8n-range-additional-percent) rounded-[3px] bg-custom-2 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-2\",\n )}\n ></div>\n )}\n {showValue && (\n <div className=\"text-body-sm pointer-events-none absolute bottom-4 left-(--p8n-range-progress-percent) -translate-x-2/4\">\n {formatter(value)}\n </div>\n )}\n {/* active zone */}\n <div\n className={clsx(\n trackBase,\n \"w-(--p8n-range-progress-percent) rounded-[3px] bg-custom-4 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-4\",\n )}\n ></div>\n {/* ticks */}\n {ticks && (\n <div\n className={clsx(\n trackBase,\n \"-mx-0.5 flex w-[calc(100%+0.25rem)] items-center justify-between\",\n )}\n >\n {Array.from({ length: nbOfTicks }).map((_, i) => (\n <span key={i} className=\"bg-gray-0 h-1 w-1 rounded-full\"></span>\n ))}\n </div>\n )}\n </div>\n </div>\n <input\n type=\"range\"\n className={clsx(\n \"p8n-input-range h-8 w-full min-w-0 bg-transparent outline-offset-[0.75rem]\",\n )}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onPointerDown={handleSeekStart}\n onPointerUp={handleSeekEnd}\n onTouchEnd={handleSeekEnd}\n onKeyUp={handleKeyUp}\n {...rest}\n />\n </div>\n );\n}\n","import { useMemo, useState, ChangeEvent, useRef, KeyboardEvent, ComponentProps } from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport const formatTime = (time: number) => {\n let seconds: string | number = time % 60;\n const foo = time - seconds;\n const minutes = foo / 60;\n if (seconds < 10) {\n seconds = `0${Math.floor(seconds)}`;\n } else {\n seconds = Math.floor(seconds).toFixed(0);\n }\n return minutes + \":\" + seconds;\n};\n\nexport interface RangeProps extends Omit<\n ComponentProps<\"input\">,\n | \"value\"\n | \"defaultValue\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"onPointerDown\"\n | \"onPointerUp\"\n | \"onTouchEnd\"\n | \"onKeyDown\"\n | \"ref\"\n> {\n value: number;\n\n min?: number;\n max?: number;\n step?: number;\n\n color?: ThemeColor;\n\n formatter?: (str: number) => string;\n\n valueClassName?: string;\n\n onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function AudioRange({\n className,\n valueClassName,\n value: controlledValue,\n min = 0,\n max = 100,\n color = \"yellow\",\n step = 1,\n formatter = formatTime,\n onChange,\n onChangeCommitted,\n ...rest\n}: RangeProps) {\n const rangeRef = useRef<HTMLInputElement>(null!);\n\n const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n\n const isTemp = typeof tempValue !== \"undefined\";\n\n const value = isTemp ? tempValue : controlledValue;\n\n const range = max - min;\n const percent = (value - min) / range;\n\n const cssVars = useMemo(\n () => ({\n \"--p8n-range-progress-percent\": `${percent * 100}%`,\n }),\n [percent],\n );\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (isTemp) {\n setTempValue(e.target.valueAsNumber);\n }\n onChange?.(e);\n };\n\n function handleSeekStart() {\n setTempValue(rangeRef.current.valueAsNumber);\n }\n function handleSeekEnd() {\n setTempValue(undefined);\n onChangeCommitted?.(rangeRef.current.valueAsNumber);\n }\n\n function handleKeyDown(e: KeyboardEvent) {\n const currentVal = rangeRef.current.valueAsNumber;\n switch (e.code) {\n case \"ArrowLeft\": {\n e.preventDefault();\n onChangeCommitted?.(Math.max(min, currentVal - 5));\n break;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n onChangeCommitted?.(Math.min(max, currentVal + 5));\n break;\n }\n }\n }\n\n return (\n <div className=\"flex items-center\">\n <div className={clsx(\"text-right\", valueClassName)}>{formatter(value)}</div>\n\n <div\n className={clsx(\"group relative flex flex-1\", className)}\n style={cssVars}\n data-color={color}\n >\n <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n {/* track full */}\n <div\n className={clsx(\n trackBase,\n \"track bg-custom-2/50 after:bg-custom-2/50 w-full after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:mask-l-from-50% after:mask-l-to-transparent after:mask-l-to-50%\",\n )}\n ></div>\n\n {/* active zone */}\n <div\n className={clsx(\n trackBase,\n \"from-gray-8/70 to-gray-8/50 before:bg-gray-8/70 bg-linear-to-r from-5%\",\n \"group-hover:from-custom-4 group-hover:to-custom-3 group-hover:before:bg-custom-4 group-hover:bg-linear-to-r\",\n\n \"w-(--p8n-range-progress-percent) rounded-r-sm\",\n \"before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:mask-r-from-50% before:mask-r-to-transparent before:mask-r-to-50%\",\n )}\n ></div>\n </div>\n </div>\n <input\n autoComplete=\"off\"\n type=\"range\"\n className={clsx(\n \"p8n-input-audio-range h-8 w-full min-w-0 cursor-pointer bg-transparent outline-offset-[0.75rem]\",\n )}\n ref={rangeRef}\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onPointerDown={handleSeekStart}\n onPointerUp={handleSeekEnd}\n onTouchEnd={handleSeekEnd}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n </div>\n <div className={clsx(valueClassName)}>{formatter(max)}</div>\n </div>\n );\n}\n","import { useControl, useField, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Range } from \"./Range\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n name: FieldName<number | null | undefined>;\n\n min?: number;\n max?: number;\n step?: number;\n showMinMax?: \"onHover\" | \"always\" | \"never\";\n showValue?: boolean;\n}\n\nexport function RangeField({\n name,\n min,\n max,\n step,\n showMinMax,\n showValue,\n id: forcedId,\n ...rest\n}: Props) {\n const field = useField(name);\n const id = forcedId ?? field.id;\n\n const control = useControl<number, string>({\n defaultValue: field.defaultValue,\n parse(payload) {\n if (typeof payload !== \"string\") {\n throw new Error(\"range input must return string\");\n }\n return parseInt(payload);\n },\n serialize(value) {\n return value.toString();\n },\n });\n\n return (\n <>\n <input type=\"text\" name={field.name} ref={control.register} hidden />\n <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n <Range\n value={control.payload ?? 0}\n min={min}\n max={max}\n step={step}\n showMinMax={showMinMax}\n showValue={showValue}\n onChangeCommitted={(value: number) => {\n control.change(value);\n }}\n onBlur={() => control.blur()}\n />\n </Field>\n </>\n );\n}\n"],"mappings":"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"}
@@ -55,8 +55,9 @@ interface Props$3 extends Omit<FieldProps, "children" | "group"> {
55
55
  refColor?: RawColor;
56
56
  onChange: (value: Color | null) => void;
57
57
  allowInherit?: boolean;
58
+ variants?: number | number[];
58
59
  }
59
- declare function ColorPicker({ palette, value, refColor, onChange, allowInherit, ...rest }: Props$3): import("react").JSX.Element;
60
+ declare function ColorPicker({ palette, value, refColor, onChange, variants, allowInherit, ...rest }: Props$3): import("react").JSX.Element;
60
61
  //#endregion
61
62
  //#region src/components/color/ColorPreview.d.ts
62
63
  interface ColorPreviewProps extends Omit<ComponentProps<"button">, "color" | "value"> {
@@ -123,4 +124,4 @@ interface Props {
123
124
  declare function HarmonyColorGrid({ refColor, value, onChange }: Props): import("react").JSX.Element;
124
125
  //#endregion
125
126
  export { rawColorSchema as C, namedColorSchema as S, colorNames as _, isColorAvailable as a, defaultFallbackColor as b, ColorPreview as c, Color as d, ColorInput as f, brandPaletteSchema as g, RawColor as h, getColorValue as i, ColorPicker as l, NamedColor as m, RawColorGrid as n, isGrayScale as o, ColorName as p, applyColorVariant as r, NamedColorGrid as s, HarmonyColorGrid as t, BrandPalette as u, colorSchema as v, defaultNamedColor as x, defaultBrandPalette as y };
126
- //# sourceMappingURL=index-D6UHIpjx.d.mts.map
127
+ //# sourceMappingURL=index--vYAkVqX.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index--vYAkVqX.d.mts","names":[],"sources":["../src/components/color/config.ts","../src/components/color/ColorPicker.tsx","../src/components/color/ColorPreview.tsx","../src/components/color/NamedColorGrid.tsx","../src/components/color/util.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx"],"mappings":";;;;;;cAEa;KACD,oBAAoB;cAEnB,kBAAgB,EAAA;;;;;;;;;GAI3B,EAAA,KAAA;KACU,aAAa,EAAE,aAAa;cAE3B,mBAAmB;cACnB;cAEA,gBAAc,EAAA;;;GAGzB,EAAA,KAAA;KACU,WAAW,EAAE,aAAa;cAEzB,aAAW,EAAA,uBAAA,EAAA;;;;;;;;;;;;GAA8C,EAAA,KAAA;KAC1D,QAAQ,EAAE,aAAa;KAEvB,aAAa,EAAE,aAAa;cAE3B,oBAAkB,EAAA;;;;;GAK7B,EAAA,KAAA;KACU,eAAe,EAAE,aAAa;cAE7B,qBAAqB;;;UCnBxB,gBAAc,KAAK;EAC3B,UAAU;EACV,OAAO;EACP,WAAW;EACX,WAAW,OAAO;EAClB;EACA;;iBAGc,cACd,SACA,OACA,UACA,UACA,UACA,iBACG,QACF,0BAAK,IAAA;;;UCzBS,0BAA0B,KAAK;EAC9C;EAEA,QAAQ;EACR,QAAQ;EACR;EACA,UAAU;EACV;EACA;EACA,MAAM,UAAU;;iBAGF,eACd,OAAO,cACP,YACA,OACA,OACA,WACA,SACA,WACA,QACG,QACF,oCAAiB,IAAA;;;UCxBV;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;EAClB;;iBAiCc,iBACd,SACA,OACA,UACA,YACC,0BAAK,IAAA;;;iBC7CQ,cACd,OAAO,cACP;;;;;GACA;;;;;iBAmBc,YAAY;iBAYZ,iBAAiB,WAAW,WAAW;;;;;;;;;;;;;iBAcvC,kBAAkB,cAAc;;;UC9CtC;EACR,OAAO;EACP,WAAW,OAAO;;iBAGJ,eAAe,OAAO,YAAY,0BAAK,IAAA;;;UCY7C;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;;iBAGJ,mBAAmB,UAAU,OAAO,YAAY,wBAAK,IAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pentatrion-design",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Hugues Tavernier",
@@ -19,6 +19,7 @@ interface Props extends Omit<FieldProps, "children" | "group"> {
19
19
  refColor?: RawColor;
20
20
  onChange: (value: Color | null) => void;
21
21
  allowInherit?: boolean;
22
+ variants?: number | number[];
22
23
  }
23
24
 
24
25
  export function ColorPicker({
@@ -26,6 +27,7 @@ export function ColorPicker({
26
27
  value,
27
28
  refColor,
28
29
  onChange,
30
+ variants,
29
31
  allowInherit = false,
30
32
  ...rest
31
33
  }: Props) {
@@ -58,6 +60,7 @@ export function ColorPicker({
58
60
  palette={palette}
59
61
  value={tempValue?.type === "named" ? tempValue : null}
60
62
  onChange={setTempValue}
63
+ variants={variants}
61
64
  />
62
65
  ),
63
66
  },
@@ -16,7 +16,7 @@ const Playbook = () => {
16
16
 
17
17
  return (
18
18
  <div className="max-w-64">
19
- <HarmonyColorGrid refColor={refColor} color={value} onChange={setValue} />
19
+ <HarmonyColorGrid refColor={refColor} value={value} onChange={setValue} />
20
20
  <div className="shadow-sm w-72 rounded-2xl mt-4 p-2">
21
21
  <dl className="p8n-setting">
22
22
  <dt>value</dt>
@@ -14,7 +14,7 @@ const samplePalette: BrandPalette = {
14
14
  primary: "#ffca0a",
15
15
  secondary: "#3b82f6",
16
16
  tertiary: "#ec4899",
17
- text: "#323232",
17
+ gray: "#323232",
18
18
  };
19
19
 
20
20
  const variantsRamp = [-75, -25, 0, 25, 85, 90, 95];
@@ -25,7 +25,7 @@ const Playbook = () => {
25
25
 
26
26
  return (
27
27
  <div className="max-w-64">
28
- <NamedColorGrid palette={samplePalette} color={value1} onChange={(v) => v && setValue1(v)} />
28
+ <NamedColorGrid palette={samplePalette} value={value1} onChange={(v) => v && setValue1(v)} />
29
29
  <div className="shadow-sm w-72 rounded-2xl mt-4 p-2">
30
30
  <dl className="p8n-setting">
31
31
  <dt>name</dt>
@@ -49,7 +49,7 @@ const Playbook = () => {
49
49
  </div>
50
50
  <NamedColorGrid
51
51
  palette={samplePalette}
52
- color={value2}
52
+ value={value2}
53
53
  onChange={(v) => v && setValue2(v)}
54
54
  variants={variantsRamp}
55
55
  />
@@ -14,7 +14,7 @@ const Playbook = () => {
14
14
 
15
15
  return (
16
16
  <>
17
- <RawColorGrid color={color} onChange={setColor} />
17
+ <RawColorGrid value={color} onChange={setColor} />
18
18
  <div className="shadow-sm w-72 rounded-2xl mt-4 p-2">
19
19
  <dl className="p8n-setting">
20
20
  <dt>value</dt>
@@ -1,4 +1,12 @@
1
- import { useMemo, ComponentProps, useState, ChangeEvent, useRef } from "react";
1
+ import {
2
+ useMemo,
3
+ ComponentProps,
4
+ useState,
5
+ ChangeEvent,
6
+ PointerEvent,
7
+ TouchEvent,
8
+ KeyboardEvent,
9
+ } from "react";
2
10
 
3
11
  import clsx from "clsx";
4
12
  import { ThemeColor } from "../../../types";
@@ -57,8 +65,6 @@ export function Range({
57
65
  onChangeCommitted,
58
66
  ...rest
59
67
  }: RangeProps) {
60
- const rangeRef = useRef<HTMLInputElement>(null!);
61
-
62
68
  const [tempValue, setTempValue] = useState<number | undefined>(undefined);
63
69
  const isTemp = typeof tempValue !== "undefined";
64
70
 
@@ -84,16 +90,16 @@ export function Range({
84
90
  onChange?.(e);
85
91
  };
86
92
 
87
- function handleSeekStart() {
88
- setTempValue(rangeRef.current.valueAsNumber);
93
+ function handleSeekStart(event: PointerEvent<HTMLInputElement>) {
94
+ setTempValue((event.target as HTMLInputElement).valueAsNumber);
89
95
  }
90
- function handleSeekEnd() {
96
+ function handleSeekEnd(event: TouchEvent<HTMLInputElement> | PointerEvent<HTMLInputElement>) {
91
97
  setTempValue(undefined);
92
- onChangeCommitted?.(rangeRef.current.valueAsNumber);
98
+ onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);
93
99
  }
94
100
 
95
- function handleKeyUp() {
96
- onChangeCommitted?.(rangeRef.current.valueAsNumber);
101
+ function handleKeyUp(event: KeyboardEvent) {
102
+ onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);
97
103
  }
98
104
 
99
105
  return (
@@ -168,7 +174,6 @@ export function Range({
168
174
  className={clsx(
169
175
  "p8n-input-range h-8 w-full min-w-0 bg-transparent outline-offset-[0.75rem]",
170
176
  )}
171
- ref={rangeRef}
172
177
  min={min}
173
178
  max={max}
174
179
  step={step}
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-DCGVVZ0Z.mjs","names":["z","colorNames","const","ColorName","namedColorSchema","object","type","literal","name","enum","variant","number","NamedColor","infer","defaultNamedColor","defaultFallbackColor","rawColorSchema","hex","string","RawColor","colorSchema","union","Color","ColorInput","input","brandPaletteSchema","primary","secondary","_default","nullable","tertiary","gray","BrandPalette","defaultBrandPalette","Color","ColorName","defaultBrandPalette","defaultFallbackColor","getColorValue","color","palette","fallbackColor","type","hex","base","name","applyColorVariant","variant","isGrayScale","normalized","replace","isShort","length","step","r","parseInt","slice","repeat","g","b","isColorAvailable","colorName","Math","abs","clsx","Color","defaultBrandPalette","BrandPalette","NamedColor","colorNames","applyColorVariant","getColorValue","isColorAvailable","useTranslate","Props","palette","value","onChange","variants","colorLabels","Record","primary","secondary","tertiary","gray","variantMagnitude","getVariantSteps","Array","isArray","min","max","from","length","_","i","Math","round","colorButtonStyle","base","selected","NamedColorGrid","t0","$","_c","t1","t2","undefined","t","t3","name","variant","t4","filter","map","name_0","steps","c","type","v","backgroundColor","t5","t6","variant_0","c_0","t7","t8","ComponentProps","RefObject","useImperativeHandle","useRef","clsx","useRipple","Color","defaultBrandPalette","defaultNamedColor","BrandPalette","getColorValue","ThemeColor","ColorPreviewProps","Omit","withRipple","value","color","label","palette","showValue","className","ref","HTMLButtonElement","ColorPreview","t0","$","_c","rest","t1","t2","t3","t4","unknownColor","undefined","t5","type","hex","valueToShow","name","buttonRef","t6","Symbol","for","current","ripples","t7","t8","t9","t10","t11","backgroundColor","t12","t13","t14","t15","t16","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","ColorPicker","t0","$","_c","rest","t1","undefined","t","isOpen","setIsOpen","tempValue","setTempValue","tabId","setTabId","type","t2","handleSubmit","t3","handleInherit","t4","id","title","content","t5","t6","t7","t8","t9","t10","t11","hex","t12","Symbol","for","t13","t14","container","t15","t16","hex_0","t17","input","t18","t19","t20","tabs","t21","t22","t23","t24","modalKeepOpen","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36"],"sources":["../src/components/color/config.ts","../src/components/color/util.ts","../src/components/color/NamedColorGrid.tsx","../src/components/color/ColorPreview.tsx","../src/lib/colors.generated.ts","../src/lib/color.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx","../src/components/color/ColorPicker.tsx"],"sourcesContent":["import { z } from \"zod/v4-mini\";\n\nexport const colorNames = [\"primary\", \"secondary\", \"tertiary\", \"gray\"] as const;\nexport type ColorName = (typeof colorNames)[number];\n\nexport const namedColorSchema = z.object({\n type: z.literal(\"named\"),\n name: z.enum(colorNames),\n variant: z.number(), // -100, 100\n});\nexport type NamedColor = z.infer<typeof namedColorSchema>;\n\nexport const defaultNamedColor: NamedColor = { name: \"gray\", variant: -100, type: \"named\" };\nexport const defaultFallbackColor = \"#000000\";\n\nexport const rawColorSchema = z.object({\n type: z.literal(\"raw\"),\n hex: z.string(),\n});\nexport type RawColor = z.infer<typeof rawColorSchema>;\n\nexport const colorSchema = z.union([namedColorSchema, rawColorSchema]);\nexport type Color = z.infer<typeof colorSchema>;\n\nexport type ColorInput = z.input<typeof colorSchema>;\n\nexport const brandPaletteSchema = z.object({\n primary: z.string(),\n secondary: z._default(z.nullable(z.string()), null),\n tertiary: z._default(z.nullable(z.string()), null),\n gray: z.string(),\n});\nexport type BrandPalette = z.infer<typeof brandPaletteSchema>;\n\nexport const defaultBrandPalette: BrandPalette = {\n primary: \"#ffca0a\",\n secondary: null,\n tertiary: null,\n gray: \"#808080\",\n};\n","import { Color, ColorName, defaultBrandPalette, defaultFallbackColor } from \"./config\";\n\nexport function getColorValue(\n color: Color | null,\n palette = defaultBrandPalette,\n fallbackColor = defaultFallbackColor,\n): string {\n if (!color) {\n return fallbackColor;\n }\n\n if (color.type === \"raw\") {\n return color.hex;\n }\n\n const base = color.name === \"gray\" ? \"#808080\" : (palette[color.name] ?? \"#808080\");\n\n return applyColorVariant(base ?? \"#808080\", color.variant);\n}\n\n/**\n * Détermine si une couleur hexadécimale (#rgb, #rgba, #rrggbb, #rrggbbaa)\n * est un niveau de gris, c'est-à-dire que ses composantes R, G et B sont égales.\n */\nexport function isGrayScale(hex: string): boolean {\n const normalized = hex.replace(\"#\", \"\");\n const isShort = normalized.length === 3 || normalized.length === 4;\n const step = isShort ? 1 : 2;\n\n const r = parseInt(normalized.slice(0, step).repeat(isShort ? 2 : 1), 16);\n const g = parseInt(normalized.slice(step, step * 2).repeat(isShort ? 2 : 1), 16);\n const b = parseInt(normalized.slice(step * 2, step * 3).repeat(isShort ? 2 : 1), 16);\n\n return r === g && g === b;\n}\n\nexport function isColorAvailable(colorName: ColorName, palette = defaultBrandPalette): boolean {\n if (colorName === \"gray\") {\n return true;\n }\n return !!palette[colorName];\n}\n\n/**\n * Dérive une variante claire/sombre d'une couleur de palette : mix vers `white`\n * pour variant > 0, vers un gris neutre foncé (`--color-gray-7`, pas `black` —\n * mélanger vers du noir pur désature/salit la teinte) pour variant < 0.\n * `black`/`white` dérogent : ce sont déjà les bornes de la rampe, seul un mix\n * vers `black` a du sens pour elles (plage -100..0 imposée côté ColorPicker).\n */\nexport function applyColorVariant(base: string, variant: number): string {\n if (variant === 0) {\n return base;\n }\n\n return variant > 0\n ? `color-mix(in oklab, ${base} ${100 - variant}%, white)`\n : `color-mix(in oklab, ${base} ${100 - Math.abs(variant)}%, ${isGrayScale(base) ? \"black\" : \"var(--color-gray-7)\"})`;\n}\n","import clsx from \"clsx\";\nimport { Color, defaultBrandPalette, BrandPalette, NamedColor, colorNames } from \"./config\";\nimport { applyColorVariant, getColorValue, isColorAvailable } from \"./util\";\nimport { useTranslate } from \"../i18n\";\n\ninterface Props {\n palette?: BrandPalette;\n value: NamedColor | null;\n onChange: (value: NamedColor) => void;\n variants?: number | number[];\n}\n\nconst colorLabels: Record<(typeof colorNames)[number], string> = {\n primary: \"Principale\",\n secondary: \"Secondaire\",\n tertiary: \"Tertiaire\",\n gray: \"Niveau de gris\",\n};\n// bornes à -80/80 plutôt que -100/100 : à 100% la base disparaît complètement\n// du color-mix, le swatch ne reproduit plus que du blanc/gris pur, redondant\n// avec les entrées white/black déjà présentes dans la grille.\nconst variantMagnitude = 80;\n\nfunction getVariantSteps(variants: number | number[]): number[] {\n if (Array.isArray(variants)) {\n return variants;\n }\n const min = -variantMagnitude;\n const max = variantMagnitude;\n if (variants <= 1) {\n return [0];\n }\n return Array.from({ length: variants }, (_, i) =>\n Math.round(min + (i * (max - min)) / (variants - 1)),\n );\n}\n\nexport const colorButtonStyle = {\n base: \"cursor-pointer hover:z-20 hover:scale-125 hover:rounded hover:shadow active:scale-125 first-of-type:rounded-l-md last-of-type:rounded-r-md\",\n selected: \"outline-yellow-5 z-10 rounded outline-2 -outline-offset-1\",\n};\n\nexport function NamedColorGrid({\n palette = defaultBrandPalette,\n value,\n onChange,\n variants = 9,\n}: Props) {\n const t = useTranslate();\n\n return (\n <div className=\"flex flex-col gap-3 p-2\">\n {colorNames\n .filter((name) => isColorAvailable(name, palette))\n .map((name) => {\n // une seule vignette pour black : color-mix(black, black) est un no-op,\n // toute une rampe serait visuellement identique\n const steps = getVariantSteps(variants);\n\n return (\n <div key={name}>\n <div className=\"text-body-xs truncate\">\n {t?.(`form.values.colorNames.${name}`) ?? colorLabels[name]}\n </div>\n <div className=\"flex\">\n {steps.map((variant) => {\n const c: Color = { type: \"named\", name, variant };\n const v = getColorValue(c, palette);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`${c.name} (${variant}%)`}\n className={clsx(\n \"h-8 flex-1\",\n colorButtonStyle.base,\n value?.name === name &&\n value?.variant === variant &&\n colorButtonStyle.selected,\n )}\n style={{ backgroundColor: v }}\n onClick={() => onChange(c)}\n />\n );\n })}\n </div>\n </div>\n );\n })}\n\n <div>\n <div className=\"text-body-xs truncate\">\n {t?.(\"form.values.colorNames.blackAndWhite\") ?? \"Noir & Blanc\"}\n </div>\n <div className=\"flex\">\n {[-100, 100].map((variant) => {\n const c = applyColorVariant(\"#808080\", variant);\n return (\n <button\n key={variant}\n type=\"button\"\n title={`gray (${variant}%)`}\n className={clsx(\n \"h-8 flex-1 hover:scale-x-105!\",\n colorButtonStyle.base,\n value?.name === \"gray\" && value?.variant === variant && colorButtonStyle.selected,\n variant === 100 && \"border border-gray-2\",\n )}\n style={{ backgroundColor: c }}\n onClick={() => onChange({ type: \"named\", name: \"gray\", variant })}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { ComponentProps, RefObject, useImperativeHandle, useRef } from \"react\";\nimport clsx from \"clsx\";\nimport { useRipple } from \"pentatrion-design/hooks\";\nimport { Color, defaultBrandPalette, defaultNamedColor, BrandPalette } from \"./config\";\nimport { getColorValue } from \"./util\";\nimport { ThemeColor } from \"../../types\";\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 value: Color =\n typeof unknownColor === \"string\"\n ? { type: \"raw\", hex: unknownColor }\n : (unknownColor ?? defaultNamedColor);\n\n const valueToShow = label ?? (showValue ? (value.type === \"raw\" ? value.hex : value.name) : 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: getColorValue(value, palette) }}\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","// 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}\n\nexport function ColorPicker({\n palette,\n value,\n refColor,\n onChange,\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 />\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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O;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,KAAK;EACH,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,QAAQ;EACN,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,SAAS;EACP,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CAEAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,MAAM;EACJ,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;CACAC,OAAO;EACL,MAAM;EACN,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;CACT;AClV0CE,CAAY,CAAC,CACtDI,QACE,CAACC,MAAMC,gBAMN,OAAOA,eAAe,YACtB,CAAC;CAAC;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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-D6UHIpjx.d.mts","names":[],"sources":["../src/components/color/config.ts","../src/components/color/ColorPicker.tsx","../src/components/color/ColorPreview.tsx","../src/components/color/NamedColorGrid.tsx","../src/components/color/util.ts","../src/components/color/RawColorGrid.tsx","../src/components/color/HarmonyColorGrid.tsx"],"mappings":";;;;;;cAEa;KACD,oBAAoB;cAEnB,kBAAgB,EAAA;;;;;;;;;GAI3B,EAAA,KAAA;KACU,aAAa,EAAE,aAAa;cAE3B,mBAAmB;cACnB;cAEA,gBAAc,EAAA;;;GAGzB,EAAA,KAAA;KACU,WAAW,EAAE,aAAa;cAEzB,aAAW,EAAA,uBAAA,EAAA;;;;;;;;;;;;GAA8C,EAAA,KAAA;KAC1D,QAAQ,EAAE,aAAa;KAEvB,aAAa,EAAE,aAAa;cAE3B,oBAAkB,EAAA;;;;;GAK7B,EAAA,KAAA;KACU,eAAe,EAAE,aAAa;cAE7B,qBAAqB;;;UCnBxB,gBAAc,KAAK;EAC3B,UAAU;EACV,OAAO;EACP,WAAW;EACX,WAAW,OAAO;EAClB;;iBAGc,cACd,SACA,OACA,UACA,UACA,iBACG,QACF,0BAAK,IAAA;;;UCvBS,0BAA0B,KAAK;EAC9C;EAEA,QAAQ;EACR,QAAQ;EACR;EACA,UAAU;EACV;EACA;EACA,MAAM,UAAU;;iBAGF,eACd,OAAO,cACP,YACA,OACA,OACA,WACA,SACA,WACA,QACG,QACF,oCAAiB,IAAA;;;UCxBV;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;EAClB;;iBAiCc,iBACd,SACA,OACA,UACA,YACC,0BAAK,IAAA;;;iBC7CQ,cACd,OAAO,cACP;;;;;GACA;;;;;iBAmBc,YAAY;iBAYZ,iBAAiB,WAAW,WAAW;;;;;;;;;;;;;iBAcvC,kBAAkB,cAAc;;;UC9CtC;EACR,OAAO;EACP,WAAW,OAAO;;iBAGJ,eAAe,OAAO,YAAY,0BAAK,IAAA;;;UCY7C;EACR,UAAU;EACV,OAAO;EACP,WAAW,OAAO;;iBAGJ,mBAAmB,UAAU,OAAO,YAAY,wBAAK,IAAA"}