@egov3/system-design 2.1.49 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +26 -29
  2. package/dist/cjs/components/Accordion/index.d.ts +8 -0
  3. package/dist/cjs/components/Button/index.d.ts +13 -0
  4. package/dist/cjs/components/Calendar/Body/index.d.ts +12 -0
  5. package/dist/cjs/components/Calendar/Footer/index.d.ts +9 -0
  6. package/dist/cjs/components/Calendar/Header/index.d.ts +8 -0
  7. package/dist/cjs/components/Calendar/Main/index.d.ts +9 -0
  8. package/dist/cjs/components/Calendar/index.d.ts +8 -0
  9. package/dist/cjs/components/InputField/index.d.ts +22 -0
  10. package/dist/cjs/components/Modal/index.d.ts +9 -0
  11. package/dist/cjs/components/RadioGroup/index.d.ts +20 -0
  12. package/dist/cjs/components/RadioToggle/index.d.ts +6 -0
  13. package/dist/cjs/components/SelectBoxButton/index.d.ts +9 -0
  14. package/dist/cjs/components/Typography/index.d.ts +8 -0
  15. package/dist/cjs/components/index.d.ts +20 -0
  16. package/dist/cjs/constants/calendar/index.d.ts +2 -0
  17. package/dist/cjs/index.d.ts +21 -0
  18. package/dist/cjs/index.js +3496 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/interfaces/Calendar.d.ts +24 -0
  21. package/dist/cjs/stories/Accordion.stories.d.ts +7 -0
  22. package/dist/cjs/stories/Button.stories.d.ts +28 -0
  23. package/dist/cjs/stories/Calendar.stories.d.ts +6 -0
  24. package/dist/cjs/stories/CardWrapperItem.d.ts +4 -0
  25. package/dist/cjs/stories/InputField.stories.d.ts +22 -0
  26. package/dist/cjs/stories/Modal.stories.d.ts +8 -0
  27. package/dist/cjs/stories/RadioGroup.stories.d.ts +23 -0
  28. package/dist/cjs/stories/RadioToggle.stories.d.ts +13 -0
  29. package/dist/cjs/stories/Typography.stories.d.ts +12 -0
  30. package/dist/cjs/svg/ClearIcon.d.ts +4 -0
  31. package/dist/cjs/svg/index.d.ts +2 -0
  32. package/dist/cjs/utils/CreateArray.d.ts +1 -0
  33. package/dist/cjs/utils/GenerateArray.d.ts +1 -0
  34. package/dist/cjs/utils/date/convertType.d.ts +53 -0
  35. package/dist/cjs/utils/date/formatDate.d.ts +1 -0
  36. package/dist/cjs/utils/date/getDaysInMonth.d.ts +1 -0
  37. package/dist/cjs/utils/date/getMonthNameProper.d.ts +1 -0
  38. package/dist/cjs/utils/date/getValideMonth.d.ts +6 -0
  39. package/dist/cjs/utils/date/index.d.ts +6 -0
  40. package/dist/cjs/utils/date/inverseDate.d.ts +1 -0
  41. package/dist/cjs/utils/date/isValidateDate.d.ts +3 -0
  42. package/dist/cjs/utils/date/normalizeDayAndMonth.d.ts +2 -0
  43. package/dist/cjs/utils/date/range/getDaysRange.d.ts +2 -0
  44. package/dist/cjs/utils/date/range/getMonthRange.d.ts +1 -0
  45. package/dist/cjs/utils/date/range/getYearRange.d.ts +1 -0
  46. package/dist/cjs/utils/date/range/isValidDateRange.d.ts +3 -0
  47. package/dist/cjs/utils/joinClasses.d.ts +1 -0
  48. package/dist/cjs/utils/string/SetCharAt.d.ts +1 -0
  49. package/dist/cjs/utils/string/toPascalCase.d.ts +1 -0
  50. package/dist/esm/components/Accordion/index.d.ts +8 -0
  51. package/dist/esm/components/Button/index.d.ts +13 -0
  52. package/dist/esm/components/Calendar/Body/index.d.ts +12 -0
  53. package/dist/esm/components/Calendar/Footer/index.d.ts +9 -0
  54. package/dist/esm/components/Calendar/Header/index.d.ts +8 -0
  55. package/dist/esm/components/Calendar/Main/index.d.ts +9 -0
  56. package/dist/esm/components/Calendar/index.d.ts +8 -0
  57. package/dist/esm/components/InputField/index.d.ts +22 -0
  58. package/dist/esm/components/Modal/index.d.ts +9 -0
  59. package/dist/esm/components/RadioGroup/index.d.ts +20 -0
  60. package/dist/esm/components/RadioToggle/index.d.ts +6 -0
  61. package/dist/esm/components/SelectBoxButton/index.d.ts +9 -0
  62. package/dist/esm/components/Typography/index.d.ts +8 -0
  63. package/dist/esm/components/index.d.ts +20 -0
  64. package/dist/esm/constants/calendar/index.d.ts +2 -0
  65. package/dist/{index.d.ts → esm/index.d.ts} +6 -30
  66. package/dist/esm/index.js +3494 -0
  67. package/dist/esm/index.js.map +1 -0
  68. package/dist/esm/interfaces/Calendar.d.ts +24 -0
  69. package/dist/esm/stories/Accordion.stories.d.ts +7 -0
  70. package/dist/esm/stories/Button.stories.d.ts +28 -0
  71. package/dist/esm/stories/Calendar.stories.d.ts +6 -0
  72. package/dist/esm/stories/CardWrapperItem.d.ts +4 -0
  73. package/dist/esm/stories/InputField.stories.d.ts +22 -0
  74. package/dist/esm/stories/Modal.stories.d.ts +8 -0
  75. package/dist/esm/stories/RadioGroup.stories.d.ts +23 -0
  76. package/dist/esm/stories/RadioToggle.stories.d.ts +13 -0
  77. package/dist/esm/stories/Typography.stories.d.ts +12 -0
  78. package/dist/esm/svg/ClearIcon.d.ts +4 -0
  79. package/dist/esm/svg/index.d.ts +2 -0
  80. package/dist/esm/utils/CreateArray.d.ts +1 -0
  81. package/dist/esm/utils/GenerateArray.d.ts +1 -0
  82. package/dist/esm/utils/date/convertType.d.ts +53 -0
  83. package/dist/esm/utils/date/formatDate.d.ts +1 -0
  84. package/dist/esm/utils/date/getDaysInMonth.d.ts +1 -0
  85. package/dist/esm/utils/date/getMonthNameProper.d.ts +1 -0
  86. package/dist/esm/utils/date/getValideMonth.d.ts +6 -0
  87. package/dist/esm/utils/date/index.d.ts +6 -0
  88. package/dist/esm/utils/date/inverseDate.d.ts +1 -0
  89. package/dist/esm/utils/date/isValidateDate.d.ts +3 -0
  90. package/dist/esm/utils/date/normalizeDayAndMonth.d.ts +2 -0
  91. package/dist/esm/utils/date/range/getDaysRange.d.ts +2 -0
  92. package/dist/esm/utils/date/range/getMonthRange.d.ts +1 -0
  93. package/dist/esm/utils/date/range/getYearRange.d.ts +1 -0
  94. package/dist/esm/utils/date/range/isValidDateRange.d.ts +3 -0
  95. package/dist/esm/utils/joinClasses.d.ts +1 -0
  96. package/dist/esm/utils/string/SetCharAt.d.ts +1 -0
  97. package/dist/esm/utils/string/toPascalCase.d.ts +1 -0
  98. package/package.json +24 -32
  99. package/dist/index.cjs +0 -2
  100. package/dist/index.cjs.map +0 -1
  101. package/dist/index.css +0 -2
  102. package/dist/index.css.map +0 -1
  103. package/dist/index.d.cts +0 -164
  104. package/dist/index.js +0 -2
  105. package/dist/index.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
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":"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","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"]}