@arolariu/components 1.0.0 → 1.1.0

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 (218) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/EXAMPLES.md +2510 -0
  3. package/dist/components/ui/alert-dialog.d.ts +4 -16
  4. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  5. package/dist/components/ui/alert-dialog.js +18 -14
  6. package/dist/components/ui/alert-dialog.js.map +1 -1
  7. package/dist/components/ui/avatar.d.ts +3 -12
  8. package/dist/components/ui/avatar.d.ts.map +1 -1
  9. package/dist/components/ui/avatar.js +18 -15
  10. package/dist/components/ui/avatar.js.map +1 -1
  11. package/dist/components/ui/button-group.d.ts +1 -1
  12. package/dist/components/ui/button-group.d.ts.map +1 -1
  13. package/dist/components/ui/calendar.d.ts +1 -4
  14. package/dist/components/ui/calendar.d.ts.map +1 -1
  15. package/dist/components/ui/calendar.js +7 -7
  16. package/dist/components/ui/calendar.js.map +1 -1
  17. package/dist/components/ui/carousel.d.ts.map +1 -1
  18. package/dist/components/ui/carousel.js.map +1 -1
  19. package/dist/components/ui/chart.d.ts.map +1 -1
  20. package/dist/components/ui/chart.js +125 -59
  21. package/dist/components/ui/chart.js.map +1 -1
  22. package/dist/components/ui/checkbox-group.d.ts +2 -6
  23. package/dist/components/ui/checkbox-group.d.ts.map +1 -1
  24. package/dist/components/ui/checkbox-group.js +8 -7
  25. package/dist/components/ui/checkbox-group.js.map +1 -1
  26. package/dist/components/ui/checkbox.d.ts +3 -1
  27. package/dist/components/ui/checkbox.d.ts.map +1 -1
  28. package/dist/components/ui/checkbox.js +4 -1
  29. package/dist/components/ui/checkbox.js.map +1 -1
  30. package/dist/components/ui/collapsible.d.ts.map +1 -1
  31. package/dist/components/ui/collapsible.js.map +1 -1
  32. package/dist/components/ui/combobox.d.ts +335 -0
  33. package/dist/components/ui/combobox.d.ts.map +1 -0
  34. package/dist/components/ui/combobox.js +206 -0
  35. package/dist/components/ui/combobox.js.map +1 -0
  36. package/dist/components/ui/combobox.module.js +23 -0
  37. package/dist/components/ui/combobox.module.js.map +1 -0
  38. package/dist/components/ui/combobox_module.css +142 -0
  39. package/dist/components/ui/combobox_module.css.map +1 -0
  40. package/dist/components/ui/command.d.ts.map +1 -1
  41. package/dist/components/ui/command.js +25 -16
  42. package/dist/components/ui/command.js.map +1 -1
  43. package/dist/components/ui/context-menu.d.ts.map +1 -1
  44. package/dist/components/ui/context-menu.js.map +1 -1
  45. package/dist/components/ui/drawer.d.ts.map +1 -1
  46. package/dist/components/ui/drawer.js.map +1 -1
  47. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  48. package/dist/components/ui/dropdown-menu.js.map +1 -1
  49. package/dist/components/ui/dropdrawer.d.ts +10 -16
  50. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  51. package/dist/components/ui/dropdrawer.js +28 -20
  52. package/dist/components/ui/dropdrawer.js.map +1 -1
  53. package/dist/components/ui/item.d.ts +1 -1
  54. package/dist/components/ui/item.d.ts.map +1 -1
  55. package/dist/components/ui/menubar.d.ts +11 -13
  56. package/dist/components/ui/menubar.d.ts.map +1 -1
  57. package/dist/components/ui/menubar.js.map +1 -1
  58. package/dist/components/ui/meter.d.ts +8 -24
  59. package/dist/components/ui/meter.d.ts.map +1 -1
  60. package/dist/components/ui/meter.js +23 -19
  61. package/dist/components/ui/meter.js.map +1 -1
  62. package/dist/components/ui/navigation-menu.d.ts +3 -12
  63. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  64. package/dist/components/ui/navigation-menu.js +14 -11
  65. package/dist/components/ui/navigation-menu.js.map +1 -1
  66. package/dist/components/ui/number-field.d.ts +6 -12
  67. package/dist/components/ui/number-field.d.ts.map +1 -1
  68. package/dist/components/ui/number-field.js.map +1 -1
  69. package/dist/components/ui/progress.d.ts +1 -4
  70. package/dist/components/ui/progress.d.ts.map +1 -1
  71. package/dist/components/ui/progress.js +10 -9
  72. package/dist/components/ui/progress.js.map +1 -1
  73. package/dist/components/ui/radio-group.d.ts +2 -4
  74. package/dist/components/ui/radio-group.d.ts.map +1 -1
  75. package/dist/components/ui/radio-group.js.map +1 -1
  76. package/dist/components/ui/resizable.d.ts +3 -3
  77. package/dist/components/ui/resizable.d.ts.map +1 -1
  78. package/dist/components/ui/resizable.js.map +1 -1
  79. package/dist/components/ui/scratcher.d.ts +1 -1
  80. package/dist/components/ui/scratcher.d.ts.map +1 -1
  81. package/dist/components/ui/scratcher.js +5 -4
  82. package/dist/components/ui/scratcher.js.map +1 -1
  83. package/dist/components/ui/scroll-area.d.ts +2 -4
  84. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  85. package/dist/components/ui/scroll-area.js.map +1 -1
  86. package/dist/components/ui/separator.d.ts +1 -4
  87. package/dist/components/ui/separator.d.ts.map +1 -1
  88. package/dist/components/ui/separator.js +9 -8
  89. package/dist/components/ui/separator.js.map +1 -1
  90. package/dist/components/ui/sheet.d.ts.map +1 -1
  91. package/dist/components/ui/sheet.js.map +1 -1
  92. package/dist/components/ui/sidebar.d.ts +1 -1
  93. package/dist/components/ui/sidebar.d.ts.map +1 -1
  94. package/dist/components/ui/sidebar.js.map +1 -1
  95. package/dist/components/ui/sonner.d.ts +5 -4
  96. package/dist/components/ui/sonner.d.ts.map +1 -1
  97. package/dist/components/ui/sonner.js +7 -6
  98. package/dist/components/ui/sonner.js.map +1 -1
  99. package/dist/components/ui/toggle-group.d.ts +2 -8
  100. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  101. package/dist/components/ui/toggle-group.js +12 -10
  102. package/dist/components/ui/toggle-group.js.map +1 -1
  103. package/dist/components/ui/toolbar.d.ts +10 -30
  104. package/dist/components/ui/toolbar.d.ts.map +1 -1
  105. package/dist/components/ui/toolbar.js +28 -23
  106. package/dist/components/ui/toolbar.js.map +1 -1
  107. package/dist/hooks/useClipboard.d.ts +77 -0
  108. package/dist/hooks/useClipboard.d.ts.map +1 -0
  109. package/dist/hooks/useClipboard.js +42 -0
  110. package/dist/hooks/useClipboard.js.map +1 -0
  111. package/dist/hooks/useControllableState.d.ts +54 -0
  112. package/dist/hooks/useControllableState.d.ts.map +1 -0
  113. package/dist/hooks/useControllableState.js +29 -0
  114. package/dist/hooks/useControllableState.js.map +1 -0
  115. package/dist/hooks/useDebounce.d.ts +33 -0
  116. package/dist/hooks/useDebounce.d.ts.map +1 -0
  117. package/dist/hooks/useDebounce.js +20 -0
  118. package/dist/hooks/useDebounce.js.map +1 -0
  119. package/dist/hooks/useEventCallback.d.ts +34 -0
  120. package/dist/hooks/useEventCallback.d.ts.map +1 -0
  121. package/dist/hooks/useEventCallback.js +12 -0
  122. package/dist/hooks/useEventCallback.js.map +1 -0
  123. package/dist/hooks/useId.d.ts +30 -0
  124. package/dist/hooks/useId.d.ts.map +1 -0
  125. package/dist/hooks/useId.js +9 -0
  126. package/dist/hooks/useId.js.map +1 -0
  127. package/dist/hooks/useIntersectionObserver.d.ts +51 -0
  128. package/dist/hooks/useIntersectionObserver.d.ts.map +1 -0
  129. package/dist/hooks/useIntersectionObserver.js +25 -0
  130. package/dist/hooks/useIntersectionObserver.js.map +1 -0
  131. package/dist/hooks/useInterval.d.ts +55 -0
  132. package/dist/hooks/useInterval.d.ts.map +1 -0
  133. package/dist/hooks/useInterval.js +24 -0
  134. package/dist/hooks/useInterval.js.map +1 -0
  135. package/dist/hooks/useLocalStorage.d.ts +43 -0
  136. package/dist/hooks/useLocalStorage.d.ts.map +1 -0
  137. package/dist/hooks/useLocalStorage.js +53 -0
  138. package/dist/hooks/useLocalStorage.js.map +1 -0
  139. package/dist/hooks/useMergedRefs.d.ts +27 -0
  140. package/dist/hooks/useMergedRefs.d.ts.map +1 -0
  141. package/dist/hooks/useMergedRefs.js +11 -0
  142. package/dist/hooks/useMergedRefs.js.map +1 -0
  143. package/dist/hooks/useOnClickOutside.d.ts +32 -0
  144. package/dist/hooks/useOnClickOutside.d.ts.map +1 -0
  145. package/dist/hooks/useOnClickOutside.js +23 -0
  146. package/dist/hooks/useOnClickOutside.js.map +1 -0
  147. package/dist/hooks/usePrevious.d.ts +33 -0
  148. package/dist/hooks/usePrevious.d.ts.map +1 -0
  149. package/dist/hooks/usePrevious.js +14 -0
  150. package/dist/hooks/usePrevious.js.map +1 -0
  151. package/dist/hooks/useThrottle.d.ts +37 -0
  152. package/dist/hooks/useThrottle.d.ts.map +1 -0
  153. package/dist/hooks/useThrottle.js +34 -0
  154. package/dist/hooks/useThrottle.js.map +1 -0
  155. package/dist/hooks/useTimeout.d.ts +28 -0
  156. package/dist/hooks/useTimeout.d.ts.map +1 -0
  157. package/dist/hooks/useTimeout.js +24 -0
  158. package/dist/hooks/useTimeout.js.map +1 -0
  159. package/dist/index.d.ts +14 -0
  160. package/dist/index.d.ts.map +1 -1
  161. package/dist/index.js +14 -0
  162. package/dist/lib/utilities.d.ts +2 -3
  163. package/dist/lib/utilities.d.ts.map +1 -1
  164. package/dist/lib/utilities.js.map +1 -1
  165. package/dist/motion/tokens.js +5 -5
  166. package/dist/motion/tokens.js.map +1 -1
  167. package/dist/rslib-runtime.js +39 -0
  168. package/dist/rslib-runtime.js.map +1 -0
  169. package/package.json +82 -3
  170. package/src/components/ui/alert-dialog.tsx +15 -8
  171. package/src/components/ui/avatar.tsx +9 -6
  172. package/src/components/ui/calendar.tsx +7 -13
  173. package/src/components/ui/carousel.tsx +2 -0
  174. package/src/components/ui/chart.tsx +63 -60
  175. package/src/components/ui/checkbox-group.tsx +4 -5
  176. package/src/components/ui/checkbox.tsx +10 -2
  177. package/src/components/ui/collapsible.tsx +1 -0
  178. package/src/components/ui/combobox.module.css +158 -0
  179. package/src/components/ui/combobox.tsx +569 -0
  180. package/src/components/ui/command.tsx +31 -15
  181. package/src/components/ui/context-menu.tsx +3 -0
  182. package/src/components/ui/drawer.tsx +2 -0
  183. package/src/components/ui/dropdown-menu.tsx +3 -0
  184. package/src/components/ui/dropdrawer.tsx +80 -62
  185. package/src/components/ui/menubar.tsx +9 -10
  186. package/src/components/ui/meter.tsx +16 -17
  187. package/src/components/ui/navigation-menu.tsx +41 -33
  188. package/src/components/ui/number-field.tsx +6 -13
  189. package/src/components/ui/progress.tsx +3 -2
  190. package/src/components/ui/radio-group.tsx +2 -5
  191. package/src/components/ui/resizable.tsx +2 -2
  192. package/src/components/ui/scratcher.tsx +6 -10
  193. package/src/components/ui/scroll-area.tsx +2 -5
  194. package/src/components/ui/separator.tsx +4 -3
  195. package/src/components/ui/sheet.tsx +3 -0
  196. package/src/components/ui/sidebar.tsx +1 -0
  197. package/src/components/ui/sonner.tsx +20 -12
  198. package/src/components/ui/toggle-group.tsx +6 -4
  199. package/src/components/ui/toolbar.tsx +20 -21
  200. package/src/hooks/useClipboard.tsx +137 -0
  201. package/src/hooks/useControllableState.tsx +81 -0
  202. package/src/hooks/useDebounce.tsx +50 -0
  203. package/src/hooks/useEventCallback.tsx +47 -0
  204. package/src/hooks/useId.tsx +36 -0
  205. package/src/hooks/useIntersectionObserver.tsx +81 -0
  206. package/src/hooks/useInterval.tsx +80 -0
  207. package/src/hooks/useLocalStorage.tsx +111 -0
  208. package/src/hooks/useMergedRefs.tsx +48 -0
  209. package/src/hooks/useOnClickOutside.tsx +55 -0
  210. package/src/hooks/usePrevious.tsx +44 -0
  211. package/src/hooks/useThrottle.tsx +78 -0
  212. package/src/hooks/useTimeout.tsx +51 -0
  213. package/src/index.ts +23 -0
  214. package/src/lib/utilities.ts +4 -4
  215. package/src/motion/tokens.ts +4 -4
  216. package/src/stories/DesignPrinciples.mdx +48 -0
  217. package/src/stories/GettingStarted.mdx +92 -0
  218. package/src/stories/Welcome.mdx +44 -0
@@ -0,0 +1,39 @@
1
+ var __webpack_module_cache__ = {};
2
+ function __webpack_require__(moduleId) {
3
+ var cachedModule = __webpack_module_cache__[moduleId];
4
+ if (void 0 !== cachedModule) return cachedModule.exports;
5
+ var module = __webpack_module_cache__[moduleId] = {
6
+ exports: {}
7
+ };
8
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
9
+ return module.exports;
10
+ }
11
+ (()=>{
12
+ __webpack_require__.d = (exports, definition)=>{
13
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
14
+ enumerable: true,
15
+ get: definition[key]
16
+ });
17
+ };
18
+ })();
19
+ (()=>{
20
+ __webpack_require__.add = function(modules) {
21
+ Object.assign(__webpack_require__.m, modules);
22
+ };
23
+ })();
24
+ (()=>{
25
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
+ })();
27
+ (()=>{
28
+ __webpack_require__.r = (exports)=>{
29
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
30
+ value: 'Module'
31
+ });
32
+ Object.defineProperty(exports, '__esModule', {
33
+ value: true
34
+ });
35
+ };
36
+ })();
37
+ export { __webpack_require__ };
38
+
39
+ //# sourceMappingURL=rslib-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rslib-runtime.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/esm_register_module","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.add = function registerModules(modules) { Object.assign(__webpack_require__.m, modules) }\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["__webpack_require__","exports","definition","key","Object","modules","obj","prop","Symbol"],"mappings":";;;;;;;;;;;IAAAA,oBAAoB,CAAC,GAAG,CAACC,SAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGF,oBAAoB,CAAC,CAACE,YAAYC,QAAQ,CAACH,oBAAoB,CAAC,CAACC,SAASE,MACzEC,OAAO,cAAc,CAACH,SAASE,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAH,oBAAoB,GAAG,GAAG,SAAyBK,OAAO;QAAID,OAAO,MAAM,CAACJ,oBAAoB,CAAC,EAAEK;IAAS;;;ICA5GL,oBAAoB,CAAC,GAAG,CAACM,KAAKC,OAAUH,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACE,KAAKC;;;ICClFP,oBAAoB,CAAC,GAAG,CAACC;QACxB,IAAG,AAAkB,MAAlB,OAAOO,UAA0BA,OAAO,WAAW,EACrDJ,OAAO,cAAc,CAACH,SAASO,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEJ,OAAO,cAAc,CAACH,SAAS,cAAc;YAAE,OAAO;QAAK;IAC5D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arolariu/components",
3
3
  "displayName": "@arolariu/components",
4
- "version": "1.0.0",
4
+ "version": "1.1.0",
5
5
  "description": "🎨 70+ beautiful, accessible React components built on Base UI. TypeScript-first, CSS Modules styling, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡",
6
6
  "homepage": "https://arolariu.ro",
7
7
  "repository": {
@@ -87,7 +87,9 @@
87
87
  "build:clean": "rimraf dist",
88
88
  "build:exports": "node scripts/generate-exports.ts",
89
89
  "test": "npm run test:unit",
90
- "test:unit": "vitest run"
90
+ "test:unit": "vitest run",
91
+ "storybook": "storybook dev -p 6006",
92
+ "build-storybook": "storybook build"
91
93
  },
92
94
  "dependencies": {
93
95
  "clsx": "*",
@@ -110,17 +112,24 @@
110
112
  "@rsbuild/core": "*",
111
113
  "@rsbuild/plugin-react": "*",
112
114
  "@rslib/core": "*",
115
+ "@storybook/addon-a11y": "*",
116
+ "@storybook/addon-docs": "*",
117
+ "@storybook/addon-links": "*",
118
+ "@storybook/addon-themes": "*",
113
119
  "@types/node": "*",
114
120
  "@types/react": "*",
115
121
  "@types/react-dom": "*",
116
122
  "motion": "*",
117
- "postcss": "*",
118
123
  "playwright": "*",
124
+ "postcss": "*",
119
125
  "react": "*",
120
126
  "react-dom": "*",
121
127
  "react-hook-form": "*",
122
128
  "recharts": "*",
123
129
  "rimraf": "*",
130
+ "storybook": "*",
131
+ "storybook-addon-rslib": "*",
132
+ "storybook-react-rsbuild": "*",
124
133
  "typescript": "*"
125
134
  },
126
135
  "publishConfig": {
@@ -241,6 +250,11 @@
241
250
  "import": "./dist/components/ui/collapsible.js",
242
251
  "default": "./dist/components/ui/collapsible.js"
243
252
  },
253
+ "./combobox": {
254
+ "types": "./dist/components/ui/combobox.d.ts",
255
+ "import": "./dist/components/ui/combobox.js",
256
+ "default": "./dist/components/ui/combobox.js"
257
+ },
244
258
  "./command": {
245
259
  "types": "./dist/components/ui/command.d.ts",
246
260
  "import": "./dist/components/ui/command.js",
@@ -566,11 +580,31 @@
566
580
  "import": "./dist/hooks/useBreakpoint.js",
567
581
  "default": "./dist/hooks/useBreakpoint.js"
568
582
  },
583
+ "./useClipboard": {
584
+ "types": "./dist/hooks/useClipboard.d.ts",
585
+ "import": "./dist/hooks/useClipboard.js",
586
+ "default": "./dist/hooks/useClipboard.js"
587
+ },
569
588
  "./useColorScheme": {
570
589
  "types": "./dist/hooks/useColorScheme.d.ts",
571
590
  "import": "./dist/hooks/useColorScheme.js",
572
591
  "default": "./dist/hooks/useColorScheme.js"
573
592
  },
593
+ "./useControllableState": {
594
+ "types": "./dist/hooks/useControllableState.d.ts",
595
+ "import": "./dist/hooks/useControllableState.js",
596
+ "default": "./dist/hooks/useControllableState.js"
597
+ },
598
+ "./useDebounce": {
599
+ "types": "./dist/hooks/useDebounce.d.ts",
600
+ "import": "./dist/hooks/useDebounce.js",
601
+ "default": "./dist/hooks/useDebounce.js"
602
+ },
603
+ "./useEventCallback": {
604
+ "types": "./dist/hooks/useEventCallback.d.ts",
605
+ "import": "./dist/hooks/useEventCallback.js",
606
+ "default": "./dist/hooks/useEventCallback.js"
607
+ },
574
608
  "./useFocusManager": {
575
609
  "types": "./dist/hooks/useFocusManager.d.ts",
576
610
  "import": "./dist/hooks/useFocusManager.js",
@@ -581,26 +615,71 @@
581
615
  "import": "./dist/hooks/useFocusVisible.js",
582
616
  "default": "./dist/hooks/useFocusVisible.js"
583
617
  },
618
+ "./useId": {
619
+ "types": "./dist/hooks/useId.d.ts",
620
+ "import": "./dist/hooks/useId.js",
621
+ "default": "./dist/hooks/useId.js"
622
+ },
623
+ "./useIntersectionObserver": {
624
+ "types": "./dist/hooks/useIntersectionObserver.d.ts",
625
+ "import": "./dist/hooks/useIntersectionObserver.js",
626
+ "default": "./dist/hooks/useIntersectionObserver.js"
627
+ },
628
+ "./useInterval": {
629
+ "types": "./dist/hooks/useInterval.d.ts",
630
+ "import": "./dist/hooks/useInterval.js",
631
+ "default": "./dist/hooks/useInterval.js"
632
+ },
584
633
  "./useIsMobile": {
585
634
  "types": "./dist/hooks/useIsMobile.d.ts",
586
635
  "import": "./dist/hooks/useIsMobile.js",
587
636
  "default": "./dist/hooks/useIsMobile.js"
588
637
  },
638
+ "./useLocalStorage": {
639
+ "types": "./dist/hooks/useLocalStorage.d.ts",
640
+ "import": "./dist/hooks/useLocalStorage.js",
641
+ "default": "./dist/hooks/useLocalStorage.js"
642
+ },
589
643
  "./useMediaQuery": {
590
644
  "types": "./dist/hooks/useMediaQuery.d.ts",
591
645
  "import": "./dist/hooks/useMediaQuery.js",
592
646
  "default": "./dist/hooks/useMediaQuery.js"
593
647
  },
648
+ "./useMergedRefs": {
649
+ "types": "./dist/hooks/useMergedRefs.d.ts",
650
+ "import": "./dist/hooks/useMergedRefs.js",
651
+ "default": "./dist/hooks/useMergedRefs.js"
652
+ },
653
+ "./useOnClickOutside": {
654
+ "types": "./dist/hooks/useOnClickOutside.d.ts",
655
+ "import": "./dist/hooks/useOnClickOutside.js",
656
+ "default": "./dist/hooks/useOnClickOutside.js"
657
+ },
594
658
  "./usePrefersContrast": {
595
659
  "types": "./dist/hooks/usePrefersContrast.d.ts",
596
660
  "import": "./dist/hooks/usePrefersContrast.js",
597
661
  "default": "./dist/hooks/usePrefersContrast.js"
598
662
  },
663
+ "./usePrevious": {
664
+ "types": "./dist/hooks/usePrevious.d.ts",
665
+ "import": "./dist/hooks/usePrevious.js",
666
+ "default": "./dist/hooks/usePrevious.js"
667
+ },
599
668
  "./useReducedMotion": {
600
669
  "types": "./dist/hooks/useReducedMotion.d.ts",
601
670
  "import": "./dist/hooks/useReducedMotion.js",
602
671
  "default": "./dist/hooks/useReducedMotion.js"
603
672
  },
673
+ "./useThrottle": {
674
+ "types": "./dist/hooks/useThrottle.d.ts",
675
+ "import": "./dist/hooks/useThrottle.js",
676
+ "default": "./dist/hooks/useThrottle.js"
677
+ },
678
+ "./useTimeout": {
679
+ "types": "./dist/hooks/useTimeout.d.ts",
680
+ "import": "./dist/hooks/useTimeout.js",
681
+ "default": "./dist/hooks/useTimeout.js"
682
+ },
604
683
  "./useWindowSize": {
605
684
  "types": "./dist/hooks/useWindowSize.d.ts",
606
685
  "import": "./dist/hooks/useWindowSize.js",
@@ -108,13 +108,15 @@ AlertDialog.displayName = "AlertDialog";
108
108
  *
109
109
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
110
110
  */
111
- function AlertDialogTrigger(props: Readonly<AlertDialogTrigger.Props>): React.ReactElement {
111
+ const AlertDialogTrigger = React.forwardRef<HTMLButtonElement, AlertDialogTrigger.Props>(function AlertDialogTrigger(props, forwardedRef) {
112
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
112
113
  const {asChild = false, children, className, render, ...otherProps} = props;
113
114
  const renderProp = asChild && React.isValidElement(children) ? children : render;
114
115
 
115
116
  return (
116
117
  <BaseAlertDialog.Trigger
117
118
  {...otherProps}
119
+ ref={forwardedRef}
118
120
  render={useRender({
119
121
  defaultTagName: "button",
120
122
  render: renderProp as never,
@@ -123,7 +125,7 @@ function AlertDialogTrigger(props: Readonly<AlertDialogTrigger.Props>): React.Re
123
125
  {renderProp ? undefined : children}
124
126
  </BaseAlertDialog.Trigger>
125
127
  );
126
- }
128
+ });
127
129
  AlertDialogTrigger.displayName = "AlertDialogTrigger";
128
130
 
129
131
  /**
@@ -198,7 +200,7 @@ AlertDialogOverlay.displayName = "AlertDialogOverlay";
198
200
  *
199
201
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
200
202
  */
201
- function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.ReactElement {
203
+ const AlertDialogContent = React.forwardRef<HTMLDivElement, AlertDialogContent.Props>(function AlertDialogContent(props, forwardedRef) {
202
204
  const {className, children, render, ...otherProps} = props;
203
205
 
204
206
  return (
@@ -206,6 +208,7 @@ function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.Re
206
208
  <AlertDialogOverlay />
207
209
  <BaseAlertDialog.Popup
208
210
  {...otherProps}
211
+ ref={forwardedRef}
209
212
  render={useRender({
210
213
  defaultTagName: "div",
211
214
  render: render as never,
@@ -215,7 +218,7 @@ function AlertDialogContent(props: Readonly<AlertDialogContent.Props>): React.Re
215
218
  </BaseAlertDialog.Popup>
216
219
  </AlertDialogPortal>
217
220
  );
218
- }
221
+ });
219
222
  AlertDialogContent.displayName = "AlertDialogContent";
220
223
 
221
224
  /**
@@ -237,6 +240,7 @@ AlertDialogContent.displayName = "AlertDialogContent";
237
240
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
238
241
  */
239
242
  function AlertDialogHeader(props: Readonly<AlertDialogHeader.Props>): React.ReactElement {
243
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
240
244
  const {asChild = false, children, className, render, ...otherProps} = props;
241
245
  const renderProp = asChild && React.isValidElement(children) ? children : render;
242
246
 
@@ -269,6 +273,7 @@ AlertDialogHeader.displayName = "AlertDialogHeader";
269
273
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
270
274
  */
271
275
  function AlertDialogFooter(props: Readonly<AlertDialogFooter.Props>): React.ReactElement {
276
+ // eslint-disable-next-line sonarjs/deprecation -- backward-compatible asChild API
272
277
  const {asChild = false, children, className, render, ...otherProps} = props;
273
278
  const renderProp = asChild && React.isValidElement(children) ? children : render;
274
279
 
@@ -364,12 +369,13 @@ AlertDialogDescription.displayName = "AlertDialogDescription";
364
369
  *
365
370
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
366
371
  */
367
- function AlertDialogAction(props: Readonly<AlertDialogAction.Props>): React.ReactElement {
372
+ const AlertDialogAction = React.forwardRef<HTMLButtonElement, AlertDialogAction.Props>(function AlertDialogAction(props, forwardedRef) {
368
373
  const {className, children, render, ...otherProps} = props;
369
374
 
370
375
  return (
371
376
  <BaseAlertDialog.Close
372
377
  {...otherProps}
378
+ ref={forwardedRef}
373
379
  render={useRender({
374
380
  defaultTagName: "button",
375
381
  render: render as never,
@@ -383,7 +389,7 @@ function AlertDialogAction(props: Readonly<AlertDialogAction.Props>): React.Reac
383
389
  {children}
384
390
  </BaseAlertDialog.Close>
385
391
  );
386
- }
392
+ });
387
393
  AlertDialogAction.displayName = "AlertDialogAction";
388
394
 
389
395
  /**
@@ -402,12 +408,13 @@ AlertDialogAction.displayName = "AlertDialogAction";
402
408
  *
403
409
  * @see {@link https://base-ui.com/react/components/alert-dialog | Base UI Documentation}
404
410
  */
405
- function AlertDialogCancel(props: Readonly<AlertDialogCancel.Props>): React.ReactElement {
411
+ const AlertDialogCancel = React.forwardRef<HTMLButtonElement, AlertDialogCancel.Props>(function AlertDialogCancel(props, forwardedRef) {
406
412
  const {className, children, render, ...otherProps} = props;
407
413
 
408
414
  return (
409
415
  <BaseAlertDialog.Close
410
416
  {...otherProps}
417
+ ref={forwardedRef}
411
418
  render={useRender({
412
419
  defaultTagName: "button",
413
420
  render: render as never,
@@ -421,7 +428,7 @@ function AlertDialogCancel(props: Readonly<AlertDialogCancel.Props>): React.Reac
421
428
  {children}
422
429
  </BaseAlertDialog.Close>
423
430
  );
424
- }
431
+ });
425
432
  AlertDialogCancel.displayName = "AlertDialogCancel";
426
433
 
427
434
  // eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
@@ -51,12 +51,13 @@ interface AvatarFallbackProps extends Omit<React.ComponentPropsWithRef<typeof Ba
51
51
  *
52
52
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
53
53
  */
54
- function Avatar(props: Readonly<Avatar.Props>): React.ReactElement {
54
+ const Avatar = React.forwardRef<HTMLSpanElement, Avatar.Props>(function Avatar(props, forwardedRef) {
55
55
  const {className, children, render, ...otherProps} = props;
56
56
 
57
57
  return (
58
58
  <BaseAvatar.Root
59
59
  {...otherProps}
60
+ ref={forwardedRef}
60
61
  render={useRender({
61
62
  defaultTagName: "span",
62
63
  render: render as never,
@@ -65,7 +66,7 @@ function Avatar(props: Readonly<Avatar.Props>): React.ReactElement {
65
66
  {children}
66
67
  </BaseAvatar.Root>
67
68
  );
68
- }
69
+ });
69
70
  Avatar.displayName = "Avatar";
70
71
 
71
72
  /**
@@ -84,12 +85,13 @@ Avatar.displayName = "Avatar";
84
85
  *
85
86
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
86
87
  */
87
- function AvatarImage(props: Readonly<AvatarImage.Props>): React.ReactElement {
88
+ const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImage.Props>(function AvatarImage(props, forwardedRef) {
88
89
  const {className, render, ...otherProps} = props;
89
90
 
90
91
  return (
91
92
  <BaseAvatar.Image
92
93
  {...otherProps}
94
+ ref={forwardedRef}
93
95
  render={useRender({
94
96
  defaultTagName: "img",
95
97
  render: render as never,
@@ -97,7 +99,7 @@ function AvatarImage(props: Readonly<AvatarImage.Props>): React.ReactElement {
97
99
  })}
98
100
  />
99
101
  );
100
- }
102
+ });
101
103
  AvatarImage.displayName = "AvatarImage";
102
104
 
103
105
  /**
@@ -116,12 +118,13 @@ AvatarImage.displayName = "AvatarImage";
116
118
  *
117
119
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Documentation}
118
120
  */
119
- function AvatarFallback(props: Readonly<AvatarFallback.Props>): React.ReactElement {
121
+ const AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallback.Props>(function AvatarFallback(props, forwardedRef) {
120
122
  const {className, children, render, ...otherProps} = props;
121
123
 
122
124
  return (
123
125
  <BaseAvatar.Fallback
124
126
  {...otherProps}
127
+ ref={forwardedRef}
125
128
  render={useRender({
126
129
  defaultTagName: "span",
127
130
  render: render as never,
@@ -130,7 +133,7 @@ function AvatarFallback(props: Readonly<AvatarFallback.Props>): React.ReactEleme
130
133
  {children}
131
134
  </BaseAvatar.Fallback>
132
135
  );
133
- }
136
+ });
134
137
  AvatarFallback.displayName = "AvatarFallback";
135
138
 
136
139
  // eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
@@ -58,16 +58,10 @@ const calendarButtonVariantStyles: Record<CalendarButtonVariant, string> = {
58
58
  *
59
59
  * @see {@link https://daypicker.dev | React Day Picker Docs}
60
60
  */
61
- function Calendar({
62
- className,
63
- classNames,
64
- showOutsideDays = true,
65
- captionLayout = "label",
66
- buttonVariant = "ghost",
67
- formatters,
68
- components,
69
- ...props
70
- }: Readonly<CalendarProps>): React.JSX.Element {
61
+ const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(function Calendar(
62
+ {className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props},
63
+ forwardedRef,
64
+ ) {
71
65
  return (
72
66
  <DayPicker
73
67
  showOutsideDays={showOutsideDays}
@@ -75,7 +69,7 @@ function Calendar({
75
69
  captionLayout={captionLayout}
76
70
  formatters={{
77
71
  formatMonthDropdown: (date) => {
78
- const locale = props.locale;
72
+ const {locale} = props;
79
73
 
80
74
  return date.toLocaleString(locale?.code ?? "default", {month: "short"});
81
75
  },
@@ -125,7 +119,7 @@ function Calendar({
125
119
  Root: ({className: rootClassName, rootRef, ...rootProps}) => (
126
120
  <div
127
121
  data-slot='calendar'
128
- ref={rootRef}
122
+ ref={rootRef ?? forwardedRef}
129
123
  className={cn(styles.calendarRoot, rootClassName)}
130
124
  {...rootProps}
131
125
  />
@@ -163,7 +157,7 @@ function Calendar({
163
157
  {...props}
164
158
  />
165
159
  );
166
- }
160
+ });
167
161
 
168
162
  function CalendarWeekNumber({week, children, ...tdProps}: Readonly<CalendarWeekNumberProps>): React.JSX.Element {
169
163
  return (
@@ -127,7 +127,9 @@ const Carousel = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivEl
127
127
  return;
128
128
  }
129
129
 
130
+ // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect
130
131
  setCanScrollPrev(emblaApi.canScrollPrev());
132
+ // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect
131
133
  setCanScrollNext(emblaApi.canScrollNext());
132
134
  }, []);
133
135