@yamada-ui/react 2.1.4-dev-20260323180356 → 2.1.4-dev-20260323182837

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 (214) hide show
  1. package/dist/cjs/hooks/use-descendants/index.cjs +29 -26
  2. package/dist/cjs/hooks/use-descendants/index.cjs.map +1 -1
  3. package/dist/esm/hooks/use-descendants/index.js +29 -26
  4. package/dist/esm/hooks/use-descendants/index.js.map +1 -1
  5. package/dist/types/components/accordion/accordion.d.ts +2 -2
  6. package/dist/types/components/accordion/accordion.style.d.ts +1 -1
  7. package/dist/types/components/accordion/use-accordion.d.ts +63 -63
  8. package/dist/types/components/airy/airy.d.ts +2 -2
  9. package/dist/types/components/alert/alert.d.ts +2 -2
  10. package/dist/types/components/alert/alert.style.d.ts +1 -1
  11. package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
  12. package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
  13. package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
  14. package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
  15. package/dist/types/components/autocomplete/use-autocomplete.d.ts +18 -18
  16. package/dist/types/components/avatar/avatar.d.ts +5 -5
  17. package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
  18. package/dist/types/components/badge/badge.d.ts +2 -2
  19. package/dist/types/components/bleed/bleed.d.ts +2 -2
  20. package/dist/types/components/blockquote/blockquote.d.ts +2 -2
  21. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
  22. package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
  23. package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
  24. package/dist/types/components/button/button.d.ts +2 -2
  25. package/dist/types/components/button/icon-button.d.ts +2 -2
  26. package/dist/types/components/calendar/calendar.d.ts +2 -2
  27. package/dist/types/components/calendar/calendar.style.d.ts +2 -2
  28. package/dist/types/components/calendar/use-calendar.d.ts +60 -60
  29. package/dist/types/components/card/card.d.ts +2 -2
  30. package/dist/types/components/carousel/carousel.d.ts +2 -2
  31. package/dist/types/components/carousel/carousel.style.d.ts +2 -2
  32. package/dist/types/components/carousel/use-carousel.d.ts +3 -3
  33. package/dist/types/components/center/center.d.ts +2 -2
  34. package/dist/types/components/chart/bar-chart.d.ts +2 -2
  35. package/dist/types/components/chart/chart.d.ts +2 -2
  36. package/dist/types/components/chart/donut-chart.d.ts +2 -2
  37. package/dist/types/components/chart/line-chart.d.ts +2 -2
  38. package/dist/types/components/chart/pie-chart.d.ts +2 -2
  39. package/dist/types/components/chart/radar-chart.d.ts +2 -2
  40. package/dist/types/components/chart/use-chart.d.ts +2 -2
  41. package/dist/types/components/checkbox/checkbox.d.ts +5 -5
  42. package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
  43. package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
  44. package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
  45. package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
  46. package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
  47. package/dist/types/components/close-button/close-button.d.ts +2 -2
  48. package/dist/types/components/code/code.d.ts +2 -2
  49. package/dist/types/components/collapse/collapse.d.ts +2 -2
  50. package/dist/types/components/color-picker/color-picker.d.ts +2 -2
  51. package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
  52. package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
  53. package/dist/types/components/color-selector/color-selector.d.ts +2 -2
  54. package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
  55. package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
  56. package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
  57. package/dist/types/components/container/container.d.ts +2 -2
  58. package/dist/types/components/data-list/data-list.d.ts +2 -2
  59. package/dist/types/components/data-list/data-list.style.d.ts +1 -1
  60. package/dist/types/components/date-picker/date-picker.d.ts +2 -2
  61. package/dist/types/components/date-picker/date-picker.style.d.ts +1 -1
  62. package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
  63. package/dist/types/components/drawer/drawer.d.ts +2 -2
  64. package/dist/types/components/dropzone/dropzone.d.ts +3 -3
  65. package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
  66. package/dist/types/components/editable/editable.d.ts +3 -3
  67. package/dist/types/components/editable/editable.style.d.ts +1 -1
  68. package/dist/types/components/editable/use-editable.d.ts +2 -2
  69. package/dist/types/components/em/em.d.ts +2 -2
  70. package/dist/types/components/empty-state/empty-state.d.ts +2 -2
  71. package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
  72. package/dist/types/components/fade/fade.d.ts +2 -2
  73. package/dist/types/components/field/field.d.ts +3 -3
  74. package/dist/types/components/field/use-field-props.d.ts +3 -3
  75. package/dist/types/components/fieldset/fieldset.d.ts +3 -3
  76. package/dist/types/components/file-button/file-button.d.ts +2 -2
  77. package/dist/types/components/file-button/use-file-button.d.ts +18 -18
  78. package/dist/types/components/file-input/file-input.d.ts +2 -2
  79. package/dist/types/components/file-input/use-file-input.d.ts +15 -15
  80. package/dist/types/components/flex/flex.d.ts +2 -2
  81. package/dist/types/components/flip/flip.d.ts +4 -4
  82. package/dist/types/components/flip/flip.style.d.ts +1 -1
  83. package/dist/types/components/float/float.d.ts +2 -2
  84. package/dist/types/components/form/form.d.ts +3 -3
  85. package/dist/types/components/form/form.style.d.ts +1 -1
  86. package/dist/types/components/format/format-byte.d.ts +2 -2
  87. package/dist/types/components/format/format-date-time.d.ts +2 -2
  88. package/dist/types/components/format/format-number.d.ts +2 -2
  89. package/dist/types/components/grid/grid-item.d.ts +2 -2
  90. package/dist/types/components/grid/grid.d.ts +2 -2
  91. package/dist/types/components/group/group.d.ts +2 -2
  92. package/dist/types/components/group/use-group.d.ts +2 -2
  93. package/dist/types/components/heading/heading.d.ts +2 -2
  94. package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
  95. package/dist/types/components/icon/icon.d.ts +5 -5
  96. package/dist/types/components/image/image.d.ts +2 -2
  97. package/dist/types/components/indicator/indicator.d.ts +4 -4
  98. package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
  99. package/dist/types/components/input/input-addon.d.ts +2 -2
  100. package/dist/types/components/input/input-element.d.ts +2 -2
  101. package/dist/types/components/input/input.d.ts +2 -2
  102. package/dist/types/components/kbd/kbd.d.ts +2 -2
  103. package/dist/types/components/link/link.d.ts +2 -2
  104. package/dist/types/components/link-box/link-box.d.ts +2 -2
  105. package/dist/types/components/list/list.d.ts +2 -2
  106. package/dist/types/components/list/list.style.d.ts +2 -2
  107. package/dist/types/components/loading/loading-provider.d.ts +2 -2
  108. package/dist/types/components/loading/loading.d.ts +3 -3
  109. package/dist/types/components/mark/mark.d.ts +2 -2
  110. package/dist/types/components/menu/menu.d.ts +2 -2
  111. package/dist/types/components/menu/menu.style.d.ts +2 -2
  112. package/dist/types/components/menu/use-menu.d.ts +63 -63
  113. package/dist/types/components/modal/modal.d.ts +2 -2
  114. package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
  115. package/dist/types/components/native-accordion/native-accordion.style.d.ts +2 -2
  116. package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
  117. package/dist/types/components/native-popover/native-popover.d.ts +2 -2
  118. package/dist/types/components/native-select/native-select.d.ts +2 -2
  119. package/dist/types/components/native-select/native-select.style.d.ts +1 -1
  120. package/dist/types/components/native-table/native-table.d.ts +2 -2
  121. package/dist/types/components/notice/notice.style.d.ts +1 -1
  122. package/dist/types/components/number-input/number-input.d.ts +2 -2
  123. package/dist/types/components/number-input/number-input.style.d.ts +1 -1
  124. package/dist/types/components/pagination/pagination.d.ts +2 -2
  125. package/dist/types/components/pagination/pagination.style.d.ts +1 -1
  126. package/dist/types/components/pagination/use-pagination.d.ts +2 -2
  127. package/dist/types/components/password-input/password-input.d.ts +2 -2
  128. package/dist/types/components/password-input/password-input.style.d.ts +1 -1
  129. package/dist/types/components/password-input/strength-meter.d.ts +2 -2
  130. package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
  131. package/dist/types/components/password-input/use-password-input.d.ts +2 -2
  132. package/dist/types/components/pin-input/pin-input.d.ts +2 -2
  133. package/dist/types/components/pin-input/pin-input.style.d.ts +1 -1
  134. package/dist/types/components/pin-input/use-pin-input.d.ts +59 -59
  135. package/dist/types/components/popover/popover.d.ts +2 -2
  136. package/dist/types/components/progress/progress.d.ts +4 -4
  137. package/dist/types/components/progress/use-progress.d.ts +706 -706
  138. package/dist/types/components/qr-code/qr-code.d.ts +2 -2
  139. package/dist/types/components/radio/radio.d.ts +5 -5
  140. package/dist/types/components/radio/radio.style.d.ts +1 -1
  141. package/dist/types/components/radio/use-radio-group.d.ts +2 -2
  142. package/dist/types/components/radio-card/radio-card.d.ts +5 -5
  143. package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
  144. package/dist/types/components/rating/rating.style.d.ts +2 -2
  145. package/dist/types/components/rating/use-rating.d.ts +7 -7
  146. package/dist/types/components/reorder/reorder.d.ts +2 -2
  147. package/dist/types/components/reorder/reorder.style.d.ts +1 -1
  148. package/dist/types/components/reorder/use-reorder.d.ts +3 -3
  149. package/dist/types/components/resizable/resizable.d.ts +2 -2
  150. package/dist/types/components/resizable/resizable.style.d.ts +2 -2
  151. package/dist/types/components/resizable/use-resizable.d.ts +2 -2
  152. package/dist/types/components/ripple/ripple.d.ts +2 -2
  153. package/dist/types/components/ripple/use-ripple.d.ts +2 -2
  154. package/dist/types/components/rotate/rotate.d.ts +2 -2
  155. package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
  156. package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
  157. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  158. package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
  159. package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
  160. package/dist/types/components/segmented-control/use-segmented-control.d.ts +61 -61
  161. package/dist/types/components/select/select.d.ts +2 -2
  162. package/dist/types/components/select/select.style.d.ts +1 -1
  163. package/dist/types/components/select/use-select.d.ts +17 -17
  164. package/dist/types/components/separator/separator.d.ts +2 -2
  165. package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
  166. package/dist/types/components/skeleton/skeleton.d.ts +2 -2
  167. package/dist/types/components/slide/slide.d.ts +2 -2
  168. package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
  169. package/dist/types/components/slider/slider.d.ts +2 -2
  170. package/dist/types/components/slider/use-slider.d.ts +2 -2
  171. package/dist/types/components/stack/h-stack.d.ts +2 -2
  172. package/dist/types/components/stack/stack.d.ts +2 -2
  173. package/dist/types/components/stack/v-stack.d.ts +2 -2
  174. package/dist/types/components/stack/z-stack.d.ts +2 -2
  175. package/dist/types/components/stat/stat.d.ts +2 -2
  176. package/dist/types/components/stat/stat.style.d.ts +2 -2
  177. package/dist/types/components/status/status.d.ts +2 -2
  178. package/dist/types/components/status/status.style.d.ts +2 -2
  179. package/dist/types/components/steps/steps.d.ts +2 -2
  180. package/dist/types/components/steps/steps.style.d.ts +1 -1
  181. package/dist/types/components/steps/use-steps.d.ts +62 -62
  182. package/dist/types/components/switch/switch.d.ts +2 -2
  183. package/dist/types/components/table/table.d.ts +2 -2
  184. package/dist/types/components/tabs/tabs.d.ts +2 -2
  185. package/dist/types/components/tabs/use-tabs.d.ts +120 -120
  186. package/dist/types/components/tag/tag.d.ts +2 -2
  187. package/dist/types/components/text/text.d.ts +2 -2
  188. package/dist/types/components/textarea/textarea.d.ts +2 -2
  189. package/dist/types/components/textarea/use-autosize.d.ts +2 -2
  190. package/dist/types/components/timeline/timeline.d.ts +5 -5
  191. package/dist/types/components/timeline/timeline.style.d.ts +2 -2
  192. package/dist/types/components/toggle/toggle.d.ts +5 -5
  193. package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
  194. package/dist/types/components/toggle/use-toggle.d.ts +2 -2
  195. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  196. package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
  197. package/dist/types/components/wrap/wrap.d.ts +2 -2
  198. package/dist/types/core/components/create-component.d.ts +7 -7
  199. package/dist/types/core/system/color-mode-provider.d.ts +2 -2
  200. package/dist/types/core/system/storage-script.d.ts +3 -3
  201. package/dist/types/core/system/styled.d.ts +2 -2
  202. package/dist/types/core/system/system-provider.d.ts +2 -2
  203. package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
  204. package/dist/types/hooks/use-clickable/index.d.ts +7 -7
  205. package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
  206. package/dist/types/hooks/use-combobox/index.d.ts +90 -90
  207. package/dist/types/hooks/use-counter/index.d.ts +2 -2
  208. package/dist/types/hooks/use-descendants/index.d.ts +67 -67
  209. package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
  210. package/dist/types/hooks/use-hover/index.d.ts +2 -2
  211. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
  212. package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
  213. package/dist/types/utils/children.d.ts +2 -2
  214. package/package.json +2 -2
@@ -27,6 +27,7 @@ const getPrevIndex = (current, max, loop) => {
27
27
  if (loop && next < 0) next = max;
28
28
  return next;
29
29
  };
30
+ const isMatch = (props) => (descendant) => Object.entries(props ?? {}).every(([key, value]) => descendant[key] === value);
30
31
  const descendantManager = () => {
31
32
  const descendants = /* @__PURE__ */ new Map();
32
33
  const setIndexes = (next) => {
@@ -55,8 +56,8 @@ const descendantManager = () => {
55
56
  descendants.delete(node);
56
57
  setIndexes(sortNodes(Array.from(descendants.keys())));
57
58
  };
58
- const count = () => values().length;
59
- const enabledCount = () => enabledValues().length;
59
+ const count = (props) => values(props).length;
60
+ const enabledCount = (props) => enabledValues(props).length;
60
61
  const active = (target, options) => {
61
62
  if (!target) return;
62
63
  if (!(target instanceof Node)) target = target.node;
@@ -77,28 +78,29 @@ const descendantManager = () => {
77
78
  if (target instanceof Node) return enabledValues().findIndex(({ node }) => node.isSameNode(target));
78
79
  else return enabledValues().findIndex(({ node }) => node.isSameNode(target.node));
79
80
  };
80
- const values = () => Array.from(descendants.values()).sort((a, b) => a.index - b.index);
81
- const enabledValues = () => values().filter(({ disabled, node }) => !(0, require_utils_index.utils_exports.runIfFn)(disabled, node));
81
+ const values = (props) => Array.from(descendants.values()).filter(isMatch(props)).sort((a, b) => a.index - b.index);
82
+ const enabledValues = (props) => values(props).filter(({ disabled, node }) => !(0, require_utils_index.utils_exports.runIfFn)(disabled, node));
82
83
  const value = (indexOrNode) => {
83
84
  if (!count() || indexOrNode == null) return void 0;
84
85
  return (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? values()[indexOrNode] : descendants.get(indexOrNode);
85
86
  };
86
- const enabledValue = (index) => {
87
- if (!enabledCount()) return void 0;
88
- return enabledValues()[index];
89
- };
90
- const firstValue = () => value(0);
91
- const enabledFirstValue = () => enabledValue(0);
92
- const lastValue = () => value(count() - 1);
93
- const enabledLastValue = () => enabledValue(enabledCount() - 1);
94
- const prevValue = (indexOrNode, loop = true) => {
95
- if (!count()) return void 0;
96
- const currentIndex = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
87
+ const enabledValue = (indexOrNode) => {
88
+ if (!enabledCount() || indexOrNode == null) return void 0;
89
+ return enabledValues()[(0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)];
90
+ };
91
+ const firstValue = (props) => values(props).at(0);
92
+ const enabledFirstValue = (props) => enabledValues(props).at(0);
93
+ const lastValue = (props) => values(props).at(-1);
94
+ const enabledLastValue = (props) => enabledValues(props).at(-1);
95
+ const prevValue = (indexOrNode, loop = true, props) => {
96
+ const filtered = values(props);
97
+ if (!filtered.length || indexOrNode == null) return void 0;
98
+ const currentIndex = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? filtered.findIndex((d) => d.index === indexOrNode) : filtered.findIndex((d) => d.node.isSameNode(indexOrNode instanceof Node ? indexOrNode : indexOrNode.node));
97
99
  if (currentIndex === -1) return void 0;
98
- return value(getPrevIndex(currentIndex, count() - 1, loop));
100
+ return filtered[getPrevIndex(currentIndex, filtered.length - 1, loop)];
99
101
  };
100
- const enabledPrevValue = (indexOrNode, loop = true) => {
101
- if (!enabledCount()) return void 0;
102
+ const enabledPrevValue = (indexOrNode, loop = true, props) => {
103
+ if (!enabledCount(props)) return void 0;
102
104
  let index = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
103
105
  let enabledValue$1 = null;
104
106
  let recurred = false;
@@ -110,19 +112,20 @@ const descendantManager = () => {
110
112
  recurred = true;
111
113
  }
112
114
  const descendant = value(index);
113
- enabledValue$1 = descendant && !(0, require_utils_index.utils_exports.runIfFn)(descendant.disabled, descendant.node) ? descendant : null;
115
+ enabledValue$1 = descendant && !(0, require_utils_index.utils_exports.runIfFn)(descendant.disabled, descendant.node) && isMatch(props)(descendant) ? descendant : null;
114
116
  }
115
117
  if (recurred) enabledValue$1.recurred = recurred;
116
118
  return enabledValue$1;
117
119
  };
118
- const nextValue = (indexOrNode, loop = true) => {
119
- if (!count()) return void 0;
120
- const currentIndex = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
120
+ const nextValue = (indexOrNode, loop = true, props) => {
121
+ const filtered = values(props);
122
+ if (!filtered.length || indexOrNode == null) return void 0;
123
+ const currentIndex = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? filtered.findIndex((d) => d.index === indexOrNode) : filtered.findIndex((d) => d.node.isSameNode(indexOrNode instanceof Node ? indexOrNode : indexOrNode.node));
121
124
  if (currentIndex === -1) return void 0;
122
- return value(getNextIndex(currentIndex, count(), loop));
125
+ return filtered[getNextIndex(currentIndex, filtered.length, loop)];
123
126
  };
124
- const enabledNextValue = (indexOrNode, loop = true) => {
125
- if (!enabledCount()) return void 0;
127
+ const enabledNextValue = (indexOrNode, loop = true, props) => {
128
+ if (!enabledCount(props)) return void 0;
126
129
  let index = (0, require_utils_index.utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
127
130
  let enabledValue$1 = null;
128
131
  let recurred = false;
@@ -134,7 +137,7 @@ const descendantManager = () => {
134
137
  recurred = true;
135
138
  }
136
139
  const descendant = value(index);
137
- enabledValue$1 = descendant && !(0, require_utils_index.utils_exports.runIfFn)(descendant.disabled, descendant.node) ? descendant : null;
140
+ enabledValue$1 = descendant && !(0, require_utils_index.utils_exports.runIfFn)(descendant.disabled, descendant.node) && isMatch(props)(descendant) ? descendant : null;
138
141
  }
139
142
  if (recurred) enabledValue$1.recurred = recurred;
140
143
  return enabledValue$1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["enabledValue","createContext","mergeRefs"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node || descendants.has(node)) return\n\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = () => values().length\n\n const enabledCount = () => enabledValues().length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return descendants.get(target)?.index ?? -1\n } else {\n return descendants.get(target.node)?.index ?? -1\n }\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n } else {\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n }\n\n const values = () =>\n Array.from(descendants.values()).sort((a, b) => a.index - b.index)\n\n const enabledValues = () =>\n values().filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (index: number) => {\n if (!enabledCount()) return undefined\n\n return enabledValues()[index]\n }\n\n const firstValue = () => value(0)\n\n const enabledFirstValue = () => enabledValue(0)\n\n const lastValue = () => value(count() - 1)\n\n const enabledLastValue = () => enabledValue(enabledCount() - 1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!count()) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? indexOrNode\n : indexOf(indexOrNode)\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, count() - 1, loop)\n\n return value(prevIndex)\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!enabledCount()) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant && !runIfFn(descendant.disabled, descendant.node)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!count()) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? indexOrNode\n : indexOf(indexOrNode)\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, count(), loop)\n\n return value(nextIndex)\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!enabledCount()) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant && !runIfFn(descendant.disabled, descendant.node)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["enabledValue","createContext","mergeRefs"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node || descendants.has(node)) return\n\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return descendants.get(target)?.index ?? -1\n } else {\n return descendants.get(target.node)?.index ?? -1\n }\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n } else {\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
@@ -26,6 +26,7 @@ const getPrevIndex = (current, max, loop) => {
26
26
  if (loop && next < 0) next = max;
27
27
  return next;
28
28
  };
29
+ const isMatch = (props) => (descendant) => Object.entries(props ?? {}).every(([key, value]) => descendant[key] === value);
29
30
  const descendantManager = () => {
30
31
  const descendants = /* @__PURE__ */ new Map();
31
32
  const setIndexes = (next) => {
@@ -54,8 +55,8 @@ const descendantManager = () => {
54
55
  descendants.delete(node);
55
56
  setIndexes(sortNodes(Array.from(descendants.keys())));
56
57
  };
57
- const count = () => values().length;
58
- const enabledCount = () => enabledValues().length;
58
+ const count = (props) => values(props).length;
59
+ const enabledCount = (props) => enabledValues(props).length;
59
60
  const active = (target, options) => {
60
61
  if (!target) return;
61
62
  if (!(target instanceof Node)) target = target.node;
@@ -76,28 +77,29 @@ const descendantManager = () => {
76
77
  if (target instanceof Node) return enabledValues().findIndex(({ node }) => node.isSameNode(target));
77
78
  else return enabledValues().findIndex(({ node }) => node.isSameNode(target.node));
78
79
  };
79
- const values = () => Array.from(descendants.values()).sort((a, b) => a.index - b.index);
80
- const enabledValues = () => values().filter(({ disabled, node }) => !(0, utils_exports.runIfFn)(disabled, node));
80
+ const values = (props) => Array.from(descendants.values()).filter(isMatch(props)).sort((a, b) => a.index - b.index);
81
+ const enabledValues = (props) => values(props).filter(({ disabled, node }) => !(0, utils_exports.runIfFn)(disabled, node));
81
82
  const value = (indexOrNode) => {
82
83
  if (!count() || indexOrNode == null) return void 0;
83
84
  return (0, utils_exports.isNumber)(indexOrNode) ? values()[indexOrNode] : descendants.get(indexOrNode);
84
85
  };
85
- const enabledValue = (index) => {
86
- if (!enabledCount()) return void 0;
87
- return enabledValues()[index];
88
- };
89
- const firstValue = () => value(0);
90
- const enabledFirstValue = () => enabledValue(0);
91
- const lastValue = () => value(count() - 1);
92
- const enabledLastValue = () => enabledValue(enabledCount() - 1);
93
- const prevValue = (indexOrNode, loop = true) => {
94
- if (!count()) return void 0;
95
- const currentIndex = (0, utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
86
+ const enabledValue = (indexOrNode) => {
87
+ if (!enabledCount() || indexOrNode == null) return void 0;
88
+ return enabledValues()[(0, utils_exports.isNumber)(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)];
89
+ };
90
+ const firstValue = (props) => values(props).at(0);
91
+ const enabledFirstValue = (props) => enabledValues(props).at(0);
92
+ const lastValue = (props) => values(props).at(-1);
93
+ const enabledLastValue = (props) => enabledValues(props).at(-1);
94
+ const prevValue = (indexOrNode, loop = true, props) => {
95
+ const filtered = values(props);
96
+ if (!filtered.length || indexOrNode == null) return void 0;
97
+ const currentIndex = (0, utils_exports.isNumber)(indexOrNode) ? filtered.findIndex((d) => d.index === indexOrNode) : filtered.findIndex((d) => d.node.isSameNode(indexOrNode instanceof Node ? indexOrNode : indexOrNode.node));
96
98
  if (currentIndex === -1) return void 0;
97
- return value(getPrevIndex(currentIndex, count() - 1, loop));
99
+ return filtered[getPrevIndex(currentIndex, filtered.length - 1, loop)];
98
100
  };
99
- const enabledPrevValue = (indexOrNode, loop = true) => {
100
- if (!enabledCount()) return void 0;
101
+ const enabledPrevValue = (indexOrNode, loop = true, props) => {
102
+ if (!enabledCount(props)) return void 0;
101
103
  let index = (0, utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
102
104
  let enabledValue$1 = null;
103
105
  let recurred = false;
@@ -109,19 +111,20 @@ const descendantManager = () => {
109
111
  recurred = true;
110
112
  }
111
113
  const descendant = value(index);
112
- enabledValue$1 = descendant && !(0, utils_exports.runIfFn)(descendant.disabled, descendant.node) ? descendant : null;
114
+ enabledValue$1 = descendant && !(0, utils_exports.runIfFn)(descendant.disabled, descendant.node) && isMatch(props)(descendant) ? descendant : null;
113
115
  }
114
116
  if (recurred) enabledValue$1.recurred = recurred;
115
117
  return enabledValue$1;
116
118
  };
117
- const nextValue = (indexOrNode, loop = true) => {
118
- if (!count()) return void 0;
119
- const currentIndex = (0, utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
119
+ const nextValue = (indexOrNode, loop = true, props) => {
120
+ const filtered = values(props);
121
+ if (!filtered.length || indexOrNode == null) return void 0;
122
+ const currentIndex = (0, utils_exports.isNumber)(indexOrNode) ? filtered.findIndex((d) => d.index === indexOrNode) : filtered.findIndex((d) => d.node.isSameNode(indexOrNode instanceof Node ? indexOrNode : indexOrNode.node));
120
123
  if (currentIndex === -1) return void 0;
121
- return value(getNextIndex(currentIndex, count(), loop));
124
+ return filtered[getNextIndex(currentIndex, filtered.length, loop)];
122
125
  };
123
- const enabledNextValue = (indexOrNode, loop = true) => {
124
- if (!enabledCount()) return void 0;
126
+ const enabledNextValue = (indexOrNode, loop = true, props) => {
127
+ if (!enabledCount(props)) return void 0;
125
128
  let index = (0, utils_exports.isNumber)(indexOrNode) ? indexOrNode : indexOf(indexOrNode);
126
129
  let enabledValue$1 = null;
127
130
  let recurred = false;
@@ -133,7 +136,7 @@ const descendantManager = () => {
133
136
  recurred = true;
134
137
  }
135
138
  const descendant = value(index);
136
- enabledValue$1 = descendant && !(0, utils_exports.runIfFn)(descendant.disabled, descendant.node) ? descendant : null;
139
+ enabledValue$1 = descendant && !(0, utils_exports.runIfFn)(descendant.disabled, descendant.node) && isMatch(props)(descendant) ? descendant : null;
137
140
  }
138
141
  if (recurred) enabledValue$1.recurred = recurred;
139
142
  return enabledValue$1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["enabledValue","createContext"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node || descendants.has(node)) return\n\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = () => values().length\n\n const enabledCount = () => enabledValues().length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return descendants.get(target)?.index ?? -1\n } else {\n return descendants.get(target.node)?.index ?? -1\n }\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n } else {\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n }\n\n const values = () =>\n Array.from(descendants.values()).sort((a, b) => a.index - b.index)\n\n const enabledValues = () =>\n values().filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (index: number) => {\n if (!enabledCount()) return undefined\n\n return enabledValues()[index]\n }\n\n const firstValue = () => value(0)\n\n const enabledFirstValue = () => enabledValue(0)\n\n const lastValue = () => value(count() - 1)\n\n const enabledLastValue = () => enabledValue(enabledCount() - 1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!count()) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? indexOrNode\n : indexOf(indexOrNode)\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, count() - 1, loop)\n\n return value(prevIndex)\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!enabledCount()) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant && !runIfFn(descendant.disabled, descendant.node)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!count()) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? indexOrNode\n : indexOf(indexOrNode)\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, count(), loop)\n\n return value(nextIndex)\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n ) => {\n if (!enabledCount()) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant && !runIfFn(descendant.disabled, descendant.node)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["enabledValue","createContext"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node || descendants.has(node)) return\n\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return descendants.get(target)?.index ?? -1\n } else {\n return descendants.get(target.node)?.index ?? -1\n }\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) {\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n } else {\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
@@ -9,7 +9,7 @@ import "../collapse/index.js";
9
9
  import "../../index.js";
10
10
  import { AccordionStyle } from "./accordion.style.js";
11
11
  import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
12
- import * as react268 from "react";
12
+ import * as react977 from "react";
13
13
 
14
14
  //#region src/components/accordion/accordion.d.ts
15
15
  interface AccordionCallBackProps {
@@ -33,7 +33,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
33
33
  */
34
34
  items?: AccordionItem[];
35
35
  }
36
- declare const AccordionPropsContext: react268.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
36
+ declare const AccordionPropsContext: react977.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
37
37
  /**
38
38
  * `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
39
39
  *
@@ -3,7 +3,7 @@ import { CSSModifierObject, CSSPropObject, CSSSlotObject } from "../../core/css/
3
3
  import "../../index.js";
4
4
 
5
5
  //#region src/components/accordion/accordion.style.d.ts
6
- declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "root" | "item", CSSPropObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, CSSModifierObject<CSSSlotObject<"button" | "panel" | "icon" | "root" | "item">>, {
6
+ declare const accordionStyle: ComponentSlotStyle<"button" | "panel" | "icon" | "item" | "root", CSSPropObject<CSSSlotObject<"button" | "panel" | "icon" | "item" | "root">>, CSSModifierObject<CSSSlotObject<"button" | "panel" | "icon" | "item" | "root">>, {
7
7
  panel: {
8
8
  button: {
9
9
  rounded: "l2";
@@ -2,88 +2,88 @@ 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 react256 from "react";
5
+ import * as react965 from "react";
6
6
 
7
7
  //#region src/components/accordion/use-accordion.d.ts
8
- declare const AccordionDescendantsContext: react256.Context<{
8
+ declare const AccordionDescendantsContext: react965.Context<{
9
9
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
10
- count: () => number;
10
+ count: (props?: Partial<{}> | undefined) => number;
11
11
  destroy: () => void;
12
- enabledCount: () => number;
13
- enabledFirstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
12
+ enabledCount: (props?: Partial<{}> | undefined) => number;
13
+ enabledFirstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
14
14
  enabledIndexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
15
- enabledLastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
16
- enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
17
- enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
18
- enabledValue: (index: number) => Descendant<HTMLButtonElement, {}> | undefined;
19
- enabledValues: () => Descendant<HTMLButtonElement, {}>[];
20
- firstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
15
+ enabledLastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
16
+ enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
17
+ enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
18
+ enabledValue: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
19
+ enabledValues: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
20
+ firstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
21
21
  indexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
22
- lastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
23
- nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
24
- prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
22
+ lastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
23
+ nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
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) => react256.RefCallback<HTMLButtonElement>;
27
+ } | undefined) => react965.RefCallback<HTMLButtonElement>;
28
28
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
29
29
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
30
- values: () => Descendant<HTMLButtonElement, {}>[];
30
+ values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
31
31
  }>, useAccordionDescendant: (props?: {
32
32
  disabled?: boolean | ((node: HTMLButtonElement) => boolean) | undefined;
33
33
  } | undefined) => {
34
34
  descendants: {
35
35
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
36
- count: () => number;
36
+ count: (props?: Partial<{}> | undefined) => number;
37
37
  destroy: () => void;
38
- enabledCount: () => number;
39
- enabledFirstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
38
+ enabledCount: (props?: Partial<{}> | undefined) => number;
39
+ enabledFirstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
40
40
  enabledIndexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
41
- enabledLastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
42
- enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
43
- enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
44
- enabledValue: (index: number) => Descendant<HTMLButtonElement, {}> | undefined;
45
- enabledValues: () => Descendant<HTMLButtonElement, {}>[];
46
- firstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
41
+ enabledLastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
42
+ enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
43
+ enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
44
+ enabledValue: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
45
+ enabledValues: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
46
+ firstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
47
47
  indexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
48
- lastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
49
- nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
50
- prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
48
+ lastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
49
+ nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
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) => react256.RefCallback<HTMLButtonElement>;
53
+ } | undefined) => react965.RefCallback<HTMLButtonElement>;
54
54
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
55
55
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
56
- values: () => Descendant<HTMLButtonElement, {}>[];
56
+ values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
57
57
  };
58
- register: react256.RefCallback<HTMLButtonElement>;
58
+ register: react965.RefCallback<HTMLButtonElement>;
59
59
  }, useAccordionDescendants: () => {
60
60
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
61
- count: () => number;
61
+ count: (props?: Partial<{}> | undefined) => number;
62
62
  destroy: () => void;
63
- enabledCount: () => number;
64
- enabledFirstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
63
+ enabledCount: (props?: Partial<{}> | undefined) => number;
64
+ enabledFirstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
65
65
  enabledIndexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
66
- enabledLastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
67
- enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
68
- enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
69
- enabledValue: (index: number) => Descendant<HTMLButtonElement, {}> | undefined;
70
- enabledValues: () => Descendant<HTMLButtonElement, {}>[];
71
- firstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
66
+ enabledLastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
67
+ enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
68
+ enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
69
+ enabledValue: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
70
+ enabledValues: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
71
+ firstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
72
72
  indexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
73
- lastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
74
- nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
75
- prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
73
+ lastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
74
+ nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
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) => react256.RefCallback<HTMLButtonElement>;
78
+ } | undefined) => react965.RefCallback<HTMLButtonElement>;
79
79
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
80
80
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
81
- values: () => Descendant<HTMLButtonElement, {}>[];
81
+ values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
82
82
  };
83
83
  interface AccordionContext extends Omit<UseAccordionReturn, "descendants" | "getRootProps"> {}
84
- declare const AccordionContext: react256.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
84
+ declare const AccordionContext: react965.Context<AccordionContext>, useAccordionContext: () => AccordionContext;
85
85
  interface AccordionItemContext extends Omit<UseAccordionItemReturn, "getItemProps"> {}
86
- declare const AccordionItemContext: react256.Context<AccordionItemContext>, useAccordionItemContext: () => AccordionItemContext;
86
+ declare const AccordionItemContext: react965.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.
@@ -120,33 +120,33 @@ declare const useAccordion: ({
120
120
  }?: UseAccordionProps) => {
121
121
  descendants: {
122
122
  active: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined, options?: FocusOptions) => void;
123
- count: () => number;
123
+ count: (props?: Partial<{}> | undefined) => number;
124
124
  destroy: () => void;
125
- enabledCount: () => number;
126
- enabledFirstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
125
+ enabledCount: (props?: Partial<{}> | undefined) => number;
126
+ enabledFirstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
127
127
  enabledIndexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
128
- enabledLastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
129
- enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
130
- enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
131
- enabledValue: (index: number) => Descendant<HTMLButtonElement, {}> | undefined;
132
- enabledValues: () => Descendant<HTMLButtonElement, {}>[];
133
- firstValue: () => Descendant<HTMLButtonElement, {}> | undefined;
128
+ enabledLastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
129
+ enabledNextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
130
+ enabledPrevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
131
+ enabledValue: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
132
+ enabledValues: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
133
+ firstValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
134
134
  indexOf: (target?: HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null | undefined) => number;
135
- lastValue: () => Descendant<HTMLButtonElement, {}> | undefined;
136
- nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
137
- prevValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean) => Descendant<HTMLButtonElement, {}> | undefined;
135
+ lastValue: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
136
+ nextValue: (indexOrNode: number | HTMLButtonElement | Descendant<HTMLButtonElement, {}> | null, loop?: boolean, props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}> | undefined;
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) => react256.RefCallback<HTMLButtonElement>;
140
+ } | undefined) => react965.RefCallback<HTMLButtonElement>;
141
141
  unregister: (node?: HTMLButtonElement | null | undefined) => void;
142
142
  value: (indexOrNode: number | HTMLButtonElement | null) => Descendant<HTMLButtonElement, {}> | undefined;
143
- values: () => Descendant<HTMLButtonElement, {}>[];
143
+ values: (props?: Partial<{}> | undefined) => Descendant<HTMLButtonElement, {}>[];
144
144
  };
145
145
  focusedIndex: number;
146
146
  index: number | number[];
147
147
  multiple: boolean | undefined;
148
- setFocusedIndex: react256.Dispatch<react256.SetStateAction<number>>;
149
- setIndex: react256.Dispatch<react256.SetStateAction<number | number[]>>;
148
+ setFocusedIndex: react965.Dispatch<react965.SetStateAction<number>>;
149
+ setIndex: react965.Dispatch<react965.SetStateAction<number | number[]>>;
150
150
  toggle: boolean | undefined;
151
151
  getRootProps: PropGetter<"div", undefined, undefined>;
152
152
  };
@@ -5,7 +5,7 @@ import { AiryStyle } from "./airy.style.js";
5
5
  import { HTMLMotionProps } from "../motion/index.types.js";
6
6
  import "../motion/index.js";
7
7
  import "../../index.js";
8
- import * as react232 from "react";
8
+ import * as react964 from "react";
9
9
  import { ReactNode } from "react";
10
10
 
11
11
  //#region src/components/airy/airy.d.ts
@@ -57,7 +57,7 @@ interface AiryProps extends Omit<HTMLMotionProps<"button">, "onChange">, ThemePr
57
57
  */
58
58
  onChange?: (value: KeyframeIdent) => void;
59
59
  }
60
- declare const AiryPropsContext: react232.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
60
+ declare const AiryPropsContext: react964.Context<Partial<AiryProps> | undefined>, useAiryPropsContext: () => Partial<AiryProps> | undefined;
61
61
  /**
62
62
  * `Airy` is a component that creates an airy animation, switching between two elements when one is clicked.
63
63
  *
@@ -9,7 +9,7 @@ import "../loading/index.js";
9
9
  import { StatusScheme } from "../status/status.js";
10
10
  import "../status/index.js";
11
11
  import "../../index.js";
12
- import * as react269 from "react";
12
+ import * as react963 from "react";
13
13
 
14
14
  //#region src/components/alert/alert.d.ts
15
15
  interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
@@ -20,7 +20,7 @@ interface AlertRootProps extends HTMLStyledProps, ThemeProps<AlertStyle> {
20
20
  */
21
21
  status?: StatusScheme;
22
22
  }
23
- declare const AlertPropsContext: react269.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
23
+ declare const AlertPropsContext: react963.Context<Partial<AlertRootProps> | undefined>, useAlertPropsContext: () => Partial<AlertRootProps> | undefined;
24
24
  /**
25
25
  * `Alert` is a component that conveys information to the user.
26
26
  *