@stevederico/skateboard-ui 3.0.2 → 3.6.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 (175) hide show
  1. package/App.jsx +13 -13
  2. package/CHANGELOG.md +64 -0
  3. package/README.md +59 -65
  4. package/components/AuthOverlay.jsx +4 -4
  5. package/components/ProtectedRoute.jsx +1 -1
  6. package/components/ThemeToggle.jsx +1 -1
  7. package/components/UpgradeSheet.jsx +2 -2
  8. package/{core → components/core}/DynamicIcon.jsx +1 -1
  9. package/{layout → components/layout}/Header.jsx +4 -4
  10. package/{layout → components/layout}/Layout.jsx +1 -1
  11. package/{layout → components/layout}/Sidebar.jsx +2 -2
  12. package/{layout → components/layout}/TabBar.jsx +1 -1
  13. package/{views → components/views}/LandingView.jsx +5 -5
  14. package/{views → components/views}/NotFound.jsx +2 -2
  15. package/{views → components/views}/PaymentView.jsx +1 -1
  16. package/{views → components/views}/SettingsView.jsx +6 -6
  17. package/{views → components/views}/SignInView.jsx +6 -6
  18. package/{views → components/views}/SignOutView.jsx +1 -1
  19. package/{views → components/views}/SignUpView.jsx +6 -6
  20. package/{views → components/views}/TextView.jsx +3 -3
  21. package/hooks/useAuthGate.js +1 -1
  22. package/index.js +1 -1
  23. package/package.json +32 -50
  24. package/shadcn/lib/base-ui/LICENSE +21 -0
  25. package/shadcn/lib/base-ui/_chunk-01rqe37g.js +70 -0
  26. package/shadcn/lib/base-ui/_chunk-0h5sskyw.js +347 -0
  27. package/shadcn/lib/base-ui/_chunk-0xhx4g7r.js +57 -0
  28. package/shadcn/lib/base-ui/_chunk-1e6khrvm.js +218 -0
  29. package/shadcn/lib/base-ui/_chunk-1s41sngz.js +302 -0
  30. package/shadcn/lib/base-ui/_chunk-20rtfsz9.js +23 -0
  31. package/shadcn/lib/base-ui/_chunk-2tyt8f8r.js +6034 -0
  32. package/shadcn/lib/base-ui/_chunk-3f31ka8n.js +11 -0
  33. package/shadcn/lib/base-ui/_chunk-3h6zpchb.js +89 -0
  34. package/shadcn/lib/base-ui/_chunk-4s0k3h7t.js +114 -0
  35. package/shadcn/lib/base-ui/_chunk-502wngfc.js +598 -0
  36. package/shadcn/lib/base-ui/_chunk-536jvgeq.js +68 -0
  37. package/shadcn/lib/base-ui/_chunk-611pz5sm.js +10 -0
  38. package/shadcn/lib/base-ui/_chunk-65zw5gs2.js +15 -0
  39. package/shadcn/lib/base-ui/_chunk-6b17g8t7.js +34 -0
  40. package/shadcn/lib/base-ui/_chunk-6xevjepc.js +15 -0
  41. package/shadcn/lib/base-ui/_chunk-71zm6zgv.js +16 -0
  42. package/shadcn/lib/base-ui/_chunk-7fmjymvh.js +32 -0
  43. package/shadcn/lib/base-ui/_chunk-7jjzay8b.js +176 -0
  44. package/shadcn/lib/base-ui/_chunk-7v1t86x1.js +43 -0
  45. package/shadcn/lib/base-ui/_chunk-85vrgzwr.js +227 -0
  46. package/shadcn/lib/base-ui/_chunk-8jz3hb7q.js +9 -0
  47. package/shadcn/lib/base-ui/_chunk-8kh3xk78.js +35 -0
  48. package/shadcn/lib/base-ui/_chunk-97tas84n.js +67 -0
  49. package/shadcn/lib/base-ui/_chunk-9nyxkvte.js +13 -0
  50. package/shadcn/lib/base-ui/_chunk-a8fwg9d0.js +52 -0
  51. package/shadcn/lib/base-ui/_chunk-agc6ew3g.js +29 -0
  52. package/shadcn/lib/base-ui/_chunk-aqwsk46c.js +64 -0
  53. package/shadcn/lib/base-ui/_chunk-atd5kq5q.js +803 -0
  54. package/shadcn/lib/base-ui/_chunk-atnkefgd.js +104 -0
  55. package/shadcn/lib/base-ui/_chunk-b40erthe.js +7 -0
  56. package/shadcn/lib/base-ui/_chunk-b5jsqt97.js +50 -0
  57. package/shadcn/lib/base-ui/_chunk-bk7n9s9e.js +15 -0
  58. package/shadcn/lib/base-ui/_chunk-c3572b5x.js +19 -0
  59. package/shadcn/lib/base-ui/_chunk-cwr896nf.js +25 -0
  60. package/shadcn/lib/base-ui/_chunk-drfb9kp2.js +27 -0
  61. package/shadcn/lib/base-ui/_chunk-ds8fnpjj.js +0 -0
  62. package/shadcn/lib/base-ui/_chunk-ek863ta9.js +82 -0
  63. package/shadcn/lib/base-ui/_chunk-f09cp81f.js +12 -0
  64. package/shadcn/lib/base-ui/_chunk-f5d01bp9.js +0 -0
  65. package/shadcn/lib/base-ui/_chunk-f9tgee1q.js +21 -0
  66. package/shadcn/lib/base-ui/_chunk-fch5cba8.js +84 -0
  67. package/shadcn/lib/base-ui/_chunk-gfce3j3z.js +18 -0
  68. package/shadcn/lib/base-ui/_chunk-ha06w2pp.js +2391 -0
  69. package/shadcn/lib/base-ui/_chunk-hzgetm70.js +23 -0
  70. package/shadcn/lib/base-ui/_chunk-j0eqdjta.js +39 -0
  71. package/shadcn/lib/base-ui/_chunk-k1e5fvcj.js +48 -0
  72. package/shadcn/lib/base-ui/_chunk-k4mc2kan.js +81 -0
  73. package/shadcn/lib/base-ui/_chunk-kfz96xv1.js +128 -0
  74. package/shadcn/lib/base-ui/_chunk-m45547cc.js +15 -0
  75. package/shadcn/lib/base-ui/_chunk-mbn76q14.js +184 -0
  76. package/shadcn/lib/base-ui/_chunk-mvv30fkv.js +9 -0
  77. package/shadcn/lib/base-ui/_chunk-mznt6ktj.js +33 -0
  78. package/shadcn/lib/base-ui/_chunk-n7dnqnbw.js +7 -0
  79. package/shadcn/lib/base-ui/_chunk-nya71ccw.js +546 -0
  80. package/shadcn/lib/base-ui/_chunk-p6qynd6r.js +146 -0
  81. package/shadcn/lib/base-ui/_chunk-q3nee19r.js +323 -0
  82. package/shadcn/lib/base-ui/_chunk-q7yw9mz4.js +385 -0
  83. package/shadcn/lib/base-ui/_chunk-qce0xt57.js +107 -0
  84. package/shadcn/lib/base-ui/_chunk-qgzhcjsj.js +14 -0
  85. package/shadcn/lib/base-ui/_chunk-qt6r015s.js +38 -0
  86. package/shadcn/lib/base-ui/_chunk-r0vsdknk.js +4 -0
  87. package/shadcn/lib/base-ui/_chunk-sx6vkz01.js +150 -0
  88. package/shadcn/lib/base-ui/_chunk-szcr6mhk.js +6 -0
  89. package/shadcn/lib/base-ui/_chunk-t7j3rbpv.js +67 -0
  90. package/shadcn/lib/base-ui/_chunk-tmfmrzwe.js +39 -0
  91. package/shadcn/lib/base-ui/_chunk-v92ycsfj.js +9 -0
  92. package/shadcn/lib/base-ui/_chunk-vdc01ss3.js +6 -0
  93. package/shadcn/lib/base-ui/_chunk-vjbnhhg1.js +26 -0
  94. package/shadcn/lib/base-ui/_chunk-w68yxg9d.js +21 -0
  95. package/shadcn/lib/base-ui/_chunk-wana68v3.js +477 -0
  96. package/shadcn/lib/base-ui/_chunk-wtw745qd.js +12 -0
  97. package/shadcn/lib/base-ui/_chunk-xb7ph1ka.js +6 -0
  98. package/shadcn/lib/base-ui/_chunk-xfagb0fq.js +28 -0
  99. package/shadcn/lib/base-ui/_chunk-xxhqanfd.js +16 -0
  100. package/shadcn/lib/base-ui/_chunk-y887e46p.js +15 -0
  101. package/shadcn/lib/base-ui/_chunk-ymj1dpqg.js +14 -0
  102. package/shadcn/lib/base-ui/accordion.js +650 -0
  103. package/shadcn/lib/base-ui/alert-dialog.js +138 -0
  104. package/shadcn/lib/base-ui/avatar.js +235 -0
  105. package/shadcn/lib/base-ui/button.js +52 -0
  106. package/shadcn/lib/base-ui/checkbox.js +454 -0
  107. package/shadcn/lib/base-ui/collapsible.js +283 -0
  108. package/shadcn/lib/base-ui/context-menu.js +324 -0
  109. package/shadcn/lib/base-ui/dialog.js +71 -0
  110. package/shadcn/lib/base-ui/input.js +1028 -0
  111. package/shadcn/lib/base-ui/menu.js +61 -0
  112. package/shadcn/lib/base-ui/menubar.js +157 -0
  113. package/shadcn/lib/base-ui/merge-props.js +15 -0
  114. package/shadcn/lib/base-ui/navigation-menu.js +1854 -0
  115. package/shadcn/lib/base-ui/popover.js +1090 -0
  116. package/shadcn/lib/base-ui/preview-card.js +709 -0
  117. package/shadcn/lib/base-ui/progress.js +278 -0
  118. package/shadcn/lib/base-ui/radio-group.js +247 -0
  119. package/shadcn/lib/base-ui/radio.js +382 -0
  120. package/shadcn/lib/base-ui/scroll-area.js +1061 -0
  121. package/shadcn/lib/base-ui/select.js +2438 -0
  122. package/shadcn/lib/base-ui/separator.js +11 -0
  123. package/shadcn/lib/base-ui/slider.js +1595 -0
  124. package/shadcn/lib/base-ui/switch.js +333 -0
  125. package/shadcn/lib/base-ui/tabs.js +892 -0
  126. package/shadcn/lib/base-ui/toggle-group.js +152 -0
  127. package/shadcn/lib/base-ui/toggle.js +133 -0
  128. package/shadcn/lib/base-ui/tooltip.js +791 -0
  129. package/shadcn/lib/base-ui/use-render.js +15 -0
  130. package/shadcn/lib/tailwind-merge.js +3312 -0
  131. package/shadcn/lib/utils.js +1 -1
  132. package/shadcn/ui/accordion.jsx +1 -1
  133. package/shadcn/ui/alert-dialog.jsx +1 -1
  134. package/shadcn/ui/avatar.jsx +1 -1
  135. package/shadcn/ui/badge.jsx +2 -2
  136. package/shadcn/ui/breadcrumb.jsx +2 -2
  137. package/shadcn/ui/button-group.jsx +2 -2
  138. package/shadcn/ui/button.jsx +1 -1
  139. package/shadcn/ui/calendar.jsx +1 -1
  140. package/shadcn/ui/checkbox.jsx +1 -1
  141. package/shadcn/ui/collapsible.jsx +1 -1
  142. package/shadcn/ui/command.jsx +1 -1
  143. package/shadcn/ui/context-menu.jsx +1 -1
  144. package/shadcn/ui/dialog.jsx +1 -1
  145. package/shadcn/ui/drawer.jsx +176 -74
  146. package/shadcn/ui/dropdown-menu.jsx +1 -1
  147. package/shadcn/ui/hover-card.jsx +1 -1
  148. package/shadcn/ui/input.jsx +1 -1
  149. package/shadcn/ui/item.jsx +2 -2
  150. package/shadcn/ui/menubar.jsx +2 -2
  151. package/shadcn/ui/navigation-menu.jsx +1 -1
  152. package/shadcn/ui/popover.jsx +1 -1
  153. package/shadcn/ui/progress.jsx +1 -1
  154. package/shadcn/ui/radio-group.jsx +2 -2
  155. package/shadcn/ui/scroll-area.jsx +1 -1
  156. package/shadcn/ui/select.jsx +1 -1
  157. package/shadcn/ui/separator.jsx +1 -1
  158. package/shadcn/ui/sheet.jsx +1 -1
  159. package/shadcn/ui/sidebar.jsx +3 -3
  160. package/shadcn/ui/slider.jsx +1 -1
  161. package/shadcn/ui/switch.jsx +1 -1
  162. package/shadcn/ui/tabs.jsx +1 -1
  163. package/shadcn/ui/toggle-group.jsx +2 -2
  164. package/shadcn/ui/toggle.jsx +1 -1
  165. package/shadcn/ui/tooltip.jsx +1 -1
  166. package/styles.css +31 -0
  167. package/MIGRATION.md +0 -230
  168. package/shadcn/ui/carousel.jsx +0 -195
  169. package/shadcn/ui/chart.jsx +0 -312
  170. package/shadcn/ui/resizable.jsx +0 -47
  171. /package/{core → components/core}/Calendar.jsx +0 -0
  172. /package/{core → components/core}/Command.jsx +0 -0
  173. /package/{core → components/core}/Context.jsx +0 -0
  174. /package/{core → components/core}/ThemeProvider.jsx +0 -0
  175. /package/{core → components/core}/Utilities.js +0 -0
@@ -0,0 +1,650 @@
1
+ /* @base-ui/react 1.4.1 — vendored (MIT — MUI Inc).
2
+ * Refresh: scripts/vendor-base-ui.js (see header for instructions).
3
+ * Do not edit by hand. */
4
+ import {
5
+ CollapsibleRootContext,
6
+ collapsibleOpenStateMapping,
7
+ triggerOpenStateMapping,
8
+ useCollapsiblePanel,
9
+ useCollapsibleRoot,
10
+ useCollapsibleRootContext
11
+ } from "./_chunk-wana68v3.js";
12
+ import {
13
+ useCompositeListItem
14
+ } from "./_chunk-ek863ta9.js";
15
+ import {
16
+ isElementDisabled
17
+ } from "./_chunk-vdc01ss3.js";
18
+ import {
19
+ CompositeList
20
+ } from "./_chunk-p6qynd6r.js";
21
+ import"./_chunk-20rtfsz9.js";
22
+ import {
23
+ useDirection
24
+ } from "./_chunk-wtw745qd.js";
25
+ import {
26
+ useControlled
27
+ } from "./_chunk-01rqe37g.js";
28
+ import {
29
+ ARROW_DOWN,
30
+ ARROW_LEFT,
31
+ ARROW_RIGHT,
32
+ ARROW_UP,
33
+ END,
34
+ HOME
35
+ } from "./_chunk-qce0xt57.js";
36
+ import {
37
+ stopEvent
38
+ } from "./_chunk-nya71ccw.js";
39
+ import"./_chunk-t7j3rbpv.js";
40
+ import"./_chunk-f5d01bp9.js";
41
+ import"./_chunk-mvv30fkv.js";
42
+ import {
43
+ createChangeEventDetails,
44
+ exports_reason_parts
45
+ } from "./_chunk-4s0k3h7t.js";
46
+ import {
47
+ useBaseUiId
48
+ } from "./_chunk-8kh3xk78.js";
49
+ import {
50
+ transitionStatusMapping,
51
+ useOpenChangeComplete
52
+ } from "./_chunk-mbn76q14.js";
53
+ import"./_chunk-v92ycsfj.js";
54
+ import"./_chunk-3h6zpchb.js";
55
+ import"./_chunk-8jz3hb7q.js";
56
+ import {
57
+ useButton
58
+ } from "./_chunk-85vrgzwr.js";
59
+ import"./_chunk-71zm6zgv.js";
60
+ import"./_chunk-6xevjepc.js";
61
+ import"./_chunk-sx6vkz01.js";
62
+ import"./_chunk-n7dnqnbw.js";
63
+ import {
64
+ useStableCallback
65
+ } from "./_chunk-mznt6ktj.js";
66
+ import {
67
+ useIsoLayoutEffect
68
+ } from "./_chunk-b40erthe.js";
69
+ import {
70
+ useMergedRefs,
71
+ useRenderElement,
72
+ warn
73
+ } from "./_chunk-1s41sngz.js";
74
+ import {
75
+ __export
76
+ } from "./_chunk-1e6khrvm.js";
77
+
78
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/index.parts.js
79
+ var exports_index_parts = {};
80
+ __export(exports_index_parts, {
81
+ Trigger: () => AccordionTrigger,
82
+ Root: () => AccordionRoot,
83
+ Panel: () => AccordionPanel,
84
+ Item: () => AccordionItem,
85
+ Header: () => AccordionHeader
86
+ });
87
+
88
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/root/AccordionRoot.js
89
+ import * as React2 from "react";
90
+
91
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/root/AccordionRootContext.js
92
+ import * as React from "react";
93
+ "use client";
94
+ var AccordionRootContext = /* @__PURE__ */ React.createContext(undefined);
95
+ if (true)
96
+ AccordionRootContext.displayName = "AccordionRootContext";
97
+ function useAccordionRootContext() {
98
+ const context = React.useContext(AccordionRootContext);
99
+ if (context === undefined) {
100
+ throw new Error("Base UI: AccordionRootContext is missing. Accordion parts must be placed within <Accordion.Root>.");
101
+ }
102
+ return context;
103
+ }
104
+
105
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/root/AccordionRoot.js
106
+ import { jsx as _jsx } from "react/jsx-runtime";
107
+ "use client";
108
+ var rootStateAttributesMapping = {
109
+ value: () => null
110
+ };
111
+ var AccordionRoot = /* @__PURE__ */ React2.forwardRef(function AccordionRoot2(componentProps, forwardedRef) {
112
+ const {
113
+ render,
114
+ className,
115
+ disabled = false,
116
+ hiddenUntilFound: hiddenUntilFoundProp,
117
+ keepMounted: keepMountedProp,
118
+ loopFocus = true,
119
+ onValueChange: onValueChangeProp,
120
+ multiple = false,
121
+ orientation = "vertical",
122
+ value: valueProp,
123
+ defaultValue: defaultValueProp,
124
+ style,
125
+ ...elementProps
126
+ } = componentProps;
127
+ const direction = useDirection();
128
+ if (true) {
129
+ useIsoLayoutEffect(() => {
130
+ if (hiddenUntilFoundProp && keepMountedProp === false) {
131
+ warn("The `keepMounted={false}` prop on a Accordion.Root will be ignored when using `hiddenUntilFound` since it requires Panels to remain mounted when closed.");
132
+ }
133
+ }, [hiddenUntilFoundProp, keepMountedProp]);
134
+ }
135
+ const defaultValue = React2.useMemo(() => {
136
+ if (valueProp === undefined) {
137
+ return defaultValueProp ?? [];
138
+ }
139
+ return;
140
+ }, [valueProp, defaultValueProp]);
141
+ const onValueChange = useStableCallback(onValueChangeProp);
142
+ const accordionItemRefs = React2.useRef([]);
143
+ const [value, setValue] = useControlled({
144
+ controlled: valueProp,
145
+ default: defaultValue,
146
+ name: "Accordion",
147
+ state: "value"
148
+ });
149
+ const handleValueChange = useStableCallback((newValue, nextOpen) => {
150
+ const details = createChangeEventDetails(exports_reason_parts.none);
151
+ if (!multiple) {
152
+ const nextValue = value[0] === newValue ? [] : [newValue];
153
+ onValueChange(nextValue, details);
154
+ if (details.isCanceled) {
155
+ return;
156
+ }
157
+ setValue(nextValue);
158
+ } else if (nextOpen) {
159
+ const nextOpenValues = value.slice();
160
+ nextOpenValues.push(newValue);
161
+ onValueChange(nextOpenValues, details);
162
+ if (details.isCanceled) {
163
+ return;
164
+ }
165
+ setValue(nextOpenValues);
166
+ } else {
167
+ const nextOpenValues = value.filter((v) => v !== newValue);
168
+ onValueChange(nextOpenValues, details);
169
+ if (details.isCanceled) {
170
+ return;
171
+ }
172
+ setValue(nextOpenValues);
173
+ }
174
+ });
175
+ const state = React2.useMemo(() => ({
176
+ value,
177
+ disabled,
178
+ orientation
179
+ }), [value, disabled, orientation]);
180
+ const contextValue = React2.useMemo(() => ({
181
+ accordionItemRefs,
182
+ direction,
183
+ disabled,
184
+ handleValueChange,
185
+ hiddenUntilFound: hiddenUntilFoundProp ?? false,
186
+ keepMounted: keepMountedProp ?? false,
187
+ loopFocus,
188
+ orientation,
189
+ state,
190
+ value
191
+ }), [direction, disabled, handleValueChange, hiddenUntilFoundProp, keepMountedProp, loopFocus, orientation, state, value]);
192
+ const element = useRenderElement("div", componentProps, {
193
+ state,
194
+ ref: forwardedRef,
195
+ props: [{
196
+ dir: direction,
197
+ role: "region"
198
+ }, elementProps],
199
+ stateAttributesMapping: rootStateAttributesMapping
200
+ });
201
+ return /* @__PURE__ */ _jsx(AccordionRootContext.Provider, {
202
+ value: contextValue,
203
+ children: /* @__PURE__ */ _jsx(CompositeList, {
204
+ elementsRef: accordionItemRefs,
205
+ children: element
206
+ })
207
+ });
208
+ });
209
+ if (true)
210
+ AccordionRoot.displayName = "AccordionRoot";
211
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/item/AccordionItem.js
212
+ import * as React4 from "react";
213
+
214
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/item/AccordionItemContext.js
215
+ import * as React3 from "react";
216
+ "use client";
217
+ var AccordionItemContext = /* @__PURE__ */ React3.createContext(undefined);
218
+ if (true)
219
+ AccordionItemContext.displayName = "AccordionItemContext";
220
+ function useAccordionItemContext() {
221
+ const context = React3.useContext(AccordionItemContext);
222
+ if (context === undefined) {
223
+ throw new Error("Base UI: AccordionItemContext is missing. Accordion parts must be placed within <Accordion.Item>.");
224
+ }
225
+ return context;
226
+ }
227
+
228
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/item/AccordionItemDataAttributes.js
229
+ var AccordionItemDataAttributes = /* @__PURE__ */ function(AccordionItemDataAttributes2) {
230
+ AccordionItemDataAttributes2["index"] = "data-index";
231
+ AccordionItemDataAttributes2["disabled"] = "data-disabled";
232
+ AccordionItemDataAttributes2["open"] = "data-open";
233
+ return AccordionItemDataAttributes2;
234
+ }({});
235
+
236
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/item/stateAttributesMapping.js
237
+ var accordionStateAttributesMapping = {
238
+ ...collapsibleOpenStateMapping,
239
+ index: (value) => {
240
+ return Number.isInteger(value) ? {
241
+ [AccordionItemDataAttributes.index]: String(value)
242
+ } : null;
243
+ },
244
+ ...transitionStatusMapping,
245
+ value: () => null
246
+ };
247
+
248
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/item/AccordionItem.js
249
+ import { jsx as _jsx2 } from "react/jsx-runtime";
250
+ "use client";
251
+ var AccordionItem = /* @__PURE__ */ React4.forwardRef(function AccordionItem2(componentProps, forwardedRef) {
252
+ const {
253
+ className,
254
+ disabled: disabledProp = false,
255
+ onOpenChange: onOpenChangeProp,
256
+ render,
257
+ value: valueProp,
258
+ style,
259
+ ...elementProps
260
+ } = componentProps;
261
+ const {
262
+ ref: listItemRef,
263
+ index
264
+ } = useCompositeListItem();
265
+ const mergedRef = useMergedRefs(forwardedRef, listItemRef);
266
+ const {
267
+ disabled: contextDisabled,
268
+ handleValueChange,
269
+ state: rootState,
270
+ value: openValues
271
+ } = useAccordionRootContext();
272
+ const fallbackValue = useBaseUiId();
273
+ const value = valueProp ?? fallbackValue;
274
+ const disabled = disabledProp || contextDisabled;
275
+ const isOpen = React4.useMemo(() => {
276
+ if (!openValues) {
277
+ return false;
278
+ }
279
+ for (let i = 0;i < openValues.length; i += 1) {
280
+ if (openValues[i] === value) {
281
+ return true;
282
+ }
283
+ }
284
+ return false;
285
+ }, [openValues, value]);
286
+ const onOpenChange = useStableCallback((nextOpen, eventDetails) => {
287
+ onOpenChangeProp?.(nextOpen, eventDetails);
288
+ if (eventDetails.isCanceled) {
289
+ return;
290
+ }
291
+ handleValueChange(value, nextOpen);
292
+ });
293
+ const collapsible = useCollapsibleRoot({
294
+ open: isOpen,
295
+ onOpenChange,
296
+ disabled
297
+ });
298
+ const collapsibleState = React4.useMemo(() => ({
299
+ open: collapsible.open,
300
+ disabled: collapsible.disabled,
301
+ hidden: !collapsible.mounted,
302
+ transitionStatus: collapsible.transitionStatus
303
+ }), [collapsible.open, collapsible.disabled, collapsible.mounted, collapsible.transitionStatus]);
304
+ const collapsibleContext = React4.useMemo(() => ({
305
+ ...collapsible,
306
+ onOpenChange,
307
+ state: collapsibleState
308
+ }), [collapsible, collapsibleState, onOpenChange]);
309
+ const state = React4.useMemo(() => ({
310
+ ...rootState,
311
+ index,
312
+ disabled,
313
+ open: isOpen
314
+ }), [disabled, index, isOpen, rootState]);
315
+ const [triggerId, setTriggerId] = React4.useState(useBaseUiId());
316
+ const accordionItemContext = React4.useMemo(() => ({
317
+ open: isOpen,
318
+ state,
319
+ setTriggerId,
320
+ triggerId
321
+ }), [isOpen, state, setTriggerId, triggerId]);
322
+ const element = useRenderElement("div", componentProps, {
323
+ state,
324
+ ref: mergedRef,
325
+ props: elementProps,
326
+ stateAttributesMapping: accordionStateAttributesMapping
327
+ });
328
+ return /* @__PURE__ */ _jsx2(CollapsibleRootContext.Provider, {
329
+ value: collapsibleContext,
330
+ children: /* @__PURE__ */ _jsx2(AccordionItemContext.Provider, {
331
+ value: accordionItemContext,
332
+ children: element
333
+ })
334
+ });
335
+ });
336
+ if (true)
337
+ AccordionItem.displayName = "AccordionItem";
338
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/header/AccordionHeader.js
339
+ import * as React5 from "react";
340
+ "use client";
341
+ var AccordionHeader = /* @__PURE__ */ React5.forwardRef(function AccordionHeader2(componentProps, forwardedRef) {
342
+ const {
343
+ render,
344
+ className,
345
+ style,
346
+ ...elementProps
347
+ } = componentProps;
348
+ const {
349
+ state
350
+ } = useAccordionItemContext();
351
+ const element = useRenderElement("h3", componentProps, {
352
+ state,
353
+ ref: forwardedRef,
354
+ props: elementProps,
355
+ stateAttributesMapping: accordionStateAttributesMapping
356
+ });
357
+ return element;
358
+ });
359
+ if (true)
360
+ AccordionHeader.displayName = "AccordionHeader";
361
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/trigger/AccordionTrigger.js
362
+ import * as React6 from "react";
363
+ "use client";
364
+ var SUPPORTED_KEYS = new Set([ARROW_DOWN, ARROW_UP, ARROW_RIGHT, ARROW_LEFT, HOME, END]);
365
+ function getActiveTriggers(accordionItemRefs) {
366
+ const {
367
+ current: accordionItemElements
368
+ } = accordionItemRefs;
369
+ const output = [];
370
+ for (let i = 0;i < accordionItemElements.length; i += 1) {
371
+ const section = accordionItemElements[i];
372
+ if (!isElementDisabled(section)) {
373
+ const trigger = section?.querySelector('[type="button"], [role="button"]');
374
+ if (trigger && !isElementDisabled(trigger)) {
375
+ output.push(trigger);
376
+ }
377
+ }
378
+ }
379
+ return output;
380
+ }
381
+ var AccordionTrigger = /* @__PURE__ */ React6.forwardRef(function AccordionTrigger2(componentProps, forwardedRef) {
382
+ const {
383
+ disabled: disabledProp,
384
+ className,
385
+ id: idProp,
386
+ render,
387
+ nativeButton = true,
388
+ style,
389
+ ...elementProps
390
+ } = componentProps;
391
+ const {
392
+ panelId,
393
+ open,
394
+ handleTrigger,
395
+ disabled: contextDisabled
396
+ } = useCollapsibleRootContext();
397
+ const disabled = disabledProp ?? contextDisabled;
398
+ const {
399
+ getButtonProps,
400
+ buttonRef
401
+ } = useButton({
402
+ disabled,
403
+ focusableWhenDisabled: true,
404
+ native: nativeButton,
405
+ composite: true
406
+ });
407
+ const {
408
+ accordionItemRefs,
409
+ direction,
410
+ loopFocus,
411
+ orientation
412
+ } = useAccordionRootContext();
413
+ const isRtl = direction === "rtl";
414
+ const isHorizontal = orientation === "horizontal";
415
+ const {
416
+ state,
417
+ setTriggerId,
418
+ triggerId: id
419
+ } = useAccordionItemContext();
420
+ useIsoLayoutEffect(() => {
421
+ if (idProp) {
422
+ setTriggerId(idProp);
423
+ }
424
+ return () => {
425
+ setTriggerId(undefined);
426
+ };
427
+ }, [idProp, setTriggerId]);
428
+ const props = React6.useMemo(() => ({
429
+ "aria-controls": open ? panelId : undefined,
430
+ "aria-expanded": open,
431
+ id,
432
+ tabIndex: 0,
433
+ onClick: handleTrigger,
434
+ onKeyDown(event) {
435
+ if (!SUPPORTED_KEYS.has(event.key)) {
436
+ return;
437
+ }
438
+ stopEvent(event);
439
+ const triggers = getActiveTriggers(accordionItemRefs);
440
+ const numOfEnabledTriggers = triggers.length;
441
+ const lastIndex = numOfEnabledTriggers - 1;
442
+ let nextIndex = -1;
443
+ const thisIndex = triggers.indexOf(event.currentTarget);
444
+ function toNext() {
445
+ if (loopFocus) {
446
+ nextIndex = thisIndex + 1 > lastIndex ? 0 : thisIndex + 1;
447
+ } else {
448
+ nextIndex = Math.min(thisIndex + 1, lastIndex);
449
+ }
450
+ }
451
+ function toPrev() {
452
+ if (loopFocus) {
453
+ nextIndex = thisIndex === 0 ? lastIndex : thisIndex - 1;
454
+ } else {
455
+ nextIndex = thisIndex - 1;
456
+ }
457
+ }
458
+ switch (event.key) {
459
+ case ARROW_DOWN:
460
+ if (!isHorizontal) {
461
+ toNext();
462
+ }
463
+ break;
464
+ case ARROW_UP:
465
+ if (!isHorizontal) {
466
+ toPrev();
467
+ }
468
+ break;
469
+ case ARROW_RIGHT:
470
+ if (isHorizontal) {
471
+ if (isRtl) {
472
+ toPrev();
473
+ } else {
474
+ toNext();
475
+ }
476
+ }
477
+ break;
478
+ case ARROW_LEFT:
479
+ if (isHorizontal) {
480
+ if (isRtl) {
481
+ toNext();
482
+ } else {
483
+ toPrev();
484
+ }
485
+ }
486
+ break;
487
+ case "Home":
488
+ nextIndex = 0;
489
+ break;
490
+ case "End":
491
+ nextIndex = lastIndex;
492
+ break;
493
+ default:
494
+ break;
495
+ }
496
+ if (nextIndex > -1) {
497
+ triggers[nextIndex].focus();
498
+ }
499
+ }
500
+ }), [accordionItemRefs, handleTrigger, id, isHorizontal, isRtl, loopFocus, open, panelId]);
501
+ const element = useRenderElement("button", componentProps, {
502
+ state,
503
+ ref: [forwardedRef, buttonRef],
504
+ props: [props, elementProps, getButtonProps],
505
+ stateAttributesMapping: triggerOpenStateMapping
506
+ });
507
+ return element;
508
+ });
509
+ if (true)
510
+ AccordionTrigger.displayName = "AccordionTrigger";
511
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/panel/AccordionPanel.js
512
+ import * as React7 from "react";
513
+
514
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/panel/AccordionPanelCssVars.js
515
+ var AccordionPanelCssVars = /* @__PURE__ */ function(AccordionPanelCssVars2) {
516
+ AccordionPanelCssVars2["accordionPanelHeight"] = "--accordion-panel-height";
517
+ AccordionPanelCssVars2["accordionPanelWidth"] = "--accordion-panel-width";
518
+ return AccordionPanelCssVars2;
519
+ }({});
520
+
521
+ // node_modules/.deno/@base-ui+react@1.4.1/node_modules/@base-ui/react/esm/accordion/panel/AccordionPanel.js
522
+ "use client";
523
+ var AccordionPanel = /* @__PURE__ */ React7.forwardRef(function AccordionPanel2(componentProps, forwardedRef) {
524
+ const {
525
+ className,
526
+ hiddenUntilFound: hiddenUntilFoundProp,
527
+ keepMounted: keepMountedProp,
528
+ id: idProp,
529
+ render,
530
+ style,
531
+ ...elementProps
532
+ } = componentProps;
533
+ const {
534
+ hiddenUntilFound: contextHiddenUntilFound,
535
+ keepMounted: contextKeepMounted
536
+ } = useAccordionRootContext();
537
+ const {
538
+ abortControllerRef,
539
+ animationTypeRef,
540
+ height,
541
+ mounted,
542
+ onOpenChange,
543
+ open,
544
+ panelId,
545
+ panelRef,
546
+ runOnceAnimationsFinish,
547
+ setDimensions,
548
+ setHiddenUntilFound,
549
+ setKeepMounted,
550
+ setMounted,
551
+ setOpen,
552
+ setVisible,
553
+ transitionDimensionRef,
554
+ visible,
555
+ width,
556
+ setPanelIdState,
557
+ transitionStatus
558
+ } = useCollapsibleRootContext();
559
+ const hiddenUntilFound = hiddenUntilFoundProp ?? contextHiddenUntilFound;
560
+ const keepMounted = keepMountedProp ?? contextKeepMounted;
561
+ if (true) {
562
+ useIsoLayoutEffect(() => {
563
+ if (keepMountedProp === false && hiddenUntilFound) {
564
+ warn("The `keepMounted={false}` prop on a Accordion.Panel will be ignored when using `contextHiddenUntilFound` on the Panel or the Root since it requires the panel to remain mounted when closed.");
565
+ }
566
+ }, [hiddenUntilFound, keepMountedProp]);
567
+ }
568
+ useIsoLayoutEffect(() => {
569
+ if (idProp) {
570
+ setPanelIdState(idProp);
571
+ return () => {
572
+ setPanelIdState(undefined);
573
+ };
574
+ }
575
+ return;
576
+ }, [idProp, setPanelIdState]);
577
+ useIsoLayoutEffect(() => {
578
+ setHiddenUntilFound(hiddenUntilFound);
579
+ }, [setHiddenUntilFound, hiddenUntilFound]);
580
+ useIsoLayoutEffect(() => {
581
+ setKeepMounted(keepMounted);
582
+ }, [setKeepMounted, keepMounted]);
583
+ useOpenChangeComplete({
584
+ open: open && transitionStatus === "idle",
585
+ ref: panelRef,
586
+ onComplete() {
587
+ if (!open) {
588
+ return;
589
+ }
590
+ setDimensions({
591
+ width: undefined,
592
+ height: undefined
593
+ });
594
+ }
595
+ });
596
+ const {
597
+ props
598
+ } = useCollapsiblePanel({
599
+ abortControllerRef,
600
+ animationTypeRef,
601
+ externalRef: forwardedRef,
602
+ height,
603
+ hiddenUntilFound,
604
+ id: idProp ?? panelId,
605
+ keepMounted,
606
+ mounted,
607
+ onOpenChange,
608
+ open,
609
+ panelRef,
610
+ runOnceAnimationsFinish,
611
+ setDimensions,
612
+ setMounted,
613
+ setOpen,
614
+ setVisible,
615
+ transitionDimensionRef,
616
+ visible,
617
+ width
618
+ });
619
+ const {
620
+ state,
621
+ triggerId
622
+ } = useAccordionItemContext();
623
+ const panelState = React7.useMemo(() => ({
624
+ ...state,
625
+ transitionStatus
626
+ }), [state, transitionStatus]);
627
+ const element = useRenderElement("div", componentProps, {
628
+ state: panelState,
629
+ ref: [forwardedRef, panelRef],
630
+ props: [props, {
631
+ "aria-labelledby": triggerId,
632
+ role: "region",
633
+ style: {
634
+ [AccordionPanelCssVars.accordionPanelHeight]: height === undefined ? "auto" : `${height}px`,
635
+ [AccordionPanelCssVars.accordionPanelWidth]: width === undefined ? "auto" : `${width}px`
636
+ }
637
+ }, elementProps],
638
+ stateAttributesMapping: accordionStateAttributesMapping
639
+ });
640
+ const shouldRender = keepMounted || hiddenUntilFound || mounted;
641
+ if (!shouldRender) {
642
+ return null;
643
+ }
644
+ return element;
645
+ });
646
+ if (true)
647
+ AccordionPanel.displayName = "AccordionPanel";
648
+ export {
649
+ exports_index_parts as Accordion
650
+ };