@egov3/system-design 1.1.43 → 2.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -23
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +2 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +164 -0
- package/dist/{esm/index.d.ts → index.d.ts} +30 -6
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -28
- package/dist/cjs/components/Accordion/index.d.ts +0 -8
- package/dist/cjs/components/Button/index.d.ts +0 -13
- package/dist/cjs/components/Calendar/Body/index.d.ts +0 -12
- package/dist/cjs/components/Calendar/Footer/index.d.ts +0 -9
- package/dist/cjs/components/Calendar/Header/index.d.ts +0 -8
- package/dist/cjs/components/Calendar/Main/index.d.ts +0 -9
- package/dist/cjs/components/Calendar/index.d.ts +0 -8
- package/dist/cjs/components/InputField/index.d.ts +0 -22
- package/dist/cjs/components/Modal/index.d.ts +0 -9
- package/dist/cjs/components/RadioGroup/index.d.ts +0 -20
- package/dist/cjs/components/RadioToggle/index.d.ts +0 -6
- package/dist/cjs/components/SelectBoxButton/index.d.ts +0 -9
- package/dist/cjs/components/Typography/index.d.ts +0 -8
- package/dist/cjs/components/index.d.ts +0 -20
- package/dist/cjs/constants/calendar/index.d.ts +0 -2
- package/dist/cjs/index.d.ts +0 -21
- package/dist/cjs/index.js +0 -8885
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/interfaces/Calendar.d.ts +0 -24
- package/dist/cjs/stories/Accordion.stories.d.ts +0 -7
- package/dist/cjs/stories/Button.stories.d.ts +0 -28
- package/dist/cjs/stories/Calendar.stories.d.ts +0 -6
- package/dist/cjs/stories/CardWrapperItem.d.ts +0 -4
- package/dist/cjs/stories/InputField.stories.d.ts +0 -22
- package/dist/cjs/stories/Modal.stories.d.ts +0 -8
- package/dist/cjs/stories/RadioGroup.stories.d.ts +0 -23
- package/dist/cjs/stories/RadioToggle.stories.d.ts +0 -13
- package/dist/cjs/stories/Typography.stories.d.ts +0 -12
- package/dist/cjs/svg/ClearIcon.d.ts +0 -4
- package/dist/cjs/svg/index.d.ts +0 -2
- package/dist/cjs/utils/CombineClassNames.d.ts +0 -1
- package/dist/cjs/utils/CreateArray.d.ts +0 -1
- package/dist/cjs/utils/GenerateArray.d.ts +0 -1
- package/dist/cjs/utils/date/convertType.d.ts +0 -53
- package/dist/cjs/utils/date/formatDate.d.ts +0 -1
- package/dist/cjs/utils/date/getDaysInMonth.d.ts +0 -1
- package/dist/cjs/utils/date/getMonthNameProper.d.ts +0 -1
- package/dist/cjs/utils/date/getValideMonth.d.ts +0 -6
- package/dist/cjs/utils/date/index.d.ts +0 -6
- package/dist/cjs/utils/date/inverseDate.d.ts +0 -1
- package/dist/cjs/utils/date/isValidateDate.d.ts +0 -3
- package/dist/cjs/utils/date/normalizeDayAndMonth.d.ts +0 -2
- package/dist/cjs/utils/date/range/getDaysRange.d.ts +0 -2
- package/dist/cjs/utils/date/range/getMonthRange.d.ts +0 -1
- package/dist/cjs/utils/date/range/getYearRange.d.ts +0 -1
- package/dist/cjs/utils/date/range/isValidDateRange.d.ts +0 -3
- package/dist/cjs/utils/string/SetCharAt.d.ts +0 -1
- package/dist/cjs/utils/string/toPascalCase.d.ts +0 -1
- package/dist/esm/components/Accordion/index.d.ts +0 -8
- package/dist/esm/components/Button/index.d.ts +0 -13
- package/dist/esm/components/Calendar/Body/index.d.ts +0 -12
- package/dist/esm/components/Calendar/Footer/index.d.ts +0 -9
- package/dist/esm/components/Calendar/Header/index.d.ts +0 -8
- package/dist/esm/components/Calendar/Main/index.d.ts +0 -9
- package/dist/esm/components/Calendar/index.d.ts +0 -8
- package/dist/esm/components/InputField/index.d.ts +0 -22
- package/dist/esm/components/Modal/index.d.ts +0 -9
- package/dist/esm/components/RadioGroup/index.d.ts +0 -20
- package/dist/esm/components/RadioToggle/index.d.ts +0 -6
- package/dist/esm/components/SelectBoxButton/index.d.ts +0 -9
- package/dist/esm/components/Typography/index.d.ts +0 -8
- package/dist/esm/components/index.d.ts +0 -20
- package/dist/esm/constants/calendar/index.d.ts +0 -2
- package/dist/esm/index.js +0 -8883
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interfaces/Calendar.d.ts +0 -24
- package/dist/esm/stories/Accordion.stories.d.ts +0 -7
- package/dist/esm/stories/Button.stories.d.ts +0 -28
- package/dist/esm/stories/Calendar.stories.d.ts +0 -6
- package/dist/esm/stories/CardWrapperItem.d.ts +0 -4
- package/dist/esm/stories/InputField.stories.d.ts +0 -22
- package/dist/esm/stories/Modal.stories.d.ts +0 -8
- package/dist/esm/stories/RadioGroup.stories.d.ts +0 -23
- package/dist/esm/stories/RadioToggle.stories.d.ts +0 -13
- package/dist/esm/stories/Typography.stories.d.ts +0 -12
- package/dist/esm/svg/ClearIcon.d.ts +0 -4
- package/dist/esm/svg/index.d.ts +0 -2
- package/dist/esm/utils/CombineClassNames.d.ts +0 -1
- package/dist/esm/utils/CreateArray.d.ts +0 -1
- package/dist/esm/utils/GenerateArray.d.ts +0 -1
- package/dist/esm/utils/date/convertType.d.ts +0 -53
- package/dist/esm/utils/date/formatDate.d.ts +0 -1
- package/dist/esm/utils/date/getDaysInMonth.d.ts +0 -1
- package/dist/esm/utils/date/getMonthNameProper.d.ts +0 -1
- package/dist/esm/utils/date/getValideMonth.d.ts +0 -6
- package/dist/esm/utils/date/index.d.ts +0 -6
- package/dist/esm/utils/date/inverseDate.d.ts +0 -1
- package/dist/esm/utils/date/isValidateDate.d.ts +0 -3
- package/dist/esm/utils/date/normalizeDayAndMonth.d.ts +0 -2
- package/dist/esm/utils/date/range/getDaysRange.d.ts +0 -2
- package/dist/esm/utils/date/range/getMonthRange.d.ts +0 -1
- package/dist/esm/utils/date/range/getYearRange.d.ts +0 -1
- package/dist/esm/utils/date/range/isValidDateRange.d.ts +0 -3
- package/dist/esm/utils/string/SetCharAt.d.ts +0 -1
- package/dist/esm/utils/string/toPascalCase.d.ts +0 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import * as React from 'react';
|
|
3
|
-
import React__default, { Dispatch, SetStateAction, HTMLInputTypeAttribute } from 'react';
|
|
4
|
-
import { TPeriodKeys, ICalendarPeriod, IStrictSelectedPeriod, IDateItem, TTimeUnit } from '~interfaces/Calendar';
|
|
2
|
+
import React__default, { JSX, Dispatch, SetStateAction, HTMLInputTypeAttribute } from 'react';
|
|
5
3
|
|
|
6
4
|
type TFontClass = "Heading1" | "Heading3" | "Subtitles3" | "Body1Medium" | "Body1Regular" | "Body2Medium" | "Body2Regular" | "Body3Regular" | "Caption1Medium" | "Caption1Regular" | "Caption1Semibold" | "Caption2Medium" | "Caption2Regular";
|
|
7
5
|
interface ITypographyProps extends React__default.HTMLAttributes<HTMLElement> {
|
|
@@ -48,6 +46,7 @@ interface IInputFieldProps extends React__default.DetailedHTMLProps<React__defau
|
|
|
48
46
|
focused?: boolean;
|
|
49
47
|
setFocused?: (val: boolean) => void;
|
|
50
48
|
readOnly?: boolean;
|
|
49
|
+
inline?: boolean;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
interface RadioGroupItem {
|
|
@@ -68,6 +67,31 @@ interface IRadioGroupProps {
|
|
|
68
67
|
selectedOption: string;
|
|
69
68
|
}
|
|
70
69
|
|
|
70
|
+
interface ISelectedPeriod {
|
|
71
|
+
fromDate?: string;
|
|
72
|
+
toDate?: string;
|
|
73
|
+
periodSelected: boolean;
|
|
74
|
+
}
|
|
75
|
+
interface IStrictSelectedPeriod extends Omit<ISelectedPeriod, "fromDate" | "toDate"> {
|
|
76
|
+
fromDate: string;
|
|
77
|
+
toDate: string;
|
|
78
|
+
}
|
|
79
|
+
interface IDateItem<T = number> {
|
|
80
|
+
day: T;
|
|
81
|
+
month: T;
|
|
82
|
+
year: T;
|
|
83
|
+
}
|
|
84
|
+
interface IPeriodKeys {
|
|
85
|
+
from: "from";
|
|
86
|
+
to: "to";
|
|
87
|
+
}
|
|
88
|
+
type TPeriodKeys = keyof IPeriodKeys;
|
|
89
|
+
interface ICalendarPeriod<T = number> {
|
|
90
|
+
from: IDateItem<T>;
|
|
91
|
+
to: IDateItem<T>;
|
|
92
|
+
}
|
|
93
|
+
type TTimeUnit = keyof IDateItem;
|
|
94
|
+
|
|
71
95
|
interface IHeaderProps {
|
|
72
96
|
setSelectedPeriodInterval: Dispatch<SetStateAction<TPeriodKeys>>;
|
|
73
97
|
selectedPeriodInterval: TPeriodKeys;
|
|
@@ -105,8 +129,8 @@ interface IButtonProps {
|
|
|
105
129
|
className?: string;
|
|
106
130
|
isRounded?: boolean;
|
|
107
131
|
disabled?: boolean;
|
|
108
|
-
variant?:
|
|
109
|
-
size?:
|
|
132
|
+
variant?: "default" | "tinted" | "secondary";
|
|
133
|
+
size?: "mini" | "small" | "medium" | "large";
|
|
110
134
|
style?: React__default.CSSProperties;
|
|
111
135
|
}
|
|
112
136
|
|
|
@@ -132,7 +156,7 @@ declare const SystemDesign: {
|
|
|
132
156
|
Modal: ({ open, setOpen, children, headerTitle, variant, }: IModalProps) => React.JSX.Element | null;
|
|
133
157
|
RadioGroup: ({ RadioGroupItems, invokeCustomOnChange, setSelectedOption, selectedOption, }: IRadioGroupProps) => React.JSX.Element;
|
|
134
158
|
RadioToggle: ({ lock, setLock }: IRadioToggleProps) => React.JSX.Element;
|
|
135
|
-
SelectBoxButton: ({ setIsOpen, labelText, disabled, error, modalValue, }: ISelectBoxProps) => JSX.Element;
|
|
159
|
+
SelectBoxButton: ({ setIsOpen, labelText, disabled, error, modalValue, }: ISelectBoxProps) => React.JSX.Element;
|
|
136
160
|
Typography: React.FC<ITypographyProps>;
|
|
137
161
|
};
|
|
138
162
|
};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _ from"react";var W={};var p=(...t)=>t.filter(o=>!!o).join(" ");var mt=({open:t,setOpen:o,children:a,title:r})=>_.createElement(_.Fragment,null,_.createElement("button",{"data-testid":"Accordion_BUTTON",className:W.accordionBtn,onClick:()=>{o(!t)}},r,_.createElement("svg",{"data-testid":"Accordion_DIRECTION",xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",style:{transform:t?"rotate(0.5turn)":"none"}},_.createElement("path",{d:"M15.8346 7.5L10.0013 13.3333L4.16797 7.5",stroke:"#758393"}))),_.createElement("div",{"data-testid":"Accordion_CONTENT",className:p(W.accordionContent,!t&&W["accordionContent--hidden"])},a));import Yt from"react";var k={};var ut=({onClick:t,children:o,style:a,className:r="",isRounded:e=!1,disabled:n=!1,variant:s="default",size:h="medium",ariaLabel:I="\u041A\u043D\u043E\u043F\u043A\u0430"})=>Yt.createElement("button",{"data-testid":"Button_MAIN","aria-label":I,disabled:n,"aria-disabled":n,onClick:t,className:p(k[`btn--${h}`],e?k[`btn-rounded--${h}`]:k[`btn-square--${h}`],n?k[`btn-${s}--disabled`]:k[`btn-${s}`],k.button,r),style:a},o);import xt from"@egov3/graphics";import v from"react";var m={day:{toString:t=>String(t).padStart(2,"0"),toNumber:t=>+t},month:{toString:t=>String(t+1).padStart(2,"0"),toNumber:t=>+t-1},year:{toString:t=>String(t),toNumber:t=>+t}},Ht={toString:({day:t,month:o,year:a})=>({day:m.day.toString(t),month:m.month.toString(o),year:m.year.toString(a)}),toNumber:({day:t,month:o,year:a})=>({day:m.day.toNumber(t),month:m.month.toNumber(o),year:m.year.toNumber(a)})},Ft={toString:({from:{day:t,month:o,year:a},to:{day:r,month:e,year:n}})=>({from:{day:m.day.toString(t),month:m.month.toString(o),year:m.year.toString(a)},to:{day:m.day.toString(r),month:m.month.toString(e),year:m.year.toString(n)}}),toNumber:({from:{day:t,month:o,year:a},to:{day:r,month:e,year:n}})=>({from:{day:m.day.toNumber(t),month:m.month.toNumber(o),year:m.year.toNumber(a)},to:{day:m.day.toNumber(r),month:m.month.toNumber(e),year:m.year.toNumber(n)}})},l={date:Ht,dateRange:Ft,...m};var q=new Date(0).getFullYear(),yt=0,ft=11,M=new Date().getFullYear(),$=new Date().getMonth(),it=new Date().getDate();var st=t=>{let o=new Date(M,t).toLocaleString("ru-RU",{month:"long"});return o.charAt(0).toUpperCase()+o.slice(1)};var Q=(t,o)=>new Date(o,t+1,0).getDate();var O=(t,o=1)=>Array.from({length:t},(a,r)=>o+r);var gt=({day:t,month:o,year:a})=>{let r=Math.max(t-2,1),e=Math.min(t+2,Q(o,a));return O(e-r+1,r)};var bt=(t,o)=>{if(!Number.isInteger(t)||t<0||t>11)throw new Error(`Invalid month: ${t}`);if(!Number.isInteger(o))throw new Error(`Invalid year: ${o}`);let a=Math.max(t-2,yt),r=Math.min(t+2,ft);return O(r-a+1,a)};var ht=t=>{let o=Math.max(t-2,q),a=Math.min(t+2,M);return O(a-o+1,o).map(String)};var jt=({from:t,to:o})=>{let a=new Date(t.year,t.month-1,t.day),r=new Date(o.year,o.month-1,o.day);return a.getTime()<=r.getTime()},P=t=>!jt(t);var w=t=>t.toLowerCase().charAt(0).toUpperCase()+t.toLowerCase().slice(1);var f={};var vt=({changeDate:t,handleMouseDown:o,handleMouseUp:a,selectedCalenderDate:r,selectedPeriodInterval:e,setDistanceTraveled:n,setInitialY:s})=>{let h={day:l.month.toNumber(r[e].month)<15,month:l.month.toNumber(r[e].month)<6,year:l.year.toNumber(r[e].year)<2020},I={day:i=>r[e].day===i?f.currentText:f.text,month:i=>i===st(l.month.toNumber(r[e].month))?p(f.currentText,f.currentMonth):f.text,year:i=>r[e].year===i?f.currentText:f.text},x=ht(l.year.toNumber(r[e].year)),N=bt(l.month.toNumber(r[e].month),l.year.toNumber(r[e].year)).map(i=>st(i)),C=gt(l.date.toNumber(r[e])).map(i=>l.day.toString(i)),D={year:x,month:N,day:C},E=(i,g)=>{let S=i.deltaY,L=Math.abs(S),G=S>0?1:-1;L>0&&(t[g](G),n(L),s(i.clientY))},A=["day","month","year"];return v.createElement("div",{"data-testid":"Calendar_COVER",className:f.cover},A.map(i=>v.createElement("div",{"data-testid":`Calendar${w(i)}_WRAPPER`,className:p(f.wrapper,`styles.wrapper${w(i)}`),key:i},v.createElement("button",{"data-testid":`Calendar${w(i)}Button_UP`,onClick:()=>t[i](-1),"aria-label":"\u041A\u043D\u043E\u043F\u043A\u0430 \u0432\u0432\u0435\u0440\u0445",className:f.btnUpAndDown},v.createElement(xt.Basic.ChevronUpSmall,{fill:"#758393"})),v.createElement("div",{"data-testid":`Calendar${w(i)}_SELECT`,className:p(f.block,h[i]?f.end:f.start)},v.createElement("button",{"data-testid":`Calendar${w(i)}_BUTTON`,onMouseDown:g=>o(g,i),onMouseUp:a,onWheel:g=>E(g,i),className:f.btn},D[i].map(g=>v.createElement(y.Typography,{key:g,"data-testid":`Calendar${w(i)}_ITEM`,tag:"span",fontClass:"Body1Regular","aria-label":g,className:p(I[i](g),P(l.dateRange.toNumber(r))?f.currentError:void 0)},g)))),v.createElement("button",{"data-testid":`Calendar${w(i)}Button_DOWN`,onClick:()=>{t[i](1)},"aria-label":"\u043A\u043D\u043E\u043F\u043A\u0430 \u0432\u043D\u0438\u0437",className:f.btnUpAndDown},v.createElement(xt.Basic.ChevronDownSmall,{fill:"#758393"})))))};import tt from"react";var Z={};var It=({selectedCalenderDate:t,setSelectedPeriod:o,setIsModalOpen:a,setSelectedRadioOption:r})=>{let e=()=>{a(!1),r("custom");let n=[t.from.year,t.from.month,t.from.day].join("-"),s=[t.to.year,t.to.month,t.to.day].join("-");o({fromDate:n,toDate:s,periodSelected:!0})};return tt.createElement(tt.Fragment,null,P(l.dateRange.toNumber(t))&&tt.createElement(y.Typography,{className:p(Z.currentError,Z.textError),"data-testid":"CalendarError_DISCRIPTION",tag:"span",fontClass:"Caption1Regular","aria-label":"\u0412\u044B \u0432\u0432\u0435\u043B\u0438 \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0434\u0430\u0442\u0443, \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"},"\u0412\u044B \u0432\u0432\u0435\u043B\u0438 \u043D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0434\u0430\u0442\u0443, \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"),tt.createElement(y.Button,{disabled:P(l.dateRange.toNumber(t)),className:Z.save,size:"large",onClick:e},"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C"))};import lt from"react";var B={from:"from",to:"to"};var U={};var Ct=({setSelectedPeriodInterval:t,selectedPeriodInterval:o,selectedCalenderDate:a})=>{let r=[{key:B.from,label:"\u041F\u0435\u0440\u0438\u043E\u0434 \u0441",onClick:()=>{t(B.from)}},{key:B.to,label:"\u041F\u0435\u0440\u0438\u043E\u0434 \u0434\u043E",onClick:()=>{t(B.to)}}];return lt.createElement("div",{"data-testid":"CalendarTab_WRAP",className:U.tab},r.map(e=>lt.createElement("button",{key:e.key,"data-testid":`CalendarTabButton_${e.key.toUpperCase()}`,className:p(o===e.key?U.titleActiv:U.title,P(l.dateRange.toNumber(a))?U.titleError:void 0),onClick:()=>{t(e.key)},"aria-label":`\u041A\u043D\u043E\u043F\u043A\u0430 ${e.label}`},lt.createElement(y.Typography,{"data-testid":`CalendarTabTitle_${e.key.toUpperCase()}`,tag:"span",fontClass:"Body1Medium","aria-label":"\u041F\u0435\u0440\u0438\u043E\u0434 \u0441"},e.label," ...*"))))};import rt,{useCallback as K,useEffect as Xt,useMemo as zt,useState as X}from"react";var et=({day:t,month:o,year:a})=>{let r=Q(o,a),e;return t>r?e=r:e=t,o===$&&a===M&&e>it&&(e=it),e};var Dt=({day:t,month:o,year:a})=>{let r=M===a&&o>$?$:o;return{day:et({day:t,month:r,year:a}),month:r,year:a}};var ot=t=>{let{day:o,month:a,year:r}=t;if(r<q||a<0||a>11)return!1;let e=new Date(r,a,o);if(e.getFullYear()!==r||e.getMonth()!==a||e.getDate()!==o)return!1;let n=new Date,s=new Date(n.getFullYear(),n.getMonth(),n.getDate());return e<=s};var St={};var Tt=({setSelectedPeriod:t,selectedPeriod:o,setIsModalOpen:a,setSelectedRadioOption:r})=>{let[e,n]=X({from:{day:o.fromDate.split("-")[2],month:o.fromDate.split("-")[1],year:o.fromDate.split("-")[0]},to:{day:o.toDate.split("-")[2],month:o.fromDate.split("-")[1],year:o.toDate.split("-")[0]}}),[s,h]=X(B.from),[I,x]=X({day:!1,month:!1,year:!1}),[N,C]=X(0),[D,E]=X(0),A=K(d=>{let u={day:l.day.toNumber(e[s].day)+d,month:l.month.toNumber(e[s].month),year:l.year.toNumber(e[s].year)};ot(u)&&n({...e,[s]:l.date.toString(u)})},[e,s,n]),i=K(d=>{let c=l.month.toNumber(e[s].month)+d,b={day:et({day:l.day.toNumber(e[s].day),month:c,year:l.year.toNumber(e[s].year)}),month:c,year:l.year.toNumber(e[s].year)};ot(b)&&n({...e,[s]:l.date.toString(b)})},[e,s,n]),g=K(d=>{let c=l.year.toNumber(e[s].year)+d,u=Dt(l.date.toNumber({day:e[s].day,month:e[s].month,year:l.year.toString(c)}));ot(u)&&n({...e,[s]:l.date.toString(u)})},[e,s,n]),S=zt(()=>({day:A,month:i,year:g}),[A,i,g]),L=(d,c)=>{let u={day:()=>x(b=>({...b,day:!0})),month:()=>x(b=>({...b,month:!0})),year:()=>x(b=>({...b,year:!0}))};u[c]&&u[c](),C(d.clientY),E(0)},G=d=>{let c=document.querySelector("[aria-disabled=true]");if(!c)return!1;let u=c.getBoundingClientRect();return d.clientX>=u.left&&d.clientX<=u.right&&d.clientY>=u.top&&d.clientY<=u.bottom},T=K(()=>{x({day:!1,month:!1,year:!1})},[]),J=K((d,c)=>{if(G(d)){T();return}let u=d.clientY-N;if(!I[c])return;let b=Math.abs(u);b>5&&b-D>=5&&(S[c](u>0?-1:1),E(b),C(d.clientY)),c==="year"&&x(Lt=>({...Lt,year:!0}))},[S,D,T,N,I]);return Xt(()=>{let d=c=>{["day","month","year"].forEach(b=>{J(c,b)})};return document.addEventListener("mousemove",d),document.addEventListener("mouseup",T),()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",T)}},[J,T]),rt.createElement("div",{"data-testid":"Calendar_MODAL",className:St.modalBlock},rt.createElement(y.Calendar.Header,{selectedCalenderDate:e,selectedPeriodInterval:s,setSelectedPeriodInterval:h}),rt.createElement(y.Calendar.Body,{changeDate:S,handleMouseDown:L,handleMouseUp:T,selectedCalenderDate:e,selectedPeriodInterval:s,setDistanceTraveled:E,setInitialY:C}),rt.createElement(y.Calendar.Footer,{selectedCalenderDate:e,setIsModalOpen:a,setSelectedPeriod:t,setSelectedRadioOption:r}))};var Mt={Body:vt,Footer:It,Main:Tt,Header:Ct};import z,{forwardRef as Jt}from"react";var R={};import wt from"react";var dt=({fill:t="none",pathFill:o="#fff",width:a=20,height:r=20,...e})=>wt.createElement("svg",{"data-testid":"Icons_CLEAR",xmlns:"http://www.w3.org/2000/svg",width:a,height:r,fill:t,viewBox:"0 0 20 20",...e},wt.createElement("path",{fill:o,fillRule:"evenodd",d:"M10 18.333a8.333 8.333 0 100-16.666 8.333 8.333 0 000 16.666zM7.5 6.027L6.027 7.5l2.5 2.5-2.5 2.5L7.5 13.973l2.5-2.5 2.5 2.5 1.473-1.473-2.5-2.5 2.5-2.5L12.5 6.027l-2.5 2.5-2.5-2.5z",clipRule:"evenodd"}));var Nt=Jt(({onFocus:t,onBlur:o,onChange:a,onEnterPress:r,value:e="",inputLeftIcon:n,placeholder:s="",className:h="",style:I,isClearable:x=!1,type:N="text",id:C,labelText:D="",ariaLabel:E="",focused:A=!1,setFocused:i=()=>{},readOnly:g=!1,inline:S=!0},L)=>{let G=()=>{a&&a({target:{value:""}})},T=()=>{i(!0),t&&t()},J=()=>{i(!1),o&&o()},d=c=>{r&&c.key==="Enter"&&r(c)};return z.createElement("div",{"data-testid":"InputField_MAIN",className:p(R[D.length?"inputContainerLabeled":"inputContainer"],A?R["input--onfocus"]:void 0,R[`input-${N?.toLocaleLowerCase()}`],h),style:I},z.createElement("div",{className:S&&R.inline},D.length>0&&z.createElement("label",{htmlFor:C,"data-testid":"InputField_LABEL"},D),n,z.createElement("input",{ref:L,"data-testid":"InputField_INPUT","aria-label":E,id:C,type:N,className:R.input,placeholder:s,"aria-placeholder":s,onFocus:T,onBlur:J,onChange:a,onKeyDown:d,value:e,readOnly:g})),x&&e&&z.createElement(dt,{fill:"red",pathFill:"#758393",className:R.clearIcon,onClick:G}))});import H from"react";import qt from"@egov3/graphics";var Y={};var Et=({open:t,setOpen:o,children:a,headerTitle:r,variant:e})=>t?H.createElement("div",{"data-testid":"Modal_OVERLAY",className:Y.overlay},H.createElement("div",{"data-testid":"Modal_WRAPPER",className:p(Y.contentWrap,Y[`${e}Variant`])},r&&r.length>0&&H.createElement("div",{"data-testid":"Modal_HEADER",className:Y.contentHeader},H.createElement(y.Typography,{tag:"h3",fontClass:"Body1Medium","data-testid":"Modal_TITLE",className:Y.title},r),H.createElement("button",{"data-testid":"ModalHeader_BTN",onClick:()=>{o(!t)}},H.createElement(qt.General.Close,{"data-testid":"Modal_ICON"}))),a)):null;import F from"react";var at={};var pt=({label:t,name:o,checked:a,onChange:r,value:e})=>F.createElement("label",{"data-testid":"RadioGroupItem_LABEL",className:at.radio},F.createElement("input",{"data-testid":"RadioGroupItem_INPUT",value:e,type:"radio",name:o,checked:a,onChange:r}),F.createElement("span",{"data-testid":"RadioGroupItem_RADIO",className:at.radioBtn}),F.createElement("span",{"data-testid":"RadioGroupItem_TEXT",className:at.radioBtnText},t)),kt=({RadioGroupItems:t,invokeCustomOnChange:o,setSelectedOption:a,selectedOption:r})=>{let e=n=>{a(n.target.value),o(n)};return F.createElement("fieldset",{"data-testid":"RadioGroup_FIELDSET"},t.map(n=>F.createElement(pt,{key:n.label,label:n.label,name:"radio",checked:r===n.value,onChange:e,value:n.value})))};import ct from"react";var nt={};var Pt=({lock:t,setLock:o})=>ct.createElement("button",{"data-testid":"RadioToggle_BUTTON","aria-pressed":t,"aria-label":"\u041A\u043D\u043E\u043F\u043A\u0430 \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",onClick:()=>{o(!t)}},ct.createElement("div",{"data-testid":"RadioToggle_WRAP",className:p(nt.wrap,t&&nt.wrapLock)},ct.createElement("div",{"data-testid":"RadioToggle_ROUND",className:nt.round})));import V from"react";import ee from"@egov3/graphics";var j={};var Bt=({setIsOpen:t,labelText:o,disabled:a,error:r,modalValue:e})=>V.createElement("button",{"data-testid":"SelectBoxModal_BUTTON",className:j.selectContainer,onClick:()=>!a&&t(!0)},V.createElement("div",{"data-testid":"SelectBoxModal_TITLE"},V.createElement(y.Typography,{tag:"label",fontClass:"Caption1Regular","data-testid":"SelectBoxModal_LABEL",className:r?j.errorLabel:j.label,"aria-label":o},o),e&&e.length>0&&V.createElement(y.Typography,{tag:"div",fontClass:"Body2Regular","data-testid":"SelectBoxModal_VALUE",className:j.selectText,"aria-label":e},e)),V.createElement(ee.Basic.ChevronDownSmall,{"aria-label":"\u043A\u043D\u043E\u043F\u043A\u0430 \u0440\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C",fill:"#758393",className:j.clearIcon}));import re from"react";var Rt={};var At=({tag:t,fontClass:o,className:a,children:r,style:e,...n})=>re.createElement(t,{...n,className:p(o?Rt[o]:"",a),style:e},r);var y={Accordion:mt,Button:ut,Calendar:Mt,CustomRadioButton:pt,InputField:Nt,Modal:Et,RadioGroup:kt,RadioToggle:Pt,SelectBoxButton:Bt,Typography:At};var ae={Components:y},Vr=ae;export{Vr as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Accordion/index.tsx","../src/components/Accordion/Accordion.module.css","../src/utils/joinClasses.tsx","../src/components/Button/index.tsx","../src/components/Button/Button.module.css","../src/components/Calendar/Body/index.tsx","../src/utils/date/convertType.tsx","../src/utils/date/index.tsx","../src/utils/date/getMonthNameProper.tsx","../src/utils/date/getDaysInMonth.tsx","../src/utils/GenerateArray.tsx","../src/utils/date/range/getDaysRange.tsx","../src/utils/date/range/getMonthRange.tsx","../src/utils/date/range/getYearRange.tsx","../src/utils/date/range/isValidDateRange.tsx","../src/utils/string/toPascalCase.tsx","../src/components/Calendar/Body/CalendarBody.module.css","../src/components/Calendar/Footer/index.tsx","../src/components/Calendar/Footer/CalendarFooter.module.css","../src/components/Calendar/Header/index.tsx","../src/constants/calendar/index.tsx","../src/components/Calendar/Header/CalendarHeader.module.css","../src/components/Calendar/Main/index.tsx","../src/utils/date/normalizeDayAndMonth.tsx","../src/utils/date/getValideMonth.tsx","../src/utils/date/isValidateDate.tsx","../src/components/Calendar/Main/Main.module.css","../src/components/Calendar/index.tsx","../src/components/InputField/index.tsx","../src/components/InputField/InputField.module.css","../src/svg/ClearIcon.tsx","../src/components/Modal/index.tsx","../src/components/Modal/Modal.module.css","../src/components/RadioGroup/index.tsx","../src/components/RadioGroup/RadioGroup.module.css","../src/components/RadioToggle/index.tsx","../src/components/RadioToggle/RadioToggle.module.css","../src/components/SelectBoxButton/index.tsx","../src/components/SelectBoxButton/SelectBoxButton.module.css","../src/components/Typography/index.tsx","../src/components/Typography/Typography.module.css","../src/components/index.ts","../src/index.ts"],"sourcesContent":["import React, { Dispatch } from \"react\";\n\nimport styles from \"./Accordion.module.css\";\nimport { joinClasses } from \"~utils/joinClasses\";\n\nexport interface IAccordionProps {\n open: boolean;\n setOpen: Dispatch<React.SetStateAction<boolean>>;\n children: React.ReactNode;\n title: React.JSX.Element;\n}\n\nexport const Accordion = ({\n open,\n setOpen,\n children,\n title,\n}: IAccordionProps) => {\n return (\n <>\n <button\n data-testid=\"Accordion_BUTTON\"\n className={styles.accordionBtn}\n onClick={() => {\n setOpen(!open);\n }}\n >\n {title}\n <svg\n data-testid=\"Accordion_DIRECTION\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n style={{\n transform: !open ? \"none\" : \"rotate(0.5turn)\",\n }}\n >\n <path d=\"M15.8346 7.5L10.0013 13.3333L4.16797 7.5\" stroke=\"#758393\" />\n </svg>\n </button>\n <div\n data-testid=\"Accordion_CONTENT\"\n className={joinClasses(\n styles.accordionContent,\n !open && styles[`accordionContent--hidden`]\n )}\n >\n {children}\n </div>\n </>\n );\n};\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.accordionBtn {\n border-radius: inherit;\n width: 100%;\n text-align: left;\n\n display: flex;\n justify-content: space-between;\n cursor: pointer;\n}\n\n.accordionContent {\n max-height: 1000px;\n overflow: hidden;\n transition: all 0.3s ease-in-out;\n}\n\n.accordionContent--hidden {\n max-height: 0;\n}\n","export const joinClasses = (...args: unknown[]) =>\n args.filter((item) => !!item).join(\" \");\n","import React from \"react\";\n\nimport { joinClasses } from \"~utils/joinClasses\";\n\nimport styles from \"./Button.module.css\";\n\nexport interface IButtonProps {\n ariaLabel?: string;\n onClick?: () => void;\n children: React.ReactNode;\n className?: string;\n isRounded?: boolean;\n disabled?: boolean;\n variant?: \"default\" | \"tinted\" | \"secondary\";\n size?: \"mini\" | \"small\" | \"medium\" | \"large\";\n style?: React.CSSProperties;\n}\n\nexport const Button = ({\n onClick,\n children,\n style,\n className = \"\",\n isRounded = false,\n disabled = false,\n variant = \"default\",\n size = \"medium\",\n ariaLabel = \"Кнопка\",\n}: IButtonProps) => (\n <button\n data-testid=\"Button_MAIN\"\n aria-label={ariaLabel}\n disabled={disabled}\n aria-disabled={disabled}\n onClick={onClick}\n className={joinClasses(\n styles[`btn--${size}`],\n isRounded\n ? styles[`btn-rounded--${size}`]\n : styles[`btn-square--${size}`],\n disabled ? styles[`btn-${variant}--disabled`] : styles[`btn-${variant}`],\n styles.button,\n className\n )}\n style={style}\n >\n {children}\n </button>\n);\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.button {\n border: none;\n transition: background-color 0.2s ease;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n.btn-default {\n color: var(--default-white-color);\n background-color: var(--default-primary-accent);\n}\n\n.btn-default--disabled {\n color: var(--text-disabled-color);\n background-color: var(--button-disabled-default-color);\n}\n\n.btn-tinted {\n color: var(--text-accent);\n background-color: var(--button-tinted-default-color);\n}\n\n.btn-tinted--disabled {\n color: var(--text-disabled-accent-color);\n background-color: var(--button-tinted-default-color);\n}\n\n.btn-secondary {\n color: var(--text-primary);\n background-color: var(--surface-surface-3-color);\n}\n\n.btn-secondary--disabled {\n color: var(--text-secondary);\n background-color: var(--surface-surface-3-color);\n}\n\n.btn-default:hover {\n background-color: var(--button-primary-on-hover-color);\n}\n\n.btn-tinted:hover {\n background-color: var(--button-tinted-on-hover-color);\n}\n\n.btn-secondary:hover {\n background-color: var(--button-secondary-on-hover);\n}\n\n.btn--mini {\n gap: 4px;\n padding: 6px 12px;\n font: var(--caption2-medium);\n}\n\n.btn--small {\n gap: 8px;\n padding: 8px 16px;\n font: var(--caption1-medium);\n}\n\n.btn--medium {\n gap: 8px;\n padding: 8px 20px;\n font: var(--body2-medium);\n}\n\n.btn--large {\n gap: 8px;\n padding: 14px 24px;\n font: var(--body1-medium);\n}\n\n.btn-square--mini {\n border-radius: 4px;\n}\n\n.btn-square--small {\n border-radius: 6px;\n}\n\n.btn-square--medium {\n border-radius: 10px;\n}\n\n.btn-square--large {\n border-radius: 12px;\n}\n\n.btn-rounded--mini,\n.btn-rounded--small,\n.btn-rounded--medium {\n border-radius: 32px;\n}\n\n.btn-rounded--large {\n border-radius: 40px;\n}\n","import Icons from \"@egov3/graphics\";\nimport React, { Dispatch, SetStateAction } from \"react\";\n\nimport { joinClasses } from \"~utils/joinClasses\";\nimport { convertType } from \"~utils/date/convertType\";\nimport { getMonthNameProper } from \"~utils/date/getMonthNameProper\";\nimport { getDaysRange } from \"~utils/date/range/getDaysRange\";\nimport { getMonthRange } from \"~utils/date/range/getMonthRange\";\nimport { getYearRange } from \"~utils/date/range/getYearRange\";\nimport { isInvalidDateRange } from \"~utils/date/range/isValidDateRange\";\nimport { toPascalCase } from \"~utils/string/toPascalCase\";\n\nimport styles from \"./CalendarBody.module.css\";\nimport {\n ICalendarPeriod,\n IDateItem,\n TPeriodKeys,\n TTimeUnit,\n} from \"~interfaces/Calendar\";\nimport { Components } from \"~components\";\n\nexport interface IBodyProps {\n changeDate: IDateItem<(direction: number) => void>;\n handleMouseDown: (e: React.MouseEvent, type: TTimeUnit) => void;\n handleMouseUp: () => void;\n selectedCalenderDate: ICalendarPeriod<string>;\n selectedPeriodInterval: TPeriodKeys;\n setDistanceTraveled: Dispatch<SetStateAction<number>>;\n setInitialY: Dispatch<SetStateAction<number>>;\n}\n\nexport const Body = ({\n changeDate,\n handleMouseDown,\n handleMouseUp,\n selectedCalenderDate,\n selectedPeriodInterval,\n setDistanceTraveled,\n setInitialY,\n}: IBodyProps) => {\n const isEndOrStart: IDateItem<boolean> = {\n day:\n convertType[\"month\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n ) < 15,\n month:\n convertType[\"month\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n ) < 6,\n year:\n convertType[\"year\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].year\n ) < 2020,\n };\n const unitTimeClassname = {\n day: (item: string) =>\n selectedCalenderDate[selectedPeriodInterval].day === item\n ? styles.currentText\n : styles.text,\n month: (item: string) =>\n item ===\n getMonthNameProper(\n convertType.month.toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n )\n )\n ? joinClasses(styles.currentText, styles.currentMonth)\n : styles.text,\n year: (item: string) =>\n selectedCalenderDate[selectedPeriodInterval].year === item\n ? styles.currentText\n : styles.text,\n };\n\n const displayedYear = getYearRange(\n convertType.year.toNumber(selectedCalenderDate[selectedPeriodInterval].year)\n );\n const displayedMonth = getMonthRange(\n convertType.month.toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n ),\n convertType.year.toNumber(selectedCalenderDate[selectedPeriodInterval].year)\n ).map((monthIndex) => getMonthNameProper(monthIndex));\n const displayedDay = getDaysRange(\n convertType.date.toNumber(selectedCalenderDate[selectedPeriodInterval])\n ).map((item) => convertType.day.toString(item));\n\n const displayedDate: IDateItem<string[]> = {\n year: displayedYear,\n month: displayedMonth,\n day: displayedDay,\n };\n\n const handleWheel = (event: React.WheelEvent, type: TTimeUnit) => {\n const delta = event.deltaY;\n const distance = Math.abs(delta);\n const direction = delta > 0 ? 1 : -1;\n\n if (distance > 0) {\n changeDate[type](direction);\n\n setDistanceTraveled(distance);\n setInitialY(event.clientY);\n }\n };\n\n const arr: TTimeUnit[] = [\"day\", \"month\", \"year\"];\n return (\n <div data-testid=\"Calendar_COVER\" className={styles.cover}>\n {arr.map((timeUnit) => (\n <div\n data-testid={`Calendar${toPascalCase(timeUnit)}_WRAPPER`}\n className={joinClasses(\n styles.wrapper,\n `styles.wrapper${toPascalCase(timeUnit)}`\n )}\n key={timeUnit}\n >\n <button\n data-testid={`Calendar${toPascalCase(timeUnit)}Button_UP`}\n onClick={() => changeDate[timeUnit](-1)}\n aria-label=\"Кнопка вверх\"\n className={styles.btnUpAndDown}\n >\n <Icons.Basic.ChevronUpSmall fill=\"#758393\" />\n </button>\n <div\n data-testid={`Calendar${toPascalCase(timeUnit)}_SELECT`}\n className={joinClasses(\n styles.block,\n isEndOrStart[timeUnit] ? styles.end : styles.start\n )}\n >\n <button\n data-testid={`Calendar${toPascalCase(timeUnit)}_BUTTON`}\n onMouseDown={(e) => handleMouseDown(e, timeUnit)}\n onMouseUp={handleMouseUp}\n onWheel={(e) => handleWheel(e, timeUnit)}\n className={styles.btn}\n >\n {displayedDate[timeUnit].map((item) => (\n <Components.Typography\n key={item}\n data-testid={`Calendar${toPascalCase(timeUnit)}_ITEM`}\n tag=\"span\"\n fontClass=\"Body1Regular\"\n aria-label={item}\n className={joinClasses(\n unitTimeClassname[timeUnit](item),\n isInvalidDateRange(\n convertType.dateRange.toNumber(selectedCalenderDate)\n )\n ? styles.currentError\n : undefined\n )}\n >\n {item}\n </Components.Typography>\n ))}\n </button>\n </div>\n <button\n data-testid={`Calendar${toPascalCase(timeUnit)}Button_DOWN`}\n onClick={() => {\n changeDate[timeUnit](1);\n }}\n aria-label=\"кнопка вниз\"\n className={styles.btnUpAndDown}\n >\n <Icons.Basic.ChevronDownSmall fill=\"#758393\" />\n </button>\n </div>\n ))}\n </div>\n );\n};\n","import { ICalendarPeriod, IDateItem } from \"~interfaces/Calendar\";\n\nconst convert = {\n day: {\n toString: (num: number) => {\n return String(num).padStart(2, \"0\");\n },\n toNumber: (str: string) => {\n return +str;\n },\n },\n month: {\n toString: (num: number) => {\n return String(num + 1).padStart(2, \"0\");\n },\n toNumber: (str: string) => {\n return +str - 1;\n },\n },\n year: {\n toString: (num: number) => {\n return String(num);\n },\n toNumber: (str: string) => {\n return +str;\n },\n },\n};\nconst convertDate = {\n toString: ({ day, month, year }: IDateItem<number>) => ({\n day: convert.day.toString(day),\n month: convert.month.toString(month),\n year: convert.year.toString(year),\n }),\n toNumber: ({ day, month, year }: IDateItem<string>) => ({\n day: convert.day.toNumber(day),\n month: convert.month.toNumber(month),\n year: convert.year.toNumber(year),\n }),\n};\nconst convertDateRange = {\n toString: ({\n from: { day: fromday, month: fromMonth, year: fromYear },\n to: { day: toDay, month: toMonth, year: toYear },\n }: ICalendarPeriod<number>) => ({\n from: {\n day: convert.day.toString(fromday),\n month: convert.month.toString(fromMonth),\n year: convert.year.toString(fromYear),\n },\n to: {\n day: convert.day.toString(toDay),\n month: convert.month.toString(toMonth),\n year: convert.year.toString(toYear),\n },\n }),\n toNumber: ({\n from: { day: fromday, month: fromMonth, year: fromYear },\n to: { day: toDay, month: toMonth, year: toYear },\n }: ICalendarPeriod<string>) => ({\n from: {\n day: convert.day.toNumber(fromday),\n month: convert.month.toNumber(fromMonth),\n year: convert.year.toNumber(fromYear),\n },\n to: {\n day: convert.day.toNumber(toDay),\n month: convert.month.toNumber(toMonth),\n year: convert.year.toNumber(toYear),\n },\n }),\n};\n\nexport const convertType = {\n date: convertDate,\n dateRange: convertDateRange,\n ...convert,\n};\n","export const minYear = new Date(0).getFullYear();\nexport const minMonth = 0;\nexport const maxMonth = 11;\n\nexport const currentYear = new Date().getFullYear();\nexport const currentMonth = new Date().getMonth();\nexport const currentDay = new Date().getDate();\n","import { currentYear } from \".\";\n\nexport const getMonthNameProper = (month: number): string => {\n const monthName = new Date(currentYear, month).toLocaleString(\"ru-RU\", {\n month: \"long\",\n });\n return monthName.charAt(0).toUpperCase() + monthName.slice(1);\n};\n","export const getDaysInMonth = (month: number, year: number): number => {\n return new Date(year, month + 1, 0).getDate();\n};\n","export const GenerateArray = (length: number, start: number = 1): number[] =>\n Array.from({ length }, (_, i) => start + i);\n","// src/utils/range/getDaysRange.tsx\n\nimport { IDateItem } from \"~interfaces/Calendar\";\nimport { getDaysInMonth } from \"../getDaysInMonth\";\nimport { GenerateArray } from \"~utils/GenerateArray\";\n\nexport const getDaysRange = ({ day, month, year }: IDateItem<number>) => {\n const start = Math.max(day - 2, 1);\n const end = Math.min(day + 2, getDaysInMonth(month, year));\n\n return GenerateArray(end - start + 1, start);\n};\n","import { maxMonth, minMonth } from \"..\";\nimport { GenerateArray } from \"~utils/GenerateArray\";\n\nexport const getMonthRange = (month: number, year: number): number[] => {\n if (!Number.isInteger(month) || month < 0 || month > 11) {\n throw new Error(`Invalid month: ${month}`);\n }\n if (!Number.isInteger(year)) {\n throw new Error(`Invalid year: ${year}`);\n }\n\n const start = Math.max(month - 2, minMonth);\n const end = Math.min(month + 2, maxMonth);\n\n return GenerateArray(end - start + 1, start);\n};\n","// src/utils/range/getYearRange.tsx\n\nimport { GenerateArray } from \"~utils/GenerateArray\";\nimport { currentYear, minYear } from \"..\";\n\nexport const getYearRange = (year: number): string[] => {\n const start = Math.max(year - 2, minYear);\n const end = Math.min(year + 2, currentYear);\n\n return GenerateArray(end - start + 1, start).map(String);\n};\n","import { ICalendarPeriod } from \"~interfaces/Calendar\";\n\nexport const isValidDateRange = ({ from, to }: ICalendarPeriod): boolean => {\n const fromDate = new Date(from.year, from.month - 1, from.day);\n const toDate = new Date(to.year, to.month - 1, to.day);\n\n return fromDate.getTime() <= toDate.getTime();\n};\n\nexport const isInvalidDateRange = (props: ICalendarPeriod): boolean => {\n return !isValidDateRange(props);\n};\n","export const toPascalCase = (str: string): string =>\n str.toLowerCase().charAt(0).toUpperCase() + str.toLowerCase().slice(1);\n","@import \"src/styles/colors.css\";\n\n.wrapper {\n width: 118px;\n height: 24px;\n display: flex;\n padding: 4px 0px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n flex: 1;\n border-top: 1px solid var(--surface-surface-3-color);\n border-bottom: 1px solid var(--surface-surface-3-color);\n}\n\n.wrapperDay {\n width: 118px;\n}\n\n.wrapperMonth {\n width: 132px;\n}\n\n.wrapperYear {\n width: 118px;\n}\n\n.cover {\n width: 368px;\n height: 128px;\n display: flex;\n align-items: center;\n padding: 8px 0;\n}\n\n.block {\n height: 21px;\n display: flex;\n flex-direction: column;\n align-self: center;\n gap: 4px;\n position: relative;\n top: -58px;\n}\n\n.end {\n top: 58px;\n justify-content: end;\n}\n\n.start {\n top: -58px;\n justify-content: start;\n}\n\n.btn {\n gap: 4px;\n display: flex;\n flex-direction: column;\n padding: 0px;\n}\n\n.currentText {\n display: block;\n margin: 0 auto;\n color: var(--text-primary);\n text-align: center;\n}\n\n.text {\n margin: 0 auto;\n height: 24px;\n color: var(--text-disabled-color);\n text-align: center;\n}\n\n.currentMonth {\n display: block;\n width: 76px;\n}\n\n.currentError {\n color: var(--text-error);\n}\n\n.btnUpAndDown {\n padding: 0px;\n}\n","import React, { Dispatch, SetStateAction } from \"react\";\n\nimport { joinClasses } from \"~utils/joinClasses\";\nimport { convertType } from \"~utils/date/convertType\";\nimport { isInvalidDateRange } from \"~utils/date/range/isValidDateRange\";\n\nimport styles from \"./CalendarFooter.module.css\";\nimport { ICalendarPeriod, IStrictSelectedPeriod } from \"~interfaces/Calendar\";\nimport { Components } from \"~components\";\n\nexport interface IFooterProps {\n selectedCalenderDate: ICalendarPeriod<string>;\n setSelectedPeriod: Dispatch<SetStateAction<IStrictSelectedPeriod>>;\n setIsModalOpen: Dispatch<SetStateAction<boolean>>;\n setSelectedRadioOption: Dispatch<SetStateAction<string>>;\n}\nexport const Footer = ({\n selectedCalenderDate,\n setSelectedPeriod,\n setIsModalOpen,\n setSelectedRadioOption,\n}: IFooterProps) => {\n const updateDate = () => {\n setIsModalOpen(false);\n setSelectedRadioOption(\"custom\");\n const fromDate = [\n selectedCalenderDate.from.year,\n selectedCalenderDate.from.month,\n selectedCalenderDate.from.day,\n ].join(\"-\");\n const toDate = [\n selectedCalenderDate.to.year,\n selectedCalenderDate.to.month,\n selectedCalenderDate.to.day,\n ].join(\"-\");\n\n setSelectedPeriod({\n fromDate: fromDate,\n toDate: toDate,\n periodSelected: true,\n });\n };\n return (\n <>\n {isInvalidDateRange(\n convertType.dateRange.toNumber(selectedCalenderDate)\n ) && (\n <Components.Typography\n className={joinClasses(styles.currentError, styles.textError)}\n data-testid=\"CalendarError_DISCRIPTION\"\n tag=\"span\"\n fontClass=\"Caption1Regular\"\n aria-label=\"Вы ввели некорректную дату, измените данные\"\n >\n Вы ввели некорректную дату, измените данные\n </Components.Typography>\n )}\n <Components.Button\n disabled={isInvalidDateRange(\n convertType.dateRange.toNumber(selectedCalenderDate)\n )}\n className={styles.save}\n size=\"large\"\n onClick={updateDate}\n >\n Сохранить\n </Components.Button>\n </>\n );\n};\n","@import \"src/styles/colors.css\";\n\n.tab {\n width: 368px;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n flex: 1 0 0;\n}\n\n.titleActiv {\n padding: 8px 0px;\n width: 180px;\n color: var(--text-primary);\n text-align: center;\n border-bottom: 2px solid var(--icon-accent-color);\n}\n\n.title {\n width: 180px;\n padding: 8px 0px;\n color: var(--text-disabled-color);\n text-align: center;\n border-bottom: 2px solid var(--surface-surface-3-color);\n}\n\n.titleError {\n text-align: center;\n border-bottom: 2px solid var(--text-error);\n}\n","import React, { Dispatch, SetStateAction } from \"react\";\n\nimport { PERIOD_KEYS } from \"~constants/calendar\";\nimport { joinClasses } from \"~utils/joinClasses\";\nimport { convertType } from \"~utils/date/convertType\";\nimport { isInvalidDateRange } from \"~utils/date/range/isValidDateRange\";\n\nimport styles from \"./CalendarHeader.module.css\";\nimport { ICalendarPeriod, TPeriodKeys } from \"~interfaces/Calendar\";\nimport { Components } from \"~components\";\n\ninterface ICalendarTabs {\n key: TPeriodKeys;\n label: string;\n onClick: () => void;\n}\n\nexport interface IHeaderProps {\n setSelectedPeriodInterval: Dispatch<SetStateAction<TPeriodKeys>>;\n selectedPeriodInterval: TPeriodKeys;\n selectedCalenderDate: ICalendarPeriod<string>;\n}\n\nexport const Header = ({\n setSelectedPeriodInterval,\n selectedPeriodInterval,\n selectedCalenderDate,\n}: IHeaderProps) => {\n const tabs: ICalendarTabs[] = [\n {\n key: PERIOD_KEYS.from,\n label: \"Период с\",\n onClick: () => {\n setSelectedPeriodInterval(PERIOD_KEYS.from);\n },\n },\n {\n key: PERIOD_KEYS.to,\n label: \"Период до\",\n onClick: () => {\n setSelectedPeriodInterval(PERIOD_KEYS.to);\n },\n },\n ];\n return (\n <div data-testid=\"CalendarTab_WRAP\" className={styles.tab}>\n {tabs.map((tab) => (\n <button\n key={tab.key}\n data-testid={`CalendarTabButton_${tab.key.toUpperCase()}`}\n className={joinClasses(\n selectedPeriodInterval === tab.key\n ? styles.titleActiv\n : styles.title,\n isInvalidDateRange(\n convertType.dateRange.toNumber(selectedCalenderDate)\n )\n ? styles.titleError\n : undefined\n )}\n onClick={() => {\n setSelectedPeriodInterval(tab.key);\n }}\n aria-label={`Кнопка ${tab.label}`}\n >\n <Components.Typography\n data-testid={`CalendarTabTitle_${tab.key.toUpperCase()}`}\n tag=\"span\"\n fontClass=\"Body1Medium\"\n aria-label=\"Период с\"\n >\n {tab.label} ...*\n </Components.Typography>\n </button>\n ))}\n </div>\n );\n};\n","import { IPeriodKeys } from \"~interfaces/Calendar\";\n\nexport const PERIOD_KEYS: IPeriodKeys = {\n from: \"from\",\n to: \"to\",\n};\n","@import \"src/styles/colors.css\";\n\n.tab {\n width: 368px;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n flex: 1 0 0;\n}\n\n.titleActiv {\n padding: 8px 0px;\n width: 180px;\n color: var(--text-primary);\n text-align: center;\n border-bottom: 2px solid var(--icon-accent-color);\n}\n\n.title {\n width: 180px;\n padding: 8px 0px;\n color: var(--text-disabled-color);\n text-align: center;\n border-bottom: 2px solid var(--surface-surface-3-color);\n}\n\n.titleError {\n text-align: center;\n border-bottom: 2px solid var(--text-error);\n}\n","import React, {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport { PERIOD_KEYS } from \"~constants/calendar/index\";\n\nimport { convertType } from \"~utils/date/convertType\";\nimport { getValideMonthAndDay } from \"~utils/date/getValideMonth\";\nimport { isValidateDate } from \"~utils/date/isValidateDate\";\nimport { normalizeDayAndMonth } from \"~utils/date/normalizeDayAndMonth\";\n\nimport styles from \"./Main.module.css\";\nimport {\n ICalendarPeriod,\n IDateItem,\n IStrictSelectedPeriod,\n TPeriodKeys,\n TTimeUnit,\n} from \"~interfaces/Calendar\";\nimport { Components } from \"~components\";\n\nexport interface IMainProps {\n setSelectedPeriod: Dispatch<SetStateAction<IStrictSelectedPeriod>>;\n selectedPeriod: IStrictSelectedPeriod;\n setIsModalOpen: Dispatch<SetStateAction<boolean>>;\n setSelectedRadioOption: Dispatch<SetStateAction<string>>;\n}\n\nexport const Main = ({\n setSelectedPeriod,\n selectedPeriod,\n setIsModalOpen,\n setSelectedRadioOption,\n}: IMainProps) => {\n const [selectedCalenderDate, setSelectedCalenderDate] = useState<\n ICalendarPeriod<string>\n >({\n from: {\n day: selectedPeriod.fromDate.split(\"-\")[2],\n month: selectedPeriod.fromDate.split(\"-\")[1],\n year: selectedPeriod.fromDate.split(\"-\")[0],\n },\n to: {\n day: selectedPeriod.toDate.split(\"-\")[2],\n month: selectedPeriod.fromDate.split(\"-\")[1],\n year: selectedPeriod.toDate.split(\"-\")[0],\n },\n });\n const [selectedPeriodInterval, setSelectedPeriodInterval] =\n useState<TPeriodKeys>(PERIOD_KEYS.from);\n\n const [isMouseDown, setIsMouseDown] = useState<IDateItem<boolean>>({\n day: false,\n month: false,\n year: false,\n });\n const [initialY, setInitialY] = useState(0);\n const [distanceTraveled, setDistanceTraveled] = useState(0);\n\n const changeDay = useCallback(\n (direction: number) => {\n const newDay =\n convertType[\"day\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].day\n ) + direction;\n\n const newDate = {\n day: newDay,\n month: convertType[\"month\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n ),\n year: convertType[\"year\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].year\n ),\n };\n if (isValidateDate(newDate)) {\n setSelectedCalenderDate({\n ...selectedCalenderDate,\n [selectedPeriodInterval]: convertType.date.toString(newDate),\n });\n }\n },\n [selectedCalenderDate, selectedPeriodInterval, setSelectedCalenderDate]\n );\n\n const changeMonth = useCallback(\n (direction: number) => {\n const newMonth =\n convertType[\"month\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].month\n ) + direction;\n\n const normalizedDay = normalizeDayAndMonth({\n day: convertType[\"day\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].day\n ),\n month: newMonth,\n year: convertType[\"year\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].year\n ),\n });\n\n const newDate = {\n day: normalizedDay,\n month: newMonth,\n year: convertType[\"year\"].toNumber(\n selectedCalenderDate[selectedPeriodInterval].year\n ),\n };\n if (isValidateDate(newDate)) {\n setSelectedCalenderDate({\n ...selectedCalenderDate,\n [selectedPeriodInterval]: convertType.date.toString(newDate),\n });\n }\n },\n [selectedCalenderDate, selectedPeriodInterval, setSelectedCalenderDate]\n );\n\n const changeYear = useCallback(\n (direction: number) => {\n const newYear =\n convertType.year.toNumber(\n selectedCalenderDate[selectedPeriodInterval].year\n ) + direction;\n\n const newDate = getValideMonthAndDay(\n convertType.date.toNumber({\n day: selectedCalenderDate[selectedPeriodInterval].day,\n month: selectedCalenderDate[selectedPeriodInterval].month,\n year: convertType.year.toString(newYear),\n })\n );\n\n if (isValidateDate(newDate)) {\n setSelectedCalenderDate({\n ...selectedCalenderDate,\n [selectedPeriodInterval]: convertType.date.toString(newDate),\n });\n }\n },\n [selectedCalenderDate, selectedPeriodInterval, setSelectedCalenderDate]\n );\n\n const changeDate = useMemo(\n () => ({\n day: changeDay,\n month: changeMonth,\n year: changeYear,\n }),\n [changeDay, changeMonth, changeYear]\n );\n\n const handleMouseDown = (e: React.MouseEvent, type: TTimeUnit) => {\n const mouseDownActions: { [key in TTimeUnit]: () => void } = {\n day: () => setIsMouseDown((prev) => ({ ...prev, day: true })),\n month: () => setIsMouseDown((prev) => ({ ...prev, month: true })),\n year: () => setIsMouseDown((prev) => ({ ...prev, year: true })),\n };\n mouseDownActions[type] && mouseDownActions[type]();\n setInitialY(e.clientY);\n setDistanceTraveled(0);\n };\n\n const isMouseOverStopButton = (e: MouseEvent) => {\n const button = document.querySelector(\"[aria-disabled=true]\");\n if (!button) return false;\n const rect = button.getBoundingClientRect();\n return (\n e.clientX >= rect.left &&\n e.clientX <= rect.right &&\n e.clientY >= rect.top &&\n e.clientY <= rect.bottom\n );\n };\n\n const handleMouseUp = useCallback(() => {\n setIsMouseDown({\n day: false,\n month: false,\n year: false,\n });\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent, type: \"day\" | \"month\" | \"year\") => {\n if (isMouseOverStopButton(e)) {\n handleMouseUp();\n return;\n }\n\n const deltaY = e.clientY - initialY;\n\n if (!isMouseDown[type]) return;\n\n const distance = Math.abs(deltaY);\n\n if (distance > 5 && distance - distanceTraveled >= 5) {\n changeDate[type](deltaY > 0 ? -1 : 1);\n setDistanceTraveled(distance);\n setInitialY(e.clientY);\n }\n\n if (type === \"year\") {\n setIsMouseDown((prev) => ({ ...prev, year: true }));\n }\n },\n [changeDate, distanceTraveled, handleMouseUp, initialY, isMouseDown]\n );\n\n useEffect(() => {\n const onMouseMoveHandler = (e: MouseEvent) => {\n const timeUnits: TTimeUnit[] = [\"day\", \"month\", \"year\"];\n\n timeUnits.forEach((type) => {\n handleMouseMove(e, type);\n });\n };\n\n document.addEventListener(\"mousemove\", onMouseMoveHandler);\n document.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n document.removeEventListener(\"mousemove\", onMouseMoveHandler);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [handleMouseMove, handleMouseUp]);\n return (\n <div data-testid=\"Calendar_MODAL\" className={styles.modalBlock}>\n <Components.Calendar.Header\n selectedCalenderDate={selectedCalenderDate}\n selectedPeriodInterval={selectedPeriodInterval}\n setSelectedPeriodInterval={setSelectedPeriodInterval}\n />\n <Components.Calendar.Body\n changeDate={changeDate}\n handleMouseDown={handleMouseDown}\n handleMouseUp={handleMouseUp}\n selectedCalenderDate={selectedCalenderDate}\n selectedPeriodInterval={selectedPeriodInterval}\n setDistanceTraveled={setDistanceTraveled}\n setInitialY={setInitialY}\n />\n <Components.Calendar.Footer\n selectedCalenderDate={selectedCalenderDate}\n setIsModalOpen={setIsModalOpen}\n setSelectedPeriod={setSelectedPeriod}\n setSelectedRadioOption={setSelectedRadioOption}\n />\n </div>\n );\n};\n","import { IDateItem } from \"~interfaces/Calendar\";\nimport { currentDay, currentMonth, currentYear } from \".\";\nimport { getDaysInMonth } from \"./getDaysInMonth\";\n\nexport const normalizeDayAndMonth = ({ day, month, year }: IDateItem) => {\n const lastDay = getDaysInMonth(month, year);\n let normalizedDay;\n if (day > lastDay) {\n normalizedDay = lastDay;\n } else {\n normalizedDay = day;\n }\n\n if (\n month === currentMonth &&\n year === currentYear &&\n normalizedDay > currentDay\n ) {\n normalizedDay = currentDay;\n }\n\n return normalizedDay;\n};\n","import { IDateItem } from \"~interfaces/Calendar\";\nimport { currentMonth, currentYear } from \".\";\nimport { normalizeDayAndMonth } from \"./normalizeDayAndMonth\";\n\nexport const getValideMonthAndDay = ({ day, month, year }: IDateItem) => {\n const normalizedMonth =\n currentYear === year && month > currentMonth ? currentMonth : month;\n const normalizedDay = normalizeDayAndMonth({\n day,\n month: normalizedMonth,\n year,\n });\n\n return {\n day: normalizedDay,\n month: normalizedMonth,\n year,\n };\n};\n","import { IDateItem } from \"~interfaces/Calendar\";\nimport { minYear } from \".\";\n\nexport const isValidateDate = (date: IDateItem): boolean => {\n const { day, month, year } = date;\n\n if (year < minYear) return false;\n\n if (month < 0 || month > 11) return false;\n\n const dateObj = new Date(year, month, day);\n\n if (\n dateObj.getFullYear() !== year ||\n dateObj.getMonth() !== month ||\n dateObj.getDate() !== day\n ) {\n return false;\n }\n\n const today = new Date();\n const currentDate = new Date(\n today.getFullYear(),\n today.getMonth(),\n today.getDate()\n );\n\n return dateObj <= currentDate;\n};\n\nexport const isInvalidateDate = (props: IDateItem): boolean => {\n return !isValidateDate(props);\n};\n","@import \"src/styles/colors.css\";\n\n.modalBlock {\n display: flex;\n padding: 16px;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n}\n\n.currentError {\n color: var(--text-error);\n}\n\n.textError {\n padding: 0 0 8px 0;\n}\n\n.save {\n align-self: stretch;\n}\n","import { Body } from './Body';\nimport { Footer } from './Footer';\nimport { Header } from './Header';\nimport { Main } from './Main';\n\nconst Calendar = {\n Body,\n Footer,\n Main,\n Header,\n};\n\nexport { Calendar };\n","// InputField.tsx\nimport React, { forwardRef, HTMLInputTypeAttribute, JSX } from \"react\";\n\nimport { joinClasses } from \"~utils/joinClasses\";\n\nimport styles from \"./InputField.module.css\";\nimport { ClearIcon } from \"~svg\";\n\nexport type TOtpType = \"OTP\" | \"TEXT\";\n\nexport interface IInputFieldProps\n extends React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n > {\n onFocus?: () => void;\n onBlur?: () => void;\n onEnterPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n value?: string;\n placeholder?: string;\n className?: string;\n style?: React.CSSProperties;\n isClearable?: boolean;\n inputLeftIcon?: JSX.Element;\n type?: HTMLInputTypeAttribute;\n id: string;\n labelText?: string;\n ariaLabel: string;\n focused?: boolean;\n setFocused?: (val: boolean) => void;\n readOnly?: boolean;\n inline?: boolean;\n}\n\nexport const InputField = forwardRef<HTMLInputElement, IInputFieldProps>(\n (\n {\n onFocus,\n onBlur,\n onChange,\n onEnterPress,\n value = \"\",\n inputLeftIcon,\n placeholder = \"\",\n className = \"\",\n style,\n isClearable = false,\n type = \"text\",\n id,\n labelText = \"\",\n ariaLabel = \"\",\n focused = false,\n setFocused = () => {},\n readOnly = false,\n inline = true,\n }: IInputFieldProps,\n ref\n ): JSX.Element => {\n const handleClear = () => {\n if (onChange) {\n onChange({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }\n };\n const handleFocus = () => {\n setFocused(true);\n if (onFocus) onFocus();\n };\n const handleBlur = () => {\n setFocused(false);\n if (onBlur) onBlur();\n };\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onEnterPress && event.key === \"Enter\") {\n onEnterPress(event);\n }\n };\n\n return (\n <div\n data-testid=\"InputField_MAIN\"\n className={joinClasses(\n styles[labelText.length ? \"inputContainerLabeled\" : \"inputContainer\"],\n focused ? styles[`input--onfocus`] : undefined,\n styles[`input-${type?.toLocaleLowerCase()}`],\n className\n )}\n style={style}\n >\n <div className={inline && styles.inline}>\n {labelText.length > 0 && (\n <label htmlFor={id} data-testid=\"InputField_LABEL\">\n {labelText}\n </label>\n )}\n {inputLeftIcon}\n <input\n ref={ref}\n data-testid=\"InputField_INPUT\"\n aria-label={ariaLabel}\n id={id}\n type={type}\n className={styles.input}\n placeholder={placeholder}\n aria-placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n value={value}\n readOnly={readOnly}\n />\n </div>\n {isClearable && value && (\n <ClearIcon\n fill=\"red\"\n pathFill=\"#758393\"\n className={styles.clearIcon}\n onClick={handleClear}\n />\n )}\n </div>\n );\n }\n);\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.inputContainer {\n display: flex;\n align-items: center;\n background-color: var(--surface-surface-1);\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.inputContainerLabeled {\n display: flex;\n align-items: center;\n background-color: var(--surface-surface-1);\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.inputContainerLabeled label {\n color: var(--text-secondary);\n}\n\n.input {\n width: 100%;\n border: none;\n background-color: var(--surface-surface-1);\n}\n\n.input:active,\n.input:focus {\n outline: none;\n}\n\n.input::placeholder {\n color: var(--text-disabled-color);\n}\n\n.input::-webkit-inner-spin-button,\n.input::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.clearIcon {\n cursor: pointer;\n}\n\n.input--onfocus {\n background-color: var(--surface-surface-3-color);\n}\n\n.input--onfocus .input {\n background-color: var(--surface-surface-3-color);\n}\n\n.input-text {\n font-family: Inter, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n.inline {\n display: flex;\n gap: 8px;\n}\n","import React from \"react\";\n\nexport const ClearIcon = ({\n fill = \"none\",\n pathFill = \"#fff\",\n width = 20,\n height = 20,\n ...props\n}: React.SVGProps<SVGSVGElement> & { pathFill?: string }) => {\n return (\n <svg\n data-testid=\"Icons_CLEAR\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n fill={fill}\n viewBox=\"0 0 20 20\"\n {...props}\n >\n <path\n fill={pathFill}\n fillRule=\"evenodd\"\n d=\"M10 18.333a8.333 8.333 0 100-16.666 8.333 8.333 0 000 16.666zM7.5 6.027L6.027 7.5l2.5 2.5-2.5 2.5L7.5 13.973l2.5-2.5 2.5 2.5 1.473-1.473-2.5-2.5 2.5-2.5L12.5 6.027l-2.5 2.5-2.5-2.5z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n );\n};\n","import React, { Dispatch, JSX } from \"react\";\nimport Icons from \"@egov3/graphics\";\n\nimport styles from \"./Modal.module.css\";\nimport { joinClasses } from \"~utils/joinClasses\";\nimport { Components } from \"~components\";\n\nexport interface IModalProps {\n open: boolean;\n children: JSX.Element;\n setOpen: Dispatch<React.SetStateAction<boolean>>;\n headerTitle?: string;\n variant: \"large\" | \"small\";\n}\n\nexport const Modal = ({\n open,\n setOpen,\n children,\n headerTitle,\n variant,\n}: IModalProps) => {\n if (open) {\n return (\n <div data-testid=\"Modal_OVERLAY\" className={styles.overlay}>\n <div\n data-testid=\"Modal_WRAPPER\"\n className={joinClasses(\n styles.contentWrap,\n styles[`${variant}Variant`]\n )}\n >\n {headerTitle && headerTitle.length > 0 && (\n <div data-testid=\"Modal_HEADER\" className={styles.contentHeader}>\n <Components.Typography\n tag=\"h3\"\n fontClass=\"Body1Medium\"\n data-testid=\"Modal_TITLE\"\n className={styles.title}\n >\n {headerTitle}\n </Components.Typography>\n <button\n data-testid=\"ModalHeader_BTN\"\n onClick={() => {\n setOpen(!open);\n }}\n >\n <Icons.General.Close data-testid=\"Modal_ICON\" />\n </button>\n </div>\n )}\n {children}\n </div>\n </div>\n );\n } else {\n return null;\n }\n};\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n box-sizing: border-box;\n}\n\n.contentWrap {\n background: var(--page-color-background-white);\n border-radius: 16px;\n height: fit-content;\n animation: flyDawn 1s;\n}\n\n.largeVariant {\n width: 1052px;\n}\n\n.smallVariant {\n width: 400px;\n}\n\n.contentHeader {\n position: relative;\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n padding: 12px 16px;\n}\n\n.title {\n color: var(--text-primary);\n}\n\n@keyframes flyDawn {\n from {\n transform: translateY(-1000px);\n opacity: 0.1;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n","import React from \"react\";\n\nimport styles from \"./RadioGroup.module.css\";\n\nexport interface RadioGroupItem {\n label: string;\n value: string;\n}\n\nexport interface ICustomRadioButtonProps {\n label: string;\n name: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n value: string;\n}\n\nexport interface IRadioGroupProps {\n RadioGroupItems: RadioGroupItem[];\n invokeCustomOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n setSelectedOption: React.Dispatch<React.SetStateAction<string>>;\n selectedOption: string;\n}\n\nexport const CustomRadioButton = ({\n label,\n name,\n checked,\n onChange,\n value,\n}: ICustomRadioButtonProps) => (\n <label data-testid=\"RadioGroupItem_LABEL\" className={styles.radio}>\n <input\n data-testid=\"RadioGroupItem_INPUT\"\n value={value}\n type=\"radio\"\n name={name}\n checked={checked}\n onChange={onChange}\n />\n <span data-testid=\"RadioGroupItem_RADIO\" className={styles.radioBtn}></span>\n <span data-testid=\"RadioGroupItem_TEXT\" className={styles.radioBtnText}>\n {label}\n </span>\n </label>\n);\n\nexport const RadioGroup = ({\n RadioGroupItems,\n invokeCustomOnChange,\n setSelectedOption,\n selectedOption,\n}: IRadioGroupProps) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSelectedOption(event.target.value);\n invokeCustomOnChange(event);\n };\n return (\n <fieldset data-testid=\"RadioGroup_FIELDSET\">\n {RadioGroupItems.map((item) => (\n <CustomRadioButton\n key={item.label}\n label={item.label}\n name=\"radio\"\n checked={selectedOption === item.value}\n onChange={handleChange}\n value={item.value}\n />\n ))}\n </fieldset>\n );\n};\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.radio {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.radio input {\n display: none;\n}\n\n.radioBtn {\n position: relative;\n height: 15px;\n width: 15px;\n border-radius: 50%;\n border: 2px solid var(--button-secondary-on-hover);\n margin: 10px;\n transition: background 0.3s;\n}\n\n.radioBtn::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n height: 10px;\n width: 10px;\n background: var(--button-primary-default);\n border-radius: 50%;\n transform: scale(0) translate(-50%, -50%);\n transition: transform 0.3s;\n}\n\ninput:checked + .radioBtn::after {\n transform: scale(1) translate(-50%, -50%);\n}\n\ninput:checked + .radioBtn {\n border: 2px solid var(--button-primary-default);\n}\n\n.radioBtnText {\n padding-left: 10px;\n width: fit-content;\n font: var(--body2-regular);\n}\n","import React, { Dispatch, SetStateAction } from \"react\";\n\nimport { joinClasses } from \"~utils/joinClasses\";\n\nimport styles from \"./RadioToggle.module.css\";\n\nexport interface IRadioToggleProps {\n lock: boolean;\n setLock: Dispatch<SetStateAction<boolean>>;\n}\n\nexport const RadioToggle = ({ lock, setLock }: IRadioToggleProps) => (\n <button\n data-testid=\"RadioToggle_BUTTON\"\n aria-pressed={lock}\n aria-label=\"Кнопка переключения\"\n onClick={() => {\n setLock(!lock);\n }}\n >\n <div\n data-testid=\"RadioToggle_WRAP\"\n className={joinClasses(styles.wrap, lock && styles.wrapLock)}\n >\n <div data-testid=\"RadioToggle_ROUND\" className={styles.round}></div>\n </div>\n </button>\n);\n","@import \"src/styles/typography.css\";\n@import \"src/styles/colors.css\";\n\n.wrap {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding: 4px;\n width: 32px;\n height: 16px;\n border-radius: 40px;\n background: var(--leaf);\n}\n\n.wrapLock {\n justify-content: flex-start;\n background: var(--surface-surface-3-color);\n}\n\n.round {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--surface-surface-2);\n}\n","import React, { Dispatch, JSX } from \"react\";\nimport Icons from \"@egov3/graphics\";\n\nimport styles from \"./SelectBoxButton.module.css\";\nimport { Components } from \"~components\";\n\nexport interface ISelectBoxProps {\n labelText?: string;\n setIsOpen: Dispatch<React.SetStateAction<boolean>>;\n disabled: boolean;\n error?: boolean;\n modalValue?: string;\n}\n\nexport const SelectBoxButton = ({\n setIsOpen,\n labelText,\n disabled,\n error,\n modalValue,\n}: ISelectBoxProps): JSX.Element => (\n <button\n data-testid=\"SelectBoxModal_BUTTON\"\n className={styles.selectContainer}\n onClick={() => !disabled && setIsOpen(true)}\n >\n <div data-testid=\"SelectBoxModal_TITLE\">\n <Components.Typography\n tag=\"label\"\n fontClass=\"Caption1Regular\"\n data-testid=\"SelectBoxModal_LABEL\"\n className={error ? styles.errorLabel : styles.label}\n aria-label={labelText}\n >\n {labelText}\n </Components.Typography>\n {modalValue && modalValue.length > 0 && (\n <Components.Typography\n tag=\"div\"\n fontClass=\"Body2Regular\"\n data-testid=\"SelectBoxModal_VALUE\"\n className={styles.selectText}\n aria-label={modalValue}\n >\n {modalValue}\n </Components.Typography>\n )}\n </div>\n <Icons.Basic.ChevronDownSmall\n aria-label=\"кнопка развернуть\"\n fill=\"#758393\"\n className={styles.clearIcon}\n />\n </button>\n);\n","@import \"src/styles/colors.css\";\n\n.selectContainer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 56px;\n padding: 8px 16px;\n border-radius: 8px;\n background-color: var(--surface-surface-1);\n gap: 8px;\n}\n\n.label,\n.errorLabel,\n.selectText {\n display: flex;\n align-items: center;\n}\n\n.label {\n color: var(--text-secondary);\n}\n\n.errorLabel {\n color: var(--icon-error-color);\n}\n\n.selectText {\n color: var(--text-primary);\n}\n","// Typography.tsx\nimport React, { FC, JSX } from \"react\";\nimport { joinClasses } from \"~utils/joinClasses\";\n\nimport styles from \"./Typography.module.css\";\n\ntype TFontClass =\n | \"Heading1\"\n | \"Heading3\"\n | \"Subtitles3\"\n | \"Body1Medium\"\n | \"Body1Regular\"\n | \"Body2Medium\"\n | \"Body2Regular\"\n | \"Body3Regular\"\n | \"Caption1Medium\"\n | \"Caption1Regular\"\n | \"Caption1Semibold\"\n | \"Caption2Medium\"\n | \"Caption2Regular\";\n\nexport interface ITypographyProps extends React.HTMLAttributes<HTMLElement> {\n tag: keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>;\n fontClass: TFontClass;\n}\n\nexport const Typography: FC<ITypographyProps> = ({\n tag,\n fontClass,\n className,\n children,\n style,\n ...restProps\n}) =>\n React.createElement(\n tag,\n {\n ...restProps,\n className: joinClasses(fontClass ? styles[fontClass] : \"\", className),\n style,\n },\n children\n );\n","@import \"src/styles/typography.css\";\n\n.Heading1 {\n font: var(--heading1);\n letter-spacing: var(--heading1-letter-spacing);\n}\n\n.Heading3 {\n font: var(--heading3);\n letter-spacing: var(--heading3-letter-spacing);\n}\n\n.Subtitle3 {\n font: var(--subtitle3);\n}\n\n.Body1Medium {\n font: var(--body1-medium);\n}\n\n.Body1Regular {\n font: var(--body1-regular);\n}\n\n.Body2Medium {\n font: var(--body2-medium);\n}\n\n.Body2Regular {\n font: var(--body2-regular);\n}\n\n.Body3Regular {\n font: var(--body3-regular);\n}\n\n.Caption1Medium {\n font: var(--caption1-medium);\n}\n\n.Caption1Regular {\n font: var(--caption1-regular);\n}\n\n.Caption1Semibold {\n font: var(--caption1-semibold);\n}\n\n.Caption2Medium {\n font: var(--caption2-medium);\n}\n\n.Caption2Regular {\n font: var(--caption2-regular);\n}\n","import { Accordion } from \"./Accordion\";\nimport { Button } from \"./Button\";\nimport { Calendar } from \"./Calendar\";\nimport { InputField } from \"./InputField\";\nimport { Modal } from \"./Modal\";\nimport { CustomRadioButton, RadioGroup } from \"./RadioGroup\";\nimport { RadioToggle } from \"./RadioToggle\";\nimport { SelectBoxButton } from \"./SelectBoxButton\";\nimport { Typography } from \"./Typography\";\n\nexport const Components = {\n Accordion,\n Button,\n Calendar,\n CustomRadioButton,\n InputField,\n Modal,\n RadioGroup,\n RadioToggle,\n SelectBoxButton,\n Typography,\n}\n\n","import { Components } from \"./components\";\n\nconst SystemDesign = {\n Components\n} \n\nexport default SystemDesign"],"mappings":"AAAA,OAAOA,MAAyB,QCAhC,IAAAC,EAAA,GCAO,IAAMC,EAAc,IAAIC,IAC7BA,EAAK,OAAQC,GAAS,CAAC,CAACA,CAAI,EAAE,KAAK,GAAG,EFWjC,IAAMC,GAAY,CAAC,CACxB,KAAAC,EACA,QAAAC,EACA,SAAAC,EACA,MAAAC,CACF,IAEIC,EAAA,cAAAA,EAAA,cACEA,EAAA,cAAC,UACC,cAAY,mBACZ,UAAWC,EAAO,aAClB,QAAS,IAAM,CACbJ,EAAQ,CAACD,CAAI,CACf,GAECG,EACDC,EAAA,cAAC,OACC,cAAY,sBACZ,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAO,CACL,UAAYJ,EAAgB,kBAAT,MACrB,GAEAI,EAAA,cAAC,QAAK,EAAE,2CAA2C,OAAO,UAAU,CACtE,CACF,EACAA,EAAA,cAAC,OACC,cAAY,oBACZ,UAAWE,EACTD,EAAO,iBACP,CAACL,GAAQK,EAAO,0BAA0B,CAC5C,GAECH,CACH,CACF,EGnDJ,OAAOK,OAAW,QCAlB,IAAAC,EAAA,GDkBO,IAAMC,GAAS,CAAC,CACrB,QAAAC,EACA,SAAAC,EACA,MAAAC,EACA,UAAAC,EAAY,GACZ,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,QAAAC,EAAU,UACV,KAAAC,EAAO,SACP,UAAAC,EAAY,sCACd,IACEC,GAAA,cAAC,UACC,cAAY,cACZ,aAAYD,EACZ,SAAUH,EACV,gBAAeA,EACf,QAASL,EACT,UAAWU,EACTC,EAAO,QAAQJ,CAAI,EAAE,EACrBH,EACIO,EAAO,gBAAgBJ,CAAI,EAAE,EAC7BI,EAAO,eAAeJ,CAAI,EAAE,EAChCF,EAAWM,EAAO,OAAOL,CAAO,YAAY,EAAIK,EAAO,OAAOL,CAAO,EAAE,EACvEK,EAAO,OACPR,CACF,EACA,MAAOD,GAEND,CACH,EE/CF,OAAOW,OAAW,kBAClB,OAAOC,MAAyC,QCChD,IAAMC,EAAU,CACd,IAAK,CACH,SAAWC,GACF,OAAOA,CAAG,EAAE,SAAS,EAAG,GAAG,EAEpC,SAAWC,GACF,CAACA,CAEZ,EACA,MAAO,CACL,SAAWD,GACF,OAAOA,EAAM,CAAC,EAAE,SAAS,EAAG,GAAG,EAExC,SAAWC,GACF,CAACA,EAAM,CAElB,EACA,KAAM,CACJ,SAAWD,GACF,OAAOA,CAAG,EAEnB,SAAWC,GACF,CAACA,CAEZ,CACF,EACMC,GAAc,CAClB,SAAU,CAAC,CAAE,IAAAC,EAAK,MAAAC,EAAO,KAAAC,CAAK,KAA0B,CACtD,IAAKN,EAAQ,IAAI,SAASI,CAAG,EAC7B,MAAOJ,EAAQ,MAAM,SAASK,CAAK,EACnC,KAAML,EAAQ,KAAK,SAASM,CAAI,CAClC,GACA,SAAU,CAAC,CAAE,IAAAF,EAAK,MAAAC,EAAO,KAAAC,CAAK,KAA0B,CACtD,IAAKN,EAAQ,IAAI,SAASI,CAAG,EAC7B,MAAOJ,EAAQ,MAAM,SAASK,CAAK,EACnC,KAAML,EAAQ,KAAK,SAASM,CAAI,CAClC,EACF,EACMC,GAAmB,CACvB,SAAU,CAAC,CACT,KAAM,CAAE,IAAKC,EAAS,MAAOC,EAAW,KAAMC,CAAS,EACvD,GAAI,CAAE,IAAKC,EAAO,MAAOC,EAAS,KAAMC,CAAO,CACjD,KAAgC,CAC9B,KAAM,CACJ,IAAKb,EAAQ,IAAI,SAASQ,CAAO,EACjC,MAAOR,EAAQ,MAAM,SAASS,CAAS,EACvC,KAAMT,EAAQ,KAAK,SAASU,CAAQ,CACtC,EACA,GAAI,CACF,IAAKV,EAAQ,IAAI,SAASW,CAAK,EAC/B,MAAOX,EAAQ,MAAM,SAASY,CAAO,EACrC,KAAMZ,EAAQ,KAAK,SAASa,CAAM,CACpC,CACF,GACA,SAAU,CAAC,CACT,KAAM,CAAE,IAAKL,EAAS,MAAOC,EAAW,KAAMC,CAAS,EACvD,GAAI,CAAE,IAAKC,EAAO,MAAOC,EAAS,KAAMC,CAAO,CACjD,KAAgC,CAC9B,KAAM,CACJ,IAAKb,EAAQ,IAAI,SAASQ,CAAO,EACjC,MAAOR,EAAQ,MAAM,SAASS,CAAS,EACvC,KAAMT,EAAQ,KAAK,SAASU,CAAQ,CACtC,EACA,GAAI,CACF,IAAKV,EAAQ,IAAI,SAASW,CAAK,EAC/B,MAAOX,EAAQ,MAAM,SAASY,CAAO,EACrC,KAAMZ,EAAQ,KAAK,SAASa,CAAM,CACpC,CACF,EACF,EAEaC,EAAc,CACzB,KAAMX,GACN,UAAWI,GACX,GAAGP,CACL,EC7EO,IAAMe,EAAU,IAAI,KAAK,CAAC,EAAE,YAAY,EAClCC,GAAW,EACXC,GAAW,GAEXC,EAAc,IAAI,KAAK,EAAE,YAAY,EACrCC,EAAe,IAAI,KAAK,EAAE,SAAS,EACnCC,GAAa,IAAI,KAAK,EAAE,QAAQ,ECJtC,IAAMC,GAAsBC,GAA0B,CAC3D,IAAMC,EAAY,IAAI,KAAKC,EAAaF,CAAK,EAAE,eAAe,QAAS,CACrE,MAAO,MACT,CAAC,EACD,OAAOC,EAAU,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAU,MAAM,CAAC,CAC9D,ECPO,IAAME,EAAiB,CAACC,EAAeC,IACrC,IAAI,KAAKA,EAAMD,EAAQ,EAAG,CAAC,EAAE,QAAQ,ECDvC,IAAME,EAAgB,CAACC,EAAgBC,EAAgB,IAC5D,MAAM,KAAK,CAAE,OAAAD,CAAO,EAAG,CAACE,EAAGC,IAAMF,EAAQE,CAAC,ECKrC,IAAMC,GAAe,CAAC,CAAE,IAAAC,EAAK,MAAAC,EAAO,KAAAC,CAAK,IAAyB,CACvE,IAAMC,EAAQ,KAAK,IAAIH,EAAM,EAAG,CAAC,EAC3BI,EAAM,KAAK,IAAIJ,EAAM,EAAGK,EAAeJ,EAAOC,CAAI,CAAC,EAEzD,OAAOI,EAAcF,EAAMD,EAAQ,EAAGA,CAAK,CAC7C,ECRO,IAAMI,GAAgB,CAACC,EAAeC,IAA2B,CACtE,GAAI,CAAC,OAAO,UAAUD,CAAK,GAAKA,EAAQ,GAAKA,EAAQ,GACnD,MAAM,IAAI,MAAM,kBAAkBA,CAAK,EAAE,EAE3C,GAAI,CAAC,OAAO,UAAUC,CAAI,EACxB,MAAM,IAAI,MAAM,iBAAiBA,CAAI,EAAE,EAGzC,IAAMC,EAAQ,KAAK,IAAIF,EAAQ,EAAGG,EAAQ,EACpCC,EAAM,KAAK,IAAIJ,EAAQ,EAAGK,EAAQ,EAExC,OAAOC,EAAcF,EAAMF,EAAQ,EAAGA,CAAK,CAC7C,ECVO,IAAMK,GAAgBC,GAA2B,CACtD,IAAMC,EAAQ,KAAK,IAAID,EAAO,EAAGE,CAAO,EAClCC,EAAM,KAAK,IAAIH,EAAO,EAAGI,CAAW,EAE1C,OAAOC,EAAcF,EAAMF,EAAQ,EAAGA,CAAK,EAAE,IAAI,MAAM,CACzD,ECRO,IAAMK,GAAmB,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAAgC,CAC1E,IAAMC,EAAW,IAAI,KAAKF,EAAK,KAAMA,EAAK,MAAQ,EAAGA,EAAK,GAAG,EACvDG,EAAS,IAAI,KAAKF,EAAG,KAAMA,EAAG,MAAQ,EAAGA,EAAG,GAAG,EAErD,OAAOC,EAAS,QAAQ,GAAKC,EAAO,QAAQ,CAC9C,EAEaC,EAAsBC,GAC1B,CAACN,GAAiBM,CAAK,ECVzB,IAAMC,EAAgBC,GAC3BA,EAAI,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,YAAY,EAAE,MAAM,CAAC,ECDvE,IAAAC,EAAA,GX+BO,IAAMC,GAAO,CAAC,CACnB,WAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,uBAAAC,EACA,oBAAAC,EACA,YAAAC,CACF,IAAkB,CAChB,IAAMC,EAAmC,CACvC,IACEC,EAAY,MAAS,SACnBL,EAAqBC,CAAsB,EAAE,KAC/C,EAAI,GACN,MACEI,EAAY,MAAS,SACnBL,EAAqBC,CAAsB,EAAE,KAC/C,EAAI,EACN,KACEI,EAAY,KAAQ,SAClBL,EAAqBC,CAAsB,EAAE,IAC/C,EAAI,IACR,EACMK,EAAoB,CACxB,IAAMC,GACJP,EAAqBC,CAAsB,EAAE,MAAQM,EACjDC,EAAO,YACPA,EAAO,KACb,MAAQD,GACNA,IACAE,GACEJ,EAAY,MAAM,SAChBL,EAAqBC,CAAsB,EAAE,KAC/C,CACF,EACIS,EAAYF,EAAO,YAAaA,EAAO,YAAY,EACnDA,EAAO,KACb,KAAOD,GACLP,EAAqBC,CAAsB,EAAE,OAASM,EAClDC,EAAO,YACPA,EAAO,IACf,EAEMG,EAAgBC,GACpBP,EAAY,KAAK,SAASL,EAAqBC,CAAsB,EAAE,IAAI,CAC7E,EACMY,EAAiBC,GACrBT,EAAY,MAAM,SAChBL,EAAqBC,CAAsB,EAAE,KAC/C,EACAI,EAAY,KAAK,SAASL,EAAqBC,CAAsB,EAAE,IAAI,CAC7E,EAAE,IAAKc,GAAeN,GAAmBM,CAAU,CAAC,EAC9CC,EAAeC,GACnBZ,EAAY,KAAK,SAASL,EAAqBC,CAAsB,CAAC,CACxE,EAAE,IAAKM,GAASF,EAAY,IAAI,SAASE,CAAI,CAAC,EAExCW,EAAqC,CACzC,KAAMP,EACN,MAAOE,EACP,IAAKG,CACP,EAEMG,EAAc,CAACC,EAAyBC,IAAoB,CAChE,IAAMC,EAAQF,EAAM,OACdG,EAAW,KAAK,IAAID,CAAK,EACzBE,EAAYF,EAAQ,EAAI,EAAI,GAE9BC,EAAW,IACb1B,EAAWwB,CAAI,EAAEG,CAAS,EAE1BtB,EAAoBqB,CAAQ,EAC5BpB,EAAYiB,EAAM,OAAO,EAE7B,EAEMK,EAAmB,CAAC,MAAO,QAAS,MAAM,EAChD,OACEC,EAAA,cAAC,OAAI,cAAY,iBAAiB,UAAWlB,EAAO,OACjDiB,EAAI,IAAKE,GACRD,EAAA,cAAC,OACC,cAAa,WAAWE,EAAaD,CAAQ,CAAC,WAC9C,UAAWjB,EACTF,EAAO,QACP,iBAAiBoB,EAAaD,CAAQ,CAAC,EACzC,EACA,IAAKA,GAELD,EAAA,cAAC,UACC,cAAa,WAAWE,EAAaD,CAAQ,CAAC,YAC9C,QAAS,IAAM9B,EAAW8B,CAAQ,EAAE,EAAE,EACtC,aAAW,sEACX,UAAWnB,EAAO,cAElBkB,EAAA,cAACG,GAAM,MAAM,eAAZ,CAA2B,KAAK,UAAU,CAC7C,EACAH,EAAA,cAAC,OACC,cAAa,WAAWE,EAAaD,CAAQ,CAAC,UAC9C,UAAWjB,EACTF,EAAO,MACPJ,EAAauB,CAAQ,EAAInB,EAAO,IAAMA,EAAO,KAC/C,GAEAkB,EAAA,cAAC,UACC,cAAa,WAAWE,EAAaD,CAAQ,CAAC,UAC9C,YAAcG,GAAMhC,EAAgBgC,EAAGH,CAAQ,EAC/C,UAAW5B,EACX,QAAU+B,GAAMX,EAAYW,EAAGH,CAAQ,EACvC,UAAWnB,EAAO,KAEjBU,EAAcS,CAAQ,EAAE,IAAKpB,GAC5BmB,EAAA,cAACK,EAAW,WAAX,CACC,IAAKxB,EACL,cAAa,WAAWqB,EAAaD,CAAQ,CAAC,QAC9C,IAAI,OACJ,UAAU,eACV,aAAYpB,EACZ,UAAWG,EACTJ,EAAkBqB,CAAQ,EAAEpB,CAAI,EAChCyB,EACE3B,EAAY,UAAU,SAASL,CAAoB,CACrD,EACIQ,EAAO,aACP,MACN,GAECD,CACH,CACD,CACH,CACF,EACAmB,EAAA,cAAC,UACC,cAAa,WAAWE,EAAaD,CAAQ,CAAC,cAC9C,QAAS,IAAM,CACb9B,EAAW8B,CAAQ,EAAE,CAAC,CACxB,EACA,aAAW,gEACX,UAAWnB,EAAO,cAElBkB,EAAA,cAACG,GAAM,MAAM,iBAAZ,CAA6B,KAAK,UAAU,CAC/C,CACF,CACD,CACH,CAEJ,EY/KA,OAAOI,OAAyC,QCAhD,IAAAC,EAAA,GDgBO,IAAMC,GAAS,CAAC,CACrB,qBAAAC,EACA,kBAAAC,EACA,eAAAC,EACA,uBAAAC,CACF,IAAoB,CAClB,IAAMC,EAAa,IAAM,CACvBF,EAAe,EAAK,EACpBC,EAAuB,QAAQ,EAC/B,IAAME,EAAW,CACfL,EAAqB,KAAK,KAC1BA,EAAqB,KAAK,MAC1BA,EAAqB,KAAK,GAC5B,EAAE,KAAK,GAAG,EACJM,EAAS,CACbN,EAAqB,GAAG,KACxBA,EAAqB,GAAG,MACxBA,EAAqB,GAAG,GAC1B,EAAE,KAAK,GAAG,EAEVC,EAAkB,CAChB,SAAUI,EACV,OAAQC,EACR,eAAgB,EAClB,CAAC,CACH,EACA,OACEC,GAAA,cAAAA,GAAA,cACGC,EACCC,EAAY,UAAU,SAAST,CAAoB,CACrD,GACEO,GAAA,cAACG,EAAW,WAAX,CACC,UAAWC,EAAYC,EAAO,aAAcA,EAAO,SAAS,EAC5D,cAAY,4BACZ,IAAI,OACJ,UAAU,kBACV,aAAW,wOACZ,sOAED,EAEFL,GAAA,cAACG,EAAW,OAAX,CACC,SAAUF,EACRC,EAAY,UAAU,SAAST,CAAoB,CACrD,EACA,UAAWY,EAAO,KAClB,KAAK,QACL,QAASR,GACV,wDAED,CACF,CAEJ,EErEA,OAAOS,OAAyC,QCEzC,IAAMC,EAA2B,CACtC,KAAM,OACN,GAAI,IACN,ECLA,IAAAC,EAAA,GFuBO,IAAMC,GAAS,CAAC,CACrB,0BAAAC,EACA,uBAAAC,EACA,qBAAAC,CACF,IAAoB,CAClB,IAAMC,EAAwB,CAC5B,CACE,IAAKC,EAAY,KACjB,MAAO,8CACP,QAAS,IAAM,CACbJ,EAA0BI,EAAY,IAAI,CAC5C,CACF,EACA,CACE,IAAKA,EAAY,GACjB,MAAO,oDACP,QAAS,IAAM,CACbJ,EAA0BI,EAAY,EAAE,CAC1C,CACF,CACF,EACA,OACEC,GAAA,cAAC,OAAI,cAAY,mBAAmB,UAAWC,EAAO,KACnDH,EAAK,IAAKI,GACTF,GAAA,cAAC,UACC,IAAKE,EAAI,IACT,cAAa,qBAAqBA,EAAI,IAAI,YAAY,CAAC,GACvD,UAAWC,EACTP,IAA2BM,EAAI,IAC3BD,EAAO,WACPA,EAAO,MACXG,EACEC,EAAY,UAAU,SAASR,CAAoB,CACrD,EACII,EAAO,WACP,MACN,EACA,QAAS,IAAM,CACbN,EAA0BO,EAAI,GAAG,CACnC,EACA,aAAY,wCAAUA,EAAI,KAAK,IAE/BF,GAAA,cAACM,EAAW,WAAX,CACC,cAAa,oBAAoBJ,EAAI,IAAI,YAAY,CAAC,GACtD,IAAI,OACJ,UAAU,cACV,aAAW,+CAEVA,EAAI,MAAM,OACb,CACF,CACD,CACH,CAEJ,EG7EA,OAAOK,IAGL,eAAAC,EACA,aAAAC,GACA,WAAAC,GACA,YAAAC,MACK,QCHA,IAAMC,GAAuB,CAAC,CAAE,IAAAC,EAAK,MAAAC,EAAO,KAAAC,CAAK,IAAiB,CACvE,IAAMC,EAAUC,EAAeH,EAAOC,CAAI,EACtCG,EACJ,OAAIL,EAAMG,EACRE,EAAgBF,EAEhBE,EAAgBL,EAIhBC,IAAUK,GACVJ,IAASK,GACTF,EAAgBG,KAEhBH,EAAgBG,IAGXH,CACT,EClBO,IAAMI,GAAuB,CAAC,CAAE,IAAAC,EAAK,MAAAC,EAAO,KAAAC,CAAK,IAAiB,CACvE,IAAMC,EACJC,IAAgBF,GAAQD,EAAQI,EAAeA,EAAeJ,EAOhE,MAAO,CACL,IAPoBK,GAAqB,CACzC,IAAAN,EACA,MAAOG,EACP,KAAAD,CACF,CAAC,EAIC,MAAOC,EACP,KAAAD,CACF,CACF,ECfO,IAAMK,GAAkBC,GAA6B,CAC1D,GAAM,CAAE,IAAAC,EAAK,MAAAC,EAAO,KAAAC,CAAK,EAAIH,EAI7B,GAFIG,EAAOC,GAEPF,EAAQ,GAAKA,EAAQ,GAAI,MAAO,GAEpC,IAAMG,EAAU,IAAI,KAAKF,EAAMD,EAAOD,CAAG,EAEzC,GACEI,EAAQ,YAAY,IAAMF,GAC1BE,EAAQ,SAAS,IAAMH,GACvBG,EAAQ,QAAQ,IAAMJ,EAEtB,MAAO,GAGT,IAAMK,EAAQ,IAAI,KACZC,EAAc,IAAI,KACtBD,EAAM,YAAY,EAClBA,EAAM,SAAS,EACfA,EAAM,QAAQ,CAChB,EAEA,OAAOD,GAAWE,CACpB,EC5BA,IAAAC,GAAA,GJiCO,IAAMC,GAAO,CAAC,CACnB,kBAAAC,EACA,eAAAC,EACA,eAAAC,EACA,uBAAAC,CACF,IAAkB,CAChB,GAAM,CAACC,EAAsBC,CAAuB,EAAIC,EAEtD,CACA,KAAM,CACJ,IAAKL,EAAe,SAAS,MAAM,GAAG,EAAE,CAAC,EACzC,MAAOA,EAAe,SAAS,MAAM,GAAG,EAAE,CAAC,EAC3C,KAAMA,EAAe,SAAS,MAAM,GAAG,EAAE,CAAC,CAC5C,EACA,GAAI,CACF,IAAKA,EAAe,OAAO,MAAM,GAAG,EAAE,CAAC,EACvC,MAAOA,EAAe,SAAS,MAAM,GAAG,EAAE,CAAC,EAC3C,KAAMA,EAAe,OAAO,MAAM,GAAG,EAAE,CAAC,CAC1C,CACF,CAAC,EACK,CAACM,EAAwBC,CAAyB,EACtDF,EAAsBG,EAAY,IAAI,EAElC,CAACC,EAAaC,CAAc,EAAIL,EAA6B,CACjE,IAAK,GACL,MAAO,GACP,KAAM,EACR,CAAC,EACK,CAACM,EAAUC,CAAW,EAAIP,EAAS,CAAC,EACpC,CAACQ,EAAkBC,CAAmB,EAAIT,EAAS,CAAC,EAEpDU,EAAYC,EACfC,GAAsB,CAMrB,IAAMC,EAAU,CACd,IALAC,EAAY,IAAO,SACjBhB,EAAqBG,CAAsB,EAAE,GAC/C,EAAIW,EAIJ,MAAOE,EAAY,MAAS,SAC1BhB,EAAqBG,CAAsB,EAAE,KAC/C,EACA,KAAMa,EAAY,KAAQ,SACxBhB,EAAqBG,CAAsB,EAAE,IAC/C,CACF,EACIc,GAAeF,CAAO,GACxBd,EAAwB,CACtB,GAAGD,EACH,CAACG,CAAsB,EAAGa,EAAY,KAAK,SAASD,CAAO,CAC7D,CAAC,CAEL,EACA,CAACf,EAAsBG,EAAwBF,CAAuB,CACxE,EAEMiB,EAAcL,EACjBC,GAAsB,CACrB,IAAMK,EACJH,EAAY,MAAS,SACnBhB,EAAqBG,CAAsB,EAAE,KAC/C,EAAIW,EAYAC,EAAU,CACd,IAXoBK,GAAqB,CACzC,IAAKJ,EAAY,IAAO,SACtBhB,EAAqBG,CAAsB,EAAE,GAC/C,EACA,MAAOgB,EACP,KAAMH,EAAY,KAAQ,SACxBhB,EAAqBG,CAAsB,EAAE,IAC/C,CACF,CAAC,EAIC,MAAOgB,EACP,KAAMH,EAAY,KAAQ,SACxBhB,EAAqBG,CAAsB,EAAE,IAC/C,CACF,EACIc,GAAeF,CAAO,GACxBd,EAAwB,CACtB,GAAGD,EACH,CAACG,CAAsB,EAAGa,EAAY,KAAK,SAASD,CAAO,CAC7D,CAAC,CAEL,EACA,CAACf,EAAsBG,EAAwBF,CAAuB,CACxE,EAEMoB,EAAaR,EAChBC,GAAsB,CACrB,IAAMQ,EACJN,EAAY,KAAK,SACfhB,EAAqBG,CAAsB,EAAE,IAC/C,EAAIW,EAEAC,EAAUQ,GACdP,EAAY,KAAK,SAAS,CACxB,IAAKhB,EAAqBG,CAAsB,EAAE,IAClD,MAAOH,EAAqBG,CAAsB,EAAE,MACpD,KAAMa,EAAY,KAAK,SAASM,CAAO,CACzC,CAAC,CACH,EAEIL,GAAeF,CAAO,GACxBd,EAAwB,CACtB,GAAGD,EACH,CAACG,CAAsB,EAAGa,EAAY,KAAK,SAASD,CAAO,CAC7D,CAAC,CAEL,EACA,CAACf,EAAsBG,EAAwBF,CAAuB,CACxE,EAEMuB,EAAaC,GACjB,KAAO,CACL,IAAKb,EACL,MAAOM,EACP,KAAMG,CACR,GACA,CAACT,EAAWM,EAAaG,CAAU,CACrC,EAEMK,EAAkB,CAACC,EAAqBC,IAAoB,CAChE,IAAMC,EAAuD,CAC3D,IAAK,IAAMtB,EAAgBuB,IAAU,CAAE,GAAGA,EAAM,IAAK,EAAK,EAAE,EAC5D,MAAO,IAAMvB,EAAgBuB,IAAU,CAAE,GAAGA,EAAM,MAAO,EAAK,EAAE,EAChE,KAAM,IAAMvB,EAAgBuB,IAAU,CAAE,GAAGA,EAAM,KAAM,EAAK,EAAE,CAChE,EACAD,EAAiBD,CAAI,GAAKC,EAAiBD,CAAI,EAAE,EACjDnB,EAAYkB,EAAE,OAAO,EACrBhB,EAAoB,CAAC,CACvB,EAEMoB,EAAyBJ,GAAkB,CAC/C,IAAMK,EAAS,SAAS,cAAc,sBAAsB,EAC5D,GAAI,CAACA,EAAQ,MAAO,GACpB,IAAMC,EAAOD,EAAO,sBAAsB,EAC1C,OACEL,EAAE,SAAWM,EAAK,MAClBN,EAAE,SAAWM,EAAK,OAClBN,EAAE,SAAWM,EAAK,KAClBN,EAAE,SAAWM,EAAK,MAEtB,EAEMC,EAAgBrB,EAAY,IAAM,CACtCN,EAAe,CACb,IAAK,GACL,MAAO,GACP,KAAM,EACR,CAAC,CACH,EAAG,CAAC,CAAC,EAEC4B,EAAkBtB,EACtB,CAACc,EAAeC,IAAmC,CACjD,GAAIG,EAAsBJ,CAAC,EAAG,CAC5BO,EAAc,EACd,MACF,CAEA,IAAME,EAAST,EAAE,QAAUnB,EAE3B,GAAI,CAACF,EAAYsB,CAAI,EAAG,OAExB,IAAMS,EAAW,KAAK,IAAID,CAAM,EAE5BC,EAAW,GAAKA,EAAW3B,GAAoB,IACjDc,EAAWI,CAAI,EAAEQ,EAAS,EAAI,GAAK,CAAC,EACpCzB,EAAoB0B,CAAQ,EAC5B5B,EAAYkB,EAAE,OAAO,GAGnBC,IAAS,QACXrB,EAAgBuB,KAAU,CAAE,GAAGA,GAAM,KAAM,EAAK,EAAE,CAEtD,EACA,CAACN,EAAYd,EAAkBwB,EAAe1B,EAAUF,CAAW,CACrE,EAEA,OAAAgC,GAAU,IAAM,CACd,IAAMC,EAAsBZ,GAAkB,CACb,CAAC,MAAO,QAAS,MAAM,EAE5C,QAASC,GAAS,CAC1BO,EAAgBR,EAAGC,CAAI,CACzB,CAAC,CACH,EAEA,gBAAS,iBAAiB,YAAaW,CAAkB,EACzD,SAAS,iBAAiB,UAAWL,CAAa,EAE3C,IAAM,CACX,SAAS,oBAAoB,YAAaK,CAAkB,EAC5D,SAAS,oBAAoB,UAAWL,CAAa,CACvD,CACF,EAAG,CAACC,EAAiBD,CAAa,CAAC,EAEjCM,GAAA,cAAC,OAAI,cAAY,iBAAiB,UAAWC,GAAO,YAClDD,GAAA,cAACE,EAAW,SAAS,OAApB,CACC,qBAAsB1C,EACtB,uBAAwBG,EACxB,0BAA2BC,EAC7B,EACAoC,GAAA,cAACE,EAAW,SAAS,KAApB,CACC,WAAYlB,EACZ,gBAAiBE,EACjB,cAAeQ,EACf,qBAAsBlC,EACtB,uBAAwBG,EACxB,oBAAqBQ,EACrB,YAAaF,EACf,EACA+B,GAAA,cAACE,EAAW,SAAS,OAApB,CACC,qBAAsB1C,EACtB,eAAgBF,EAChB,kBAAmBF,EACnB,uBAAwBG,EAC1B,CACF,CAEJ,EK3PA,IAAM4C,GAAW,CACf,KAAAC,GACA,OAAAC,GACA,KAAAC,GACA,OAAAC,EACF,ECTA,OAAOC,GAAS,cAAAC,OAA+C,QCD/D,IAAAC,EAAA,GCAA,OAAOC,OAAW,QAEX,IAAMC,GAAY,CAAC,CACxB,KAAAC,EAAO,OACP,SAAAC,EAAW,OACX,MAAAC,EAAQ,GACR,OAAAC,EAAS,GACT,GAAGC,CACL,IAEIN,GAAA,cAAC,OACC,cAAY,cACZ,MAAM,6BACN,MAAOI,EACP,OAAQC,EACR,KAAMH,EACN,QAAQ,YACP,GAAGI,GAEJN,GAAA,cAAC,QACC,KAAMG,EACN,SAAS,UACT,EAAE,wLACF,SAAS,UACV,CACH,EFUG,IAAMI,GAAaC,GACxB,CACE,CACE,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,GACR,cAAAC,EACA,YAAAC,EAAc,GACd,UAAAC,EAAY,GACZ,MAAAC,EACA,YAAAC,EAAc,GACd,KAAAC,EAAO,OACP,GAAAC,EACA,UAAAC,EAAY,GACZ,UAAAC,EAAY,GACZ,QAAAC,EAAU,GACV,WAAAC,EAAa,IAAM,CAAC,EACpB,SAAAC,EAAW,GACX,OAAAC,EAAS,EACX,EACAC,IACgB,CAChB,IAAMC,EAAc,IAAM,CACpBjB,GACFA,EAAS,CACP,OAAQ,CAAE,MAAO,EAAG,CACtB,CAAwC,CAE5C,EACMkB,EAAc,IAAM,CACxBL,EAAW,EAAI,EACXf,GAASA,EAAQ,CACvB,EACMqB,EAAa,IAAM,CACvBN,EAAW,EAAK,EACZd,GAAQA,EAAO,CACrB,EACMqB,EAAiBC,GAAiD,CAClEpB,GAAgBoB,EAAM,MAAQ,SAChCpB,EAAaoB,CAAK,CAEtB,EAEA,OACEC,EAAA,cAAC,OACC,cAAY,kBACZ,UAAWC,EACTC,EAAOd,EAAU,OAAS,wBAA0B,gBAAgB,EACpEE,EAAUY,EAAO,gBAAgB,EAAI,OACrCA,EAAO,SAAShB,GAAM,kBAAkB,CAAC,EAAE,EAC3CH,CACF,EACA,MAAOC,GAEPgB,EAAA,cAAC,OAAI,UAAWP,GAAUS,EAAO,QAC9Bd,EAAU,OAAS,GAClBY,EAAA,cAAC,SAAM,QAASb,EAAI,cAAY,oBAC7BC,CACH,EAEDP,EACDmB,EAAA,cAAC,SACC,IAAKN,EACL,cAAY,mBACZ,aAAYL,EACZ,GAAIF,EACJ,KAAMD,EACN,UAAWgB,EAAO,MAClB,YAAapB,EACb,mBAAkBA,EAClB,QAASc,EACT,OAAQC,EACR,SAAUnB,EACV,UAAWoB,EACX,MAAOlB,EACP,SAAUY,EACZ,CACF,EACCP,GAAeL,GACdoB,EAAA,cAACG,GAAA,CACC,KAAK,MACL,SAAS,UACT,UAAWD,EAAO,UAClB,QAASP,EACX,CAEJ,CAEJ,CACF,EG9HA,OAAOS,MAA8B,QACrC,OAAOC,OAAW,kBCDlB,IAAAC,EAAA,GDeO,IAAMC,GAAQ,CAAC,CACpB,KAAAC,EACA,QAAAC,EACA,SAAAC,EACA,YAAAC,EACA,QAAAC,CACF,IACMJ,EAEAK,EAAA,cAAC,OAAI,cAAY,gBAAgB,UAAWC,EAAO,SACjDD,EAAA,cAAC,OACC,cAAY,gBACZ,UAAWE,EACTD,EAAO,YACPA,EAAO,GAAGF,CAAO,SAAS,CAC5B,GAECD,GAAeA,EAAY,OAAS,GACnCE,EAAA,cAAC,OAAI,cAAY,eAAe,UAAWC,EAAO,eAChDD,EAAA,cAACG,EAAW,WAAX,CACC,IAAI,KACJ,UAAU,cACV,cAAY,cACZ,UAAWF,EAAO,OAEjBH,CACH,EACAE,EAAA,cAAC,UACC,cAAY,kBACZ,QAAS,IAAM,CACbJ,EAAQ,CAACD,CAAI,CACf,GAEAK,EAAA,cAACI,GAAM,QAAQ,MAAd,CAAoB,cAAY,aAAa,CAChD,CACF,EAEDP,CACH,CACF,EAGK,KEzDX,OAAOQ,MAAW,QCAlB,IAAAC,GAAA,GDwBO,IAAMC,GAAoB,CAAC,CAChC,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,SAAAC,EACA,MAAAC,CACF,IACEC,EAAA,cAAC,SAAM,cAAY,uBAAuB,UAAWC,GAAO,OAC1DD,EAAA,cAAC,SACC,cAAY,uBACZ,MAAOD,EACP,KAAK,QACL,KAAMH,EACN,QAASC,EACT,SAAUC,EACZ,EACAE,EAAA,cAAC,QAAK,cAAY,uBAAuB,UAAWC,GAAO,SAAU,EACrED,EAAA,cAAC,QAAK,cAAY,sBAAsB,UAAWC,GAAO,cACvDN,CACH,CACF,EAGWO,GAAa,CAAC,CACzB,gBAAAC,EACA,qBAAAC,EACA,kBAAAC,EACA,eAAAC,CACF,IAAwB,CACtB,IAAMC,EAAgBC,GAA+C,CACnEH,EAAkBG,EAAM,OAAO,KAAK,EACpCJ,EAAqBI,CAAK,CAC5B,EACA,OACER,EAAA,cAAC,YAAS,cAAY,uBACnBG,EAAgB,IAAKM,GACpBT,EAAA,cAACN,GAAA,CACC,IAAKe,EAAK,MACV,MAAOA,EAAK,MACZ,KAAK,QACL,QAASH,IAAmBG,EAAK,MACjC,SAAUF,EACV,MAAOE,EAAK,MACd,CACD,CACH,CAEJ,EEvEA,OAAOC,OAAyC,QCAhD,IAAAC,GAAA,GDWO,IAAMC,GAAc,CAAC,CAAE,KAAAC,EAAM,QAAAC,CAAQ,IAC1CC,GAAA,cAAC,UACC,cAAY,qBACZ,eAAcF,EACd,aAAW,gHACX,QAAS,IAAM,CACbC,EAAQ,CAACD,CAAI,CACf,GAEAE,GAAA,cAAC,OACC,cAAY,mBACZ,UAAWC,EAAYC,GAAO,KAAMJ,GAAQI,GAAO,QAAQ,GAE3DF,GAAA,cAAC,OAAI,cAAY,oBAAoB,UAAWE,GAAO,MAAO,CAChE,CACF,EE1BF,OAAOC,MAA8B,QACrC,OAAOC,OAAW,kBCDlB,IAAAC,EAAA,GDcO,IAAMC,GAAkB,CAAC,CAC9B,UAAAC,EACA,UAAAC,EACA,SAAAC,EACA,MAAAC,EACA,WAAAC,CACF,IACEC,EAAA,cAAC,UACC,cAAY,wBACZ,UAAWC,EAAO,gBAClB,QAAS,IAAM,CAACJ,GAAYF,EAAU,EAAI,GAE1CK,EAAA,cAAC,OAAI,cAAY,wBACfA,EAAA,cAACE,EAAW,WAAX,CACC,IAAI,QACJ,UAAU,kBACV,cAAY,uBACZ,UAAWJ,EAAQG,EAAO,WAAaA,EAAO,MAC9C,aAAYL,GAEXA,CACH,EACCG,GAAcA,EAAW,OAAS,GACjCC,EAAA,cAACE,EAAW,WAAX,CACC,IAAI,MACJ,UAAU,eACV,cAAY,uBACZ,UAAWD,EAAO,WAClB,aAAYF,GAEXA,CACH,CAEJ,EACAC,EAAA,cAACG,GAAM,MAAM,iBAAZ,CACC,aAAW,oGACX,KAAK,UACL,UAAWF,EAAO,UACpB,CACF,EEpDF,OAAOG,OAAwB,QCD/B,IAAAC,GAAA,GD0BO,IAAMC,GAAmC,CAAC,CAC/C,IAAAC,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,EACA,MAAAC,EACA,GAAGC,CACL,IACEC,GAAM,cACJN,EACA,CACE,GAAGK,EACH,UAAWE,EAAYN,EAAYO,GAAOP,CAAS,EAAI,GAAIC,CAAS,EACpE,MAAAE,CACF,EACAD,CACF,EEhCK,IAAMM,EAAa,CACxB,UAAAC,GACA,OAAAC,GACA,SAAAC,GACA,kBAAAC,GACA,WAAAC,GACA,MAAAC,GACA,WAAAC,GACA,YAAAC,GACA,gBAAAC,GACA,WAAAC,EACF,ECnBA,IAAMC,GAAgB,CACpB,WAAAC,CACF,EAEOC,GAAQF","names":["React","Accordion_default","joinClasses","args","item","Accordion","open","setOpen","children","title","React","Accordion_default","joinClasses","React","Button_default","Button","onClick","children","style","className","isRounded","disabled","variant","size","ariaLabel","React","joinClasses","Button_default","Icons","React","convert","num","str","convertDate","day","month","year","convertDateRange","fromday","fromMonth","fromYear","toDay","toMonth","toYear","convertType","minYear","minMonth","maxMonth","currentYear","currentMonth","currentDay","getMonthNameProper","month","monthName","currentYear","getDaysInMonth","month","year","GenerateArray","length","start","_","i","getDaysRange","day","month","year","start","end","getDaysInMonth","GenerateArray","getMonthRange","month","year","start","minMonth","end","maxMonth","GenerateArray","getYearRange","year","start","minYear","end","currentYear","GenerateArray","isValidDateRange","from","to","fromDate","toDate","isInvalidDateRange","props","toPascalCase","str","CalendarBody_default","Body","changeDate","handleMouseDown","handleMouseUp","selectedCalenderDate","selectedPeriodInterval","setDistanceTraveled","setInitialY","isEndOrStart","convertType","unitTimeClassname","item","CalendarBody_default","getMonthNameProper","joinClasses","displayedYear","getYearRange","displayedMonth","getMonthRange","monthIndex","displayedDay","getDaysRange","displayedDate","handleWheel","event","type","delta","distance","direction","arr","React","timeUnit","toPascalCase","Icons","e","Components","isInvalidDateRange","React","CalendarFooter_default","Footer","selectedCalenderDate","setSelectedPeriod","setIsModalOpen","setSelectedRadioOption","updateDate","fromDate","toDate","React","isInvalidDateRange","convertType","Components","joinClasses","CalendarFooter_default","React","PERIOD_KEYS","CalendarHeader_default","Header","setSelectedPeriodInterval","selectedPeriodInterval","selectedCalenderDate","tabs","PERIOD_KEYS","React","CalendarHeader_default","tab","joinClasses","isInvalidDateRange","convertType","Components","React","useCallback","useEffect","useMemo","useState","normalizeDayAndMonth","day","month","year","lastDay","getDaysInMonth","normalizedDay","currentMonth","currentYear","currentDay","getValideMonthAndDay","day","month","year","normalizedMonth","currentYear","currentMonth","normalizeDayAndMonth","isValidateDate","date","day","month","year","minYear","dateObj","today","currentDate","Main_default","Main","setSelectedPeriod","selectedPeriod","setIsModalOpen","setSelectedRadioOption","selectedCalenderDate","setSelectedCalenderDate","useState","selectedPeriodInterval","setSelectedPeriodInterval","PERIOD_KEYS","isMouseDown","setIsMouseDown","initialY","setInitialY","distanceTraveled","setDistanceTraveled","changeDay","useCallback","direction","newDate","convertType","isValidateDate","changeMonth","newMonth","normalizeDayAndMonth","changeYear","newYear","getValideMonthAndDay","changeDate","useMemo","handleMouseDown","e","type","mouseDownActions","prev","isMouseOverStopButton","button","rect","handleMouseUp","handleMouseMove","deltaY","distance","useEffect","onMouseMoveHandler","React","Main_default","Components","Calendar","Body","Footer","Main","Header","React","forwardRef","InputField_default","React","ClearIcon","fill","pathFill","width","height","props","InputField","forwardRef","onFocus","onBlur","onChange","onEnterPress","value","inputLeftIcon","placeholder","className","style","isClearable","type","id","labelText","ariaLabel","focused","setFocused","readOnly","inline","ref","handleClear","handleFocus","handleBlur","handleKeyDown","event","React","joinClasses","InputField_default","ClearIcon","React","Icons","Modal_default","Modal","open","setOpen","children","headerTitle","variant","React","Modal_default","joinClasses","Components","Icons","React","RadioGroup_default","CustomRadioButton","label","name","checked","onChange","value","React","RadioGroup_default","RadioGroup","RadioGroupItems","invokeCustomOnChange","setSelectedOption","selectedOption","handleChange","event","item","React","RadioToggle_default","RadioToggle","lock","setLock","React","joinClasses","RadioToggle_default","React","Icons","SelectBoxButton_default","SelectBoxButton","setIsOpen","labelText","disabled","error","modalValue","React","SelectBoxButton_default","Components","Icons","React","Typography_default","Typography","tag","fontClass","className","children","style","restProps","React","joinClasses","Typography_default","Components","Accordion","Button","Calendar","CustomRadioButton","InputField","Modal","RadioGroup","RadioToggle","SelectBoxButton","Typography","SystemDesign","Components","index_default"]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@egov3/system-design",
|
|
3
|
-
"version": "
|
|
4
|
-
"main": "dist/
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"version": "2.1.47",
|
|
4
|
+
"main": "dist/index.cjs",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"author": "Zhassulan Baigozha",
|
|
9
|
+
"license": "ISC",
|
|
10
|
+
"description": "A system-design NPM package in Typescript",
|
|
7
11
|
"files": [
|
|
8
12
|
"dist"
|
|
9
13
|
],
|
|
@@ -12,17 +16,12 @@
|
|
|
12
16
|
"url": "https://github.com/egov3/system-design.git"
|
|
13
17
|
},
|
|
14
18
|
"scripts": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
19
|
+
"rebuild": "rm -rf node_modules dist && yarn cache clean && yarn install && yarn build",
|
|
20
|
+
"build": "tsup",
|
|
21
|
+
"depcheck": "depcheck",
|
|
22
|
+
"prepublishOnly": "yarn build",
|
|
17
23
|
"sb": "storybook dev -p 6006",
|
|
18
|
-
"
|
|
19
|
-
},
|
|
20
|
-
"author": "Zhassulan Baigozha",
|
|
21
|
-
"license": "ISC",
|
|
22
|
-
"description": "A system-design NPM package in Typescript",
|
|
23
|
-
"peerDependencies": {
|
|
24
|
-
"react": "18.2.0",
|
|
25
|
-
"react-dom": "18.2.0"
|
|
24
|
+
"test": "jest"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"@babel/core": "^7.16.0",
|
|
@@ -31,43 +30,48 @@
|
|
|
31
30
|
"@babel/preset-typescript": "^7.16.0",
|
|
32
31
|
"@chromatic-com/storybook": "^3.2.4",
|
|
33
32
|
"@mdx-js/react": "^2.1.2",
|
|
34
|
-
"@rollup/plugin-commonjs": "^21.0.1",
|
|
35
|
-
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
36
|
-
"@rollup/plugin-typescript": "^8.3.0",
|
|
37
33
|
"@storybook/addon-actions": "^8.5.2",
|
|
38
34
|
"@storybook/addon-essentials": "^8.5.2",
|
|
39
35
|
"@storybook/addon-links": "^8.5.2",
|
|
40
36
|
"@storybook/addon-webpack5-compiler-babel": "^3.0.5",
|
|
37
|
+
"@storybook/core": "^8.6.4",
|
|
41
38
|
"@storybook/mdx2-csf": "^1.1.0",
|
|
42
39
|
"@storybook/preset-scss": "^1.0.3",
|
|
43
40
|
"@storybook/react": "^8.5.2",
|
|
44
41
|
"@storybook/react-webpack5": "^8.5.2",
|
|
45
42
|
"@storybook/test": "^8.5.2",
|
|
46
|
-
"@testing-library/
|
|
43
|
+
"@testing-library/dom": "^10.4.0",
|
|
44
|
+
"@testing-library/react": "^16.2.0",
|
|
45
|
+
"@types/css-modules": "^1.0.5",
|
|
47
46
|
"@types/jest": "^28.1.6",
|
|
48
|
-
"@types/
|
|
47
|
+
"@types/node": "^22.13.10",
|
|
48
|
+
"@types/react": "^19.0.10",
|
|
49
|
+
"@types/react-dom": "^19.0.4",
|
|
49
50
|
"babel-jest": "^27.3.1",
|
|
50
51
|
"babel-loader": "^8.2.3",
|
|
51
52
|
"css-loader": "^6.5.1",
|
|
53
|
+
"depcheck": "^1.4.7",
|
|
54
|
+
"esbuild": "^0.25.1",
|
|
55
|
+
"esbuild-sass-plugin": "^3.3.1",
|
|
52
56
|
"html-webpack-plugin": "^5.5.0",
|
|
53
57
|
"identity-obj-proxy": "^3.0.0",
|
|
54
58
|
"jest": "^28.1.3",
|
|
55
59
|
"postcss": "^8.5.3",
|
|
56
60
|
"postcss-loader": "^8.1.1",
|
|
57
|
-
"react": "^
|
|
58
|
-
"react-dom": "^
|
|
59
|
-
"rollup": "^2.60.0",
|
|
60
|
-
"rollup-plugin-dts": "^4.0.1",
|
|
61
|
-
"rollup-plugin-postcss": "^4.0.2",
|
|
61
|
+
"react": "^19.0.0",
|
|
62
|
+
"react-dom": "^19.0.0",
|
|
62
63
|
"sass": "^1.85.1",
|
|
63
|
-
"sass-
|
|
64
|
+
"sass-embedded": "^1.85.1",
|
|
65
|
+
"sass-loader": "^16.0.5",
|
|
64
66
|
"storybook": "^8.5.2",
|
|
65
67
|
"style-loader": "^3.3.1",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
+
"tsup": "^8.4.0",
|
|
69
|
+
"typescript": "^5.8.2",
|
|
70
|
+
"typescript-plugin-css-modules": "^5.1.0",
|
|
71
|
+
"webpack": "^5.98.0"
|
|
68
72
|
},
|
|
69
73
|
"dependencies": {
|
|
70
|
-
"@egov3/
|
|
74
|
+
"@egov3/graphics": "^1.0.48",
|
|
71
75
|
"tsconfig-paths-webpack-plugin": "^4.2.0"
|
|
72
76
|
}
|
|
73
77
|
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch } from "react";
|
|
2
|
-
export interface IAccordionProps {
|
|
3
|
-
open: boolean;
|
|
4
|
-
setOpen: Dispatch<React.SetStateAction<boolean>>;
|
|
5
|
-
children: React.ReactNode;
|
|
6
|
-
title: React.JSX.Element;
|
|
7
|
-
}
|
|
8
|
-
export declare const Accordion: ({ open, setOpen, children, title, }: IAccordionProps) => React.JSX.Element;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export interface IButtonProps {
|
|
3
|
-
ariaLabel?: string;
|
|
4
|
-
onClick?: () => void;
|
|
5
|
-
children: React.ReactNode;
|
|
6
|
-
className?: string;
|
|
7
|
-
isRounded?: boolean;
|
|
8
|
-
disabled?: boolean;
|
|
9
|
-
variant?: 'default' | 'tinted' | 'secondary';
|
|
10
|
-
size?: 'mini' | 'small' | 'medium' | 'large';
|
|
11
|
-
style?: React.CSSProperties;
|
|
12
|
-
}
|
|
13
|
-
export declare const Button: ({ onClick, children, style, className, isRounded, disabled, variant, size, ariaLabel, }: IButtonProps) => React.JSX.Element;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction } from "react";
|
|
2
|
-
import { ICalendarPeriod, IDateItem, TPeriodKeys, TTimeUnit } from "~interfaces/Calendar";
|
|
3
|
-
export interface IBodyProps {
|
|
4
|
-
changeDate: IDateItem<(direction: number) => void>;
|
|
5
|
-
handleMouseDown: (e: React.MouseEvent, type: TTimeUnit) => void;
|
|
6
|
-
handleMouseUp: () => void;
|
|
7
|
-
selectedCalenderDate: ICalendarPeriod<string>;
|
|
8
|
-
selectedPeriodInterval: TPeriodKeys;
|
|
9
|
-
setDistanceTraveled: Dispatch<SetStateAction<number>>;
|
|
10
|
-
setInitialY: Dispatch<SetStateAction<number>>;
|
|
11
|
-
}
|
|
12
|
-
export declare const Body: ({ changeDate, handleMouseDown, handleMouseUp, selectedCalenderDate, selectedPeriodInterval, setDistanceTraveled, setInitialY, }: IBodyProps) => React.JSX.Element;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction } from "react";
|
|
2
|
-
import { ICalendarPeriod, IStrictSelectedPeriod } from "~interfaces/Calendar";
|
|
3
|
-
export interface IFooterProps {
|
|
4
|
-
selectedCalenderDate: ICalendarPeriod<string>;
|
|
5
|
-
setSelectedPeriod: Dispatch<SetStateAction<IStrictSelectedPeriod>>;
|
|
6
|
-
setIsModalOpen: Dispatch<SetStateAction<boolean>>;
|
|
7
|
-
setSelectedRadioOption: Dispatch<SetStateAction<string>>;
|
|
8
|
-
}
|
|
9
|
-
export declare const Footer: ({ selectedCalenderDate, setSelectedPeriod, setIsModalOpen, setSelectedRadioOption, }: IFooterProps) => React.JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction } from "react";
|
|
2
|
-
import { ICalendarPeriod, TPeriodKeys } from "~interfaces/Calendar";
|
|
3
|
-
export interface IHeaderProps {
|
|
4
|
-
setSelectedPeriodInterval: Dispatch<SetStateAction<TPeriodKeys>>;
|
|
5
|
-
selectedPeriodInterval: TPeriodKeys;
|
|
6
|
-
selectedCalenderDate: ICalendarPeriod<string>;
|
|
7
|
-
}
|
|
8
|
-
export declare const Header: ({ setSelectedPeriodInterval, selectedPeriodInterval, selectedCalenderDate, }: IHeaderProps) => React.JSX.Element;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch, SetStateAction } from "react";
|
|
2
|
-
import { IStrictSelectedPeriod } from "~interfaces/Calendar";
|
|
3
|
-
export interface IMainProps {
|
|
4
|
-
setSelectedPeriod: Dispatch<SetStateAction<IStrictSelectedPeriod>>;
|
|
5
|
-
selectedPeriod: IStrictSelectedPeriod;
|
|
6
|
-
setIsModalOpen: Dispatch<SetStateAction<boolean>>;
|
|
7
|
-
setSelectedRadioOption: Dispatch<SetStateAction<string>>;
|
|
8
|
-
}
|
|
9
|
-
export declare const Main: ({ setSelectedPeriod, selectedPeriod, setIsModalOpen, setSelectedRadioOption, }: IMainProps) => React.JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
declare const Calendar: {
|
|
3
|
-
Body: ({ changeDate, handleMouseDown, handleMouseUp, selectedCalenderDate, selectedPeriodInterval, setDistanceTraveled, setInitialY, }: import("./Body").IBodyProps) => import("react").JSX.Element;
|
|
4
|
-
Footer: ({ selectedCalenderDate, setSelectedPeriod, setIsModalOpen, setSelectedRadioOption, }: import("./Footer").IFooterProps) => import("react").JSX.Element;
|
|
5
|
-
Main: ({ setSelectedPeriod, selectedPeriod, setIsModalOpen, setSelectedRadioOption, }: import("./Main").IMainProps) => import("react").JSX.Element;
|
|
6
|
-
Header: ({ setSelectedPeriodInterval, selectedPeriodInterval, selectedCalenderDate, }: import("./Header").IHeaderProps) => import("react").JSX.Element;
|
|
7
|
-
};
|
|
8
|
-
export { Calendar };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import React, { HTMLInputTypeAttribute } from "react";
|
|
2
|
-
export type TOtpType = "OTP" | "TEXT";
|
|
3
|
-
export interface IInputFieldProps extends React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> {
|
|
4
|
-
onFocus?: () => void;
|
|
5
|
-
onBlur?: () => void;
|
|
6
|
-
onEnterPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
7
|
-
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
8
|
-
value?: string;
|
|
9
|
-
placeholder?: string;
|
|
10
|
-
className?: string;
|
|
11
|
-
style?: React.CSSProperties;
|
|
12
|
-
isClearable?: boolean;
|
|
13
|
-
inputLeftIcon?: JSX.Element;
|
|
14
|
-
type?: HTMLInputTypeAttribute;
|
|
15
|
-
id: string;
|
|
16
|
-
labelText?: string;
|
|
17
|
-
ariaLabel: string;
|
|
18
|
-
focused?: boolean;
|
|
19
|
-
setFocused?: (val: boolean) => void;
|
|
20
|
-
readOnly?: boolean;
|
|
21
|
-
}
|
|
22
|
-
export declare const InputField: React.ForwardRefExoticComponent<Omit<IInputFieldProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch } from "react";
|
|
2
|
-
export interface IModalProps {
|
|
3
|
-
open: boolean;
|
|
4
|
-
children: JSX.Element;
|
|
5
|
-
setOpen: Dispatch<React.SetStateAction<boolean>>;
|
|
6
|
-
headerTitle?: string;
|
|
7
|
-
variant: "large" | "small";
|
|
8
|
-
}
|
|
9
|
-
export declare const Modal: ({ open, setOpen, children, headerTitle, variant, }: IModalProps) => React.JSX.Element | null;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface RadioGroupItem {
|
|
3
|
-
label: string;
|
|
4
|
-
value: string;
|
|
5
|
-
}
|
|
6
|
-
export interface ICustomRadioButtonProps {
|
|
7
|
-
label: string;
|
|
8
|
-
name: string;
|
|
9
|
-
checked: boolean;
|
|
10
|
-
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
11
|
-
value: string;
|
|
12
|
-
}
|
|
13
|
-
export interface IRadioGroupProps {
|
|
14
|
-
RadioGroupItems: RadioGroupItem[];
|
|
15
|
-
invokeCustomOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
16
|
-
setSelectedOption: React.Dispatch<React.SetStateAction<string>>;
|
|
17
|
-
selectedOption: string;
|
|
18
|
-
}
|
|
19
|
-
export declare const CustomRadioButton: ({ label, name, checked, onChange, value, }: ICustomRadioButtonProps) => React.JSX.Element;
|
|
20
|
-
export declare const RadioGroup: ({ RadioGroupItems, invokeCustomOnChange, setSelectedOption, selectedOption, }: IRadioGroupProps) => React.JSX.Element;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React, { Dispatch } from "react";
|
|
2
|
-
export interface ISelectBoxProps {
|
|
3
|
-
labelText?: string;
|
|
4
|
-
setIsOpen: Dispatch<React.SetStateAction<boolean>>;
|
|
5
|
-
disabled: boolean;
|
|
6
|
-
error?: boolean;
|
|
7
|
-
modalValue?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare const SelectBoxButton: ({ setIsOpen, labelText, disabled, error, modalValue, }: ISelectBoxProps) => JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React, { FC } from "react";
|
|
2
|
-
type TFontClass = "Heading1" | "Heading3" | "Subtitles3" | "Body1Medium" | "Body1Regular" | "Body2Medium" | "Body2Regular" | "Body3Regular" | "Caption1Medium" | "Caption1Regular" | "Caption1Semibold" | "Caption2Medium" | "Caption2Regular";
|
|
3
|
-
export interface ITypographyProps extends React.HTMLAttributes<HTMLElement> {
|
|
4
|
-
tag: keyof JSX.IntrinsicElements | React.JSXElementConstructor<any>;
|
|
5
|
-
fontClass: TFontClass;
|
|
6
|
-
}
|
|
7
|
-
export declare const Typography: FC<ITypographyProps>;
|
|
8
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { Button } from "./Button";
|
|
3
|
-
export declare const Components: {
|
|
4
|
-
Accordion: ({ open, setOpen, children, title, }: import("./Accordion").IAccordionProps) => import("react").JSX.Element;
|
|
5
|
-
Button: ({ onClick, children, style, className, isRounded, disabled, variant, size, ariaLabel, }: import("./Button").IButtonProps) => import("react").JSX.Element;
|
|
6
|
-
Calendar: {
|
|
7
|
-
Body: ({ changeDate, handleMouseDown, handleMouseUp, selectedCalenderDate, selectedPeriodInterval, setDistanceTraveled, setInitialY, }: import("./Calendar/Body").IBodyProps) => import("react").JSX.Element;
|
|
8
|
-
Footer: ({ selectedCalenderDate, setSelectedPeriod, setIsModalOpen, setSelectedRadioOption, }: import("./Calendar/Footer").IFooterProps) => import("react").JSX.Element;
|
|
9
|
-
Main: ({ setSelectedPeriod, selectedPeriod, setIsModalOpen, setSelectedRadioOption, }: import("./Calendar/Main").IMainProps) => import("react").JSX.Element;
|
|
10
|
-
Header: ({ setSelectedPeriodInterval, selectedPeriodInterval, selectedCalenderDate, }: import("./Calendar/Header").IHeaderProps) => import("react").JSX.Element;
|
|
11
|
-
};
|
|
12
|
-
CustomRadioButton: ({ label, name, checked, onChange, value, }: import("./RadioGroup").ICustomRadioButtonProps) => import("react").JSX.Element;
|
|
13
|
-
InputField: import("react").ForwardRefExoticComponent<Omit<import("./InputField").IInputFieldProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
14
|
-
Modal: ({ open, setOpen, children, headerTitle, variant, }: import("./Modal").IModalProps) => import("react").JSX.Element | null;
|
|
15
|
-
RadioGroup: ({ RadioGroupItems, invokeCustomOnChange, setSelectedOption, selectedOption, }: import("./RadioGroup").IRadioGroupProps) => import("react").JSX.Element;
|
|
16
|
-
RadioToggle: ({ lock, setLock }: import("./RadioToggle").IRadioToggleProps) => import("react").JSX.Element;
|
|
17
|
-
SelectBoxButton: ({ setIsOpen, labelText, disabled, error, modalValue, }: import("./SelectBoxButton").ISelectBoxProps) => JSX.Element;
|
|
18
|
-
Typography: import("react").FC<import("./Typography").ITypographyProps>;
|
|
19
|
-
};
|
|
20
|
-
export { Button };
|