@yewdiel21/motion-kit 0.17.0 → 0.19.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 (181) hide show
  1. package/README.md +240 -199
  2. package/dist/auto/index.d.ts +19 -3
  3. package/dist/auto/index.js +35 -3
  4. package/dist/auto/index.js.map +1 -1
  5. package/dist/{chunk-QFBOHPWZ.js → chunk-CQP66AZK.js} +2 -2
  6. package/dist/{chunk-QP4QJOEN.js → chunk-H4STLMCM.js} +2 -2
  7. package/dist/{chunk-BZLMCHUD.js → chunk-KDIJX6G4.js} +3 -3
  8. package/dist/{chunk-DOOMULVV.js → chunk-OLT3CWDJ.js} +4 -2
  9. package/dist/chunk-OLT3CWDJ.js.map +1 -0
  10. package/dist/{chunk-VJFPTLAK.js → chunk-PEDYJ2TV.js} +8 -22
  11. package/dist/chunk-PEDYJ2TV.js.map +1 -0
  12. package/dist/{chunk-7IQTMF7Y.js → chunk-Y4GIBTRG.js} +5130 -2153
  13. package/dist/chunk-Y4GIBTRG.js.map +1 -0
  14. package/dist/css/components/badge-button.css +16 -0
  15. package/dist/css/components/bento-grid.css +13 -0
  16. package/dist/css/components/code-block.css +267 -0
  17. package/dist/css/components/command-search.css +274 -2
  18. package/dist/css/components/dialog.css +264 -0
  19. package/dist/css/components/drilldown-menu.css +11 -7
  20. package/dist/css/components/equalizer-slider.css +26 -0
  21. package/dist/css/components/handwriting-text.css +15 -0
  22. package/dist/css/components/heatmap-chart.css +267 -1
  23. package/dist/css/components/magnetize-button.css +18 -0
  24. package/dist/css/components/morphing-page-dots.css +13 -0
  25. package/dist/css/components/not-found.css +22 -0
  26. package/dist/css/components/notification-stack.css +42 -0
  27. package/dist/css/components/particle-button.css +14 -0
  28. package/dist/css/components/radio-group.css +29 -0
  29. package/dist/css/components/rating-scale.css +23 -0
  30. package/dist/css/components/scroll-area.css +261 -0
  31. package/dist/css/components/scroll-preview-dock.css +18 -0
  32. package/dist/css/components/select.css +300 -4
  33. package/dist/css/components/signature-pad.css +130 -103
  34. package/dist/css/components/stepper.css +36 -0
  35. package/dist/css/components/sticky-header.css +10 -0
  36. package/dist/css/components/temperature-slider.css +29 -0
  37. package/dist/css/components/voice-message-bubble.css +62 -45
  38. package/dist/css/components/waveform-player.css +49 -34
  39. package/dist/css/components/wheel-picker.css +16 -15
  40. package/dist/css/tokens.css +4 -0
  41. package/dist/elements/index.d.ts +217 -4
  42. package/dist/elements/index.js +614 -9
  43. package/dist/elements/index.js.map +1 -1
  44. package/dist/{engine-Bn6hC87X.d.ts → engine-D6XV-WNt.d.ts} +390 -1
  45. package/dist/gl/index.js +2 -2
  46. package/dist/index.css +886 -177
  47. package/dist/index.d.ts +23 -23
  48. package/dist/index.js +37 -5
  49. package/dist/index.js.map +1 -1
  50. package/dist/react/index.d.ts +126 -7
  51. package/dist/react/index.js +722 -7
  52. package/dist/react/index.js.map +1 -1
  53. package/dist/{reduced-YS6TZjpa.d.ts → reduced-4croIXl-.d.ts} +1 -1
  54. package/dist/{store-CZ6vdtIE.d.ts → store-CAHWkurn.d.ts} +1 -1
  55. package/package.json +110 -110
  56. package/registry.json +1357 -1160
  57. package/src/auto/auto-init.ts +341 -308
  58. package/src/components/badge-button/README.md +28 -0
  59. package/src/components/badge-button/badge-button.css +15 -0
  60. package/src/components/badge-button/element.ts +16 -0
  61. package/src/components/badge-button/engine.ts +85 -0
  62. package/src/components/badge-button/react.tsx +31 -0
  63. package/src/components/bento-grid/README.md +26 -0
  64. package/src/components/bento-grid/bento-grid.css +12 -0
  65. package/src/components/bento-grid/element.ts +22 -0
  66. package/src/components/bento-grid/engine.ts +153 -0
  67. package/src/components/bento-grid/react.tsx +25 -0
  68. package/src/components/code-block/README.md +1 -1
  69. package/src/components/code-block/code-block.css +5 -0
  70. package/src/components/code-block/engine.ts +5 -0
  71. package/src/components/command-search/README.md +1 -1
  72. package/src/components/command-search/command-search.css +12 -2
  73. package/src/components/command-search/engine.ts +6 -0
  74. package/src/components/dialog/README.md +104 -103
  75. package/src/components/dialog/dialog.css +2 -0
  76. package/src/components/dialog/engine.ts +465 -449
  77. package/src/components/drilldown-menu/drilldown-menu.css +11 -7
  78. package/src/components/drilldown-menu/engine.ts +44 -4
  79. package/src/components/equalizer-slider/README.md +43 -0
  80. package/src/components/equalizer-slider/element.ts +41 -0
  81. package/src/components/equalizer-slider/engine.ts +32 -0
  82. package/src/components/equalizer-slider/equalizer-slider.css +26 -0
  83. package/src/components/equalizer-slider/react.tsx +60 -0
  84. package/src/components/equalizer-slider/shared.ts +161 -0
  85. package/src/components/handwriting-text/README.md +29 -0
  86. package/src/components/handwriting-text/element.ts +14 -0
  87. package/src/components/handwriting-text/engine.ts +108 -0
  88. package/src/components/handwriting-text/glyphs.ts +71 -0
  89. package/src/components/handwriting-text/handwriting-text.css +14 -0
  90. package/src/components/handwriting-text/react.tsx +23 -0
  91. package/src/components/heatmap-chart/README.md +48 -48
  92. package/src/components/heatmap-chart/engine.ts +6 -1
  93. package/src/components/heatmap-chart/heatmap-chart.css +5 -1
  94. package/src/components/icons.ts +1 -0
  95. package/src/components/magnetize-button/README.md +26 -0
  96. package/src/components/magnetize-button/element.ts +13 -0
  97. package/src/components/magnetize-button/engine.ts +84 -0
  98. package/src/components/magnetize-button/magnetize-button.css +17 -0
  99. package/src/components/magnetize-button/react.tsx +22 -0
  100. package/src/components/morphing-page-dots/README.md +28 -0
  101. package/src/components/morphing-page-dots/element.ts +16 -0
  102. package/src/components/morphing-page-dots/engine.ts +89 -0
  103. package/src/components/morphing-page-dots/morphing-page-dots.css +12 -0
  104. package/src/components/morphing-page-dots/react.tsx +32 -0
  105. package/src/components/not-found/README.md +26 -0
  106. package/src/components/not-found/element.ts +15 -0
  107. package/src/components/not-found/engine.ts +57 -0
  108. package/src/components/not-found/not-found.css +21 -0
  109. package/src/components/not-found/react.tsx +23 -0
  110. package/src/components/notification-stack/README.md +24 -0
  111. package/src/components/notification-stack/element.ts +26 -0
  112. package/src/components/notification-stack/engine.ts +329 -0
  113. package/src/components/notification-stack/notification-stack.css +41 -0
  114. package/src/components/notification-stack/react.tsx +28 -0
  115. package/src/components/particle-button/README.md +26 -0
  116. package/src/components/particle-button/element.ts +13 -0
  117. package/src/components/particle-button/engine.ts +52 -0
  118. package/src/components/particle-button/particle-button.css +13 -0
  119. package/src/components/particle-button/react.tsx +22 -0
  120. package/src/components/radio-group/README.md +43 -0
  121. package/src/components/radio-group/element.ts +41 -0
  122. package/src/components/radio-group/engine.ts +11 -0
  123. package/src/components/radio-group/radio-group.css +28 -0
  124. package/src/components/radio-group/react.tsx +60 -0
  125. package/src/components/radio-group/shared.ts +118 -0
  126. package/src/components/rating-scale/README.md +43 -0
  127. package/src/components/rating-scale/element.ts +41 -0
  128. package/src/components/rating-scale/engine.ts +63 -0
  129. package/src/components/rating-scale/rating-scale.css +22 -0
  130. package/src/components/rating-scale/react.tsx +60 -0
  131. package/src/components/scroll-area/README.md +89 -0
  132. package/src/components/scroll-area/element.ts +35 -0
  133. package/src/components/scroll-area/engine.ts +528 -0
  134. package/src/components/scroll-area/react.tsx +67 -0
  135. package/src/components/scroll-area/scroll-area.css +260 -0
  136. package/src/components/scroll-preview-dock/README.md +24 -0
  137. package/src/components/scroll-preview-dock/element.ts +20 -0
  138. package/src/components/scroll-preview-dock/engine.ts +228 -0
  139. package/src/components/scroll-preview-dock/react.tsx +26 -0
  140. package/src/components/scroll-preview-dock/scroll-preview-dock.css +17 -0
  141. package/src/components/select/README.md +23 -9
  142. package/src/components/select/engine.ts +16 -4
  143. package/src/components/select/select.css +38 -4
  144. package/src/components/signature-pad/engine.ts +550 -437
  145. package/src/components/signature-pad/signature-pad.css +130 -103
  146. package/src/components/stepper/README.md +46 -0
  147. package/src/components/stepper/element.ts +42 -0
  148. package/src/components/stepper/engine.ts +103 -0
  149. package/src/components/stepper/react.tsx +60 -0
  150. package/src/components/stepper/stepper.css +35 -0
  151. package/src/components/sticky-header/README.md +30 -0
  152. package/src/components/sticky-header/element.ts +19 -0
  153. package/src/components/sticky-header/engine.ts +95 -0
  154. package/src/components/sticky-header/react.tsx +25 -0
  155. package/src/components/sticky-header/sticky-header.css +9 -0
  156. package/src/components/temperature-slider/README.md +42 -0
  157. package/src/components/temperature-slider/element.ts +53 -0
  158. package/src/components/temperature-slider/engine.ts +44 -0
  159. package/src/components/temperature-slider/react.tsx +66 -0
  160. package/src/components/temperature-slider/temperature-slider.css +29 -0
  161. package/src/components/voice-message-bubble/engine.ts +11 -0
  162. package/src/components/voice-message-bubble/voice-message-bubble.css +14 -12
  163. package/src/components/waveform-player/README.md +1 -1
  164. package/src/components/waveform-player/engine.ts +344 -261
  165. package/src/components/waveform-player/waveform-player.css +50 -35
  166. package/src/components/wheel-picker/README.md +3 -1
  167. package/src/components/wheel-picker/element.ts +12 -5
  168. package/src/components/wheel-picker/engine.ts +37 -8
  169. package/src/components/wheel-picker/wheel-picker.css +17 -16
  170. package/src/core/timing.ts +2 -0
  171. package/src/css/tokens.css +4 -0
  172. package/src/elements/index.ts +321 -273
  173. package/src/index.ts +312 -295
  174. package/src/motion/morph.ts +5 -2
  175. package/src/react/index.ts +17 -0
  176. package/dist/chunk-7IQTMF7Y.js.map +0 -1
  177. package/dist/chunk-DOOMULVV.js.map +0 -1
  178. package/dist/chunk-VJFPTLAK.js.map +0 -1
  179. /package/dist/{chunk-QFBOHPWZ.js.map → chunk-CQP66AZK.js.map} +0 -0
  180. /package/dist/{chunk-QP4QJOEN.js.map → chunk-H4STLMCM.js.map} +0 -0
  181. /package/dist/{chunk-BZLMCHUD.js.map → chunk-KDIJX6G4.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  ANIMATIONS,
4
4
  animate,
5
5
  leave
6
- } from "../chunk-QP4QJOEN.js";
6
+ } from "../chunk-H4STLMCM.js";
7
7
  import {
8
8
  captureLayout,
9
9
  createActionButton,
@@ -55,9 +55,8 @@ import {
55
55
  pileLayers,
56
56
  pileStyle,
57
57
  reflowLayout
58
- } from "../chunk-BZLMCHUD.js";
58
+ } from "../chunk-KDIJX6G4.js";
59
59
  import {
60
- ICON_PATHS,
61
60
  NAV_STYLES,
62
61
  NAV_STYLE_ALIASES,
63
62
  PENDING_ID,
@@ -84,12 +83,15 @@ import {
84
83
  revealShell,
85
84
  toNavStyle,
86
85
  toast
87
- } from "../chunk-VJFPTLAK.js";
86
+ } from "../chunk-PEDYJ2TV.js";
88
87
  import {
88
+ ICON_PATHS,
89
89
  confetti,
90
90
  createActivityFeed,
91
91
  createAddToCart,
92
92
  createAttachment,
93
+ createBadgeButton,
94
+ createBentoGrid,
93
95
  createBreadcrumb,
94
96
  createCalendar,
95
97
  createChart,
@@ -111,8 +113,10 @@ import {
111
113
  createDrilldownMenu,
112
114
  createEditableTable,
113
115
  createEmptyState,
116
+ createEqualizerSlider,
114
117
  createFileExplorer,
115
118
  createFilterBuilder,
119
+ createHandwritingText,
116
120
  createHoldConfirm,
117
121
  createHoverCard,
118
122
  createImagePreview,
@@ -120,21 +124,30 @@ import {
120
124
  createJsonViewer,
121
125
  createLikeButton,
122
126
  createLoadingButton,
127
+ createMagnetizeButton,
123
128
  createMenu,
129
+ createMorphingPageDots,
124
130
  createMultiSelect,
131
+ createNotFound,
125
132
  createNotificationBell,
133
+ createNotificationStack,
126
134
  createPagination,
135
+ createParticleButton,
127
136
  createPasswordStrength,
128
137
  createPopover,
129
138
  createProgress,
130
139
  createQuantity,
131
140
  createQuestionnaire,
141
+ createRadioGroup,
132
142
  createRangeCalendar,
133
143
  createRangeSlider,
144
+ createRatingScale,
134
145
  createResizablePanel,
135
146
  createRichTextEditor,
136
147
  createScratchCard,
148
+ createScrollArea,
137
149
  createScrollIsland,
150
+ createScrollPreviewDock,
138
151
  createSelect,
139
152
  createSignaturePad,
140
153
  createSkeleton,
@@ -142,10 +155,13 @@ import {
142
155
  createSplitView,
143
156
  createStarRating,
144
157
  createStatCard,
158
+ createStepper,
145
159
  createSteps,
160
+ createStickyHeader,
146
161
  createStudioDock,
147
162
  createSwipeActions,
148
163
  createTagInput,
164
+ createTemperatureSlider,
149
165
  createTimeField,
150
166
  createTimeline,
151
167
  createTooltip,
@@ -170,7 +186,7 @@ import {
170
186
  tokenLines,
171
187
  tokenize,
172
188
  tweenNumber
173
- } from "../chunk-7IQTMF7Y.js";
189
+ } from "../chunk-Y4GIBTRG.js";
174
190
  import {
175
191
  DEFAULT_THEME,
176
192
  MK_THEME_HEAD_SCRIPT,
@@ -186,12 +202,12 @@ import {
186
202
  createParticleHero,
187
203
  createShaderBlur,
188
204
  createShaderGrain
189
- } from "../chunk-QFBOHPWZ.js";
205
+ } from "../chunk-CQP66AZK.js";
190
206
  import "../chunk-34EZ7DF4.js";
191
207
  import {
192
208
  MK_HEAD_SCRIPT,
193
209
  TIMING
194
- } from "../chunk-DOOMULVV.js";
210
+ } from "../chunk-OLT3CWDJ.js";
195
211
  import "../chunk-TGV27ZWM.js";
196
212
 
197
213
  // src/react/use-recipe.ts
@@ -3710,12 +3726,697 @@ function WheelPicker({ items, value, defaultValue, name, label, disabled, visibl
3710
3726
  delete domProps.dangerouslySetInnerHTML;
3711
3727
  return /* @__PURE__ */ jsx89("div", { ...domProps, ref, className: ["mk-wheel-picker", className].filter(Boolean).join(" ") });
3712
3728
  }
3729
+
3730
+ // src/components/stepper/react.tsx
3731
+ import { useRef as useRef84 } from "react";
3732
+ import { jsx as jsx90 } from "react/jsx-runtime";
3733
+ function Stepper({ value, defaultValue, items, label, name, variant, linear, disabled, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
3734
+ const root = useRef84(null);
3735
+ const engine = useRef84(null);
3736
+ const latestValue = useLatest(value);
3737
+ const change = useLatest(onChange);
3738
+ const baseline = useRef84(value !== void 0 ? value : defaultValue);
3739
+ const current = useRef84(baseline.current);
3740
+ const reconcile = () => queueMicrotask(() => {
3741
+ if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
3742
+ });
3743
+ useIsomorphicLayoutEffect(() => {
3744
+ const created = createStepper(root.current, {
3745
+ items,
3746
+ label,
3747
+ name,
3748
+ variant,
3749
+ linear,
3750
+ disabled,
3751
+ value: latestValue.current !== void 0 ? latestValue.current : current.current,
3752
+ defaultValue: baseline.current,
3753
+ onChange: (next) => {
3754
+ change.current?.(next);
3755
+ reconcile();
3756
+ }
3757
+ });
3758
+ engine.current = created;
3759
+ const form = root.current?.closest("form");
3760
+ const pending = /* @__PURE__ */ new Set();
3761
+ const reset = (event) => {
3762
+ const timer = setTimeout(() => {
3763
+ pending.delete(timer);
3764
+ if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
3765
+ }, 0);
3766
+ pending.add(timer);
3767
+ };
3768
+ form?.addEventListener("reset", reset);
3769
+ return () => {
3770
+ form?.removeEventListener("reset", reset);
3771
+ pending.forEach((timer) => clearTimeout(timer));
3772
+ current.current = created.value;
3773
+ created.destroy();
3774
+ engine.current = null;
3775
+ };
3776
+ }, [items, label, name, variant, linear, disabled]);
3777
+ useIsomorphicLayoutEffect(() => {
3778
+ if (value !== void 0) engine.current?.setValue(value, false);
3779
+ });
3780
+ useIsomorphicLayoutEffect(() => {
3781
+ if (!instanceRef) return;
3782
+ instanceRef.current = engine.current;
3783
+ return () => {
3784
+ instanceRef.current = null;
3785
+ };
3786
+ }, [instanceRef, items, label, name, variant, linear, disabled]);
3787
+ return /* @__PURE__ */ jsx90("div", { ...props, ref: root, className: ["mk-stepper", className].filter(Boolean).join(" ") });
3788
+ }
3789
+
3790
+ // src/components/radio-group/react.tsx
3791
+ import { useRef as useRef85 } from "react";
3792
+ import { jsx as jsx91 } from "react/jsx-runtime";
3793
+ function RadioGroup({ value, defaultValue, items, name, label, disabled, required, error, variant, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
3794
+ const root = useRef85(null);
3795
+ const engine = useRef85(null);
3796
+ const latestValue = useLatest(value);
3797
+ const change = useLatest(onChange);
3798
+ const baseline = useRef85(value !== void 0 ? value : defaultValue);
3799
+ const current = useRef85(baseline.current);
3800
+ const reconcile = () => queueMicrotask(() => {
3801
+ if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
3802
+ });
3803
+ useIsomorphicLayoutEffect(() => {
3804
+ const created = createRadioGroup(root.current, {
3805
+ items,
3806
+ name,
3807
+ label,
3808
+ disabled,
3809
+ required,
3810
+ error,
3811
+ variant,
3812
+ value: latestValue.current !== void 0 ? latestValue.current : current.current,
3813
+ defaultValue: baseline.current,
3814
+ onChange: (next) => {
3815
+ change.current?.(next);
3816
+ reconcile();
3817
+ }
3818
+ });
3819
+ engine.current = created;
3820
+ const form = root.current?.closest("form");
3821
+ const pending = /* @__PURE__ */ new Set();
3822
+ const reset = (event) => {
3823
+ const timer = setTimeout(() => {
3824
+ pending.delete(timer);
3825
+ if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
3826
+ }, 0);
3827
+ pending.add(timer);
3828
+ };
3829
+ form?.addEventListener("reset", reset);
3830
+ return () => {
3831
+ form?.removeEventListener("reset", reset);
3832
+ pending.forEach((timer) => clearTimeout(timer));
3833
+ current.current = created.value;
3834
+ created.destroy();
3835
+ engine.current = null;
3836
+ };
3837
+ }, [items, name, label, disabled, required, error, variant]);
3838
+ useIsomorphicLayoutEffect(() => {
3839
+ if (value !== void 0) engine.current?.setValue(value, false);
3840
+ });
3841
+ useIsomorphicLayoutEffect(() => {
3842
+ if (!instanceRef) return;
3843
+ instanceRef.current = engine.current;
3844
+ return () => {
3845
+ instanceRef.current = null;
3846
+ };
3847
+ }, [instanceRef, items, name, label, disabled, required, error, variant]);
3848
+ return /* @__PURE__ */ jsx91("div", { ...props, ref: root, className: ["mk-radio-group", className].filter(Boolean).join(" ") });
3849
+ }
3850
+
3851
+ // src/components/equalizer-slider/react.tsx
3852
+ import { useRef as useRef86 } from "react";
3853
+ import { jsx as jsx92 } from "react/jsx-runtime";
3854
+ function EqualizerSlider({ value, defaultValue, min, max, step, label, name, disabled, error, formatValue, waveform, bars, onChange, onInput, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
3855
+ const root = useRef86(null);
3856
+ const engine = useRef86(null);
3857
+ const latestValue = useLatest(value);
3858
+ const change = useLatest(onChange);
3859
+ const input = useLatest(onInput);
3860
+ const baseline = useRef86(value !== void 0 ? value : defaultValue);
3861
+ const current = useRef86(baseline.current);
3862
+ const reconcile = () => queueMicrotask(() => {
3863
+ if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
3864
+ });
3865
+ useIsomorphicLayoutEffect(() => {
3866
+ const created = createEqualizerSlider(root.current, {
3867
+ min,
3868
+ max,
3869
+ step,
3870
+ label,
3871
+ name,
3872
+ disabled,
3873
+ error,
3874
+ formatValue,
3875
+ waveform,
3876
+ bars,
3877
+ value: latestValue.current !== void 0 ? latestValue.current : current.current,
3878
+ defaultValue: baseline.current,
3879
+ onChange: (next) => {
3880
+ change.current?.(next);
3881
+ reconcile();
3882
+ },
3883
+ onInput: (next) => {
3884
+ input.current?.(next);
3885
+ if (input.current || !change.current) reconcile();
3886
+ }
3887
+ });
3888
+ engine.current = created;
3889
+ const form = root.current?.closest("form");
3890
+ const pending = /* @__PURE__ */ new Set();
3891
+ const reset = (event) => {
3892
+ const timer = setTimeout(() => {
3893
+ pending.delete(timer);
3894
+ if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
3895
+ }, 0);
3896
+ pending.add(timer);
3897
+ };
3898
+ form?.addEventListener("reset", reset);
3899
+ return () => {
3900
+ form?.removeEventListener("reset", reset);
3901
+ pending.forEach((timer) => clearTimeout(timer));
3902
+ current.current = created.value;
3903
+ created.destroy();
3904
+ engine.current = null;
3905
+ };
3906
+ }, [min, max, step, label, name, disabled, error, formatValue, waveform, bars]);
3907
+ useIsomorphicLayoutEffect(() => {
3908
+ if (value !== void 0) engine.current?.setValue(value, false);
3909
+ });
3910
+ useIsomorphicLayoutEffect(() => {
3911
+ if (!instanceRef) return;
3912
+ instanceRef.current = engine.current;
3913
+ return () => {
3914
+ instanceRef.current = null;
3915
+ };
3916
+ }, [instanceRef, min, max, step, label, name, disabled, error, formatValue, waveform, bars]);
3917
+ return /* @__PURE__ */ jsx92("div", { ...props, ref: root, className: ["mk-equalizer-slider", className].filter(Boolean).join(" ") });
3918
+ }
3919
+
3920
+ // src/components/temperature-slider/react.tsx
3921
+ import { useRef as useRef87 } from "react";
3922
+ import { jsx as jsx93 } from "react/jsx-runtime";
3923
+ function TemperatureSlider({ value, defaultValue, min, max, step, label, name, disabled, error, formatValue, unit, onChange, onInput, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
3924
+ const root = useRef87(null);
3925
+ const engine = useRef87(null);
3926
+ const latestValue = useLatest(value);
3927
+ const change = useLatest(onChange);
3928
+ const input = useLatest(onInput);
3929
+ const baseline = useRef87(value !== void 0 ? value : defaultValue);
3930
+ const current = useRef87(baseline.current);
3931
+ const reconcile = () => queueMicrotask(() => {
3932
+ if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
3933
+ });
3934
+ useIsomorphicLayoutEffect(() => {
3935
+ const created = createTemperatureSlider(root.current, {
3936
+ min,
3937
+ max,
3938
+ step,
3939
+ label,
3940
+ name,
3941
+ disabled,
3942
+ error,
3943
+ formatValue,
3944
+ unit,
3945
+ value: latestValue.current !== void 0 ? latestValue.current : current.current,
3946
+ defaultValue: baseline.current,
3947
+ onChange: (next) => {
3948
+ change.current?.(next);
3949
+ reconcile();
3950
+ },
3951
+ onInput: (next) => {
3952
+ input.current?.(next);
3953
+ if (input.current || !change.current) reconcile();
3954
+ }
3955
+ });
3956
+ engine.current = created;
3957
+ const form = root.current?.closest("form");
3958
+ const pending = /* @__PURE__ */ new Set();
3959
+ const reset = (event) => {
3960
+ const timer = setTimeout(() => {
3961
+ pending.delete(timer);
3962
+ if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
3963
+ }, 0);
3964
+ pending.add(timer);
3965
+ };
3966
+ form?.addEventListener("reset", reset);
3967
+ return () => {
3968
+ form?.removeEventListener("reset", reset);
3969
+ pending.forEach((timer) => clearTimeout(timer));
3970
+ current.current = created.value;
3971
+ created.destroy();
3972
+ engine.current = null;
3973
+ };
3974
+ }, [min, max, step, label, name, disabled, error, formatValue]);
3975
+ useIsomorphicLayoutEffect(() => {
3976
+ const next = unit === "F" ? "F" : "C";
3977
+ if (engine.current && engine.current.unit !== next) engine.current.setUnit(next, { min, max, step });
3978
+ }, [unit]);
3979
+ useIsomorphicLayoutEffect(() => {
3980
+ if (value !== void 0) engine.current?.setValue(value, false);
3981
+ });
3982
+ useIsomorphicLayoutEffect(() => {
3983
+ if (!instanceRef) return;
3984
+ instanceRef.current = engine.current;
3985
+ return () => {
3986
+ instanceRef.current = null;
3987
+ };
3988
+ }, [instanceRef, min, max, step, label, name, disabled, error, formatValue]);
3989
+ return /* @__PURE__ */ jsx93("div", { ...props, ref: root, className: ["mk-temperature-slider", className].filter(Boolean).join(" ") });
3990
+ }
3991
+
3992
+ // src/components/rating-scale/react.tsx
3993
+ import { useRef as useRef88 } from "react";
3994
+ import { jsx as jsx94 } from "react/jsx-runtime";
3995
+ function RatingScale({ value, defaultValue, min, max, variant, labels, label, name, disabled, required, error, onChange, instanceRef, className, children: _children, dangerouslySetInnerHTML: _html, ...props }) {
3996
+ const root = useRef88(null);
3997
+ const engine = useRef88(null);
3998
+ const latestValue = useLatest(value);
3999
+ const change = useLatest(onChange);
4000
+ const baseline = useRef88(value !== void 0 ? value : defaultValue);
4001
+ const current = useRef88(baseline.current);
4002
+ const reconcile = () => queueMicrotask(() => {
4003
+ if (latestValue.current !== void 0) engine.current?.setValue(latestValue.current, false);
4004
+ });
4005
+ useIsomorphicLayoutEffect(() => {
4006
+ const created = createRatingScale(root.current, {
4007
+ min,
4008
+ max,
4009
+ variant,
4010
+ labels,
4011
+ label,
4012
+ name,
4013
+ disabled,
4014
+ required,
4015
+ error,
4016
+ value: latestValue.current !== void 0 ? latestValue.current : current.current,
4017
+ defaultValue: baseline.current,
4018
+ onChange: (next) => {
4019
+ change.current?.(next);
4020
+ reconcile();
4021
+ }
4022
+ });
4023
+ engine.current = created;
4024
+ const form = root.current?.closest("form");
4025
+ const pending = /* @__PURE__ */ new Set();
4026
+ const reset = (event) => {
4027
+ const timer = setTimeout(() => {
4028
+ pending.delete(timer);
4029
+ if (!event.defaultPrevented && latestValue.current !== void 0) created.setValue(latestValue.current, false);
4030
+ }, 0);
4031
+ pending.add(timer);
4032
+ };
4033
+ form?.addEventListener("reset", reset);
4034
+ return () => {
4035
+ form?.removeEventListener("reset", reset);
4036
+ pending.forEach((timer) => clearTimeout(timer));
4037
+ current.current = created.value;
4038
+ created.destroy();
4039
+ engine.current = null;
4040
+ };
4041
+ }, [min, max, variant, labels, label, name, disabled, required, error]);
4042
+ useIsomorphicLayoutEffect(() => {
4043
+ if (value !== void 0) engine.current?.setValue(value, false);
4044
+ });
4045
+ useIsomorphicLayoutEffect(() => {
4046
+ if (!instanceRef) return;
4047
+ instanceRef.current = engine.current;
4048
+ return () => {
4049
+ instanceRef.current = null;
4050
+ };
4051
+ }, [instanceRef, min, max, variant, labels, label, name, disabled, required, error]);
4052
+ return /* @__PURE__ */ jsx94("div", { ...props, ref: root, className: ["mk-rating-scale", className].filter(Boolean).join(" ") });
4053
+ }
4054
+
4055
+ // src/components/notification-stack/react.tsx
4056
+ import { useRef as useRef89 } from "react";
4057
+ import { jsx as jsx95 } from "react/jsx-runtime";
4058
+ function NotificationStack({ items, expanded, direction, duration, disabled, label, labels, onDismiss, onAction, onExpandedChange, instanceRef, className, children, dangerouslySetInnerHTML: _html, ...props }) {
4059
+ const root = useRef89(null);
4060
+ const instance = useRef89(null);
4061
+ const onDismissRef = useLatest(onDismiss);
4062
+ const onActionRef = useLatest(onAction);
4063
+ const onExpandedChangeRef = useLatest(onExpandedChange);
4064
+ useIsomorphicLayoutEffect(() => {
4065
+ const created = createNotificationStack(root.current, { items, expanded, direction, duration, disabled, label, labels, onDismiss: (...args) => onDismissRef.current?.(...args), onAction: (...args) => onActionRef.current?.(...args), onExpandedChange: (...args) => onExpandedChangeRef.current?.(...args) });
4066
+ instance.current = created;
4067
+ return () => {
4068
+ created.destroy();
4069
+ instance.current = null;
4070
+ };
4071
+ }, []);
4072
+ useIsomorphicLayoutEffect(() => {
4073
+ instance.current?.setOptions({ items, expanded, direction, duration, disabled, label, labels });
4074
+ }, [items, expanded, direction, duration, disabled, label, labels]);
4075
+ useIsomorphicLayoutEffect(() => {
4076
+ if (instanceRef) instanceRef.current = instance.current;
4077
+ return () => {
4078
+ if (instanceRef) instanceRef.current = null;
4079
+ };
4080
+ }, [instanceRef]);
4081
+ return /* @__PURE__ */ jsx95("div", { ...props, ref: root, className: ["mk-notification-stack", className].filter(Boolean).join(" ") });
4082
+ }
4083
+
4084
+ // src/components/bento-grid/react.tsx
4085
+ import { useRef as useRef90 } from "react";
4086
+ import { jsx as jsx96 } from "react/jsx-runtime";
4087
+ function BentoGrid({ columns, gap, filter, duration, onChange, instanceRef, className, children, ...props }) {
4088
+ const root = useRef90(null);
4089
+ const instance = useRef90(null);
4090
+ const onChangeRef = useLatest(onChange);
4091
+ useIsomorphicLayoutEffect(() => {
4092
+ const created = createBentoGrid(root.current, { columns, gap, filter, duration, onChange: (...args) => onChangeRef.current?.(...args) });
4093
+ instance.current = created;
4094
+ return () => {
4095
+ created.destroy();
4096
+ instance.current = null;
4097
+ };
4098
+ }, []);
4099
+ useIsomorphicLayoutEffect(() => {
4100
+ instance.current?.setOptions({ columns, gap, filter, duration });
4101
+ }, [columns, gap, filter, duration]);
4102
+ useIsomorphicLayoutEffect(() => {
4103
+ if (instanceRef) instanceRef.current = instance.current;
4104
+ return () => {
4105
+ if (instanceRef) instanceRef.current = null;
4106
+ };
4107
+ }, [instanceRef]);
4108
+ return /* @__PURE__ */ jsx96("div", { ...props, ref: root, className: ["mk-bento-grid", className].filter(Boolean).join(" "), children });
4109
+ }
4110
+
4111
+ // src/components/scroll-preview-dock/react.tsx
4112
+ import { useRef as useRef91 } from "react";
4113
+ import { jsx as jsx97 } from "react/jsx-runtime";
4114
+ function ScrollPreviewDock({ items, scroller, offset, label, disabled, onChange, instanceRef, className, children, dangerouslySetInnerHTML: _html, ...props }) {
4115
+ const root = useRef91(null);
4116
+ const instance = useRef91(null);
4117
+ const onChangeRef = useLatest(onChange);
4118
+ useIsomorphicLayoutEffect(() => {
4119
+ const created = createScrollPreviewDock(root.current, { items, scroller, offset, label, disabled, onChange: (...args) => onChangeRef.current?.(...args) });
4120
+ instance.current = created;
4121
+ return () => {
4122
+ created.destroy();
4123
+ instance.current = null;
4124
+ };
4125
+ }, []);
4126
+ useIsomorphicLayoutEffect(() => {
4127
+ instance.current?.setOptions({ items, scroller, offset, label, disabled });
4128
+ }, [items, scroller, offset, label, disabled]);
4129
+ useIsomorphicLayoutEffect(() => {
4130
+ if (instanceRef) instanceRef.current = instance.current;
4131
+ return () => {
4132
+ if (instanceRef) instanceRef.current = null;
4133
+ };
4134
+ }, [instanceRef]);
4135
+ return /* @__PURE__ */ jsx97("div", { ...props, ref: root, className: ["mk-scroll-preview-dock", className].filter(Boolean).join(" ") });
4136
+ }
4137
+
4138
+ // src/components/sticky-header/react.tsx
4139
+ import { useRef as useRef92 } from "react";
4140
+ import { jsx as jsx98 } from "react/jsx-runtime";
4141
+ function StickyHeader({ scroller, expandedHeight, compactHeight, threshold, range, top, disabled, onChange, instanceRef, className, children, ...props }) {
4142
+ const root = useRef92(null);
4143
+ const instance = useRef92(null);
4144
+ const onChangeRef = useLatest(onChange);
4145
+ useIsomorphicLayoutEffect(() => {
4146
+ const created = createStickyHeader(root.current, { scroller, expandedHeight, compactHeight, threshold, range, top, disabled, onChange: (...args) => onChangeRef.current?.(...args) });
4147
+ instance.current = created;
4148
+ return () => {
4149
+ created.destroy();
4150
+ instance.current = null;
4151
+ };
4152
+ }, []);
4153
+ useIsomorphicLayoutEffect(() => {
4154
+ instance.current?.setOptions({ scroller, expandedHeight, compactHeight, threshold, range, top, disabled });
4155
+ }, [scroller, expandedHeight, compactHeight, threshold, range, top, disabled]);
4156
+ useIsomorphicLayoutEffect(() => {
4157
+ if (instanceRef) instanceRef.current = instance.current;
4158
+ return () => {
4159
+ if (instanceRef) instanceRef.current = null;
4160
+ };
4161
+ }, [instanceRef]);
4162
+ return /* @__PURE__ */ jsx98("div", { ...props, ref: root, className: ["mk-sticky-header", className].filter(Boolean).join(" "), children: /* @__PURE__ */ jsx98("div", { "data-mk-sticky-surface": "", className: "mk-sticky-header__surface", children }) });
4163
+ }
4164
+
4165
+ // src/components/handwriting-text/react.tsx
4166
+ import { useRef as useRef93 } from "react";
4167
+ import { jsx as jsx99 } from "react/jsx-runtime";
4168
+ function HandwritingText({ text = "make it move.", duration, autoplay, onComplete, instanceRef, className, ...props }) {
4169
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4170
+ const root = useRef93(null);
4171
+ const instance = useRef93(null);
4172
+ const latest = useLatest({ text, onComplete });
4173
+ useIsomorphicLayoutEffect(() => {
4174
+ const created = createHandwritingText(root.current, { text: latest.current.text, duration, autoplay, onComplete: () => latest.current.onComplete?.() });
4175
+ instance.current = created;
4176
+ return () => {
4177
+ created.destroy();
4178
+ instance.current = null;
4179
+ };
4180
+ }, [duration, autoplay]);
4181
+ useIsomorphicLayoutEffect(() => {
4182
+ instance.current?.setText(text, autoplay !== false);
4183
+ }, [text, autoplay]);
4184
+ useIsomorphicLayoutEffect(() => {
4185
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4186
+ else if (instanceRef) instanceRef.current = instance.current;
4187
+ return () => {
4188
+ if (typeof instanceRef === "function") instanceRef(null);
4189
+ else if (instanceRef) instanceRef.current = null;
4190
+ };
4191
+ }, [instanceRef, duration, autoplay]);
4192
+ return /* @__PURE__ */ jsx99("span", { ...safe, ref: root, role: "img", "aria-label": text, className: ["mk-handwriting-text", className].filter(Boolean).join(" ") });
4193
+ }
4194
+
4195
+ // src/components/particle-button/react.tsx
4196
+ import { useRef as useRef94 } from "react";
4197
+ import { jsx as jsx100 } from "react/jsx-runtime";
4198
+ function ParticleButton({ label = "Celebrar", count, distance, onAction, instanceRef, type = "button", className, ...props }) {
4199
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4200
+ const root = useRef94(null);
4201
+ const instance = useRef94(null);
4202
+ const action = useLatest(onAction);
4203
+ useIsomorphicLayoutEffect(() => {
4204
+ const created = createParticleButton(root.current, { label, count, distance, onAction: () => action.current?.() });
4205
+ instance.current = created;
4206
+ return () => {
4207
+ created.destroy();
4208
+ instance.current = null;
4209
+ };
4210
+ }, [label, count, distance]);
4211
+ useIsomorphicLayoutEffect(() => {
4212
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4213
+ else if (instanceRef) instanceRef.current = instance.current;
4214
+ return () => {
4215
+ if (typeof instanceRef === "function") instanceRef(null);
4216
+ else if (instanceRef) instanceRef.current = null;
4217
+ };
4218
+ }, [instanceRef, label, count, distance]);
4219
+ return /* @__PURE__ */ jsx100("button", { ...safe, type, ref: root, className: ["mk-particle-button", className].filter(Boolean).join(" ") });
4220
+ }
4221
+
4222
+ // src/components/magnetize-button/react.tsx
4223
+ import { useRef as useRef95 } from "react";
4224
+ import { jsx as jsx101 } from "react/jsx-runtime";
4225
+ function MagnetizeButton({ label = "Reunir ideas", count, reach, onAction, instanceRef, type = "button", className, ...props }) {
4226
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4227
+ const root = useRef95(null);
4228
+ const instance = useRef95(null);
4229
+ const action = useLatest(onAction);
4230
+ useIsomorphicLayoutEffect(() => {
4231
+ const created = createMagnetizeButton(root.current, { label, count, reach, onAction: () => action.current?.() });
4232
+ instance.current = created;
4233
+ return () => {
4234
+ created.destroy();
4235
+ instance.current = null;
4236
+ };
4237
+ }, [label, count, reach]);
4238
+ useIsomorphicLayoutEffect(() => {
4239
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4240
+ else if (instanceRef) instanceRef.current = instance.current;
4241
+ return () => {
4242
+ if (typeof instanceRef === "function") instanceRef(null);
4243
+ else if (instanceRef) instanceRef.current = null;
4244
+ };
4245
+ }, [instanceRef, label, count, reach]);
4246
+ return /* @__PURE__ */ jsx101("button", { ...safe, type, ref: root, className: ["mk-magnetize-button", className].filter(Boolean).join(" ") });
4247
+ }
4248
+
4249
+ // src/components/badge-button/react.tsx
4250
+ import { useRef as useRef96 } from "react";
4251
+ import { jsx as jsx102 } from "react/jsx-runtime";
4252
+ function BadgeButton({ label = "Guardar", count, defaultCount = 0, step, hideZero, max, onChange, instanceRef, type = "button", className, ...props }) {
4253
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4254
+ const root = useRef96(null);
4255
+ const instance = useRef96(null);
4256
+ const current = useLatest({ count, onChange });
4257
+ const retained = useRef96(defaultCount);
4258
+ useIsomorphicLayoutEffect(() => {
4259
+ let created;
4260
+ created = createBadgeButton(root.current, {
4261
+ label,
4262
+ count: current.current.count ?? retained.current,
4263
+ step,
4264
+ hideZero,
4265
+ max,
4266
+ onChange: (next) => {
4267
+ current.current.onChange?.(next);
4268
+ if (current.current.count !== void 0) created.setCount(current.current.count);
4269
+ }
4270
+ });
4271
+ instance.current = created;
4272
+ return () => {
4273
+ retained.current = created.count;
4274
+ created.destroy();
4275
+ instance.current = null;
4276
+ };
4277
+ }, [label, step, hideZero, max]);
4278
+ useIsomorphicLayoutEffect(() => {
4279
+ if (count !== void 0) instance.current?.setCount(count);
4280
+ }, [count]);
4281
+ useIsomorphicLayoutEffect(() => {
4282
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4283
+ else if (instanceRef) instanceRef.current = instance.current;
4284
+ return () => {
4285
+ if (typeof instanceRef === "function") instanceRef(null);
4286
+ else if (instanceRef) instanceRef.current = null;
4287
+ };
4288
+ }, [instanceRef, label, step, hideZero, max]);
4289
+ return /* @__PURE__ */ jsx102("button", { ...safe, type, ref: root, className: ["mk-badge-button", className].filter(Boolean).join(" ") });
4290
+ }
4291
+
4292
+ // src/components/morphing-page-dots/react.tsx
4293
+ import { useRef as useRef97 } from "react";
4294
+ import { jsx as jsx103 } from "react/jsx-runtime";
4295
+ function MorphingPageDots({ count, value, defaultValue = 0, label, labels, pageIds, disabled, onChange, instanceRef, className, ...props }) {
4296
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4297
+ const root = useRef97(null);
4298
+ const instance = useRef97(null);
4299
+ const current = useLatest({ value, onChange });
4300
+ const retained = useRef97(defaultValue);
4301
+ const labelsKey = JSON.stringify(labels);
4302
+ const pagesKey = JSON.stringify(pageIds);
4303
+ useIsomorphicLayoutEffect(() => {
4304
+ let created;
4305
+ created = createMorphingPageDots(root.current, {
4306
+ count,
4307
+ value: current.current.value ?? retained.current,
4308
+ label,
4309
+ labels,
4310
+ pageIds,
4311
+ disabled,
4312
+ onChange: (next) => {
4313
+ current.current.onChange?.(next);
4314
+ if (current.current.value !== void 0) created.setValue(current.current.value);
4315
+ }
4316
+ });
4317
+ instance.current = created;
4318
+ return () => {
4319
+ retained.current = created.value;
4320
+ created.destroy();
4321
+ instance.current = null;
4322
+ };
4323
+ }, [count, label, labelsKey, pagesKey, disabled]);
4324
+ useIsomorphicLayoutEffect(() => {
4325
+ if (value !== void 0) instance.current?.setValue(value);
4326
+ }, [value]);
4327
+ useIsomorphicLayoutEffect(() => {
4328
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4329
+ else if (instanceRef) instanceRef.current = instance.current;
4330
+ return () => {
4331
+ if (typeof instanceRef === "function") instanceRef(null);
4332
+ else if (instanceRef) instanceRef.current = null;
4333
+ };
4334
+ }, [instanceRef, count, label, labelsKey, pagesKey, disabled]);
4335
+ return /* @__PURE__ */ jsx103("div", { ...safe, ref: root, className: ["mk-morphing-page-dots", className].filter(Boolean).join(" ") });
4336
+ }
4337
+
4338
+ // src/components/not-found/react.tsx
4339
+ import { useRef as useRef98 } from "react";
4340
+ import { jsx as jsx104 } from "react/jsx-runtime";
4341
+ function NotFound({ brand, title, description, homeHref, homeLabel, backLabel, showBack, onBack, instanceRef, className, ...props }) {
4342
+ const { children: _children, dangerouslySetInnerHTML: _html, ...safe } = props;
4343
+ const root = useRef98(null);
4344
+ const instance = useRef98(null);
4345
+ const current = useLatest(onBack);
4346
+ const hasBack = Boolean(onBack);
4347
+ useIsomorphicLayoutEffect(() => {
4348
+ const created = createNotFound(root.current, { brand, title, description, homeHref, homeLabel, backLabel, showBack, onBack: hasBack ? () => current.current?.() : void 0 });
4349
+ instance.current = created;
4350
+ return () => {
4351
+ created.destroy();
4352
+ instance.current = null;
4353
+ };
4354
+ }, [brand, title, description, homeHref, homeLabel, backLabel, showBack, hasBack]);
4355
+ useIsomorphicLayoutEffect(() => {
4356
+ if (typeof instanceRef === "function") instanceRef(instance.current);
4357
+ else if (instanceRef) instanceRef.current = instance.current;
4358
+ return () => {
4359
+ if (typeof instanceRef === "function") instanceRef(null);
4360
+ else if (instanceRef) instanceRef.current = null;
4361
+ };
4362
+ }, [instanceRef, brand, title, description, homeHref, homeLabel, backLabel, showBack, hasBack]);
4363
+ return /* @__PURE__ */ jsx104("div", { ...safe, ref: root, className: ["mk-not-found", className].filter(Boolean).join(" ") });
4364
+ }
4365
+
4366
+ // src/components/scroll-area/react.tsx
4367
+ import { useRef as useRef99 } from "react";
4368
+ import { jsx as jsx105 } from "react/jsx-runtime";
4369
+ function ScrollArea({
4370
+ visibility,
4371
+ axis,
4372
+ idle,
4373
+ fade,
4374
+ backToTop,
4375
+ label,
4376
+ focusable,
4377
+ decorative,
4378
+ onScroll,
4379
+ viewportClassName,
4380
+ viewportStyle,
4381
+ unstyled,
4382
+ instanceRef,
4383
+ className,
4384
+ children,
4385
+ ...props
4386
+ }) {
4387
+ const ref = useRef99(null);
4388
+ const viewport = useRef99(null);
4389
+ const scrolled = useLatest(onScroll);
4390
+ useIsomorphicLayoutEffect(() => {
4391
+ const instance = createScrollArea(ref.current, {
4392
+ visibility,
4393
+ axis,
4394
+ idle,
4395
+ fade,
4396
+ backToTop,
4397
+ label,
4398
+ focusable,
4399
+ decorative,
4400
+ viewport: viewport.current,
4401
+ onScroll: (progress) => scrolled.current?.(progress)
4402
+ });
4403
+ if (instanceRef) instanceRef.current = instance;
4404
+ return () => {
4405
+ instance.destroy();
4406
+ if (instanceRef) instanceRef.current = null;
4407
+ };
4408
+ }, [visibility, axis, idle, fade, backToTop, label, focusable, decorative]);
4409
+ const classes = [unstyled ? null : "mk-scroll-area", className].filter(Boolean).join(" ");
4410
+ return /* @__PURE__ */ jsx105("div", { ...props, ref, className: classes || void 0, children: /* @__PURE__ */ jsx105("div", { ref: viewport, "data-mk-scroll-viewport": "", className: viewportClassName, style: viewportStyle, children }) });
4411
+ }
3713
4412
  export {
3714
4413
  ANIMATIONS,
3715
4414
  ActivityFeed,
3716
4415
  AddToCart,
3717
4416
  AnimatedNumber,
3718
4417
  Attachment,
4418
+ BadgeButton,
4419
+ BentoGrid,
3719
4420
  BidirectionalSlider,
3720
4421
  Breadcrumb,
3721
4422
  Calendar,
@@ -3740,10 +4441,12 @@ export {
3740
4441
  DrilldownMenu,
3741
4442
  EditableTable,
3742
4443
  EmptyState,
4444
+ EqualizerSlider,
3743
4445
  FileExplorer,
3744
4446
  FilterBuilder,
3745
4447
  FlipGroup,
3746
4448
  Frost,
4449
+ HandwritingText,
3747
4450
  HeatmapChart,
3748
4451
  HoldConfirm,
3749
4452
  HoverCard,
@@ -3757,15 +4460,20 @@ export {
3757
4460
  LoadingButton,
3758
4461
  MK_HEAD_SCRIPT,
3759
4462
  MK_THEME_HEAD_SCRIPT,
4463
+ MagnetizeButton,
3760
4464
  Menu,
3761
4465
  MkIcon,
4466
+ MorphingPageDots,
3762
4467
  MultiSelect,
3763
4468
  NAV_STYLES,
3764
4469
  NAV_STYLE_ALIASES,
3765
4470
  Nav,
4471
+ NotFound,
3766
4472
  NotificationBell,
4473
+ NotificationStack,
3767
4474
  OrbitMenu,
3768
4475
  Pagination,
4476
+ ParticleButton,
3769
4477
  PasswordStrength,
3770
4478
  PieChart,
3771
4479
  PillButton,
@@ -3775,13 +4483,17 @@ export {
3775
4483
  Questionnaire,
3776
4484
  RadarChart,
3777
4485
  RadialChart,
4486
+ RadioGroup,
3778
4487
  RangeCalendar,
3779
4488
  RangeSlider,
4489
+ RatingScale,
3780
4490
  ResizablePanel,
3781
4491
  RichTextEditor,
3782
4492
  SankeyChart,
3783
4493
  ScratchCard,
4494
+ ScrollArea,
3784
4495
  ScrollIsland,
4496
+ ScrollPreviewDock,
3785
4497
  Select,
3786
4498
  SignaturePad,
3787
4499
  Skeleton,
@@ -3790,10 +4502,13 @@ export {
3790
4502
  SplitView,
3791
4503
  StarRating,
3792
4504
  StatCard,
4505
+ Stepper,
3793
4506
  Steps,
4507
+ StickyHeader,
3794
4508
  StudioDock,
3795
4509
  SwipeActions,
3796
4510
  TagInput,
4511
+ TemperatureSlider,
3797
4512
  ThemePicker,
3798
4513
  ThemeProvider,
3799
4514
  TimeField,