@yamada-ui/react 2.2.4-dev-20260629090928 → 2.2.4-dev-20260714071608

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.
Files changed (70) hide show
  1. package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
  2. package/dist/cjs/components/fieldset/fieldset.style.cjs.map +1 -1
  3. package/dist/cjs/components/icon/icons/database-arrow-down-icon.cjs +14 -0
  4. package/dist/cjs/components/icon/icons/database-arrow-down-icon.cjs.map +1 -0
  5. package/dist/cjs/components/icon/icons/database-arrow-up-icon.cjs +14 -0
  6. package/dist/cjs/components/icon/icons/database-arrow-up-icon.cjs.map +1 -0
  7. package/dist/cjs/components/icon/icons/database-check-icon.cjs +14 -0
  8. package/dist/cjs/components/icon/icons/database-check-icon.cjs.map +1 -0
  9. package/dist/cjs/components/icon/icons/database-minus-icon.cjs +14 -0
  10. package/dist/cjs/components/icon/icons/database-minus-icon.cjs.map +1 -0
  11. package/dist/cjs/components/icon/icons/database-plus-icon.cjs +14 -0
  12. package/dist/cjs/components/icon/icons/database-plus-icon.cjs.map +1 -0
  13. package/dist/cjs/components/icon/icons/database-x-icon.cjs +14 -0
  14. package/dist/cjs/components/icon/icons/database-x-icon.cjs.map +1 -0
  15. package/dist/cjs/components/icon/icons/index.cjs +21 -0
  16. package/dist/cjs/components/icon/icons/index.cjs.map +1 -1
  17. package/dist/cjs/components/icon/icons/phi-icon.cjs +14 -0
  18. package/dist/cjs/components/icon/icons/phi-icon.cjs.map +1 -0
  19. package/dist/cjs/components/icon/index.cjs +14 -0
  20. package/dist/cjs/components/slider/use-slider.cjs.map +1 -1
  21. package/dist/cjs/core/components/create-component.cjs.map +1 -1
  22. package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
  23. package/dist/cjs/core/css/styles.cjs.map +1 -1
  24. package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
  25. package/dist/cjs/index.cjs +21 -0
  26. package/dist/cjs/utils/store.cjs.map +1 -1
  27. package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
  28. package/dist/esm/components/fieldset/fieldset.style.js.map +1 -1
  29. package/dist/esm/components/icon/icons/database-arrow-down-icon.js +14 -0
  30. package/dist/esm/components/icon/icons/database-arrow-down-icon.js.map +1 -0
  31. package/dist/esm/components/icon/icons/database-arrow-up-icon.js +14 -0
  32. package/dist/esm/components/icon/icons/database-arrow-up-icon.js.map +1 -0
  33. package/dist/esm/components/icon/icons/database-check-icon.js +14 -0
  34. package/dist/esm/components/icon/icons/database-check-icon.js.map +1 -0
  35. package/dist/esm/components/icon/icons/database-minus-icon.js +14 -0
  36. package/dist/esm/components/icon/icons/database-minus-icon.js.map +1 -0
  37. package/dist/esm/components/icon/icons/database-plus-icon.js +14 -0
  38. package/dist/esm/components/icon/icons/database-plus-icon.js.map +1 -0
  39. package/dist/esm/components/icon/icons/database-x-icon.js +14 -0
  40. package/dist/esm/components/icon/icons/database-x-icon.js.map +1 -0
  41. package/dist/esm/components/icon/icons/index.js +15 -1
  42. package/dist/esm/components/icon/icons/index.js.map +1 -1
  43. package/dist/esm/components/icon/icons/phi-icon.js +14 -0
  44. package/dist/esm/components/icon/icons/phi-icon.js.map +1 -0
  45. package/dist/esm/components/icon/index.js +8 -1
  46. package/dist/esm/components/slider/use-slider.js.map +1 -1
  47. package/dist/esm/core/components/create-component.js.map +1 -1
  48. package/dist/esm/core/components/use-component-style.js.map +1 -1
  49. package/dist/esm/core/css/styles.js.map +1 -1
  50. package/dist/esm/hooks/use-focus/index.js.map +1 -1
  51. package/dist/esm/index.js +15 -1
  52. package/dist/esm/utils/store.js.map +1 -1
  53. package/dist/types/components/field/use-field-props.d.ts +1 -1
  54. package/dist/types/components/icon/icons/database-arrow-down-icon.d.ts +13 -0
  55. package/dist/types/components/icon/icons/database-arrow-up-icon.d.ts +13 -0
  56. package/dist/types/components/icon/icons/database-check-icon.d.ts +13 -0
  57. package/dist/types/components/icon/icons/database-minus-icon.d.ts +13 -0
  58. package/dist/types/components/icon/icons/database-plus-icon.d.ts +13 -0
  59. package/dist/types/components/icon/icons/database-x-icon.d.ts +13 -0
  60. package/dist/types/components/icon/icons/index.d.ts +9 -2
  61. package/dist/types/components/icon/icons/index.types.d.ts +1 -1
  62. package/dist/types/components/icon/icons/phi-icon.d.ts +13 -0
  63. package/dist/types/components/icon/index.d.ts +8 -1
  64. package/dist/types/components/progress/use-progress.d.ts +6 -6
  65. package/dist/types/components/tree/tree.style.d.ts +1 -1
  66. package/dist/types/components/tree/use-tree.d.ts +2 -2
  67. package/dist/types/core/css/styles.d.ts +2 -1
  68. package/dist/types/index.d.ts +9 -2
  69. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +1 -1
  70. package/package.json +5 -5
@@ -516,9 +516,15 @@ const require_cup_soda_icon = require("./icons/cup-soda-icon.cjs");
516
516
  const require_currency_icon = require("./icons/currency-icon.cjs");
517
517
  const require_cylinder_icon = require("./icons/cylinder-icon.cjs");
518
518
  const require_dam_icon = require("./icons/dam-icon.cjs");
519
+ const require_database_arrow_down_icon = require("./icons/database-arrow-down-icon.cjs");
520
+ const require_database_arrow_up_icon = require("./icons/database-arrow-up-icon.cjs");
519
521
  const require_database_backup_icon = require("./icons/database-backup-icon.cjs");
522
+ const require_database_check_icon = require("./icons/database-check-icon.cjs");
520
523
  const require_database_icon = require("./icons/database-icon.cjs");
524
+ const require_database_minus_icon = require("./icons/database-minus-icon.cjs");
525
+ const require_database_plus_icon = require("./icons/database-plus-icon.cjs");
521
526
  const require_database_search_icon = require("./icons/database-search-icon.cjs");
527
+ const require_database_x_icon = require("./icons/database-x-icon.cjs");
522
528
  const require_database_zap_icon = require("./icons/database-zap-icon.cjs");
523
529
  const require_decimals_arrow_left_icon = require("./icons/decimals-arrow-left-icon.cjs");
524
530
  const require_decimals_arrow_right_icon = require("./icons/decimals-arrow-right-icon.cjs");
@@ -1150,6 +1156,7 @@ const require_pencil_sparkles_icon = require("./icons/pencil-sparkles-icon.cjs")
1150
1156
  const require_pentagon_icon = require("./icons/pentagon-icon.cjs");
1151
1157
  const require_percent_icon = require("./icons/percent-icon.cjs");
1152
1158
  const require_person_standing_icon = require("./icons/person-standing-icon.cjs");
1159
+ const require_phi_icon = require("./icons/phi-icon.cjs");
1153
1160
  const require_philippine_peso_icon = require("./icons/philippine-peso-icon.cjs");
1154
1161
  const require_phone_call_icon = require("./icons/phone-call-icon.cjs");
1155
1162
  const require_phone_forwarded_icon = require("./icons/phone-forwarded-icon.cjs");
@@ -2255,9 +2262,15 @@ exports.CupSodaIcon = require_cup_soda_icon.CupSodaIcon;
2255
2262
  exports.CurrencyIcon = require_currency_icon.CurrencyIcon;
2256
2263
  exports.CylinderIcon = require_cylinder_icon.CylinderIcon;
2257
2264
  exports.DamIcon = require_dam_icon.DamIcon;
2265
+ exports.DatabaseArrowDownIcon = require_database_arrow_down_icon.DatabaseArrowDownIcon;
2266
+ exports.DatabaseArrowUpIcon = require_database_arrow_up_icon.DatabaseArrowUpIcon;
2258
2267
  exports.DatabaseBackupIcon = require_database_backup_icon.DatabaseBackupIcon;
2268
+ exports.DatabaseCheckIcon = require_database_check_icon.DatabaseCheckIcon;
2259
2269
  exports.DatabaseIcon = require_database_icon.DatabaseIcon;
2270
+ exports.DatabaseMinusIcon = require_database_minus_icon.DatabaseMinusIcon;
2271
+ exports.DatabasePlusIcon = require_database_plus_icon.DatabasePlusIcon;
2260
2272
  exports.DatabaseSearchIcon = require_database_search_icon.DatabaseSearchIcon;
2273
+ exports.DatabaseXIcon = require_database_x_icon.DatabaseXIcon;
2261
2274
  exports.DatabaseZapIcon = require_database_zap_icon.DatabaseZapIcon;
2262
2275
  exports.DecimalsArrowLeftIcon = require_decimals_arrow_left_icon.DecimalsArrowLeftIcon;
2263
2276
  exports.DecimalsArrowRightIcon = require_decimals_arrow_right_icon.DecimalsArrowRightIcon;
@@ -2892,6 +2905,7 @@ exports.PencilSparklesIcon = require_pencil_sparkles_icon.PencilSparklesIcon;
2892
2905
  exports.PentagonIcon = require_pentagon_icon.PentagonIcon;
2893
2906
  exports.PercentIcon = require_percent_icon.PercentIcon;
2894
2907
  exports.PersonStandingIcon = require_person_standing_icon.PersonStandingIcon;
2908
+ exports.PhiIcon = require_phi_icon.PhiIcon;
2895
2909
  exports.PhilippinePesoIcon = require_philippine_peso_icon.PhilippinePesoIcon;
2896
2910
  exports.PhoneCallIcon = require_phone_call_icon.PhoneCallIcon;
2897
2911
  exports.PhoneForwardedIcon = require_phone_forwarded_icon.PhoneForwardedIcon;
@@ -1 +1 @@
1
- {"version":3,"file":"use-slider.cjs","names":["useFieldProps","useControllableState","useI18n","usePanEvent","mergeProps","visuallyHiddenAttributes","mergeRefs"],"sources":["../../../../src/components/slider/use-slider.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type {\n HTMLProps,\n HTMLRefAttributes,\n Orientation,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Point } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport { useCallback, useRef } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { usePanEvent } from \"../../hooks/use-pan-event\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n clampNumber,\n cx,\n dataAttr,\n handlerAll,\n isArray,\n isNumber,\n mergeRefs,\n percentToValue,\n roundNumberToStep,\n runKeyAction,\n valueToPercent,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\nexport interface UseSliderProps<Y extends [number, number] | number = number>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\">,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * The minimum distance between slider thumbs.\n * Useful for preventing the thumbs from being too close together.\n *\n * @default 0\n */\n betweenThumbs?: number\n /**\n * The initial value of the slider.\n */\n defaultValue?: Y\n /**\n * The base `id` to use for the slider.\n */\n id?: string\n /**\n * The maximum allowed value of the slider. Cannot be less than min.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum allowed value of the slider. Cannot be greater than max.\n *\n * @default 0\n */\n min?: number\n /**\n * The name attribute of the hidden `input` field.\n * This is particularly useful in forms.\n */\n name?: string\n /**\n * The orientation of the slider.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The step in which increments or decrements have to be made.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the slider.\n */\n value?: Y\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number, index: number) => string | undefined\n /**\n * Function called whenever the slider value changes.\n */\n onChange?: (value: Y) => void\n /**\n * Function called when the user is done selecting a new value.\n */\n onChangeEnd?: (value: Y) => void\n /**\n * Function called when the user starts selecting a new value.\n */\n onChangeStart?: (value: Y) => void\n}\n\nexport const useSlider = <Y extends [number, number] | number = number>(\n props: UseSliderProps<Y> = {},\n) => {\n const {\n props: {\n id,\n ref,\n name,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n betweenThumbs = 0,\n defaultValue = 0 as Y,\n disabled,\n getAriaValueText,\n max = 100,\n min = 0,\n orientation = \"horizontal\",\n readOnly,\n required,\n step = 1,\n value: valueProp,\n onChange: onChangeProp,\n onChangeEnd,\n onChangeStart,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const { t } = useI18n(\"slider\")\n const currentIndex = useRef(0)\n const interactive = !(disabled || readOnly)\n const [_, getPanEventProps] = usePanEvent<HTMLDivElement>({\n onEnd: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const start = currentIndex.current === 0\n const oppositeIndex = currentIndex.current === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeEnd?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n onChangeEnd?.(panValue as Y)\n }\n },\n onMove: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n onChange(currentIndex.current, panValue)\n },\n onStart: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const distances = value.map((value) => Math.abs(value - panValue))\n const closest = Math.min(...distances)\n const index = distances.indexOf(closest)\n\n currentIndex.current = index\n\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeStart?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n currentIndex.current = 0\n\n onChangeStart?.(value as Y)\n }\n\n onChange(currentIndex.current, panValue)\n },\n })\n const range = !isNumber(value)\n const percent = (\n range\n ? value.map((value) => valueToPercent(value, min, max))\n : valueToPercent(value, min, max)\n ) as Y extends number ? number : number[]\n const tenStep = (max - min) / 10\n const oneStep = step || (max - min) / 100\n\n if (max < min) console.warn(\"Do not assign a number less than 'min' to 'max'\")\n\n const getMinMax = useCallback(\n (index: number) => {\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = range ? value[oppositeIndex] : value\n\n return {\n max: range ? (start ? oppositeValue - betweenThumbs : max) : max,\n min: range ? (start ? min : oppositeValue + betweenThumbs) : min,\n }\n },\n [betweenThumbs, max, min, range, value],\n )\n\n const getPanValue = useCallback(\n ({ x, y }: Point, { bottom, height, left, width }: DOMRect) => {\n const diff = orientation === \"horizontal\" ? x - left : bottom - y\n const length = orientation === \"horizontal\" ? width : height\n const percent = diff / length\n\n let nextValue = percentToValue(percent, min, max)\n\n nextValue = parseFloat(roundNumberToStep(nextValue, min, step))\n nextValue = clampNumber(nextValue, min, max)\n\n return nextValue\n },\n [orientation, min, max, step],\n )\n\n const onChange = useCallback(\n (index: number, value: number) => {\n if (!interactive) return\n\n const { max, min } = getMinMax(index)\n\n value = parseFloat(roundNumberToStep(value, min, oneStep))\n value = clampNumber(value, min, max)\n\n setValue((prev) => {\n if (isArray(prev)) {\n const next = [...prev]\n\n next[index] = value\n\n return next as Y\n } else {\n return value as Y\n }\n })\n },\n [getMinMax, interactive, oneStep, setValue],\n )\n\n const stepUp = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! + step)\n : onChange(index, value + step),\n [oneStep, range, onChange, value],\n )\n\n const stepDown = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! - step)\n : onChange(index, value - step),\n [oneStep, range, onChange, value],\n )\n\n const onKeyDown = useCallback(\n (index: number) => (ev: KeyboardEvent<HTMLDivElement>) => {\n const { max, min } = getMinMax(index)\n\n runKeyAction(ev, {\n ArrowDown: () => stepDown(index),\n ArrowLeft: () => stepDown(index),\n ArrowRight: () => stepUp(index),\n ArrowUp: () => stepUp(index),\n End: () => onChange(index, max),\n Home: () => onChange(index, min),\n PageDown: () => stepDown(index, tenStep),\n PageUp: () => stepUp(index, tenStep),\n })\n },\n [getMinMax, onChange, stepDown, stepUp, tenStep],\n )\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => {\n const computedProps: HTMLProps = mergeProps(\n dataProps,\n { \"data-orientation\": orientation },\n rest,\n props,\n { onBlur: eventProps.onBlur, onFocus: eventProps.onFocus },\n )()\n\n computedProps.style ??= {}\n\n if (isArray(percent)) {\n computedProps.style[\"--range-start\"] = `${Math.abs(percent[0]!)}%`\n computedProps.style[\"--range-end\"] = `${Math.abs(percent[1]!)}%`\n } else {\n computedProps.style[\"--range-start\"] = \"0%\"\n computedProps.style[\"--range-end\"] = `${Math.abs(percent)}%`\n }\n\n return computedProps\n },\n [dataProps, eventProps, orientation, percent, rest],\n )\n\n const getInputProps: PropGetter<\"input\", { index?: number }> = useCallback(\n ({ index = 0, ...props } = {}) => ({\n ...visuallyHiddenAttributes,\n ...dataProps,\n ...ariaProps,\n id,\n type: \"hidden\",\n name,\n disabled,\n readOnly,\n required,\n value: range ? value[index]! : value,\n ...props,\n ref: index === 0 ? mergeRefs(props.ref, ref) : props.ref,\n }),\n [\n dataProps,\n ariaProps,\n id,\n name,\n disabled,\n readOnly,\n required,\n range,\n value,\n ref,\n ],\n )\n\n const getTrackProps: PropGetter = useCallback(\n (props) =>\n getPanEventProps({\n ...dataProps,\n \"data-orientation\": orientation,\n ...props,\n }),\n [dataProps, getPanEventProps, orientation],\n )\n\n const getRangeProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n \"data-orientation\": orientation,\n \"data-range\": dataAttr(range),\n ...props,\n }),\n [dataProps, orientation, range],\n )\n\n const getMarkProps: RequiredPropGetter<\"div\", { value: number }> =\n useCallback(\n ({ style, value: valueProp, ...props }) => {\n const between = range\n ? value[0] < valueProp && valueProp < value[1]\n : valueProp < value\n const percent = valueToPercent(valueProp, min, max)\n\n return {\n ...dataProps,\n \"aria-hidden\": true,\n \"data-between\": dataAttr(between),\n \"data-orientation\": orientation,\n role: \"presentation\",\n ...props,\n style: { ...style, \"--mark-position\": `${percent}%` },\n }\n },\n [dataProps, max, min, orientation, range, value],\n )\n\n const getThumbProps: PropGetter<\"div\", { index?: number }> = useCallback(\n ({ index = 0, ...rest } = {}) => {\n const { max, min } = getMinMax(index)\n\n const props: HTMLProps = {\n ...dataProps,\n ...ariaProps,\n \"aria-label\": t(\"Slider thumb\"),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min,\n role: \"slider\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n \"aria-labelledby\": cx(rest[\"aria-labelledby\"], ariaLabelledBy),\n onKeyDown: handlerAll(rest.onKeyDown, onKeyDown(index)),\n }\n\n if (range) {\n const currentValue = value[index]!\n\n props[\"data-start\"] = dataAttr(index === 0)\n props[\"data-end\"] = dataAttr(index === 1)\n props[\"aria-valuenow\"] = currentValue\n props[\"aria-valuetext\"] =\n ariaValueText ??\n getAriaValueText?.(currentValue, index) ??\n currentValue.toString()\n } else {\n props[\"data-end\"] = dataAttr(index === 0)\n props[\"aria-valuenow\"] = value\n props[\"aria-valuetext\"] =\n ariaValueText ?? getAriaValueText?.(value, index) ?? value.toString()\n }\n\n return props\n },\n [\n t,\n ariaLabelledBy,\n ariaProps,\n ariaValueText,\n dataProps,\n getAriaValueText,\n getMinMax,\n interactive,\n onKeyDown,\n orientation,\n range,\n value,\n ],\n )\n\n return {\n percent,\n range,\n setValue,\n stepDown,\n stepUp,\n value,\n getInputProps,\n getMarkProps,\n getRangeProps,\n getRootProps,\n getThumbProps,\n getTrackProps,\n onChange,\n }\n}\n\nexport type UseSliderReturn = ReturnType<typeof useSlider>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-slider.cjs","names":["useFieldProps","useControllableState","useI18n","usePanEvent","mergeProps","visuallyHiddenAttributes","mergeRefs"],"sources":["../../../../src/components/slider/use-slider.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type {\n HTMLProps,\n HTMLRefAttributes,\n Orientation,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Point } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport { useCallback, useRef } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { usePanEvent } from \"../../hooks/use-pan-event\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n clampNumber,\n cx,\n dataAttr,\n handlerAll,\n isArray,\n isNumber,\n mergeRefs,\n percentToValue,\n roundNumberToStep,\n runKeyAction,\n valueToPercent,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\nexport interface UseSliderProps<Y extends [number, number] | number = number>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\">,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * The minimum distance between slider thumbs.\n * Useful for preventing the thumbs from being too close together.\n *\n * @default 0\n */\n betweenThumbs?: number\n /**\n * The initial value of the slider.\n */\n defaultValue?: Y\n /**\n * The base `id` to use for the slider.\n */\n id?: string\n /**\n * The maximum allowed value of the slider. Cannot be less than min.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum allowed value of the slider. Cannot be greater than max.\n *\n * @default 0\n */\n min?: number\n /**\n * The name attribute of the hidden `input` field.\n * This is particularly useful in forms.\n */\n name?: string\n /**\n * The orientation of the slider.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The step in which increments or decrements have to be made.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the slider.\n */\n value?: Y\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number, index: number) => string | undefined\n /**\n * Function called whenever the slider value changes.\n */\n onChange?: (value: Y) => void\n /**\n * Function called when the user is done selecting a new value.\n */\n onChangeEnd?: (value: Y) => void\n /**\n * Function called when the user starts selecting a new value.\n */\n onChangeStart?: (value: Y) => void\n}\n\nexport const useSlider = <Y extends [number, number] | number = number>(\n props: UseSliderProps<Y> = {},\n) => {\n const {\n props: {\n id,\n ref,\n name,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n betweenThumbs = 0,\n defaultValue = 0 as Y,\n disabled,\n getAriaValueText,\n max = 100,\n min = 0,\n orientation = \"horizontal\",\n readOnly,\n required,\n step = 1,\n value: valueProp,\n onChange: onChangeProp,\n onChangeEnd,\n onChangeStart,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const { t } = useI18n(\"slider\")\n const currentIndex = useRef(0)\n const interactive = !(disabled || readOnly)\n const [_, getPanEventProps] = usePanEvent<HTMLDivElement>({\n onEnd: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const start = currentIndex.current === 0\n const oppositeIndex = currentIndex.current === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeEnd?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n onChangeEnd?.(panValue as Y)\n }\n },\n onMove: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n onChange(currentIndex.current, panValue)\n },\n onStart: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const distances = value.map((value) => Math.abs(value - panValue))\n const closest = Math.min(...distances)\n const index = distances.indexOf(closest)\n\n currentIndex.current = index\n\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeStart?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n currentIndex.current = 0\n\n onChangeStart?.(value)\n }\n\n onChange(currentIndex.current, panValue)\n },\n })\n const range = !isNumber(value)\n const percent = (\n range\n ? value.map((value) => valueToPercent(value, min, max))\n : valueToPercent(value, min, max)\n ) as Y extends number ? number : number[]\n const tenStep = (max - min) / 10\n const oneStep = step || (max - min) / 100\n\n if (max < min) console.warn(\"Do not assign a number less than 'min' to 'max'\")\n\n const getMinMax = useCallback(\n (index: number) => {\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = range ? value[oppositeIndex] : value\n\n return {\n max: range ? (start ? oppositeValue - betweenThumbs : max) : max,\n min: range ? (start ? min : oppositeValue + betweenThumbs) : min,\n }\n },\n [betweenThumbs, max, min, range, value],\n )\n\n const getPanValue = useCallback(\n ({ x, y }: Point, { bottom, height, left, width }: DOMRect) => {\n const diff = orientation === \"horizontal\" ? x - left : bottom - y\n const length = orientation === \"horizontal\" ? width : height\n const percent = diff / length\n\n let nextValue = percentToValue(percent, min, max)\n\n nextValue = parseFloat(roundNumberToStep(nextValue, min, step))\n nextValue = clampNumber(nextValue, min, max)\n\n return nextValue\n },\n [orientation, min, max, step],\n )\n\n const onChange = useCallback(\n (index: number, value: number) => {\n if (!interactive) return\n\n const { max, min } = getMinMax(index)\n\n value = parseFloat(roundNumberToStep(value, min, oneStep))\n value = clampNumber(value, min, max)\n\n setValue((prev) => {\n if (isArray(prev)) {\n const next = [...prev]\n\n next[index] = value\n\n return next as Y\n } else {\n return value as Y\n }\n })\n },\n [getMinMax, interactive, oneStep, setValue],\n )\n\n const stepUp = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! + step)\n : onChange(index, value + step),\n [oneStep, range, onChange, value],\n )\n\n const stepDown = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! - step)\n : onChange(index, value - step),\n [oneStep, range, onChange, value],\n )\n\n const onKeyDown = useCallback(\n (index: number) => (ev: KeyboardEvent<HTMLDivElement>) => {\n const { max, min } = getMinMax(index)\n\n runKeyAction(ev, {\n ArrowDown: () => stepDown(index),\n ArrowLeft: () => stepDown(index),\n ArrowRight: () => stepUp(index),\n ArrowUp: () => stepUp(index),\n End: () => onChange(index, max),\n Home: () => onChange(index, min),\n PageDown: () => stepDown(index, tenStep),\n PageUp: () => stepUp(index, tenStep),\n })\n },\n [getMinMax, onChange, stepDown, stepUp, tenStep],\n )\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => {\n const computedProps: HTMLProps = mergeProps(\n dataProps,\n { \"data-orientation\": orientation },\n rest,\n props,\n { onBlur: eventProps.onBlur, onFocus: eventProps.onFocus },\n )()\n\n computedProps.style ??= {}\n\n if (isArray(percent)) {\n computedProps.style[\"--range-start\"] = `${Math.abs(percent[0]!)}%`\n computedProps.style[\"--range-end\"] = `${Math.abs(percent[1]!)}%`\n } else {\n computedProps.style[\"--range-start\"] = \"0%\"\n computedProps.style[\"--range-end\"] = `${Math.abs(percent)}%`\n }\n\n return computedProps\n },\n [dataProps, eventProps, orientation, percent, rest],\n )\n\n const getInputProps: PropGetter<\"input\", { index?: number }> = useCallback(\n ({ index = 0, ...props } = {}) => ({\n ...visuallyHiddenAttributes,\n ...dataProps,\n ...ariaProps,\n id,\n type: \"hidden\",\n name,\n disabled,\n readOnly,\n required,\n value: range ? value[index]! : value,\n ...props,\n ref: index === 0 ? mergeRefs(props.ref, ref) : props.ref,\n }),\n [\n dataProps,\n ariaProps,\n id,\n name,\n disabled,\n readOnly,\n required,\n range,\n value,\n ref,\n ],\n )\n\n const getTrackProps: PropGetter = useCallback(\n (props) =>\n getPanEventProps({\n ...dataProps,\n \"data-orientation\": orientation,\n ...props,\n }),\n [dataProps, getPanEventProps, orientation],\n )\n\n const getRangeProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n \"data-orientation\": orientation,\n \"data-range\": dataAttr(range),\n ...props,\n }),\n [dataProps, orientation, range],\n )\n\n const getMarkProps: RequiredPropGetter<\"div\", { value: number }> =\n useCallback(\n ({ style, value: valueProp, ...props }) => {\n const between = range\n ? value[0] < valueProp && valueProp < value[1]\n : valueProp < value\n const percent = valueToPercent(valueProp, min, max)\n\n return {\n ...dataProps,\n \"aria-hidden\": true,\n \"data-between\": dataAttr(between),\n \"data-orientation\": orientation,\n role: \"presentation\",\n ...props,\n style: { ...style, \"--mark-position\": `${percent}%` },\n }\n },\n [dataProps, max, min, orientation, range, value],\n )\n\n const getThumbProps: PropGetter<\"div\", { index?: number }> = useCallback(\n ({ index = 0, ...rest } = {}) => {\n const { max, min } = getMinMax(index)\n\n const props: HTMLProps = {\n ...dataProps,\n ...ariaProps,\n \"aria-label\": t(\"Slider thumb\"),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min,\n role: \"slider\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n \"aria-labelledby\": cx(rest[\"aria-labelledby\"], ariaLabelledBy),\n onKeyDown: handlerAll(rest.onKeyDown, onKeyDown(index)),\n }\n\n if (range) {\n const currentValue = value[index]!\n\n props[\"data-start\"] = dataAttr(index === 0)\n props[\"data-end\"] = dataAttr(index === 1)\n props[\"aria-valuenow\"] = currentValue\n props[\"aria-valuetext\"] =\n ariaValueText ??\n getAriaValueText?.(currentValue, index) ??\n currentValue.toString()\n } else {\n props[\"data-end\"] = dataAttr(index === 0)\n props[\"aria-valuenow\"] = value\n props[\"aria-valuetext\"] =\n ariaValueText ?? getAriaValueText?.(value, index) ?? value.toString()\n }\n\n return props\n },\n [\n t,\n ariaLabelledBy,\n ariaProps,\n ariaValueText,\n dataProps,\n getAriaValueText,\n getMinMax,\n interactive,\n onKeyDown,\n orientation,\n range,\n value,\n ],\n )\n\n return {\n percent,\n range,\n setValue,\n stepDown,\n stepUp,\n value,\n getInputProps,\n getMarkProps,\n getRangeProps,\n getRootProps,\n getThumbProps,\n getTrackProps,\n onChange,\n }\n}\n\nexport type UseSliderReturn = ReturnType<typeof useSlider>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","useComponentStyle","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot))\n return toCamelCase(toArray(slot).join(\"-\"))\n else return toCamelCase(slot.name)\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot))\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n else if (isObject(slot)) return toPascalCase(slot.name)\n else return toPascalCase(slot as string)\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","useComponentStyle","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot))\n return toCamelCase(toArray(slot).join(\"-\"))\n else return toCamelCase(slot.name)\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot))\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n else if (isObject(slot)) return toPascalCase(slot.name)\n else return toPascalCase(slot)\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\",\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-component-style.cjs","names":["conditions","getCondition","useSystem","useColorSchemeContext","isEqualProps","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint]))\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n\n 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 style = getStyle<Y>(mergedStyle[value])({ ...options, value })\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)) temp.push(...slot.map((slot) => style[slot]))\n else if (isObject(slot))\n if (isArray(slot.slot)) temp.push(...slot.slot.map((slot) => style[slot]))\n else temp.push(style[slot.slot])\n else temp.push(style[slot])\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 computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-component-style.cjs","names":["conditions","getCondition","useSystem","useColorSchemeContext","isEqualProps","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n }\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n }\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 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 style = getStyle<Y>(mergedStyle[value])({ ...options, value })\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) => toKebabCase(value))\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot))\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)) temp.push(...slot.map((slot) => style[slot]))\n else if (isObject(slot))\n if (isArray(slot.slot)) temp.push(...slot.slot.map((slot) => style[slot]))\n else temp.push(style[slot.slot])\n else temp.push(style[slot])\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 computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\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)) propsRef.current = props\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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"}