@scbt-ecom/ui 0.155.0 → 0.156.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/lib/exports/widget.js +1 -1
  2. package/dist/lib/next/utils/hasWidget.js.map +1 -1
  3. package/dist/lib/next/utils/hideWidgetsWithQueryParams.js.map +1 -1
  4. package/dist/lib/next/utils/isEmptyWidgetList.js.map +1 -1
  5. package/dist/lib/next/utils/orderWidgetWithQueryParams.js.map +1 -1
  6. package/dist/lib/shared/hooks/useObserverWidgets.js.map +1 -1
  7. package/dist/lib/shared/ui/button/model/helpers.js.map +1 -1
  8. package/dist/lib/shared/ui/calendar/Calendar.js +1 -1
  9. package/dist/lib/shared/ui/calendar/Calendar.js.map +1 -1
  10. package/dist/lib/shared/ui/calendar/ui/MonthCaption.js +1 -1
  11. package/dist/lib/shared/ui/calendar/ui/MonthCaption.js.map +1 -1
  12. package/dist/lib/shared/ui/calendar/ui/Weekday.js.map +1 -1
  13. package/dist/lib/shared/ui/calendar/ui/model/utils.js.map +1 -1
  14. package/dist/lib/shared/ui/calendar/ui/selectDate/SelectDate.js +1 -1
  15. package/dist/lib/shared/ui/calendar/ui/selectDate/SelectDate.js.map +1 -1
  16. package/dist/lib/shared/ui/calendar/ui/selectDate/ui/Trigger.js +1 -1
  17. package/dist/lib/shared/ui/calendar/ui/selectDate/ui/Trigger.js.map +1 -1
  18. package/dist/lib/shared/ui/carousel/model/constant.js.map +1 -1
  19. package/dist/lib/shared/ui/carousel/ui/RenderSlides.js.map +1 -1
  20. package/dist/lib/shared/ui/carouselBase/model/helpers.js.map +1 -1
  21. package/dist/lib/shared/ui/carouselBase/model/hooks/useArrowNavigation.js.map +1 -1
  22. package/dist/lib/shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js +1 -1
  23. package/dist/lib/shared/ui/dropdownList/ui/dropdownItem/DropdownItem.js.map +1 -1
  24. package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/dayPickerControl.js.map +1 -1
  25. package/dist/lib/shared/ui/formElements/controlled/dayPickerControl/single.js.map +1 -1
  26. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Editor.js.map +1 -1
  27. package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorModal.js +1 -1
  28. package/dist/lib/shared/ui/formElements/controlled/editor/ui/EditorModal.js.map +1 -1
  29. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Toolbar.js +1 -1
  30. package/dist/lib/shared/ui/formElements/controlled/editor/ui/Toolbar.js.map +1 -1
  31. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetColor.js +1 -1
  32. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/SetHeadings.js +1 -1
  33. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js +1 -1
  34. package/dist/lib/shared/ui/formElements/controlled/editor/ui/commands/setCustomLink.js.map +1 -1
  35. package/dist/lib/shared/ui/formElements/controlled/index.js +1 -1
  36. package/dist/lib/shared/ui/formElements/controlled/index.js.map +1 -1
  37. package/dist/lib/shared/ui/formElements/ui/fieldAttachment/FieldAttachment.js.map +1 -1
  38. package/dist/lib/shared/ui/formElements/ui/fieldAttachment/ui/IconSlot.js.map +1 -1
  39. package/dist/lib/shared/ui/formElements/ui/fieldAttachment/ui/ValidateSlot.js.map +1 -1
  40. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/combobox.js.map +1 -1
  41. package/dist/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.js.map +1 -1
  42. package/dist/lib/shared/ui/formElements/uncontrolled/index.js +1 -1
  43. package/dist/lib/shared/ui/formElements/uncontrolled/index.js.map +1 -1
  44. package/dist/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyControl.js.map +1 -1
  45. package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.js.map +1 -1
  46. package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.js.map +1 -1
  47. package/dist/lib/shared/ui/formElements/uncontrolled/radio/ui/RadioItemTab.js.map +1 -1
  48. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.js.map +1 -1
  49. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js +1 -1
  50. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/model/hooks/useUploader.js.map +1 -1
  51. package/dist/lib/shared/ui/formElements/uncontrolled/uploader/ui/UploaderInput.js.map +1 -1
  52. package/dist/lib/shared/ui/icon/allowedIcons.js +1 -1
  53. package/dist/lib/shared/ui/icon/allowedIcons.js.map +1 -1
  54. package/dist/lib/shared/ui/icon/iconsMap.js +1 -1
  55. package/dist/lib/shared/ui/icon/iconsMap.js.map +1 -1
  56. package/dist/lib/shared/ui/modal/Modal.js.map +1 -1
  57. package/dist/lib/shared/ui/notification/Notification.js.map +1 -1
  58. package/dist/lib/shared/ui/notification/ui/CustomToast.js.map +1 -1
  59. package/dist/lib/shared/ui/slot/model/isSlottable.js.map +1 -1
  60. package/dist/lib/shared/ui/slot/ui/SlotClone.js +1 -1
  61. package/dist/lib/shared/ui/slot/ui/SlotClone.js.map +1 -1
  62. package/dist/lib/shared/ui/tabSwitcher/ui/TabContent.js.map +1 -1
  63. package/dist/lib/shared/utils/scrollToElement.js.map +1 -1
  64. package/dist/lib/widgets/banner/index.js +1 -1
  65. package/dist/lib/widgets/banner/ui/banners/BannerImageFull.js +1 -1
  66. package/dist/lib/widgets/banner/ui/banners/BannerImageFull.js.map +1 -1
  67. package/dist/lib/widgets/banner/ui/banners/BannerWithSeparateImg.js +1 -1
  68. package/dist/lib/widgets/banner/ui/banners/BannerWithSeparateImg.js.map +1 -1
  69. package/dist/lib/widgets/benefit/Benefit.js +1 -1
  70. package/dist/lib/widgets/benefit/Benefit.js.map +1 -1
  71. package/dist/lib/widgets/calculator/Calculator.js +1 -1
  72. package/dist/lib/widgets/calculator/Calculator.js.map +1 -1
  73. package/dist/lib/widgets/calculator/model/utils.js.map +1 -1
  74. package/dist/lib/widgets/calculator/ui/calculatorFields/ui/AdditionalSlider.js.map +1 -1
  75. package/dist/lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.js.map +1 -1
  76. package/dist/lib/widgets/calculator/ui/calculatorInfo/index.js +1 -1
  77. package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.js.map +1 -1
  78. package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.js +1 -1
  79. package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.js.map +1 -1
  80. package/dist/lib/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.js.map +1 -1
  81. package/dist/lib/widgets/calculator/ui/index.js +1 -1
  82. package/dist/lib/widgets/carouselBlock/CarouselBlock.js +1 -1
  83. package/dist/lib/widgets/carouselBlock/CarouselBlock.js.map +1 -1
  84. package/dist/lib/widgets/conditionBlock/ConditionBlock.js +1 -1
  85. package/dist/lib/widgets/conditionBlock/ConditionBlock.js.map +1 -1
  86. package/dist/lib/widgets/conditionBlock/ui/ConditionsWithCTA.js.map +1 -1
  87. package/dist/lib/widgets/dynamicForm/DynamicForm.js +1 -1
  88. package/dist/lib/widgets/dynamicForm/DynamicForm.js.map +1 -1
  89. package/dist/lib/widgets/dynamicForm/model/helpers.js +1 -1
  90. package/dist/lib/widgets/dynamicForm/model/helpers.js.map +1 -1
  91. package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js +1 -1
  92. package/dist/lib/widgets/dynamicFormDialog/DynamicFormDialog.js.map +1 -1
  93. package/dist/lib/widgets/footer/Footer.js +1 -1
  94. package/dist/lib/widgets/footer/Footer.js.map +1 -1
  95. package/dist/lib/widgets/footer/ui/NavLinks.js.map +1 -1
  96. package/dist/lib/widgets/footer/ui/PhonesBlock.js.map +1 -1
  97. package/dist/lib/widgets/footer/ui/SocialLinks.js.map +1 -1
  98. package/dist/lib/widgets/header/Header.js +1 -1
  99. package/dist/lib/widgets/header/Header.js.map +1 -1
  100. package/dist/lib/widgets/index.js +1 -1
  101. package/dist/lib/widgets/infoBlock/InfoBlock.js +1 -1
  102. package/dist/lib/widgets/infoBlock/InfoBlock.js.map +1 -1
  103. package/dist/lib/widgets/interLinking/InterLinking.js +1 -1
  104. package/dist/lib/widgets/interLinking/InterLinking.js.map +1 -1
  105. package/dist/lib/widgets/longBanner/LongBanner.js +1 -1
  106. package/dist/lib/widgets/longBanner/LongBanner.js.map +1 -1
  107. package/dist/lib/widgets/model/helpers.js +2 -2
  108. package/dist/lib/widgets/model/helpers.js.map +1 -1
  109. package/dist/lib/widgets/queryClientProvider/QueryClientProvider.js +1 -1
  110. package/dist/lib/widgets/seoHeader/SeoHeader.js +1 -1
  111. package/dist/lib/widgets/seoHeader/SeoHeader.js.map +1 -1
  112. package/dist/lib/widgets/stepper/Stepper.js +1 -1
  113. package/dist/lib/widgets/stepper/Stepper.js.map +1 -1
  114. package/dist/lib/widgets/usefulInfo/UsefulInfo.js +1 -1
  115. package/dist/lib/widgets/usefulInfo/UsefulInfo.js.map +1 -1
  116. package/dist/lib/widgets/usefulInfo/ui/subEntities/documents/Documents.js.map +1 -1
  117. package/dist/lib/widgets/usefulInfo/ui/subEntities/experts/Experts.js.map +1 -1
  118. package/dist/lib/widgets/usefulInfo/ui/subEntities/html/Html.js.map +1 -1
  119. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/Table.js.map +1 -1
  120. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/model/utils.js.map +1 -1
  121. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.js.map +1 -1
  122. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.js.map +1 -1
  123. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.js.map +1 -1
  124. package/dist/lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.js.map +1 -1
  125. package/dist/lib/widgets/userFeedback/ui/UserReview.js +1 -1
  126. package/dist/lib/widgets/userFeedback/ui/UserReview.js.map +1 -1
  127. package/dist/static/info/location.svg.js +2 -0
  128. package/dist/static/info/location.svg.js.map +1 -0
  129. package/dist/static/static/info/location.svg +3 -0
  130. package/dist/stats.html +1 -1
  131. package/dist/types/lib/next/utils/hasWidget.d.ts +1 -1
  132. package/dist/types/lib/next/utils/hideWidgetsWithQueryParams.d.ts +1 -1
  133. package/dist/types/lib/next/utils/isEmptyWidgetList.d.ts +1 -1
  134. package/dist/types/lib/next/utils/orderWidgetWithQueryParams.d.ts +1 -1
  135. package/dist/types/lib/shared/hooks/useObserverWidgets.d.ts +1 -1
  136. package/dist/types/lib/shared/ui/calendar/Calendar.d.ts +1 -1
  137. package/dist/types/lib/shared/ui/calendar/ui/index.d.ts +0 -1
  138. package/dist/types/lib/shared/ui/calendar/ui/model/utils.d.ts +1 -1
  139. package/dist/types/lib/shared/ui/carousel/model/constant.d.ts +1 -1
  140. package/dist/types/lib/shared/ui/carousel/model/types.d.ts +1 -1
  141. package/dist/types/lib/shared/ui/carousel/ui/RenderSlides.d.ts +1 -2
  142. package/dist/types/lib/shared/ui/carouselBase/model/helpers.d.ts +1 -1
  143. package/dist/types/lib/shared/ui/carouselBase/model/hooks/useArrowNavigation.d.ts +1 -1
  144. package/dist/types/lib/shared/ui/carouselBase/model/types.d.ts +1 -1
  145. package/dist/types/lib/shared/ui/formElements/controlled/dayPickerControl/single.d.ts +1 -1
  146. package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/Editor.d.ts +1 -1
  147. package/dist/types/lib/shared/ui/formElements/controlled/editor/ui/EditorModal.d.ts +1 -1
  148. package/dist/types/lib/shared/ui/formElements/controlled/index.d.ts +19 -19
  149. package/dist/types/lib/shared/ui/formElements/ui/fieldAttachment/ui/IconSlot.d.ts +1 -1
  150. package/dist/types/lib/shared/ui/formElements/ui/fieldAttachment/ui/ValidateSlot.d.ts +1 -1
  151. package/dist/types/lib/shared/ui/formElements/uncontrolled/combobox/hooks/useCombobox.d.ts +1 -2
  152. package/dist/types/lib/shared/ui/formElements/uncontrolled/index.d.ts +13 -10
  153. package/dist/types/lib/shared/ui/formElements/uncontrolled/inputCurrency/hooks/useCurrencyControl.d.ts +1 -1
  154. package/dist/types/lib/shared/ui/formElements/uncontrolled/slider/model/types.d.ts +1 -1
  155. package/dist/types/lib/shared/ui/formElements/uncontrolled/uploader/UploaderBase.d.ts +1 -1
  156. package/dist/types/lib/shared/ui/icon/allowedIcons.d.ts +2 -2
  157. package/dist/types/lib/shared/ui/icon/iconsMap.d.ts +6 -0
  158. package/dist/types/lib/shared/ui/loader/model/helpers.d.ts +1 -1
  159. package/dist/types/lib/shared/ui/notification/ui/CustomToast.d.ts +1 -1
  160. package/dist/types/lib/shared/ui/tabSwitcher/ui/TabContent.d.ts +1 -1
  161. package/dist/types/lib/shared/utils/scrollToElement.d.ts +1 -1
  162. package/dist/types/lib/widgets/authProvider/model/types.d.ts +2 -1
  163. package/dist/types/lib/widgets/banner/index.d.ts +0 -1
  164. package/dist/types/lib/widgets/buttonWithHandlers/model/types.d.ts +1 -1
  165. package/dist/types/lib/widgets/calculator/model/utils.d.ts +2 -2
  166. package/dist/types/lib/widgets/calculator/ui/calculatorFields/ui/CalculatorModal.d.ts +1 -1
  167. package/dist/types/lib/widgets/calculator/ui/calculatorInfo/index.d.ts +1 -1
  168. package/dist/types/lib/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.d.ts +1 -1
  169. package/dist/types/lib/widgets/conditionBlock/model/types.d.ts +1 -1
  170. package/dist/types/lib/widgets/dynamicForm/DynamicForm.d.ts +1 -1
  171. package/dist/types/lib/widgets/dynamicForm/model/helpers.d.ts +1 -1
  172. package/dist/types/lib/widgets/dynamicFormDialog/DynamicFormDialog.d.ts +2 -1
  173. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/model/utils.d.ts +1 -1
  174. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopHeadings.d.ts +1 -1
  175. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/ui/DesktopRow.d.ts +1 -1
  176. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/ui/MobileRow.d.ts +1 -1
  177. package/dist/types/lib/widgets/usefulInfo/ui/subEntities/table/ui/TableBody.d.ts +1 -1
  178. package/dist/types/lib/widgets/userFeedback/ui/UserReview.d.ts +1 -1
  179. package/package.json +126 -1
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as d}from"react/jsx-runtime";import{useState as I,createElement as L}from"react";import{getDynamicSchema as M}from"../../../src/shared/utils/getDynamicSchema.js";import{ZodUtils as R}from"../../shared/validation/utils/zodUtils.js";import{getFieldsProgress as Z,withAuthProvider as k,withApprovement as z}from"./model/helpers.js";import{useFieldsProgress as A}from"../../shared/hooks/useFieldsProgress.js";import{QueryClientProvider as Q}from"../queryClientProvider/QueryClientProvider.js";import{cn as t}from"../../shared/utils/cn.js";import{ProgressBar as U}from"../../shared/ui/progressBar/ProgressBar.js";import{HTMLRenderer as f}from"../htmlParser/HTMLRenderer.js";import{FieldMapper as q}from"../fieldMapper/FieldMapper.js";import{useControlledForm as J}from"../../shared/hooks/useControlledForm.js";import{widgetIds as y}from"../model/helpers.js";import{ResponsiveContainer as K}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Icon as O}from"../../shared/ui/icon/Icon.js";import{Heading as w}from"../../shared/ui/heading/Heading.js";import{Button as T}from"../../shared/ui/button/Button.js";const fe=({fields:s,title:p,progress:r,approvement:i,chips:m,submitProps:N,auth:h,classes:o,buttonGroup:a,ssoAuthorizationTop:g=!1,backgroundColor:u,disabledButtons:S})=>{const{submitCallback:x,onErrorCallback:P}=N||{},[n,C]=I(i.type==="checkbox"?i.defaultValue:!1),c=M(s),v=R.getZodDefaults(c),{control:b,handleSubmit:B,formState:{isValid:F}}=J({schema:c,defaultValues:v,mode:"onBlur"}),j=Z(r,s),D=A({control:b,fields:j||[],schema:c}),V=l=>{x&&x({...l,agree:n})};return e(Q,{children:e("section",{id:y.form,"data-test-id":y.form,className:t("w-full",o?.root,u&&"desktop:py-[80px]"),style:{backgroundColor:u},children:d(K,{className:t("border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14","relative mx-auto flex flex-col gap-6 rounded-sm bg-color-white py-8 desktop:border"),children:[m.enabled&&d("div",{className:t("desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute","bg-color-blue-grey-100 px-2 py-1 text-color-tetriary","right-4 top-4 w-max",o?.chips?.root),children:[m.image&&e(O,{name:m.image,className:t("size-6",o?.chips?.icon)}),m.content]}),e(w,{as:"h2",className:t("text-color-dark desktop:hidden",o?.title),children:p}),e(w,{as:"h3",className:t("text-color-dark mobile:hidden",o?.title),children:p}),g&&k(h),d("form",{"data-valid":F,onSubmit:B(V,l=>P?.(l)),className:t("flex w-full flex-col gap-y-6","desktop:gap-y-8",o?.form),children:[r.enabled&&e(U,{progress:D,topContent:e(f,{html:r.title}),leftSubtitle:e(f,{html:r.leftSubtitle}),rightSubtitle:e(f,{html:r.rightSubtitle}),maxPercent:r.maxPercent,classes:o?.progressBar}),e(q,{control:b,fields:s}),d("div",{className:t("mob-body-regular-s flex flex-col items-start justify-between gap-4",{"desktop:flex-row desktop:items-center":a.length===1}),children:[z(i,n,C,o?.approvement),e("div",{className:t("flex w-full flex-col items-center justify-between gap-4 desktop:flex-row",{"desktop:w-fit":a.length===1}),children:a?.map((l,E)=>{const H=l.type==="submit"&&i.type==="checkbox"?!n:!1;return L(T,{...l,size:"lg",key:E,disabled:S||H,className:t("w-full whitespace-nowrap",{"desktop:!w-fit":a.length===1},{"w-full":!!i},o?.submit)})})})]}),!g&&k(h)]})]})})})};export{fe as DynamicForm,fe as default};
1
+ import{jsx as e,jsxs as d}from"react/jsx-runtime";import{useState as H,createElement as L}from"react";import{getDynamicSchema as M}from"../../../src/shared/utils/getDynamicSchema.js";import{ZodUtils as R}from"../../shared/validation/utils/zodUtils.js";import{getFieldsProgress as Z,withAuthProvider as k,withApprovement as z}from"./model/helpers.js";import{useFieldsProgress as A}from"../../shared/hooks/useFieldsProgress.js";import{QueryClientProvider as I}from"../queryClientProvider/QueryClientProvider.js";import{cn as t}from"../../shared/utils/cn.js";import{ProgressBar as Q}from"../../shared/ui/progressBar/ProgressBar.js";import{HTMLRenderer as f}from"../htmlParser/HTMLRenderer.js";import{FieldMapper as U}from"../fieldMapper/FieldMapper.js";import{useControlledForm as q}from"../../shared/hooks/useControlledForm.js";import{ResponsiveContainer as J}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Icon as K}from"../../shared/ui/icon/Icon.js";import{Heading as y}from"../../shared/ui/heading/Heading.js";import{Button as O}from"../../shared/ui/button/Button.js";const ne=({fields:s,title:p,progress:r,approvement:i,chips:m,submitProps:w,auth:h,classes:o,buttonGroup:a,ssoAuthorizationTop:g=!1,backgroundColor:u,disabledButtons:N})=>{const{submitCallback:x,onErrorCallback:S}=w||{},[n,P]=H(i.type==="checkbox"?i.defaultValue:!1),c=M(s),C=R.getZodDefaults(c),{control:b,handleSubmit:v,formState:{isValid:B}}=q({schema:c,defaultValues:C,mode:"onBlur"}),F=Z(r,s),j=A({control:b,fields:F||[],schema:c}),D=l=>{x&&x({...l,agree:n})};return e(I,{children:e("section",{id:"form","data-test-id":"form",className:t("w-full",o?.root,u&&"desktop:py-[80px]"),style:{backgroundColor:u},children:d(J,{className:t("border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14","relative mx-auto flex flex-col gap-6 rounded-sm bg-color-white py-8 desktop:border"),children:[m.enabled&&d("div",{className:t("desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute","bg-color-blue-grey-100 px-2 py-1 text-color-tetriary","right-4 top-4 w-max",o?.chips?.root),children:[m.image&&e(K,{name:m.image,className:t("size-6",o?.chips?.icon)}),m.content]}),e(y,{as:"h2",className:t("text-color-dark desktop:hidden",o?.title),children:p}),e(y,{as:"h3",className:t("text-color-dark mobile:hidden",o?.title),children:p}),g&&k(h),d("form",{"data-valid":B,onSubmit:v(D,l=>S?.(l)),className:t("flex w-full flex-col gap-y-6","desktop:gap-y-8",o?.form),children:[r.enabled&&e(Q,{progress:j,topContent:e(f,{html:r.title}),leftSubtitle:e(f,{html:r.leftSubtitle}),rightSubtitle:e(f,{html:r.rightSubtitle}),maxPercent:r.maxPercent,classes:o?.progressBar}),e(U,{control:b,fields:s}),d("div",{className:t("mob-body-regular-s flex flex-col items-start justify-between gap-4",{"desktop:flex-row desktop:items-center":a.length===1}),children:[z(i,n,P,o?.approvement),e("div",{className:t("flex w-full flex-col items-center justify-between gap-4 desktop:flex-row",{"desktop:w-fit":a.length===1}),children:a?.map((l,V)=>{const E=l.type==="submit"&&i.type==="checkbox"?!n:!1;return L(O,{...l,size:"lg",key:V,disabled:N||E,className:t("w-full whitespace-nowrap",{"desktop:!w-fit":a.length===1},{"w-full":!!i},o?.submit)})})})]}),!g&&k(h)]})]})})})};export{ne as DynamicForm,ne as default};
2
2
  //# sourceMappingURL=DynamicForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicForm.js","sources":["../../../../lib/widgets/dynamicForm/DynamicForm.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { type Control, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport { widgetIds } from '../model'\nimport {\n type Approvement,\n type ApprovementClasses,\n type ApprovementType,\n type Auth,\n type AuthMode,\n type Chips,\n type ChipsClasses,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType,\n type SubmitProps,\n withApprovement,\n withAuthProvider\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { type BackgroundColors } from '$/shared/constants'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport { Button, type ButtonProps, type CheckedState, Heading, Icon, ProgressBar, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<\n AType extends ApprovementType,\n CType extends ChipsType,\n PType extends ProgressType,\n AuthType extends AuthMode\n> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n ssoAuthorizationTop: boolean\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n backgroundColor?: BackgroundColors\n disabledButtons?: boolean\n}\n\nexport const DynamicForm = <\n AType extends ApprovementType,\n CType extends ChipsType,\n PType extends ProgressType,\n AuthType extends AuthMode\n>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n auth,\n classes,\n buttonGroup,\n ssoAuthorizationTop = false,\n backgroundColor,\n disabledButtons\n}: DynamicFormProps<AType, CType, PType, AuthType>) => {\n const { submitCallback, onErrorCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(approvement.type === 'checkbox' ? approvement.defaultValue : false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const {\n control,\n handleSubmit,\n formState: { isValid }\n } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section\n id={widgetIds.form}\n data-test-id={widgetIds.form}\n className={cn('w-full', classes?.root, backgroundColor && `desktop:py-[80px]`)}\n style={{ backgroundColor }}\n >\n <ResponsiveContainer\n className={cn(\n 'border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm bg-color-white py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('text-color-dark desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('text-color-dark mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n {ssoAuthorizationTop && withAuthProvider(auth)}\n <form\n data-valid={isValid}\n onSubmit={handleSubmit(onSubmit, (error) => onErrorCallback?.(error))}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n leftSubtitle={<HTMLRenderer html={progress.leftSubtitle} />}\n rightSubtitle={<HTMLRenderer html={progress.rightSubtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div\n className={cn('mob-body-regular-s flex flex-col items-start justify-between gap-4', {\n ['desktop:flex-row desktop:items-center']: buttonGroup.length === 1\n })}\n >\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div\n className={cn('flex w-full flex-col items-center justify-between gap-4 desktop:flex-row', {\n 'desktop:w-fit': buttonGroup.length === 1\n })}\n >\n {buttonGroup?.map((button, index) => {\n const isDisabledByLogic = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n const disabled = disabledButtons || isDisabledByLogic\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n ['desktop:!w-fit']: buttonGroup.length === 1\n },\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n {!ssoAuthorizationTop && withAuthProvider(auth)}\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n"],"names":["DynamicForm","fields","title","progress","approvement","chips","submitProps","auth","classes","buttonGroup","ssoAuthorizationTop","backgroundColor","disabledButtons","submitCallback","onErrorCallback","checked","onCheckedChange","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","isValid","useControlledForm","fieldsProgress","getFieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","QueryClientProvider","jsx","widgetIds","cn","jsxs","ResponsiveContainer","Icon","Heading","withAuthProvider","error","ProgressBar","HTMLRenderer","FieldMapper","withApprovement","button","index","isDisabledByLogic","createElement","Button"],"mappings":"snCAgEO,MAAMA,GAAc,CAKzB,CACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,KAAAC,EACA,QAAAC,EACA,YAAAC,EACA,oBAAAC,EAAsB,GACtB,gBAAAC,EACA,gBAAAC,CACF,IAAuD,CACrD,KAAM,CAAE,eAAAC,EAAgB,gBAAAC,CAAA,EAAoBR,GAAe,CAAA,EAErD,CAACS,EAASC,CAAe,EAAIC,EAAuBb,EAAY,OAAS,WAAaA,EAAY,aAAe,EAAK,EAEtHc,EAASC,EAAiBlB,CAAM,EAChCmB,EAAgBC,EAAS,eAAeH,CAAM,EAE9C,CACJ,QAAAI,EACA,aAAAC,EACA,UAAW,CAAE,QAAAC,CAAA,CAAQ,EACnBC,EAAkB,CACpB,OAAAP,EACA,cAAAE,EACA,KAAM,QAAA,CACP,EAEKM,EAAiBC,EAAkBxB,EAAUF,CAAM,EAEnD2B,EAAoBC,EAAkB,CAAE,QAAAP,EAAS,OAAQI,GAAkB,CAAA,EAAI,OAAAR,EAAQ,EAEvFY,EAAkDC,GAAW,CAC7DlB,GAAgBA,EAAe,CAAE,GAAGkB,EAAQ,MAAOhB,EAAS,CAClE,EAEA,SACGiB,EAAA,CACC,SAAAC,EAAC,UAAA,CACC,GAAIC,EAAU,KACd,eAAcA,EAAU,KACxB,UAAWC,EAAG,SAAU3B,GAAS,KAAMG,GAAmB,mBAAmB,EAC7E,MAAO,CAAE,gBAAAA,CAAA,EAET,SAAAyB,EAACC,EAAA,CACC,UAAWF,EACT,yEACA,oFAAA,EAGD,SAAA,CAAA9B,EAAM,SACL+B,EAAC,MAAA,CACC,UAAWD,EACT,4EACA,uDACA,sBACA3B,GAAS,OAAO,IAAA,EAGjB,SAAA,CAAAH,EAAM,OAAS4B,EAACK,EAAA,CAAK,KAAMjC,EAAM,MAAO,UAAW8B,EAAG,SAAU3B,GAAS,OAAO,IAAI,CAAA,CAAG,EACvFH,EAAM,OAAA,CAAA,CAAA,EAGX4B,EAACM,EAAA,CAAQ,GAAG,KAAK,UAAWJ,EAAG,iCAAkC3B,GAAS,KAAK,EAC5E,SAAAN,CAAA,CACH,EACA+B,EAACM,EAAA,CAAQ,GAAG,KAAK,UAAWJ,EAAG,gCAAiC3B,GAAS,KAAK,EAC3E,SAAAN,CAAA,CACH,EACCQ,GAAuB8B,EAAiBjC,CAAI,EAC7C6B,EAAC,OAAA,CACC,aAAYZ,EACZ,SAAUD,EAAaO,EAAWW,GAAU3B,IAAkB2B,CAAK,CAAC,EACpE,UAAWN,EAAG,+BAAgC,kBAAmB3B,GAAS,IAAI,EAE7E,SAAA,CAAAL,EAAS,SACR8B,EAACS,EAAA,CACC,SAAUd,EACV,WAAYK,EAACU,EAAA,CAAa,KAAMxC,EAAS,MAAO,EAChD,aAAc8B,EAACU,EAAA,CAAa,KAAMxC,EAAS,aAAc,EACzD,cAAe8B,EAACU,EAAA,CAAa,KAAMxC,EAAS,cAAe,EAC3D,WAAYA,EAAS,WACrB,QAASK,GAAS,WAAA,CAAA,EAGtByB,EAACW,EAAA,CAAY,QAAAtB,EAAwC,OAAArB,CAAA,CAAgB,EACrEmC,EAAC,MAAA,CACC,UAAWD,EAAG,qEAAsE,CACjF,wCAA0C1B,EAAY,SAAW,CAAA,CACnE,EAEA,SAAA,CAAAoC,EAAgBzC,EAAaW,EAASC,EAAiBR,GAAS,WAAW,EAC5EyB,EAAC,MAAA,CACC,UAAWE,EAAG,2EAA4E,CACxF,gBAAiB1B,EAAY,SAAW,CAAA,CACzC,EAEA,SAAAA,GAAa,IAAI,CAACqC,EAAQC,IAAU,CACnC,MAAMC,EAAoBF,EAAO,OAAS,UAAY1C,EAAY,OAAS,WAAa,CAACW,EAAU,GAInG,OACEkC,EAACC,EAAA,CACE,GAAGJ,EACJ,KAAK,KACL,IAAKC,EACL,SAPanC,GAAmBoC,EAQhC,UAAWb,EACT,2BACA,CACG,iBAAmB1B,EAAY,SAAW,CAAA,EAE7C,CACE,SAAU,EAAQL,CAAW,EAE/BI,GAAS,MAAA,CACX,CAAA,CAGN,CAAC,CAAA,CAAA,CACH,CAAA,CAAA,EAED,CAACE,GAAuB8B,EAAiBjC,CAAI,CAAA,CAAA,CAAA,CAChD,CAAA,CAAA,CACF,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"DynamicForm.js","sources":["../../../../lib/widgets/dynamicForm/DynamicForm.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { type Control, type SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { HTMLRenderer } from '../htmlParser'\nimport {\n type Approvement,\n type ApprovementClasses,\n type ApprovementType,\n type Auth,\n type AuthMode,\n type Chips,\n type ChipsClasses,\n type ChipsType,\n getFieldsProgress,\n type Progress,\n type ProgressField,\n type ProgressType,\n type SubmitProps,\n withApprovement,\n withAuthProvider\n} from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { type BackgroundColors } from '$/shared/constants'\nimport { useControlledForm, useFieldsProgress } from '$/shared/hooks'\nimport { Button, type ButtonProps, type CheckedState, Heading, Icon, ProgressBar, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\nexport type DynamicFormClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n chips?: ChipsClasses\n approvement?: ApprovementClasses\n progressBar?: React.ComponentProps<typeof ProgressBar>['classes']\n submit?: string\n}\n\nexport type DynamicFormProps<\n AType extends ApprovementType,\n CType extends ChipsType,\n PType extends ProgressType,\n AuthType extends AuthMode\n> = {\n fields: FieldElement<any, any, { validation: FieldValidation; progress: ProgressField }>[]\n ssoAuthorizationTop: boolean\n title: string\n progress: Progress<PType>\n approvement: Approvement<AType>\n chips: Chips<CType>\n submitProps?: SubmitProps\n classes?: DynamicFormClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n backgroundColor?: BackgroundColors\n disabledButtons?: boolean\n}\n\nexport const DynamicForm = <\n AType extends ApprovementType,\n CType extends ChipsType,\n PType extends ProgressType,\n AuthType extends AuthMode\n>({\n fields,\n title,\n progress,\n approvement,\n chips,\n submitProps,\n auth,\n classes,\n buttonGroup,\n ssoAuthorizationTop = false,\n backgroundColor,\n disabledButtons\n}: DynamicFormProps<AType, CType, PType, AuthType>) => {\n const { submitCallback, onErrorCallback } = submitProps || {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(approvement.type === 'checkbox' ? approvement.defaultValue : false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const {\n control,\n handleSubmit,\n formState: { isValid }\n } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const fieldsProgress = getFieldsProgress(progress, fields)\n\n const formattedProgress = useFieldsProgress({ control, fields: fieldsProgress || [], schema })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <section\n id='form'\n data-test-id='form'\n className={cn('w-full', classes?.root, backgroundColor && `desktop:py-[80px]`)}\n style={{ backgroundColor }}\n >\n <ResponsiveContainer\n className={cn(\n 'border-warm-grey-200 px-4 desktop:w-[636px] desktop:gap-8 desktop:p-14',\n 'relative mx-auto flex flex-col gap-6 rounded-sm bg-color-white py-8 desktop:border'\n )}\n >\n {chips.enabled && (\n <div\n className={cn(\n 'desk-body-regular-l flex items-center gap-x-2 rounded-sm desktop:absolute',\n 'bg-color-blue-grey-100 px-2 py-1 text-color-tetriary',\n 'right-4 top-4 w-max',\n classes?.chips?.root\n )}\n >\n {chips.image && <Icon name={chips.image} className={cn('size-6', classes?.chips?.icon)} />}\n {chips.content}\n </div>\n )}\n <Heading as='h2' className={cn('text-color-dark desktop:hidden', classes?.title)}>\n {title}\n </Heading>\n <Heading as='h3' className={cn('text-color-dark mobile:hidden', classes?.title)}>\n {title}\n </Heading>\n {ssoAuthorizationTop && withAuthProvider(auth)}\n <form\n data-valid={isValid}\n onSubmit={handleSubmit(onSubmit, (error) => onErrorCallback?.(error))}\n className={cn('flex w-full flex-col gap-y-6', 'desktop:gap-y-8', classes?.form)}\n >\n {progress.enabled && (\n <ProgressBar\n progress={formattedProgress}\n topContent={<HTMLRenderer html={progress.title} />}\n leftSubtitle={<HTMLRenderer html={progress.leftSubtitle} />}\n rightSubtitle={<HTMLRenderer html={progress.rightSubtitle} />}\n maxPercent={progress.maxPercent}\n classes={classes?.progressBar}\n />\n )}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n <div\n className={cn('mob-body-regular-s flex flex-col items-start justify-between gap-4', {\n ['desktop:flex-row desktop:items-center']: buttonGroup.length === 1\n })}\n >\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n <div\n className={cn('flex w-full flex-col items-center justify-between gap-4 desktop:flex-row', {\n 'desktop:w-fit': buttonGroup.length === 1\n })}\n >\n {buttonGroup?.map((button, index) => {\n const isDisabledByLogic = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n const disabled = disabledButtons || isDisabledByLogic\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n ['desktop:!w-fit']: buttonGroup.length === 1\n },\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n </div>\n {!ssoAuthorizationTop && withAuthProvider(auth)}\n </form>\n </ResponsiveContainer>\n </section>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicForm\n"],"names":["DynamicForm","fields","title","progress","approvement","chips","submitProps","auth","classes","buttonGroup","ssoAuthorizationTop","backgroundColor","disabledButtons","submitCallback","onErrorCallback","checked","onCheckedChange","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","isValid","useControlledForm","fieldsProgress","getFieldsProgress","formattedProgress","useFieldsProgress","onSubmit","values","QueryClientProvider","jsx","cn","jsxs","ResponsiveContainer","Icon","Heading","withAuthProvider","error","ProgressBar","HTMLRenderer","FieldMapper","withApprovement","button","index","isDisabledByLogic","createElement","Button"],"mappings":"skCA6DO,MAAMA,GAAc,CAKzB,CACA,OAAAC,EACA,MAAAC,EACA,SAAAC,EACA,YAAAC,EACA,MAAAC,EACA,YAAAC,EACA,KAAAC,EACA,QAAAC,EACA,YAAAC,EACA,oBAAAC,EAAsB,GACtB,gBAAAC,EACA,gBAAAC,CACF,IAAuD,CACrD,KAAM,CAAE,eAAAC,EAAgB,gBAAAC,CAAA,EAAoBR,GAAe,CAAA,EAErD,CAACS,EAASC,CAAe,EAAIC,EAAuBb,EAAY,OAAS,WAAaA,EAAY,aAAe,EAAK,EAEtHc,EAASC,EAAiBlB,CAAM,EAChCmB,EAAgBC,EAAS,eAAeH,CAAM,EAE9C,CACJ,QAAAI,EACA,aAAAC,EACA,UAAW,CAAE,QAAAC,CAAA,CAAQ,EACnBC,EAAkB,CACpB,OAAAP,EACA,cAAAE,EACA,KAAM,QAAA,CACP,EAEKM,EAAiBC,EAAkBxB,EAAUF,CAAM,EAEnD2B,EAAoBC,EAAkB,CAAE,QAAAP,EAAS,OAAQI,GAAkB,CAAA,EAAI,OAAAR,EAAQ,EAEvFY,EAAkDC,GAAW,CAC7DlB,GAAgBA,EAAe,CAAE,GAAGkB,EAAQ,MAAOhB,EAAS,CAClE,EAEA,SACGiB,EAAA,CACC,SAAAC,EAAC,UAAA,CACC,GAAG,OACH,eAAa,OACb,UAAWC,EAAG,SAAU1B,GAAS,KAAMG,GAAmB,mBAAmB,EAC7E,MAAO,CAAE,gBAAAA,CAAA,EAET,SAAAwB,EAACC,EAAA,CACC,UAAWF,EACT,yEACA,oFAAA,EAGD,SAAA,CAAA7B,EAAM,SACL8B,EAAC,MAAA,CACC,UAAWD,EACT,4EACA,uDACA,sBACA1B,GAAS,OAAO,IAAA,EAGjB,SAAA,CAAAH,EAAM,OAAS4B,EAACI,EAAA,CAAK,KAAMhC,EAAM,MAAO,UAAW6B,EAAG,SAAU1B,GAAS,OAAO,IAAI,CAAA,CAAG,EACvFH,EAAM,OAAA,CAAA,CAAA,EAGX4B,EAACK,EAAA,CAAQ,GAAG,KAAK,UAAWJ,EAAG,iCAAkC1B,GAAS,KAAK,EAC5E,SAAAN,CAAA,CACH,EACA+B,EAACK,EAAA,CAAQ,GAAG,KAAK,UAAWJ,EAAG,gCAAiC1B,GAAS,KAAK,EAC3E,SAAAN,CAAA,CACH,EACCQ,GAAuB6B,EAAiBhC,CAAI,EAC7C4B,EAAC,OAAA,CACC,aAAYX,EACZ,SAAUD,EAAaO,EAAWU,GAAU1B,IAAkB0B,CAAK,CAAC,EACpE,UAAWN,EAAG,+BAAgC,kBAAmB1B,GAAS,IAAI,EAE7E,SAAA,CAAAL,EAAS,SACR8B,EAACQ,EAAA,CACC,SAAUb,EACV,WAAYK,EAACS,EAAA,CAAa,KAAMvC,EAAS,MAAO,EAChD,aAAc8B,EAACS,EAAA,CAAa,KAAMvC,EAAS,aAAc,EACzD,cAAe8B,EAACS,EAAA,CAAa,KAAMvC,EAAS,cAAe,EAC3D,WAAYA,EAAS,WACrB,QAASK,GAAS,WAAA,CAAA,EAGtByB,EAACU,EAAA,CAAY,QAAArB,EAAwC,OAAArB,CAAA,CAAgB,EACrEkC,EAAC,MAAA,CACC,UAAWD,EAAG,qEAAsE,CACjF,wCAA0CzB,EAAY,SAAW,CAAA,CACnE,EAEA,SAAA,CAAAmC,EAAgBxC,EAAaW,EAASC,EAAiBR,GAAS,WAAW,EAC5EyB,EAAC,MAAA,CACC,UAAWC,EAAG,2EAA4E,CACxF,gBAAiBzB,EAAY,SAAW,CAAA,CACzC,EAEA,SAAAA,GAAa,IAAI,CAACoC,EAAQC,IAAU,CACnC,MAAMC,EAAoBF,EAAO,OAAS,UAAYzC,EAAY,OAAS,WAAa,CAACW,EAAU,GAInG,OACEiC,EAACC,EAAA,CACE,GAAGJ,EACJ,KAAK,KACL,IAAKC,EACL,SAPalC,GAAmBmC,EAQhC,UAAWb,EACT,2BACA,CACG,iBAAmBzB,EAAY,SAAW,CAAA,EAE7C,CACE,SAAU,EAAQL,CAAW,EAE/BI,GAAS,MAAA,CACX,CAAA,CAGN,CAAC,CAAA,CAAA,CACH,CAAA,CAAA,EAED,CAACE,GAAuB6B,EAAiBhC,CAAI,CAAA,CAAA,CAAA,CAChD,CAAA,CAAA,CACF,CAAA,EAEJ,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as d}from"react/jsx-runtime";import{AuthProvider as m}from"../../authProvider/AuthProvider.js";import{HTMLRenderer as n}from"../../htmlParser/HTMLRenderer.js";import{cn as i}from"../../../shared/utils/cn.js";import{CheckboxBase as c}from"../../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";const p=e=>{switch(e?.mode){case"esia":return r(m,{...e,mode:e?.mode});case"mobileId":return r(m,{...e,mode:e?.mode});case"combine":return r(m,{...e,mode:e?.mode});default:return null}},x=(e,o,t,s)=>e.type==="off"?null:e.type==="text"?r(n,{html:e.message,as:"div",className:s?.content}):d("label",{className:i("mob-body-regular-s text-color-dark","desktop:desk-body-regular-s desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[r(c,{classes:s?.checkbox,checked:o,onCheckedChange:t}),r(n,{html:e.content,as:"div",className:s?.content})]}),b=(e,o)=>e.enabled?o.map(t=>({name:t.args.name,...t.args.progress})):null;export{b as getFieldsProgress,x as withApprovement,p as withAuthProvider};
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{CheckboxBase as i}from"../../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import{AuthProvider as m}from"../../authProvider/AuthProvider.js";import{HTMLRenderer as n}from"../../htmlParser/HTMLRenderer.js";import{cn as c}from"../../../shared/utils/cn.js";const p=e=>{switch(e?.mode){case"esia":return r(m,{...e,mode:e?.mode});case"mobileId":return r(m,{...e,mode:e?.mode});case"combine":return r(m,{...e,mode:e?.mode});default:return null}},x=(e,o,t,s)=>e.type==="off"?null:e.type==="text"?r(n,{html:e.message,as:"div",className:s?.content}):d("label",{className:c("mob-body-regular-s text-color-dark","desktop:desk-body-regular-s desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[r(i,{classes:s?.checkbox,checked:o,onCheckedChange:t}),r(n,{html:e.content,as:"div",className:s?.content})]}),b=(e,o)=>e.enabled?o.map(t=>({name:t.args.name,...t.args.progress})):null;export{b as getFieldsProgress,x as withApprovement,p as withAuthProvider};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../lib/widgets/dynamicForm/model/helpers.tsx"],"sourcesContent":["import { type FieldPath, type FieldValues } from 'react-hook-form'\nimport { AuthProvider } from '../../authProvider'\nimport { HTMLRenderer } from '../../htmlParser'\nimport type { Approvement, ApprovementClasses, ApprovementType, Auth, AuthMode } from './types'\nimport type { Progress, ProgressField, ProgressType } from './types'\nimport { type ISubscribedField } from '$/shared/hooks'\nimport { CheckboxBase, type CheckedState } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport type { FieldElement } from '$/widgets/fieldMapper'\n\nexport const withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth?.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth?.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth?.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth?.mode} />\n\n default:\n return null\n }\n}\n\nexport const withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-s desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const getFieldsProgress = <TFieldValues extends FieldValues, Type extends ProgressType>(\n progress: Progress<Type>,\n fields: FieldElement<any, any, { progress: ProgressField }>[]\n) => {\n if (!progress.enabled) return null\n\n return fields.map<ISubscribedField<TFieldValues>>((field) => ({\n name: field.args.name as FieldPath<TFieldValues>,\n ...field.args.progress\n }))\n}\n"],"names":["withAuthProvider","auth","AuthProvider","withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","getFieldsProgress","progress","fields","field"],"mappings":"sUAUO,MAAMA,EAA2CC,GAAqB,CAC3E,OAAQA,GAAM,KAAA,CACZ,IAAK,OACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EACnD,IAAK,WACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EACnD,IAAK,UACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EAEnD,QACE,OAAO,IAAA,CAEb,EAEaE,EAAkB,CAC7BC,EACAC,EACAC,EACAC,IAEIH,EAAY,OAAS,MAAc,KAEnCA,EAAY,OAAS,OAChBI,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,EAItFG,EAAC,QAAA,CACC,UAAWC,EACT,qCACA,8CACA,+CAAA,EAGF,SAAA,CAAAH,EAACI,EAAA,CAAa,QAASL,GAAS,SAAU,QAAAF,EAAkB,gBAAAC,EAAkC,EAC9FE,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,EAKxEM,EAAoB,CAC/BC,EACAC,IAEKD,EAAS,QAEPC,EAAO,IAAqCC,IAAW,CAC5D,KAAMA,EAAM,KAAK,KACjB,GAAGA,EAAM,KAAK,QAAA,EACd,EAL4B"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../lib/widgets/dynamicForm/model/helpers.tsx"],"sourcesContent":["import { type FieldPath, type FieldValues } from 'react-hook-form'\nimport type { Approvement, ApprovementClasses, ApprovementType, Auth, AuthMode } from './types'\nimport type { Progress, ProgressField, ProgressType } from './types'\nimport { type ISubscribedField } from '$/shared/hooks'\nimport { CheckboxBase, type CheckedState } from '$/shared/ui/formElements/uncontrolled/checkbox/Checkbox'\nimport { cn } from '$/shared/utils'\nimport { AuthProvider } from '$/widgets'\nimport { HTMLRenderer } from '$/widgets'\nimport type { FieldElement } from '$/widgets/fieldMapper'\n\nexport const withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth?.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth?.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth?.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth?.mode} />\n\n default:\n return null\n }\n}\n\nexport const withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n): React.ReactNode => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-s desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nexport const getFieldsProgress = <TFieldValues extends FieldValues, Type extends ProgressType>(\n progress: Progress<Type>,\n fields: FieldElement<any, any, { progress: ProgressField }>[]\n) => {\n if (!progress.enabled) return null\n\n return fields.map<ISubscribedField<TFieldValues>>((field) => ({\n name: field.args.name as FieldPath<TFieldValues>,\n ...field.args.progress\n }))\n}\n"],"names":["withAuthProvider","auth","AuthProvider","withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","getFieldsProgress","progress","fields","field"],"mappings":"sUAUO,MAAMA,EAA2CC,GAAqB,CAC3E,OAAQA,GAAM,KAAA,CACZ,IAAK,OACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EACnD,IAAK,WACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EACnD,IAAK,UACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,GAAM,KAAM,EAEnD,QACE,OAAO,IAAA,CAEb,EAEaE,EAAkB,CAC7BC,EACAC,EACAC,EACAC,IAEIH,EAAY,OAAS,MAAc,KAEnCA,EAAY,OAAS,OAChBI,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,EAItFG,EAAC,QAAA,CACC,UAAWC,EACT,qCACA,8CACA,+CAAA,EAGF,SAAA,CAAAH,EAACI,EAAA,CAAa,QAASL,GAAS,SAAU,QAAAF,EAAkB,gBAAAC,EAAkC,EAC9FE,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,EAKxEM,EAAoB,CAC/BC,EACAC,IAEKD,EAAS,QAEPC,EAAO,IAAqCC,IAAW,CAC5D,KAAMA,EAAM,KAAK,KACjB,GAAGA,EAAM,KAAK,QAAA,EACd,EAL4B"}
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as g}from"react/jsx-runtime";import{useState as j,createElement as v}from"react";import{getDynamicSchema as A}from"../../../src/shared/utils/getDynamicSchema.js";import{QueryClientProvider as P}from"../queryClientProvider/QueryClientProvider.js";import{Dialog as E}from"../../shared/ui/dialog/Dialog.js";import{TypeGuards as L}from"../../shared/utils/typeGuards.js";import{FieldMapper as M}from"../fieldMapper/FieldMapper.js";import{cn as x}from"../../shared/utils/cn.js";import{HTMLRenderer as p}from"../htmlParser/HTMLRenderer.js";import{ZodUtils as Z}from"../../shared/validation/utils/zodUtils.js";import{useControlledForm as H}from"../../shared/hooks/useControlledForm.js";import{Button as I}from"../../shared/ui/button/Button.js";import{AuthProvider as s}from"../authProvider/AuthProvider.js";import{CheckboxBase as Q}from"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";const R=(e,l,t,m)=>e.type==="off"?null:e.type==="text"?o(p,{html:e.message,as:"div",className:m?.content}):g("label",{className:x("mob-body-regular-s text-color-dark","desktop:desk-body-regular-m desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[o(Q,{classes:m?.checkbox,checked:l,onCheckedChange:t}),o(p,{html:e.content,as:"div",className:m?.content})]}),b=e=>{switch(e.mode){case"esia":return o(s,{...e,mode:e.mode});case"mobileId":return o(s,{...e,mode:e.mode});case"combine":return o(s,{...e,mode:e.mode});case"off":return null}},re=({fields:e,title:l,approvement:t,submitProps:m,dialogId:h,classes:c,auth:a,buttonGroup:n,ssoAuthorizationTop:d=!1,disabledButtons:y,...k})=>{const{submitCallback:f,onErrorCallback:w}=m??{},[i,C]=j(!1),u=A(e),D=Z.getZodDefaults(u),{control:N,handleSubmit:S}=H({schema:u,defaultValues:D,mode:"onBlur"});return o(P,{children:o(E,{id:h,title:l,...k,children:g("form",{onSubmit:S(r=>{f&&f({...r,agree:i})},r=>w?.(r)),className:"flex flex-col gap-6",children:[d&&b(a),o(M,{control:N,fields:e}),R(t,i,C,c?.approvement),L.isArrayFilled(n)&&o("div",{className:"flex flex-col gap-4",children:n?.map((r,B)=>{const F=r.type==="submit"&&t.type==="checkbox"?!i:!1;return v(I,{...r,size:"lg",key:B,disabled:y||F,className:x("w-full whitespace-nowrap",{"w-full":!!t},c?.submit)})})}),!d&&b(a)]})})})};export{re as DynamicFormDialog,re as default};
1
+ import{jsx as o,jsxs as g}from"react/jsx-runtime";import{useState as j,createElement as v}from"react";import{getDynamicSchema as A}from"../../../src/shared/utils/getDynamicSchema.js";import{Button as P}from"../../shared/ui/button/Button.js";import{Dialog as E}from"../../shared/ui/dialog/Dialog.js";import{CheckboxBase as L}from"../../shared/ui/formElements/uncontrolled/checkbox/Checkbox.js";import{QueryClientProvider as M}from"../queryClientProvider/QueryClientProvider.js";import{TypeGuards as Z}from"../../shared/utils/typeGuards.js";import{FieldMapper as H}from"../fieldMapper/FieldMapper.js";import{cn as x}from"../../shared/utils/cn.js";import{ZodUtils as I}from"../../shared/validation/utils/zodUtils.js";import{useControlledForm as Q}from"../../shared/hooks/useControlledForm.js";import{AuthProvider as s}from"../authProvider/AuthProvider.js";import{HTMLRenderer as p}from"../htmlParser/HTMLRenderer.js";const R=(e,l,t,m)=>e.type==="off"?null:e.type==="text"?o(p,{html:e.message,as:"div",className:m?.content}):g("label",{className:x("mob-body-regular-s text-color-dark","desktop:desk-body-regular-m desktop:gap-x-4","flex items-center justify-items-start gap-x-3"),children:[o(L,{classes:m?.checkbox,checked:l,onCheckedChange:t}),o(p,{html:e.content,as:"div",className:m?.content})]}),b=e=>{switch(e.mode){case"esia":return o(s,{...e,mode:e.mode});case"mobileId":return o(s,{...e,mode:e.mode});case"combine":return o(s,{...e,mode:e.mode});case"off":return null}},re=({fields:e,title:l,approvement:t,submitProps:m,dialogId:h,classes:c,auth:a,buttonGroup:n,ssoAuthorizationTop:d=!1,disabledButtons:y,...k})=>{const{submitCallback:f,onErrorCallback:w}=m??{},[i,C]=j(!1),u=A(e),D=I.getZodDefaults(u),{control:N,handleSubmit:S}=Q({schema:u,defaultValues:D,mode:"onBlur"});return o(M,{children:o(E,{id:h,title:l,...k,children:g("form",{onSubmit:S(r=>{f&&f({...r,agree:i})},r=>w?.(r)),className:"flex flex-col gap-6",children:[d&&b(a),o(H,{control:N,fields:e}),R(t,i,C,c?.approvement),Z.isArrayFilled(n)&&o("div",{className:"flex flex-col gap-4",children:n?.map((r,B)=>{const F=r.type==="submit"&&t.type==="checkbox"?!i:!1;return v(P,{...r,size:"lg",key:B,disabled:y||F,className:x("w-full whitespace-nowrap",{"w-full":!!t},c?.submit)})})}),!d&&b(a)]})})})};export{re as DynamicFormDialog,re as default};
2
2
  //# sourceMappingURL=DynamicFormDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicFormDialog.js","sources":["../../../../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx"],"sourcesContent":["'use client'\nimport { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { AuthProvider } from '../authProvider'\nimport { type Auth, type AuthMode } from '../dynamicForm/model'\nimport { HTMLRenderer } from '../htmlParser'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps, CheckboxBase, type CheckedState, Dialog } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n onErrorCallback?: <T extends FieldValues>(error: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<\n AType extends ApprovementType,\n AuthType extends AuthMode\n> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n ssoAuthorizationTop?: boolean\n disabledButtons?: boolean\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nconst withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'off':\n return null\n }\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType, AuthType extends AuthMode>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n auth,\n buttonGroup,\n ssoAuthorizationTop = false,\n disabledButtons,\n ...props\n}: DynamicFormDialogProps<AType, AuthType>) => {\n const { submitCallback, onErrorCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit, (error) => onErrorCallback?.(error))} className='flex flex-col gap-6'>\n {ssoAuthorizationTop && withAuthProvider(auth)}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {TypeGuards.isArrayFilled(buttonGroup) && (\n <div className='flex flex-col gap-4'>\n {buttonGroup?.map((button, index) => {\n const isDisabledByLogic = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n const disabled = disabledButtons || isDisabledByLogic\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n )}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n {!ssoAuthorizationTop && withAuthProvider(auth)}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","withAuthProvider","auth","AuthProvider","DynamicFormDialog","fields","title","submitProps","dialogId","buttonGroup","ssoAuthorizationTop","disabledButtons","props","submitCallback","onErrorCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","QueryClientProvider","Dialog","values","error","FieldMapper","TypeGuards","button","index","isDisabledByLogic","createElement","Button"],"mappings":"k5BAmDA,MAAMA,EAAkB,CACtBC,EACAC,EACAC,EACAC,IAEIH,EAAY,OAAS,MAAc,KAEnCA,EAAY,OAAS,OAChBI,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,EAItFG,EAAC,QAAA,CACC,UAAWC,EACT,qCACA,8CACA,+CAAA,EAGF,SAAA,CAAAH,EAACI,EAAA,CAAa,QAASL,GAAS,SAAU,QAAAF,EAAkB,gBAAAC,EAAkC,EAC9FE,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,EAK/EM,EAA2CC,GAAqB,CACpE,OAAQA,EAAK,KAAA,CACX,IAAK,OACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,WACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,UACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,MACH,OAAO,IAAA,CAEb,EAEaE,GAAoB,CAA2D,CAC1F,OAAAC,EACA,MAAAC,EACA,YAAAd,EACA,YAAAe,EACA,SAAAC,EACA,QAAAb,EACA,KAAAO,EACA,YAAAO,EACA,oBAAAC,EAAsB,GACtB,gBAAAC,EACA,GAAGC,CACL,IAA+C,CAC7C,KAAM,CAAE,eAAAC,EAAgB,gBAAAC,CAAA,EAAoBP,GAAe,CAAA,EAErD,CAACd,EAASC,CAAe,EAAIqB,EAAuB,EAAK,EAEzDC,EAASC,EAAiBZ,CAAM,EAChCa,EAAgBC,EAAS,eAAeH,CAAM,EAE9C,CAAE,QAAAI,EAAS,aAAAC,CAAA,EAAiBC,EAAkB,CAClD,OAAAN,EACA,cAAAE,EACA,KAAM,QAAA,CACP,EAMD,OACEtB,EAAC2B,GACC,SAAA3B,EAAC4B,EAAA,CAAO,GAAIhB,EAAU,MAAAF,EAAe,GAAGM,EACtC,SAAAd,EAAC,QAAK,SAAUuB,EAPkCI,GAAW,CAC7DZ,GAAgBA,EAAe,CAAE,GAAGY,EAAQ,MAAOhC,EAAS,CAClE,EAK8CiC,GAAUZ,IAAkBY,CAAK,CAAC,EAAG,UAAU,sBACpF,SAAA,CAAAhB,GAAuBT,EAAiBC,CAAI,EAC7CN,EAAC+B,EAAA,CAAY,QAAAP,EAAwC,OAAAf,CAAA,CAAgB,EACpEd,EAAgBC,EAAaC,EAASC,EAAiBC,GAAS,WAAW,EAC3EiC,EAAW,cAAcnB,CAAW,GACnCb,EAAC,MAAA,CAAI,UAAU,sBACZ,SAAAa,GAAa,IAAI,CAACoB,EAAQC,IAAU,CACnC,MAAMC,EAAoBF,EAAO,OAAS,UAAYrC,EAAY,OAAS,WAAa,CAACC,EAAU,GAInG,OACEuC,EAACC,EAAA,CACE,GAAGJ,EACJ,KAAK,KACL,IAAKC,EACL,SAPanB,GAAmBoB,EAQhC,UAAWhC,EACT,2BACA,CACE,SAAU,EAAQP,CAAW,EAE/BG,GAAS,MAAA,CACX,CAAA,CAGN,CAAC,CAAA,CACH,EAKD,CAACe,GAAuBT,EAAiBC,CAAI,CAAA,CAAA,CAChD,EACF,EACF,CAEJ"}
1
+ {"version":3,"file":"DynamicFormDialog.js","sources":["../../../../lib/widgets/dynamicFormDialog/DynamicFormDialog.tsx"],"sourcesContent":["import { useState } from 'react'\nimport type { Control, FieldValues, SubmitHandler } from 'react-hook-form'\nimport { type TypeOf } from 'zod'\nimport { type Auth, type AuthMode } from '../dynamicForm/model'\nimport type { Approvement, ApprovementType } from './model'\nimport { type FieldValidation, getDynamicSchema } from '@/shared/utils'\nimport { useControlledForm } from '$/shared/hooks'\nimport { Button, type ButtonProps } from '$/shared/ui/button/Button'\nimport { Dialog } from '$/shared/ui/dialog/Dialog'\nimport { CheckboxBase, type CheckedState } from '$/shared/ui/formElements/uncontrolled/checkbox/Checkbox'\nimport { cn, TypeGuards } from '$/shared/utils'\nimport { ZodUtils } from '$/shared/validation'\nimport { AuthProvider } from '$/widgets'\nimport { HTMLRenderer } from '$/widgets'\nimport { type FieldElement, FieldMapper } from '$/widgets/fieldMapper'\nimport { QueryClientProvider } from '$/widgets/queryClientProvider'\n\ntype SubmitProps = {\n submitCallback: <T extends FieldValues>(values: T) => void\n onErrorCallback?: <T extends FieldValues>(error: T) => void\n}\n\ntype ApprovementClasses = {\n checkbox?: React.ComponentProps<typeof CheckboxBase>['classes']\n content?: string\n}\n\ntype DynamicFormDialogClasses = {\n root?: string\n title?: string\n fields?: string\n form?: string\n approvement?: ApprovementClasses\n submit?: string\n}\n\nexport type DynamicFormDialogProps<\n AType extends ApprovementType,\n AuthType extends AuthMode\n> = React.DialogHTMLAttributes<HTMLDialogElement> & {\n fields: FieldElement<any, any, { validation: FieldValidation }>[]\n title: string\n approvement: Approvement<AType>\n dialogId: string\n submitProps?: SubmitProps\n classes?: DynamicFormDialogClasses\n buttonGroup: ButtonProps[]\n auth: Auth<AuthType>\n ssoAuthorizationTop?: boolean\n disabledButtons?: boolean\n}\n\nconst withApprovement = <Type extends ApprovementType>(\n approvement: Approvement<Type>,\n checked: CheckedState,\n onCheckedChange: (checked: CheckedState) => void,\n classes?: ApprovementClasses\n) => {\n if (approvement.type === 'off') return null\n\n if (approvement.type === 'text') {\n return <HTMLRenderer html={approvement.message} as='div' className={classes?.content} />\n }\n\n return (\n <label\n className={cn(\n 'mob-body-regular-s text-color-dark',\n 'desktop:desk-body-regular-m desktop:gap-x-4',\n 'flex items-center justify-items-start gap-x-3'\n )}\n >\n <CheckboxBase classes={classes?.checkbox} checked={checked} onCheckedChange={onCheckedChange} />\n <HTMLRenderer html={approvement.content} as='div' className={classes?.content} />\n </label>\n )\n}\n\nconst withAuthProvider = <Mode extends AuthMode>(auth: Auth<Mode>) => {\n switch (auth.mode) {\n case 'esia':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'mobileId':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'combine':\n return <AuthProvider {...auth} mode={auth.mode} />\n case 'off':\n return null\n }\n}\n\nexport const DynamicFormDialog = <AType extends ApprovementType, AuthType extends AuthMode>({\n fields,\n title,\n approvement,\n submitProps,\n dialogId,\n classes,\n auth,\n buttonGroup,\n ssoAuthorizationTop = false,\n disabledButtons,\n ...props\n}: DynamicFormDialogProps<AType, AuthType>) => {\n const { submitCallback, onErrorCallback } = submitProps ?? {}\n\n const [checked, onCheckedChange] = useState<CheckedState>(false)\n\n const schema = getDynamicSchema(fields)\n const defaultValues = ZodUtils.getZodDefaults(schema)\n\n const { control, handleSubmit } = useControlledForm({\n schema,\n defaultValues,\n mode: 'onBlur'\n })\n\n const onSubmit: SubmitHandler<TypeOf<typeof schema>> = (values) => {\n if (submitCallback) submitCallback({ ...values, agree: checked })\n }\n\n return (\n <QueryClientProvider>\n <Dialog id={dialogId} title={title} {...props}>\n <form onSubmit={handleSubmit(onSubmit, (error) => onErrorCallback?.(error))} className='flex flex-col gap-6'>\n {ssoAuthorizationTop && withAuthProvider(auth)}\n <FieldMapper control={control as unknown as Control} fields={fields} />\n {withApprovement(approvement, checked, onCheckedChange, classes?.approvement)}\n {TypeGuards.isArrayFilled(buttonGroup) && (\n <div className='flex flex-col gap-4'>\n {buttonGroup?.map((button, index) => {\n const isDisabledByLogic = button.type === 'submit' && approvement.type === 'checkbox' ? !checked : false\n\n const disabled = disabledButtons || isDisabledByLogic\n\n return (\n <Button\n {...button}\n size='lg'\n key={index}\n disabled={disabled}\n className={cn(\n 'w-full whitespace-nowrap',\n {\n 'w-full': Boolean(approvement)\n },\n classes?.submit\n )}\n />\n )\n })}\n </div>\n )}\n {/*<Button {...buttonProps} type='submit' disabled={approvement.type === 'checkbox' ? !checked : false} className='w-full'>*/}\n {/* {children ?? 'Отправить форму'}*/}\n {/*</Button>*/}\n {!ssoAuthorizationTop && withAuthProvider(auth)}\n </form>\n </Dialog>\n </QueryClientProvider>\n )\n}\n\nexport default DynamicFormDialog\n"],"names":["withApprovement","approvement","checked","onCheckedChange","classes","jsx","HTMLRenderer","jsxs","cn","CheckboxBase","withAuthProvider","auth","AuthProvider","DynamicFormDialog","fields","title","submitProps","dialogId","buttonGroup","ssoAuthorizationTop","disabledButtons","props","submitCallback","onErrorCallback","useState","schema","getDynamicSchema","defaultValues","ZodUtils","control","handleSubmit","useControlledForm","QueryClientProvider","Dialog","values","error","FieldMapper","TypeGuards","button","index","isDisabledByLogic","createElement","Button"],"mappings":"k5BAoDA,MAAMA,EAAkB,CACtBC,EACAC,EACAC,EACAC,IAEIH,EAAY,OAAS,MAAc,KAEnCA,EAAY,OAAS,OAChBI,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,EAItFG,EAAC,QAAA,CACC,UAAWC,EACT,qCACA,8CACA,+CAAA,EAGF,SAAA,CAAAH,EAACI,EAAA,CAAa,QAASL,GAAS,SAAU,QAAAF,EAAkB,gBAAAC,EAAkC,EAC9FE,EAACC,GAAa,KAAML,EAAY,QAAS,GAAG,MAAM,UAAWG,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,EAK/EM,EAA2CC,GAAqB,CACpE,OAAQA,EAAK,KAAA,CACX,IAAK,OACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,WACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,UACH,SAAQC,EAAA,CAAc,GAAGD,EAAM,KAAMA,EAAK,KAAM,EAClD,IAAK,MACH,OAAO,IAAA,CAEb,EAEaE,GAAoB,CAA2D,CAC1F,OAAAC,EACA,MAAAC,EACA,YAAAd,EACA,YAAAe,EACA,SAAAC,EACA,QAAAb,EACA,KAAAO,EACA,YAAAO,EACA,oBAAAC,EAAsB,GACtB,gBAAAC,EACA,GAAGC,CACL,IAA+C,CAC7C,KAAM,CAAE,eAAAC,EAAgB,gBAAAC,CAAA,EAAoBP,GAAe,CAAA,EAErD,CAACd,EAASC,CAAe,EAAIqB,EAAuB,EAAK,EAEzDC,EAASC,EAAiBZ,CAAM,EAChCa,EAAgBC,EAAS,eAAeH,CAAM,EAE9C,CAAE,QAAAI,EAAS,aAAAC,CAAA,EAAiBC,EAAkB,CAClD,OAAAN,EACA,cAAAE,EACA,KAAM,QAAA,CACP,EAMD,OACEtB,EAAC2B,GACC,SAAA3B,EAAC4B,EAAA,CAAO,GAAIhB,EAAU,MAAAF,EAAe,GAAGM,EACtC,SAAAd,EAAC,QAAK,SAAUuB,EAPkCI,GAAW,CAC7DZ,GAAgBA,EAAe,CAAE,GAAGY,EAAQ,MAAOhC,EAAS,CAClE,EAK8CiC,GAAUZ,IAAkBY,CAAK,CAAC,EAAG,UAAU,sBACpF,SAAA,CAAAhB,GAAuBT,EAAiBC,CAAI,EAC7CN,EAAC+B,EAAA,CAAY,QAAAP,EAAwC,OAAAf,CAAA,CAAgB,EACpEd,EAAgBC,EAAaC,EAASC,EAAiBC,GAAS,WAAW,EAC3EiC,EAAW,cAAcnB,CAAW,GACnCb,EAAC,MAAA,CAAI,UAAU,sBACZ,SAAAa,GAAa,IAAI,CAACoB,EAAQC,IAAU,CACnC,MAAMC,EAAoBF,EAAO,OAAS,UAAYrC,EAAY,OAAS,WAAa,CAACC,EAAU,GAInG,OACEuC,EAACC,EAAA,CACE,GAAGJ,EACJ,KAAK,KACL,IAAKC,EACL,SAPanB,GAAmBoB,EAQhC,UAAWhC,EACT,2BACA,CACE,SAAU,EAAQP,CAAW,EAE/BG,GAAS,MAAA,CACX,CAAA,CAGN,CAAC,CAAA,CACH,EAKD,CAACe,GAAuBT,EAAiBC,CAAI,CAAA,CAAA,CAChD,EACF,EACF,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Ligal as l}from"./ui/Ligal.js";import{cn as r}from"../../shared/utils/cn.js";import{FooterLogo as n}from"./ui/FooterLogo.js";import{SocialLinks as c}from"./ui/SocialLinks.js";import{PhonesBlock as b}from"./ui/PhonesBlock.js";import{TypeGuards as k}from"../../shared/utils/typeGuards.js";import{NavLinks as x}from"./ui/NavLinks.js";import{Copyright as g}from"./ui/Copyright.js";import{SiteMap as h}from"./ui/SiteMap.js";import{widgetIds as f}from"../model/helpers.js";import{ResponsiveContainer as y}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const E=({socialsLinks:i,phones:p,ligal:m,copyright:a,classes:o,details:d,siteMap:s=!0})=>e("footer",{id:f.footer,"data-test-id":f.footer,className:r("w-full bg-color-footer py-8 desktop:py-10",o?.root),children:e(y,{className:r(o?.footerContainer),children:t("div",{className:r("mobile:pb-[176px]",o?.footerWrapper),children:[t("div",{className:r("flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8",o?.footerHead),children:[t("div",{className:r(o?.footerSocialBlock),children:[e(n,{classes:o?.footerLogo}),i.enabled&&e(c,{socialsLinks:i.links,classes:o?.socialLinks})]}),p.enabled&&e(b,{phones:p.items,classes:o?.phonesBlock})]}),!k.isArrayEmpty(d)&&e(x,{details:d,classes:o?.navLinks}),m.enabled&&e(l,{text:m.text}),t("div",{className:r("mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6",o?.footerBottom),children:[a.enabled&&e(g,{text:a.text,classes:o?.copyright}),s&&e(h,{classes:o?.siteMap})]})]})})});export{E as Footer,E as default};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Ligal as s}from"./ui/Ligal.js";import{cn as r}from"../../shared/utils/cn.js";import{FooterLogo as d}from"./ui/FooterLogo.js";import{SocialLinks as n}from"./ui/SocialLinks.js";import{PhonesBlock as c}from"./ui/PhonesBlock.js";import{TypeGuards as b}from"../../shared/utils/typeGuards.js";import{NavLinks as k}from"./ui/NavLinks.js";import{Copyright as x}from"./ui/Copyright.js";import{SiteMap as g}from"./ui/SiteMap.js";import{ResponsiveContainer as h}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const M=({socialsLinks:i,phones:p,ligal:m,copyright:a,classes:o,details:f,siteMap:l=!0})=>e("footer",{id:"footer","data-test-id":"footer",className:r("w-full bg-color-footer py-8 desktop:py-10",o?.root),children:e(h,{className:r(o?.footerContainer),children:t("div",{className:r("mobile:pb-[176px]",o?.footerWrapper),children:[t("div",{className:r("flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8",o?.footerHead),children:[t("div",{className:r(o?.footerSocialBlock),children:[e(d,{classes:o?.footerLogo}),i.enabled&&e(n,{socialsLinks:i.links,classes:o?.socialLinks})]}),p.enabled&&e(c,{phones:p.items,classes:o?.phonesBlock})]}),!b.isArrayEmpty(f)&&e(k,{details:f,classes:o?.navLinks}),m.enabled&&e(s,{text:m.text}),t("div",{className:r("mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6",o?.footerBottom),children:[a.enabled&&e(x,{text:a.text,classes:o?.copyright}),l&&e(g,{classes:o?.siteMap})]})]})})});export{M as Footer,M as default};
2
2
  //# sourceMappingURL=Footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sources":["../../../../lib/widgets/footer/Footer.tsx"],"sourcesContent":["import { widgetIds } from '../model'\nimport {\n type CopyrightType,\n type Details,\n type FooterClasses,\n type LigalType,\n type PhonesType,\n type SocialsLinksType\n} from './model/types'\nimport { Copyright, FooterLogo, NavLinks, PhonesBlock, SiteMap, SocialLinks } from './ui'\nimport { Ligal } from './ui/Ligal'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface FooterProps<Enabled extends boolean> {\n variant: 'fourCols'\n socialsLinks: SocialsLinksType<Enabled>\n phones: PhonesType<Enabled>\n ligal: LigalType<Enabled>\n copyright: CopyrightType<Enabled>\n siteMap?: boolean\n details: Details[]\n classes?: FooterClasses\n}\n\nexport const Footer = <Enabled extends boolean>({\n socialsLinks,\n phones,\n ligal,\n copyright,\n classes,\n details,\n siteMap = true\n}: FooterProps<Enabled>) => {\n return (\n <footer\n id={widgetIds.footer}\n data-test-id={widgetIds.footer}\n className={cn('w-full bg-color-footer py-8 desktop:py-10', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.footerContainer)}>\n <div className={cn('mobile:pb-[176px]', classes?.footerWrapper)}>\n <div\n className={cn(\n 'flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8',\n classes?.footerHead\n )}\n >\n <div className={cn(classes?.footerSocialBlock)}>\n <FooterLogo classes={classes?.footerLogo} />\n {socialsLinks.enabled && <SocialLinks socialsLinks={socialsLinks.links} classes={classes?.socialLinks} />}\n </div>\n\n {phones.enabled && <PhonesBlock phones={phones.items} classes={classes?.phonesBlock} />}\n </div>\n\n {!TypeGuards.isArrayEmpty(details) && <NavLinks details={details} classes={classes?.navLinks} />}\n {ligal.enabled && <Ligal text={ligal.text} />}\n\n <div\n className={cn(\n 'mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6',\n classes?.footerBottom\n )}\n >\n {copyright.enabled && <Copyright text={copyright.text} classes={classes?.copyright} />}\n {siteMap && <SiteMap classes={classes?.siteMap} />}\n </div>\n </div>\n </ResponsiveContainer>\n </footer>\n )\n}\n\nexport default Footer\n"],"names":["Footer","socialsLinks","phones","ligal","copyright","classes","details","siteMap","jsx","widgetIds","cn","ResponsiveContainer","jsxs","FooterLogo","SocialLinks","PhonesBlock","TypeGuards","NavLinks","Ligal","Copyright","SiteMap"],"mappings":"6mBAyBO,MAAMA,EAAS,CAA0B,CAC9C,aAAAC,EACA,OAAAC,EACA,MAAAC,EACA,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,EACZ,IAEIC,EAAC,SAAA,CACC,GAAIC,EAAU,OACd,eAAcA,EAAU,OACxB,UAAWC,EAAG,4CAA6CL,GAAS,IAAI,EAExE,SAAAG,EAACG,EAAA,CAAoB,UAAWD,EAAGL,GAAS,eAAe,EACzD,SAAAO,EAAC,MAAA,CAAI,UAAWF,EAAG,oBAAqBL,GAAS,aAAa,EAC5D,SAAA,CAAAO,EAAC,MAAA,CACC,UAAWF,EACT,8IACAL,GAAS,UAAA,EAGX,SAAA,CAAAO,EAAC,MAAA,CAAI,UAAWF,EAAGL,GAAS,iBAAiB,EAC3C,SAAA,CAAAG,EAACK,EAAA,CAAW,QAASR,GAAS,UAAA,CAAY,EACzCJ,EAAa,SAAWO,EAACM,EAAA,CAAY,aAAcb,EAAa,MAAO,QAASI,GAAS,WAAA,CAAa,CAAA,EACzG,EAECH,EAAO,SAAWM,EAACO,EAAA,CAAY,OAAQb,EAAO,MAAO,QAASG,GAAS,WAAA,CAAa,CAAA,CAAA,CAAA,EAGtF,CAACW,EAAW,aAAaV,CAAO,KAAMW,EAAA,CAAS,QAAAX,EAAkB,QAASD,GAAS,QAAA,CAAU,EAC7FF,EAAM,SAAWK,EAACU,EAAA,CAAM,KAAMf,EAAM,KAAM,EAE3CS,EAAC,MAAA,CACC,UAAWF,EACT,2GACAL,GAAS,YAAA,EAGV,SAAA,CAAAD,EAAU,WAAYe,EAAA,CAAU,KAAMf,EAAU,KAAM,QAASC,GAAS,SAAA,CAAW,EACnFE,GAAWC,EAACY,EAAA,CAAQ,QAASf,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,CAClD,CAAA,CACF,CAAA,CACF,CAAA,CAAA"}
1
+ {"version":3,"file":"Footer.js","sources":["../../../../lib/widgets/footer/Footer.tsx"],"sourcesContent":["import {\n type CopyrightType,\n type Details,\n type FooterClasses,\n type LigalType,\n type PhonesType,\n type SocialsLinksType\n} from './model/types'\nimport { Copyright, FooterLogo, NavLinks, PhonesBlock, SiteMap, SocialLinks } from './ui'\nimport { Ligal } from './ui/Ligal'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn, TypeGuards } from '$/shared/utils'\n\nexport interface FooterProps<Enabled extends boolean> {\n variant: 'fourCols'\n socialsLinks: SocialsLinksType<Enabled>\n phones: PhonesType<Enabled>\n ligal: LigalType<Enabled>\n copyright: CopyrightType<Enabled>\n siteMap?: boolean\n details: Details[]\n classes?: FooterClasses\n}\n\nexport const Footer = <Enabled extends boolean>({\n socialsLinks,\n phones,\n ligal,\n copyright,\n classes,\n details,\n siteMap = true\n}: FooterProps<Enabled>) => {\n return (\n <footer id='footer' data-test-id='footer' className={cn('w-full bg-color-footer py-8 desktop:py-10', classes?.root)}>\n <ResponsiveContainer className={cn(classes?.footerContainer)}>\n <div className={cn('mobile:pb-[176px]', classes?.footerWrapper)}>\n <div\n className={cn(\n 'flex flex-col items-start justify-between gap-4 border-b border-solid border-blue-grey-500 pb-6 desktop:flex-row desktop:gap-6 desktop:pb-8',\n classes?.footerHead\n )}\n >\n <div className={cn(classes?.footerSocialBlock)}>\n <FooterLogo classes={classes?.footerLogo} />\n {socialsLinks.enabled && <SocialLinks socialsLinks={socialsLinks.links} classes={classes?.socialLinks} />}\n </div>\n\n {phones.enabled && <PhonesBlock phones={phones.items} classes={classes?.phonesBlock} />}\n </div>\n\n {!TypeGuards.isArrayEmpty(details) && <NavLinks details={details} classes={classes?.navLinks} />}\n {ligal.enabled && <Ligal text={ligal.text} />}\n\n <div\n className={cn(\n 'mt-6 flex flex-col-reverse items-start justify-between gap-4 desktop:mt-8 desktop:flex-row desktop:gap-6',\n classes?.footerBottom\n )}\n >\n {copyright.enabled && <Copyright text={copyright.text} classes={classes?.copyright} />}\n {siteMap && <SiteMap classes={classes?.siteMap} />}\n </div>\n </div>\n </ResponsiveContainer>\n </footer>\n )\n}\n\nexport default Footer\n"],"names":["Footer","socialsLinks","phones","ligal","copyright","classes","details","siteMap","jsx","cn","ResponsiveContainer","jsxs","FooterLogo","SocialLinks","PhonesBlock","TypeGuards","NavLinks","Ligal","Copyright","SiteMap"],"mappings":"6jBAwBO,MAAMA,EAAS,CAA0B,CAC9C,aAAAC,EACA,OAAAC,EACA,MAAAC,EACA,UAAAC,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,EACZ,IAEIC,EAAC,SAAA,CAAO,GAAG,SAAS,eAAa,SAAS,UAAWC,EAAG,4CAA6CJ,GAAS,IAAI,EAChH,SAAAG,EAACE,GAAoB,UAAWD,EAAGJ,GAAS,eAAe,EACzD,SAAAM,EAAC,MAAA,CAAI,UAAWF,EAAG,oBAAqBJ,GAAS,aAAa,EAC5D,SAAA,CAAAM,EAAC,MAAA,CACC,UAAWF,EACT,8IACAJ,GAAS,UAAA,EAGX,SAAA,CAAAM,EAAC,MAAA,CAAI,UAAWF,EAAGJ,GAAS,iBAAiB,EAC3C,SAAA,CAAAG,EAACI,EAAA,CAAW,QAASP,GAAS,UAAA,CAAY,EACzCJ,EAAa,SAAWO,EAACK,EAAA,CAAY,aAAcZ,EAAa,MAAO,QAASI,GAAS,WAAA,CAAa,CAAA,EACzG,EAECH,EAAO,SAAWM,EAACM,EAAA,CAAY,OAAQZ,EAAO,MAAO,QAASG,GAAS,WAAA,CAAa,CAAA,CAAA,CAAA,EAGtF,CAACU,EAAW,aAAaT,CAAO,KAAMU,EAAA,CAAS,QAAAV,EAAkB,QAASD,GAAS,QAAA,CAAU,EAC7FF,EAAM,SAAWK,EAACS,EAAA,CAAM,KAAMd,EAAM,KAAM,EAE3CQ,EAAC,MAAA,CACC,UAAWF,EACT,2GACAJ,GAAS,YAAA,EAGV,SAAA,CAAAD,EAAU,WAAYc,EAAA,CAAU,KAAMd,EAAU,KAAM,QAASC,GAAS,SAAA,CAAW,EACnFE,GAAWC,EAACW,EAAA,CAAQ,QAASd,GAAS,OAAA,CAAS,CAAA,CAAA,CAAA,CAClD,CAAA,CACF,EACF,EACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavLinks.js","sources":["../../../../../lib/widgets/footer/ui/NavLinks.tsx"],"sourcesContent":["import type { Details } from '../model/types'\nimport { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type NavigationLinksClasses = {\n navRoot?: string\n navGroup?: string\n navLabel?: string\n navLinks?: string\n navLink?: string\n navLinkIcon?: string\n}\n\ninterface NavLinksProps {\n classes?: NavigationLinksClasses\n details: Details[]\n}\n\nexport const NavLinks = ({ classes, details }: NavLinksProps) => {\n return (\n <div\n className={cn(\n 'mt-6 grid grid-cols-1 gap-6 border-b border-blue-grey-500 pb-6 desktop:my-8 desktop:grid-cols-4 desktop:gap-10 desktop:pb-8',\n classes?.navRoot\n )}\n >\n {details?.map(({ column }) =>\n column?.map(({ groupLabel, links }) => (\n <div key={groupLabel} className={cn('flex flex-col gap-4', classes?.navGroup)}>\n <div className={cn('desk-body-medium-l text-color-white', classes?.navLabel)}>{groupLabel}</div>\n <div className={cn('flex flex-col gap-1', classes?.navLinks)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n key={label}\n href={path}\n aria-label={label}\n intent='white'\n classes={{\n link: classes?.navLink,\n icon: classes?.navLinkIcon\n }}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )\n}\n"],"names":["NavLinks","classes","details","jsx","cn","column","groupLabel","links","path","label","rest","CustomLink"],"mappings":"4KAkBO,MAAMA,EAAW,CAAC,CAAE,QAAAC,EAAS,QAAAC,KAEhCC,EAAC,MAAA,CACC,UAAWC,EACT,8HACAH,GAAS,OAAA,EAGV,SAAAC,GAAS,IAAI,CAAC,CAAE,OAAAG,CAAA,IACfA,GAAQ,IAAI,CAAC,CAAE,WAAAC,EAAY,MAAAC,CAAA,MACxB,MAAA,CAAqB,UAAWH,EAAG,sBAAuBH,GAAS,QAAQ,EAC1E,SAAA,CAAAE,EAAC,OAAI,UAAWC,EAAG,sCAAuCH,GAAS,QAAQ,EAAI,SAAAK,EAAW,IACzF,MAAA,CAAI,UAAWF,EAAG,sBAAuBH,GAAS,QAAQ,EACxD,SAAAM,GAAO,IAAI,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,GAAGC,KAC7BP,EAACQ,EAAA,CAEC,KAAMH,EACN,aAAYC,EACZ,OAAO,QACP,QAAS,CACP,KAAMR,GAAS,QACf,KAAMA,GAAS,WAAA,EAEhB,GAAGS,EAEH,SAAAD,CAAA,EAVIA,CAAA,CAYR,CAAA,CACH,CAAA,CAAA,EAlBQH,CAmBV,CACD,CAAA,CACH,CAAA"}
1
+ {"version":3,"file":"NavLinks.js","sources":["../../../../../lib/widgets/footer/ui/NavLinks.tsx"],"sourcesContent":["import { CustomLink } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type Details } from '$/widgets/footer/model/types'\n\nexport type NavigationLinksClasses = {\n navRoot?: string\n navGroup?: string\n navLabel?: string\n navLinks?: string\n navLink?: string\n navLinkIcon?: string\n}\n\ninterface NavLinksProps {\n classes?: NavigationLinksClasses\n details: Details[]\n}\n\nexport const NavLinks = ({ classes, details }: NavLinksProps) => {\n return (\n <div\n className={cn(\n 'mt-6 grid grid-cols-1 gap-6 border-b border-blue-grey-500 pb-6 desktop:my-8 desktop:grid-cols-4 desktop:gap-10 desktop:pb-8',\n classes?.navRoot\n )}\n >\n {details?.map(({ column }) =>\n column?.map(({ groupLabel, links }) => (\n <div key={groupLabel} className={cn('flex flex-col gap-4', classes?.navGroup)}>\n <div className={cn('desk-body-medium-l text-color-white', classes?.navLabel)}>{groupLabel}</div>\n <div className={cn('flex flex-col gap-1', classes?.navLinks)}>\n {links?.map(({ path, label, ...rest }) => (\n <CustomLink\n key={label}\n href={path}\n aria-label={label}\n intent='white'\n classes={{\n link: classes?.navLink,\n icon: classes?.navLinkIcon\n }}\n {...rest}\n >\n {label}\n </CustomLink>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )\n}\n"],"names":["NavLinks","classes","details","jsx","cn","column","groupLabel","links","path","label","rest","CustomLink"],"mappings":"4KAkBO,MAAMA,EAAW,CAAC,CAAE,QAAAC,EAAS,QAAAC,KAEhCC,EAAC,MAAA,CACC,UAAWC,EACT,8HACAH,GAAS,OAAA,EAGV,SAAAC,GAAS,IAAI,CAAC,CAAE,OAAAG,CAAA,IACfA,GAAQ,IAAI,CAAC,CAAE,WAAAC,EAAY,MAAAC,CAAA,MACxB,MAAA,CAAqB,UAAWH,EAAG,sBAAuBH,GAAS,QAAQ,EAC1E,SAAA,CAAAE,EAAC,OAAI,UAAWC,EAAG,sCAAuCH,GAAS,QAAQ,EAAI,SAAAK,EAAW,IACzF,MAAA,CAAI,UAAWF,EAAG,sBAAuBH,GAAS,QAAQ,EACxD,SAAAM,GAAO,IAAI,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,GAAGC,KAC7BP,EAACQ,EAAA,CAEC,KAAMH,EACN,aAAYC,EACZ,OAAO,QACP,QAAS,CACP,KAAMR,GAAS,QACf,KAAMA,GAAS,WAAA,EAEhB,GAAGS,EAEH,SAAAD,CAAA,EAVIA,CAAA,CAYR,CAAA,CACH,CAAA,CAAA,EAlBQH,CAmBV,CACD,CAAA,CACH,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"PhonesBlock.js","sources":["../../../../../lib/widgets/footer/ui/PhonesBlock.tsx"],"sourcesContent":["import type { FooterPhones } from '../model/types'\nimport { PhoneView } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type PhoneBlockClasses = {\n phonesRoot?: string\n phoneWrapper?: string\n phoneText?: string\n phoneLink?: string\n}\n\ninterface PhonesBlockProps {\n phones: FooterPhones[]\n classes?: PhoneBlockClasses\n}\n\nexport const PhonesBlock = ({ phones, classes }: PhonesBlockProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:items-end', classes?.phonesRoot)}>\n {phones?.map(({ phone, text }) => (\n <PhoneView\n key={phone}\n phone={phone}\n text={text}\n classes={{\n root: cn(classes?.phoneWrapper),\n text: cn('text-color-footer', classes?.phoneText),\n link: cn('text-color-white mobile:m-0', classes?.phoneLink)\n }}\n />\n ))}\n </div>\n )\n}\n"],"names":["PhonesBlock","phones","classes","jsx","cn","phone","text","PhoneView"],"mappings":"+JAgBO,MAAMA,EAAc,CAAC,CAAE,OAAAC,EAAQ,QAAAC,KAElCC,EAAC,MAAA,CAAI,UAAWC,EAAG,wCAAyCF,GAAS,UAAU,EAC5E,SAAAD,GAAQ,IAAI,CAAC,CAAE,MAAAI,EAAO,KAAAC,KACrBH,EAACI,EAAA,CAEC,MAAAF,EACA,KAAAC,EACA,QAAS,CACP,KAAMF,EAAGF,GAAS,YAAY,EAC9B,KAAME,EAAG,oBAAqBF,GAAS,SAAS,EAChD,KAAME,EAAG,8BAA+BF,GAAS,SAAS,CAAA,CAC5D,EAPKG,CAAA,CASR,EACH"}
1
+ {"version":3,"file":"PhonesBlock.js","sources":["../../../../../lib/widgets/footer/ui/PhonesBlock.tsx"],"sourcesContent":["import { PhoneView } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type FooterPhones } from '$/widgets/footer/model/types'\n\nexport type PhoneBlockClasses = {\n phonesRoot?: string\n phoneWrapper?: string\n phoneText?: string\n phoneLink?: string\n}\n\ninterface PhonesBlockProps {\n phones: FooterPhones[]\n classes?: PhoneBlockClasses\n}\n\nexport const PhonesBlock = ({ phones, classes }: PhonesBlockProps) => {\n return (\n <div className={cn('flex flex-col gap-4 desktop:items-end', classes?.phonesRoot)}>\n {phones?.map(({ phone, text }) => (\n <PhoneView\n key={phone}\n phone={phone}\n text={text}\n classes={{\n root: cn(classes?.phoneWrapper),\n text: cn('text-color-footer', classes?.phoneText),\n link: cn('text-color-white mobile:m-0', classes?.phoneLink)\n }}\n />\n ))}\n </div>\n )\n}\n"],"names":["PhonesBlock","phones","classes","jsx","cn","phone","text","PhoneView"],"mappings":"+JAgBO,MAAMA,EAAc,CAAC,CAAE,OAAAC,EAAQ,QAAAC,KAElCC,EAAC,MAAA,CAAI,UAAWC,EAAG,wCAAyCF,GAAS,UAAU,EAC5E,SAAAD,GAAQ,IAAI,CAAC,CAAE,MAAAI,EAAO,KAAAC,KACrBH,EAACI,EAAA,CAEC,MAAAF,EACA,KAAAC,EACA,QAAS,CACP,KAAMF,EAAGF,GAAS,YAAY,EAC9B,KAAME,EAAG,oBAAqBF,GAAS,SAAS,EAChD,KAAME,EAAG,8BAA+BF,GAAS,SAAS,CAAA,CAC5D,EAPKG,CAAA,CASR,EACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"SocialLinks.js","sources":["../../../../../lib/widgets/footer/ui/SocialLinks.tsx"],"sourcesContent":["import type { FooterSocialLinks } from '../model/types'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type SocialLinksClasses = {\n socialRoot?: string\n socialLink?: string\n socialIcon?: string\n}\n\ninterface ISocialLinksProps {\n socialsLinks: FooterSocialLinks[]\n classes?: SocialLinksClasses\n}\n\nexport const SocialLinks = ({ socialsLinks, classes }: ISocialLinksProps) => {\n return (\n <div className={cn('mt-4 flex items-center gap-2 desktop:mt-6', classes?.socialRoot)}>\n {socialsLinks?.map(({ iconName, href, ...rest }) => (\n <a\n className={cn('flex size-8 items-center justify-center rounded-full bg-[#52576a] p-2', classes?.socialLink)}\n href={href}\n key={href}\n aria-label={iconName.replace('social/', '')}\n {...rest}\n >\n <Icon name={iconName} className={cn('h-full w-full text-icon-white', classes?.socialIcon)} />\n </a>\n ))}\n </div>\n )\n}\n"],"names":["SocialLinks","socialsLinks","classes","cn","iconName","href","rest","jsx","Icon"],"mappings":"gJAeO,MAAMA,EAAc,CAAC,CAAE,aAAAC,EAAc,QAAAC,OAEvC,MAAA,CAAI,UAAWC,EAAG,4CAA6CD,GAAS,UAAU,EAChF,SAAAD,GAAc,IAAI,CAAC,CAAE,SAAAG,EAAU,KAAAC,EAAM,GAAGC,KACvCC,EAAC,IAAA,CACC,UAAWJ,EAAG,wEAAyED,GAAS,UAAU,EAC1G,KAAAG,EAEA,aAAYD,EAAS,QAAQ,UAAW,EAAE,EACzC,GAAGE,EAEJ,SAAAC,EAACC,GAAK,KAAMJ,EAAU,UAAWD,EAAG,gCAAiCD,GAAS,UAAU,CAAA,CAAG,CAAA,EAJtFG,CAAA,CAMR,EACH"}
1
+ {"version":3,"file":"SocialLinks.js","sources":["../../../../../lib/widgets/footer/ui/SocialLinks.tsx"],"sourcesContent":["import { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\nimport { type FooterSocialLinks } from '$/widgets/footer/model/types'\n\nexport type SocialLinksClasses = {\n socialRoot?: string\n socialLink?: string\n socialIcon?: string\n}\n\ninterface ISocialLinksProps {\n socialsLinks: FooterSocialLinks[]\n classes?: SocialLinksClasses\n}\n\nexport const SocialLinks = ({ socialsLinks, classes }: ISocialLinksProps) => {\n return (\n <div className={cn('mt-4 flex items-center gap-2 desktop:mt-6', classes?.socialRoot)}>\n {socialsLinks?.map(({ iconName, href, ...rest }) => (\n <a\n className={cn('flex size-8 items-center justify-center rounded-full bg-[#52576a] p-2', classes?.socialLink)}\n href={href}\n key={href}\n aria-label={iconName.replace('social/', '')}\n {...rest}\n >\n <Icon name={iconName} className={cn('h-full w-full text-icon-white', classes?.socialIcon)} />\n </a>\n ))}\n </div>\n )\n}\n"],"names":["SocialLinks","socialsLinks","classes","cn","iconName","href","rest","jsx","Icon"],"mappings":"gJAeO,MAAMA,EAAc,CAAC,CAAE,aAAAC,EAAc,QAAAC,OAEvC,MAAA,CAAI,UAAWC,EAAG,4CAA6CD,GAAS,UAAU,EAChF,SAAAD,GAAc,IAAI,CAAC,CAAE,SAAAG,EAAU,KAAAC,EAAM,GAAGC,KACvCC,EAAC,IAAA,CACC,UAAWJ,EAAG,wEAAyED,GAAS,UAAU,EAC1G,KAAAG,EAEA,aAAYD,EAAS,QAAQ,UAAW,EAAE,EACzC,GAAGE,EAEJ,SAAAC,EAACC,GAAK,KAAMJ,EAAU,UAAWD,EAAG,gCAAiCD,GAAS,UAAU,CAAA,CAAG,CAAA,EAJtFG,CAAA,CAMR,EACH"}
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as n}from"react/jsx-runtime";import{renderContentVariant as l}from"./model/helpers.js";import{cn as r}from"../../shared/utils/cn.js";import{brandLogos as d}from"../../shared/ui/brandLogos/BrandLogos.js";import{widgetIds as s}from"../model/helpers.js";import{ResponsiveContainer as m}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const w=o=>{const{logoPath:a="/",logoType:i="main",classes:e}=o;return t("header",{id:s.header,"data-test-id":s.header,className:r("flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]",e?.root),children:t(m,{className:r(e?.container),children:n("div",{className:r("flex items-center justify-between gap-5",e?.wrapper),children:[t("a",{href:a,"aria-label":"logo",target:"_blank",rel:"noreferrer",className:r("flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]",e?.logo),children:d[i]}),l(o)]})})})};export{w as Header,w as default};
1
+ import{jsx as t,jsxs as n}from"react/jsx-runtime";import{renderContentVariant as i}from"./model/helpers.js";import{cn as r}from"../../shared/utils/cn.js";import{brandLogos as l}from"../../shared/ui/brandLogos/BrandLogos.js";import{ResponsiveContainer as c}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const g=o=>{const{logoPath:a="/",logoType:s="main",classes:e}=o;return t("header",{id:"header","data-test-id":"header",className:r("flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]",e?.root),children:t(c,{className:r(e?.container),children:n("div",{className:r("flex items-center justify-between gap-5",e?.wrapper),children:[t("a",{href:a,"aria-label":"logo",target:"_blank",rel:"noreferrer",className:r("flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]",e?.logo),children:l[s]}),i(o)]})})})};export{g as Header,g as default};
2
2
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../lib/widgets/header/Header.tsx"],"sourcesContent":["import { widgetIds } from '../model'\nimport { renderContentVariant } from './model/helpers'\nimport type { HeaderProps, HeaderVariantType } from './model/types'\nimport { brandLogos, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Header = <Type extends HeaderVariantType>(props: HeaderProps<Type>) => {\n const { logoPath = '/', logoType = 'main', classes } = props\n\n return (\n <header\n id={widgetIds.header}\n data-test-id={widgetIds.header}\n className={cn('flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn('flex items-center justify-between gap-5', classes?.wrapper)}>\n <a\n href={logoPath}\n aria-label='logo'\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]',\n classes?.logo\n )}\n >\n {brandLogos[logoType]}\n </a>\n {renderContentVariant(props)}\n </div>\n </ResponsiveContainer>\n </header>\n )\n}\n\nexport default Header\n"],"names":["Header","props","logoPath","logoType","classes","jsx","widgetIds","cn","ResponsiveContainer","jsxs","renderContentVariant"],"mappings":"iXAMO,MAAMA,EAA0CC,GAA6B,CAClF,KAAM,CAAE,SAAAC,EAAW,IAAK,SAAAC,EAAW,OAAQ,QAAAC,GAAYH,EAEvD,OACEI,EAAC,SAAA,CACC,GAAIC,EAAU,OACd,eAAcA,EAAU,OACxB,UAAWC,EAAG,4EAA6EH,GAAS,IAAI,EAExG,SAAAC,EAACG,EAAA,CAAoB,UAAWD,EAAGH,GAAS,SAAS,EACnD,SAAAK,EAAC,MAAA,CAAI,UAAWF,EAAG,0CAA2CH,GAAS,OAAO,EAC5E,SAAA,CAAAC,EAAC,IAAA,CACC,KAAMH,EACN,aAAW,OACX,OAAO,SACP,IAAI,aACJ,UAAWK,EACT,wGACAH,GAAS,IAAA,EAGV,WAAWD,CAAQ,CAAA,CAAA,EAErBO,EAAqBT,CAAK,CAAA,CAAA,CAC7B,CAAA,CACF,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../lib/widgets/header/Header.tsx"],"sourcesContent":["import { renderContentVariant } from './model/helpers'\nimport type { HeaderProps, HeaderVariantType } from './model/types'\nimport { brandLogos, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport const Header = <Type extends HeaderVariantType>(props: HeaderProps<Type>) => {\n const { logoPath = '/', logoType = 'main', classes } = props\n\n return (\n <header\n id='header'\n data-test-id='header'\n className={cn('flex h-[64px] items-center justify-center bg-color-white desktop:h-[72px]', classes?.root)}\n >\n <ResponsiveContainer className={cn(classes?.container)}>\n <div className={cn('flex items-center justify-between gap-5', classes?.wrapper)}>\n <a\n href={logoPath}\n aria-label='logo'\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'flex items-center justify-center [&_svg]:w-[132px] desktop:[&_svg]:h-[32px] desktop:[&_svg]:w-[192px]',\n classes?.logo\n )}\n >\n {brandLogos[logoType]}\n </a>\n {renderContentVariant(props)}\n </div>\n </ResponsiveContainer>\n </header>\n )\n}\n\nexport default Header\n"],"names":["Header","props","logoPath","logoType","classes","jsx","cn","ResponsiveContainer","jsxs","renderContentVariant"],"mappings":"iUAKO,MAAMA,EAA0CC,GAA6B,CAClF,KAAM,CAAE,SAAAC,EAAW,IAAK,SAAAC,EAAW,OAAQ,QAAAC,GAAYH,EAEvD,OACEI,EAAC,SAAA,CACC,GAAG,SACH,eAAa,SACb,UAAWC,EAAG,4EAA6EF,GAAS,IAAI,EAExG,SAAAC,EAACE,EAAA,CAAoB,UAAWD,EAAGF,GAAS,SAAS,EACnD,SAAAI,EAAC,MAAA,CAAI,UAAWF,EAAG,0CAA2CF,GAAS,OAAO,EAC5E,SAAA,CAAAC,EAAC,IAAA,CACC,KAAMH,EACN,aAAW,OACX,OAAO,SACP,IAAI,aACJ,UAAWI,EACT,wGACAF,GAAS,IAAA,EAGV,WAAWD,CAAQ,CAAA,CAAA,EAErBM,EAAqBR,CAAK,CAAA,CAAA,CAC7B,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,2 +1,2 @@
1
- import{queryClient as e}from"./queryClientProvider/QueryClientProvider.js";import{Benefit as m}from"./benefit/Benefit.js";import{Header as p}from"./header/Header.js";import{BannerWithSeparateImg as a}from"./banner/ui/banners/BannerWithSeparateImg.js";import{Banner as i}from"./banner/Banner.js";import{Footer as c}from"./footer/Footer.js";import{Stepper as I}from"./stepper/Stepper.js";import{LongBanner as s}from"./longBanner/LongBanner.js";import{AuthProvider as T}from"./authProvider/AuthProvider.js";import{InterLinking as k}from"./interLinking/InterLinking.js";import{UsefulInfo as L}from"./usefulInfo/UsefulInfo.js";import{DynamicForm as C}from"./dynamicForm/DynamicForm.js";import{DynamicFormDialog as H}from"./dynamicFormDialog/DynamicFormDialog.js";import{ButtonWithHandlers as b}from"./buttonWithHandlers/ButtonWithHandlers.js";import{KEYS_OF_WIDGET_LIST as P,WIDGET_LIST_MAP as W,widgetIds as h}from"./model/helpers.js";import{FallbacksView as y}from"./fallbacksView/FallbacksView.js";import{ErrorPage as A}from"./errorPage/ErrorPage.js";import{HTMLParser as U}from"./htmlParser/htmlParser.js";import{HTMLRenderer as q}from"./htmlParser/HTMLRenderer.js";import{Breadcrumbs as K}from"./breadcrumbs/Breadcrumbs.js";import{SeoHeader as R}from"./seoHeader/SeoHeader.js";import{Calculator as j}from"./calculator/Calculator.js";import{CalculatorView as J}from"./calculator/CalculatorView.js";import{InfoBlock as Q}from"./infoBlock/InfoBlock.js";import{UserFeedback as Z}from"./userFeedback/UserFeedback.js";import{InfoTable as rr}from"./table/InfoTable.js";import{ConditionBlock as er}from"./conditionBlock/ConditionBlock.js";import{CarouselBlock as mr}from"./carouselBlock/CarouselBlock.js";export{T as AuthProvider,i as Banner,a as BannerWithSeparateImg,m as Benefit,K as Breadcrumbs,b as ButtonWithHandlers,j as Calculator,J as CalculatorView,mr as CarouselBlock,er as ConditionBlock,C as DynamicForm,H as DynamicFormDialog,A as ErrorPage,y as FallbacksView,c as Footer,U as HTMLParser,q as HTMLRenderer,p as Header,Q as InfoBlock,rr as InfoTable,k as InterLinking,P as KEYS_OF_WIDGET_LIST,s as LongBanner,R as SeoHeader,I as Stepper,L as UsefulInfo,Z as UserFeedback,W as WIDGET_LIST_MAP,e as queryClient,h as widgetIds};
1
+ import{queryClient as e}from"./queryClientProvider/QueryClientProvider.js";import{Benefit as f}from"./benefit/Benefit.js";import{Header as p}from"./header/Header.js";import{Banner as a}from"./banner/Banner.js";import{Footer as l}from"./footer/Footer.js";import{Stepper as c}from"./stepper/Stepper.js";import{LongBanner as I}from"./longBanner/LongBanner.js";import{AuthProvider as u}from"./authProvider/AuthProvider.js";import{InterLinking as T}from"./interLinking/InterLinking.js";import{UsefulInfo as F}from"./usefulInfo/UsefulInfo.js";import{DynamicForm as g}from"./dynamicForm/DynamicForm.js";import{DynamicFormDialog as D}from"./dynamicFormDialog/DynamicFormDialog.js";import{ButtonWithHandlers as S}from"./buttonWithHandlers/ButtonWithHandlers.js";import{KEYS_OF_WIDGET_LIST as b,WIDGET_LIST_MAP as E,widgetIds as P}from"./model/helpers.js";import{FallbacksView as y}from"./fallbacksView/FallbacksView.js";import{ErrorPage as W}from"./errorPage/ErrorPage.js";import{HTMLParser as A}from"./htmlParser/htmlParser.js";import{HTMLRenderer as U}from"./htmlParser/HTMLRenderer.js";import{Breadcrumbs as q}from"./breadcrumbs/Breadcrumbs.js";import{SeoHeader as K}from"./seoHeader/SeoHeader.js";import{Calculator as R}from"./calculator/Calculator.js";import{CalculatorView as j}from"./calculator/CalculatorView.js";import{InfoBlock as J}from"./infoBlock/InfoBlock.js";import{UserFeedback as Q}from"./userFeedback/UserFeedback.js";import{InfoTable as Z}from"./table/InfoTable.js";import{ConditionBlock as rr}from"./conditionBlock/ConditionBlock.js";import{CarouselBlock as er}from"./carouselBlock/CarouselBlock.js";export{u as AuthProvider,a as Banner,f as Benefit,q as Breadcrumbs,S as ButtonWithHandlers,R as Calculator,j as CalculatorView,er as CarouselBlock,rr as ConditionBlock,g as DynamicForm,D as DynamicFormDialog,W as ErrorPage,y as FallbacksView,l as Footer,A as HTMLParser,U as HTMLRenderer,p as Header,J as InfoBlock,Z as InfoTable,T as InterLinking,b as KEYS_OF_WIDGET_LIST,I as LongBanner,K as SeoHeader,c as Stepper,F as UsefulInfo,Q as UserFeedback,E as WIDGET_LIST_MAP,e as queryClient,P as widgetIds};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as c}from"react/jsx-runtime";import{cn as t}from"../../shared/utils/cn.js";import{RootContent as m}from"./ui/RootContent.js";import{widgetIds as i}from"../model/helpers.js";import{ResponsiveContainer as d}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const k=l=>{const{size:r="md",backgroundColor:n="#F4F8FE",images:s,classes:e,...a}=l;return o("section",{id:i.infoBlock,"data-test-id":i.infoBlock,style:{backgroundColor:n},className:t("py-14",e?.root),children:o(d,{children:c("div",{className:t("flex items-center justify-between gap-11 mobile:flex-col",e?.container),children:[o(m,{images:s,classes:e?.rootContent,...a}),o("div",{className:t("h-[200px] w-full max-w-[432px] mobile:hidden",e?.imageDesktopWrapper,{"h-[238px]":r==="md"}),children:o("img",{src:s?.desktop,alt:s?.alt,className:t("h-full w-full object-contain",e?.imageDesktop)})})]})})})};export{k as InfoBlock,k as default};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import{cn as t}from"../../shared/utils/cn.js";import{RootContent as c}from"./ui/RootContent.js";import{ResponsiveContainer as m}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";const h=i=>{const{size:l="md",backgroundColor:n="#F4F8FE",images:s,classes:e,...a}=i;return o("section",{id:"infoBlock","data-test-id":"infoBlock",style:{backgroundColor:n},className:t("py-14",e?.root),children:o(m,{children:r("div",{className:t("flex items-center justify-between gap-11 mobile:flex-col",e?.container),children:[o(c,{images:s,classes:e?.rootContent,...a}),o("div",{className:t("h-[200px] w-full max-w-[432px] mobile:hidden",e?.imageDesktopWrapper,{"h-[238px]":l==="md"}),children:o("img",{src:s?.desktop,alt:s?.alt,className:t("h-full w-full object-contain",e?.imageDesktop)})})]})})})};export{h as InfoBlock,h as default};
2
2
  //# sourceMappingURL=InfoBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InfoBlock.js","sources":["../../../../lib/widgets/infoBlock/InfoBlock.tsx"],"sourcesContent":["import { widgetIds } from '../model'\nimport { RootContent, type RootContentClasses, type RootContentProps } from './ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype InfoBlockClasses = {\n root?: string\n container?: string\n wrapper?: string\n rootContent?: RootContentClasses\n imageDesktopWrapper?: string\n imageDesktop?: string\n}\n\nexport interface InfoBlockProps extends RootContentProps {\n size?: 'sm' | 'md'\n classes?: InfoBlockClasses\n backgroundColor?: BackgroundBannerColors\n}\n\nexport const InfoBlock = (props: InfoBlockProps) => {\n const { size = 'md', backgroundColor = '#F4F8FE', images, classes, ...rest } = props\n\n return (\n <section\n id={widgetIds.infoBlock}\n data-test-id={widgetIds.infoBlock}\n style={{ backgroundColor: backgroundColor }}\n className={cn('py-14', classes?.root)}\n >\n <ResponsiveContainer>\n <div className={cn('flex items-center justify-between gap-11 mobile:flex-col', classes?.container)}>\n <RootContent images={images} classes={classes?.rootContent} {...rest} />\n\n <div\n className={cn('h-[200px] w-full max-w-[432px] mobile:hidden', classes?.imageDesktopWrapper, {\n 'h-[238px]': size === 'md'\n })}\n >\n <img src={images?.desktop} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageDesktop)} />\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InfoBlock\n"],"names":["InfoBlock","props","size","backgroundColor","images","classes","rest","jsx","widgetIds","cn","ResponsiveContainer","jsxs","RootContent"],"mappings":"mSAqBO,MAAMA,EAAaC,GAA0B,CAClD,KAAM,CAAE,KAAAC,EAAO,KAAM,gBAAAC,EAAkB,UAAW,OAAAC,EAAQ,QAAAC,EAAS,GAAGC,CAAA,EAASL,EAE/E,OACEM,EAAC,UAAA,CACC,GAAIC,EAAU,UACd,eAAcA,EAAU,UACxB,MAAO,CAAE,gBAAAL,CAAA,EACT,UAAWM,EAAG,QAASJ,GAAS,IAAI,EAEpC,SAAAE,EAACG,GACC,SAAAC,EAAC,MAAA,CAAI,UAAWF,EAAG,2DAA4DJ,GAAS,SAAS,EAC/F,SAAA,CAAAE,EAACK,GAAY,OAAAR,EAAgB,QAASC,GAAS,YAAc,GAAGC,EAAM,EAEtEC,EAAC,MAAA,CACC,UAAWE,EAAG,+CAAgDJ,GAAS,oBAAqB,CAC1F,YAAaH,IAAS,IAAA,CACvB,EAED,SAAAK,EAAC,MAAA,CAAI,IAAKH,GAAQ,QAAS,IAAKA,GAAQ,IAAK,UAAWK,EAAG,+BAAgCJ,GAAS,YAAY,CAAA,CAAG,CAAA,CAAA,CACrH,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"InfoBlock.js","sources":["../../../../lib/widgets/infoBlock/InfoBlock.tsx"],"sourcesContent":["import { RootContent, type RootContentClasses, type RootContentProps } from './ui'\nimport type { BackgroundBannerColors } from '$/shared/constants'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\ntype InfoBlockClasses = {\n root?: string\n container?: string\n wrapper?: string\n rootContent?: RootContentClasses\n imageDesktopWrapper?: string\n imageDesktop?: string\n}\n\nexport interface InfoBlockProps extends RootContentProps {\n size?: 'sm' | 'md'\n classes?: InfoBlockClasses\n backgroundColor?: BackgroundBannerColors\n}\n\nexport const InfoBlock = (props: InfoBlockProps) => {\n const { size = 'md', backgroundColor = '#F4F8FE', images, classes, ...rest } = props\n\n return (\n <section\n id='infoBlock'\n data-test-id='infoBlock'\n style={{ backgroundColor: backgroundColor }}\n className={cn('py-14', classes?.root)}\n >\n <ResponsiveContainer>\n <div className={cn('flex items-center justify-between gap-11 mobile:flex-col', classes?.container)}>\n <RootContent images={images} classes={classes?.rootContent} {...rest} />\n\n <div\n className={cn('h-[200px] w-full max-w-[432px] mobile:hidden', classes?.imageDesktopWrapper, {\n 'h-[238px]': size === 'md'\n })}\n >\n <img src={images?.desktop} alt={images?.alt} className={cn('h-full w-full object-contain', classes?.imageDesktop)} />\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InfoBlock\n"],"names":["InfoBlock","props","size","backgroundColor","images","classes","rest","jsx","cn","ResponsiveContainer","jsxs","RootContent"],"mappings":"mPAoBO,MAAMA,EAAaC,GAA0B,CAClD,KAAM,CAAE,KAAAC,EAAO,KAAM,gBAAAC,EAAkB,UAAW,OAAAC,EAAQ,QAAAC,EAAS,GAAGC,CAAA,EAASL,EAE/E,OACEM,EAAC,UAAA,CACC,GAAG,YACH,eAAa,YACb,MAAO,CAAE,gBAAAJ,CAAA,EACT,UAAWK,EAAG,QAASH,GAAS,IAAI,EAEpC,SAAAE,EAACE,GACC,SAAAC,EAAC,MAAA,CAAI,UAAWF,EAAG,2DAA4DH,GAAS,SAAS,EAC/F,SAAA,CAAAE,EAACI,GAAY,OAAAP,EAAgB,QAASC,GAAS,YAAc,GAAGC,EAAM,EAEtEC,EAAC,MAAA,CACC,UAAWC,EAAG,+CAAgDH,GAAS,oBAAqB,CAC1F,YAAaH,IAAS,IAAA,CACvB,EAED,SAAAK,EAAC,MAAA,CAAI,IAAKH,GAAQ,QAAS,IAAKA,GAAQ,IAAK,UAAWI,EAAG,+BAAgCH,GAAS,YAAY,CAAA,CAAG,CAAA,CAAA,CACrH,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAGN"}
@@ -1,2 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import{cva as g}from"class-variance-authority";import{cn as r}from"../../shared/utils/cn.js";import{Column as p}from"./ui/Column.js";import{widgetIds as l}from"../model/helpers.js";import{ResponsiveContainer as f}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Accordion as u}from"../../shared/ui/accordion/Accordion.js";import{Heading as h}from"../../shared/ui/heading/Heading.js";const k=g("grid gap-4 grid-cols-1",{variants:{variant:{twoCols:"desktop:grid-cols-2",threeCols:"desktop:grid-cols-3",fourCols:"desktop:grid-cols-4"}},defaultVariants:{variant:"fourCols"}}),I=({variant:n,details:o,headline:a,mobileAccordionProps:s,rootAccordionProps:i,classes:t,defaultOpen:m})=>e("section",{id:l.interLinking,"data-test-id":l.interLinking,className:r("min-w-full desktop:min-w-[1140px]",t?.root),children:e(f,{children:e(u,{defaultOpen:m,label:e(h,{as:"h4",className:r("text-left",t?.headline),children:a}),...i,classes:{...i?.classes,header:{trigger:r("bg-color-blue-grey-100",i?.classes?.header?.trigger)},content:r("max-w-full bg-color-blue-grey-100 relative",i?.classes?.content)},children:e("div",{className:r(k({variant:n}),t?.columnsWrapper),children:o?.map((d,c)=>e(p,{...d,...s,classes:t?.column},c))})})})});export{I as InterLinking,I as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{cva as d}from"class-variance-authority";import{cn as r}from"../../shared/utils/cn.js";import{Column as g}from"./ui/Column.js";import{ResponsiveContainer as p}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{Accordion as f}from"../../shared/ui/accordion/Accordion.js";import{Heading as u}from"../../shared/ui/heading/Heading.js";const h=d("grid gap-4 grid-cols-1",{variants:{variant:{twoCols:"desktop:grid-cols-2",threeCols:"desktop:grid-cols-3",fourCols:"desktop:grid-cols-4"}},defaultVariants:{variant:"fourCols"}}),N=({variant:l,details:n,headline:a,mobileAccordionProps:o,rootAccordionProps:i,classes:t,defaultOpen:s})=>e("section",{id:"interLinking","data-test-id":"interLinking",className:r("min-w-full desktop:min-w-[1140px]",t?.root),children:e(p,{children:e(f,{defaultOpen:s,label:e(u,{as:"h4",className:r("text-left",t?.headline),children:a}),...i,classes:{...i?.classes,header:{trigger:r("bg-color-blue-grey-100",i?.classes?.header?.trigger)},content:r("max-w-full bg-color-blue-grey-100 relative",i?.classes?.content)},children:e("div",{className:r(h({variant:l}),t?.columnsWrapper),children:n?.map((m,c)=>e(g,{...m,...o,classes:t?.column},c))})})})});export{N as InterLinking,N as default};
2
2
  //# sourceMappingURL=InterLinking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InterLinking.js","sources":["../../../../lib/widgets/interLinking/InterLinking.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport { widgetIds } from '../model'\nimport type { InterLinkingRoot } from './model/types'\nimport { Column, type ColumnClasses } from './ui'\nimport { Accordion, type AccordionProps, Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst columnsWrapper = cva('grid gap-4 grid-cols-1', {\n variants: {\n variant: {\n twoCols: 'desktop:grid-cols-2',\n threeCols: 'desktop:grid-cols-3',\n fourCols: 'desktop:grid-cols-4'\n }\n },\n defaultVariants: {\n variant: 'fourCols'\n }\n})\n\nexport type InterLinkingClasses = {\n root?: string\n headline?: string\n columnsWrapper?: string\n column?: ColumnClasses\n}\n\nexport interface InterLinkingProps extends InterLinkingRoot {\n mobileAccordionProps?: Partial<AccordionProps>\n rootAccordionProps?: Partial<AccordionProps>\n classes?: InterLinkingClasses\n defaultOpen?: boolean\n}\n\nexport const InterLinking = ({\n variant,\n details,\n headline,\n mobileAccordionProps,\n rootAccordionProps,\n classes,\n defaultOpen\n}: InterLinkingProps) => {\n return (\n <section\n id={widgetIds.interLinking}\n data-test-id={widgetIds.interLinking}\n className={cn('min-w-full desktop:min-w-[1140px]', classes?.root)}\n >\n <ResponsiveContainer>\n <Accordion\n defaultOpen={defaultOpen}\n label={\n <Heading as='h4' className={cn('text-left', classes?.headline)}>\n {headline}\n </Heading>\n }\n {...rootAccordionProps}\n classes={{\n ...rootAccordionProps?.classes,\n header: {\n trigger: cn('bg-color-blue-grey-100', rootAccordionProps?.classes?.header?.trigger)\n },\n content: cn('max-w-full bg-color-blue-grey-100 relative', rootAccordionProps?.classes?.content)\n }}\n >\n <div className={cn(columnsWrapper({ variant: variant }), classes?.columnsWrapper)}>\n {details?.map((column, index) => (\n <Column key={index} {...column} {...mobileAccordionProps} classes={classes?.column} />\n ))}\n </div>\n </Accordion>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InterLinking\n"],"names":["columnsWrapper","cva","InterLinking","variant","details","headline","mobileAccordionProps","rootAccordionProps","classes","defaultOpen","jsx","widgetIds","cn","ResponsiveContainer","Accordion","Heading","column","index","Column"],"mappings":"8bAOA,MAAMA,EAAiBC,EAAI,yBAA0B,CACnD,SAAU,CACR,QAAS,CACP,QAAS,sBACT,UAAW,sBACX,SAAU,qBAAA,CACZ,EAEF,gBAAiB,CACf,QAAS,UAAA,CAEb,CAAC,EAgBYC,EAAe,CAAC,CAC3B,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,qBAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,YAAAC,CACF,IAEIC,EAAC,UAAA,CACC,GAAIC,EAAU,aACd,eAAcA,EAAU,aACxB,UAAWC,EAAG,oCAAqCJ,GAAS,IAAI,EAEhE,WAACK,EAAA,CACC,SAAAH,EAACI,EAAA,CACC,YAAAL,EACA,MACEC,EAACK,EAAA,CAAQ,GAAG,KAAK,UAAWH,EAAG,YAAaJ,GAAS,QAAQ,EAC1D,SAAAH,CAAA,CACH,EAED,GAAGE,EACJ,QAAS,CACP,GAAGA,GAAoB,QACvB,OAAQ,CACN,QAASK,EAAG,yBAA0BL,GAAoB,SAAS,QAAQ,OAAO,CAAA,EAEpF,QAASK,EAAG,6CAA8CL,GAAoB,SAAS,OAAO,CAAA,EAGhG,SAAAG,EAAC,MAAA,CAAI,UAAWE,EAAGZ,EAAe,CAAE,QAAAG,CAAA,CAAkB,EAAGK,GAAS,cAAc,EAC7E,SAAAJ,GAAS,IAAI,CAACY,EAAQC,IACrBP,EAACQ,EAAA,CAAoB,GAAGF,EAAS,GAAGV,EAAsB,QAASE,GAAS,MAAA,EAA/DS,CAAuE,CACrF,CAAA,CACH,CAAA,CAAA,CACF,CACF,CAAA,CAAA"}
1
+ {"version":3,"file":"InterLinking.js","sources":["../../../../lib/widgets/interLinking/InterLinking.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { InterLinkingRoot } from './model/types'\nimport { Column, type ColumnClasses } from './ui'\nimport { Accordion, type AccordionProps, Heading, ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nconst columnsWrapper = cva('grid gap-4 grid-cols-1', {\n variants: {\n variant: {\n twoCols: 'desktop:grid-cols-2',\n threeCols: 'desktop:grid-cols-3',\n fourCols: 'desktop:grid-cols-4'\n }\n },\n defaultVariants: {\n variant: 'fourCols'\n }\n})\n\nexport type InterLinkingClasses = {\n root?: string\n headline?: string\n columnsWrapper?: string\n column?: ColumnClasses\n}\n\nexport interface InterLinkingProps extends InterLinkingRoot {\n mobileAccordionProps?: Partial<AccordionProps>\n rootAccordionProps?: Partial<AccordionProps>\n classes?: InterLinkingClasses\n defaultOpen?: boolean\n}\n\nexport const InterLinking = ({\n variant,\n details,\n headline,\n mobileAccordionProps,\n rootAccordionProps,\n classes,\n defaultOpen\n}: InterLinkingProps) => {\n return (\n <section id='interLinking' data-test-id='interLinking' className={cn('min-w-full desktop:min-w-[1140px]', classes?.root)}>\n <ResponsiveContainer>\n <Accordion\n defaultOpen={defaultOpen}\n label={\n <Heading as='h4' className={cn('text-left', classes?.headline)}>\n {headline}\n </Heading>\n }\n {...rootAccordionProps}\n classes={{\n ...rootAccordionProps?.classes,\n header: {\n trigger: cn('bg-color-blue-grey-100', rootAccordionProps?.classes?.header?.trigger)\n },\n content: cn('max-w-full bg-color-blue-grey-100 relative', rootAccordionProps?.classes?.content)\n }}\n >\n <div className={cn(columnsWrapper({ variant: variant }), classes?.columnsWrapper)}>\n {details?.map((column, index) => (\n <Column key={index} {...column} {...mobileAccordionProps} classes={classes?.column} />\n ))}\n </div>\n </Accordion>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default InterLinking\n"],"names":["columnsWrapper","cva","InterLinking","variant","details","headline","mobileAccordionProps","rootAccordionProps","classes","defaultOpen","jsx","cn","ResponsiveContainer","Accordion","Heading","column","index","Column"],"mappings":"8YAMA,MAAMA,EAAiBC,EAAI,yBAA0B,CACnD,SAAU,CACR,QAAS,CACP,QAAS,sBACT,UAAW,sBACX,SAAU,qBAAA,CACZ,EAEF,gBAAiB,CACf,QAAS,UAAA,CAEb,CAAC,EAgBYC,EAAe,CAAC,CAC3B,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,qBAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,YAAAC,CACF,IAEIC,EAAC,UAAA,CAAQ,GAAG,eAAe,eAAa,eAAe,UAAWC,EAAG,oCAAqCH,GAAS,IAAI,EACrH,WAACI,EAAA,CACC,SAAAF,EAACG,EAAA,CACC,YAAAJ,EACA,MACEC,EAACI,EAAA,CAAQ,GAAG,KAAK,UAAWH,EAAG,YAAaH,GAAS,QAAQ,EAC1D,SAAAH,CAAA,CACH,EAED,GAAGE,EACJ,QAAS,CACP,GAAGA,GAAoB,QACvB,OAAQ,CACN,QAASI,EAAG,yBAA0BJ,GAAoB,SAAS,QAAQ,OAAO,CAAA,EAEpF,QAASI,EAAG,6CAA8CJ,GAAoB,SAAS,OAAO,CAAA,EAGhG,SAAAG,EAAC,MAAA,CAAI,UAAWC,EAAGX,EAAe,CAAE,QAAAG,CAAA,CAAkB,EAAGK,GAAS,cAAc,EAC7E,SAAAJ,GAAS,IAAI,CAACW,EAAQC,IACrBN,EAACO,EAAA,CAAoB,GAAGF,EAAS,GAAGT,EAAsB,QAASE,GAAS,MAAA,EAA/DQ,CAAuE,CACrF,CAAA,CACH,CAAA,CAAA,EAEJ,CAAA,CACF"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{containerImgConfig as m}from"./model/cva.js";import{cn as r}from"../../shared/utils/cn.js";import{Title as l}from"./ui/Title.js";import{TextList as u}from"./ui/TextList.js";import{widgetIds as p}from"../model/helpers.js";import{ResponsiveContainer as h}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{ButtonWithHandlers as x}from"../buttonWithHandlers/ButtonWithHandlers.js";const g=({headline:s,buttonConfig:d,intent:t="twoItems",details:c,images:n,backgroundColor:f,classes:o})=>{const a=t==="fourItems",k=t==="twoItems";return e("section",{id:p.longBanner,"data-test-id":p.longBanner,className:r(o?.root),children:i(h,{className:r(o?.container),children:[k&&e(l,{intent:t,headline:s}),i("div",{className:r("bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12",o?.contentContainer),style:{backgroundColor:f??"#f4f8fe"},children:[a&&e(l,{intent:t,headline:s,desktopHidden:!0}),e("div",{className:r("mobile:hidden",m({intent:t,withButton:d?.enabled}),o?.imgContainer),children:e("img",{className:"h-full object-contain",src:n?.desktop,alt:n?.alt})}),e("div",{className:r("desktop:hidden",m({intent:t,withButton:d?.enabled}),o?.imgContainer),children:e("img",{className:"h-full object-contain",src:n?.mobile,alt:n?.alt})}),i("div",{className:r("desktop:flex desktop:flex-col desktop:justify-center desktop:py-10",o?.textWithBtnContainer),children:[a&&e(l,{intent:t,headline:s,mobileHidden:!0}),e(u,{details:c,intent:t,withButton:d?.enabled??!1}),d?.enabled&&d&&e(x,{className:r("w-full px-4 desktop:w-max",o?.button),size:"lg",intent:"secondary",...d.buttonContent})]})]})]})})};export{g as LongBanner,g as default};
1
+ import{jsx as e,jsxs as l}from"react/jsx-runtime";import{containerImgConfig as m}from"./model/cva.js";import{cn as r}from"../../shared/utils/cn.js";import{Title as i}from"./ui/Title.js";import{TextList as k}from"./ui/TextList.js";import{ResponsiveContainer as u}from"../../shared/ui/responsiveContainer/ResponsiveContainer.js";import{ButtonWithHandlers as h}from"../buttonWithHandlers/ButtonWithHandlers.js";const v=({headline:s,buttonConfig:n,intent:t="twoItems",details:p,images:d,backgroundColor:c,classes:o})=>{const a=t==="fourItems",f=t==="twoItems";return e("section",{id:"longBanner","data-test-id":"longBanner",className:r(o?.root),children:l(u,{className:r(o?.container),children:[f&&e(i,{intent:t,headline:s}),l("div",{className:r("bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12",o?.contentContainer),style:{backgroundColor:c??"#f4f8fe"},children:[a&&e(i,{intent:t,headline:s,desktopHidden:!0}),e("div",{className:r("mobile:hidden",m({intent:t,withButton:n?.enabled}),o?.imgContainer),children:e("img",{className:"h-full object-contain",src:d?.desktop,alt:d?.alt})}),e("div",{className:r("desktop:hidden",m({intent:t,withButton:n?.enabled}),o?.imgContainer),children:e("img",{className:"h-full object-contain",src:d?.mobile,alt:d?.alt})}),l("div",{className:r("desktop:flex desktop:flex-col desktop:justify-center desktop:py-10",o?.textWithBtnContainer),children:[a&&e(i,{intent:t,headline:s,mobileHidden:!0}),e(k,{details:p,intent:t,withButton:n?.enabled??!1}),n?.enabled&&n&&e(h,{className:r("w-full px-4 desktop:w-max",o?.button),size:"lg",intent:"secondary",...n.buttonContent})]})]})]})})};export{v as LongBanner,v as default};
2
2
  //# sourceMappingURL=LongBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LongBanner.js","sources":["../../../../lib/widgets/longBanner/LongBanner.tsx"],"sourcesContent":["import { type ReactElement } from 'react'\nimport { type ImagesPrimitive } from '../../shared/types/shared-types'\nimport { ButtonWithHandlers } from '../buttonWithHandlers'\nimport { widgetIds } from '../model'\nimport { containerImgConfig } from './model/cva'\nimport { type ButtonConfig, type Details, type LongBannerClasses, type LongBannerConfig } from './model/types'\nimport { TextList, Title } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface LongBannerProps<Enabled extends boolean> extends LongBannerConfig {\n headline: string | ReactElement\n details: Details<Enabled>[]\n intent?: 'twoItems' | 'fourItems'\n buttonConfig?: ButtonConfig\n images: ImagesPrimitive\n backgroundColor?: string\n classes?: LongBannerClasses\n}\n\nexport const LongBanner = <Enabled extends boolean>({\n headline,\n buttonConfig,\n intent = 'twoItems',\n details,\n images,\n backgroundColor,\n classes\n}: LongBannerProps<Enabled>) => {\n const isFourItems = intent === 'fourItems'\n const isTwoItems = intent === 'twoItems'\n\n return (\n <section id={widgetIds.longBanner} data-test-id={widgetIds.longBanner} className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n {isTwoItems && <Title intent={intent} headline={headline} />}\n\n <div\n className={cn(\n 'bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12',\n classes?.contentContainer\n )}\n style={{ backgroundColor: backgroundColor ?? '#f4f8fe' }}\n >\n {isFourItems && <Title intent={intent} headline={headline} desktopHidden={true} />}\n <div\n className={cn(\n 'mobile:hidden',\n containerImgConfig({ intent, withButton: buttonConfig?.enabled }),\n classes?.imgContainer\n )}\n >\n <img className='h-full object-contain' src={images?.desktop} alt={images?.alt} />\n </div>\n <div\n className={cn(\n 'desktop:hidden',\n containerImgConfig({ intent, withButton: buttonConfig?.enabled }),\n classes?.imgContainer\n )}\n >\n <img className='h-full object-contain' src={images?.mobile} alt={images?.alt} />\n </div>\n <div\n className={cn('desktop:flex desktop:flex-col desktop:justify-center desktop:py-10', classes?.textWithBtnContainer)}\n >\n {isFourItems && <Title intent={intent} headline={headline} mobileHidden={true} />}\n <TextList details={details} intent={intent} withButton={buttonConfig?.enabled ?? false} />\n {buttonConfig?.enabled && buttonConfig && (\n <ButtonWithHandlers\n className={cn('w-full px-4 desktop:w-max', classes?.button)}\n size='lg'\n intent='secondary'\n {...buttonConfig.buttonContent}\n />\n )}\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default LongBanner\n"],"names":["LongBanner","headline","buttonConfig","intent","details","images","backgroundColor","classes","isFourItems","isTwoItems","widgetIds","cn","jsxs","ResponsiveContainer","jsx","Title","containerImgConfig","TextList","ButtonWithHandlers"],"mappings":"wcAoBO,MAAMA,EAAa,CAA0B,CAClD,SAAAC,EACA,aAAAC,EACA,OAAAC,EAAS,WACT,QAAAC,EACA,OAAAC,EACA,gBAAAC,EACA,QAAAC,CACF,IAAgC,CAC9B,MAAMC,EAAcL,IAAW,YACzBM,EAAaN,IAAW,WAE9B,SACG,UAAA,CAAQ,GAAIO,EAAU,WAAY,eAAcA,EAAU,WAAY,UAAWC,EAAGJ,GAAS,IAAI,EAChG,SAAAK,EAACC,EAAA,CAAoB,UAAWF,EAAGJ,GAAS,SAAS,EAClD,SAAA,CAAAE,GAAcK,EAACC,EAAA,CAAM,OAAAZ,EAAgB,SAAAF,CAAA,CAAoB,EAE1DW,EAAC,MAAA,CACC,UAAWD,EACT,6IACAJ,GAAS,gBAAA,EAEX,MAAO,CAAE,gBAAiBD,GAAmB,SAAA,EAE5C,SAAA,CAAAE,GAAeM,EAACC,EAAA,CAAM,OAAAZ,EAAgB,SAAAF,EAAoB,cAAe,GAAM,EAChFa,EAAC,MAAA,CACC,UAAWH,EACT,gBACAK,EAAmB,CAAE,OAAAb,EAAQ,WAAYD,GAAc,QAAS,EAChEK,GAAS,YAAA,EAGX,SAAAO,EAAC,OAAI,UAAU,wBAAwB,IAAKT,GAAQ,QAAS,IAAKA,GAAQ,GAAA,CAAK,CAAA,CAAA,EAEjFS,EAAC,MAAA,CACC,UAAWH,EACT,iBACAK,EAAmB,CAAE,OAAAb,EAAQ,WAAYD,GAAc,QAAS,EAChEK,GAAS,YAAA,EAGX,SAAAO,EAAC,OAAI,UAAU,wBAAwB,IAAKT,GAAQ,OAAQ,IAAKA,GAAQ,GAAA,CAAK,CAAA,CAAA,EAEhFO,EAAC,MAAA,CACC,UAAWD,EAAG,qEAAsEJ,GAAS,oBAAoB,EAEhH,SAAA,CAAAC,GAAeM,EAACC,EAAA,CAAM,OAAAZ,EAAgB,SAAAF,EAAoB,aAAc,GAAM,IAC9EgB,EAAA,CAAS,QAAAb,EAAkB,OAAAD,EAAgB,WAAYD,GAAc,SAAW,GAAO,EACvFA,GAAc,SAAWA,GACxBY,EAACI,EAAA,CACC,UAAWP,EAAG,4BAA6BJ,GAAS,MAAM,EAC1D,KAAK,KACL,OAAO,YACN,GAAGL,EAAa,aAAA,CAAA,CACnB,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"LongBanner.js","sources":["../../../../lib/widgets/longBanner/LongBanner.tsx"],"sourcesContent":["import { type ReactElement } from 'react'\nimport { type ImagesPrimitive } from '../../shared/types/shared-types'\nimport { ButtonWithHandlers } from '../buttonWithHandlers'\nimport { containerImgConfig } from './model/cva'\nimport { type ButtonConfig, type Details, type LongBannerClasses, type LongBannerConfig } from './model/types'\nimport { TextList, Title } from './ui'\nimport { ResponsiveContainer } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface LongBannerProps<Enabled extends boolean> extends LongBannerConfig {\n headline: string | ReactElement\n details: Details<Enabled>[]\n intent?: 'twoItems' | 'fourItems'\n buttonConfig?: ButtonConfig\n images: ImagesPrimitive\n backgroundColor?: string\n classes?: LongBannerClasses\n}\n\nexport const LongBanner = <Enabled extends boolean>({\n headline,\n buttonConfig,\n intent = 'twoItems',\n details,\n images,\n backgroundColor,\n classes\n}: LongBannerProps<Enabled>) => {\n const isFourItems = intent === 'fourItems'\n const isTwoItems = intent === 'twoItems'\n\n return (\n <section id='longBanner' data-test-id='longBanner' className={cn(classes?.root)}>\n <ResponsiveContainer className={cn(classes?.container)}>\n {isTwoItems && <Title intent={intent} headline={headline} />}\n\n <div\n className={cn(\n 'bg-banner-skyblue-100 px-6 pb-8 pt-6 desktop:flex desktop:flex-row-reverse desktop:justify-between desktop:px-0 desktop:py-0 desktop:pl-12',\n classes?.contentContainer\n )}\n style={{ backgroundColor: backgroundColor ?? '#f4f8fe' }}\n >\n {isFourItems && <Title intent={intent} headline={headline} desktopHidden={true} />}\n <div\n className={cn(\n 'mobile:hidden',\n containerImgConfig({ intent, withButton: buttonConfig?.enabled }),\n classes?.imgContainer\n )}\n >\n <img className='h-full object-contain' src={images?.desktop} alt={images?.alt} />\n </div>\n <div\n className={cn(\n 'desktop:hidden',\n containerImgConfig({ intent, withButton: buttonConfig?.enabled }),\n classes?.imgContainer\n )}\n >\n <img className='h-full object-contain' src={images?.mobile} alt={images?.alt} />\n </div>\n <div\n className={cn('desktop:flex desktop:flex-col desktop:justify-center desktop:py-10', classes?.textWithBtnContainer)}\n >\n {isFourItems && <Title intent={intent} headline={headline} mobileHidden={true} />}\n <TextList details={details} intent={intent} withButton={buttonConfig?.enabled ?? false} />\n {buttonConfig?.enabled && buttonConfig && (\n <ButtonWithHandlers\n className={cn('w-full px-4 desktop:w-max', classes?.button)}\n size='lg'\n intent='secondary'\n {...buttonConfig.buttonContent}\n />\n )}\n </div>\n </div>\n </ResponsiveContainer>\n </section>\n )\n}\n\nexport default LongBanner\n"],"names":["LongBanner","headline","buttonConfig","intent","details","images","backgroundColor","classes","isFourItems","isTwoItems","cn","jsxs","ResponsiveContainer","jsx","Title","containerImgConfig","TextList","ButtonWithHandlers"],"mappings":"wZAmBO,MAAMA,EAAa,CAA0B,CAClD,SAAAC,EACA,aAAAC,EACA,OAAAC,EAAS,WACT,QAAAC,EACA,OAAAC,EACA,gBAAAC,EACA,QAAAC,CACF,IAAgC,CAC9B,MAAMC,EAAcL,IAAW,YACzBM,EAAaN,IAAW,WAE9B,SACG,UAAA,CAAQ,GAAG,aAAa,eAAa,aAAa,UAAWO,EAAGH,GAAS,IAAI,EAC5E,SAAAI,EAACC,EAAA,CAAoB,UAAWF,EAAGH,GAAS,SAAS,EAClD,SAAA,CAAAE,GAAcI,EAACC,EAAA,CAAM,OAAAX,EAAgB,SAAAF,CAAA,CAAoB,EAE1DU,EAAC,MAAA,CACC,UAAWD,EACT,6IACAH,GAAS,gBAAA,EAEX,MAAO,CAAE,gBAAiBD,GAAmB,SAAA,EAE5C,SAAA,CAAAE,GAAeK,EAACC,EAAA,CAAM,OAAAX,EAAgB,SAAAF,EAAoB,cAAe,GAAM,EAChFY,EAAC,MAAA,CACC,UAAWH,EACT,gBACAK,EAAmB,CAAE,OAAAZ,EAAQ,WAAYD,GAAc,QAAS,EAChEK,GAAS,YAAA,EAGX,SAAAM,EAAC,OAAI,UAAU,wBAAwB,IAAKR,GAAQ,QAAS,IAAKA,GAAQ,GAAA,CAAK,CAAA,CAAA,EAEjFQ,EAAC,MAAA,CACC,UAAWH,EACT,iBACAK,EAAmB,CAAE,OAAAZ,EAAQ,WAAYD,GAAc,QAAS,EAChEK,GAAS,YAAA,EAGX,SAAAM,EAAC,OAAI,UAAU,wBAAwB,IAAKR,GAAQ,OAAQ,IAAKA,GAAQ,GAAA,CAAK,CAAA,CAAA,EAEhFM,EAAC,MAAA,CACC,UAAWD,EAAG,qEAAsEH,GAAS,oBAAoB,EAEhH,SAAA,CAAAC,GAAeK,EAACC,EAAA,CAAM,OAAAX,EAAgB,SAAAF,EAAoB,aAAc,GAAM,IAC9Ee,EAAA,CAAS,QAAAZ,EAAkB,OAAAD,EAAgB,WAAYD,GAAc,SAAW,GAAO,EACvFA,GAAc,SAAWA,GACxBW,EAACI,EAAA,CACC,UAAWP,EAAG,4BAA6BH,GAAS,MAAM,EAC1D,KAAK,KACL,OAAO,YACN,GAAGL,EAAa,aAAA,CAAA,CACnB,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAEJ"}