@cube-dev/ui-kit 0.120.1 → 0.121.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/dist/CHANGELOG.md +20 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.d.ts +1 -0
- package/dist/components/actions/Button/Button.js +34 -14
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.d.ts +47 -0
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +105 -0
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -0
- package/dist/components/actions/ButtonSplit/context.d.ts +18 -0
- package/dist/components/actions/ButtonSplit/context.js +12 -0
- package/dist/components/actions/ButtonSplit/context.js.map +1 -0
- package/dist/components/actions/ButtonSplit/index.d.ts +3 -0
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.d.ts +2 -2
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.d.ts +8 -3
- package/dist/components/actions/index.js +10 -5
- package/dist/components/actions/index.js.map +1 -1
- package/dist/components/actions/use-action.d.ts +1 -0
- package/dist/components/actions/use-action.js +21 -18
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +2 -1
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +5 -2
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +3 -2
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +2 -1
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +2 -2
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +2 -2
- package/dist/components/fields/RadioGroup/Radio.js +3 -1
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +8 -2
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +2 -1
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +3 -1
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +2 -2
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +2 -2
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransition.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +6 -6
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/BaseProperties.md +78 -0
- package/docs/ComplexLayout.md +459 -0
- package/docs/CreateComponent.md +410 -0
- package/docs/FieldProperties.md +117 -0
- package/docs/Introduction.md +122 -0
- package/docs/RenderCache.md +177 -0
- package/docs/Result.md +42 -0
- package/docs/SimpleLayout.md +26 -0
- package/docs/Typography.md +38 -0
- package/docs/components/Block.md +33 -0
- package/docs/components/CollectionItem.md +293 -0
- package/docs/components/GridProvider.md +38 -0
- package/docs/components/Root.md +50 -0
- package/docs/components/actions/Action.md +47 -0
- package/docs/components/actions/Banner.md +195 -0
- package/docs/components/actions/Button.md +209 -0
- package/docs/components/actions/ButtonGroup.md +46 -0
- package/docs/components/actions/ButtonSplit.md +199 -0
- package/docs/components/actions/CommandMenu.md +422 -0
- package/docs/components/actions/ItemAction.md +60 -0
- package/docs/components/actions/ItemButton.md +316 -0
- package/docs/components/actions/Link.md +325 -0
- package/docs/components/actions/Menu.md +485 -0
- package/docs/components/actions/MenuTrigger.md +47 -0
- package/docs/components/actions/SubMenuTrigger.md +38 -0
- package/docs/components/actions/use-anchored-menu.md +209 -0
- package/docs/components/actions/use-context-menu.md +218 -0
- package/docs/components/content/ActiveZone.md +37 -0
- package/docs/components/content/Alert.md +40 -0
- package/docs/components/content/Avatar.md +37 -0
- package/docs/components/content/Badge.md +194 -0
- package/docs/components/content/Card.md +40 -0
- package/docs/components/content/Content.md +44 -0
- package/docs/components/content/CopyPasteBlock.md +36 -0
- package/docs/components/content/CopySnippet.md +43 -0
- package/docs/components/content/Disclosure.md +181 -0
- package/docs/components/content/Divider.md +39 -0
- package/docs/components/content/Footer.md +35 -0
- package/docs/components/content/Header.md +35 -0
- package/docs/components/content/HotKeys.md +352 -0
- package/docs/components/content/Item.md +499 -0
- package/docs/components/content/ItemBadge.md +31 -0
- package/docs/components/content/ItemCard.md +131 -0
- package/docs/components/content/Layout.md +843 -0
- package/docs/components/content/Paragraph.md +32 -0
- package/docs/components/content/Placeholder.md +37 -0
- package/docs/components/content/PrismCode.md +36 -0
- package/docs/components/content/PrismDiffCode.md +29 -0
- package/docs/components/content/Result.md +46 -0
- package/docs/components/content/Skeleton.md +35 -0
- package/docs/components/content/Tag.md +165 -0
- package/docs/components/content/Text.md +54 -0
- package/docs/components/content/TextItem.md +217 -0
- package/docs/components/content/Title.md +45 -0
- package/docs/components/fields/Checkbox.md +176 -0
- package/docs/components/fields/ComboBox.md +651 -0
- package/docs/components/fields/DatePicker.md +227 -0
- package/docs/components/fields/FileInput.md +194 -0
- package/docs/components/fields/FilterListBox.md +726 -0
- package/docs/components/fields/FilterPicker.md +776 -0
- package/docs/components/fields/HueSlider.md +175 -0
- package/docs/components/fields/ListBox.md +714 -0
- package/docs/components/fields/NumberInput.md +180 -0
- package/docs/components/fields/PasswordInput.md +214 -0
- package/docs/components/fields/Picker.md +906 -0
- package/docs/components/fields/RadioGroup.md +310 -0
- package/docs/components/fields/SearchInput.md +224 -0
- package/docs/components/fields/Select.md +576 -0
- package/docs/components/fields/Slider.md +53 -0
- package/docs/components/fields/Switch.md +169 -0
- package/docs/components/fields/TextArea.md +61 -0
- package/docs/components/fields/TextInput.md +205 -0
- package/docs/components/fields/TextInputMapper.md +34 -0
- package/docs/components/form/Field.md +333 -0
- package/docs/components/form/Form.md +644 -0
- package/docs/components/form/FormInstance.md +307 -0
- package/docs/components/helpers/DisplayTransition.md +268 -0
- package/docs/components/helpers/IconSwitch.md +160 -0
- package/docs/components/layout/Flex.md +51 -0
- package/docs/components/layout/Flow.md +32 -0
- package/docs/components/layout/Grid.md +46 -0
- package/docs/components/layout/Panel.md +65 -0
- package/docs/components/layout/Prefix.md +37 -0
- package/docs/components/layout/ResizablePanel.md +69 -0
- package/docs/components/layout/Space.md +44 -0
- package/docs/components/layout/Suffix.md +39 -0
- package/docs/components/navigation/Tabs.md +726 -0
- package/docs/components/organisms/FileTabs.md +39 -0
- package/docs/components/organisms/StatsCard.md +40 -0
- package/docs/components/other/CloudLogo.md +33 -0
- package/docs/components/overlays/AlertDialog.md +51 -0
- package/docs/components/overlays/Dialog.md +200 -0
- package/docs/components/overlays/DialogContainer.md +201 -0
- package/docs/components/overlays/DialogForm.md +295 -0
- package/docs/components/overlays/DialogTrigger.md +191 -0
- package/docs/components/overlays/Notifications.md +402 -0
- package/docs/components/overlays/Toast.md +289 -0
- package/docs/components/overlays/Tooltip.md +400 -0
- package/docs/components/overlays/TooltipProvider.md +42 -0
- package/docs/components/overlays/TooltipTrigger.md +42 -0
- package/docs/components/overlays/UseDialogContainer.md +597 -0
- package/docs/components/portal/Portal.md +29 -0
- package/docs/components/status/LoadingAnimation.md +27 -0
- package/docs/components/status/Spin.md +35 -0
- package/docs/tasty/configuration.md +211 -0
- package/docs/tasty/debug.md +505 -0
- package/docs/tasty/injector.md +528 -0
- package/docs/tasty/styles.md +567 -0
- package/docs/tasty/tasty-static.md +376 -0
- package/docs/tasty/usage.md +643 -0
- package/package.json +5 -9
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Action
|
|
2
|
+
|
|
3
|
+
A low-level action element that can render as `<button>`, `<a>`, or `<span>`. When `to` is provided, it renders as a link. Used as a base for `Button` and `Link`.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Building custom interactive elements
|
|
8
|
+
- Actions that may navigate or submit
|
|
9
|
+
- When you need a button that can become a link via the `to` prop
|
|
10
|
+
|
|
11
|
+
## Properties
|
|
12
|
+
|
|
13
|
+
- **`to`** `NavigateArg` — Navigation target (renders as `<a>` when provided)
|
|
14
|
+
- **`label`** `string` — Accessible label for screen readers
|
|
15
|
+
- **`htmlType`** `'button' | 'submit' | 'reset'` — HTML button type
|
|
16
|
+
- **`download`** `string` — Download attribute for link mode
|
|
17
|
+
- **`onPress`** `() => void` — Press event handler (React Aria)
|
|
18
|
+
|
|
19
|
+
### Style Defaults
|
|
20
|
+
|
|
21
|
+
- `position` — `relative`
|
|
22
|
+
- `preset` — `inherit`
|
|
23
|
+
- `transition` — `theme`
|
|
24
|
+
|
|
25
|
+
### Base Properties
|
|
26
|
+
|
|
27
|
+
Supports [Base properties](../../BaseProperties.md). Extends React Aria `AriaButtonProps`.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
### Button action
|
|
32
|
+
|
|
33
|
+
```jsx
|
|
34
|
+
<Action onPress={() => doSomething()}>Click me</Action>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Navigation action
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
<Action to="/dashboard">Go to Dashboard</Action>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Form submit
|
|
44
|
+
|
|
45
|
+
```jsx
|
|
46
|
+
<Action htmlType="submit">Submit</Action>
|
|
47
|
+
```
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Banner
|
|
2
|
+
|
|
3
|
+
Banner displays prominent messages and notifications to users. It supports different visual themes with appropriate icons and can include action buttons and inline links.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Display system-wide notifications or alerts that require user attention
|
|
8
|
+
- Show billing, subscription, or account status warnings
|
|
9
|
+
- Communicate deployment errors or operational issues
|
|
10
|
+
- Provide contextual information with optional calls-to-action
|
|
11
|
+
|
|
12
|
+
## Component
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### Properties
|
|
17
|
+
|
|
18
|
+
- **`theme`** `'danger' | 'warning' | 'note' | 'success'` (default: `'note'`) — Visual theme of the banner with corresponding icon and colors
|
|
19
|
+
- **`isDismissable`** `boolean` (default: `false`) — Whether the banner shows a dismiss button
|
|
20
|
+
- **`onDismiss`** `() => void` — Callback fired when the dismiss button is clicked
|
|
21
|
+
- **`icon`** `ReactNode` — Custom icon to display; defaults to a theme-appropriate icon
|
|
22
|
+
- **`actions`** `ReactNode` — Action buttons displayed on the right side of the banner. Use `Banner.Action` for consistent styling
|
|
23
|
+
- **`description`** `string` — Secondary text shown below the main content, truncated with ellipsis after two lines
|
|
24
|
+
- **`shape`** `'sharp'` — Use `'sharp'` to remove rounded corners when stacking multiple banners
|
|
25
|
+
|
|
26
|
+
### Base Properties
|
|
27
|
+
|
|
28
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
29
|
+
|
|
30
|
+
### Styling Properties
|
|
31
|
+
|
|
32
|
+
#### styles
|
|
33
|
+
|
|
34
|
+
Customizes the root element of the component.
|
|
35
|
+
|
|
36
|
+
**Sub-elements:**
|
|
37
|
+
- `Label` - The main text content area
|
|
38
|
+
- `Actions` - Container for action buttons
|
|
39
|
+
|
|
40
|
+
### Modifiers
|
|
41
|
+
|
|
42
|
+
The `mods` property accepts the following modifiers you can override:
|
|
43
|
+
|
|
44
|
+
- **`theme`** `'danger' \| 'warning' \| 'note' \| 'success'` — Visual theme of the banner
|
|
45
|
+
|
|
46
|
+
## Variants
|
|
47
|
+
|
|
48
|
+
### Themes
|
|
49
|
+
|
|
50
|
+
- `note` (default) - Informational messages, tips, or neutral notifications
|
|
51
|
+
- `warning` - Alerts that require attention but are not critical
|
|
52
|
+
- `danger` - Critical errors or issues that need immediate action
|
|
53
|
+
- `success` - Confirmation of successful operations
|
|
54
|
+
|
|
55
|
+
## Sub-components
|
|
56
|
+
|
|
57
|
+
### Banner.Action
|
|
58
|
+
|
|
59
|
+
Action button styled to match the banner's theme. Use for primary calls-to-action.
|
|
60
|
+
|
|
61
|
+
```jsx
|
|
62
|
+
<Banner theme="warning" actions={<Banner.Action to="/upgrade">Upgrade Plan</Banner.Action>}>
|
|
63
|
+
You are approaching your monthly API request limit.
|
|
64
|
+
</Banner>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Banner.Link
|
|
68
|
+
|
|
69
|
+
Inline link styled with white color and underline. Use for links within the banner's text content.
|
|
70
|
+
|
|
71
|
+
```jsx
|
|
72
|
+
<Banner theme="danger">
|
|
73
|
+
<Banner.Link to="https://docs.example.com">Daily limit</Banner.Link> exceeded.
|
|
74
|
+
Please contact support.
|
|
75
|
+
</Banner>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Examples
|
|
79
|
+
|
|
80
|
+
### Basic Banner
|
|
81
|
+
|
|
82
|
+
```jsx
|
|
83
|
+
<Banner theme="note">
|
|
84
|
+
Scheduled maintenance will occur on Sunday at 2:00 AM UTC.
|
|
85
|
+
</Banner>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Dismissible Banner
|
|
89
|
+
|
|
90
|
+
```jsx
|
|
91
|
+
<Banner theme="success" isDismissable onDismiss={() => console.log('Dismissed')}>
|
|
92
|
+
Your deployment has been successfully updated.
|
|
93
|
+
</Banner>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Banner with Actions
|
|
97
|
+
|
|
98
|
+
```jsx
|
|
99
|
+
<Banner
|
|
100
|
+
theme="danger"
|
|
101
|
+
actions={
|
|
102
|
+
<>
|
|
103
|
+
<Banner.Action to="/billing">Go to Billing</Banner.Action>
|
|
104
|
+
<Banner.Action onPress={() => openChat()}>Contact us</Banner.Action>
|
|
105
|
+
</>
|
|
106
|
+
}
|
|
107
|
+
>
|
|
108
|
+
Your account has been suspended due to payment failure.
|
|
109
|
+
</Banner>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Banner with Inline Links
|
|
113
|
+
|
|
114
|
+
```jsx
|
|
115
|
+
<Banner theme="warning" actions={<Banner.Action>Upgrade tier</Banner.Action>}>
|
|
116
|
+
The selected time range exceeds{' '}
|
|
117
|
+
<Banner.Link to="https://docs.example.com/retention">
|
|
118
|
+
the retention period
|
|
119
|
+
</Banner.Link>
|
|
120
|
+
. To extend this period, please upgrade or contact us.
|
|
121
|
+
</Banner>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Stacked Banners
|
|
125
|
+
|
|
126
|
+
Use `shape="sharp"` when stacking multiple banners to remove gaps between them.
|
|
127
|
+
|
|
128
|
+
```jsx
|
|
129
|
+
<Flex flow="column">
|
|
130
|
+
<Banner theme="danger" shape="sharp">Critical alert</Banner>
|
|
131
|
+
<Banner theme="warning" shape="sharp">Warning message</Banner>
|
|
132
|
+
<Banner theme="note" shape="sharp">Information</Banner>
|
|
133
|
+
</Flex>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Custom Icon
|
|
137
|
+
|
|
138
|
+
```jsx
|
|
139
|
+
import { IconBell } from '@tabler/icons-react';
|
|
140
|
+
|
|
141
|
+
<Banner theme="note" icon={<IconBell />} isDismissable>
|
|
142
|
+
You have new notifications.
|
|
143
|
+
</Banner>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Accessibility
|
|
147
|
+
|
|
148
|
+
### Keyboard Navigation
|
|
149
|
+
|
|
150
|
+
- `Tab` - Moves focus to action buttons within the banner
|
|
151
|
+
- `Space/Enter` - Activates focused action button or dismiss button
|
|
152
|
+
|
|
153
|
+
### Screen Reader Support
|
|
154
|
+
|
|
155
|
+
- Banner has `role="status"` to announce content changes
|
|
156
|
+
- Dismiss button includes tooltip "Hide banner" for accessibility
|
|
157
|
+
|
|
158
|
+
### ARIA Properties
|
|
159
|
+
|
|
160
|
+
- `role="status"` - Announces the banner as a status message
|
|
161
|
+
- Action buttons inherit proper focus management from Item.Action
|
|
162
|
+
|
|
163
|
+
## Best Practices
|
|
164
|
+
|
|
165
|
+
1. **Do**: Use appropriate theme for the message severity
|
|
166
|
+
|
|
167
|
+
```jsx
|
|
168
|
+
<Banner theme="danger">Critical error requiring immediate action</Banner>
|
|
169
|
+
<Banner theme="warning">Warning that needs attention</Banner>
|
|
170
|
+
<Banner theme="note">Informational message</Banner>
|
|
171
|
+
<Banner theme="success">Success confirmation</Banner>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
2. **Do**: Keep banner messages concise and actionable
|
|
175
|
+
|
|
176
|
+
```jsx
|
|
177
|
+
<Banner theme="warning" actions={<Banner.Action>Upgrade</Banner.Action>}>
|
|
178
|
+
API usage at 85% of monthly limit.
|
|
179
|
+
</Banner>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
3. **Don't**: Use banners for non-important information that doesn't need prominent display
|
|
183
|
+
|
|
184
|
+
4. **Do**: Use Banner.Link for inline links within content, Banner.Action for buttons
|
|
185
|
+
|
|
186
|
+
```jsx
|
|
187
|
+
<Banner theme="danger" actions={<Banner.Action>Contact us</Banner.Action>}>
|
|
188
|
+
<Banner.Link to="/docs/limits">Daily limit</Banner.Link> exceeded.
|
|
189
|
+
</Banner>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Related Components
|
|
193
|
+
|
|
194
|
+
- [Item](../content/Item.md) - Base component that Banner extends
|
|
195
|
+
- [ItemAction](./ItemAction.md) - Action button component used by Banner.Action
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Button
|
|
2
|
+
|
|
3
|
+
A versatile action component that triggers commands and navigates users.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Trigger an immediate in-page action (e.g., open a dialog)
|
|
8
|
+
- Navigate to another route or URL using the `to` prop while keeping button styling
|
|
9
|
+
- Toggle a boolean state with `isSelected`
|
|
10
|
+
- Display progress feedback with `isLoading`
|
|
11
|
+
|
|
12
|
+
## Component
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Properties
|
|
17
|
+
|
|
18
|
+
- **`type`** `'primary' | 'secondary' | 'outline' | 'neutral' | 'clear' | 'link'` (default: `outline`) — Visual style variant of the button
|
|
19
|
+
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `default`) — Semantic colour palette theme
|
|
20
|
+
- **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'inline' | number` (default: `medium`) — Button size. Use `'inline'` for link-type buttons or a number/string for custom sizes (e.g. `64` or `'8x'`)
|
|
21
|
+
- **`icon`** — Icon rendered before the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
|
|
22
|
+
- **`rightIcon`** — Icon rendered after the content. Can be: ReactNode, `true` (empty slot), or function `({ loading, selected, ...mods }) => ReactNode | true`
|
|
23
|
+
- **`children`** `ReactNode` — Button label or custom content
|
|
24
|
+
- **`label`** `string` — Accessible label for the button (used as `aria-label`)
|
|
25
|
+
- **`tooltip`** `string | boolean | object` — Tooltip content. Use a string for simple text, `true` for auto tooltip on overflow, or an object with `{ title, auto, placement, ...tooltipProps }`
|
|
26
|
+
- **`isLoading`** `boolean` (default: `false`) — Show loading spinner and disable interactions
|
|
27
|
+
- **`isSelected`** `boolean` (default: `false`) — Marks the button as pressed / selected (toggle)
|
|
28
|
+
- **`to`** `string` — Destination URL or route; prefix with `!` to open in new tab, `@` to bypass router
|
|
29
|
+
- **`htmlType`** `'button' | 'submit' | 'reset'` — HTML button type attribute
|
|
30
|
+
- **`onPress`** `function` — Callback fired when the button is activated by mouse, touch, or keyboard
|
|
31
|
+
|
|
32
|
+
### Base Properties
|
|
33
|
+
|
|
34
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
35
|
+
|
|
36
|
+
### Styling Properties
|
|
37
|
+
|
|
38
|
+
#### styles
|
|
39
|
+
|
|
40
|
+
Customises the root element of the component.
|
|
41
|
+
|
|
42
|
+
**Sub-elements:**
|
|
43
|
+
- `Icon` – wrapper around the leading icon
|
|
44
|
+
- `RightIcon` – wrapper around the trailing icon
|
|
45
|
+
- `Label` – the button text content
|
|
46
|
+
|
|
47
|
+
### Style Properties
|
|
48
|
+
|
|
49
|
+
These properties allow direct styling without using the `styles` prop: `width`, `height`.
|
|
50
|
+
|
|
51
|
+
### Modifiers
|
|
52
|
+
|
|
53
|
+
The `mods` prop accepts the following modifiers you can override:
|
|
54
|
+
|
|
55
|
+
- **`hovered`** `boolean` — Forces hover state
|
|
56
|
+
- **`pressed`** `boolean` — Forces pressed state
|
|
57
|
+
- **`focused`** `boolean` — Forces focus ring
|
|
58
|
+
- **`disabled`** `boolean` — Forces disabled appearance
|
|
59
|
+
- **`loading`** `boolean` — Displays loading spinner
|
|
60
|
+
- **`selected`** `boolean` — Displays selected state
|
|
61
|
+
- **`has-icons`** `boolean` — Indicates that the button contains at least one icon
|
|
62
|
+
- **`has-icon`** `boolean` — Indicates that the button has a leading icon
|
|
63
|
+
- **`has-right-icon`** `boolean` — Indicates that the button has a trailing icon
|
|
64
|
+
- **`single-icon`** `boolean` — Icon-only button without text
|
|
65
|
+
- **`text-only`** `boolean` — Button has only text content, no icons
|
|
66
|
+
|
|
67
|
+
## Variants
|
|
68
|
+
|
|
69
|
+
### Types. `type` prop
|
|
70
|
+
|
|
71
|
+
- `primary` – Emphasised call-to-action.
|
|
72
|
+
- `secondary` – Less emphasised, alternative action.
|
|
73
|
+
- `outline` – Transparent background with border.
|
|
74
|
+
- `neutral` – Minimal style that blends with surroundings.
|
|
75
|
+
- `clear` – Text-only variant without background and border.
|
|
76
|
+
- `link` – Styled as a textual link.
|
|
77
|
+
|
|
78
|
+
### Themes. `theme` prop
|
|
79
|
+
|
|
80
|
+
- `default` – Brand purple colours.
|
|
81
|
+
- `danger` – Red palette for destructive actions.
|
|
82
|
+
- `success` – Green palette for positive actions.
|
|
83
|
+
- `warning` – Yellow/amber palette for caution or attention.
|
|
84
|
+
- `note` – Violet palette for informational context.
|
|
85
|
+
- `special` – White palette for dark backgrounds.
|
|
86
|
+
|
|
87
|
+
### Sizes. `size` prop
|
|
88
|
+
|
|
89
|
+
- `xsmall` – Extra compact height (24px).
|
|
90
|
+
- `small` – Compact height (28px).
|
|
91
|
+
- `medium` – Default height (32px).
|
|
92
|
+
- `large` – Spacious height (40px).
|
|
93
|
+
- `xlarge` – Extra spacious height (48px).
|
|
94
|
+
- `inline` – Inline size for link-type buttons (no fixed height).
|
|
95
|
+
- Custom values – Pass a number (pixels) or a string (e.g. `'8x'`) for custom sizing.
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
### Basic Usage
|
|
100
|
+
|
|
101
|
+
```jsx
|
|
102
|
+
<Button onPress={() => console.log('Pressed')}>Save</Button>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Icon Button
|
|
106
|
+
|
|
107
|
+
```jsx
|
|
108
|
+
import { IconPlus } from '@tabler/icons-react';
|
|
109
|
+
|
|
110
|
+
{/* Standard icon */}
|
|
111
|
+
<Button icon={<IconPlus />} aria-label="Add item" />
|
|
112
|
+
|
|
113
|
+
{/* Empty slot (reserves space but shows nothing) */}
|
|
114
|
+
<Button icon={true} aria-label="Empty slot" />
|
|
115
|
+
|
|
116
|
+
{/* Dynamic icon based on mods */}
|
|
117
|
+
<Button
|
|
118
|
+
icon={({ loading }) => loading ? <SpinnerIcon /> : <IconPlus />}
|
|
119
|
+
aria-label="Dynamic icon"
|
|
120
|
+
>
|
|
121
|
+
Save
|
|
122
|
+
</Button>
|
|
123
|
+
|
|
124
|
+
{/* Return true from function for empty slot */}
|
|
125
|
+
<Button
|
|
126
|
+
icon={({ selected }) => selected ? <CheckIcon /> : true}
|
|
127
|
+
aria-label="Conditional icon"
|
|
128
|
+
>
|
|
129
|
+
Option
|
|
130
|
+
</Button>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Link Button
|
|
134
|
+
|
|
135
|
+
```jsx
|
|
136
|
+
<!-- Navigate to a new page using the router -->
|
|
137
|
+
<Button to="/pricing">Pricing</Button>
|
|
138
|
+
<!-- Use `!` prefix to open in a new tab -->
|
|
139
|
+
<Button to="!/pricing">Pricing</Button>
|
|
140
|
+
<!-- Use `@` prefix to navigate to a new page without using the router -->
|
|
141
|
+
<Button to="@/pricing">Pricing</Button>
|
|
142
|
+
<!-- Use `@` to reload the page -->
|
|
143
|
+
<Button to="@/pricing">Pricing</Button>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Loading State
|
|
147
|
+
|
|
148
|
+
```jsx
|
|
149
|
+
<Button isLoading>Processing…</Button>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### With Tooltip
|
|
153
|
+
|
|
154
|
+
```jsx
|
|
155
|
+
{/* Simple tooltip text */}
|
|
156
|
+
<Button icon={<IconPlus />} tooltip="Add new item" aria-label="Add" />
|
|
157
|
+
|
|
158
|
+
{/* Auto tooltip on overflow */}
|
|
159
|
+
<Button tooltip={true} width="100px">This text will be truncated</Button>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Custom Size
|
|
163
|
+
|
|
164
|
+
```jsx
|
|
165
|
+
{/* Using a number (pixels) */}
|
|
166
|
+
<Button size={64}>Large Custom</Button>
|
|
167
|
+
|
|
168
|
+
{/* Using a string multiplier */}
|
|
169
|
+
<Button size="8x">8x Size</Button>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Accessibility
|
|
173
|
+
|
|
174
|
+
### Keyboard Navigation
|
|
175
|
+
|
|
176
|
+
- `Tab` – Moves focus to the button.
|
|
177
|
+
- `Space` / `Enter` – Activates the button.
|
|
178
|
+
|
|
179
|
+
### Screen Reader Support
|
|
180
|
+
|
|
181
|
+
- Announces role "button".
|
|
182
|
+
- Announces state changes such as "pressed", "disabled", or "selected".
|
|
183
|
+
- Provide `label`/`aria-label` when the button has no visible text.
|
|
184
|
+
|
|
185
|
+
### ARIA Properties
|
|
186
|
+
|
|
187
|
+
- `aria-label`, `aria-labelledby` – Accessible name.
|
|
188
|
+
- `aria-pressed` – Managed automatically when `isSelected` is used.
|
|
189
|
+
- Additional ARIA attributes supported by React Aria's `useButton`.
|
|
190
|
+
|
|
191
|
+
## Best Practices
|
|
192
|
+
|
|
193
|
+
1. **Do**: Provide a label for icon-only buttons
|
|
194
|
+
```jsx
|
|
195
|
+
<Button icon={<IconPlus />} aria-label="Add" />
|
|
196
|
+
```
|
|
197
|
+
2. **Don't**: Use the `link` type for destructive actions – prefer `danger.primary` instead.
|
|
198
|
+
3. **Callbacks**: Always use `onPress` for actions that don't navigate. Use `onClick` only if you need to access the event object.
|
|
199
|
+
4. **Accessibility**: Use `isLoading` rather than disabling a button without feedback.
|
|
200
|
+
5. **Performance**: Reuse icon components to avoid unnecessary re-renders.
|
|
201
|
+
|
|
202
|
+
## Suggested Improvements
|
|
203
|
+
|
|
204
|
+
- Provide `block` modifier to stretch the button 100% width.
|
|
205
|
+
|
|
206
|
+
## Related Components
|
|
207
|
+
|
|
208
|
+
- [Link](./Link.md) – Semantic navigation styled like a button.
|
|
209
|
+
- [ItemButton](./ItemButton.md) – Interactive button built on Item with icon support.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# ButtonGroup
|
|
2
|
+
|
|
3
|
+
A container for grouping buttons with consistent spacing. Extends `Space` and inherits all its defaults.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Grouping related actions (Save/Cancel)
|
|
8
|
+
- Button bars and toolbars
|
|
9
|
+
|
|
10
|
+
## Properties
|
|
11
|
+
|
|
12
|
+
Inherits all Space properties.
|
|
13
|
+
|
|
14
|
+
### Style Defaults
|
|
15
|
+
|
|
16
|
+
Inherits Space defaults:
|
|
17
|
+
|
|
18
|
+
- `display` — `flex`
|
|
19
|
+
- `gap` — `1x`
|
|
20
|
+
- `flow` — `row`
|
|
21
|
+
- `placeItems` — `center stretch`
|
|
22
|
+
- `gridArea` — `buttonGroup`
|
|
23
|
+
|
|
24
|
+
### Base Properties
|
|
25
|
+
|
|
26
|
+
Supports [Base properties](../../BaseProperties.md).
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
### Horizontal group
|
|
31
|
+
|
|
32
|
+
```jsx
|
|
33
|
+
<Button.Group>
|
|
34
|
+
<Button>Save</Button>
|
|
35
|
+
<Button type="secondary">Cancel</Button>
|
|
36
|
+
</Button.Group>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Vertical group
|
|
40
|
+
|
|
41
|
+
```jsx
|
|
42
|
+
<Button.Group direction="vertical">
|
|
43
|
+
<Button>Option 1</Button>
|
|
44
|
+
<Button>Option 2</Button>
|
|
45
|
+
</Button.Group>
|
|
46
|
+
```
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Button.Split
|
|
2
|
+
|
|
3
|
+
A split button that groups a primary action with a dropdown trigger for secondary actions. Supports two modes: **custom** (arbitrary button children) and **strict** (declarative action list with built-in menu).
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- Present a default action alongside alternative actions in a compact control
|
|
8
|
+
- Allow users to switch between related operations (e.g., deploy targets, save modes)
|
|
9
|
+
- Group two or more buttons visually as a single connected unit
|
|
10
|
+
|
|
11
|
+
## Component
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
|
|
17
|
+
- **`actions`** `ButtonSplitAction[]` — Array of actions for strict mode. Each action requires `key` and `label`
|
|
18
|
+
- **`actionKey`** `string` — Currently selected action key (controlled)
|
|
19
|
+
- **`defaultActionKey`** `string` — Initially selected action key (uncontrolled)
|
|
20
|
+
- **`onAction`** `(key: string) => void` — Called when the action button is pressed
|
|
21
|
+
- **`onActionChange`** `(key: string) => void` — Called when the selected action changes via the menu
|
|
22
|
+
- **`type`** `'primary' | 'secondary' | 'outline' | 'neutral' | 'clear'` (default: `'outline'`) — Button type (inherited by children via context)
|
|
23
|
+
- **`theme`** `'default' | 'danger' | 'success' | 'warning' | 'note' | 'special'` (default: `'default'`) — Button theme (inherited by children via context)
|
|
24
|
+
- **`size`** `'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'` (default: `'medium'`) — Button size (inherited by children via context)
|
|
25
|
+
- **`isDisabled`** `boolean` (default: `false`) — Disables all buttons (inherited via context)
|
|
26
|
+
|
|
27
|
+
### Base Properties
|
|
28
|
+
|
|
29
|
+
Supports [Base properties](../../BaseProperties.md)
|
|
30
|
+
|
|
31
|
+
### Styling Properties
|
|
32
|
+
|
|
33
|
+
#### styles
|
|
34
|
+
|
|
35
|
+
Customises the root wrapper element of the split button.
|
|
36
|
+
|
|
37
|
+
### Style Properties
|
|
38
|
+
|
|
39
|
+
These properties allow direct styling without using the `styles` prop: `width`, `height`.
|
|
40
|
+
|
|
41
|
+
### Context Inheritance
|
|
42
|
+
|
|
43
|
+
`type`, `theme`, `size`, and `isDisabled` set on `Button.Split` are inherited by all child `Button` components via context. Explicitly passed props on individual buttons always take precedence.
|
|
44
|
+
|
|
45
|
+
## Modes
|
|
46
|
+
|
|
47
|
+
### Strict Mode
|
|
48
|
+
|
|
49
|
+
Pass an `actions` array to automatically render an action button and a trigger button with a dropdown menu. The trigger displays a `DirectionIcon` pointing down.
|
|
50
|
+
|
|
51
|
+
Each action object requires `key` and `label`, and inherits all other props from `Menu.Item` (`icon`, `rightIcon`, `description`, `descriptionPlacement`, `prefix`, `suffix`, `hotkeys`, `textValue`, `isDisabled`, `qa`, `styles`, etc.).
|
|
52
|
+
|
|
53
|
+
```jsx
|
|
54
|
+
import { Button } from '@cube-dev/ui-kit';
|
|
55
|
+
|
|
56
|
+
const actions = [
|
|
57
|
+
{ key: 'deploy', label: 'Deploy', icon: <IconSend />, hotkeys: 'Mod+D' },
|
|
58
|
+
{ key: 'deploy-staging', label: 'Deploy to Staging', icon: <IconSend />, description: 'Preview environment' },
|
|
59
|
+
{ key: 'deploy-preview', label: 'Deploy Preview', icon: <IconPlayerPlay /> },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
<Button.Split
|
|
63
|
+
actions={actions}
|
|
64
|
+
defaultActionKey="deploy"
|
|
65
|
+
type="primary"
|
|
66
|
+
onAction={(key) => console.log('Executed:', key)}
|
|
67
|
+
onActionChange={(key) => console.log('Switched to:', key)}
|
|
68
|
+
/>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### Controlled
|
|
72
|
+
|
|
73
|
+
Use `actionKey` and `onActionChange` for controlled state.
|
|
74
|
+
|
|
75
|
+
```jsx
|
|
76
|
+
const [currentKey, setCurrentKey] = useState('deploy');
|
|
77
|
+
|
|
78
|
+
<Button.Split
|
|
79
|
+
actions={actions}
|
|
80
|
+
actionKey={currentKey}
|
|
81
|
+
type="primary"
|
|
82
|
+
onAction={(key) => console.log('Executed:', key)}
|
|
83
|
+
onActionChange={setCurrentKey}
|
|
84
|
+
/>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Custom Mode
|
|
88
|
+
|
|
89
|
+
Pass `children` to render arbitrary buttons with split-group styling (joined radius, collapsed borders). Set `type` and `theme` on the wrapper -- child buttons inherit them via context.
|
|
90
|
+
|
|
91
|
+
```jsx
|
|
92
|
+
import { Button, Menu } from '@cube-dev/ui-kit';
|
|
93
|
+
import { DirectionIcon } from '@cube-dev/ui-kit';
|
|
94
|
+
|
|
95
|
+
<Button.Split type="primary">
|
|
96
|
+
<Button onPress={() => console.log('Save')}>Save</Button>
|
|
97
|
+
<Menu.Trigger placement="bottom end">
|
|
98
|
+
<Button
|
|
99
|
+
aria-label="More save options"
|
|
100
|
+
icon={({ pressed }) => <DirectionIcon to={pressed ? 'up' : 'down'} />}
|
|
101
|
+
/>
|
|
102
|
+
<Menu onAction={(key) => console.log(key)}>
|
|
103
|
+
<Menu.Item key="save-draft">Save as Draft</Menu.Item>
|
|
104
|
+
<Menu.Item key="save-publish">Save & Publish</Menu.Item>
|
|
105
|
+
</Menu>
|
|
106
|
+
</Menu.Trigger>
|
|
107
|
+
</Button.Split>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Multiple Buttons
|
|
111
|
+
|
|
112
|
+
More than two buttons are supported. Middle buttons have no border radius.
|
|
113
|
+
|
|
114
|
+
```jsx
|
|
115
|
+
<Button.Split type="outline">
|
|
116
|
+
<Button icon={<IconPlus />}>Add</Button>
|
|
117
|
+
<Button icon={<IconCopy />}>Copy</Button>
|
|
118
|
+
<Button icon={<IconDownload />}>Export</Button>
|
|
119
|
+
</Button.Split>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Examples
|
|
123
|
+
|
|
124
|
+
### Variants
|
|
125
|
+
|
|
126
|
+
Different types and themes can be applied. All child buttons inherit the styling.
|
|
127
|
+
|
|
128
|
+
```jsx
|
|
129
|
+
<Button.Split actions={actions} defaultActionKey="copy" type="primary" />
|
|
130
|
+
<Button.Split actions={actions} defaultActionKey="copy" type="secondary" />
|
|
131
|
+
<Button.Split actions={actions} defaultActionKey="copy" type="outline" />
|
|
132
|
+
<Button.Split actions={actions} defaultActionKey="copy" type="primary" theme="danger" />
|
|
133
|
+
<Button.Split actions={actions} defaultActionKey="copy" type="primary" isDisabled />
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Customizing Sub-Components
|
|
137
|
+
|
|
138
|
+
Use `actionProps`, `triggerProps`, and `menuProps` to customise individual parts in strict mode.
|
|
139
|
+
|
|
140
|
+
```jsx
|
|
141
|
+
<Button.Split
|
|
142
|
+
actions={actions}
|
|
143
|
+
defaultActionKey="deploy"
|
|
144
|
+
type="primary"
|
|
145
|
+
actionProps={{ size: 'large' }}
|
|
146
|
+
triggerProps={{ 'aria-label': 'Select deploy target' }}
|
|
147
|
+
menuProps={{ placement: 'bottom start' }}
|
|
148
|
+
/>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Accessibility
|
|
152
|
+
|
|
153
|
+
### Keyboard Navigation
|
|
154
|
+
|
|
155
|
+
- `Tab` -- Moves focus between the action button and the trigger button.
|
|
156
|
+
- `Space` / `Enter` -- Activates the focused button. On the trigger, opens the dropdown menu.
|
|
157
|
+
- `Arrow Down` -- When the menu is open, navigates menu items.
|
|
158
|
+
- `Escape` -- Closes the dropdown menu and returns focus to the trigger.
|
|
159
|
+
|
|
160
|
+
### Screen Reader Support
|
|
161
|
+
|
|
162
|
+
- The action button announces its label.
|
|
163
|
+
- The trigger button has `aria-label="More options"` by default (override via `triggerProps`).
|
|
164
|
+
- The dropdown menu announces selection changes.
|
|
165
|
+
|
|
166
|
+
### ARIA Properties
|
|
167
|
+
|
|
168
|
+
- `aria-label` -- Provide on the trigger for context (e.g., "Select deploy target").
|
|
169
|
+
- Menu items support `aria-disabled` via the `isDisabled` property on actions.
|
|
170
|
+
|
|
171
|
+
## Best Practices
|
|
172
|
+
|
|
173
|
+
1. **Do**: Use strict mode for standard action+trigger patterns.
|
|
174
|
+
```jsx
|
|
175
|
+
<Button.Split actions={actions} defaultActionKey="deploy" type="primary" />
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
2. **Do**: Set `type` and `theme` on the wrapper instead of repeating on each child.
|
|
179
|
+
```jsx
|
|
180
|
+
<Button.Split type="primary">
|
|
181
|
+
<Button>Save</Button>
|
|
182
|
+
<Button icon={<DirectionIcon to="down" />} aria-label="Options" />
|
|
183
|
+
</Button.Split>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
3. **Don't**: Mix `actions` prop with `children`. Use one mode or the other.
|
|
187
|
+
|
|
188
|
+
4. **Accessibility**: Always provide `aria-label` on icon-only trigger buttons.
|
|
189
|
+
|
|
190
|
+
## Suggested Improvements
|
|
191
|
+
|
|
192
|
+
- Support `isLoading` on the action button in strict mode.
|
|
193
|
+
- Add keyboard shortcut display in menu items via `hotkeys` prop.
|
|
194
|
+
|
|
195
|
+
## Related Components
|
|
196
|
+
|
|
197
|
+
- [Button](./Button.md) -- Standalone action button.
|
|
198
|
+
- [Menu](./Menu.md) -- Dropdown menu for action lists.
|
|
199
|
+
- Button.Group -- Layout wrapper for spacing multiple buttons.
|