@yamada-ui/react 2.1.3-dev-20260315020004 → 2.1.3-dev-20260315080238
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/airy/airy.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs +1 -1
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
- package/dist/cjs/components/chart/chart.cjs +1 -1
- package/dist/cjs/components/chart/chart.cjs.map +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/cjs/components/dropzone/dropzone.cjs.map +1 -1
- package/dist/cjs/components/flip/flip.cjs.map +1 -1
- package/dist/cjs/components/native-popover/use-native-popover.cjs +1 -1
- package/dist/cjs/components/native-popover/use-native-popover.cjs.map +1 -1
- package/dist/cjs/components/popover/use-popover.cjs +1 -1
- package/dist/cjs/components/popover/use-popover.cjs.map +1 -1
- package/dist/cjs/components/rotate/rotate.cjs.map +1 -1
- package/dist/cjs/components/snacks/snacks.cjs +1 -1
- package/dist/cjs/components/snacks/snacks.cjs.map +1 -1
- package/dist/cjs/components/snacks/use-snacks.cjs.map +1 -1
- package/dist/cjs/components/stack/stack.cjs +1 -1
- package/dist/cjs/components/stack/stack.cjs.map +1 -1
- package/dist/cjs/core/components/use-component-style.cjs +1 -1
- package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
- package/dist/cjs/core/system/color-mode-provider.cjs +1 -1
- package/dist/cjs/core/system/color-mode-provider.cjs.map +1 -1
- package/dist/cjs/core/system/styled.cjs +1 -1
- package/dist/cjs/core/system/styled.cjs.map +1 -1
- package/dist/cjs/core/system/theme-provider.cjs +1 -1
- package/dist/cjs/core/system/theme-provider.cjs.map +1 -1
- package/dist/cjs/core/system/var.cjs +2 -2
- package/dist/cjs/core/system/var.cjs.map +1 -1
- package/dist/cjs/utils/effect.cjs +1 -1
- package/dist/cjs/utils/effect.cjs.map +1 -1
- package/dist/esm/components/airy/airy.js.map +1 -1
- package/dist/esm/components/autocomplete/use-autocomplete.js +1 -1
- package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
- package/dist/esm/components/chart/chart.js +1 -1
- package/dist/esm/components/chart/chart.js.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/esm/components/dropzone/dropzone.js.map +1 -1
- package/dist/esm/components/flip/flip.js.map +1 -1
- package/dist/esm/components/native-popover/use-native-popover.js +1 -1
- package/dist/esm/components/native-popover/use-native-popover.js.map +1 -1
- package/dist/esm/components/popover/use-popover.js +1 -1
- package/dist/esm/components/popover/use-popover.js.map +1 -1
- package/dist/esm/components/rotate/rotate.js.map +1 -1
- package/dist/esm/components/snacks/snacks.js +1 -1
- package/dist/esm/components/snacks/snacks.js.map +1 -1
- package/dist/esm/components/snacks/use-snacks.js.map +1 -1
- package/dist/esm/components/stack/stack.js +1 -1
- package/dist/esm/components/stack/stack.js.map +1 -1
- package/dist/esm/core/components/use-component-style.js +1 -1
- package/dist/esm/core/components/use-component-style.js.map +1 -1
- package/dist/esm/core/system/color-mode-provider.js +1 -1
- package/dist/esm/core/system/color-mode-provider.js.map +1 -1
- package/dist/esm/core/system/styled.js +1 -1
- package/dist/esm/core/system/styled.js.map +1 -1
- package/dist/esm/core/system/theme-provider.js +1 -1
- package/dist/esm/core/system/theme-provider.js.map +1 -1
- package/dist/esm/core/system/var.js +2 -2
- package/dist/esm/core/system/var.js.map +1 -1
- package/dist/esm/utils/effect.js +1 -1
- package/dist/esm/utils/effect.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +2 -2
- package/dist/types/components/accordion/accordion.style.d.ts +1 -1
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/airy/airy.d.ts +3 -3
- 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 +1 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
- package/dist/types/components/avatar/avatar.d.ts +5 -5
- 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 +2 -2
- package/dist/types/components/chart/bar-chart.d.ts +2 -2
- package/dist/types/components/chart/chart.d.ts +5 -5
- package/dist/types/components/chart/composed-chart.d.ts +2 -2
- package/dist/types/components/chart/donut-chart.d.ts +2 -2
- package/dist/types/components/chart/pie-chart.d.ts +2 -2
- package/dist/types/components/chart/radar-chart.d.ts +2 -2
- package/dist/types/components/chart/use-chart.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox.d.ts +5 -5
- package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
- 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 +1 -1
- 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/color-selector.style.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/data-list/data-list.style.d.ts +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +2 -2
- package/dist/types/components/date-picker/date-picker.style.d.ts +1 -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/dropzone/dropzone.d.ts +4 -5
- package/dist/types/components/editable/editable.d.ts +4 -4
- 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/empty-state/empty-state.style.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +3 -3
- package/dist/types/components/field/use-field-props.d.ts +4 -4
- package/dist/types/components/fieldset/fieldset.d.ts +3 -3
- 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/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 +5 -5
- package/dist/types/components/flip/flip.style.d.ts +1 -1
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +3 -3
- package/dist/types/components/format/format-byte.d.ts +4 -4
- package/dist/types/components/format/format-date-time.d.ts +4 -4
- 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 +5 -5
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +4 -4
- 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/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/list/list.style.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/native-accordion/native-accordion.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.style.d.ts +2 -2
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
- package/dist/types/components/native-popover/native-popover.d.ts +2 -2
- package/dist/types/components/native-select/native-select.d.ts +2 -2
- package/dist/types/components/native-table/native-table.d.ts +4 -4
- 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 +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/pagination/pagination.style.d.ts +1 -1
- 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/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
- 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/use-pin-input.d.ts +7 -7
- package/dist/types/components/popover/popover.d.ts +2 -2
- package/dist/types/components/progress/progress.d.ts +4 -4
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/qr-code.d.ts +2 -2
- package/dist/types/components/radio/radio.d.ts +5 -5
- package/dist/types/components/radio/radio.style.d.ts +1 -1
- package/dist/types/components/radio/use-radio-group.d.ts +2 -2
- package/dist/types/components/radio-card/radio-card.d.ts +5 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
- 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/reorder.style.d.ts +1 -1
- package/dist/types/components/reorder/use-reorder.d.ts +4 -4
- package/dist/types/components/resizable/resizable.d.ts +2 -2
- package/dist/types/components/resizable/resizable.style.d.ts +2 -2
- package/dist/types/components/resizable/use-resizable.d.ts +2 -2
- 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 +3 -3
- 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 +1 -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/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/status/status.style.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/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +2 -2
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +4 -4
- package/dist/types/components/timeline/timeline.style.d.ts +2 -2
- package/dist/types/components/toggle/toggle.d.ts +5 -5
- 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/tooltip.d.ts +2 -2
- 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 +7 -7
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/storage-script.d.ts +3 -3
- package/dist/types/core/system/styled.d.ts +2 -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/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 +2 -2
- package/package.json +3 -3
|
@@ -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 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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"}
|
|
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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"}
|
|
@@ -17,7 +17,7 @@ const ColorModeContext = createContext({
|
|
|
17
17
|
internalColorMode: "light",
|
|
18
18
|
toggleColorMode: utils_exports.noop
|
|
19
19
|
});
|
|
20
|
-
const ColorModeProvider = ({ children, colorMode: forcedColorMode, config: { defaultColorMode = "light", disableTransitionOnChange = true } = {}, cookie, storage =
|
|
20
|
+
const ColorModeProvider = ({ children, colorMode: forcedColorMode, config: { defaultColorMode = "light", disableTransitionOnChange = true } = {}, cookie, storage = cookie ? "cookie" : "localStorage", storageKey = COLOR_MODE_STORAGE_KEY }) => {
|
|
21
21
|
const storageManager = useMemo(() => createStorageManager(storage, storageKey, defaultColorMode, cookie), [
|
|
22
22
|
cookie,
|
|
23
23
|
defaultColorMode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-mode-provider.js","names":["noop","ColorModeProvider: FC<ColorModeProviderProps>","systemColorMode","colorMode","internalColorMode"],"sources":["../../../../src/core/system/color-mode-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { ColorMode, ColorModeWithSystem, ThemeConfig } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { isEmptyObject, noop } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY } from \"../constant\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { getPreventTransition } from \"./theme-provider\"\nimport { useSystemColorMode } from \"./use-system-color-mode\"\n\ninterface ColorModeContext {\n colorMode: ColorMode\n internalColorMode: ColorModeWithSystem\n changeColorMode: (colorMode: ColorModeWithSystem) => void\n toggleColorMode: () => void\n forced?: boolean\n}\n\nexport const ColorModeContext = createContext<ColorModeContext>({\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n})\n\nexport interface ColorModeProviderProps extends PropsWithChildren {\n /**\n * The forced color mode.\n */\n colorMode?: ColorMode\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * The key of the value saved in storage.\n *\n * @default 'color-mode'\n */\n storageKey?: string\n}\n\nexport const ColorModeProvider: FC<ColorModeProviderProps> = ({\n children,\n colorMode: forcedColorMode,\n config: {\n defaultColorMode = \"light\" as ColorModeWithSystem,\n disableTransitionOnChange = true,\n } = {},\n cookie,\n storage =
|
|
1
|
+
{"version":3,"file":"color-mode-provider.js","names":["noop","ColorModeProvider: FC<ColorModeProviderProps>","systemColorMode","colorMode","internalColorMode"],"sources":["../../../../src/core/system/color-mode-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { ColorMode, ColorModeWithSystem, ThemeConfig } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { isEmptyObject, noop } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY } from \"../constant\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { getPreventTransition } from \"./theme-provider\"\nimport { useSystemColorMode } from \"./use-system-color-mode\"\n\ninterface ColorModeContext {\n colorMode: ColorMode\n internalColorMode: ColorModeWithSystem\n changeColorMode: (colorMode: ColorModeWithSystem) => void\n toggleColorMode: () => void\n forced?: boolean\n}\n\nexport const ColorModeContext = createContext<ColorModeContext>({\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n})\n\nexport interface ColorModeProviderProps extends PropsWithChildren {\n /**\n * The forced color mode.\n */\n colorMode?: ColorMode\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * The key of the value saved in storage.\n *\n * @default 'color-mode'\n */\n storageKey?: string\n}\n\nexport const ColorModeProvider: FC<ColorModeProviderProps> = ({\n children,\n colorMode: forcedColorMode,\n config: {\n defaultColorMode = \"light\" as ColorModeWithSystem,\n disableTransitionOnChange = true,\n } = {},\n cookie,\n storage = cookie ? \"cookie\" : \"localStorage\",\n storageKey = COLOR_MODE_STORAGE_KEY,\n}) => {\n const storageManager = useMemo(\n () =>\n createStorageManager<ColorModeWithSystem, ColorMode>(\n storage,\n storageKey,\n defaultColorMode,\n cookie,\n ),\n [cookie, defaultColorMode, storage, storageKey],\n )\n const environment = useEnvironment()\n const { getDocument } = environment\n const [internalColorMode, setInternalColorMode] =\n useState<ColorModeWithSystem>(storageManager.get())\n const { getSystemColorMode, systemColorMode } = useSystemColorMode({\n callback: (systemColorMode) => {\n if (internalColorMode !== \"system\") return\n\n setClassName(systemColorMode === \"dark\")\n setDataset(systemColorMode)\n },\n defaultColorMode: storageManager.default(\n defaultColorMode === \"dark\" ? \"dark\" : \"light\",\n ),\n })\n const colorMode =\n internalColorMode === \"system\" ? systemColorMode : internalColorMode\n\n const setDataset = useCallback(\n (colorMode: ColorMode) => {\n const doc = getDocument()\n\n if (!doc) return\n\n const cleanup = disableTransitionOnChange\n ? getPreventTransition(environment)\n : undefined\n\n doc.documentElement.dataset.mode = colorMode\n doc.documentElement.style.colorScheme = colorMode\n\n cleanup?.()\n },\n [disableTransitionOnChange, environment, getDocument],\n )\n\n const setClassName = useCallback(\n (isDark: boolean) => {\n const doc = getDocument()\n\n if (!doc) return\n\n doc.body.classList.add(isDark ? \"dark\" : \"light\")\n doc.body.classList.remove(isDark ? \"light\" : \"dark\")\n },\n [getDocument],\n )\n\n const changeColorMode = useCallback(\n (internalColorMode: ColorModeWithSystem) => {\n const colorMode =\n internalColorMode === \"system\"\n ? getSystemColorMode()\n : internalColorMode\n\n setInternalColorMode(internalColorMode)\n setClassName(colorMode === \"dark\")\n setDataset(colorMode)\n\n storageManager.set(internalColorMode)\n },\n [storageManager, getSystemColorMode, setClassName, setDataset],\n )\n\n const toggleColorMode = useCallback(() => {\n changeColorMode(colorMode === \"dark\" ? \"light\" : \"dark\")\n }, [changeColorMode, colorMode])\n\n useEffect(() => {\n const internalColorMode = storageManager.get()\n\n changeColorMode(internalColorMode)\n }, [changeColorMode, storageManager])\n\n const context = useMemo(\n () => ({\n changeColorMode: forcedColorMode ? noop : changeColorMode,\n colorMode: forcedColorMode ?? colorMode,\n forced: forcedColorMode !== undefined,\n internalColorMode,\n toggleColorMode: forcedColorMode ? noop : toggleColorMode,\n }),\n [\n forcedColorMode,\n colorMode,\n internalColorMode,\n changeColorMode,\n toggleColorMode,\n ],\n )\n\n return <ColorModeContext value={context}>{children}</ColorModeContext>\n}\n\n/**\n * `useColorMode` is a custom hook that returns the current color mode.\n *\n * @see https://yamada-ui.com/docs/hooks/use-color-mode\n */\nexport const useColorMode = (): ColorModeContext => {\n const context = use(ColorModeContext)\n\n if (isEmptyObject(context)) {\n return {\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n }\n } else {\n return context\n }\n}\n"],"mappings":";;;;;;;;;;;;AA4BA,MAAa,mBAAmB,cAAgC;CAC9D,iBAAiBA;CACjB,WAAW;CACX,QAAQ;CACR,mBAAmB;CACnB,iBAAiBA;CAClB,CAAC;AA+BF,MAAaC,qBAAiD,EAC5D,UACA,WAAW,iBACX,QAAQ,EACN,mBAAmB,SACnB,4BAA4B,SAC1B,EAAE,EACN,QACA,UAAU,SAAS,WAAW,gBAC9B,aAAa,6BACT;CACJ,MAAM,iBAAiB,cAEnB,qBACE,SACA,YACA,kBACA,OACD,EACH;EAAC;EAAQ;EAAkB;EAAS;EAAW,CAChD;CACD,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,gBAAgB;CACxB,MAAM,CAAC,mBAAmB,wBACxB,SAA8B,eAAe,KAAK,CAAC;CACrD,MAAM,EAAE,oBAAoB,oBAAoB,mBAAmB;EACjE,WAAW,sBAAoB;AAC7B,OAAI,sBAAsB,SAAU;AAEpC,gBAAaC,sBAAoB,OAAO;AACxC,cAAWA,kBAAgB;;EAE7B,kBAAkB,eAAe,QAC/B,qBAAqB,SAAS,SAAS,QACxC;EACF,CAAC;CACF,MAAM,YACJ,sBAAsB,WAAW,kBAAkB;CAErD,MAAM,aAAa,aAChB,gBAAyB;EACxB,MAAM,MAAM,aAAa;AAEzB,MAAI,CAAC,IAAK;EAEV,MAAM,UAAU,4BACZ,qBAAqB,YAAY,GACjC;AAEJ,MAAI,gBAAgB,QAAQ,OAAOC;AACnC,MAAI,gBAAgB,MAAM,cAAcA;AAExC,aAAW;IAEb;EAAC;EAA2B;EAAa;EAAY,CACtD;CAED,MAAM,eAAe,aAClB,WAAoB;EACnB,MAAM,MAAM,aAAa;AAEzB,MAAI,CAAC,IAAK;AAEV,MAAI,KAAK,UAAU,IAAI,SAAS,SAAS,QAAQ;AACjD,MAAI,KAAK,UAAU,OAAO,SAAS,UAAU,OAAO;IAEtD,CAAC,YAAY,CACd;CAED,MAAM,kBAAkB,aACrB,wBAA2C;EAC1C,MAAMA,cACJC,wBAAsB,WAClB,oBAAoB,GACpBA;AAEN,uBAAqBA,oBAAkB;AACvC,eAAaD,gBAAc,OAAO;AAClC,aAAWA,YAAU;AAErB,iBAAe,IAAIC,oBAAkB;IAEvC;EAAC;EAAgB;EAAoB;EAAc;EAAW,CAC/D;CAED,MAAM,kBAAkB,kBAAkB;AACxC,kBAAgB,cAAc,SAAS,UAAU,OAAO;IACvD,CAAC,iBAAiB,UAAU,CAAC;AAEhC,iBAAgB;AAGd,kBAF0B,eAAe,KAAK,CAEZ;IACjC,CAAC,iBAAiB,eAAe,CAAC;AAmBrC,QAAO,oBAAC;EAAiB,OAjBT,eACP;GACL,iBAAiB,kBAAkBJ,qBAAO;GAC1C,WAAW,mBAAmB;GAC9B,QAAQ,oBAAoB;GAC5B;GACA,iBAAiB,kBAAkBA,qBAAO;GAC3C,GACD;GACE;GACA;GACA;GACA;GACA;GACD,CACF;EAEyC;GAA4B;;;;;;;AAQxE,MAAa,qBAAuC;CAClD,MAAM,UAAU,IAAI,iBAAiB;AAErC,sCAAkB,QAAQ,CACxB,QAAO;EACL,iBAAiBA;EACjB,WAAW;EACX,QAAQ;EACR,mBAAmB;EACnB,iBAAiBA;EAClB;KAED,QAAO"}
|
|
@@ -91,7 +91,7 @@ function createStyled(el, { name, base, compounds, props, sizes, variants, defau
|
|
|
91
91
|
theme
|
|
92
92
|
]);
|
|
93
93
|
const serialized = useMemo(() => serializeStyles(interpolations, cache.registered), [interpolations, cache.registered]);
|
|
94
|
-
className = (0, utils_exports.cx)(className,
|
|
94
|
+
className = (0, utils_exports.cx)(className, serialized.styles ? `${cache.key}-${serialized.name}` : void 0);
|
|
95
95
|
className = (0, utils_exports.cx)(className, options.target);
|
|
96
96
|
if (!className) className = void 0;
|
|
97
97
|
const mergedProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","names":["Insertion: FC<InsertionProps>","createContext","props","className: string | undefined","forwardProps","css","colorScheme"],"sources":["../../../../src/core/system/styled.tsx"],"sourcesContent":["\"use client\"\n\nimport type { EmotionCache, SerializedStyles } from \"@emotion/utils\"\nimport type { FC } from \"react\"\nimport type { Dict } from \"../../utils\"\nimport type { As, ShouldForwardProp, StyledComponent } from \"../components\"\nimport type { CSSModifierObject, CSSPropObject } from \"../css\"\nimport type {\n ColorScheme,\n ComponentStyle,\n System,\n UsageTheme,\n} from \"./index.types\"\nimport { withEmotionCache } from \"@emotion/react\"\nimport { serializeStyles } from \"@emotion/serialize\"\nimport { useInsertionEffectAlwaysWithSyncFallback } from \"@emotion/use-insertion-effect-with-fallbacks\"\nimport {\n getRegisteredStyles,\n insertStyles,\n registerStyles,\n} from \"@emotion/utils\"\nimport { useMemo, useRef } from \"react\"\nimport isEqual from \"react-fast-compare\"\nimport { Slot } from \"../../components/slot\"\nimport {\n createContext,\n createdDom,\n cx,\n filterEmpty,\n filterUndefined,\n isString,\n isUndefined,\n runIfFn,\n splitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport {\n createShouldForwardProp,\n getDisplayName,\n useComponentStyle,\n} from \"../components\"\nimport { css } from \"../css\"\nimport { useSystem } from \"./system-provider\"\nimport { useTheme } from \"./theme-provider\"\n\ninterface InsertionProps {\n cache: EmotionCache\n htmlTag: boolean\n serialized: SerializedStyles\n}\n\nconst Insertion: FC<InsertionProps> = ({ cache, htmlTag, serialized }) => {\n registerStyles(cache, serialized, htmlTag)\n\n const style = useInsertionEffectAlwaysWithSyncFallback(() =>\n insertStyles(cache, serialized, htmlTag),\n )\n\n if (!createdDom() && !isUndefined(style)) {\n let className = serialized.name\n let next = serialized.next\n\n while (next !== undefined) {\n className = cx(className, next.name) ?? \"\"\n next = next.next\n }\n\n return (\n <style\n data-emotion={cx(cache.key, className)}\n dangerouslySetInnerHTML={{ __html: style }}\n nonce={cache.sheet.nonce}\n />\n )\n } else {\n return null\n }\n}\n\nconst useSplitProps = <Y extends Dict, M extends Dict>(\n props: Dict,\n shouldForwardProp?: ShouldForwardProp,\n) => {\n const propsRef = useRef(props)\n\n if (!isEqual(propsRef.current, props)) propsRef.current = props\n\n const computedProps = propsRef.current\n\n return useMemo(\n () => splitObject<Y, M>(computedProps, shouldForwardProp),\n [computedProps, shouldForwardProp],\n )\n}\n\nexport const [ColorSchemeContext, useColorSchemeContext] =\n createContext<ColorScheme>({\n name: \"ColorSchemeContext\",\n strict: false,\n })\n\nexport interface StyledOptions<\n Y extends CSSPropObject = CSSPropObject,\n M extends CSSModifierObject = CSSModifierObject,\n D extends CSSModifierObject = CSSModifierObject,\n H extends number | string | symbol = string,\n> extends Omit<ComponentStyle<Y, M, D>, \"className\"> {\n className?: ((system: System) => string) | string\n displayName?: string\n forwardAsChild?: boolean\n name?: string\n shouldForwardProp?: boolean | ShouldForwardProp\n target?: string\n forwardProps?: string[]\n transferProps?: H[]\n}\n\nexport function createStyled<\n Y extends As,\n M extends object = {},\n D extends CSSPropObject = CSSPropObject,\n H extends CSSModifierObject = CSSModifierObject,\n R extends CSSModifierObject = CSSModifierObject,\n>(\n el: Y,\n {\n name,\n base,\n compounds,\n props,\n sizes,\n variants,\n defaultProps,\n transferProps,\n ...options\n }: StyledOptions<D, H, R, keyof M> = {},\n) {\n const displayName = options.displayName ?? getDisplayName(name, \"\")\n const shouldForwardProp = !options.shouldForwardProp\n ? createShouldForwardProp(options.forwardProps)\n : undefined\n const style = filterUndefined({\n base,\n compounds,\n props,\n sizes,\n variants,\n defaultProps,\n })\n\n const StyledComponent = withEmotionCache<Dict>(function (\n { as: Component = el, asChild, children, ...props },\n cache,\n ref,\n ) {\n let className: string | undefined = \"\"\n\n const system = useSystem()\n const { theme } = useTheme<UsageTheme>()\n const componentStyleOptions = {\n name,\n className: system.utils.getClassName(\n runIfFn(options.className, system) ?? toKebabCase(name ?? \"\"),\n ),\n style,\n transferProps,\n }\n const registered = useRef<string[]>([])\n const htmlTag = isString(Component)\n const forwardAsChild =\n options.forwardAsChild || options.forwardProps?.includes(\"asChild\")\n const [omittedProps, styleProps] = useSplitProps(props, shouldForwardProp)\n const [, rest] = useComponentStyle<any, {}>(\n omittedProps,\n componentStyleOptions,\n )\n const [cssArray, colorScheme, forwardProps] = useMemo(() => {\n const { css, colorScheme, ...forwardProps } = rest\n\n return [toArray(css), colorScheme, forwardProps]\n }, [rest])\n\n styleProps.colorScheme ??= colorScheme\n\n if (forwardProps.className)\n className = getRegisteredStyles(\n cache.registered,\n registered.current,\n forwardProps.className,\n ).trim()\n\n const interpolations = useMemo(\n () => [\n ...registered.current,\n ...filterEmpty([...cssArray, styleProps].map(css(system, theme))),\n ],\n [cssArray, system, styleProps, theme],\n )\n\n const serialized = useMemo(\n () => serializeStyles(interpolations, cache.registered),\n [interpolations, cache.registered],\n )\n\n className = cx(\n className,\n
|
|
1
|
+
{"version":3,"file":"styled.js","names":["Insertion: FC<InsertionProps>","createContext","props","className: string | undefined","forwardProps","css","colorScheme"],"sources":["../../../../src/core/system/styled.tsx"],"sourcesContent":["\"use client\"\n\nimport type { EmotionCache, SerializedStyles } from \"@emotion/utils\"\nimport type { FC } from \"react\"\nimport type { Dict } from \"../../utils\"\nimport type { As, ShouldForwardProp, StyledComponent } from \"../components\"\nimport type { CSSModifierObject, CSSPropObject } from \"../css\"\nimport type {\n ColorScheme,\n ComponentStyle,\n System,\n UsageTheme,\n} from \"./index.types\"\nimport { withEmotionCache } from \"@emotion/react\"\nimport { serializeStyles } from \"@emotion/serialize\"\nimport { useInsertionEffectAlwaysWithSyncFallback } from \"@emotion/use-insertion-effect-with-fallbacks\"\nimport {\n getRegisteredStyles,\n insertStyles,\n registerStyles,\n} from \"@emotion/utils\"\nimport { useMemo, useRef } from \"react\"\nimport isEqual from \"react-fast-compare\"\nimport { Slot } from \"../../components/slot\"\nimport {\n createContext,\n createdDom,\n cx,\n filterEmpty,\n filterUndefined,\n isString,\n isUndefined,\n runIfFn,\n splitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport {\n createShouldForwardProp,\n getDisplayName,\n useComponentStyle,\n} from \"../components\"\nimport { css } from \"../css\"\nimport { useSystem } from \"./system-provider\"\nimport { useTheme } from \"./theme-provider\"\n\ninterface InsertionProps {\n cache: EmotionCache\n htmlTag: boolean\n serialized: SerializedStyles\n}\n\nconst Insertion: FC<InsertionProps> = ({ cache, htmlTag, serialized }) => {\n registerStyles(cache, serialized, htmlTag)\n\n const style = useInsertionEffectAlwaysWithSyncFallback(() =>\n insertStyles(cache, serialized, htmlTag),\n )\n\n if (!createdDom() && !isUndefined(style)) {\n let className = serialized.name\n let next = serialized.next\n\n while (next !== undefined) {\n className = cx(className, next.name) ?? \"\"\n next = next.next\n }\n\n return (\n <style\n data-emotion={cx(cache.key, className)}\n dangerouslySetInnerHTML={{ __html: style }}\n nonce={cache.sheet.nonce}\n />\n )\n } else {\n return null\n }\n}\n\nconst useSplitProps = <Y extends Dict, M extends Dict>(\n props: Dict,\n shouldForwardProp?: ShouldForwardProp,\n) => {\n const propsRef = useRef(props)\n\n if (!isEqual(propsRef.current, props)) propsRef.current = props\n\n const computedProps = propsRef.current\n\n return useMemo(\n () => splitObject<Y, M>(computedProps, shouldForwardProp),\n [computedProps, shouldForwardProp],\n )\n}\n\nexport const [ColorSchemeContext, useColorSchemeContext] =\n createContext<ColorScheme>({\n name: \"ColorSchemeContext\",\n strict: false,\n })\n\nexport interface StyledOptions<\n Y extends CSSPropObject = CSSPropObject,\n M extends CSSModifierObject = CSSModifierObject,\n D extends CSSModifierObject = CSSModifierObject,\n H extends number | string | symbol = string,\n> extends Omit<ComponentStyle<Y, M, D>, \"className\"> {\n className?: ((system: System) => string) | string\n displayName?: string\n forwardAsChild?: boolean\n name?: string\n shouldForwardProp?: boolean | ShouldForwardProp\n target?: string\n forwardProps?: string[]\n transferProps?: H[]\n}\n\nexport function createStyled<\n Y extends As,\n M extends object = {},\n D extends CSSPropObject = CSSPropObject,\n H extends CSSModifierObject = CSSModifierObject,\n R extends CSSModifierObject = CSSModifierObject,\n>(\n el: Y,\n {\n name,\n base,\n compounds,\n props,\n sizes,\n variants,\n defaultProps,\n transferProps,\n ...options\n }: StyledOptions<D, H, R, keyof M> = {},\n) {\n const displayName = options.displayName ?? getDisplayName(name, \"\")\n const shouldForwardProp = !options.shouldForwardProp\n ? createShouldForwardProp(options.forwardProps)\n : undefined\n const style = filterUndefined({\n base,\n compounds,\n props,\n sizes,\n variants,\n defaultProps,\n })\n\n const StyledComponent = withEmotionCache<Dict>(function (\n { as: Component = el, asChild, children, ...props },\n cache,\n ref,\n ) {\n let className: string | undefined = \"\"\n\n const system = useSystem()\n const { theme } = useTheme<UsageTheme>()\n const componentStyleOptions = {\n name,\n className: system.utils.getClassName(\n runIfFn(options.className, system) ?? toKebabCase(name ?? \"\"),\n ),\n style,\n transferProps,\n }\n const registered = useRef<string[]>([])\n const htmlTag = isString(Component)\n const forwardAsChild =\n options.forwardAsChild || options.forwardProps?.includes(\"asChild\")\n const [omittedProps, styleProps] = useSplitProps(props, shouldForwardProp)\n const [, rest] = useComponentStyle<any, {}>(\n omittedProps,\n componentStyleOptions,\n )\n const [cssArray, colorScheme, forwardProps] = useMemo(() => {\n const { css, colorScheme, ...forwardProps } = rest\n\n return [toArray(css), colorScheme, forwardProps]\n }, [rest])\n\n styleProps.colorScheme ??= colorScheme\n\n if (forwardProps.className)\n className = getRegisteredStyles(\n cache.registered,\n registered.current,\n forwardProps.className,\n ).trim()\n\n const interpolations = useMemo(\n () => [\n ...registered.current,\n ...filterEmpty([...cssArray, styleProps].map(css(system, theme))),\n ],\n [cssArray, system, styleProps, theme],\n )\n\n const serialized = useMemo(\n () => serializeStyles(interpolations, cache.registered),\n [interpolations, cache.registered],\n )\n\n className = cx(\n className,\n serialized.styles ? `${cache.key}-${serialized.name}` : undefined,\n )\n className = cx(className, options.target)\n\n if (!className) className = undefined\n\n const mergedProps = { ...forwardProps, className, children }\n\n return (\n <ColorSchemeContext value={styleProps.colorScheme}>\n <Insertion cache={cache} htmlTag={htmlTag} serialized={serialized} />\n\n {asChild && !forwardAsChild ? (\n <Slot ref={ref} {...mergedProps} />\n ) : (\n <Component ref={ref} {...mergedProps} />\n )}\n </ColorSchemeContext>\n )\n }) as StyledComponent<Y, M>\n\n StyledComponent.displayName = displayName || \"StyledComponent\"\n\n return StyledComponent\n}\n"],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ const getPreventTransition = (environment) => {
|
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
const ThemeProvider$1 = ({ children, config, cookie, storage =
|
|
34
|
+
const ThemeProvider$1 = ({ children, config, cookie, storage = cookie ? "cookie" : "localStorage", storageKey = THEME_SCHEME_STORAGE_KEY, theme = {} }) => {
|
|
35
35
|
const { defaultThemeScheme = "base", disableTransitionOnChange } = config ?? {};
|
|
36
36
|
const storageManager = useMemo(() => createStorageManager(storage, storageKey, defaultThemeScheme, cookie), [
|
|
37
37
|
cookie,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-provider.js","names":["css","ThemeProvider: FC<ThemeProviderProps>","changeThemeScheme: ChangeThemeScheme","themeScheme","EmotionThemeProvider","GlobalStyles: FC"],"sources":["../../../../src/core/system/theme-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ThemeProviderProps as EmotionThemeProviderProps } from \"@emotion/react\"\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { Environment } from \"./environment-provider\"\nimport type {\n ChangeThemeScheme,\n StyledTheme,\n Theme,\n ThemeConfig,\n ThemeScheme,\n UsageTheme,\n} from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n ThemeProvider as EmotionThemeProvider,\n Global,\n ThemeContext,\n} from \"@emotion/react\"\nimport { use, useCallback, useEffect, useMemo, useState } from \"react\"\nimport { isEmptyObject, isObject, isUndefined, merge } from \"../../utils\"\nimport { THEME_SCHEME_STORAGE_KEY } from \"../constant\"\nimport { css } from \"../css\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { useSystem } from \"./system-provider\"\n\nexport const getPreventTransition = (environment: Environment) => {\n const { getDocument, getWindow } = environment\n const win = getWindow()\n const doc = getDocument()\n\n if (!win || !doc) return\n\n const css = doc.createElement(\"style\")\n\n const node = doc.createTextNode(\n `*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n )\n\n css.appendChild(node)\n\n doc.head.appendChild(css)\n\n return () => {\n const forceReflow = () => win.getComputedStyle(doc.body)\n\n forceReflow()\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n document.head.removeChild(css)\n })\n })\n }\n}\n\nexport interface ThemeProviderProps\n extends\n PropsWithChildren,\n Omit<EmotionThemeProviderProps, \"children\" | \"theme\"> {\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * Key of value saved in storage.\n * By default, it is saved to `local storage`.\n */\n storageKey?: string\n /**\n * The theme of the yamada ui.\n */\n theme?: UsageTheme\n}\n\nexport const ThemeProvider: FC<ThemeProviderProps> = ({\n children,\n config,\n cookie,\n storage =
|
|
1
|
+
{"version":3,"file":"theme-provider.js","names":["css","ThemeProvider: FC<ThemeProviderProps>","changeThemeScheme: ChangeThemeScheme","themeScheme","EmotionThemeProvider","GlobalStyles: FC"],"sources":["../../../../src/core/system/theme-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ThemeProviderProps as EmotionThemeProviderProps } from \"@emotion/react\"\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { Environment } from \"./environment-provider\"\nimport type {\n ChangeThemeScheme,\n StyledTheme,\n Theme,\n ThemeConfig,\n ThemeScheme,\n UsageTheme,\n} from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n ThemeProvider as EmotionThemeProvider,\n Global,\n ThemeContext,\n} from \"@emotion/react\"\nimport { use, useCallback, useEffect, useMemo, useState } from \"react\"\nimport { isEmptyObject, isObject, isUndefined, merge } from \"../../utils\"\nimport { THEME_SCHEME_STORAGE_KEY } from \"../constant\"\nimport { css } from \"../css\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { useSystem } from \"./system-provider\"\n\nexport const getPreventTransition = (environment: Environment) => {\n const { getDocument, getWindow } = environment\n const win = getWindow()\n const doc = getDocument()\n\n if (!win || !doc) return\n\n const css = doc.createElement(\"style\")\n\n const node = doc.createTextNode(\n `*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n )\n\n css.appendChild(node)\n\n doc.head.appendChild(css)\n\n return () => {\n const forceReflow = () => win.getComputedStyle(doc.body)\n\n forceReflow()\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n document.head.removeChild(css)\n })\n })\n }\n}\n\nexport interface ThemeProviderProps\n extends\n PropsWithChildren,\n Omit<EmotionThemeProviderProps, \"children\" | \"theme\"> {\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * Key of value saved in storage.\n * By default, it is saved to `local storage`.\n */\n storageKey?: string\n /**\n * The theme of the yamada ui.\n */\n theme?: UsageTheme\n}\n\nexport const ThemeProvider: FC<ThemeProviderProps> = ({\n children,\n config,\n cookie,\n storage = cookie ? \"cookie\" : \"localStorage\",\n storageKey = THEME_SCHEME_STORAGE_KEY,\n theme = {},\n}) => {\n const { defaultThemeScheme = \"base\", disableTransitionOnChange } =\n config ?? {}\n const storageManager = useMemo(\n () => createStorageManager(storage, storageKey, defaultThemeScheme, cookie),\n [cookie, defaultThemeScheme, storage, storageKey],\n )\n const environment = useEnvironment()\n const [themeScheme, setThemeScheme] = useState<ThemeScheme>(\n storageManager.get(),\n )\n\n const changeThemeScheme: ChangeThemeScheme = useCallback(\n (themeScheme) => {\n const { getDocument } = environment\n const doc = getDocument()\n\n const cleanup = disableTransitionOnChange\n ? getPreventTransition(environment)\n : undefined\n\n if (doc) doc.documentElement.dataset.theme = themeScheme\n\n cleanup?.()\n\n setThemeScheme(themeScheme)\n\n storageManager.set(themeScheme)\n },\n [disableTransitionOnChange, environment, storageManager],\n )\n\n useEffect(() => {\n const themeScheme = storageManager.get()\n\n changeThemeScheme(themeScheme)\n }, [changeThemeScheme, storageManager])\n\n return (\n <EmotionThemeProvider theme={{ changeThemeScheme, themeScheme, ...theme }}>\n <GlobalStyles />\n\n {children}\n </EmotionThemeProvider>\n )\n}\n\nexport const GlobalStyles: FC = () => {\n const system = useSystem()\n const { theme } = useTheme<UsageTheme>()\n const { atRule, wrap } = system.layers\n\n const resetStyle = useMemo(() => {\n const style = theme.styles?.resetStyle\n\n if (!style || isEmptyObject(style)) return undefined\n\n return css(system, theme)(style)\n }, [system, theme])\n\n const globalStyle = useMemo(() => {\n const style = theme.styles?.globalStyle\n\n if (!style || isEmptyObject(style)) return undefined\n\n return css(system, theme)(style)\n }, [system, theme])\n\n const cssVars = useMemo(() => {\n return { \":host, :root, [data-mode]\": system.cssVars }\n }, [system])\n\n return (\n <Global\n styles={[\n atRule,\n wrap(\"tokens\", cssVars),\n wrap(\"reset\", resetStyle),\n wrap(\"global\", globalStyle),\n ]}\n />\n )\n}\n\n/**\n * `useTheme` is a custom hook that returns a function for retrieving and switching themes.\n *\n * @see https://yamada-ui.com/docs/hooks/use-theme\n */\nexport const useTheme = <Y extends UsageTheme = Theme>() => {\n const internalTheme = use(ThemeContext) as StyledTheme<Y>\n\n const theme = useMemo(() => {\n const { themeScheme } = internalTheme\n\n if (isUndefined(themeScheme) || themeScheme === \"base\") return internalTheme\n\n const nestedTheme =\n \"themeSchemes\" in internalTheme && isObject(internalTheme.themeSchemes)\n ? internalTheme.themeSchemes[themeScheme as string]\n : undefined\n\n if (!nestedTheme) return internalTheme\n\n return merge<StyledTheme<Y>>(internalTheme, nestedTheme)\n }, [internalTheme])\n\n const value = useMemo(() => {\n const { changeThemeScheme, themeScheme } = internalTheme\n\n return {\n changeThemeScheme,\n internalTheme,\n theme,\n themeScheme,\n }\n }, [theme, internalTheme])\n\n return value\n}\n"],"mappings":";;;;;;;;;;;;;;AA2BA,MAAa,wBAAwB,gBAA6B;CAChE,MAAM,EAAE,aAAa,cAAc;CACnC,MAAM,MAAM,WAAW;CACvB,MAAM,MAAM,aAAa;AAEzB,KAAI,CAAC,OAAO,CAAC,IAAK;CAElB,MAAMA,QAAM,IAAI,cAAc,QAAQ;CAEtC,MAAM,OAAO,IAAI,eACf,2JACD;AAED,OAAI,YAAY,KAAK;AAErB,KAAI,KAAK,YAAYA,MAAI;AAEzB,cAAa;EACX,MAAM,oBAAoB,IAAI,iBAAiB,IAAI,KAAK;AAExD,eAAa;AAEb,8BAA4B;AAC1B,+BAA4B;AAC1B,aAAS,KAAK,YAAYA,MAAI;KAC9B;IACF;;;AAmCN,MAAaC,mBAAyC,EACpD,UACA,QACA,QACA,UAAU,SAAS,WAAW,gBAC9B,aAAa,0BACb,QAAQ,EAAE,OACN;CACJ,MAAM,EAAE,qBAAqB,QAAQ,8BACnC,UAAU,EAAE;CACd,MAAM,iBAAiB,cACf,qBAAqB,SAAS,YAAY,oBAAoB,OAAO,EAC3E;EAAC;EAAQ;EAAoB;EAAS;EAAW,CAClD;CACD,MAAM,cAAc,gBAAgB;CACpC,MAAM,CAAC,aAAa,kBAAkB,SACpC,eAAe,KAAK,CACrB;CAED,MAAMC,oBAAuC,aAC1C,kBAAgB;EACf,MAAM,EAAE,gBAAgB;EACxB,MAAM,MAAM,aAAa;EAEzB,MAAM,UAAU,4BACZ,qBAAqB,YAAY,GACjC;AAEJ,MAAI,IAAK,KAAI,gBAAgB,QAAQ,QAAQC;AAE7C,aAAW;AAEX,iBAAeA,cAAY;AAE3B,iBAAe,IAAIA,cAAY;IAEjC;EAAC;EAA2B;EAAa;EAAe,CACzD;AAED,iBAAgB;AAGd,oBAFoB,eAAe,KAAK,CAEV;IAC7B,CAAC,mBAAmB,eAAe,CAAC;AAEvC,QACE,qBAACC;EAAqB,OAAO;GAAE;GAAmB;GAAa,GAAG;GAAO;aACvE,oBAAC,iBAAe,EAEf;GACoB;;AAI3B,MAAaC,qBAAyB;CACpC,MAAM,SAAS,WAAW;CAC1B,MAAM,EAAE,UAAU,UAAsB;CACxC,MAAM,EAAE,QAAQ,SAAS,OAAO;CAEhC,MAAM,aAAa,cAAc;EAC/B,MAAM,QAAQ,MAAM,QAAQ;AAE5B,MAAI,CAAC,0CAAuB,MAAM,CAAE,QAAO;AAE3C,SAAO,IAAI,QAAQ,MAAM,CAAC,MAAM;IAC/B,CAAC,QAAQ,MAAM,CAAC;CAEnB,MAAM,cAAc,cAAc;EAChC,MAAM,QAAQ,MAAM,QAAQ;AAE5B,MAAI,CAAC,0CAAuB,MAAM,CAAE,QAAO;AAE3C,SAAO,IAAI,QAAQ,MAAM,CAAC,MAAM;IAC/B,CAAC,QAAQ,MAAM,CAAC;AAMnB,QACE,oBAAC,UACC,QAAQ;EACN;EACA,KAAK,UARK,cAAc;AAC5B,UAAO,EAAE,6BAA6B,OAAO,SAAS;KACrD,CAAC,OAAO,CAAC,CAMiB;EACvB,KAAK,SAAS,WAAW;EACzB,KAAK,UAAU,YAAY;EAC5B,GACD;;;;;;;AASN,MAAa,iBAA+C;CAC1D,MAAM,gBAAgB,IAAI,aAAa;CAEvC,MAAM,QAAQ,cAAc;EAC1B,MAAM,EAAE,gBAAgB;AAExB,qCAAgB,YAAY,IAAI,gBAAgB,OAAQ,QAAO;EAE/D,MAAM,cACJ,kBAAkB,6CAA0B,cAAc,aAAa,GACnE,cAAc,aAAa,eAC3B;AAEN,MAAI,CAAC,YAAa,QAAO;AAEzB,kCAA6B,eAAe,YAAY;IACvD,CAAC,cAAc,CAAC;AAanB,QAXc,cAAc;EAC1B,MAAM,EAAE,mBAAmB,gBAAgB;AAE3C,SAAO;GACL;GACA;GACA;GACA;GACD;IACA,CAAC,OAAO,cAAc,CAAC"}
|
|
@@ -66,8 +66,8 @@ function createVars(prefix = DEFAULT_VAR_PREFIX, theme, breakpoints) {
|
|
|
66
66
|
};
|
|
67
67
|
function getRelatedReference(token, value = "") {
|
|
68
68
|
const relatedToken = [token.split(".")[0], value].join(".");
|
|
69
|
-
if (token === relatedToken) return [, value];
|
|
70
|
-
if (!(tokens[relatedToken] ?? prevTokens?.[relatedToken])) return [, value];
|
|
69
|
+
if (token === relatedToken) return [void 0, value];
|
|
70
|
+
if (!(tokens[relatedToken] ?? prevTokens?.[relatedToken])) return [void 0, value];
|
|
71
71
|
const { reference, variable } = tokenToVar(relatedToken);
|
|
72
72
|
return [variable, reference];
|
|
73
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"var.js","names":["value","system: System","calc","computedValue: DefineThemeValue","resolvedValue: DefineThemeValue | Dict","cssMap: CSSMap","cssVars: Dict","objOrArray","result: [string, any][]"],"sources":["../../../../src/core/system/var.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { CSSProperties, StyleValueWithCondition } from \"../css\"\nimport type {\n CSSMap,\n DefineThemeValue,\n System,\n ThemeToken,\n UsageTheme,\n VariableTokens,\n VariableValue,\n} from \"../system\"\nimport type { Breakpoints } from \"./breakpoint\"\nimport {\n calc,\n escape,\n isArray,\n isNull,\n isObject,\n isString,\n isUndefined,\n merge,\n replaceObject,\n} from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport {\n animation,\n colorMix,\n conditions,\n css,\n getStyle,\n gradient,\n injectKeyframes,\n isCSSFunction,\n} from \"../css\"\nimport { defaultSystem } from \"../system\"\n\ntype ParsedValue = number | string | undefined\n\ninterface Variable {\n reference: string\n variable: string\n}\n\nexport function transformInterpolation(\n value: any,\n callback: (value: string, fallbackValue?: string) => string,\n) {\n if (isString(value)) {\n return value.replace(/\\{(.*?)\\}/g, (_, value) => {\n const [token, fallbackValue] = value.split(/,(.+)/)\n\n return callback(token.trim(), fallbackValue?.trim())\n })\n } else {\n return value\n }\n}\n\nexport function getVar(token: string, fallback?: string) {\n if (!token.startsWith(\"--\")) token = `--${token}`\n\n token = token.replace(/[^-_a-zA-Z0-9]/g, \"\")\n\n return fallback ? `var(${token}, ${fallback})` : `var(${token})`\n}\n\nexport function getVarName(system: System) {\n return function (token: string) {\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n return `--${prefix}-${token}`\n }\n}\n\nexport function getColorSchemeVar(system: System) {\n return function (value: any, fallback?: string) {\n if (!isString(value)) return value\n\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n const [, token] = value.split(\".\")\n\n return getVar(`${prefix}-colorScheme-${token}`, fallback)\n }\n}\n\nconst isGradient = (token: string) => token.startsWith(\"gradients.\")\nconst isKeyframes = (token: string) => token.startsWith(\"keyframes.\")\nconst isAnimation = (token: string) => token.startsWith(\"animations.\")\nconst isSpace = (token: string) => token.startsWith(\"spaces.\")\nconst isColor = (token: string) => token.startsWith(\"colors.\")\nexport const isColorScheme = (token: any) =>\n isString(token) && token.startsWith(\"colorScheme.\") && !token.includes(\"/\")\n\nexport function createVars(\n prefix: string = DEFAULT_VAR_PREFIX,\n theme: UsageTheme,\n breakpoints: Breakpoints,\n) {\n return function (tokens: VariableTokens) {\n const { getQuery, isResponsive } = breakpoints\n\n function tokenToVar(token: string): Variable {\n token = token.replace(/\\./g, \"-\")\n token = token.replace(/\\//g, \"\\\\/\")\n\n const variable = `--${[prefix, escape(token, \"-\")].filter(Boolean).join(\"-\")}`\n const reference = `var(${variable})`\n\n return { reference, variable }\n }\n\n return function (\n cssMap: CSSMap = {},\n cssVars: Dict = {},\n prevTokens?: VariableTokens,\n ): { cssMap: CSSMap; cssVars: Dict } {\n const system: System = { ...defaultSystem, cssMap }\n const options = { css, system, theme }\n\n function getRelatedReference(\n token: string,\n value: ParsedValue = \"\",\n ): [ParsedValue, Exclude<ParsedValue, undefined>] {\n const relatedToken = [token.split(\".\")[0], value].join(\".\")\n\n if (token === relatedToken) return [, value]\n\n const targetToken = tokens[relatedToken] ?? prevTokens?.[relatedToken]\n\n if (!targetToken) return [, value]\n\n const { reference, variable } = tokenToVar(relatedToken)\n\n return [variable, reference]\n }\n\n function valueToVar(value: any) {\n return transformInterpolation(value, (value, fallbackValue) => {\n if (value.includes(\"colors.\") || value.includes(\"colorScheme.\")) {\n if (isColorScheme(value)) return getColorSchemeVar(system)(value)\n\n return colorMix(value, { fallback: fallbackValue, system })\n } else {\n const token = tokens[value] ?? prevTokens?.[value]\n\n if (token) {\n return tokenToVar(value).reference\n } else if (value in cssMap && cssMap[value]?.ref) {\n return cssMap[value].ref\n } else if (fallbackValue) {\n fallbackValue =\n fallbackValue in cssMap && cssMap[fallbackValue]?.ref\n ? cssMap[fallbackValue]?.ref\n : fallbackValue\n\n return `var(--${prefix}-${value}, ${fallbackValue})`\n } else {\n return `var(--${prefix}-${value})`\n }\n }\n })\n }\n\n function createNegativeVar(token: string, reference: string) {\n const paths = token.split(\".\")\n const [start, ...rest] = paths\n\n const negativeToken = `${start}.-${rest.join(\".\")}`\n\n const negativeReference = calc.negate(reference)\n\n return { negativeReference, negativeToken }\n }\n\n function createAnimationVar(value: VariableValue) {\n if (isArray(value)) {\n return value.map((value) => animation(value, options)).join(\",\")\n } else {\n return animation(value, options)\n }\n }\n\n function createGradientVar(token: string, value: DefineThemeValue) {\n return function (semantic: boolean) {\n if (!semantic) {\n return gradient(value, options)\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable ? reference : gradient(value, options)\n }\n }\n }\n\n function createKeyframesVar(token: string, value: any) {\n return function (semantic: boolean) {\n if (!semantic) {\n return injectKeyframes(css(system, theme)(value))\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : injectKeyframes(css(system, theme)(value))\n }\n }\n }\n\n function createColorVar(\n token: string,\n properties: string[],\n value: DefineThemeValue,\n ) {\n return function (semantic: boolean) {\n if (!semantic) {\n return colorMix(value, { ...options, properties })\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : colorMix(value, { ...options, properties })\n }\n }\n }\n\n function createVar(\n token: string,\n value: VariableValue,\n variable: string,\n ) {\n return function (semantic: boolean, queries: string[] = []) {\n if (isAnimation(token)) value = createAnimationVar(value)\n\n if (isArray(value)) {\n const [lightValue, darkValue] = value\n\n createVar(token, lightValue, variable)(semantic, queries)\n createVar(\n token,\n darkValue,\n variable,\n )(semantic, [...queries, conditions._dark])\n } else if (isResponsive(value, true)) {\n Object.entries(value).forEach(([key, value]) => {\n if (key === \"base\") {\n createVar(token, value, variable)(semantic, queries)\n } else {\n const query = getQuery(key)\n\n if (!query) return\n\n createVar(token, value, variable)(semantic, [...queries, query])\n }\n })\n } else {\n const computedValue: DefineThemeValue = valueToVar(value)\n\n let resolvedValue: DefineThemeValue | Dict = computedValue\n\n if (isKeyframes(token)) {\n resolvedValue = createKeyframesVar(token, computedValue)(semantic)\n } else if (isGradient(token)) {\n resolvedValue = createGradientVar(token, computedValue)(semantic)\n } else if (isColor(token)) {\n resolvedValue = createColorVar(\n token,\n [variable],\n computedValue,\n )(semantic)\n } else if (semantic) {\n const [, reference] = getRelatedReference(token, computedValue)\n\n resolvedValue = reference\n }\n\n if (!isObject(resolvedValue))\n resolvedValue = { [variable]: resolvedValue }\n\n const resolvedCssVars = queries.reduceRight<Dict>(\n (prev, key) => ({ [key]: prev }),\n resolvedValue,\n )\n\n cssVars = merge(cssVars, resolvedCssVars)\n }\n }\n }\n\n for (let [token, { semantic, value }] of Object.entries(tokens)) {\n const { reference, variable } = tokenToVar(token)\n\n createVar(token, value, variable)(semantic)\n\n if (isSpace(token)) {\n const { negativeReference, negativeToken } = createNegativeVar(\n token,\n reference,\n )\n\n cssMap[negativeToken] = { ref: negativeReference, var: variable }\n }\n\n cssMap[token] = { ref: reference, var: variable }\n }\n\n return { cssMap, cssVars }\n }\n }\n}\n\nexport type CreateVars = ReturnType<ReturnType<typeof createVars>>\n\nexport function mergeVars(...fns: CreateVars[]) {\n return function (prevTokens?: VariableTokens) {\n let cssMap: CSSMap = {}\n let cssVars: Dict = {}\n\n for (const fn of fns) {\n const result = fn(cssMap, cssVars, prevTokens)\n\n cssMap = { ...cssMap, ...result.cssMap }\n cssVars = { ...cssVars, ...result.cssVars }\n }\n\n return { cssMap, cssVars }\n }\n}\n\nexport function varAttr<Y = StyleValueWithCondition<number | string>>(\n value: undefined | Y,\n token?: ThemeToken,\n fallbackValue?: string,\n): undefined | Y {\n if (isUndefined(value) || isNull(value) || isCSSFunction(value)) return value\n\n if (isObject(value) || isArray(value)) {\n return replaceObject(value, (value) => varAttr(value, token, fallbackValue))\n } else {\n return token\n ? (`{${token}.${value}, ${fallbackValue ?? value}}` as Y)\n : value\n }\n}\n\nexport function injectVars<Y extends Dict | Dict[] | undefined>(\n objOrArray: Y,\n targets: { [key in CSSProperties]?: string },\n isInvalidProp?: (prop: string) => boolean,\n): Y {\n if (!objOrArray) return objOrArray\n\n function callback(objOrArray: Dict) {\n return Object.fromEntries(\n Object.entries(objOrArray).flatMap(function ([prop, value]) {\n if (isInvalidProp?.(prop)) return [[prop, value]]\n\n const target = targets[prop]\n const result: [string, any][] = []\n\n if (target) {\n const { token } = getStyle(prop) ?? {}\n\n result.push([\n `--${target}`,\n token ? `{${token}.${value}, ${value}}` : value,\n ])\n } else if (isObject(value)) {\n result.push([prop, injectVars(value, targets)])\n } else {\n result.push([prop, value])\n }\n\n return result\n }),\n )\n }\n\n if (isArray(objOrArray)) {\n return objOrArray.map(callback) as Y\n } else {\n return callback(objOrArray) as Y\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"var.js","names":["value","system: System","calc","computedValue: DefineThemeValue","resolvedValue: DefineThemeValue | Dict","cssMap: CSSMap","cssVars: Dict","objOrArray","result: [string, any][]"],"sources":["../../../../src/core/system/var.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { CSSProperties, StyleValueWithCondition } from \"../css\"\nimport type {\n CSSMap,\n DefineThemeValue,\n System,\n ThemeToken,\n UsageTheme,\n VariableTokens,\n VariableValue,\n} from \"../system\"\nimport type { Breakpoints } from \"./breakpoint\"\nimport {\n calc,\n escape,\n isArray,\n isNull,\n isObject,\n isString,\n isUndefined,\n merge,\n replaceObject,\n} from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport {\n animation,\n colorMix,\n conditions,\n css,\n getStyle,\n gradient,\n injectKeyframes,\n isCSSFunction,\n} from \"../css\"\nimport { defaultSystem } from \"../system\"\n\ntype ParsedValue = number | string | undefined\n\ninterface Variable {\n reference: string\n variable: string\n}\n\nexport function transformInterpolation(\n value: any,\n callback: (value: string, fallbackValue?: string) => string,\n) {\n if (isString(value)) {\n return value.replace(/\\{(.*?)\\}/g, (_, value) => {\n const [token, fallbackValue] = value.split(/,(.+)/)\n\n return callback(token.trim(), fallbackValue?.trim())\n })\n } else {\n return value\n }\n}\n\nexport function getVar(token: string, fallback?: string) {\n if (!token.startsWith(\"--\")) token = `--${token}`\n\n token = token.replace(/[^-_a-zA-Z0-9]/g, \"\")\n\n return fallback ? `var(${token}, ${fallback})` : `var(${token})`\n}\n\nexport function getVarName(system: System) {\n return function (token: string) {\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n return `--${prefix}-${token}`\n }\n}\n\nexport function getColorSchemeVar(system: System) {\n return function (value: any, fallback?: string) {\n if (!isString(value)) return value\n\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n const [, token] = value.split(\".\")\n\n return getVar(`${prefix}-colorScheme-${token}`, fallback)\n }\n}\n\nconst isGradient = (token: string) => token.startsWith(\"gradients.\")\nconst isKeyframes = (token: string) => token.startsWith(\"keyframes.\")\nconst isAnimation = (token: string) => token.startsWith(\"animations.\")\nconst isSpace = (token: string) => token.startsWith(\"spaces.\")\nconst isColor = (token: string) => token.startsWith(\"colors.\")\nexport const isColorScheme = (token: any) =>\n isString(token) && token.startsWith(\"colorScheme.\") && !token.includes(\"/\")\n\nexport function createVars(\n prefix: string = DEFAULT_VAR_PREFIX,\n theme: UsageTheme,\n breakpoints: Breakpoints,\n) {\n return function (tokens: VariableTokens) {\n const { getQuery, isResponsive } = breakpoints\n\n function tokenToVar(token: string): Variable {\n token = token.replace(/\\./g, \"-\")\n token = token.replace(/\\//g, \"\\\\/\")\n\n const variable = `--${[prefix, escape(token, \"-\")].filter(Boolean).join(\"-\")}`\n const reference = `var(${variable})`\n\n return { reference, variable }\n }\n\n return function (\n cssMap: CSSMap = {},\n cssVars: Dict = {},\n prevTokens?: VariableTokens,\n ): { cssMap: CSSMap; cssVars: Dict } {\n const system: System = { ...defaultSystem, cssMap }\n const options = { css, system, theme }\n\n function getRelatedReference(\n token: string,\n value: ParsedValue = \"\",\n ): [ParsedValue, Exclude<ParsedValue, undefined>] {\n const relatedToken = [token.split(\".\")[0], value].join(\".\")\n\n if (token === relatedToken) return [undefined, value]\n\n const targetToken = tokens[relatedToken] ?? prevTokens?.[relatedToken]\n\n if (!targetToken) return [undefined, value]\n\n const { reference, variable } = tokenToVar(relatedToken)\n\n return [variable, reference]\n }\n\n function valueToVar(value: any) {\n return transformInterpolation(value, (value, fallbackValue) => {\n if (value.includes(\"colors.\") || value.includes(\"colorScheme.\")) {\n if (isColorScheme(value)) return getColorSchemeVar(system)(value)\n\n return colorMix(value, { fallback: fallbackValue, system })\n } else {\n const token = tokens[value] ?? prevTokens?.[value]\n\n if (token) {\n return tokenToVar(value).reference\n } else if (value in cssMap && cssMap[value]?.ref) {\n return cssMap[value].ref\n } else if (fallbackValue) {\n fallbackValue =\n fallbackValue in cssMap && cssMap[fallbackValue]?.ref\n ? cssMap[fallbackValue]?.ref\n : fallbackValue\n\n return `var(--${prefix}-${value}, ${fallbackValue})`\n } else {\n return `var(--${prefix}-${value})`\n }\n }\n })\n }\n\n function createNegativeVar(token: string, reference: string) {\n const paths = token.split(\".\")\n const [start, ...rest] = paths\n\n const negativeToken = `${start}.-${rest.join(\".\")}`\n\n const negativeReference = calc.negate(reference)\n\n return { negativeReference, negativeToken }\n }\n\n function createAnimationVar(value: VariableValue) {\n if (isArray(value)) {\n return value.map((value) => animation(value, options)).join(\",\")\n } else {\n return animation(value, options)\n }\n }\n\n function createGradientVar(token: string, value: DefineThemeValue) {\n return function (semantic: boolean) {\n if (!semantic) {\n return gradient(value, options)\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable ? reference : gradient(value, options)\n }\n }\n }\n\n function createKeyframesVar(token: string, value: any) {\n return function (semantic: boolean) {\n if (!semantic) {\n return injectKeyframes(css(system, theme)(value))\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : injectKeyframes(css(system, theme)(value))\n }\n }\n }\n\n function createColorVar(\n token: string,\n properties: string[],\n value: DefineThemeValue,\n ) {\n return function (semantic: boolean) {\n if (!semantic) {\n return colorMix(value, { ...options, properties })\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : colorMix(value, { ...options, properties })\n }\n }\n }\n\n function createVar(\n token: string,\n value: VariableValue,\n variable: string,\n ) {\n return function (semantic: boolean, queries: string[] = []) {\n if (isAnimation(token)) value = createAnimationVar(value)\n\n if (isArray(value)) {\n const [lightValue, darkValue] = value\n\n createVar(token, lightValue, variable)(semantic, queries)\n createVar(\n token,\n darkValue,\n variable,\n )(semantic, [...queries, conditions._dark])\n } else if (isResponsive(value, true)) {\n Object.entries(value).forEach(([key, value]) => {\n if (key === \"base\") {\n createVar(token, value, variable)(semantic, queries)\n } else {\n const query = getQuery(key)\n\n if (!query) return\n\n createVar(token, value, variable)(semantic, [...queries, query])\n }\n })\n } else {\n const computedValue: DefineThemeValue = valueToVar(value)\n\n let resolvedValue: DefineThemeValue | Dict = computedValue\n\n if (isKeyframes(token)) {\n resolvedValue = createKeyframesVar(token, computedValue)(semantic)\n } else if (isGradient(token)) {\n resolvedValue = createGradientVar(token, computedValue)(semantic)\n } else if (isColor(token)) {\n resolvedValue = createColorVar(\n token,\n [variable],\n computedValue,\n )(semantic)\n } else if (semantic) {\n const [, reference] = getRelatedReference(token, computedValue)\n\n resolvedValue = reference\n }\n\n if (!isObject(resolvedValue))\n resolvedValue = { [variable]: resolvedValue }\n\n const resolvedCssVars = queries.reduceRight<Dict>(\n (prev, key) => ({ [key]: prev }),\n resolvedValue,\n )\n\n cssVars = merge(cssVars, resolvedCssVars)\n }\n }\n }\n\n for (let [token, { semantic, value }] of Object.entries(tokens)) {\n const { reference, variable } = tokenToVar(token)\n\n createVar(token, value, variable)(semantic)\n\n if (isSpace(token)) {\n const { negativeReference, negativeToken } = createNegativeVar(\n token,\n reference,\n )\n\n cssMap[negativeToken] = { ref: negativeReference, var: variable }\n }\n\n cssMap[token] = { ref: reference, var: variable }\n }\n\n return { cssMap, cssVars }\n }\n }\n}\n\nexport type CreateVars = ReturnType<ReturnType<typeof createVars>>\n\nexport function mergeVars(...fns: CreateVars[]) {\n return function (prevTokens?: VariableTokens) {\n let cssMap: CSSMap = {}\n let cssVars: Dict = {}\n\n for (const fn of fns) {\n const result = fn(cssMap, cssVars, prevTokens)\n\n cssMap = { ...cssMap, ...result.cssMap }\n cssVars = { ...cssVars, ...result.cssVars }\n }\n\n return { cssMap, cssVars }\n }\n}\n\nexport function varAttr<Y = StyleValueWithCondition<number | string>>(\n value: undefined | Y,\n token?: ThemeToken,\n fallbackValue?: string,\n): undefined | Y {\n if (isUndefined(value) || isNull(value) || isCSSFunction(value)) return value\n\n if (isObject(value) || isArray(value)) {\n return replaceObject(value, (value) => varAttr(value, token, fallbackValue))\n } else {\n return token\n ? (`{${token}.${value}, ${fallbackValue ?? value}}` as Y)\n : value\n }\n}\n\nexport function injectVars<Y extends Dict | Dict[] | undefined>(\n objOrArray: Y,\n targets: { [key in CSSProperties]?: string },\n isInvalidProp?: (prop: string) => boolean,\n): Y {\n if (!objOrArray) return objOrArray\n\n function callback(objOrArray: Dict) {\n return Object.fromEntries(\n Object.entries(objOrArray).flatMap(function ([prop, value]) {\n if (isInvalidProp?.(prop)) return [[prop, value]]\n\n const target = targets[prop]\n const result: [string, any][] = []\n\n if (target) {\n const { token } = getStyle(prop) ?? {}\n\n result.push([\n `--${target}`,\n token ? `{${token}.${value}, ${value}}` : value,\n ])\n } else if (isObject(value)) {\n result.push([prop, injectVars(value, targets)])\n } else {\n result.push([prop, value])\n }\n\n return result\n }),\n )\n }\n\n if (isArray(objOrArray)) {\n return objOrArray.map(callback) as Y\n } else {\n return callback(objOrArray) as Y\n }\n}\n"],"mappings":"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"}
|
package/dist/esm/utils/effect.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
|
|
3
3
|
//#region src/utils/effect.ts
|
|
4
|
-
const useSafeLayoutEffect =
|
|
4
|
+
const useSafeLayoutEffect = globalThis.document ? React.useLayoutEffect : React.useEffect;
|
|
5
5
|
function useUnmountEffect(callback) {
|
|
6
6
|
return React.useEffect(() => () => callback(), []);
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect.js","names":[],"sources":["../../../src/utils/effect.ts"],"sourcesContent":["import * as React from \"react\"\n\nexport const useSafeLayoutEffect =
|
|
1
|
+
{"version":3,"file":"effect.js","names":[],"sources":["../../../src/utils/effect.ts"],"sourcesContent":["import * as React from \"react\"\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nexport const useSafeLayoutEffect = globalThis.document\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see https://yamada-ui.com/docs/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n"],"mappings":";;;AAGA,MAAa,sBAAsB,WAAW,WAC1C,MAAM,kBACN,MAAM;AAEV,SAAgB,iBAAiB,UAAsB;AAErD,QAAO,MAAM,sBAAsB,UAAU,EAAE,EAAE,CAAC;;;;;;;AAQpD,SAAgB,gBACd,UACA,MACA;CACA,MAAM,iBAAiB,MAAM,OAAO,MAAM;CAC1C,MAAM,iBAAiB,MAAM,OAAO,MAAM;AAE1C,OAAM,gBAAgB;AAIpB,MAHgB,eAAe,WACR,eAAe,QAE7B,QAAO,UAAU;AAE1B,iBAAe,UAAU;IAExB,KAAK;AAER,OAAM,gBAAgB;AACpB,iBAAe,UAAU;AAEzB,eAAa;AACX,kBAAe,UAAU;;IAE1B,EAAE,CAAC"}
|
|
@@ -9,7 +9,7 @@ import "../collapse/index.js";
|
|
|
9
9
|
import "../../index.js";
|
|
10
10
|
import { AccordionStyle } from "./accordion.style.js";
|
|
11
11
|
import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react43 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/accordion/accordion.d.ts
|
|
15
15
|
interface AccordionCallBackProps {
|
|
@@ -33,7 +33,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
|
|
|
33
33
|
*/
|
|
34
34
|
items?: AccordionItem[];
|
|
35
35
|
}
|
|
36
|
-
declare const AccordionPropsContext:
|
|
36
|
+
declare const AccordionPropsContext: react43.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
|
|
37
37
|
/**
|
|
38
38
|
* `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
|
|
39
39
|
*
|
|
@@ -3,7 +3,7 @@ import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/
|
|
|
3
3
|
import "../../index.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/accordion/accordion.style.d.ts
|
|
6
|
-
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "
|
|
6
|
+
declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "root" | "item", CSSPropObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, CSSModifierObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, {
|
|
7
7
|
panel: {
|
|
8
8
|
button: {
|
|
9
9
|
rounded: "l2";
|
|
@@ -2,10 +2,10 @@ import { HTMLProps, PropGetter } from "../../core/components/index.types.js";
|
|
|
2
2
|
import "../../core/index.js";
|
|
3
3
|
import { Descendant } from "../../hooks/use-descendants/index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react44 from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/accordion/use-accordion.d.ts
|
|
8
|
-
declare const AccordionDescendantsContext:
|
|
8
|
+
declare const AccordionDescendantsContext: react44.Context<{
|
|
9
9
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
10
10
|
count: () => number;
|
|
11
11
|
destroy: () => void;
|
|
@@ -24,7 +24,7 @@ declare const AccordionDescendantsContext: react878.Context<{
|
|
|
24
24
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
25
25
|
register: (props?: {
|
|
26
26
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
27
|
-
} | undefined) =>
|
|
27
|
+
} | undefined) => react44.RefCallback<HTMLButtonElement>;
|
|
28
28
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
29
29
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
30
30
|
values: () => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -50,12 +50,12 @@ declare const AccordionDescendantsContext: react878.Context<{
|
|
|
50
50
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
51
51
|
register: (props?: {
|
|
52
52
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
53
|
-
} | undefined) =>
|
|
53
|
+
} | undefined) => react44.RefCallback<HTMLButtonElement>;
|
|
54
54
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
55
55
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
56
56
|
values: () => Descendant<HTMLButtonElement, {}>[];
|
|
57
57
|
};
|
|
58
|
-
register:
|
|
58
|
+
register: react44.RefCallback<HTMLButtonElement>;
|
|
59
59
|
}, useAccordionDescendants: () => {
|
|
60
60
|
active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
|
|
61
61
|
count: () => number;
|
|
@@ -75,15 +75,15 @@ declare const AccordionDescendantsContext: react878.Context<{
|
|
|
75
75
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
76
76
|
register: (props?: {
|
|
77
77
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
78
|
-
} | undefined) =>
|
|
78
|
+
} | undefined) => react44.RefCallback<HTMLButtonElement>;
|
|
79
79
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
80
80
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
81
81
|
values: () => Descendant<HTMLButtonElement, {}>[];
|
|
82
82
|
};
|
|
83
83
|
interface AccordionContext extends Omit<UseAccordionReturn, "descendants" | "getRootProps"> {}
|
|
84
|
-
declare const AccordionContext:
|
|
84
|
+
declare const AccordionContext: react44.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
|
|
85
85
|
interface AccordionItemContext extends Omit<UseAccordionItemReturn, "getItemProps"> {}
|
|
86
|
-
declare const AccordionItemContext:
|
|
86
|
+
declare const AccordionItemContext: react44.Context<AccordionItemContext>, useAccordionItemContext: () => AccordionItemContext;
|
|
87
87
|
interface UseAccordionProps extends Omit<HTMLProps, "onChange"> {
|
|
88
88
|
/**
|
|
89
89
|
* The initial index(es) of the accordion item to expand.
|
|
@@ -137,7 +137,7 @@ declare const useAccordion: ({
|
|
|
137
137
|
prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
138
138
|
register: (props?: {
|
|
139
139
|
disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
|
|
140
|
-
} | undefined) =>
|
|
140
|
+
} | undefined) => react44.RefCallback<HTMLButtonElement>;
|
|
141
141
|
unregister: (node?: HTMLButtonElement | null | undefined) => void;
|
|
142
142
|
value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
|
|
143
143
|
values: () => Descendant<HTMLButtonElement, {}>[];
|
|
@@ -145,8 +145,8 @@ declare const useAccordion: ({
|
|
|
145
145
|
focusedIndex: number;
|
|
146
146
|
index: number | number[];
|
|
147
147
|
multiple: boolean | undefined;
|
|
148
|
-
setFocusedIndex:
|
|
149
|
-
setIndex:
|
|
148
|
+
setFocusedIndex: react44.Dispatch<react44.SetStateAction<number>>;
|
|
149
|
+
setIndex: react44.Dispatch<react44.SetStateAction<number | number[]>>;
|
|
150
150
|
toggle: boolean | undefined;
|
|
151
151
|
getRootProps: PropGetter<"div", undefined, undefined>;
|
|
152
152
|
};
|
|
@@ -5,7 +5,7 @@ import { AiryStyle } from "./airy.style.js";
|
|
|
5
5
|
import { HTMLMotionProps } from "../motion/index.types.js";
|
|
6
6
|
import "../motion/index.js";
|
|
7
7
|
import "../../index.js";
|
|
8
|
-
import * as
|
|
8
|
+
import * as react42 from "react";
|
|
9
9
|
import { ReactNode } from "react";
|
|
10
10
|
|
|
11
11
|
//#region src/components/airy/airy.d.ts
|
|
@@ -25,7 +25,7 @@ interface AiryProps extends Omit<HTMLMotionProps<"button">, "onChange">, ThemePr
|
|
|
25
25
|
*/
|
|
26
26
|
defaultValue?: KeyframeIdent;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* The animation delay.
|
|
29
29
|
*
|
|
30
30
|
* @default 0
|
|
31
31
|
*/
|
|
@@ -57,7 +57,7 @@ interface AiryProps extends Omit<HTMLMotionProps<"button">, "onChange">, ThemePr
|
|
|
57
57
|
*/
|
|
58
58
|
onChange?: (value: KeyframeIdent) => void;
|
|
59
59
|
}
|
|
60
|
-
declare const AiryPropsContext:
|
|
60
|
+
declare const AiryPropsContext: react42.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
|
|
61
61
|
/**
|
|
62
62
|
* `Airy` is a component that creates an airy animation, switching between two elements when one is clicked.
|
|
63
63
|
*
|
|
@@ -9,7 +9,7 @@ import "../loading/index.js";
|
|
|
9
9
|
import { StatusScheme } from "../status/status.js";
|
|
10
10
|
import "../status/index.js";
|
|
11
11
|
import "../../index.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react41 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/alert/alert.d.ts
|
|
15
15
|
interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
|
|
@@ -20,7 +20,7 @@ interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
|
|
|
20
20
|
*/
|
|
21
21
|
status?: StatusScheme;
|
|
22
22
|
}
|
|
23
|
-
declare const AlertPropsContext:
|
|
23
|
+
declare const AlertPropsContext: react41.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
|
|
24
24
|
/**
|
|
25
25
|
* `Alert` is a component that conveys information to the user.
|
|
26
26
|
*
|
|
@@ -5,7 +5,7 @@ import { AlphaSliderStyle } from "./alpha-slider.style.js";
|
|
|
5
5
|
import { HueSliderOverlayProps, HueSliderRootProps, HueSliderThumbProps, HueSliderTrackProps } from "../hue-slider/hue-slider.js";
|
|
6
6
|
import "../hue-slider/index.js";
|
|
7
7
|
import "../../index.js";
|
|
8
|
-
import * as
|
|
8
|
+
import * as react40 from "react";
|
|
9
9
|
|
|
10
10
|
//#region src/components/alpha-slider/alpha-slider.d.ts
|
|
11
11
|
interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps, "color" | "max" | "step" | "thumbProps" | "trackProps">, AlphaSliderStyle> {
|
|
@@ -38,7 +38,7 @@ interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps
|
|
|
38
38
|
*/
|
|
39
39
|
trackProps?: AlphaSliderTrackProps;
|
|
40
40
|
}
|
|
41
|
-
declare const AlphaSliderPropsContext:
|
|
41
|
+
declare const AlphaSliderPropsContext: react40.Context<Partial<AlphaSliderRootProps> | undefined>, useAlphaSliderPropsContext: () => Partial<AlphaSliderRootProps> | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* `AlphaSlider` is a component used to allow the user to select color transparency.
|
|
44
44
|
*
|
|
@@ -2,7 +2,7 @@ import { StyleValue } from "../../core/css/index.types.js";
|
|
|
2
2
|
import { Component, HTMLStyledProps } from "../../core/components/index.types.js";
|
|
3
3
|
import "../../core/index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as react39 from "react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/aspect-ratio/aspect-ratio.d.ts
|
|
8
8
|
interface AspectRatioProps extends HTMLStyledProps {
|
|
@@ -13,7 +13,7 @@ interface AspectRatioProps extends HTMLStyledProps {
|
|
|
13
13
|
*/
|
|
14
14
|
ratio?: StyleValue<number>;
|
|
15
15
|
}
|
|
16
|
-
declare const AspectRatioPropsContext:
|
|
16
|
+
declare const AspectRatioPropsContext: react39.Context<Partial<AspectRatioProps> | undefined>, useAspectRatioPropsContext: () => Partial<AspectRatioProps> | undefined;
|
|
17
17
|
/**
|
|
18
18
|
* `AspectRatio` is a component for embedding things like videos and maps while maintaining the aspect ratio.
|
|
19
19
|
*
|