@exromany/lido-app-ui 0.0.1-pre.4 → 0.0.1-pre.5
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 +17 -2
- package/dist/README.md +17 -2
- package/dist/cjs/accordion/Accordion.cjs +12 -7
- package/dist/cjs/accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/accordion/Accordion.module.css.cjs +1 -1
- package/dist/cjs/address-button/AddressButton.cjs +4 -3
- package/dist/cjs/address-button/AddressButton.cjs.map +1 -1
- package/dist/cjs/address-button/AddressButton.module.css.cjs +1 -1
- package/dist/cjs/badge/Badge.cjs +4 -1
- package/dist/cjs/badge/Badge.cjs.map +1 -1
- package/dist/cjs/badge/Badge.module.css.cjs +1 -1
- package/dist/cjs/banner/Banner.cjs +28 -25
- package/dist/cjs/banner/Banner.cjs.map +1 -1
- package/dist/cjs/banner/Banner.module.css.cjs +1 -1
- package/dist/cjs/breadcrumbs/Breadcrumbs.cjs +12 -17
- package/dist/cjs/breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/cjs/button/Button.cjs +2 -1
- package/dist/cjs/button/Button.cjs.map +1 -1
- package/dist/cjs/button/Button.module.css.cjs +1 -1
- package/dist/cjs/button/ButtonContent.cjs +3 -3
- package/dist/cjs/button/ButtonContent.cjs.map +1 -1
- package/dist/cjs/callout/Callout.cjs +75 -0
- package/dist/cjs/callout/Callout.cjs.map +1 -0
- package/dist/cjs/callout/Callout.module.css.cjs +6 -0
- package/dist/cjs/callout/Callout.module.css.cjs.map +1 -0
- package/dist/cjs/checkbox/Checkbox.cjs +55 -24
- package/dist/cjs/checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/checkbox/Checkbox.module.css.cjs +1 -1
- package/dist/cjs/checkbox-row/CheckboxList.cjs +33 -0
- package/dist/cjs/checkbox-row/CheckboxList.cjs.map +1 -0
- package/dist/cjs/checkbox-row/CheckboxList.module.css.cjs +6 -0
- package/dist/cjs/checkbox-row/CheckboxList.module.css.cjs.map +1 -0
- package/dist/cjs/checkbox-row/CheckboxRow.cjs +80 -0
- package/dist/cjs/checkbox-row/CheckboxRow.cjs.map +1 -0
- package/dist/cjs/checkbox-row/CheckboxRow.module.css.cjs +6 -0
- package/dist/cjs/checkbox-row/CheckboxRow.module.css.cjs.map +1 -0
- package/dist/cjs/disclosure/Disclosure.cjs +73 -0
- package/dist/cjs/disclosure/Disclosure.cjs.map +1 -0
- package/dist/cjs/disclosure/Disclosure.module.css.cjs +6 -0
- package/dist/cjs/disclosure/Disclosure.module.css.cjs.map +1 -0
- package/dist/cjs/drawer/Drawer.cjs +110 -0
- package/dist/cjs/drawer/Drawer.cjs.map +1 -0
- package/dist/cjs/drawer/Drawer.module.css.cjs +6 -0
- package/dist/cjs/drawer/Drawer.module.css.cjs.map +1 -0
- package/dist/cjs/empty-state/EmptyState.cjs +54 -0
- package/dist/cjs/empty-state/EmptyState.cjs.map +1 -0
- package/dist/cjs/empty-state/EmptyState.module.css.cjs +6 -0
- package/dist/cjs/empty-state/EmptyState.module.css.cjs.map +1 -0
- package/dist/cjs/error-page/ErrorPage.cjs +21 -20
- package/dist/cjs/error-page/ErrorPage.cjs.map +1 -1
- package/dist/cjs/error-page/ErrorPage.module.css.cjs +1 -1
- package/dist/cjs/header/Header.cjs +1 -1
- package/dist/cjs/header/Header.cjs.map +1 -1
- package/dist/cjs/header/HeaderNav.cjs +4 -20
- package/dist/cjs/header/HeaderNav.cjs.map +1 -1
- package/dist/cjs/hooks/DialogLayer.cjs +94 -0
- package/dist/cjs/hooks/DialogLayer.cjs.map +1 -0
- package/dist/cjs/hooks/useDialogLayer.cjs +69 -0
- package/dist/cjs/hooks/useDialogLayer.cjs.map +1 -0
- package/dist/cjs/hooks/useEdgeFade.cjs +22 -22
- package/dist/cjs/hooks/useEdgeFade.cjs.map +1 -1
- package/dist/cjs/hooks/useExitLatch.cjs +19 -0
- package/dist/cjs/hooks/useExitLatch.cjs.map +1 -0
- package/dist/cjs/hooks/useHeaderOffset.cjs +20 -0
- package/dist/cjs/hooks/useHeaderOffset.cjs.map +1 -0
- package/dist/cjs/hooks/useOpenerElement.cjs +15 -0
- package/dist/cjs/hooks/useOpenerElement.cjs.map +1 -0
- package/dist/cjs/hooks/usePresence.cjs +154 -0
- package/dist/cjs/hooks/usePresence.cjs.map +1 -0
- package/dist/cjs/hooks/useResizeObserver.cjs +22 -0
- package/dist/cjs/hooks/useResizeObserver.cjs.map +1 -0
- package/dist/cjs/hooks/useSelectionIndicator.cjs +52 -0
- package/dist/cjs/hooks/useSelectionIndicator.cjs.map +1 -0
- package/dist/cjs/icon-button/IconButton.cjs +4 -4
- package/dist/cjs/icon-button/IconButton.cjs.map +1 -1
- package/dist/cjs/icon-button/IconButton.module.css.cjs +1 -1
- package/dist/cjs/index.cjs +48 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.css +6 -6
- package/dist/cjs/input/Field.cjs +79 -0
- package/dist/cjs/input/Field.cjs.map +1 -0
- package/dist/cjs/input/Field.module.css.cjs +6 -0
- package/dist/cjs/input/Field.module.css.cjs.map +1 -0
- package/dist/cjs/input/Input.cjs +37 -41
- package/dist/cjs/input/Input.cjs.map +1 -1
- package/dist/cjs/input/Input.module.css.cjs +1 -1
- package/dist/cjs/modal/Modal.cjs +45 -93
- package/dist/cjs/modal/Modal.cjs.map +1 -1
- package/dist/cjs/notification/Notification.cjs +2 -1
- package/dist/cjs/notification/Notification.cjs.map +1 -1
- package/dist/cjs/notification/Notification.module.css.cjs +1 -1
- package/dist/cjs/page-layout/FormLayout.cjs +42 -0
- package/dist/cjs/page-layout/FormLayout.cjs.map +1 -0
- package/dist/cjs/page-layout/FormLayout.module.css.cjs +6 -0
- package/dist/cjs/page-layout/FormLayout.module.css.cjs.map +1 -0
- package/dist/cjs/pagination/Pagination.cjs +3 -6
- package/dist/cjs/pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/pagination/Pagination.module.css.cjs +1 -1
- package/dist/cjs/popover/Popover.cjs +65 -13
- package/dist/cjs/popover/Popover.cjs.map +1 -1
- package/dist/cjs/progress-bar/ProgressBar.cjs +87 -0
- package/dist/cjs/progress-bar/ProgressBar.cjs.map +1 -0
- package/dist/cjs/progress-bar/ProgressBar.module.css.cjs +6 -0
- package/dist/cjs/progress-bar/ProgressBar.module.css.cjs.map +1 -0
- package/dist/cjs/progress-bar/SegmentedBar.cjs +53 -0
- package/dist/cjs/progress-bar/SegmentedBar.cjs.map +1 -0
- package/dist/cjs/progress-bar/SegmentedBar.module.css.cjs +6 -0
- package/dist/cjs/progress-bar/SegmentedBar.module.css.cjs.map +1 -0
- package/dist/cjs/radio-button/RadioButton.cjs +31 -24
- package/dist/cjs/radio-button/RadioButton.cjs.map +1 -1
- package/dist/cjs/rich-input/RichInput.cjs +27 -17
- package/dist/cjs/rich-input/RichInput.cjs.map +1 -1
- package/dist/cjs/rich-input/RichInput.module.css.cjs +1 -1
- package/dist/cjs/segmented-control/SegmentedControl.cjs +9 -37
- package/dist/cjs/segmented-control/SegmentedControl.cjs.map +1 -1
- package/dist/cjs/segmented-control/SegmentedControlCard.cjs +14 -33
- package/dist/cjs/segmented-control/SegmentedControlCard.cjs.map +1 -1
- package/dist/cjs/select/Select.cjs +338 -0
- package/dist/cjs/select/Select.cjs.map +1 -0
- package/dist/cjs/select/Select.module.css.cjs +6 -0
- package/dist/cjs/select/Select.module.css.cjs.map +1 -0
- package/dist/cjs/select/SelectItem.cjs +97 -0
- package/dist/cjs/select/SelectItem.cjs.map +1 -0
- package/dist/cjs/select/SelectItem.module.css.cjs +6 -0
- package/dist/cjs/select/SelectItem.module.css.cjs.map +1 -0
- package/dist/cjs/sidebar/Sidebar.cjs +10 -12
- package/dist/cjs/sidebar/Sidebar.cjs.map +1 -1
- package/dist/cjs/spinner/Spinner.cjs +43 -0
- package/dist/cjs/spinner/Spinner.cjs.map +1 -0
- package/dist/cjs/spinner/Spinner.module.css.cjs +6 -0
- package/dist/cjs/spinner/Spinner.module.css.cjs.map +1 -0
- package/dist/cjs/stat-card/StatCard.cjs +132 -0
- package/dist/cjs/stat-card/StatCard.cjs.map +1 -0
- package/dist/cjs/stat-card/StatCard.module.css.cjs +6 -0
- package/dist/cjs/stat-card/StatCard.module.css.cjs.map +1 -0
- package/dist/cjs/stat-item/StatItem.cjs +1 -1
- package/dist/cjs/stat-item/StatItem.cjs.map +1 -1
- package/dist/cjs/stat-item/StatItem.module.css.cjs +1 -1
- package/dist/cjs/steps/Steps.cjs +85 -0
- package/dist/cjs/steps/Steps.cjs.map +1 -0
- package/dist/cjs/steps/Steps.module.css.cjs +6 -0
- package/dist/cjs/steps/Steps.module.css.cjs.map +1 -0
- package/dist/cjs/switch/Switch.cjs +32 -25
- package/dist/cjs/switch/Switch.cjs.map +1 -1
- package/dist/cjs/table/Table.cjs +280 -0
- package/dist/cjs/table/Table.cjs.map +1 -0
- package/dist/cjs/table/Table.module.css.cjs +6 -0
- package/dist/cjs/table/Table.module.css.cjs.map +1 -0
- package/dist/cjs/tabs/Tabs.cjs +18 -27
- package/dist/cjs/tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/tabs/Tabs.module.css.cjs +1 -1
- package/dist/cjs/tag/Tag.cjs +4 -3
- package/dist/cjs/tag/Tag.cjs.map +1 -1
- package/dist/cjs/tag/Tag.module.css.cjs +1 -1
- package/dist/cjs/textarea/Textarea.cjs +108 -0
- package/dist/cjs/textarea/Textarea.cjs.map +1 -0
- package/dist/cjs/textarea/Textarea.module.css.cjs +6 -0
- package/dist/cjs/textarea/Textarea.module.css.cjs.map +1 -0
- package/dist/cjs/toast/ToastStack.cjs +34 -0
- package/dist/cjs/toast/ToastStack.cjs.map +1 -0
- package/dist/cjs/toast/ToastStack.module.css.cjs +6 -0
- package/dist/cjs/toast/ToastStack.module.css.cjs.map +1 -0
- package/dist/cjs/toast/Toaster.cjs +172 -0
- package/dist/cjs/toast/Toaster.cjs.map +1 -0
- package/dist/cjs/toast/toastStore.cjs +49 -0
- package/dist/cjs/toast/toastStore.cjs.map +1 -0
- package/dist/cjs/toast/useToasts.cjs +14 -0
- package/dist/cjs/toast/useToasts.cjs.map +1 -0
- package/dist/cjs/token-selector/TokenSelector.cjs +25 -137
- package/dist/cjs/token-selector/TokenSelector.cjs.map +1 -1
- package/dist/cjs/tooltip/Tooltip.cjs +15 -4
- package/dist/cjs/tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/tx-status/TxStatus.cjs +4 -3
- package/dist/cjs/tx-status/TxStatus.cjs.map +1 -1
- package/dist/cjs/tx-status/TxStatus.module.css.cjs +1 -1
- package/dist/cjs/utils/dom.cjs +14 -0
- package/dist/cjs/utils/dom.cjs.map +1 -0
- package/dist/esm/accordion/Accordion.mjs +12 -7
- package/dist/esm/accordion/Accordion.mjs.map +1 -1
- package/dist/esm/accordion/Accordion.module.css.mjs +1 -1
- package/dist/esm/address-button/AddressButton.mjs +4 -3
- package/dist/esm/address-button/AddressButton.mjs.map +1 -1
- package/dist/esm/address-button/AddressButton.module.css.mjs +1 -1
- package/dist/esm/badge/Badge.mjs +4 -1
- package/dist/esm/badge/Badge.mjs.map +1 -1
- package/dist/esm/badge/Badge.module.css.mjs +1 -1
- package/dist/esm/banner/Banner.mjs +29 -26
- package/dist/esm/banner/Banner.mjs.map +1 -1
- package/dist/esm/banner/Banner.module.css.mjs +1 -1
- package/dist/esm/breadcrumbs/Breadcrumbs.mjs +13 -18
- package/dist/esm/breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/dist/esm/button/Button.mjs +2 -1
- package/dist/esm/button/Button.mjs.map +1 -1
- package/dist/esm/button/Button.module.css.mjs +1 -1
- package/dist/esm/button/ButtonContent.mjs +3 -3
- package/dist/esm/button/ButtonContent.mjs.map +1 -1
- package/dist/esm/callout/Callout.mjs +71 -0
- package/dist/esm/callout/Callout.mjs.map +1 -0
- package/dist/esm/callout/Callout.module.css.mjs +4 -0
- package/dist/esm/callout/Callout.module.css.mjs.map +1 -0
- package/dist/esm/checkbox/Checkbox.mjs +56 -25
- package/dist/esm/checkbox/Checkbox.mjs.map +1 -1
- package/dist/esm/checkbox/Checkbox.module.css.mjs +1 -1
- package/dist/esm/checkbox-row/CheckboxList.mjs +29 -0
- package/dist/esm/checkbox-row/CheckboxList.mjs.map +1 -0
- package/dist/esm/checkbox-row/CheckboxList.module.css.mjs +4 -0
- package/dist/esm/checkbox-row/CheckboxList.module.css.mjs.map +1 -0
- package/dist/esm/checkbox-row/CheckboxRow.mjs +76 -0
- package/dist/esm/checkbox-row/CheckboxRow.mjs.map +1 -0
- package/dist/esm/checkbox-row/CheckboxRow.module.css.mjs +4 -0
- package/dist/esm/checkbox-row/CheckboxRow.module.css.mjs.map +1 -0
- package/dist/esm/disclosure/Disclosure.mjs +69 -0
- package/dist/esm/disclosure/Disclosure.mjs.map +1 -0
- package/dist/esm/disclosure/Disclosure.module.css.mjs +4 -0
- package/dist/esm/disclosure/Disclosure.module.css.mjs.map +1 -0
- package/dist/esm/drawer/Drawer.mjs +106 -0
- package/dist/esm/drawer/Drawer.mjs.map +1 -0
- package/dist/esm/drawer/Drawer.module.css.mjs +4 -0
- package/dist/esm/drawer/Drawer.module.css.mjs.map +1 -0
- package/dist/esm/empty-state/EmptyState.mjs +50 -0
- package/dist/esm/empty-state/EmptyState.mjs.map +1 -0
- package/dist/esm/empty-state/EmptyState.module.css.mjs +4 -0
- package/dist/esm/empty-state/EmptyState.module.css.mjs.map +1 -0
- package/dist/esm/error-page/ErrorPage.mjs +22 -21
- package/dist/esm/error-page/ErrorPage.mjs.map +1 -1
- package/dist/esm/error-page/ErrorPage.module.css.mjs +1 -1
- package/dist/esm/header/Header.mjs +1 -1
- package/dist/esm/header/Header.mjs.map +1 -1
- package/dist/esm/header/HeaderNav.mjs +2 -18
- package/dist/esm/header/HeaderNav.mjs.map +1 -1
- package/dist/esm/hooks/DialogLayer.mjs +90 -0
- package/dist/esm/hooks/DialogLayer.mjs.map +1 -0
- package/dist/esm/hooks/useDialogLayer.mjs +65 -0
- package/dist/esm/hooks/useDialogLayer.mjs.map +1 -0
- package/dist/esm/hooks/useEdgeFade.mjs +22 -22
- package/dist/esm/hooks/useEdgeFade.mjs.map +1 -1
- package/dist/esm/hooks/useExitLatch.mjs +15 -0
- package/dist/esm/hooks/useExitLatch.mjs.map +1 -0
- package/dist/esm/hooks/useHeaderOffset.mjs +16 -0
- package/dist/esm/hooks/useHeaderOffset.mjs.map +1 -0
- package/dist/esm/hooks/useOpenerElement.mjs +11 -0
- package/dist/esm/hooks/useOpenerElement.mjs.map +1 -0
- package/dist/esm/hooks/usePresence.mjs +150 -0
- package/dist/esm/hooks/usePresence.mjs.map +1 -0
- package/dist/esm/hooks/useResizeObserver.mjs +18 -0
- package/dist/esm/hooks/useResizeObserver.mjs.map +1 -0
- package/dist/esm/hooks/useSelectionIndicator.mjs +48 -0
- package/dist/esm/hooks/useSelectionIndicator.mjs.map +1 -0
- package/dist/esm/icon-button/IconButton.mjs +4 -4
- package/dist/esm/icon-button/IconButton.mjs.map +1 -1
- package/dist/esm/icon-button/IconButton.module.css.mjs +1 -1
- package/dist/esm/index.css +6 -6
- package/dist/esm/index.mjs +20 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/input/Field.mjs +70 -0
- package/dist/esm/input/Field.mjs.map +1 -0
- package/dist/esm/input/Field.module.css.mjs +4 -0
- package/dist/esm/input/Field.module.css.mjs.map +1 -0
- package/dist/esm/input/Input.mjs +38 -42
- package/dist/esm/input/Input.mjs.map +1 -1
- package/dist/esm/input/Input.module.css.mjs +1 -1
- package/dist/esm/modal/Modal.mjs +46 -94
- package/dist/esm/modal/Modal.mjs.map +1 -1
- package/dist/esm/notification/Notification.mjs +2 -1
- package/dist/esm/notification/Notification.mjs.map +1 -1
- package/dist/esm/notification/Notification.module.css.mjs +1 -1
- package/dist/esm/page-layout/FormLayout.mjs +38 -0
- package/dist/esm/page-layout/FormLayout.mjs.map +1 -0
- package/dist/esm/page-layout/FormLayout.module.css.mjs +4 -0
- package/dist/esm/page-layout/FormLayout.module.css.mjs.map +1 -0
- package/dist/esm/pagination/Pagination.mjs +4 -7
- package/dist/esm/pagination/Pagination.mjs.map +1 -1
- package/dist/esm/pagination/Pagination.module.css.mjs +1 -1
- package/dist/esm/popover/Popover.mjs +66 -14
- package/dist/esm/popover/Popover.mjs.map +1 -1
- package/dist/esm/progress-bar/ProgressBar.mjs +83 -0
- package/dist/esm/progress-bar/ProgressBar.mjs.map +1 -0
- package/dist/esm/progress-bar/ProgressBar.module.css.mjs +4 -0
- package/dist/esm/progress-bar/ProgressBar.module.css.mjs.map +1 -0
- package/dist/esm/progress-bar/SegmentedBar.mjs +49 -0
- package/dist/esm/progress-bar/SegmentedBar.mjs.map +1 -0
- package/dist/esm/progress-bar/SegmentedBar.module.css.mjs +4 -0
- package/dist/esm/progress-bar/SegmentedBar.module.css.mjs.map +1 -0
- package/dist/esm/radio-button/RadioButton.mjs +31 -24
- package/dist/esm/radio-button/RadioButton.mjs.map +1 -1
- package/dist/esm/rich-input/RichInput.mjs +27 -17
- package/dist/esm/rich-input/RichInput.mjs.map +1 -1
- package/dist/esm/rich-input/RichInput.module.css.mjs +1 -1
- package/dist/esm/segmented-control/SegmentedControl.mjs +9 -37
- package/dist/esm/segmented-control/SegmentedControl.mjs.map +1 -1
- package/dist/esm/segmented-control/SegmentedControlCard.mjs +14 -33
- package/dist/esm/segmented-control/SegmentedControlCard.mjs.map +1 -1
- package/dist/esm/select/Select.mjs +334 -0
- package/dist/esm/select/Select.mjs.map +1 -0
- package/dist/esm/select/Select.module.css.mjs +4 -0
- package/dist/esm/select/Select.module.css.mjs.map +1 -0
- package/dist/esm/select/SelectItem.mjs +92 -0
- package/dist/esm/select/SelectItem.mjs.map +1 -0
- package/dist/esm/select/SelectItem.module.css.mjs +4 -0
- package/dist/esm/select/SelectItem.module.css.mjs.map +1 -0
- package/dist/esm/sidebar/Sidebar.mjs +10 -12
- package/dist/esm/sidebar/Sidebar.mjs.map +1 -1
- package/dist/esm/spinner/Spinner.mjs +39 -0
- package/dist/esm/spinner/Spinner.mjs.map +1 -0
- package/dist/esm/spinner/Spinner.module.css.mjs +4 -0
- package/dist/esm/spinner/Spinner.module.css.mjs.map +1 -0
- package/dist/esm/stat-card/StatCard.mjs +127 -0
- package/dist/esm/stat-card/StatCard.mjs.map +1 -0
- package/dist/esm/stat-card/StatCard.module.css.mjs +4 -0
- package/dist/esm/stat-card/StatCard.module.css.mjs.map +1 -0
- package/dist/esm/stat-item/StatItem.mjs +1 -1
- package/dist/esm/stat-item/StatItem.mjs.map +1 -1
- package/dist/esm/stat-item/StatItem.module.css.mjs +1 -1
- package/dist/esm/steps/Steps.mjs +81 -0
- package/dist/esm/steps/Steps.mjs.map +1 -0
- package/dist/esm/steps/Steps.module.css.mjs +4 -0
- package/dist/esm/steps/Steps.module.css.mjs.map +1 -0
- package/dist/esm/switch/Switch.mjs +32 -25
- package/dist/esm/switch/Switch.mjs.map +1 -1
- package/dist/esm/table/Table.mjs +269 -0
- package/dist/esm/table/Table.mjs.map +1 -0
- package/dist/esm/table/Table.module.css.mjs +4 -0
- package/dist/esm/table/Table.module.css.mjs.map +1 -0
- package/dist/esm/tabs/Tabs.mjs +18 -27
- package/dist/esm/tabs/Tabs.mjs.map +1 -1
- package/dist/esm/tabs/Tabs.module.css.mjs +1 -1
- package/dist/esm/tag/Tag.mjs +4 -3
- package/dist/esm/tag/Tag.mjs.map +1 -1
- package/dist/esm/tag/Tag.module.css.mjs +1 -1
- package/dist/esm/textarea/Textarea.mjs +104 -0
- package/dist/esm/textarea/Textarea.mjs.map +1 -0
- package/dist/esm/textarea/Textarea.module.css.mjs +4 -0
- package/dist/esm/textarea/Textarea.module.css.mjs.map +1 -0
- package/dist/esm/toast/ToastStack.mjs +30 -0
- package/dist/esm/toast/ToastStack.mjs.map +1 -0
- package/dist/esm/toast/ToastStack.module.css.mjs +4 -0
- package/dist/esm/toast/ToastStack.module.css.mjs.map +1 -0
- package/dist/esm/toast/Toaster.mjs +167 -0
- package/dist/esm/toast/Toaster.mjs.map +1 -0
- package/dist/esm/toast/toastStore.mjs +43 -0
- package/dist/esm/toast/toastStore.mjs.map +1 -0
- package/dist/esm/toast/useToasts.mjs +10 -0
- package/dist/esm/toast/useToasts.mjs.map +1 -0
- package/dist/esm/token-selector/TokenSelector.mjs +27 -139
- package/dist/esm/token-selector/TokenSelector.mjs.map +1 -1
- package/dist/esm/tooltip/Tooltip.mjs +15 -4
- package/dist/esm/tooltip/Tooltip.mjs.map +1 -1
- package/dist/esm/tx-status/TxStatus.mjs +4 -3
- package/dist/esm/tx-status/TxStatus.mjs.map +1 -1
- package/dist/esm/tx-status/TxStatus.module.css.mjs +1 -1
- package/dist/esm/utils/dom.mjs +10 -0
- package/dist/esm/utils/dom.mjs.map +1 -0
- package/dist/index.css +6 -6
- package/dist/styles/motion-mixins.css +167 -0
- package/dist/types/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/banner/Banner.d.ts +1 -1
- package/dist/types/banner/Banner.d.ts.map +1 -1
- package/dist/types/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/button/Button.d.ts +1 -1
- package/dist/types/button/Button.d.ts.map +1 -1
- package/dist/types/button/types.d.ts +2 -0
- package/dist/types/button/types.d.ts.map +1 -1
- package/dist/types/callout/Callout.d.ts +32 -0
- package/dist/types/callout/Callout.d.ts.map +1 -0
- package/dist/types/callout/index.d.ts +3 -0
- package/dist/types/callout/index.d.ts.map +1 -0
- package/dist/types/checkbox/Checkbox.d.ts +4 -0
- package/dist/types/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/checkbox-row/CheckboxList.d.ts +17 -0
- package/dist/types/checkbox-row/CheckboxList.d.ts.map +1 -0
- package/dist/types/checkbox-row/CheckboxRow.d.ts +32 -0
- package/dist/types/checkbox-row/CheckboxRow.d.ts.map +1 -0
- package/dist/types/checkbox-row/index.d.ts +5 -0
- package/dist/types/checkbox-row/index.d.ts.map +1 -0
- package/dist/types/disclosure/Disclosure.d.ts +24 -0
- package/dist/types/disclosure/Disclosure.d.ts.map +1 -0
- package/dist/types/disclosure/index.d.ts +3 -0
- package/dist/types/disclosure/index.d.ts.map +1 -0
- package/dist/types/drawer/Drawer.d.ts +55 -0
- package/dist/types/drawer/Drawer.d.ts.map +1 -0
- package/dist/types/drawer/index.d.ts +3 -0
- package/dist/types/drawer/index.d.ts.map +1 -0
- package/dist/types/empty-state/EmptyState.d.ts +33 -0
- package/dist/types/empty-state/EmptyState.d.ts.map +1 -0
- package/dist/types/empty-state/index.d.ts +3 -0
- package/dist/types/empty-state/index.d.ts.map +1 -0
- package/dist/types/error-page/ErrorPage.d.ts.map +1 -1
- package/dist/types/header/Header.d.ts +1 -1
- package/dist/types/header/Header.d.ts.map +1 -1
- package/dist/types/header/HeaderNav.d.ts.map +1 -1
- package/dist/types/hooks/DialogLayer.d.ts +21 -0
- package/dist/types/hooks/DialogLayer.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +8 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useDialogLayer.d.ts +16 -0
- package/dist/types/hooks/useDialogLayer.d.ts.map +1 -0
- package/dist/types/hooks/useEdgeFade.d.ts +1 -2
- package/dist/types/hooks/useEdgeFade.d.ts.map +1 -1
- package/dist/types/hooks/useExitLatch.d.ts +6 -0
- package/dist/types/hooks/useExitLatch.d.ts.map +1 -0
- package/dist/types/hooks/useHeaderOffset.d.ts +3 -0
- package/dist/types/hooks/useHeaderOffset.d.ts.map +1 -0
- package/dist/types/hooks/useOpenerElement.d.ts +3 -0
- package/dist/types/hooks/useOpenerElement.d.ts.map +1 -0
- package/dist/types/hooks/usePresence.d.ts +28 -0
- package/dist/types/hooks/usePresence.d.ts.map +1 -0
- package/dist/types/hooks/useResizeObserver.d.ts +4 -0
- package/dist/types/hooks/useResizeObserver.d.ts.map +1 -0
- package/dist/types/hooks/useSelectionIndicator.d.ts +13 -0
- package/dist/types/hooks/useSelectionIndicator.d.ts.map +1 -0
- package/dist/types/icon-button/IconButton.d.ts +1 -1
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/input/Field.d.ts +35 -0
- package/dist/types/input/Field.d.ts.map +1 -0
- package/dist/types/input/Input.d.ts +5 -1
- package/dist/types/input/Input.d.ts.map +1 -1
- package/dist/types/modal/Modal.d.ts.map +1 -1
- package/dist/types/notification/Notification.d.ts +4 -0
- package/dist/types/notification/Notification.d.ts.map +1 -1
- package/dist/types/page-layout/FormLayout.d.ts +15 -0
- package/dist/types/page-layout/FormLayout.d.ts.map +1 -0
- package/dist/types/page-layout/index.d.ts +2 -0
- package/dist/types/page-layout/index.d.ts.map +1 -1
- package/dist/types/popover/Popover.d.ts +4 -4
- package/dist/types/popover/Popover.d.ts.map +1 -1
- package/dist/types/progress-bar/ProgressBar.d.ts +30 -0
- package/dist/types/progress-bar/ProgressBar.d.ts.map +1 -0
- package/dist/types/progress-bar/SegmentedBar.d.ts +22 -0
- package/dist/types/progress-bar/SegmentedBar.d.ts.map +1 -0
- package/dist/types/progress-bar/index.d.ts +5 -0
- package/dist/types/progress-bar/index.d.ts.map +1 -0
- package/dist/types/radio-button/RadioButton.d.ts.map +1 -1
- package/dist/types/rich-input/RichInput.d.ts +4 -2
- package/dist/types/rich-input/RichInput.d.ts.map +1 -1
- package/dist/types/segmented-control/SegmentedControl.d.ts.map +1 -1
- package/dist/types/segmented-control/SegmentedControlCard.d.ts +1 -1
- package/dist/types/segmented-control/SegmentedControlCard.d.ts.map +1 -1
- package/dist/types/select/Select.d.ts +70 -0
- package/dist/types/select/Select.d.ts.map +1 -0
- package/dist/types/select/SelectItem.d.ts +58 -0
- package/dist/types/select/SelectItem.d.ts.map +1 -0
- package/dist/types/select/index.d.ts +5 -0
- package/dist/types/select/index.d.ts.map +1 -0
- package/dist/types/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/sidebar/SidebarItem.d.ts +1 -1
- package/dist/types/slider/Slider.d.ts +1 -1
- package/dist/types/spinner/Spinner.d.ts +28 -0
- package/dist/types/spinner/Spinner.d.ts.map +1 -0
- package/dist/types/spinner/index.d.ts +2 -0
- package/dist/types/spinner/index.d.ts.map +1 -0
- package/dist/types/stat-card/StatCard.d.ts +86 -0
- package/dist/types/stat-card/StatCard.d.ts.map +1 -0
- package/dist/types/stat-card/index.d.ts +3 -0
- package/dist/types/stat-card/index.d.ts.map +1 -0
- package/dist/types/stat-item/StatItem.d.ts +1 -1
- package/dist/types/stat-item/StatItem.d.ts.map +1 -1
- package/dist/types/steps/Steps.d.ts +30 -0
- package/dist/types/steps/Steps.d.ts.map +1 -0
- package/dist/types/steps/index.d.ts +3 -0
- package/dist/types/steps/index.d.ts.map +1 -0
- package/dist/types/switch/Switch.d.ts.map +1 -1
- package/dist/types/table/Table.d.ts +111 -0
- package/dist/types/table/Table.d.ts.map +1 -0
- package/dist/types/table/index.d.ts +3 -0
- package/dist/types/table/index.d.ts.map +1 -0
- package/dist/types/tabs/Tabs.d.ts +1 -1
- package/dist/types/tabs/Tabs.d.ts.map +1 -1
- package/dist/types/tag/Tag.d.ts.map +1 -1
- package/dist/types/textarea/Textarea.d.ts +30 -0
- package/dist/types/textarea/Textarea.d.ts.map +1 -0
- package/dist/types/textarea/index.d.ts +2 -0
- package/dist/types/textarea/index.d.ts.map +1 -0
- package/dist/types/toast/ToastStack.d.ts +12 -0
- package/dist/types/toast/ToastStack.d.ts.map +1 -0
- package/dist/types/toast/Toaster.d.ts +11 -0
- package/dist/types/toast/Toaster.d.ts.map +1 -0
- package/dist/types/toast/index.d.ts +6 -0
- package/dist/types/toast/index.d.ts.map +1 -0
- package/dist/types/toast/toastStore.d.ts +26 -0
- package/dist/types/toast/toastStore.d.ts.map +1 -0
- package/dist/types/toast/useToasts.d.ts +4 -0
- package/dist/types/toast/useToasts.d.ts.map +1 -0
- package/dist/types/token-selector/TokenSelector.d.ts +10 -35
- package/dist/types/token-selector/TokenSelector.d.ts.map +1 -1
- package/dist/types/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/tx-status/TxStatus.d.ts.map +1 -1
- package/dist/types/utils/ActionElement.d.ts +1 -1
- package/dist/types/utils/dom.d.ts +3 -0
- package/dist/types/utils/dom.d.ts.map +1 -0
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -30,6 +30,10 @@ function Widget() {
|
|
|
30
30
|
|
|
31
31
|
Theme providers (`ThemeProvider`, `CookieThemeProvider`) are re-exported from `@lidofinance/lido-shared-ui`. The color tokens follow the `data-lido-theme` attribute they set, so switching to the dark theme restyles these components. `ThemeSwitcher` is the app-ui-styled theme toggle, since the shared `ThemeToggler` relies on `--lido-ui-*` tokens that app-ui doesn't define. `ThemeSwitcher` needs `CookieThemeProvider`; the static `ThemeProvider` has no toggle, so the switcher renders but clicking does nothing. In SSR apps pass the request cookie as `initialThemeName` so the label is right on first paint (the icon already follows `data-lido-theme` in CSS).
|
|
32
32
|
|
|
33
|
+
Set `color: var(--lido-app-ui-color-text-default)` and `font-family: var(--lido-app-ui-font-family)` on `body`: app-ui sets no default text color.
|
|
34
|
+
|
|
35
|
+
Optional mono font: `--lido-app-ui-font-family-mono` (system stack by default) is for keys and hashes (the Operators design renders them in Manrope, so this is opt-in). To use a webfont, load it yourself and override the token on `:root`. See the Foundations/Setup story for the full setup.
|
|
36
|
+
|
|
33
37
|
## Router links
|
|
34
38
|
|
|
35
39
|
Every app-ui link (`TextLink`, `NavLink`, `Button` and `IconButton` with `href`, `SmallCard`, `Tag` with `href`, `Breadcrumbs` items with `href`, `Logo` with `href`) renders a plain `<a>` by default. Wrap the app in `LinkProvider` to route in-app hrefs through your router's link component; `externalComponent` does the same for absolute URLs. In-app hash links, `download` links and links with a non-`_self` `target` stay a plain `<a>`; absolute URLs always go to `externalComponent` when one is set. Absolute `http(s)` URLs open in a new tab (`target="_blank"`, `rel="noopener noreferrer"`) unless `target` is passed. Adapters must be `forwardRef` components: under React 18 `ref` is never passed as a prop.
|
|
@@ -133,7 +137,7 @@ Override any token after importing the stylesheet. Non-color tokens (radii, typo
|
|
|
133
137
|
}
|
|
134
138
|
```
|
|
135
139
|
|
|
136
|
-
The typography mixins and breakpoint definitions are published too
|
|
140
|
+
The typography and motion mixins (`typography-mixins.css`, `motion-mixins.css`) and breakpoint definitions are published too under `@lidofinance/lido-app-ui/styles/*`, for products running `postcss-mixins` / `postcss-custom-media`. `mixinsDir` picks up both mixin files. The motion mixins use nested rules, so keep `postcss-nested` (or target browsers with native CSS nesting):
|
|
137
141
|
|
|
138
142
|
```js
|
|
139
143
|
// postcss.config.mjs
|
|
@@ -151,11 +155,18 @@ export default {
|
|
|
151
155
|
files: [path.join(stylesDir, 'breakpoints.css')],
|
|
152
156
|
},
|
|
153
157
|
'postcss-mixins': { mixinsDir: stylesDir },
|
|
158
|
+
'postcss-nested': {},
|
|
154
159
|
'postcss-custom-media': { preserve: false },
|
|
155
160
|
},
|
|
156
161
|
}
|
|
157
162
|
```
|
|
158
163
|
|
|
164
|
+
## Motion
|
|
165
|
+
|
|
166
|
+
Durations, easings and amplitudes are tokens: enter `--lido-app-ui-duration-{fast,base,slow}`, exit `-exit` variants (shorter), `--lido-app-ui-easing-*`, `--lido-app-ui-motion-{shift,shift-lg,scale}`, `--lido-app-ui-transition-colors`. Override them on `:root` to retune.
|
|
167
|
+
|
|
168
|
+
Custom components can reuse the mixins (`motion-fade`, `motion-pop`, `motion-slide`, `motion-scrim`, `motion-collapse`, `motion-press`; see the `postcss-mixins` setup above) together with the `usePresence` hook. It keeps an element mounted through its exit and returns `{ mounted, status, ref, motionProps }`; spread `motionProps` (`data-state`, `data-motion`) on the element the CSS keys on. Mixins respect `prefers-reduced-motion`.
|
|
169
|
+
|
|
159
170
|
## Layout
|
|
160
171
|
|
|
161
172
|
Breakpoints are desktop-first: `-down` is `(width <= N)`, `-up` is `(width > N)`. The queries use range syntax (Safari 16.4+, Chrome 104+, Firefox 63+).
|
|
@@ -176,9 +187,13 @@ In CSS use `@media (--lido-app-ui-breakpoint-md-down)`. Responsive props such as
|
|
|
176
187
|
<Stack gap={{ base: 24, smDown: 12 }}>{children}</Stack>
|
|
177
188
|
```
|
|
178
189
|
|
|
190
|
+
For `@container`, which `postcss-custom-media` doesn't resolve, use raw values such as `@container (width <= 400px)`.
|
|
191
|
+
|
|
192
|
+
`Banner`, `Callout`, `EmptyState` and `StatCard` size their layout to their own width via container queries, so give them a definite-width parent; in a shrink-to-fit parent they collapse.
|
|
193
|
+
|
|
179
194
|
Page shells align to the page gutter, which shrinks on narrow screens: `padding-inline: var(--lido-app-ui-page-gutter)`.
|
|
180
195
|
|
|
181
|
-
Popovers, tooltips and modals with `withOverlay` portal to `<body>` and stack by `--lido-app-ui-z-index-*`: header 250, popover and modal 1000, toast 1050, tooltip 1100. Keep your own app chrome below 1000. `Modal` `inertOthers` makes the rest of `<body>` inert; mark body-level toast or live-region roots with `data-lido-overlay-keep` to keep them live.
|
|
196
|
+
Popovers, tooltips, drawers and modals with `withOverlay` portal to `<body>` and stack by `--lido-app-ui-z-index-*`: header 250, drawer, popover and modal 1000, toast 1050, tooltip 1100. Keep your own app chrome below 1000. `Modal` `inertOthers` makes the rest of `<body>` inert; mark body-level toast or live-region roots with `data-lido-overlay-keep` to keep them live.
|
|
182
197
|
|
|
183
198
|
## More
|
|
184
199
|
|
package/dist/README.md
CHANGED
|
@@ -30,6 +30,10 @@ function Widget() {
|
|
|
30
30
|
|
|
31
31
|
Theme providers (`ThemeProvider`, `CookieThemeProvider`) are re-exported from `@lidofinance/lido-shared-ui`. The color tokens follow the `data-lido-theme` attribute they set, so switching to the dark theme restyles these components. `ThemeSwitcher` is the app-ui-styled theme toggle, since the shared `ThemeToggler` relies on `--lido-ui-*` tokens that app-ui doesn't define. `ThemeSwitcher` needs `CookieThemeProvider`; the static `ThemeProvider` has no toggle, so the switcher renders but clicking does nothing. In SSR apps pass the request cookie as `initialThemeName` so the label is right on first paint (the icon already follows `data-lido-theme` in CSS).
|
|
32
32
|
|
|
33
|
+
Set `color: var(--lido-app-ui-color-text-default)` and `font-family: var(--lido-app-ui-font-family)` on `body`: app-ui sets no default text color.
|
|
34
|
+
|
|
35
|
+
Optional mono font: `--lido-app-ui-font-family-mono` (system stack by default) is for keys and hashes (the Operators design renders them in Manrope, so this is opt-in). To use a webfont, load it yourself and override the token on `:root`. See the Foundations/Setup story for the full setup.
|
|
36
|
+
|
|
33
37
|
## Router links
|
|
34
38
|
|
|
35
39
|
Every app-ui link (`TextLink`, `NavLink`, `Button` and `IconButton` with `href`, `SmallCard`, `Tag` with `href`, `Breadcrumbs` items with `href`, `Logo` with `href`) renders a plain `<a>` by default. Wrap the app in `LinkProvider` to route in-app hrefs through your router's link component; `externalComponent` does the same for absolute URLs. In-app hash links, `download` links and links with a non-`_self` `target` stay a plain `<a>`; absolute URLs always go to `externalComponent` when one is set. Absolute `http(s)` URLs open in a new tab (`target="_blank"`, `rel="noopener noreferrer"`) unless `target` is passed. Adapters must be `forwardRef` components: under React 18 `ref` is never passed as a prop.
|
|
@@ -133,7 +137,7 @@ Override any token after importing the stylesheet. Non-color tokens (radii, typo
|
|
|
133
137
|
}
|
|
134
138
|
```
|
|
135
139
|
|
|
136
|
-
The typography mixins and breakpoint definitions are published too
|
|
140
|
+
The typography and motion mixins (`typography-mixins.css`, `motion-mixins.css`) and breakpoint definitions are published too under `@lidofinance/lido-app-ui/styles/*`, for products running `postcss-mixins` / `postcss-custom-media`. `mixinsDir` picks up both mixin files. The motion mixins use nested rules, so keep `postcss-nested` (or target browsers with native CSS nesting):
|
|
137
141
|
|
|
138
142
|
```js
|
|
139
143
|
// postcss.config.mjs
|
|
@@ -151,11 +155,18 @@ export default {
|
|
|
151
155
|
files: [path.join(stylesDir, 'breakpoints.css')],
|
|
152
156
|
},
|
|
153
157
|
'postcss-mixins': { mixinsDir: stylesDir },
|
|
158
|
+
'postcss-nested': {},
|
|
154
159
|
'postcss-custom-media': { preserve: false },
|
|
155
160
|
},
|
|
156
161
|
}
|
|
157
162
|
```
|
|
158
163
|
|
|
164
|
+
## Motion
|
|
165
|
+
|
|
166
|
+
Durations, easings and amplitudes are tokens: enter `--lido-app-ui-duration-{fast,base,slow}`, exit `-exit` variants (shorter), `--lido-app-ui-easing-*`, `--lido-app-ui-motion-{shift,shift-lg,scale}`, `--lido-app-ui-transition-colors`. Override them on `:root` to retune.
|
|
167
|
+
|
|
168
|
+
Custom components can reuse the mixins (`motion-fade`, `motion-pop`, `motion-slide`, `motion-scrim`, `motion-collapse`, `motion-press`; see the `postcss-mixins` setup above) together with the `usePresence` hook. It keeps an element mounted through its exit and returns `{ mounted, status, ref, motionProps }`; spread `motionProps` (`data-state`, `data-motion`) on the element the CSS keys on. Mixins respect `prefers-reduced-motion`.
|
|
169
|
+
|
|
159
170
|
## Layout
|
|
160
171
|
|
|
161
172
|
Breakpoints are desktop-first: `-down` is `(width <= N)`, `-up` is `(width > N)`. The queries use range syntax (Safari 16.4+, Chrome 104+, Firefox 63+).
|
|
@@ -176,9 +187,13 @@ In CSS use `@media (--lido-app-ui-breakpoint-md-down)`. Responsive props such as
|
|
|
176
187
|
<Stack gap={{ base: 24, smDown: 12 }}>{children}</Stack>
|
|
177
188
|
```
|
|
178
189
|
|
|
190
|
+
For `@container`, which `postcss-custom-media` doesn't resolve, use raw values such as `@container (width <= 400px)`.
|
|
191
|
+
|
|
192
|
+
`Banner`, `Callout`, `EmptyState` and `StatCard` size their layout to their own width via container queries, so give them a definite-width parent; in a shrink-to-fit parent they collapse.
|
|
193
|
+
|
|
179
194
|
Page shells align to the page gutter, which shrinks on narrow screens: `padding-inline: var(--lido-app-ui-page-gutter)`.
|
|
180
195
|
|
|
181
|
-
Popovers, tooltips and modals with `withOverlay` portal to `<body>` and stack by `--lido-app-ui-z-index-*`: header 250, popover and modal 1000, toast 1050, tooltip 1100. Keep your own app chrome below 1000. `Modal` `inertOthers` makes the rest of `<body>` inert; mark body-level toast or live-region roots with `data-lido-overlay-keep` to keep them live.
|
|
196
|
+
Popovers, tooltips, drawers and modals with `withOverlay` portal to `<body>` and stack by `--lido-app-ui-z-index-*`: header 250, drawer, popover and modal 1000, toast 1050, tooltip 1100. Keep your own app chrome below 1000. `Modal` `inertOthers` makes the rest of `<body>` inert; mark body-level toast or live-region roots with `data-lido-overlay-keep` to keep them live.
|
|
182
197
|
|
|
183
198
|
## More
|
|
184
199
|
|
|
@@ -6,7 +6,7 @@ const react = require('react');
|
|
|
6
6
|
const cn = require('classnames');
|
|
7
7
|
const Accordion_module = require('./Accordion.module.css.cjs');
|
|
8
8
|
const jsxRuntime = require('react/jsx-runtime');
|
|
9
|
-
const
|
|
9
|
+
const usePresence = require('../hooks/usePresence.cjs');
|
|
10
10
|
const IconChevronDown = require('../icons/components/base/IconChevronDown.cjs');
|
|
11
11
|
|
|
12
12
|
/** Collapsible section, uncontrolled by default; pass `expanded` + `onExpandedChange` to drive it from your own state. */
|
|
@@ -25,6 +25,12 @@ const Accordion = _ref => {
|
|
|
25
25
|
const [uncontrolledExpanded, setUncontrolledExpanded] = react.useState(defaultExpanded);
|
|
26
26
|
const isExpanded = expanded ?? uncontrolledExpanded;
|
|
27
27
|
const contentId = react.useId();
|
|
28
|
+
const {
|
|
29
|
+
ref: presenceRef,
|
|
30
|
+
motionProps
|
|
31
|
+
} = usePresence.usePresence(isExpanded, {
|
|
32
|
+
keepMounted: true
|
|
33
|
+
});
|
|
28
34
|
const handleToggle = () => {
|
|
29
35
|
const next = !isExpanded;
|
|
30
36
|
if (expanded == null) setUncontrolledExpanded(next);
|
|
@@ -48,17 +54,16 @@ const Accordion = _ref => {
|
|
|
48
54
|
"data-testid": dataTestId?.title,
|
|
49
55
|
children: title
|
|
50
56
|
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
51
|
-
className: Accordion_module.chevron,
|
|
57
|
+
className: cn(Accordion_module.chevron, isExpanded && Accordion_module.chevronOpen),
|
|
52
58
|
"aria-hidden": "true",
|
|
53
|
-
children:
|
|
59
|
+
children: /*#__PURE__*/jsxRuntime.jsx(IconChevronDown.IconChevronDown, {})
|
|
54
60
|
})]
|
|
55
61
|
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
56
62
|
id: contentId,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
ref: presenceRef,
|
|
64
|
+
className: Accordion_module.contentWrapper,
|
|
65
|
+
...motionProps,
|
|
60
66
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
61
|
-
className: Accordion_module.content,
|
|
62
67
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63
68
|
className: Accordion_module.contentInner,
|
|
64
69
|
"data-testid": dataTestId?.content,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.cjs","sources":["../../../src/accordion/Accordion.tsx"],"sourcesContent":["import {\n useId,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react'\n\nimport { IconChevronDown
|
|
1
|
+
{"version":3,"file":"Accordion.cjs","sources":["../../../src/accordion/Accordion.tsx"],"sourcesContent":["import {\n useId,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react'\n\nimport { usePresence } from '../hooks'\nimport { IconChevronDown } from '../icons'\nimport cn from 'classnames'\n\nimport styles from './Accordion.module.css'\n\nexport type AccordionDataTestId = {\n root?: string\n header?: string\n title?: string\n content?: string\n}\n\nexport type AccordionProps = Omit<ComponentPropsWithoutRef<'div'>, 'title'> & {\n title: ReactNode\n /** Bottom divider; turn it off on the last item of a list. */\n border?: boolean\n defaultExpanded?: boolean\n /** Controlled mode, pair with `onExpandedChange`. */\n expanded?: boolean\n onExpandedChange?: (expanded: boolean) => void\n dataTestId?: AccordionDataTestId\n}\n\n/** Collapsible section, uncontrolled by default; pass `expanded` + `onExpandedChange` to drive it from your own state. */\nexport const Accordion = ({\n title,\n border = true,\n defaultExpanded = false,\n expanded,\n onExpandedChange,\n children,\n className,\n dataTestId,\n ...rest\n}: AccordionProps) => {\n const [uncontrolledExpanded, setUncontrolledExpanded] =\n useState(defaultExpanded)\n const isExpanded = expanded ?? uncontrolledExpanded\n const contentId = useId()\n const { ref: presenceRef, motionProps } = usePresence<HTMLDivElement>(\n isExpanded,\n { keepMounted: true },\n )\n\n const handleToggle = () => {\n const next = !isExpanded\n if (expanded == null) setUncontrolledExpanded(next)\n onExpandedChange?.(next)\n }\n\n return (\n <div\n className={cn(styles.accordion, className, {\n [styles.borderless]: !border,\n })}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <button\n type='button'\n className={styles.header}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n onClick={handleToggle}\n data-testid={dataTestId?.header}\n >\n <span className={styles.title} data-testid={dataTestId?.title}>\n {title}\n </span>\n <span\n className={cn(styles.chevron, isExpanded && styles.chevronOpen)}\n aria-hidden='true'\n >\n <IconChevronDown />\n </span>\n </button>\n <div\n id={contentId}\n ref={presenceRef}\n className={styles.contentWrapper}\n {...motionProps}\n >\n <div>\n <div\n className={styles.contentInner}\n data-testid={dataTestId?.content}\n >\n {children}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nAccordion.displayName = 'Accordion'\n"],"names":["Accordion","_ref","title","border","defaultExpanded","expanded","onExpandedChange","children","className","dataTestId","rest","uncontrolledExpanded","setUncontrolledExpanded","useState","isExpanded","contentId","useId","ref","presenceRef","motionProps","usePresence","keepMounted","handleToggle","next","_jsxs","cn","styles","accordion","borderless","root","type","header","onClick","_jsx","chevron","chevronOpen","IconChevronDown","id","contentWrapper","contentInner","content","displayName"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const styles = {"accordion":"Accordion-module_accordion__Wzyid","borderless":"Accordion-module_borderless__AX3pr","header":"Accordion-module_header__xrik8","title":"Accordion-module_title__n-YUT","chevron":"Accordion-module_chevron__oFGVg","
|
|
3
|
+
const styles = {"accordion":"Accordion-module_accordion__Wzyid","borderless":"Accordion-module_borderless__AX3pr","header":"Accordion-module_header__xrik8","title":"Accordion-module_title__n-YUT","chevron":"Accordion-module_chevron__oFGVg","chevronOpen":"Accordion-module_chevronOpen__Lq6B4","contentWrapper":"Accordion-module_contentWrapper__UEl1o","contentInner":"Accordion-module_contentInner__9z222"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=Accordion.module.css.cjs.map
|
|
@@ -7,7 +7,7 @@ const cn = require('classnames');
|
|
|
7
7
|
const surface_module = require('../utils/surface.module.css.cjs');
|
|
8
8
|
const AddressButton_module = require('./AddressButton.module.css.cjs');
|
|
9
9
|
const jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
const
|
|
10
|
+
const Spinner = require('../spinner/Spinner.cjs');
|
|
11
11
|
const Address = require('../address/Address.cjs');
|
|
12
12
|
|
|
13
13
|
/** Pill button showing an identicon and the trimmed address. */
|
|
@@ -32,8 +32,9 @@ const AddressButton = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
32
32
|
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
33
33
|
className: AddressButton_module.slot,
|
|
34
34
|
"aria-hidden": "true",
|
|
35
|
-
children: /*#__PURE__*/jsxRuntime.jsx(
|
|
36
|
-
|
|
35
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Spinner.Spinner, {
|
|
36
|
+
size: "sm",
|
|
37
|
+
decorative: true
|
|
37
38
|
})
|
|
38
39
|
}), "Loading"]
|
|
39
40
|
}) : /*#__PURE__*/jsxRuntime.jsx(Address.Address, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressButton.cjs","sources":["../../../src/address-button/AddressButton.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react'\n\nimport cn from 'classnames'\n\nimport { Address } from '../address'\nimport {
|
|
1
|
+
{"version":3,"file":"AddressButton.cjs","sources":["../../../src/address-button/AddressButton.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react'\n\nimport cn from 'classnames'\n\nimport { Address } from '../address'\nimport { Spinner } from '../spinner'\nimport surfaceStyles from '../utils/surface.module.css'\nimport styles from './AddressButton.module.css'\n\nexport type AddressButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'children'\n> & {\n address: string\n symbols?: number\n loading?: boolean\n}\n\n/** Pill button showing an identicon and the trimmed address. */\nexport const AddressButton = forwardRef<HTMLButtonElement, AddressButtonProps>(\n (\n {\n address,\n symbols,\n loading = false,\n disabled = false,\n className,\n type = 'button',\n ...rest\n },\n ref,\n ) => (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cn(\n surfaceStyles.surface,\n styles.button,\n loading && !disabled && styles.loading,\n className,\n )}\n {...rest}\n >\n {loading ? (\n <>\n <span className={styles.slot} aria-hidden='true'>\n <Spinner size='sm' decorative />\n </span>\n Loading\n </>\n ) : (\n <Address address={address} symbols={symbols} identicon={28} />\n )}\n </button>\n ),\n)\n\nAddressButton.displayName = 'AddressButton'\n"],"names":["AddressButton","forwardRef","_ref","ref","address","symbols","loading","disabled","className","type","rest","_jsx","undefined","cn","surfaceStyles","surface","styles","button","children","_jsxs","_Fragment","slot","Spinner","size","decorative","Address","identicon","displayName"],"mappings":";;;;;;;;;;;;AAkBA;AACO,MAAMA,aAAa,gBAAGC,gBAAU,CACrC,CAAAC,IAAA,EAUEC,GAAG,KAAA;EAAA,IATH;IACEC,OAAO;IACPC,OAAO;AACPC,IAAAA,OAAO,GAAG,KAAK;AACfC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,SAAS;AACTC,IAAAA,IAAI,GAAG,QAAQ;IACf,GAAGC,IAAAA;AACL,GAAC,GAAAR,IAAA,CAAA;AAAA,EAAA,oBAGDS,cAAA,CAAA,QAAA,EAAA;AACER,IAAAA,GAAG,EAAEA,GAAI;AACTM,IAAAA,IAAI,EAAEA,IAAK;IACXF,QAAQ,EAAEA,QAAQ,IAAID,OAAQ;IAC9B,WAAWA,EAAAA,OAAO,IAAIM,SAAU;IAChCJ,SAAS,EAAEK,EAAE,CACXC,cAAa,CAACC,OAAO,EACrBC,oBAAM,CAACC,MAAM,EACbX,OAAO,IAAI,CAACC,QAAQ,IAAIS,oBAAM,CAACV,OAAO,EACtCE,SACF,CAAE;AAAA,IAAA,GACEE,IAAI;AAAAQ,IAAAA,QAAA,EAEPZ,OAAO,gBACNa,eAAA,CAAAC,mBAAA,EAAA;AAAAF,MAAAA,QAAA,gBACEP,cAAA,CAAA,MAAA,EAAA;QAAMH,SAAS,EAAEQ,oBAAM,CAACK,IAAK;AAAC,QAAA,aAAA,EAAY,MAAM;QAAAH,QAAA,eAC9CP,cAAA,CAACW,eAAO,EAAA;AAACC,UAAAA,IAAI,EAAC,IAAI;UAACC,UAAU,EAAA,IAAA;SAAE,CAAA;AAAC,OAC5B,CAAC,EAET,SAAA,CAAA;AAAA,KAAE,CAAC,gBAEHb,cAAA,CAACc,eAAO,EAAA;AAACrB,MAAAA,OAAO,EAAEA,OAAQ;AAACC,MAAAA,OAAO,EAAEA,OAAQ;AAACqB,MAAAA,SAAS,EAAE,EAAA;KAAK,CAAA;AAC9D,GACK,CAAC,CAAA;AAAA,CAEb,EAAC;AAED1B,aAAa,CAAC2B,WAAW,GAAG,eAAe;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const styles = {"button":"AddressButton-module_button__cNJUm","loading":"AddressButton-module_loading__TmxUZ","slot":"AddressButton-module_slot__A5Xbe"
|
|
3
|
+
const styles = {"button":"AddressButton-module_button__cNJUm","loading":"AddressButton-module_loading__TmxUZ","slot":"AddressButton-module_slot__A5Xbe"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=AddressButton.module.css.cjs.map
|
package/dist/cjs/badge/Badge.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.cjs","sources":["../../../src/badge/Badge.tsx"],"sourcesContent":["import cn from 'classnames'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport styles from './Badge.module.css'\n\nexport type BadgeDataTestId = {\n root?: string\n icon?: string\n}\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n /** Optional glyph before the label. Omitted entirely when not passed. */\n icon?: ReactNode\n dataTestId?: BadgeDataTestId\n}\n\n/** Bordered pill for a single trust/verification marker (audited, verified). */\nexport const Badge = ({\n icon,\n className,\n children,\n dataTestId,\n ...rest\n}: BadgeProps) => (\n <span\n className={cn(styles.badge, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon && (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n )}\n {children}
|
|
1
|
+
{"version":3,"file":"Badge.cjs","sources":["../../../src/badge/Badge.tsx"],"sourcesContent":["import cn from 'classnames'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport styles from './Badge.module.css'\n\nexport type BadgeDataTestId = {\n root?: string\n icon?: string\n}\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> & {\n /** Optional glyph before the label. Omitted entirely when not passed. */\n icon?: ReactNode\n dataTestId?: BadgeDataTestId\n}\n\n/** Bordered pill for a single trust/verification marker (audited, verified). */\nexport const Badge = ({\n icon,\n className,\n children,\n dataTestId,\n ...rest\n}: BadgeProps) => (\n <span\n className={cn(styles.badge, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n {icon && (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.icon}\n >\n {icon}\n </span>\n )}\n <span className={styles.label}>{children}</span>\n </span>\n)\n"],"names":["Badge","_ref","icon","className","children","dataTestId","rest","_jsxs","cn","styles","badge","root","_jsx","label"],"mappings":";;;;;;;;AAeA;AACO,MAAMA,KAAK,GAAGC,IAAA,IAAA;EAAA,IAAC;IACpBC,IAAI;IACJC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACV,GAAGC,IAAAA;AACO,GAAC,GAAAL,IAAA,CAAA;AAAA,EAAA,oBACXM,eAAA,CAAA,MAAA,EAAA;IACEJ,SAAS,EAAEK,EAAE,CAACC,YAAM,CAACC,KAAK,EAAEP,SAAS,CAAE;IACvC,aAAaE,EAAAA,UAAU,EAAEM,IAAK;AAAA,IAAA,GAC1BL,IAAI;IAAAF,QAAA,EAAA,CAEPF,IAAI,iBACHU,cAAA,CAAA,MAAA,EAAA;MACET,SAAS,EAAEM,YAAM,CAACP,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaG,EAAAA,UAAU,EAAEH,IAAK;AAAAE,MAAAA,QAAA,EAE7BF,IAAAA;KACG,CACP,eACDU,cAAA,CAAA,MAAA,EAAA;MAAMT,SAAS,EAAEM,YAAM,CAACI,KAAM;AAAAT,MAAAA,QAAA,EAAEA,QAAAA;AAAQ,KAAO,CAAC,CAAA;AAAA,GAC5C,CAAC,CAAA;AAAA;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const styles = {"badge":"Badge-module_badge__ikDSa","icon":"Badge-module_icon__lkt9n"};
|
|
3
|
+
const styles = {"badge":"Badge-module_badge__ikDSa","label":"Badge-module_label__FUOSJ","icon":"Badge-module_icon__lkt9n"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=Badge.module.css.cjs.map
|
|
@@ -6,7 +6,7 @@ const cn = require('classnames');
|
|
|
6
6
|
const Banner_module = require('./Banner.module.css.cjs');
|
|
7
7
|
const jsxRuntime = require('react/jsx-runtime');
|
|
8
8
|
|
|
9
|
-
/** Compact card row: icon, title and description, with an optional `action` slot on the right (usually a `Button`). */
|
|
9
|
+
/** Compact card row: icon, title and description, with an optional `action` slot on the right (usually a `Button`). Needs a definite-width parent (it fills it). */
|
|
10
10
|
const Banner = _ref => {
|
|
11
11
|
let {
|
|
12
12
|
icon,
|
|
@@ -17,33 +17,36 @@ const Banner = _ref => {
|
|
|
17
17
|
dataTestId,
|
|
18
18
|
...rest
|
|
19
19
|
} = _ref;
|
|
20
|
-
return /*#__PURE__*/jsxRuntime.
|
|
20
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21
21
|
className: cn(Banner_module.banner, className),
|
|
22
22
|
"data-testid": dataTestId?.root,
|
|
23
23
|
...rest,
|
|
24
|
-
children:
|
|
25
|
-
className: Banner_module.
|
|
26
|
-
children: [
|
|
27
|
-
className: Banner_module.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
className: Banner_module.
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
24
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
25
|
+
className: Banner_module.inner,
|
|
26
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
27
|
+
className: Banner_module.content,
|
|
28
|
+
children: [icon ? /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
29
|
+
className: Banner_module.icon,
|
|
30
|
+
"data-testid": dataTestId?.icon,
|
|
31
|
+
children: icon
|
|
32
|
+
}) : null, /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
33
|
+
className: Banner_module.text,
|
|
34
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("p", {
|
|
35
|
+
className: Banner_module.title,
|
|
36
|
+
"data-testid": dataTestId?.title,
|
|
37
|
+
children: title
|
|
38
|
+
}), description ? /*#__PURE__*/jsxRuntime.jsx("p", {
|
|
39
|
+
className: Banner_module.description,
|
|
40
|
+
"data-testid": dataTestId?.description,
|
|
41
|
+
children: description
|
|
42
|
+
}) : null]
|
|
43
|
+
})]
|
|
44
|
+
}), action ? /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
45
|
+
className: Banner_module.action,
|
|
46
|
+
"data-testid": dataTestId?.action,
|
|
47
|
+
children: action
|
|
48
|
+
}) : null]
|
|
49
|
+
})
|
|
47
50
|
});
|
|
48
51
|
};
|
|
49
52
|
Banner.displayName = 'Banner';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Banner.cjs","sources":["../../../src/banner/Banner.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Banner.module.css'\n\nexport type BannerDataTestId = {\n root?: string\n icon?: string\n title?: string\n description?: string\n action?: string\n}\n\nexport type BannerProps = ComponentPropsWithoutRef<'div'> & {\n icon?: ReactNode\n title: ReactNode\n description?: ReactNode\n action?: ReactNode\n dataTestId?: BannerDataTestId\n}\n\n/** Compact card row: icon, title and description, with an optional `action` slot on the right (usually a `Button`). */\nexport const Banner = ({\n icon,\n title,\n description,\n action,\n className,\n dataTestId,\n ...rest\n}: BannerProps) => (\n <div\n className={cn(styles.banner, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.
|
|
1
|
+
{"version":3,"file":"Banner.cjs","sources":["../../../src/banner/Banner.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport styles from './Banner.module.css'\n\nexport type BannerDataTestId = {\n root?: string\n icon?: string\n title?: string\n description?: string\n action?: string\n}\n\nexport type BannerProps = ComponentPropsWithoutRef<'div'> & {\n icon?: ReactNode\n title: ReactNode\n description?: ReactNode\n action?: ReactNode\n dataTestId?: BannerDataTestId\n}\n\n/** Compact card row: icon, title and description, with an optional `action` slot on the right (usually a `Button`). Needs a definite-width parent (it fills it). */\nexport const Banner = ({\n icon,\n title,\n description,\n action,\n className,\n dataTestId,\n ...rest\n}: BannerProps) => (\n <div\n className={cn(styles.banner, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <div className={styles.inner}>\n <div className={styles.content}>\n {icon ? (\n <span className={styles.icon} data-testid={dataTestId?.icon}>\n {icon}\n </span>\n ) : null}\n <div className={styles.text}>\n <p className={styles.title} data-testid={dataTestId?.title}>\n {title}\n </p>\n {description ? (\n <p\n className={styles.description}\n data-testid={dataTestId?.description}\n >\n {description}\n </p>\n ) : null}\n </div>\n </div>\n {action ? (\n <div className={styles.action} data-testid={dataTestId?.action}>\n {action}\n </div>\n ) : null}\n </div>\n </div>\n)\n\nBanner.displayName = 'Banner'\n"],"names":["Banner","_ref","icon","title","description","action","className","dataTestId","rest","_jsx","cn","styles","banner","root","children","_jsxs","inner","content","text","displayName"],"mappings":";;;;;;;;AAsBA;AACO,MAAMA,MAAM,GAAGC,IAAA,IAAA;EAAA,IAAC;IACrBC,IAAI;IACJC,KAAK;IACLC,WAAW;IACXC,MAAM;IACNC,SAAS;IACTC,UAAU;IACV,GAAGC,IAAAA;AACQ,GAAC,GAAAP,IAAA,CAAA;AAAA,EAAA,oBACZQ,cAAA,CAAA,KAAA,EAAA;IACEH,SAAS,EAAEI,EAAE,CAACC,aAAM,CAACC,MAAM,EAAEN,SAAS,CAAE;IACxC,aAAaC,EAAAA,UAAU,EAAEM,IAAK;AAAA,IAAA,GAC1BL,IAAI;AAAAM,IAAAA,QAAA,eAERC,eAAA,CAAA,KAAA,EAAA;MAAKT,SAAS,EAAEK,aAAM,CAACK,KAAM;AAAAF,MAAAA,QAAA,gBAC3BC,eAAA,CAAA,KAAA,EAAA;QAAKT,SAAS,EAAEK,aAAM,CAACM,OAAQ;QAAAH,QAAA,EAAA,CAC5BZ,IAAI,gBACHO,cAAA,CAAA,MAAA,EAAA;UAAMH,SAAS,EAAEK,aAAM,CAACT,IAAK;UAAC,aAAaK,EAAAA,UAAU,EAAEL,IAAK;AAAAY,UAAAA,QAAA,EACzDZ,IAAAA;AAAI,SACD,CAAC,GACL,IAAI,eACRa,eAAA,CAAA,KAAA,EAAA;UAAKT,SAAS,EAAEK,aAAM,CAACO,IAAK;AAAAJ,UAAAA,QAAA,gBAC1BL,cAAA,CAAA,GAAA,EAAA;YAAGH,SAAS,EAAEK,aAAM,CAACR,KAAM;YAAC,aAAaI,EAAAA,UAAU,EAAEJ,KAAM;AAAAW,YAAAA,QAAA,EACxDX,KAAAA;AAAK,WACL,CAAC,EACHC,WAAW,gBACVK,cAAA,CAAA,GAAA,EAAA;YACEH,SAAS,EAAEK,aAAM,CAACP,WAAY;YAC9B,aAAaG,EAAAA,UAAU,EAAEH,WAAY;AAAAU,YAAAA,QAAA,EAEpCV,WAAAA;WACA,CAAC,GACF,IAAI,CAAA;AAAA,SACL,CAAC,CAAA;AAAA,OACH,CAAC,EACLC,MAAM,gBACLI,cAAA,CAAA,KAAA,EAAA;QAAKH,SAAS,EAAEK,aAAM,CAACN,MAAO;QAAC,aAAaE,EAAAA,UAAU,EAAEF,MAAO;AAAAS,QAAAA,QAAA,EAC5DT,MAAAA;OACE,CAAC,GACJ,IAAI,CAAA;KACL,CAAA;AAAC,GACH,CAAC,CAAA;AAAA,EACP;AAEDL,MAAM,CAACmB,WAAW,GAAG,QAAQ;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const styles = {"banner":"Banner-module_banner__bQhms","content":"Banner-module_content__44TzS","icon":"Banner-module_icon__PkyAA","text":"Banner-module_text__2q-km","title":"Banner-module_title__gUKq0","description":"Banner-module_description__tosgg","action":"Banner-module_action__OKt2C"};
|
|
3
|
+
const styles = {"banner":"Banner-module_banner__bQhms","inner":"Banner-module_inner__mahaD","content":"Banner-module_content__44TzS","icon":"Banner-module_icon__PkyAA","text":"Banner-module_text__2q-km","title":"Banner-module_title__gUKq0","description":"Banner-module_description__tosgg","action":"Banner-module_action__OKt2C"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=Banner.module.css.cjs.map
|
|
@@ -8,6 +8,7 @@ const Breadcrumbs_module = require('./Breadcrumbs.module.css.cjs');
|
|
|
8
8
|
const jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
const useEdgeFade = require('../hooks/useEdgeFade.cjs');
|
|
10
10
|
const useIsomorphicLayoutEffect = require('../hooks/useIsomorphicLayoutEffect.cjs');
|
|
11
|
+
const useResizeObserver = require('../hooks/useResizeObserver.cjs');
|
|
11
12
|
const ActionElement = require('../utils/ActionElement.cjs');
|
|
12
13
|
const IconChevronRight = require('../icons/components/base/IconChevronRight.cjs');
|
|
13
14
|
|
|
@@ -33,13 +34,14 @@ const BreadcrumbsTrail = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
33
34
|
} = _ref;
|
|
34
35
|
const listRef = react.useRef(null);
|
|
35
36
|
const {
|
|
36
|
-
sync
|
|
37
|
-
onFocus
|
|
37
|
+
sync
|
|
38
38
|
} = useEdgeFade.useEdgeFade(listRef);
|
|
39
39
|
const trailRef = react.useRef();
|
|
40
|
+
const hiddenRef = react.useRef();
|
|
40
41
|
useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
|
|
41
42
|
const list = listRef.current;
|
|
42
43
|
if (!list) return;
|
|
44
|
+
hiddenRef.current ??= list.clientWidth === 0;
|
|
43
45
|
const trail = Array.from(list.children, li => li.textContent).join('\u0000');
|
|
44
46
|
if (trail !== trailRef.current) {
|
|
45
47
|
trailRef.current = trail;
|
|
@@ -49,20 +51,15 @@ const BreadcrumbsTrail = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
49
51
|
});
|
|
50
52
|
|
|
51
53
|
// A list mounted hidden (display: none) can't scroll on mount, so scroll once it gets a width.
|
|
52
|
-
|
|
54
|
+
useResizeObserver.useResizeObserver(listRef, () => {
|
|
53
55
|
const list = listRef.current;
|
|
54
|
-
if (!list
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sync();
|
|
62
|
-
});
|
|
63
|
-
observer.observe(list);
|
|
64
|
-
return () => observer.disconnect();
|
|
65
|
-
}, [sync]);
|
|
56
|
+
if (!list) return;
|
|
57
|
+
const wasHidden = hiddenRef.current;
|
|
58
|
+
hiddenRef.current = list.clientWidth === 0;
|
|
59
|
+
if (!wasHidden || hiddenRef.current) return;
|
|
60
|
+
list.scrollLeft = list.scrollWidth;
|
|
61
|
+
sync();
|
|
62
|
+
});
|
|
66
63
|
return /*#__PURE__*/jsxRuntime.jsx("nav", {
|
|
67
64
|
ref: ref,
|
|
68
65
|
"aria-label": "Breadcrumb",
|
|
@@ -73,8 +70,6 @@ const BreadcrumbsTrail = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
73
70
|
ref: listRef,
|
|
74
71
|
className: Breadcrumbs_module.list,
|
|
75
72
|
"data-testid": dataTestId?.list,
|
|
76
|
-
onScroll: sync,
|
|
77
|
-
onFocus: onFocus,
|
|
78
73
|
onPointerOver: syncTitle,
|
|
79
74
|
children: items.map((_ref2, index) => {
|
|
80
75
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs.cjs","sources":["../../../src/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef } from 'react'\nimport type { HTMLAttributes, PointerEvent, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport { useEdgeFade, useIsomorphicLayoutEffect } from '../hooks'\nimport { IconChevronRight } from '../icons'\nimport { ActionElement, type ActionElementProps } from '../utils'\nimport styles from './Breadcrumbs.module.css'\n\nexport type BreadcrumbItemDataTestId = { root?: string }\n\nexport type BreadcrumbItem = ActionElementProps & {\n label: ReactNode\n children?: never\n /** Test id of the item's label element, for link, plain and current items alike. */\n dataTestId?: BreadcrumbItemDataTestId\n}\n\nexport type BreadcrumbsDataTestId = { root?: string; list?: string }\n\nexport type BreadcrumbsProps = HTMLAttributes<HTMLElement> & {\n /** `href` renders a link, only `onClick` a button, anything else (and `disabled`) plain text; the last item is the current page; an empty array renders nothing. */\n items: BreadcrumbItem[]\n dataTestId?: BreadcrumbsDataTestId\n}\n\nconst ANCHOR_ONLY = [\n 'href',\n 'onClick',\n 'disabled',\n 'external',\n 'linkProps',\n 'type',\n 'target',\n 'rel',\n 'download',\n] as const\n\nconst spanAttrs = (props: Omit<BreadcrumbItem, 'label'>) => {\n const attrs: Record<string, unknown> = { ...props }\n for (const key of ANCHOR_ONLY) delete attrs[key]\n return attrs as HTMLAttributes<HTMLSpanElement>\n}\n\nconst syncTitle = (e: PointerEvent<HTMLElement>) => {\n const el = (e.target as Element).closest('[data-label]')\n if (!el) return\n if (el.scrollWidth > el.clientWidth)\n el.setAttribute('title', el.textContent ?? '')\n else el.removeAttribute('title')\n}\n\nconst BreadcrumbsTrail = forwardRef<HTMLElement, BreadcrumbsProps>(\n ({ items, className, dataTestId, ...rest }, ref) => {\n const listRef = useRef<HTMLOListElement>(null)\n\n const { sync, onFocus } = useEdgeFade(listRef)\n const trailRef = useRef<string>()\n\n useIsomorphicLayoutEffect(() => {\n const list = listRef.current\n if (!list) return\n const trail = Array.from(list.children, (li) => li.textContent).join(\n '\\u0000',\n )\n if (trail !== trailRef.current) {\n trailRef.current = trail\n list.scrollLeft = list.scrollWidth\n }\n sync()\n })\n\n // A list mounted hidden (display: none) can't scroll on mount, so scroll once it gets a width.\n useEffect(() => {\n const list = listRef.current\n if (!list || typeof ResizeObserver === 'undefined') return\n let hidden = list.clientWidth === 0\n const observer = new ResizeObserver(() => {\n const wasHidden = hidden\n hidden = list.clientWidth === 0\n if (!wasHidden || hidden) return\n list.scrollLeft = list.scrollWidth\n sync()\n })\n observer.observe(list)\n return () => observer.disconnect()\n }, [sync])\n\n return (\n <nav\n ref={ref}\n aria-label='Breadcrumb'\n className={cn(styles.nav, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <ol\n ref={listRef}\n className={styles.list}\n data-testid={dataTestId?.list}\n onScroll={sync}\n onFocus={onFocus}\n onPointerOver={syncTitle}\n >\n {items.map(\n ({ label, dataTestId: itemTestId, ...itemProps }, index) => {\n const current = index === items.length - 1\n const labelAttrs =\n itemProps.title === undefined ? { 'data-label': '' } : {}\n const interactive =\n !current &&\n (itemProps.href !== undefined ||\n itemProps.onClick !== undefined) &&\n !itemProps.disabled\n return (\n <li key={index} className={styles.item}>\n {interactive ? (\n <ActionElement\n data-testid={itemTestId?.root}\n {...itemProps}\n {...labelAttrs}\n className={cn(\n styles.label,\n styles.link,\n itemProps.className,\n )}\n >\n {label}\n </ActionElement>\n ) : (\n <span\n data-testid={itemTestId?.root}\n {...spanAttrs(itemProps)}\n {...labelAttrs}\n {...(current && { 'aria-current': 'page' as const })}\n className={cn(\n styles.label,\n current && styles.current,\n itemProps.className,\n )}\n >\n {label}\n </span>\n )}\n {!current && (\n <IconChevronRight\n className={styles.separator}\n aria-hidden='true'\n />\n )}\n </li>\n )\n },\n )}\n </ol>\n </nav>\n )\n },\n)\n\nBreadcrumbsTrail.displayName = 'BreadcrumbsTrail'\n\n/** Trail of ancestors ending in the current page (`aria-current=\"page\"`); scrolls horizontally with an edge fade when it overflows. */\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) =>\n // Separate component so its mount effects attach once the list exists.\n props.items.length === 0 ? null : <BreadcrumbsTrail ref={ref} {...props} />,\n)\n\nBreadcrumbs.displayName = 'Breadcrumbs'\n"],"names":["ANCHOR_ONLY","spanAttrs","props","attrs","key","syncTitle","e","el","target","closest","scrollWidth","clientWidth","setAttribute","textContent","removeAttribute","BreadcrumbsTrail","forwardRef","_ref","ref","items","className","dataTestId","rest","listRef","useRef","sync","onFocus","useEdgeFade","trailRef","useIsomorphicLayoutEffect","list","current","trail","Array","from","children","li","join","scrollLeft","useEffect","ResizeObserver","hidden","observer","wasHidden","observe","disconnect","_jsx","cn","styles","nav","root","onScroll","onPointerOver","map","_ref2","index","label","itemTestId","itemProps","length","labelAttrs","title","undefined","interactive","href","onClick","disabled","_jsxs","item","ActionElement","link","IconChevronRight","separator","displayName","Breadcrumbs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.cjs","sources":["../../../src/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react'\nimport type { HTMLAttributes, PointerEvent, ReactNode } from 'react'\n\nimport cn from 'classnames'\n\nimport {\n useEdgeFade,\n useIsomorphicLayoutEffect,\n useResizeObserver,\n} from '../hooks'\nimport { IconChevronRight } from '../icons'\nimport { ActionElement, type ActionElementProps } from '../utils'\nimport styles from './Breadcrumbs.module.css'\n\nexport type BreadcrumbItemDataTestId = { root?: string }\n\nexport type BreadcrumbItem = ActionElementProps & {\n label: ReactNode\n children?: never\n /** Test id of the item's label element, for link, plain and current items alike. */\n dataTestId?: BreadcrumbItemDataTestId\n}\n\nexport type BreadcrumbsDataTestId = { root?: string; list?: string }\n\nexport type BreadcrumbsProps = HTMLAttributes<HTMLElement> & {\n /** `href` renders a link, only `onClick` a button, anything else (and `disabled`) plain text; the last item is the current page; an empty array renders nothing. */\n items: BreadcrumbItem[]\n dataTestId?: BreadcrumbsDataTestId\n}\n\nconst ANCHOR_ONLY = [\n 'href',\n 'onClick',\n 'disabled',\n 'external',\n 'linkProps',\n 'type',\n 'target',\n 'rel',\n 'download',\n] as const\n\nconst spanAttrs = (props: Omit<BreadcrumbItem, 'label'>) => {\n const attrs: Record<string, unknown> = { ...props }\n for (const key of ANCHOR_ONLY) delete attrs[key]\n return attrs as HTMLAttributes<HTMLSpanElement>\n}\n\nconst syncTitle = (e: PointerEvent<HTMLElement>) => {\n const el = (e.target as Element).closest('[data-label]')\n if (!el) return\n if (el.scrollWidth > el.clientWidth)\n el.setAttribute('title', el.textContent ?? '')\n else el.removeAttribute('title')\n}\n\nconst BreadcrumbsTrail = forwardRef<HTMLElement, BreadcrumbsProps>(\n ({ items, className, dataTestId, ...rest }, ref) => {\n const listRef = useRef<HTMLOListElement>(null)\n\n const { sync } = useEdgeFade(listRef)\n const trailRef = useRef<string>()\n const hiddenRef = useRef<boolean>()\n\n useIsomorphicLayoutEffect(() => {\n const list = listRef.current\n if (!list) return\n hiddenRef.current ??= list.clientWidth === 0\n const trail = Array.from(list.children, (li) => li.textContent).join(\n '\\u0000',\n )\n if (trail !== trailRef.current) {\n trailRef.current = trail\n list.scrollLeft = list.scrollWidth\n }\n sync()\n })\n\n // A list mounted hidden (display: none) can't scroll on mount, so scroll once it gets a width.\n useResizeObserver(listRef, () => {\n const list = listRef.current\n if (!list) return\n const wasHidden = hiddenRef.current\n hiddenRef.current = list.clientWidth === 0\n if (!wasHidden || hiddenRef.current) return\n list.scrollLeft = list.scrollWidth\n sync()\n })\n\n return (\n <nav\n ref={ref}\n aria-label='Breadcrumb'\n className={cn(styles.nav, className)}\n data-testid={dataTestId?.root}\n {...rest}\n >\n <ol\n ref={listRef}\n className={styles.list}\n data-testid={dataTestId?.list}\n onPointerOver={syncTitle}\n >\n {items.map(\n ({ label, dataTestId: itemTestId, ...itemProps }, index) => {\n const current = index === items.length - 1\n const labelAttrs =\n itemProps.title === undefined ? { 'data-label': '' } : {}\n const interactive =\n !current &&\n (itemProps.href !== undefined ||\n itemProps.onClick !== undefined) &&\n !itemProps.disabled\n return (\n <li key={index} className={styles.item}>\n {interactive ? (\n <ActionElement\n data-testid={itemTestId?.root}\n {...itemProps}\n {...labelAttrs}\n className={cn(\n styles.label,\n styles.link,\n itemProps.className,\n )}\n >\n {label}\n </ActionElement>\n ) : (\n <span\n data-testid={itemTestId?.root}\n {...spanAttrs(itemProps)}\n {...labelAttrs}\n {...(current && { 'aria-current': 'page' as const })}\n className={cn(\n styles.label,\n current && styles.current,\n itemProps.className,\n )}\n >\n {label}\n </span>\n )}\n {!current && (\n <IconChevronRight\n className={styles.separator}\n aria-hidden='true'\n />\n )}\n </li>\n )\n },\n )}\n </ol>\n </nav>\n )\n },\n)\n\nBreadcrumbsTrail.displayName = 'BreadcrumbsTrail'\n\n/** Trail of ancestors ending in the current page (`aria-current=\"page\"`); scrolls horizontally with an edge fade when it overflows. */\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n (props, ref) =>\n // Separate component so its mount effects attach once the list exists.\n props.items.length === 0 ? null : <BreadcrumbsTrail ref={ref} {...props} />,\n)\n\nBreadcrumbs.displayName = 'Breadcrumbs'\n"],"names":["ANCHOR_ONLY","spanAttrs","props","attrs","key","syncTitle","e","el","target","closest","scrollWidth","clientWidth","setAttribute","textContent","removeAttribute","BreadcrumbsTrail","forwardRef","_ref","ref","items","className","dataTestId","rest","listRef","useRef","sync","useEdgeFade","trailRef","hiddenRef","useIsomorphicLayoutEffect","list","current","trail","Array","from","children","li","join","scrollLeft","useResizeObserver","wasHidden","_jsx","cn","styles","nav","root","onPointerOver","map","_ref2","index","label","itemTestId","itemProps","length","labelAttrs","title","undefined","interactive","href","onClick","disabled","_jsxs","item","ActionElement","link","IconChevronRight","separator","displayName","Breadcrumbs"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAMA,WAAW,GAAG,CAClB,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,MAAM,EACN,QAAQ,EACR,KAAK,EACL,UAAU,CACF,CAAA;AAEV,MAAMC,SAAS,GAAIC,KAAoC,IAAK;AAC1D,EAAA,MAAMC,KAA8B,GAAG;IAAE,GAAGD,KAAAA;GAAO,CAAA;EACnD,KAAK,MAAME,GAAG,IAAIJ,WAAW,EAAE,OAAOG,KAAK,CAACC,GAAG,CAAC,CAAA;AAChD,EAAA,OAAOD,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAME,SAAS,GAAIC,CAA4B,IAAK;EAClD,MAAMC,EAAE,GAAID,CAAC,CAACE,MAAM,CAAaC,OAAO,CAAC,cAAc,CAAC,CAAA;EACxD,IAAI,CAACF,EAAE,EAAE,OAAA;EACT,IAAIA,EAAE,CAACG,WAAW,GAAGH,EAAE,CAACI,WAAW,EACjCJ,EAAE,CAACK,YAAY,CAAC,OAAO,EAAEL,EAAE,CAACM,WAAW,IAAI,EAAE,CAAC,CAC3CN,KAAAA,EAAE,CAACO,eAAe,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,MAAMC,gBAAgB,gBAAGC,gBAAU,CACjC,CAAAC,IAAA,EAA4CC,GAAG,KAAK;EAAA,IAAnD;IAAEC,KAAK;IAAEC,SAAS;IAAEC,UAAU;IAAE,GAAGC,IAAAA;AAAK,GAAC,GAAAL,IAAA,CAAA;AACxC,EAAA,MAAMM,OAAO,GAAGC,YAAM,CAAmB,IAAI,CAAC,CAAA;EAE9C,MAAM;AAAEC,IAAAA,IAAAA;AAAK,GAAC,GAAGC,uBAAW,CAACH,OAAO,CAAC,CAAA;AACrC,EAAA,MAAMI,QAAQ,GAAGH,YAAM,EAAU,CAAA;AACjC,EAAA,MAAMI,SAAS,GAAGJ,YAAM,EAAW,CAAA;AAEnCK,EAAAA,mDAAyB,CAAC,MAAM;AAC9B,IAAA,MAAMC,IAAI,GAAGP,OAAO,CAACQ,OAAO,CAAA;IAC5B,IAAI,CAACD,IAAI,EAAE,OAAA;AACXF,IAAAA,SAAS,CAACG,OAAO,KAAKD,IAAI,CAACnB,WAAW,KAAK,CAAC,CAAA;IAC5C,MAAMqB,KAAK,GAAGC,KAAK,CAACC,IAAI,CAACJ,IAAI,CAACK,QAAQ,EAAGC,EAAE,IAAKA,EAAE,CAACvB,WAAW,CAAC,CAACwB,IAAI,CAClE,QACF,CAAC,CAAA;AACD,IAAA,IAAIL,KAAK,KAAKL,QAAQ,CAACI,OAAO,EAAE;MAC9BJ,QAAQ,CAACI,OAAO,GAAGC,KAAK,CAAA;AACxBF,MAAAA,IAAI,CAACQ,UAAU,GAAGR,IAAI,CAACpB,WAAW,CAAA;AACpC,KAAA;AACAe,IAAAA,IAAI,EAAE,CAAA;AACR,GAAC,CAAC,CAAA;;AAEF;EACAc,mCAAiB,CAAChB,OAAO,EAAE,MAAM;AAC/B,IAAA,MAAMO,IAAI,GAAGP,OAAO,CAACQ,OAAO,CAAA;IAC5B,IAAI,CAACD,IAAI,EAAE,OAAA;AACX,IAAA,MAAMU,SAAS,GAAGZ,SAAS,CAACG,OAAO,CAAA;AACnCH,IAAAA,SAAS,CAACG,OAAO,GAAGD,IAAI,CAACnB,WAAW,KAAK,CAAC,CAAA;AAC1C,IAAA,IAAI,CAAC6B,SAAS,IAAIZ,SAAS,CAACG,OAAO,EAAE,OAAA;AACrCD,IAAAA,IAAI,CAACQ,UAAU,GAAGR,IAAI,CAACpB,WAAW,CAAA;AAClCe,IAAAA,IAAI,EAAE,CAAA;AACR,GAAC,CAAC,CAAA;AAEF,EAAA,oBACEgB,cAAA,CAAA,KAAA,EAAA;AACEvB,IAAAA,GAAG,EAAEA,GAAI;AACT,IAAA,YAAA,EAAW,YAAY;IACvBE,SAAS,EAAEsB,EAAE,CAACC,kBAAM,CAACC,GAAG,EAAExB,SAAS,CAAE;IACrC,aAAaC,EAAAA,UAAU,EAAEwB,IAAK;AAAA,IAAA,GAC1BvB,IAAI;AAAAa,IAAAA,QAAA,eAERM,cAAA,CAAA,IAAA,EAAA;AACEvB,MAAAA,GAAG,EAAEK,OAAQ;MACbH,SAAS,EAAEuB,kBAAM,CAACb,IAAK;MACvB,aAAaT,EAAAA,UAAU,EAAES,IAAK;AAC9BgB,MAAAA,aAAa,EAAEzC,SAAU;MAAA8B,QAAA,EAExBhB,KAAK,CAAC4B,GAAG,CACR,CAAAC,KAAA,EAAkDC,KAAK,KAAK;QAAA,IAA3D;UAAEC,KAAK;AAAE7B,UAAAA,UAAU,EAAE8B,UAAU;UAAE,GAAGC,SAAAA;AAAU,SAAC,GAAAJ,KAAA,CAAA;QAC9C,MAAMjB,OAAO,GAAGkB,KAAK,KAAK9B,KAAK,CAACkC,MAAM,GAAG,CAAC,CAAA;AAC1C,QAAA,MAAMC,UAAU,GACdF,SAAS,CAACG,KAAK,KAAKC,SAAS,GAAG;AAAE,UAAA,YAAY,EAAE,EAAA;SAAI,GAAG,EAAE,CAAA;QAC3D,MAAMC,WAAW,GACf,CAAC1B,OAAO,KACPqB,SAAS,CAACM,IAAI,KAAKF,SAAS,IAC3BJ,SAAS,CAACO,OAAO,KAAKH,SAAS,CAAC,IAClC,CAACJ,SAAS,CAACQ,QAAQ,CAAA;AACrB,QAAA,oBACEC,eAAA,CAAA,IAAA,EAAA;UAAgBzC,SAAS,EAAEuB,kBAAM,CAACmB,IAAK;AAAA3B,UAAAA,QAAA,EACpCsB,CAAAA,WAAW,gBACVhB,cAAA,CAACsB,2BAAa,EAAA;YACZ,aAAaZ,EAAAA,UAAU,EAAEN,IAAK;AAAA,YAAA,GAC1BO,SAAS;AAAA,YAAA,GACTE,UAAU;AACdlC,YAAAA,SAAS,EAAEsB,EAAE,CACXC,kBAAM,CAACO,KAAK,EACZP,kBAAM,CAACqB,IAAI,EACXZ,SAAS,CAAChC,SACZ,CAAE;AAAAe,YAAAA,QAAA,EAEDe,KAAAA;WACY,CAAC,gBAEhBT,cAAA,CAAA,MAAA,EAAA;YACE,aAAaU,EAAAA,UAAU,EAAEN,IAAK;YAAA,GAC1B5C,SAAS,CAACmD,SAAS,CAAC;AAAA,YAAA,GACpBE,UAAU;AAAA,YAAA,IACTvB,OAAO,IAAI;AAAE,cAAA,cAAc,EAAE,MAAA;aAAiB,CAAA;AACnDX,YAAAA,SAAS,EAAEsB,EAAE,CACXC,kBAAM,CAACO,KAAK,EACZnB,OAAO,IAAIY,kBAAM,CAACZ,OAAO,EACzBqB,SAAS,CAAChC,SACZ,CAAE;AAAAe,YAAAA,QAAA,EAEDe,KAAAA;AAAK,WACF,CACP,EACA,CAACnB,OAAO,iBACPU,cAAA,CAACwB,iCAAgB,EAAA;YACf7C,SAAS,EAAEuB,kBAAM,CAACuB,SAAU;YAC5B,aAAY,EAAA,MAAA;AAAM,WACnB,CACF,CAAA;AAAA,SAAA,EAlCMjB,KAmCL,CAAC,CAAA;OAGX,CAAA;KACE,CAAA;AAAC,GACF,CAAC,CAAA;AAEV,CACF,CAAC,CAAA;AAEDlC,gBAAgB,CAACoD,WAAW,GAAG,kBAAkB,CAAA;;AAEjD;AACO,MAAMC,WAAW,gBAAGpD,gBAAU,CACnC,CAACd,KAAK,EAAEgB,GAAG;AACT;AACAhB,KAAK,CAACiB,KAAK,CAACkC,MAAM,KAAK,CAAC,GAAG,IAAI,gBAAGZ,cAAA,CAAC1B,gBAAgB,EAAA;AAACG,EAAAA,GAAG,EAAEA,GAAI;EAAA,GAAKhB,KAAAA;AAAK,CAAG,CAC9E,EAAC;AAEDkE,WAAW,CAACD,WAAW,GAAG,aAAa;;;;"}
|
|
@@ -17,6 +17,7 @@ const Button = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
17
17
|
children,
|
|
18
18
|
variant = 'primary',
|
|
19
19
|
size = 'big',
|
|
20
|
+
fullWidth = false,
|
|
20
21
|
loading = false,
|
|
21
22
|
disabled = false,
|
|
22
23
|
iconLeft,
|
|
@@ -29,7 +30,7 @@ const Button = /*#__PURE__*/react.forwardRef((_ref, ref) => {
|
|
|
29
30
|
} = _ref;
|
|
30
31
|
return /*#__PURE__*/jsxRuntime.jsx(ActionElement.ActionElement, {
|
|
31
32
|
ref: ref,
|
|
32
|
-
className: cn(Button_module.button, Button_module[variant], Button_module[size], loading && !disabled && Button_module.loading, className),
|
|
33
|
+
className: cn(Button_module.button, Button_module[variant], Button_module[size], fullWidth && Button_module.fullWidth, loading && !disabled && Button_module.loading, className),
|
|
33
34
|
"data-testid": dataTestId?.root,
|
|
34
35
|
"aria-label": joinAriaLabel.joinAriaLabel(ariaLabel, counterLabel),
|
|
35
36
|
"aria-busy": loading || undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../../src/button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport cn from 'classnames'\n\nimport { ActionElement, joinAriaLabel } from '../utils'\nimport styles from './Button.module.css'\nimport { ButtonContent } from './ButtonContent'\nimport type {\n ButtonAsButtonProps,\n ButtonAsLinkProps,\n ButtonDataTestId,\n ButtonProps,\n ButtonSize,\n ButtonVariant,\n} from './types'\n\nexport type {\n ButtonAsButtonProps,\n ButtonAsLinkProps,\n ButtonDataTestId,\n ButtonProps,\n ButtonSize,\n ButtonVariant,\n}\n\n/** Fully rounded call to action; `size` is big (52px) or small (36px), `loading` swaps the icon slot for a spinner and disables it. With `href` it renders a link that routes through `LinkProvider`. */\nexport const Button = forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(\n (\n {\n className,\n children,\n variant = 'primary',\n size = 'big',\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n counter,\n counterLabel,\n dataTestId,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n ) => (\n <ActionElement\n ref={ref}\n className={cn(\n styles.button,\n styles[variant],\n styles[size],\n loading && !disabled && styles.loading,\n className,\n )}\n data-testid={dataTestId?.root}\n aria-label={joinAriaLabel(ariaLabel, counterLabel)}\n aria-busy={loading || undefined}\n disabled={disabled || loading}\n {...rest}\n >\n <ButtonContent\n loading={loading}\n iconLeft={iconLeft}\n iconRight={iconRight}\n counter={counter}\n counterLabel={counterLabel}\n dataTestId={dataTestId}\n >\n {children}\n </ButtonContent>\n </ActionElement>\n ),\n)\n\nButton.displayName = 'Button'\n"],"names":["Button","forwardRef","_ref","ref","className","children","variant","size","loading","disabled","iconLeft","iconRight","counter","counterLabel","dataTestId","ariaLabel","rest","_jsx","ActionElement","cn","styles","button","root","joinAriaLabel","undefined","ButtonContent","displayName"],"mappings":";;;;;;;;;;;;AAyBA;AACO,MAAMA,MAAM,gBAAGC,gBAAU,CAI9B,CAAAC,IAAA,
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../src/button/Button.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport cn from 'classnames'\n\nimport { ActionElement, joinAriaLabel } from '../utils'\nimport styles from './Button.module.css'\nimport { ButtonContent } from './ButtonContent'\nimport type {\n ButtonAsButtonProps,\n ButtonAsLinkProps,\n ButtonDataTestId,\n ButtonProps,\n ButtonSize,\n ButtonVariant,\n} from './types'\n\nexport type {\n ButtonAsButtonProps,\n ButtonAsLinkProps,\n ButtonDataTestId,\n ButtonProps,\n ButtonSize,\n ButtonVariant,\n}\n\n/** Fully rounded call to action; `size` is big (52px) or small (36px), `loading` swaps the icon slot for a spinner and disables it. With `href` it renders a link that routes through `LinkProvider`. */\nexport const Button = forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(\n (\n {\n className,\n children,\n variant = 'primary',\n size = 'big',\n fullWidth = false,\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n counter,\n counterLabel,\n dataTestId,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n ) => (\n <ActionElement\n ref={ref}\n className={cn(\n styles.button,\n styles[variant],\n styles[size],\n fullWidth && styles.fullWidth,\n loading && !disabled && styles.loading,\n className,\n )}\n data-testid={dataTestId?.root}\n aria-label={joinAriaLabel(ariaLabel, counterLabel)}\n aria-busy={loading || undefined}\n disabled={disabled || loading}\n {...rest}\n >\n <ButtonContent\n loading={loading}\n iconLeft={iconLeft}\n iconRight={iconRight}\n counter={counter}\n counterLabel={counterLabel}\n dataTestId={dataTestId}\n >\n {children}\n </ButtonContent>\n </ActionElement>\n ),\n)\n\nButton.displayName = 'Button'\n"],"names":["Button","forwardRef","_ref","ref","className","children","variant","size","fullWidth","loading","disabled","iconLeft","iconRight","counter","counterLabel","dataTestId","ariaLabel","rest","_jsx","ActionElement","cn","styles","button","root","joinAriaLabel","undefined","ButtonContent","displayName"],"mappings":";;;;;;;;;;;;AAyBA;AACO,MAAMA,MAAM,gBAAGC,gBAAU,CAI9B,CAAAC,IAAA,EAiBEC,GAAG,KAAA;EAAA,IAhBH;IACEC,SAAS;IACTC,QAAQ;AACRC,IAAAA,OAAO,GAAG,SAAS;AACnBC,IAAAA,IAAI,GAAG,KAAK;AACZC,IAAAA,SAAS,GAAG,KAAK;AACjBC,IAAAA,OAAO,GAAG,KAAK;AACfC,IAAAA,QAAQ,GAAG,KAAK;IAChBC,QAAQ;IACRC,SAAS;IACTC,OAAO;IACPC,YAAY;IACZC,UAAU;AACV,IAAA,YAAY,EAAEC,SAAS;IACvB,GAAGC,IAAAA;AACL,GAAC,GAAAf,IAAA,CAAA;EAAA,oBAGDgB,cAAA,CAACC,2BAAa,EAAA;AACZhB,IAAAA,GAAG,EAAEA,GAAI;AACTC,IAAAA,SAAS,EAAEgB,EAAE,CACXC,aAAM,CAACC,MAAM,EACbD,aAAM,CAACf,OAAO,CAAC,EACfe,aAAM,CAACd,IAAI,CAAC,EACZC,SAAS,IAAIa,aAAM,CAACb,SAAS,EAC7BC,OAAO,IAAI,CAACC,QAAQ,IAAIW,aAAM,CAACZ,OAAO,EACtCL,SACF,CAAE;IACF,aAAaW,EAAAA,UAAU,EAAEQ,IAAK;AAC9B,IAAA,YAAA,EAAYC,2BAAa,CAACR,SAAS,EAAEF,YAAY,CAAE;IACnD,WAAWL,EAAAA,OAAO,IAAIgB,SAAU;IAChCf,QAAQ,EAAEA,QAAQ,IAAID,OAAQ;AAAA,IAAA,GAC1BQ,IAAI;IAAAZ,QAAA,eAERa,cAAA,CAACQ,2BAAa,EAAA;AACZjB,MAAAA,OAAO,EAAEA,OAAQ;AACjBE,MAAAA,QAAQ,EAAEA,QAAS;AACnBC,MAAAA,SAAS,EAAEA,SAAU;AACrBC,MAAAA,OAAO,EAAEA,OAAQ;AACjBC,MAAAA,YAAY,EAAEA,YAAa;AAC3BC,MAAAA,UAAU,EAAEA,UAAW;AAAAV,MAAAA,QAAA,EAEtBA,QAAAA;KACY,CAAA;AAAC,GACH,CAAC,CAAA;AAAA,CAEpB,EAAC;AAEDL,MAAM,CAAC2B,WAAW,GAAG,QAAQ;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const styles = {"button":"Button-module_button__eiKKZ","loading":"Button-module_loading__wZ1IR","content":"Button-module_content__SVjwi","icon":"Button-module_icon__Ojq-e","spinner":"Button-module_spinner__QToZm","
|
|
3
|
+
const styles = {"button":"Button-module_button__eiKKZ","loading":"Button-module_loading__wZ1IR","fullWidth":"Button-module_fullWidth__TLKFB","content":"Button-module_content__SVjwi","icon":"Button-module_icon__Ojq-e","spinner":"Button-module_spinner__QToZm","big":"Button-module_big__-gJao","small":"Button-module_small__U2Zqq","primary":"Button-module_primary__EU45Z","outline":"Button-module_outline__Jx-Hc","subtle":"Button-module_subtle__2DyRK","ghost":"Button-module_ghost__OX4Ks","error":"Button-module_error__qp2tu"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=Button.module.css.cjs.map
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const CounterSlot = require('../counter/CounterSlot.cjs');
|
|
6
6
|
const Button_module = require('./Button.module.css.cjs');
|
|
7
7
|
const jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
const
|
|
8
|
+
const Spinner = require('../spinner/Spinner.cjs');
|
|
9
9
|
|
|
10
10
|
const ButtonContent = _ref => {
|
|
11
11
|
let {
|
|
@@ -18,9 +18,9 @@ const ButtonContent = _ref => {
|
|
|
18
18
|
children
|
|
19
19
|
} = _ref;
|
|
20
20
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
21
|
-
children: [loading ? /*#__PURE__*/jsxRuntime.jsx(
|
|
21
|
+
children: [loading ? /*#__PURE__*/jsxRuntime.jsx(Spinner.Spinner, {
|
|
22
22
|
className: Button_module.spinner,
|
|
23
|
-
|
|
23
|
+
decorative: true
|
|
24
24
|
}) : iconLeft != null && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
25
25
|
className: Button_module.icon,
|
|
26
26
|
"aria-hidden": "true",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonContent.cjs","sources":["../../../src/button/ButtonContent.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport { CounterLabel, CounterSlot } from '../counter/CounterSlot'\nimport {
|
|
1
|
+
{"version":3,"file":"ButtonContent.cjs","sources":["../../../src/button/ButtonContent.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nimport { CounterLabel, CounterSlot } from '../counter/CounterSlot'\nimport { Spinner } from '../spinner'\nimport styles from './Button.module.css'\nimport type { ButtonOwnProps } from './types'\n\ntype ButtonContentProps = Pick<\n ButtonOwnProps,\n 'iconLeft' | 'iconRight' | 'counter' | 'counterLabel' | 'dataTestId'\n> & {\n loading?: boolean\n children?: ReactNode\n}\n\nexport const ButtonContent = ({\n loading = false,\n iconLeft,\n iconRight,\n counter,\n counterLabel,\n dataTestId,\n children,\n}: ButtonContentProps) => (\n <>\n {loading ? (\n <Spinner className={styles.spinner} decorative />\n ) : (\n iconLeft != null && (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.iconLeft}\n >\n {iconLeft}\n </span>\n )\n )}\n <span className={styles.content} data-testid={dataTestId?.content}>\n {children}\n </span>\n {!loading && iconRight != null ? (\n <span\n className={styles.icon}\n aria-hidden='true'\n data-testid={dataTestId?.iconRight}\n >\n {iconRight}\n </span>\n ) : null}\n <CounterSlot dataTestId={dataTestId?.counter}>{counter}</CounterSlot>\n <CounterLabel>{counterLabel}</CounterLabel>\n </>\n)\n"],"names":["ButtonContent","_ref","loading","iconLeft","iconRight","counter","counterLabel","dataTestId","children","_jsxs","_Fragment","_jsx","Spinner","className","styles","spinner","decorative","icon","content","CounterSlot","CounterLabel"],"mappings":";;;;;;;;;AAeO,MAAMA,aAAa,GAAGC,IAAA,IAAA;EAAA,IAAC;AAC5BC,IAAAA,OAAO,GAAG,KAAK;IACfC,QAAQ;IACRC,SAAS;IACTC,OAAO;IACPC,YAAY;IACZC,UAAU;AACVC,IAAAA,QAAAA;AACkB,GAAC,GAAAP,IAAA,CAAA;EAAA,oBACnBQ,eAAA,CAAAC,mBAAA,EAAA;AAAAF,IAAAA,QAAA,EACGN,CAAAA,OAAO,gBACNS,cAAA,CAACC,eAAO,EAAA;MAACC,SAAS,EAAEC,aAAM,CAACC,OAAQ;MAACC,UAAU,EAAA,IAAA;AAAA,KAAE,CAAC,GAEjDb,QAAQ,IAAI,IAAI,iBACdQ,cAAA,CAAA,MAAA,EAAA;MACEE,SAAS,EAAEC,aAAM,CAACG,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaV,EAAAA,UAAU,EAAEJ,QAAS;AAAAK,MAAAA,QAAA,EAEjCL,QAAAA;KACG,CAET,eACDQ,cAAA,CAAA,MAAA,EAAA;MAAME,SAAS,EAAEC,aAAM,CAACI,OAAQ;MAAC,aAAaX,EAAAA,UAAU,EAAEW,OAAQ;AAAAV,MAAAA,QAAA,EAC/DA,QAAAA;KACG,CAAC,EACN,CAACN,OAAO,IAAIE,SAAS,IAAI,IAAI,gBAC5BO,cAAA,CAAA,MAAA,EAAA;MACEE,SAAS,EAAEC,aAAM,CAACG,IAAK;AACvB,MAAA,aAAA,EAAY,MAAM;MAClB,aAAaV,EAAAA,UAAU,EAAEH,SAAU;AAAAI,MAAAA,QAAA,EAElCJ,SAAAA;AAAS,KACN,CAAC,GACL,IAAI,eACRO,cAAA,CAACQ,uBAAW,EAAA;MAACZ,UAAU,EAAEA,UAAU,EAAEF,OAAQ;AAAAG,MAAAA,QAAA,EAAEH,OAAAA;AAAO,KAAc,CAAC,eACrEM,cAAA,CAACS,wBAAY,EAAA;AAAAZ,MAAAA,QAAA,EAAEF,YAAAA;AAAY,KAAe,CAAC,CAAA;AAAA,GAC3C,CAAC,CAAA;AAAA;;;;"}
|