ivt 0.4.4 → 0.4.6

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 (228) hide show
  1. package/dist/accordion/index.mjs +15 -14
  2. package/dist/accordion/index.mjs.map +1 -1
  3. package/dist/alert/index.mjs +2 -2
  4. package/dist/alert-dialog/index.mjs +17 -16
  5. package/dist/alert-dialog/index.mjs.map +1 -1
  6. package/dist/aspect-ratio/index.d.ts +7 -0
  7. package/dist/aspect-ratio/index.mjs +46 -0
  8. package/dist/aspect-ratio/index.mjs.map +1 -0
  9. package/dist/avatar/index.mjs +7 -7
  10. package/dist/badge/index.mjs +3 -3
  11. package/dist/base/index.d.ts +34 -8
  12. package/dist/base/index.mjs +73 -639
  13. package/dist/base/index.mjs.map +1 -1
  14. package/dist/breadcrumb/index.d.ts +14 -0
  15. package/dist/breadcrumb/index.mjs +71 -0
  16. package/dist/breadcrumb/index.mjs.map +1 -0
  17. package/dist/button/index.mjs +3 -3
  18. package/dist/calendar/index.mjs +8 -8
  19. package/dist/card/index.mjs +2 -2
  20. package/dist/carousel/index.d.ts +25 -0
  21. package/dist/carousel/index.mjs +1793 -0
  22. package/dist/carousel/index.mjs.map +1 -0
  23. package/dist/chart/index.mjs +4 -4
  24. package/dist/checkbox/index.mjs +13 -13
  25. package/dist/chunks/{Container-OkpmLImV.mjs → Container-sBmoUJ1A.mjs} +2 -2
  26. package/dist/chunks/{Container-OkpmLImV.mjs.map → Container-sBmoUJ1A.mjs.map} +1 -1
  27. package/dist/chunks/{_commonjsHelpers-DB0L5QuM.mjs → _commonjsHelpers-DMx7h_rP.mjs} +1 -1
  28. package/dist/chunks/_commonjsHelpers-DMx7h_rP.mjs.map +1 -0
  29. package/dist/chunks/{accordion-D8D50bOM.mjs → accordion-BEzCfjyX.mjs} +11 -133
  30. package/dist/chunks/accordion-BEzCfjyX.mjs.map +1 -0
  31. package/dist/chunks/{badge-D6WUAOGu.mjs → badge-poifvE-U.mjs} +2 -2
  32. package/dist/chunks/{badge-D6WUAOGu.mjs.map → badge-poifvE-U.mjs.map} +1 -1
  33. package/dist/chunks/{bundle-mjs-CHV3NDgz.mjs → bundle-mjs-8KEENQOJ.mjs} +1 -1
  34. package/dist/chunks/{bundle-mjs-CHV3NDgz.mjs.map → bundle-mjs-8KEENQOJ.mjs.map} +1 -1
  35. package/dist/chunks/{button-C4494Xwz.mjs → button-TULRIYFO.mjs} +2 -2
  36. package/dist/chunks/{button-C4494Xwz.mjs.map → button-TULRIYFO.mjs.map} +1 -1
  37. package/dist/chunks/{calendar-Bn7etJ7O.mjs → calendar-nJ5T1YgK.mjs} +6 -6
  38. package/dist/chunks/{calendar-Bn7etJ7O.mjs.map → calendar-nJ5T1YgK.mjs.map} +1 -1
  39. package/dist/chunks/{check-BufRfuJc.mjs → check-DcPt24aD.mjs} +2 -2
  40. package/dist/chunks/{check-BufRfuJc.mjs.map → check-DcPt24aD.mjs.map} +1 -1
  41. package/dist/chunks/{chevron-down-B2x6HHdH.mjs → chevron-down-BNw46No-.mjs} +2 -2
  42. package/dist/chunks/{chevron-down-B2x6HHdH.mjs.map → chevron-down-BNw46No-.mjs.map} +1 -1
  43. package/dist/chunks/{chevron-left-DII9rLXX.mjs → chevron-left-B-ZN622G.mjs} +2 -2
  44. package/dist/chunks/{chevron-left-DII9rLXX.mjs.map → chevron-left-B-ZN622G.mjs.map} +1 -1
  45. package/dist/chunks/{chevron-right-lKnfXpjb.mjs → chevron-right-Ddz8dCda.mjs} +2 -2
  46. package/dist/chunks/{chevron-right-lKnfXpjb.mjs.map → chevron-right-Ddz8dCda.mjs.map} +1 -1
  47. package/dist/chunks/{chevrons-up-down-B_ep4nON.mjs → chevrons-up-down-ChXPuZd6.mjs} +2 -2
  48. package/dist/chunks/{chevrons-up-down-B_ep4nON.mjs.map → chevrons-up-down-ChXPuZd6.mjs.map} +1 -1
  49. package/dist/chunks/{command-CrYOqG25.mjs → command-D6QS1LFL.mjs} +8 -8
  50. package/dist/chunks/{command-CrYOqG25.mjs.map → command-D6QS1LFL.mjs.map} +1 -1
  51. package/dist/chunks/{createLucideIcon-BAOK8uBo.mjs → createLucideIcon-DOOu6ntc.mjs} +1 -1
  52. package/dist/chunks/{createLucideIcon-BAOK8uBo.mjs.map → createLucideIcon-DOOu6ntc.mjs.map} +1 -1
  53. package/dist/chunks/{dialog-FO9bKZ6s.mjs → dialog-BefJPh8X.mjs} +4 -4
  54. package/dist/chunks/{dialog-FO9bKZ6s.mjs.map → dialog-BefJPh8X.mjs.map} +1 -1
  55. package/dist/chunks/ellipsis-Cwr1X9R2.mjs +35 -0
  56. package/dist/chunks/ellipsis-Cwr1X9R2.mjs.map +1 -0
  57. package/dist/chunks/{hover-card-CuN13oVM.mjs → hover-card-CcNjcMZa.mjs} +11 -10
  58. package/dist/chunks/{hover-card-CuN13oVM.mjs.map → hover-card-CcNjcMZa.mjs.map} +1 -1
  59. package/dist/chunks/{index-CX0Te_pb.mjs → index-0fdTSdHQ.mjs} +6 -21
  60. package/dist/chunks/index-0fdTSdHQ.mjs.map +1 -0
  61. package/dist/chunks/{index-CUDW0ZQ_.mjs → index-1tph_k2t.mjs} +1 -1
  62. package/dist/chunks/{index-CUDW0ZQ_.mjs.map → index-1tph_k2t.mjs.map} +1 -1
  63. package/dist/chunks/{index-BzMhdUkg.mjs → index-BCsiqIRL.mjs} +1 -1
  64. package/dist/chunks/{index-BzMhdUkg.mjs.map → index-BCsiqIRL.mjs.map} +1 -1
  65. package/dist/chunks/index-Bb31UsVK.mjs +7 -0
  66. package/dist/chunks/index-Bb31UsVK.mjs.map +1 -0
  67. package/dist/chunks/index-BnNdF3Y6.mjs +133 -0
  68. package/dist/chunks/index-BnNdF3Y6.mjs.map +1 -0
  69. package/dist/chunks/{index-D_xzHl5d.mjs → index-BwVg1Kb5.mjs} +1 -1
  70. package/dist/chunks/{index-D_xzHl5d.mjs.map → index-BwVg1Kb5.mjs.map} +1 -1
  71. package/dist/chunks/{index-CXNCVcaz.mjs → index-CK9CWim6.mjs} +2 -2
  72. package/dist/chunks/{index-CXNCVcaz.mjs.map → index-CK9CWim6.mjs.map} +1 -1
  73. package/dist/chunks/{index-mYta_RI8.mjs → index-CQc8iXpK.mjs} +11 -10
  74. package/dist/chunks/{index-mYta_RI8.mjs.map → index-CQc8iXpK.mjs.map} +1 -1
  75. package/dist/chunks/{index-Dw8lQ-RR.mjs → index-CSiM72Dy.mjs} +1 -1
  76. package/dist/chunks/{index-Dw8lQ-RR.mjs.map → index-CSiM72Dy.mjs.map} +1 -1
  77. package/dist/chunks/{index-BNqOXbUm.mjs → index-CWMDV9qs.mjs} +2 -2
  78. package/dist/chunks/{index-BNqOXbUm.mjs.map → index-CWMDV9qs.mjs.map} +1 -1
  79. package/dist/chunks/{index-8gnkKZlE.mjs → index-CjtaP9C4.mjs} +1 -1
  80. package/dist/chunks/{index-8gnkKZlE.mjs.map → index-CjtaP9C4.mjs.map} +1 -1
  81. package/dist/chunks/index-Cl4mLFZO.mjs +21 -0
  82. package/dist/chunks/index-Cl4mLFZO.mjs.map +1 -0
  83. package/dist/chunks/{index-BbDRMUvK.mjs → index-D1qT_gBX.mjs} +1 -1
  84. package/dist/chunks/{index-BbDRMUvK.mjs.map → index-D1qT_gBX.mjs.map} +1 -1
  85. package/dist/chunks/{index-DT-ocbAI.mjs → index-D7B2_9g4.mjs} +2 -2
  86. package/dist/chunks/{index-DT-ocbAI.mjs.map → index-D7B2_9g4.mjs.map} +1 -1
  87. package/dist/chunks/{index-CbW8A2kC.mjs → index-DDe3wbsL.mjs} +1 -1
  88. package/dist/chunks/{index-CbW8A2kC.mjs.map → index-DDe3wbsL.mjs.map} +1 -1
  89. package/dist/chunks/{index-LseEEE-q.mjs → index-DSL6rasA.mjs} +9 -9
  90. package/dist/chunks/{index-LseEEE-q.mjs.map → index-DSL6rasA.mjs.map} +1 -1
  91. package/dist/chunks/{index-zNRN-G4N.mjs → index-DejfSFbY.mjs} +7 -7
  92. package/dist/chunks/{index-zNRN-G4N.mjs.map → index-DejfSFbY.mjs.map} +1 -1
  93. package/dist/chunks/{index-DfZ3GX4x.mjs → index-DoRi3lh9.mjs} +2 -2
  94. package/dist/chunks/{index-DfZ3GX4x.mjs.map → index-DoRi3lh9.mjs.map} +1 -1
  95. package/dist/chunks/{index-DzMHHCWk.mjs → index-DvLErdHO.mjs} +1 -1
  96. package/dist/chunks/{index-DzMHHCWk.mjs.map → index-DvLErdHO.mjs.map} +1 -1
  97. package/dist/chunks/{index-Df9Yxox9.mjs → index-EfpXtubk.mjs} +5 -5
  98. package/dist/chunks/{index-Df9Yxox9.mjs.map → index-EfpXtubk.mjs.map} +1 -1
  99. package/dist/chunks/{index-BASEfxEg.mjs → index-JyHiZGQv.mjs} +29 -14
  100. package/dist/chunks/index-JyHiZGQv.mjs.map +1 -0
  101. package/dist/chunks/{index--albQ_45.mjs → index-P1gmXtXB.mjs} +3 -3
  102. package/dist/chunks/{index--albQ_45.mjs.map → index-P1gmXtXB.mjs.map} +1 -1
  103. package/dist/chunks/{index-DzjTqHOw.mjs → index-e34k5BX3.mjs} +1 -1
  104. package/dist/chunks/{index-DzjTqHOw.mjs.map → index-e34k5BX3.mjs.map} +1 -1
  105. package/dist/chunks/{input-B2f0GlFq.mjs → input-CDsq1Xde.mjs} +2 -2
  106. package/dist/chunks/{input-B2f0GlFq.mjs.map → input-CDsq1Xde.mjs.map} +1 -1
  107. package/dist/chunks/{label-CTvusVhq.mjs → label-BzGy6SRg.mjs} +3 -3
  108. package/dist/chunks/{label-CTvusVhq.mjs.map → label-BzGy6SRg.mjs.map} +1 -1
  109. package/dist/chunks/{pagination-BLz66_yn.mjs → pagination-CfFGN_ib.mjs} +6 -37
  110. package/dist/chunks/pagination-CfFGN_ib.mjs.map +1 -0
  111. package/dist/chunks/{popover-CuyS8YJG.mjs → popover-BlSoIp_B.mjs} +13 -12
  112. package/dist/chunks/{popover-CuyS8YJG.mjs.map → popover-BlSoIp_B.mjs.map} +1 -1
  113. package/dist/chunks/{progress-Ck6wO1t2.mjs → progress-CIapbA26.mjs} +4 -4
  114. package/dist/chunks/{progress-Ck6wO1t2.mjs.map → progress-CIapbA26.mjs.map} +1 -1
  115. package/dist/chunks/pt-BR-BCfQl1oP.mjs +608 -0
  116. package/dist/chunks/pt-BR-BCfQl1oP.mjs.map +1 -0
  117. package/dist/chunks/{scroll-area-CD6RlkcP.mjs → scroll-area-BE1y6Igy.mjs} +11 -15
  118. package/dist/chunks/scroll-area-BE1y6Igy.mjs.map +1 -0
  119. package/dist/chunks/{select-WF2nid0z.mjs → select-BBb0ke76.mjs} +5 -5
  120. package/dist/chunks/{select-WF2nid0z.mjs.map → select-BBb0ke76.mjs.map} +1 -1
  121. package/dist/chunks/{separator-BK0Tvy4g.mjs → separator-B1yL1lh8.mjs} +3 -3
  122. package/dist/chunks/{separator-BK0Tvy4g.mjs.map → separator-B1yL1lh8.mjs.map} +1 -1
  123. package/dist/chunks/sheet-FhW-R397.mjs +80 -0
  124. package/dist/chunks/sheet-FhW-R397.mjs.map +1 -0
  125. package/dist/chunks/{skeleton-Bl-MaKOs.mjs → skeleton-Cy2Kyc1R.mjs} +2 -2
  126. package/dist/chunks/{skeleton-Bl-MaKOs.mjs.map → skeleton-Cy2Kyc1R.mjs.map} +1 -1
  127. package/dist/chunks/{sortable-DRqX-gMK.mjs → sortable-qR5yOJD2.mjs} +3 -3
  128. package/dist/chunks/{sortable-DRqX-gMK.mjs.map → sortable-qR5yOJD2.mjs.map} +1 -1
  129. package/dist/chunks/{table-Dw1XMlWf.mjs → table-QPbxZz58.mjs} +2 -2
  130. package/dist/chunks/{table-Dw1XMlWf.mjs.map → table-QPbxZz58.mjs.map} +1 -1
  131. package/dist/chunks/{toggle-EOJD2uWa.mjs → toggle-CoBW3Uqo.mjs} +5 -5
  132. package/dist/chunks/{toggle-EOJD2uWa.mjs.map → toggle-CoBW3Uqo.mjs.map} +1 -1
  133. package/dist/chunks/{tooltip-CyByO4MF.mjs → tooltip-DNfLTD30.mjs} +13 -12
  134. package/dist/chunks/{tooltip-CyByO4MF.mjs.map → tooltip-DNfLTD30.mjs.map} +1 -1
  135. package/dist/chunks/{trash-2-Dnyls9bQ.mjs → trash-2-D3X2krCW.mjs} +2 -2
  136. package/dist/chunks/{trash-2-Dnyls9bQ.mjs.map → trash-2-D3X2krCW.mjs.map} +1 -1
  137. package/dist/chunks/{tslib.es6-CZnabdCM.mjs → tslib.es6-UJQ1U8uE.mjs} +1 -1
  138. package/dist/chunks/{tslib.es6-CZnabdCM.mjs.map → tslib.es6-UJQ1U8uE.mjs.map} +1 -1
  139. package/dist/chunks/{utils-Dizh2I4E.mjs → utils-AmLv58nm.mjs} +2 -2
  140. package/dist/chunks/{utils-Dizh2I4E.mjs.map → utils-AmLv58nm.mjs.map} +1 -1
  141. package/dist/chunks/{x-D0eS_uVN.mjs → x-CENvqJg-.mjs} +2 -2
  142. package/dist/chunks/{x-D0eS_uVN.mjs.map → x-CENvqJg-.mjs.map} +1 -1
  143. package/dist/collapsible/index.d.ts +9 -0
  144. package/dist/collapsible/index.mjs +35 -0
  145. package/dist/collapsible/index.mjs.map +1 -0
  146. package/dist/combobox/index.mjs +26 -25
  147. package/dist/combobox/index.mjs.map +1 -1
  148. package/dist/command/index.mjs +20 -19
  149. package/dist/command/index.mjs.map +1 -1
  150. package/dist/context-menu/index.d.ts +28 -0
  151. package/dist/context-menu/index.mjs +460 -0
  152. package/dist/context-menu/index.mjs.map +1 -0
  153. package/dist/data-table/index.mjs +43 -41
  154. package/dist/data-table/index.mjs.map +1 -1
  155. package/dist/date-picker/index.d.ts +38 -0
  156. package/dist/date-picker/index.mjs +64 -0
  157. package/dist/date-picker/index.mjs.map +1 -0
  158. package/dist/dialog/index.mjs +19 -18
  159. package/dist/dialog/index.mjs.map +1 -1
  160. package/dist/drawer/index.d.ts +16 -0
  161. package/dist/drawer/index.mjs +1704 -0
  162. package/dist/drawer/index.mjs.map +1 -0
  163. package/dist/dropdown-menu/index.mjs +23 -23
  164. package/dist/dropzone/index.mjs +18 -17
  165. package/dist/dropzone/index.mjs.map +1 -1
  166. package/dist/form/index.mjs +4 -4
  167. package/dist/hover-card/index.mjs +15 -14
  168. package/dist/hover-card/index.mjs.map +1 -1
  169. package/dist/icon/index.mjs +1 -1
  170. package/dist/index.css +1 -1
  171. package/dist/input/index.mjs +3 -3
  172. package/dist/input-otp/index.d.ts +14 -0
  173. package/dist/input-otp/index.mjs +456 -0
  174. package/dist/input-otp/index.mjs.map +1 -0
  175. package/dist/ivt.css +1 -1
  176. package/dist/label/index.mjs +4 -4
  177. package/dist/layout/index.mjs +5 -5
  178. package/dist/menubar/index.mjs +23 -23
  179. package/dist/multi-select/index.mjs +30 -29
  180. package/dist/multi-select/index.mjs.map +1 -1
  181. package/dist/navigation-menu/index.d.ts +18 -0
  182. package/dist/navigation-menu/index.mjs +868 -0
  183. package/dist/navigation-menu/index.mjs.map +1 -0
  184. package/dist/pagination/index.mjs +8 -7
  185. package/dist/pagination/index.mjs.map +1 -1
  186. package/dist/popover/index.mjs +18 -17
  187. package/dist/popover/index.mjs.map +1 -1
  188. package/dist/progress/index.mjs +5 -5
  189. package/dist/radio-group/index.mjs +20 -20
  190. package/dist/radio-group/index.mjs.map +1 -1
  191. package/dist/resizable/index.d.ts +11 -0
  192. package/dist/resizable/index.mjs +2166 -0
  193. package/dist/resizable/index.mjs.map +1 -0
  194. package/dist/scroll-area/index.mjs +12 -11
  195. package/dist/scroll-area/index.mjs.map +1 -1
  196. package/dist/select/index.mjs +6 -6
  197. package/dist/separator/index.mjs +4 -4
  198. package/dist/shared/index.mjs +5 -5
  199. package/dist/sheet/index.mjs +20 -93
  200. package/dist/sheet/index.mjs.map +1 -1
  201. package/dist/sidebar/index.d.ts +75 -0
  202. package/dist/sidebar/index.mjs +457 -0
  203. package/dist/sidebar/index.mjs.map +1 -0
  204. package/dist/skeleton/index.mjs +3 -3
  205. package/dist/skeleton-component/index.mjs +4 -4
  206. package/dist/slider/index.d.ts +7 -0
  207. package/dist/slider/index.mjs +594 -0
  208. package/dist/slider/index.mjs.map +1 -0
  209. package/dist/sortable/index.mjs +4 -4
  210. package/dist/switch/index.mjs +10 -10
  211. package/dist/table/index.mjs +3 -3
  212. package/dist/tabs/index.mjs +13 -13
  213. package/dist/textarea/index.mjs +2 -2
  214. package/dist/toast/index.mjs +15 -14
  215. package/dist/toast/index.mjs.map +1 -1
  216. package/dist/toggle/index.mjs +7 -7
  217. package/dist/toggle-group/index.mjs +13 -13
  218. package/dist/tooltip/index.mjs +17 -16
  219. package/dist/tooltip/index.mjs.map +1 -1
  220. package/package.json +64 -7
  221. package/dist/chunks/_commonjsHelpers-DB0L5QuM.mjs.map +0 -1
  222. package/dist/chunks/accordion-D8D50bOM.mjs.map +0 -1
  223. package/dist/chunks/circle-B8A0IGvj.mjs +0 -17
  224. package/dist/chunks/circle-B8A0IGvj.mjs.map +0 -1
  225. package/dist/chunks/index-BASEfxEg.mjs.map +0 -1
  226. package/dist/chunks/index-CX0Te_pb.mjs.map +0 -1
  227. package/dist/chunks/pagination-BLz66_yn.mjs.map +0 -1
  228. package/dist/chunks/scroll-area-CD6RlkcP.mjs.map +0 -1
@@ -0,0 +1,594 @@
1
+ import * as React from 'react';
2
+ import { c as clamp } from '../chunks/index-Bb31UsVK.mjs';
3
+ import { c as composeEventHandlers } from '../chunks/index-D1qT_gBX.mjs';
4
+ import { u as useComposedRefs } from '../chunks/index-CSiM72Dy.mjs';
5
+ import { c as createContextScope } from '../chunks/index-DvLErdHO.mjs';
6
+ import { u as useControllableState } from '../chunks/index-DoRi3lh9.mjs';
7
+ import { u as useDirection } from '../chunks/index-CjtaP9C4.mjs';
8
+ import { u as usePrevious } from '../chunks/index-1tph_k2t.mjs';
9
+ import { u as useSize } from '../chunks/index-CK9CWim6.mjs';
10
+ import { P as Primitive } from '../chunks/index-DDe3wbsL.mjs';
11
+ import { createCollection } from '@radix-ui/react-collection';
12
+ import { jsx, jsxs } from 'react/jsx-runtime';
13
+ import { c as cn } from '../chunks/utils-AmLv58nm.mjs';
14
+ import '../chunks/index-BwVg1Kb5.mjs';
15
+ import 'react-dom';
16
+ import '@radix-ui/react-slot';
17
+ import '../chunks/bundle-mjs-8KEENQOJ.mjs';
18
+
19
+ var PAGE_KEYS = [
20
+ "PageUp",
21
+ "PageDown"
22
+ ];
23
+ var ARROW_KEYS = [
24
+ "ArrowUp",
25
+ "ArrowDown",
26
+ "ArrowLeft",
27
+ "ArrowRight"
28
+ ];
29
+ var BACK_KEYS = {
30
+ "from-left": [
31
+ "Home",
32
+ "PageDown",
33
+ "ArrowDown",
34
+ "ArrowLeft"
35
+ ],
36
+ "from-right": [
37
+ "Home",
38
+ "PageDown",
39
+ "ArrowDown",
40
+ "ArrowRight"
41
+ ],
42
+ "from-bottom": [
43
+ "Home",
44
+ "PageDown",
45
+ "ArrowDown",
46
+ "ArrowLeft"
47
+ ],
48
+ "from-top": [
49
+ "Home",
50
+ "PageDown",
51
+ "ArrowUp",
52
+ "ArrowLeft"
53
+ ]
54
+ };
55
+ var SLIDER_NAME = "Slider";
56
+ var [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME);
57
+ var [createSliderContext] = createContextScope(SLIDER_NAME, [
58
+ createCollectionScope
59
+ ]);
60
+ var [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);
61
+ var Slider$1 = React.forwardRef((props, forwardedRef)=>{
62
+ const { name, min = 0, max = 100, step = 1, orientation = "horizontal", disabled = false, minStepsBetweenThumbs = 0, defaultValue = [
63
+ min
64
+ ], value, onValueChange = ()=>{}, onValueCommit = ()=>{}, inverted = false, form, ...sliderProps } = props;
65
+ const thumbRefs = React.useRef(/* @__PURE__ */ new Set());
66
+ const valueIndexToChangeRef = React.useRef(0);
67
+ const isHorizontal = orientation === "horizontal";
68
+ const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;
69
+ const [values = [], setValues] = useControllableState({
70
+ prop: value,
71
+ defaultProp: defaultValue,
72
+ onChange: (value2)=>{
73
+ const thumbs = [
74
+ ...thumbRefs.current
75
+ ];
76
+ thumbs[valueIndexToChangeRef.current]?.focus();
77
+ onValueChange(value2);
78
+ }
79
+ });
80
+ const valuesBeforeSlideStartRef = React.useRef(values);
81
+ function handleSlideStart(value2) {
82
+ const closestIndex = getClosestValueIndex(values, value2);
83
+ updateValues(value2, closestIndex);
84
+ }
85
+ function handleSlideMove(value2) {
86
+ updateValues(value2, valueIndexToChangeRef.current);
87
+ }
88
+ function handleSlideEnd() {
89
+ const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];
90
+ const nextValue = values[valueIndexToChangeRef.current];
91
+ const hasChanged = nextValue !== prevValue;
92
+ if (hasChanged) onValueCommit(values);
93
+ }
94
+ function updateValues(value2, atIndex, { commit } = {
95
+ commit: false
96
+ }) {
97
+ const decimalCount = getDecimalCount(step);
98
+ const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);
99
+ const nextValue = clamp(snapToStep, [
100
+ min,
101
+ max
102
+ ]);
103
+ setValues((prevValues = [])=>{
104
+ const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);
105
+ if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {
106
+ valueIndexToChangeRef.current = nextValues.indexOf(nextValue);
107
+ const hasChanged = String(nextValues) !== String(prevValues);
108
+ if (hasChanged && commit) onValueCommit(nextValues);
109
+ return hasChanged ? nextValues : prevValues;
110
+ } else {
111
+ return prevValues;
112
+ }
113
+ });
114
+ }
115
+ return /* @__PURE__ */ jsx(SliderProvider, {
116
+ scope: props.__scopeSlider,
117
+ name,
118
+ disabled,
119
+ min,
120
+ max,
121
+ valueIndexToChangeRef,
122
+ thumbs: thumbRefs.current,
123
+ values,
124
+ orientation,
125
+ form,
126
+ children: /* @__PURE__ */ jsx(Collection.Provider, {
127
+ scope: props.__scopeSlider,
128
+ children: /* @__PURE__ */ jsx(Collection.Slot, {
129
+ scope: props.__scopeSlider,
130
+ children: /* @__PURE__ */ jsx(SliderOrientation, {
131
+ "aria-disabled": disabled,
132
+ "data-disabled": disabled ? "" : void 0,
133
+ ...sliderProps,
134
+ ref: forwardedRef,
135
+ onPointerDown: composeEventHandlers(sliderProps.onPointerDown, ()=>{
136
+ if (!disabled) valuesBeforeSlideStartRef.current = values;
137
+ }),
138
+ min,
139
+ max,
140
+ inverted,
141
+ onSlideStart: disabled ? void 0 : handleSlideStart,
142
+ onSlideMove: disabled ? void 0 : handleSlideMove,
143
+ onSlideEnd: disabled ? void 0 : handleSlideEnd,
144
+ onHomeKeyDown: ()=>!disabled && updateValues(min, 0, {
145
+ commit: true
146
+ }),
147
+ onEndKeyDown: ()=>!disabled && updateValues(max, values.length - 1, {
148
+ commit: true
149
+ }),
150
+ onStepKeyDown: ({ event, direction: stepDirection })=>{
151
+ if (!disabled) {
152
+ const isPageKey = PAGE_KEYS.includes(event.key);
153
+ const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);
154
+ const multiplier = isSkipKey ? 10 : 1;
155
+ const atIndex = valueIndexToChangeRef.current;
156
+ const value2 = values[atIndex];
157
+ const stepInDirection = step * multiplier * stepDirection;
158
+ updateValues(value2 + stepInDirection, atIndex, {
159
+ commit: true
160
+ });
161
+ }
162
+ }
163
+ })
164
+ })
165
+ })
166
+ });
167
+ });
168
+ Slider$1.displayName = SLIDER_NAME;
169
+ var [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {
170
+ startEdge: "left",
171
+ endEdge: "right",
172
+ size: "width",
173
+ direction: 1
174
+ });
175
+ var SliderHorizontal = React.forwardRef((props, forwardedRef)=>{
176
+ const { min, max, dir, inverted, onSlideStart, onSlideMove, onSlideEnd, onStepKeyDown, ...sliderProps } = props;
177
+ const [slider, setSlider] = React.useState(null);
178
+ const composedRefs = useComposedRefs(forwardedRef, (node)=>setSlider(node));
179
+ const rectRef = React.useRef(void 0);
180
+ const direction = useDirection(dir);
181
+ const isDirectionLTR = direction === "ltr";
182
+ const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;
183
+ function getValueFromPointer(pointerPosition) {
184
+ const rect = rectRef.current || slider.getBoundingClientRect();
185
+ const input = [
186
+ 0,
187
+ rect.width
188
+ ];
189
+ const output = isSlidingFromLeft ? [
190
+ min,
191
+ max
192
+ ] : [
193
+ max,
194
+ min
195
+ ];
196
+ const value = linearScale(input, output);
197
+ rectRef.current = rect;
198
+ return value(pointerPosition - rect.left);
199
+ }
200
+ return /* @__PURE__ */ jsx(SliderOrientationProvider, {
201
+ scope: props.__scopeSlider,
202
+ startEdge: isSlidingFromLeft ? "left" : "right",
203
+ endEdge: isSlidingFromLeft ? "right" : "left",
204
+ direction: isSlidingFromLeft ? 1 : -1,
205
+ size: "width",
206
+ children: /* @__PURE__ */ jsx(SliderImpl, {
207
+ dir: direction,
208
+ "data-orientation": "horizontal",
209
+ ...sliderProps,
210
+ ref: composedRefs,
211
+ style: {
212
+ ...sliderProps.style,
213
+ ["--radix-slider-thumb-transform"]: "translateX(-50%)"
214
+ },
215
+ onSlideStart: (event)=>{
216
+ const value = getValueFromPointer(event.clientX);
217
+ onSlideStart?.(value);
218
+ },
219
+ onSlideMove: (event)=>{
220
+ const value = getValueFromPointer(event.clientX);
221
+ onSlideMove?.(value);
222
+ },
223
+ onSlideEnd: ()=>{
224
+ rectRef.current = void 0;
225
+ onSlideEnd?.();
226
+ },
227
+ onStepKeyDown: (event)=>{
228
+ const slideDirection = isSlidingFromLeft ? "from-left" : "from-right";
229
+ const isBackKey = BACK_KEYS[slideDirection].includes(event.key);
230
+ onStepKeyDown?.({
231
+ event,
232
+ direction: isBackKey ? -1 : 1
233
+ });
234
+ }
235
+ })
236
+ });
237
+ });
238
+ var SliderVertical = React.forwardRef((props, forwardedRef)=>{
239
+ const { min, max, inverted, onSlideStart, onSlideMove, onSlideEnd, onStepKeyDown, ...sliderProps } = props;
240
+ const sliderRef = React.useRef(null);
241
+ const ref = useComposedRefs(forwardedRef, sliderRef);
242
+ const rectRef = React.useRef(void 0);
243
+ const isSlidingFromBottom = !inverted;
244
+ function getValueFromPointer(pointerPosition) {
245
+ const rect = rectRef.current || sliderRef.current.getBoundingClientRect();
246
+ const input = [
247
+ 0,
248
+ rect.height
249
+ ];
250
+ const output = isSlidingFromBottom ? [
251
+ max,
252
+ min
253
+ ] : [
254
+ min,
255
+ max
256
+ ];
257
+ const value = linearScale(input, output);
258
+ rectRef.current = rect;
259
+ return value(pointerPosition - rect.top);
260
+ }
261
+ return /* @__PURE__ */ jsx(SliderOrientationProvider, {
262
+ scope: props.__scopeSlider,
263
+ startEdge: isSlidingFromBottom ? "bottom" : "top",
264
+ endEdge: isSlidingFromBottom ? "top" : "bottom",
265
+ size: "height",
266
+ direction: isSlidingFromBottom ? 1 : -1,
267
+ children: /* @__PURE__ */ jsx(SliderImpl, {
268
+ "data-orientation": "vertical",
269
+ ...sliderProps,
270
+ ref,
271
+ style: {
272
+ ...sliderProps.style,
273
+ ["--radix-slider-thumb-transform"]: "translateY(50%)"
274
+ },
275
+ onSlideStart: (event)=>{
276
+ const value = getValueFromPointer(event.clientY);
277
+ onSlideStart?.(value);
278
+ },
279
+ onSlideMove: (event)=>{
280
+ const value = getValueFromPointer(event.clientY);
281
+ onSlideMove?.(value);
282
+ },
283
+ onSlideEnd: ()=>{
284
+ rectRef.current = void 0;
285
+ onSlideEnd?.();
286
+ },
287
+ onStepKeyDown: (event)=>{
288
+ const slideDirection = isSlidingFromBottom ? "from-bottom" : "from-top";
289
+ const isBackKey = BACK_KEYS[slideDirection].includes(event.key);
290
+ onStepKeyDown?.({
291
+ event,
292
+ direction: isBackKey ? -1 : 1
293
+ });
294
+ }
295
+ })
296
+ });
297
+ });
298
+ var SliderImpl = React.forwardRef((props, forwardedRef)=>{
299
+ const { __scopeSlider, onSlideStart, onSlideMove, onSlideEnd, onHomeKeyDown, onEndKeyDown, onStepKeyDown, ...sliderProps } = props;
300
+ const context = useSliderContext(SLIDER_NAME, __scopeSlider);
301
+ return /* @__PURE__ */ jsx(Primitive.span, {
302
+ ...sliderProps,
303
+ ref: forwardedRef,
304
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event)=>{
305
+ if (event.key === "Home") {
306
+ onHomeKeyDown(event);
307
+ event.preventDefault();
308
+ } else if (event.key === "End") {
309
+ onEndKeyDown(event);
310
+ event.preventDefault();
311
+ } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {
312
+ onStepKeyDown(event);
313
+ event.preventDefault();
314
+ }
315
+ }),
316
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event)=>{
317
+ const target = event.target;
318
+ target.setPointerCapture(event.pointerId);
319
+ event.preventDefault();
320
+ if (context.thumbs.has(target)) {
321
+ target.focus();
322
+ } else {
323
+ onSlideStart(event);
324
+ }
325
+ }),
326
+ onPointerMove: composeEventHandlers(props.onPointerMove, (event)=>{
327
+ const target = event.target;
328
+ if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);
329
+ }),
330
+ onPointerUp: composeEventHandlers(props.onPointerUp, (event)=>{
331
+ const target = event.target;
332
+ if (target.hasPointerCapture(event.pointerId)) {
333
+ target.releasePointerCapture(event.pointerId);
334
+ onSlideEnd(event);
335
+ }
336
+ })
337
+ });
338
+ });
339
+ var TRACK_NAME = "SliderTrack";
340
+ var SliderTrack = React.forwardRef((props, forwardedRef)=>{
341
+ const { __scopeSlider, ...trackProps } = props;
342
+ const context = useSliderContext(TRACK_NAME, __scopeSlider);
343
+ return /* @__PURE__ */ jsx(Primitive.span, {
344
+ "data-disabled": context.disabled ? "" : void 0,
345
+ "data-orientation": context.orientation,
346
+ ...trackProps,
347
+ ref: forwardedRef
348
+ });
349
+ });
350
+ SliderTrack.displayName = TRACK_NAME;
351
+ var RANGE_NAME = "SliderRange";
352
+ var SliderRange = React.forwardRef((props, forwardedRef)=>{
353
+ const { __scopeSlider, ...rangeProps } = props;
354
+ const context = useSliderContext(RANGE_NAME, __scopeSlider);
355
+ const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);
356
+ const ref = React.useRef(null);
357
+ const composedRefs = useComposedRefs(forwardedRef, ref);
358
+ const valuesCount = context.values.length;
359
+ const percentages = context.values.map((value)=>convertValueToPercentage(value, context.min, context.max));
360
+ const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;
361
+ const offsetEnd = 100 - Math.max(...percentages);
362
+ return /* @__PURE__ */ jsx(Primitive.span, {
363
+ "data-orientation": context.orientation,
364
+ "data-disabled": context.disabled ? "" : void 0,
365
+ ...rangeProps,
366
+ ref: composedRefs,
367
+ style: {
368
+ ...props.style,
369
+ [orientation.startEdge]: offsetStart + "%",
370
+ [orientation.endEdge]: offsetEnd + "%"
371
+ }
372
+ });
373
+ });
374
+ SliderRange.displayName = RANGE_NAME;
375
+ var THUMB_NAME = "SliderThumb";
376
+ var SliderThumb = React.forwardRef((props, forwardedRef)=>{
377
+ const getItems = useCollection(props.__scopeSlider);
378
+ const [thumb, setThumb] = React.useState(null);
379
+ const composedRefs = useComposedRefs(forwardedRef, (node)=>setThumb(node));
380
+ const index = React.useMemo(()=>thumb ? getItems().findIndex((item)=>item.ref.current === thumb) : -1, [
381
+ getItems,
382
+ thumb
383
+ ]);
384
+ return /* @__PURE__ */ jsx(SliderThumbImpl, {
385
+ ...props,
386
+ ref: composedRefs,
387
+ index
388
+ });
389
+ });
390
+ var SliderThumbImpl = React.forwardRef((props, forwardedRef)=>{
391
+ const { __scopeSlider, index, name, ...thumbProps } = props;
392
+ const context = useSliderContext(THUMB_NAME, __scopeSlider);
393
+ const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);
394
+ const [thumb, setThumb] = React.useState(null);
395
+ const composedRefs = useComposedRefs(forwardedRef, (node)=>setThumb(node));
396
+ const isFormControl = thumb ? context.form || !!thumb.closest("form") : true;
397
+ const size = useSize(thumb);
398
+ const value = context.values[index];
399
+ const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);
400
+ const label = getLabel(index, context.values.length);
401
+ const orientationSize = size?.[orientation.size];
402
+ const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;
403
+ React.useEffect(()=>{
404
+ if (thumb) {
405
+ context.thumbs.add(thumb);
406
+ return ()=>{
407
+ context.thumbs.delete(thumb);
408
+ };
409
+ }
410
+ }, [
411
+ thumb,
412
+ context.thumbs
413
+ ]);
414
+ return /* @__PURE__ */ jsxs("span", {
415
+ style: {
416
+ transform: "var(--radix-slider-thumb-transform)",
417
+ position: "absolute",
418
+ [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`
419
+ },
420
+ children: [
421
+ /* @__PURE__ */ jsx(Collection.ItemSlot, {
422
+ scope: props.__scopeSlider,
423
+ children: /* @__PURE__ */ jsx(Primitive.span, {
424
+ role: "slider",
425
+ "aria-label": props["aria-label"] || label,
426
+ "aria-valuemin": context.min,
427
+ "aria-valuenow": value,
428
+ "aria-valuemax": context.max,
429
+ "aria-orientation": context.orientation,
430
+ "data-orientation": context.orientation,
431
+ "data-disabled": context.disabled ? "" : void 0,
432
+ tabIndex: context.disabled ? void 0 : 0,
433
+ ...thumbProps,
434
+ ref: composedRefs,
435
+ style: value === void 0 ? {
436
+ display: "none"
437
+ } : props.style,
438
+ onFocus: composeEventHandlers(props.onFocus, ()=>{
439
+ context.valueIndexToChangeRef.current = index;
440
+ })
441
+ })
442
+ }),
443
+ isFormControl && /* @__PURE__ */ jsx(SliderBubbleInput, {
444
+ name: name ?? (context.name ? context.name + (context.values.length > 1 ? "[]" : "") : void 0),
445
+ form: context.form,
446
+ value
447
+ }, index)
448
+ ]
449
+ });
450
+ });
451
+ SliderThumb.displayName = THUMB_NAME;
452
+ var BUBBLE_INPUT_NAME = "RadioBubbleInput";
453
+ var SliderBubbleInput = React.forwardRef(({ __scopeSlider, value, ...props }, forwardedRef)=>{
454
+ const ref = React.useRef(null);
455
+ const composedRefs = useComposedRefs(ref, forwardedRef);
456
+ const prevValue = usePrevious(value);
457
+ React.useEffect(()=>{
458
+ const input = ref.current;
459
+ if (!input) return;
460
+ const inputProto = window.HTMLInputElement.prototype;
461
+ const descriptor = Object.getOwnPropertyDescriptor(inputProto, "value");
462
+ const setValue = descriptor.set;
463
+ if (prevValue !== value && setValue) {
464
+ const event = new Event("input", {
465
+ bubbles: true
466
+ });
467
+ setValue.call(input, value);
468
+ input.dispatchEvent(event);
469
+ }
470
+ }, [
471
+ prevValue,
472
+ value
473
+ ]);
474
+ return /* @__PURE__ */ jsx(Primitive.input, {
475
+ style: {
476
+ display: "none"
477
+ },
478
+ ...props,
479
+ ref: composedRefs,
480
+ defaultValue: value
481
+ });
482
+ });
483
+ SliderBubbleInput.displayName = BUBBLE_INPUT_NAME;
484
+ function getNextSortedValues(prevValues = [], nextValue, atIndex) {
485
+ const nextValues = [
486
+ ...prevValues
487
+ ];
488
+ nextValues[atIndex] = nextValue;
489
+ return nextValues.sort((a, b)=>a - b);
490
+ }
491
+ function convertValueToPercentage(value, min, max) {
492
+ const maxSteps = max - min;
493
+ const percentPerStep = 100 / maxSteps;
494
+ const percentage = percentPerStep * (value - min);
495
+ return clamp(percentage, [
496
+ 0,
497
+ 100
498
+ ]);
499
+ }
500
+ function getLabel(index, totalValues) {
501
+ if (totalValues > 2) {
502
+ return `Value ${index + 1} of ${totalValues}`;
503
+ } else if (totalValues === 2) {
504
+ return [
505
+ "Minimum",
506
+ "Maximum"
507
+ ][index];
508
+ } else {
509
+ return void 0;
510
+ }
511
+ }
512
+ function getClosestValueIndex(values, nextValue) {
513
+ if (values.length === 1) return 0;
514
+ const distances = values.map((value)=>Math.abs(value - nextValue));
515
+ const closestDistance = Math.min(...distances);
516
+ return distances.indexOf(closestDistance);
517
+ }
518
+ function getThumbInBoundsOffset(width, left, direction) {
519
+ const halfWidth = width / 2;
520
+ const halfPercent = 50;
521
+ const offset = linearScale([
522
+ 0,
523
+ halfPercent
524
+ ], [
525
+ 0,
526
+ halfWidth
527
+ ]);
528
+ return (halfWidth - offset(left) * direction) * direction;
529
+ }
530
+ function getStepsBetweenValues(values) {
531
+ return values.slice(0, -1).map((value, index)=>values[index + 1] - value);
532
+ }
533
+ function hasMinStepsBetweenValues(values, minStepsBetweenValues) {
534
+ if (minStepsBetweenValues > 0) {
535
+ const stepsBetweenValues = getStepsBetweenValues(values);
536
+ const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);
537
+ return actualMinStepsBetweenValues >= minStepsBetweenValues;
538
+ }
539
+ return true;
540
+ }
541
+ function linearScale(input, output) {
542
+ return (value)=>{
543
+ if (input[0] === input[1] || output[0] === output[1]) return output[0];
544
+ const ratio = (output[1] - output[0]) / (input[1] - input[0]);
545
+ return output[0] + ratio * (value - input[0]);
546
+ };
547
+ }
548
+ function getDecimalCount(value) {
549
+ return (String(value).split(".")[1] || "").length;
550
+ }
551
+ function roundValue(value, decimalCount) {
552
+ const rounder = Math.pow(10, decimalCount);
553
+ return Math.round(value * rounder) / rounder;
554
+ }
555
+ var Root = Slider$1;
556
+ var Track = SliderTrack;
557
+ var Range = SliderRange;
558
+ var Thumb = SliderThumb;
559
+
560
+ function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
561
+ const _values = React.useMemo(()=>Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [
562
+ min,
563
+ max
564
+ ], [
565
+ value,
566
+ defaultValue,
567
+ min,
568
+ max
569
+ ]);
570
+ return /*#__PURE__*/ React.createElement(Root, {
571
+ "data-slot": "slider",
572
+ defaultValue: defaultValue,
573
+ value: value,
574
+ min: min,
575
+ max: max,
576
+ className: cn("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", className),
577
+ ...props
578
+ }, /*#__PURE__*/ React.createElement(Track, {
579
+ "data-slot": "slider-track",
580
+ className: cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5")
581
+ }, /*#__PURE__*/ React.createElement(Range, {
582
+ "data-slot": "slider-range",
583
+ className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
584
+ })), Array.from({
585
+ length: _values.length
586
+ }, (_, index)=>/*#__PURE__*/ React.createElement(Thumb, {
587
+ "data-slot": "slider-thumb",
588
+ key: index,
589
+ className: "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
590
+ })));
591
+ }
592
+
593
+ export { Slider };
594
+ //# sourceMappingURL=index.mjs.map