@ropav/styles 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -15
- package/dist/components/accordion/accordion.styles.d.ts +47 -50
- package/dist/components/accordion/accordion.styles.d.ts.map +1 -1
- package/dist/components/accordion/accordion.styles.js +10 -10
- package/dist/components/accordion.css +16 -24
- package/dist/components/alert/alert.styles.d.ts +32 -74
- package/dist/components/alert/alert.styles.d.ts.map +1 -1
- package/dist/components/alert/alert.styles.js +11 -11
- package/dist/components/alert-dialog/alert-dialog.styles.d.ts +79 -173
- package/dist/components/alert-dialog/alert-dialog.styles.d.ts.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.styles.js +24 -24
- package/dist/components/alert-dialog.css +27 -39
- package/dist/components/alert.css +15 -15
- package/dist/components/autocomplete/autocomplete.styles.d.ts +58 -107
- package/dist/components/autocomplete/autocomplete.styles.d.ts.map +1 -1
- package/dist/components/autocomplete/autocomplete.styles.js +16 -16
- package/dist/components/autocomplete.css +43 -53
- package/dist/components/avatar/avatar.styles.d.ts +30 -119
- package/dist/components/avatar/avatar.styles.d.ts.map +1 -1
- package/dist/components/avatar/avatar.styles.js +13 -13
- package/dist/components/avatar.css +18 -18
- package/dist/components/badge/badge.styles.d.ts +34 -176
- package/dist/components/badge/badge.styles.d.ts.map +1 -1
- package/dist/components/badge/badge.styles.js +19 -19
- package/dist/components/badge.css +28 -28
- package/dist/components/breadcrumbs/breadcrumbs.styles.d.ts +17 -44
- package/dist/components/breadcrumbs/breadcrumbs.styles.d.ts.map +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.styles.js +5 -5
- package/dist/components/breadcrumbs.css +13 -6
- package/dist/components/button/button.styles.d.ts +9 -68
- package/dist/components/button/button.styles.d.ts.map +1 -1
- package/dist/components/button/button.styles.js +14 -14
- package/dist/components/button-group/button-group.styles.d.ts +20 -56
- package/dist/components/button-group/button-group.styles.d.ts.map +1 -1
- package/dist/components/button-group/button-group.styles.js +6 -6
- package/dist/components/button-group.css +24 -28
- package/dist/components/button.css +19 -23
- package/dist/components/calendar/calendar.styles.d.ts +41 -77
- package/dist/components/calendar/calendar.styles.d.ts.map +1 -1
- package/dist/components/calendar/calendar.styles.js +13 -13
- package/dist/components/calendar-year-picker/calendar-year-picker.styles.d.ts +20 -50
- package/dist/components/calendar-year-picker/calendar-year-picker.styles.d.ts.map +1 -1
- package/dist/components/calendar-year-picker/calendar-year-picker.styles.js +6 -6
- package/dist/components/calendar-year-picker.css +36 -23
- package/dist/components/calendar.css +68 -43
- package/dist/components/card/card.styles.d.ts +37 -68
- package/dist/components/card/card.styles.d.ts.map +1 -1
- package/dist/components/card/card.styles.js +11 -11
- package/dist/components/card.css +10 -10
- package/dist/components/checkbox/checkbox.styles.d.ts +27 -44
- package/dist/components/checkbox/checkbox.styles.d.ts.map +1 -1
- package/dist/components/checkbox/checkbox.styles.js +7 -7
- package/dist/components/checkbox-group/checkbox-group.styles.d.ts +6 -17
- package/dist/components/checkbox-group/checkbox-group.styles.d.ts.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.styles.js +4 -4
- package/dist/components/checkbox-group.css +1 -1
- package/dist/components/checkbox.css +87 -88
- package/dist/components/chip/chip.styles.d.ts +23 -140
- package/dist/components/chip/chip.styles.d.ts.map +1 -1
- package/dist/components/chip/chip.styles.js +15 -15
- package/dist/components/chip.css +26 -24
- package/dist/components/close-button/close-button.styles.d.ts +6 -14
- package/dist/components/close-button/close-button.styles.d.ts.map +1 -1
- package/dist/components/close-button/close-button.styles.js +3 -3
- package/dist/components/close-button.css +9 -8
- package/dist/components/color-area/color-area.styles.d.ts +17 -32
- package/dist/components/color-area/color-area.styles.d.ts.map +1 -1
- package/dist/components/color-area/color-area.styles.js +4 -4
- package/dist/components/color-area.css +9 -9
- package/dist/components/color-field/color-field.styles.d.ts +6 -17
- package/dist/components/color-field/color-field.styles.d.ts.map +1 -1
- package/dist/components/color-field/color-field.styles.js +3 -3
- package/dist/components/color-field.css +2 -2
- package/dist/components/color-input-group/color-input-group.styles.d.ts +37 -89
- package/dist/components/color-input-group/color-input-group.styles.d.ts.map +1 -1
- package/dist/components/color-input-group/color-input-group.styles.js +10 -10
- package/dist/components/color-input-group.css +23 -40
- package/dist/components/color-picker/color-picker.styles.d.ts +14 -38
- package/dist/components/color-picker/color-picker.styles.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.styles.js +4 -4
- package/dist/components/color-picker.css +4 -8
- package/dist/components/color-slider/color-slider.styles.d.ts +17 -44
- package/dist/components/color-slider/color-slider.styles.d.ts.map +1 -1
- package/dist/components/color-slider/color-slider.styles.js +5 -5
- package/dist/components/color-slider.css +30 -28
- package/dist/components/color-swatch/color-swatch.styles.d.ts +7 -38
- package/dist/components/color-swatch/color-swatch.styles.d.ts.map +1 -1
- package/dist/components/color-swatch/color-swatch.styles.js +9 -9
- package/dist/components/color-swatch-picker/color-swatch-picker.styles.d.ts +37 -119
- package/dist/components/color-swatch-picker/color-swatch-picker.styles.d.ts.map +1 -1
- package/dist/components/color-swatch-picker/color-swatch-picker.styles.js +14 -14
- package/dist/components/color-swatch-picker.css +21 -104
- package/dist/components/color-swatch.css +13 -13
- package/dist/components/combo-box/combo-box.styles.d.ts +38 -71
- package/dist/components/combo-box/combo-box.styles.d.ts.map +1 -1
- package/dist/components/combo-box/combo-box.styles.js +10 -10
- package/dist/components/combo-box.css +23 -13
- package/dist/components/date-field/date-field.styles.d.ts +6 -17
- package/dist/components/date-field/date-field.styles.d.ts.map +1 -1
- package/dist/components/date-field/date-field.styles.js +3 -3
- package/dist/components/date-field.css +2 -2
- package/dist/components/date-input-group/date-input-group.styles.d.ts +51 -95
- package/dist/components/date-input-group/date-input-group.styles.d.ts.map +1 -1
- package/dist/components/date-input-group/date-input-group.styles.js +12 -12
- package/dist/components/date-input-group.css +50 -48
- package/dist/components/date-picker/date-picker.styles.d.ts +17 -44
- package/dist/components/date-picker/date-picker.styles.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.styles.js +5 -5
- package/dist/components/date-picker.css +9 -13
- package/dist/components/date-range-picker/date-range-picker.styles.d.ts +20 -50
- package/dist/components/date-range-picker/date-range-picker.styles.d.ts.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.styles.js +6 -6
- package/dist/components/date-range-picker.css +10 -14
- package/dist/components/description/description.styles.d.ts +4 -2
- package/dist/components/description/description.styles.d.ts.map +1 -1
- package/dist/components/description/description.styles.js +2 -2
- package/dist/components/description.css +1 -1
- package/dist/components/disclosure/disclosure.styles.d.ts +26 -26
- package/dist/components/disclosure/disclosure.styles.d.ts.map +1 -1
- package/dist/components/disclosure/disclosure.styles.js +8 -8
- package/dist/components/disclosure-group/disclosure-group.styles.d.ts +8 -8
- package/dist/components/disclosure-group/disclosure-group.styles.d.ts.map +1 -1
- package/dist/components/disclosure-group/disclosure-group.styles.js +2 -2
- package/dist/components/disclosure-group.css +1 -1
- package/dist/components/disclosure.css +6 -10
- package/dist/components/drawer/drawer.styles.d.ts +68 -125
- package/dist/components/drawer/drawer.styles.d.ts.map +1 -1
- package/dist/components/drawer/drawer.styles.js +22 -22
- package/dist/components/drawer.css +41 -45
- package/dist/components/drop-zone/drop-zone.styles.d.ts +13 -0
- package/dist/components/drop-zone/drop-zone.styles.d.ts.map +1 -0
- package/dist/components/drop-zone/drop-zone.styles.js +8 -0
- package/dist/components/drop-zone/index.d.ts +2 -0
- package/dist/components/drop-zone/index.d.ts.map +1 -0
- package/dist/components/drop-zone/index.js +2 -0
- package/dist/components/drop-zone.css +78 -0
- package/dist/components/dropdown/dropdown.styles.d.ts +17 -44
- package/dist/components/dropdown/dropdown.styles.d.ts.map +1 -1
- package/dist/components/dropdown/dropdown.styles.js +5 -5
- package/dist/components/dropdown.css +13 -15
- package/dist/components/empty-state/empty-state.styles.d.ts +4 -2
- package/dist/components/empty-state/empty-state.styles.d.ts.map +1 -1
- package/dist/components/empty-state/empty-state.styles.js +2 -2
- package/dist/components/empty-state.css +1 -1
- package/dist/components/error-message/error-message.styles.d.ts +4 -2
- package/dist/components/error-message/error-message.styles.d.ts.map +1 -1
- package/dist/components/error-message/error-message.styles.js +2 -2
- package/dist/components/error-message.css +1 -5
- package/dist/components/field-error/field-error.styles.d.ts +4 -2
- package/dist/components/field-error/field-error.styles.d.ts.map +1 -1
- package/dist/components/field-error/field-error.styles.js +2 -2
- package/dist/components/field-error.css +7 -11
- package/dist/components/fieldset/fieldset.styles.d.ts +20 -50
- package/dist/components/fieldset/fieldset.styles.d.ts.map +1 -1
- package/dist/components/fieldset/fieldset.styles.js +6 -6
- package/dist/components/fieldset.css +4 -4
- package/dist/components/header/header.styles.d.ts +3 -1
- package/dist/components/header/header.styles.d.ts.map +1 -1
- package/dist/components/header/header.styles.js +2 -2
- package/dist/components/header.css +1 -1
- package/dist/components/index.css +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/input.styles.d.ts +8 -44
- package/dist/components/input/input.styles.d.ts.map +1 -1
- package/dist/components/input/input.styles.js +7 -7
- package/dist/components/input-group/input-group.styles.d.ts +37 -89
- package/dist/components/input-group/input-group.styles.d.ts.map +1 -1
- package/dist/components/input-group/input-group.styles.js +10 -10
- package/dist/components/input-group.css +29 -54
- package/dist/components/input-otp/input-otp.styles.d.ts +42 -53
- package/dist/components/input-otp/input-otp.styles.d.ts.map +1 -1
- package/dist/components/input-otp/input-otp.styles.js +10 -10
- package/dist/components/input-otp.css +24 -36
- package/dist/components/input.css +17 -38
- package/dist/components/kbd/kbd.styles.d.ts +22 -29
- package/dist/components/kbd/kbd.styles.d.ts.map +1 -1
- package/dist/components/kbd/kbd.styles.js +6 -6
- package/dist/components/kbd.css +7 -5
- package/dist/components/label/label.styles.d.ts +8 -32
- package/dist/components/label/label.styles.d.ts.map +1 -1
- package/dist/components/label/label.styles.js +5 -5
- package/dist/components/label.css +16 -11
- package/dist/components/link/link.styles.d.ts +11 -32
- package/dist/components/link/link.styles.d.ts.map +1 -1
- package/dist/components/link/link.styles.js +3 -3
- package/dist/components/link.css +20 -18
- package/dist/components/list-box/list-box.styles.d.ts +7 -32
- package/dist/components/list-box/list-box.styles.d.ts.map +1 -1
- package/dist/components/list-box/list-box.styles.js +6 -6
- package/dist/components/list-box-item/list-box-item.styles.d.ts +17 -38
- package/dist/components/list-box-item/list-box-item.styles.d.ts.map +1 -1
- package/dist/components/list-box-item/list-box-item.styles.js +5 -5
- package/dist/components/list-box-item.css +13 -19
- package/dist/components/list-box-section/list-box-section.styles.d.ts +4 -2
- package/dist/components/list-box-section/list-box-section.styles.d.ts.map +1 -1
- package/dist/components/list-box-section/list-box-section.styles.js +2 -2
- package/dist/components/list-box-section.css +1 -1
- package/dist/components/list-box.css +53 -3
- package/dist/components/menu/menu.styles.d.ts +6 -20
- package/dist/components/menu/menu.styles.d.ts.map +1 -1
- package/dist/components/menu/menu.styles.js +4 -4
- package/dist/components/menu-item/menu-item.styles.d.ts +22 -41
- package/dist/components/menu-item/menu-item.styles.d.ts.map +1 -1
- package/dist/components/menu-item/menu-item.styles.js +6 -6
- package/dist/components/menu-item.css +15 -21
- package/dist/components/menu-section/menu-section.styles.d.ts +4 -2
- package/dist/components/menu-section/menu-section.styles.d.ts.map +1 -1
- package/dist/components/menu-section/menu-section.styles.js +2 -2
- package/dist/components/menu-section.css +1 -1
- package/dist/components/menu.css +4 -4
- package/dist/components/meter/meter.styles.d.ts +32 -104
- package/dist/components/meter/meter.styles.d.ts.map +1 -1
- package/dist/components/meter/meter.styles.js +13 -13
- package/dist/components/meter.css +22 -30
- package/dist/components/modal/modal.styles.d.ts +79 -167
- package/dist/components/modal/modal.styles.d.ts.map +1 -1
- package/dist/components/modal/modal.styles.js +26 -26
- package/dist/components/modal.css +30 -42
- package/dist/components/number-field/number-field.styles.d.ts +44 -95
- package/dist/components/number-field/number-field.styles.d.ts.map +1 -1
- package/dist/components/number-field/number-field.styles.js +12 -12
- package/dist/components/number-field.css +47 -59
- package/dist/components/pagination/pagination.styles.d.ts +44 -59
- package/dist/components/pagination/pagination.styles.d.ts.map +1 -1
- package/dist/components/pagination/pagination.styles.js +19 -12
- package/dist/components/pagination.css +18 -22
- package/dist/components/popover/popover.styles.d.ts +17 -44
- package/dist/components/popover/popover.styles.d.ts.map +1 -1
- package/dist/components/popover/popover.styles.js +5 -5
- package/dist/components/popover.css +4 -8
- package/dist/components/progress-bar/progress-bar.styles.d.ts +42 -104
- package/dist/components/progress-bar/progress-bar.styles.d.ts.map +1 -1
- package/dist/components/progress-bar/progress-bar.styles.js +23 -13
- package/dist/components/progress-bar.css +97 -31
- package/dist/components/progress-circle/progress-circle.styles.d.ts +32 -104
- package/dist/components/progress-circle/progress-circle.styles.d.ts.map +1 -1
- package/dist/components/progress-circle/progress-circle.styles.js +13 -13
- package/dist/components/progress-circle.css +17 -21
- package/dist/components/radio/radio.styles.d.ts +17 -44
- package/dist/components/radio/radio.styles.d.ts.map +1 -1
- package/dist/components/radio/radio.styles.js +5 -5
- package/dist/components/radio-group/radio-group.styles.d.ts +6 -17
- package/dist/components/radio-group/radio-group.styles.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.styles.js +4 -4
- package/dist/components/radio-group.css +8 -8
- package/dist/components/radio.css +46 -48
- package/dist/components/range-calendar/range-calendar.styles.d.ts +44 -77
- package/dist/components/range-calendar/range-calendar.styles.d.ts.map +1 -1
- package/dist/components/range-calendar/range-calendar.styles.js +15 -13
- package/dist/components/range-calendar.css +111 -69
- package/dist/components/scroll-shadow/scroll-shadow.styles.d.ts +16 -68
- package/dist/components/scroll-shadow/scroll-shadow.styles.d.ts.map +1 -1
- package/dist/components/scroll-shadow/scroll-shadow.styles.js +6 -6
- package/dist/components/scroll-shadow.css +6 -6
- package/dist/components/search-field/search-field.styles.d.ts +44 -95
- package/dist/components/search-field/search-field.styles.d.ts.map +1 -1
- package/dist/components/search-field/search-field.styles.js +12 -12
- package/dist/components/search-field.css +29 -46
- package/dist/components/segmented-control/segmented-control.styles.d.ts +32 -71
- package/dist/components/segmented-control/segmented-control.styles.d.ts.map +1 -1
- package/dist/components/segmented-control/segmented-control.styles.js +9 -9
- package/dist/components/segmented-control.css +26 -31
- package/dist/components/select/select.styles.d.ts +44 -101
- package/dist/components/select/select.styles.d.ts.map +1 -1
- package/dist/components/select/select.styles.js +14 -14
- package/dist/components/select.css +33 -47
- package/dist/components/separator/separator.styles.d.ts +7 -32
- package/dist/components/separator/separator.styles.d.ts.map +1 -1
- package/dist/components/separator/separator.styles.js +7 -7
- package/dist/components/separator.css +13 -13
- package/dist/components/sidebar/sidebar.styles.d.ts +222 -188
- package/dist/components/sidebar/sidebar.styles.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar.styles.js +45 -32
- package/dist/components/sidebar.css +180 -80
- package/dist/components/skeleton/skeleton.styles.d.ts +12 -26
- package/dist/components/skeleton/skeleton.styles.d.ts.map +1 -1
- package/dist/components/skeleton/skeleton.styles.js +5 -5
- package/dist/components/skeleton.css +6 -6
- package/dist/components/slider/slider.styles.d.ts +23 -56
- package/dist/components/slider/slider.styles.d.ts.map +1 -1
- package/dist/components/slider/slider.styles.js +7 -7
- package/dist/components/slider.css +24 -25
- package/dist/components/spinner/spinner.styles.d.ts +7 -44
- package/dist/components/spinner/spinner.styles.d.ts.map +1 -1
- package/dist/components/spinner/spinner.styles.js +11 -11
- package/dist/components/spinner.css +10 -10
- package/dist/components/splitter/splitter.styles.d.ts +32 -59
- package/dist/components/splitter/splitter.styles.d.ts.map +1 -1
- package/dist/components/splitter/splitter.styles.js +12 -12
- package/dist/components/splitter.css +64 -56
- package/dist/components/surface/surface.styles.d.ts +6 -23
- package/dist/components/surface/surface.styles.d.ts.map +1 -1
- package/dist/components/surface/surface.styles.js +6 -6
- package/dist/components/surface.css +5 -5
- package/dist/components/switch/switch.styles.d.ts +32 -56
- package/dist/components/switch/switch.styles.d.ts.map +1 -1
- package/dist/components/switch/switch.styles.js +9 -9
- package/dist/components/switch-group/switch-group.styles.d.ts +17 -38
- package/dist/components/switch-group/switch-group.styles.d.ts.map +1 -1
- package/dist/components/switch-group/switch-group.styles.js +5 -5
- package/dist/components/switch-group.css +4 -4
- package/dist/components/switch.css +68 -67
- package/dist/components/table/table.styles.d.ts +87 -77
- package/dist/components/table/table.styles.d.ts.map +1 -1
- package/dist/components/table/table.styles.js +20 -18
- package/dist/components/table.css +177 -86
- package/dist/components/tabs/tabs.styles.d.ts +57 -56
- package/dist/components/tabs/tabs.styles.d.ts.map +1 -1
- package/dist/components/tabs/tabs.styles.js +12 -12
- package/dist/components/tabs.css +41 -52
- package/dist/components/tag/tag.styles.d.ts +20 -71
- package/dist/components/tag/tag.styles.d.ts.map +1 -1
- package/dist/components/tag/tag.styles.js +8 -8
- package/dist/components/tag-group/tag-group.styles.d.ts +11 -32
- package/dist/components/tag-group/tag-group.styles.d.ts.map +1 -1
- package/dist/components/tag-group/tag-group.styles.js +3 -3
- package/dist/components/tag-group.css +6 -6
- package/dist/components/tag.css +43 -35
- package/dist/components/textarea/textarea.styles.d.ts +8 -44
- package/dist/components/textarea/textarea.styles.d.ts.map +1 -1
- package/dist/components/textarea/textarea.styles.js +7 -7
- package/dist/components/textarea.css +17 -38
- package/dist/components/textfield/textfield.styles.d.ts +6 -17
- package/dist/components/textfield/textfield.styles.d.ts.map +1 -1
- package/dist/components/textfield/textfield.styles.js +3 -3
- package/dist/components/textfield.css +2 -2
- package/dist/components/time-field/time-field.styles.d.ts +6 -17
- package/dist/components/time-field/time-field.styles.d.ts.map +1 -1
- package/dist/components/time-field/time-field.styles.js +3 -3
- package/dist/components/time-field.css +2 -2
- package/dist/components/toast/toast.styles.d.ts +56 -161
- package/dist/components/toast/toast.styles.d.ts.map +1 -1
- package/dist/components/toast/toast.styles.js +26 -26
- package/dist/components/toast.css +58 -56
- package/dist/components/toggle-button/toggle-button.styles.d.ts +8 -41
- package/dist/components/toggle-button/toggle-button.styles.d.ts.map +1 -1
- package/dist/components/toggle-button/toggle-button.styles.js +8 -8
- package/dist/components/toggle-button-group/toggle-button-group.styles.d.ts +23 -74
- package/dist/components/toggle-button-group/toggle-button-group.styles.d.ts.map +1 -1
- package/dist/components/toggle-button-group/toggle-button-group.styles.js +7 -7
- package/dist/components/toggle-button-group.css +22 -26
- package/dist/components/toggle-button.css +11 -15
- package/dist/components/toolbar/toolbar.styles.d.ts +7 -26
- package/dist/components/toolbar/toolbar.styles.d.ts.map +1 -1
- package/dist/components/toolbar/toolbar.styles.js +5 -5
- package/dist/components/toolbar.css +7 -7
- package/dist/components/tooltip/tooltip.styles.d.ts +11 -32
- package/dist/components/tooltip/tooltip.styles.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip.styles.js +3 -3
- package/dist/components/tooltip.css +2 -6
- package/dist/components/typography/typography.styles.d.ts +29 -107
- package/dist/components/typography/typography.styles.d.ts.map +1 -1
- package/dist/components/typography/typography.styles.js +24 -24
- package/dist/components/typography.css +53 -45
- package/dist/components/virtualizer/virtualizer.styles.d.ts +13 -37
- package/dist/components/virtualizer/virtualizer.styles.d.ts.map +1 -1
- package/dist/components/virtualizer/virtualizer.styles.js +4 -4
- package/dist/components/virtualizer.css +14 -6
- package/dist/core.css +26 -0
- package/dist/index.css +8 -24
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/no-preflight.css +8 -0
- package/dist/ropav.min.css +1 -1
- package/dist/themes/airbnb.css +6 -4
- package/dist/themes/coinbase.css +6 -4
- package/dist/themes/default.css +24 -4
- package/dist/themes/discord.css +6 -4
- package/dist/themes/hero.css +24 -4
- package/dist/themes/lavender.css +6 -4
- package/dist/themes/mint.css +6 -4
- package/dist/themes/netflix.css +6 -4
- package/dist/themes/rabbit.css +6 -4
- package/dist/themes/shared/theme.css +1 -0
- package/dist/themes/sky.css +6 -4
- package/dist/themes/spotify.css +6 -4
- package/dist/themes/uber.css +6 -4
- package/dist/themes.d.ts +12 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +39 -0
- package/dist/tv.d.ts +34 -0
- package/dist/tv.d.ts.map +1 -0
- package/dist/tv.js +21 -0
- package/package.json +5 -3
- package/src/components/accordion/accordion.styles.ts +11 -11
- package/src/components/alert/alert.styles.ts +12 -12
- package/src/components/alert-dialog/alert-dialog.styles.ts +25 -25
- package/src/components/autocomplete/autocomplete.styles.ts +17 -17
- package/src/components/avatar/avatar.styles.ts +14 -14
- package/src/components/badge/badge.styles.ts +20 -20
- package/src/components/breadcrumbs/breadcrumbs.styles.ts +6 -6
- package/src/components/button/button.styles.ts +15 -15
- package/src/components/button-group/button-group.styles.ts +7 -7
- package/src/components/calendar/calendar.styles.ts +14 -14
- package/src/components/calendar-year-picker/calendar-year-picker.styles.ts +7 -7
- package/src/components/card/card.styles.ts +12 -12
- package/src/components/checkbox/checkbox.styles.ts +8 -8
- package/src/components/checkbox-group/checkbox-group.styles.ts +5 -5
- package/src/components/chip/chip.styles.ts +16 -16
- package/src/components/close-button/close-button.styles.ts +4 -4
- package/src/components/color-area/color-area.styles.ts +5 -5
- package/src/components/color-field/color-field.styles.ts +4 -4
- package/src/components/color-input-group/color-input-group.styles.ts +11 -11
- package/src/components/color-picker/color-picker.styles.ts +5 -5
- package/src/components/color-slider/color-slider.styles.ts +6 -6
- package/src/components/color-swatch/color-swatch.styles.ts +10 -10
- package/src/components/color-swatch-picker/color-swatch-picker.styles.ts +15 -15
- package/src/components/combo-box/combo-box.styles.ts +11 -11
- package/src/components/date-field/date-field.styles.ts +4 -4
- package/src/components/date-input-group/date-input-group.styles.ts +13 -13
- package/src/components/date-picker/date-picker.styles.ts +6 -6
- package/src/components/date-range-picker/date-range-picker.styles.ts +7 -7
- package/src/components/description/description.styles.ts +3 -3
- package/src/components/disclosure/disclosure.styles.ts +9 -9
- package/src/components/disclosure-group/disclosure-group.styles.ts +3 -3
- package/src/components/drawer/drawer.styles.ts +23 -23
- package/src/components/drop-zone/drop-zone.styles.ts +12 -0
- package/src/components/drop-zone/index.ts +1 -0
- package/src/components/dropdown/dropdown.styles.ts +6 -6
- package/src/components/empty-state/empty-state.styles.ts +3 -3
- package/src/components/error-message/error-message.styles.ts +3 -3
- package/src/components/field-error/field-error.styles.ts +3 -3
- package/src/components/fieldset/fieldset.styles.ts +7 -7
- package/src/components/header/header.styles.ts +2 -2
- package/src/components/index.ts +1 -0
- package/src/components/input/input.styles.ts +8 -8
- package/src/components/input-group/input-group.styles.ts +11 -11
- package/src/components/input-otp/input-otp.styles.ts +11 -11
- package/src/components/kbd/kbd.styles.ts +7 -7
- package/src/components/label/label.styles.ts +6 -6
- package/src/components/link/link.styles.ts +4 -4
- package/src/components/list-box/list-box.styles.ts +7 -7
- package/src/components/list-box-item/list-box-item.styles.ts +6 -6
- package/src/components/list-box-section/list-box-section.styles.ts +3 -3
- package/src/components/menu/menu.styles.ts +5 -5
- package/src/components/menu-item/menu-item.styles.ts +7 -7
- package/src/components/menu-section/menu-section.styles.ts +3 -3
- package/src/components/meter/meter.styles.ts +14 -14
- package/src/components/modal/modal.styles.ts +27 -27
- package/src/components/number-field/number-field.styles.ts +13 -13
- package/src/components/pagination/pagination.styles.ts +18 -11
- package/src/components/popover/popover.styles.ts +6 -6
- package/src/components/progress-bar/progress-bar.styles.ts +28 -14
- package/src/components/progress-circle/progress-circle.styles.ts +14 -14
- package/src/components/radio/radio.styles.ts +6 -6
- package/src/components/radio-group/radio-group.styles.ts +5 -5
- package/src/components/range-calendar/range-calendar.styles.ts +16 -14
- package/src/components/scroll-shadow/scroll-shadow.styles.ts +7 -7
- package/src/components/search-field/search-field.styles.ts +13 -13
- package/src/components/segmented-control/segmented-control.styles.ts +10 -10
- package/src/components/select/select.styles.ts +15 -15
- package/src/components/separator/separator.styles.ts +8 -8
- package/src/components/sidebar/sidebar.styles.ts +55 -32
- package/src/components/skeleton/skeleton.styles.ts +6 -6
- package/src/components/slider/slider.styles.ts +8 -8
- package/src/components/spinner/spinner.styles.ts +12 -12
- package/src/components/splitter/splitter.styles.ts +13 -13
- package/src/components/surface/surface.styles.ts +7 -7
- package/src/components/switch/switch.styles.ts +10 -10
- package/src/components/switch-group/switch-group.styles.ts +6 -6
- package/src/components/table/table.styles.ts +21 -19
- package/src/components/tabs/tabs.styles.ts +13 -13
- package/src/components/tag/tag.styles.ts +9 -9
- package/src/components/tag-group/tag-group.styles.ts +4 -4
- package/src/components/textarea/textarea.styles.ts +8 -8
- package/src/components/textfield/textfield.styles.ts +4 -4
- package/src/components/time-field/time-field.styles.ts +4 -4
- package/src/components/toast/toast.styles.ts +27 -27
- package/src/components/toggle-button/toggle-button.styles.ts +9 -9
- package/src/components/toggle-button-group/toggle-button-group.styles.ts +8 -8
- package/src/components/toolbar/toolbar.styles.ts +6 -6
- package/src/components/tooltip/tooltip.styles.ts +4 -4
- package/src/components/typography/typography.styles.ts +25 -25
- package/src/components/virtualizer/virtualizer.styles.ts +4 -4
- package/src/index.ts +5 -2
- package/src/themes.ts +40 -0
- package/src/tv.ts +82 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
export const toastVariants = tv({
|
|
6
6
|
defaultVariants: {
|
|
@@ -8,57 +8,57 @@ export const toastVariants = tv({
|
|
|
8
8
|
variant: "default",
|
|
9
9
|
},
|
|
10
10
|
slots: {
|
|
11
|
-
action: "toast__action",
|
|
12
|
-
close: "toast__close-button",
|
|
13
|
-
content: "toast__content",
|
|
14
|
-
description: "toast__description",
|
|
15
|
-
indicator: "toast__indicator",
|
|
16
|
-
region: "toast-region",
|
|
17
|
-
title: "toast__title",
|
|
18
|
-
toast: "toast",
|
|
11
|
+
action: "rp-toast__action",
|
|
12
|
+
close: "rp-toast__close-button",
|
|
13
|
+
content: "rp-toast__content",
|
|
14
|
+
description: "rp-toast__description",
|
|
15
|
+
indicator: "rp-toast__indicator",
|
|
16
|
+
region: "rp-toast-region",
|
|
17
|
+
title: "rp-toast__title",
|
|
18
|
+
toast: "rp-toast",
|
|
19
19
|
},
|
|
20
20
|
variants: {
|
|
21
21
|
placement: {
|
|
22
22
|
bottom: {
|
|
23
|
-
region: "toast-region--bottom",
|
|
24
|
-
toast: "toast--bottom",
|
|
23
|
+
region: "rp-toast-region--bottom",
|
|
24
|
+
toast: "rp-toast--bottom",
|
|
25
25
|
},
|
|
26
26
|
"bottom end": {
|
|
27
|
-
region: "toast-region--bottom-end",
|
|
28
|
-
toast: "toast--bottom-end",
|
|
27
|
+
region: "rp-toast-region--bottom-end",
|
|
28
|
+
toast: "rp-toast--bottom-end",
|
|
29
29
|
},
|
|
30
30
|
"bottom start": {
|
|
31
|
-
region: "toast-region--bottom-start",
|
|
32
|
-
toast: "toast--bottom-start",
|
|
31
|
+
region: "rp-toast-region--bottom-start",
|
|
32
|
+
toast: "rp-toast--bottom-start",
|
|
33
33
|
},
|
|
34
34
|
top: {
|
|
35
|
-
region: "toast-region--top",
|
|
36
|
-
toast: "toast--top",
|
|
35
|
+
region: "rp-toast-region--top",
|
|
36
|
+
toast: "rp-toast--top",
|
|
37
37
|
},
|
|
38
38
|
"top end": {
|
|
39
|
-
region: "toast-region--top-end",
|
|
40
|
-
toast: "toast--top-end",
|
|
39
|
+
region: "rp-toast-region--top-end",
|
|
40
|
+
toast: "rp-toast--top-end",
|
|
41
41
|
},
|
|
42
42
|
"top start": {
|
|
43
|
-
region: "toast-region--top-start",
|
|
44
|
-
toast: "toast--top-start",
|
|
43
|
+
region: "rp-toast-region--top-start",
|
|
44
|
+
toast: "rp-toast--top-start",
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
variant: {
|
|
48
48
|
accent: {
|
|
49
|
-
toast: "toast--accent",
|
|
49
|
+
toast: "rp-toast--accent",
|
|
50
50
|
},
|
|
51
51
|
danger: {
|
|
52
|
-
toast: "toast--danger",
|
|
52
|
+
toast: "rp-toast--danger",
|
|
53
53
|
},
|
|
54
54
|
default: {
|
|
55
|
-
toast: "toast--default",
|
|
55
|
+
toast: "rp-toast--default",
|
|
56
56
|
},
|
|
57
57
|
success: {
|
|
58
|
-
toast: "toast--success",
|
|
58
|
+
toast: "rp-toast--success",
|
|
59
59
|
},
|
|
60
60
|
warning: {
|
|
61
|
-
toast: "toast--warning",
|
|
61
|
+
toast: "rp-toast--warning",
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
64
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
export const toggleButtonVariants = tv({
|
|
6
|
-
base: "toggle-button",
|
|
6
|
+
base: "rp-toggle-button",
|
|
7
7
|
defaultVariants: {
|
|
8
8
|
isIconOnly: false,
|
|
9
9
|
size: "md",
|
|
@@ -11,16 +11,16 @@ export const toggleButtonVariants = tv({
|
|
|
11
11
|
},
|
|
12
12
|
variants: {
|
|
13
13
|
isIconOnly: {
|
|
14
|
-
true: "toggle-button--icon-only",
|
|
14
|
+
true: "rp-toggle-button--icon-only",
|
|
15
15
|
},
|
|
16
16
|
size: {
|
|
17
|
-
lg: "toggle-button--lg",
|
|
18
|
-
md: "toggle-button--md",
|
|
19
|
-
sm: "toggle-button--sm",
|
|
17
|
+
lg: "rp-toggle-button--lg",
|
|
18
|
+
md: "rp-toggle-button--md",
|
|
19
|
+
sm: "rp-toggle-button--sm",
|
|
20
20
|
},
|
|
21
21
|
variant: {
|
|
22
|
-
default: "toggle-button--default",
|
|
23
|
-
ghost: "toggle-button--ghost",
|
|
22
|
+
default: "rp-toggle-button--default",
|
|
23
|
+
ghost: "rp-toggle-button--ghost",
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
26
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
export const toggleButtonGroupVariants = tv({
|
|
6
6
|
defaultVariants: {
|
|
@@ -9,28 +9,28 @@ export const toggleButtonGroupVariants = tv({
|
|
|
9
9
|
orientation: "horizontal",
|
|
10
10
|
},
|
|
11
11
|
slots: {
|
|
12
|
-
base: "toggle-button-group",
|
|
13
|
-
separator: "toggle-button-group__separator",
|
|
12
|
+
base: "rp-toggle-button-group",
|
|
13
|
+
separator: "rp-toggle-button-group__separator",
|
|
14
14
|
},
|
|
15
15
|
variants: {
|
|
16
16
|
fullWidth: {
|
|
17
17
|
false: {},
|
|
18
18
|
true: {
|
|
19
|
-
base: "toggle-button-group--full-width",
|
|
19
|
+
base: "rp-toggle-button-group--full-width",
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
isDetached: {
|
|
23
23
|
false: {},
|
|
24
24
|
true: {
|
|
25
|
-
base: "toggle-button-group--detached",
|
|
25
|
+
base: "rp-toggle-button-group--detached",
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
28
|
orientation: {
|
|
29
29
|
horizontal: {
|
|
30
|
-
base: "toggle-button-group--horizontal",
|
|
30
|
+
base: "rp-toggle-button-group--horizontal",
|
|
31
31
|
},
|
|
32
32
|
vertical: {
|
|
33
|
-
base: "toggle-button-group--vertical",
|
|
33
|
+
base: "rp-toggle-button-group--vertical",
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
},
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
const toolbarVariants = tv({
|
|
6
|
-
base: "toolbar",
|
|
6
|
+
base: "rp-toolbar",
|
|
7
7
|
defaultVariants: {
|
|
8
8
|
isAttached: false,
|
|
9
9
|
orientation: "horizontal",
|
|
10
10
|
},
|
|
11
11
|
variants: {
|
|
12
12
|
isAttached: {
|
|
13
|
-
true: "toolbar--attached",
|
|
13
|
+
true: "rp-toolbar--attached",
|
|
14
14
|
},
|
|
15
15
|
orientation: {
|
|
16
|
-
horizontal: "toolbar--horizontal",
|
|
17
|
-
vertical: "toolbar--vertical",
|
|
16
|
+
horizontal: "rp-toolbar--horizontal",
|
|
17
|
+
vertical: "rp-toolbar--vertical",
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
export const tooltipVariants = tv({
|
|
6
6
|
slots: {
|
|
7
|
-
base: "tooltip",
|
|
8
|
-
trigger: "tooltip__trigger",
|
|
7
|
+
base: "rp-tooltip",
|
|
8
|
+
trigger: "rp-tooltip__trigger",
|
|
9
9
|
},
|
|
10
10
|
});
|
|
11
11
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { VariantProps } from "
|
|
1
|
+
import type { VariantProps } from "../../tv";
|
|
2
2
|
|
|
3
|
-
import { tv } from "
|
|
3
|
+
import { tv } from "../../tv";
|
|
4
4
|
|
|
5
5
|
export const typographyVariants = tv({
|
|
6
6
|
defaultVariants: {
|
|
@@ -9,40 +9,40 @@ export const typographyVariants = tv({
|
|
|
9
9
|
type: "body",
|
|
10
10
|
},
|
|
11
11
|
slots: {
|
|
12
|
-
base: "typography",
|
|
13
|
-
prose: "typography-prose",
|
|
12
|
+
base: "rp-typography",
|
|
13
|
+
prose: "rp-typography-prose",
|
|
14
14
|
},
|
|
15
15
|
variants: {
|
|
16
16
|
align: {
|
|
17
|
-
center: "typography--align-center",
|
|
18
|
-
end: "typography--align-end",
|
|
19
|
-
justify: "typography--align-justify",
|
|
20
|
-
start: "typography--align-start",
|
|
17
|
+
center: "rp-typography--align-center",
|
|
18
|
+
end: "rp-typography--align-end",
|
|
19
|
+
justify: "rp-typography--align-justify",
|
|
20
|
+
start: "rp-typography--align-start",
|
|
21
21
|
},
|
|
22
22
|
color: {
|
|
23
|
-
default: "typography--color-default",
|
|
24
|
-
muted: "typography--color-muted",
|
|
23
|
+
default: "rp-typography--color-default",
|
|
24
|
+
muted: "rp-typography--color-muted",
|
|
25
25
|
},
|
|
26
26
|
truncate: {
|
|
27
|
-
true: "typography--truncate",
|
|
27
|
+
true: "rp-typography--truncate",
|
|
28
28
|
},
|
|
29
29
|
type: {
|
|
30
|
-
body: "typography--body",
|
|
31
|
-
"body-sm": "typography--body-sm",
|
|
32
|
-
"body-xs": "typography--body-xs",
|
|
33
|
-
code: "typography--code",
|
|
34
|
-
h1: "typography--h1",
|
|
35
|
-
h2: "typography--h2",
|
|
36
|
-
h3: "typography--h3",
|
|
37
|
-
h4: "typography--h4",
|
|
38
|
-
h5: "typography--h5",
|
|
39
|
-
h6: "typography--h6",
|
|
30
|
+
body: "rp-typography--body",
|
|
31
|
+
"body-sm": "rp-typography--body-sm",
|
|
32
|
+
"body-xs": "rp-typography--body-xs",
|
|
33
|
+
code: "rp-typography--code",
|
|
34
|
+
h1: "rp-typography--h1",
|
|
35
|
+
h2: "rp-typography--h2",
|
|
36
|
+
h3: "rp-typography--h3",
|
|
37
|
+
h4: "rp-typography--h4",
|
|
38
|
+
h5: "rp-typography--h5",
|
|
39
|
+
h6: "rp-typography--h6",
|
|
40
40
|
},
|
|
41
41
|
weight: {
|
|
42
|
-
bold: "typography--weight-bold",
|
|
43
|
-
medium: "typography--weight-medium",
|
|
44
|
-
normal: "typography--weight-normal",
|
|
45
|
-
semibold: "typography--weight-semibold",
|
|
42
|
+
bold: "rp-typography--weight-bold",
|
|
43
|
+
medium: "rp-typography--weight-medium",
|
|
44
|
+
normal: "rp-typography--weight-normal",
|
|
45
|
+
semibold: "rp-typography--weight-semibold",
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
48
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tv } from "
|
|
1
|
+
import { tv } from "../../tv";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* The parts a windowed collection draws for itself, whichever collection it is.
|
|
@@ -8,8 +8,8 @@ import { tv } from "tailwind-variants";
|
|
|
8
8
|
*/
|
|
9
9
|
export const virtualizerVariants = tv({
|
|
10
10
|
slots: {
|
|
11
|
-
scrollbar: "virtualizer__scrollbar",
|
|
12
|
-
scrollbarThumb: "virtualizer__scrollbar-thumb",
|
|
13
|
-
scrollbarTrack: "virtualizer__scrollbar-track",
|
|
11
|
+
scrollbar: "rp-virtualizer__scrollbar",
|
|
12
|
+
scrollbarThumb: "rp-virtualizer__scrollbar-thumb",
|
|
13
|
+
scrollbarTrack: "rp-virtualizer__scrollbar-track",
|
|
14
14
|
},
|
|
15
15
|
});
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
//
|
|
2
|
-
export {
|
|
1
|
+
// The type recipes derive their prop unions from; `tv` itself stays internal.
|
|
2
|
+
export type { VariantProps } from "./tv";
|
|
3
3
|
|
|
4
4
|
// Export utility classes
|
|
5
5
|
export * from "./utils";
|
|
6
6
|
|
|
7
7
|
// Export all component variants
|
|
8
8
|
export * from "./components";
|
|
9
|
+
|
|
10
|
+
// The bundled themes, for a consumer that has to build a picker rather than a stylesheet.
|
|
11
|
+
export * from "./themes";
|
package/src/themes.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every bundled theme — GENERATED, do not edit by hand.
|
|
3
|
+
*
|
|
4
|
+
* Run `pnpm generate:themes` after changing `scripts/themes/presets.ts`.
|
|
5
|
+
*
|
|
6
|
+
* `themeIds` is in presentation order, which a picker should follow. `themeLabels` is keyed
|
|
7
|
+
* for the linter, so read the order from `themeIds` and the name from here.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export const themeIds = [
|
|
11
|
+
"default",
|
|
12
|
+
"hero",
|
|
13
|
+
"sky",
|
|
14
|
+
"lavender",
|
|
15
|
+
"mint",
|
|
16
|
+
"netflix",
|
|
17
|
+
"uber",
|
|
18
|
+
"spotify",
|
|
19
|
+
"coinbase",
|
|
20
|
+
"airbnb",
|
|
21
|
+
"discord",
|
|
22
|
+
"rabbit",
|
|
23
|
+
] as const;
|
|
24
|
+
|
|
25
|
+
export type ThemeId = (typeof themeIds)[number];
|
|
26
|
+
|
|
27
|
+
export const themeLabels: Record<ThemeId, string> = {
|
|
28
|
+
airbnb: "Airbnb",
|
|
29
|
+
coinbase: "Coinbase",
|
|
30
|
+
default: "Default",
|
|
31
|
+
discord: "Discord",
|
|
32
|
+
hero: "Hero",
|
|
33
|
+
lavender: "Lavender",
|
|
34
|
+
mint: "Mint",
|
|
35
|
+
netflix: "Netflix",
|
|
36
|
+
rabbit: "Rabbit",
|
|
37
|
+
sky: "Sky",
|
|
38
|
+
spotify: "Spotify",
|
|
39
|
+
uber: "Uber",
|
|
40
|
+
};
|
package/src/tv.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps variant props onto class names.
|
|
3
|
+
*
|
|
4
|
+
* Every class a recipe emits is a BEM name, so there is nothing to deduplicate and no conflict
|
|
5
|
+
* to resolve: a caller's utility already wins on cascade order, since component rules sit in the
|
|
6
|
+
* `components` layer and utilities in the later `utilities` one. Concatenation is the whole job.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
type ClassValue = ClassValue[] | string | false | null | undefined;
|
|
10
|
+
|
|
11
|
+
type Props = Record<string, unknown>;
|
|
12
|
+
|
|
13
|
+
type VariantClasses = string | Record<string, string>;
|
|
14
|
+
|
|
15
|
+
interface Config {
|
|
16
|
+
base?: string;
|
|
17
|
+
defaultVariants?: Record<string, unknown>;
|
|
18
|
+
slots?: Record<string, string>;
|
|
19
|
+
variants?: Record<string, Record<string, VariantClasses>>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type ClassProp = { class?: ClassValue };
|
|
23
|
+
|
|
24
|
+
type StringToBoolean<T> = T extends "false" | "true" ? boolean : T;
|
|
25
|
+
|
|
26
|
+
type Selection<C> = C extends { variants: infer V }
|
|
27
|
+
? { [K in keyof V]?: StringToBoolean<keyof V[K] & string> }
|
|
28
|
+
: object;
|
|
29
|
+
|
|
30
|
+
type Recipe<C> = C extends { slots: infer S }
|
|
31
|
+
? (props?: ClassProp & Selection<C>) => {
|
|
32
|
+
[K in keyof S]: (props?: ClassProp & Selection<C>) => string;
|
|
33
|
+
}
|
|
34
|
+
: (props?: ClassProp & Selection<C>) => string;
|
|
35
|
+
|
|
36
|
+
/** The variant props a recipe accepts, for deriving a component's own prop types. */
|
|
37
|
+
export type VariantProps<T> = T extends (props?: infer P) => unknown
|
|
38
|
+
? Omit<NonNullable<P>, "class">
|
|
39
|
+
: never;
|
|
40
|
+
|
|
41
|
+
const flatten = (value: ClassValue): string =>
|
|
42
|
+
Array.isArray(value) ? value.map(flatten).filter(Boolean).join(" ") : value || "";
|
|
43
|
+
|
|
44
|
+
export const tv = <C extends Config>(config: C): Recipe<C> => {
|
|
45
|
+
const { base, defaultVariants, slots, variants } = config;
|
|
46
|
+
const slotClasses = slots ?? { base: base ?? "" };
|
|
47
|
+
|
|
48
|
+
/** `inherited` carries what the root call resolved, for a slot resolving itself afterwards. */
|
|
49
|
+
const build = (slot: string, props: Props, inherited: Props = {}): string => {
|
|
50
|
+
const parts: (string | undefined)[] = [slotClasses[slot]];
|
|
51
|
+
|
|
52
|
+
for (const [name, group] of Object.entries(variants ?? {})) {
|
|
53
|
+
// Key by key rather than by spread: a slot naming a variant it has no value for must fall
|
|
54
|
+
// through to the root call instead of erasing it.
|
|
55
|
+
const selected = props[name] ?? inherited[name] ?? defaultVariants?.[name];
|
|
56
|
+
|
|
57
|
+
if (typeof selected !== "boolean" && typeof selected !== "string") continue;
|
|
58
|
+
|
|
59
|
+
const classes = group[String(selected)];
|
|
60
|
+
|
|
61
|
+
// A bare string under `slots` belongs to `base`, the same slot a slotless recipe names.
|
|
62
|
+
parts.push(
|
|
63
|
+
typeof classes === "string" ? (slot === "base" ? classes : undefined) : classes?.[slot],
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
parts.push(flatten(props["class"] as ClassValue));
|
|
68
|
+
|
|
69
|
+
return parts.filter(Boolean).join(" ");
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const recipe = slots
|
|
73
|
+
? (props: Props = {}) =>
|
|
74
|
+
Object.fromEntries(
|
|
75
|
+
// Only variants are inherited. A `class` on the root call is not: spreading it across
|
|
76
|
+
// every slot would stamp the caller's classes on the whole component.
|
|
77
|
+
Object.keys(slots).map((slot) => [slot, (args: Props = {}) => build(slot, args, props)]),
|
|
78
|
+
)
|
|
79
|
+
: (props: Props = {}) => build("base", props);
|
|
80
|
+
|
|
81
|
+
return recipe as Recipe<C>;
|
|
82
|
+
};
|