@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
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Avatar (React Native variant).
|
|
3
|
+
*
|
|
4
|
+
* Composable image + fallback. The image uses RN `<Image>` and falls
|
|
5
|
+
* back via the `onError` callback the same way the web variant does.
|
|
6
|
+
*
|
|
7
|
+
* Wiki: docs/components/Avatar.md
|
|
8
|
+
*/
|
|
9
|
+
import { forwardRef, useState, type ReactNode } from 'react';
|
|
10
|
+
import { Image, Text, View, type ImageProps, type TextProps, type ViewProps } from 'react-native';
|
|
11
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
12
|
+
import { cn } from './internal/cn.js';
|
|
13
|
+
|
|
14
|
+
export const avatarVariants = cva('relative overflow-hidden rounded-full bg-muted', {
|
|
15
|
+
variants: {
|
|
16
|
+
size: {
|
|
17
|
+
sm: 'h-8 w-8',
|
|
18
|
+
md: 'h-10 w-10',
|
|
19
|
+
lg: 'h-12 w-12',
|
|
20
|
+
xl: 'h-16 w-16',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: { size: 'md' },
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export interface AvatarProps
|
|
27
|
+
extends Omit<ViewProps, 'style'>,
|
|
28
|
+
VariantProps<typeof avatarVariants> {
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const Avatar = forwardRef<View, AvatarProps>(function Avatar(
|
|
33
|
+
{ className, size, ...props },
|
|
34
|
+
ref,
|
|
35
|
+
) {
|
|
36
|
+
return <View ref={ref} className={cn(avatarVariants({ size }), className)} {...props} />;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export interface AvatarImageProps extends Omit<ImageProps, 'style'> {
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const AvatarImage = forwardRef<Image, AvatarImageProps>(function AvatarImage(
|
|
44
|
+
{ className, onError, ...props },
|
|
45
|
+
ref,
|
|
46
|
+
) {
|
|
47
|
+
const [errored, setErrored] = useState(false);
|
|
48
|
+
if (errored) return null;
|
|
49
|
+
return (
|
|
50
|
+
<Image
|
|
51
|
+
ref={ref as never}
|
|
52
|
+
onError={(e) => {
|
|
53
|
+
setErrored(true);
|
|
54
|
+
onError?.(e);
|
|
55
|
+
}}
|
|
56
|
+
className={cn('h-full w-full', className)}
|
|
57
|
+
resizeMode="cover"
|
|
58
|
+
{...props}
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
export interface AvatarFallbackProps extends Omit<TextProps, 'style'> {
|
|
64
|
+
className?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const AvatarFallback = forwardRef<View, AvatarFallbackProps>(function AvatarFallback(
|
|
68
|
+
{ className, children, ...props },
|
|
69
|
+
ref,
|
|
70
|
+
) {
|
|
71
|
+
return (
|
|
72
|
+
<View ref={ref} className="absolute inset-0 items-center justify-center">
|
|
73
|
+
<Text
|
|
74
|
+
className={cn('font-medium text-muted-foreground', className)}
|
|
75
|
+
{...props}
|
|
76
|
+
>
|
|
77
|
+
{children}
|
|
78
|
+
</Text>
|
|
79
|
+
</View>
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
/* ── Status indicator ────────────────────────────────────────────── */
|
|
84
|
+
|
|
85
|
+
const STATUS_COLORS: Record<string, string> = {
|
|
86
|
+
online: 'bg-success',
|
|
87
|
+
offline: 'bg-muted-foreground',
|
|
88
|
+
busy: 'bg-destructive',
|
|
89
|
+
away: 'bg-warning',
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export interface AvatarStatusProps extends Omit<ViewProps, 'style'> {
|
|
93
|
+
status: 'online' | 'offline' | 'busy' | 'away';
|
|
94
|
+
className?: string;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export const AvatarStatus = forwardRef<View, AvatarStatusProps>(function AvatarStatus(
|
|
98
|
+
{ className, status, ...props },
|
|
99
|
+
ref,
|
|
100
|
+
) {
|
|
101
|
+
return (
|
|
102
|
+
<View
|
|
103
|
+
ref={ref}
|
|
104
|
+
accessibilityLabel={status}
|
|
105
|
+
className={cn(
|
|
106
|
+
'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-card',
|
|
107
|
+
STATUS_COLORS[status],
|
|
108
|
+
className,
|
|
109
|
+
)}
|
|
110
|
+
{...props}
|
|
111
|
+
/>
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
/* ── AvatarGroup ─────────────────────────────────────────────────── */
|
|
116
|
+
|
|
117
|
+
export interface AvatarGroupProps extends Omit<ViewProps, 'style'> {
|
|
118
|
+
max?: number;
|
|
119
|
+
className?: string;
|
|
120
|
+
children?: ReactNode;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export const AvatarGroup = forwardRef<View, AvatarGroupProps>(function AvatarGroup(
|
|
124
|
+
{ className, max = 4, children, ...props },
|
|
125
|
+
ref,
|
|
126
|
+
) {
|
|
127
|
+
const items = Array.isArray(children) ? children : children ? [children] : [];
|
|
128
|
+
const visible = items.slice(0, max);
|
|
129
|
+
const overflow = items.length - max;
|
|
130
|
+
return (
|
|
131
|
+
<View ref={ref} className={cn('flex-row items-center', className)} {...props}>
|
|
132
|
+
{visible.map((child, i) => (
|
|
133
|
+
<View key={i} className={cn(i > 0 && '-ml-2', 'rounded-full border-2 border-card')}>{child}</View>
|
|
134
|
+
))}
|
|
135
|
+
{overflow > 0 && (
|
|
136
|
+
<View className="-ml-2 h-10 w-10 items-center justify-center rounded-full bg-muted border-2 border-card">
|
|
137
|
+
<Text className="text-xs font-semibold text-muted-foreground">+{overflow}</Text>
|
|
138
|
+
</View>
|
|
139
|
+
)}
|
|
140
|
+
</View>
|
|
141
|
+
);
|
|
142
|
+
});
|
package/src/Avatar.tsx
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Avatar (web variant — React DOM).
|
|
5
|
+
*
|
|
6
|
+
* Composable user/entity portrait. Three pieces:
|
|
7
|
+
*
|
|
8
|
+
* <Avatar>
|
|
9
|
+
* <AvatarImage src={user.photo} alt={user.name} />
|
|
10
|
+
* <AvatarFallback>{user.initials}</AvatarFallback>
|
|
11
|
+
* </Avatar>
|
|
12
|
+
*
|
|
13
|
+
* The image is rendered first; if it fails to load, the fallback
|
|
14
|
+
* shows. The fallback is always present in the DOM so layout stays
|
|
15
|
+
* stable while the image loads.
|
|
16
|
+
*
|
|
17
|
+
* Wiki: docs/components/Avatar.md
|
|
18
|
+
*/
|
|
19
|
+
import { forwardRef, useState, type HTMLAttributes, type ImgHTMLAttributes } from 'react';
|
|
20
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
21
|
+
import { cn } from './internal/cn.js';
|
|
22
|
+
|
|
23
|
+
export const avatarVariants = cva(
|
|
24
|
+
'relative inline-flex shrink-0 overflow-hidden rounded-full bg-primary-50 dark:bg-primary-950',
|
|
25
|
+
{
|
|
26
|
+
variants: {
|
|
27
|
+
size: {
|
|
28
|
+
sm: 'h-8 w-8 text-xs',
|
|
29
|
+
md: 'h-10 w-10 text-sm',
|
|
30
|
+
lg: 'h-12 w-12 text-base',
|
|
31
|
+
xl: 'h-16 w-16 text-lg',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
defaultVariants: { size: 'md' },
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
export interface AvatarProps
|
|
39
|
+
extends HTMLAttributes<HTMLSpanElement>,
|
|
40
|
+
VariantProps<typeof avatarVariants> {}
|
|
41
|
+
|
|
42
|
+
export const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(
|
|
43
|
+
{ className, size, ...props },
|
|
44
|
+
ref,
|
|
45
|
+
) {
|
|
46
|
+
return (
|
|
47
|
+
<span ref={ref} className={cn(avatarVariants({ size }), className)} {...props} />
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export interface AvatarImageProps extends ImgHTMLAttributes<HTMLImageElement> {}
|
|
52
|
+
|
|
53
|
+
export const AvatarImage = forwardRef<HTMLImageElement, AvatarImageProps>(function AvatarImage(
|
|
54
|
+
{ className, alt = '', onError, ...props },
|
|
55
|
+
ref,
|
|
56
|
+
) {
|
|
57
|
+
const [errored, setErrored] = useState(false);
|
|
58
|
+
if (errored) return null;
|
|
59
|
+
return (
|
|
60
|
+
<img
|
|
61
|
+
ref={ref}
|
|
62
|
+
alt={alt}
|
|
63
|
+
onError={(e) => {
|
|
64
|
+
setErrored(true);
|
|
65
|
+
onError?.(e);
|
|
66
|
+
}}
|
|
67
|
+
className={cn('absolute inset-0 h-full w-full object-cover transition-opacity duration-150', className)}
|
|
68
|
+
{...props}
|
|
69
|
+
/>
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export interface AvatarFallbackProps extends HTMLAttributes<HTMLSpanElement> {}
|
|
74
|
+
|
|
75
|
+
export const AvatarFallback = forwardRef<HTMLSpanElement, AvatarFallbackProps>(function AvatarFallback(
|
|
76
|
+
{ className, ...props },
|
|
77
|
+
ref,
|
|
78
|
+
) {
|
|
79
|
+
return (
|
|
80
|
+
<span
|
|
81
|
+
ref={ref}
|
|
82
|
+
aria-hidden
|
|
83
|
+
className={cn(
|
|
84
|
+
'absolute inset-0 grid place-items-center bg-primary-50 font-bold text-primary dark:bg-primary-950 dark:text-primary-300 transition-colors duration-150',
|
|
85
|
+
className,
|
|
86
|
+
)}
|
|
87
|
+
{...props}
|
|
88
|
+
/>
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
/* ── Status indicator ────────────────────────────────────────────── */
|
|
93
|
+
|
|
94
|
+
const STATUS_COLORS: Record<string, string> = {
|
|
95
|
+
online: 'bg-success',
|
|
96
|
+
offline: 'bg-muted-foreground',
|
|
97
|
+
busy: 'bg-destructive',
|
|
98
|
+
away: 'bg-warning',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export interface AvatarStatusProps extends HTMLAttributes<HTMLSpanElement> {
|
|
102
|
+
status: 'online' | 'offline' | 'busy' | 'away';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Small colored dot anchored to the bottom-right of `<Avatar>`. */
|
|
106
|
+
export const AvatarStatus = forwardRef<HTMLSpanElement, AvatarStatusProps>(function AvatarStatus(
|
|
107
|
+
{ className, status, ...props },
|
|
108
|
+
ref,
|
|
109
|
+
) {
|
|
110
|
+
return (
|
|
111
|
+
<span
|
|
112
|
+
ref={ref}
|
|
113
|
+
role="img"
|
|
114
|
+
aria-label={status}
|
|
115
|
+
className={cn(
|
|
116
|
+
'absolute bottom-0 right-0 block h-2.5 w-2.5 rounded-full ring-2 ring-card',
|
|
117
|
+
STATUS_COLORS[status],
|
|
118
|
+
className,
|
|
119
|
+
)}
|
|
120
|
+
{...props}
|
|
121
|
+
/>
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
/* ── AvatarGroup ─────────────────────────────────────────────────── */
|
|
126
|
+
|
|
127
|
+
export interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
128
|
+
/** Maximum avatars to show before the "+N" counter. */
|
|
129
|
+
max?: number;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Stacks `<Avatar>` children with negative overlap.
|
|
134
|
+
* Shows a "+N" counter when children exceed `max`.
|
|
135
|
+
*/
|
|
136
|
+
export const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(
|
|
137
|
+
{ className, max = 4, children, ...props },
|
|
138
|
+
ref,
|
|
139
|
+
) {
|
|
140
|
+
const items = Array.isArray(children) ? children : children ? [children] : [];
|
|
141
|
+
const visible = items.slice(0, max);
|
|
142
|
+
const overflow = items.length - max;
|
|
143
|
+
return (
|
|
144
|
+
<div ref={ref} className={cn('flex items-center -space-x-2', className)} {...props}>
|
|
145
|
+
{visible.map((child, i) => (
|
|
146
|
+
<span key={i} className="ring-2 ring-card rounded-full">{child}</span>
|
|
147
|
+
))}
|
|
148
|
+
{overflow > 0 && (
|
|
149
|
+
<span className="relative inline-flex h-10 w-10 items-center justify-center rounded-full bg-muted text-xs font-semibold text-muted-foreground ring-2 ring-card">
|
|
150
|
+
+{overflow}
|
|
151
|
+
</span>
|
|
152
|
+
)}
|
|
153
|
+
</div>
|
|
154
|
+
);
|
|
155
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AvatarGroup (React Native variant).
|
|
3
|
+
*
|
|
4
|
+
* Stacked row of Avatar children with negative marginLeft overlap
|
|
5
|
+
* and a "+N" overflow badge.
|
|
6
|
+
*
|
|
7
|
+
* Wiki: docs/components/AvatarGroup.md
|
|
8
|
+
*/
|
|
9
|
+
import {
|
|
10
|
+
Children,
|
|
11
|
+
cloneElement,
|
|
12
|
+
forwardRef,
|
|
13
|
+
isValidElement,
|
|
14
|
+
type ReactElement,
|
|
15
|
+
type ReactNode,
|
|
16
|
+
} from 'react';
|
|
17
|
+
import { Text, View, type ViewProps } from 'react-native';
|
|
18
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
19
|
+
import { cn } from './internal/cn.js';
|
|
20
|
+
import type { AvatarProps } from './Avatar.js';
|
|
21
|
+
|
|
22
|
+
const overflowVariants = cva(
|
|
23
|
+
'items-center justify-center rounded-full bg-muted border-2 border-card',
|
|
24
|
+
{
|
|
25
|
+
variants: {
|
|
26
|
+
size: {
|
|
27
|
+
sm: 'h-8 w-8',
|
|
28
|
+
md: 'h-10 w-10',
|
|
29
|
+
lg: 'h-12 w-12',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: { size: 'md' },
|
|
33
|
+
},
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
export interface AvatarGroupProps extends Omit<ViewProps, 'style'> {
|
|
37
|
+
max?: number;
|
|
38
|
+
size?: 'sm' | 'md' | 'lg';
|
|
39
|
+
className?: string;
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const AvatarGroup = forwardRef<View, AvatarGroupProps>(function AvatarGroup(
|
|
44
|
+
{ className, max = 4, size, children, ...props },
|
|
45
|
+
ref,
|
|
46
|
+
) {
|
|
47
|
+
const items = Children.toArray(children).filter(isValidElement);
|
|
48
|
+
const visible = items.slice(0, max);
|
|
49
|
+
const overflow = items.length - max;
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<View
|
|
53
|
+
ref={ref}
|
|
54
|
+
accessibilityRole="summary"
|
|
55
|
+
accessibilityLabel={`Group of ${items.length} avatars`}
|
|
56
|
+
className={cn('flex-row items-center', className)}
|
|
57
|
+
{...props}
|
|
58
|
+
>
|
|
59
|
+
{visible.map((child, i) => {
|
|
60
|
+
const avatar = size
|
|
61
|
+
? cloneElement(child as ReactElement<AvatarProps>, { size })
|
|
62
|
+
: child;
|
|
63
|
+
return (
|
|
64
|
+
<View
|
|
65
|
+
key={i}
|
|
66
|
+
className={cn(i > 0 && '-ml-2', 'rounded-full border-2 border-card')}
|
|
67
|
+
>
|
|
68
|
+
{avatar}
|
|
69
|
+
</View>
|
|
70
|
+
);
|
|
71
|
+
})}
|
|
72
|
+
{overflow > 0 && (
|
|
73
|
+
<View className={cn('-ml-2', overflowVariants({ size }))}>
|
|
74
|
+
<Text className="text-xs font-semibold text-muted-foreground">
|
|
75
|
+
+{overflow}
|
|
76
|
+
</Text>
|
|
77
|
+
</View>
|
|
78
|
+
)}
|
|
79
|
+
</View>
|
|
80
|
+
);
|
|
81
|
+
});
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AvatarGroup (web variant — React DOM).
|
|
5
|
+
*
|
|
6
|
+
* Stacked/overlapping row of Avatar components with an overflow "+N"
|
|
7
|
+
* count. The `size` prop is forwarded to Avatar children via
|
|
8
|
+
* cloneElement. `max` controls how many avatars are visible before
|
|
9
|
+
* the "+N" badge appears.
|
|
10
|
+
*
|
|
11
|
+
* Wiki: docs/components/AvatarGroup.md
|
|
12
|
+
*/
|
|
13
|
+
import { Children, cloneElement, forwardRef, isValidElement, type HTMLAttributes, type ReactElement, type ReactNode } from 'react';
|
|
14
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
15
|
+
import { cn } from './internal/cn.js';
|
|
16
|
+
import type { AvatarProps } from './Avatar.js';
|
|
17
|
+
|
|
18
|
+
const overflowVariants = cva(
|
|
19
|
+
'relative inline-flex shrink-0 items-center justify-center rounded-full bg-muted font-semibold text-muted-foreground ring-2 ring-card',
|
|
20
|
+
{
|
|
21
|
+
variants: {
|
|
22
|
+
size: {
|
|
23
|
+
sm: 'h-8 w-8 text-xs',
|
|
24
|
+
md: 'h-10 w-10 text-xs',
|
|
25
|
+
lg: 'h-12 w-12 text-sm',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: { size: 'md' },
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
export interface AvatarGroupProps
|
|
33
|
+
extends HTMLAttributes<HTMLDivElement>,
|
|
34
|
+
VariantProps<typeof overflowVariants> {
|
|
35
|
+
/** Maximum avatars to show before the "+N" counter. */
|
|
36
|
+
max?: number;
|
|
37
|
+
/** Direction of the visible stack. */
|
|
38
|
+
direction?: 'row' | 'row-reverse';
|
|
39
|
+
/** Visual overlap density. */
|
|
40
|
+
overlap?: 'none' | 'sm' | 'md' | 'lg';
|
|
41
|
+
/** Whether later avatars appear above earlier avatars. */
|
|
42
|
+
stackOrder?: 'first-on-top' | 'last-on-top';
|
|
43
|
+
/** Accessible label for the group. */
|
|
44
|
+
label?: string;
|
|
45
|
+
/** Custom overflow renderer. */
|
|
46
|
+
renderOverflow?: ((count: number) => ReactNode) | undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const OVERLAP_CLASS = {
|
|
50
|
+
none: 'space-x-0',
|
|
51
|
+
sm: '-space-x-1',
|
|
52
|
+
md: '-space-x-2',
|
|
53
|
+
lg: '-space-x-3',
|
|
54
|
+
} as const;
|
|
55
|
+
|
|
56
|
+
export const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(
|
|
57
|
+
{
|
|
58
|
+
className,
|
|
59
|
+
max = 4,
|
|
60
|
+
size,
|
|
61
|
+
direction = 'row',
|
|
62
|
+
overlap = 'md',
|
|
63
|
+
stackOrder = 'last-on-top',
|
|
64
|
+
label,
|
|
65
|
+
renderOverflow,
|
|
66
|
+
children,
|
|
67
|
+
...props
|
|
68
|
+
},
|
|
69
|
+
ref,
|
|
70
|
+
) {
|
|
71
|
+
const items = Children.toArray(children).filter(isValidElement);
|
|
72
|
+
const visible = items.slice(0, max);
|
|
73
|
+
const overflow = items.length - max;
|
|
74
|
+
const orderedVisible = direction === 'row-reverse' ? [...visible].reverse() : visible;
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<div
|
|
78
|
+
ref={ref}
|
|
79
|
+
role="group"
|
|
80
|
+
aria-label={label ?? `Group of ${items.length} avatars`}
|
|
81
|
+
className={cn(
|
|
82
|
+
'flex items-center',
|
|
83
|
+
direction === 'row-reverse' && 'flex-row-reverse',
|
|
84
|
+
OVERLAP_CLASS[overlap],
|
|
85
|
+
className,
|
|
86
|
+
)}
|
|
87
|
+
{...props}
|
|
88
|
+
>
|
|
89
|
+
{orderedVisible.map((child, i) => {
|
|
90
|
+
const avatar = size
|
|
91
|
+
? cloneElement(child as ReactElement<AvatarProps>, { size })
|
|
92
|
+
: child;
|
|
93
|
+
const zIndex = stackOrder === 'last-on-top' ? i + 1 : orderedVisible.length - i;
|
|
94
|
+
return (
|
|
95
|
+
<span
|
|
96
|
+
key={(child as ReactElement).key ?? i}
|
|
97
|
+
className="relative inline-flex shrink-0 rounded-full leading-none ring-2 ring-card"
|
|
98
|
+
style={{ zIndex }}
|
|
99
|
+
>
|
|
100
|
+
{avatar}
|
|
101
|
+
</span>
|
|
102
|
+
);
|
|
103
|
+
})}
|
|
104
|
+
{overflow > 0 && (
|
|
105
|
+
<span
|
|
106
|
+
aria-label={`${overflow} more`}
|
|
107
|
+
className={overflowVariants({ size })}
|
|
108
|
+
>
|
|
109
|
+
{renderOverflow ? renderOverflow(overflow) : `+${overflow}`}
|
|
110
|
+
</span>
|
|
111
|
+
)}
|
|
112
|
+
</div>
|
|
113
|
+
);
|
|
114
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Badge (React Native variant).
|
|
3
|
+
*
|
|
4
|
+
* Small status / labelling pill rendered as `<View>` + `<Text>`.
|
|
5
|
+
* Same prop API as the web variant.
|
|
6
|
+
*
|
|
7
|
+
* Wiki: docs/components/Badge.md
|
|
8
|
+
*/
|
|
9
|
+
import { forwardRef, type ReactNode } from 'react';
|
|
10
|
+
import { Pressable, Text, View, type ViewProps } from 'react-native';
|
|
11
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
12
|
+
import { cn } from './internal/cn.js';
|
|
13
|
+
|
|
14
|
+
export const badgeVariants = cva(
|
|
15
|
+
'flex-row items-center rounded-full px-2 py-0.5 border',
|
|
16
|
+
{
|
|
17
|
+
variants: {
|
|
18
|
+
variant: {
|
|
19
|
+
default: 'bg-primary border-transparent',
|
|
20
|
+
secondary: 'bg-secondary border-transparent',
|
|
21
|
+
destructive: 'bg-destructive border-transparent',
|
|
22
|
+
success: 'bg-success border-transparent',
|
|
23
|
+
warning: 'bg-warning border-transparent',
|
|
24
|
+
outline: 'bg-transparent border-border',
|
|
25
|
+
dot: 'bg-transparent border-transparent',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
variant: 'default',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const TEXT_TONE: Record<NonNullable<VariantProps<typeof badgeVariants>['variant']>, string> = {
|
|
35
|
+
default: 'text-primary-foreground',
|
|
36
|
+
secondary: 'text-secondary-foreground',
|
|
37
|
+
destructive: 'text-destructive-foreground',
|
|
38
|
+
success: 'text-success-foreground',
|
|
39
|
+
warning: 'text-warning-foreground',
|
|
40
|
+
outline: 'text-foreground',
|
|
41
|
+
dot: 'text-foreground',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const DOT_COLORS: Record<string, string> = {
|
|
45
|
+
default: 'bg-primary',
|
|
46
|
+
destructive: 'bg-destructive',
|
|
47
|
+
success: 'bg-success',
|
|
48
|
+
warning: 'bg-warning',
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export interface BadgeProps
|
|
52
|
+
extends Omit<ViewProps, 'style'>,
|
|
53
|
+
VariantProps<typeof badgeVariants> {
|
|
54
|
+
className?: string;
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
icon?: ReactNode;
|
|
57
|
+
dotTone?: 'default' | 'destructive' | 'success' | 'warning';
|
|
58
|
+
onRemove?: () => void;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export const Badge = forwardRef<View, BadgeProps>(function Badge(
|
|
62
|
+
{ className, variant = 'default', icon, dotTone = 'default', onRemove, children, ...props },
|
|
63
|
+
ref,
|
|
64
|
+
) {
|
|
65
|
+
const tone = TEXT_TONE[variant ?? 'default'];
|
|
66
|
+
return (
|
|
67
|
+
<View ref={ref} className={cn(badgeVariants({ variant }), className)} {...props}>
|
|
68
|
+
{variant === 'dot' && (
|
|
69
|
+
<View className={cn('h-1.5 w-1.5 rounded-full mr-1', DOT_COLORS[dotTone])} />
|
|
70
|
+
)}
|
|
71
|
+
{icon && <View className="mr-1">{icon}</View>}
|
|
72
|
+
<Text className={cn('text-xs font-medium leading-none', tone)}>{children}</Text>
|
|
73
|
+
{onRemove && (
|
|
74
|
+
<Pressable
|
|
75
|
+
onPress={onRemove}
|
|
76
|
+
accessibilityRole="button"
|
|
77
|
+
accessibilityLabel="Remove"
|
|
78
|
+
className="ml-1 opacity-60"
|
|
79
|
+
>
|
|
80
|
+
<Text className={cn('text-xs', tone)}>✕</Text>
|
|
81
|
+
</Pressable>
|
|
82
|
+
)}
|
|
83
|
+
</View>
|
|
84
|
+
);
|
|
85
|
+
});
|
package/src/Badge.tsx
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Badge (web variant — React DOM).
|
|
5
|
+
*
|
|
6
|
+
* Small status / labelling pill. Renders a `<span>` by default so it
|
|
7
|
+
* composes inline with text; pass `as` if you need a different element
|
|
8
|
+
* (e.g., `<a>` for a clickable badge link).
|
|
9
|
+
*
|
|
10
|
+
* Wiki: docs/components/Badge.md
|
|
11
|
+
*/
|
|
12
|
+
import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
|
|
13
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
14
|
+
import { cn } from './internal/cn.js';
|
|
15
|
+
|
|
16
|
+
export const badgeVariants = cva(
|
|
17
|
+
'inline-flex items-center gap-1 rounded-card ' +
|
|
18
|
+
'text-caption font-semibold leading-none ' +
|
|
19
|
+
'border border-transparent transition-colors duration-150',
|
|
20
|
+
{
|
|
21
|
+
variants: {
|
|
22
|
+
variant: {
|
|
23
|
+
default: 'bg-primary-50 text-primary dark:bg-primary-950 dark:text-primary-300',
|
|
24
|
+
accent: 'bg-accent-50 text-accent-600 dark:bg-accent-950 dark:text-accent-300',
|
|
25
|
+
secondary: 'bg-brand-neutral-66 text-secondary-foreground',
|
|
26
|
+
destructive: 'bg-red-100 text-destructive',
|
|
27
|
+
success: 'bg-green-100 text-success',
|
|
28
|
+
warning: 'bg-yellow-100 text-warning',
|
|
29
|
+
outline: 'border-border bg-transparent text-foreground',
|
|
30
|
+
dot: 'bg-transparent text-foreground pl-0',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
variant: 'default',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
type BadgeVariantProps = VariantProps<typeof badgeVariants>;
|
|
40
|
+
|
|
41
|
+
const DOT_COLORS: Record<string, string> = {
|
|
42
|
+
default: 'bg-primary',
|
|
43
|
+
secondary: 'bg-secondary-foreground',
|
|
44
|
+
destructive: 'bg-destructive',
|
|
45
|
+
success: 'bg-success',
|
|
46
|
+
warning: 'bg-warning',
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export interface BadgeProps
|
|
50
|
+
extends HTMLAttributes<HTMLSpanElement>,
|
|
51
|
+
BadgeVariantProps {
|
|
52
|
+
/** Icon rendered before the label. */
|
|
53
|
+
icon?: ReactNode;
|
|
54
|
+
/** Tone of the dot indicator (only used with variant="dot"). */
|
|
55
|
+
dotTone?: 'default' | 'destructive' | 'success' | 'warning';
|
|
56
|
+
/** When provided, renders a remove (×) button. */
|
|
57
|
+
onRemove?: () => void;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(
|
|
61
|
+
{ className, variant, icon, dotTone = 'default', onRemove, children, ...props },
|
|
62
|
+
ref,
|
|
63
|
+
) {
|
|
64
|
+
return (
|
|
65
|
+
<span
|
|
66
|
+
ref={ref}
|
|
67
|
+
className={cn(
|
|
68
|
+
badgeVariants({ variant }),
|
|
69
|
+
variant === 'dot' ? 'px-1.5 py-0.5' : 'px-2 py-0.5',
|
|
70
|
+
className,
|
|
71
|
+
)}
|
|
72
|
+
{...props}
|
|
73
|
+
>
|
|
74
|
+
{variant === 'dot' && (
|
|
75
|
+
<span className={cn('inline-block h-1.5 w-1.5 rounded-full', DOT_COLORS[dotTone])} />
|
|
76
|
+
)}
|
|
77
|
+
{icon && <span className="[&>svg]:h-3 [&>svg]:w-3 flex-shrink-0">{icon}</span>}
|
|
78
|
+
{children}
|
|
79
|
+
{onRemove && (
|
|
80
|
+
<button
|
|
81
|
+
type="button"
|
|
82
|
+
onClick={(e) => { e.stopPropagation(); onRemove(); }}
|
|
83
|
+
aria-label="Remove"
|
|
84
|
+
className="ml-0.5 rounded-full p-0.5 opacity-60 hover:opacity-100 transition-opacity focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
85
|
+
>
|
|
86
|
+
<svg aria-hidden viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth={2} className="h-2.5 w-2.5">
|
|
87
|
+
<path strokeLinecap="round" d="M4 12L12 4M4 4l8 8" />
|
|
88
|
+
</svg>
|
|
89
|
+
</button>
|
|
90
|
+
)}
|
|
91
|
+
</span>
|
|
92
|
+
);
|
|
93
|
+
});
|