@yamada-ui/react 2.2.1-dev-20260419111242 → 2.2.1-dev-20260423163254

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 (287) hide show
  1. package/dist/cjs/components/autocomplete/autocomplete.cjs +1 -1
  2. package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
  3. package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
  4. package/dist/cjs/components/chart/chart.cjs.map +1 -1
  5. package/dist/cjs/components/date-picker/date-picker.cjs +1 -1
  6. package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
  7. package/dist/cjs/components/drawer/use-drawer.cjs +1 -1
  8. package/dist/cjs/components/drawer/use-drawer.cjs.map +1 -1
  9. package/dist/cjs/components/format/namespace.cjs.map +1 -1
  10. package/dist/cjs/components/group/use-group.cjs +1 -1
  11. package/dist/cjs/components/group/use-group.cjs.map +1 -1
  12. package/dist/cjs/components/indicator/indicator.cjs +4 -3
  13. package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
  14. package/dist/cjs/components/input/use-input-border.cjs +4 -2
  15. package/dist/cjs/components/input/use-input-border.cjs.map +1 -1
  16. package/dist/cjs/components/native-select/native-select.cjs +1 -1
  17. package/dist/cjs/components/native-select/native-select.cjs.map +1 -1
  18. package/dist/cjs/components/native-select/use-native-select.cjs +1 -1
  19. package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
  20. package/dist/cjs/components/number-input/number-input.style.cjs +1 -1
  21. package/dist/cjs/components/number-input/number-input.style.cjs.map +1 -1
  22. package/dist/cjs/components/password-input/password-input.style.cjs +1 -1
  23. package/dist/cjs/components/password-input/password-input.style.cjs.map +1 -1
  24. package/dist/cjs/components/select/select.cjs +1 -1
  25. package/dist/cjs/components/select/select.cjs.map +1 -1
  26. package/dist/cjs/components/sidebar/sidebar.cjs +1 -1
  27. package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
  28. package/dist/cjs/components/table/table.cjs +0 -3
  29. package/dist/cjs/components/table/table.cjs.map +1 -1
  30. package/dist/cjs/core/css/at-rule.cjs.map +1 -1
  31. package/dist/cjs/core/css/color-mix.cjs +1 -1
  32. package/dist/cjs/core/css/color-mix.cjs.map +1 -1
  33. package/dist/cjs/core/css/color-scheme.cjs.map +1 -1
  34. package/dist/cjs/core/css/styles.cjs +92 -92
  35. package/dist/cjs/core/css/styles.cjs.map +1 -1
  36. package/dist/cjs/core/system/var.cjs.map +1 -1
  37. package/dist/cjs/hooks/use-combobox/index.cjs +1 -1
  38. package/dist/cjs/hooks/use-combobox/index.cjs.map +1 -1
  39. package/dist/cjs/hooks/use-local-storage/index.cjs +1 -1
  40. package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
  41. package/dist/cjs/utils/ref.cjs +1 -1
  42. package/dist/cjs/utils/ref.cjs.map +1 -1
  43. package/dist/esm/components/autocomplete/autocomplete.js +1 -1
  44. package/dist/esm/components/autocomplete/autocomplete.js.map +1 -1
  45. package/dist/esm/components/calendar/use-calendar.js.map +1 -1
  46. package/dist/esm/components/chart/chart.js.map +1 -1
  47. package/dist/esm/components/date-picker/date-picker.js +1 -1
  48. package/dist/esm/components/date-picker/date-picker.js.map +1 -1
  49. package/dist/esm/components/drawer/use-drawer.js +1 -1
  50. package/dist/esm/components/drawer/use-drawer.js.map +1 -1
  51. package/dist/esm/components/format/namespace.js.map +1 -1
  52. package/dist/esm/components/group/use-group.js +1 -1
  53. package/dist/esm/components/group/use-group.js.map +1 -1
  54. package/dist/esm/components/indicator/indicator.js +4 -3
  55. package/dist/esm/components/indicator/indicator.js.map +1 -1
  56. package/dist/esm/components/input/use-input-border.js +4 -2
  57. package/dist/esm/components/input/use-input-border.js.map +1 -1
  58. package/dist/esm/components/native-select/native-select.js +1 -1
  59. package/dist/esm/components/native-select/native-select.js.map +1 -1
  60. package/dist/esm/components/native-select/use-native-select.js +1 -1
  61. package/dist/esm/components/native-select/use-native-select.js.map +1 -1
  62. package/dist/esm/components/number-input/number-input.style.js +1 -1
  63. package/dist/esm/components/number-input/number-input.style.js.map +1 -1
  64. package/dist/esm/components/password-input/password-input.style.js +1 -1
  65. package/dist/esm/components/password-input/password-input.style.js.map +1 -1
  66. package/dist/esm/components/select/select.js +1 -1
  67. package/dist/esm/components/select/select.js.map +1 -1
  68. package/dist/esm/components/sidebar/sidebar.js +1 -1
  69. package/dist/esm/components/sidebar/sidebar.js.map +1 -1
  70. package/dist/esm/components/table/table.js +0 -3
  71. package/dist/esm/components/table/table.js.map +1 -1
  72. package/dist/esm/core/css/at-rule.js.map +1 -1
  73. package/dist/esm/core/css/color-mix.js +1 -1
  74. package/dist/esm/core/css/color-mix.js.map +1 -1
  75. package/dist/esm/core/css/color-scheme.js.map +1 -1
  76. package/dist/esm/core/css/styles.js +92 -92
  77. package/dist/esm/core/css/styles.js.map +1 -1
  78. package/dist/esm/core/system/var.js.map +1 -1
  79. package/dist/esm/hooks/use-combobox/index.js +1 -1
  80. package/dist/esm/hooks/use-combobox/index.js.map +1 -1
  81. package/dist/esm/hooks/use-local-storage/index.js +1 -1
  82. package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
  83. package/dist/esm/utils/ref.js +1 -1
  84. package/dist/esm/utils/ref.js.map +1 -1
  85. package/dist/types/components/accordion/accordion.d.ts +2 -2
  86. package/dist/types/components/accordion/use-accordion.d.ts +11 -11
  87. package/dist/types/components/action-bar/action-bar.d.ts +2 -2
  88. package/dist/types/components/airy/airy.d.ts +2 -2
  89. package/dist/types/components/alert/alert.d.ts +2 -2
  90. package/dist/types/components/alert/alert.style.d.ts +1 -1
  91. package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
  92. package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
  93. package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
  94. package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
  95. package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
  96. package/dist/types/components/avatar/avatar.d.ts +5 -5
  97. package/dist/types/components/avatar/avatar.style.d.ts +1 -1
  98. package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
  99. package/dist/types/components/badge/badge.d.ts +2 -2
  100. package/dist/types/components/bleed/bleed.d.ts +2 -2
  101. package/dist/types/components/blockquote/blockquote.d.ts +2 -2
  102. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
  103. package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
  104. package/dist/types/components/button/button.d.ts +2 -2
  105. package/dist/types/components/button/icon-button.d.ts +2 -2
  106. package/dist/types/components/calendar/calendar.d.ts +2 -2
  107. package/dist/types/components/calendar/calendar.style.d.ts +2 -2
  108. package/dist/types/components/calendar/use-calendar.d.ts +9 -9
  109. package/dist/types/components/card/card.d.ts +2 -2
  110. package/dist/types/components/carousel/carousel.d.ts +2 -2
  111. package/dist/types/components/carousel/carousel.style.d.ts +2 -2
  112. package/dist/types/components/carousel/use-carousel.d.ts +3 -3
  113. package/dist/types/components/center/center.d.ts +2 -2
  114. package/dist/types/components/chart/area-chart.d.ts +2 -2
  115. package/dist/types/components/chart/bar-chart.d.ts +2 -2
  116. package/dist/types/components/chart/chart.d.ts +11 -9
  117. package/dist/types/components/chart/composed-chart.d.ts +2 -2
  118. package/dist/types/components/chart/donut-chart.d.ts +2 -2
  119. package/dist/types/components/chart/line-chart.d.ts +2 -2
  120. package/dist/types/components/chart/pie-chart.d.ts +2 -2
  121. package/dist/types/components/chart/use-chart.d.ts +2 -2
  122. package/dist/types/components/checkbox/checkbox.d.ts +4 -4
  123. package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
  124. package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
  125. package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
  126. package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
  127. package/dist/types/components/close-button/close-button.d.ts +2 -2
  128. package/dist/types/components/code/code.d.ts +2 -2
  129. package/dist/types/components/collapse/collapse.d.ts +2 -2
  130. package/dist/types/components/color-picker/color-picker.d.ts +2 -2
  131. package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
  132. package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
  133. package/dist/types/components/color-selector/color-selector.d.ts +2 -2
  134. package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
  135. package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
  136. package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
  137. package/dist/types/components/container/container.d.ts +2 -2
  138. package/dist/types/components/data-list/data-list.d.ts +2 -2
  139. package/dist/types/components/data-list/data-list.style.d.ts +1 -1
  140. package/dist/types/components/date-picker/date-picker.d.ts +2 -2
  141. package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
  142. package/dist/types/components/drawer/drawer.d.ts +2 -2
  143. package/dist/types/components/dropzone/dropzone.d.ts +5 -5
  144. package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
  145. package/dist/types/components/editable/editable.d.ts +4 -4
  146. package/dist/types/components/editable/use-editable.d.ts +2 -2
  147. package/dist/types/components/em/em.d.ts +2 -2
  148. package/dist/types/components/empty-state/empty-state.d.ts +2 -2
  149. package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
  150. package/dist/types/components/fade/fade.d.ts +2 -2
  151. package/dist/types/components/field/field.d.ts +3 -3
  152. package/dist/types/components/field/use-field-props.d.ts +4 -4
  153. package/dist/types/components/fieldset/fieldset.d.ts +3 -3
  154. package/dist/types/components/file-button/file-button.d.ts +2 -2
  155. package/dist/types/components/file-button/use-file-button.d.ts +18 -18
  156. package/dist/types/components/file-input/file-input.d.ts +2 -2
  157. package/dist/types/components/file-input/use-file-input.d.ts +15 -15
  158. package/dist/types/components/flex/flex.d.ts +2 -2
  159. package/dist/types/components/flip/flip.d.ts +2 -2
  160. package/dist/types/components/float/float.d.ts +2 -2
  161. package/dist/types/components/form/form.d.ts +3 -3
  162. package/dist/types/components/form/form.style.d.ts +1 -1
  163. package/dist/types/components/format/format-byte.d.ts +4 -4
  164. package/dist/types/components/format/format-date-time.d.ts +4 -4
  165. package/dist/types/components/format/format-number.d.ts +2 -2
  166. package/dist/types/components/grid/grid-item.d.ts +2 -2
  167. package/dist/types/components/grid/grid.d.ts +2 -2
  168. package/dist/types/components/group/group.d.ts +2 -2
  169. package/dist/types/components/group/use-group.d.ts +2 -2
  170. package/dist/types/components/heading/heading.d.ts +2 -2
  171. package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
  172. package/dist/types/components/icon/icon.d.ts +5 -5
  173. package/dist/types/components/image/image.d.ts +2 -2
  174. package/dist/types/components/indicator/indicator.d.ts +4 -4
  175. package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
  176. package/dist/types/components/input/input-addon.d.ts +2 -2
  177. package/dist/types/components/input/input-element.d.ts +2 -2
  178. package/dist/types/components/input/input.d.ts +2 -2
  179. package/dist/types/components/input/use-input-border.d.ts +2 -5
  180. package/dist/types/components/kbd/kbd.d.ts +2 -2
  181. package/dist/types/components/link/link.d.ts +2 -2
  182. package/dist/types/components/link-box/link-box.d.ts +2 -2
  183. package/dist/types/components/list/list.d.ts +2 -2
  184. package/dist/types/components/loading/loading-provider.d.ts +2 -2
  185. package/dist/types/components/loading/loading.d.ts +3 -3
  186. package/dist/types/components/mark/mark.d.ts +2 -2
  187. package/dist/types/components/menu/menu.d.ts +2 -2
  188. package/dist/types/components/menu/menu.style.d.ts +2 -2
  189. package/dist/types/components/menu/use-menu.d.ts +11 -11
  190. package/dist/types/components/modal/modal.d.ts +2 -2
  191. package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
  192. package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
  193. package/dist/types/components/native-popover/native-popover.d.ts +2 -2
  194. package/dist/types/components/native-select/native-select.d.ts +2 -2
  195. package/dist/types/components/native-table/native-table.d.ts +4 -4
  196. package/dist/types/components/number-input/number-input.d.ts +2 -2
  197. package/dist/types/components/number-input/number-input.style.d.ts +1 -1
  198. package/dist/types/components/pagination/pagination.d.ts +2 -2
  199. package/dist/types/components/pagination/use-pagination.d.ts +2 -2
  200. package/dist/types/components/password-input/password-input.d.ts +2 -2
  201. package/dist/types/components/password-input/strength-meter.d.ts +2 -2
  202. package/dist/types/components/password-input/use-password-input.d.ts +2 -2
  203. package/dist/types/components/pin-input/pin-input.d.ts +2 -2
  204. package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
  205. package/dist/types/components/popover/popover.d.ts +2 -2
  206. package/dist/types/components/progress/progress.d.ts +4 -4
  207. package/dist/types/components/progress/use-progress.d.ts +706 -706
  208. package/dist/types/components/qr-code/qr-code.d.ts +2 -2
  209. package/dist/types/components/radio/radio.d.ts +4 -4
  210. package/dist/types/components/radio/use-radio-group.d.ts +2 -2
  211. package/dist/types/components/radio-card/radio-card.d.ts +5 -5
  212. package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
  213. package/dist/types/components/rating/use-rating.d.ts +7 -7
  214. package/dist/types/components/reorder/reorder.d.ts +2 -2
  215. package/dist/types/components/reorder/use-reorder.d.ts +3 -3
  216. package/dist/types/components/resizable/resizable.d.ts +2 -2
  217. package/dist/types/components/resizable/use-resizable.d.ts +2 -2
  218. package/dist/types/components/ripple/ripple.d.ts +2 -2
  219. package/dist/types/components/ripple/use-ripple.d.ts +2 -2
  220. package/dist/types/components/rotate/rotate.d.ts +2 -2
  221. package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
  222. package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
  223. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  224. package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
  225. package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
  226. package/dist/types/components/select/select.d.ts +2 -2
  227. package/dist/types/components/select/select.style.d.ts +1 -1
  228. package/dist/types/components/select/use-select.d.ts +4 -4
  229. package/dist/types/components/separator/separator.d.ts +2 -2
  230. package/dist/types/components/sidebar/sidebar.d.ts +2 -2
  231. package/dist/types/components/sidebar/sidebar.style.d.ts +1 -1
  232. package/dist/types/components/sidebar/use-sidebar.d.ts +9 -9
  233. package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
  234. package/dist/types/components/skeleton/skeleton.d.ts +2 -2
  235. package/dist/types/components/slide/slide.d.ts +2 -2
  236. package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
  237. package/dist/types/components/slider/slider.d.ts +2 -2
  238. package/dist/types/components/slider/use-slider.d.ts +2 -2
  239. package/dist/types/components/stack/h-stack.d.ts +2 -2
  240. package/dist/types/components/stack/stack.d.ts +2 -2
  241. package/dist/types/components/stack/v-stack.d.ts +2 -2
  242. package/dist/types/components/stack/z-stack.d.ts +2 -2
  243. package/dist/types/components/stat/stat.d.ts +2 -2
  244. package/dist/types/components/status/status.d.ts +2 -2
  245. package/dist/types/components/steps/steps.d.ts +2 -2
  246. package/dist/types/components/steps/steps.style.d.ts +1 -1
  247. package/dist/types/components/steps/use-steps.d.ts +10 -10
  248. package/dist/types/components/switch/switch.d.ts +2 -2
  249. package/dist/types/components/table/table.d.ts +2 -2
  250. package/dist/types/components/tabs/tabs.d.ts +2 -2
  251. package/dist/types/components/tabs/use-tabs.d.ts +16 -16
  252. package/dist/types/components/tag/tag.d.ts +2 -2
  253. package/dist/types/components/text/text.d.ts +2 -2
  254. package/dist/types/components/textarea/textarea.d.ts +2 -2
  255. package/dist/types/components/textarea/use-autosize.d.ts +2 -2
  256. package/dist/types/components/timeline/timeline.d.ts +5 -5
  257. package/dist/types/components/timeline/timeline.style.d.ts +1 -1
  258. package/dist/types/components/toggle/toggle.d.ts +5 -5
  259. package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
  260. package/dist/types/components/toggle/use-toggle.d.ts +2 -2
  261. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  262. package/dist/types/components/tree/tree.d.ts +2 -2
  263. package/dist/types/components/tree/use-tree.d.ts +182 -182
  264. package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
  265. package/dist/types/components/wrap/wrap.d.ts +2 -2
  266. package/dist/types/core/components/create-component.d.ts +7 -7
  267. package/dist/types/core/css/index.d.ts +2 -2
  268. package/dist/types/core/css/index.types.d.ts +2 -1
  269. package/dist/types/core/css/styles.d.ts +44 -44
  270. package/dist/types/core/generated-theme-tokens.types.d.ts +17 -17
  271. package/dist/types/core/index.d.ts +2 -2
  272. package/dist/types/core/system/color-mode-provider.d.ts +2 -2
  273. package/dist/types/core/system/storage-script.d.ts +3 -3
  274. package/dist/types/core/system/styled.d.ts +2 -2
  275. package/dist/types/core/system/system-provider.d.ts +2 -2
  276. package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
  277. package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
  278. package/dist/types/hooks/use-combobox/index.d.ts +12 -12
  279. package/dist/types/hooks/use-counter/index.d.ts +2 -2
  280. package/dist/types/hooks/use-descendants/index.d.ts +2 -2
  281. package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
  282. package/dist/types/hooks/use-hover/index.d.ts +2 -2
  283. package/dist/types/index.d.ts +3 -3
  284. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
  285. package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
  286. package/dist/types/utils/children.d.ts +2 -2
  287. package/package.json +5 -5
@@ -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 isCSSVar,\n} from \"../css\"\nimport { isInterpolation } from \"../css/utils\"\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 if (isCSSVar(value) || isInterpolation(value)) {\n result.push([`--${target}`, value])\n } else {\n result.push([\n `--${target}`,\n token ? `{${token}.${value}, ${value}}` : value,\n ])\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":";;;;;;;;;;;;;AA6CA,SAAgB,uBACd,OACA,UACA;AACA,iCAAa,MAAM,CACjB,QAAO,MAAM,QAAQ,eAAe,GAAG,YAAU;EAC/C,MAAM,CAAC,OAAO,iBAAiBA,QAAM,MAAM,QAAQ;AAEnD,SAAO,SAAS,MAAM,MAAM,EAAE,eAAe,MAAM,CAAC;GACpD;KAEF,QAAO;;AAIX,SAAgB,OAAO,OAAe,UAAmB;AACvD,KAAI,CAAC,MAAM,WAAW,KAAK,CAAE,SAAQ,KAAK;AAE1C,SAAQ,MAAM,QAAQ,mBAAmB,GAAG;AAE5C,QAAO,WAAW,OAAO,MAAM,IAAI,SAAS,KAAK,OAAO,MAAM;;AAGhE,SAAgB,WAAW,QAAgB;AACzC,QAAO,SAAU,OAAe;AAG9B,SAAO,KAFQ,OAAO,OAAO,KAAK,aAAa,mBAE5B,GAAG;;;AAI1B,SAAgB,kBAAkB,QAAgB;AAChD,QAAO,SAAU,OAAY,UAAmB;AAC9C,MAAI,6BAAU,MAAM,CAAE,QAAO;EAE7B,MAAM,SAAS,OAAO,OAAO,KAAK,aAAa;EAE/C,MAAM,GAAG,SAAS,MAAM,MAAM,IAAI;AAElC,SAAO,OAAO,GAAG,OAAO,eAAe,SAAS,SAAS;;;AAI7D,MAAM,cAAc,UAAkB,MAAM,WAAW,aAAa;AACpE,MAAM,eAAe,UAAkB,MAAM,WAAW,aAAa;AACrE,MAAM,eAAe,UAAkB,MAAM,WAAW,cAAc;AACtE,MAAM,WAAW,UAAkB,MAAM,WAAW,UAAU;AAC9D,MAAM,WAAW,UAAkB,MAAM,WAAW,UAAU;AAC9D,MAAa,iBAAiB,sCACnB,MAAM,IAAI,MAAM,WAAW,eAAe,IAAI,CAAC,MAAM,SAAS,IAAI;AAE7E,SAAgB,WACd,SAAiB,oBACjB,OACA,aACA;AACA,QAAO,SAAU,QAAwB;EACvC,MAAM,EAAE,UAAU,iBAAiB;EAEnC,SAAS,WAAW,OAAyB;AAC3C,WAAQ,MAAM,QAAQ,OAAO,IAAI;AACjC,WAAQ,MAAM,QAAQ,OAAO,MAAM;GAEnC,MAAM,WAAW,KAAK,CAAC,kCAAe,OAAO,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;AAG5E,UAAO;IAAE,WAFS,OAAO,SAAS;IAEd;IAAU;;AAGhC,SAAO,SACL,SAAiB,EAAE,EACnB,UAAgB,EAAE,EAClB,YACmC;GACnC,MAAMC,SAAiB;IAAE,GAAG;IAAe;IAAQ;GACnD,MAAM,UAAU;IAAE;IAAK;IAAQ;IAAO;GAEtC,SAAS,oBACP,OACA,QAAqB,IAC2B;IAChD,MAAM,eAAe,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI;AAE3D,QAAI,UAAU,aAAc,QAAO,CAAC,QAAW,MAAM;AAIrD,QAAI,EAFgB,OAAO,iBAAiB,aAAa,eAEvC,QAAO,CAAC,QAAW,MAAM;IAE3C,MAAM,EAAE,WAAW,aAAa,WAAW,aAAa;AAExD,WAAO,CAAC,UAAU,UAAU;;GAG9B,SAAS,WAAW,OAAY;AAC9B,WAAO,uBAAuB,QAAQ,SAAO,kBAAkB;AAC7D,SAAID,QAAM,SAAS,UAAU,IAAIA,QAAM,SAAS,eAAe,EAAE;AAC/D,UAAI,cAAcA,QAAM,CAAE,QAAO,kBAAkB,OAAO,CAACA,QAAM;AAEjE,aAAO,SAASA,SAAO;OAAE,UAAU;OAAe;OAAQ,CAAC;gBAE7C,OAAOA,YAAU,aAAaA,SAG1C,QAAO,WAAWA,QAAM,CAAC;cAChBA,WAAS,UAAU,OAAOA,UAAQ,IAC3C,QAAO,OAAOA,SAAO;cACZ,eAAe;AACxB,sBACE,iBAAiB,UAAU,OAAO,gBAAgB,MAC9C,OAAO,gBAAgB,MACvB;AAEN,aAAO,SAAS,OAAO,GAAGA,QAAM,IAAI,cAAc;WAElD,QAAO,SAAS,OAAO,GAAGA,QAAM;MAGpC;;GAGJ,SAAS,kBAAkB,OAAe,WAAmB;IAE3D,MAAM,CAAC,OAAO,GAAG,QADH,MAAM,MAAM,IAAI;IAG9B,MAAM,gBAAgB,GAAG,MAAM,IAAI,KAAK,KAAK,IAAI;AAIjD,WAAO;KAAE,mBAFiBE,mBAAK,OAAO,UAAU;KAEpB;KAAe;;GAG7C,SAAS,mBAAmB,OAAsB;AAChD,mCAAY,MAAM,CAChB,QAAO,MAAM,KAAK,YAAU,UAAUF,SAAO,QAAQ,CAAC,CAAC,KAAK,IAAI;QAEhE,QAAO,UAAU,OAAO,QAAQ;;GAIpC,SAAS,kBAAkB,OAAe,OAAyB;AACjE,WAAO,SAAU,UAAmB;AAClC,SAAI,CAAC,SACH,QAAO,SAAS,OAAO,QAAQ;UAC1B;MACL,MAAM,CAAC,UAAU,aAAa,oBAAoB,OAAO,MAAM;AAE/D,aAAO,WAAW,YAAY,SAAS,OAAO,QAAQ;;;;GAK5D,SAAS,mBAAmB,OAAe,OAAY;AACrD,WAAO,SAAU,UAAmB;AAClC,SAAI,CAAC,SACH,QAAO,gBAAgB,IAAI,QAAQ,MAAM,CAAC,MAAM,CAAC;UAC5C;MACL,MAAM,CAAC,UAAU,aAAa,oBAAoB,OAAO,MAAM;AAE/D,aAAO,WACH,YACA,gBAAgB,IAAI,QAAQ,MAAM,CAAC,MAAM,CAAC;;;;GAKpD,SAAS,eACP,OACA,YACA,OACA;AACA,WAAO,SAAU,UAAmB;AAClC,SAAI,CAAC,SACH,QAAO,SAAS,OAAO;MAAE,GAAG;MAAS;MAAY,CAAC;UAC7C;MACL,MAAM,CAAC,UAAU,aAAa,oBAAoB,OAAO,MAAM;AAE/D,aAAO,WACH,YACA,SAAS,OAAO;OAAE,GAAG;OAAS;OAAY,CAAC;;;;GAKrD,SAAS,UACP,OACA,OACA,UACA;AACA,WAAO,SAAU,UAAmB,UAAoB,EAAE,EAAE;AAC1D,SAAI,YAAY,MAAM,CAAE,SAAQ,mBAAmB,MAAM;AAEzD,oCAAY,MAAM,EAAE;MAClB,MAAM,CAAC,YAAY,aAAa;AAEhC,gBAAU,OAAO,YAAY,SAAS,CAAC,UAAU,QAAQ;AACzD,gBACE,OACA,WACA,SACD,CAAC,UAAU,CAAC,GAAG,SAAS,WAAW,MAAM,CAAC;gBAClC,aAAa,OAAO,KAAK,CAClC,QAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAKA,aAAW;AAC9C,UAAI,QAAQ,OACV,WAAU,OAAOA,SAAO,SAAS,CAAC,UAAU,QAAQ;WAC/C;OACL,MAAM,QAAQ,SAAS,IAAI;AAE3B,WAAI,CAAC,MAAO;AAEZ,iBAAU,OAAOA,SAAO,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,MAAM,CAAC;;OAElE;UACG;MACL,MAAMG,gBAAkC,WAAW,MAAM;MAEzD,IAAIC,gBAAyC;AAE7C,UAAI,YAAY,MAAM,CACpB,iBAAgB,mBAAmB,OAAO,cAAc,CAAC,SAAS;eACzD,WAAW,MAAM,CAC1B,iBAAgB,kBAAkB,OAAO,cAAc,CAAC,SAAS;eACxD,QAAQ,MAAM,CACvB,iBAAgB,eACd,OACA,CAAC,SAAS,EACV,cACD,CAAC,SAAS;eACF,UAAU;OACnB,MAAM,GAAG,aAAa,oBAAoB,OAAO,cAAc;AAE/D,uBAAgB;;AAGlB,UAAI,6BAAU,cAAc,CAC1B,iBAAgB,GAAG,WAAW,eAAe;MAE/C,MAAM,kBAAkB,QAAQ,aAC7B,MAAM,SAAS,GAAG,MAAM,MAAM,GAC/B,cACD;AAED,yCAAgB,SAAS,gBAAgB;;;;AAK/C,QAAK,IAAI,CAAC,OAAO,EAAE,UAAU,YAAY,OAAO,QAAQ,OAAO,EAAE;IAC/D,MAAM,EAAE,WAAW,aAAa,WAAW,MAAM;AAEjD,cAAU,OAAO,OAAO,SAAS,CAAC,SAAS;AAE3C,QAAI,QAAQ,MAAM,EAAE;KAClB,MAAM,EAAE,mBAAmB,kBAAkB,kBAC3C,OACA,UACD;AAED,YAAO,iBAAiB;MAAE,KAAK;MAAmB,KAAK;MAAU;;AAGnE,WAAO,SAAS;KAAE,KAAK;KAAW,KAAK;KAAU;;AAGnD,UAAO;IAAE;IAAQ;IAAS;;;;AAOhC,SAAgB,UAAU,GAAG,KAAmB;AAC9C,QAAO,SAAU,YAA6B;EAC5C,IAAIC,SAAiB,EAAE;EACvB,IAAIC,UAAgB,EAAE;AAEtB,OAAK,MAAM,MAAM,KAAK;GACpB,MAAM,SAAS,GAAG,QAAQ,SAAS,WAAW;AAE9C,YAAS;IAAE,GAAG;IAAQ,GAAG,OAAO;IAAQ;AACxC,aAAU;IAAE,GAAG;IAAS,GAAG,OAAO;IAAS;;AAG7C,SAAO;GAAE;GAAQ;GAAS;;;AAI9B,SAAgB,QACd,OACA,OACA,eACe;AACf,oCAAgB,MAAM,8BAAW,MAAM,IAAI,cAAc,MAAM,CAAE,QAAO;AAExE,iCAAa,MAAM,+BAAY,MAAM,CACnC,yCAAqB,QAAQ,YAAU,QAAQN,SAAO,OAAO,cAAc,CAAC;KAE5E,QAAO,QACF,IAAI,MAAM,GAAG,MAAM,IAAI,iBAAiB,MAAM,KAC/C;;AAIR,SAAgB,WACd,YACA,SACA,eACG;AACH,KAAI,CAAC,WAAY,QAAO;CAExB,SAAS,SAAS,cAAkB;AAClC,SAAO,OAAO,YACZ,OAAO,QAAQO,aAAW,CAAC,QAAQ,SAAU,CAAC,MAAM,QAAQ;AAC1D,OAAI,gBAAgB,KAAK,CAAE,QAAO,CAAC,CAAC,MAAM,MAAM,CAAC;GAEjD,MAAM,SAAS,QAAQ;GACvB,MAAMC,SAA0B,EAAE;AAElC,OAAI,QAAQ;IACV,MAAM,EAAE,UAAU,SAAS,KAAK,IAAI,EAAE;AAEtC,QAAI,SAAS,MAAM,IAAI,gBAAgB,MAAM,CAC3C,QAAO,KAAK,CAAC,KAAK,UAAU,MAAM,CAAC;QAEnC,QAAO,KAAK,CACV,KAAK,UACL,QAAQ,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,MAC3C,CAAC;0CAEc,MAAM,CACxB,QAAO,KAAK,CAAC,MAAM,WAAW,OAAO,QAAQ,CAAC,CAAC;OAE/C,QAAO,KAAK,CAAC,MAAM,MAAM,CAAC;AAG5B,UAAO;IACP,CACH;;AAGH,gCAAY,WAAW,CACrB,QAAO,WAAW,IAAI,SAAS;KAE/B,QAAO,SAAS,WAAW"}
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 isCSSVar,\n} from \"../css\"\nimport { isInterpolation } from \"../css/utils\"\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 as number | string}, ${fallbackValue ?? (value as number | string)}}` 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 if (isCSSVar(value) || isInterpolation(value)) {\n result.push([`--${target}`, value])\n } else {\n result.push([\n `--${target}`,\n token ? `{${token}.${value}, ${value}}` : value,\n ])\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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"}
@@ -47,7 +47,7 @@ const createComboboxChildren = (items, { Empty, Group, Option }) => {
47
47
  children: label
48
48
  }, index);
49
49
  } else if ("items" in item) {
50
- const { items: items$1 = [], label, ...rest } = item;
50
+ const { items: items$1, label, ...rest } = item;
51
51
  return /* @__PURE__ */ jsx(Group, {
52
52
  label,
53
53
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["type","props","items","rest","label","index","createContext","getTriggerProps: PropGetter","getItemProps: PropGetter"],"sources":["../../../../src/hooks/use-combobox/index.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type { UsePopoverProps } from \"../../components/popover\"\nimport type { HTMLProps, PropGetter, SimpleDirection } from \"../../core\"\nimport type { Descendant } from \"../use-descendants\"\nimport type { UseDisclosureProps } from \"../use-disclosure\"\nimport { useCallback, useId, useMemo, useRef } from \"react\"\nimport scrollIntoView from \"scroll-into-view-if-needed\"\nimport { usePopoverProps } from \"../../components/popover\"\nimport { useEnvironment } from \"../../core\"\nimport {\n ariaAttr,\n createContext,\n cx,\n dataAttr,\n findChild,\n getValidChildren,\n handlerAll,\n isComposing,\n isSomeElement,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { createDescendants } from \"../use-descendants\"\nimport { useDisclosure } from \"../use-disclosure\"\n\ninterface ComboboxSharedItem extends Omit<HTMLProps, \"children\" | \"value\"> {\n label: ReactNode\n}\n\nexport interface ComboboxItemWithValue extends ComboboxSharedItem {\n query?: string\n value?: string\n}\n\nexport interface ComboboxItemWithItems extends ComboboxSharedItem {\n items: ComboboxItemWithValue[]\n}\n\nexport type ComboboxItem = ComboboxItemWithItems | ComboboxItemWithValue\n\nexport interface CreateComboboxItemOptions {\n Group: JSXElementConstructor<any>\n Label: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n}\n\nexport const createComboboxItem = (\n children: ReactNode,\n { Group, Label, Option }: CreateComboboxItemOptions,\n) => {\n const validChildren = getValidChildren(children)\n\n return validChildren\n .filter(\n ({ type }) => isSomeElement(type, Option) || isSomeElement(type, Group),\n )\n .map(({ type, props }) => {\n if (isSomeElement(type, Option)) {\n return { ...props, label: props.children }\n } else {\n const validChildren = getValidChildren(props.children)\n const label = findChild(validChildren, Label)\n\n return {\n ...props,\n items: validChildren\n .filter(({ type }) => isSomeElement(type, Option))\n .map(({ props }) => ({ ...props, label: props.children })),\n label: label?.props.children ?? props.label,\n }\n }\n })\n}\n\nexport interface CreateComboboxChildrenOptions {\n Group: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n Empty?: JSXElementConstructor<any>\n}\n\nexport const createComboboxChildren = (\n items: ComboboxItem[],\n { Empty, Group, Option }: CreateComboboxChildrenOptions,\n) => {\n return items.map((item, index) => {\n if (\"data-empty\" in item && Empty) {\n const { label, ...rest } = item\n\n return (\n <Empty key={index} {...rest}>\n {label}\n </Empty>\n )\n } else if (\"items\" in item) {\n const { items = [], label, ...rest } = item\n\n return (\n <Group key={index} label={label} {...rest}>\n {items.map(({ label, ...rest }, index) => (\n <Option key={index} {...rest}>\n {label}\n </Option>\n ))}\n </Group>\n )\n } else {\n const { label, ...rest } = item\n\n return (\n <Option key={index} {...rest}>\n {label}\n </Option>\n )\n }\n })\n}\n\nexport interface ComboboxDescendantProps {\n id: string\n closeOnSelect?: boolean\n value?: string\n}\nexport type ComboboxDescendant = Descendant<\n HTMLDivElement,\n ComboboxDescendantProps\n>\n\nconst {\n DescendantsContext: ComboboxDescendantsContext,\n useDescendant: useComboboxDescendant,\n useDescendantRegister: useComboboxDescendantRegister,\n useDescendants: useComboboxDescendants,\n} = createDescendants<HTMLDivElement, ComboboxDescendantProps>()\n\nexport {\n ComboboxDescendantsContext,\n useComboboxDescendant,\n useComboboxDescendantRegister,\n useComboboxDescendants,\n}\n\ninterface ComboboxContext extends Pick<\n UseComboboxReturn,\n \"onActiveDescendant\" | \"onClose\" | \"onSelect\"\n> {}\n\nconst [ComboboxContext, useComboboxContext] = createContext<ComboboxContext>({\n name: \"ComboboxContext\",\n})\n\ninterface ComboboxGroupContext extends Pick<\n UseComboboxGroupReturn,\n \"getLabelProps\"\n> {}\n\nconst [ComboboxGroupContext, useComboboxGroupContext] =\n createContext<ComboboxGroupContext>({\n name: \"ComboboxGroupContext\",\n })\n\nexport {\n ComboboxContext,\n ComboboxGroupContext,\n useComboboxContext,\n useComboboxGroupContext,\n}\n\nexport interface UseComboboxProps\n extends\n Omit<HTMLProps, \"onChange\">,\n Omit<UseDisclosureProps, \"timing\">,\n Omit<\n UsePopoverProps,\n \"autoFocus\" | \"initialFocusRef\" | \"modal\" | \"transform\" | \"updateRef\"\n > {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the combobox will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The value to focus on when the combobox is opened.\n */\n initialFocusValue?: string\n /**\n * If `true`, the combobox will be opened when click on the field.\n *\n * @default true\n */\n openOnClick?: boolean\n /**\n * If `true`, the combobox will be opened when enter is pressed.\n *\n * @default true\n */\n openOnEnter?: boolean\n /**\n * If `true`, the combobox will be opened when space is pressed.\n *\n * @default true\n */\n openOnSpace?: boolean\n /**\n * If `true`, the combobox will be readonly.\n *\n * @default false\n */\n readOnly?: boolean\n /**\n * The `ref` of the element that should receive focus when selected.\n */\n selectFocusRef?: RefObject<HTMLElement | null>\n /**\n * If `true`, the item will be selected when space is pressed.\n *\n * @default true\n */\n selectOnSpace?: boolean\n /**\n * The callback invoked when value is selected.\n */\n onChange?: (value: string) => void\n}\n\nexport const useCombobox = (props: UseComboboxProps = {}) => {\n const [\n { matchWidth = true, ...popoverProps },\n {\n \"aria-label\": ariaLabelProp,\n \"aria-labelledby\": ariaLabelledbyProp,\n closeOnSelect: closeOnSelectProp = true,\n defaultOpen,\n disabled,\n initialFocusValue,\n open: openProp,\n openOnClick = true,\n openOnEnter = true,\n openOnSpace = true,\n readOnly,\n selectFocusRef,\n selectOnSpace = true,\n onChange: onChangeProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n },\n ] = usePopoverProps(props, [\n \"disabled\",\n \"open\",\n \"defaultOpen\",\n \"onOpen\",\n \"onClose\",\n \"openOnClick\",\n ])\n const { getWindow } = useEnvironment()\n const interactive = !(readOnly || disabled)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const contentId = useId()\n const descendants = useComboboxDescendants()\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const activeDescendant = useRef<ComboboxDescendant | null>(null)\n const mergedPopoverProps = useMemo<UsePopoverProps>(\n () => ({\n autoFocus: false,\n matchWidth,\n openOnClick: false,\n ...popoverProps,\n disabled: !interactive,\n open,\n onClose,\n onOpen,\n }),\n [interactive, matchWidth, onClose, onOpen, open, popoverProps],\n )\n\n const onSelect = useCallback(\n (value?: string, closeOnSelect = closeOnSelectProp) => {\n const ref = selectFocusRef ?? triggerRef\n\n ref.current?.focus()\n\n if (!interactive || isUndefined(value)) return\n\n onChangeProp?.(value)\n\n if (!closeOnSelect) return\n\n onClose()\n },\n [closeOnSelectProp, interactive, onChangeProp, onClose, selectFocusRef],\n )\n\n const onScrollIntoView = useCallback(\n (descendant?: ComboboxDescendant, block: SimpleDirection = \"start\") => {\n if (!contentRef.current || !descendant) return\n\n const style = getWindow()?.getComputedStyle(contentRef.current)\n const padding =\n block === \"start\" ? style?.paddingBlockStart : style?.paddingBlockEnd\n const value = parseInt(padding ?? \"0px\")\n\n scrollIntoView(descendant.node, {\n behavior: (actions) =>\n actions.forEach(({ el, top }) => {\n el.scrollTop = block === \"start\" ? top - value : top + value\n }),\n block,\n boundary: contentRef.current,\n inline: \"nearest\",\n scrollMode: \"if-needed\",\n })\n },\n [getWindow],\n )\n\n const onActiveDescendant = useCallback(\n (descendant?: ComboboxDescendant) => {\n if (!triggerRef.current || !descendant || disabled) return\n\n triggerRef.current.setAttribute(\"aria-activedescendant\", descendant.id)\n\n activeDescendant.current = descendant\n\n descendants.active(descendant)\n },\n [descendants, disabled],\n )\n\n const onOpenWithActiveDescendant = useCallback(\n (\n getFallbackDescendant: () => ComboboxDescendant | undefined,\n block: SimpleDirection = \"start\",\n ) => {\n onOpen()\n\n setTimeout(() => {\n if (!initialFocusValue) {\n const descendant = getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n } else {\n const values = descendants.values()\n const descendant =\n values.find(({ value }) => initialFocusValue === value) ??\n getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n }\n })\n },\n [\n descendants,\n initialFocusValue,\n onActiveDescendant,\n onOpen,\n onScrollIntoView,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n\n ev.preventDefault()\n\n if (!open) {\n if (openOnClick)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n onClose()\n }\n },\n [\n descendants,\n disabled,\n onClose,\n onOpenWithActiveDescendant,\n open,\n openOnClick,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (disabled || isComposing(ev)) return\n\n runKeyAction(\n ev,\n {\n ArrowDown: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"start\" : \"end\",\n )\n } else {\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n }\n },\n ArrowUp: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledLastValue, \"end\")\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"end\" : \"start\",\n )\n } else {\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n }\n },\n End: (ev) => {\n ev.preventDefault()\n\n if (!open) return\n\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n },\n Enter: (ev) => {\n if (!open) {\n if (!openOnEnter) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n Home: (ev) => {\n if (!open) return\n\n ev.preventDefault()\n\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n },\n Space: (ev) => {\n if (!open) {\n if (!openOnSpace) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current || !selectOnSpace) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n disabled,\n open,\n onOpenWithActiveDescendant,\n descendants,\n onActiveDescendant,\n onScrollIntoView,\n openOnEnter,\n onSelect,\n openOnSpace,\n selectOnSpace,\n ],\n )\n\n useUpdateEffect(() => {\n if (open) return\n\n activeDescendant.current = null\n }, [open])\n\n const getTriggerProps: PropGetter = useCallback(\n ({\n ref,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n } = {}) => ({\n \"aria-controls\": open ? contentId : undefined,\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel || ariaLabelProp,\n \"aria-labelledby\": cx(ariaLabelledby, ariaLabelledbyProp),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(readOnly),\n role: \"combobox\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref, triggerRef),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [\n open,\n contentId,\n interactive,\n ariaLabelledbyProp,\n disabled,\n readOnly,\n ariaLabelProp,\n rest,\n onClick,\n onKeyDown,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id: contentId,\n role: \"listbox\",\n ...props,\n ref: mergeRefs(ref, contentRef),\n onKeyDown: handlerAll(props.onKeyDown),\n }),\n [contentId],\n )\n\n const getSeparatorProps: PropGetter = useCallback(\n (props) => ({ role: \"separator\", ...props }),\n [],\n )\n\n return {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps: mergedPopoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onScrollIntoView,\n onSelect,\n }\n}\n\nexport type UseComboboxReturn = ReturnType<typeof useCombobox>\n\nexport interface UseComboboxGroupProps extends HTMLProps {}\n\nexport const useComboboxGroup = ({\n \"aria-labelledby\": ariaLabelledbyProp,\n ...rest\n}: UseComboboxGroupProps = {}) => {\n const labelId = useId()\n\n const getGroupProps: PropGetter = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, labelId),\n role: \"group\",\n ...rest,\n ...props,\n }),\n [ariaLabelledbyProp, labelId, rest],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props) => ({ id: labelId, role: \"presentation\", ...props }),\n [labelId],\n )\n\n return { getGroupProps, getLabelProps }\n}\n\nexport type UseComboboxGroupReturn = ReturnType<typeof useComboboxGroup>\n\nexport interface UseComboboxItemProps extends HTMLProps {\n /**\n * If `true`, the item will be closed when selected.\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, the item will be selected.\n */\n selected?: boolean\n /**\n * The value of the item.\n */\n value?: string\n}\n\nexport const useComboboxItem = ({\n id,\n \"aria-disabled\": ariaDisabled,\n \"data-disabled\": dataDisabled,\n closeOnSelect,\n disabled = false,\n selected = false,\n value,\n ...rest\n}: UseComboboxItemProps = {}) => {\n const uuid = useId()\n const itemRef = useRef<HTMLDivElement>(null)\n const { onActiveDescendant, onClose, onSelect } = useComboboxContext()\n\n id ??= uuid\n\n const { descendants, register } = useComboboxDescendant({\n id,\n closeOnSelect,\n disabled,\n value,\n })\n\n const onActive = useCallback(() => {\n if (disabled) return\n\n const current = descendants.value(itemRef.current)\n\n onActiveDescendant(current)\n }, [descendants, disabled, onActiveDescendant])\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.preventDefault()\n\n if (disabled) return\n\n onSelect(value, closeOnSelect)\n },\n [closeOnSelect, disabled, onSelect, value],\n )\n\n const getItemProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id,\n \"aria-disabled\": ariaDisabled ?? ariaAttr(disabled),\n \"aria-selected\": selected,\n \"data-disabled\": dataDisabled ?? dataAttr(disabled),\n \"data-selected\": dataAttr(selected),\n \"data-value\": value,\n role: \"option\",\n tabIndex: -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref, itemRef, register),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onMouseMove: handlerAll(props.onMouseMove, rest.onMouseMove, onActive),\n }),\n [\n id,\n ariaDisabled,\n disabled,\n selected,\n dataDisabled,\n value,\n rest,\n register,\n onClick,\n onActive,\n ],\n )\n\n const getIndicatorProps: PropGetter = useCallback(\n ({ style, ...props } = {}) => ({\n style: { opacity: selected ? 1 : 0, ...style },\n ...props,\n }),\n [selected],\n )\n\n return {\n descendants,\n disabled,\n selected,\n getIndicatorProps,\n getItemProps,\n onActiveDescendant,\n onClose,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["type","props","items","rest","label","index","createContext","getTriggerProps: PropGetter","getItemProps: PropGetter"],"sources":["../../../../src/hooks/use-combobox/index.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type { UsePopoverProps } from \"../../components/popover\"\nimport type { HTMLProps, PropGetter, SimpleDirection } from \"../../core\"\nimport type { Descendant } from \"../use-descendants\"\nimport type { UseDisclosureProps } from \"../use-disclosure\"\nimport { useCallback, useId, useMemo, useRef } from \"react\"\nimport scrollIntoView from \"scroll-into-view-if-needed\"\nimport { usePopoverProps } from \"../../components/popover\"\nimport { useEnvironment } from \"../../core\"\nimport {\n ariaAttr,\n createContext,\n cx,\n dataAttr,\n findChild,\n getValidChildren,\n handlerAll,\n isComposing,\n isSomeElement,\n isUndefined,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n} from \"../../utils\"\nimport { createDescendants } from \"../use-descendants\"\nimport { useDisclosure } from \"../use-disclosure\"\n\ninterface ComboboxSharedItem extends Omit<HTMLProps, \"children\" | \"value\"> {\n label: ReactNode\n}\n\nexport interface ComboboxItemWithValue extends ComboboxSharedItem {\n query?: string\n value?: string\n}\n\nexport interface ComboboxItemWithItems extends ComboboxSharedItem {\n items: ComboboxItemWithValue[]\n}\n\nexport type ComboboxItem = ComboboxItemWithItems | ComboboxItemWithValue\n\nexport interface CreateComboboxItemOptions {\n Group: JSXElementConstructor<any>\n Label: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n}\n\nexport const createComboboxItem = (\n children: ReactNode,\n { Group, Label, Option }: CreateComboboxItemOptions,\n) => {\n const validChildren = getValidChildren(children)\n\n return validChildren\n .filter(\n ({ type }) => isSomeElement(type, Option) || isSomeElement(type, Group),\n )\n .map(({ type, props }) => {\n if (isSomeElement(type, Option)) {\n return { ...props, label: props.children }\n } else {\n const validChildren = getValidChildren(props.children)\n const label = findChild(validChildren, Label)\n\n return {\n ...props,\n items: validChildren\n .filter(({ type }) => isSomeElement(type, Option))\n .map(({ props }) => ({ ...props, label: props.children })),\n label: label?.props.children ?? props.label,\n }\n }\n })\n}\n\nexport interface CreateComboboxChildrenOptions {\n Group: JSXElementConstructor<any>\n Option: JSXElementConstructor<any>\n Empty?: JSXElementConstructor<any>\n}\n\nexport const createComboboxChildren = (\n items: ComboboxItem[],\n { Empty, Group, Option }: CreateComboboxChildrenOptions,\n) => {\n return items.map((item, index) => {\n if (\"data-empty\" in item && Empty) {\n const { label, ...rest } = item\n\n return (\n <Empty key={index} {...rest}>\n {label}\n </Empty>\n )\n } else if (\"items\" in item) {\n const { items, label, ...rest } = item\n\n return (\n <Group key={index} label={label} {...rest}>\n {items.map(({ label, ...rest }, index) => (\n <Option key={index} {...rest}>\n {label}\n </Option>\n ))}\n </Group>\n )\n } else {\n const { label, ...rest } = item\n\n return (\n <Option key={index} {...rest}>\n {label}\n </Option>\n )\n }\n })\n}\n\nexport interface ComboboxDescendantProps {\n id: string\n closeOnSelect?: boolean\n value?: string\n}\nexport type ComboboxDescendant = Descendant<\n HTMLDivElement,\n ComboboxDescendantProps\n>\n\nconst {\n DescendantsContext: ComboboxDescendantsContext,\n useDescendant: useComboboxDescendant,\n useDescendantRegister: useComboboxDescendantRegister,\n useDescendants: useComboboxDescendants,\n} = createDescendants<HTMLDivElement, ComboboxDescendantProps>()\n\nexport {\n ComboboxDescendantsContext,\n useComboboxDescendant,\n useComboboxDescendantRegister,\n useComboboxDescendants,\n}\n\ninterface ComboboxContext extends Pick<\n UseComboboxReturn,\n \"onActiveDescendant\" | \"onClose\" | \"onSelect\"\n> {}\n\nconst [ComboboxContext, useComboboxContext] = createContext<ComboboxContext>({\n name: \"ComboboxContext\",\n})\n\ninterface ComboboxGroupContext extends Pick<\n UseComboboxGroupReturn,\n \"getLabelProps\"\n> {}\n\nconst [ComboboxGroupContext, useComboboxGroupContext] =\n createContext<ComboboxGroupContext>({\n name: \"ComboboxGroupContext\",\n })\n\nexport {\n ComboboxContext,\n ComboboxGroupContext,\n useComboboxContext,\n useComboboxGroupContext,\n}\n\nexport interface UseComboboxProps\n extends\n Omit<HTMLProps, \"onChange\">,\n Omit<UseDisclosureProps, \"timing\">,\n Omit<\n UsePopoverProps,\n \"autoFocus\" | \"initialFocusRef\" | \"modal\" | \"transform\" | \"updateRef\"\n > {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the combobox will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The value to focus on when the combobox is opened.\n */\n initialFocusValue?: string\n /**\n * If `true`, the combobox will be opened when click on the field.\n *\n * @default true\n */\n openOnClick?: boolean\n /**\n * If `true`, the combobox will be opened when enter is pressed.\n *\n * @default true\n */\n openOnEnter?: boolean\n /**\n * If `true`, the combobox will be opened when space is pressed.\n *\n * @default true\n */\n openOnSpace?: boolean\n /**\n * If `true`, the combobox will be readonly.\n *\n * @default false\n */\n readOnly?: boolean\n /**\n * The `ref` of the element that should receive focus when selected.\n */\n selectFocusRef?: RefObject<HTMLElement | null>\n /**\n * If `true`, the item will be selected when space is pressed.\n *\n * @default true\n */\n selectOnSpace?: boolean\n /**\n * The callback invoked when value is selected.\n */\n onChange?: (value: string) => void\n}\n\nexport const useCombobox = (props: UseComboboxProps = {}) => {\n const [\n { matchWidth = true, ...popoverProps },\n {\n \"aria-label\": ariaLabelProp,\n \"aria-labelledby\": ariaLabelledbyProp,\n closeOnSelect: closeOnSelectProp = true,\n defaultOpen,\n disabled,\n initialFocusValue,\n open: openProp,\n openOnClick = true,\n openOnEnter = true,\n openOnSpace = true,\n readOnly,\n selectFocusRef,\n selectOnSpace = true,\n onChange: onChangeProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n },\n ] = usePopoverProps(props, [\n \"disabled\",\n \"open\",\n \"defaultOpen\",\n \"onOpen\",\n \"onClose\",\n \"openOnClick\",\n ])\n const { getWindow } = useEnvironment()\n const interactive = !(readOnly || disabled)\n const triggerRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const contentId = useId()\n const descendants = useComboboxDescendants()\n const { open, onClose, onOpen } = useDisclosure({\n defaultOpen,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const activeDescendant = useRef<ComboboxDescendant | null>(null)\n const mergedPopoverProps = useMemo<UsePopoverProps>(\n () => ({\n autoFocus: false,\n matchWidth,\n openOnClick: false,\n ...popoverProps,\n disabled: !interactive,\n open,\n onClose,\n onOpen,\n }),\n [interactive, matchWidth, onClose, onOpen, open, popoverProps],\n )\n\n const onSelect = useCallback(\n (value?: string, closeOnSelect = closeOnSelectProp) => {\n const ref = selectFocusRef ?? triggerRef\n\n ref.current?.focus()\n\n if (!interactive || isUndefined(value)) return\n\n onChangeProp?.(value)\n\n if (!closeOnSelect) return\n\n onClose()\n },\n [closeOnSelectProp, interactive, onChangeProp, onClose, selectFocusRef],\n )\n\n const onScrollIntoView = useCallback(\n (descendant?: ComboboxDescendant, block: SimpleDirection = \"start\") => {\n if (!contentRef.current || !descendant) return\n\n const style = getWindow()?.getComputedStyle(contentRef.current)\n const padding =\n block === \"start\" ? style?.paddingBlockStart : style?.paddingBlockEnd\n const value = parseInt(padding ?? \"0px\")\n\n scrollIntoView(descendant.node, {\n behavior: (actions) =>\n actions.forEach(({ el, top }) => {\n el.scrollTop = block === \"start\" ? top - value : top + value\n }),\n block,\n boundary: contentRef.current,\n inline: \"nearest\",\n scrollMode: \"if-needed\",\n })\n },\n [getWindow],\n )\n\n const onActiveDescendant = useCallback(\n (descendant?: ComboboxDescendant) => {\n if (!triggerRef.current || !descendant || disabled) return\n\n triggerRef.current.setAttribute(\"aria-activedescendant\", descendant.id)\n\n activeDescendant.current = descendant\n\n descendants.active(descendant)\n },\n [descendants, disabled],\n )\n\n const onOpenWithActiveDescendant = useCallback(\n (\n getFallbackDescendant: () => ComboboxDescendant | undefined,\n block: SimpleDirection = \"start\",\n ) => {\n onOpen()\n\n setTimeout(() => {\n if (!initialFocusValue) {\n const descendant = getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n } else {\n const values = descendants.values()\n const descendant =\n values.find(({ value }) => initialFocusValue === value) ??\n getFallbackDescendant()\n\n onActiveDescendant(descendant)\n onScrollIntoView(descendant, block)\n }\n })\n },\n [\n descendants,\n initialFocusValue,\n onActiveDescendant,\n onOpen,\n onScrollIntoView,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n\n ev.preventDefault()\n\n if (!open) {\n if (openOnClick)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n onClose()\n }\n },\n [\n descendants,\n disabled,\n onClose,\n onOpenWithActiveDescendant,\n open,\n openOnClick,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (disabled || isComposing(ev)) return\n\n runKeyAction(\n ev,\n {\n ArrowDown: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"start\" : \"end\",\n )\n } else {\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n }\n },\n ArrowUp: (ev) => {\n ev.preventDefault()\n\n if (!open) {\n onOpenWithActiveDescendant(descendants.enabledLastValue, \"end\")\n } else if (activeDescendant.current) {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n )\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(\n descendant,\n descendant?.recurred ? \"end\" : \"start\",\n )\n } else {\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n }\n },\n End: (ev) => {\n ev.preventDefault()\n\n if (!open) return\n\n const descendant = descendants.enabledLastValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant, \"end\")\n },\n Enter: (ev) => {\n if (!open) {\n if (!openOnEnter) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n Home: (ev) => {\n if (!open) return\n\n ev.preventDefault()\n\n const descendant = descendants.enabledFirstValue()\n\n onActiveDescendant(descendant)\n\n onScrollIntoView(descendant)\n },\n Space: (ev) => {\n if (!open) {\n if (!openOnSpace) return\n\n ev.preventDefault()\n\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n } else {\n if (!activeDescendant.current || !selectOnSpace) return\n\n ev.preventDefault()\n\n const { closeOnSelect, value } = activeDescendant.current\n\n onSelect(value, closeOnSelect)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n disabled,\n open,\n onOpenWithActiveDescendant,\n descendants,\n onActiveDescendant,\n onScrollIntoView,\n openOnEnter,\n onSelect,\n openOnSpace,\n selectOnSpace,\n ],\n )\n\n useUpdateEffect(() => {\n if (open) return\n\n activeDescendant.current = null\n }, [open])\n\n const getTriggerProps: PropGetter = useCallback(\n ({\n ref,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n } = {}) => ({\n \"aria-controls\": open ? contentId : undefined,\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel || ariaLabelProp,\n \"aria-labelledby\": cx(ariaLabelledby, ariaLabelledbyProp),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(readOnly),\n role: \"combobox\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref, triggerRef),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [\n open,\n contentId,\n interactive,\n ariaLabelledbyProp,\n disabled,\n readOnly,\n ariaLabelProp,\n rest,\n onClick,\n onKeyDown,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id: contentId,\n role: \"listbox\",\n ...props,\n ref: mergeRefs(ref, contentRef),\n onKeyDown: handlerAll(props.onKeyDown),\n }),\n [contentId],\n )\n\n const getSeparatorProps: PropGetter = useCallback(\n (props) => ({ role: \"separator\", ...props }),\n [],\n )\n\n return {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps: mergedPopoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onScrollIntoView,\n onSelect,\n }\n}\n\nexport type UseComboboxReturn = ReturnType<typeof useCombobox>\n\nexport interface UseComboboxGroupProps extends HTMLProps {}\n\nexport const useComboboxGroup = ({\n \"aria-labelledby\": ariaLabelledbyProp,\n ...rest\n}: UseComboboxGroupProps = {}) => {\n const labelId = useId()\n\n const getGroupProps: PropGetter = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-labelledby\": cx(ariaLabelledbyProp, ariaLabelledby, labelId),\n role: \"group\",\n ...rest,\n ...props,\n }),\n [ariaLabelledbyProp, labelId, rest],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props) => ({ id: labelId, role: \"presentation\", ...props }),\n [labelId],\n )\n\n return { getGroupProps, getLabelProps }\n}\n\nexport type UseComboboxGroupReturn = ReturnType<typeof useComboboxGroup>\n\nexport interface UseComboboxItemProps extends HTMLProps {\n /**\n * If `true`, the item will be closed when selected.\n */\n closeOnSelect?: boolean\n /**\n * If `true`, the item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, the item will be selected.\n */\n selected?: boolean\n /**\n * The value of the item.\n */\n value?: string\n}\n\nexport const useComboboxItem = ({\n id,\n \"aria-disabled\": ariaDisabled,\n \"data-disabled\": dataDisabled,\n closeOnSelect,\n disabled = false,\n selected = false,\n value,\n ...rest\n}: UseComboboxItemProps = {}) => {\n const uuid = useId()\n const itemRef = useRef<HTMLDivElement>(null)\n const { onActiveDescendant, onClose, onSelect } = useComboboxContext()\n\n id ??= uuid\n\n const { descendants, register } = useComboboxDescendant({\n id,\n closeOnSelect,\n disabled,\n value,\n })\n\n const onActive = useCallback(() => {\n if (disabled) return\n\n const current = descendants.value(itemRef.current)\n\n onActiveDescendant(current)\n }, [descendants, disabled, onActiveDescendant])\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.preventDefault()\n\n if (disabled) return\n\n onSelect(value, closeOnSelect)\n },\n [closeOnSelect, disabled, onSelect, value],\n )\n\n const getItemProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) => ({\n id,\n \"aria-disabled\": ariaDisabled ?? ariaAttr(disabled),\n \"aria-selected\": selected,\n \"data-disabled\": dataDisabled ?? dataAttr(disabled),\n \"data-selected\": dataAttr(selected),\n \"data-value\": value,\n role: \"option\",\n tabIndex: -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, rest.ref, itemRef, register),\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onMouseMove: handlerAll(props.onMouseMove, rest.onMouseMove, onActive),\n }),\n [\n id,\n ariaDisabled,\n disabled,\n selected,\n dataDisabled,\n value,\n rest,\n register,\n onClick,\n onActive,\n ],\n )\n\n const getIndicatorProps: PropGetter = useCallback(\n ({ style, ...props } = {}) => ({\n style: { opacity: selected ? 1 : 0, ...style },\n ...props,\n }),\n [selected],\n )\n\n return {\n descendants,\n disabled,\n selected,\n getIndicatorProps,\n getItemProps,\n onActiveDescendant,\n onClose,\n }\n}\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ const deserializeJSON = (value) => {
22
22
  };
23
23
  const createStorage = (type, name) => {
24
24
  const eventName = type === "localStorage" ? "local-storage" : "session-storage";
25
- return ({ key, defaultValue = void 0, deserialize = deserializeJSON, getInitialValueInEffect = true, serialize = (value$1) => serializeJSON(value$1, name) }) => {
25
+ return ({ key, defaultValue, deserialize = deserializeJSON, getInitialValueInEffect = true, serialize = (value$1) => serializeJSON(value$1, name) }) => {
26
26
  const readStorageValue = useCallback((skipStorage) => {
27
27
  if (typeof window === "undefined" || !(type in window) || window[type] == null || skipStorage) return defaultValue ?? "";
28
28
  const storageValue = window[type].getItem(key);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["value"],"sources":["../../../../src/hooks/use-local-storage/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isFunction } from \"../../utils\"\nimport { useWindowEvent } from \"../use-window-event\"\n\nexport type StorageType = \"localStorage\" | \"sessionStorage\"\n\nexport interface StorageProps<Y> {\n key: string\n defaultValue?: Y\n getInitialValueInEffect?: boolean\n deserialize?: (value: string | undefined) => Y\n serialize?: (value: Y) => string\n}\n\nconst serializeJSON = <Y>(value: Y, name: string) => {\n try {\n return JSON.stringify(value)\n } catch {\n throw new Error(`useLocalStorage ${name}: Failed to serialize the value`)\n }\n}\n\nconst deserializeJSON = (value: string | undefined) => {\n if (!value) return value\n\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport const createStorage = <Y>(type: StorageType, name: string) => {\n const eventName =\n type === \"localStorage\" ? \"local-storage\" : \"session-storage\"\n\n return ({\n key,\n defaultValue = undefined,\n deserialize = deserializeJSON,\n getInitialValueInEffect = true,\n serialize = (value: Y) => serializeJSON(value, name),\n }: StorageProps<Y>) => {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): Y => {\n if (\n typeof window === \"undefined\" ||\n !(type in window) ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n window[type] == null ||\n skipStorage\n ) {\n return (defaultValue ?? \"\") as Y\n }\n\n const storageValue = window[type].getItem(key)\n\n return storageValue !== null\n ? deserialize(storageValue)\n : ((defaultValue ?? \"\") as Y)\n },\n [key, deserialize, defaultValue],\n )\n\n const [value, setValue] = useState<Y>(\n readStorageValue(getInitialValueInEffect),\n )\n\n const setStorageValue = useCallback(\n (valOrFn: ((prevState: Y) => Y) | Y) => {\n if (isFunction(valOrFn)) {\n setValue((current) => {\n const result = valOrFn(current)\n\n window[type].setItem(key, serialize(result))\n window.dispatchEvent(\n new CustomEvent(eventName, {\n detail: { key, value: valOrFn(current) },\n }),\n )\n\n return result\n })\n } else {\n window[type].setItem(key, serialize(valOrFn))\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: valOrFn } }),\n )\n\n setValue(valOrFn)\n }\n },\n [key, serialize],\n )\n\n const removeStorageValue = useCallback(() => {\n window[type].removeItem(key)\n setValue(defaultValue as Y)\n }, [defaultValue, key])\n\n useWindowEvent(\"storage\", (ev) => {\n if (ev.storageArea === window[type] && ev.key === key)\n setValue(deserialize(ev.newValue ?? undefined))\n })\n\n useWindowEvent(eventName, (ev) => {\n if (ev.detail.key === key) setValue(ev.detail.value)\n })\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined)\n setStorageValue(defaultValue)\n }, [defaultValue, value, setStorageValue])\n\n useEffect(() => {\n if (getInitialValueInEffect) setValue(readStorageValue())\n }, [getInitialValueInEffect, readStorageValue])\n\n return [\n value === undefined ? defaultValue : value,\n setStorageValue,\n removeStorageValue,\n ] as const\n }\n}\n\n/**\n * `useLocalStorage` is a custom hook for storing, updating, and retrieving values in local storage.\n *\n * @see https://yamada-ui.com/docs/hooks/use-local-storage\n */\nexport const useLocalStorage = <Y = string>(props: StorageProps<Y>) =>\n createStorage<Y>(\"localStorage\", \"use-local-storage\")(props)\n"],"mappings":";;;;;;;AAgBA,MAAM,iBAAoB,OAAU,SAAiB;AACnD,KAAI;AACF,SAAO,KAAK,UAAU,MAAM;SACtB;AACN,QAAM,IAAI,MAAM,mBAAmB,KAAK,iCAAiC;;;AAI7E,MAAM,mBAAmB,UAA8B;AACrD,KAAI,CAAC,MAAO,QAAO;AAEnB,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AACN,SAAO;;;AAIX,MAAa,iBAAoB,MAAmB,SAAiB;CACnE,MAAM,YACJ,SAAS,iBAAiB,kBAAkB;AAE9C,SAAQ,EACN,KACA,eAAe,QACf,cAAc,iBACd,0BAA0B,MAC1B,aAAa,YAAa,cAAcA,SAAO,KAAK,OAC/B;EACrB,MAAM,mBAAmB,aACtB,gBAA6B;AAC5B,OACE,OAAO,WAAW,eAClB,EAAE,QAAQ,WAEV,OAAO,SAAS,QAChB,YAEA,QAAQ,gBAAgB;GAG1B,MAAM,eAAe,OAAO,MAAM,QAAQ,IAAI;AAE9C,UAAO,iBAAiB,OACpB,YAAY,aAAa,GACvB,gBAAgB;KAExB;GAAC;GAAK;GAAa;GAAa,CACjC;EAED,MAAM,CAAC,OAAO,YAAY,SACxB,iBAAiB,wBAAwB,CAC1C;EAED,MAAM,kBAAkB,aACrB,YAAuC;AACtC,qCAAe,QAAQ,CACrB,WAAU,YAAY;IACpB,MAAM,SAAS,QAAQ,QAAQ;AAE/B,WAAO,MAAM,QAAQ,KAAK,UAAU,OAAO,CAAC;AAC5C,WAAO,cACL,IAAI,YAAY,WAAW,EACzB,QAAQ;KAAE;KAAK,OAAO,QAAQ,QAAQ;KAAE,EACzC,CAAC,CACH;AAED,WAAO;KACP;QACG;AACL,WAAO,MAAM,QAAQ,KAAK,UAAU,QAAQ,CAAC;AAC7C,WAAO,cACL,IAAI,YAAY,WAAW,EAAE,QAAQ;KAAE;KAAK,OAAO;KAAS,EAAE,CAAC,CAChE;AAED,aAAS,QAAQ;;KAGrB,CAAC,KAAK,UAAU,CACjB;EAED,MAAM,qBAAqB,kBAAkB;AAC3C,UAAO,MAAM,WAAW,IAAI;AAC5B,YAAS,aAAkB;KAC1B,CAAC,cAAc,IAAI,CAAC;AAEvB,iBAAe,YAAY,OAAO;AAChC,OAAI,GAAG,gBAAgB,OAAO,SAAS,GAAG,QAAQ,IAChD,UAAS,YAAY,GAAG,YAAY,OAAU,CAAC;IACjD;AAEF,iBAAe,YAAY,OAAO;AAChC,OAAI,GAAG,OAAO,QAAQ,IAAK,UAAS,GAAG,OAAO,MAAM;IACpD;AAEF,kBAAgB;AACd,OAAI,iBAAiB,UAAa,UAAU,OAC1C,iBAAgB,aAAa;KAC9B;GAAC;GAAc;GAAO;GAAgB,CAAC;AAE1C,kBAAgB;AACd,OAAI,wBAAyB,UAAS,kBAAkB,CAAC;KACxD,CAAC,yBAAyB,iBAAiB,CAAC;AAE/C,SAAO;GACL,UAAU,SAAY,eAAe;GACrC;GACA;GACD;;;;;;;;AASL,MAAa,mBAA+B,UAC1C,cAAiB,gBAAgB,oBAAoB,CAAC,MAAM"}
1
+ {"version":3,"file":"index.js","names":["value"],"sources":["../../../../src/hooks/use-local-storage/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isFunction } from \"../../utils\"\nimport { useWindowEvent } from \"../use-window-event\"\n\nexport type StorageType = \"localStorage\" | \"sessionStorage\"\n\nexport interface StorageProps<Y> {\n key: string\n defaultValue?: Y\n getInitialValueInEffect?: boolean\n deserialize?: (value: string | undefined) => Y\n serialize?: (value: Y) => string\n}\n\nconst serializeJSON = <Y>(value: Y, name: string) => {\n try {\n return JSON.stringify(value)\n } catch {\n throw new Error(`useLocalStorage ${name}: Failed to serialize the value`)\n }\n}\n\nconst deserializeJSON = (value: string | undefined) => {\n if (!value) return value\n\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport const createStorage = <Y>(type: StorageType, name: string) => {\n const eventName =\n type === \"localStorage\" ? \"local-storage\" : \"session-storage\"\n\n return ({\n key,\n defaultValue,\n deserialize = deserializeJSON,\n getInitialValueInEffect = true,\n serialize = (value: Y) => serializeJSON(value, name),\n }: StorageProps<Y>) => {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): Y => {\n if (\n typeof window === \"undefined\" ||\n !(type in window) ||\n (window[type] as null | Storage | undefined) == null ||\n skipStorage\n ) {\n return (defaultValue ?? \"\") as Y\n }\n\n const storageValue = window[type].getItem(key)\n\n return storageValue !== null\n ? deserialize(storageValue)\n : ((defaultValue ?? \"\") as Y)\n },\n [key, deserialize, defaultValue],\n )\n\n const [value, setValue] = useState<Y>(\n readStorageValue(getInitialValueInEffect),\n )\n\n const setStorageValue = useCallback(\n (valOrFn: ((prevState: Y) => Y) | Y) => {\n if (isFunction(valOrFn)) {\n setValue((current) => {\n const result = valOrFn(current)\n\n window[type].setItem(key, serialize(result))\n window.dispatchEvent(\n new CustomEvent(eventName, {\n detail: { key, value: valOrFn(current) },\n }),\n )\n\n return result\n })\n } else {\n window[type].setItem(key, serialize(valOrFn))\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: valOrFn } }),\n )\n\n setValue(valOrFn)\n }\n },\n [key, serialize],\n )\n\n const removeStorageValue = useCallback(() => {\n window[type].removeItem(key)\n setValue(defaultValue as Y)\n }, [defaultValue, key])\n\n useWindowEvent(\"storage\", (ev) => {\n if (ev.storageArea === window[type] && ev.key === key)\n setValue(deserialize(ev.newValue ?? undefined))\n })\n\n useWindowEvent(eventName, (ev) => {\n if (ev.detail.key === key) setValue(ev.detail.value)\n })\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined)\n setStorageValue(defaultValue)\n }, [defaultValue, value, setStorageValue])\n\n useEffect(() => {\n if (getInitialValueInEffect) setValue(readStorageValue())\n }, [getInitialValueInEffect, readStorageValue])\n\n return [\n value === undefined ? defaultValue : value,\n setStorageValue,\n removeStorageValue,\n ] as const\n }\n}\n\n/**\n * `useLocalStorage` is a custom hook for storing, updating, and retrieving values in local storage.\n *\n * @see https://yamada-ui.com/docs/hooks/use-local-storage\n */\nexport const useLocalStorage = <Y = string>(props: StorageProps<Y>) =>\n createStorage<Y>(\"localStorage\", \"use-local-storage\")(props)\n"],"mappings":";;;;;;;AAgBA,MAAM,iBAAoB,OAAU,SAAiB;AACnD,KAAI;AACF,SAAO,KAAK,UAAU,MAAM;SACtB;AACN,QAAM,IAAI,MAAM,mBAAmB,KAAK,iCAAiC;;;AAI7E,MAAM,mBAAmB,UAA8B;AACrD,KAAI,CAAC,MAAO,QAAO;AAEnB,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AACN,SAAO;;;AAIX,MAAa,iBAAoB,MAAmB,SAAiB;CACnE,MAAM,YACJ,SAAS,iBAAiB,kBAAkB;AAE9C,SAAQ,EACN,KACA,cACA,cAAc,iBACd,0BAA0B,MAC1B,aAAa,YAAa,cAAcA,SAAO,KAAK,OAC/B;EACrB,MAAM,mBAAmB,aACtB,gBAA6B;AAC5B,OACE,OAAO,WAAW,eAClB,EAAE,QAAQ,WACT,OAAO,SAAwC,QAChD,YAEA,QAAQ,gBAAgB;GAG1B,MAAM,eAAe,OAAO,MAAM,QAAQ,IAAI;AAE9C,UAAO,iBAAiB,OACpB,YAAY,aAAa,GACvB,gBAAgB;KAExB;GAAC;GAAK;GAAa;GAAa,CACjC;EAED,MAAM,CAAC,OAAO,YAAY,SACxB,iBAAiB,wBAAwB,CAC1C;EAED,MAAM,kBAAkB,aACrB,YAAuC;AACtC,qCAAe,QAAQ,CACrB,WAAU,YAAY;IACpB,MAAM,SAAS,QAAQ,QAAQ;AAE/B,WAAO,MAAM,QAAQ,KAAK,UAAU,OAAO,CAAC;AAC5C,WAAO,cACL,IAAI,YAAY,WAAW,EACzB,QAAQ;KAAE;KAAK,OAAO,QAAQ,QAAQ;KAAE,EACzC,CAAC,CACH;AAED,WAAO;KACP;QACG;AACL,WAAO,MAAM,QAAQ,KAAK,UAAU,QAAQ,CAAC;AAC7C,WAAO,cACL,IAAI,YAAY,WAAW,EAAE,QAAQ;KAAE;KAAK,OAAO;KAAS,EAAE,CAAC,CAChE;AAED,aAAS,QAAQ;;KAGrB,CAAC,KAAK,UAAU,CACjB;EAED,MAAM,qBAAqB,kBAAkB;AAC3C,UAAO,MAAM,WAAW,IAAI;AAC5B,YAAS,aAAkB;KAC1B,CAAC,cAAc,IAAI,CAAC;AAEvB,iBAAe,YAAY,OAAO;AAChC,OAAI,GAAG,gBAAgB,OAAO,SAAS,GAAG,QAAQ,IAChD,UAAS,YAAY,GAAG,YAAY,OAAU,CAAC;IACjD;AAEF,iBAAe,YAAY,OAAO;AAChC,OAAI,GAAG,OAAO,QAAQ,IAAK,UAAS,GAAG,OAAO,MAAM;IACpD;AAEF,kBAAgB;AACd,OAAI,iBAAiB,UAAa,UAAU,OAC1C,iBAAgB,aAAa;KAC9B;GAAC;GAAc;GAAO;GAAgB,CAAC;AAE1C,kBAAgB;AACd,OAAI,wBAAyB,UAAS,kBAAkB,CAAC;KACxD,CAAC,yBAAyB,iBAAiB,CAAC;AAE/C,SAAO;GACL,UAAU,SAAY,eAAe;GACrC;GACA;GACD;;;;;;;;AASL,MAAa,mBAA+B,UAC1C,cAAiB,gBAAgB,oBAAoB,CAAC,MAAM"}
@@ -14,7 +14,7 @@ function assignRef(ref, value) {
14
14
  try {
15
15
  ref.current = value;
16
16
  } catch {
17
- throw new Error(`Cannot assign value '${value}' to ref '${ref}'`);
17
+ throw new Error("Cannot assign value to ref");
18
18
  }
19
19
  }
20
20
  function mergeRefs(...refs) {
@@ -1 +1 @@
1
- {"version":3,"file":"ref.js","names":[],"sources":["../../../src/utils/ref.ts"],"sourcesContent":["import { isObject } from \"@yamada-ui/utils\"\nimport * as React from \"react\"\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<Y = any>(ref: React.Ref<Y> | undefined, value: Y) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<Y = any>(\n ...refs: (null | React.Ref<Y> | undefined)[]\n) {\n return function (node: null | Y) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<Y = any>(...refs: (React.Ref<Y> | undefined)[]) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<Y extends (...args: any[]) => any>(\n callback: undefined | Y,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as Y,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n}\n"],"mappings":";;;;AAGA,SAAgB,YAAY,KAAmC;AAC7D,QAAO,SAAS,IAAI,IAAI,aAAa;;AAGvC,SAAgB,UAAmB,KAA+B,OAAU;AAC1E,KAAI,OAAO,KAAM;AAEjB,KAAI,OAAO,QAAQ,YAAY;AAC7B,MAAI,MAAM;AAEV;;AAGF,KAAI;AACF,MAAI,UAAU;SACR;AACN,QAAM,IAAI,MAAM,wBAAwB,MAAM,YAAY,IAAI,GAAG;;;AAIrE,SAAgB,UACd,GAAG,MACH;AACA,QAAO,SAAU,MAAgB;AAC/B,SAAO,KAAK,SAAS,QAAQ;AAC3B,aAAU,KAAK,KAAK;IACpB;;;AAIN,SAAgB,aAAsB,GAAG,MAAoC;AAC3E,QAAO,MAAM,cAAc,UAAU,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC;;AAGxD,SAAgB,eACd,UACA,OAA6B,EAAE,EAC/B;CACA,MAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAM,gBAAgB;AACpB,cAAY,UAAU;GACtB;AAEF,QAAO,MAAM,cACT,GAAG,SAAS,YAAY,UAAU,GAAG,KAAK,GAE5C,KACD"}
1
+ {"version":3,"file":"ref.js","names":[],"sources":["../../../src/utils/ref.ts"],"sourcesContent":["import { isObject } from \"@yamada-ui/utils\"\nimport * as React from \"react\"\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<Y = any>(ref: React.Ref<Y> | undefined, value: Y) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n ref.current = value\n } catch {\n throw new Error(\"Cannot assign value to ref\")\n }\n}\n\nexport function mergeRefs<Y = any>(\n ...refs: (null | React.Ref<Y> | undefined)[]\n) {\n return function (node: null | Y) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<Y = any>(...refs: (React.Ref<Y> | undefined)[]) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<Y extends (...args: any[]) => any>(\n callback: undefined | Y,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as Y,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n}\n"],"mappings":";;;;AAGA,SAAgB,YAAY,KAAmC;AAC7D,QAAO,SAAS,IAAI,IAAI,aAAa;;AAGvC,SAAgB,UAAmB,KAA+B,OAAU;AAC1E,KAAI,OAAO,KAAM;AAEjB,KAAI,OAAO,QAAQ,YAAY;AAC7B,MAAI,MAAM;AAEV;;AAGF,KAAI;AACF,MAAI,UAAU;SACR;AACN,QAAM,IAAI,MAAM,6BAA6B;;;AAIjD,SAAgB,UACd,GAAG,MACH;AACA,QAAO,SAAU,MAAgB;AAC/B,SAAO,KAAK,SAAS,QAAQ;AAC3B,aAAU,KAAK,KAAK;IACpB;;;AAIN,SAAgB,aAAsB,GAAG,MAAoC;AAC3E,QAAO,MAAM,cAAc,UAAU,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC;;AAGxD,SAAgB,eACd,UACA,OAA6B,EAAE,EAC/B;CACA,MAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAM,gBAAgB;AACpB,cAAY,UAAU;GACtB;AAEF,QAAO,MAAM,cACT,GAAG,SAAS,YAAY,UAAU,GAAG,KAAK,GAE5C,KACD"}
@@ -7,7 +7,7 @@ import { CollapseProps } from "../collapse/collapse.js";
7
7
  import "../../index.js";
8
8
  import { AccordionStyle } from "./accordion.style.js";
9
9
  import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
10
- import * as react150 from "react";
10
+ import * as react483 from "react";
11
11
 
12
12
  //#region src/components/accordion/accordion.d.ts
13
13
  interface AccordionCallBackProps {
@@ -31,7 +31,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
31
31
  */
32
32
  items?: AccordionItem[];
33
33
  }
34
- declare const AccordionPropsContext: react150.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
34
+ declare const AccordionPropsContext: react483.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
35
35
  /**
36
36
  * `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
37
37
  *
@@ -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 react138 from "react";
5
+ import * as react484 from "react";
6
6
 
7
7
  //#region src/components/accordion/use-accordion.d.ts
8
- declare const AccordionDescendantsContext: react138.Context<{
8
+ declare const AccordionDescendantsContext: react484.Context<{
9
9
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
10
10
  count: (props?: Partial<{}> | undefined) => number;
11
11
  destroy: () => void;
@@ -24,7 +24,7 @@ declare const AccordionDescendantsContext: react138.Context<{
24
24
  prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
25
25
  register: (props?: {
26
26
  disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
27
- } | undefined) => react138.RefCallback<HTMLButtonElement>;
27
+ } | undefined) => react484.RefCallback<HTMLButtonElement>;
28
28
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
29
29
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
30
30
  values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
@@ -50,12 +50,12 @@ declare const AccordionDescendantsContext: react138.Context<{
50
50
  prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
51
51
  register: (props?: {
52
52
  disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
53
- } | undefined) => react138.RefCallback<HTMLButtonElement>;
53
+ } | undefined) => react484.RefCallback<HTMLButtonElement>;
54
54
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
55
55
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
56
56
  values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
57
57
  };
58
- register: react138.RefCallback<HTMLButtonElement>;
58
+ register: react484.RefCallback<HTMLButtonElement>;
59
59
  }, useAccordionDescendants: () => {
60
60
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
61
61
  count: (props?: Partial<{}> | undefined) => number;
@@ -75,15 +75,15 @@ declare const AccordionDescendantsContext: react138.Context<{
75
75
  prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
76
76
  register: (props?: {
77
77
  disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
78
- } | undefined) => react138.RefCallback<HTMLButtonElement>;
78
+ } | undefined) => react484.RefCallback<HTMLButtonElement>;
79
79
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
80
80
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
81
81
  values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
82
82
  };
83
83
  interface AccordionContext extends Omit<UseAccordionReturn, "descendants" | "getRootProps"> {}
84
- declare const AccordionContext: react138.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
84
+ declare const AccordionContext: react484.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
85
85
  interface AccordionItemContext extends Omit<UseAccordionItemReturn, "getItemProps"> {}
86
- declare const AccordionItemContext: react138.Context<AccordionItemContext>, useAccordionItemContext: () => AccordionItemContext;
86
+ declare const AccordionItemContext: react484.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, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
138
138
  register: (props?: {
139
139
  disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
140
- } | undefined) => react138.RefCallback<HTMLButtonElement>;
140
+ } | undefined) => react484.RefCallback<HTMLButtonElement>;
141
141
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
142
142
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
143
143
  values: (props?: Partial<{}> | undefined) => 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: react138.Dispatch<react138.SetStateAction<number>>;
149
- setIndex: react138.Dispatch<react138.SetStateAction<number | number[]>>;
148
+ setFocusedIndex: react484.Dispatch<react484.SetStateAction<number>>;
149
+ setIndex: react484.Dispatch<react484.SetStateAction<number | number[]>>;
150
150
  toggle: boolean | undefined;
151
151
  getRootProps: PropGetter<"div", undefined, undefined>;
152
152
  };
@@ -6,7 +6,7 @@ import { PortalProps } from "../portal/portal.js";
6
6
  import { UsePopupAnimationProps } from "../popover/popover.js";
7
7
  import { UseActionBarProps } from "./use-action-bar.js";
8
8
  import "../../index.js";
9
- import * as react136 from "react";
9
+ import * as react464 from "react";
10
10
  import { PropsWithChildren, ReactNode } from "react";
11
11
 
12
12
  //#region src/components/action-bar/action-bar.d.ts
@@ -28,7 +28,7 @@ interface ActionBarRootProps extends Omit<HTMLStyledProps, "content">, ThemeProp
28
28
  */
29
29
  onCloseComplete?: () => void;
30
30
  }
31
- declare const ActionBarPropsContext: react136.Context<Partial<ActionBarRootProps> | undefined>, useActionBarPropsContext: () => Partial<ActionBarRootProps> | undefined;
31
+ declare const ActionBarPropsContext: react464.Context<Partial<ActionBarRootProps> | undefined>, useActionBarPropsContext: () => Partial<ActionBarRootProps> | undefined;
32
32
  /**
33
33
  * `ActionBar` is a component that is used to display a bottom action bar with a set of actions.
34
34
  *
@@ -4,7 +4,7 @@ import "../../core/index.js";
4
4
  import { HTMLMotionProps } from "../motion/index.types.js";
5
5
  import { AiryStyle } from "./airy.style.js";
6
6
  import "../../index.js";
7
- import * as react137 from "react";
7
+ import * as react56 from "react";
8
8
  import { ReactNode } from "react";
9
9
 
10
10
  //#region src/components/airy/airy.d.ts
@@ -56,7 +56,7 @@ interface AiryProps extends Omit<HTMLMotionProps<"button">, "onChange">, ThemePr
56
56
  */
57
57
  onChange?: (value: KeyframeIdent) => void;
58
58
  }
59
- declare const AiryPropsContext: react137.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
59
+ declare const AiryPropsContext: react56.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
60
60
  /**
61
61
  * `Airy` is a component that creates an airy animation, switching between two elements when one is clicked.
62
62
  *
@@ -6,7 +6,7 @@ import { IconProps } from "../icon/icon.js";
6
6
  import { LoadingProps } from "../loading/loading.js";
7
7
  import { StatusScheme } from "../status/status.js";
8
8
  import "../../index.js";
9
- import * as react134 from "react";
9
+ import * as react463 from "react";
10
10
 
11
11
  //#region src/components/alert/alert.d.ts
12
12
  interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
@@ -17,7 +17,7 @@ interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
17
17
  */
18
18
  status?: StatusScheme;
19
19
  }
20
- declare const AlertPropsContext: react134.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
20
+ declare const AlertPropsContext: react463.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
21
21
  /**
22
22
  * `Alert` is a component that conveys information to the user.
23
23
  *
@@ -3,7 +3,7 @@ import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/
3
3
  import "../../index.js";
4
4
 
5
5
  //#region src/components/alert/alert.style.d.ts
6
- declare const alertStyle: ComponentSlotStyle<"title" | "loading" | "icon" | "description" | "root", CSSPropObject<CSSSlotObject<"title" | "loading" | "icon" | "description" | "root">>, CSSModifierObject<CSSSlotObject<"title" | "loading" | "icon" | "description" | "root">>, {
6
+ declare const alertStyle: ComponentSlotStyle<"loading" | "title" | "icon" | "root" | "description", CSSPropObject<CSSSlotObject<"loading" | "title" | "icon" | "root" | "description">>, CSSModifierObject<CSSSlotObject<"loading" | "title" | "icon" | "root" | "description">>, {
7
7
  island: {
8
8
  description: {
9
9
  color: "fg.muted";
@@ -4,7 +4,7 @@ import "../../core/index.js";
4
4
  import { AlphaSliderStyle } from "./alpha-slider.style.js";
5
5
  import { HueSliderOverlayProps, HueSliderRootProps, HueSliderThumbProps, HueSliderTrackProps } from "../hue-slider/hue-slider.js";
6
6
  import "../../index.js";
7
- import * as react132 from "react";
7
+ import * as react462 from "react";
8
8
 
9
9
  //#region src/components/alpha-slider/alpha-slider.d.ts
10
10
  interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps, "color" | "max" | "step" | "thumbProps" | "trackProps">, AlphaSliderStyle> {
@@ -37,7 +37,7 @@ interface AlphaSliderRootProps extends WithoutThemeProps<Omit<HueSliderRootProps
37
37
  */
38
38
  trackProps?: AlphaSliderTrackProps;
39
39
  }
40
- declare const AlphaSliderPropsContext: react132.Context<Partial<AlphaSliderRootProps> | undefined>, useAlphaSliderPropsContext: () => Partial<AlphaSliderRootProps> | undefined;
40
+ declare const AlphaSliderPropsContext: react462.Context<Partial<AlphaSliderRootProps> | undefined>, useAlphaSliderPropsContext: () => Partial<AlphaSliderRootProps> | undefined;
41
41
  /**
42
42
  * `AlphaSlider` is a component used to allow the user to select color transparency.
43
43
  *
@@ -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 react133 from "react";
5
+ import * as react461 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: react133.Context<Partial<AspectRatioProps> | undefined>, useAspectRatioPropsContext: () => Partial<AspectRatioProps> | undefined;
16
+ declare const AspectRatioPropsContext: react461.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
  *
@@ -10,7 +10,7 @@ import { InputElementProps } from "../input/input-element.js";
10
10
  import { InputGroupRootProps } from "../input/input-group.js";
11
11
  import { UseAutocompleteOptionProps, UseAutocompleteProps } from "./use-autocomplete.js";
12
12
  import "../../index.js";
13
- import * as react125 from "react";
13
+ import * as react460 from "react";
14
14
  import { ReactElement, ReactNode } from "react";
15
15
 
16
16
  //#region src/components/autocomplete/autocomplete.d.ts
@@ -66,7 +66,7 @@ interface AutocompleteRootProps<Multiple extends boolean = false> extends Omit<H
66
66
  */
67
67
  rootProps?: InputGroupRootProps;
68
68
  }
69
- declare const AutocompletePropsContext: react125.Context<Partial<AutocompleteRootProps<false>> | undefined>, useAutocompletePropsContext: () => Partial<AutocompleteRootProps<false>> | undefined;
69
+ declare const AutocompletePropsContext: react460.Context<Partial<AutocompleteRootProps<false>> | undefined>, useAutocompletePropsContext: () => Partial<AutocompleteRootProps<false>> | undefined;
70
70
  /**
71
71
  * `Autocomplete` is a component used to display suggestions in response to user text input.
72
72
  *
@@ -3,7 +3,7 @@ import { CSSPropObject, CSSSlotObject } from "../../core/css/index.types.js";
3
3
  import "../../index.js";
4
4
 
5
5
  //#region src/components/autocomplete/autocomplete.style.d.ts
6
- declare const autocompleteStyle: ComponentSlotStyle<"input" | "label" | "option" | "content" | "group" | "separator" | "icon" | "root" | "field" | "indicator" | "empty" | "valueText", CSSPropObject<CSSSlotObject<"input" | "label" | "option" | "content" | "group" | "separator" | "icon" | "root" | "field" | "indicator" | "empty" | "valueText">>, {
6
+ declare const autocompleteStyle: ComponentSlotStyle<"input" | "label" | "option" | "content" | "group" | "separator" | "icon" | "root" | "indicator" | "field" | "empty" | "valueText", CSSPropObject<CSSSlotObject<"input" | "label" | "option" | "content" | "group" | "separator" | "icon" | "root" | "indicator" | "field" | "empty" | "valueText">>, {
7
7
  xs: {
8
8
  empty: {
9
9
  gap: "1.5";
@@ -6,7 +6,7 @@ import { FieldProps } from "../field/field.js";
6
6
  import { Descendant, DescendantProps } from "../../hooks/use-descendants/index.js";
7
7
  import { ComboboxDescendant, ComboboxDescendantProps, ComboboxItem, ComboboxItemWithValue, UseComboboxItemProps, UseComboboxProps } from "../../hooks/use-combobox/index.js";
8
8
  import "../../index.js";
9
- import * as react126 from "react";
9
+ import * as react454 from "react";
10
10
  import { ChangeEvent, ReactNode } from "react";
11
11
 
12
12
  //#region src/components/autocomplete/use-autocomplete.d.ts
@@ -26,7 +26,7 @@ interface AutocompleteFilter {
26
26
  }
27
27
  type AutocompleteMatcher = typeof index_d_exports.match;
28
28
  interface AutocompleteContext extends Pick<UseAutocompleteReturn, "max" | "value"> {}
29
- declare const AutocompleteContext: react126.Context<AutocompleteContext>, useAutocompleteContext: () => AutocompleteContext;
29
+ declare const AutocompleteContext: react454.Context<AutocompleteContext>, useAutocompleteContext: () => AutocompleteContext;
30
30
  interface UseAutocompleteProps<Multiple extends boolean = false> extends Omit<HTMLProps, "defaultValue" | "onChange" | "ref" | "value">, Omit<UseComboboxProps, "defaultValue" | "initialFocusValue" | "onChange" | "ref" | "value">, HTMLRefAttributes<"input">, FieldProps {
31
31
  /**
32
32
  * If `true`, the autocomplete will allow custom value.
@@ -154,7 +154,7 @@ declare const useAutocomplete: <Multiple extends boolean = false>(props?: UseAut
154
154
  lastValue: (props?: Partial<ComboboxDescendantProps> | undefined) => Descendant<HTMLDivElement, ComboboxDescendantProps> | undefined;
155
155
  nextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, ComboboxDescendantProps> | null, loop?: boolean, props?: Partial<ComboboxDescendantProps> | undefined) => Descendant<HTMLDivElement, ComboboxDescendantProps> | undefined;
156
156
  prevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, ComboboxDescendantProps> | null, loop?: boolean, props?: Partial<ComboboxDescendantProps> | undefined) => Descendant<HTMLDivElement, ComboboxDescendantProps> | undefined;
157
- register: (props?: DescendantProps<HTMLDivElement, ComboboxDescendantProps> | undefined) => react126.RefCallback<HTMLDivElement>;
157
+ register: (props?: DescendantProps<HTMLDivElement, ComboboxDescendantProps> | undefined) => react454.RefCallback<HTMLDivElement>;
158
158
  unregister: (node?: HTMLDivElement | null | undefined) => void;
159
159
  value: (indexOrNode: number | HTMLDivElement | null) => Descendant<HTMLDivElement, ComboboxDescendantProps> | undefined;
160
160
  values: (props?: Partial<ComboboxDescendantProps> | undefined) => Descendant<HTMLDivElement, ComboboxDescendantProps>[];
@@ -164,8 +164,8 @@ declare const useAutocomplete: <Multiple extends boolean = false>(props?: UseAut
164
164
  items: ComboboxItem[];
165
165
  max: number | undefined;
166
166
  open: boolean;
167
- setInputValue: react126.Dispatch<react126.SetStateAction<string>>;
168
- setValue: react126.Dispatch<react126.SetStateAction<Multiple extends true ? string[] : string>>;
167
+ setInputValue: react454.Dispatch<react454.SetStateAction<string>>;
168
+ setValue: react454.Dispatch<react454.SetStateAction<Multiple extends true ? string[] : string>>;
169
169
  value: Multiple extends true ? string[] : string;
170
170
  valueMap: {
171
171
  [key: string]: ComboboxItemWithValue;