rte-utils 1.2.9 → 1.2.10

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.
@@ -4,11 +4,13 @@ interface ProductionUnitProps {
4
4
  onChangeSwitch?: (checked: boolean) => void;
5
5
  defaultValue?: number;
6
6
  defaultChecked?: boolean;
7
+ value?: number;
8
+ checked?: boolean;
7
9
  unitName?: string;
8
10
  energyCost?: number;
9
11
  checkedImage?: React.ReactNode;
10
12
  uncheckedImage?: React.ReactNode;
11
13
  readonly?: boolean;
12
14
  }
13
- export declare const ProductionUnit: ({ onChangeInput, onChangeSwitch, defaultValue, defaultChecked, unitName, energyCost, checkedImage, uncheckedImage, readonly, }: ProductionUnitProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const ProductionUnit: ({ onChangeInput, onChangeSwitch, defaultValue, defaultChecked, value, checked, unitName, energyCost, checkedImage, uncheckedImage, readonly, }: ProductionUnitProps) => import("react/jsx-runtime").JSX.Element;
14
16
  export {};
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as n}from"react/jsx-runtime";import{useState as i,useRef as o,useEffect as a}from"react";var e=function(e){var c=e.label,l=e.value,r=void 0===l?"":l,d=e.onChange,h=e.type,s=void 0===h?"text":h,u=e.disabled,v=void 0!==u&&u,m=e.className,f=void 0===m?"":m,p=e.required,g=void 0!==p&&p,b=e.min,w=void 0===b?{value:0,label:"Pmin"}:b,N=e.max,C=void 0===N?{value:100,label:"Pmax"}:N,L=i(r),x=L[0],R=L[1],y=i(!1),k=y[0],z=y[1],M=o(null);a(function(){R(r)},[r]);var F=["input-container",k?"input-container--focused":"",k||x.length>0?"input-container--floating":"",v?"input-container--disabled":"",f].filter(Boolean).join(" ");return t("div",{className:F,children:n("div",{className:"input-constraints",children:[n("div",{className:"input-min",children:[w.label,t("br",{}),w.value]}),n("div",{className:"input-field",children:[t("input",{ref:M,type:s,value:x,onChange:function(t){var n=t.target.value;R(n),null==d||d(n)},onFocus:function(){z(!0)},onBlur:function(){z(!1)},disabled:v,required:g,className:"input-element","aria-label":c}),n("label",{className:"input-label",children:[c,g&&t("span",{className:"input-required",children:"*"})]})]}),n("div",{className:"input-max",children:[C.label,t("br",{})," ",C.value]})]})})},c=function(n){var i=n.isOff;return t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t("path",{d:"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z",fill:i?"#999FA1":"#009CDF"})})},l=function(n){var i=n.isOff;return t("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t("circle",{cx:"16",cy:"16",r:"16",fill:i?"white":"#009cdf"})})},r=function(o){var a=o.checked,e=void 0!==a&&a,r=o.onChange,d=o.disabled,h=void 0!==d&&d,s=o.showIcon,u=void 0===s||s,v=i(e),m=v[0],f=v[1],p=["switch",m?"switch--checked":"",h?"switch--disabled":""].filter(Boolean).join(" ");return t("div",{className:"switch-container",children:n("div",{className:"switch-wrapper",children:[u&&t("div",{className:"switch-icon",children:t(c,{isOff:!m})}),t("button",{type:"button",role:"switch","aria-checked":m,className:p,onClick:function(){if(!h){var t=!m;f(t),null==r||r(t)}},disabled:h,children:t("span",{className:"switch-track",children:t("span",{className:"switch-thumb",children:t(l,{isOff:!m})})})})]})})},d=function(n){var i=n.label,o=n.bgColor,a=n.textColor,e=n.width,c=["chip-container","full-width"===(void 0===e?"fit-content":e)?"chip-container--full-width":"chip-container--fit-content"].join(" ");return t("div",{className:c,style:{backgroundColor:o},children:t("div",{className:"chip-content",children:t("p",{className:"chip-label",style:{color:a},children:i})})})},h=function(o){var a=o.onChangeInput,c=o.onChangeSwitch,l=o.defaultValue,h=o.defaultChecked,s=void 0!==h&&h,u=o.unitName,v=void 0===u?"Production Unit":u,m=o.energyCost,f=void 0===m?0:m,p=o.checkedImage,g=o.uncheckedImage,b=o.readonly,w=void 0!==b&&b,N=i(s),C=N[0],L=N[1],x=i(l),R=x[0],y=x[1];return n("div",{className:"production-unit-container",children:[n("div",{className:"production-unit-content",children:[t("div",{className:"image-preview-container",children:C?p:g}),n("div",{className:"production-unit-chip",children:[t("div",{className:"production-unit-chip-name",children:v}),t(d,{label:"".concat(f," MW"),width:"fit-content",bgColor:"#E1F5FD",textColor:"#005896"})]}),n("div",{className:"production-unit-switch-container",children:[t(e,{label:"PA",type:"number",onChange:function(t){var n=Number(t);y(n),a&&a(n)},value:void 0!==R?R.toString():void 0,disabled:!C||w})," "]})]}),t(r,{checked:C,onChange:function(t){L(t),c&&c(t)},disabled:w})]})},s=function(o){var e,c,l,r,d=o.max,h=o.relative,s=o.barHeight,u=void 0===s?103:s,v=o.barWidth,m=void 0===v?32:v,f=o.orientation,p=void 0===f?"vertical":f,g=o.cornerRadius,b=o.children,w=i(0),N=w[0],C=w[1],L=i(0),x=L[0],R=L[1],y=Math.min(h.value/d.value*100,100)/100*u,k=Math.min(h.value/d.value*100,100)/100*m;a(function(){C(0),R(0);var t=Date.now(),n=function(){var i=Date.now()-t,o=Math.min(i/1e3,1),a=1-Math.pow(1-o,4);C(y*a),R(k*a),o<1&&requestAnimationFrame(n)};requestAnimationFrame(n)},[y,k]);var z="horizontal"===p?u:m,M="horizontal"===p?m:u,F="horizontal"===p?u:m,B="horizontal"===p?m:u,q=function(t,n,i,o,a){var e=a.topLeft,c=a.topRight,l=a.bottomLeft,r=a.bottomRight;return"\n M ".concat(t+e," ").concat(n,"\n L ").concat(t+i-c," ").concat(n,"\n Q ").concat(t+i," ").concat(n," ").concat(t+i," ").concat(n+c,"\n L ").concat(t+i," ").concat(n+o-r,"\n Q ").concat(t+i," ").concat(n+o," ").concat(t+i-r," ").concat(n+o,"\n L ").concat(t+l," ").concat(n+o,"\n Q ").concat(t," ").concat(n+o," ").concat(t," ").concat(n+o-l,"\n L ").concat(t," ").concat(n+e,"\n Q ").concat(t," ").concat(n," ").concat(t+e," ").concat(n,"\n Z\n ").trim().replace(/\s+/g," ")},O={topLeft:2,topRight:2,bottomLeft:2,bottomRight:2},j=g?{topLeft:null!==(e=g.topLeft)&&void 0!==e?e:O.topLeft,topRight:null!==(c=g.topRight)&&void 0!==c?c:O.topRight,bottomLeft:null!==(l=g.bottomLeft)&&void 0!==l?l:O.bottomLeft,bottomRight:null!==(r=g.bottomRight)&&void 0!==r?r:O.bottomRight}:O;return t("div",{className:"histogram-container ".concat("horizontal"===p?"histogram-container--horizontal":""),children:n("div",{className:"histogram-content ".concat("horizontal"===p?"histogram-content--horizontal":""),children:[t("div",{className:"histogram-bar",style:{height:"".concat(M,"px"),width:"".concat(z,"px")},children:n("svg",{width:F,height:B,viewBox:"0 0 ".concat(F," ").concat(B),className:"histogram-svg",children:[t("path",{d:q(0,0,F,B,j),fill:d.color,fillOpacity:d.opacity||1}),t("path","vertical"===p?{d:q(0,B-N,F,N,{topLeft:N>=B?j.topLeft:0,topRight:N>=B?j.topRight:0,bottomLeft:j.bottomLeft,bottomRight:j.bottomRight}),fill:h.color}:{d:q(0,0,x,B,{topLeft:j.topLeft,topRight:x>=F?j.topRight:0,bottomLeft:j.bottomLeft,bottomRight:x>=F?j.bottomRight:0}),fill:h.color})]})}),b&&t("div",{className:"histogram-text-container ".concat("horizontal"===p?"histogram-text-container--horizontal":""),children:b})]})})},u=function(n){var i=n.children;return t("div",{className:"avatar-container avatar-container--clickable",children:t("div",{className:"avatar-content",children:i})})};export{u as Avatar,d as Chip,s as Histogram,e as Input,h as ProductionUnit,r as Switch};
1
+ import{jsx as t,jsxs as i}from"react/jsx-runtime";import{useState as n,useRef as o,useEffect as e}from"react";var a=function(a){var c=a.label,l=a.value,r=void 0===l?"":l,d=a.onChange,h=a.type,s=void 0===h?"text":h,v=a.disabled,u=void 0!==v&&v,m=a.className,f=void 0===m?"":m,p=a.required,g=void 0!==p&&p,b=a.min,w=void 0===b?{value:0,label:"Pmin"}:b,N=a.max,C=void 0===N?{value:100,label:"Pmax"}:N,L=n(r),x=L[0],R=L[1],k=n(!1),y=k[0],z=k[1],M=o(null);e(function(){R(r)},[r]);var F=["input-container",y?"input-container--focused":"",y||x.length>0?"input-container--floating":"",u?"input-container--disabled":"",f].filter(Boolean).join(" ");return t("div",{className:F,children:i("div",{className:"input-constraints",children:[i("div",{className:"input-min",children:[w.label,t("br",{}),w.value]}),i("div",{className:"input-field",children:[t("input",{ref:M,type:s,value:x,onChange:function(t){var i=t.target.value;R(i),null==d||d(i)},onFocus:function(){z(!0)},onBlur:function(){z(!1)},disabled:u,required:g,className:"input-element","aria-label":c}),i("label",{className:"input-label",children:[c,g&&t("span",{className:"input-required",children:"*"})]})]}),i("div",{className:"input-max",children:[C.label,t("br",{})," ",C.value]})]})})},c=function(i){var n=i.isOff;return t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t("path",{d:"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z",fill:n?"#999FA1":"#009CDF"})})},l=function(i){var n=i.isOff;return t("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t("circle",{cx:"16",cy:"16",r:"16",fill:n?"white":"#009cdf"})})},r=function(o){var e=o.checked,a=void 0!==e&&e,r=o.onChange,d=o.disabled,h=void 0!==d&&d,s=o.showIcon,v=void 0===s||s,u=n(a),m=u[0],f=u[1],p=["switch",m?"switch--checked":"",h?"switch--disabled":""].filter(Boolean).join(" ");return t("div",{className:"switch-container",children:i("div",{className:"switch-wrapper",children:[v&&t("div",{className:"switch-icon",children:t(c,{isOff:!m})}),t("button",{type:"button",role:"switch","aria-checked":m,className:p,onClick:function(){if(!h){var t=!m;f(t),null==r||r(t)}},disabled:h,children:t("span",{className:"switch-track",children:t("span",{className:"switch-thumb",children:t(l,{isOff:!m})})})})]})})},d=function(i){var n=i.label,o=i.bgColor,e=i.textColor,a=i.width,c=["chip-container","full-width"===(void 0===a?"fit-content":a)?"chip-container--full-width":"chip-container--fit-content"].join(" ");return t("div",{className:c,style:{backgroundColor:o},children:t("div",{className:"chip-content",children:t("p",{className:"chip-label",style:{color:e},children:n})})})},h=function(o){var e=o.onChangeInput,c=o.onChangeSwitch,l=o.defaultValue,h=o.defaultChecked,s=void 0!==h&&h,v=o.value,u=o.checked,m=o.unitName,f=void 0===m?"Production Unit":m,p=o.energyCost,g=void 0===p?0:p,b=o.checkedImage,w=o.uncheckedImage,N=o.readonly,C=void 0!==N&&N,L=n(s),x=L[0],R=L[1],k=n(l),y=k[0],z=k[1],M=void 0!==u?u:x,F=void 0!==v?v:y;return i("div",{className:"production-unit-container",children:[i("div",{className:"production-unit-content",children:[t("div",{className:"image-preview-container",children:M?b:w}),i("div",{className:"production-unit-chip",children:[t("div",{className:"production-unit-chip-name",children:f}),t(d,{label:"".concat(g," MW"),width:"fit-content",bgColor:"#E1F5FD",textColor:"#005896"})]}),i("div",{className:"production-unit-switch-container",children:[t(a,{label:"PA",type:"number",onChange:function(t){var i=Number(t);void 0===v&&z(i),e&&e(i)},value:void 0!==F?F.toString():void 0,disabled:!M||C})," "]})]}),t(r,{checked:M,onChange:function(t){void 0===u&&R(t),c&&c(t)},disabled:C})]})},s=function(o){var a,c,l,r,d=o.max,h=o.relative,s=o.barHeight,v=void 0===s?103:s,u=o.barWidth,m=void 0===u?32:u,f=o.orientation,p=void 0===f?"vertical":f,g=o.cornerRadius,b=o.children,w=n(0),N=w[0],C=w[1],L=n(0),x=L[0],R=L[1],k=Math.min(h.value/d.value*100,100)/100*v,y=Math.min(h.value/d.value*100,100)/100*m;e(function(){C(0),R(0);var t=Date.now(),i=function(){var n=Date.now()-t,o=Math.min(n/1e3,1),e=1-Math.pow(1-o,4);C(k*e),R(y*e),o<1&&requestAnimationFrame(i)};requestAnimationFrame(i)},[k,y]);var z="horizontal"===p?v:m,M="horizontal"===p?m:v,F="horizontal"===p?v:m,B="horizontal"===p?m:v,q=function(t,i,n,o,e){var a=e.topLeft,c=e.topRight,l=e.bottomLeft,r=e.bottomRight;return"\n M ".concat(t+a," ").concat(i,"\n L ").concat(t+n-c," ").concat(i,"\n Q ").concat(t+n," ").concat(i," ").concat(t+n," ").concat(i+c,"\n L ").concat(t+n," ").concat(i+o-r,"\n Q ").concat(t+n," ").concat(i+o," ").concat(t+n-r," ").concat(i+o,"\n L ").concat(t+l," ").concat(i+o,"\n Q ").concat(t," ").concat(i+o," ").concat(t," ").concat(i+o-l,"\n L ").concat(t," ").concat(i+a,"\n Q ").concat(t," ").concat(i," ").concat(t+a," ").concat(i,"\n Z\n ").trim().replace(/\s+/g," ")},O={topLeft:2,topRight:2,bottomLeft:2,bottomRight:2},j=g?{topLeft:null!==(a=g.topLeft)&&void 0!==a?a:O.topLeft,topRight:null!==(c=g.topRight)&&void 0!==c?c:O.topRight,bottomLeft:null!==(l=g.bottomLeft)&&void 0!==l?l:O.bottomLeft,bottomRight:null!==(r=g.bottomRight)&&void 0!==r?r:O.bottomRight}:O;return t("div",{className:"histogram-container ".concat("horizontal"===p?"histogram-container--horizontal":""),children:i("div",{className:"histogram-content ".concat("horizontal"===p?"histogram-content--horizontal":""),children:[t("div",{className:"histogram-bar",style:{height:"".concat(M,"px"),width:"".concat(z,"px")},children:i("svg",{width:F,height:B,viewBox:"0 0 ".concat(F," ").concat(B),className:"histogram-svg",children:[t("path",{d:q(0,0,F,B,j),fill:d.color,fillOpacity:d.opacity||1}),t("path","vertical"===p?{d:q(0,B-N,F,N,{topLeft:N>=B?j.topLeft:0,topRight:N>=B?j.topRight:0,bottomLeft:j.bottomLeft,bottomRight:j.bottomRight}),fill:h.color}:{d:q(0,0,x,B,{topLeft:j.topLeft,topRight:x>=F?j.topRight:0,bottomLeft:j.bottomLeft,bottomRight:x>=F?j.bottomRight:0}),fill:h.color})]})}),b&&t("div",{className:"histogram-text-container ".concat("horizontal"===p?"histogram-text-container--horizontal":""),children:b})]})})},v=function(i){var n=i.children;return t("div",{className:"avatar-container avatar-container--clickable",children:t("div",{className:"avatar-content",children:n})})};export{v as Avatar,d as Chip,s as Histogram,a as Input,h as ProductionUnit,r as Switch};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/Chip.tsx","../src/components/ProductionUnit.tsx","../src/components/Histogram.tsx","../src/components/Avatar.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport \"./Input.css\";\n\ninterface InputProps {\n label: string;\n value?: string;\n onChange?: (value: string) => void;\n type?: \"text\" | \"number\";\n disabled?: boolean;\n className?: string;\n required?: boolean;\n min?: { value: number; label?: string };\n max?: { value: number; label?: string };\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n value = \"\",\n onChange,\n type = \"text\",\n disabled = false,\n className = \"\",\n required = false,\n min = { value: 0, label: \"Pmin\" },\n max = { value: 100, label: \"Pmax\" },\n}) => {\n const [internalValue, setInternalValue] = useState(value);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n const isLabelFloating = isFocused || internalValue.length > 0;\n\n const containerClasses = [\n \"input-container\",\n isFocused ? \"input-container--focused\" : \"\",\n isLabelFloating ? \"input-container--floating\" : \"\",\n disabled ? \"input-container--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClasses}>\n <div className=\"input-constraints\">\n <div className=\"input-min\">\n {min.label}\n <br />\n {min.value}\n </div>\n\n <div className=\"input-field\">\n <input\n ref={inputRef}\n type={type}\n value={internalValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n required={required}\n className=\"input-element\"\n aria-label={label}\n />\n <label className=\"input-label\">\n {label}\n {required && <span className=\"input-required\">*</span>}\n </label>\n </div>\n <div className=\"input-max\">\n {max.label}\n <br /> {max.value}\n </div>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./Switch.css\";\n\ninterface OnProps {\n isOff?: boolean;\n}\nconst ImgOn = ({ isOff }: OnProps) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z\"\n fill={isOff ? \"#999FA1\" : \"#009CDF\"}\n />\n </svg>\n);\nconst SwitchThumb = ({ isOff }: OnProps) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"16\" fill={isOff ? \"white\" : \"#009cdf\"} />\n </svg>\n);\n\ninterface SwitchProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n showIcon?: boolean;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onChange,\n disabled = false,\n showIcon = true,\n}) => {\n const [internalChecked, setInternalChecked] = useState(checked);\n\n const handleToggle = () => {\n if (disabled) return;\n\n const newChecked = !internalChecked;\n setInternalChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const switchClasses = [\n \"switch\",\n internalChecked ? \"switch--checked\" : \"\",\n disabled ? \"switch--disabled\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className=\"switch-container\">\n <div className=\"switch-wrapper\">\n {showIcon && (\n <div className=\"switch-icon\">\n <ImgOn isOff={!internalChecked} />\n </div>\n )}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={internalChecked}\n className={switchClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className=\"switch-track\">\n <span className=\"switch-thumb\">\n <SwitchThumb isOff={!internalChecked} />\n </span>\n </span>\n </button>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Chip.css\";\n\ninterface ChipProps {\n // Define any props you want to pass to the Chip component\n label?: string;\n bgColor?: string;\n textColor?: string;\n width?: \"fit-content\" | \"full-width\";\n}\n\nexport const Chip: React.FC<ChipProps> = ({ \n label, \n bgColor, \n textColor, \n width = \"fit-content\" \n}) => {\n const chipClasses = [\n \"chip-container\",\n width === \"full-width\" ? \"chip-container--full-width\" : \"chip-container--fit-content\"\n ].join(\" \");\n\n return (\n <div className={chipClasses} style={{ backgroundColor: bgColor }}>\n <div className=\"chip-content\">\n <p className=\"chip-label\" style={{ color: textColor }}>\n {label}\n </p>\n </div>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { Input } from \"./Input\";\nimport { Switch } from \"./Switch\";\nimport \"./ProductionUnit.css\";\nimport { Chip } from \"./Chip\";\n\ninterface ProductionUnitProps {\n onChangeInput?: (value: number) => void;\n onChangeSwitch?: (checked: boolean) => void;\n defaultValue?: number;\n defaultChecked?: boolean;\n unitName?: string;\n energyCost?: number;\n checkedImage?: React.ReactNode;\n uncheckedImage?: React.ReactNode;\n readonly?: boolean;\n}\nexport const ProductionUnit = ({\n onChangeInput,\n onChangeSwitch,\n defaultValue,\n defaultChecked = false,\n unitName = \"Production Unit\",\n energyCost = 0,\n checkedImage,\n uncheckedImage,\n readonly = false,\n}: ProductionUnitProps) => {\n // Internal state management\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const [internalValue, setInternalValue] = useState(defaultValue);\n\n const handleSwitchChange = (newChecked: boolean) => {\n // Update internal state\n setInternalChecked(newChecked);\n\n // Notify parent component if handler provided\n if (onChangeSwitch) {\n onChangeSwitch(newChecked);\n }\n };\n\n const handleInputChange = (val: string) => {\n const numValue = Number(val);\n // Update internal state\n setInternalValue(numValue);\n\n // Notify parent component if handler provided\n if (onChangeInput) {\n onChangeInput(numValue);\n }\n };\n\n return (\n <div className=\"production-unit-container\">\n <div className=\"production-unit-content\">\n <div className=\"image-preview-container\">\n {internalChecked ? checkedImage : uncheckedImage}\n </div>\n <div className=\"production-unit-chip\">\n <div className=\"production-unit-chip-name\">{unitName}</div>\n\n <Chip\n label={`${energyCost} MW`}\n width=\"fit-content\"\n bgColor=\"#E1F5FD\"\n textColor=\"#005896\"\n />\n </div>\n <div className=\"production-unit-switch-container\">\n <Input\n label=\"PA\"\n type=\"number\"\n onChange={handleInputChange}\n value={\n internalValue !== undefined ? internalValue.toString() : undefined\n }\n disabled={!internalChecked || readonly}\n />{\" \"}\n </div>\n </div>\n\n <Switch\n checked={internalChecked}\n onChange={handleSwitchChange}\n disabled={readonly}\n />\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport \"./Histogram.css\";\n\ninterface HistogramProps {\n /** Maximum value configuration with value and color */\n max: {\n value: number;\n color: string;\n opacity?: number;\n };\n /** Relative/current value configuration with value and color */\n relative: {\n value: number;\n color: string;\n };\n /** Height of the histogram bar in pixels */\n barHeight?: number;\n /** Width of the histogram bar in pixels */\n barWidth?: number;\n /** Orientation of the histogram - 'vertical' or 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n /** Corner radius configuration for individual corners */\n cornerRadius?: {\n topLeft?: number;\n topRight?: number;\n bottomLeft?: number;\n bottomRight?: number;\n };\n /** Child components (typically text content) */\n children?: React.ReactNode;\n}\n\nexport const Histogram: React.FC<HistogramProps> = ({\n max,\n relative,\n barHeight = 103,\n barWidth = 32,\n orientation = 'vertical',\n cornerRadius,\n children,\n}) => {\n const [animatedHeight, setAnimatedHeight] = useState(0);\n const [animatedWidth, setAnimatedWidth] = useState(0);\n\n // Calculate target dimensions based on orientation\n const targetHeight = (Math.min((relative.value / max.value) * 100, 100) / 100) * barHeight;\n const targetWidth = (Math.min((relative.value / max.value) * 100, 100) / 100) * barWidth;\n\n // Simple Chart.js-like animation: always animate from 0 to target\n useEffect(() => {\n setAnimatedHeight(0);\n setAnimatedWidth(0);\n \n const startTime = Date.now();\n const duration = 1000;\n\n const animate = () => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Chart.js-like easing (easeOutQuart)\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\n \n setAnimatedHeight(targetHeight * easeOutQuart);\n setAnimatedWidth(targetWidth * easeOutQuart);\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n };\n\n requestAnimationFrame(animate);\n }, [targetHeight, targetWidth]);\n\n const displayWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const displayHeight = orientation === 'horizontal' ? barWidth : barHeight;\n const svgWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const svgHeight = orientation === 'horizontal' ? barWidth : barHeight;\n\n // Helper function to create rounded rectangle path\n const createRoundedRectPath = (\n x: number,\n y: number,\n width: number,\n height: number,\n radii: { topLeft: number; topRight: number; bottomLeft: number; bottomRight: number }\n ) => {\n const { topLeft, topRight, bottomLeft, bottomRight } = radii;\n \n return `\n M ${x + topLeft} ${y}\n L ${x + width - topRight} ${y}\n Q ${x + width} ${y} ${x + width} ${y + topRight}\n L ${x + width} ${y + height - bottomRight}\n Q ${x + width} ${y + height} ${x + width - bottomRight} ${y + height}\n L ${x + bottomLeft} ${y + height}\n Q ${x} ${y + height} ${x} ${y + height - bottomLeft}\n L ${x} ${y + topLeft}\n Q ${x} ${y} ${x + topLeft} ${y}\n Z\n `.trim().replace(/\\s+/g, ' ');\n };\n\n // Default corner radius values\n const defaultCornerRadius = { topLeft: 2, topRight: 2, bottomLeft: 2, bottomRight: 2 };\n const corners = cornerRadius ? {\n topLeft: cornerRadius.topLeft ?? defaultCornerRadius.topLeft,\n topRight: cornerRadius.topRight ?? defaultCornerRadius.topRight,\n bottomLeft: cornerRadius.bottomLeft ?? defaultCornerRadius.bottomLeft,\n bottomRight: cornerRadius.bottomRight ?? defaultCornerRadius.bottomRight,\n } : defaultCornerRadius;\n\n return (\n <div className={`histogram-container ${orientation === 'horizontal' ? 'histogram-container--horizontal' : ''}`}>\n <div className={`histogram-content ${orientation === 'horizontal' ? 'histogram-content--horizontal' : ''}`}>\n <div \n className=\"histogram-bar\"\n style={{\n height: `${displayHeight}px`,\n width: `${displayWidth}px`\n }}\n >\n <svg\n width={svgWidth}\n height={svgHeight}\n viewBox={`0 0 ${svgWidth} ${svgHeight}`}\n className=\"histogram-svg\"\n >\n {/* Background bar (max value) */}\n <path\n d={createRoundedRectPath(0, 0, svgWidth, svgHeight, corners)}\n fill={max.color}\n fillOpacity={max.opacity || 1}\n />\n {/* Foreground bar (relative value) with animation */}\n {orientation === 'vertical' ? (\n <path\n d={createRoundedRectPath(\n 0,\n svgHeight - animatedHeight,\n svgWidth,\n animatedHeight,\n {\n topLeft: animatedHeight >= svgHeight ? corners.topLeft : 0,\n topRight: animatedHeight >= svgHeight ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: corners.bottomRight,\n }\n )}\n fill={relative.color}\n />\n ) : (\n <path\n d={createRoundedRectPath(\n 0,\n 0,\n animatedWidth,\n svgHeight,\n {\n topLeft: corners.topLeft,\n topRight: animatedWidth >= svgWidth ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: animatedWidth >= svgWidth ? corners.bottomRight : 0,\n }\n )}\n fill={relative.color}\n />\n )}\n </svg>\n </div>\n {children && (\n <div className={`histogram-text-container ${orientation === 'horizontal' ? 'histogram-text-container--horizontal' : ''}`}>\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Avatar.css\";\n\ninterface AvatarProps {\n children: React.ReactNode;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({ children }) => {\n return (\n <div className=\"avatar-container avatar-container--clickable\">\n <div className=\"avatar-content\">{children}</div>\n </div>\n );\n};\n"],"names":["Input","_a","label","_b","value","onChange","_c","type","_d","disabled","_e","className","_f","required","_g","min","_h","max","_j","useState","internalValue","setInternalValue","_k","isFocused","setIsFocused","inputRef","useRef","useEffect","containerClasses","length","filter","Boolean","join","_jsx","children","_jsxs","ref","e","newValue","target","onFocus","onBlur","ImgOn","isOff","width","height","viewBox","fill","xmlns","d","SwitchThumb","cx","cy","r","Switch","checked","showIcon","internalChecked","setInternalChecked","switchClasses","role","onClick","newChecked","Chip","bgColor","textColor","chipClasses","style","backgroundColor","color","ProductionUnit","onChangeInput","onChangeSwitch","defaultValue","defaultChecked","unitName","energyCost","checkedImage","uncheckedImage","readonly","concat","val","numValue","Number","undefined","toString","Histogram","relative","barHeight","barWidth","orientation","cornerRadius","animatedHeight","setAnimatedHeight","animatedWidth","setAnimatedWidth","targetHeight","Math","targetWidth","startTime","Date","now","animate","elapsed","progress","easeOutQuart","pow","requestAnimationFrame","displayWidth","displayHeight","svgWidth","svgHeight","createRoundedRectPath","x","y","radii","topLeft","topRight","bottomLeft","bottomRight","trim","replace","defaultCornerRadius","corners","fillOpacity","opacity","Avatar"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/Chip.tsx","../src/components/ProductionUnit.tsx","../src/components/Histogram.tsx","../src/components/Avatar.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport \"./Input.css\";\n\ninterface InputProps {\n label: string;\n value?: string;\n onChange?: (value: string) => void;\n type?: \"text\" | \"number\";\n disabled?: boolean;\n className?: string;\n required?: boolean;\n min?: { value: number; label?: string };\n max?: { value: number; label?: string };\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n value = \"\",\n onChange,\n type = \"text\",\n disabled = false,\n className = \"\",\n required = false,\n min = { value: 0, label: \"Pmin\" },\n max = { value: 100, label: \"Pmax\" },\n}) => {\n const [internalValue, setInternalValue] = useState(value);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n const isLabelFloating = isFocused || internalValue.length > 0;\n\n const containerClasses = [\n \"input-container\",\n isFocused ? \"input-container--focused\" : \"\",\n isLabelFloating ? \"input-container--floating\" : \"\",\n disabled ? \"input-container--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClasses}>\n <div className=\"input-constraints\">\n <div className=\"input-min\">\n {min.label}\n <br />\n {min.value}\n </div>\n\n <div className=\"input-field\">\n <input\n ref={inputRef}\n type={type}\n value={internalValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n required={required}\n className=\"input-element\"\n aria-label={label}\n />\n <label className=\"input-label\">\n {label}\n {required && <span className=\"input-required\">*</span>}\n </label>\n </div>\n <div className=\"input-max\">\n {max.label}\n <br /> {max.value}\n </div>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./Switch.css\";\n\ninterface OnProps {\n isOff?: boolean;\n}\nconst ImgOn = ({ isOff }: OnProps) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z\"\n fill={isOff ? \"#999FA1\" : \"#009CDF\"}\n />\n </svg>\n);\nconst SwitchThumb = ({ isOff }: OnProps) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"16\" fill={isOff ? \"white\" : \"#009cdf\"} />\n </svg>\n);\n\ninterface SwitchProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n showIcon?: boolean;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onChange,\n disabled = false,\n showIcon = true,\n}) => {\n const [internalChecked, setInternalChecked] = useState(checked);\n\n const handleToggle = () => {\n if (disabled) return;\n\n const newChecked = !internalChecked;\n setInternalChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const switchClasses = [\n \"switch\",\n internalChecked ? \"switch--checked\" : \"\",\n disabled ? \"switch--disabled\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className=\"switch-container\">\n <div className=\"switch-wrapper\">\n {showIcon && (\n <div className=\"switch-icon\">\n <ImgOn isOff={!internalChecked} />\n </div>\n )}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={internalChecked}\n className={switchClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className=\"switch-track\">\n <span className=\"switch-thumb\">\n <SwitchThumb isOff={!internalChecked} />\n </span>\n </span>\n </button>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Chip.css\";\n\ninterface ChipProps {\n // Define any props you want to pass to the Chip component\n label?: string;\n bgColor?: string;\n textColor?: string;\n width?: \"fit-content\" | \"full-width\";\n}\n\nexport const Chip: React.FC<ChipProps> = ({ \n label, \n bgColor, \n textColor, \n width = \"fit-content\" \n}) => {\n const chipClasses = [\n \"chip-container\",\n width === \"full-width\" ? \"chip-container--full-width\" : \"chip-container--fit-content\"\n ].join(\" \");\n\n return (\n <div className={chipClasses} style={{ backgroundColor: bgColor }}>\n <div className=\"chip-content\">\n <p className=\"chip-label\" style={{ color: textColor }}>\n {label}\n </p>\n </div>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { Input } from \"./Input\";\nimport { Switch } from \"./Switch\";\nimport \"./ProductionUnit.css\";\nimport { Chip } from \"./Chip\";\n\ninterface ProductionUnitProps {\n onChangeInput?: (value: number) => void;\n onChangeSwitch?: (checked: boolean) => void;\n defaultValue?: number;\n defaultChecked?: boolean;\n value?: number;\n checked?: boolean;\n unitName?: string;\n energyCost?: number;\n checkedImage?: React.ReactNode;\n uncheckedImage?: React.ReactNode;\n readonly?: boolean;\n}\nexport const ProductionUnit = ({\n onChangeInput,\n onChangeSwitch,\n defaultValue,\n defaultChecked = false,\n value,\n checked,\n unitName = \"Production Unit\",\n energyCost = 0,\n checkedImage,\n uncheckedImage,\n readonly = false,\n}: ProductionUnitProps) => {\n // Internal state management for uncontrolled mode\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const [internalValue, setInternalValue] = useState(defaultValue);\n\n // Use controlled props if provided, otherwise use internal state\n const isChecked = checked !== undefined ? checked : internalChecked;\n const currentValue = value !== undefined ? value : internalValue;\n\n const handleSwitchChange = (newChecked: boolean) => {\n // Update internal state only if uncontrolled\n if (checked === undefined) {\n setInternalChecked(newChecked);\n }\n\n // Notify parent component if handler provided\n if (onChangeSwitch) {\n onChangeSwitch(newChecked);\n }\n };\n\n const handleInputChange = (val: string) => {\n const numValue = Number(val);\n // Update internal state only if uncontrolled\n if (value === undefined) {\n setInternalValue(numValue);\n }\n\n // Notify parent component if handler provided\n if (onChangeInput) {\n onChangeInput(numValue);\n }\n };\n\n return (\n <div className=\"production-unit-container\">\n <div className=\"production-unit-content\">\n <div className=\"image-preview-container\">\n {isChecked ? checkedImage : uncheckedImage}\n </div>\n <div className=\"production-unit-chip\">\n <div className=\"production-unit-chip-name\">{unitName}</div>\n\n <Chip\n label={`${energyCost} MW`}\n width=\"fit-content\"\n bgColor=\"#E1F5FD\"\n textColor=\"#005896\"\n />\n </div>\n <div className=\"production-unit-switch-container\">\n <Input\n label=\"PA\"\n type=\"number\"\n onChange={handleInputChange}\n value={\n currentValue !== undefined ? currentValue.toString() : undefined\n }\n disabled={!isChecked || readonly}\n />{\" \"}\n </div>\n </div>\n\n <Switch\n checked={isChecked}\n onChange={handleSwitchChange}\n disabled={readonly}\n />\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport \"./Histogram.css\";\n\ninterface HistogramProps {\n /** Maximum value configuration with value and color */\n max: {\n value: number;\n color: string;\n opacity?: number;\n };\n /** Relative/current value configuration with value and color */\n relative: {\n value: number;\n color: string;\n };\n /** Height of the histogram bar in pixels */\n barHeight?: number;\n /** Width of the histogram bar in pixels */\n barWidth?: number;\n /** Orientation of the histogram - 'vertical' or 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n /** Corner radius configuration for individual corners */\n cornerRadius?: {\n topLeft?: number;\n topRight?: number;\n bottomLeft?: number;\n bottomRight?: number;\n };\n /** Child components (typically text content) */\n children?: React.ReactNode;\n}\n\nexport const Histogram: React.FC<HistogramProps> = ({\n max,\n relative,\n barHeight = 103,\n barWidth = 32,\n orientation = 'vertical',\n cornerRadius,\n children,\n}) => {\n const [animatedHeight, setAnimatedHeight] = useState(0);\n const [animatedWidth, setAnimatedWidth] = useState(0);\n\n // Calculate target dimensions based on orientation\n const targetHeight = (Math.min((relative.value / max.value) * 100, 100) / 100) * barHeight;\n const targetWidth = (Math.min((relative.value / max.value) * 100, 100) / 100) * barWidth;\n\n // Simple Chart.js-like animation: always animate from 0 to target\n useEffect(() => {\n setAnimatedHeight(0);\n setAnimatedWidth(0);\n \n const startTime = Date.now();\n const duration = 1000;\n\n const animate = () => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Chart.js-like easing (easeOutQuart)\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\n \n setAnimatedHeight(targetHeight * easeOutQuart);\n setAnimatedWidth(targetWidth * easeOutQuart);\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n };\n\n requestAnimationFrame(animate);\n }, [targetHeight, targetWidth]);\n\n const displayWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const displayHeight = orientation === 'horizontal' ? barWidth : barHeight;\n const svgWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const svgHeight = orientation === 'horizontal' ? barWidth : barHeight;\n\n // Helper function to create rounded rectangle path\n const createRoundedRectPath = (\n x: number,\n y: number,\n width: number,\n height: number,\n radii: { topLeft: number; topRight: number; bottomLeft: number; bottomRight: number }\n ) => {\n const { topLeft, topRight, bottomLeft, bottomRight } = radii;\n \n return `\n M ${x + topLeft} ${y}\n L ${x + width - topRight} ${y}\n Q ${x + width} ${y} ${x + width} ${y + topRight}\n L ${x + width} ${y + height - bottomRight}\n Q ${x + width} ${y + height} ${x + width - bottomRight} ${y + height}\n L ${x + bottomLeft} ${y + height}\n Q ${x} ${y + height} ${x} ${y + height - bottomLeft}\n L ${x} ${y + topLeft}\n Q ${x} ${y} ${x + topLeft} ${y}\n Z\n `.trim().replace(/\\s+/g, ' ');\n };\n\n // Default corner radius values\n const defaultCornerRadius = { topLeft: 2, topRight: 2, bottomLeft: 2, bottomRight: 2 };\n const corners = cornerRadius ? {\n topLeft: cornerRadius.topLeft ?? defaultCornerRadius.topLeft,\n topRight: cornerRadius.topRight ?? defaultCornerRadius.topRight,\n bottomLeft: cornerRadius.bottomLeft ?? defaultCornerRadius.bottomLeft,\n bottomRight: cornerRadius.bottomRight ?? defaultCornerRadius.bottomRight,\n } : defaultCornerRadius;\n\n return (\n <div className={`histogram-container ${orientation === 'horizontal' ? 'histogram-container--horizontal' : ''}`}>\n <div className={`histogram-content ${orientation === 'horizontal' ? 'histogram-content--horizontal' : ''}`}>\n <div \n className=\"histogram-bar\"\n style={{\n height: `${displayHeight}px`,\n width: `${displayWidth}px`\n }}\n >\n <svg\n width={svgWidth}\n height={svgHeight}\n viewBox={`0 0 ${svgWidth} ${svgHeight}`}\n className=\"histogram-svg\"\n >\n {/* Background bar (max value) */}\n <path\n d={createRoundedRectPath(0, 0, svgWidth, svgHeight, corners)}\n fill={max.color}\n fillOpacity={max.opacity || 1}\n />\n {/* Foreground bar (relative value) with animation */}\n {orientation === 'vertical' ? (\n <path\n d={createRoundedRectPath(\n 0,\n svgHeight - animatedHeight,\n svgWidth,\n animatedHeight,\n {\n topLeft: animatedHeight >= svgHeight ? corners.topLeft : 0,\n topRight: animatedHeight >= svgHeight ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: corners.bottomRight,\n }\n )}\n fill={relative.color}\n />\n ) : (\n <path\n d={createRoundedRectPath(\n 0,\n 0,\n animatedWidth,\n svgHeight,\n {\n topLeft: corners.topLeft,\n topRight: animatedWidth >= svgWidth ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: animatedWidth >= svgWidth ? corners.bottomRight : 0,\n }\n )}\n fill={relative.color}\n />\n )}\n </svg>\n </div>\n {children && (\n <div className={`histogram-text-container ${orientation === 'horizontal' ? 'histogram-text-container--horizontal' : ''}`}>\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Avatar.css\";\n\ninterface AvatarProps {\n children: React.ReactNode;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({ children }) => {\n return (\n <div className=\"avatar-container avatar-container--clickable\">\n <div className=\"avatar-content\">{children}</div>\n </div>\n );\n};\n"],"names":["Input","_a","label","_b","value","onChange","_c","type","_d","disabled","_e","className","_f","required","_g","min","_h","max","_j","useState","internalValue","setInternalValue","_k","isFocused","setIsFocused","inputRef","useRef","useEffect","containerClasses","length","filter","Boolean","join","_jsx","children","_jsxs","ref","e","newValue","target","onFocus","onBlur","ImgOn","isOff","width","height","viewBox","fill","xmlns","d","SwitchThumb","cx","cy","r","Switch","checked","showIcon","internalChecked","setInternalChecked","switchClasses","role","onClick","newChecked","Chip","bgColor","textColor","chipClasses","style","backgroundColor","color","ProductionUnit","onChangeInput","onChangeSwitch","defaultValue","defaultChecked","unitName","energyCost","checkedImage","uncheckedImage","readonly","isChecked","undefined","currentValue","concat","val","numValue","Number","toString","Histogram","relative","barHeight","barWidth","orientation","cornerRadius","animatedHeight","setAnimatedHeight","animatedWidth","setAnimatedWidth","targetHeight","Math","targetWidth","startTime","Date","now","animate","elapsed","progress","easeOutQuart","pow","requestAnimationFrame","displayWidth","displayHeight","svgWidth","svgHeight","createRoundedRectPath","x","y","radii","topLeft","topRight","bottomLeft","bottomRight","trim","replace","defaultCornerRadius","corners","fillOpacity","opacity","Avatar"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("react/jsx-runtime"),i=require("react"),n=function(n){var e=n.label,o=n.value,a=void 0===o?"":o,c=n.onChange,s=n.type,l=void 0===s?"text":s,r=n.disabled,h=void 0!==r&&r,d=n.className,u=void 0===d?"":d,v=n.required,m=void 0!==v&&v,p=n.min,f=void 0===p?{value:0,label:"Pmin"}:p,x=n.max,g=void 0===x?{value:100,label:"Pmax"}:x,b=i.useState(a),j=b[0],w=b[1],C=i.useState(!1),N=C[0],L=C[1],R=i.useRef(null);i.useEffect(function(){w(a)},[a]);var y=["input-container",N?"input-container--focused":"",N||j.length>0?"input-container--floating":"",h?"input-container--disabled":"",u].filter(Boolean).join(" ");return t.jsx("div",{className:y,children:t.jsxs("div",{className:"input-constraints",children:[t.jsxs("div",{className:"input-min",children:[f.label,t.jsx("br",{}),f.value]}),t.jsxs("div",{className:"input-field",children:[t.jsx("input",{ref:R,type:l,value:j,onChange:function(t){var i=t.target.value;w(i),null==c||c(i)},onFocus:function(){L(!0)},onBlur:function(){L(!1)},disabled:h,required:m,className:"input-element","aria-label":e}),t.jsxs("label",{className:"input-label",children:[e,m&&t.jsx("span",{className:"input-required",children:"*"})]})]}),t.jsxs("div",{className:"input-max",children:[g.label,t.jsx("br",{})," ",g.value]})]})})},e=function(i){var n=i.isOff;return t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z",fill:n?"#999FA1":"#009CDF"})})},o=function(i){var n=i.isOff;return t.jsx("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("circle",{cx:"16",cy:"16",r:"16",fill:n?"white":"#009cdf"})})},a=function(n){var a=n.checked,c=void 0!==a&&a,s=n.onChange,l=n.disabled,r=void 0!==l&&l,h=n.showIcon,d=void 0===h||h,u=i.useState(c),v=u[0],m=u[1],p=["switch",v?"switch--checked":"",r?"switch--disabled":""].filter(Boolean).join(" ");return t.jsx("div",{className:"switch-container",children:t.jsxs("div",{className:"switch-wrapper",children:[d&&t.jsx("div",{className:"switch-icon",children:t.jsx(e,{isOff:!v})}),t.jsx("button",{type:"button",role:"switch","aria-checked":v,className:p,onClick:function(){if(!r){var t=!v;m(t),null==s||s(t)}},disabled:r,children:t.jsx("span",{className:"switch-track",children:t.jsx("span",{className:"switch-thumb",children:t.jsx(o,{isOff:!v})})})})]})})},c=function(i){var n=i.label,e=i.bgColor,o=i.textColor,a=i.width,c=["chip-container","full-width"===(void 0===a?"fit-content":a)?"chip-container--full-width":"chip-container--fit-content"].join(" ");return t.jsx("div",{className:c,style:{backgroundColor:e},children:t.jsx("div",{className:"chip-content",children:t.jsx("p",{className:"chip-label",style:{color:o},children:n})})})};exports.Avatar=function(i){var n=i.children;return t.jsx("div",{className:"avatar-container avatar-container--clickable",children:t.jsx("div",{className:"avatar-content",children:n})})},exports.Chip=c,exports.Histogram=function(n){var e,o,a,c,s=n.max,l=n.relative,r=n.barHeight,h=void 0===r?103:r,d=n.barWidth,u=void 0===d?32:d,v=n.orientation,m=void 0===v?"vertical":v,p=n.cornerRadius,f=n.children,x=i.useState(0),g=x[0],b=x[1],j=i.useState(0),w=j[0],C=j[1],N=Math.min(l.value/s.value*100,100)/100*h,L=Math.min(l.value/s.value*100,100)/100*u;i.useEffect(function(){b(0),C(0);var t=Date.now(),i=function(){var n=Date.now()-t,e=Math.min(n/1e3,1),o=1-Math.pow(1-e,4);b(N*o),C(L*o),e<1&&requestAnimationFrame(i)};requestAnimationFrame(i)},[N,L]);var R="horizontal"===m?h:u,y="horizontal"===m?u:h,k="horizontal"===m?h:u,z="horizontal"===m?u:h,S=function(t,i,n,e,o){var a=o.topLeft,c=o.topRight,s=o.bottomLeft,l=o.bottomRight;return"\n M ".concat(t+a," ").concat(i,"\n L ").concat(t+n-c," ").concat(i,"\n Q ").concat(t+n," ").concat(i," ").concat(t+n," ").concat(i+c,"\n L ").concat(t+n," ").concat(i+e-l,"\n Q ").concat(t+n," ").concat(i+e," ").concat(t+n-l," ").concat(i+e,"\n L ").concat(t+s," ").concat(i+e,"\n Q ").concat(t," ").concat(i+e," ").concat(t," ").concat(i+e-s,"\n L ").concat(t," ").concat(i+a,"\n Q ").concat(t," ").concat(i," ").concat(t+a," ").concat(i,"\n Z\n ").trim().replace(/\s+/g," ")},M={topLeft:2,topRight:2,bottomLeft:2,bottomRight:2},q=p?{topLeft:null!==(e=p.topLeft)&&void 0!==e?e:M.topLeft,topRight:null!==(o=p.topRight)&&void 0!==o?o:M.topRight,bottomLeft:null!==(a=p.bottomLeft)&&void 0!==a?a:M.bottomLeft,bottomRight:null!==(c=p.bottomRight)&&void 0!==c?c:M.bottomRight}:M;return t.jsx("div",{className:"histogram-container ".concat("horizontal"===m?"histogram-container--horizontal":""),children:t.jsxs("div",{className:"histogram-content ".concat("horizontal"===m?"histogram-content--horizontal":""),children:[t.jsx("div",{className:"histogram-bar",style:{height:"".concat(y,"px"),width:"".concat(R,"px")},children:t.jsxs("svg",{width:k,height:z,viewBox:"0 0 ".concat(k," ").concat(z),className:"histogram-svg",children:[t.jsx("path",{d:S(0,0,k,z,q),fill:s.color,fillOpacity:s.opacity||1}),"vertical"===m?t.jsx("path",{d:S(0,z-g,k,g,{topLeft:g>=z?q.topLeft:0,topRight:g>=z?q.topRight:0,bottomLeft:q.bottomLeft,bottomRight:q.bottomRight}),fill:l.color}):t.jsx("path",{d:S(0,0,w,z,{topLeft:q.topLeft,topRight:w>=k?q.topRight:0,bottomLeft:q.bottomLeft,bottomRight:w>=k?q.bottomRight:0}),fill:l.color})]})}),f&&t.jsx("div",{className:"histogram-text-container ".concat("horizontal"===m?"histogram-text-container--horizontal":""),children:f})]})})},exports.Input=n,exports.ProductionUnit=function(e){var o=e.onChangeInput,s=e.onChangeSwitch,l=e.defaultValue,r=e.defaultChecked,h=void 0!==r&&r,d=e.unitName,u=void 0===d?"Production Unit":d,v=e.energyCost,m=void 0===v?0:v,p=e.checkedImage,f=e.uncheckedImage,x=e.readonly,g=void 0!==x&&x,b=i.useState(h),j=b[0],w=b[1],C=i.useState(l),N=C[0],L=C[1];return t.jsxs("div",{className:"production-unit-container",children:[t.jsxs("div",{className:"production-unit-content",children:[t.jsx("div",{className:"image-preview-container",children:j?p:f}),t.jsxs("div",{className:"production-unit-chip",children:[t.jsx("div",{className:"production-unit-chip-name",children:u}),t.jsx(c,{label:"".concat(m," MW"),width:"fit-content",bgColor:"#E1F5FD",textColor:"#005896"})]}),t.jsxs("div",{className:"production-unit-switch-container",children:[t.jsx(n,{label:"PA",type:"number",onChange:function(t){var i=Number(t);L(i),o&&o(i)},value:void 0!==N?N.toString():void 0,disabled:!j||g})," "]})]}),t.jsx(a,{checked:j,onChange:function(t){w(t),s&&s(t)},disabled:g})]})},exports.Switch=a;
1
+ "use strict";var t=require("react/jsx-runtime"),i=require("react"),e=function(e){var n=e.label,o=e.value,a=void 0===o?"":o,c=e.onChange,s=e.type,l=void 0===s?"text":s,r=e.disabled,d=void 0!==r&&r,h=e.className,u=void 0===h?"":h,v=e.required,m=void 0!==v&&v,p=e.min,f=void 0===p?{value:0,label:"Pmin"}:p,x=e.max,g=void 0===x?{value:100,label:"Pmax"}:x,b=i.useState(a),j=b[0],w=b[1],C=i.useState(!1),N=C[0],L=C[1],R=i.useRef(null);i.useEffect(function(){w(a)},[a]);var k=["input-container",N?"input-container--focused":"",N||j.length>0?"input-container--floating":"",d?"input-container--disabled":"",u].filter(Boolean).join(" ");return t.jsx("div",{className:k,children:t.jsxs("div",{className:"input-constraints",children:[t.jsxs("div",{className:"input-min",children:[f.label,t.jsx("br",{}),f.value]}),t.jsxs("div",{className:"input-field",children:[t.jsx("input",{ref:R,type:l,value:j,onChange:function(t){var i=t.target.value;w(i),null==c||c(i)},onFocus:function(){L(!0)},onBlur:function(){L(!1)},disabled:d,required:m,className:"input-element","aria-label":n}),t.jsxs("label",{className:"input-label",children:[n,m&&t.jsx("span",{className:"input-required",children:"*"})]})]}),t.jsxs("div",{className:"input-max",children:[g.label,t.jsx("br",{})," ",g.value]})]})})},n=function(i){var e=i.isOff;return t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z",fill:e?"#999FA1":"#009CDF"})})},o=function(i){var e=i.isOff;return t.jsx("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("circle",{cx:"16",cy:"16",r:"16",fill:e?"white":"#009cdf"})})},a=function(e){var a=e.checked,c=void 0!==a&&a,s=e.onChange,l=e.disabled,r=void 0!==l&&l,d=e.showIcon,h=void 0===d||d,u=i.useState(c),v=u[0],m=u[1],p=["switch",v?"switch--checked":"",r?"switch--disabled":""].filter(Boolean).join(" ");return t.jsx("div",{className:"switch-container",children:t.jsxs("div",{className:"switch-wrapper",children:[h&&t.jsx("div",{className:"switch-icon",children:t.jsx(n,{isOff:!v})}),t.jsx("button",{type:"button",role:"switch","aria-checked":v,className:p,onClick:function(){if(!r){var t=!v;m(t),null==s||s(t)}},disabled:r,children:t.jsx("span",{className:"switch-track",children:t.jsx("span",{className:"switch-thumb",children:t.jsx(o,{isOff:!v})})})})]})})},c=function(i){var e=i.label,n=i.bgColor,o=i.textColor,a=i.width,c=["chip-container","full-width"===(void 0===a?"fit-content":a)?"chip-container--full-width":"chip-container--fit-content"].join(" ");return t.jsx("div",{className:c,style:{backgroundColor:n},children:t.jsx("div",{className:"chip-content",children:t.jsx("p",{className:"chip-label",style:{color:o},children:e})})})};exports.Avatar=function(i){var e=i.children;return t.jsx("div",{className:"avatar-container avatar-container--clickable",children:t.jsx("div",{className:"avatar-content",children:e})})},exports.Chip=c,exports.Histogram=function(e){var n,o,a,c,s=e.max,l=e.relative,r=e.barHeight,d=void 0===r?103:r,h=e.barWidth,u=void 0===h?32:h,v=e.orientation,m=void 0===v?"vertical":v,p=e.cornerRadius,f=e.children,x=i.useState(0),g=x[0],b=x[1],j=i.useState(0),w=j[0],C=j[1],N=Math.min(l.value/s.value*100,100)/100*d,L=Math.min(l.value/s.value*100,100)/100*u;i.useEffect(function(){b(0),C(0);var t=Date.now(),i=function(){var e=Date.now()-t,n=Math.min(e/1e3,1),o=1-Math.pow(1-n,4);b(N*o),C(L*o),n<1&&requestAnimationFrame(i)};requestAnimationFrame(i)},[N,L]);var R="horizontal"===m?d:u,k="horizontal"===m?u:d,y="horizontal"===m?d:u,z="horizontal"===m?u:d,S=function(t,i,e,n,o){var a=o.topLeft,c=o.topRight,s=o.bottomLeft,l=o.bottomRight;return"\n M ".concat(t+a," ").concat(i,"\n L ").concat(t+e-c," ").concat(i,"\n Q ").concat(t+e," ").concat(i," ").concat(t+e," ").concat(i+c,"\n L ").concat(t+e," ").concat(i+n-l,"\n Q ").concat(t+e," ").concat(i+n," ").concat(t+e-l," ").concat(i+n,"\n L ").concat(t+s," ").concat(i+n,"\n Q ").concat(t," ").concat(i+n," ").concat(t," ").concat(i+n-s,"\n L ").concat(t," ").concat(i+a,"\n Q ").concat(t," ").concat(i," ").concat(t+a," ").concat(i,"\n Z\n ").trim().replace(/\s+/g," ")},M={topLeft:2,topRight:2,bottomLeft:2,bottomRight:2},q=p?{topLeft:null!==(n=p.topLeft)&&void 0!==n?n:M.topLeft,topRight:null!==(o=p.topRight)&&void 0!==o?o:M.topRight,bottomLeft:null!==(a=p.bottomLeft)&&void 0!==a?a:M.bottomLeft,bottomRight:null!==(c=p.bottomRight)&&void 0!==c?c:M.bottomRight}:M;return t.jsx("div",{className:"histogram-container ".concat("horizontal"===m?"histogram-container--horizontal":""),children:t.jsxs("div",{className:"histogram-content ".concat("horizontal"===m?"histogram-content--horizontal":""),children:[t.jsx("div",{className:"histogram-bar",style:{height:"".concat(k,"px"),width:"".concat(R,"px")},children:t.jsxs("svg",{width:y,height:z,viewBox:"0 0 ".concat(y," ").concat(z),className:"histogram-svg",children:[t.jsx("path",{d:S(0,0,y,z,q),fill:s.color,fillOpacity:s.opacity||1}),"vertical"===m?t.jsx("path",{d:S(0,z-g,y,g,{topLeft:g>=z?q.topLeft:0,topRight:g>=z?q.topRight:0,bottomLeft:q.bottomLeft,bottomRight:q.bottomRight}),fill:l.color}):t.jsx("path",{d:S(0,0,w,z,{topLeft:q.topLeft,topRight:w>=y?q.topRight:0,bottomLeft:q.bottomLeft,bottomRight:w>=y?q.bottomRight:0}),fill:l.color})]})}),f&&t.jsx("div",{className:"histogram-text-container ".concat("horizontal"===m?"histogram-text-container--horizontal":""),children:f})]})})},exports.Input=e,exports.ProductionUnit=function(n){var o=n.onChangeInput,s=n.onChangeSwitch,l=n.defaultValue,r=n.defaultChecked,d=void 0!==r&&r,h=n.value,u=n.checked,v=n.unitName,m=void 0===v?"Production Unit":v,p=n.energyCost,f=void 0===p?0:p,x=n.checkedImage,g=n.uncheckedImage,b=n.readonly,j=void 0!==b&&b,w=i.useState(d),C=w[0],N=w[1],L=i.useState(l),R=L[0],k=L[1],y=void 0!==u?u:C,z=void 0!==h?h:R;return t.jsxs("div",{className:"production-unit-container",children:[t.jsxs("div",{className:"production-unit-content",children:[t.jsx("div",{className:"image-preview-container",children:y?x:g}),t.jsxs("div",{className:"production-unit-chip",children:[t.jsx("div",{className:"production-unit-chip-name",children:m}),t.jsx(c,{label:"".concat(f," MW"),width:"fit-content",bgColor:"#E1F5FD",textColor:"#005896"})]}),t.jsxs("div",{className:"production-unit-switch-container",children:[t.jsx(e,{label:"PA",type:"number",onChange:function(t){var i=Number(t);void 0===h&&k(i),o&&o(i)},value:void 0!==z?z.toString():void 0,disabled:!y||j})," "]})]}),t.jsx(a,{checked:y,onChange:function(t){void 0===u&&N(t),s&&s(t)},disabled:j})]})},exports.Switch=a;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/Chip.tsx","../src/components/Avatar.tsx","../src/components/Histogram.tsx","../src/components/ProductionUnit.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport \"./Input.css\";\n\ninterface InputProps {\n label: string;\n value?: string;\n onChange?: (value: string) => void;\n type?: \"text\" | \"number\";\n disabled?: boolean;\n className?: string;\n required?: boolean;\n min?: { value: number; label?: string };\n max?: { value: number; label?: string };\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n value = \"\",\n onChange,\n type = \"text\",\n disabled = false,\n className = \"\",\n required = false,\n min = { value: 0, label: \"Pmin\" },\n max = { value: 100, label: \"Pmax\" },\n}) => {\n const [internalValue, setInternalValue] = useState(value);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n const isLabelFloating = isFocused || internalValue.length > 0;\n\n const containerClasses = [\n \"input-container\",\n isFocused ? \"input-container--focused\" : \"\",\n isLabelFloating ? \"input-container--floating\" : \"\",\n disabled ? \"input-container--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClasses}>\n <div className=\"input-constraints\">\n <div className=\"input-min\">\n {min.label}\n <br />\n {min.value}\n </div>\n\n <div className=\"input-field\">\n <input\n ref={inputRef}\n type={type}\n value={internalValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n required={required}\n className=\"input-element\"\n aria-label={label}\n />\n <label className=\"input-label\">\n {label}\n {required && <span className=\"input-required\">*</span>}\n </label>\n </div>\n <div className=\"input-max\">\n {max.label}\n <br /> {max.value}\n </div>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./Switch.css\";\n\ninterface OnProps {\n isOff?: boolean;\n}\nconst ImgOn = ({ isOff }: OnProps) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z\"\n fill={isOff ? \"#999FA1\" : \"#009CDF\"}\n />\n </svg>\n);\nconst SwitchThumb = ({ isOff }: OnProps) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"16\" fill={isOff ? \"white\" : \"#009cdf\"} />\n </svg>\n);\n\ninterface SwitchProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n showIcon?: boolean;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onChange,\n disabled = false,\n showIcon = true,\n}) => {\n const [internalChecked, setInternalChecked] = useState(checked);\n\n const handleToggle = () => {\n if (disabled) return;\n\n const newChecked = !internalChecked;\n setInternalChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const switchClasses = [\n \"switch\",\n internalChecked ? \"switch--checked\" : \"\",\n disabled ? \"switch--disabled\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className=\"switch-container\">\n <div className=\"switch-wrapper\">\n {showIcon && (\n <div className=\"switch-icon\">\n <ImgOn isOff={!internalChecked} />\n </div>\n )}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={internalChecked}\n className={switchClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className=\"switch-track\">\n <span className=\"switch-thumb\">\n <SwitchThumb isOff={!internalChecked} />\n </span>\n </span>\n </button>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Chip.css\";\n\ninterface ChipProps {\n // Define any props you want to pass to the Chip component\n label?: string;\n bgColor?: string;\n textColor?: string;\n width?: \"fit-content\" | \"full-width\";\n}\n\nexport const Chip: React.FC<ChipProps> = ({ \n label, \n bgColor, \n textColor, \n width = \"fit-content\" \n}) => {\n const chipClasses = [\n \"chip-container\",\n width === \"full-width\" ? \"chip-container--full-width\" : \"chip-container--fit-content\"\n ].join(\" \");\n\n return (\n <div className={chipClasses} style={{ backgroundColor: bgColor }}>\n <div className=\"chip-content\">\n <p className=\"chip-label\" style={{ color: textColor }}>\n {label}\n </p>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Avatar.css\";\n\ninterface AvatarProps {\n children: React.ReactNode;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({ children }) => {\n return (\n <div className=\"avatar-container avatar-container--clickable\">\n <div className=\"avatar-content\">{children}</div>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport \"./Histogram.css\";\n\ninterface HistogramProps {\n /** Maximum value configuration with value and color */\n max: {\n value: number;\n color: string;\n opacity?: number;\n };\n /** Relative/current value configuration with value and color */\n relative: {\n value: number;\n color: string;\n };\n /** Height of the histogram bar in pixels */\n barHeight?: number;\n /** Width of the histogram bar in pixels */\n barWidth?: number;\n /** Orientation of the histogram - 'vertical' or 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n /** Corner radius configuration for individual corners */\n cornerRadius?: {\n topLeft?: number;\n topRight?: number;\n bottomLeft?: number;\n bottomRight?: number;\n };\n /** Child components (typically text content) */\n children?: React.ReactNode;\n}\n\nexport const Histogram: React.FC<HistogramProps> = ({\n max,\n relative,\n barHeight = 103,\n barWidth = 32,\n orientation = 'vertical',\n cornerRadius,\n children,\n}) => {\n const [animatedHeight, setAnimatedHeight] = useState(0);\n const [animatedWidth, setAnimatedWidth] = useState(0);\n\n // Calculate target dimensions based on orientation\n const targetHeight = (Math.min((relative.value / max.value) * 100, 100) / 100) * barHeight;\n const targetWidth = (Math.min((relative.value / max.value) * 100, 100) / 100) * barWidth;\n\n // Simple Chart.js-like animation: always animate from 0 to target\n useEffect(() => {\n setAnimatedHeight(0);\n setAnimatedWidth(0);\n \n const startTime = Date.now();\n const duration = 1000;\n\n const animate = () => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Chart.js-like easing (easeOutQuart)\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\n \n setAnimatedHeight(targetHeight * easeOutQuart);\n setAnimatedWidth(targetWidth * easeOutQuart);\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n };\n\n requestAnimationFrame(animate);\n }, [targetHeight, targetWidth]);\n\n const displayWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const displayHeight = orientation === 'horizontal' ? barWidth : barHeight;\n const svgWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const svgHeight = orientation === 'horizontal' ? barWidth : barHeight;\n\n // Helper function to create rounded rectangle path\n const createRoundedRectPath = (\n x: number,\n y: number,\n width: number,\n height: number,\n radii: { topLeft: number; topRight: number; bottomLeft: number; bottomRight: number }\n ) => {\n const { topLeft, topRight, bottomLeft, bottomRight } = radii;\n \n return `\n M ${x + topLeft} ${y}\n L ${x + width - topRight} ${y}\n Q ${x + width} ${y} ${x + width} ${y + topRight}\n L ${x + width} ${y + height - bottomRight}\n Q ${x + width} ${y + height} ${x + width - bottomRight} ${y + height}\n L ${x + bottomLeft} ${y + height}\n Q ${x} ${y + height} ${x} ${y + height - bottomLeft}\n L ${x} ${y + topLeft}\n Q ${x} ${y} ${x + topLeft} ${y}\n Z\n `.trim().replace(/\\s+/g, ' ');\n };\n\n // Default corner radius values\n const defaultCornerRadius = { topLeft: 2, topRight: 2, bottomLeft: 2, bottomRight: 2 };\n const corners = cornerRadius ? {\n topLeft: cornerRadius.topLeft ?? defaultCornerRadius.topLeft,\n topRight: cornerRadius.topRight ?? defaultCornerRadius.topRight,\n bottomLeft: cornerRadius.bottomLeft ?? defaultCornerRadius.bottomLeft,\n bottomRight: cornerRadius.bottomRight ?? defaultCornerRadius.bottomRight,\n } : defaultCornerRadius;\n\n return (\n <div className={`histogram-container ${orientation === 'horizontal' ? 'histogram-container--horizontal' : ''}`}>\n <div className={`histogram-content ${orientation === 'horizontal' ? 'histogram-content--horizontal' : ''}`}>\n <div \n className=\"histogram-bar\"\n style={{\n height: `${displayHeight}px`,\n width: `${displayWidth}px`\n }}\n >\n <svg\n width={svgWidth}\n height={svgHeight}\n viewBox={`0 0 ${svgWidth} ${svgHeight}`}\n className=\"histogram-svg\"\n >\n {/* Background bar (max value) */}\n <path\n d={createRoundedRectPath(0, 0, svgWidth, svgHeight, corners)}\n fill={max.color}\n fillOpacity={max.opacity || 1}\n />\n {/* Foreground bar (relative value) with animation */}\n {orientation === 'vertical' ? (\n <path\n d={createRoundedRectPath(\n 0,\n svgHeight - animatedHeight,\n svgWidth,\n animatedHeight,\n {\n topLeft: animatedHeight >= svgHeight ? corners.topLeft : 0,\n topRight: animatedHeight >= svgHeight ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: corners.bottomRight,\n }\n )}\n fill={relative.color}\n />\n ) : (\n <path\n d={createRoundedRectPath(\n 0,\n 0,\n animatedWidth,\n svgHeight,\n {\n topLeft: corners.topLeft,\n topRight: animatedWidth >= svgWidth ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: animatedWidth >= svgWidth ? corners.bottomRight : 0,\n }\n )}\n fill={relative.color}\n />\n )}\n </svg>\n </div>\n {children && (\n <div className={`histogram-text-container ${orientation === 'horizontal' ? 'histogram-text-container--horizontal' : ''}`}>\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { Input } from \"./Input\";\nimport { Switch } from \"./Switch\";\nimport \"./ProductionUnit.css\";\nimport { Chip } from \"./Chip\";\n\ninterface ProductionUnitProps {\n onChangeInput?: (value: number) => void;\n onChangeSwitch?: (checked: boolean) => void;\n defaultValue?: number;\n defaultChecked?: boolean;\n unitName?: string;\n energyCost?: number;\n checkedImage?: React.ReactNode;\n uncheckedImage?: React.ReactNode;\n readonly?: boolean;\n}\nexport const ProductionUnit = ({\n onChangeInput,\n onChangeSwitch,\n defaultValue,\n defaultChecked = false,\n unitName = \"Production Unit\",\n energyCost = 0,\n checkedImage,\n uncheckedImage,\n readonly = false,\n}: ProductionUnitProps) => {\n // Internal state management\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const [internalValue, setInternalValue] = useState(defaultValue);\n\n const handleSwitchChange = (newChecked: boolean) => {\n // Update internal state\n setInternalChecked(newChecked);\n\n // Notify parent component if handler provided\n if (onChangeSwitch) {\n onChangeSwitch(newChecked);\n }\n };\n\n const handleInputChange = (val: string) => {\n const numValue = Number(val);\n // Update internal state\n setInternalValue(numValue);\n\n // Notify parent component if handler provided\n if (onChangeInput) {\n onChangeInput(numValue);\n }\n };\n\n return (\n <div className=\"production-unit-container\">\n <div className=\"production-unit-content\">\n <div className=\"image-preview-container\">\n {internalChecked ? checkedImage : uncheckedImage}\n </div>\n <div className=\"production-unit-chip\">\n <div className=\"production-unit-chip-name\">{unitName}</div>\n\n <Chip\n label={`${energyCost} MW`}\n width=\"fit-content\"\n bgColor=\"#E1F5FD\"\n textColor=\"#005896\"\n />\n </div>\n <div className=\"production-unit-switch-container\">\n <Input\n label=\"PA\"\n type=\"number\"\n onChange={handleInputChange}\n value={\n internalValue !== undefined ? internalValue.toString() : undefined\n }\n disabled={!internalChecked || readonly}\n />{\" \"}\n </div>\n </div>\n\n <Switch\n checked={internalChecked}\n onChange={handleSwitchChange}\n disabled={readonly}\n />\n </div>\n );\n};\n"],"names":["Input","_a","label","_b","value","onChange","_c","type","_d","disabled","_e","className","_f","required","_g","min","_h","max","_j","useState","internalValue","setInternalValue","_k","isFocused","setIsFocused","inputRef","useRef","useEffect","containerClasses","length","filter","Boolean","join","_jsx","children","_jsxs","jsx","ref","e","newValue","target","onFocus","onBlur","jsxs","ImgOn","isOff","width","height","viewBox","fill","xmlns","d","SwitchThumb","cx","cy","r","Switch","checked","showIcon","internalChecked","setInternalChecked","switchClasses","role","onClick","newChecked","Chip","bgColor","textColor","chipClasses","style","backgroundColor","color","relative","barHeight","barWidth","orientation","cornerRadius","animatedHeight","setAnimatedHeight","animatedWidth","setAnimatedWidth","targetHeight","Math","targetWidth","startTime","Date","now","animate","elapsed","progress","easeOutQuart","pow","requestAnimationFrame","displayWidth","displayHeight","svgWidth","svgHeight","createRoundedRectPath","x","y","radii","topLeft","topRight","bottomLeft","bottomRight","concat","trim","replace","defaultCornerRadius","corners","fillOpacity","opacity","onChangeInput","onChangeSwitch","defaultValue","defaultChecked","unitName","energyCost","checkedImage","uncheckedImage","readonly","val","numValue","Number","undefined","toString"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/Chip.tsx","../src/components/Avatar.tsx","../src/components/Histogram.tsx","../src/components/ProductionUnit.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport \"./Input.css\";\n\ninterface InputProps {\n label: string;\n value?: string;\n onChange?: (value: string) => void;\n type?: \"text\" | \"number\";\n disabled?: boolean;\n className?: string;\n required?: boolean;\n min?: { value: number; label?: string };\n max?: { value: number; label?: string };\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n value = \"\",\n onChange,\n type = \"text\",\n disabled = false,\n className = \"\",\n required = false,\n min = { value: 0, label: \"Pmin\" },\n max = { value: 100, label: \"Pmax\" },\n}) => {\n const [internalValue, setInternalValue] = useState(value);\n const [isFocused, setIsFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n const isLabelFloating = isFocused || internalValue.length > 0;\n\n const containerClasses = [\n \"input-container\",\n isFocused ? \"input-container--focused\" : \"\",\n isLabelFloating ? \"input-container--floating\" : \"\",\n disabled ? \"input-container--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={containerClasses}>\n <div className=\"input-constraints\">\n <div className=\"input-min\">\n {min.label}\n <br />\n {min.value}\n </div>\n\n <div className=\"input-field\">\n <input\n ref={inputRef}\n type={type}\n value={internalValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n required={required}\n className=\"input-element\"\n aria-label={label}\n />\n <label className=\"input-label\">\n {label}\n {required && <span className=\"input-required\">*</span>}\n </label>\n </div>\n <div className=\"input-max\">\n {max.label}\n <br /> {max.value}\n </div>\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./Switch.css\";\n\ninterface OnProps {\n isOff?: boolean;\n}\nconst ImgOn = ({ isOff }: OnProps) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.56529 2.85352C9.66365 2.57607 9.96837 2.43116 10.246 2.5293C13.4295 3.65507 15.3392 6.91015 14.7684 10.2383C14.1974 13.5667 11.3114 16 7.93443 16C4.55739 16 1.67151 13.5667 1.10045 10.2383C0.5296 6.91011 2.4393 3.65504 5.62291 2.5293C5.9005 2.43115 6.20523 2.57605 6.30357 2.85352C6.40176 3.13124 6.2561 3.43599 5.97838 3.53418C3.28438 4.48672 1.669 7.2423 2.1522 10.0586C2.63557 12.8747 5.07706 14.9336 7.93443 14.9336C10.7918 14.9336 13.2333 12.8747 13.7167 10.0586C14.1999 7.24233 12.5844 4.48676 9.89049 3.53418C9.61276 3.43599 9.4671 3.13124 9.56529 2.85352ZM7.93443 0C8.22892 3.10447e-05 8.46754 0.238727 8.46763 0.533203V7.4668C8.46763 7.76135 8.22898 8.00095 7.93443 8.00098C7.63986 8.00098 7.40123 7.76137 7.40123 7.4668V0.533203C7.40132 0.238707 7.63991 0 7.93443 0Z\"\n fill={isOff ? \"#999FA1\" : \"#009CDF\"}\n />\n </svg>\n);\nconst SwitchThumb = ({ isOff }: OnProps) => (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"16\" cy=\"16\" r=\"16\" fill={isOff ? \"white\" : \"#009cdf\"} />\n </svg>\n);\n\ninterface SwitchProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n showIcon?: boolean;\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n checked = false,\n onChange,\n disabled = false,\n showIcon = true,\n}) => {\n const [internalChecked, setInternalChecked] = useState(checked);\n\n const handleToggle = () => {\n if (disabled) return;\n\n const newChecked = !internalChecked;\n setInternalChecked(newChecked);\n onChange?.(newChecked);\n };\n\n const switchClasses = [\n \"switch\",\n internalChecked ? \"switch--checked\" : \"\",\n disabled ? \"switch--disabled\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className=\"switch-container\">\n <div className=\"switch-wrapper\">\n {showIcon && (\n <div className=\"switch-icon\">\n <ImgOn isOff={!internalChecked} />\n </div>\n )}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={internalChecked}\n className={switchClasses}\n onClick={handleToggle}\n disabled={disabled}\n >\n <span className=\"switch-track\">\n <span className=\"switch-thumb\">\n <SwitchThumb isOff={!internalChecked} />\n </span>\n </span>\n </button>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Chip.css\";\n\ninterface ChipProps {\n // Define any props you want to pass to the Chip component\n label?: string;\n bgColor?: string;\n textColor?: string;\n width?: \"fit-content\" | \"full-width\";\n}\n\nexport const Chip: React.FC<ChipProps> = ({ \n label, \n bgColor, \n textColor, \n width = \"fit-content\" \n}) => {\n const chipClasses = [\n \"chip-container\",\n width === \"full-width\" ? \"chip-container--full-width\" : \"chip-container--fit-content\"\n ].join(\" \");\n\n return (\n <div className={chipClasses} style={{ backgroundColor: bgColor }}>\n <div className=\"chip-content\">\n <p className=\"chip-label\" style={{ color: textColor }}>\n {label}\n </p>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./Avatar.css\";\n\ninterface AvatarProps {\n children: React.ReactNode;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({ children }) => {\n return (\n <div className=\"avatar-container avatar-container--clickable\">\n <div className=\"avatar-content\">{children}</div>\n </div>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport \"./Histogram.css\";\n\ninterface HistogramProps {\n /** Maximum value configuration with value and color */\n max: {\n value: number;\n color: string;\n opacity?: number;\n };\n /** Relative/current value configuration with value and color */\n relative: {\n value: number;\n color: string;\n };\n /** Height of the histogram bar in pixels */\n barHeight?: number;\n /** Width of the histogram bar in pixels */\n barWidth?: number;\n /** Orientation of the histogram - 'vertical' or 'horizontal' */\n orientation?: 'vertical' | 'horizontal';\n /** Corner radius configuration for individual corners */\n cornerRadius?: {\n topLeft?: number;\n topRight?: number;\n bottomLeft?: number;\n bottomRight?: number;\n };\n /** Child components (typically text content) */\n children?: React.ReactNode;\n}\n\nexport const Histogram: React.FC<HistogramProps> = ({\n max,\n relative,\n barHeight = 103,\n barWidth = 32,\n orientation = 'vertical',\n cornerRadius,\n children,\n}) => {\n const [animatedHeight, setAnimatedHeight] = useState(0);\n const [animatedWidth, setAnimatedWidth] = useState(0);\n\n // Calculate target dimensions based on orientation\n const targetHeight = (Math.min((relative.value / max.value) * 100, 100) / 100) * barHeight;\n const targetWidth = (Math.min((relative.value / max.value) * 100, 100) / 100) * barWidth;\n\n // Simple Chart.js-like animation: always animate from 0 to target\n useEffect(() => {\n setAnimatedHeight(0);\n setAnimatedWidth(0);\n \n const startTime = Date.now();\n const duration = 1000;\n\n const animate = () => {\n const elapsed = Date.now() - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Chart.js-like easing (easeOutQuart)\n const easeOutQuart = 1 - Math.pow(1 - progress, 4);\n \n setAnimatedHeight(targetHeight * easeOutQuart);\n setAnimatedWidth(targetWidth * easeOutQuart);\n\n if (progress < 1) {\n requestAnimationFrame(animate);\n }\n };\n\n requestAnimationFrame(animate);\n }, [targetHeight, targetWidth]);\n\n const displayWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const displayHeight = orientation === 'horizontal' ? barWidth : barHeight;\n const svgWidth = orientation === 'horizontal' ? barHeight : barWidth;\n const svgHeight = orientation === 'horizontal' ? barWidth : barHeight;\n\n // Helper function to create rounded rectangle path\n const createRoundedRectPath = (\n x: number,\n y: number,\n width: number,\n height: number,\n radii: { topLeft: number; topRight: number; bottomLeft: number; bottomRight: number }\n ) => {\n const { topLeft, topRight, bottomLeft, bottomRight } = radii;\n \n return `\n M ${x + topLeft} ${y}\n L ${x + width - topRight} ${y}\n Q ${x + width} ${y} ${x + width} ${y + topRight}\n L ${x + width} ${y + height - bottomRight}\n Q ${x + width} ${y + height} ${x + width - bottomRight} ${y + height}\n L ${x + bottomLeft} ${y + height}\n Q ${x} ${y + height} ${x} ${y + height - bottomLeft}\n L ${x} ${y + topLeft}\n Q ${x} ${y} ${x + topLeft} ${y}\n Z\n `.trim().replace(/\\s+/g, ' ');\n };\n\n // Default corner radius values\n const defaultCornerRadius = { topLeft: 2, topRight: 2, bottomLeft: 2, bottomRight: 2 };\n const corners = cornerRadius ? {\n topLeft: cornerRadius.topLeft ?? defaultCornerRadius.topLeft,\n topRight: cornerRadius.topRight ?? defaultCornerRadius.topRight,\n bottomLeft: cornerRadius.bottomLeft ?? defaultCornerRadius.bottomLeft,\n bottomRight: cornerRadius.bottomRight ?? defaultCornerRadius.bottomRight,\n } : defaultCornerRadius;\n\n return (\n <div className={`histogram-container ${orientation === 'horizontal' ? 'histogram-container--horizontal' : ''}`}>\n <div className={`histogram-content ${orientation === 'horizontal' ? 'histogram-content--horizontal' : ''}`}>\n <div \n className=\"histogram-bar\"\n style={{\n height: `${displayHeight}px`,\n width: `${displayWidth}px`\n }}\n >\n <svg\n width={svgWidth}\n height={svgHeight}\n viewBox={`0 0 ${svgWidth} ${svgHeight}`}\n className=\"histogram-svg\"\n >\n {/* Background bar (max value) */}\n <path\n d={createRoundedRectPath(0, 0, svgWidth, svgHeight, corners)}\n fill={max.color}\n fillOpacity={max.opacity || 1}\n />\n {/* Foreground bar (relative value) with animation */}\n {orientation === 'vertical' ? (\n <path\n d={createRoundedRectPath(\n 0,\n svgHeight - animatedHeight,\n svgWidth,\n animatedHeight,\n {\n topLeft: animatedHeight >= svgHeight ? corners.topLeft : 0,\n topRight: animatedHeight >= svgHeight ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: corners.bottomRight,\n }\n )}\n fill={relative.color}\n />\n ) : (\n <path\n d={createRoundedRectPath(\n 0,\n 0,\n animatedWidth,\n svgHeight,\n {\n topLeft: corners.topLeft,\n topRight: animatedWidth >= svgWidth ? corners.topRight : 0,\n bottomLeft: corners.bottomLeft,\n bottomRight: animatedWidth >= svgWidth ? corners.bottomRight : 0,\n }\n )}\n fill={relative.color}\n />\n )}\n </svg>\n </div>\n {children && (\n <div className={`histogram-text-container ${orientation === 'horizontal' ? 'histogram-text-container--horizontal' : ''}`}>\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { Input } from \"./Input\";\nimport { Switch } from \"./Switch\";\nimport \"./ProductionUnit.css\";\nimport { Chip } from \"./Chip\";\n\ninterface ProductionUnitProps {\n onChangeInput?: (value: number) => void;\n onChangeSwitch?: (checked: boolean) => void;\n defaultValue?: number;\n defaultChecked?: boolean;\n value?: number;\n checked?: boolean;\n unitName?: string;\n energyCost?: number;\n checkedImage?: React.ReactNode;\n uncheckedImage?: React.ReactNode;\n readonly?: boolean;\n}\nexport const ProductionUnit = ({\n onChangeInput,\n onChangeSwitch,\n defaultValue,\n defaultChecked = false,\n value,\n checked,\n unitName = \"Production Unit\",\n energyCost = 0,\n checkedImage,\n uncheckedImage,\n readonly = false,\n}: ProductionUnitProps) => {\n // Internal state management for uncontrolled mode\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const [internalValue, setInternalValue] = useState(defaultValue);\n\n // Use controlled props if provided, otherwise use internal state\n const isChecked = checked !== undefined ? checked : internalChecked;\n const currentValue = value !== undefined ? value : internalValue;\n\n const handleSwitchChange = (newChecked: boolean) => {\n // Update internal state only if uncontrolled\n if (checked === undefined) {\n setInternalChecked(newChecked);\n }\n\n // Notify parent component if handler provided\n if (onChangeSwitch) {\n onChangeSwitch(newChecked);\n }\n };\n\n const handleInputChange = (val: string) => {\n const numValue = Number(val);\n // Update internal state only if uncontrolled\n if (value === undefined) {\n setInternalValue(numValue);\n }\n\n // Notify parent component if handler provided\n if (onChangeInput) {\n onChangeInput(numValue);\n }\n };\n\n return (\n <div className=\"production-unit-container\">\n <div className=\"production-unit-content\">\n <div className=\"image-preview-container\">\n {isChecked ? checkedImage : uncheckedImage}\n </div>\n <div className=\"production-unit-chip\">\n <div className=\"production-unit-chip-name\">{unitName}</div>\n\n <Chip\n label={`${energyCost} MW`}\n width=\"fit-content\"\n bgColor=\"#E1F5FD\"\n textColor=\"#005896\"\n />\n </div>\n <div className=\"production-unit-switch-container\">\n <Input\n label=\"PA\"\n type=\"number\"\n onChange={handleInputChange}\n value={\n currentValue !== undefined ? currentValue.toString() : undefined\n }\n disabled={!isChecked || readonly}\n />{\" \"}\n </div>\n </div>\n\n <Switch\n checked={isChecked}\n onChange={handleSwitchChange}\n disabled={readonly}\n />\n </div>\n );\n};\n"],"names":["Input","_a","label","_b","value","onChange","_c","type","_d","disabled","_e","className","_f","required","_g","min","_h","max","_j","useState","internalValue","setInternalValue","_k","isFocused","setIsFocused","inputRef","useRef","useEffect","containerClasses","length","filter","Boolean","join","_jsx","children","_jsxs","jsx","ref","e","newValue","target","onFocus","onBlur","jsxs","ImgOn","isOff","width","height","viewBox","fill","xmlns","d","SwitchThumb","cx","cy","r","Switch","checked","showIcon","internalChecked","setInternalChecked","switchClasses","role","onClick","newChecked","Chip","bgColor","textColor","chipClasses","style","backgroundColor","color","relative","barHeight","barWidth","orientation","cornerRadius","animatedHeight","setAnimatedHeight","animatedWidth","setAnimatedWidth","targetHeight","Math","targetWidth","startTime","Date","now","animate","elapsed","progress","easeOutQuart","pow","requestAnimationFrame","displayWidth","displayHeight","svgWidth","svgHeight","createRoundedRectPath","x","y","radii","topLeft","topRight","bottomLeft","bottomRight","concat","trim","replace","defaultCornerRadius","corners","fillOpacity","opacity","onChangeInput","onChangeSwitch","defaultValue","defaultChecked","unitName","energyCost","checkedImage","uncheckedImage","readonly","isChecked","undefined","currentValue","val","numValue","Number","toString"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rte-utils",
3
- "version": "1.2.9",
3
+ "version": "1.2.10",
4
4
  "description": "React components library in TypeScript for agigox projects",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",