@kushagradhawan/kookie-ui 0.1.29 → 0.1.31
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/components.css +4083 -2224
- package/dist/cjs/components/_internal/base-button.d.ts +36 -0
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +3 -3
- package/dist/cjs/components/_internal/base-button.props.d.ts +61 -0
- package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.props.js +1 -1
- package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
- package/dist/cjs/components/_internal/base-checkbox.props.d.ts +6 -1
- package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
- package/dist/cjs/components/_internal/base-checkbox.props.js.map +3 -3
- package/dist/cjs/components/_internal/base-menu.props.d.ts +8 -0
- package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
- package/dist/cjs/components/_internal/base-radio.props.d.ts +6 -1
- package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-radio.props.js +1 -1
- package/dist/cjs/components/_internal/base-radio.props.js.map +3 -3
- package/dist/cjs/components/accordion.d.ts.map +1 -1
- package/dist/cjs/components/accordion.js +1 -1
- package/dist/cjs/components/accordion.js.map +3 -3
- package/dist/cjs/components/accordion.props.d.ts +9 -0
- package/dist/cjs/components/accordion.props.d.ts.map +1 -1
- package/dist/cjs/components/accordion.props.js +1 -1
- package/dist/cjs/components/accordion.props.js.map +2 -2
- package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +3 -3
- package/dist/cjs/components/alert-dialog.props.d.ts +69 -2
- package/dist/cjs/components/alert-dialog.props.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.props.js +1 -1
- package/dist/cjs/components/alert-dialog.props.js.map +3 -3
- package/dist/cjs/components/avatar.d.ts.map +1 -1
- package/dist/cjs/components/avatar.js +1 -1
- package/dist/cjs/components/avatar.js.map +3 -3
- package/dist/cjs/components/avatar.props.d.ts +9 -1
- package/dist/cjs/components/avatar.props.d.ts.map +1 -1
- package/dist/cjs/components/avatar.props.js +1 -1
- package/dist/cjs/components/avatar.props.js.map +3 -3
- package/dist/cjs/components/badge.d.ts +8 -1
- package/dist/cjs/components/badge.d.ts.map +1 -1
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +3 -3
- package/dist/cjs/components/badge.props.d.ts +14 -6
- package/dist/cjs/components/badge.props.d.ts.map +1 -1
- package/dist/cjs/components/badge.props.js +1 -1
- package/dist/cjs/components/badge.props.js.map +3 -3
- package/dist/cjs/components/blockquote.props.d.ts +1 -1
- package/dist/cjs/components/button.d.ts +53 -1
- package/dist/cjs/components/button.d.ts.map +1 -1
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +3 -3
- package/dist/cjs/components/button.props.d.ts +17 -0
- package/dist/cjs/components/button.props.d.ts.map +1 -1
- package/dist/cjs/components/button.props.js.map +2 -2
- package/dist/cjs/components/callout.d.ts +4 -0
- package/dist/cjs/components/callout.d.ts.map +1 -1
- package/dist/cjs/components/callout.js +1 -1
- package/dist/cjs/components/callout.js.map +3 -3
- package/dist/cjs/components/callout.props.d.ts +9 -1
- package/dist/cjs/components/callout.props.d.ts.map +1 -1
- package/dist/cjs/components/callout.props.js +1 -1
- package/dist/cjs/components/callout.props.js.map +3 -3
- package/dist/cjs/components/card.d.ts.map +1 -1
- package/dist/cjs/components/card.js +1 -1
- package/dist/cjs/components/card.js.map +3 -3
- package/dist/cjs/components/card.props.d.ts +5 -0
- package/dist/cjs/components/card.props.d.ts.map +1 -1
- package/dist/cjs/components/card.props.js +1 -1
- package/dist/cjs/components/card.props.js.map +3 -3
- package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-cards.js +1 -1
- package/dist/cjs/components/checkbox-cards.js.map +3 -3
- package/dist/cjs/components/checkbox-cards.props.d.ts +2 -2
- package/dist/cjs/components/checkbox-cards.props.js +1 -1
- package/dist/cjs/components/checkbox-cards.props.js.map +2 -2
- package/dist/cjs/components/checkbox-group.props.d.ts +6 -1
- package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
- package/dist/cjs/components/checkbox.d.ts.map +1 -1
- package/dist/cjs/components/checkbox.js +1 -1
- package/dist/cjs/components/checkbox.js.map +3 -3
- package/dist/cjs/components/code.js.map +1 -1
- package/dist/cjs/components/code.props.d.ts +1 -1
- package/dist/cjs/components/context-menu.d.ts +1 -1
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- package/dist/cjs/components/context-menu.js +1 -1
- package/dist/cjs/components/context-menu.js.map +3 -3
- package/dist/cjs/components/dialog.d.ts.map +1 -1
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +3 -3
- package/dist/cjs/components/dialog.props.d.ts +5 -0
- package/dist/cjs/components/dialog.props.d.ts.map +1 -1
- package/dist/cjs/components/dialog.props.js +1 -1
- package/dist/cjs/components/dialog.props.js.map +3 -3
- package/dist/cjs/components/dropdown-menu.d.ts +1 -1
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +3 -3
- package/dist/cjs/components/heading.props.d.ts +1 -1
- package/dist/cjs/components/icon-button.d.ts +79 -1
- package/dist/cjs/components/icon-button.d.ts.map +1 -1
- package/dist/cjs/components/icon-button.js +4 -1
- package/dist/cjs/components/icon-button.js.map +3 -3
- package/dist/cjs/components/image.d.ts +131 -12
- package/dist/cjs/components/image.d.ts.map +1 -1
- package/dist/cjs/components/image.js +1 -1
- package/dist/cjs/components/image.js.map +3 -3
- package/dist/cjs/components/image.props.d.ts +136 -21
- package/dist/cjs/components/image.props.d.ts.map +1 -1
- package/dist/cjs/components/image.props.js +1 -1
- package/dist/cjs/components/image.props.js.map +3 -3
- package/dist/cjs/components/link.props.d.ts +1 -1
- package/dist/cjs/components/progress.props.d.ts +2 -2
- package/dist/cjs/components/progress.props.js +1 -1
- package/dist/cjs/components/progress.props.js.map +2 -2
- package/dist/cjs/components/radio-cards.d.ts.map +1 -1
- package/dist/cjs/components/radio-cards.js +1 -1
- package/dist/cjs/components/radio-cards.js.map +3 -3
- package/dist/cjs/components/radio-cards.props.d.ts +2 -2
- package/dist/cjs/components/radio-cards.props.js +1 -1
- package/dist/cjs/components/radio-cards.props.js.map +2 -2
- package/dist/cjs/components/radio.d.ts.map +1 -1
- package/dist/cjs/components/radio.js +1 -1
- package/dist/cjs/components/radio.js.map +3 -3
- package/dist/cjs/components/segmented-control.props.d.ts +3 -3
- package/dist/cjs/components/segmented-control.props.js +1 -1
- package/dist/cjs/components/segmented-control.props.js.map +2 -2
- package/dist/cjs/components/select.d.ts.map +1 -1
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +3 -3
- package/dist/cjs/components/select.props.d.ts +12 -0
- package/dist/cjs/components/select.props.d.ts.map +1 -1
- package/dist/cjs/components/select.props.js +1 -1
- package/dist/cjs/components/select.props.js.map +2 -2
- package/dist/cjs/components/sidebar.d.ts +5 -0
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +3 -3
- package/dist/cjs/components/slider.d.ts +5 -0
- package/dist/cjs/components/slider.d.ts.map +1 -1
- package/dist/cjs/components/slider.js +1 -1
- package/dist/cjs/components/slider.js.map +3 -3
- package/dist/cjs/components/slider.props.d.ts +10 -2
- package/dist/cjs/components/slider.props.d.ts.map +1 -1
- package/dist/cjs/components/slider.props.js +1 -1
- package/dist/cjs/components/slider.props.js.map +2 -2
- package/dist/cjs/components/switch.d.ts.map +1 -1
- package/dist/cjs/components/switch.js +1 -1
- package/dist/cjs/components/switch.js.map +3 -3
- package/dist/cjs/components/switch.props.d.ts +17 -4
- package/dist/cjs/components/switch.props.d.ts.map +1 -1
- package/dist/cjs/components/switch.props.js +1 -1
- package/dist/cjs/components/switch.props.js.map +3 -3
- package/dist/cjs/components/tab-nav.d.ts.map +1 -1
- package/dist/cjs/components/tab-nav.js +1 -1
- package/dist/cjs/components/tab-nav.js.map +3 -3
- package/dist/cjs/components/tabs.d.ts.map +1 -1
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +2 -2
- package/dist/cjs/components/text-area.d.ts.map +1 -1
- package/dist/cjs/components/text-area.js +1 -1
- package/dist/cjs/components/text-area.js.map +3 -3
- package/dist/cjs/components/text-area.props.d.ts +29 -0
- package/dist/cjs/components/text-area.props.d.ts.map +1 -1
- package/dist/cjs/components/text-area.props.js +1 -1
- package/dist/cjs/components/text-area.props.js.map +3 -3
- package/dist/cjs/components/text-field.d.ts.map +1 -1
- package/dist/cjs/components/text-field.js +4 -4
- package/dist/cjs/components/text-field.js.map +3 -3
- package/dist/cjs/components/text-field.props.d.ts +29 -0
- package/dist/cjs/components/text-field.props.d.ts.map +1 -1
- package/dist/cjs/components/text-field.props.js +1 -1
- package/dist/cjs/components/text-field.props.js.map +3 -3
- package/dist/cjs/components/text.props.d.ts +1 -1
- package/dist/cjs/components/theme.d.ts +3 -0
- package/dist/cjs/components/theme.d.ts.map +1 -1
- package/dist/cjs/components/theme.js +1 -1
- package/dist/cjs/components/theme.js.map +3 -3
- package/dist/cjs/components/theme.props.d.ts +14 -0
- package/dist/cjs/components/theme.props.d.ts.map +1 -1
- package/dist/cjs/components/theme.props.js +1 -1
- package/dist/cjs/components/theme.props.js.map +3 -3
- package/dist/cjs/components/toggle-button.d.ts +52 -0
- package/dist/cjs/components/toggle-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-button.js +1 -1
- package/dist/cjs/components/toggle-button.js.map +3 -3
- package/dist/cjs/components/toggle-icon-button.d.ts +84 -2
- package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-icon-button.js +1 -1
- package/dist/cjs/components/toggle-icon-button.js.map +3 -3
- package/dist/cjs/hooks/index.d.ts +2 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -0
- package/dist/cjs/hooks/index.js +2 -0
- package/dist/cjs/hooks/index.js.map +7 -0
- package/dist/cjs/hooks/use-live-announcer.d.ts +6 -0
- package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -0
- package/dist/cjs/hooks/use-live-announcer.js +10 -0
- package/dist/cjs/hooks/use-live-announcer.js.map +7 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/props/weight.prop.d.ts +1 -1
- package/dist/cjs/props/weight.prop.js +1 -1
- package/dist/cjs/props/weight.prop.js.map +2 -2
- package/dist/esm/components/_internal/base-button.d.ts +36 -0
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.js.map +3 -3
- package/dist/esm/components/_internal/base-button.props.d.ts +61 -0
- package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.props.js +1 -1
- package/dist/esm/components/_internal/base-button.props.js.map +3 -3
- package/dist/esm/components/_internal/base-checkbox.props.d.ts +6 -1
- package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
- package/dist/esm/components/_internal/base-checkbox.props.js.map +3 -3
- package/dist/esm/components/_internal/base-menu.props.d.ts +8 -0
- package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-menu.props.js +1 -1
- package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
- package/dist/esm/components/_internal/base-radio.props.d.ts +6 -1
- package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-radio.props.js +1 -1
- package/dist/esm/components/_internal/base-radio.props.js.map +3 -3
- package/dist/esm/components/accordion.d.ts.map +1 -1
- package/dist/esm/components/accordion.js +1 -1
- package/dist/esm/components/accordion.js.map +3 -3
- package/dist/esm/components/accordion.props.d.ts +9 -0
- package/dist/esm/components/accordion.props.d.ts.map +1 -1
- package/dist/esm/components/accordion.props.js +1 -1
- package/dist/esm/components/accordion.props.js.map +2 -2
- package/dist/esm/components/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/alert-dialog.js.map +3 -3
- package/dist/esm/components/alert-dialog.props.d.ts +69 -2
- package/dist/esm/components/alert-dialog.props.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.props.js +1 -1
- package/dist/esm/components/alert-dialog.props.js.map +3 -3
- package/dist/esm/components/avatar.d.ts.map +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/avatar.js.map +3 -3
- package/dist/esm/components/avatar.props.d.ts +9 -1
- package/dist/esm/components/avatar.props.d.ts.map +1 -1
- package/dist/esm/components/avatar.props.js +1 -1
- package/dist/esm/components/avatar.props.js.map +3 -3
- package/dist/esm/components/badge.d.ts +8 -1
- package/dist/esm/components/badge.d.ts.map +1 -1
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/badge.js.map +3 -3
- package/dist/esm/components/badge.props.d.ts +14 -6
- package/dist/esm/components/badge.props.d.ts.map +1 -1
- package/dist/esm/components/badge.props.js +1 -1
- package/dist/esm/components/badge.props.js.map +3 -3
- package/dist/esm/components/blockquote.props.d.ts +1 -1
- package/dist/esm/components/button.d.ts +53 -1
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/button.js.map +3 -3
- package/dist/esm/components/button.props.d.ts +17 -0
- package/dist/esm/components/button.props.d.ts.map +1 -1
- package/dist/esm/components/button.props.js.map +2 -2
- package/dist/esm/components/callout.d.ts +4 -0
- package/dist/esm/components/callout.d.ts.map +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/callout.js.map +3 -3
- package/dist/esm/components/callout.props.d.ts +9 -1
- package/dist/esm/components/callout.props.d.ts.map +1 -1
- package/dist/esm/components/callout.props.js +1 -1
- package/dist/esm/components/callout.props.js.map +3 -3
- package/dist/esm/components/card.d.ts.map +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/card.js.map +3 -3
- package/dist/esm/components/card.props.d.ts +5 -0
- package/dist/esm/components/card.props.d.ts.map +1 -1
- package/dist/esm/components/card.props.js +1 -1
- package/dist/esm/components/card.props.js.map +3 -3
- package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
- package/dist/esm/components/checkbox-cards.js +1 -1
- package/dist/esm/components/checkbox-cards.js.map +3 -3
- package/dist/esm/components/checkbox-cards.props.d.ts +2 -2
- package/dist/esm/components/checkbox-cards.props.js +1 -1
- package/dist/esm/components/checkbox-cards.props.js.map +2 -2
- package/dist/esm/components/checkbox-group.props.d.ts +6 -1
- package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
- package/dist/esm/components/checkbox.d.ts.map +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/checkbox.js.map +3 -3
- package/dist/esm/components/code.js.map +1 -1
- package/dist/esm/components/code.props.d.ts +1 -1
- package/dist/esm/components/context-menu.d.ts +1 -1
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/context-menu.js.map +3 -3
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dialog.js.map +3 -3
- package/dist/esm/components/dialog.props.d.ts +5 -0
- package/dist/esm/components/dialog.props.d.ts.map +1 -1
- package/dist/esm/components/dialog.props.js +1 -1
- package/dist/esm/components/dialog.props.js.map +3 -3
- package/dist/esm/components/dropdown-menu.d.ts +1 -1
- package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/dropdown-menu.js.map +3 -3
- package/dist/esm/components/heading.props.d.ts +1 -1
- package/dist/esm/components/icon-button.d.ts +79 -1
- package/dist/esm/components/icon-button.d.ts.map +1 -1
- package/dist/esm/components/icon-button.js +4 -1
- package/dist/esm/components/icon-button.js.map +3 -3
- package/dist/esm/components/image.d.ts +131 -12
- package/dist/esm/components/image.d.ts.map +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/image.js.map +3 -3
- package/dist/esm/components/image.props.d.ts +136 -21
- package/dist/esm/components/image.props.d.ts.map +1 -1
- package/dist/esm/components/image.props.js +1 -1
- package/dist/esm/components/image.props.js.map +3 -3
- package/dist/esm/components/link.props.d.ts +1 -1
- package/dist/esm/components/progress.props.d.ts +2 -2
- package/dist/esm/components/progress.props.js +1 -1
- package/dist/esm/components/progress.props.js.map +2 -2
- package/dist/esm/components/radio-cards.d.ts.map +1 -1
- package/dist/esm/components/radio-cards.js +1 -1
- package/dist/esm/components/radio-cards.js.map +3 -3
- package/dist/esm/components/radio-cards.props.d.ts +2 -2
- package/dist/esm/components/radio-cards.props.js +1 -1
- package/dist/esm/components/radio-cards.props.js.map +2 -2
- package/dist/esm/components/radio.d.ts.map +1 -1
- package/dist/esm/components/radio.js +1 -1
- package/dist/esm/components/radio.js.map +3 -3
- package/dist/esm/components/segmented-control.props.d.ts +3 -3
- package/dist/esm/components/segmented-control.props.js +1 -1
- package/dist/esm/components/segmented-control.props.js.map +2 -2
- package/dist/esm/components/select.d.ts.map +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/select.js.map +3 -3
- package/dist/esm/components/select.props.d.ts +12 -0
- package/dist/esm/components/select.props.d.ts.map +1 -1
- package/dist/esm/components/select.props.js +1 -1
- package/dist/esm/components/select.props.js.map +2 -2
- package/dist/esm/components/sidebar.d.ts +5 -0
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.js.map +3 -3
- package/dist/esm/components/slider.d.ts +5 -0
- package/dist/esm/components/slider.d.ts.map +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/slider.js.map +3 -3
- package/dist/esm/components/slider.props.d.ts +10 -2
- package/dist/esm/components/slider.props.d.ts.map +1 -1
- package/dist/esm/components/slider.props.js +1 -1
- package/dist/esm/components/slider.props.js.map +2 -2
- package/dist/esm/components/switch.d.ts.map +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/switch.js.map +3 -3
- package/dist/esm/components/switch.props.d.ts +17 -4
- package/dist/esm/components/switch.props.d.ts.map +1 -1
- package/dist/esm/components/switch.props.js +1 -1
- package/dist/esm/components/switch.props.js.map +3 -3
- package/dist/esm/components/tab-nav.d.ts.map +1 -1
- package/dist/esm/components/tab-nav.js +1 -1
- package/dist/esm/components/tab-nav.js.map +3 -3
- package/dist/esm/components/tabs.d.ts.map +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +2 -2
- package/dist/esm/components/text-area.d.ts.map +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-area.js.map +3 -3
- package/dist/esm/components/text-area.props.d.ts +29 -0
- package/dist/esm/components/text-area.props.d.ts.map +1 -1
- package/dist/esm/components/text-area.props.js +1 -1
- package/dist/esm/components/text-area.props.js.map +3 -3
- package/dist/esm/components/text-field.d.ts.map +1 -1
- package/dist/esm/components/text-field.js +4 -4
- package/dist/esm/components/text-field.js.map +3 -3
- package/dist/esm/components/text-field.props.d.ts +29 -0
- package/dist/esm/components/text-field.props.d.ts.map +1 -1
- package/dist/esm/components/text-field.props.js +1 -1
- package/dist/esm/components/text-field.props.js.map +3 -3
- package/dist/esm/components/text.props.d.ts +1 -1
- package/dist/esm/components/theme.d.ts +3 -0
- package/dist/esm/components/theme.d.ts.map +1 -1
- package/dist/esm/components/theme.js +1 -1
- package/dist/esm/components/theme.js.map +3 -3
- package/dist/esm/components/theme.props.d.ts +14 -0
- package/dist/esm/components/theme.props.d.ts.map +1 -1
- package/dist/esm/components/theme.props.js +1 -1
- package/dist/esm/components/theme.props.js.map +3 -3
- package/dist/esm/components/toggle-button.d.ts +52 -0
- package/dist/esm/components/toggle-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-button.js.map +3 -3
- package/dist/esm/components/toggle-icon-button.d.ts +84 -2
- package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js.map +3 -3
- package/dist/esm/hooks/index.d.ts +2 -0
- package/dist/esm/hooks/index.d.ts.map +1 -0
- package/dist/esm/hooks/index.js +2 -0
- package/dist/esm/hooks/index.js.map +7 -0
- package/dist/esm/hooks/use-live-announcer.d.ts +6 -0
- package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -0
- package/dist/esm/hooks/use-live-announcer.js +10 -0
- package/dist/esm/hooks/use-live-announcer.js.map +7 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/props/weight.prop.d.ts +1 -1
- package/dist/esm/props/weight.prop.js +1 -1
- package/dist/esm/props/weight.prop.js.map +2 -2
- package/layout/components.css +1 -0
- package/layout.css +1 -0
- package/package.json +2 -1
- package/src/components/_internal/base-button.css +483 -284
- package/src/components/_internal/base-button.props.ts +87 -0
- package/src/components/_internal/base-button.tsx +127 -10
- package/src/components/_internal/base-card.css +866 -83
- package/src/components/_internal/base-checkbox.css +252 -52
- package/src/components/_internal/base-checkbox.props.ts +4 -1
- package/src/components/_internal/base-dialog.css +39 -8
- package/src/components/_internal/base-menu.css +55 -32
- package/src/components/_internal/base-menu.props.ts +10 -0
- package/src/components/_internal/base-radio.css +222 -52
- package/src/components/_internal/base-radio.props.ts +4 -1
- package/src/components/_internal/base-tab-list.css +16 -0
- package/src/components/accordion.css +465 -62
- package/src/components/accordion.props.tsx +6 -0
- package/src/components/accordion.tsx +54 -7
- package/src/components/alert-dialog.props.tsx +22 -2
- package/src/components/alert-dialog.tsx +94 -3
- package/src/components/avatar.css +294 -152
- package/src/components/avatar.props.tsx +7 -1
- package/src/components/avatar.tsx +12 -2
- package/src/components/badge.css +160 -138
- package/src/components/badge.props.tsx +10 -3
- package/src/components/badge.tsx +71 -9
- package/src/components/button.css +88 -0
- package/src/components/button.props.tsx +17 -0
- package/src/components/button.tsx +107 -5
- package/src/components/callout.css +122 -35
- package/src/components/callout.props.tsx +7 -1
- package/src/components/callout.tsx +32 -9
- package/src/components/card.css +0 -597
- package/src/components/card.props.tsx +3 -0
- package/src/components/card.tsx +4 -2
- package/src/components/checkbox-cards.css +27 -104
- package/src/components/checkbox-cards.props.tsx +2 -2
- package/src/components/checkbox-cards.tsx +21 -3
- package/src/components/checkbox.tsx +2 -0
- package/src/components/code.css +1 -1
- package/src/components/code.tsx +1 -1
- package/src/components/container.css +1 -0
- package/src/components/context-menu.tsx +54 -12
- package/src/components/dialog.props.tsx +3 -0
- package/src/components/dialog.tsx +93 -3
- package/src/components/dropdown-menu.tsx +49 -12
- package/src/components/icon-button.css +73 -4
- package/src/components/icon-button.tsx +125 -19
- package/src/components/image.css +160 -91
- package/src/components/image.props.ts +152 -15
- package/src/components/image.tsx +290 -247
- package/src/components/kbd.css +23 -44
- package/src/components/progress.css +130 -149
- package/src/components/progress.props.tsx +2 -2
- package/src/components/radio-cards.css +23 -113
- package/src/components/radio-cards.props.tsx +2 -2
- package/src/components/radio-cards.tsx +45 -18
- package/src/components/radio.tsx +4 -3
- package/src/components/scroll-area.css +1 -1
- package/src/components/segmented-control.css +83 -64
- package/src/components/segmented-control.props.tsx +3 -3
- package/src/components/select.css +502 -224
- package/src/components/select.props.tsx +8 -0
- package/src/components/select.tsx +45 -2
- package/src/components/sidebar.css +17 -6
- package/src/components/sidebar.tsx +61 -5
- package/src/components/slider.css +228 -88
- package/src/components/slider.props.tsx +6 -2
- package/src/components/slider.tsx +201 -24
- package/src/components/spinner.css +12 -0
- package/src/components/switch.css +135 -216
- package/src/components/switch.props.tsx +16 -4
- package/src/components/switch.tsx +5 -3
- package/src/components/tab-nav.tsx +6 -3
- package/src/components/tabs.tsx +2 -0
- package/src/components/text-area.css +222 -140
- package/src/components/text-area.props.tsx +18 -1
- package/src/components/text-area.tsx +58 -7
- package/src/components/text-field.css +214 -131
- package/src/components/text-field.props.tsx +17 -0
- package/src/components/text-field.tsx +79 -28
- package/src/components/theme.props.tsx +12 -0
- package/src/components/theme.tsx +31 -1
- package/src/components/toggle-button.tsx +102 -3
- package/src/components/toggle-icon-button.tsx +150 -7
- package/src/components/tooltip.css +3 -3
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-live-announcer.ts +52 -0
- package/src/index.ts +1 -0
- package/src/props/weight.prop.ts +1 -1
- package/src/styles/fonts.css +27 -13
- package/src/styles/index.css +1 -1
- package/src/styles/tokens/base.css +2 -0
- package/src/styles/tokens/blur.css +32 -0
- package/src/styles/tokens/color.css +9 -9
- package/src/styles/tokens/constants.css +88 -140
- package/src/styles/tokens/index.css +2 -0
- package/src/styles/tokens/opacity.css +32 -0
- package/src/styles/tokens/radius.css +6 -10
- package/src/styles/tokens/shadow.css +25 -25
- package/src/styles/tokens/transition.css +49 -13
- package/src/styles/tokens/typography.css +7 -3
- package/src/styles/utilities/font-weight.css +16 -0
- package/styles.css +10689 -8708
- package/tokens/base.css +127 -49
- package/tokens.css +158 -114
- package/utilities.css +72 -0
|
@@ -1,7 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Button Component Styles
|
|
3
|
+
*
|
|
4
|
+
* This file contains the core styling for the Button component, including
|
|
5
|
+
* size variants, icon handling, and responsive design patterns. The styles
|
|
6
|
+
* are built on top of the base button styles imported from _internal.
|
|
7
|
+
*
|
|
8
|
+
* Key features:
|
|
9
|
+
* - Responsive sizing with mobile-first approach
|
|
10
|
+
* - Automatic icon sizing based on button size
|
|
11
|
+
* - Ghost variant with specialized padding
|
|
12
|
+
* - Consistent typography and spacing
|
|
13
|
+
*/
|
|
14
|
+
|
|
1
15
|
@import './_internal/base-button.css';
|
|
2
16
|
|
|
17
|
+
/*
|
|
18
|
+
* Button-specific styles that extend the base button
|
|
19
|
+
* These styles handle icon opacity and specialized behaviors
|
|
20
|
+
*/
|
|
3
21
|
.rt-Button {
|
|
4
22
|
&:where(:not(.rt-variant-ghost)) {
|
|
23
|
+
/*
|
|
24
|
+
* Reduce icon opacity slightly for better visual hierarchy
|
|
25
|
+
* This creates a subtle distinction between icons and text
|
|
26
|
+
*/
|
|
5
27
|
/* stylelint-disable-next-line selector-max-type */
|
|
6
28
|
& :where(svg) {
|
|
7
29
|
opacity: 0.9;
|
|
@@ -13,8 +35,18 @@
|
|
|
13
35
|
* *
|
|
14
36
|
* SIZES *
|
|
15
37
|
* *
|
|
38
|
+
* Button sizes are designed for different interface densities and contexts:
|
|
39
|
+
* - Size 1 (24px): Compact for toolbars and dense interfaces
|
|
40
|
+
* - Size 2 (32px): Standard for most interface contexts
|
|
41
|
+
* - Size 3 (40px): Large for important actions and mobile touch targets
|
|
42
|
+
* - Size 4 (48px): Extra large for hero sections and maximum impact
|
|
43
|
+
* *
|
|
16
44
|
***************************************************************************************************/
|
|
17
45
|
|
|
46
|
+
/*
|
|
47
|
+
* Ghost variant has specialized padding that differs from other variants
|
|
48
|
+
* This creates a more subtle, text-like appearance
|
|
49
|
+
*/
|
|
18
50
|
.rt-Button {
|
|
19
51
|
&:where(.rt-variant-ghost) {
|
|
20
52
|
padding: var(--button-ghost-padding-y) var(--button-ghost-padding-x);
|
|
@@ -23,88 +55,132 @@
|
|
|
23
55
|
|
|
24
56
|
@breakpoints {
|
|
25
57
|
.rt-Button {
|
|
58
|
+
/*
|
|
59
|
+
* Size 1: Compact (24px height)
|
|
60
|
+
* Designed for toolbars, dense interfaces, and space-constrained contexts
|
|
61
|
+
*/
|
|
26
62
|
&:where(.rt-r-size-1) {
|
|
27
63
|
gap: var(--component-gap-1);
|
|
28
64
|
font-size: var(--font-size-1);
|
|
29
65
|
line-height: var(--line-height-1);
|
|
30
66
|
letter-spacing: var(--letter-spacing-1);
|
|
31
67
|
|
|
68
|
+
/*
|
|
69
|
+
* Icon sizing for size 1
|
|
70
|
+
* Icons are automatically sized to match the button's scale
|
|
71
|
+
*/
|
|
32
72
|
/* stylelint-disable-next-line selector-max-type */
|
|
33
73
|
& :where(svg) {
|
|
34
74
|
width: var(--content-icon-size-1);
|
|
35
75
|
height: var(--content-icon-size-1);
|
|
36
76
|
}
|
|
37
77
|
|
|
78
|
+
/*
|
|
79
|
+
* Standard padding for non-ghost variants
|
|
80
|
+
* Provides adequate touch targets while maintaining compact appearance
|
|
81
|
+
*/
|
|
38
82
|
&:where(:not(.rt-variant-ghost)) {
|
|
39
83
|
padding-left: var(--space-2);
|
|
40
84
|
padding-right: var(--space-2);
|
|
41
85
|
}
|
|
86
|
+
|
|
87
|
+
/*
|
|
88
|
+
* Ghost variant padding for size 1
|
|
89
|
+
* Reduced padding creates seamless text integration
|
|
90
|
+
*/
|
|
42
91
|
&:where(.rt-variant-ghost) {
|
|
43
92
|
gap: var(--component-gap-ghost-1);
|
|
44
93
|
--button-ghost-padding-x: var(--space-2);
|
|
45
94
|
--button-ghost-padding-y: var(--space-1);
|
|
46
95
|
}
|
|
47
96
|
}
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* Size 2: Standard (32px height)
|
|
100
|
+
* Default size for most interface contexts and general use
|
|
101
|
+
*/
|
|
48
102
|
&:where(.rt-r-size-2) {
|
|
49
103
|
gap: var(--component-gap-2);
|
|
50
104
|
font-size: var(--font-size-2);
|
|
51
105
|
line-height: var(--line-height-2);
|
|
52
106
|
letter-spacing: var(--letter-spacing-2);
|
|
53
107
|
|
|
108
|
+
/* Icon sizing for size 2 */
|
|
54
109
|
/* stylelint-disable-next-line selector-max-type */
|
|
55
110
|
& :where(svg) {
|
|
56
111
|
width: var(--content-icon-size-2);
|
|
57
112
|
height: var(--content-icon-size-2);
|
|
58
113
|
}
|
|
59
114
|
|
|
115
|
+
/* Standard padding for non-ghost variants */
|
|
60
116
|
&:where(:not(.rt-variant-ghost)) {
|
|
61
117
|
padding-left: var(--space-3);
|
|
62
118
|
padding-right: var(--space-3);
|
|
63
119
|
}
|
|
120
|
+
|
|
121
|
+
/* Ghost variant padding for size 2 */
|
|
64
122
|
&:where(.rt-variant-ghost) {
|
|
65
123
|
gap: var(--component-gap-ghost-2);
|
|
66
124
|
--button-ghost-padding-x: var(--space-2);
|
|
67
125
|
--button-ghost-padding-y: var(--space-1);
|
|
68
126
|
}
|
|
69
127
|
}
|
|
128
|
+
|
|
129
|
+
/*
|
|
130
|
+
* Size 3: Large (40px height)
|
|
131
|
+
* Recommended for important actions and mobile touch targets
|
|
132
|
+
*/
|
|
70
133
|
&:where(.rt-r-size-3) {
|
|
71
134
|
gap: var(--component-gap-3);
|
|
72
135
|
font-size: var(--font-size-3);
|
|
73
136
|
line-height: var(--line-height-3);
|
|
74
137
|
letter-spacing: var(--letter-spacing-3);
|
|
75
138
|
|
|
139
|
+
/* Icon sizing for size 3 */
|
|
76
140
|
/* stylelint-disable-next-line selector-max-type */
|
|
77
141
|
& :where(svg) {
|
|
78
142
|
width: var(--content-icon-size-3);
|
|
79
143
|
height: var(--content-icon-size-3);
|
|
80
144
|
}
|
|
81
145
|
|
|
146
|
+
/* Standard padding for non-ghost variants */
|
|
82
147
|
&:where(:not(.rt-variant-ghost)) {
|
|
83
148
|
padding-left: var(--space-4);
|
|
84
149
|
padding-right: var(--space-4);
|
|
85
150
|
}
|
|
151
|
+
|
|
152
|
+
/* Ghost variant padding for size 3 */
|
|
86
153
|
&:where(.rt-variant-ghost) {
|
|
87
154
|
gap: var(--component-gap-ghost-3);
|
|
88
155
|
--button-ghost-padding-x: var(--space-3);
|
|
89
156
|
--button-ghost-padding-y: calc(var(--space-1) * 1.5);
|
|
90
157
|
}
|
|
91
158
|
}
|
|
159
|
+
|
|
160
|
+
/*
|
|
161
|
+
* Size 4: Extra Large (48px height)
|
|
162
|
+
* Designed for hero sections and maximum visual impact
|
|
163
|
+
*/
|
|
92
164
|
&:where(.rt-r-size-4) {
|
|
93
165
|
gap: var(--component-gap-4);
|
|
94
166
|
font-size: var(--font-size-4);
|
|
95
167
|
line-height: var(--line-height-4);
|
|
96
168
|
letter-spacing: var(--letter-spacing-4);
|
|
97
169
|
|
|
170
|
+
/* Icon sizing for size 4 */
|
|
98
171
|
/* stylelint-disable-next-line selector-max-type */
|
|
99
172
|
& :where(svg) {
|
|
100
173
|
width: var(--content-icon-size-4);
|
|
101
174
|
height: var(--content-icon-size-4);
|
|
102
175
|
}
|
|
103
176
|
|
|
177
|
+
/* Standard padding for non-ghost variants */
|
|
104
178
|
&:where(:not(.rt-variant-ghost)) {
|
|
105
179
|
padding-left: var(--space-5);
|
|
106
180
|
padding-right: var(--space-5);
|
|
107
181
|
}
|
|
182
|
+
|
|
183
|
+
/* Ghost variant padding for size 4 */
|
|
108
184
|
&:where(.rt-variant-ghost) {
|
|
109
185
|
gap: var(--component-gap-ghost-4);
|
|
110
186
|
--button-ghost-padding-x: var(--space-4);
|
|
@@ -118,8 +194,20 @@
|
|
|
118
194
|
* *
|
|
119
195
|
* VARIANTS *
|
|
120
196
|
* *
|
|
197
|
+
* Button variants provide different visual contexts and hierarchies:
|
|
198
|
+
* - classic: Premium, sophisticated appearance
|
|
199
|
+
* - solid: Primary actions that should be noticed first
|
|
200
|
+
* - soft: Content-heavy interfaces, natural integration
|
|
201
|
+
* - surface: Elevated appearance with subtle depth
|
|
202
|
+
* - outline: Secondary actions that support primary actions
|
|
203
|
+
* - ghost: Utility functions that don't compete for attention
|
|
204
|
+
* *
|
|
121
205
|
***************************************************************************************************/
|
|
122
206
|
|
|
207
|
+
/*
|
|
208
|
+
* Typography styling for all button variants
|
|
209
|
+
* Ensures consistent font weight across all button types
|
|
210
|
+
*/
|
|
123
211
|
.rt-Button {
|
|
124
212
|
font-weight: var(--font-weight-medium);
|
|
125
213
|
}
|
|
@@ -1 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Button prop definitions exported for external use
|
|
3
|
+
*
|
|
4
|
+
* This file re-exports the base button prop definitions to provide
|
|
5
|
+
* a clean API for the Button component. The base button props are
|
|
6
|
+
* defined in the _internal directory and used by all button variants
|
|
7
|
+
* to ensure consistency across the design system.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { buttonPropDefs } from '@kushagradhawan/kookie-ui';
|
|
12
|
+
*
|
|
13
|
+
* // Access button prop definitions for type checking or validation
|
|
14
|
+
* type ButtonSize = typeof buttonPropDefs.size.values[number];
|
|
15
|
+
* type ButtonVariant = typeof buttonPropDefs.variant.values[number];
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
1
18
|
export { baseButtonPropDefs as buttonPropDefs } from './_internal/base-button.props.js';
|
|
@@ -2,25 +2,127 @@ import * as React from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { BaseButton } from './_internal/base-button.js';
|
|
5
|
+
import { Tooltip } from './tooltip.js';
|
|
5
6
|
import type { BaseButtonProps } from './_internal/base-button.js';
|
|
6
7
|
|
|
7
8
|
type ButtonElement = React.ElementRef<typeof BaseButton>;
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Tooltip configuration props that can be passed to Button
|
|
12
|
+
* These props are forwarded to the underlying Tooltip component
|
|
13
|
+
*/
|
|
14
|
+
interface ButtonTooltipProps {
|
|
15
|
+
/** Content to display in the tooltip on hover/focus */
|
|
16
|
+
tooltip?: React.ReactNode;
|
|
17
|
+
/** Side of the button where the tooltip should appear */
|
|
18
|
+
tooltipSide?: 'top' | 'right' | 'bottom' | 'left';
|
|
19
|
+
/** Alignment of the tooltip relative to the button */
|
|
20
|
+
tooltipAlign?: 'start' | 'center' | 'end';
|
|
21
|
+
/** Delay before showing the tooltip (in milliseconds) */
|
|
22
|
+
tooltipDelayDuration?: number;
|
|
23
|
+
/** Whether to disable hoverable content behavior */
|
|
24
|
+
tooltipDisableHoverableContent?: boolean;
|
|
25
|
+
}
|
|
11
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Core Button props excluding the 'as' prop for polymorphic behavior
|
|
29
|
+
* Combines BaseButton props with tooltip functionality
|
|
30
|
+
*/
|
|
31
|
+
type ButtonOwnProps = Omit<BaseButtonProps, 'as'> & ButtonTooltipProps;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Polymorphic Button props that support rendering as different HTML elements
|
|
35
|
+
* @template C - The element type to render as (defaults to 'button')
|
|
36
|
+
*/
|
|
12
37
|
type ButtonProps<C extends React.ElementType = 'button'> = ButtonOwnProps & {
|
|
38
|
+
/** Element type to render as (e.g., 'a', 'span', etc.) */
|
|
13
39
|
as?: C;
|
|
14
40
|
} & Omit<React.ComponentPropsWithoutRef<C>, keyof ButtonOwnProps>;
|
|
15
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Button component type that supports polymorphic rendering
|
|
44
|
+
* @template C - The element type to render as
|
|
45
|
+
*/
|
|
16
46
|
type ButtonComponent = <C extends React.ElementType = 'button'>(
|
|
17
47
|
props: ButtonProps<C> & { ref?: React.ForwardedRef<ButtonElement> },
|
|
18
48
|
) => React.ReactElement | null;
|
|
19
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Button component for triggering actions throughout your interface
|
|
52
|
+
*
|
|
53
|
+
* The Button component is the primary interactive element in the Kookie User Interface.
|
|
54
|
+
* It provides six visual variants, four sizes, comprehensive color options, and built-in
|
|
55
|
+
* tooltip support. The component automatically handles icon sizing, supports responsive
|
|
56
|
+
* layouts, and provides accessibility compliance out of the box.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* // Basic button
|
|
61
|
+
* <Button>Click me</Button>
|
|
62
|
+
*
|
|
63
|
+
* // Button with variant and size
|
|
64
|
+
* <Button variant="solid" size="3">Primary Action</Button>
|
|
65
|
+
*
|
|
66
|
+
* // Button with tooltip
|
|
67
|
+
* <Button tooltip="Save your progress">Save</Button>
|
|
68
|
+
*
|
|
69
|
+
* // Polymorphic button as link
|
|
70
|
+
* <Button as="a" href="/dashboard">Go to Dashboard</Button>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
20
73
|
const Button = React.forwardRef(
|
|
21
|
-
(
|
|
22
|
-
|
|
23
|
-
|
|
74
|
+
(
|
|
75
|
+
{
|
|
76
|
+
className,
|
|
77
|
+
tooltip,
|
|
78
|
+
tooltipSide = 'top',
|
|
79
|
+
tooltipAlign = 'center',
|
|
80
|
+
tooltipDelayDuration,
|
|
81
|
+
tooltipDisableHoverableContent,
|
|
82
|
+
...props
|
|
83
|
+
}: ButtonProps,
|
|
84
|
+
forwardedRef: React.ForwardedRef<ButtonElement>,
|
|
85
|
+
) => {
|
|
86
|
+
// Generate unique ID for tooltip accessibility
|
|
87
|
+
const tooltipId = React.useId();
|
|
88
|
+
const hasTooltip = Boolean(tooltip);
|
|
89
|
+
|
|
90
|
+
// Prepare accessibility props for tooltip integration
|
|
91
|
+
const tooltipAccessibilityProps = React.useMemo(
|
|
92
|
+
() => (hasTooltip ? { 'aria-describedby': tooltipId } : {}),
|
|
93
|
+
[hasTooltip, tooltipId],
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
// Create the base button element with tooltip accessibility props
|
|
97
|
+
const button = (
|
|
98
|
+
<BaseButton
|
|
99
|
+
{...props}
|
|
100
|
+
{...tooltipAccessibilityProps}
|
|
101
|
+
ref={forwardedRef}
|
|
102
|
+
className={classNames('rt-Button', className)}
|
|
103
|
+
/>
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// If no tooltip is provided, return the button as-is for better performance
|
|
107
|
+
if (!tooltip) {
|
|
108
|
+
return button;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Wrap with Tooltip when tooltip content is provided
|
|
112
|
+
// This creates a compound component that handles both button and tooltip functionality
|
|
113
|
+
return (
|
|
114
|
+
<Tooltip
|
|
115
|
+
content={tooltip}
|
|
116
|
+
side={tooltipSide}
|
|
117
|
+
align={tooltipAlign}
|
|
118
|
+
delayDuration={tooltipDelayDuration}
|
|
119
|
+
disableHoverableContent={tooltipDisableHoverableContent}
|
|
120
|
+
id={tooltipId}
|
|
121
|
+
>
|
|
122
|
+
{button}
|
|
123
|
+
</Tooltip>
|
|
124
|
+
);
|
|
125
|
+
},
|
|
24
126
|
) as ButtonComponent & { displayName?: string };
|
|
25
127
|
|
|
26
128
|
Button.displayName = 'Button';
|
|
@@ -7,9 +7,45 @@
|
|
|
7
7
|
color: var(--accent-a11);
|
|
8
8
|
transition: var(--transition-card);
|
|
9
9
|
|
|
10
|
+
/* Theme-level translucent override */
|
|
11
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
12
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
13
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Prevent backdrop-filter stacking with parents */
|
|
17
|
+
isolation: isolate;
|
|
18
|
+
|
|
19
|
+
/* Component-level overrides */
|
|
20
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
21
|
+
backdrop-filter: none;
|
|
22
|
+
--backdrop-filter-components: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
26
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
27
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
28
|
+
}
|
|
29
|
+
|
|
10
30
|
&:where(.rt-high-contrast) {
|
|
11
31
|
color: var(--accent-12);
|
|
12
32
|
}
|
|
33
|
+
|
|
34
|
+
/* Focus styles for accessibility */
|
|
35
|
+
&:where(:focus-visible) {
|
|
36
|
+
outline: 2px solid var(--accent-8);
|
|
37
|
+
outline-offset: 2px;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Reduced motion support */
|
|
41
|
+
@media (prefers-reduced-motion: reduce) {
|
|
42
|
+
transition: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Forced colors support */
|
|
46
|
+
@media (forced-colors: active) {
|
|
47
|
+
border: 1px solid CanvasText;
|
|
48
|
+
}
|
|
13
49
|
}
|
|
14
50
|
|
|
15
51
|
.rt-CalloutIcon {
|
|
@@ -75,56 +111,56 @@
|
|
|
75
111
|
/* soft */
|
|
76
112
|
|
|
77
113
|
.rt-CalloutRoot:where(.rt-variant-soft) {
|
|
78
|
-
/* Base state: solid
|
|
79
|
-
background-color: var(--accent-
|
|
114
|
+
/* Base state: solid color for solid panels */
|
|
115
|
+
background-color: var(--accent-2);
|
|
116
|
+
color: var(--accent-a11);
|
|
80
117
|
|
|
81
118
|
/* Theme-level translucent override */
|
|
82
|
-
:where([data-panel-background='translucent']) & {
|
|
83
|
-
background-color: var(--accent-
|
|
84
|
-
backdrop-filter: var(--backdrop-filter-panel);
|
|
119
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
120
|
+
background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
|
|
85
121
|
}
|
|
86
122
|
|
|
87
123
|
/* Component-level overrides (higher specificity) */
|
|
88
|
-
&:where([data-panel-background='solid']) {
|
|
89
|
-
background-color: var(--accent-
|
|
90
|
-
|
|
91
|
-
|
|
124
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
125
|
+
background-color: var(--accent-2);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
129
|
+
background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
|
|
92
130
|
}
|
|
93
131
|
|
|
94
|
-
&:where(
|
|
95
|
-
|
|
96
|
-
backdrop-filter: var(--backdrop-filter-panel);
|
|
97
|
-
--backdrop-filter-panel: blur(var(--backdrop-blur-panel));
|
|
132
|
+
&:where(.rt-high-contrast) {
|
|
133
|
+
color: var(--accent-12);
|
|
98
134
|
}
|
|
99
135
|
}
|
|
100
136
|
|
|
101
137
|
/* surface */
|
|
102
138
|
|
|
103
139
|
.rt-CalloutRoot:where(.rt-variant-surface) {
|
|
104
|
-
/* Base state: solid
|
|
140
|
+
/* Base state: solid accent for solid panels */
|
|
105
141
|
background-color: var(--accent-2);
|
|
106
|
-
box-shadow: inset 0 0 0
|
|
142
|
+
box-shadow: inset 0 0 0 1px var(--accent-6);
|
|
143
|
+
color: var(--accent-a11);
|
|
107
144
|
|
|
108
145
|
/* Theme-level translucent override */
|
|
109
|
-
:where([data-panel-background='translucent']) & {
|
|
110
|
-
background-color: var(--accent-a2);
|
|
111
|
-
box-shadow: inset 0 0 0
|
|
112
|
-
backdrop-filter: var(--backdrop-filter-panel);
|
|
146
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
147
|
+
background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
|
|
148
|
+
box-shadow: inset 0 0 0 1px var(--accent-a6);
|
|
113
149
|
}
|
|
114
150
|
|
|
115
151
|
/* Component-level overrides (higher specificity) */
|
|
116
|
-
&:where([data-panel-background='solid']) {
|
|
152
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
117
153
|
background-color: var(--accent-2);
|
|
118
|
-
box-shadow: inset 0 0 0
|
|
119
|
-
backdrop-filter: none;
|
|
120
|
-
--backdrop-filter-panel: none;
|
|
154
|
+
box-shadow: inset 0 0 0 1px var(--accent-6);
|
|
121
155
|
}
|
|
122
156
|
|
|
123
|
-
&:where([data-panel-background='translucent']) {
|
|
124
|
-
background-color: var(--accent-a2);
|
|
125
|
-
box-shadow: inset 0 0 0
|
|
126
|
-
|
|
127
|
-
|
|
157
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
158
|
+
background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
|
|
159
|
+
box-shadow: inset 0 0 0 1px var(--accent-a6);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
&:where(.rt-high-contrast) {
|
|
163
|
+
color: var(--accent-12);
|
|
128
164
|
}
|
|
129
165
|
}
|
|
130
166
|
|
|
@@ -132,19 +168,70 @@
|
|
|
132
168
|
|
|
133
169
|
.rt-CalloutRoot:where(.rt-variant-outline) {
|
|
134
170
|
/* Base state: solid colors for solid panels */
|
|
135
|
-
box-shadow: inset 0 0 0
|
|
171
|
+
box-shadow: inset 0 0 0 1px var(--accent-6);
|
|
172
|
+
color: var(--accent-11);
|
|
136
173
|
|
|
137
174
|
/* Theme-level translucent override */
|
|
138
|
-
:where([data-panel-background='translucent']) & {
|
|
139
|
-
box-shadow: inset 0 0 0
|
|
175
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
176
|
+
box-shadow: inset 0 0 0 1px var(--accent-a6);
|
|
177
|
+
color: var(--accent-a11);
|
|
140
178
|
}
|
|
141
179
|
|
|
142
180
|
/* Component-level overrides (higher specificity) */
|
|
143
|
-
&:where([data-panel-background='solid']) {
|
|
144
|
-
box-shadow: inset 0 0 0
|
|
181
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
182
|
+
box-shadow: inset 0 0 0 1px var(--accent-6);
|
|
183
|
+
color: var(--accent-11);
|
|
145
184
|
}
|
|
146
185
|
|
|
147
|
-
&:where([data-panel-background='translucent']) {
|
|
148
|
-
box-shadow: inset 0 0 0
|
|
186
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
187
|
+
box-shadow: inset 0 0 0 1px var(--accent-a6);
|
|
188
|
+
color: var(--accent-a11);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
&:where(.rt-high-contrast) {
|
|
192
|
+
color: var(--accent-12);
|
|
149
193
|
}
|
|
150
194
|
}
|
|
195
|
+
|
|
196
|
+
/* classic */
|
|
197
|
+
|
|
198
|
+
.rt-CalloutRoot:where(.rt-variant-classic) {
|
|
199
|
+
/* Base state: solid surface for solid panels */
|
|
200
|
+
background-color: var(--color-surface-solid);
|
|
201
|
+
box-shadow: var(--shadow-2);
|
|
202
|
+
color: var(--accent-a11);
|
|
203
|
+
transition: var(--transition-text-field);
|
|
204
|
+
|
|
205
|
+
/* Theme-level translucent override */
|
|
206
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
207
|
+
background-color: var(--color-surface-translucent);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* Component-level overrides (higher specificity) */
|
|
211
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
212
|
+
background-color: var(--color-surface-solid);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
216
|
+
background-color: var(--color-surface-translucent);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
&:where(.rt-high-contrast) {
|
|
220
|
+
color: var(--accent-12);
|
|
221
|
+
background-color: var(--color-surface-solid);
|
|
222
|
+
|
|
223
|
+
/* Theme-level translucent override for high contrast */
|
|
224
|
+
:where([data-panel-background='translucent'], [data-material='translucent']) & {
|
|
225
|
+
background-color: var(--color-surface-translucent);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* Component-level overrides for high contrast */
|
|
229
|
+
&:where([data-panel-background='solid'], [data-material='solid']) {
|
|
230
|
+
background-color: var(--color-surface-solid);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
&:where([data-panel-background='translucent'], [data-material='translucent']) {
|
|
234
|
+
background-color: var(--color-surface-translucent);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
@@ -5,8 +5,9 @@ import { highContrastPropDef } from '../props/high-contrast.prop.js';
|
|
|
5
5
|
import type { PropDef } from '../props/prop-def.js';
|
|
6
6
|
|
|
7
7
|
const sizes = ['1', '2', '3'] as const;
|
|
8
|
-
const variants = ['soft', 'surface', 'outline'] as const;
|
|
8
|
+
const variants = ['soft', 'surface', 'outline', 'classic'] as const;
|
|
9
9
|
const panelBackgrounds = ['solid', 'translucent'] as const;
|
|
10
|
+
const materials = ['solid', 'translucent'] as const;
|
|
10
11
|
|
|
11
12
|
const calloutRootPropDefs = {
|
|
12
13
|
...asChildPropDef,
|
|
@@ -14,10 +15,15 @@ const calloutRootPropDefs = {
|
|
|
14
15
|
variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },
|
|
15
16
|
...accentColorPropDef,
|
|
16
17
|
...highContrastPropDef,
|
|
18
|
+
material: { type: 'enum', values: materials, default: undefined },
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use `material` prop instead. This prop will be removed in a future version.
|
|
21
|
+
*/
|
|
17
22
|
panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },
|
|
18
23
|
} satisfies {
|
|
19
24
|
size: PropDef<(typeof sizes)[number]>;
|
|
20
25
|
variant: PropDef<(typeof variants)[number]>;
|
|
26
|
+
material: PropDef<(typeof materials)[number] | undefined>;
|
|
21
27
|
panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;
|
|
22
28
|
};
|
|
23
29
|
|
|
@@ -20,32 +20,55 @@ import type { GetPropDefTypes } from '../props/prop-def.js';
|
|
|
20
20
|
|
|
21
21
|
type CalloutRootOwnProps = GetPropDefTypes<typeof calloutRootPropDefs>;
|
|
22
22
|
|
|
23
|
-
type CalloutContextValue = {
|
|
23
|
+
type CalloutContextValue = {
|
|
24
|
+
size?: CalloutRootOwnProps['size'];
|
|
25
|
+
variant?: CalloutRootOwnProps['variant'];
|
|
26
|
+
color?: CalloutRootOwnProps['color'];
|
|
27
|
+
};
|
|
24
28
|
const CalloutContext = React.createContext<CalloutContextValue>({});
|
|
25
29
|
|
|
26
30
|
type CalloutRootElement = React.ElementRef<'div'>;
|
|
27
31
|
interface CalloutRootProps
|
|
28
32
|
extends ComponentPropsWithout<'div', RemovedProps>,
|
|
29
33
|
MarginProps,
|
|
30
|
-
CalloutRootOwnProps {
|
|
34
|
+
CalloutRootOwnProps {
|
|
35
|
+
/** Controls the ARIA live region behavior for screen readers */
|
|
36
|
+
live?: 'off' | 'polite' | 'assertive';
|
|
37
|
+
/** Semantic role for the callout */
|
|
38
|
+
role?: 'alert' | 'status' | 'note';
|
|
39
|
+
}
|
|
31
40
|
const CalloutRoot = React.forwardRef<CalloutRootElement, CalloutRootProps>(
|
|
32
41
|
(props, forwardedRef) => {
|
|
33
|
-
const {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
const {
|
|
43
|
+
size = calloutRootPropDefs.size.default,
|
|
44
|
+
live = 'polite',
|
|
45
|
+
role = 'status',
|
|
46
|
+
variant,
|
|
47
|
+
} = props;
|
|
48
|
+
const { asChild, children, className, color, panelBackground, material, ...rootProps } =
|
|
49
|
+
extractProps(props, calloutRootPropDefs, marginPropDefs);
|
|
39
50
|
const Comp = asChild ? Slot.Root : 'div';
|
|
51
|
+
|
|
52
|
+
// Determine appropriate ARIA attributes based on role and live
|
|
53
|
+
const ariaProps = {
|
|
54
|
+
role,
|
|
55
|
+
'aria-live': live,
|
|
56
|
+
'aria-atomic': true,
|
|
57
|
+
};
|
|
58
|
+
|
|
40
59
|
return (
|
|
41
60
|
<Comp
|
|
42
61
|
data-accent-color={color}
|
|
43
62
|
data-panel-background={panelBackground}
|
|
63
|
+
data-material={material}
|
|
44
64
|
{...rootProps}
|
|
65
|
+
{...ariaProps}
|
|
45
66
|
className={classNames('rt-CalloutRoot', className)}
|
|
46
67
|
ref={forwardedRef}
|
|
47
68
|
>
|
|
48
|
-
<CalloutContext.Provider
|
|
69
|
+
<CalloutContext.Provider
|
|
70
|
+
value={React.useMemo(() => ({ size, variant, color }), [size, variant, color])}
|
|
71
|
+
>
|
|
49
72
|
{children}
|
|
50
73
|
</CalloutContext.Provider>
|
|
51
74
|
</Comp>
|