@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-component.js","names":["createContext","name","withContext","style"],"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.js","names":["createContext","name","withContext","style"],"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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"}
|
|
@@ -15,14 +15,36 @@ function getSelectorStyle(selectors, style) {
|
|
|
15
15
|
return selectors.reduceRight((prev, key) => key ? { [key]: prev } : prev, style);
|
|
16
16
|
}
|
|
17
17
|
function getStyle(style) {
|
|
18
|
-
return function({ hasSlot = false, selectors = [] }) {
|
|
18
|
+
return function({ name: rootName, hasSlot = false, modifier, selectors = [], value }) {
|
|
19
19
|
if (!style || (0, utils_exports.isEmptyObject)(style)) return;
|
|
20
20
|
if (hasSlot) return Object.fromEntries(Object.entries(style).map(([name, style$1]) => {
|
|
21
|
-
if (selectors.length)
|
|
22
|
-
|
|
21
|
+
if (selectors.length) {
|
|
22
|
+
if (value && modifier) style$1 = {
|
|
23
|
+
[`--${rootName}-${name}-${modifier}`]: `"${value}"`,
|
|
24
|
+
...style$1
|
|
25
|
+
};
|
|
26
|
+
return [name, getSelectorStyle(selectors, style$1 ?? {})];
|
|
27
|
+
} else {
|
|
28
|
+
if (value && modifier) style$1 = {
|
|
29
|
+
[`--${rootName}-${name}-${modifier}`]: `"${value}"`,
|
|
30
|
+
...style$1
|
|
31
|
+
};
|
|
32
|
+
return [name, style$1];
|
|
33
|
+
}
|
|
23
34
|
}));
|
|
24
|
-
else if (selectors.length)
|
|
25
|
-
|
|
35
|
+
else if (selectors.length) {
|
|
36
|
+
if (value && modifier) style = {
|
|
37
|
+
[`--${rootName}-${modifier}`]: `"${value}"`,
|
|
38
|
+
...style
|
|
39
|
+
};
|
|
40
|
+
return getSelectorStyle(selectors, style);
|
|
41
|
+
} else {
|
|
42
|
+
if (value && modifier) style = {
|
|
43
|
+
[`--${rootName}-${modifier}`]: `"${value}"`,
|
|
44
|
+
...style
|
|
45
|
+
};
|
|
46
|
+
return style;
|
|
47
|
+
}
|
|
26
48
|
};
|
|
27
49
|
}
|
|
28
50
|
function getColorModeStyle(value, mergedStyle) {
|
|
@@ -62,7 +84,10 @@ function getModifierStyle(value, mergedStyle) {
|
|
|
62
84
|
if (!value) return style;
|
|
63
85
|
if ((0, utils_exports.isArray)(value)) style = getColorModeStyle(value, mergedStyle)(options);
|
|
64
86
|
else if ((0, utils_exports.isObject)(value)) style = getConditionStyle(value, mergedStyle)(options);
|
|
65
|
-
else style = getStyle(mergedStyle[value])(
|
|
87
|
+
else style = getStyle(mergedStyle[value])({
|
|
88
|
+
...options,
|
|
89
|
+
value
|
|
90
|
+
});
|
|
66
91
|
return style;
|
|
67
92
|
};
|
|
68
93
|
}
|
|
@@ -70,13 +95,21 @@ function getPropStyle(props, propVariants, style = {}) {
|
|
|
70
95
|
const variants = Object.entries(propVariants);
|
|
71
96
|
return function(options) {
|
|
72
97
|
if (!variants.length) return style;
|
|
73
|
-
variants.forEach(([
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
76
|
-
const propStyle = getModifierStyle(
|
|
98
|
+
variants.forEach(([modifier, variants$1]) => {
|
|
99
|
+
const value = props[modifier];
|
|
100
|
+
if (value) {
|
|
101
|
+
const propStyle = getModifierStyle(value, variants$1)({
|
|
102
|
+
modifier,
|
|
103
|
+
value,
|
|
104
|
+
...options
|
|
105
|
+
});
|
|
77
106
|
if (propStyle) style = (0, utils_exports.merge)(style, wrapStyle("props", propStyle)(options));
|
|
78
107
|
} else if (Object.keys(variants$1).every((key) => (0, utils_exports.isBooleanish)(key))) {
|
|
79
|
-
const propStyle = getModifierStyle("false", variants$1)(
|
|
108
|
+
const propStyle = getModifierStyle("false", variants$1)({
|
|
109
|
+
modifier,
|
|
110
|
+
value: "true",
|
|
111
|
+
...options
|
|
112
|
+
});
|
|
80
113
|
if (propStyle) style = (0, utils_exports.merge)(style, wrapStyle("props", propStyle)(options));
|
|
81
114
|
}
|
|
82
115
|
});
|
|
@@ -156,12 +189,13 @@ function mergeDefaultProps(defaultProps, props) {
|
|
|
156
189
|
return prev;
|
|
157
190
|
}, props);
|
|
158
191
|
}
|
|
159
|
-
function useStyle(props, { className: defaultClassName, style: componentStyle, hasSlot, slot, transferProps } = {}) {
|
|
192
|
+
function useStyle(props, { name, className: defaultClassName, style: componentStyle, hasSlot, slot, transferProps } = {}) {
|
|
160
193
|
const system = useSystem();
|
|
161
194
|
const { getAtRule, wrap } = system.layers;
|
|
162
195
|
const rootColorScheme = useColorSchemeContext();
|
|
163
196
|
const options = {
|
|
164
197
|
...system.breakpoints,
|
|
198
|
+
name,
|
|
165
199
|
hasSlot,
|
|
166
200
|
wrap
|
|
167
201
|
};
|
|
@@ -190,11 +224,17 @@ function useStyle(props, { className: defaultClassName, style: componentStyle, h
|
|
|
190
224
|
style = (0, utils_exports.merge)(style, wrapStyle("base", baseStyle)(options));
|
|
191
225
|
}
|
|
192
226
|
if (sizes && !hasSize) {
|
|
193
|
-
const sizeStyle = (0, utils_exports.merge)(sizes.base, getModifierStyle(size, sizes)(
|
|
227
|
+
const sizeStyle = (0, utils_exports.merge)(sizes.base, getModifierStyle(size, sizes)({
|
|
228
|
+
modifier: "size",
|
|
229
|
+
...options
|
|
230
|
+
}));
|
|
194
231
|
style = (0, utils_exports.merge)(style, wrapStyle("size", sizeStyle)(options));
|
|
195
232
|
}
|
|
196
233
|
if (variants && !hasVariant) {
|
|
197
|
-
const variantStyle = (0, utils_exports.merge)(variants.base, getModifierStyle(variant, variants)(
|
|
234
|
+
const variantStyle = (0, utils_exports.merge)(variants.base, getModifierStyle(variant, variants)({
|
|
235
|
+
modifier: "variant",
|
|
236
|
+
...options
|
|
237
|
+
}));
|
|
198
238
|
style = (0, utils_exports.merge)(style, wrapStyle("variant", variantStyle)(options));
|
|
199
239
|
}
|
|
200
240
|
if (propVariants) style = getPropStyle(mergedProps, propVariants, style)(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-component-style.js","names":["style","style: Style<Y> | undefined","variants","conditions","temp: (CSSObject | undefined)[]","slot","css","style: Style<H>"],"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.js","names":["style","style: Style<Y> | undefined","variants","conditions","temp: (CSSObject | undefined)[]","slot","css","style: Style<H>"],"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 @@ import { tokenToVar } from "./utils.js";
|
|
|
4
4
|
//#region src/core/css/at-rule.ts
|
|
5
5
|
const generateAtRule = (identifier) => (values, { system }) => {
|
|
6
6
|
if (!(0, 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, utils_exports.toArray)(style).map((style$1) => `style(${style$1})`).join(" and ");
|
|
15
|
+
else {
|
|
15
16
|
const resolvedRest = (0, utils_exports.filterUndefined)({
|
|
16
17
|
height,
|
|
17
18
|
maxHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-rule.js","names":[],"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.js","names":["style"],"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,4BAAS,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,oCAAgB,MAAM,CACnB,KAAK,YAAU,SAASA,QAAM,GAAG,CACjC,KAAK,QAAQ;OACX;GACL,MAAM,kDAA+B;IACnC;IACA;IACA;IACA;IACA;IACA,oBAAoB;IACpB;IACA,GAAG;IACJ,CAAC;AAEF,WAAQ,OAAO,QAAQ,aAAa,CACjC,KAAK,CAAC,KAAK,WAAW;AACrB,YAAQ,WAAW,OAAO,CAAC,SAAS,MAAM;AAE1C,WAAO,mCAAgB,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 (isColorScheme(color)) color = getColorSchemeVar(system)(color);
|
|
28
28
|
else color = 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.js","names":["methods: { [key: string]: string }"],"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.js","names":["methods: { [key: string]: string }"],"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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"}
|
|
@@ -6,8 +6,10 @@ const toGroup = (selector) => [
|
|
|
6
6
|
].map((prefix) => `${prefix}${selector.slice(1)} &`).join(", ");
|
|
7
7
|
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(", ");
|
|
8
8
|
const attributes = {
|
|
9
|
+
_inactive: "&[data-inactive]",
|
|
9
10
|
_accept: "&[data-accept]",
|
|
10
11
|
_between: "&[data-between]",
|
|
12
|
+
_center: "&:is([data-center], [data-group-center])",
|
|
11
13
|
_complete: "&[data-complete]",
|
|
12
14
|
_current: "&:is([aria-current], [data-current]):not([aria-current='false'])",
|
|
13
15
|
_dark: ".dark &:not([data-mode]), [data-mode=dark] &:not([data-mode]), &[data-mode=dark]",
|
|
@@ -30,6 +32,7 @@ const attributes = {
|
|
|
30
32
|
_notFallback: "&:not([data-fallback])",
|
|
31
33
|
_notSelected: "&:not([data-selected]):not([aria-selected=true])",
|
|
32
34
|
_numeric: "&[data-numeric]",
|
|
35
|
+
_open: "&:is([open], [data-open])",
|
|
33
36
|
_pressed: "&:is([data-pressed], [aria-pressed=true])",
|
|
34
37
|
_range: "&:is([data-range])",
|
|
35
38
|
_reject: "&[data-reject]",
|
|
@@ -48,6 +51,7 @@ const pseudoElements = {
|
|
|
48
51
|
_before: "&::before",
|
|
49
52
|
_cue: "&::cue",
|
|
50
53
|
_cueRegion: "&::cue-region",
|
|
54
|
+
_detailsContent: "&::details-content",
|
|
51
55
|
_fileSelector: "&::file-selector-button",
|
|
52
56
|
_firstLetter: "&::first-letter",
|
|
53
57
|
_firstLine: "&::first-line",
|
|
@@ -112,6 +116,7 @@ const pseudoClasses = {
|
|
|
112
116
|
_picture: "&:picture-in-picture",
|
|
113
117
|
_placeholderShown: "&:placeholder-shown",
|
|
114
118
|
_playing: "&:is(:playing, [data-playing])",
|
|
119
|
+
_popoverOpen: "&:popover-open",
|
|
115
120
|
_readWrite: "&:is(:read-write, [data-read-write])",
|
|
116
121
|
_required: "&:is(:required, [required])",
|
|
117
122
|
_target: "&:is(:target, [data-target])",
|
|
@@ -151,6 +156,7 @@ const groupAttributes = {
|
|
|
151
156
|
_groupInvalid: toGroup(pseudoClasses._invalid),
|
|
152
157
|
_groupLoaded: toGroup(attributes._loaded),
|
|
153
158
|
_groupLoading: toGroup(attributes._loading),
|
|
159
|
+
_groupOpen: toGroup(attributes._open),
|
|
154
160
|
_groupOptional: toGroup(pseudoClasses._optional),
|
|
155
161
|
_groupPlaceholderShown: toGroup(pseudoClasses._placeholderShown),
|
|
156
162
|
_groupPressed: toGroup(attributes._pressed),
|