@mihcm/ui 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/dist/AccessLevelGroup.d.ts +37 -0
- package/dist/AccessLevelGroup.d.ts.map +1 -0
- package/dist/AccessLevelGroup.js +39 -0
- package/dist/AccessLevelGroup.js.map +1 -0
- package/dist/AccessLevelGroup.native.d.ts +18 -0
- package/dist/AccessLevelGroup.native.d.ts.map +1 -0
- package/dist/AccessLevelGroup.native.js +40 -0
- package/dist/AccessLevelGroup.native.js.map +1 -0
- package/dist/Accordion.d.ts +52 -0
- package/dist/Accordion.d.ts.map +1 -0
- package/dist/Accordion.js +90 -0
- package/dist/Accordion.js.map +1 -0
- package/dist/Accordion.native.d.ts +36 -0
- package/dist/Accordion.native.d.ts.map +1 -0
- package/dist/Accordion.native.js +86 -0
- package/dist/Accordion.native.js.map +1 -0
- package/dist/Alert.d.ts +33 -0
- package/dist/Alert.d.ts.map +1 -0
- package/dist/Alert.js +45 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.native.d.ts +26 -0
- package/dist/Alert.native.d.ts.map +1 -0
- package/dist/Alert.native.js +41 -0
- package/dist/Alert.native.js.map +1 -0
- package/dist/AlertDialog.d.ts +57 -0
- package/dist/AlertDialog.d.ts.map +1 -0
- package/dist/AlertDialog.js +91 -0
- package/dist/AlertDialog.js.map +1 -0
- package/dist/AlertDialog.native.d.ts +66 -0
- package/dist/AlertDialog.native.d.ts.map +1 -0
- package/dist/AlertDialog.native.js +71 -0
- package/dist/AlertDialog.native.js.map +1 -0
- package/dist/AspectRatio.d.ts +18 -0
- package/dist/AspectRatio.d.ts.map +1 -0
- package/dist/AspectRatio.js +19 -0
- package/dist/AspectRatio.js.map +1 -0
- package/dist/AspectRatio.native.d.ts +7 -0
- package/dist/AspectRatio.native.d.ts.map +1 -0
- package/dist/AspectRatio.native.js +13 -0
- package/dist/AspectRatio.native.js.map +1 -0
- package/dist/Avatar.d.ts +45 -0
- package/dist/Avatar.d.ts.map +1 -0
- package/dist/Avatar.js +69 -0
- package/dist/Avatar.js.map +1 -0
- package/dist/Avatar.native.d.ts +38 -0
- package/dist/Avatar.native.d.ts.map +1 -0
- package/dist/Avatar.native.js +56 -0
- package/dist/Avatar.native.js.map +1 -0
- package/dist/AvatarGroup.d.ts +32 -0
- package/dist/AvatarGroup.d.ts.map +1 -0
- package/dist/AvatarGroup.js +45 -0
- package/dist/AvatarGroup.js.map +1 -0
- package/dist/AvatarGroup.native.d.ts +18 -0
- package/dist/AvatarGroup.native.d.ts.map +1 -0
- package/dist/AvatarGroup.native.js +35 -0
- package/dist/AvatarGroup.native.js.map +1 -0
- package/dist/Badge.d.ts +26 -0
- package/dist/Badge.d.ts.map +1 -0
- package/dist/Badge.js +44 -0
- package/dist/Badge.js.map +1 -0
- package/dist/Badge.native.d.ts +23 -0
- package/dist/Badge.native.d.ts.map +1 -0
- package/dist/Badge.native.js +49 -0
- package/dist/Badge.native.js.map +1 -0
- package/dist/Banner.d.ts +27 -0
- package/dist/Banner.d.ts.map +1 -0
- package/dist/Banner.js +41 -0
- package/dist/Banner.js.map +1 -0
- package/dist/Banner.native.d.ts +24 -0
- package/dist/Banner.native.d.ts.map +1 -0
- package/dist/Banner.native.js +39 -0
- package/dist/Banner.native.js.map +1 -0
- package/dist/BarList.d.ts +27 -0
- package/dist/BarList.d.ts.map +1 -0
- package/dist/BarList.js +25 -0
- package/dist/BarList.js.map +1 -0
- package/dist/Breadcrumb.d.ts +67 -0
- package/dist/Breadcrumb.d.ts.map +1 -0
- package/dist/Breadcrumb.js +63 -0
- package/dist/Breadcrumb.js.map +1 -0
- package/dist/Breadcrumb.native.d.ts +64 -0
- package/dist/Breadcrumb.native.d.ts.map +1 -0
- package/dist/Breadcrumb.native.js +50 -0
- package/dist/Breadcrumb.native.js.map +1 -0
- package/dist/Button.d.ts +42 -0
- package/dist/Button.d.ts.map +1 -0
- package/dist/Button.js +68 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.native.d.ts +38 -0
- package/dist/Button.native.d.ts.map +1 -0
- package/dist/Button.native.js +51 -0
- package/dist/Button.native.js.map +1 -0
- package/dist/Calendar.d.ts +16 -0
- package/dist/Calendar.d.ts.map +1 -0
- package/dist/Calendar.js +94 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.native.d.ts +21 -0
- package/dist/Calendar.native.d.ts.map +1 -0
- package/dist/Calendar.native.js +15 -0
- package/dist/Calendar.native.js.map +1 -0
- package/dist/Card.d.ts +29 -0
- package/dist/Card.d.ts.map +1 -0
- package/dist/Card.js +44 -0
- package/dist/Card.js.map +1 -0
- package/dist/Card.native.d.ts +20 -0
- package/dist/Card.native.d.ts.map +1 -0
- package/dist/Card.native.js +32 -0
- package/dist/Card.native.js.map +1 -0
- package/dist/Carousel.d.ts +46 -0
- package/dist/Carousel.d.ts.map +1 -0
- package/dist/Carousel.js +115 -0
- package/dist/Carousel.js.map +1 -0
- package/dist/Carousel.native.d.ts +59 -0
- package/dist/Carousel.native.d.ts.map +1 -0
- package/dist/Carousel.native.js +93 -0
- package/dist/Carousel.native.js.map +1 -0
- package/dist/CategoryBar.d.ts +22 -0
- package/dist/CategoryBar.d.ts.map +1 -0
- package/dist/CategoryBar.js +27 -0
- package/dist/CategoryBar.js.map +1 -0
- package/dist/Chart.d.ts +77 -0
- package/dist/Chart.d.ts.map +1 -0
- package/dist/Chart.js +197 -0
- package/dist/Chart.js.map +1 -0
- package/dist/Checkbox.d.ts +28 -0
- package/dist/Checkbox.d.ts.map +1 -0
- package/dist/Checkbox.js +44 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Checkbox.native.d.ts +13 -0
- package/dist/Checkbox.native.d.ts.map +1 -0
- package/dist/Checkbox.native.js +34 -0
- package/dist/Checkbox.native.js.map +1 -0
- package/dist/CheckboxGrid.d.ts +49 -0
- package/dist/CheckboxGrid.d.ts.map +1 -0
- package/dist/CheckboxGrid.js +79 -0
- package/dist/CheckboxGrid.js.map +1 -0
- package/dist/CheckboxGrid.native.d.ts +14 -0
- package/dist/CheckboxGrid.native.d.ts.map +1 -0
- package/dist/CheckboxGrid.native.js +47 -0
- package/dist/CheckboxGrid.native.js.map +1 -0
- package/dist/Collapsible.d.ts +51 -0
- package/dist/Collapsible.d.ts.map +1 -0
- package/dist/Collapsible.js +101 -0
- package/dist/Collapsible.js.map +1 -0
- package/dist/Collapsible.native.d.ts +53 -0
- package/dist/Collapsible.native.d.ts.map +1 -0
- package/dist/Collapsible.native.js +109 -0
- package/dist/Collapsible.native.js.map +1 -0
- package/dist/Combobox.d.ts +42 -0
- package/dist/Combobox.d.ts.map +1 -0
- package/dist/Combobox.js +96 -0
- package/dist/Combobox.js.map +1 -0
- package/dist/Combobox.native.d.ts +21 -0
- package/dist/Combobox.native.d.ts.map +1 -0
- package/dist/Combobox.native.js +28 -0
- package/dist/Combobox.native.js.map +1 -0
- package/dist/Command.d.ts +107 -0
- package/dist/Command.d.ts.map +1 -0
- package/dist/Command.js +68 -0
- package/dist/Command.js.map +1 -0
- package/dist/Command.native.d.ts +41 -0
- package/dist/Command.native.d.ts.map +1 -0
- package/dist/Command.native.js +31 -0
- package/dist/Command.native.js.map +1 -0
- package/dist/ContextMenu.d.ts +48 -0
- package/dist/ContextMenu.d.ts.map +1 -0
- package/dist/ContextMenu.js +79 -0
- package/dist/ContextMenu.js.map +1 -0
- package/dist/ContextMenu.native.d.ts +81 -0
- package/dist/ContextMenu.native.d.ts.map +1 -0
- package/dist/ContextMenu.native.js +82 -0
- package/dist/ContextMenu.native.js.map +1 -0
- package/dist/DataTable.d.ts +98 -0
- package/dist/DataTable.d.ts.map +1 -0
- package/dist/DataTable.js +291 -0
- package/dist/DataTable.js.map +1 -0
- package/dist/DataTable.native.d.ts +31 -0
- package/dist/DataTable.native.d.ts.map +1 -0
- package/dist/DataTable.native.js +22 -0
- package/dist/DataTable.native.js.map +1 -0
- package/dist/DatePicker.d.ts +63 -0
- package/dist/DatePicker.d.ts.map +1 -0
- package/dist/DatePicker.js +106 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DatePicker.native.d.ts +21 -0
- package/dist/DatePicker.native.d.ts.map +1 -0
- package/dist/DatePicker.native.js +15 -0
- package/dist/DatePicker.native.js.map +1 -0
- package/dist/Dialog.d.ts +52 -0
- package/dist/Dialog.d.ts.map +1 -0
- package/dist/Dialog.js +93 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Dialog.native.d.ts +57 -0
- package/dist/Dialog.native.d.ts.map +1 -0
- package/dist/Dialog.native.js +62 -0
- package/dist/Dialog.native.js.map +1 -0
- package/dist/Drawer.d.ts +36 -0
- package/dist/Drawer.d.ts.map +1 -0
- package/dist/Drawer.js +57 -0
- package/dist/Drawer.js.map +1 -0
- package/dist/Drawer.native.d.ts +50 -0
- package/dist/Drawer.native.d.ts.map +1 -0
- package/dist/Drawer.native.js +43 -0
- package/dist/Drawer.native.js.map +1 -0
- package/dist/DropdownMenu.d.ts +57 -0
- package/dist/DropdownMenu.d.ts.map +1 -0
- package/dist/DropdownMenu.js +192 -0
- package/dist/DropdownMenu.js.map +1 -0
- package/dist/DropdownMenu.native.d.ts +53 -0
- package/dist/DropdownMenu.native.d.ts.map +1 -0
- package/dist/DropdownMenu.native.js +71 -0
- package/dist/DropdownMenu.native.js.map +1 -0
- package/dist/Dropzone.d.ts +27 -0
- package/dist/Dropzone.d.ts.map +1 -0
- package/dist/Dropzone.js +33 -0
- package/dist/Dropzone.js.map +1 -0
- package/dist/EmptyState.d.ts +21 -0
- package/dist/EmptyState.d.ts.map +1 -0
- package/dist/EmptyState.js +16 -0
- package/dist/EmptyState.js.map +1 -0
- package/dist/EmptyState.native.d.ts +19 -0
- package/dist/EmptyState.native.d.ts.map +1 -0
- package/dist/EmptyState.native.js +16 -0
- package/dist/EmptyState.native.js.map +1 -0
- package/dist/Form.d.ts +310 -0
- package/dist/Form.d.ts.map +1 -0
- package/dist/Form.js +260 -0
- package/dist/Form.js.map +1 -0
- package/dist/Form.native.d.ts +36 -0
- package/dist/Form.native.d.ts.map +1 -0
- package/dist/Form.native.js +33 -0
- package/dist/Form.native.js.map +1 -0
- package/dist/HoverCard.d.ts +47 -0
- package/dist/HoverCard.d.ts.map +1 -0
- package/dist/HoverCard.js +86 -0
- package/dist/HoverCard.js.map +1 -0
- package/dist/HoverCard.native.d.ts +48 -0
- package/dist/HoverCard.native.d.ts.map +1 -0
- package/dist/HoverCard.native.js +19 -0
- package/dist/HoverCard.native.js.map +1 -0
- package/dist/IconSidebar.d.ts +50 -0
- package/dist/IconSidebar.d.ts.map +1 -0
- package/dist/IconSidebar.js +121 -0
- package/dist/IconSidebar.js.map +1 -0
- package/dist/IconSidebar.native.d.ts +40 -0
- package/dist/IconSidebar.native.d.ts.map +1 -0
- package/dist/IconSidebar.native.js +24 -0
- package/dist/IconSidebar.native.js.map +1 -0
- package/dist/Input.d.ts +52 -0
- package/dist/Input.d.ts.map +1 -0
- package/dist/Input.js +57 -0
- package/dist/Input.js.map +1 -0
- package/dist/Input.native.d.ts +37 -0
- package/dist/Input.native.d.ts.map +1 -0
- package/dist/Input.native.js +39 -0
- package/dist/Input.native.js.map +1 -0
- package/dist/InputOTP.d.ts +30 -0
- package/dist/InputOTP.d.ts.map +1 -0
- package/dist/InputOTP.js +47 -0
- package/dist/InputOTP.js.map +1 -0
- package/dist/InputOTP.native.d.ts +32 -0
- package/dist/InputOTP.native.d.ts.map +1 -0
- package/dist/InputOTP.native.js +48 -0
- package/dist/InputOTP.native.js.map +1 -0
- package/dist/Label.d.ts +26 -0
- package/dist/Label.d.ts.map +1 -0
- package/dist/Label.js +35 -0
- package/dist/Label.js.map +1 -0
- package/dist/Label.native.d.ts +26 -0
- package/dist/Label.native.d.ts.map +1 -0
- package/dist/Label.native.js +30 -0
- package/dist/Label.native.js.map +1 -0
- package/dist/Link.d.ts +21 -0
- package/dist/Link.d.ts.map +1 -0
- package/dist/Link.js +46 -0
- package/dist/Link.js.map +1 -0
- package/dist/Link.native.d.ts +23 -0
- package/dist/Link.native.d.ts.map +1 -0
- package/dist/Link.native.js +59 -0
- package/dist/Link.native.js.map +1 -0
- package/dist/Logo.d.ts +25 -0
- package/dist/Logo.d.ts.map +1 -0
- package/dist/Logo.js +58 -0
- package/dist/Logo.js.map +1 -0
- package/dist/Logo.native.d.ts +22 -0
- package/dist/Logo.native.d.ts.map +1 -0
- package/dist/Logo.native.js +46 -0
- package/dist/Logo.native.js.map +1 -0
- package/dist/MainSidebar.d.ts +2 -0
- package/dist/MainSidebar.d.ts.map +1 -0
- package/dist/MainSidebar.js +3 -0
- package/dist/MainSidebar.js.map +1 -0
- package/dist/MainSidebar.native.d.ts +2 -0
- package/dist/MainSidebar.native.d.ts.map +1 -0
- package/dist/MainSidebar.native.js +2 -0
- package/dist/MainSidebar.native.js.map +1 -0
- package/dist/Menubar.d.ts +70 -0
- package/dist/Menubar.d.ts.map +1 -0
- package/dist/Menubar.js +142 -0
- package/dist/Menubar.js.map +1 -0
- package/dist/NavigationMenu.d.ts +12 -0
- package/dist/NavigationMenu.d.ts.map +1 -0
- package/dist/NavigationMenu.js +63 -0
- package/dist/NavigationMenu.js.map +1 -0
- package/dist/NavigationMenu.native.d.ts +44 -0
- package/dist/NavigationMenu.native.d.ts.map +1 -0
- package/dist/NavigationMenu.native.js +43 -0
- package/dist/NavigationMenu.native.js.map +1 -0
- package/dist/NotificationBadge.d.ts +33 -0
- package/dist/NotificationBadge.d.ts.map +1 -0
- package/dist/NotificationBadge.js +49 -0
- package/dist/NotificationBadge.js.map +1 -0
- package/dist/NotificationBadge.native.d.ts +25 -0
- package/dist/NotificationBadge.native.d.ts.map +1 -0
- package/dist/NotificationBadge.native.js +41 -0
- package/dist/NotificationBadge.native.js.map +1 -0
- package/dist/PageShell.d.ts +24 -0
- package/dist/PageShell.d.ts.map +1 -0
- package/dist/PageShell.js +24 -0
- package/dist/PageShell.js.map +1 -0
- package/dist/PageShell.native.d.ts +21 -0
- package/dist/PageShell.native.d.ts.map +1 -0
- package/dist/PageShell.native.js +19 -0
- package/dist/PageShell.native.js.map +1 -0
- package/dist/Pagination.d.ts +53 -0
- package/dist/Pagination.d.ts.map +1 -0
- package/dist/Pagination.js +79 -0
- package/dist/Pagination.js.map +1 -0
- package/dist/Pagination.native.d.ts +48 -0
- package/dist/Pagination.native.d.ts.map +1 -0
- package/dist/Pagination.native.js +55 -0
- package/dist/Pagination.native.js.map +1 -0
- package/dist/Popover.d.ts +57 -0
- package/dist/Popover.d.ts.map +1 -0
- package/dist/Popover.js +71 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.native.d.ts +48 -0
- package/dist/Popover.native.d.ts.map +1 -0
- package/dist/Popover.native.js +65 -0
- package/dist/Popover.native.js.map +1 -0
- package/dist/Popper.d.ts +54 -0
- package/dist/Popper.d.ts.map +1 -0
- package/dist/Popper.js +219 -0
- package/dist/Popper.js.map +1 -0
- package/dist/Progress.d.ts +79 -0
- package/dist/Progress.d.ts.map +1 -0
- package/dist/Progress.js +110 -0
- package/dist/Progress.js.map +1 -0
- package/dist/Progress.native.d.ts +42 -0
- package/dist/Progress.native.d.ts.map +1 -0
- package/dist/Progress.native.js +91 -0
- package/dist/Progress.native.js.map +1 -0
- package/dist/ProgressCircle.d.ts +69 -0
- package/dist/ProgressCircle.d.ts.map +1 -0
- package/dist/ProgressCircle.js +78 -0
- package/dist/ProgressCircle.js.map +1 -0
- package/dist/RadioCardGroup.d.ts +26 -0
- package/dist/RadioCardGroup.d.ts.map +1 -0
- package/dist/RadioCardGroup.js +26 -0
- package/dist/RadioCardGroup.js.map +1 -0
- package/dist/RadioGroup.d.ts +35 -0
- package/dist/RadioGroup.d.ts.map +1 -0
- package/dist/RadioGroup.js +68 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioGroup.native.d.ts +33 -0
- package/dist/RadioGroup.native.d.ts.map +1 -0
- package/dist/RadioGroup.native.js +55 -0
- package/dist/RadioGroup.native.js.map +1 -0
- package/dist/Resizable.d.ts +32 -0
- package/dist/Resizable.d.ts.map +1 -0
- package/dist/Resizable.js +31 -0
- package/dist/Resizable.js.map +1 -0
- package/dist/Resizable.native.d.ts +32 -0
- package/dist/Resizable.native.d.ts.map +1 -0
- package/dist/Resizable.native.js +23 -0
- package/dist/Resizable.native.js.map +1 -0
- package/dist/RichTextEditor.d.ts +38 -0
- package/dist/RichTextEditor.d.ts.map +1 -0
- package/dist/RichTextEditor.js +218 -0
- package/dist/RichTextEditor.js.map +1 -0
- package/dist/ScrollArea.d.ts +4 -0
- package/dist/ScrollArea.d.ts.map +1 -0
- package/dist/ScrollArea.js +26 -0
- package/dist/ScrollArea.js.map +1 -0
- package/dist/ScrollArea.native.d.ts +19 -0
- package/dist/ScrollArea.native.d.ts.map +1 -0
- package/dist/ScrollArea.native.js +19 -0
- package/dist/ScrollArea.native.js.map +1 -0
- package/dist/SearchField.d.ts +43 -0
- package/dist/SearchField.d.ts.map +1 -0
- package/dist/SearchField.js +34 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.native.d.ts +31 -0
- package/dist/SearchField.native.d.ts.map +1 -0
- package/dist/SearchField.native.js +30 -0
- package/dist/SearchField.native.js.map +1 -0
- package/dist/SectionHeader.d.ts +58 -0
- package/dist/SectionHeader.d.ts.map +1 -0
- package/dist/SectionHeader.js +95 -0
- package/dist/SectionHeader.js.map +1 -0
- package/dist/SectionHeader.native.d.ts +45 -0
- package/dist/SectionHeader.native.d.ts.map +1 -0
- package/dist/SectionHeader.native.js +92 -0
- package/dist/SectionHeader.native.js.map +1 -0
- package/dist/Select.d.ts +78 -0
- package/dist/Select.d.ts.map +1 -0
- package/dist/Select.js +310 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.native.d.ts +53 -0
- package/dist/Select.native.d.ts.map +1 -0
- package/dist/Select.native.js +86 -0
- package/dist/Select.native.js.map +1 -0
- package/dist/Separator.d.ts +20 -0
- package/dist/Separator.d.ts.map +1 -0
- package/dist/Separator.js +20 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Separator.native.d.ts +8 -0
- package/dist/Separator.native.d.ts.map +1 -0
- package/dist/Separator.native.js +17 -0
- package/dist/Separator.native.js.map +1 -0
- package/dist/Sheet.d.ts +54 -0
- package/dist/Sheet.d.ts.map +1 -0
- package/dist/Sheet.js +191 -0
- package/dist/Sheet.js.map +1 -0
- package/dist/Sheet.native.d.ts +55 -0
- package/dist/Sheet.native.d.ts.map +1 -0
- package/dist/Sheet.native.js +112 -0
- package/dist/Sheet.native.js.map +1 -0
- package/dist/Sidebar.d.ts +131 -0
- package/dist/Sidebar.d.ts.map +1 -0
- package/dist/Sidebar.js +328 -0
- package/dist/Sidebar.js.map +1 -0
- package/dist/Skeleton.d.ts +14 -0
- package/dist/Skeleton.d.ts.map +1 -0
- package/dist/Skeleton.js +17 -0
- package/dist/Skeleton.js.map +1 -0
- package/dist/Skeleton.native.d.ts +6 -0
- package/dist/Skeleton.native.d.ts.map +1 -0
- package/dist/Skeleton.native.js +26 -0
- package/dist/Skeleton.native.js.map +1 -0
- package/dist/Slider.d.ts +63 -0
- package/dist/Slider.d.ts.map +1 -0
- package/dist/Slider.js +109 -0
- package/dist/Slider.js.map +1 -0
- package/dist/Slider.native.d.ts +38 -0
- package/dist/Slider.native.d.ts.map +1 -0
- package/dist/Slider.native.js +18 -0
- package/dist/Slider.native.js.map +1 -0
- package/dist/SortableList.d.ts +26 -0
- package/dist/SortableList.d.ts.map +1 -0
- package/dist/SortableList.js +44 -0
- package/dist/SortableList.js.map +1 -0
- package/dist/SparkChart.d.ts +34 -0
- package/dist/SparkChart.d.ts.map +1 -0
- package/dist/SparkChart.js +55 -0
- package/dist/SparkChart.js.map +1 -0
- package/dist/StatCard.d.ts +35 -0
- package/dist/StatCard.d.ts.map +1 -0
- package/dist/StatCard.js +37 -0
- package/dist/StatCard.js.map +1 -0
- package/dist/StatCard.native.d.ts +28 -0
- package/dist/StatCard.native.d.ts.map +1 -0
- package/dist/StatCard.native.js +31 -0
- package/dist/StatCard.native.js.map +1 -0
- package/dist/StatusBadge.d.ts +23 -0
- package/dist/StatusBadge.d.ts.map +1 -0
- package/dist/StatusBadge.js +33 -0
- package/dist/StatusBadge.js.map +1 -0
- package/dist/StatusBadge.native.d.ts +21 -0
- package/dist/StatusBadge.native.d.ts.map +1 -0
- package/dist/StatusBadge.native.js +37 -0
- package/dist/StatusBadge.native.js.map +1 -0
- package/dist/Switch.d.ts +31 -0
- package/dist/Switch.d.ts.map +1 -0
- package/dist/Switch.js +46 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Switch.native.d.ts +16 -0
- package/dist/Switch.native.d.ts.map +1 -0
- package/dist/Switch.native.js +41 -0
- package/dist/Switch.native.js.map +1 -0
- package/dist/TabNavigation.d.ts +49 -0
- package/dist/TabNavigation.d.ts.map +1 -0
- package/dist/TabNavigation.js +121 -0
- package/dist/TabNavigation.js.map +1 -0
- package/dist/Table.d.ts +54 -0
- package/dist/Table.d.ts.map +1 -0
- package/dist/Table.js +96 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.native.d.ts +37 -0
- package/dist/Table.native.d.ts.map +1 -0
- package/dist/Table.native.js +37 -0
- package/dist/Table.native.js.map +1 -0
- package/dist/Tabs.d.ts +45 -0
- package/dist/Tabs.d.ts.map +1 -0
- package/dist/Tabs.js +94 -0
- package/dist/Tabs.js.map +1 -0
- package/dist/Tabs.native.d.ts +47 -0
- package/dist/Tabs.native.d.ts.map +1 -0
- package/dist/Tabs.native.js +57 -0
- package/dist/Tabs.native.js.map +1 -0
- package/dist/Tag.d.ts +24 -0
- package/dist/Tag.d.ts.map +1 -0
- package/dist/Tag.js +41 -0
- package/dist/Tag.js.map +1 -0
- package/dist/Tag.native.d.ts +23 -0
- package/dist/Tag.native.d.ts.map +1 -0
- package/dist/Tag.native.js +55 -0
- package/dist/Tag.native.js.map +1 -0
- package/dist/Text.d.ts +26 -0
- package/dist/Text.d.ts.map +1 -0
- package/dist/Text.js +63 -0
- package/dist/Text.js.map +1 -0
- package/dist/Text.native.d.ts +18 -0
- package/dist/Text.native.d.ts.map +1 -0
- package/dist/Text.native.js +58 -0
- package/dist/Text.native.js.map +1 -0
- package/dist/Textarea.d.ts +23 -0
- package/dist/Textarea.d.ts.map +1 -0
- package/dist/Textarea.js +39 -0
- package/dist/Textarea.js.map +1 -0
- package/dist/Textarea.native.d.ts +16 -0
- package/dist/Textarea.native.d.ts.map +1 -0
- package/dist/Textarea.native.js +30 -0
- package/dist/Textarea.native.js.map +1 -0
- package/dist/TiptapEditor.d.ts +24 -0
- package/dist/TiptapEditor.d.ts.map +1 -0
- package/dist/TiptapEditor.js +84 -0
- package/dist/TiptapEditor.js.map +1 -0
- package/dist/TitleBar.d.ts +31 -0
- package/dist/TitleBar.d.ts.map +1 -0
- package/dist/TitleBar.js +27 -0
- package/dist/TitleBar.js.map +1 -0
- package/dist/TitleBar.native.d.ts +19 -0
- package/dist/TitleBar.native.d.ts.map +1 -0
- package/dist/TitleBar.native.js +16 -0
- package/dist/TitleBar.native.js.map +1 -0
- package/dist/Toast.d.ts +72 -0
- package/dist/Toast.d.ts.map +1 -0
- package/dist/Toast.js +194 -0
- package/dist/Toast.js.map +1 -0
- package/dist/Toast.native.d.ts +65 -0
- package/dist/Toast.native.d.ts.map +1 -0
- package/dist/Toast.native.js +182 -0
- package/dist/Toast.native.js.map +1 -0
- package/dist/Toggle.d.ts +46 -0
- package/dist/Toggle.d.ts.map +1 -0
- package/dist/Toggle.js +70 -0
- package/dist/Toggle.js.map +1 -0
- package/dist/Toggle.native.d.ts +42 -0
- package/dist/Toggle.native.d.ts.map +1 -0
- package/dist/Toggle.native.js +56 -0
- package/dist/Toggle.native.js.map +1 -0
- package/dist/Tooltip.d.ts +32 -0
- package/dist/Tooltip.d.ts.map +1 -0
- package/dist/Tooltip.js +43 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.native.d.ts +25 -0
- package/dist/Tooltip.native.d.ts.map +1 -0
- package/dist/Tooltip.native.js +25 -0
- package/dist/Tooltip.native.js.map +1 -0
- package/dist/TopBar.d.ts +105 -0
- package/dist/TopBar.d.ts.map +1 -0
- package/dist/TopBar.js +90 -0
- package/dist/TopBar.js.map +1 -0
- package/dist/TopBar.native.d.ts +67 -0
- package/dist/TopBar.native.d.ts.map +1 -0
- package/dist/TopBar.native.js +41 -0
- package/dist/TopBar.native.js.map +1 -0
- package/dist/Tracker.d.ts +44 -0
- package/dist/Tracker.d.ts.map +1 -0
- package/dist/Tracker.js +92 -0
- package/dist/Tracker.js.map +1 -0
- package/dist/TransferList.d.ts +51 -0
- package/dist/TransferList.d.ts.map +1 -0
- package/dist/TransferList.js +107 -0
- package/dist/TransferList.js.map +1 -0
- package/dist/TransferList.native.d.ts +14 -0
- package/dist/TransferList.native.d.ts.map +1 -0
- package/dist/TransferList.native.js +57 -0
- package/dist/TransferList.native.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/cn.d.ts +7 -0
- package/dist/internal/cn.d.ts.map +1 -0
- package/dist/internal/cn.js +30 -0
- package/dist/internal/cn.js.map +1 -0
- package/package.json +499 -0
- package/src/AccessLevelGroup.native.tsx +103 -0
- package/src/AccessLevelGroup.tsx +103 -0
- package/src/Accordion.native.tsx +199 -0
- package/src/Accordion.tsx +279 -0
- package/src/Alert.native.tsx +100 -0
- package/src/Alert.tsx +101 -0
- package/src/AlertDialog.native.tsx +189 -0
- package/src/AlertDialog.tsx +194 -0
- package/src/AspectRatio.native.tsx +28 -0
- package/src/AspectRatio.tsx +35 -0
- package/src/Avatar.native.tsx +142 -0
- package/src/Avatar.tsx +155 -0
- package/src/AvatarGroup.native.tsx +81 -0
- package/src/AvatarGroup.tsx +114 -0
- package/src/Badge.native.tsx +85 -0
- package/src/Badge.tsx +93 -0
- package/src/Banner.native.tsx +77 -0
- package/src/Banner.tsx +95 -0
- package/src/BarList.tsx +102 -0
- package/src/Breadcrumb.native.tsx +238 -0
- package/src/Breadcrumb.tsx +258 -0
- package/src/Button.native.tsx +123 -0
- package/src/Button.tsx +153 -0
- package/src/Calendar.native.tsx +28 -0
- package/src/Calendar.tsx +211 -0
- package/src/Card.native.tsx +82 -0
- package/src/Card.tsx +94 -0
- package/src/Carousel.native.tsx +224 -0
- package/src/Carousel.tsx +292 -0
- package/src/CategoryBar.tsx +85 -0
- package/src/Chart.tsx +467 -0
- package/src/Checkbox.native.tsx +69 -0
- package/src/Checkbox.tsx +108 -0
- package/src/CheckboxGrid.native.tsx +160 -0
- package/src/CheckboxGrid.tsx +262 -0
- package/src/Collapsible.native.tsx +240 -0
- package/src/Collapsible.tsx +241 -0
- package/src/Combobox.native.tsx +171 -0
- package/src/Combobox.tsx +272 -0
- package/src/Command.native.tsx +71 -0
- package/src/Command.tsx +203 -0
- package/src/ContextMenu.native.tsx +313 -0
- package/src/ContextMenu.tsx +238 -0
- package/src/DataTable.native.tsx +70 -0
- package/src/DataTable.tsx +989 -0
- package/src/DatePicker.native.tsx +46 -0
- package/src/DatePicker.tsx +357 -0
- package/src/Dialog.native.tsx +181 -0
- package/src/Dialog.tsx +224 -0
- package/src/Drawer.native.tsx +134 -0
- package/src/Drawer.tsx +119 -0
- package/src/DropdownMenu.native.tsx +258 -0
- package/src/DropdownMenu.tsx +387 -0
- package/src/Dropzone.tsx +95 -0
- package/src/EmptyState.native.tsx +43 -0
- package/src/EmptyState.tsx +52 -0
- package/src/Form.native.tsx +94 -0
- package/src/Form.tsx +1324 -0
- package/src/HoverCard.native.tsx +63 -0
- package/src/HoverCard.tsx +181 -0
- package/src/IconSidebar.native.tsx +94 -0
- package/src/IconSidebar.tsx +448 -0
- package/src/Input.native.tsx +99 -0
- package/src/Input.tsx +132 -0
- package/src/InputOTP.native.tsx +154 -0
- package/src/InputOTP.tsx +119 -0
- package/src/Label.native.tsx +55 -0
- package/src/Label.tsx +60 -0
- package/src/Link.native.tsx +89 -0
- package/src/Link.tsx +85 -0
- package/src/Logo.native.tsx +114 -0
- package/src/Logo.tsx +153 -0
- package/src/MainSidebar.native.tsx +8 -0
- package/src/MainSidebar.tsx +10 -0
- package/src/Menubar.tsx +485 -0
- package/src/NavigationMenu.native.tsx +136 -0
- package/src/NavigationMenu.tsx +180 -0
- package/src/NotificationBadge.native.tsx +80 -0
- package/src/NotificationBadge.tsx +91 -0
- package/src/PageShell.native.tsx +43 -0
- package/src/PageShell.tsx +50 -0
- package/src/Pagination.native.tsx +217 -0
- package/src/Pagination.tsx +250 -0
- package/src/Popover.native.tsx +139 -0
- package/src/Popover.tsx +175 -0
- package/src/Popper.tsx +399 -0
- package/src/Progress.native.tsx +197 -0
- package/src/Progress.tsx +286 -0
- package/src/ProgressCircle.tsx +200 -0
- package/src/RadioCardGroup.tsx +97 -0
- package/src/RadioGroup.native.tsx +153 -0
- package/src/RadioGroup.tsx +201 -0
- package/src/Resizable.native.tsx +76 -0
- package/src/Resizable.tsx +88 -0
- package/src/RichTextEditor.tsx +513 -0
- package/src/ScrollArea.native.tsx +36 -0
- package/src/ScrollArea.tsx +62 -0
- package/src/SearchField.native.tsx +104 -0
- package/src/SearchField.tsx +136 -0
- package/src/SectionHeader.native.tsx +226 -0
- package/src/SectionHeader.tsx +250 -0
- package/src/Select.native.tsx +299 -0
- package/src/Select.tsx +710 -0
- package/src/Separator.native.tsx +38 -0
- package/src/Separator.tsx +43 -0
- package/src/Sheet.native.tsx +233 -0
- package/src/Sheet.tsx +329 -0
- package/src/Sidebar.tsx +956 -0
- package/src/Skeleton.native.tsx +47 -0
- package/src/Skeleton.tsx +29 -0
- package/src/Slider.native.tsx +64 -0
- package/src/Slider.tsx +284 -0
- package/src/SortableList.tsx +158 -0
- package/src/SparkChart.tsx +143 -0
- package/src/StatCard.native.tsx +64 -0
- package/src/StatCard.tsx +75 -0
- package/src/StatusBadge.native.tsx +57 -0
- package/src/StatusBadge.tsx +52 -0
- package/src/Switch.native.tsx +78 -0
- package/src/Switch.tsx +94 -0
- package/src/TabNavigation.tsx +329 -0
- package/src/Table.native.tsx +183 -0
- package/src/Table.tsx +260 -0
- package/src/Tabs.native.tsx +139 -0
- package/src/Tabs.tsx +216 -0
- package/src/Tag.native.tsx +87 -0
- package/src/Tag.tsx +93 -0
- package/src/Text.native.tsx +95 -0
- package/src/Text.tsx +93 -0
- package/src/Textarea.native.tsx +64 -0
- package/src/Textarea.tsx +66 -0
- package/src/TitleBar.native.tsx +46 -0
- package/src/TitleBar.tsx +64 -0
- package/src/Toast.native.tsx +366 -0
- package/src/Toast.tsx +408 -0
- package/src/Toggle.native.tsx +162 -0
- package/src/Toggle.tsx +169 -0
- package/src/Tooltip.native.tsx +62 -0
- package/src/Tooltip.tsx +88 -0
- package/src/TopBar.native.tsx +223 -0
- package/src/TopBar.tsx +436 -0
- package/src/Tracker.tsx +244 -0
- package/src/TransferList.native.tsx +180 -0
- package/src/TransferList.tsx +297 -0
- package/src/globals.d.ts +1 -0
- package/src/index.ts +502 -0
- package/src/internal/cn.ts +31 -0
package/README.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# @mihcm/ui
|
|
2
|
+
|
|
3
|
+
Universal MiHCM UI primitives for React, Next.js, and React Native.
|
|
4
|
+
|
|
5
|
+
This is the primary component package. It ships typed, tokenized primitives with per-component exports so applications can import only what they use.
|
|
6
|
+
|
|
7
|
+
## Current release
|
|
8
|
+
|
|
9
|
+
Current package version: **0.14.1**.
|
|
10
|
+
|
|
11
|
+
This release removes the experimental editor surface, keeps rich text on `RichTextEditor`, fixes full-width DatePicker popup sizing, and stabilizes Tracker weighted/timeline layouts. See `CHANGELOG.md` and the public changelog at `https://designsystem.mihcm.com/help/changelog`.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm add @mihcm/ui @mihcm/theme @mihcm/tokens
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
For web apps, also import the theme CSS once at the app root:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import '@mihcm/theme/globals.css';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
Prefer per-component imports for tree-shaking:
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { Button } from '@mihcm/ui/Button';
|
|
31
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@mihcm/ui/Card';
|
|
32
|
+
|
|
33
|
+
export function Example() {
|
|
34
|
+
return (
|
|
35
|
+
<Card>
|
|
36
|
+
<CardHeader>
|
|
37
|
+
<CardTitle>Employee profile</CardTitle>
|
|
38
|
+
</CardHeader>
|
|
39
|
+
<CardContent>
|
|
40
|
+
<Button>Save changes</Button>
|
|
41
|
+
</CardContent>
|
|
42
|
+
</Card>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Every primitive accepts `className` for Tailwind/NativeWind overrides. Use MiHCM semantic tokens and standard Tailwind utilities. Do not hardcode raw colors, inline styles, or local CSS unless a component explicitly documents that escape hatch.
|
|
48
|
+
|
|
49
|
+
Variant styling uses proven helpers rather than handwritten class maps: `class-variance-authority` for simple single-root variants, and `tailwind-variants` when a component needs multiple styled slots or compound variants.
|
|
50
|
+
|
|
51
|
+
## What is included
|
|
52
|
+
|
|
53
|
+
- Form controls: `Input`, `Textarea`, `SearchField`, `Select`, `Combobox`, `Checkbox`, `CheckboxGrid`, `RadioGroup`, `Switch`, `Slider`, `DatePicker`, `Calendar`, `InputOTP`.
|
|
54
|
+
- Navigation and layout: `TopBar`, `MainSidebar`, `Sidebar`, `PageShell`, `TitleBar`, `NavigationMenu`, `Breadcrumb`, `Pagination`, `Tabs`, `Link`, `ScrollArea`, `Resizable`.
|
|
55
|
+
- Overlays: `Dialog`, `AlertDialog`, `Sheet`, `Drawer`, `Popover`, `Popper`, `Tooltip`, `HoverCard`, `DropdownMenu`, `ContextMenu`, `Menubar`, `Toast`.
|
|
56
|
+
- Data and visualization: `Table`, `DataTable`, `Chart`, `Progress`, `StatCard`, `StatusBadge`, `NotificationBadge`, `TransferList`.
|
|
57
|
+
- Content and display: `Text`, `Button`, `IconButton`, `Card`, `Badge`, `Banner`, `Alert`, `Avatar`, `AvatarGroup`, `Logo`, `Skeleton`, `Separator`, `AspectRatio`, `EmptyState`, `SectionHeader`, `RichTextEditor`, `Tag`, `Toggle`, `Command`, `Carousel`.
|
|
58
|
+
|
|
59
|
+
## Recent additions and fixes
|
|
60
|
+
|
|
61
|
+
- Added a semantic `Link` primitive for real navigation, with inline, nav, standalone, button-like, muted, foreground, and accent variants.
|
|
62
|
+
- Added semantic `Text as="h1" | "h2" | "p" | ...` rendering so docs, apps, and AI-generated text preserve the actual document outline instead of styling generic spans.
|
|
63
|
+
- Made `Button` default to `type="button"` while still supporting explicit `type="submit"` and `type="reset"` for form actions.
|
|
64
|
+
- Added tokenized `SectionHeader` spacing, surface, border, radius, shadow, and slot class override props for contained section layouts.
|
|
65
|
+
- Added larger `Logo` size presets and brand-aware scaling for approved logo assets.
|
|
66
|
+
- Stabilized `Sidebar` mobile behavior with explicit mobile Sheet state, configurable mobile widths, and side-aware right/left trigger, rail, divider, and inset handling.
|
|
67
|
+
- Added `Popper` and wired `Popover` to share the same positioning contract.
|
|
68
|
+
- Expanded `TopBar`, `MainSidebar`, `Menubar`, `HoverCard`, `Collapsible`, `DataTable`, `TransferList`, `Breadcrumb`, `Toast`, `Progress`, and `Slider` customizability.
|
|
69
|
+
- Upgraded `Calendar` to `@daypicker/react` v10 and documented the full DayPicker passthrough surface.
|
|
70
|
+
- Added React Select-powered advanced selects while keeping the native-parity composable `Select`.
|
|
71
|
+
- Normalized form field surfaces across Input, Textarea, SearchField, Select, React Select, Combobox, and DatePicker with reduced `shadow-mi-input` elevation.
|
|
72
|
+
- Added `tailwind-variants` as an approved dependency for slot-heavy and compound component styling; keep it installed when copied or local primitives import it.
|
|
73
|
+
- Fixed DatePicker and Calendar popup UX: compact triggers, icon-only trigger behavior, stable popover placement, dropdown month/year controls, aligned time inputs, and range popovers that stay open unless explicitly configured to close.
|
|
74
|
+
- Fixed `DatePicker triggerWidth="full"` so responsive fields span the grid without stretching the calendar popup.
|
|
75
|
+
- Fixed Tracker weighted segment sizing and timeline end caps by applying layout to the direct list item wrapper.
|
|
76
|
+
- Removed the experimental editor export and dependency set; use `RichTextEditor` for rich text.
|
|
77
|
+
- Fixed known UX regressions around tabs resizing, Select placeholder/label behavior, tooltip sizing, sheet exit animation, toast duplication, avatar group rings, and right-side sidebar placement.
|
|
78
|
+
|
|
79
|
+
## Client and server compatibility
|
|
80
|
+
|
|
81
|
+
Components that use browser state, portals, focus management, dates, or event handlers must be rendered from a Client Component in Next.js. Static wrappers and plain display components can be composed from Server Components when they do not receive event handlers.
|
|
82
|
+
|
|
83
|
+
Practical rule:
|
|
84
|
+
|
|
85
|
+
```tsx
|
|
86
|
+
'use client';
|
|
87
|
+
|
|
88
|
+
import { Select } from '@mihcm/ui/Select';
|
|
89
|
+
|
|
90
|
+
export function ClientFilter() {
|
|
91
|
+
return <Select placeholder="Choose team" />;
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
When in doubt, wrap interactive examples in a small client boundary and keep data loading in the server parent.
|
|
96
|
+
|
|
97
|
+
## Accessibility contract
|
|
98
|
+
|
|
99
|
+
- Keyboard access and visible focus states are required.
|
|
100
|
+
- Touch targets should stay at or above 44px where the component is interactive.
|
|
101
|
+
- Components must use semantic roles/attributes from the underlying primitive or native element.
|
|
102
|
+
- Use `Link` for `href` navigation and `Button` for actions. In forms, submit/reset buttons must set the explicit `type`.
|
|
103
|
+
- Inputs must have a visible label or an accessible name, and helper/error text must be connected with `aria-describedby` where applicable.
|
|
104
|
+
- Headings must render as headings, either with native `h1`-`h6` tags or `Text as="h1"` through `Text as="h6"`.
|
|
105
|
+
- Color changes must use tokens with WCAG AA contrast.
|
|
106
|
+
- Loading, disabled, error, empty, and selected states must remain readable in light and dark mode.
|
|
107
|
+
|
|
108
|
+
## Security contract
|
|
109
|
+
|
|
110
|
+
- Do not render untrusted HTML through component props.
|
|
111
|
+
- Do not pass model-generated component paths or imports into this package.
|
|
112
|
+
- Do not put secrets in props, class names, logs, Storybook args, screenshots, or docs examples.
|
|
113
|
+
- AI-rendered usage must go through `@mihcm/ai-ui` Zod schemas first.
|
|
114
|
+
|
|
115
|
+
## Maintainer checklist
|
|
116
|
+
|
|
117
|
+
When adding or changing a primitive:
|
|
118
|
+
|
|
119
|
+
1. Update the component source and native parity file when applicable.
|
|
120
|
+
2. Add or update Storybook stories and focused regression tests.
|
|
121
|
+
3. Update `src/apps/docs/content/components/<component>/`.
|
|
122
|
+
4. Update `docs/components/<Component>.md` and `src/apps/docs/lib/registry.ts`.
|
|
123
|
+
5. If the component can be AI-rendered, update `@mihcm/ai-ui` schemas and renderer; otherwise add an explicit coverage decision.
|
|
124
|
+
6. Add a changeset before publishing.
|
|
125
|
+
|
|
126
|
+
## Build
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
cd src
|
|
130
|
+
pnpm -F @mihcm/ui build
|
|
131
|
+
pnpm -F @mihcm/ui typecheck
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Related docs
|
|
135
|
+
|
|
136
|
+
- `docs/components/` contains per-component wiki pages.
|
|
137
|
+
- `docs/CONVENTIONS.md` describes design and implementation rules.
|
|
138
|
+
- `docs/security-playbook.md` contains library and AI-UI security rules.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AccessLevelGroup (web variant — React DOM).
|
|
3
|
+
*
|
|
4
|
+
* 4-state segmented button used by the MiHCM Security prototype to
|
|
5
|
+
* set per-module access: None / View / Edit / Full. Each option has
|
|
6
|
+
* its own brand color when active (navy for Full, orange for Edit,
|
|
7
|
+
* muted blue for View, neutral for None).
|
|
8
|
+
*
|
|
9
|
+
* Controlled — pass `value` + `onValueChange`. Pass `options` to
|
|
10
|
+
* override the levels, but most consumers should use the default.
|
|
11
|
+
*
|
|
12
|
+
* Renders as a `role="radiogroup"` with each level as a
|
|
13
|
+
* `role="radio"` button.
|
|
14
|
+
*
|
|
15
|
+
* Wiki: docs/components/AccessLevelGroup.md
|
|
16
|
+
*/
|
|
17
|
+
import { type HTMLAttributes } from 'react';
|
|
18
|
+
export type AccessLevel = 'none' | 'view' | 'edit' | 'full';
|
|
19
|
+
export interface AccessLevelOption {
|
|
20
|
+
value: AccessLevel;
|
|
21
|
+
label: string;
|
|
22
|
+
/** Tone applied when this option is active. */
|
|
23
|
+
tone: 'neutral' | 'view' | 'accent' | 'primary';
|
|
24
|
+
}
|
|
25
|
+
export declare const ACCESS_LEVELS: readonly AccessLevelOption[];
|
|
26
|
+
export interface AccessLevelGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
27
|
+
value: AccessLevel;
|
|
28
|
+
onValueChange: (value: AccessLevel) => void;
|
|
29
|
+
/** Override the 4 default levels. */
|
|
30
|
+
options?: readonly AccessLevelOption[];
|
|
31
|
+
/** Disable all buttons. */
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
/** Accessible label for the group. */
|
|
34
|
+
'aria-label'?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare const AccessLevelGroup: import("react").ForwardRefExoticComponent<AccessLevelGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
37
|
+
//# sourceMappingURL=AccessLevelGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessLevelGroup.d.ts","sourceRoot":"","sources":["../src/AccessLevelGroup.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACjD;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EAKrD,CAAC;AASF,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,qCAAqC;IACrC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,kHA8C5B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* AccessLevelGroup (web variant — React DOM).
|
|
5
|
+
*
|
|
6
|
+
* 4-state segmented button used by the MiHCM Security prototype to
|
|
7
|
+
* set per-module access: None / View / Edit / Full. Each option has
|
|
8
|
+
* its own brand color when active (navy for Full, orange for Edit,
|
|
9
|
+
* muted blue for View, neutral for None).
|
|
10
|
+
*
|
|
11
|
+
* Controlled — pass `value` + `onValueChange`. Pass `options` to
|
|
12
|
+
* override the levels, but most consumers should use the default.
|
|
13
|
+
*
|
|
14
|
+
* Renders as a `role="radiogroup"` with each level as a
|
|
15
|
+
* `role="radio"` button.
|
|
16
|
+
*
|
|
17
|
+
* Wiki: docs/components/AccessLevelGroup.md
|
|
18
|
+
*/
|
|
19
|
+
import { forwardRef } from 'react';
|
|
20
|
+
import { cn } from './internal/cn.js';
|
|
21
|
+
export const ACCESS_LEVELS = [
|
|
22
|
+
{ value: 'none', label: 'None', tone: 'neutral' },
|
|
23
|
+
{ value: 'view', label: 'View', tone: 'view' },
|
|
24
|
+
{ value: 'edit', label: 'Edit', tone: 'accent' },
|
|
25
|
+
{ value: 'full', label: 'Full Access', tone: 'primary' },
|
|
26
|
+
];
|
|
27
|
+
const ACTIVE_CLASSES = {
|
|
28
|
+
neutral: 'bg-brand-neutral-66 text-brand-neutral-371',
|
|
29
|
+
view: 'bg-primary-50 text-secondary-foreground dark:bg-primary-950',
|
|
30
|
+
accent: 'bg-accent-50 text-accent-600',
|
|
31
|
+
primary: 'bg-primary text-primary-foreground',
|
|
32
|
+
};
|
|
33
|
+
export const AccessLevelGroup = forwardRef(function AccessLevelGroup({ className, value, onValueChange, options = ACCESS_LEVELS, disabled = false, 'aria-label': ariaLabel = 'Access level', ...props }, ref) {
|
|
34
|
+
return (_jsx("div", { ref: ref, role: "radiogroup", "aria-label": ariaLabel, className: cn('inline-flex flex-wrap items-center gap-1', className), ...props, children: options.map((opt) => {
|
|
35
|
+
const active = opt.value === value;
|
|
36
|
+
return (_jsx("button", { type: "button", role: "radio", "aria-checked": active, disabled: disabled, onClick: () => onValueChange(opt.value), className: cn('rounded-md border border-secondary bg-background px-2.5 py-1 text-label font-medium leading-none transition-colors duration-150', 'text-muted-foreground hover:border-brand-neutral-179 hover:text-foreground', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', 'disabled:cursor-not-allowed disabled:opacity-50', active && 'font-semibold border-transparent ' + ACTIVE_CLASSES[opt.tone]), children: opt.label }, opt.value));
|
|
37
|
+
}) }));
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=AccessLevelGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessLevelGroup.js","sourceRoot":"","sources":["../src/AccessLevelGroup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAuB,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAWtC,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IACjD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;CACzD,CAAC;AAEF,MAAM,cAAc,GAA8C;IAChE,OAAO,EAAE,4CAA4C;IACrD,IAAI,EAAE,6DAA6D;IACnE,MAAM,EAAE,8BAA8B;IACtC,OAAO,EAAE,oCAAoC;CAC9C,CAAC;AAcF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,SAAS,gBAAgB,CACvB,EACE,SAAS,EACT,KAAK,EACL,aAAa,EACb,OAAO,GAAG,aAAa,EACvB,QAAQ,GAAG,KAAK,EAChB,YAAY,EAAE,SAAS,GAAG,cAAc,EACxC,GAAG,KAAK,EACT,EACD,GAAG;IAEH,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,YAAY,gBACL,SAAS,EACrB,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,KAChE,KAAK,YAER,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;YACnC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,MAAM,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EACvC,SAAS,EAAE,EAAE,CACX,iIAAiI,EACjI,4EAA4E,EAC5E,qGAAqG,EACrG,iDAAiD,EACjD,MAAM,IAAI,mCAAmC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CACzE,YAEA,GAAG,CAAC,KAAK,IAdL,GAAG,CAAC,KAAK,CAeP,CACV,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { View, type ViewProps } from 'react-native';
|
|
2
|
+
export type AccessLevel = 'none' | 'view' | 'edit' | 'full';
|
|
3
|
+
export interface AccessLevelOption {
|
|
4
|
+
value: AccessLevel;
|
|
5
|
+
label: string;
|
|
6
|
+
tone: 'neutral' | 'view' | 'accent' | 'primary';
|
|
7
|
+
}
|
|
8
|
+
export declare const ACCESS_LEVELS: readonly AccessLevelOption[];
|
|
9
|
+
export interface AccessLevelGroupProps extends Omit<ViewProps, 'style'> {
|
|
10
|
+
value: AccessLevel;
|
|
11
|
+
onValueChange: (value: AccessLevel) => void;
|
|
12
|
+
options?: readonly AccessLevelOption[];
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
accessibilityLabel?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const AccessLevelGroup: import("react").ForwardRefExoticComponent<AccessLevelGroupProps & import("react").RefAttributes<View>>;
|
|
18
|
+
//# sourceMappingURL=AccessLevelGroup.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessLevelGroup.native.d.ts","sourceRoot":"","sources":["../src/AccessLevelGroup.native.tsx"],"names":[],"mappings":"AASA,OAAO,EAAmB,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACjD;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EAKrD,CAAC;AAgBF,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACrE,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,wGAoD5B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* AccessLevelGroup (React Native variant).
|
|
4
|
+
*
|
|
5
|
+
* Same prop API as the web variant. Uses Pressable + Text and the
|
|
6
|
+
* `accessibilityRole="radiogroup"` / `"radio"` pattern.
|
|
7
|
+
*
|
|
8
|
+
* Wiki: docs/components/AccessLevelGroup.md
|
|
9
|
+
*/
|
|
10
|
+
import { forwardRef } from 'react';
|
|
11
|
+
import { Pressable, Text, View } from 'react-native';
|
|
12
|
+
import { cn } from './internal/cn.js';
|
|
13
|
+
export const ACCESS_LEVELS = [
|
|
14
|
+
{ value: 'none', label: 'None', tone: 'neutral' },
|
|
15
|
+
{ value: 'view', label: 'View', tone: 'view' },
|
|
16
|
+
{ value: 'edit', label: 'Edit', tone: 'accent' },
|
|
17
|
+
{ value: 'full', label: 'Full Access', tone: 'primary' },
|
|
18
|
+
];
|
|
19
|
+
const ACTIVE_BG = {
|
|
20
|
+
neutral: 'bg-muted',
|
|
21
|
+
view: 'bg-primary-50 dark:bg-primary-950',
|
|
22
|
+
accent: 'bg-accent-50',
|
|
23
|
+
primary: 'bg-primary',
|
|
24
|
+
};
|
|
25
|
+
const ACTIVE_FG = {
|
|
26
|
+
neutral: 'text-muted-foreground',
|
|
27
|
+
view: 'text-foreground',
|
|
28
|
+
accent: 'text-accent',
|
|
29
|
+
primary: 'text-primary-foreground',
|
|
30
|
+
};
|
|
31
|
+
export const AccessLevelGroup = forwardRef(function AccessLevelGroup({ className, value, onValueChange, options = ACCESS_LEVELS, disabled = false, accessibilityLabel = 'Access level', ...props }, ref) {
|
|
32
|
+
return (_jsx(View, { ref: ref,
|
|
33
|
+
// RN doesn't have a "radiogroup" role; use "tablist" as the closest
|
|
34
|
+
// semantic and rely on individual radio roles per option.
|
|
35
|
+
accessibilityRole: "tablist", accessibilityLabel: accessibilityLabel, className: cn('flex-row flex-wrap items-center gap-1', className), ...props, children: options.map((opt) => {
|
|
36
|
+
const active = opt.value === value;
|
|
37
|
+
return (_jsx(Pressable, { accessibilityRole: "radio", accessibilityState: { selected: active, disabled }, disabled: disabled, onPress: () => onValueChange(opt.value), className: cn('rounded-md border border-border bg-card px-2.5 py-1', disabled && 'opacity-50', active && ACTIVE_BG[opt.tone]), children: _jsx(Text, { className: cn('text-label leading-none', active ? 'font-semibold ' + ACTIVE_FG[opt.tone] : 'text-muted-foreground'), children: opt.label }) }, opt.value));
|
|
38
|
+
}) }));
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=AccessLevelGroup.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessLevelGroup.native.js","sourceRoot":"","sources":["../src/AccessLevelGroup.native.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAUtC,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IACjD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;CACzD,CAAC;AAEF,MAAM,SAAS,GAA8C;IAC3D,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,SAAS,GAA8C;IAC3D,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,yBAAyB;CACnC,CAAC;AAWF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,SAAS,gBAAgB,CACvB,EACE,SAAS,EACT,KAAK,EACL,aAAa,EACb,OAAO,GAAG,aAAa,EACvB,QAAQ,GAAG,KAAK,EAChB,kBAAkB,GAAG,cAAc,EACnC,GAAG,KAAK,EACT,EACD,GAAG;IAEH,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG;QACR,oEAAoE;QACpE,0DAA0D;QAC1D,iBAAiB,EAAC,SAAS,EAC3B,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC,KAC7D,KAAK,YAER,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;YACnC,OAAO,CACL,KAAC,SAAS,IAER,iBAAiB,EAAC,OAAO,EACzB,kBAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAClD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EACvC,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,QAAQ,IAAI,YAAY,EACxB,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAC9B,YAED,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,MAAM,CAAC,CAAC,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAC1E,YAEA,GAAG,CAAC,KAAK,GACL,IAlBF,GAAG,CAAC,KAAK,CAmBJ,CACb,CAAC;QACJ,CAAC,CAAC,GACG,CACR,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accordion (web variant — React DOM).
|
|
3
|
+
*
|
|
4
|
+
* Vertically stacked collapsible sections. Four sub-components:
|
|
5
|
+
*
|
|
6
|
+
* <Accordion type="single">
|
|
7
|
+
* <AccordionItem value="item-1">
|
|
8
|
+
* <AccordionTrigger>Section one</AccordionTrigger>
|
|
9
|
+
* <AccordionContent>Content here…</AccordionContent>
|
|
10
|
+
* </AccordionItem>
|
|
11
|
+
* </Accordion>
|
|
12
|
+
*
|
|
13
|
+
* Variants:
|
|
14
|
+
* - `default` — bottom-bordered items (like Stripe / Linear FAQ)
|
|
15
|
+
* - `bordered` — each item in a rounded card with border
|
|
16
|
+
* - `flush` — no borders, minimal style, tight spacing
|
|
17
|
+
*
|
|
18
|
+
* `type="single"` allows one open section; `type="multiple"` allows
|
|
19
|
+
* any number. Height animation uses the CSS grid 0fr → 1fr trick.
|
|
20
|
+
*
|
|
21
|
+
* Wiki: docs/components/Accordion.md
|
|
22
|
+
*/
|
|
23
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
24
|
+
export type AccordionVariant = 'default' | 'bordered' | 'flush';
|
|
25
|
+
export type AccordionDuration = 'fast' | 'normal' | 'slow';
|
|
26
|
+
export interface AccordionProps extends HTMLAttributes<HTMLDivElement> {
|
|
27
|
+
/** `single` = only one open; `multiple` = any number open. */
|
|
28
|
+
type?: 'single' | 'multiple';
|
|
29
|
+
/** Visual variant. @default 'default' */
|
|
30
|
+
variant?: AccordionVariant;
|
|
31
|
+
/** Value(s) that should be open initially. */
|
|
32
|
+
defaultValue?: string | string[];
|
|
33
|
+
/** Motion speed. */
|
|
34
|
+
duration?: AccordionDuration;
|
|
35
|
+
}
|
|
36
|
+
export declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
38
|
+
/** Unique identifier for this item within the accordion. */
|
|
39
|
+
value: string;
|
|
40
|
+
/** When true, the trigger is disabled and the item cannot be toggled. */
|
|
41
|
+
disabled?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare const AccordionItem: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
44
|
+
export interface AccordionTriggerProps extends HTMLAttributes<HTMLButtonElement> {
|
|
45
|
+
children: ReactNode;
|
|
46
|
+
}
|
|
47
|
+
export declare const AccordionTrigger: import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
48
|
+
export interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
49
|
+
children: ReactNode;
|
|
50
|
+
}
|
|
51
|
+
export declare const AccordionContent: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
52
|
+
//# sourceMappingURL=Accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../src/Accordion.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AA0C3D,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,8DAA8D;IAC9D,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,yCAAyC;IACzC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,SAAS,2GA6CpB,CAAC;AAIH,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,+GA4BzB,CAAC;AAIF,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,iBAAiB,CAAC;IAC9E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,qHA+C5B,CAAC;AAIF,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,kHAsC5B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Accordion (web variant — React DOM).
|
|
5
|
+
*
|
|
6
|
+
* Vertically stacked collapsible sections. Four sub-components:
|
|
7
|
+
*
|
|
8
|
+
* <Accordion type="single">
|
|
9
|
+
* <AccordionItem value="item-1">
|
|
10
|
+
* <AccordionTrigger>Section one</AccordionTrigger>
|
|
11
|
+
* <AccordionContent>Content here…</AccordionContent>
|
|
12
|
+
* </AccordionItem>
|
|
13
|
+
* </Accordion>
|
|
14
|
+
*
|
|
15
|
+
* Variants:
|
|
16
|
+
* - `default` — bottom-bordered items (like Stripe / Linear FAQ)
|
|
17
|
+
* - `bordered` — each item in a rounded card with border
|
|
18
|
+
* - `flush` — no borders, minimal style, tight spacing
|
|
19
|
+
*
|
|
20
|
+
* `type="single"` allows one open section; `type="multiple"` allows
|
|
21
|
+
* any number. Height animation uses the CSS grid 0fr → 1fr trick.
|
|
22
|
+
*
|
|
23
|
+
* Wiki: docs/components/Accordion.md
|
|
24
|
+
*/
|
|
25
|
+
import { createContext, forwardRef, useCallback, useContext, useId, useMemo, useState, } from 'react';
|
|
26
|
+
import { cn } from './internal/cn.js';
|
|
27
|
+
const accordionDurationClasses = {
|
|
28
|
+
fast: 'duration-300',
|
|
29
|
+
normal: 'duration-500',
|
|
30
|
+
slow: 'duration-700',
|
|
31
|
+
};
|
|
32
|
+
const AccordionCtx = createContext(null);
|
|
33
|
+
function useAccordion() {
|
|
34
|
+
const ctx = useContext(AccordionCtx);
|
|
35
|
+
if (!ctx)
|
|
36
|
+
throw new Error('Accordion sub-components must be used within <Accordion>');
|
|
37
|
+
return ctx;
|
|
38
|
+
}
|
|
39
|
+
const ItemCtx = createContext(null);
|
|
40
|
+
function useItem() {
|
|
41
|
+
const ctx = useContext(ItemCtx);
|
|
42
|
+
if (!ctx)
|
|
43
|
+
throw new Error('AccordionTrigger/Content must be used within <AccordionItem>');
|
|
44
|
+
return ctx;
|
|
45
|
+
}
|
|
46
|
+
export const Accordion = forwardRef(function Accordion({ type = 'single', variant = 'default', defaultValue, duration = 'normal', className, children, ...props }, ref) {
|
|
47
|
+
const [openValues, setOpenValues] = useState(() => {
|
|
48
|
+
if (!defaultValue)
|
|
49
|
+
return new Set();
|
|
50
|
+
return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);
|
|
51
|
+
});
|
|
52
|
+
const toggle = useCallback((value) => {
|
|
53
|
+
setOpenValues((prev) => {
|
|
54
|
+
const next = new Set(prev);
|
|
55
|
+
if (next.has(value)) {
|
|
56
|
+
next.delete(value);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (type === 'single')
|
|
60
|
+
next.clear();
|
|
61
|
+
next.add(value);
|
|
62
|
+
}
|
|
63
|
+
return next;
|
|
64
|
+
});
|
|
65
|
+
}, [type]);
|
|
66
|
+
const ctx = useMemo(() => ({ openValues, toggle, variant, duration }), [duration, openValues, toggle, variant]);
|
|
67
|
+
return (_jsx(AccordionCtx.Provider, { value: ctx, children: _jsx("div", { ref: ref, className: cn('w-full', variant === 'bordered' && 'space-y-2', className), ...props, children: children }) }));
|
|
68
|
+
});
|
|
69
|
+
export const AccordionItem = forwardRef(function AccordionItem({ value, disabled = false, className, children, ...props }, ref) {
|
|
70
|
+
const { variant, openValues } = useAccordion();
|
|
71
|
+
const isOpen = openValues.has(value);
|
|
72
|
+
const id = useId();
|
|
73
|
+
const triggerId = `${id}-trigger`;
|
|
74
|
+
const contentId = `${id}-content`;
|
|
75
|
+
return (_jsx(ItemCtx.Provider, { value: { value, disabled, triggerId, contentId }, children: _jsx("div", { ref: ref, "data-disabled": disabled || undefined, "data-state": isOpen ? 'open' : 'closed', className: cn(variant === 'default' && 'border-b border-border', variant === 'bordered' &&
|
|
76
|
+
'rounded-lg border border-border bg-card transition-shadow data-[state=open]:shadow-sm', variant === 'flush' && '', className), ...props, children: children }) }));
|
|
77
|
+
});
|
|
78
|
+
export const AccordionTrigger = forwardRef(function AccordionTrigger({ className, children, ...props }, ref) {
|
|
79
|
+
const { openValues, toggle, variant } = useAccordion();
|
|
80
|
+
const { value, disabled, triggerId, contentId } = useItem();
|
|
81
|
+
const isOpen = openValues.has(value);
|
|
82
|
+
return (_jsxs("button", { ref: ref, id: triggerId, type: "button", "aria-expanded": isOpen, "aria-controls": contentId, disabled: disabled, onClick: () => toggle(value), className: cn('flex w-full items-center justify-between text-left text-sm font-medium', 'transition-colors duration-150', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', 'disabled:pointer-events-none disabled:opacity-50', variant === 'default' && 'py-4 hover:text-foreground', variant === 'bordered' && 'px-4 py-3 hover:bg-muted/50 rounded-t-lg', variant === 'flush' && 'py-2.5 hover:text-foreground', className), ...props, children: [children, _jsx("svg", { "aria-hidden": true, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: cn('h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200', isOpen && 'rotate-180'), children: _jsx("path", { d: "m6 9 6 6 6-6" }) })] }));
|
|
83
|
+
});
|
|
84
|
+
export const AccordionContent = forwardRef(function AccordionContent({ className, children, ...props }, ref) {
|
|
85
|
+
const { openValues, variant, duration } = useAccordion();
|
|
86
|
+
const { value, triggerId, contentId } = useItem();
|
|
87
|
+
const isOpen = openValues.has(value);
|
|
88
|
+
return (_jsx("div", { ref: ref, id: contentId, role: "region", "aria-labelledby": triggerId, "aria-hidden": !isOpen, inert: !isOpen ? true : undefined, className: cn('grid overflow-hidden transition-[grid-template-rows,opacity] ease-[cubic-bezier(0.16,1,0.3,1)] motion-reduce:transition-none', accordionDurationClasses[duration], isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]', isOpen ? 'opacity-100' : 'opacity-0'), ...props, children: _jsx("div", { className: "overflow-hidden", children: _jsx("div", { className: cn('text-sm text-muted-foreground', variant === 'default' && 'pb-4', variant === 'bordered' && 'px-4 pb-3', variant === 'flush' && 'pb-2', className), children: children }) }) }));
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../src/Accordion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accordion (React Native variant).
|
|
3
|
+
*
|
|
4
|
+
* `<View>` + `<Pressable>` + `LayoutAnimation` for height.
|
|
5
|
+
* Same sub-component API as the web variant.
|
|
6
|
+
*
|
|
7
|
+
* Wiki: docs/components/Accordion.md
|
|
8
|
+
*/
|
|
9
|
+
import { type ReactNode } from 'react';
|
|
10
|
+
import { View, type PressableProps, type ViewProps } from 'react-native';
|
|
11
|
+
type AccordionDuration = 'fast' | 'normal' | 'slow';
|
|
12
|
+
export interface AccordionProps extends Omit<ViewProps, 'style'> {
|
|
13
|
+
className?: string;
|
|
14
|
+
type?: 'single' | 'multiple';
|
|
15
|
+
defaultValue?: string | string[];
|
|
16
|
+
duration?: AccordionDuration;
|
|
17
|
+
}
|
|
18
|
+
export declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<View>>;
|
|
19
|
+
export interface AccordionItemProps extends Omit<ViewProps, 'style'> {
|
|
20
|
+
className?: string;
|
|
21
|
+
value: string;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const AccordionItem: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<View>>;
|
|
25
|
+
export interface AccordionTriggerProps extends Omit<PressableProps, 'style'> {
|
|
26
|
+
className?: string;
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
export declare const AccordionTrigger: import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<View>>;
|
|
30
|
+
export interface AccordionContentProps extends Omit<ViewProps, 'style'> {
|
|
31
|
+
className?: string;
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
export declare const AccordionContent: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<View>>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=Accordion.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.native.d.ts","sourceRoot":"","sources":["../src/Accordion.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAML,IAAI,EACJ,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAgBtB,KAAK,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AA0BpD,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,SAAS,iGA4CpB,CAAC;AAIH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,qGAUzB,CAAC;AAIF,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,wGA2B5B,CAAC;AAIF,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,wGAc5B,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Accordion (React Native variant).
|
|
4
|
+
*
|
|
5
|
+
* `<View>` + `<Pressable>` + `LayoutAnimation` for height.
|
|
6
|
+
* Same sub-component API as the web variant.
|
|
7
|
+
*
|
|
8
|
+
* Wiki: docs/components/Accordion.md
|
|
9
|
+
*/
|
|
10
|
+
import { createContext, forwardRef, useCallback, useContext, useMemo, useState, } from 'react';
|
|
11
|
+
import { LayoutAnimation, Platform, Pressable, Text, UIManager, View, } from 'react-native';
|
|
12
|
+
import { cn } from './internal/cn.js';
|
|
13
|
+
/* Enable LayoutAnimation on Android */
|
|
14
|
+
if (Platform.OS === 'android' && UIManager.setLayoutAnimationEnabledExperimental) {
|
|
15
|
+
UIManager.setLayoutAnimationEnabledExperimental(true);
|
|
16
|
+
}
|
|
17
|
+
const accordionDurationMs = {
|
|
18
|
+
fast: 300,
|
|
19
|
+
normal: 500,
|
|
20
|
+
slow: 700,
|
|
21
|
+
};
|
|
22
|
+
const AccordionCtx = createContext(null);
|
|
23
|
+
function useAccordion() {
|
|
24
|
+
const ctx = useContext(AccordionCtx);
|
|
25
|
+
if (!ctx)
|
|
26
|
+
throw new Error('Accordion sub-components must be used within <Accordion>');
|
|
27
|
+
return ctx;
|
|
28
|
+
}
|
|
29
|
+
const ItemValueCtx = createContext(null);
|
|
30
|
+
function useItemValue() {
|
|
31
|
+
const v = useContext(ItemValueCtx);
|
|
32
|
+
if (v === null)
|
|
33
|
+
throw new Error('AccordionTrigger/Content must be used within <AccordionItem>');
|
|
34
|
+
return v;
|
|
35
|
+
}
|
|
36
|
+
export const Accordion = forwardRef(function Accordion({ type = 'single', defaultValue, duration = 'normal', className, children, ...props }, ref) {
|
|
37
|
+
const [openValues, setOpenValues] = useState(() => {
|
|
38
|
+
if (!defaultValue)
|
|
39
|
+
return new Set();
|
|
40
|
+
return new Set(Array.isArray(defaultValue) ? defaultValue : [defaultValue]);
|
|
41
|
+
});
|
|
42
|
+
const toggle = useCallback((value) => {
|
|
43
|
+
LayoutAnimation.configureNext({
|
|
44
|
+
duration: accordionDurationMs[duration],
|
|
45
|
+
update: {
|
|
46
|
+
type: LayoutAnimation.Types.easeInEaseOut,
|
|
47
|
+
},
|
|
48
|
+
delete: {
|
|
49
|
+
type: LayoutAnimation.Types.easeInEaseOut,
|
|
50
|
+
property: LayoutAnimation.Properties.opacity,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
setOpenValues((prev) => {
|
|
54
|
+
const next = new Set(prev);
|
|
55
|
+
if (next.has(value)) {
|
|
56
|
+
next.delete(value);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (type === 'single')
|
|
60
|
+
next.clear();
|
|
61
|
+
next.add(value);
|
|
62
|
+
}
|
|
63
|
+
return next;
|
|
64
|
+
});
|
|
65
|
+
}, [duration, type]);
|
|
66
|
+
const ctx = useMemo(() => ({ openValues, toggle, duration }), [duration, openValues, toggle]);
|
|
67
|
+
return (_jsx(AccordionCtx.Provider, { value: ctx, children: _jsx(View, { ref: ref, className: cn('w-full', className), ...props, children: children }) }));
|
|
68
|
+
});
|
|
69
|
+
export const AccordionItem = forwardRef(function AccordionItem({ value, className, children, ...props }, ref) {
|
|
70
|
+
return (_jsx(ItemValueCtx.Provider, { value: value, children: _jsx(View, { ref: ref, className: cn('border-b border-border', className), ...props, children: children }) }));
|
|
71
|
+
});
|
|
72
|
+
export const AccordionTrigger = forwardRef(function AccordionTrigger({ className, children, ...props }, ref) {
|
|
73
|
+
const { openValues, toggle } = useAccordion();
|
|
74
|
+
const value = useItemValue();
|
|
75
|
+
const isOpen = openValues.has(value);
|
|
76
|
+
return (_jsxs(Pressable, { ref: ref, accessibilityRole: "button", accessibilityState: { expanded: isOpen }, onPress: () => toggle(value), className: cn('flex-row items-center justify-between py-4', className), ...props, children: [_jsx(Text, { className: "flex-1 text-sm font-medium text-foreground", children: children }), _jsx(Text, { className: cn('text-muted-foreground text-xs ml-2', isOpen && 'rotate-180'), children: "\u25BC" })] }));
|
|
77
|
+
});
|
|
78
|
+
export const AccordionContent = forwardRef(function AccordionContent({ className, children, ...props }, ref) {
|
|
79
|
+
const { openValues } = useAccordion();
|
|
80
|
+
const value = useItemValue();
|
|
81
|
+
const isOpen = openValues.has(value);
|
|
82
|
+
if (!isOpen)
|
|
83
|
+
return null;
|
|
84
|
+
return (_jsx(View, { ref: ref, className: cn('pb-4', className), ...props, children: _jsx(Text, { className: "text-sm text-foreground/80", children: children }) }));
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=Accordion.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.native.js","sourceRoot":"","sources":["../src/Accordion.native.tsx"],"names":[],"mappings":"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"}
|
package/dist/Alert.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alert (web variant — React DOM).
|
|
3
|
+
*
|
|
4
|
+
* Inline message banner. Three pieces compose:
|
|
5
|
+
*
|
|
6
|
+
* <Alert variant="destructive">
|
|
7
|
+
* <AlertTitle>Couldn't save</AlertTitle>
|
|
8
|
+
* <AlertDescription>Check your connection and try again.</AlertDescription>
|
|
9
|
+
* </Alert>
|
|
10
|
+
*
|
|
11
|
+
* Sets `role="alert"` so assistive tech announces the message when
|
|
12
|
+
* the element mounts. Pair with an icon — never communicate severity
|
|
13
|
+
* with colour alone.
|
|
14
|
+
*
|
|
15
|
+
* Wiki: docs/components/Alert.md
|
|
16
|
+
*/
|
|
17
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
18
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
19
|
+
export declare const alertVariants: (props?: ({
|
|
20
|
+
variant?: "accent" | "default" | "destructive" | "success" | "warning" | null | undefined;
|
|
21
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
22
|
+
type AlertVariantProps = VariantProps<typeof alertVariants>;
|
|
23
|
+
export interface AlertProps extends HTMLAttributes<HTMLDivElement>, AlertVariantProps {
|
|
24
|
+
/** Optional icon rendered at the start of the alert. */
|
|
25
|
+
icon?: ReactNode;
|
|
26
|
+
/** When provided, renders a close button that calls this handler. */
|
|
27
|
+
onClose?: () => void;
|
|
28
|
+
}
|
|
29
|
+
export declare const Alert: import("react").ForwardRefExoticComponent<AlertProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
30
|
+
export declare const AlertTitle: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLHeadingElement> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
31
|
+
export declare const AlertDescription: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & import("react").RefAttributes<HTMLParagraphElement>>;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=Alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../src/Alert.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,eAAO,MAAM,aAAa;;8EAoBzB,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5D,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,cAAc,CAAC,EAAE,iBAAiB;IACnF,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,KAAK,uGA2BhB,CAAC;AAEH,eAAO,MAAM,UAAU,mIAUtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,uIAM5B,CAAC"}
|