@clicoh/orion-library 1.0.19 → 1.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/css/base.css +44 -6
- package/dist/components/00-base/RootLayout/RootLayout.d.ts.map +1 -1
- package/dist/components/00-base/RootLayout/RootLayout.jsx +7 -3
- package/dist/components/00-base/RootLayout/RootLayout.jsx.map +1 -1
- package/dist/components/01-atoms/Badge/Badge.d.ts.map +1 -1
- package/dist/components/01-atoms/Badge/Badge.jsx +7 -7
- package/dist/components/01-atoms/Badge/Badge.jsx.map +1 -1
- package/dist/components/01-atoms/Button/Button.jsx +2 -2
- package/dist/components/01-atoms/Button/Button.jsx.map +1 -1
- package/dist/components/01-atoms/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/01-atoms/Checkbox/Checkbox.jsx +17 -11
- package/dist/components/01-atoms/Checkbox/Checkbox.jsx.map +1 -1
- package/dist/components/01-atoms/FileUpload/FileUpload.d.ts +2 -0
- package/dist/components/01-atoms/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/01-atoms/FileUpload/FileUpload.jsx +21 -15
- package/dist/components/01-atoms/FileUpload/FileUpload.jsx.map +1 -1
- package/dist/components/01-atoms/Input/Input.d.ts +3 -1
- package/dist/components/01-atoms/Input/Input.d.ts.map +1 -1
- package/dist/components/01-atoms/Input/Input.jsx +22 -19
- package/dist/components/01-atoms/Input/Input.jsx.map +1 -1
- package/dist/components/01-atoms/Input/utils/RenderErrorOrHelperText.d.ts +5 -3
- package/dist/components/01-atoms/Input/utils/RenderErrorOrHelperText.d.ts.map +1 -1
- package/dist/components/01-atoms/Input/utils/RenderErrorOrHelperText.jsx +4 -4
- package/dist/components/01-atoms/Input/utils/RenderErrorOrHelperText.jsx.map +1 -1
- package/dist/components/01-atoms/Input/utils/border.d.ts.map +1 -1
- package/dist/components/01-atoms/Input/utils/border.js +4 -2
- package/dist/components/01-atoms/Input/utils/border.js.map +1 -1
- package/dist/components/01-atoms/Logo/Logo.d.ts +1 -1
- package/dist/components/01-atoms/Logo/Logo.d.ts.map +1 -1
- package/dist/components/01-atoms/Logo/Logo.jsx +3 -2
- package/dist/components/01-atoms/Logo/Logo.jsx.map +1 -1
- package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts +3 -1
- package/dist/components/01-atoms/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx +112 -35
- package/dist/components/01-atoms/MultiSelect/MultiSelect.jsx.map +1 -1
- package/dist/components/01-atoms/OtpInput/OtpInput.d.ts +4 -2
- package/dist/components/01-atoms/OtpInput/OtpInput.d.ts.map +1 -1
- package/dist/components/01-atoms/OtpInput/OtpInput.jsx +14 -8
- package/dist/components/01-atoms/OtpInput/OtpInput.jsx.map +1 -1
- package/dist/components/01-atoms/RadialProgressBar/RadialProgressBar.d.ts.map +1 -1
- package/dist/components/01-atoms/RadialProgressBar/RadialProgressBar.jsx +4 -4
- package/dist/components/01-atoms/RadialProgressBar/RadialProgressBar.jsx.map +1 -1
- package/dist/components/01-atoms/Radio/Radio.d.ts.map +1 -1
- package/dist/components/01-atoms/Radio/Radio.jsx +24 -31
- package/dist/components/01-atoms/Radio/Radio.jsx.map +1 -1
- package/dist/components/01-atoms/Select/Select.d.ts.map +1 -1
- package/dist/components/01-atoms/Select/Select.jsx +18 -19
- package/dist/components/01-atoms/Select/Select.jsx.map +1 -1
- package/dist/components/01-atoms/SmallInput/SmallInput.d.ts +11 -0
- package/dist/components/01-atoms/SmallInput/SmallInput.d.ts.map +1 -0
- package/dist/components/01-atoms/SmallInput/SmallInput.jsx +19 -0
- package/dist/components/01-atoms/SmallInput/SmallInput.jsx.map +1 -0
- package/dist/components/01-atoms/SmallInput/index.d.ts +2 -0
- package/dist/components/01-atoms/SmallInput/index.d.ts.map +1 -0
- package/dist/components/01-atoms/SmallInput/index.js +2 -0
- package/dist/components/01-atoms/SmallInput/index.js.map +1 -0
- package/dist/components/01-atoms/Spinner/Spinner.d.ts +6 -1
- package/dist/components/01-atoms/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/01-atoms/Spinner/Spinner.jsx +3 -4
- package/dist/components/01-atoms/Spinner/Spinner.jsx.map +1 -1
- package/dist/components/01-atoms/Switch/Switch.d.ts.map +1 -1
- package/dist/components/01-atoms/Switch/Switch.jsx +6 -5
- package/dist/components/01-atoms/Switch/Switch.jsx.map +1 -1
- package/dist/components/01-atoms/ThemeSwitch/ThemeSwitch.d.ts +8 -0
- package/dist/components/01-atoms/ThemeSwitch/ThemeSwitch.d.ts.map +1 -0
- package/dist/components/01-atoms/ThemeSwitch/ThemeSwitch.jsx +17 -0
- package/dist/components/01-atoms/ThemeSwitch/ThemeSwitch.jsx.map +1 -0
- package/dist/components/01-atoms/ThemeSwitch/index.d.ts +2 -0
- package/dist/components/01-atoms/ThemeSwitch/index.d.ts.map +1 -0
- package/dist/components/01-atoms/ThemeSwitch/index.js +2 -0
- package/dist/components/01-atoms/ThemeSwitch/index.js.map +1 -0
- package/dist/components/01-atoms/Toast/Toast.d.ts.map +1 -1
- package/dist/components/01-atoms/Toast/Toast.jsx +9 -11
- package/dist/components/01-atoms/Toast/Toast.jsx.map +1 -1
- package/dist/components/01-atoms/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/01-atoms/Tooltip/Tooltip.jsx +2 -2
- package/dist/components/01-atoms/Tooltip/Tooltip.jsx.map +1 -1
- package/dist/components/01-atoms/index.d.ts +2 -0
- package/dist/components/01-atoms/index.d.ts.map +1 -1
- package/dist/components/01-atoms/index.js +2 -0
- package/dist/components/01-atoms/index.js.map +1 -1
- package/dist/components/02-molecules/Accordion/AccordionSection.d.ts.map +1 -1
- package/dist/components/02-molecules/Accordion/AccordionSection.jsx +14 -10
- package/dist/components/02-molecules/Accordion/AccordionSection.jsx.map +1 -1
- package/dist/components/02-molecules/Autocomplete/Autocomplete.d.ts +4 -1
- package/dist/components/02-molecules/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/02-molecules/Autocomplete/Autocomplete.jsx +68 -8
- package/dist/components/02-molecules/Autocomplete/Autocomplete.jsx.map +1 -1
- package/dist/components/02-molecules/Avatar/Avatar.d.ts +3 -2
- package/dist/components/02-molecules/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/02-molecules/Avatar/Avatar.jsx +22 -5
- package/dist/components/02-molecules/Avatar/Avatar.jsx.map +1 -1
- package/dist/components/02-molecules/Avatar/AvatarItem.d.ts.map +1 -1
- package/dist/components/02-molecules/Avatar/AvatarItem.jsx +3 -3
- package/dist/components/02-molecules/Avatar/AvatarItem.jsx.map +1 -1
- package/dist/components/02-molecules/BellNotifications/BellNotification.d.ts +4 -1
- package/dist/components/02-molecules/BellNotifications/BellNotification.d.ts.map +1 -1
- package/dist/components/02-molecules/BellNotifications/BellNotification.jsx +24 -6
- package/dist/components/02-molecules/BellNotifications/BellNotification.jsx.map +1 -1
- package/dist/components/02-molecules/BellNotifications/NotificationPanel.d.ts +4 -1
- package/dist/components/02-molecules/BellNotifications/NotificationPanel.d.ts.map +1 -1
- package/dist/components/02-molecules/BellNotifications/NotificationPanel.jsx +48 -41
- package/dist/components/02-molecules/BellNotifications/NotificationPanel.jsx.map +1 -1
- package/dist/components/02-molecules/Breadcrumb/Breadcrumb.d.ts +3 -1
- package/dist/components/02-molecules/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/02-molecules/Breadcrumb/Breadcrumb.jsx +7 -7
- package/dist/components/02-molecules/Breadcrumb/Breadcrumb.jsx.map +1 -1
- package/dist/components/02-molecules/Breadcrumb/BreadcrumbSkeleton.d.ts +6 -2
- package/dist/components/02-molecules/Breadcrumb/BreadcrumbSkeleton.d.ts.map +1 -1
- package/dist/components/02-molecules/Breadcrumb/BreadcrumbSkeleton.jsx +3 -4
- package/dist/components/02-molecules/Breadcrumb/BreadcrumbSkeleton.jsx.map +1 -1
- package/dist/components/02-molecules/ButtonGroup/ButtonGroup.d.ts +1 -0
- package/dist/components/02-molecules/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/components/02-molecules/ButtonGroup/ButtonGroup.jsx +4 -3
- package/dist/components/02-molecules/ButtonGroup/ButtonGroup.jsx.map +1 -1
- package/dist/components/02-molecules/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/02-molecules/Dropdown/Dropdown.jsx +110 -19
- package/dist/components/02-molecules/Dropdown/Dropdown.jsx.map +1 -1
- package/dist/components/02-molecules/Filter/Filter.d.ts +4 -1
- package/dist/components/02-molecules/Filter/Filter.d.ts.map +1 -1
- package/dist/components/02-molecules/Filter/Filter.jsx +11 -8
- package/dist/components/02-molecules/Filter/Filter.jsx.map +1 -1
- package/dist/components/02-molecules/Menu/MenuItem.d.ts +4 -1
- package/dist/components/02-molecules/Menu/MenuItem.d.ts.map +1 -1
- package/dist/components/02-molecules/Menu/MenuItem.jsx +59 -28
- package/dist/components/02-molecules/Menu/MenuItem.jsx.map +1 -1
- package/dist/components/02-molecules/Menu/MenuList.d.ts +5 -2
- package/dist/components/02-molecules/Menu/MenuList.d.ts.map +1 -1
- package/dist/components/02-molecules/Menu/MenuList.jsx +60 -16
- package/dist/components/02-molecules/Menu/MenuList.jsx.map +1 -1
- package/dist/components/02-molecules/Modal/Modal.d.ts +5 -1
- package/dist/components/02-molecules/Modal/Modal.d.ts.map +1 -1
- package/dist/components/02-molecules/Modal/Modal.jsx +25 -10
- package/dist/components/02-molecules/Modal/Modal.jsx.map +1 -1
- package/dist/components/02-molecules/Modal/useDialogFocus.d.ts +10 -0
- package/dist/components/02-molecules/Modal/useDialogFocus.d.ts.map +1 -0
- package/dist/components/02-molecules/Modal/useDialogFocus.js +73 -0
- package/dist/components/02-molecules/Modal/useDialogFocus.js.map +1 -0
- package/dist/components/02-molecules/Pagination/Pagination.d.ts +5 -1
- package/dist/components/02-molecules/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/02-molecules/Pagination/Pagination.jsx +18 -15
- package/dist/components/02-molecules/Pagination/Pagination.jsx.map +1 -1
- package/dist/components/02-molecules/SlideOver/SlideOver.d.ts +6 -2
- package/dist/components/02-molecules/SlideOver/SlideOver.d.ts.map +1 -1
- package/dist/components/02-molecules/SlideOver/SlideOver.jsx +17 -15
- package/dist/components/02-molecules/SlideOver/SlideOver.jsx.map +1 -1
- package/dist/components/02-molecules/Tab/TabItem.d.ts +2 -2
- package/dist/components/02-molecules/Tab/TabItem.d.ts.map +1 -1
- package/dist/components/02-molecules/Tab/TabItem.jsx +4 -5
- package/dist/components/02-molecules/Tab/TabItem.jsx.map +1 -1
- package/dist/components/02-molecules/Tab/TabList.d.ts.map +1 -1
- package/dist/components/02-molecules/Tab/TabList.jsx +42 -13
- package/dist/components/02-molecules/Tab/TabList.jsx.map +1 -1
- package/dist/components/02-molecules/Table/Table.d.ts +5 -1
- package/dist/components/02-molecules/Table/Table.d.ts.map +1 -1
- package/dist/components/02-molecules/Table/Table.jsx +31 -14
- package/dist/components/02-molecules/Table/Table.jsx.map +1 -1
- package/dist/components/02-molecules/Table/TableEmpty.d.ts.map +1 -1
- package/dist/components/02-molecules/Table/TableEmpty.jsx +2 -2
- package/dist/components/02-molecules/Table/TableEmpty.jsx.map +1 -1
- package/dist/components/02-molecules/Table/TableSkeleton.jsx +2 -2
- package/dist/components/02-molecules/Table/TableSkeleton.jsx.map +1 -1
- package/dist/components/02-molecules/TimePicker/TimePicker.d.ts +6 -1
- package/dist/components/02-molecules/TimePicker/TimePicker.d.ts.map +1 -1
- package/dist/components/02-molecules/TimePicker/TimePicker.jsx +11 -11
- package/dist/components/02-molecules/TimePicker/TimePicker.jsx.map +1 -1
- package/dist/components/03-organisms/AsideFilters/AsideFilters.jsx +1 -1
- package/dist/components/03-organisms/AsideFilters/AsideFilters.jsx.map +1 -1
- package/dist/components/03-organisms/DataTable/DataTable.d.ts +2 -2
- package/dist/components/03-organisms/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/03-organisms/DataTable/DataTable.jsx +1 -1
- package/dist/components/03-organisms/DataTable/DataTable.jsx.map +1 -1
- package/dist/components/03-organisms/Header/Header.d.ts +3 -1
- package/dist/components/03-organisms/Header/Header.d.ts.map +1 -1
- package/dist/components/03-organisms/Header/Header.jsx +4 -3
- package/dist/components/03-organisms/Header/Header.jsx.map +1 -1
- package/dist/components/03-organisms/ModalMultiple/ModalMultiple.d.ts +9 -5
- package/dist/components/03-organisms/ModalMultiple/ModalMultiple.d.ts.map +1 -1
- package/dist/components/03-organisms/ModalMultiple/ModalMultiple.jsx +25 -12
- package/dist/components/03-organisms/ModalMultiple/ModalMultiple.jsx.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.d.ts +3 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.d.ts.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx +5 -5
- package/dist/components/04-templates/DashboardTemplate/DashboardTemplate.jsx.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/HeadingWithTitleSkeleton.d.ts +6 -2
- package/dist/components/04-templates/DashboardTemplate/HeadingWithTitleSkeleton.d.ts.map +1 -1
- package/dist/components/04-templates/DashboardTemplate/HeadingWithTitleSkeleton.jsx +3 -4
- package/dist/components/04-templates/DashboardTemplate/HeadingWithTitleSkeleton.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts +7 -1
- package/dist/components/04-templates/LoginTemplate/LoginForm.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginForm.jsx +7 -7
- package/dist/components/04-templates/LoginTemplate/LoginForm.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginTemplate.d.ts +1 -0
- package/dist/components/04-templates/LoginTemplate/LoginTemplate.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/LoginTemplate.jsx +4 -4
- package/dist/components/04-templates/LoginTemplate/LoginTemplate.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepFour.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepFour.jsx +3 -3
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepFour.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepOne.d.ts +2 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepOne.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepOne.jsx +5 -5
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepOne.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.d.ts +3 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.jsx +9 -9
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepThree.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.d.ts +2 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.jsx +6 -6
- package/dist/components/04-templates/LoginTemplate/SetupMfa/StepTwo.jsx.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/index.d.ts +11 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/index.d.ts.map +1 -1
- package/dist/components/04-templates/LoginTemplate/SetupMfa/index.jsx +16 -6
- package/dist/components/04-templates/LoginTemplate/SetupMfa/index.jsx.map +1 -1
- package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.d.ts.map +1 -1
- package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx +5 -3
- package/dist/components/04-templates/SideFilterTemplate/SideFilterTemplate.jsx.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useTheme.d.ts +21 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.jsx +82 -0
- package/dist/hooks/useTheme.jsx.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"border.js","sourceRoot":"","sources":["../../../../../src/components/01-atoms/Input/utils/border.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE;IAC/C,MAAM,UAAU,GAA4C;QAC1D,SAAS,EAAE,IAAI,CACb,sIAAsI,EACtI,
|
|
1
|
+
{"version":3,"file":"border.js","sourceRoot":"","sources":["../../../../../src/components/01-atoms/Input/utils/border.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE;IAC/C,MAAM,UAAU,GAA4C;QAC1D,SAAS,EAAE,IAAI,CACb,sIAAsI,EACtI,0RAA0R,EAC1R,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,4BAA4B,CACzE;KACF,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,CAC1B,iGAAiG,EACjG,uQAAuQ,EACvQ,KAAK;QACH,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,gCAAgC,CACrC,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CACxB,wEAAwE,CACzE,CAAC;IAEF,OAAO;QACL,UAAU;QACV,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -10,5 +10,5 @@ import type { ReactNode, SVGProps } from 'react';
|
|
|
10
10
|
* @param {SVGProps<SVGSVGElement>} props - The properties for the SVG element.
|
|
11
11
|
* @returns {ReactNode} The rendered SVG logo.
|
|
12
12
|
*/
|
|
13
|
-
export declare function Logo(
|
|
13
|
+
export declare function Logo({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...restProps }: SVGProps<SVGSVGElement>): ReactNode;
|
|
14
14
|
//# sourceMappingURL=Logo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/Logo/Logo.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/Logo/Logo.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,EACnB,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,GAAG,SAAS,EACb,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,SAAS,CAqBrC"}
|
|
@@ -10,8 +10,9 @@ import clsx from 'clsx';
|
|
|
10
10
|
* @param {SVGProps<SVGSVGElement>} props - The properties for the SVG element.
|
|
11
11
|
* @returns {ReactNode} The rendered SVG logo.
|
|
12
12
|
*/
|
|
13
|
-
export function Logo(
|
|
14
|
-
|
|
13
|
+
export function Logo({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...restProps }) {
|
|
14
|
+
const hasAccessibleName = Boolean(ariaLabel || ariaLabelledBy);
|
|
15
|
+
return (<svg width={58} height={26} {...restProps} role={hasAccessibleName ? 'img' : undefined} aria-label={ariaLabel} aria-labelledby={ariaLabelledBy} aria-hidden={hasAccessibleName ? undefined : true} focusable="false" viewBox="0 0 58 26" xmlns="http://www.w3.org/2000/svg" className={clsx('fill-black dark:fill-white', restProps.className)}>
|
|
15
16
|
<path d="M45.029 15.705V10.26h7.631v3.323h2.713V2.707H52.66v4.838H45.03V2.707h-2.712v16.058h2.712v-3.06ZM12.362.532H9.65v12.994h2.713V.532ZM17.148 4.52h-2.713v9.006h2.713V4.52ZM15.793 0a1.676 1.676 0 1 0 .07 3.353A1.676 1.676 0 0 0 15.792 0ZM25.283 10.126a2.333 2.333 0 0 1-1.885 1.042 2.06 2.06 0 0 1-2.171-2.137 2.091 2.091 0 0 1 2.116-2.155 2.276 2.276 0 0 1 1.822.948l.133.174 1.941-1.705-.117-.152a4.79 4.79 0 0 0-3.778-1.798 4.713 4.713 0 0 0-4.472 6.514 4.639 4.639 0 0 0 4.454 2.845 4.779 4.779 0 0 0 4.063-2.01l.123-.164-2.11-1.582-.119.18ZM6.772 10.126a2.334 2.334 0 0 1-1.885 1.042 2.061 2.061 0 0 1-2.17-2.136A2.09 2.09 0 0 1 4.83 6.876a2.276 2.276 0 0 1 1.823.948L6.786 8l1.94-1.707-.118-.152A4.79 4.79 0 0 0 4.83 4.344 4.713 4.713 0 0 0 .36 10.858a4.64 4.64 0 0 0 4.453 2.845 4.78 4.78 0 0 0 4.064-2.01l.122-.164-2.11-1.582-.117.18ZM34.495 15.882a6.586 6.586 0 1 0-6.675-6.586 6.484 6.484 0 0 0 6.675 6.586Zm0-10.636a4.054 4.054 0 1 1-3.873 4.05 3.921 3.921 0 0 1 3.873-4.05Z"/>
|
|
16
17
|
<path d="M55.392 14.874h-4.567v2.609h2.91a16.654 16.654 0 0 1-4.863 3.718 16.511 16.511 0 0 1-19.04-3l-1.892 1.426a18.857 18.857 0 0 0 27.452-.48v2.904H58v-7.177h-2.608Z"/>
|
|
17
18
|
</svg>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/Logo/Logo.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"Logo.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/Logo/Logo.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAAC,EACnB,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,GAAG,SAAS,EACY;IACxB,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC;IAE/D,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,EAAE,CAAC,CACV,MAAM,CAAC,CAAC,EAAE,CAAC,CACX,IAAI,SAAS,CAAC,CACd,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5C,UAAU,CAAC,CAAC,SAAS,CAAC,CACtB,eAAe,CAAC,CAAC,cAAc,CAAC,CAChC,WAAW,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAClD,SAAS,CAAC,OAAO,CACjB,OAAO,CAAC,WAAW,CACnB,KAAK,CAAC,4BAA4B,CAClC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAEnE;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,s9BAAs9B,EAC99B;MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,kKAAkK,EAC5K;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -11,6 +11,7 @@ type MultiSelectProps = {
|
|
|
11
11
|
disabled?: boolean;
|
|
12
12
|
helperText?: string;
|
|
13
13
|
error?: string;
|
|
14
|
+
clearButtonAriaLabel?: string;
|
|
14
15
|
} & Omit<HTMLAttributes<HTMLDivElement>, 'onClick'>;
|
|
15
16
|
/**
|
|
16
17
|
* MultiSelect component for rendering a multi-select dropdown.
|
|
@@ -42,10 +43,11 @@ type MultiSelectProps = {
|
|
|
42
43
|
* @param {boolean} [props.disabled] - Boolean to disable the multi-select input.
|
|
43
44
|
* @param {string} [props.helperText] - Helper text to be displayed below the input.
|
|
44
45
|
* @param {string} [props.error] - Error message to be displayed below the input.
|
|
46
|
+
* @param {string} [props.clearButtonAriaLabel] - Accessible label for the button that clears the selection.
|
|
45
47
|
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div.
|
|
46
48
|
*
|
|
47
49
|
* @returns {ReactNode} The rendered MultiSelect component.
|
|
48
50
|
*/
|
|
49
|
-
export declare function MultiSelect({ options, value, onChange, label, disabled, helperText, error, ...restProps }: MultiSelectProps): ReactNode;
|
|
51
|
+
export declare function MultiSelect({ options, value, onChange, label, disabled, helperText, error, clearButtonAriaLabel, ...restProps }: MultiSelectProps): ReactNode;
|
|
50
52
|
export {};
|
|
51
53
|
//# sourceMappingURL=MultiSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,SAAS,EAIV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,KAAqB,EACrB,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,KAAK,EACL,oBAAoB,EACpB,GAAG,SAAS,EACb,EAAE,gBAAgB,GAAG,SAAS,CAoT9B"}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { useEffect, useRef, useState, } from 'react';
|
|
4
4
|
import { FaSortDown } from 'react-icons/fa';
|
|
5
|
+
import { FiCheck } from 'react-icons/fi';
|
|
5
6
|
import { IoIosSearch, IoMdCloseCircleOutline } from 'react-icons/io';
|
|
6
7
|
import { generateUniqueId } from '../../../utils';
|
|
7
8
|
import { Each, Show } from '../../00-base';
|
|
8
|
-
import { Checkbox } from '../Checkbox';
|
|
9
9
|
import { generateBorder } from '../Input/utils/border';
|
|
10
10
|
import { RenderErrorOrHelperText } from '../Input/utils/RenderErrorOrHelperText';
|
|
11
|
+
const EMPTY_OPTIONS = [];
|
|
11
12
|
/**
|
|
12
13
|
* MultiSelect component for rendering a multi-select dropdown.
|
|
13
14
|
*
|
|
@@ -38,25 +39,29 @@ import { RenderErrorOrHelperText } from '../Input/utils/RenderErrorOrHelperText'
|
|
|
38
39
|
* @param {boolean} [props.disabled] - Boolean to disable the multi-select input.
|
|
39
40
|
* @param {string} [props.helperText] - Helper text to be displayed below the input.
|
|
40
41
|
* @param {string} [props.error] - Error message to be displayed below the input.
|
|
42
|
+
* @param {string} [props.clearButtonAriaLabel] - Accessible label for the button that clears the selection.
|
|
41
43
|
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div.
|
|
42
44
|
*
|
|
43
45
|
* @returns {ReactNode} The rendered MultiSelect component.
|
|
44
46
|
*/
|
|
45
|
-
export function MultiSelect({ options, value =
|
|
47
|
+
export function MultiSelect({ options, value = EMPTY_OPTIONS, onChange, label, disabled, helperText, error, clearButtonAriaLabel, ...restProps }) {
|
|
46
48
|
const [id, setId] = useState('');
|
|
47
49
|
const [filteredOptions, setFilteredOptions] = useState([]);
|
|
48
50
|
const [selectedOptions, setSelectedOptions] = useState(value);
|
|
49
51
|
const [isOpen, setIsOpen] = useState(false);
|
|
50
52
|
const [query, setQuery] = useState('');
|
|
51
|
-
const [itemsSelected, setItemsSelected] = useState(0);
|
|
52
53
|
const containerRef = useRef(null);
|
|
53
|
-
const
|
|
54
|
+
const triggerRef = useRef(null);
|
|
55
|
+
const optionRefs = useRef([]);
|
|
56
|
+
const listboxId = `${id}-listbox`;
|
|
57
|
+
const feedbackId = `${id}-feedback`;
|
|
58
|
+
const inputClasses = clsx('peer disabled:text-gray-3 dark:disabled:text-gray-2 pointer-events-none h-full w-full rounded-full bg-transparent px-5 text-sm font-normal text-black outline-0 transition-all select-none focus:text-black dark:text-white dark:focus:text-white');
|
|
54
59
|
const { labelProps, legendClasses, fieldsetClasses } = generateBorder(error);
|
|
55
60
|
const handleToggleDropdown = () => {
|
|
56
61
|
if (disabled) {
|
|
57
62
|
return;
|
|
58
63
|
}
|
|
59
|
-
setIsOpen(!
|
|
64
|
+
setIsOpen((currentIsOpen) => !currentIsOpen);
|
|
60
65
|
};
|
|
61
66
|
const handleOptionClick = (option) => {
|
|
62
67
|
const isSelected = selectedOptions.some((selectedOption) => selectedOption.value === option.value);
|
|
@@ -64,7 +69,7 @@ export function MultiSelect({ options, value = [], onChange, label, disabled, he
|
|
|
64
69
|
? selectedOptions.filter((selectedOption) => selectedOption.value !== option.value)
|
|
65
70
|
: [...selectedOptions, option];
|
|
66
71
|
setSelectedOptions(newSelectedOptions);
|
|
67
|
-
onChange
|
|
72
|
+
onChange?.(newSelectedOptions);
|
|
68
73
|
};
|
|
69
74
|
const handleQueryChange = (e) => {
|
|
70
75
|
const newQuery = e.target.value;
|
|
@@ -82,19 +87,73 @@ export function MultiSelect({ options, value = [], onChange, label, disabled, he
|
|
|
82
87
|
setSelectedOptions([]);
|
|
83
88
|
setFilteredOptions(options);
|
|
84
89
|
setQuery('');
|
|
90
|
+
onChange?.([]);
|
|
91
|
+
};
|
|
92
|
+
const focusOption = (index) => {
|
|
93
|
+
optionRefs.current[index]?.focus();
|
|
94
|
+
};
|
|
95
|
+
const closeDropdown = () => {
|
|
96
|
+
setIsOpen(false);
|
|
97
|
+
triggerRef.current?.focus();
|
|
98
|
+
};
|
|
99
|
+
const handleTriggerKeyDown = (event) => {
|
|
100
|
+
if (disabled) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (event.key === 'Enter' ||
|
|
104
|
+
event.key === ' ' ||
|
|
105
|
+
event.key === 'ArrowDown') {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
setIsOpen(true);
|
|
108
|
+
setTimeout(() => focusOption(0));
|
|
109
|
+
}
|
|
110
|
+
else if (event.key === 'Escape') {
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
setIsOpen(false);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const handleSearchKeyDown = (event) => {
|
|
116
|
+
if (event.key === 'Escape') {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
closeDropdown();
|
|
119
|
+
}
|
|
120
|
+
else if (event.key === 'ArrowDown') {
|
|
121
|
+
event.preventDefault();
|
|
122
|
+
focusOption(0);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const handleOptionKeyDown = (event, index, option) => {
|
|
126
|
+
if (event.key === 'ArrowDown') {
|
|
127
|
+
event.preventDefault();
|
|
128
|
+
focusOption(Math.min(index + 1, filteredOptions.length - 1));
|
|
129
|
+
}
|
|
130
|
+
else if (event.key === 'ArrowUp') {
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
focusOption(Math.max(index - 1, 0));
|
|
133
|
+
}
|
|
134
|
+
else if (event.key === 'Home') {
|
|
135
|
+
event.preventDefault();
|
|
136
|
+
focusOption(0);
|
|
137
|
+
}
|
|
138
|
+
else if (event.key === 'End') {
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
focusOption(filteredOptions.length - 1);
|
|
141
|
+
}
|
|
142
|
+
else if (event.key === 'Enter' || event.key === ' ') {
|
|
143
|
+
event.preventDefault();
|
|
144
|
+
handleOptionClick(option);
|
|
145
|
+
}
|
|
146
|
+
else if (event.key === 'Escape') {
|
|
147
|
+
event.preventDefault();
|
|
148
|
+
closeDropdown();
|
|
149
|
+
}
|
|
85
150
|
};
|
|
86
|
-
if (id) {
|
|
87
|
-
labelProps.htmlFor = id;
|
|
88
|
-
}
|
|
89
151
|
useEffect(() => {
|
|
90
152
|
setFilteredOptions(options);
|
|
91
153
|
}, [options]);
|
|
92
154
|
useEffect(() => {
|
|
93
155
|
setSelectedOptions(value);
|
|
94
|
-
}, [value
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
setItemsSelected(selectedOptions?.length);
|
|
97
|
-
}, [selectedOptions]);
|
|
156
|
+
}, [value]);
|
|
98
157
|
useEffect(() => {
|
|
99
158
|
document.addEventListener('mousedown', handleOutsideClick);
|
|
100
159
|
setId(generateUniqueId());
|
|
@@ -102,41 +161,59 @@ export function MultiSelect({ options, value = [], onChange, label, disabled, he
|
|
|
102
161
|
document.removeEventListener('mousedown', handleOutsideClick);
|
|
103
162
|
};
|
|
104
163
|
}, []);
|
|
105
|
-
return (<div className={clsx('relative w-full', restProps.className)} ref={containerRef}>
|
|
164
|
+
return (<div {...restProps} className={clsx('relative w-full', restProps.className)} ref={containerRef}>
|
|
106
165
|
<div className={clsx('relative h-9 rounded-full', disabled ? 'pointer-events-none select-none' : 'cursor-pointer')} onClick={handleToggleDropdown}>
|
|
107
|
-
<input id={id}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<
|
|
166
|
+
<input ref={triggerRef} id={id} role="combobox" placeholder=" " value={selectedOptions.length
|
|
167
|
+
? `${selectedOptions.length} seleccionado(s)`
|
|
168
|
+
: ''} readOnly className={inputClasses} disabled={disabled} aria-expanded={isOpen} aria-haspopup="listbox" aria-controls={listboxId} aria-invalid={Boolean(error)} aria-describedby={error || helperText ? feedbackId : undefined} onKeyDown={handleTriggerKeyDown}/>
|
|
169
|
+
<label {...labelProps} htmlFor={id || undefined} className={clsx(labelProps.className, 'dark:peer-disabled:text-gray-2', error ? 'dark:text-error-dark' : 'dark:text-white')}>
|
|
170
|
+
{label}
|
|
171
|
+
</label>
|
|
172
|
+
<FaSortDown aria-hidden="true" className="absolute top-2 right-4 dark:text-white"/>
|
|
173
|
+
<fieldset className={clsx(fieldsetClasses, 'dark:peer-disabled:border-gray-2', error ? 'dark:border-error-dark' : 'dark:border-white')}>
|
|
111
174
|
<legend className={legendClasses}>{label}</legend>
|
|
112
175
|
</fieldset>
|
|
113
176
|
</div>
|
|
114
|
-
<
|
|
115
|
-
|
|
177
|
+
<div id={feedbackId}>
|
|
178
|
+
<RenderErrorOrHelperText disabled={disabled} helperText={helperText} error={error} className={clsx('pl-6', error && !disabled ? 'dark:text-error-dark' : 'dark:text-gray-2')}/>
|
|
179
|
+
</div>
|
|
180
|
+
{!!isOpen && (<div className="border-gray-5 dark:border-gray-1 dark:bg-black-1 absolute top-10 z-20 w-full rounded-lg border bg-white px-4 py-2 text-black shadow-lg dark:text-white">
|
|
116
181
|
<div className="mb-2 flex items-center gap-x-2">
|
|
117
182
|
<div className="relative flex w-full">
|
|
118
|
-
<input type="text" className="peer flex-1 rounded-full border px-3 py-1.5 outline-hidden" value={query} onChange={handleQueryChange} onFocus={() => setIsOpen(true)}/>
|
|
119
|
-
<IoIosSearch size={18} className="absolute top-2 right-2"/>
|
|
183
|
+
<input type="text" aria-label={label} aria-controls={listboxId} className="peer dark:border-gray-1 dark:bg-black-2 flex-1 rounded-full border px-3 py-1.5 outline-hidden dark:text-white" value={query} onChange={handleQueryChange} onFocus={() => setIsOpen(true)} onKeyDown={handleSearchKeyDown}/>
|
|
184
|
+
<IoIosSearch aria-hidden="true" size={18} className="absolute top-2 right-2"/>
|
|
120
185
|
</div>
|
|
121
|
-
<button type="button" onClick={handleRemoveItems} className="disabled:text-gray-3 size-7 rounded-full p-1 text-xl transition not-disabled:hover:bg-black not-disabled:hover:text-white">
|
|
122
|
-
<IoMdCloseCircleOutline />
|
|
186
|
+
<button type="button" aria-label={clearButtonAriaLabel} onClick={handleRemoveItems} className="disabled:text-gray-3 dark:disabled:text-gray-2 size-7 rounded-full p-1 text-xl transition not-disabled:hover:bg-black not-disabled:hover:text-white dark:not-disabled:hover:bg-white dark:not-disabled:hover:text-black">
|
|
187
|
+
<IoMdCloseCircleOutline aria-hidden="true"/>
|
|
123
188
|
</button>
|
|
124
189
|
</div>
|
|
125
|
-
<ul className="flex max-h-64 flex-col gap-y-1 overflow-y-auto bg-white">
|
|
190
|
+
<ul id={listboxId} role="listbox" aria-multiselectable="true" className="dark:bg-black-1 flex max-h-64 flex-col gap-y-1 overflow-y-auto bg-white">
|
|
126
191
|
<Show>
|
|
127
192
|
<Show.When isTrue={Boolean(filteredOptions.length)}>
|
|
128
|
-
<Each of={filteredOptions} render={(option) =>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
193
|
+
<Each of={filteredOptions} render={(option, index) => {
|
|
194
|
+
const isSelected = selectedOptions.some((selectedOption) => selectedOption.value === option.value);
|
|
195
|
+
return (<li ref={(element) => {
|
|
196
|
+
optionRefs.current[index] = element;
|
|
197
|
+
}} role="option" aria-selected={isSelected} tabIndex={index === 0 ? 0 : -1} className="focus-visible:ring-lavender dark:focus-visible:ring-lavender-dark flex items-center gap-2 rounded-sm outline-hidden focus-visible:ring-2" key={option.value} onClick={() => handleOptionClick(option)} onKeyDown={(event) => handleOptionKeyDown(event, index, option)}>
|
|
198
|
+
<span aria-hidden="true" className={clsx('flex size-4 shrink-0 items-center justify-center rounded-sm border', isSelected
|
|
199
|
+
? 'border-black bg-black text-white dark:border-white dark:bg-white dark:text-black'
|
|
200
|
+
: 'border-gray-2 dark:border-gray-2 dark:bg-black-1 bg-white')}>
|
|
201
|
+
<Show>
|
|
202
|
+
<Show.When isTrue={isSelected}>
|
|
203
|
+
<FiCheck className="size-3"/>
|
|
204
|
+
</Show.When>
|
|
205
|
+
</Show>
|
|
206
|
+
</span>
|
|
207
|
+
<span className="flex-auto dark:text-white">
|
|
208
|
+
{option.label}
|
|
209
|
+
</span>
|
|
210
|
+
</li>);
|
|
211
|
+
}}/>
|
|
137
212
|
</Show.When>
|
|
138
213
|
<Show.Else>
|
|
139
|
-
<
|
|
214
|
+
<li role="option" aria-disabled="true" className="p-2">
|
|
215
|
+
Opción no encontrada
|
|
216
|
+
</li>
|
|
140
217
|
</Show.Else>
|
|
141
218
|
</Show>
|
|
142
219
|
</ul>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"MultiSelect.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/MultiSelect/MultiSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HTMLAttributes } from 'react';
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
2
|
type OtpInputProps = {
|
|
3
3
|
label: string;
|
|
4
4
|
length?: number;
|
|
@@ -6,6 +6,7 @@ type OtpInputProps = {
|
|
|
6
6
|
labelStyle?: string;
|
|
7
7
|
error?: string;
|
|
8
8
|
handleSubmit: (otp: string) => void;
|
|
9
|
+
getDigitAriaLabel?: (digit: number) => string;
|
|
9
10
|
} & HTMLAttributes<HTMLDivElement>;
|
|
10
11
|
/**
|
|
11
12
|
* OtpInput component for rendering a one-time password input field with multiple digit boxes.
|
|
@@ -28,11 +29,12 @@ type OtpInputProps = {
|
|
|
28
29
|
* @param {string} [props.labelStyle] - Additional CSS classes for the label.
|
|
29
30
|
* @param {string} [props.error] - Error message to be displayed below the input fields.
|
|
30
31
|
* @param {(otp: string) => void} props.handleSubmit - Callback function called when the OTP is complete (all boxes filled).
|
|
32
|
+
* @param {(digit: number) => string} [props.getDigitAriaLabel] - Generates an accessible label for each one-based digit position.
|
|
31
33
|
* @param {React.HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div.
|
|
32
34
|
* @required props.label, props.handleSubmit
|
|
33
35
|
*
|
|
34
36
|
* @returns {ReactNode} The rendered OtpInput component.
|
|
35
37
|
*/
|
|
36
|
-
export declare function OtpInput({ length, disabled, label, labelStyle, error, handleSubmit, ...restProps }: OtpInputProps):
|
|
38
|
+
export declare function OtpInput({ length, disabled, label, labelStyle, error, handleSubmit, getDigitAriaLabel, ...restProps }: OtpInputProps): ReactNode;
|
|
37
39
|
export {};
|
|
38
40
|
//# sourceMappingURL=OtpInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtpInput.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/OtpInput/OtpInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OtpInput.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/OtpInput/OtpInput.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAIf,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,QAAQ,CAAC,EACvB,MAAU,EACV,QAAgB,EAChB,KAAK,EACL,UAAU,EACV,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,GAAG,SAAS,EACb,EAAE,aAAa,GAAG,SAAS,CA2H3B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { useId, useRef, useState, } from 'react';
|
|
3
4
|
import { Each, Show } from '../../00-base';
|
|
4
5
|
import { Paragraph } from '../Paragraph';
|
|
5
|
-
import clsx from 'clsx';
|
|
6
6
|
/**
|
|
7
7
|
* OtpInput component for rendering a one-time password input field with multiple digit boxes.
|
|
8
8
|
*
|
|
@@ -24,14 +24,18 @@ import clsx from 'clsx';
|
|
|
24
24
|
* @param {string} [props.labelStyle] - Additional CSS classes for the label.
|
|
25
25
|
* @param {string} [props.error] - Error message to be displayed below the input fields.
|
|
26
26
|
* @param {(otp: string) => void} props.handleSubmit - Callback function called when the OTP is complete (all boxes filled).
|
|
27
|
+
* @param {(digit: number) => string} [props.getDigitAriaLabel] - Generates an accessible label for each one-based digit position.
|
|
27
28
|
* @param {React.HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the container div.
|
|
28
29
|
* @required props.label, props.handleSubmit
|
|
29
30
|
*
|
|
30
31
|
* @returns {ReactNode} The rendered OtpInput component.
|
|
31
32
|
*/
|
|
32
|
-
export function OtpInput({ length = 4, disabled = false, label, labelStyle, error, handleSubmit, ...restProps }) {
|
|
33
|
+
export function OtpInput({ length = 4, disabled = false, label, labelStyle, error, handleSubmit, getDigitAriaLabel, ...restProps }) {
|
|
33
34
|
const [otp, setOtp] = useState(Array.from({ length }, () => ''));
|
|
34
35
|
const inputRefs = useRef([]);
|
|
36
|
+
const accessibilityId = useId();
|
|
37
|
+
const labelId = `${accessibilityId}-label`;
|
|
38
|
+
const errorId = `${accessibilityId}-error`;
|
|
35
39
|
const onSubmit = (newCode) => setTimeout(() => handleSubmit(newCode.join('')), 100);
|
|
36
40
|
const handleInputChange = (index, value) => {
|
|
37
41
|
if (value && !/^\d$/.test(value))
|
|
@@ -57,7 +61,7 @@ export function OtpInput({ length = 4, disabled = false, label, labelStyle, erro
|
|
|
57
61
|
};
|
|
58
62
|
const handlePaste = (e) => {
|
|
59
63
|
e.preventDefault();
|
|
60
|
-
const pastedData = e.clipboardData.getData('text').slice(0,
|
|
64
|
+
const pastedData = e.clipboardData.getData('text').slice(0, length);
|
|
61
65
|
if (!/^\d+$/.test(pastedData))
|
|
62
66
|
return;
|
|
63
67
|
const newCode = [...otp];
|
|
@@ -71,21 +75,23 @@ export function OtpInput({ length = 4, disabled = false, label, labelStyle, erro
|
|
|
71
75
|
onSubmit(newCode);
|
|
72
76
|
};
|
|
73
77
|
return (<div {...restProps} className={clsx('w-full', restProps.className)}>
|
|
74
|
-
<Paragraph size="body-1" className={clsx('text-lavender pb-4', labelStyle)}>
|
|
78
|
+
<Paragraph id={labelId} size="body-1" className={clsx('text-lavender dark:text-lavender-dark pb-4', labelStyle)}>
|
|
75
79
|
{label}
|
|
76
80
|
</Paragraph>
|
|
77
81
|
|
|
78
|
-
<div className="flex items-center gap-x-2" onPaste={handlePaste}>
|
|
82
|
+
<div role="group" aria-labelledby={labelId} className="flex items-center gap-x-2" onPaste={handlePaste}>
|
|
79
83
|
<Each of={Array.from({ length })} render={(_, index) => (<input ref={(me) => {
|
|
80
84
|
if (me) {
|
|
81
85
|
inputRefs.current[index] = me;
|
|
82
86
|
}
|
|
83
|
-
}} name={`otp-${index}`} key={`OtpInput-${index}`} value={otp[index]} onChange={(e) => handleInputChange(index, e.target.value)} onKeyDown={(e) => handleKeyDown(index, e)} type="text" maxLength={1} className={clsx('disabled:border-gray-3 disabled:text-gray-3 size-10 rounded-lg border bg-transparent text-center text-sm font-normal text-black outline-0 transition-all focus:text-black
|
|
87
|
+
}} name={`otp-${index}`} key={`OtpInput-${index}`} value={otp[index]} onChange={(e) => handleInputChange(index, e.target.value)} onKeyDown={(e) => handleKeyDown(index, e)} type="text" inputMode="numeric" autoComplete="one-time-code" maxLength={1} aria-label={getDigitAriaLabel?.(index + 1)} aria-invalid={Boolean(error)} aria-describedby={error ? errorId : undefined} className={clsx('disabled:border-gray-3 disabled:text-gray-3 dark:disabled:border-gray-2 dark:disabled:text-gray-2 size-10 rounded-lg border bg-transparent text-center text-sm font-normal text-black outline-0 transition-all focus:text-black dark:text-white dark:focus:text-white', error
|
|
88
|
+
? 'border-error dark:border-error-dark'
|
|
89
|
+
: 'border-lavender dark:border-lavender-dark')} disabled={disabled}/>)}/>
|
|
84
90
|
</div>
|
|
85
91
|
|
|
86
92
|
<Show>
|
|
87
93
|
<Show.When isTrue={!!error}>
|
|
88
|
-
<Paragraph size="body-2" className="text-error pt-2">
|
|
94
|
+
<Paragraph id={errorId} size="body-2" className="text-error dark:text-error-dark pt-2">
|
|
89
95
|
{error}
|
|
90
96
|
</Paragraph>
|
|
91
97
|
</Show.When>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtpInput.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/OtpInput/OtpInput.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,
|
|
1
|
+
{"version":3,"file":"OtpInput.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/OtpInput/OtpInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadialProgressBar.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/RadialProgressBar/RadialProgressBar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAEvD,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE,sBAAsB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"RadialProgressBar.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/RadialProgressBar/RadialProgressBar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAEvD,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,GACT,EAAE,sBAAsB,GAAG,SAAS,CAuDpC"}
|
|
@@ -28,14 +28,14 @@ export function RadialProgressBar({ value, className, text, fontSize, }) {
|
|
|
28
28
|
}, 500);
|
|
29
29
|
}, [value]);
|
|
30
30
|
return (<div className={clsx(className, 'relative')}>
|
|
31
|
-
<svg className="h-full w-full" viewBox="0 0 100 100">
|
|
32
|
-
<circle className="text-gray-5 stroke-current" strokeWidth="10" cx="50" cy="50" r="40" fill="transparent"/>
|
|
31
|
+
<svg className="h-full w-full text-black dark:text-white" viewBox="0 0 100 100">
|
|
32
|
+
<circle className="text-gray-5 dark:text-gray-1 stroke-current" strokeWidth="10" cx="50" cy="50" r="40" fill="transparent"/>
|
|
33
33
|
<circle style={{
|
|
34
34
|
transition: 'stroke-dashoffset 0.5s',
|
|
35
35
|
transform: 'rotate(-90deg)',
|
|
36
36
|
transformOrigin: '50% 50%',
|
|
37
|
-
}} className="text-lavender stroke-current" strokeWidth="10" strokeLinecap="round" cx="50" cy="50" r="40" fill="transparent" strokeDasharray="251.2" strokeDashoffset={`calc(251.2 - (251.2 * ${percent}) / 100)`}/>
|
|
38
|
-
{!!text && (<text x="50" y="50" textAnchor="middle" alignmentBaseline="middle" fontWeight="600" fontSize={fontSize ?? '1rem'}>
|
|
37
|
+
}} className="text-lavender dark:text-lavender-dark stroke-current" strokeWidth="10" strokeLinecap="round" cx="50" cy="50" r="40" fill="transparent" strokeDasharray="251.2" strokeDashoffset={`calc(251.2 - (251.2 * ${percent}) / 100)`}/>
|
|
38
|
+
{!!text && (<text className="fill-current" x="50" y="50" textAnchor="middle" alignmentBaseline="middle" fontWeight="600" fontSize={fontSize ?? '1rem'}>
|
|
39
39
|
{text}
|
|
40
40
|
</text>)}
|
|
41
41
|
</svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadialProgressBar.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/RadialProgressBar/RadialProgressBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,GACe;IACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAC1C;MAAA,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"RadialProgressBar.jsx","sourceRoot":"","sources":["../../../../src/components/01-atoms/RadialProgressBar/RadialProgressBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,IAAI,EACJ,QAAQ,GACe;IACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,GAAG,EAAE;YACd,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAC1C;MAAA,CAAC,GAAG,CACF,SAAS,CAAC,0CAA0C,CACpD,OAAO,CAAC,aAAa,CAErB;QAAA,CAAC,MAAM,CACL,SAAS,CAAC,6CAA6C,CACvD,WAAW,CAAC,IAAI,CAChB,EAAE,CAAC,IAAI,CACP,EAAE,CAAC,IAAI,CACP,CAAC,CAAC,IAAI,CACN,IAAI,CAAC,aAAa,EAEpB;QAAA,CAAC,MAAM,CACL,KAAK,CAAC,CAAC;YACL,UAAU,EAAE,wBAAwB;YACpC,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,SAAS;SAC3B,CAAC,CACF,SAAS,CAAC,sDAAsD,CAChE,WAAW,CAAC,IAAI,CAChB,aAAa,CAAC,OAAO,CACrB,EAAE,CAAC,IAAI,CACP,EAAE,CAAC,IAAI,CACP,CAAC,CAAC,IAAI,CACN,IAAI,CAAC,aAAa,CAClB,eAAe,CAAC,OAAO,CACvB,gBAAgB,CAAC,CAAC,yBAAyB,OAAO,UAAU,CAAC,EAE/D;QAAA,CAAC,CAAC,CAAC,IAAI,IAAI,CACT,CAAC,IAAI,CACH,SAAS,CAAC,cAAc,CACxB,CAAC,CAAC,IAAI,CACN,CAAC,CAAC,IAAI,CACN,UAAU,CAAC,QAAQ,CACnB,iBAAiB,CAAC,QAAQ,CAC1B,UAAU,CAAC,KAAK,CAChB,QAAQ,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,CAE7B;YAAA,CAAC,IAAI,CACP;UAAA,EAAE,IAAI,CAAC,CACR,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/Radio/Radio.tsx"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../../src/components/01-atoms/Radio/Radio.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAS,MAAM,OAAO,CAAC;AAIxE,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAwB,GACzB,EAAE,UAAU,GAAG,SAAS,CAmFxB"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
|
-
import {
|
|
4
|
-
import { generateUniqueId } from '../../../utils';
|
|
3
|
+
import { useId } from 'react';
|
|
5
4
|
import { Each } from '../../00-base';
|
|
6
5
|
import { RenderErrorOrHelperText } from '../Input/utils/RenderErrorOrHelperText';
|
|
7
|
-
import { Paragraph } from '../Paragraph';
|
|
8
6
|
/**
|
|
9
7
|
* Radio component for rendering a group of radio buttons with labels, helper text, and error message.
|
|
10
8
|
*
|
|
@@ -32,42 +30,37 @@ import { Paragraph } from '../Paragraph';
|
|
|
32
30
|
*/
|
|
33
31
|
export function Radio({ label, options, radio, helperText, error, orientation = 'vertical', }) {
|
|
34
32
|
const optionsArr = Object.entries(options);
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const radioClasses = clsx('relative h-4 w-4 cursor-pointer border-2 outline-hidden', error && !radio.disabled
|
|
40
|
-
'
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}, [optionsArr]);
|
|
56
|
-
return (<div className="w-full max-w-full">
|
|
57
|
-
<Paragraph size="body-1" className="pb-1.5">
|
|
33
|
+
const groupId = useId();
|
|
34
|
+
const descriptionId = error || helperText ? `${groupId}-description` : undefined;
|
|
35
|
+
const describedBy = [radio['aria-describedby'], descriptionId].filter(Boolean).join(' ') ||
|
|
36
|
+
undefined;
|
|
37
|
+
const radioClasses = clsx('disabled:accent-gray-3 dark:disabled:accent-gray-2 relative h-4 w-4 cursor-pointer border-2 outline-hidden disabled:cursor-not-allowed', error && !radio.disabled
|
|
38
|
+
? 'accent-error dark:accent-error-dark'
|
|
39
|
+
: 'accent-black dark:accent-white', !radio.disabled &&
|
|
40
|
+
'before:absolute before:-top-1 before:-left-1 before:h-6 before:w-6 before:rounded-full before:bg-transparent before:transition hover:before:bg-black/15 dark:hover:before:bg-white/15', radio.className);
|
|
41
|
+
const labelClasses = clsx('cursor-pointer p-2 text-sm', radio.disabled
|
|
42
|
+
? 'text-gray-3 dark:text-gray-2 cursor-not-allowed'
|
|
43
|
+
: error
|
|
44
|
+
? 'text-error dark:text-error-dark'
|
|
45
|
+
: 'text-black dark:text-white');
|
|
46
|
+
return (<fieldset className="w-full max-w-full border-0 p-0" aria-describedby={descriptionId}>
|
|
47
|
+
<legend className={clsx('pb-1.5 text-sm font-normal', radio.disabled
|
|
48
|
+
? 'text-gray-3 dark:text-gray-2'
|
|
49
|
+
: 'text-black dark:text-white')}>
|
|
58
50
|
{label}
|
|
59
|
-
</
|
|
51
|
+
</legend>
|
|
60
52
|
<div className={clsx('flex', orientation === 'vertical' ? 'flex-col' : 'flex-row gap-4')}>
|
|
61
53
|
<Each of={optionsArr} render={([value, text], index) => {
|
|
54
|
+
const id = `${groupId}-${index}`;
|
|
62
55
|
return (<div className="flex items-center" key={value}>
|
|
63
|
-
<input {...radio} {
|
|
64
|
-
<label {
|
|
56
|
+
<input {...radio} id={id} type="radio" className={radioClasses} name={radio.name ?? groupId} value={value} checked={radio.value === value} aria-invalid={error ? true : radio['aria-invalid']} aria-describedby={describedBy}/>
|
|
57
|
+
<label htmlFor={id} className={labelClasses}>
|
|
65
58
|
{text}
|
|
66
59
|
</label>
|
|
67
60
|
</div>);
|
|
68
61
|
}}/>
|
|
69
62
|
</div>
|
|
70
|
-
<RenderErrorOrHelperText disabled={radio.disabled} helperText={helperText} error={error}/>
|
|
71
|
-
</
|
|
63
|
+
<RenderErrorOrHelperText id={descriptionId} disabled={radio.disabled} helperText={helperText} error={error}/>
|
|
64
|
+
</fieldset>);
|
|
72
65
|
}
|
|
73
66
|
//# sourceMappingURL=Radio.jsx.map
|