@mage-ui/components 0.0.32 → 0.0.34

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.
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime11 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime9 from "react/jsx-runtime";
2
2
  import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/components/buttons/button/Button.d.ts
@@ -18,7 +18,7 @@ declare const Button: ({
18
18
  endSlot,
19
19
  children,
20
20
  ...props
21
- }: ButtonProps) => react_jsx_runtime11.JSX.Element;
21
+ }: ButtonProps) => react_jsx_runtime9.JSX.Element;
22
22
  //# sourceMappingURL=Button.d.ts.map
23
23
 
24
24
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","names":[],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":[],"mappings":";;;;KASY,WAAA,GAAc;;;IAAd,KAAA,CAAA,EAAA,MAAW;IAAA,OAAA,CAAA,EAAA,MAAA;EAAA,CAAA;EAAiB,SAM1B,CAAA,EAAA,SAAA;EAAS,OACX,CAAA,EAAA,SAAA;EAAS,QACR,CAAA,EAAA,SAAA;AAAS,CAAA;AAGT,cAAA,MAqBZ,EAAA,CAAA;EAAA,UAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAfE,WAeF,EAAA,GAfa,mBAAA,CAAA,GAAA,CAAA,OAeb"}
1
+ {"version":3,"file":"Button.d.ts","names":[],"sources":["../../../../src/components/buttons/button/Button.tsx"],"sourcesContent":[],"mappings":";;;;KASY,WAAA,GAAc;;;IAAd,KAAA,CAAA,EAAA,MAAW;IAAA,OAAA,CAAA,EAAA,MAAA;EAAA,CAAA;EAAiB,SAM1B,CAAA,EAAA,SAAA;EAAS,OACX,CAAA,EAAA,SAAA;EAAS,QACR,CAAA,EAAA,SAAA;AAAS,CAAA;AAGT,cAAA,MAqBZ,EAAA,CAAA;EAAA,UAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAfE,WAeF,EAAA,GAfa,kBAAA,CAAA,GAAA,CAAA,OAeb"}
@@ -1,5 +1,5 @@
1
1
  import { ButtonProps } from "../button/Button.js";
2
- import * as react_jsx_runtime2 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/buttons/button-icon/ButtonIcon.d.ts
5
5
  type ButtonIconProps = ButtonProps & {
@@ -15,7 +15,7 @@ declare const ButtonIcon: ({
15
15
  icon,
16
16
  classNames,
17
17
  ...props
18
- }: ButtonIconProps) => react_jsx_runtime2.JSX.Element;
18
+ }: ButtonIconProps) => react_jsx_runtime10.JSX.Element;
19
19
  //# sourceMappingURL=ButtonIcon.d.ts.map
20
20
 
21
21
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonIcon.d.ts","names":[],"sources":["../../../../src/components/buttons/button-icon/ButtonIcon.tsx"],"sourcesContent":[],"mappings":";;;;KAMY,eAAA,GAAkB;;;EAAlB,UAAA,CAAA,EAAA;IASC,IAAA,CAAA,EAAA,MAkBZ;IAAA,IAAA,CAAA,EAAA,MAAA;EAAA,CAAA;CAlB0B;AAAA,cAAd,UAAc,EAAA,CAAA;EAAA,KAAA;EAAA,IAAA;EAAA,UAAA;EAAA,GAAA;AAAA,CAAA,EAKxB,eALwB,EAAA,GAKT,kBAAA,CAAA,GAAA,CAAA,OALS"}
1
+ {"version":3,"file":"ButtonIcon.d.ts","names":[],"sources":["../../../../src/components/buttons/button-icon/ButtonIcon.tsx"],"sourcesContent":[],"mappings":";;;;KAMY,eAAA,GAAkB;;;EAAlB,UAAA,CAAA,EAAA;IASC,IAAA,CAAA,EAAA,MAkBZ;IAAA,IAAA,CAAA,EAAA,MAAA;EAAA,CAAA;CAlB0B;AAAA,cAAd,UAAc,EAAA,CAAA;EAAA,KAAA;EAAA,IAAA;EAAA,UAAA;EAAA,GAAA;AAAA,CAAA,EAKxB,eALwB,EAAA,GAKT,mBAAA,CAAA,GAAA,CAAA,OALS"}
@@ -1,6 +1,6 @@
1
1
  import { DropdownBaseProps } from "./DropdownBase.js";
2
2
  import { InputTextProps } from "../input-text/InputText.js";
3
- import * as react_jsx_runtime13 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
4
4
  import React from "react";
5
5
 
6
6
  //#region src/components/controls/dropdown/Combobox.d.ts
@@ -34,7 +34,7 @@ declare const Combobox: ({
34
34
  create,
35
35
  empty,
36
36
  ...props
37
- }: ComboboxProps) => react_jsx_runtime13.JSX.Element;
37
+ }: ComboboxProps) => react_jsx_runtime12.JSX.Element;
38
38
  //# sourceMappingURL=Combobox.d.ts.map
39
39
 
40
40
  //#endregion
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime14 from "react/jsx-runtime";
2
- import * as react15 from "react";
1
+ import * as react_jsx_runtime13 from "react/jsx-runtime";
2
+ import * as react14 from "react";
3
3
 
4
4
  //#region src/components/controls/dropdown/DropdownButton.d.ts
5
5
  type DropdownButtonProps = {
@@ -18,11 +18,11 @@ declare const DropdownButton: {
18
18
  children,
19
19
  endSlot,
20
20
  ...props
21
- }: DropdownButtonProps): react_jsx_runtime14.JSX.Element;
21
+ }: DropdownButtonProps): react_jsx_runtime13.JSX.Element;
22
22
  Option: {
23
23
  ({
24
24
  children
25
- }: DropdownButtonOptionProps): react15.ReactNode;
25
+ }: DropdownButtonOptionProps): react14.ReactNode;
26
26
  displayName: string;
27
27
  };
28
28
  };
@@ -1,6 +1,6 @@
1
1
  import { DropdownBaseProps } from "./DropdownBase.js";
2
2
  import { InputTextProps } from "../input-text/InputText.js";
3
- import * as react_jsx_runtime16 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/controls/dropdown/Select.d.ts
6
6
  type SelectProps = Omit<DropdownBaseProps, 'children' | 'onClick' | 'setQuery' | 'target'> & InputTextProps & {
@@ -23,7 +23,7 @@ declare const Select: ({
23
23
  options,
24
24
  classNames,
25
25
  ...props
26
- }: SelectProps) => react_jsx_runtime16.JSX.Element;
26
+ }: SelectProps) => react_jsx_runtime15.JSX.Element;
27
27
  //# sourceMappingURL=Select.d.ts.map
28
28
 
29
29
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime17 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime16 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/controls/input-file/InputFile.d.ts
4
4
  type InputFileProps = {
@@ -26,7 +26,7 @@ declare const InputFile: ({
26
26
  multiple,
27
27
  badgeClassName,
28
28
  ...props
29
- }: InputFileProps) => react_jsx_runtime17.JSX.Element;
29
+ }: InputFileProps) => react_jsx_runtime16.JSX.Element;
30
30
  //# sourceMappingURL=InputFile.d.ts.map
31
31
  //#endregion
32
32
  export { InputFile, InputFileProps };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime18 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
2
2
  import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/components/controls/input-password/InputPassword.d.ts
@@ -26,7 +26,7 @@ declare const InputPassword: ({
26
26
  startSlot,
27
27
  endSlot,
28
28
  ...props
29
- }: InputPasswordProps) => react_jsx_runtime18.JSX.Element;
29
+ }: InputPasswordProps) => react_jsx_runtime17.JSX.Element;
30
30
  //# sourceMappingURL=InputPassword.d.ts.map
31
31
  //#endregion
32
32
  export { InputPassword, InputPasswordProps };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime19 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
2
2
  import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/components/controls/input-text/InputText.d.ts
@@ -25,7 +25,7 @@ declare const InputText: ({
25
25
  startSlot,
26
26
  endSlot,
27
27
  ...props
28
- }: InputTextProps) => react_jsx_runtime19.JSX.Element;
28
+ }: InputTextProps) => react_jsx_runtime18.JSX.Element;
29
29
  //# sourceMappingURL=InputText.d.ts.map
30
30
  //#endregion
31
31
  export { InputText, InputTextProps };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime10 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime19 from "react/jsx-runtime";
2
2
  import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/components/controls/textarea/Textarea.d.ts
@@ -27,7 +27,7 @@ declare const Textarea: ({
27
27
  autosize,
28
28
  onChange,
29
29
  ...props
30
- }: TextareaProps) => react_jsx_runtime10.JSX.Element;
30
+ }: TextareaProps) => react_jsx_runtime19.JSX.Element;
31
31
  //# sourceMappingURL=Textarea.d.ts.map
32
32
 
33
33
  //#endregion
@@ -1,2 +1,2 @@
1
- import{Button as e}from"../../buttons/button/Button.js";import{VisuallyHidden as t}from"../../misc/visually-hidden/VisuallyHidden.js";import{useDotButton as n,useNavButtons as r}from"./useEmbla.js";import{ButtonIcon as i}from"../../buttons/button-icon/ButtonIcon.js";import{buttonIconIcon as a,carousel as o,carouselContainer as s,carouselControl as c,carouselControls as l,carouselIndicator as u,carouselIndicators as d,carouselSlide as f,carouselViewport as p}from"@mage-ui/styled-system/recipes";import{jsx as m,jsxs as h}from"react/jsx-runtime";import g from"embla-carousel-autoplay";import _ from"embla-carousel-react";import{Children as v,isValidElement as y,useCallback as b}from"react";import{cx as x}from"@mage-ui/styled-system/css";const S=({classNames:S,...w})=>{let T=[];w.autoplay&&w.autoplay>0&&T.push(g({delay:w.autoplay??1e3,stopOnMouseEnter:!0}));let[E,D]=_({align:w?.align??`center`,loop:w?.loop??!0,dragFree:w?.dragFree??!0,slidesToScroll:w?.slidesToScroll??`auto`},T),O=b(e=>{let t=w?.autoplay&&w.autoplay>0?e?.plugins()?.autoplay:null;if(!t)return;let n=t.options.stopOnInteraction===!1?t.reset:t.stop;n()},[]),{selectedIndex:k,scrollSnaps:A,onDotButtonClick:j}=n(D,O),{prevBtnDisabled:M,nextBtnDisabled:N,onPrevButtonClick:P,onNextButtonClick:F}=r(D,O);return h(`section`,{className:x(S?.root??o(),S?.settings),onMouseLeave:()=>D?.plugins().autoplay?.play(),"aria-label":`Carousel`,children:[m(`div`,{className:S?.viewport??p(),ref:E,children:m(`div`,{className:S?.container??s(),children:v.map(w.children,e=>y(e)&&e.type===C&&m(`div`,{className:S?.slide??f(),children:e}))})}),w?.withControls&&w.withControls&&h(`div`,{className:S?.controls??l(),children:[m(i,{classNames:{root:S?.control??c(),icon:S?.icon??a({size:`m`})},onClick:P,disabled:M,label:w?.previousControl?.label??`Previous`,icon:w?.previousControl?.icon??`chevron-left`}),m(i,{classNames:{root:S?.control??c(),icon:S?.icon??a({size:`m`})},onClick:F,disabled:N,label:w?.nextControl?.label??`Next`,icon:w?.nextControl?.icon??`chevron-right`})]}),w?.withIndicators&&w.withIndicators&&m(`div`,{className:S?.indicators??d(),children:A.map((n,r)=>{let i=v.toArray(w.children).length;return m(e,{onClick:()=>j(r),classNames:{root:S?.indicator??u()},"aria-selected":r===k?!0:void 0,children:m(t,{children:`${w.indicatorControl?.label??`Slide`} ${r+1} ${w.indicatorControl?.ofLabel??`of`} ${i}`})},n)})})]})},C=({children:e})=>e;C.displayName=`Carousel.Slide`,S.Slide=C,S.displayName=`Carousel`;export{S as Carousel};
1
+ import{Button as e}from"../../buttons/button/Button.js";import{VisuallyHidden as t}from"../../misc/visually-hidden/VisuallyHidden.js";import{useDotButton as n,useNavButtons as r}from"./useEmbla.js";import{ButtonIcon as i}from"../../buttons/button-icon/ButtonIcon.js";import{buttonIconIcon as a,carousel as o,carouselContainer as s,carouselControl as c,carouselControls as l,carouselIndicator as u,carouselIndicators as d,carouselSlide as f,carouselViewport as p}from"@mage-ui/styled-system/recipes";import{jsx as m,jsxs as h}from"react/jsx-runtime";import g from"embla-carousel-autoplay";import _ from"embla-carousel-react";import{Children as v,isValidElement as y,useCallback as b}from"react";import{cx as x}from"@mage-ui/styled-system/css";const S=({classNames:S,...w})=>{let T=[];w.autoplay&&w.autoplay>0&&T.push(g({delay:w.autoplay??1e3,stopOnMouseEnter:!0}));let[E,D]=_({align:w?.align??`center`,loop:w?.loop??!0,dragFree:w?.dragFree??!0,slidesToScroll:w?.slidesToScroll??`auto`},T),O=b(e=>{let t=w?.autoplay&&w.autoplay>0?e?.plugins()?.autoplay:null;if(!t)return;let n=t.options.stopOnInteraction===!1?t.reset:t.stop;n()},[]),{selectedIndex:k,scrollSnaps:A,onDotButtonClick:j}=n(D,O),{prevBtnDisabled:M,nextBtnDisabled:N,onPrevButtonClick:P,onNextButtonClick:F}=r(D,O);return h(`section`,{className:x(S?.root??o(),S?.settings),onMouseLeave:()=>D?.plugins().autoplay?.play(),"aria-label":`Carousel`,children:[m(`div`,{className:S?.viewport??p(),ref:E,children:m(`div`,{className:S?.container??s(),children:v.map(w.children,e=>y(e)&&e.type===C&&m(`div`,{className:S?.slide??f(),children:e}))})}),w?.withControls&&w.withControls&&h(`div`,{className:S?.controls??l(),children:[m(i,{classNames:{root:S?.control??c(),icon:S?.icon??a({size:`m`})},onClick:P,disabled:M,label:w?.previousControl?.label??`Previous`,icon:w?.previousControl?.icon??`chevron-left`}),m(i,{classNames:{root:S?.control??c(),icon:S?.icon??a({size:`m`})},onClick:F,disabled:N,label:w?.nextControl?.label??`Next`,icon:w?.nextControl?.icon??`chevron-right`})]}),w?.withIndicators&&w.withIndicators&&m(`div`,{className:S?.indicators??d(),children:A.map((n,r)=>{let i=v.toArray(w.children).length;return m(e,{onClick:()=>j(r),classNames:{root:S?.indicator??u()},"aria-current":r===k?!0:void 0,children:m(t,{children:`${w.indicatorControl?.label??`Slide`} ${r+1} ${w.indicatorControl?.ofLabel??`of`} ${i}`})},n)})})]})},C=({children:e})=>e;C.displayName=`Carousel.Slide`,S.Slide=C,S.displayName=`Carousel`;export{S as Carousel};
2
2
  //# sourceMappingURL=Carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","names":["emblaApi: EmblaCarouselType"],"sources":["../../../../src/components/data-display/carousel/Carousel.tsx"],"sourcesContent":["'use client';\n\nimport type { EmblaCarouselType } from 'embla-carousel';\nimport Autoplay from 'embla-carousel-autoplay';\nimport useEmblaCarousel from 'embla-carousel-react';\nimport { Children, isValidElement, type ReactNode, useCallback } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport {\n buttonIconIcon,\n carousel,\n carouselContainer,\n carouselControl,\n carouselControls,\n carouselIndicator,\n carouselIndicators,\n carouselSlide,\n carouselViewport,\n} from '@mage-ui/styled-system/recipes';\nimport { Button, ButtonIcon } from '@/components/buttons';\nimport { VisuallyHidden } from '@/components/misc';\n\nimport { useDotButton, useNavButtons } from './useEmbla';\n\nexport type CarouselProps = {\n classNames?: {\n settings?: string;\n root?: string;\n slide?: string;\n container?: string;\n viewport?: string;\n controls?: string;\n control?: string;\n icon?: string;\n indicators?: string;\n indicator?: string;\n };\n withIndicators?: boolean;\n withControls?: boolean;\n loop?: boolean;\n dragFree?: boolean;\n align?: 'start' | 'center' | 'end';\n slidesToScroll?: number | 'auto';\n autoplay?: number;\n previousControl?: {\n label?: string;\n icon?: string;\n };\n nextControl?: {\n label?: string;\n icon?: string;\n };\n indicatorControl?: {\n label?: string;\n ofLabel?: string;\n };\n children?: ReactNode;\n};\n\nexport const Carousel = ({ classNames, ...props }: CarouselProps) => {\n const plugins = [];\n if (props.autoplay && props.autoplay > 0) {\n plugins.push(\n Autoplay({ delay: props.autoplay ?? 1000, stopOnMouseEnter: true }),\n );\n }\n\n const [emblaRef, emblaApi] = useEmblaCarousel(\n {\n align: props?.align ?? 'center',\n loop: props?.loop ?? true,\n dragFree: props?.dragFree ?? true,\n slidesToScroll: props?.slidesToScroll ?? 'auto',\n },\n plugins,\n );\n\n const onNavButtonClick = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay =\n props?.autoplay && props.autoplay > 0\n ? emblaApi?.plugins()?.autoplay\n : null;\n if (!autoplay) return;\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop;\n\n resetOrStop();\n }, []);\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } = useDotButton(\n emblaApi as EmblaCarouselType,\n onNavButtonClick,\n );\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick,\n } = useNavButtons(emblaApi as EmblaCarouselType, onNavButtonClick);\n\n return (\n <section\n className={cx(classNames?.root ?? carousel(), classNames?.settings)}\n onMouseLeave={() => emblaApi?.plugins().autoplay?.play()}\n aria-label='Carousel'\n >\n <div\n className={classNames?.viewport ?? carouselViewport()}\n ref={emblaRef}\n >\n <div className={classNames?.container ?? carouselContainer()}>\n {Children.map(\n props.children,\n (child) =>\n isValidElement(child) &&\n child.type === Slide && (\n <div className={classNames?.slide ?? carouselSlide()}>\n {child}\n </div>\n ),\n )}\n </div>\n </div>\n {props?.withControls && props.withControls && (\n <div className={classNames?.controls ?? carouselControls()}>\n <ButtonIcon\n classNames={{\n root: classNames?.control ?? carouselControl(),\n icon: classNames?.icon ?? buttonIconIcon({ size: 'm' }),\n }}\n onClick={onPrevButtonClick}\n disabled={prevBtnDisabled}\n label={props?.previousControl?.label ?? 'Previous'}\n icon={props?.previousControl?.icon ?? 'chevron-left'}\n />\n <ButtonIcon\n classNames={{\n root: classNames?.control ?? carouselControl(),\n icon: classNames?.icon ?? buttonIconIcon({ size: 'm' }),\n }}\n onClick={onNextButtonClick}\n disabled={nextBtnDisabled}\n label={props?.nextControl?.label ?? 'Next'}\n icon={props?.nextControl?.icon ?? 'chevron-right'}\n />\n </div>\n )}\n {props?.withIndicators && props.withIndicators && (\n <div className={classNames?.indicators ?? carouselIndicators()}>\n {scrollSnaps.map((snap, index) => {\n const totalSlides = Children.toArray(props.children).length;\n return (\n <Button\n key={snap}\n onClick={() => onDotButtonClick(index)}\n classNames={{\n root: classNames?.indicator ?? carouselIndicator(),\n }}\n aria-selected={index === selectedIndex ? true : undefined}\n >\n <VisuallyHidden>\n {`${props.indicatorControl?.label ?? 'Slide'} ${index + 1} ${\n props.indicatorControl?.ofLabel ?? 'of'\n } ${totalSlides}`}\n </VisuallyHidden>\n </Button>\n );\n })}\n </div>\n )}\n </section>\n );\n};\n\nconst Slide = ({ children }: { children: ReactNode }) => {\n return children;\n};\n\nSlide.displayName = 'Carousel.Slide';\nCarousel.Slide = Slide;\nCarousel.displayName = 'Carousel';\n"],"mappings":"suBAkLA,MAvHa,EAAW,CAAC,CAAE,aAAY,GAAG,EAAsB,GAAK,CACnE,IAAM,EAAU,CAAE,EAClB,AAAI,EAAM,UAAY,EAAM,SAAW,GACrC,EAAQ,KACN,EAAS,CAAE,MAAO,EAAM,UAAY,IAAM,kBAAkB,CAAM,EAAC,CACpE,CAiCH,GA9BM,CAAC,EAAU,EAAS,CAAG,EAC3B,CACE,MAAO,GAAO,OAAS,SACvB,KAAM,GAAO,OAAQ,EACrB,SAAU,GAAO,WAAY,EAC7B,eAAgB,GAAO,gBAAkB,MAC1C,EACD,EACD,CAEK,EAAmB,EAAY,AAACA,GAAgC,CACpE,IAAM,EACJ,GAAO,UAAY,EAAM,SAAW,EAChC,GAAU,SAAS,EAAE,SACrB,KACN,IAAK,EAAU,OAEf,IAAM,EACJ,EAAS,QAAQ,qBAAsB,EACnC,EAAS,MACT,EAAS,KAEf,GAAa,AACd,EAAE,CAAE,EAAC,CAEA,CAAE,gBAAe,cAAa,mBAAkB,CAAG,EACvD,EACA,EACD,CAEK,CACJ,kBACA,kBACA,oBACA,oBACD,CAAG,EAAc,EAA+B,EAAiB,CAElE,MACE,GAAC,UAAA,CACC,UAAW,EAAG,GAAY,MAAQ,GAAU,CAAE,GAAY,SAAS,CACnE,aAAc,IAAM,GAAU,SAAS,CAAC,UAAU,MAAM,CACxD,aAAW,qBAEX,EAAC,MAAA,CACC,UAAW,GAAY,UAAY,GAAkB,CACrD,IAAK,WAEL,EAAC,MAAA,CAAI,UAAW,GAAY,WAAa,GAAmB,UACzD,EAAS,IACR,EAAM,SACN,AAAC,GACC,EAAe,EAAM,EACrB,EAAM,OAAS,GACb,EAAC,MAAA,CAAI,UAAW,GAAY,OAAS,GAAe,UACjD,GACG,CAEX,EACG,EACF,CACL,GAAO,cAAgB,EAAM,cAC5B,EAAC,MAAA,CAAI,UAAW,GAAY,UAAY,GAAkB,WACxD,EAAC,EAAA,CACC,WAAY,CACV,KAAM,GAAY,SAAW,GAAiB,CAC9C,KAAM,GAAY,MAAQ,EAAe,CAAE,KAAM,GAAK,EAAC,AACxD,EACD,QAAS,EACT,SAAU,EACV,MAAO,GAAO,iBAAiB,OAAS,WACxC,KAAM,GAAO,iBAAiB,MAAQ,gBACtC,CACF,EAAC,EAAA,CACC,WAAY,CACV,KAAM,GAAY,SAAW,GAAiB,CAC9C,KAAM,GAAY,MAAQ,EAAe,CAAE,KAAM,GAAK,EAAC,AACxD,EACD,QAAS,EACT,SAAU,EACV,MAAO,GAAO,aAAa,OAAS,OACpC,KAAM,GAAO,aAAa,MAAQ,iBAClC,GACE,CAEP,GAAO,gBAAkB,EAAM,gBAC9B,EAAC,MAAA,CAAI,UAAW,GAAY,YAAc,GAAoB,UAC3D,EAAY,IAAI,CAAC,EAAM,IAAU,CAChC,IAAM,EAAc,EAAS,QAAQ,EAAM,SAAS,CAAC,OACrD,MACE,GAAC,EAAA,CAEC,QAAS,IAAM,EAAiB,EAAM,CACtC,WAAY,CACV,KAAM,GAAY,WAAa,GAAmB,AACnD,EACD,gBAAe,IAAU,GAAgB,MAAA,YAEzC,EAAC,EAAA,CAAA,UACG,EAAE,EAAM,kBAAkB,OAAS,QAAQ,GAAG,EAAQ,EAAE,GACxD,EAAM,kBAAkB,SAAW,KACpC,GAAG,EAAY,CAAA,EACD,EAXZ,EAYE,AAEZ,EAAC,EACE,GAEA,AAEb,EAEK,EAAQ,CAAC,CAAE,WAAmC,GAC3C,EAKT,AAFA,EAAM,YAAc,iBACpB,EAAS,MAAQ,EACjB,EAAS,YAAc"}
1
+ {"version":3,"file":"Carousel.js","names":["emblaApi: EmblaCarouselType"],"sources":["../../../../src/components/data-display/carousel/Carousel.tsx"],"sourcesContent":["'use client';\n\nimport type { EmblaCarouselType } from 'embla-carousel';\nimport Autoplay from 'embla-carousel-autoplay';\nimport useEmblaCarousel from 'embla-carousel-react';\nimport { Children, isValidElement, type ReactNode, useCallback } from 'react';\n\nimport { cx } from '@mage-ui/styled-system/css';\nimport {\n buttonIconIcon,\n carousel,\n carouselContainer,\n carouselControl,\n carouselControls,\n carouselIndicator,\n carouselIndicators,\n carouselSlide,\n carouselViewport,\n} from '@mage-ui/styled-system/recipes';\nimport { Button, ButtonIcon } from '@/components/buttons';\nimport { VisuallyHidden } from '@/components/misc';\n\nimport { useDotButton, useNavButtons } from './useEmbla';\n\nexport type CarouselProps = {\n classNames?: {\n settings?: string;\n root?: string;\n slide?: string;\n container?: string;\n viewport?: string;\n controls?: string;\n control?: string;\n icon?: string;\n indicators?: string;\n indicator?: string;\n };\n withIndicators?: boolean;\n withControls?: boolean;\n loop?: boolean;\n dragFree?: boolean;\n align?: 'start' | 'center' | 'end';\n slidesToScroll?: number | 'auto';\n autoplay?: number;\n previousControl?: {\n label?: string;\n icon?: string;\n };\n nextControl?: {\n label?: string;\n icon?: string;\n };\n indicatorControl?: {\n label?: string;\n ofLabel?: string;\n };\n children?: ReactNode;\n};\n\nexport const Carousel = ({ classNames, ...props }: CarouselProps) => {\n const plugins = [];\n if (props.autoplay && props.autoplay > 0) {\n plugins.push(\n Autoplay({ delay: props.autoplay ?? 1000, stopOnMouseEnter: true }),\n );\n }\n\n const [emblaRef, emblaApi] = useEmblaCarousel(\n {\n align: props?.align ?? 'center',\n loop: props?.loop ?? true,\n dragFree: props?.dragFree ?? true,\n slidesToScroll: props?.slidesToScroll ?? 'auto',\n },\n plugins,\n );\n\n const onNavButtonClick = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay =\n props?.autoplay && props.autoplay > 0\n ? emblaApi?.plugins()?.autoplay\n : null;\n if (!autoplay) return;\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop;\n\n resetOrStop();\n }, []);\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } = useDotButton(\n emblaApi as EmblaCarouselType,\n onNavButtonClick,\n );\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick,\n } = useNavButtons(emblaApi as EmblaCarouselType, onNavButtonClick);\n\n return (\n <section\n className={cx(classNames?.root ?? carousel(), classNames?.settings)}\n onMouseLeave={() => emblaApi?.plugins().autoplay?.play()}\n aria-label='Carousel'\n >\n <div\n className={classNames?.viewport ?? carouselViewport()}\n ref={emblaRef}\n >\n <div className={classNames?.container ?? carouselContainer()}>\n {Children.map(\n props.children,\n (child) =>\n isValidElement(child) &&\n child.type === Slide && (\n <div className={classNames?.slide ?? carouselSlide()}>\n {child}\n </div>\n ),\n )}\n </div>\n </div>\n {props?.withControls && props.withControls && (\n <div className={classNames?.controls ?? carouselControls()}>\n <ButtonIcon\n classNames={{\n root: classNames?.control ?? carouselControl(),\n icon: classNames?.icon ?? buttonIconIcon({ size: 'm' }),\n }}\n onClick={onPrevButtonClick}\n disabled={prevBtnDisabled}\n label={props?.previousControl?.label ?? 'Previous'}\n icon={props?.previousControl?.icon ?? 'chevron-left'}\n />\n <ButtonIcon\n classNames={{\n root: classNames?.control ?? carouselControl(),\n icon: classNames?.icon ?? buttonIconIcon({ size: 'm' }),\n }}\n onClick={onNextButtonClick}\n disabled={nextBtnDisabled}\n label={props?.nextControl?.label ?? 'Next'}\n icon={props?.nextControl?.icon ?? 'chevron-right'}\n />\n </div>\n )}\n {props?.withIndicators && props.withIndicators && (\n <div className={classNames?.indicators ?? carouselIndicators()}>\n {scrollSnaps.map((snap, index) => {\n const totalSlides = Children.toArray(props.children).length;\n return (\n <Button\n key={snap}\n onClick={() => onDotButtonClick(index)}\n classNames={{\n root: classNames?.indicator ?? carouselIndicator(),\n }}\n aria-current={index === selectedIndex ? true : undefined}\n >\n <VisuallyHidden>\n {`${props.indicatorControl?.label ?? 'Slide'} ${index + 1} ${\n props.indicatorControl?.ofLabel ?? 'of'\n } ${totalSlides}`}\n </VisuallyHidden>\n </Button>\n );\n })}\n </div>\n )}\n </section>\n );\n};\n\nconst Slide = ({ children }: { children: ReactNode }) => {\n return children;\n};\n\nSlide.displayName = 'Carousel.Slide';\nCarousel.Slide = Slide;\nCarousel.displayName = 'Carousel';\n"],"mappings":"suBAkLA,MAvHa,EAAW,CAAC,CAAE,aAAY,GAAG,EAAsB,GAAK,CACnE,IAAM,EAAU,CAAE,EAClB,AAAI,EAAM,UAAY,EAAM,SAAW,GACrC,EAAQ,KACN,EAAS,CAAE,MAAO,EAAM,UAAY,IAAM,kBAAkB,CAAM,EAAC,CACpE,CAiCH,GA9BM,CAAC,EAAU,EAAS,CAAG,EAC3B,CACE,MAAO,GAAO,OAAS,SACvB,KAAM,GAAO,OAAQ,EACrB,SAAU,GAAO,WAAY,EAC7B,eAAgB,GAAO,gBAAkB,MAC1C,EACD,EACD,CAEK,EAAmB,EAAY,AAACA,GAAgC,CACpE,IAAM,EACJ,GAAO,UAAY,EAAM,SAAW,EAChC,GAAU,SAAS,EAAE,SACrB,KACN,IAAK,EAAU,OAEf,IAAM,EACJ,EAAS,QAAQ,qBAAsB,EACnC,EAAS,MACT,EAAS,KAEf,GAAa,AACd,EAAE,CAAE,EAAC,CAEA,CAAE,gBAAe,cAAa,mBAAkB,CAAG,EACvD,EACA,EACD,CAEK,CACJ,kBACA,kBACA,oBACA,oBACD,CAAG,EAAc,EAA+B,EAAiB,CAElE,MACE,GAAC,UAAA,CACC,UAAW,EAAG,GAAY,MAAQ,GAAU,CAAE,GAAY,SAAS,CACnE,aAAc,IAAM,GAAU,SAAS,CAAC,UAAU,MAAM,CACxD,aAAW,qBAEX,EAAC,MAAA,CACC,UAAW,GAAY,UAAY,GAAkB,CACrD,IAAK,WAEL,EAAC,MAAA,CAAI,UAAW,GAAY,WAAa,GAAmB,UACzD,EAAS,IACR,EAAM,SACN,AAAC,GACC,EAAe,EAAM,EACrB,EAAM,OAAS,GACb,EAAC,MAAA,CAAI,UAAW,GAAY,OAAS,GAAe,UACjD,GACG,CAEX,EACG,EACF,CACL,GAAO,cAAgB,EAAM,cAC5B,EAAC,MAAA,CAAI,UAAW,GAAY,UAAY,GAAkB,WACxD,EAAC,EAAA,CACC,WAAY,CACV,KAAM,GAAY,SAAW,GAAiB,CAC9C,KAAM,GAAY,MAAQ,EAAe,CAAE,KAAM,GAAK,EAAC,AACxD,EACD,QAAS,EACT,SAAU,EACV,MAAO,GAAO,iBAAiB,OAAS,WACxC,KAAM,GAAO,iBAAiB,MAAQ,gBACtC,CACF,EAAC,EAAA,CACC,WAAY,CACV,KAAM,GAAY,SAAW,GAAiB,CAC9C,KAAM,GAAY,MAAQ,EAAe,CAAE,KAAM,GAAK,EAAC,AACxD,EACD,QAAS,EACT,SAAU,EACV,MAAO,GAAO,aAAa,OAAS,OACpC,KAAM,GAAO,aAAa,MAAQ,iBAClC,GACE,CAEP,GAAO,gBAAkB,EAAM,gBAC9B,EAAC,MAAA,CAAI,UAAW,GAAY,YAAc,GAAoB,UAC3D,EAAY,IAAI,CAAC,EAAM,IAAU,CAChC,IAAM,EAAc,EAAS,QAAQ,EAAM,SAAS,CAAC,OACrD,MACE,GAAC,EAAA,CAEC,QAAS,IAAM,EAAiB,EAAM,CACtC,WAAY,CACV,KAAM,GAAY,WAAa,GAAmB,AACnD,EACD,eAAc,IAAU,GAAgB,MAAA,YAExC,EAAC,EAAA,CAAA,UACG,EAAE,EAAM,kBAAkB,OAAS,QAAQ,GAAG,EAAQ,EAAE,GACxD,EAAM,kBAAkB,SAAW,KACpC,GAAG,EAAY,CAAA,EACD,EAXZ,EAYE,AAEZ,EAAC,EACE,GAEA,AAEb,EAEK,EAAQ,CAAC,CAAE,WAAmC,GAC3C,EAKT,AAFA,EAAM,YAAc,iBACpB,EAAS,MAAQ,EACjB,EAAS,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","names":[],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;KAwBY,SAAA;;UAEF,UAAU,eAAe,WAAW,UAAU;;YAE5C,KAAA,CAAM;;cAGL;;;;;;;KAMV,YAAS,mBAAA,CAAA,GAAA,CAAA;;;;OAAA;;;;;;;IAbA,CAAA;MAAA,IAAA;MAAS,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA;IAAA,WAAA,EAAA,MAAA;IAED,KAAA,EAAA;MAAV,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,aAAA,EAAA,OAAA,EAAA,OAAA,CAAA;IAA8C,CAAA;EAAW,CAAA;EAAZ,aAApB,EAAA;IAEvB,CAAA;MAAA,IAAM;MAAA,OAAA;MAAA,QAAA;MAAA,GAAA;IAAA,CAAA,wBAAA,CAAA,iCAAA;IAAS,WAAA,EAAA,MAAA;IAGd,KA+BZ,EAAA;MAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,YAAA,EAAA,MAAA,CAAA;IAAA,CAAA;;;;;;;IAzBE,CAAA;EAAS,CAAA;EAAA,QAAA,EAAA"}
1
+ {"version":3,"file":"Form.d.ts","names":[],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;KAwBY,SAAA;;UAEF,UAAU,eAAe,WAAW,UAAU;;YAE5C,KAAA,CAAM;;cAGL;;;;;;;KAMV,YAAS,mBAAA,CAAA,GAAA,CAAA;;;;OAAA;;;;;;;IAbA,CAAA;MAAA,IAAA;MAAS,OAAA;MAAA,GAAA;IAAA,CAAA,mBAAA,CAAA,iCAAA;IAAA,WAAA,EAAA,MAAA;IAED,KAAA,EAAA;MAAV,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,aAAA,EAAA,OAAA,EAAA,OAAA,CAAA;IAA8C,CAAA;EAAW,CAAA;EAAZ,aAApB,EAAA;IAEvB,CAAA;MAAA,IAAM;MAAA,OAAA;MAAA,QAAA;MAAA,GAAA;IAAA,CAAA,wBAAA,CAAA,iCAAA;IAAS,WAAA,EAAA,MAAA;IAGd,KA8BZ,EAAA;MAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,aAAA,YAAA,EAAA,MAAA,CAAA;IAAA,CAAA;;;;;;;IAxBE,CAAA;EAAS,CAAA;EAAA,QAAA,EAAA"}
@@ -1,2 +1,2 @@
1
- import{FormCheckbox as e}from"./controls/FormCheckbox.js";import{FormCheckboxGroup as t}from"./controls/FormCheckboxGroup.js";import{FormCombobox as n}from"./controls/FormCombobox.js";import{FormDatePicker as r}from"./controls/FormDatePicker.js";import{FormIfField as i}from"./controls/FormIfField.js";import{FormInputFile as a}from"./controls/FormInputFile.js";import{FormInputPassword as o}from"./controls/FormInputPassword.js";import{FormInputText as s}from"./controls/FormInputText.js";import{FormRadio as c}from"./controls/FormRadio.js";import{FormRadioGroup as l}from"./controls/FormRadioGroup.js";import{FormSelect as u}from"./controls/FormSelect.js";import{FormTextarea as d}from"./controls/FormTextarea.js";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{Children as m,cloneElement as h,isValidElement as g}from"react";import{FormProvider as _,useForm as v}from"react-hook-form";import{ZodEffects as y,z as b}from"zod";import{zodResolver as x}from"@hookform/resolvers/zod";const S=({defaultValues:e,rules:t=b.object({}).refine(()=>{}),onSubmit:n,children:r,...i})=>{let a=t instanceof y?t._def.schema:t,o=v({shouldFocusError:!0,...t&&Object.keys(a?.shape||{}).length>0?{resolver:x(a)}:{},defaultValues:e}),{register:s,handleSubmit:c,formState:{errors:l}}=o;return f(_,{...o,children:p(`form`,{onSubmit:c(n),...i,children:[T(r,s,l,a),f(`button`,{type:`submit`,children:`Submit`})]})})},C=[s,t,e,n,l,c,d,u,r,a,o,i],w=(e,t)=>{let n=e?.shape?.[t]||void 0;return n===void 0?!1:!(n.isOptional()||n.isNullable())},T=(e,t,n,r)=>m.map(e,e=>{if(!g(e))return e;let i=e.props;if(C.some(t=>e.type===t)&&i.name){let a={required:w(r,i.name),error:n[i.name]?.message,...i,...t(i.name,{setValueAs:e=>e===``||e===null?void 0:e})};return h(e,a)}return i.children?h(e,i,T(i.children,t,n,r)):e});S.InputText=s,S.Checkbox=e,S.CheckboxGroup=t,S.Combobox=n,S.RadioGroup=l,S.Radio=c,S.Textarea=d,S.Select=u,S.DatePicker=r,S.InputFile=a,S.InputPassword=o,S.IfField=i;export{S as Form};
1
+ import{FormCheckbox as e}from"./controls/FormCheckbox.js";import{FormCheckboxGroup as t}from"./controls/FormCheckboxGroup.js";import{FormCombobox as n}from"./controls/FormCombobox.js";import{FormDatePicker as r}from"./controls/FormDatePicker.js";import{FormIfField as i}from"./controls/FormIfField.js";import{FormInputFile as a}from"./controls/FormInputFile.js";import{FormInputPassword as o}from"./controls/FormInputPassword.js";import{FormInputText as s}from"./controls/FormInputText.js";import{FormRadio as c}from"./controls/FormRadio.js";import{FormRadioGroup as l}from"./controls/FormRadioGroup.js";import{FormSelect as u}from"./controls/FormSelect.js";import{FormTextarea as d}from"./controls/FormTextarea.js";import{jsx as f}from"react/jsx-runtime";import{Children as p,cloneElement as m,isValidElement as h}from"react";import{FormProvider as g,useForm as _}from"react-hook-form";import{ZodEffects as v,z as y}from"zod";import{zodResolver as b}from"@hookform/resolvers/zod";const x=({defaultValues:e,rules:t=y.object({}).refine(()=>{}),onSubmit:n,children:r,...i})=>{let a=t instanceof v?t._def.schema:t,o=_({shouldFocusError:!0,...t&&Object.keys(a?.shape||{}).length>0?{resolver:b(a)}:{},defaultValues:e}),{register:s,handleSubmit:c,formState:{errors:l}}=o;return f(g,{...o,children:f(`form`,{onSubmit:c(n),...i,children:w(r,s,l,a)})})},S=[s,t,e,n,l,c,d,u,r,a,o,i],C=(e,t)=>{let n=e?.shape?.[t]||void 0;return n===void 0?!1:!(n.isOptional()||n.isNullable())},w=(e,t,n,r)=>p.map(e,e=>{if(!h(e))return e;let i=e.props;if(S.some(t=>e.type===t)&&i.name){let a={required:C(r,i.name),error:n[i.name]?.message,...i,...t(i.name,{setValueAs:e=>e===``||e===null?void 0:e})};return m(e,a)}return i.children?m(e,i,w(i.children,t,n,r)):e});x.InputText=s,x.Checkbox=e,x.CheckboxGroup=t,x.Combobox=n,x.RadioGroup=l,x.Radio=c,x.Textarea=d,x.Select=u,x.DatePicker=r,x.InputFile=a,x.InputPassword=o,x.IfField=i;export{x as Form};
2
2
  //# sourceMappingURL=Form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["schema: ZodObject<ZodRawShape>","field: string","children: React.ReactNode","register: UseFormRegister<Record<string, string>>","errors: FieldErrors","rules: ZodObject<ZodRawShape>","value: unknown"],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, type ReactNode } from 'react';\nimport {\n type FieldErrors,\n FormProvider,\n type UseFormRegister,\n useForm,\n} from 'react-hook-form';\nimport { ZodEffects, type ZodObject, type ZodRawShape, z } from 'zod';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\n\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCheckboxGroup } from './controls/FormCheckboxGroup';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormIfField } from './controls/FormIfField';\nimport { FormInputFile } from './controls/FormInputFile';\nimport { FormInputPassword } from './controls/FormInputPassword';\nimport { FormInputText } from './controls/FormInputText';\nimport { FormRadio } from './controls/FormRadio';\nimport { FormRadioGroup } from './controls/FormRadioGroup';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormTextarea } from './controls/FormTextarea';\n\nexport type FormProps = {\n defaultValues?: object;\n rules?: ZodObject<ZodRawShape> | ZodEffects<ZodObject<ZodRawShape>>;\n onSubmit: (formData: object) => void;\n children: React.ReactNode;\n};\n\nexport const Form = ({\n defaultValues,\n rules = z.object({}).refine(() => {}),\n onSubmit,\n children,\n ...props\n}: FormProps) => {\n const schema: ZodObject<ZodRawShape> =\n rules instanceof ZodEffects ? rules._def.schema : rules;\n\n const form = useForm({\n shouldFocusError: true,\n ...(rules && Object.keys(schema?.shape || {}).length > 0\n ? { resolver: zodResolver(schema) }\n : {}),\n defaultValues,\n });\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = form;\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit(onSubmit)} {...props}>\n {renderChildrenRecursively(children, register, errors, schema)}\n <button type='submit'>Submit</button>\n </form>\n </FormProvider>\n );\n};\n\nconst controlList = [\n FormInputText,\n FormCheckboxGroup,\n FormCheckbox,\n FormCombobox,\n FormRadioGroup,\n FormRadio,\n FormTextarea,\n FormSelect,\n FormDatePicker,\n FormInputFile,\n FormInputPassword,\n FormIfField,\n];\n\nconst isRequired = (schema: ZodObject<ZodRawShape>, field: string) => {\n const shape = schema?.shape?.[field] || undefined;\n if (shape === undefined) {\n return false;\n }\n\n return !(shape.isOptional() || shape.isNullable());\n};\n\nconst renderChildrenRecursively = (\n children: React.ReactNode,\n register: UseFormRegister<Record<string, string>>,\n errors: FieldErrors,\n rules: ZodObject<ZodRawShape>,\n): ReactNode => {\n return Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const props = child.props as {\n name?: string;\n type?: string;\n children?: ReactNode;\n };\n\n if (controlList.some((control) => child.type === control)) {\n if (props.name) {\n const newProps = {\n required: isRequired(rules, props.name),\n error: errors[props.name]?.message,\n ...props,\n ...register(props.name, {\n setValueAs: (value: unknown) => {\n return value === '' || value === null ? undefined : value;\n },\n }),\n };\n return cloneElement(child, newProps);\n }\n }\n\n if (props.children) {\n return cloneElement(\n child,\n props,\n renderChildrenRecursively(props.children, register, errors, rules),\n );\n }\n\n return child;\n });\n};\n\nForm.InputText = FormInputText;\nForm.Checkbox = FormCheckbox;\nForm.CheckboxGroup = FormCheckboxGroup;\nForm.Combobox = FormCombobox;\nForm.RadioGroup = FormRadioGroup;\nForm.Radio = FormRadio;\nForm.Textarea = FormTextarea;\nForm.Select = FormSelect;\nForm.DatePicker = FormDatePicker;\nForm.InputFile = FormInputFile;\nForm.InputPassword = FormInputPassword;\nForm.IfField = FormIfField;\n"],"mappings":"+9BAwFA,MAzDa,EAAO,CAAC,CACnB,gBACA,QAAQ,EAAE,OAAO,CAAE,EAAC,CAAC,OAAO,IAAM,CAAE,EAAC,CACrC,WACA,WACA,GAAG,EACO,GAAK,CAWf,IAVMA,EACJ,aAAiB,EAAa,EAAM,KAAK,OAAS,EAE9C,EAAO,EAAQ,CACnB,kBAAkB,EAClB,GAAI,GAAS,OAAO,KAAK,GAAQ,OAAS,CAAE,EAAC,CAAC,OAAS,EACnD,CAAE,SAAU,EAAY,EAAO,AAAE,EACjC,CAAE,EACN,eACD,EAAC,CACI,CACJ,WACA,eACA,UAAW,CAAE,SAAQ,CACtB,CAAG,EAEJ,MACE,GAAC,EAAA,CAAa,GAAI,WAChB,EAAC,OAAA,CAAK,SAAU,EAAa,EAAS,CAAE,GAAI,YACzC,EAA0B,EAAU,EAAU,EAAQ,EAAO,CAC9D,EAAC,SAAA,CAAO,KAAK,kBAAS,UAAe,GAChC,EACM,AAElB,EAEK,EAAc,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACD,EAEK,EAAa,CAACA,EAAgCC,IAAkB,CACpE,IAAM,EAAQ,GAAQ,QAAQ,QAAA,GAK9B,OAJI,QAAA,IACK,IAGA,EAAM,YAAY,EAAI,EAAM,YAAY,CAClD,EAEK,EAA4B,CAChCC,EACAC,EACAC,EACAC,IAEO,EAAS,IAAI,EAAU,AAAC,GAAU,CACvC,IAAK,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAQ,EAAM,MAMpB,GAAI,EAAY,KAAK,AAAC,GAAY,EAAM,OAAS,EAAQ,EACnD,EAAM,KAAM,CACd,IAAM,EAAW,CACf,SAAU,EAAW,EAAO,EAAM,KAAK,CACvC,MAAO,EAAO,EAAM,OAAO,QAC3B,GAAG,EACH,GAAG,EAAS,EAAM,KAAM,CACtB,WAAY,AAACC,GACJ,IAAU,IAAM,IAAU,SAAA,GAAmB,CAEvD,EAAC,AACH,EACD,MAAO,GAAa,EAAO,EAAS,AACrC,CAWH,OARI,EAAM,SACD,EACL,EACA,EACA,EAA0B,EAAM,SAAU,EAAU,EAAQ,EAAM,CACnE,CAGI,CACR,EAAC,CAcJ,AAXA,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,cAAgB,EACrB,EAAK,SAAW,EAChB,EAAK,WAAa,EAClB,EAAK,MAAQ,EACb,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,WAAa,EAClB,EAAK,UAAY,EACjB,EAAK,cAAgB,EACrB,EAAK,QAAU"}
1
+ {"version":3,"file":"Form.js","names":["schema: ZodObject<ZodRawShape>","field: string","children: React.ReactNode","register: UseFormRegister<Record<string, string>>","errors: FieldErrors","rules: ZodObject<ZodRawShape>","value: unknown"],"sources":["../../../../src/components/forms/form/Form.tsx"],"sourcesContent":["import { Children, cloneElement, isValidElement, type ReactNode } from 'react';\nimport {\n type FieldErrors,\n FormProvider,\n type UseFormRegister,\n useForm,\n} from 'react-hook-form';\nimport { ZodEffects, type ZodObject, type ZodRawShape, z } from 'zod';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\n\nimport { FormCheckbox } from './controls/FormCheckbox';\nimport { FormCheckboxGroup } from './controls/FormCheckboxGroup';\nimport { FormCombobox } from './controls/FormCombobox';\nimport { FormDatePicker } from './controls/FormDatePicker';\nimport { FormIfField } from './controls/FormIfField';\nimport { FormInputFile } from './controls/FormInputFile';\nimport { FormInputPassword } from './controls/FormInputPassword';\nimport { FormInputText } from './controls/FormInputText';\nimport { FormRadio } from './controls/FormRadio';\nimport { FormRadioGroup } from './controls/FormRadioGroup';\nimport { FormSelect } from './controls/FormSelect';\nimport { FormTextarea } from './controls/FormTextarea';\n\nexport type FormProps = {\n defaultValues?: object;\n rules?: ZodObject<ZodRawShape> | ZodEffects<ZodObject<ZodRawShape>>;\n onSubmit: (formData: object) => void;\n children: React.ReactNode;\n};\n\nexport const Form = ({\n defaultValues,\n rules = z.object({}).refine(() => {}),\n onSubmit,\n children,\n ...props\n}: FormProps) => {\n const schema: ZodObject<ZodRawShape> =\n rules instanceof ZodEffects ? rules._def.schema : rules;\n\n const form = useForm({\n shouldFocusError: true,\n ...(rules && Object.keys(schema?.shape || {}).length > 0\n ? { resolver: zodResolver(schema) }\n : {}),\n defaultValues,\n });\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = form;\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit(onSubmit)} {...props}>\n {renderChildrenRecursively(children, register, errors, schema)}\n </form>\n </FormProvider>\n );\n};\n\nconst controlList = [\n FormInputText,\n FormCheckboxGroup,\n FormCheckbox,\n FormCombobox,\n FormRadioGroup,\n FormRadio,\n FormTextarea,\n FormSelect,\n FormDatePicker,\n FormInputFile,\n FormInputPassword,\n FormIfField,\n];\n\nconst isRequired = (schema: ZodObject<ZodRawShape>, field: string) => {\n const shape = schema?.shape?.[field] || undefined;\n if (shape === undefined) {\n return false;\n }\n\n return !(shape.isOptional() || shape.isNullable());\n};\n\nconst renderChildrenRecursively = (\n children: React.ReactNode,\n register: UseFormRegister<Record<string, string>>,\n errors: FieldErrors,\n rules: ZodObject<ZodRawShape>,\n): ReactNode => {\n return Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const props = child.props as {\n name?: string;\n type?: string;\n children?: ReactNode;\n };\n\n if (controlList.some((control) => child.type === control)) {\n if (props.name) {\n const newProps = {\n required: isRequired(rules, props.name),\n error: errors[props.name]?.message,\n ...props,\n ...register(props.name, {\n setValueAs: (value: unknown) => {\n return value === '' || value === null ? undefined : value;\n },\n }),\n };\n return cloneElement(child, newProps);\n }\n }\n\n if (props.children) {\n return cloneElement(\n child,\n props,\n renderChildrenRecursively(props.children, register, errors, rules),\n );\n }\n\n return child;\n });\n};\n\nForm.InputText = FormInputText;\nForm.Checkbox = FormCheckbox;\nForm.CheckboxGroup = FormCheckboxGroup;\nForm.Combobox = FormCombobox;\nForm.RadioGroup = FormRadioGroup;\nForm.Radio = FormRadio;\nForm.Textarea = FormTextarea;\nForm.Select = FormSelect;\nForm.DatePicker = FormDatePicker;\nForm.InputFile = FormInputFile;\nForm.InputPassword = FormInputPassword;\nForm.IfField = FormIfField;\n"],"mappings":"q9BAuFA,MAxDa,EAAO,CAAC,CACnB,gBACA,QAAQ,EAAE,OAAO,CAAE,EAAC,CAAC,OAAO,IAAM,CAAE,EAAC,CACrC,WACA,WACA,GAAG,EACO,GAAK,CAWf,IAVMA,EACJ,aAAiB,EAAa,EAAM,KAAK,OAAS,EAE9C,EAAO,EAAQ,CACnB,kBAAkB,EAClB,GAAI,GAAS,OAAO,KAAK,GAAQ,OAAS,CAAE,EAAC,CAAC,OAAS,EACnD,CAAE,SAAU,EAAY,EAAO,AAAE,EACjC,CAAE,EACN,eACD,EAAC,CACI,CACJ,WACA,eACA,UAAW,CAAE,SAAQ,CACtB,CAAG,EAEJ,MACE,GAAC,EAAA,CAAa,GAAI,WAChB,EAAC,OAAA,CAAK,SAAU,EAAa,EAAS,CAAE,GAAI,WACzC,EAA0B,EAAU,EAAU,EAAQ,EAAO,EACzD,EACM,AAElB,EAEK,EAAc,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACD,EAEK,EAAa,CAACA,EAAgCC,IAAkB,CACpE,IAAM,EAAQ,GAAQ,QAAQ,QAAA,GAK9B,OAJI,QAAA,IACK,IAGA,EAAM,YAAY,EAAI,EAAM,YAAY,CAClD,EAEK,EAA4B,CAChCC,EACAC,EACAC,EACAC,IAEO,EAAS,IAAI,EAAU,AAAC,GAAU,CACvC,IAAK,EAAe,EAAM,CACxB,OAAO,EAGT,IAAM,EAAQ,EAAM,MAMpB,GAAI,EAAY,KAAK,AAAC,GAAY,EAAM,OAAS,EAAQ,EACnD,EAAM,KAAM,CACd,IAAM,EAAW,CACf,SAAU,EAAW,EAAO,EAAM,KAAK,CACvC,MAAO,EAAO,EAAM,OAAO,QAC3B,GAAG,EACH,GAAG,EAAS,EAAM,KAAM,CACtB,WAAY,AAACC,GACJ,IAAU,IAAM,IAAU,SAAA,GAAmB,CAEvD,EAAC,AACH,EACD,MAAO,GAAa,EAAO,EAAS,AACrC,CAWH,OARI,EAAM,SACD,EACL,EACA,EACA,EAA0B,EAAM,SAAU,EAAU,EAAQ,EAAM,CACnE,CAGI,CACR,EAAC,CAcJ,AAXA,EAAK,UAAY,EACjB,EAAK,SAAW,EAChB,EAAK,cAAgB,EACrB,EAAK,SAAW,EAChB,EAAK,WAAa,EAClB,EAAK,MAAQ,EACb,EAAK,SAAW,EAChB,EAAK,OAAS,EACd,EAAK,WAAa,EAClB,EAAK,UAAY,EACjB,EAAK,cAAgB,EACrB,EAAK,QAAU"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime1 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
2
2
  import React from "react";
3
3
 
4
4
  //#region src/components/misc/visually-hidden/VisuallyHidden.d.ts
@@ -7,7 +7,7 @@ type VisuallyHiddenProps = {
7
7
  };
8
8
  declare const VisuallyHidden: ({
9
9
  children
10
- }: VisuallyHiddenProps) => react_jsx_runtime1.JSX.Element;
10
+ }: VisuallyHiddenProps) => react_jsx_runtime11.JSX.Element;
11
11
  //# sourceMappingURL=VisuallyHidden.d.ts.map
12
12
 
13
13
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"VisuallyHidden.d.ts","names":[],"sources":["../../../../src/components/misc/visually-hidden/VisuallyHidden.tsx"],"sourcesContent":[],"mappings":";;;;KAKY,mBAAA;YACA,KAAA,CAAM;;AADN,cAIC,cAJkB,EACnB,CAAA;EAAA;AAAe,CAAT,EAG2B,mBAHlB,EAAA,GAGqC,kBAAA,CAAA,GAAA,CAAA,OAHrC;AAG3B"}
1
+ {"version":3,"file":"VisuallyHidden.d.ts","names":[],"sources":["../../../../src/components/misc/visually-hidden/VisuallyHidden.tsx"],"sourcesContent":[],"mappings":";;;;KAKY,mBAAA;YACA,KAAA,CAAM;;AADN,cAIC,cAJkB,EACnB,CAAA;EAAA;AAAe,CAAT,EAG2B,mBAHlB,EAAA,GAGqC,mBAAA,CAAA,GAAA,CAAA,OAHrC;AAG3B"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime12 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/navigation/breadcrumbs/Breadcrumbs.d.ts
@@ -17,7 +17,7 @@ declare const Breadcrumbs: {
17
17
  separator,
18
18
  children,
19
19
  classNames
20
- }: BreadcrumbsProps): react_jsx_runtime12.JSX.Element;
20
+ }: BreadcrumbsProps): react_jsx_runtime1.JSX.Element;
21
21
  Item: {
22
22
  ({
23
23
  children
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.d.ts","names":[],"sources":["../../../../src/components/navigation/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":[],"mappings":";;;;KAgBY,gBAAA;cACE;;IADF,IAAA,CAAA,EAAA,MAAA;IAAgB,IAAA,CAAA,EAAA,MAAA;IACd,IAAA,CAAA,EAAA,MAAA;IAOD,SAAA,CAAA,EAAA,MAAA;EAAS,CAAA;EAGT,QAAA,CAAA,EAHA,SA6CZ;CAAA;AAAA,cA1CY,WA0CZ,EAAA;;;;;KAtCE,mBAAgB,mBAAA,CAAA,GAAA,CAAA;;IAAhB,CAAA;MAAA;IAAA,CAAA,EAyDyB,SAzDzB,CAAA,EAyDkC,SAzDlC;IAAgB,WAAA,EAAA,MAAA;EAAA,CAAA;;KAqDd,SAAA,GAIgC;EAAA,QAAA,EAHzB,SAGyB;AAnBnC,CAAA"}
1
+ {"version":3,"file":"Breadcrumbs.d.ts","names":[],"sources":["../../../../src/components/navigation/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":[],"mappings":";;;;KAgBY,gBAAA;cACE;;IADF,IAAA,CAAA,EAAA,MAAA;IAAgB,IAAA,CAAA,EAAA,MAAA;IACd,IAAA,CAAA,EAAA,MAAA;IAOD,SAAA,CAAA,EAAA,MAAA;EAAS,CAAA;EAGT,QAAA,CAAA,EAHA,SA6CZ;CAAA;AAAA,cA1CY,WA0CZ,EAAA;;;;;KAtCE,mBAAgB,kBAAA,CAAA,GAAA,CAAA;;IAAhB,CAAA;MAAA;IAAA,CAAA,EAyDyB,SAzDzB,CAAA,EAyDkC,SAzDlC;IAAgB,WAAA,EAAA,MAAA;EAAA,CAAA;;KAqDd,SAAA,GAIgC;EAAA,QAAA,EAHzB,SAGyB;AAnBnC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { TabsListProps } from "./TabsList.js";
2
2
  import { TabsTabProps } from "./TabsTab.js";
3
3
  import { TabsPanelProps } from "./TabsPanel.js";
4
- import * as react_jsx_runtime3 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
5
5
  import React from "react";
6
6
 
7
7
  //#region src/components/navigation/tabs/Tabs.d.ts
@@ -18,14 +18,14 @@ declare const Tabs: {
18
18
  classNames,
19
19
  children,
20
20
  ...props
21
- }: TabsProps): react_jsx_runtime3.JSX.Element;
21
+ }: TabsProps): react_jsx_runtime2.JSX.Element;
22
22
  displayName: string;
23
23
  List: {
24
24
  ({
25
25
  classNames,
26
26
  children,
27
27
  ...props
28
- }: TabsListProps): react_jsx_runtime3.JSX.Element;
28
+ }: TabsListProps): react_jsx_runtime2.JSX.Element;
29
29
  displayName: string;
30
30
  };
31
31
  Tab: {
@@ -35,7 +35,7 @@ declare const Tabs: {
35
35
  endSlot,
36
36
  children,
37
37
  ...props
38
- }: TabsTabProps): react_jsx_runtime3.JSX.Element;
38
+ }: TabsTabProps): react_jsx_runtime2.JSX.Element;
39
39
  displayName: string;
40
40
  };
41
41
  Panel: {
@@ -43,7 +43,7 @@ declare const Tabs: {
43
43
  classNames,
44
44
  children,
45
45
  ...props
46
- }: TabsPanelProps): react_jsx_runtime3.JSX.Element;
46
+ }: TabsPanelProps): react_jsx_runtime2.JSX.Element;
47
47
  displayName: string;
48
48
  };
49
49
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mage-ui/components",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],
@@ -42,8 +42,8 @@
42
42
  "react-dom": "^19.1.0",
43
43
  "react-hook-form": "^7.56.4",
44
44
  "zod": "^3.25.42",
45
- "@mage-ui/preset": "0.0.32",
46
- "@mage-ui/styled-system": "0.0.32"
45
+ "@mage-ui/preset": "0.0.34",
46
+ "@mage-ui/styled-system": "0.0.34"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=22.14.0"