@yamada-ui/react 2.0.10-dev-20260301101758 → 2.1.0-dev-20260302125757
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/accordion/accordion.cjs +8 -9
- package/dist/cjs/components/accordion/accordion.cjs.map +1 -1
- package/dist/cjs/components/accordion/accordion.style.cjs +11 -37
- package/dist/cjs/components/accordion/accordion.style.cjs.map +1 -1
- package/dist/cjs/components/accordion/use-accordion.cjs +7 -2
- package/dist/cjs/components/accordion/use-accordion.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete.cjs +2 -2
- package/dist/cjs/components/button/button-group.cjs +1 -1
- package/dist/cjs/components/chart/area-chart.cjs +41 -0
- package/dist/cjs/components/chart/area-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/area-chart.namespace.cjs +31 -0
- package/dist/cjs/components/chart/area-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/area-chart.style.cjs +12 -0
- package/dist/cjs/components/chart/area-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/bar-chart.cjs +41 -0
- package/dist/cjs/components/chart/bar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/bar-chart.namespace.cjs +30 -0
- package/dist/cjs/components/chart/bar-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/bar-chart.style.cjs +14 -0
- package/dist/cjs/components/chart/bar-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/cartesian-chart.cjs +637 -0
- package/dist/cjs/components/chart/cartesian-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/cartesian-chart.style.cjs +123 -0
- package/dist/cjs/components/chart/cartesian-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/chart.cjs +233 -0
- package/dist/cjs/components/chart/chart.cjs.map +1 -0
- package/dist/cjs/components/chart/chart.style.cjs +119 -0
- package/dist/cjs/components/chart/chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/donut-chart.cjs +45 -0
- package/dist/cjs/components/chart/donut-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/donut-chart.namespace.cjs +27 -0
- package/dist/cjs/components/chart/donut-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/donut-chart.style.cjs +10 -0
- package/dist/cjs/components/chart/donut-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/index.cjs +134 -0
- package/dist/cjs/components/chart/line-chart.cjs +41 -0
- package/dist/cjs/components/chart/line-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/line-chart.namespace.cjs +30 -0
- package/dist/cjs/components/chart/line-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/line-chart.style.cjs +12 -0
- package/dist/cjs/components/chart/line-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/pie-chart.cjs +45 -0
- package/dist/cjs/components/chart/pie-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/pie-chart.namespace.cjs +27 -0
- package/dist/cjs/components/chart/pie-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/pie-chart.style.cjs +12 -0
- package/dist/cjs/components/chart/pie-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/polar-chart.cjs +659 -0
- package/dist/cjs/components/chart/polar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/polar-chart.style.cjs +150 -0
- package/dist/cjs/components/chart/polar-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/radar-chart.cjs +44 -0
- package/dist/cjs/components/chart/radar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/radar-chart.namespace.cjs +30 -0
- package/dist/cjs/components/chart/radar-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/radar-chart.style.cjs +12 -0
- package/dist/cjs/components/chart/radar-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/radial-chart.cjs +57 -0
- package/dist/cjs/components/chart/radial-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/radial-chart.namespace.cjs +30 -0
- package/dist/cjs/components/chart/radial-chart.namespace.cjs.map +1 -0
- package/dist/cjs/components/chart/radial-chart.style.cjs +15 -0
- package/dist/cjs/components/chart/radial-chart.style.cjs.map +1 -0
- package/dist/cjs/components/chart/use-area-chart.cjs +41 -0
- package/dist/cjs/components/chart/use-area-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-bar-chart.cjs +41 -0
- package/dist/cjs/components/chart/use-bar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-cartesian-chart.cjs +592 -0
- package/dist/cjs/components/chart/use-cartesian-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-chart.cjs +253 -0
- package/dist/cjs/components/chart/use-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-line-chart.cjs +41 -0
- package/dist/cjs/components/chart/use-line-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-pie-chart.cjs +43 -0
- package/dist/cjs/components/chart/use-pie-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-polar-chart.cjs +716 -0
- package/dist/cjs/components/chart/use-polar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-radar-chart.cjs +45 -0
- package/dist/cjs/components/chart/use-radar-chart.cjs.map +1 -0
- package/dist/cjs/components/chart/use-radial-chart.cjs +63 -0
- package/dist/cjs/components/chart/use-radial-chart.cjs.map +1 -0
- package/dist/cjs/components/checkbox/checkbox.style.cjs +18 -0
- package/dist/cjs/components/checkbox/checkbox.style.cjs.map +1 -1
- package/dist/cjs/components/checkbox-card/checkbox-card.style.cjs +18 -0
- package/dist/cjs/components/checkbox-card/checkbox-card.style.cjs.map +1 -1
- package/dist/cjs/components/color-picker/color-picker.cjs +2 -2
- package/dist/cjs/components/date-picker/date-picker.cjs +2 -2
- package/dist/cjs/components/dropzone/dropzone.style.cjs +18 -0
- package/dist/cjs/components/dropzone/dropzone.style.cjs.map +1 -1
- package/dist/cjs/components/editable/editable.style.cjs +36 -0
- package/dist/cjs/components/editable/editable.style.cjs.map +1 -1
- package/dist/cjs/components/field/field.cjs +28 -15
- package/dist/cjs/components/field/field.cjs.map +1 -1
- package/dist/cjs/components/field/use-field-props.cjs +12 -1
- package/dist/cjs/components/field/use-field-props.cjs.map +1 -1
- package/dist/cjs/components/fieldset/fieldset.cjs +12 -2
- package/dist/cjs/components/fieldset/fieldset.cjs.map +1 -1
- package/dist/cjs/components/fieldset/fieldset.style.cjs +1 -1
- package/dist/cjs/components/fieldset/fieldset.style.cjs.map +1 -1
- package/dist/cjs/components/file-button/file-button.cjs +2 -2
- package/dist/cjs/components/file-button/use-file-button.cjs +2 -5
- package/dist/cjs/components/file-button/use-file-button.cjs.map +1 -1
- package/dist/cjs/components/file-input/use-file-input.cjs +7 -2
- package/dist/cjs/components/file-input/use-file-input.cjs.map +1 -1
- package/dist/cjs/components/form/form.cjs +136 -0
- package/dist/cjs/components/form/form.cjs.map +1 -0
- package/dist/cjs/components/form/form.style.cjs +108 -0
- package/dist/cjs/components/form/form.style.cjs.map +1 -0
- package/dist/cjs/components/form/index.cjs +23 -0
- package/dist/cjs/components/form/namespace.cjs +25 -0
- package/dist/cjs/components/form/namespace.cjs.map +1 -0
- package/dist/cjs/components/input/input-group.cjs +2 -2
- package/dist/cjs/components/input/input.style.cjs +36 -0
- package/dist/cjs/components/input/input.style.cjs.map +1 -1
- package/dist/cjs/components/loading/oval.cjs +2 -3
- package/dist/cjs/components/loading/oval.cjs.map +1 -1
- package/dist/cjs/components/modal/modal.cjs +2 -2
- package/dist/cjs/components/native-accordion/index.cjs +23 -0
- package/dist/cjs/components/native-accordion/namespace.cjs +22 -0
- package/dist/cjs/components/native-accordion/namespace.cjs.map +1 -0
- package/dist/cjs/components/native-accordion/native-accordion.cjs +102 -0
- package/dist/cjs/components/native-accordion/native-accordion.cjs.map +1 -0
- package/dist/cjs/components/native-accordion/native-accordion.style.cjs +69 -0
- package/dist/cjs/components/native-accordion/native-accordion.style.cjs.map +1 -0
- package/dist/cjs/components/native-accordion/use-native-accordion.cjs +61 -0
- package/dist/cjs/components/native-accordion/use-native-accordion.cjs.map +1 -0
- package/dist/cjs/components/native-popover/index.cjs +23 -0
- package/dist/cjs/components/native-popover/namespace.cjs +25 -0
- package/dist/cjs/components/native-popover/namespace.cjs.map +1 -0
- package/dist/cjs/components/native-popover/native-popover.cjs +99 -0
- package/dist/cjs/components/native-popover/native-popover.cjs.map +1 -0
- package/dist/cjs/components/native-popover/native-popover.style.cjs +67 -0
- package/dist/cjs/components/native-popover/native-popover.style.cjs.map +1 -0
- package/dist/cjs/components/native-popover/use-native-popover.cjs +119 -0
- package/dist/cjs/components/native-popover/use-native-popover.cjs.map +1 -0
- package/dist/cjs/components/native-select/native-select.cjs +2 -2
- package/dist/cjs/components/number-input/number-input.cjs +2 -2
- package/dist/cjs/components/number-input/number-input.style.cjs +2 -2
- package/dist/cjs/components/password-input/password-input.cjs +2 -2
- package/dist/cjs/components/password-input/password-input.style.cjs +2 -2
- package/dist/cjs/components/pin-input/pin-input.cjs +2 -2
- package/dist/cjs/components/popover/index.cjs +1 -0
- package/dist/cjs/components/popover/namespace.cjs +1 -0
- package/dist/cjs/components/popover/namespace.cjs.map +1 -1
- package/dist/cjs/components/popover/popover.cjs +12 -4
- package/dist/cjs/components/popover/popover.cjs.map +1 -1
- package/dist/cjs/components/popover/popover.style.cjs +4 -54
- package/dist/cjs/components/popover/popover.style.cjs.map +1 -1
- package/dist/cjs/components/popover/use-popover.cjs +16 -9
- package/dist/cjs/components/popover/use-popover.cjs.map +1 -1
- package/dist/cjs/components/qr-code/index.cjs +19 -0
- package/dist/cjs/components/qr-code/namespace.cjs +21 -0
- package/dist/cjs/components/qr-code/namespace.cjs.map +1 -0
- package/dist/cjs/components/qr-code/qr-code.cjs +66 -0
- package/dist/cjs/components/qr-code/qr-code.cjs.map +1 -0
- package/dist/cjs/components/qr-code/qr-code.style.cjs +48 -0
- package/dist/cjs/components/qr-code/qr-code.style.cjs.map +1 -0
- package/dist/cjs/components/qr-code/use-qr-code.cjs +67 -0
- package/dist/cjs/components/qr-code/use-qr-code.cjs.map +1 -0
- package/dist/cjs/components/radio/radio.style.cjs +18 -0
- package/dist/cjs/components/radio/radio.style.cjs.map +1 -1
- package/dist/cjs/components/radio-card/radio-card.style.cjs +21 -1
- package/dist/cjs/components/radio-card/radio-card.style.cjs.map +1 -1
- package/dist/cjs/components/rating/rating.style.cjs +19 -1
- package/dist/cjs/components/rating/rating.style.cjs.map +1 -1
- package/dist/cjs/components/resizable/index.cjs +3 -0
- package/dist/cjs/components/resizable/namespace.cjs +2 -0
- package/dist/cjs/components/resizable/namespace.cjs.map +1 -1
- package/dist/cjs/components/resizable/resizable.cjs +12 -12
- package/dist/cjs/components/resizable/resizable.cjs.map +1 -1
- package/dist/cjs/components/resizable/resizable.style.cjs +1 -2
- package/dist/cjs/components/resizable/resizable.style.cjs.map +1 -1
- package/dist/cjs/components/resizable/use-resizable.cjs +56 -89
- package/dist/cjs/components/resizable/use-resizable.cjs.map +1 -1
- package/dist/cjs/components/select/select.cjs +2 -2
- package/dist/cjs/components/slider/slider.style.cjs +18 -0
- package/dist/cjs/components/slider/slider.style.cjs.map +1 -1
- package/dist/cjs/components/tip/index.cjs +3 -0
- package/dist/cjs/components/tip/tip.cjs +53 -0
- package/dist/cjs/components/tip/tip.cjs.map +1 -0
- package/dist/cjs/components/toggle/toggle.cjs +2 -2
- package/dist/cjs/components/tooltip/index.cjs +2 -0
- package/dist/cjs/components/tooltip/use-tooltip.cjs +23 -3
- package/dist/cjs/components/tooltip/use-tooltip.cjs.map +1 -1
- package/dist/cjs/core/components/create-component.cjs +8 -4
- package/dist/cjs/core/components/create-component.cjs.map +1 -1
- package/dist/cjs/core/components/use-component-style.cjs +54 -14
- package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
- package/dist/cjs/core/css/at-rule.cjs +3 -2
- package/dist/cjs/core/css/at-rule.cjs.map +1 -1
- package/dist/cjs/core/css/color-mix.cjs +5 -2
- package/dist/cjs/core/css/color-mix.cjs.map +1 -1
- package/dist/cjs/core/css/conditions.cjs +6 -0
- package/dist/cjs/core/css/conditions.cjs.map +1 -1
- package/dist/cjs/core/css/styles.cjs +13 -3
- package/dist/cjs/core/css/styles.cjs.map +1 -1
- package/dist/cjs/core/css/use-css.cjs +5 -4
- package/dist/cjs/core/css/use-css.cjs.map +1 -1
- package/dist/cjs/core/system/styled.cjs +4 -3
- package/dist/cjs/core/system/styled.cjs.map +1 -1
- package/dist/cjs/core/system/var.cjs +2 -1
- package/dist/cjs/core/system/var.cjs.map +1 -1
- package/dist/cjs/index.cjs +524 -171
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/theme/styles/reset-style.cjs +1 -0
- package/dist/cjs/theme/styles/reset-style.cjs.map +1 -1
- package/dist/cjs/utils/children.cjs +9 -1
- package/dist/cjs/utils/children.cjs.map +1 -1
- package/dist/esm/components/accordion/accordion.js +8 -9
- package/dist/esm/components/accordion/accordion.js.map +1 -1
- package/dist/esm/components/accordion/accordion.style.js +11 -37
- package/dist/esm/components/accordion/accordion.style.js.map +1 -1
- package/dist/esm/components/accordion/use-accordion.js +7 -2
- package/dist/esm/components/accordion/use-accordion.js.map +1 -1
- package/dist/esm/components/autocomplete/autocomplete.js +2 -2
- package/dist/esm/components/button/button-group.js +1 -1
- package/dist/esm/components/chart/area-chart.js +38 -0
- package/dist/esm/components/chart/area-chart.js.map +1 -0
- package/dist/esm/components/chart/area-chart.namespace.js +26 -0
- package/dist/esm/components/chart/area-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/area-chart.style.js +12 -0
- package/dist/esm/components/chart/area-chart.style.js.map +1 -0
- package/dist/esm/components/chart/bar-chart.js +38 -0
- package/dist/esm/components/chart/bar-chart.js.map +1 -0
- package/dist/esm/components/chart/bar-chart.namespace.js +25 -0
- package/dist/esm/components/chart/bar-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/bar-chart.style.js +14 -0
- package/dist/esm/components/chart/bar-chart.style.js.map +1 -0
- package/dist/esm/components/chart/cartesian-chart.js +629 -0
- package/dist/esm/components/chart/cartesian-chart.js.map +1 -0
- package/dist/esm/components/chart/cartesian-chart.style.js +123 -0
- package/dist/esm/components/chart/cartesian-chart.style.js.map +1 -0
- package/dist/esm/components/chart/chart.js +222 -0
- package/dist/esm/components/chart/chart.js.map +1 -0
- package/dist/esm/components/chart/chart.style.js +119 -0
- package/dist/esm/components/chart/chart.style.js.map +1 -0
- package/dist/esm/components/chart/donut-chart.js +42 -0
- package/dist/esm/components/chart/donut-chart.js.map +1 -0
- package/dist/esm/components/chart/donut-chart.namespace.js +22 -0
- package/dist/esm/components/chart/donut-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/donut-chart.style.js +10 -0
- package/dist/esm/components/chart/donut-chart.style.js.map +1 -0
- package/dist/esm/components/chart/index.js +31 -0
- package/dist/esm/components/chart/line-chart.js +38 -0
- package/dist/esm/components/chart/line-chart.js.map +1 -0
- package/dist/esm/components/chart/line-chart.namespace.js +25 -0
- package/dist/esm/components/chart/line-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/line-chart.style.js +12 -0
- package/dist/esm/components/chart/line-chart.style.js.map +1 -0
- package/dist/esm/components/chart/pie-chart.js +42 -0
- package/dist/esm/components/chart/pie-chart.js.map +1 -0
- package/dist/esm/components/chart/pie-chart.namespace.js +22 -0
- package/dist/esm/components/chart/pie-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/pie-chart.style.js +12 -0
- package/dist/esm/components/chart/pie-chart.style.js.map +1 -0
- package/dist/esm/components/chart/polar-chart.js +651 -0
- package/dist/esm/components/chart/polar-chart.js.map +1 -0
- package/dist/esm/components/chart/polar-chart.style.js +150 -0
- package/dist/esm/components/chart/polar-chart.style.js.map +1 -0
- package/dist/esm/components/chart/radar-chart.js +41 -0
- package/dist/esm/components/chart/radar-chart.js.map +1 -0
- package/dist/esm/components/chart/radar-chart.namespace.js +25 -0
- package/dist/esm/components/chart/radar-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/radar-chart.style.js +12 -0
- package/dist/esm/components/chart/radar-chart.style.js.map +1 -0
- package/dist/esm/components/chart/radial-chart.js +54 -0
- package/dist/esm/components/chart/radial-chart.js.map +1 -0
- package/dist/esm/components/chart/radial-chart.namespace.js +25 -0
- package/dist/esm/components/chart/radial-chart.namespace.js.map +1 -0
- package/dist/esm/components/chart/radial-chart.style.js +15 -0
- package/dist/esm/components/chart/radial-chart.style.js.map +1 -0
- package/dist/esm/components/chart/use-area-chart.js +40 -0
- package/dist/esm/components/chart/use-area-chart.js.map +1 -0
- package/dist/esm/components/chart/use-bar-chart.js +40 -0
- package/dist/esm/components/chart/use-bar-chart.js.map +1 -0
- package/dist/esm/components/chart/use-cartesian-chart.js +585 -0
- package/dist/esm/components/chart/use-cartesian-chart.js.map +1 -0
- package/dist/esm/components/chart/use-chart.js +246 -0
- package/dist/esm/components/chart/use-chart.js.map +1 -0
- package/dist/esm/components/chart/use-line-chart.js +40 -0
- package/dist/esm/components/chart/use-line-chart.js.map +1 -0
- package/dist/esm/components/chart/use-pie-chart.js +42 -0
- package/dist/esm/components/chart/use-pie-chart.js.map +1 -0
- package/dist/esm/components/chart/use-polar-chart.js +707 -0
- package/dist/esm/components/chart/use-polar-chart.js.map +1 -0
- package/dist/esm/components/chart/use-radar-chart.js +44 -0
- package/dist/esm/components/chart/use-radar-chart.js.map +1 -0
- package/dist/esm/components/chart/use-radial-chart.js +62 -0
- package/dist/esm/components/chart/use-radial-chart.js.map +1 -0
- package/dist/esm/components/checkbox/checkbox.style.js +18 -0
- package/dist/esm/components/checkbox/checkbox.style.js.map +1 -1
- package/dist/esm/components/checkbox-card/checkbox-card.style.js +18 -0
- package/dist/esm/components/checkbox-card/checkbox-card.style.js.map +1 -1
- package/dist/esm/components/color-picker/color-picker.js +2 -2
- package/dist/esm/components/date-picker/date-picker.js +2 -2
- package/dist/esm/components/dropzone/dropzone.style.js +18 -0
- package/dist/esm/components/dropzone/dropzone.style.js.map +1 -1
- package/dist/esm/components/editable/editable.style.js +36 -0
- package/dist/esm/components/editable/editable.style.js.map +1 -1
- package/dist/esm/components/field/field.js +28 -15
- package/dist/esm/components/field/field.js.map +1 -1
- package/dist/esm/components/field/use-field-props.js +12 -1
- package/dist/esm/components/field/use-field-props.js.map +1 -1
- package/dist/esm/components/fieldset/fieldset.js +12 -2
- package/dist/esm/components/fieldset/fieldset.js.map +1 -1
- package/dist/esm/components/fieldset/fieldset.style.js +1 -1
- package/dist/esm/components/fieldset/fieldset.style.js.map +1 -1
- package/dist/esm/components/file-button/file-button.js +2 -2
- package/dist/esm/components/file-button/use-file-button.js +2 -5
- package/dist/esm/components/file-button/use-file-button.js.map +1 -1
- package/dist/esm/components/file-input/use-file-input.js +7 -2
- package/dist/esm/components/file-input/use-file-input.js.map +1 -1
- package/dist/esm/components/form/form.js +124 -0
- package/dist/esm/components/form/form.js.map +1 -0
- package/dist/esm/components/form/form.style.js +108 -0
- package/dist/esm/components/form/form.style.js.map +1 -0
- package/dist/esm/components/form/index.js +5 -0
- package/dist/esm/components/form/namespace.js +20 -0
- package/dist/esm/components/form/namespace.js.map +1 -0
- package/dist/esm/components/input/input-group.js +2 -2
- package/dist/esm/components/input/input.style.js +36 -0
- package/dist/esm/components/input/input.style.js.map +1 -1
- package/dist/esm/components/loading/oval.js +2 -3
- package/dist/esm/components/loading/oval.js.map +1 -1
- package/dist/esm/components/modal/modal.js +2 -2
- package/dist/esm/components/native-accordion/index.js +6 -0
- package/dist/esm/components/native-accordion/namespace.js +17 -0
- package/dist/esm/components/native-accordion/namespace.js.map +1 -0
- package/dist/esm/components/native-accordion/native-accordion.js +95 -0
- package/dist/esm/components/native-accordion/native-accordion.js.map +1 -0
- package/dist/esm/components/native-accordion/native-accordion.style.js +69 -0
- package/dist/esm/components/native-accordion/native-accordion.style.js.map +1 -0
- package/dist/esm/components/native-accordion/use-native-accordion.js +57 -0
- package/dist/esm/components/native-accordion/use-native-accordion.js.map +1 -0
- package/dist/esm/components/native-popover/index.js +6 -0
- package/dist/esm/components/native-popover/namespace.js +20 -0
- package/dist/esm/components/native-popover/namespace.js.map +1 -0
- package/dist/esm/components/native-popover/native-popover.js +89 -0
- package/dist/esm/components/native-popover/native-popover.js.map +1 -0
- package/dist/esm/components/native-popover/native-popover.style.js +67 -0
- package/dist/esm/components/native-popover/native-popover.style.js.map +1 -0
- package/dist/esm/components/native-popover/use-native-popover.js +118 -0
- package/dist/esm/components/native-popover/use-native-popover.js.map +1 -0
- package/dist/esm/components/native-select/native-select.js +2 -2
- package/dist/esm/components/number-input/number-input.js +2 -2
- package/dist/esm/components/number-input/number-input.style.js +2 -2
- package/dist/esm/components/password-input/password-input.js +2 -2
- package/dist/esm/components/password-input/password-input.style.js +2 -2
- package/dist/esm/components/pin-input/pin-input.js +2 -2
- package/dist/esm/components/popover/index.js +2 -2
- package/dist/esm/components/popover/namespace.js +2 -1
- package/dist/esm/components/popover/namespace.js.map +1 -1
- package/dist/esm/components/popover/popover.js +12 -5
- package/dist/esm/components/popover/popover.js.map +1 -1
- package/dist/esm/components/popover/popover.style.js +4 -54
- package/dist/esm/components/popover/popover.style.js.map +1 -1
- package/dist/esm/components/popover/use-popover.js +16 -9
- package/dist/esm/components/popover/use-popover.js.map +1 -1
- package/dist/esm/components/qr-code/index.js +6 -0
- package/dist/esm/components/qr-code/namespace.js +16 -0
- package/dist/esm/components/qr-code/namespace.js.map +1 -0
- package/dist/esm/components/qr-code/qr-code.js +60 -0
- package/dist/esm/components/qr-code/qr-code.js.map +1 -0
- package/dist/esm/components/qr-code/qr-code.style.js +48 -0
- package/dist/esm/components/qr-code/qr-code.style.js.map +1 -0
- package/dist/esm/components/qr-code/use-qr-code.js +66 -0
- package/dist/esm/components/qr-code/use-qr-code.js.map +1 -0
- package/dist/esm/components/radio/radio.style.js +18 -0
- package/dist/esm/components/radio/radio.style.js.map +1 -1
- package/dist/esm/components/radio-card/radio-card.style.js +21 -1
- package/dist/esm/components/radio-card/radio-card.style.js.map +1 -1
- package/dist/esm/components/rating/rating.style.js +19 -1
- package/dist/esm/components/rating/rating.style.js.map +1 -1
- package/dist/esm/components/resizable/index.js +2 -2
- package/dist/esm/components/resizable/namespace.js +2 -1
- package/dist/esm/components/resizable/namespace.js.map +1 -1
- package/dist/esm/components/resizable/resizable.js +13 -13
- package/dist/esm/components/resizable/resizable.js.map +1 -1
- package/dist/esm/components/resizable/resizable.style.js +1 -2
- package/dist/esm/components/resizable/resizable.style.js.map +1 -1
- package/dist/esm/components/resizable/use-resizable.js +60 -93
- package/dist/esm/components/resizable/use-resizable.js.map +1 -1
- package/dist/esm/components/select/select.js +2 -2
- package/dist/esm/components/slider/slider.style.js +18 -0
- package/dist/esm/components/slider/slider.style.js.map +1 -1
- package/dist/esm/components/tip/index.js +3 -0
- package/dist/esm/components/tip/tip.js +52 -0
- package/dist/esm/components/tip/tip.js.map +1 -0
- package/dist/esm/components/toggle/toggle.js +2 -2
- package/dist/esm/components/tooltip/index.js +2 -2
- package/dist/esm/components/tooltip/use-tooltip.js +22 -4
- package/dist/esm/components/tooltip/use-tooltip.js.map +1 -1
- package/dist/esm/core/components/create-component.js +8 -4
- package/dist/esm/core/components/create-component.js.map +1 -1
- package/dist/esm/core/components/use-component-style.js +54 -14
- package/dist/esm/core/components/use-component-style.js.map +1 -1
- package/dist/esm/core/css/at-rule.js +3 -2
- package/dist/esm/core/css/at-rule.js.map +1 -1
- package/dist/esm/core/css/color-mix.js +5 -2
- package/dist/esm/core/css/color-mix.js.map +1 -1
- package/dist/esm/core/css/conditions.js +6 -0
- package/dist/esm/core/css/conditions.js.map +1 -1
- package/dist/esm/core/css/styles.js +13 -3
- package/dist/esm/core/css/styles.js.map +1 -1
- package/dist/esm/core/css/use-css.js +5 -4
- package/dist/esm/core/css/use-css.js.map +1 -1
- package/dist/esm/core/system/styled.js +4 -3
- package/dist/esm/core/system/styled.js.map +1 -1
- package/dist/esm/core/system/var.js +2 -1
- package/dist/esm/core/system/var.js.map +1 -1
- package/dist/esm/index.js +258 -84
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/theme/styles/reset-style.js +1 -0
- package/dist/esm/theme/styles/reset-style.js.map +1 -1
- package/dist/esm/utils/children.js +9 -1
- package/dist/esm/utils/children.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +3 -6
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/airy/airy.d.ts +2 -2
- package/dist/types/components/alert/alert.d.ts +2 -2
- package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +13 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
- package/dist/types/components/avatar/avatar.d.ts +6 -6
- package/dist/types/components/avatar/avatar.style.d.ts +1 -1
- package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
- package/dist/types/components/badge/badge.d.ts +2 -2
- package/dist/types/components/bleed/bleed.d.ts +2 -2
- package/dist/types/components/blockquote/blockquote.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button/icon-button.d.ts +2 -2
- package/dist/types/components/calendar/calendar.d.ts +2 -2
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/calendar/use-calendar.d.ts +8 -8
- package/dist/types/components/card/card.d.ts +2 -2
- package/dist/types/components/carousel/carousel.d.ts +2 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/carousel/use-carousel.d.ts +3 -3
- package/dist/types/components/center/center.d.ts +2 -2
- package/dist/types/components/chart/area-chart.d.ts +34 -0
- package/dist/types/components/chart/area-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/area-chart.style.d.ts +10 -0
- package/dist/types/components/chart/bar-chart.d.ts +34 -0
- package/dist/types/components/chart/bar-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/bar-chart.style.d.ts +10 -0
- package/dist/types/components/chart/cartesian-chart.d.ts +311 -0
- package/dist/types/components/chart/cartesian-chart.style.d.ts +10 -0
- package/dist/types/components/chart/chart.d.ts +148 -0
- package/dist/types/components/chart/chart.style.d.ts +36 -0
- package/dist/types/components/chart/donut-chart.d.ts +34 -0
- package/dist/types/components/chart/donut-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/donut-chart.style.d.ts +10 -0
- package/dist/types/components/chart/index.d.ts +30 -0
- package/dist/types/components/chart/line-chart.d.ts +34 -0
- package/dist/types/components/chart/line-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/line-chart.style.d.ts +10 -0
- package/dist/types/components/chart/pie-chart.d.ts +34 -0
- package/dist/types/components/chart/pie-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/pie-chart.style.d.ts +10 -0
- package/dist/types/components/chart/polar-chart.d.ts +401 -0
- package/dist/types/components/chart/polar-chart.style.d.ts +10 -0
- package/dist/types/components/chart/radar-chart.d.ts +34 -0
- package/dist/types/components/chart/radar-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/radar-chart.style.d.ts +10 -0
- package/dist/types/components/chart/radial-chart.d.ts +34 -0
- package/dist/types/components/chart/radial-chart.namespace.d.ts +11 -0
- package/dist/types/components/chart/radial-chart.style.d.ts +10 -0
- package/dist/types/components/chart/use-area-chart.d.ts +29 -0
- package/dist/types/components/chart/use-bar-chart.d.ts +29 -0
- package/dist/types/components/chart/use-cartesian-chart.d.ts +238 -0
- package/dist/types/components/chart/use-chart.d.ts +117 -0
- package/dist/types/components/chart/use-line-chart.d.ts +29 -0
- package/dist/types/components/chart/use-pie-chart.d.ts +30 -0
- package/dist/types/components/chart/use-polar-chart.d.ts +330 -0
- package/dist/types/components/chart/use-radar-chart.d.ts +31 -0
- package/dist/types/components/chart/use-radial-chart.d.ts +40 -0
- package/dist/types/components/checkbox/checkbox.d.ts +5 -5
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +23 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +6 -0
- package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
- package/dist/types/components/close-button/close-button.d.ts +2 -2
- package/dist/types/components/code/code.d.ts +2 -2
- package/dist/types/components/collapse/collapse.d.ts +2 -2
- package/dist/types/components/color-picker/color-picker.d.ts +2 -2
- package/dist/types/components/color-picker/color-picker.style.d.ts +12 -0
- package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.d.ts +2 -2
- package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
- package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
- package/dist/types/components/container/container.d.ts +2 -2
- package/dist/types/components/data-list/data-list.d.ts +2 -2
- package/dist/types/components/date-picker/date-picker.d.ts +2 -2
- package/dist/types/components/date-picker/date-picker.style.d.ts +13 -1
- package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
- package/dist/types/components/drawer/drawer.d.ts +2 -2
- package/dist/types/components/drawer/drawer.style.d.ts +2 -2
- package/dist/types/components/dropzone/dropzone.d.ts +8 -2
- package/dist/types/components/dropzone/dropzone.style.d.ts +6 -0
- package/dist/types/components/editable/editable.d.ts +2 -2
- package/dist/types/components/editable/use-editable.d.ts +2 -2
- package/dist/types/components/em/em.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +7 -3
- package/dist/types/components/field/field.style.d.ts +2 -2
- package/dist/types/components/field/use-field-props.d.ts +7 -4
- package/dist/types/components/fieldset/fieldset.d.ts +3 -3
- package/dist/types/components/fieldset/fieldset.style.d.ts +4 -2
- package/dist/types/components/file-button/file-button.d.ts +2 -2
- package/dist/types/components/file-button/use-file-button.d.ts +17 -17
- package/dist/types/components/file-input/file-input.d.ts +2 -2
- package/dist/types/components/file-input/file-input.style.d.ts +12 -0
- package/dist/types/components/file-input/use-file-input.d.ts +17 -17
- package/dist/types/components/flex/flex.d.ts +2 -2
- package/dist/types/components/flip/flip.d.ts +2 -2
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +129 -0
- package/dist/types/components/form/form.style.d.ts +107 -0
- package/dist/types/components/form/index.d.ts +4 -0
- package/dist/types/components/form/namespace.d.ts +9 -0
- package/dist/types/components/format/format-byte.d.ts +2 -2
- package/dist/types/components/format/format-date-time.d.ts +2 -2
- package/dist/types/components/format/format-number.d.ts +2 -2
- package/dist/types/components/grid/grid-item.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +2 -2
- package/dist/types/components/group/group.d.ts +2 -2
- package/dist/types/components/group/use-group.d.ts +2 -2
- package/dist/types/components/heading/heading.d.ts +2 -2
- package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
- package/dist/types/components/icon/icon.d.ts +4 -4
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +2 -2
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
- package/dist/types/components/input/input-addon.d.ts +2 -2
- package/dist/types/components/input/input-element.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -2
- package/dist/types/components/input/input.style.d.ts +12 -0
- package/dist/types/components/kbd/kbd.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +2 -2
- package/dist/types/components/link-box/link-box.d.ts +2 -2
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/loading/loading-provider.d.ts +2 -2
- package/dist/types/components/loading/loading.d.ts +3 -3
- package/dist/types/components/mark/mark.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/menu/use-menu.d.ts +11 -11
- package/dist/types/components/modal/modal.d.ts +2 -2
- package/dist/types/components/modal/modal.style.d.ts +2 -2
- package/dist/types/components/native-accordion/index.d.ts +5 -0
- package/dist/types/components/native-accordion/namespace.d.ts +9 -0
- package/dist/types/components/native-accordion/native-accordion.d.ts +59 -0
- package/dist/types/components/native-accordion/native-accordion.style.d.ts +58 -0
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +50 -0
- package/dist/types/components/native-popover/index.d.ts +5 -0
- package/dist/types/components/native-popover/namespace.d.ts +9 -0
- package/dist/types/components/native-popover/native-popover.d.ts +35 -0
- package/dist/types/components/native-popover/native-popover.style.d.ts +39 -0
- package/dist/types/components/native-popover/use-native-popover.d.ts +75 -0
- package/dist/types/components/native-select/native-select.d.ts +2 -2
- package/dist/types/components/native-select/native-select.style.d.ts +12 -0
- package/dist/types/components/native-table/native-table.d.ts +2 -2
- package/dist/types/components/notice/notice.style.d.ts +1 -1
- package/dist/types/components/number-input/number-input.d.ts +2 -2
- package/dist/types/components/number-input/number-input.style.d.ts +12 -0
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/pagination/use-pagination.d.ts +2 -2
- package/dist/types/components/password-input/password-input.d.ts +2 -2
- package/dist/types/components/password-input/password-input.style.d.ts +12 -0
- package/dist/types/components/password-input/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/use-password-input.d.ts +2 -2
- package/dist/types/components/pin-input/pin-input.d.ts +2 -2
- package/dist/types/components/pin-input/pin-input.style.d.ts +12 -0
- package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
- package/dist/types/components/popover/index.d.ts +2 -2
- package/dist/types/components/popover/namespace.d.ts +2 -2
- package/dist/types/components/popover/popover.d.ts +5 -9
- package/dist/types/components/popover/use-popover.d.ts +1 -0
- package/dist/types/components/progress/progress.d.ts +2 -2
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/index.d.ts +5 -0
- package/dist/types/components/qr-code/namespace.d.ts +9 -0
- package/dist/types/components/qr-code/qr-code.d.ts +35 -0
- package/dist/types/components/qr-code/qr-code.style.d.ts +56 -0
- package/dist/types/components/qr-code/use-qr-code.d.ts +94 -0
- package/dist/types/components/radio/radio.d.ts +5 -5
- package/dist/types/components/radio/use-radio-group.d.ts +2 -2
- package/dist/types/components/radio-card/radio-card.d.ts +29 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +8 -0
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/rating/use-rating.d.ts +7 -7
- package/dist/types/components/reorder/reorder.d.ts +2 -2
- package/dist/types/components/reorder/use-reorder.d.ts +3 -3
- package/dist/types/components/resizable/index.d.ts +2 -2
- package/dist/types/components/resizable/namespace.d.ts +2 -2
- package/dist/types/components/resizable/resizable.d.ts +5 -10
- package/dist/types/components/resizable/resizable.style.d.ts +0 -3
- package/dist/types/components/resizable/use-resizable.d.ts +20 -146
- package/dist/types/components/ripple/ripple.d.ts +2 -2
- package/dist/types/components/ripple/use-ripple.d.ts +2 -2
- package/dist/types/components/rotate/rotate.d.ts +2 -2
- package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
- package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
- package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/select/select.style.d.ts +13 -1
- package/dist/types/components/select/use-select.d.ts +4 -4
- package/dist/types/components/separator/separator.d.ts +2 -2
- package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/slide/slide.d.ts +2 -2
- package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/slider/slider.style.d.ts +10 -0
- package/dist/types/components/slider/use-slider.d.ts +2 -2
- package/dist/types/components/stack/h-stack.d.ts +2 -2
- package/dist/types/components/stack/stack.d.ts +2 -2
- package/dist/types/components/stack/v-stack.d.ts +2 -2
- package/dist/types/components/stack/z-stack.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +2 -2
- package/dist/types/components/stat/stat.style.d.ts +2 -2
- package/dist/types/components/status/status.d.ts +2 -2
- package/dist/types/components/steps/steps.d.ts +2 -2
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/steps/use-steps.d.ts +10 -10
- package/dist/types/components/switch/switch.d.ts +2 -2
- package/dist/types/components/table/table.d.ts +2 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/tabs/tabs.style.d.ts +1 -1
- package/dist/types/components/tabs/use-tabs.d.ts +16 -16
- package/dist/types/components/tag/tag.d.ts +2 -2
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/components/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +2 -2
- package/dist/types/components/textarea/textarea.style.d.ts +12 -0
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/timeline/timeline.style.d.ts +2 -2
- package/dist/types/components/tip/index.d.ts +2 -0
- package/dist/types/components/tip/tip.d.ts +30 -0
- package/dist/types/components/toggle/toggle.d.ts +6 -6
- package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
- package/dist/types/components/toggle/use-toggle.d.ts +2 -2
- package/dist/types/components/tooltip/index.d.ts +2 -2
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tooltip/use-tooltip.d.ts +4 -1
- package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
- package/dist/types/components/wrap/wrap.d.ts +2 -2
- package/dist/types/core/components/create-component.d.ts +9 -9
- package/dist/types/core/components/use-component-style.d.ts +1 -0
- package/dist/types/core/css/conditions.d.ts +53 -5
- package/dist/types/core/css/index.d.ts +2 -2
- package/dist/types/core/css/index.types.d.ts +78 -1
- package/dist/types/core/css/styles.d.ts +44 -111
- package/dist/types/core/css/use-css.d.ts +2 -2
- package/dist/types/core/index.d.ts +2 -2
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/styled.d.ts +3 -2
- package/dist/types/core/system/system-provider.d.ts +2 -2
- package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
- package/dist/types/hooks/use-clickable/index.d.ts +9 -9
- package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
- package/dist/types/hooks/use-combobox/index.d.ts +12 -12
- package/dist/types/hooks/use-counter/index.d.ts +2 -2
- package/dist/types/hooks/use-descendants/index.d.ts +2 -2
- package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
- package/dist/types/hooks/use-hover/index.d.ts +2 -2
- package/dist/types/hooks/use-popper/index.d.ts +2 -2
- package/dist/types/hooks/use-resize-observer/index.d.ts +3 -3
- package/dist/types/index.d.ts +85 -34
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
- package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
- package/dist/types/utils/children.d.ts +4 -4
- package/package.json +5 -3
|
@@ -4,16 +4,18 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
|
4
4
|
const require_effect = require('../../utils/effect.cjs');
|
|
5
5
|
const require_ref = require('../../utils/ref.cjs');
|
|
6
6
|
const require_utils_index = require('../../utils/index.cjs');
|
|
7
|
+
const require_props = require('../../core/components/props.cjs');
|
|
8
|
+
require('../../core/index.cjs');
|
|
9
|
+
const require_hooks_use_popper_index = require('../../hooks/use-popper/index.cjs');
|
|
7
10
|
const require_use_disclosure = require('../../hooks/use-disclosure/use-disclosure.cjs');
|
|
8
11
|
require('../../hooks/use-disclosure/index.cjs');
|
|
9
12
|
const require_hooks_use_event_listener_index = require('../../hooks/use-event-listener/index.cjs');
|
|
10
13
|
const require_hooks_use_outside_click_index = require('../../hooks/use-outside-click/index.cjs');
|
|
11
|
-
const require_hooks_use_popper_index = require('../../hooks/use-popper/index.cjs');
|
|
12
14
|
let react = require("react");
|
|
13
15
|
|
|
14
16
|
//#region src/components/tooltip/use-tooltip.tsx
|
|
15
17
|
const useTooltip = (props = {}) => {
|
|
16
|
-
const [popperProps, { closeDelay = 0, closeOnClick = true, closeOnEsc = true, closeOnScroll, defaultOpen, disabled, open: openProp, openDelay = 0, onClose: onCloseProp, onOpen: onOpenProp }] = require_hooks_use_popper_index.usePopperProps(props, ["open"]);
|
|
18
|
+
const [popperProps$1, { closeDelay = 0, closeOnClick = true, closeOnEsc = true, closeOnScroll, defaultOpen, disabled, open: openProp, openDelay = 0, onClose: onCloseProp, onOpen: onOpenProp }] = require_hooks_use_popper_index.usePopperProps(props, ["open"]);
|
|
17
19
|
const describedbyId = (0, react.useId)();
|
|
18
20
|
const triggerRef = (0, react.useRef)(null);
|
|
19
21
|
const openTimeout = (0, react.useRef)(void 0);
|
|
@@ -26,7 +28,7 @@ const useTooltip = (props = {}) => {
|
|
|
26
28
|
});
|
|
27
29
|
const { getPopperProps, getReferenceProps } = require_hooks_use_popper_index.usePopper({
|
|
28
30
|
open,
|
|
29
|
-
...popperProps
|
|
31
|
+
...popperProps$1
|
|
30
32
|
});
|
|
31
33
|
const onForceClose = (0, react.useCallback)(() => {
|
|
32
34
|
if (closeTimeout.current) {
|
|
@@ -121,7 +123,25 @@ const useTooltip = (props = {}) => {
|
|
|
121
123
|
onOpen
|
|
122
124
|
};
|
|
123
125
|
};
|
|
126
|
+
const tooltipProps = [
|
|
127
|
+
...require_hooks_use_popper_index.popperProps,
|
|
128
|
+
"open",
|
|
129
|
+
"defaultOpen",
|
|
130
|
+
"onOpen",
|
|
131
|
+
"onClose",
|
|
132
|
+
"closeDelay",
|
|
133
|
+
"closeOnClick",
|
|
134
|
+
"closeOnEsc",
|
|
135
|
+
"closeOnScroll",
|
|
136
|
+
"disabled",
|
|
137
|
+
"openDelay"
|
|
138
|
+
];
|
|
139
|
+
const useTooltipProps = (props, omitKeys) => {
|
|
140
|
+
return require_props.useSplitProps(props, tooltipProps.filter((key) => !omitKeys?.includes(key)));
|
|
141
|
+
};
|
|
124
142
|
|
|
125
143
|
//#endregion
|
|
144
|
+
exports.tooltipProps = tooltipProps;
|
|
126
145
|
exports.useTooltip = useTooltip;
|
|
146
|
+
exports.useTooltipProps = useTooltipProps;
|
|
127
147
|
//# sourceMappingURL=use-tooltip.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tooltip.cjs","names":["usePopperProps","useDisclosure","usePopper","getTriggerProps: PropGetter<\"button\">","props","mergeRefs","getPositionerProps: PropGetter"],"sources":["../../../../src/components/tooltip/use-tooltip.tsx"],"sourcesContent":["\"use client\"\n\nimport type { PropGetter } from \"../../core\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UsePopperProps } from \"../../hooks/use-popper\"\nimport { useCallback, useId, useRef } from \"react\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport { useEventListener } from \"../../hooks/use-event-listener\"\nimport { useOutsideClick } from \"../../hooks/use-outside-click\"\nimport { usePopper, usePopperProps } from \"../../hooks/use-popper\"\nimport {\n cx,\n dataAttr,\n getDocument,\n getWindow,\n handlerAll,\n mergeRefs,\n useUnmountEffect,\n} from \"../../utils\"\n\nexport interface UseTooltipProps\n extends Omit<UseDisclosureProps, \"timing\">, UsePopperProps<\"button\"> {\n /**\n * The delay before hiding the tooltip.\n *\n * @default 100\n */\n closeDelay?: number\n /**\n * If `true`, the tooltip will hide on click.\n *\n * @default true\n */\n closeOnClick?: boolean\n /**\n * If `true`, the tooltip will hide on pressing Esc key.\n *\n * @default true\n */\n closeOnEsc?: boolean\n /**\n * If `true`, the tooltip will hide on scroll.\n *\n * @default false\n */\n closeOnScroll?: boolean\n /**\n * If `true`, the tooltip will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The delay before showing the tooltip.\n *\n * @default 400\n */\n openDelay?: number\n}\n\nexport const useTooltip = (props: UseTooltipProps = {}) => {\n const [\n popperProps,\n {\n closeDelay = 0,\n closeOnClick = true,\n closeOnEsc = true,\n closeOnScroll,\n defaultOpen,\n disabled,\n open: openProp,\n openDelay = 0,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n },\n ] = usePopperProps(props, [\"open\"])\n const describedbyId = useId()\n const triggerRef = useRef<HTMLElement>(null)\n const openTimeout = useRef<NodeJS.Timeout>(undefined)\n const closeTimeout = useRef<NodeJS.Timeout>(undefined)\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const { getPopperProps, getReferenceProps } = usePopper({\n open,\n ...popperProps,\n })\n\n const onForceClose = useCallback(() => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current)\n\n closeTimeout.current = undefined\n }\n\n onClose()\n }, [onClose])\n\n const onDelayOpen = useCallback(() => {\n if (!disabled && !openTimeout.current) {\n if (open) onForceClose()\n\n openTimeout.current = getWindow(triggerRef.current).setTimeout(\n onOpen,\n openDelay,\n )\n }\n }, [disabled, open, onForceClose, onOpen, openDelay])\n\n const onDelayClose = useCallback(() => {\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = getWindow(triggerRef.current).setTimeout(() => {\n onForceClose()\n }, closeDelay)\n }, [closeDelay, onForceClose])\n\n useEventListener(\n () => getDocument(triggerRef.current),\n \"keydown\",\n ({ key }) => {\n if (closeOnEsc && key === \"Escape\") onDelayClose()\n },\n )\n\n useEventListener(\n () => getDocument(triggerRef.current),\n \"scroll\",\n () => {\n if (open && closeOnScroll) onForceClose()\n },\n )\n\n useOutsideClick({\n ref: triggerRef,\n enabled: open,\n handler: () => {\n onDelayClose()\n },\n })\n\n useUnmountEffect(() => {\n clearTimeout(openTimeout.current)\n clearTimeout(closeTimeout.current)\n })\n\n const getTriggerProps: PropGetter<\"button\"> = useCallback(\n ({ \"aria-describedby\": ariaDescribedby, ...props } = {}) => {\n return getReferenceProps({\n ...props,\n ref: mergeRefs(props.ref, triggerRef),\n \"aria-describedby\": cx(\n ariaDescribedby,\n open ? describedbyId : undefined,\n ),\n onBlur: handlerAll(props.onBlur, onDelayClose),\n onClick: handlerAll(\n props.onClick,\n closeOnClick ? onDelayClose : undefined,\n ),\n onFocus: handlerAll(props.onFocus, onDelayOpen),\n onPointerEnter: handlerAll(props.onPointerEnter, (ev) => {\n if (ev.pointerType !== \"touch\") onDelayOpen()\n }),\n onPointerLeave: handlerAll(props.onPointerLeave, (ev) => {\n if (ev.pointerType !== \"touch\") onDelayClose()\n }),\n })\n },\n [\n getReferenceProps,\n describedbyId,\n onDelayOpen,\n open,\n closeOnClick,\n onDelayClose,\n ],\n )\n\n const getPositionerProps: PropGetter = useCallback(\n (props) => {\n return getPopperProps(props)\n },\n [getPopperProps],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props = {}) => ({\n id: describedbyId,\n \"data-close\": dataAttr(!open),\n \"data-open\": dataAttr(open),\n role: \"tooltip\",\n onPointerLeave: handlerAll(props.onPointerLeave, onDelayClose),\n ...props,\n }),\n [describedbyId, onDelayClose, open],\n )\n\n return {\n open,\n getContentProps,\n getPositionerProps,\n getTriggerProps,\n onClose: onForceClose,\n onDelayClose,\n onDelayOpen,\n onOpen,\n }\n}\n\nexport type UseTooltipReturn = ReturnType<typeof useTooltip>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-tooltip.cjs","names":["popperProps","usePopperProps","useDisclosure","usePopper","getTriggerProps: PropGetter<\"button\">","props","mergeRefs","getPositionerProps: PropGetter","tooltipProps: (keyof UseTooltipProps)[]","useSplitProps"],"sources":["../../../../src/components/tooltip/use-tooltip.tsx"],"sourcesContent":["\"use client\"\n\nimport type { PropGetter } from \"../../core\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UsePopperProps } from \"../../hooks/use-popper\"\nimport type { Dict } from \"../../utils\"\nimport { useCallback, useId, useRef } from \"react\"\nimport { useSplitProps } from \"../../core\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport { useEventListener } from \"../../hooks/use-event-listener\"\nimport { useOutsideClick } from \"../../hooks/use-outside-click\"\nimport { popperProps, usePopper, usePopperProps } from \"../../hooks/use-popper\"\nimport {\n cx,\n dataAttr,\n getDocument,\n getWindow,\n handlerAll,\n mergeRefs,\n useUnmountEffect,\n} from \"../../utils\"\n\nexport interface UseTooltipProps\n extends Omit<UseDisclosureProps, \"timing\">, UsePopperProps<\"button\"> {\n /**\n * The delay before hiding the tooltip.\n *\n * @default 100\n */\n closeDelay?: number\n /**\n * If `true`, the tooltip will hide on click.\n *\n * @default true\n */\n closeOnClick?: boolean\n /**\n * If `true`, the tooltip will hide on pressing Esc key.\n *\n * @default true\n */\n closeOnEsc?: boolean\n /**\n * If `true`, the tooltip will hide on scroll.\n *\n * @default false\n */\n closeOnScroll?: boolean\n /**\n * If `true`, the tooltip will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The delay before showing the tooltip.\n *\n * @default 400\n */\n openDelay?: number\n}\n\nexport const useTooltip = (props: UseTooltipProps = {}) => {\n const [\n popperProps,\n {\n closeDelay = 0,\n closeOnClick = true,\n closeOnEsc = true,\n closeOnScroll,\n defaultOpen,\n disabled,\n open: openProp,\n openDelay = 0,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n },\n ] = usePopperProps(props, [\"open\"])\n const describedbyId = useId()\n const triggerRef = useRef<HTMLElement>(null)\n const openTimeout = useRef<NodeJS.Timeout>(undefined)\n const closeTimeout = useRef<NodeJS.Timeout>(undefined)\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const { getPopperProps, getReferenceProps } = usePopper({\n open,\n ...popperProps,\n })\n\n const onForceClose = useCallback(() => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current)\n\n closeTimeout.current = undefined\n }\n\n onClose()\n }, [onClose])\n\n const onDelayOpen = useCallback(() => {\n if (!disabled && !openTimeout.current) {\n if (open) onForceClose()\n\n openTimeout.current = getWindow(triggerRef.current).setTimeout(\n onOpen,\n openDelay,\n )\n }\n }, [disabled, open, onForceClose, onOpen, openDelay])\n\n const onDelayClose = useCallback(() => {\n if (openTimeout.current) {\n clearTimeout(openTimeout.current)\n openTimeout.current = undefined\n }\n\n closeTimeout.current = getWindow(triggerRef.current).setTimeout(() => {\n onForceClose()\n }, closeDelay)\n }, [closeDelay, onForceClose])\n\n useEventListener(\n () => getDocument(triggerRef.current),\n \"keydown\",\n ({ key }) => {\n if (closeOnEsc && key === \"Escape\") onDelayClose()\n },\n )\n\n useEventListener(\n () => getDocument(triggerRef.current),\n \"scroll\",\n () => {\n if (open && closeOnScroll) onForceClose()\n },\n )\n\n useOutsideClick({\n ref: triggerRef,\n enabled: open,\n handler: () => {\n onDelayClose()\n },\n })\n\n useUnmountEffect(() => {\n clearTimeout(openTimeout.current)\n clearTimeout(closeTimeout.current)\n })\n\n const getTriggerProps: PropGetter<\"button\"> = useCallback(\n ({ \"aria-describedby\": ariaDescribedby, ...props } = {}) => {\n return getReferenceProps({\n ...props,\n ref: mergeRefs(props.ref, triggerRef),\n \"aria-describedby\": cx(\n ariaDescribedby,\n open ? describedbyId : undefined,\n ),\n onBlur: handlerAll(props.onBlur, onDelayClose),\n onClick: handlerAll(\n props.onClick,\n closeOnClick ? onDelayClose : undefined,\n ),\n onFocus: handlerAll(props.onFocus, onDelayOpen),\n onPointerEnter: handlerAll(props.onPointerEnter, (ev) => {\n if (ev.pointerType !== \"touch\") onDelayOpen()\n }),\n onPointerLeave: handlerAll(props.onPointerLeave, (ev) => {\n if (ev.pointerType !== \"touch\") onDelayClose()\n }),\n })\n },\n [\n getReferenceProps,\n describedbyId,\n onDelayOpen,\n open,\n closeOnClick,\n onDelayClose,\n ],\n )\n\n const getPositionerProps: PropGetter = useCallback(\n (props) => {\n return getPopperProps(props)\n },\n [getPopperProps],\n )\n\n const getContentProps: PropGetter = useCallback(\n (props = {}) => ({\n id: describedbyId,\n \"data-close\": dataAttr(!open),\n \"data-open\": dataAttr(open),\n role: \"tooltip\",\n onPointerLeave: handlerAll(props.onPointerLeave, onDelayClose),\n ...props,\n }),\n [describedbyId, onDelayClose, open],\n )\n\n return {\n open,\n getContentProps,\n getPositionerProps,\n getTriggerProps,\n onClose: onForceClose,\n onDelayClose,\n onDelayOpen,\n onOpen,\n }\n}\n\nexport type UseTooltipReturn = ReturnType<typeof useTooltip>\n\nexport const tooltipProps: (keyof UseTooltipProps)[] = [\n ...popperProps,\n \"open\",\n \"defaultOpen\",\n \"onOpen\",\n \"onClose\",\n \"closeDelay\",\n \"closeOnClick\",\n \"closeOnEsc\",\n \"closeOnScroll\",\n \"disabled\",\n \"openDelay\",\n]\n\nexport const useTooltipProps = <\n Y extends Dict = Dict,\n M extends keyof UseTooltipProps = keyof UseTooltipProps,\n>(\n props: Y,\n omitKeys?: M[],\n) => {\n return useSplitProps(\n props,\n tooltipProps.filter((key) => !omitKeys?.includes(key as M)),\n ) as unknown as [\n keyof UseTooltipProps extends M\n ? UseTooltipProps\n : Omit<UseTooltipProps, M>,\n Omit<\n Y,\n keyof UseTooltipProps extends M\n ? keyof UseTooltipProps\n : Exclude<keyof UseTooltipProps, M>\n >,\n ]\n}\n"],"mappings":"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"}
|
|
@@ -63,6 +63,7 @@ function createComponent(name, style) {
|
|
|
63
63
|
className ??= require_utils.getClassName(name)(system);
|
|
64
64
|
const contextProps = usePropsContext() ?? {};
|
|
65
65
|
const [, rest] = require_use_component_style.useComponentStyle(withContext$1 ? require_props.mergeProps(contextProps, props)() : props, {
|
|
66
|
+
name,
|
|
66
67
|
className,
|
|
67
68
|
style,
|
|
68
69
|
transferProps
|
|
@@ -72,10 +73,11 @@ function createComponent(name, style) {
|
|
|
72
73
|
function component(el, { name: name$1, className, ...options } = {}) {
|
|
73
74
|
const displayName = require_utils.getDisplayName(name$1, defaultDisplayName);
|
|
74
75
|
const ProxyComponent = createProxyComponent(el, options);
|
|
75
|
-
return function(...superProps) {
|
|
76
|
+
return function(initialProps, ...superProps) {
|
|
76
77
|
return withDisplayName((props) => {
|
|
77
78
|
className = useClassName(name$1, className);
|
|
78
|
-
const
|
|
79
|
+
const computedProps = (0, require_utils_index.utils_exports.isFunction)(initialProps) ? initialProps(props) : require_props.mergeProps(initialProps ?? {}, props)();
|
|
80
|
+
const mergedProps = require_props.chainProps(...superProps)()(computedProps);
|
|
79
81
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProxyComponent, {
|
|
80
82
|
...mergedProps,
|
|
81
83
|
className: (0, require_utils_index.utils_exports.cx)(className, mergedProps.className)
|
|
@@ -137,6 +139,7 @@ function createSlotComponent(rootName, style) {
|
|
|
137
139
|
className = useClassName(slot, className);
|
|
138
140
|
const contextProps = usePropsContext() ?? {};
|
|
139
141
|
const [css, rest] = require_use_component_style.useComponentSlotStyle(withContext$1 ? require_props.mergeProps(contextProps, props)() : props, {
|
|
142
|
+
name: rootName,
|
|
140
143
|
className,
|
|
141
144
|
style,
|
|
142
145
|
slot,
|
|
@@ -161,10 +164,11 @@ function createSlotComponent(rootName, style) {
|
|
|
161
164
|
className,
|
|
162
165
|
slot
|
|
163
166
|
});
|
|
164
|
-
return function(...superProps) {
|
|
167
|
+
return function(initialProps, ...superProps) {
|
|
165
168
|
return withDisplayName((props) => {
|
|
166
169
|
className = useClassName(slot, className);
|
|
167
|
-
const
|
|
170
|
+
const computedProps = (0, require_utils_index.utils_exports.isFunction)(initialProps) ? initialProps(props) : require_props.mergeProps(initialProps ?? {}, props)();
|
|
171
|
+
const mergedProps = require_props.chainProps(...superProps)()(computedProps);
|
|
168
172
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProxyComponent, {
|
|
169
173
|
...mergedProps,
|
|
170
174
|
className: (0, require_utils_index.utils_exports.cx)(className, mergedProps.className)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","name","useComponentStyle","withContext","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","style","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot)) {\n return toCamelCase(toArray(slot).join(\"-\"))\n } else {\n return toCamelCase(slot.name)\n }\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot)) {\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n } else if (isObject(slot)) {\n return toPascalCase(slot.name)\n } else {\n return toPascalCase(slot as string)\n }\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext ? mergeProps(contextProps, props)() : props\n const [, rest] = useComponentStyle(mergedProps, {\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (...superProps: SuperProps<H>[]) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const mergedProps = chainProps<any>(...superProps)()(props)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = Dict,\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext ? mergeProps(contextProps, props)() : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = Dict>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (...superProps: SuperProps<R>[]) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const mergedProps = chainProps(...superProps)()(props)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","name","useComponentStyle","withContext","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","style","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot)) {\n return toCamelCase(toArray(slot).join(\"-\"))\n } else {\n return toCamelCase(slot.name)\n }\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot)) {\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n } else if (isObject(slot)) {\n return toPascalCase(slot.name)\n } else {\n return toPascalCase(slot as string)\n }\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext ? mergeProps(contextProps, props)() : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = Dict,\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext ? mergeProps(contextProps, props)() : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = Dict>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
|
|
@@ -16,14 +16,36 @@ function getSelectorStyle(selectors, style) {
|
|
|
16
16
|
return selectors.reduceRight((prev, key) => key ? { [key]: prev } : prev, style);
|
|
17
17
|
}
|
|
18
18
|
function getStyle(style) {
|
|
19
|
-
return function({ hasSlot = false, selectors = [] }) {
|
|
19
|
+
return function({ name: rootName, hasSlot = false, modifier, selectors = [], value }) {
|
|
20
20
|
if (!style || (0, require_utils_index.utils_exports.isEmptyObject)(style)) return;
|
|
21
21
|
if (hasSlot) return Object.fromEntries(Object.entries(style).map(([name, style$1]) => {
|
|
22
|
-
if (selectors.length)
|
|
23
|
-
|
|
22
|
+
if (selectors.length) {
|
|
23
|
+
if (value && modifier) style$1 = {
|
|
24
|
+
[`--${rootName}-${name}-${modifier}`]: `"${value}"`,
|
|
25
|
+
...style$1
|
|
26
|
+
};
|
|
27
|
+
return [name, getSelectorStyle(selectors, style$1 ?? {})];
|
|
28
|
+
} else {
|
|
29
|
+
if (value && modifier) style$1 = {
|
|
30
|
+
[`--${rootName}-${name}-${modifier}`]: `"${value}"`,
|
|
31
|
+
...style$1
|
|
32
|
+
};
|
|
33
|
+
return [name, style$1];
|
|
34
|
+
}
|
|
24
35
|
}));
|
|
25
|
-
else if (selectors.length)
|
|
26
|
-
|
|
36
|
+
else if (selectors.length) {
|
|
37
|
+
if (value && modifier) style = {
|
|
38
|
+
[`--${rootName}-${modifier}`]: `"${value}"`,
|
|
39
|
+
...style
|
|
40
|
+
};
|
|
41
|
+
return getSelectorStyle(selectors, style);
|
|
42
|
+
} else {
|
|
43
|
+
if (value && modifier) style = {
|
|
44
|
+
[`--${rootName}-${modifier}`]: `"${value}"`,
|
|
45
|
+
...style
|
|
46
|
+
};
|
|
47
|
+
return style;
|
|
48
|
+
}
|
|
27
49
|
};
|
|
28
50
|
}
|
|
29
51
|
function getColorModeStyle(value, mergedStyle) {
|
|
@@ -63,7 +85,10 @@ function getModifierStyle(value, mergedStyle) {
|
|
|
63
85
|
if (!value) return style;
|
|
64
86
|
if ((0, require_utils_index.utils_exports.isArray)(value)) style = getColorModeStyle(value, mergedStyle)(options);
|
|
65
87
|
else if ((0, require_utils_index.utils_exports.isObject)(value)) style = getConditionStyle(value, mergedStyle)(options);
|
|
66
|
-
else style = getStyle(mergedStyle[value])(
|
|
88
|
+
else style = getStyle(mergedStyle[value])({
|
|
89
|
+
...options,
|
|
90
|
+
value
|
|
91
|
+
});
|
|
67
92
|
return style;
|
|
68
93
|
};
|
|
69
94
|
}
|
|
@@ -71,13 +96,21 @@ function getPropStyle(props, propVariants, style = {}) {
|
|
|
71
96
|
const variants = Object.entries(propVariants);
|
|
72
97
|
return function(options) {
|
|
73
98
|
if (!variants.length) return style;
|
|
74
|
-
variants.forEach(([
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
const propStyle = getModifierStyle(
|
|
99
|
+
variants.forEach(([modifier, variants$1]) => {
|
|
100
|
+
const value = props[modifier];
|
|
101
|
+
if (value) {
|
|
102
|
+
const propStyle = getModifierStyle(value, variants$1)({
|
|
103
|
+
modifier,
|
|
104
|
+
value,
|
|
105
|
+
...options
|
|
106
|
+
});
|
|
78
107
|
if (propStyle) style = (0, require_utils_index.utils_exports.merge)(style, wrapStyle("props", propStyle)(options));
|
|
79
108
|
} else if (Object.keys(variants$1).every((key) => (0, require_utils_index.utils_exports.isBooleanish)(key))) {
|
|
80
|
-
const propStyle = getModifierStyle("false", variants$1)(
|
|
109
|
+
const propStyle = getModifierStyle("false", variants$1)({
|
|
110
|
+
modifier,
|
|
111
|
+
value: "true",
|
|
112
|
+
...options
|
|
113
|
+
});
|
|
81
114
|
if (propStyle) style = (0, require_utils_index.utils_exports.merge)(style, wrapStyle("props", propStyle)(options));
|
|
82
115
|
}
|
|
83
116
|
});
|
|
@@ -157,12 +190,13 @@ function mergeDefaultProps(defaultProps, props) {
|
|
|
157
190
|
return prev;
|
|
158
191
|
}, props);
|
|
159
192
|
}
|
|
160
|
-
function useStyle(props, { className: defaultClassName, style: componentStyle, hasSlot, slot, transferProps } = {}) {
|
|
193
|
+
function useStyle(props, { name, className: defaultClassName, style: componentStyle, hasSlot, slot, transferProps } = {}) {
|
|
161
194
|
const system = require_system_provider.useSystem();
|
|
162
195
|
const { getAtRule, wrap } = system.layers;
|
|
163
196
|
const rootColorScheme = require_styled.useColorSchemeContext();
|
|
164
197
|
const options = {
|
|
165
198
|
...system.breakpoints,
|
|
199
|
+
name,
|
|
166
200
|
hasSlot,
|
|
167
201
|
wrap
|
|
168
202
|
};
|
|
@@ -191,11 +225,17 @@ function useStyle(props, { className: defaultClassName, style: componentStyle, h
|
|
|
191
225
|
style = (0, require_utils_index.utils_exports.merge)(style, wrapStyle("base", baseStyle)(options));
|
|
192
226
|
}
|
|
193
227
|
if (sizes && !hasSize) {
|
|
194
|
-
const sizeStyle = (0, require_utils_index.utils_exports.merge)(sizes.base, getModifierStyle(size, sizes)(
|
|
228
|
+
const sizeStyle = (0, require_utils_index.utils_exports.merge)(sizes.base, getModifierStyle(size, sizes)({
|
|
229
|
+
modifier: "size",
|
|
230
|
+
...options
|
|
231
|
+
}));
|
|
195
232
|
style = (0, require_utils_index.utils_exports.merge)(style, wrapStyle("size", sizeStyle)(options));
|
|
196
233
|
}
|
|
197
234
|
if (variants && !hasVariant) {
|
|
198
|
-
const variantStyle = (0, require_utils_index.utils_exports.merge)(variants.base, getModifierStyle(variant, variants)(
|
|
235
|
+
const variantStyle = (0, require_utils_index.utils_exports.merge)(variants.base, getModifierStyle(variant, variants)({
|
|
236
|
+
modifier: "variant",
|
|
237
|
+
...options
|
|
238
|
+
}));
|
|
199
239
|
style = (0, require_utils_index.utils_exports.merge)(style, wrapStyle("variant", variantStyle)(options));
|
|
200
240
|
}
|
|
201
241
|
if (propVariants) style = getPropStyle(mergedProps, propVariants, style)(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-component-style.cjs","names":["style","conditions","getCondition","style: Style<Y> | undefined","variants","temp: (CSSObject | undefined)[]","slot","css","useSystem","useColorSchemeContext","isEqualProps","style: Style<H>","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n selectors?: (string | undefined)[]\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n hasSlot = false,\n selectors = [],\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint])) {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value)) {\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n } else if (isObject(value)) {\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n } else {\n style = getStyle<Y>(mergedStyle[value])(options)\n }\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([name, variants]) => {\n const prop = props[name as keyof typeof props]\n\n if (prop) {\n const propStyle = getModifierStyle<Y>(prop, variants)(options)\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\"false\", variants)(options)\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot as string))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) {\n temp.push(...slot.map((slot) => style[slot]))\n } else if (isObject(slot)) {\n if (isArray(slot.slot)) {\n temp.push(...slot.slot.map((slot) => style[slot]))\n } else {\n temp.push(style[slot.slot])\n }\n } else {\n temp.push(style[slot])\n }\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return !!result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)(options),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(variant, variants)(options),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot) {\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n } else {\n computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n }\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-component-style.cjs","names":["style","conditions","getCondition","style: Style<Y> | undefined","variants","temp: (CSSObject | undefined)[]","slot","css","useSystem","useColorSchemeContext","isEqualProps","style: Style<H>","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint])) {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value)) {\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n } else if (isObject(value)) {\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n } else {\n style = getStyle<Y>(mergedStyle[value])({ ...options, value })\n }\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([modifier, variants]) => {\n const value = props[modifier as keyof typeof props]\n\n if (value) {\n const propStyle = getModifierStyle<Y>(\n value,\n variants,\n )({ modifier, value, ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\n \"false\",\n variants,\n )({ modifier, value: \"true\", ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot as string))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) {\n temp.push(...slot.map((slot) => style[slot]))\n } else if (isObject(slot)) {\n if (isArray(slot.slot)) {\n temp.push(...slot.slot.map((slot) => style[slot]))\n } else {\n temp.push(style[slot.slot])\n }\n } else {\n temp.push(style[slot])\n }\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return !!result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n name?: string\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n name,\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, name, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)({ modifier: \"size\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(\n variant,\n variants,\n )({ modifier: \"variant\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot) {\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n } else {\n computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n }\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
|
|
@@ -4,14 +4,15 @@ const require_utils = require('./utils.cjs');
|
|
|
4
4
|
//#region src/core/css/at-rule.ts
|
|
5
5
|
const generateAtRule = (identifier) => (values, { system }) => {
|
|
6
6
|
if (!(0, require_utils_index.utils_exports.isArray)(values)) return values;
|
|
7
|
-
return values.reduce((prev, { type, name, css, h, height, maxH, maxHeight, maxW, maxWidth, minH, minHeight, minW, minWidth, prefersColorMode, query, w, width, ...rest }) => {
|
|
7
|
+
return values.reduce((prev, { type, name, css, style, h, height, maxH, maxHeight, maxW, maxWidth, minH, minHeight, minW, minWidth, prefersColorMode, query, w, width, ...rest }) => {
|
|
8
8
|
width ??= w;
|
|
9
9
|
minWidth ??= minW;
|
|
10
10
|
maxWidth ??= maxW;
|
|
11
11
|
height ??= h;
|
|
12
12
|
minHeight ??= minH;
|
|
13
13
|
maxHeight ??= maxH;
|
|
14
|
-
if (!query) {
|
|
14
|
+
if (!query) if (style) query = (0, require_utils_index.utils_exports.toArray)(style).map((style$1) => `style(${style$1})`).join(" and ");
|
|
15
|
+
else {
|
|
15
16
|
const resolvedRest = (0, require_utils_index.utils_exports.filterUndefined)({
|
|
16
17
|
height,
|
|
17
18
|
maxHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-rule.cjs","names":["tokenToVar"],"sources":["../../../../src/core/css/at-rule.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Transform } from \"./utils\"\nimport { filterUndefined, isArray, toKebabCase } from \"../../utils\"\nimport { tokenToVar } from \"./utils\"\n\nexport const generateAtRule =\n (identifier: string): Transform =>\n (values, { system }) => {\n if (!isArray(values)) return values\n\n return values.reduce<Dict>(\n (\n prev,\n {\n type,\n name,\n css,\n h,\n height,\n maxH,\n maxHeight,\n maxW,\n maxWidth,\n minH,\n minHeight,\n minW,\n minWidth,\n prefersColorMode,\n query,\n w,\n width,\n ...rest\n },\n ) => {\n width ??= w\n minWidth ??= minW\n maxWidth ??= maxW\n height ??= h\n minHeight ??= minH\n maxHeight ??= maxH\n\n if (!query) {\n const resolvedRest = filterUndefined({\n
|
|
1
|
+
{"version":3,"file":"at-rule.cjs","names":["style","tokenToVar"],"sources":["../../../../src/core/css/at-rule.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Transform } from \"./utils\"\nimport { filterUndefined, isArray, toArray, toKebabCase } from \"../../utils\"\nimport { tokenToVar } from \"./utils\"\n\nexport const generateAtRule =\n (identifier: string): Transform =>\n (values, { system }) => {\n if (!isArray(values)) return values\n\n return values.reduce<Dict>(\n (\n prev,\n {\n type,\n name,\n css,\n style,\n h,\n height,\n maxH,\n maxHeight,\n maxW,\n maxWidth,\n minH,\n minHeight,\n minW,\n minWidth,\n prefersColorMode,\n query,\n w,\n width,\n ...rest\n },\n ) => {\n width ??= w\n minWidth ??= minW\n maxWidth ??= maxW\n height ??= h\n minHeight ??= minH\n maxHeight ??= maxH\n\n if (!query) {\n if (style) {\n query = toArray(style)\n .map((style) => `style(${style})`)\n .join(\" and \")\n } else {\n const resolvedRest = filterUndefined({\n height,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n prefersColorScheme: prefersColorMode,\n width,\n ...rest,\n })\n\n query = Object.entries(resolvedRest)\n .map(([key, value]) => {\n value = tokenToVar(system)(\"sizes\", value)\n\n return `(${toKebabCase(key)}: ${value})`\n })\n .join(\" and \")\n }\n }\n\n const condition = `@${identifier} ${type ?? name ?? \"\"} ${query}`\n\n prev[condition] = css\n\n return prev\n },\n {},\n )\n }\n"],"mappings":";;;;AAKA,MAAa,kBACV,gBACA,QAAQ,EAAE,aAAa;AACtB,KAAI,gDAAS,OAAO,CAAE,QAAO;AAE7B,QAAO,OAAO,QAEV,MACA,EACE,MACA,MACA,KACA,OACA,GACA,QACA,MACA,WACA,MACA,UACA,MACA,WACA,MACA,UACA,kBACA,OACA,GACA,OACA,GAAG,WAEF;AACH,YAAU;AACV,eAAa;AACb,eAAa;AACb,aAAW;AACX,gBAAc;AACd,gBAAc;AAEd,MAAI,CAAC,MACH,KAAI,MACF,wDAAgB,MAAM,CACnB,KAAK,YAAU,SAASA,QAAM,GAAG,CACjC,KAAK,QAAQ;OACX;GACL,MAAM,sEAA+B;IACnC;IACA;IACA;IACA;IACA;IACA,oBAAoB;IACpB;IACA,GAAG;IACJ,CAAC;AAEF,WAAQ,OAAO,QAAQ,aAAa,CACjC,KAAK,CAAC,KAAK,WAAW;AACrB,YAAQC,yBAAW,OAAO,CAAC,SAAS,MAAM;AAE1C,WAAO,uDAAgB,IAAI,CAAC,IAAI,MAAM;KACtC,CACD,KAAK,QAAQ;;EAIpB,MAAM,YAAY,IAAI,WAAW,GAAG,QAAQ,QAAQ,GAAG,GAAG;AAE1D,OAAK,aAAa;AAElB,SAAO;IAET,EAAE,CACH"}
|
|
@@ -26,12 +26,15 @@ function getColor(system) {
|
|
|
26
26
|
if (color?.startsWith("colors.")) color = color.replace("colors.", "");
|
|
27
27
|
if (require_var.isColorScheme(color)) color = require_var.getColorSchemeVar(system)(color);
|
|
28
28
|
else color = require_utils.tokenToVar(system)("colors", color, fallbackColor);
|
|
29
|
-
if (percent && !percent.endsWith("%")) percent = `${percent}%`;
|
|
29
|
+
if (percent && !percent.startsWith("var") && !percent.endsWith("%")) percent = `${percent}%`;
|
|
30
30
|
return !percent ? color : `${color} ${percent}`;
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
function omitPercent(value) {
|
|
34
|
-
if (value
|
|
34
|
+
if (!value) return value;
|
|
35
|
+
if (value.endsWith("%")) return value.replace(/\d{1,3}%$/, "").trim();
|
|
36
|
+
const values = value.trim().match(/[a-z-]+\([^)]*\)|[^\s]+/gi) ?? [];
|
|
37
|
+
if (values.length > 1) return values[0];
|
|
35
38
|
return value;
|
|
36
39
|
}
|
|
37
40
|
function createVariable(value, fallbackValue, properties) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-mix.cjs","names":["methods: { [key: string]: string }","isColorScheme","getColorSchemeVar","tokenToVar","globalValues","getCSSFunction","splitValues"],"sources":["../../../../src/core/css/color-mix.ts"],"sourcesContent":["import type { System } from \"../system\"\nimport type { TransformOptions } from \"./utils\"\nimport { isArray, isString } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\nimport { getCSSFunction, globalValues, splitValues, tokenToVar } from \"./utils\"\n\nconst DEFAULT_METHOD = \"in srgb\"\n\nconst methods: { [key: string]: string } = {\n \"a98-rgb\": \"in a98-rgb\",\n \"display-p3\": \"in display-p3\",\n lab: \"in lab\",\n oklab: \"in oklab\",\n \"prophoto-rgb\": \"in prophoto-rgb\",\n rec2020: \"in rec2020\",\n srgb: \"in srgb\",\n \"srgb-linear\": \"in srgb-linear\",\n xyz: \"in xyz\",\n \"xyz-d50\": \"in xyz-d50\",\n \"xyz-d65\": \"in xyz-d65\",\n}\n\nfunction getColor(system: System) {\n return function (value: string | undefined, fallbackColor?: string) {\n if (!isString(value) || !value) return \"\"\n\n let [color, percent, ...rest] = value.split(\" \").filter(Boolean)\n\n if (rest.length) return value\n\n if (color?.startsWith(\"colors.\")) color = color.replace(\"colors.\", \"\")\n\n if (isColorScheme(color)) {\n color = getColorSchemeVar(system)(color)\n } else {\n color = tokenToVar(system)(\"colors\", color, fallbackColor)\n }\n\n if (percent && !percent.endsWith(\"%\"))
|
|
1
|
+
{"version":3,"file":"color-mix.cjs","names":["methods: { [key: string]: string }","isColorScheme","getColorSchemeVar","tokenToVar","globalValues","getCSSFunction","splitValues"],"sources":["../../../../src/core/css/color-mix.ts"],"sourcesContent":["import type { System } from \"../system\"\nimport type { TransformOptions } from \"./utils\"\nimport { isArray, isString } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\nimport { getCSSFunction, globalValues, splitValues, tokenToVar } from \"./utils\"\n\nconst DEFAULT_METHOD = \"in srgb\"\n\nconst methods: { [key: string]: string } = {\n \"a98-rgb\": \"in a98-rgb\",\n \"display-p3\": \"in display-p3\",\n lab: \"in lab\",\n oklab: \"in oklab\",\n \"prophoto-rgb\": \"in prophoto-rgb\",\n rec2020: \"in rec2020\",\n srgb: \"in srgb\",\n \"srgb-linear\": \"in srgb-linear\",\n xyz: \"in xyz\",\n \"xyz-d50\": \"in xyz-d50\",\n \"xyz-d65\": \"in xyz-d65\",\n}\n\nfunction getColor(system: System) {\n return function (value: string | undefined, fallbackColor?: string) {\n if (!isString(value) || !value) return \"\"\n\n let [color, percent, ...rest] = value.split(\" \").filter(Boolean)\n\n if (rest.length) return value\n\n if (color?.startsWith(\"colors.\")) color = color.replace(\"colors.\", \"\")\n\n if (isColorScheme(color)) {\n color = getColorSchemeVar(system)(color)\n } else {\n color = tokenToVar(system)(\"colors\", color, fallbackColor)\n }\n\n if (percent && !percent.startsWith(\"var\") && !percent.endsWith(\"%\"))\n percent = `${percent}%`\n\n return !percent ? color : `${color} ${percent}`\n }\n}\n\nfunction omitPercent(value?: string) {\n if (!value) return value\n\n if (value.endsWith(\"%\")) return value.replace(/\\d{1,3}%$/, \"\").trim()\n\n const values = value.trim().match(/[a-z-]+\\([^)]*\\)|[^\\s]+/gi) ?? []\n\n if (values.length > 1) return values[0]\n\n return value\n}\n\nfunction createVariable(\n value: string,\n fallbackValue?: string,\n properties?: string[],\n) {\n if (!properties) return value\n\n const key =\n \"--mix-\" + (isArray(properties) ? properties.join(\"-\") : properties)\n\n const result = { [key]: value }\n\n properties.forEach((property) => {\n result[property] = fallbackValue\n ? `var(${key}, ${fallbackValue})`\n : `var(${key})`\n })\n\n return result\n}\n\nexport function colorMix(\n value: any,\n { fallback, properties, system }: TransformOptions,\n) {\n if (value == null || globalValues.has(value)) return value\n\n if (isString(value) && value.includes(\"/\")) {\n const [color, percent] = value.split(\"/\")\n\n value = `transparentize(${color}, ${percent})`\n }\n\n const { type, values } = getCSSFunction(value)\n\n if (!values) return getColor(system)(value, fallback)\n\n switch (type) {\n case \"mix\":\n case \"color-mix\": {\n let [color2, color1, method] = splitValues(values).reverse()\n\n if (method) {\n method = method in methods ? methods[method] : method\n } else {\n method = DEFAULT_METHOD\n }\n\n color1 = getColor(system)(color1, fallback)\n color2 = getColor(system)(color2, fallback)\n\n return createVariable(\n `color-mix(${method}` +\n (color1 ? `, ${color1}` : \"\") +\n (color2 ? `, ${color2}` : \"\") +\n \")\",\n omitPercent(color1),\n properties,\n )\n }\n\n case \"tint\":\n case \"shade\":\n case \"transparentize\": {\n const [color, percent] = splitValues(values)\n\n const color1 = getColor(system)(\n percent ? `${color} ${percent}` : color,\n fallback,\n )\n const color2 =\n type === \"transparentize\"\n ? \"transparent\"\n : type === \"tint\"\n ? \"#fff\"\n : \"#000\"\n\n return createVariable(\n `color-mix(${DEFAULT_METHOD}, ${color1}, ${color2})`,\n omitPercent(color1),\n properties,\n )\n }\n\n case \"tone\": {\n const [color, tone] = splitValues(values)\n\n const color1 = getColor(system)(color, fallback)\n\n if (!tone) return color1\n\n let ratio = parseInt(tone) || 500\n\n if (ratio < 50 && 950 < ratio) ratio = 500\n if (ratio === 500) return color1\n\n const color2 = ratio < 500 ? \"#fff\" : \"#000\"\n const percent = `${100 - (Math.abs(ratio - 500) * 2) / 10}%`\n\n return createVariable(\n `color-mix(${DEFAULT_METHOD}, ${color1} ${percent}, ${color2})`,\n omitPercent(color1),\n properties,\n )\n }\n\n default: {\n return value\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -7,8 +7,10 @@ const toGroup = (selector) => [
|
|
|
7
7
|
].map((prefix) => `${prefix}${selector.slice(1)} &`).join(", ");
|
|
8
8
|
const toPeer = (selector) => [...["[data-peer]", ".peer"].flatMap((prefix) => [`&:has(~ ${prefix}${selector.slice(1)})`, `${prefix}${selector.slice(1)} ~ &`]), ...["[data-peer]", ".peer"].flatMap((prefix) => [`&:has(~ ${prefix} *${selector.slice(1)})`, `${prefix}:has(*${selector.slice(1)}) ~ &`])].join(", ");
|
|
9
9
|
const attributes = {
|
|
10
|
+
_inactive: "&[data-inactive]",
|
|
10
11
|
_accept: "&[data-accept]",
|
|
11
12
|
_between: "&[data-between]",
|
|
13
|
+
_center: "&:is([data-center], [data-group-center])",
|
|
12
14
|
_complete: "&[data-complete]",
|
|
13
15
|
_current: "&:is([aria-current], [data-current]):not([aria-current='false'])",
|
|
14
16
|
_dark: ".dark &:not([data-mode]), [data-mode=dark] &:not([data-mode]), &[data-mode=dark]",
|
|
@@ -31,6 +33,7 @@ const attributes = {
|
|
|
31
33
|
_notFallback: "&:not([data-fallback])",
|
|
32
34
|
_notSelected: "&:not([data-selected]):not([aria-selected=true])",
|
|
33
35
|
_numeric: "&[data-numeric]",
|
|
36
|
+
_open: "&:is([open], [data-open])",
|
|
34
37
|
_pressed: "&:is([data-pressed], [aria-pressed=true])",
|
|
35
38
|
_range: "&:is([data-range])",
|
|
36
39
|
_reject: "&[data-reject]",
|
|
@@ -49,6 +52,7 @@ const pseudoElements = {
|
|
|
49
52
|
_before: "&::before",
|
|
50
53
|
_cue: "&::cue",
|
|
51
54
|
_cueRegion: "&::cue-region",
|
|
55
|
+
_detailsContent: "&::details-content",
|
|
52
56
|
_fileSelector: "&::file-selector-button",
|
|
53
57
|
_firstLetter: "&::first-letter",
|
|
54
58
|
_firstLine: "&::first-line",
|
|
@@ -113,6 +117,7 @@ const pseudoClasses = {
|
|
|
113
117
|
_picture: "&:picture-in-picture",
|
|
114
118
|
_placeholderShown: "&:placeholder-shown",
|
|
115
119
|
_playing: "&:is(:playing, [data-playing])",
|
|
120
|
+
_popoverOpen: "&:popover-open",
|
|
116
121
|
_readWrite: "&:is(:read-write, [data-read-write])",
|
|
117
122
|
_required: "&:is(:required, [required])",
|
|
118
123
|
_target: "&:is(:target, [data-target])",
|
|
@@ -152,6 +157,7 @@ const groupAttributes = {
|
|
|
152
157
|
_groupInvalid: toGroup(pseudoClasses._invalid),
|
|
153
158
|
_groupLoaded: toGroup(attributes._loaded),
|
|
154
159
|
_groupLoading: toGroup(attributes._loading),
|
|
160
|
+
_groupOpen: toGroup(attributes._open),
|
|
155
161
|
_groupOptional: toGroup(pseudoClasses._optional),
|
|
156
162
|
_groupPlaceholderShown: toGroup(pseudoClasses._placeholderShown),
|
|
157
163
|
_groupPressed: toGroup(attributes._pressed),
|