@helpdice/ui 2.5.3 → 2.5.8-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/auto-complete/index.js +913 -102
  2. package/dist/avatar/index.js +11 -9
  3. package/dist/button/button.icon.d.ts +0 -1
  4. package/dist/button/button.small.d.ts +0 -1
  5. package/dist/button/index.js +7 -9
  6. package/dist/carousal/index.js +7 -9
  7. package/dist/container/index.js +7 -9
  8. package/dist/copy-to-clipboard/index.js +7 -9
  9. package/dist/index.js +3047 -2977
  10. package/dist/input/index.js +906 -47
  11. package/dist/modal/index.js +5 -5
  12. package/dist/pagination/index.js +6 -6
  13. package/dist/placeholder/index.js +16 -11
  14. package/dist/select/index.js +912 -14
  15. package/dist/select/select.d.ts +2 -0
  16. package/dist/table/index.js +21629 -21561
  17. package/dist/table/table-body.d.ts +1 -2
  18. package/dist/table/table.d.ts +1 -0
  19. package/dist/text/index.js +16 -11
  20. package/dist/text/text.d.ts +3 -0
  21. package/dist/textarea/index.js +881 -7
  22. package/dist/textarea/textarea.d.ts +3 -0
  23. package/dist/tooltip/index.d.ts +6 -1
  24. package/dist/tooltip/index.js +12 -0
  25. package/dist/tooltip/tooltip-small.d.ts +4 -0
  26. package/dist/user/index.js +11 -9
  27. package/esm/avatar/avatar.js +8 -6
  28. package/esm/button/button.icon.d.ts +0 -1
  29. package/esm/button/button.js +5 -5
  30. package/esm/button/button.small.d.ts +0 -1
  31. package/esm/button/button.small.js +2 -4
  32. package/esm/input/input-field.js +11 -9
  33. package/esm/pagination/pagination-item.js +6 -6
  34. package/esm/select/select.d.ts +2 -0
  35. package/esm/select/select.js +15 -2
  36. package/esm/table/table-body.d.ts +1 -2
  37. package/esm/table/table-body.js +16 -11
  38. package/esm/table/table.d.ts +1 -0
  39. package/esm/table/table.js +45 -25
  40. package/esm/text/text.d.ts +3 -0
  41. package/esm/text/text.js +9 -2
  42. package/esm/textarea/textarea.d.ts +3 -0
  43. package/esm/textarea/textarea.js +19 -2
  44. package/esm/tooltip/index.d.ts +6 -1
  45. package/esm/tooltip/index.js +2 -0
  46. package/esm/tooltip/tooltip-small.d.ts +4 -0
  47. package/esm/tooltip/tooltip-small.js +12 -0
  48. package/package.json +2 -2
@@ -89,7 +89,10 @@ function _iterableToArrayLimit(r, l) {
89
89
  f = true,
90
90
  o = false;
91
91
  try {
92
- if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
92
+ if (i = (t = t.call(r)).next, 0 === l) {
93
+ if (Object(t) !== t) return;
94
+ f = !1;
95
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
93
96
  } catch (r) {
94
97
  o = true, n = r;
95
98
  } finally {
@@ -767,7 +770,7 @@ var ScalePropKeys = ['width', 'height', 'padding', 'margin', 'w', 'h', 'paddingL
767
770
  var defaultDynamicLayoutPipe = function defaultDynamicLayoutPipe(scale1x) {
768
771
  return "".concat(scale1x);
769
772
  };
770
- var defaultContext = {
773
+ var defaultContext$1 = {
771
774
  getScaleProps: function getScaleProps() {
772
775
  return undefined;
773
776
  },
@@ -793,7 +796,7 @@ var defaultContext = {
793
796
  },
794
797
  unit: '16px'
795
798
  };
796
- var ScaleContext = /*#__PURE__*/React.createContext(defaultContext);
799
+ var ScaleContext = /*#__PURE__*/React.createContext(defaultContext$1);
797
800
  var useScale = function useScale() {
798
801
  return React.useContext(ScaleContext);
799
802
  };
@@ -850,7 +853,7 @@ var generateGetAllScaleProps = function generateGetAllScaleProps(props) {
850
853
  return getAllScaleProps;
851
854
  };
852
855
 
853
- var _excluded$1 = ["children"];
856
+ var _excluded$6 = ["children"];
854
857
  var reduceScaleCoefficient = function reduceScaleCoefficient(scale) {
855
858
  if (scale === 1) return scale;
856
859
  var diff = Math.abs((scale - 1) / 2);
@@ -860,7 +863,7 @@ var withScale = function withScale(Render) {
860
863
  var ScaleFC = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
861
864
  var _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref0, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24, _ref25, _ref26, _ref27, _ref28, _ref29, _ref30, _ref31;
862
865
  var children = _ref.children,
863
- props = _objectWithoutProperties(_ref, _excluded$1);
866
+ props = _objectWithoutProperties(_ref, _excluded$6);
864
867
  var _useTheme = theme.useTheme(),
865
868
  layout = _useTheme.layout;
866
869
  var paddingLeft = props.paddingLeft,
@@ -943,7 +946,863 @@ var withScale = function withScale(Render) {
943
946
  return ScaleFC;
944
947
  };
945
948
 
946
- var _excluded = ["type", "disabled", "readOnly", "onFocus", "onBlur", "className", "initialValue", "onChange", "value", "placeholder", "resize"];
949
+ var _excluded$5 = ["children", "tag", "className", "color"];
950
+ var getTypeColor = function getTypeColor(type, palette) {
951
+ var colors = {
952
+ "default": 'inherit',
953
+ secondary: palette.secondary,
954
+ success: palette.success,
955
+ warning: palette.warning,
956
+ error: palette.error
957
+ };
958
+ return colors[type] || colors["default"];
959
+ };
960
+ var TextChild = function TextChild(_ref) {
961
+ var children = _ref.children,
962
+ tag = _ref.tag,
963
+ _ref$className = _ref.className,
964
+ className = _ref$className === void 0 ? '' : _ref$className,
965
+ _ref$color = _ref.color,
966
+ color = _ref$color === void 0 ? 'default' : _ref$color,
967
+ props = _objectWithoutProperties(_ref, _excluded$5);
968
+ var Component = tag;
969
+ var theme$1 = theme.useTheme();
970
+ var _useScale = useScale(),
971
+ SCALES = _useScale.SCALES,
972
+ getScaleProps = _useScale.getScaleProps;
973
+ var font = getScaleProps('font');
974
+ var mx = getScaleProps(['margin', 'marginLeft', 'marginRight', 'mx', 'ml', 'mr']);
975
+ var my = getScaleProps(['margin', 'marginTop', 'marginBottom', 'my', 'mt', 'mb']);
976
+ var px = getScaleProps(['padding', 'paddingLeft', 'paddingRight', 'pl', 'pr', 'px']);
977
+ var py = getScaleProps(['padding', 'paddingTop', 'paddingBottom', 'pt', 'pb', 'py']);
978
+ var _color = React.useMemo(function () {
979
+ return getTypeColor(color, theme$1.palette);
980
+ }, [color, theme$1.palette]);
981
+ var classNames = React.useMemo(function () {
982
+ var keys = [{
983
+ value: mx,
984
+ className: 'mx'
985
+ }, {
986
+ value: my,
987
+ className: 'my'
988
+ }, {
989
+ value: px,
990
+ className: 'px'
991
+ }, {
992
+ value: py,
993
+ className: 'py'
994
+ }, {
995
+ value: font,
996
+ className: 'font'
997
+ }];
998
+ var scaleClassNames = keys.reduce(function (pre, next) {
999
+ if (typeof next.value === 'undefined') return pre;
1000
+ return "".concat(pre, " ").concat(next.className);
1001
+ }, '');
1002
+ return "".concat(scaleClassNames, " ").concat(className).trim();
1003
+ }, [mx, my, px, py, font, className]);
1004
+ return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
1005
+ className: _JSXStyle.dynamic([["2277774325", [tag, _color, SCALES.width(1, 'auto'), SCALES.height(1, 'auto'), SCALES.font(1, 'inherit'), SCALES.ml(0, 'revert'), SCALES.mr(0, 'revert'), SCALES.mt(0, 'revert'), SCALES.mb(0, 'revert'), SCALES.pl(0, 'revert'), SCALES.pr(0, 'revert'), SCALES.pt(0, 'revert'), SCALES.pb(0, 'revert')]]]) + " " + (props && props.className != null && props.className || classNames || "")
1006
+ }), children, /*#__PURE__*/React.createElement(_JSXStyle, {
1007
+ id: "2277774325",
1008
+ dynamic: [tag, _color, SCALES.width(1, 'auto'), SCALES.height(1, 'auto'), SCALES.font(1, 'inherit'), SCALES.ml(0, 'revert'), SCALES.mr(0, 'revert'), SCALES.mt(0, 'revert'), SCALES.mb(0, 'revert'), SCALES.pl(0, 'revert'), SCALES.pr(0, 'revert'), SCALES.pt(0, 'revert'), SCALES.pb(0, 'revert')]
1009
+ }, "".concat(tag, ".__jsx-style-dynamic-selector{color:").concat(_color, ";width:").concat(SCALES.width(1, 'auto'), ";height:").concat(SCALES.height(1, 'auto'), ";}.font.__jsx-style-dynamic-selector{font-size:").concat(SCALES.font(1, 'inherit'), ";}.mx.__jsx-style-dynamic-selector{margin-left:").concat(SCALES.ml(0, 'revert'), ";margin-right:").concat(SCALES.mr(0, 'revert'), ";}.my.__jsx-style-dynamic-selector{margin-top:").concat(SCALES.mt(0, 'revert'), ";margin-bottom:").concat(SCALES.mb(0, 'revert'), ";}.px.__jsx-style-dynamic-selector{padding-left:").concat(SCALES.pl(0, 'revert'), ";padding-right:").concat(SCALES.pr(0, 'revert'), ";}.py.__jsx-style-dynamic-selector{padding-top:").concat(SCALES.pt(0, 'revert'), ";padding-bottom:").concat(SCALES.pb(0, 'revert'), ";}.no-wrap.__jsx-style-dynamic-selector{white-space:nowrap;}")));
1010
+ };
1011
+ TextChild.displayName = 'TextChild';
1012
+
1013
+ var ButtonDrip = function ButtonDrip(_ref) {
1014
+ var _ref$x = _ref.x,
1015
+ x = _ref$x === void 0 ? 0 : _ref$x,
1016
+ _ref$y = _ref.y,
1017
+ y = _ref$y === void 0 ? 0 : _ref$y,
1018
+ color = _ref.color,
1019
+ onCompleted = _ref.onCompleted;
1020
+ var dripRef = React.useRef(null);
1021
+ /* istanbul ignore next */
1022
+ var top = Number.isNaN(+y) ? 0 : y - 10;
1023
+ /* istanbul ignore next */
1024
+ var left = Number.isNaN(+x) ? 0 : x - 10;
1025
+ React.useEffect(function () {
1026
+ /* istanbul ignore next */
1027
+ if (!dripRef.current) return;
1028
+ dripRef.current.addEventListener('animationend', onCompleted);
1029
+ return function () {
1030
+ /* istanbul ignore next */
1031
+ if (!dripRef.current) return;
1032
+ dripRef.current.removeEventListener('animationend', onCompleted);
1033
+ };
1034
+ });
1035
+ return /*#__PURE__*/React.createElement("div", {
1036
+ ref: dripRef,
1037
+ className: "jsx-3424889537" + " " + "drip"
1038
+ }, /*#__PURE__*/React.createElement("svg", {
1039
+ width: "20",
1040
+ height: "20",
1041
+ viewBox: "0 0 20 20",
1042
+ style: {
1043
+ top: top,
1044
+ left: left
1045
+ },
1046
+ className: "jsx-3424889537"
1047
+ }, /*#__PURE__*/React.createElement("g", {
1048
+ stroke: "none",
1049
+ strokeWidth: "1",
1050
+ fill: "none",
1051
+ fillRule: "evenodd",
1052
+ className: "jsx-3424889537"
1053
+ }, /*#__PURE__*/React.createElement("g", {
1054
+ fill: color,
1055
+ className: "jsx-3424889537"
1056
+ }, /*#__PURE__*/React.createElement("rect", {
1057
+ width: "100%",
1058
+ height: "100%",
1059
+ rx: "10",
1060
+ className: "jsx-3424889537"
1061
+ })))), /*#__PURE__*/React.createElement(_JSXStyle, {
1062
+ id: "3424889537"
1063
+ }, ".drip.jsx-3424889537{position:absolute;left:0;right:0;top:0;bottom:0;}svg.jsx-3424889537{position:absolute;-webkit-animation:350ms ease-in expand-jsx-3424889537;animation:350ms ease-in expand-jsx-3424889537;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;width:1rem;height:1rem;}@-webkit-keyframes expand-jsx-3424889537{0%{opacity:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}30%{opacity:1;}80%{opacity:0.5;}100%{-webkit-transform:scale(28);-ms-transform:scale(28);transform:scale(28);opacity:0;}}@keyframes expand-jsx-3424889537{0%{opacity:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}30%{opacity:1;}80%{opacity:0.5;}100%{-webkit-transform:scale(28);-ms-transform:scale(28);transform:scale(28);opacity:0;}}"));
1064
+ };
1065
+ ButtonDrip.displayName = 'ButtonDrip';
1066
+
1067
+ var _excluded$4 = ["children", "type", "color", "className", "spaceRatio"];
1068
+ var getIconBgColor = function getIconBgColor(type, palette, color) {
1069
+ var colors = {
1070
+ "default": palette.accents_6,
1071
+ secondary: palette.secondary,
1072
+ success: palette.success,
1073
+ warning: palette.warning,
1074
+ error: palette.error
1075
+ };
1076
+ return color ? color : colors[type];
1077
+ };
1078
+ var LoadingComponent = function LoadingComponent(_ref) {
1079
+ var children = _ref.children,
1080
+ _ref$type = _ref.type,
1081
+ type = _ref$type === void 0 ? 'default' : _ref$type,
1082
+ color = _ref.color,
1083
+ _ref$className = _ref.className,
1084
+ className = _ref$className === void 0 ? '' : _ref$className,
1085
+ _ref$spaceRatio = _ref.spaceRatio,
1086
+ spaceRatio = _ref$spaceRatio === void 0 ? 1 : _ref$spaceRatio,
1087
+ props = _objectWithoutProperties(_ref, _excluded$4);
1088
+ var theme$1 = theme.useTheme();
1089
+ var _useScale = useScale(),
1090
+ SCALES = _useScale.SCALES;
1091
+ var classes = theme.useClasses('loading-container', className);
1092
+ var bgColor = React.useMemo(function () {
1093
+ return getIconBgColor(type, theme$1.palette, color);
1094
+ }, [type, theme$1.palette, color]);
1095
+ return /*#__PURE__*/React.createElement("div", _extends({}, props, {
1096
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]]) + " " + (props && props.className != null && props.className || classes || "")
1097
+ }), /*#__PURE__*/React.createElement("span", {
1098
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]]) + " " + "loading"
1099
+ }, children && /*#__PURE__*/React.createElement("label", {
1100
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]])
1101
+ }, children), /*#__PURE__*/React.createElement("i", {
1102
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]])
1103
+ }), /*#__PURE__*/React.createElement("i", {
1104
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]])
1105
+ }), /*#__PURE__*/React.createElement("i", {
1106
+ className: _JSXStyle.dynamic([["2201634259", [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]]])
1107
+ })), /*#__PURE__*/React.createElement(_JSXStyle, {
1108
+ id: "2201634259",
1109
+ dynamic: [SCALES.font(1), SCALES.width(1, '100%'), SCALES.height(1, '100%'), SCALES.pt(0), SCALES.pr(0), SCALES.pb(0), SCALES.pl(0), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), theme$1.palette.accents_5, bgColor, spaceRatio]
1110
+ }, ".loading-container.__jsx-style-dynamic-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:".concat(SCALES.font(1), ";width:").concat(SCALES.width(1, '100%'), ";height:").concat(SCALES.height(1, '100%'), ";min-height:1em;padding:").concat(SCALES.pt(0), " ").concat(SCALES.pr(0), " ").concat(SCALES.pb(0), " ").concat(SCALES.pl(0), ";margin:").concat(SCALES.mt(0), " ").concat(SCALES.mr(0), " ").concat(SCALES.mb(0), " ").concat(SCALES.ml(0), ";}label.__jsx-style-dynamic-selector{margin-right:0.5em;color:").concat(theme$1.palette.accents_5, ";line-height:1;}label.__jsx-style-dynamic-selector *{margin:0;}.loading.__jsx-style-dynamic-selector{position:absolute;top:50%;left:50%;width:100%;height:100%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}i.__jsx-style-dynamic-selector{width:0.25em;height:0.25em;border-radius:50%;background-color:").concat(bgColor, ";margin:0 calc(0.25em / 2 * ").concat(spaceRatio, ");display:inline-block;-webkit-animation:loading-blink-__jsx-style-dynamic-selector 1.4s infinite both;animation:loading-blink-__jsx-style-dynamic-selector 1.4s infinite both;}i.__jsx-style-dynamic-selector:nth-child(2){-webkit-animation-delay:0.2s;animation-delay:0.2s;}i.__jsx-style-dynamic-selector:nth-child(3){-webkit-animation-delay:0.4s;animation-delay:0.4s;}@-webkit-keyframes loading-blink-__jsx-style-dynamic-selector{0%{opacity:0.2;}20%{opacity:1;}100%{opacity:0.2;}}@keyframes loading-blink-__jsx-style-dynamic-selector{0%{opacity:0.2;}20%{opacity:1;}100%{opacity:0.2;}}")));
1111
+ };
1112
+ LoadingComponent.displayName = 'Loading';
1113
+ var Loading = withScale(LoadingComponent);
1114
+
1115
+ var ButtonLoading = function ButtonLoading(_ref) {
1116
+ var color = _ref.color;
1117
+ return /*#__PURE__*/React.createElement("div", {
1118
+ className: "jsx-212623367" + " " + "btn-loading"
1119
+ }, /*#__PURE__*/React.createElement(Loading, {
1120
+ color: color
1121
+ }), /*#__PURE__*/React.createElement(_JSXStyle, {
1122
+ id: "212623367"
1123
+ }, ".btn-loading.jsx-212623367{position:absolute;top:0;left:0;right:0;bottom:0;z-index:2;background-color:var(--helpdice-ui-button-bg);}"));
1124
+ };
1125
+ ButtonLoading.displayName = 'ButtonLoading';
1126
+
1127
+ var _excluded$3 = ["isRight", "isSingle", "children", "className"];
1128
+ var ButtonIcon = function ButtonIcon(_ref) {
1129
+ var _ref$isRight = _ref.isRight,
1130
+ isRight = _ref$isRight === void 0 ? false : _ref$isRight,
1131
+ isSingle = _ref.isSingle,
1132
+ children = _ref.children,
1133
+ _ref$className = _ref.className,
1134
+ className = _ref$className === void 0 ? '' : _ref$className,
1135
+ props = _objectWithoutProperties(_ref, _excluded$3);
1136
+ var classes = theme.useClasses('icon', {
1137
+ right: isRight,
1138
+ single: isSingle
1139
+ }, className);
1140
+ return /*#__PURE__*/React.createElement("span", _extends({}, props, {
1141
+ className: "jsx-2467502931" + " " + (props && props.className != null && props.className || classes || "")
1142
+ }), children, /*#__PURE__*/React.createElement(_JSXStyle, {
1143
+ id: "2467502931"
1144
+ }, ".icon.jsx-2467502931{position:absolute;left:var(--helpdice-ui-button-icon-padding);right:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--helpdice-ui-button-color);z-index:1;}.right.jsx-2467502931{right:var(--helpdice-ui-button-icon-padding);left:auto;}.icon.jsx-2467502931 svg{background:transparent;height:calc(var(--helpdice-ui-button-height) / 2.35);width:calc(var(--helpdice-ui-button-height) / 2.35);}.single.jsx-2467502931{position:static;-webkit-transform:none;-ms-transform:none;transform:none;}"));
1145
+ };
1146
+ ButtonIcon.displayName = 'ButtonIcon';
1147
+
1148
+ var getButtonChildrenWithIcon = function getButtonChildrenWithIcon(auto, children, icons) {
1149
+ var icon = icons.icon,
1150
+ iconRight = icons.iconRight;
1151
+ var hasIcon = icon || iconRight;
1152
+ var isRight = Boolean(iconRight);
1153
+ var paddingForAutoMode = auto ? "calc(var(--helpdice-ui-button-height) / 2 + var(--helpdice-ui-button-icon-padding) * .5)" : 0;
1154
+ var classes = theme.useClasses('text', isRight ? 'right' : 'left');
1155
+ if (!hasIcon) return /*#__PURE__*/React.createElement("div", {
1156
+ className: "text"
1157
+ }, children);
1158
+ if (React.Children.count(children) === 0) {
1159
+ return /*#__PURE__*/React.createElement(ButtonIcon, {
1160
+ isRight: isRight,
1161
+ isSingle: true
1162
+ }, hasIcon);
1163
+ }
1164
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ButtonIcon, {
1165
+ isRight: isRight
1166
+ }, hasIcon), /*#__PURE__*/React.createElement("div", {
1167
+ className: _JSXStyle.dynamic([["3568181479", [paddingForAutoMode, paddingForAutoMode]]]) + " " + (classes || "")
1168
+ }, children, /*#__PURE__*/React.createElement(_JSXStyle, {
1169
+ id: "3568181479",
1170
+ dynamic: [paddingForAutoMode, paddingForAutoMode]
1171
+ }, ".left.__jsx-style-dynamic-selector{padding-left:".concat(paddingForAutoMode, ";}.right.__jsx-style-dynamic-selector{padding-right:").concat(paddingForAutoMode, ";}"))));
1172
+ };
1173
+ var filterPropsWithGroup = function filterPropsWithGroup(props, config) {
1174
+ if (!config.isButtonGroup) return props;
1175
+ return _objectSpread2(_objectSpread2({}, props), {}, {
1176
+ auto: true,
1177
+ shadow: false,
1178
+ ghost: config.ghost || props.ghost,
1179
+ type: config.type || props.type,
1180
+ disabled: config.disabled || props.disabled
1181
+ });
1182
+ };
1183
+
1184
+ /* "use client" */
1185
+
1186
+ var defaultContext = {
1187
+ isButtonGroup: false,
1188
+ disabled: false
1189
+ };
1190
+ var ButtonGroupContext = /*#__PURE__*/React.createContext(defaultContext);
1191
+ var useButtonGroupContext = function useButtonGroupContext() {
1192
+ return React.useContext(ButtonGroupContext);
1193
+ };
1194
+
1195
+ var hexToRgb = function hexToRgb(color) {
1196
+ var fullReg = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
1197
+ var full = color.replace(fullReg, function (_, r, g, b) {
1198
+ return "".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);
1199
+ });
1200
+ var values = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(full);
1201
+ if (!values) {
1202
+ throw new Error("Helpdice UI: Unsupported ".concat(color, " color."));
1203
+ }
1204
+ return [Number.parseInt(values[1], 16), Number.parseInt(values[2], 16), Number.parseInt(values[3], 16)];
1205
+ };
1206
+ var colorToRgbValues = function colorToRgbValues(color) {
1207
+ if (color.charAt(0) === '#') return hexToRgb(color);
1208
+ var safeColor = color.replace(/ /g, '');
1209
+ var colorType = color.substr(0, 4);
1210
+ var regArray = safeColor.match(/\((.+)\)/);
1211
+ if (!colorType.startsWith('rgb') || !regArray) {
1212
+ console.log(color);
1213
+ throw new Error("Helpdice UI: Only support [\"RGB\", \"RGBA\", \"HEX\"] color.");
1214
+ }
1215
+ return regArray[1].split(',').map(function (str) {
1216
+ return Number.parseFloat(str);
1217
+ });
1218
+ };
1219
+ var addColorAlpha = function addColorAlpha(color, alpha) {
1220
+ if (!/^#|rgb|RGB/.test(color)) return color;
1221
+ var _colorToRgbValues = colorToRgbValues(color),
1222
+ _colorToRgbValues2 = _slicedToArray(_colorToRgbValues, 3),
1223
+ r = _colorToRgbValues2[0],
1224
+ g = _colorToRgbValues2[1],
1225
+ b = _colorToRgbValues2[2];
1226
+ var safeAlpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
1227
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(safeAlpha, ")");
1228
+ };
1229
+
1230
+ var getButtonGhostColors = function getButtonGhostColors(palette, _color) {
1231
+ var colors = {
1232
+ secondary: {
1233
+ bg: palette.background,
1234
+ border: palette.foreground,
1235
+ color: palette.foreground,
1236
+ ripple: ''
1237
+ },
1238
+ success: {
1239
+ bg: palette.background,
1240
+ border: palette.success,
1241
+ color: palette.success,
1242
+ ripple: ''
1243
+ },
1244
+ warning: {
1245
+ bg: palette.background,
1246
+ border: palette.warning,
1247
+ color: palette.warning,
1248
+ ripple: ''
1249
+ },
1250
+ error: {
1251
+ bg: palette.background,
1252
+ border: palette.error,
1253
+ color: palette.error,
1254
+ ripple: ''
1255
+ }
1256
+ };
1257
+ return colors[_color] || null;
1258
+ };
1259
+ var getButtonColors = function getButtonColors(palette, props) {
1260
+ var color = props.color,
1261
+ disabled = props.disabled,
1262
+ ghost = props.ghost;
1263
+ var colors = {
1264
+ "default": {
1265
+ bg: palette.background,
1266
+ border: palette.border,
1267
+ color: palette.accents_5,
1268
+ ripple: palette.accents_1
1269
+ },
1270
+ secondary: {
1271
+ bg: palette.foreground,
1272
+ border: palette.foreground,
1273
+ color: palette.background,
1274
+ ripple: palette.accents_1
1275
+ },
1276
+ success: {
1277
+ bg: palette.success,
1278
+ border: palette.success,
1279
+ color: '#fff',
1280
+ ripple: '#1f93ffff'
1281
+ },
1282
+ warning: {
1283
+ bg: palette.warning,
1284
+ border: palette.warning,
1285
+ color: '#fff',
1286
+ ripple: '#ffca29ff'
1287
+ },
1288
+ error: {
1289
+ bg: palette.error,
1290
+ border: palette.error,
1291
+ color: '#fff',
1292
+ ripple: '#ff5a55ff'
1293
+ },
1294
+ abort: {
1295
+ bg: 'transparent',
1296
+ border: 'transparent',
1297
+ color: palette.accents_5,
1298
+ ripple: palette.accents_1
1299
+ }
1300
+ };
1301
+ if (disabled) return {
1302
+ bg: palette.accents_1,
1303
+ border: palette.accents_2,
1304
+ color: '#ccc',
1305
+ ripple: ''
1306
+ };
1307
+
1308
+ /**
1309
+ * The '-light' type is the same color as the common type,
1310
+ * only hover's color is different.
1311
+ * e.g.
1312
+ * Color['success'] === Color['success-light']
1313
+ * Color['warning'] === Color['warning-light']
1314
+ */
1315
+ var withoutLightType = color === null || color === void 0 ? void 0 : color.replace('-light', '');
1316
+ var defaultColor = colors["default"];
1317
+ if (ghost) return getButtonGhostColors(palette, withoutLightType) || defaultColor;
1318
+ return colors[withoutLightType] || defaultColor;
1319
+ };
1320
+ var getButtonGhostHoverColors = function getButtonGhostHoverColors(palette, _color) {
1321
+ var colors = {
1322
+ secondary: {
1323
+ bg: palette.foreground,
1324
+ border: palette.background,
1325
+ color: palette.background
1326
+ },
1327
+ success: {
1328
+ bg: palette.success,
1329
+ border: palette.background,
1330
+ color: 'white'
1331
+ },
1332
+ warning: {
1333
+ bg: palette.warning,
1334
+ border: palette.background,
1335
+ color: 'white'
1336
+ },
1337
+ error: {
1338
+ bg: palette.error,
1339
+ border: palette.background,
1340
+ color: 'white'
1341
+ }
1342
+ };
1343
+ var withoutLightType = _color === null || _color === void 0 ? void 0 : _color.replace('-light', '');
1344
+ return colors[withoutLightType] || null;
1345
+ };
1346
+ var getButtonHoverColors = function getButtonHoverColors(palette, props) {
1347
+ var color = props.color,
1348
+ disabled = props.disabled,
1349
+ loading = props.loading,
1350
+ shadow = props.shadow,
1351
+ ghost = props.ghost;
1352
+ var defaultColor = getButtonColors(palette, props);
1353
+ var alphaBackground = addColorAlpha(defaultColor.bg, 0.85);
1354
+ var colors = {
1355
+ "default": {
1356
+ bg: palette.background,
1357
+ border: palette.foreground
1358
+ },
1359
+ secondary: {
1360
+ bg: palette.background,
1361
+ border: palette.foreground
1362
+ },
1363
+ success: {
1364
+ bg: palette.background,
1365
+ border: palette.success
1366
+ },
1367
+ warning: {
1368
+ bg: palette.background,
1369
+ border: palette.warning
1370
+ },
1371
+ error: {
1372
+ bg: palette.background,
1373
+ border: palette.error
1374
+ },
1375
+ abort: {
1376
+ bg: 'transparent',
1377
+ border: 'transparent',
1378
+ color: palette.accents_5
1379
+ },
1380
+ 'secondary-light': _objectSpread2(_objectSpread2({}, defaultColor), {}, {
1381
+ bg: alphaBackground
1382
+ }),
1383
+ 'success-light': _objectSpread2(_objectSpread2({}, defaultColor), {}, {
1384
+ bg: alphaBackground
1385
+ }),
1386
+ 'warning-light': _objectSpread2(_objectSpread2({}, defaultColor), {}, {
1387
+ bg: alphaBackground
1388
+ }),
1389
+ 'error-light': _objectSpread2(_objectSpread2({}, defaultColor), {}, {
1390
+ bg: alphaBackground
1391
+ })
1392
+ };
1393
+ if (disabled) return {
1394
+ bg: palette.accents_1,
1395
+ border: palette.accents_2,
1396
+ color: '#ccc'
1397
+ };
1398
+ if (loading) return _objectSpread2(_objectSpread2({}, defaultColor), {}, {
1399
+ color: 'transparent'
1400
+ });
1401
+ if (shadow) return defaultColor;
1402
+ var hoverColor = (ghost ? getButtonGhostHoverColors(palette, color) : colors[color]) || colors["default"];
1403
+ return _objectSpread2(_objectSpread2({}, hoverColor), {}, {
1404
+ color: hoverColor.color || hoverColor.border
1405
+ });
1406
+ };
1407
+ var getButtonCursor = function getButtonCursor(disabled, loading) {
1408
+ if (disabled) return {
1409
+ cursor: 'not-allowed',
1410
+ events: 'auto'
1411
+ };
1412
+ if (loading) return {
1413
+ cursor: 'default',
1414
+ events: 'none'
1415
+ };
1416
+ return {
1417
+ cursor: 'pointer',
1418
+ events: 'auto'
1419
+ };
1420
+ };
1421
+ var getButtonDripColor = function getButtonDripColor(palette, props) {
1422
+ var type = props.type;
1423
+ var isLightHover = type ? type.endsWith('light') : false;
1424
+ var hoverColors = getButtonHoverColors(palette, props);
1425
+ return isLightHover ? addColorAlpha(hoverColors.bg, 0.65) : addColorAlpha(palette.accents_2, 0.65);
1426
+ };
1427
+
1428
+ var _excluded$2 = ["children", "disabled", "color", "loading", "shadow", "ghost", "effect", "round", "relative", "replace", "a", "to", "onClick", "auto", "icon", "type", "iconRight", "className", "crossOrigin"];
1429
+ var ButtonComponent = /*#__PURE__*/React.forwardRef(function (btnProps, ref) {
1430
+ var theme$1 = theme.useTheme();
1431
+ // const navigate = useNavigate();
1432
+ var _useScale = useScale(),
1433
+ SCALES = _useScale.SCALES;
1434
+ var buttonRef = React.useRef(null);
1435
+ React.useImperativeHandle(ref, function () {
1436
+ return buttonRef.current;
1437
+ }); // Changed with !
1438
+
1439
+ var _useState = React.useState(false),
1440
+ _useState2 = _slicedToArray(_useState, 2),
1441
+ dripShow = _useState2[0],
1442
+ setDripShow = _useState2[1];
1443
+ var _useState3 = React.useState(0),
1444
+ _useState4 = _slicedToArray(_useState3, 2),
1445
+ dripX = _useState4[0],
1446
+ setDripX = _useState4[1];
1447
+ var _useState5 = React.useState(0),
1448
+ _useState6 = _slicedToArray(_useState5, 2),
1449
+ dripY = _useState6[0],
1450
+ setDripY = _useState6[1];
1451
+ var groupConfig = useButtonGroupContext();
1452
+ var filteredProps = filterPropsWithGroup(btnProps, groupConfig);
1453
+ /* eslint-disable @typescript-eslint/no-unused-vars */
1454
+ var children = filteredProps.children,
1455
+ _filteredProps$disabl = filteredProps.disabled,
1456
+ disabled = _filteredProps$disabl === void 0 ? false : _filteredProps$disabl;
1457
+ filteredProps.color;
1458
+ var _filteredProps$loadin = filteredProps.loading,
1459
+ loading = _filteredProps$loadin === void 0 ? false : _filteredProps$loadin,
1460
+ _filteredProps$shadow = filteredProps.shadow,
1461
+ shadow = _filteredProps$shadow === void 0 ? false : _filteredProps$shadow,
1462
+ _filteredProps$ghost = filteredProps.ghost,
1463
+ ghost = _filteredProps$ghost === void 0 ? false : _filteredProps$ghost,
1464
+ _filteredProps$effect = filteredProps.effect,
1465
+ effect = _filteredProps$effect === void 0 ? true : _filteredProps$effect,
1466
+ _filteredProps$round = filteredProps.round,
1467
+ round = _filteredProps$round === void 0 ? false : _filteredProps$round;
1468
+ filteredProps.relative;
1469
+ filteredProps.replace;
1470
+ filteredProps.a;
1471
+ var to = filteredProps.to,
1472
+ onClick = filteredProps.onClick,
1473
+ _filteredProps$auto = filteredProps.auto,
1474
+ auto = _filteredProps$auto === void 0 ? false : _filteredProps$auto,
1475
+ icon = filteredProps.icon,
1476
+ _filteredProps$type = filteredProps.type,
1477
+ type = _filteredProps$type === void 0 ? 'button' : _filteredProps$type,
1478
+ iconRight = filteredProps.iconRight,
1479
+ _filteredProps$classN = filteredProps.className,
1480
+ className = _filteredProps$classN === void 0 ? '' : _filteredProps$classN;
1481
+ filteredProps.crossOrigin;
1482
+ var props = _objectWithoutProperties(filteredProps, _excluded$2);
1483
+ /* eslint-enable @typescript-eslint/no-unused-vars */
1484
+
1485
+ var _useMemo = React.useMemo(function () {
1486
+ return getButtonColors(theme$1.palette, filteredProps);
1487
+ }, [theme$1.palette, filteredProps]),
1488
+ bg = _useMemo.bg,
1489
+ border = _useMemo.border,
1490
+ color = _useMemo.color,
1491
+ rippleColor = _useMemo.ripple;
1492
+ var hover = React.useMemo(function () {
1493
+ return getButtonHoverColors(theme$1.palette, filteredProps);
1494
+ }, [theme$1.palette, filteredProps]);
1495
+ var _useMemo2 = React.useMemo(function () {
1496
+ return getButtonCursor(disabled, loading);
1497
+ }, [disabled, loading]),
1498
+ cursor = _useMemo2.cursor,
1499
+ events = _useMemo2.events;
1500
+ var dripColor = React.useMemo(function () {
1501
+ return getButtonDripColor(theme$1.palette, filteredProps);
1502
+ }, [theme$1.palette, filteredProps]);
1503
+
1504
+ /* istanbul ignore next */
1505
+ var dripCompletedHandle = function dripCompletedHandle() {
1506
+ setDripShow(false);
1507
+ setDripX(0);
1508
+ setDripY(0);
1509
+ };
1510
+ var createRipple = function createRipple(event) {
1511
+ var button = buttonRef.current;
1512
+ if (!button) return;
1513
+ var rect = button.getBoundingClientRect();
1514
+ var size = Math.max(rect.width, rect.height);
1515
+ var x = event.clientX - rect.left - size / 2;
1516
+ var y = event.clientY - rect.top - size / 2;
1517
+ var rippleCount = 1; // number of rings
1518
+ var rippleDelay = 500; // ms between each ripple
1519
+ var _loop = function _loop() {
1520
+ var ripple = document.createElement('span');
1521
+ Object.assign(ripple.style, {
1522
+ position: 'absolute',
1523
+ borderRadius: '50%',
1524
+ backgroundColor: rippleColor,
1525
+ width: "".concat(size, "px"),
1526
+ height: "".concat(size, "px"),
1527
+ left: "".concat(x, "px"),
1528
+ top: "".concat(y, "px"),
1529
+ pointerEvents: 'none',
1530
+ transform: 'scale(0)',
1531
+ opacity: '1',
1532
+ transition: "transform 600ms ease-out ".concat(i * rippleDelay, "ms, opacity 600ms ease-out ").concat(i * rippleDelay, "ms"),
1533
+ zIndex: 1
1534
+ });
1535
+ button.appendChild(ripple);
1536
+
1537
+ // Force reflow to start transition
1538
+ window.getComputedStyle(ripple).opacity;
1539
+ ripple.style.transform = 'scale(2.5)';
1540
+ ripple.style.opacity = '0';
1541
+ ripple.addEventListener('transitionend', function () {
1542
+ ripple.remove();
1543
+ });
1544
+ };
1545
+ for (var i = 0; i < rippleCount; i++) {
1546
+ _loop();
1547
+ }
1548
+ };
1549
+ var clickHandler = function clickHandler(event) {
1550
+ if (disabled || loading) return;
1551
+ var showDrip = !shadow && !ghost && effect;
1552
+ /* istanbul ignore next */
1553
+ if (showDrip && buttonRef.current) {
1554
+ var rect = buttonRef.current.getBoundingClientRect();
1555
+ setDripShow(true);
1556
+ setDripX(event.clientX - rect.left);
1557
+ setDripY(event.clientY - rect.top);
1558
+ }
1559
+ if (shadow) {
1560
+ createRipple(event);
1561
+ }
1562
+ onClick && onClick(event);
1563
+ };
1564
+ var childrenWithIcon = React.useMemo(function () {
1565
+ return getButtonChildrenWithIcon(auto, children, {
1566
+ icon: icon,
1567
+ iconRight: iconRight
1568
+ });
1569
+ }, [auto, children, icon, iconRight]);
1570
+ var paddingLeft = auto ? SCALES.pl(1.15) : SCALES.pl(1.375),
1571
+ paddingRight = auto ? SCALES.pr(1.15) : SCALES.pr(1.375);
1572
+
1573
+ // If shadow provided is string then value other default
1574
+ var btnShadow = typeof shadow === 'string' ? shadow : shadow ? theme$1.shadows.level.z2 : 'none';
1575
+ return /*#__PURE__*/React.createElement(React.Fragment, null, to ? /*#__PURE__*/React.createElement("a", _extends({
1576
+ href: to
1577
+ }, props, {
1578
+ className: _JSXStyle.dynamic([["331518307", [SCALES.height(2.5), round ? '50%' : theme$1.layout.radius, SCALES.font(0.875), color, bg, shadow ? 'transparent' : border, cursor !== null && cursor !== void 0 ? cursor : 'pointer', events, shadow ? btnShadow : 'none', SCALES.pl(0.727), SCALES.height(2.5), color, bg, auto ? 'min-content' : SCALES.width(10.5), auto ? 'auto' : 'initial', SCALES.height(2.5), SCALES.pt(0), paddingRight, SCALES.pb(0), paddingLeft, SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), hover.color, hover.color, hover.bg, hover.border, cursor, events, btnShadow, shadow ? '-1px' : '0px']]]) + " " + (props && props.className != null && props.className || theme.useClasses('btn', 'btn-link', className) || "")
1579
+ }), loading && /*#__PURE__*/React.createElement(ButtonLoading, {
1580
+ color: color
1581
+ }), childrenWithIcon) : /*#__PURE__*/React.createElement("button", _extends({
1582
+ ref: buttonRef,
1583
+ type: type,
1584
+ disabled: disabled,
1585
+ onClick: clickHandler
1586
+ }, props, {
1587
+ className: _JSXStyle.dynamic([["331518307", [SCALES.height(2.5), round ? '50%' : theme$1.layout.radius, SCALES.font(0.875), color, bg, shadow ? 'transparent' : border, cursor !== null && cursor !== void 0 ? cursor : 'pointer', events, shadow ? btnShadow : 'none', SCALES.pl(0.727), SCALES.height(2.5), color, bg, auto ? 'min-content' : SCALES.width(10.5), auto ? 'auto' : 'initial', SCALES.height(2.5), SCALES.pt(0), paddingRight, SCALES.pb(0), paddingLeft, SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), hover.color, hover.color, hover.bg, hover.border, cursor, events, btnShadow, shadow ? '-1px' : '0px']]]) + " " + (props && props.className != null && props.className || theme.useClasses('btn', className) || "")
1588
+ }), loading && /*#__PURE__*/React.createElement(ButtonLoading, {
1589
+ color: color
1590
+ }), childrenWithIcon, dripShow && /*#__PURE__*/React.createElement(ButtonDrip, {
1591
+ x: dripX,
1592
+ y: dripY,
1593
+ color: dripColor,
1594
+ onCompleted: dripCompletedHandle
1595
+ })), /*#__PURE__*/React.createElement(_JSXStyle, {
1596
+ id: "331518307",
1597
+ dynamic: [SCALES.height(2.5), round ? '50%' : theme$1.layout.radius, SCALES.font(0.875), color, bg, shadow ? 'transparent' : border, cursor !== null && cursor !== void 0 ? cursor : 'pointer', events, shadow ? btnShadow : 'none', SCALES.pl(0.727), SCALES.height(2.5), color, bg, auto ? 'min-content' : SCALES.width(10.5), auto ? 'auto' : 'initial', SCALES.height(2.5), SCALES.pt(0), paddingRight, SCALES.pb(0), paddingLeft, SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), hover.color, hover.color, hover.bg, hover.border, cursor, events, btnShadow, shadow ? '-1px' : '0px']
1598
+ }, ".btn.__jsx-style-dynamic-selector{box-sizing:border-box;display:inline-block;line-height:".concat(SCALES.height(2.5), ";border-radius:").concat(round ? '50%' : theme$1.layout.radius, ";font-weight:400;font-size:").concat(SCALES.font(0.875), ";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none;text-transform:capitalize;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;white-space:nowrap;-webkit-transition:background-color 200ms ease 0ms,box-shadow 200ms ease 0ms, border 200ms ease 0ms,color 200ms ease 0ms;transition:background-color 200ms ease 0ms,box-shadow 200ms ease 0ms, border 200ms ease 0ms,color 200ms ease 0ms;position:relative;overflow:hidden;color:").concat(color, ";background-color:").concat(bg, ";border:1px solid ").concat(shadow ? 'transparent' : border, ";cursor:").concat(cursor !== null && cursor !== void 0 ? cursor : 'pointer', ";pointer-events:").concat(events, ";box-shadow:").concat(shadow ? btnShadow : 'none', ";--helpdice-ui-button-icon-padding:").concat(SCALES.pl(0.727), ";--helpdice-ui-button-height:").concat(SCALES.height(2.5), ";--helpdice-ui-button-color:").concat(color, ";--helpdice-ui-button-bg:").concat(bg, ";min-width:").concat(auto ? 'min-content' : SCALES.width(10.5), ";width:").concat(auto ? 'auto' : 'initial', ";height:").concat(SCALES.height(2.5), ";padding:").concat(SCALES.pt(0), " ").concat(paddingRight, " ").concat(SCALES.pb(0), " ").concat(paddingLeft, ";margin:").concat(SCALES.mt(0), " ").concat(SCALES.mr(0), " ").concat(SCALES.mb(0), " ").concat(SCALES.ml(0), ";}.btn.__jsx-style-dynamic-selector:hover,.btn.__jsx-style-dynamic-selector:focus{color:").concat(hover.color, ";--helpdice-ui-button-color:").concat(hover.color, ";background-color:").concat(hover.bg, ";border-color:").concat(hover.border, ";cursor:").concat(cursor, ";pointer-events:").concat(events, ";box-shadow:").concat(btnShadow, ";}.btn-link.__jsx-style-dynamic-selector{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.btn.__jsx-style-dynamic-selector .text{position:relative;z-index:1;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;line-height:inherit;top:-1px;}.btn.__jsx-style-dynamic-selector .text p,.btn.__jsx-style-dynamic-selector .text pre,.btn.__jsx-style-dynamic-selector .text div{margin:0;}.ripple.__jsx-style-dynamic-selector{position:absolute;border-radius:50%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-animation:ripple-animation-__jsx-style-dynamic-selector 600ms ease-out;animation:ripple-animation-__jsx-style-dynamic-selector 600ms ease-out;background-color:rgba(0,0,0,0.3);pointer-events:none;z-index:1;}@-webkit-keyframes ripple-animation-__jsx-style-dynamic-selector{to{-webkit-transform:scale(2.5);-ms-transform:scale(2.5);transform:scale(2.5);opacity:0;}}@keyframes ripple-animation-__jsx-style-dynamic-selector{to{-webkit-transform:scale(2.5);-ms-transform:scale(2.5);transform:scale(2.5);opacity:0;}}")));
1599
+ });
1600
+ ButtonComponent.displayName = 'Button';
1601
+ var Button = withScale(ButtonComponent);
1602
+
1603
+ // import { useTheme } from '@helpdice/theme';
1604
+
1605
+ var CompactButton = function CompactButton(_ref) {
1606
+ _ref.color;
1607
+ var children = _ref.children,
1608
+ iconRight = _ref.iconRight,
1609
+ icon = _ref.icon,
1610
+ _ref$scale = _ref.scale,
1611
+ scale = _ref$scale === void 0 ? 2 / 3 : _ref$scale,
1612
+ type = _ref.type,
1613
+ style = _ref.style,
1614
+ onClick = _ref.onClick,
1615
+ to = _ref.to;
1616
+ // const theme = useTheme();
1617
+ return /*#__PURE__*/React.createElement(Button, {
1618
+ to: to,
1619
+ icon: icon,
1620
+ style: style,
1621
+ type: type,
1622
+ onClick: onClick,
1623
+ auto: true,
1624
+ scale: scale,
1625
+ px: 0.6,
1626
+ iconRight: iconRight
1627
+ }, children);
1628
+ };
1629
+ var IconButton = /*#__PURE__*/React.memo(CompactButton);
1630
+
1631
+ // import { useTheme } from '@helpdice/theme';
1632
+
1633
+ var SmallButton = function SmallButton(_ref) {
1634
+ _ref.color;
1635
+ var children = _ref.children,
1636
+ iconRight = _ref.iconRight,
1637
+ icon = _ref.icon,
1638
+ _ref$scale = _ref.scale,
1639
+ scale = _ref$scale === void 0 ? 2 / 3 : _ref$scale,
1640
+ type = _ref.type,
1641
+ style = _ref.style,
1642
+ onClick = _ref.onClick,
1643
+ to = _ref.to;
1644
+ // const theme = useTheme();
1645
+ return /*#__PURE__*/React.createElement(Button, {
1646
+ to: to,
1647
+ icon: icon,
1648
+ style: style,
1649
+ type: type,
1650
+ onClick: onClick,
1651
+ auto: true,
1652
+ scale: scale,
1653
+ px: 0.6,
1654
+ iconRight: iconRight
1655
+ }, children);
1656
+ };
1657
+ var SmallButton$1 = /*#__PURE__*/React.memo(SmallButton);
1658
+
1659
+ /* "use client" */
1660
+
1661
+ Button.Icon = IconButton;
1662
+ Button.Small = SmallButton$1;
1663
+
1664
+ var _excluded$1 = ["h1", "h2", "h3", "h4", "h5", "h6", "p", "b", "small", "i", "span", "del", "em", "blockquote", "noWrap", "collapse", "children", "className", "display", "alignItems", "justify"];
1665
+ var _getModifierChild = function getModifierChild(tags, children) {
1666
+ if (!tags.length) return children;
1667
+ var nextTag = tags.slice(1, tags.length);
1668
+ return /*#__PURE__*/React.createElement(TextChild, {
1669
+ tag: tags[0]
1670
+ }, _getModifierChild(nextTag, children));
1671
+ };
1672
+ var TextComponent = function TextComponent(_ref) {
1673
+ var _ref$h = _ref.h1,
1674
+ h1 = _ref$h === void 0 ? false : _ref$h,
1675
+ _ref$h2 = _ref.h2,
1676
+ h2 = _ref$h2 === void 0 ? false : _ref$h2,
1677
+ _ref$h3 = _ref.h3,
1678
+ h3 = _ref$h3 === void 0 ? false : _ref$h3,
1679
+ _ref$h4 = _ref.h4,
1680
+ h4 = _ref$h4 === void 0 ? false : _ref$h4,
1681
+ _ref$h5 = _ref.h5,
1682
+ h5 = _ref$h5 === void 0 ? false : _ref$h5,
1683
+ _ref$h6 = _ref.h6,
1684
+ h6 = _ref$h6 === void 0 ? false : _ref$h6,
1685
+ _ref$p = _ref.p,
1686
+ p = _ref$p === void 0 ? false : _ref$p,
1687
+ _ref$b = _ref.b,
1688
+ b = _ref$b === void 0 ? false : _ref$b,
1689
+ _ref$small = _ref.small,
1690
+ small = _ref$small === void 0 ? false : _ref$small,
1691
+ _ref$i = _ref.i,
1692
+ i = _ref$i === void 0 ? false : _ref$i,
1693
+ _ref$span = _ref.span,
1694
+ span = _ref$span === void 0 ? false : _ref$span,
1695
+ _ref$del = _ref.del,
1696
+ del = _ref$del === void 0 ? false : _ref$del,
1697
+ _ref$em = _ref.em,
1698
+ em = _ref$em === void 0 ? false : _ref$em,
1699
+ _ref$blockquote = _ref.blockquote,
1700
+ blockquote = _ref$blockquote === void 0 ? false : _ref$blockquote,
1701
+ _ref$noWrap = _ref.noWrap,
1702
+ noWrap = _ref$noWrap === void 0 ? false : _ref$noWrap,
1703
+ _ref$collapse = _ref.collapse,
1704
+ collapse = _ref$collapse === void 0 ? 0 : _ref$collapse,
1705
+ children = _ref.children,
1706
+ _ref$className = _ref.className,
1707
+ className = _ref$className === void 0 ? '' : _ref$className,
1708
+ _ref$display = _ref.display,
1709
+ display = _ref$display === void 0 ? 'block' : _ref$display,
1710
+ alignItems = _ref.alignItems,
1711
+ justify = _ref.justify,
1712
+ props = _objectWithoutProperties(_ref, _excluded$1);
1713
+ var elements = {
1714
+ h1: h1,
1715
+ h2: h2,
1716
+ h3: h3,
1717
+ h4: h4,
1718
+ h5: h5,
1719
+ h6: h6,
1720
+ p: p,
1721
+ blockquote: blockquote
1722
+ };
1723
+ var inlineElements = {
1724
+ span: span,
1725
+ small: small,
1726
+ b: b,
1727
+ em: em,
1728
+ i: i,
1729
+ del: del
1730
+ };
1731
+ var names = Object.keys(elements).filter(function (name) {
1732
+ return elements[name];
1733
+ });
1734
+ var inlineNames = Object.keys(inlineElements).filter(function (name) {
1735
+ return inlineElements[name];
1736
+ });
1737
+
1738
+ /**
1739
+ * Render element "p" only if no element is found.
1740
+ * If there is only one modifier, just rendered one modifier element
1741
+ * e.g.
1742
+ * <Text /> => <p />
1743
+ * <Text em /> => <em />
1744
+ * <Text p em /> => <p><em>children</em></p>
1745
+ *
1746
+ */
1747
+
1748
+ var _useState = React.useState(false),
1749
+ _useState2 = _slicedToArray(_useState, 2),
1750
+ expand = _useState2[0],
1751
+ setExpand = _useState2[1];
1752
+ var tag = React.useMemo(function () {
1753
+ if (names[0]) return names[0];
1754
+ if (inlineNames[0]) return inlineNames[0];
1755
+ return 'p';
1756
+ }, [names, inlineNames]);
1757
+ var renderableChildElements = inlineNames.filter(function (name) {
1758
+ return name !== tag;
1759
+ });
1760
+ var modifers = React.useMemo(function () {
1761
+ if (!renderableChildElements.length) return children;
1762
+ return _getModifierChild(renderableChildElements, children);
1763
+ }, [renderableChildElements, children]);
1764
+ return /*#__PURE__*/React.createElement(TextChild, _extends({
1765
+ style: {
1766
+ textAlign: props.align,
1767
+ display: display,
1768
+ alignItems: alignItems,
1769
+ justifyContent: justify
1770
+ },
1771
+ className: "".concat(className, " ").concat(noWrap ? 'no-wrap' : ''),
1772
+ tag: tag
1773
+ }, props), typeof children === 'string' && collapse > 50 ? /*#__PURE__*/React.createElement(React.Fragment, null, expand ? modifers : (modifers === null || modifers === void 0 ? void 0 : modifers.toString().substring(0, collapse)) + '...', /*#__PURE__*/React.createElement(Button, {
1774
+ margin: 0,
1775
+ onClick: function onClick() {
1776
+ return setExpand(!expand);
1777
+ },
1778
+ style: {
1779
+ textTransform: 'lowercase'
1780
+ },
1781
+ effect: false,
1782
+ color: "abort",
1783
+ scale: 2 / 3,
1784
+ px: 0.2,
1785
+ py: 0,
1786
+ auto: true
1787
+ }, /*#__PURE__*/React.createElement("b", null, expand ? 'less' : 'more'))) : modifers);
1788
+ };
1789
+ TextComponent.displayName = 'Text';
1790
+ var Text = withScale(TextComponent);
1791
+
1792
+ var InputBlockLabelComponent = function InputBlockLabelComponent(_ref) {
1793
+ var children = _ref.children;
1794
+ var theme$1 = theme.useTheme();
1795
+ return /*#__PURE__*/React.createElement("label", {
1796
+ className: _JSXStyle.dynamic([["1278828862", [theme$1.palette.accents_6]]])
1797
+ }, children, /*#__PURE__*/React.createElement(_JSXStyle, {
1798
+ id: "1278828862",
1799
+ dynamic: [theme$1.palette.accents_6]
1800
+ }, "label.__jsx-style-dynamic-selector{display:block;font-weight:normal;color:".concat(theme$1.palette.accents_6, ";padding:0 0 0 1px;margin-bottom:0.5em;font-size:1em;line-height:1.5;}label.__jsx-style-dynamic-selector>*:first-child{margin-top:0;}label.__jsx-style-dynamic-selector>*:last-child{margin-bottom:0;}")));
1801
+ };
1802
+ InputBlockLabelComponent.displayName = 'InputBlockLabel';
1803
+ var InputBlockLabel = /*#__PURE__*/React.memo(InputBlockLabelComponent);
1804
+
1805
+ var _excluded = ["type", "disabled", "readOnly", "onFocus", "onBlur", "className", "initialValue", "onChange", "value", "placeholder", "helperText", "error", "label", "resize"];
947
1806
  tuple('none', 'both', 'horizontal', 'vertical', 'initial', 'inherit');
948
1807
  var TextareaComponent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
949
1808
  var _ref$type = _ref.type,
@@ -961,6 +1820,9 @@ var TextareaComponent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
961
1820
  onChange = _ref.onChange,
962
1821
  value = _ref.value,
963
1822
  placeholder = _ref.placeholder,
1823
+ helperText = _ref.helperText,
1824
+ error = _ref.error,
1825
+ label = _ref.label,
964
1826
  _ref$resize = _ref.resize,
965
1827
  resize = _ref$resize === void 0 ? 'none' : _ref$resize,
966
1828
  props = _objectWithoutProperties(_ref, _excluded);
@@ -1017,6 +1879,8 @@ var TextareaComponent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1017
1879
  };
1018
1880
  var textareaProps = _objectSpread2(_objectSpread2({}, props), controlledValue);
1019
1881
  return /*#__PURE__*/React.createElement("div", {
1882
+ className: "with-label"
1883
+ }, label && /*#__PURE__*/React.createElement(InputBlockLabel, null, label), /*#__PURE__*/React.createElement("div", {
1020
1884
  className: _JSXStyle.dynamic([["12276481", [theme$1.layout.radius, borderColor, color, SCALES.font(0.875), SCALES.height(1, 'auto'), SCALES.width(1, 'initial'), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), hoverBorder, theme$1.palette.accents_1, theme$1.palette.accents_2, theme$1.font.sans, SCALES.pt(0.5), SCALES.pr(0.5), SCALES.pb(0.5), SCALES.pl(0.5), resize, theme$1.palette.background]]]) + " " + (classes || "")
1021
1885
  }, /*#__PURE__*/React.createElement("textarea", _extends({
1022
1886
  ref: textareaRef,
@@ -1031,7 +1895,17 @@ var TextareaComponent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1031
1895
  })), /*#__PURE__*/React.createElement(_JSXStyle, {
1032
1896
  id: "12276481",
1033
1897
  dynamic: [theme$1.layout.radius, borderColor, color, SCALES.font(0.875), SCALES.height(1, 'auto'), SCALES.width(1, 'initial'), SCALES.mt(0), SCALES.mr(0), SCALES.mb(0), SCALES.ml(0), hoverBorder, theme$1.palette.accents_1, theme$1.palette.accents_2, theme$1.font.sans, SCALES.pt(0.5), SCALES.pr(0.5), SCALES.pb(0.5), SCALES.pl(0.5), resize, theme$1.palette.background]
1034
- }, ".wrapper.__jsx-style-dynamic-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:".concat(theme$1.layout.radius, ";border:1px solid ").concat(borderColor, ";color:").concat(color, ";-webkit-transition:border 0.2s ease 0s,color 0.2s ease 0s;transition:border 0.2s ease 0s,color 0.2s ease 0s;min-width:12.5rem;max-width:95vw;--textarea-font-size:").concat(SCALES.font(0.875), ";--textarea-height:").concat(SCALES.height(1, 'auto'), ";width:").concat(SCALES.width(1, 'initial'), ";height:var(--textarea-height);margin:").concat(SCALES.mt(0), " ").concat(SCALES.mr(0), " ").concat(SCALES.mb(0), " ").concat(SCALES.ml(0), ";}.wrapper.hover.__jsx-style-dynamic-selector{border-color:").concat(hoverBorder, ";}.wrapper.disabled.__jsx-style-dynamic-selector{background-color:").concat(theme$1.palette.accents_1, ";border-color:").concat(theme$1.palette.accents_2, ";cursor:not-allowed;}textarea.__jsx-style-dynamic-selector{background-color:transparent;box-shadow:none;display:block;font-family:").concat(theme$1.font.sans, ";font-size:var(--textarea-font-size);width:100%;height:var(--textarea-height);border:none;outline:none;padding:").concat(SCALES.pt(0.5), " ").concat(SCALES.pr(0.5), " ").concat(SCALES.pb(0.5), " ").concat(SCALES.pl(0.5), ";resize:").concat(resize, ";}.disabled.__jsx-style-dynamic-selector>textarea.__jsx-style-dynamic-selector{cursor:not-allowed;}textarea.__jsx-style-dynamic-selector:-webkit-autofill,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:hover,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:active,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:focus{-webkit-box-shadow:0 0 0 30px ").concat(theme$1.palette.background, " inset !important;}")));
1898
+ }, ".wrapper.__jsx-style-dynamic-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:".concat(theme$1.layout.radius, ";border:1px solid ").concat(borderColor, ";color:").concat(color, ";-webkit-transition:border 0.2s ease 0s,color 0.2s ease 0s;transition:border 0.2s ease 0s,color 0.2s ease 0s;min-width:12.5rem;max-width:95vw;--textarea-font-size:").concat(SCALES.font(0.875), ";--textarea-height:").concat(SCALES.height(1, 'auto'), ";width:").concat(SCALES.width(1, 'initial'), ";height:var(--textarea-height);margin:").concat(SCALES.mt(0), " ").concat(SCALES.mr(0), " ").concat(SCALES.mb(0), " ").concat(SCALES.ml(0), ";}.wrapper.hover.__jsx-style-dynamic-selector{border-color:").concat(hoverBorder, ";}.wrapper.disabled.__jsx-style-dynamic-selector{background-color:").concat(theme$1.palette.accents_1, ";border-color:").concat(theme$1.palette.accents_2, ";cursor:not-allowed;}textarea.__jsx-style-dynamic-selector{background-color:transparent;box-shadow:none;display:block;font-family:").concat(theme$1.font.sans, ";font-size:var(--textarea-font-size);width:100%;height:var(--textarea-height);border:none;outline:none;padding:").concat(SCALES.pt(0.5), " ").concat(SCALES.pr(0.5), " ").concat(SCALES.pb(0.5), " ").concat(SCALES.pl(0.5), ";resize:").concat(resize, ";}.disabled.__jsx-style-dynamic-selector>textarea.__jsx-style-dynamic-selector{cursor:not-allowed;}textarea.__jsx-style-dynamic-selector:-webkit-autofill,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:hover,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:active,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:focus{-webkit-box-shadow:0 0 0 30px ").concat(theme$1.palette.background, " inset !important;}"))), helperText && /*#__PURE__*/React.createElement(Text, {
1899
+ font: 0.8,
1900
+ style: {
1901
+ marginTop: 0.4,
1902
+ marginRight: 0,
1903
+ marginLeft: 0,
1904
+ marginBottom: '0.4rem',
1905
+ textAlign: 'left'
1906
+ },
1907
+ color: error ? "error" : 'default'
1908
+ }, "\xA0", helperText));
1035
1909
  });
1036
1910
  TextareaComponent.displayName = 'Textarea';
1037
1911
  var Textarea = withScale(TextareaComponent);