@thalamiq/ui 0.1.1

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 (333) hide show
  1. package/README.md +29 -0
  2. package/dist/components/accordion.d.mts +10 -0
  3. package/dist/components/accordion.d.ts +10 -0
  4. package/dist/components/accordion.js +148 -0
  5. package/dist/components/accordion.js.map +1 -0
  6. package/dist/components/accordion.mjs +113 -0
  7. package/dist/components/accordion.mjs.map +1 -0
  8. package/dist/components/alert-dialog.d.mts +17 -0
  9. package/dist/components/alert-dialog.d.ts +17 -0
  10. package/dist/components/alert-dialog.js +264 -0
  11. package/dist/components/alert-dialog.js.map +1 -0
  12. package/dist/components/alert-dialog.mjs +222 -0
  13. package/dist/components/alert-dialog.mjs.map +1 -0
  14. package/dist/components/alert.d.mts +13 -0
  15. package/dist/components/alert.d.ts +13 -0
  16. package/dist/components/alert.js +133 -0
  17. package/dist/components/alert.js.map +1 -0
  18. package/dist/components/alert.mjs +109 -0
  19. package/dist/components/alert.mjs.map +1 -0
  20. package/dist/components/aspect-ratio.d.mts +6 -0
  21. package/dist/components/aspect-ratio.d.ts +6 -0
  22. package/dist/components/aspect-ratio.js +74 -0
  23. package/dist/components/aspect-ratio.js.map +1 -0
  24. package/dist/components/aspect-ratio.mjs +42 -0
  25. package/dist/components/aspect-ratio.mjs.map +1 -0
  26. package/dist/components/avatar.d.mts +9 -0
  27. package/dist/components/avatar.d.ts +9 -0
  28. package/dist/components/avatar.js +130 -0
  29. package/dist/components/avatar.js.map +1 -0
  30. package/dist/components/avatar.mjs +96 -0
  31. package/dist/components/avatar.mjs.map +1 -0
  32. package/dist/components/badge.d.mts +13 -0
  33. package/dist/components/badge.d.ts +13 -0
  34. package/dist/components/badge.js +106 -0
  35. package/dist/components/badge.js.map +1 -0
  36. package/dist/components/badge.mjs +83 -0
  37. package/dist/components/badge.mjs.map +1 -0
  38. package/dist/components/breadcrumb.d.mts +14 -0
  39. package/dist/components/breadcrumb.d.ts +14 -0
  40. package/dist/components/breadcrumb.js +182 -0
  41. package/dist/components/breadcrumb.js.map +1 -0
  42. package/dist/components/breadcrumb.mjs +154 -0
  43. package/dist/components/breadcrumb.mjs.map +1 -0
  44. package/dist/components/button-group.d.mts +17 -0
  45. package/dist/components/button-group.d.ts +17 -0
  46. package/dist/components/button-group.js +183 -0
  47. package/dist/components/button-group.js.map +1 -0
  48. package/dist/components/button-group.mjs +148 -0
  49. package/dist/components/button-group.mjs.map +1 -0
  50. package/dist/components/button.d.mts +14 -0
  51. package/dist/components/button.d.ts +14 -0
  52. package/dist/components/button.js +119 -0
  53. package/dist/components/button.js.map +1 -0
  54. package/dist/components/button.mjs +96 -0
  55. package/dist/components/button.mjs.map +1 -0
  56. package/dist/components/calendar.d.mts +13 -0
  57. package/dist/components/calendar.d.ts +13 -0
  58. package/dist/components/calendar.js +324 -0
  59. package/dist/components/calendar.js.map +1 -0
  60. package/dist/components/calendar.mjs +295 -0
  61. package/dist/components/calendar.mjs.map +1 -0
  62. package/dist/components/card.d.mts +12 -0
  63. package/dist/components/card.d.ts +12 -0
  64. package/dist/components/card.js +158 -0
  65. package/dist/components/card.js.map +1 -0
  66. package/dist/components/card.mjs +128 -0
  67. package/dist/components/card.mjs.map +1 -0
  68. package/dist/components/carousel.d.mts +24 -0
  69. package/dist/components/carousel.d.ts +24 -0
  70. package/dist/components/carousel.js +343 -0
  71. package/dist/components/carousel.js.map +1 -0
  72. package/dist/components/carousel.mjs +307 -0
  73. package/dist/components/carousel.mjs.map +1 -0
  74. package/dist/components/chart.d.mts +43 -0
  75. package/dist/components/chart.d.ts +43 -0
  76. package/dist/components/chart.js +330 -0
  77. package/dist/components/chart.js.map +1 -0
  78. package/dist/components/chart.mjs +293 -0
  79. package/dist/components/chart.mjs.map +1 -0
  80. package/dist/components/checkbox.d.mts +7 -0
  81. package/dist/components/checkbox.d.ts +7 -0
  82. package/dist/components/checkbox.js +109 -0
  83. package/dist/components/checkbox.js.map +1 -0
  84. package/dist/components/checkbox.mjs +77 -0
  85. package/dist/components/checkbox.mjs.map +1 -0
  86. package/dist/components/collapsible.d.mts +8 -0
  87. package/dist/components/collapsible.d.ts +8 -0
  88. package/dist/components/collapsible.js +95 -0
  89. package/dist/components/collapsible.js.map +1 -0
  90. package/dist/components/collapsible.mjs +61 -0
  91. package/dist/components/collapsible.mjs.map +1 -0
  92. package/dist/components/command.d.mts +22 -0
  93. package/dist/components/command.d.ts +22 -0
  94. package/dist/components/command.js +370 -0
  95. package/dist/components/command.js.map +1 -0
  96. package/dist/components/command.mjs +330 -0
  97. package/dist/components/command.mjs.map +1 -0
  98. package/dist/components/context-menu.d.mts +28 -0
  99. package/dist/components/context-menu.d.ts +28 -0
  100. package/dist/components/context-menu.js +326 -0
  101. package/dist/components/context-menu.js.map +1 -0
  102. package/dist/components/context-menu.mjs +280 -0
  103. package/dist/components/context-menu.mjs.map +1 -0
  104. package/dist/components/dialog.d.mts +18 -0
  105. package/dist/components/dialog.d.ts +18 -0
  106. package/dist/components/dialog.js +223 -0
  107. package/dist/components/dialog.js.map +1 -0
  108. package/dist/components/dialog.mjs +182 -0
  109. package/dist/components/dialog.mjs.map +1 -0
  110. package/dist/components/drawer.d.mts +16 -0
  111. package/dist/components/drawer.d.ts +16 -0
  112. package/dist/components/drawer.js +205 -0
  113. package/dist/components/drawer.js.map +1 -0
  114. package/dist/components/drawer.mjs +174 -0
  115. package/dist/components/drawer.mjs.map +1 -0
  116. package/dist/components/dropdown-menu.d.mts +28 -0
  117. package/dist/components/dropdown-menu.d.ts +28 -0
  118. package/dist/components/dropdown-menu.js +333 -0
  119. package/dist/components/dropdown-menu.js.map +1 -0
  120. package/dist/components/dropdown-menu.mjs +287 -0
  121. package/dist/components/dropdown-menu.mjs.map +1 -0
  122. package/dist/components/empty.d.mts +15 -0
  123. package/dist/components/empty.d.ts +15 -0
  124. package/dist/components/empty.js +171 -0
  125. package/dist/components/empty.js.map +1 -0
  126. package/dist/components/empty.mjs +144 -0
  127. package/dist/components/empty.mjs.map +1 -0
  128. package/dist/components/field.d.mts +30 -0
  129. package/dist/components/field.d.ts +30 -0
  130. package/dist/components/field.js +372 -0
  131. package/dist/components/field.js.map +1 -0
  132. package/dist/components/field.mjs +331 -0
  133. package/dist/components/field.mjs.map +1 -0
  134. package/dist/components/form.d.mts +28 -0
  135. package/dist/components/form.d.ts +28 -0
  136. package/dist/components/form.js +220 -0
  137. package/dist/components/form.js.map +1 -0
  138. package/dist/components/form.mjs +186 -0
  139. package/dist/components/form.mjs.map +1 -0
  140. package/dist/components/hover-card.d.mts +9 -0
  141. package/dist/components/hover-card.d.ts +9 -0
  142. package/dist/components/hover-card.js +114 -0
  143. package/dist/components/hover-card.js.map +1 -0
  144. package/dist/components/hover-card.mjs +80 -0
  145. package/dist/components/hover-card.mjs.map +1 -0
  146. package/dist/components/input-group.d.mts +20 -0
  147. package/dist/components/input-group.d.ts +20 -0
  148. package/dist/components/input-group.js +316 -0
  149. package/dist/components/input-group.js.map +1 -0
  150. package/dist/components/input-group.mjs +289 -0
  151. package/dist/components/input-group.mjs.map +1 -0
  152. package/dist/components/input-otp.d.mts +14 -0
  153. package/dist/components/input-otp.d.ts +14 -0
  154. package/dist/components/input-otp.js +151 -0
  155. package/dist/components/input-otp.js.map +1 -0
  156. package/dist/components/input-otp.mjs +116 -0
  157. package/dist/components/input-otp.mjs.map +1 -0
  158. package/dist/components/input.d.mts +6 -0
  159. package/dist/components/input.d.ts +6 -0
  160. package/dist/components/input.js +83 -0
  161. package/dist/components/input.js.map +1 -0
  162. package/dist/components/input.mjs +59 -0
  163. package/dist/components/input.mjs.map +1 -0
  164. package/dist/components/item.d.mts +28 -0
  165. package/dist/components/item.d.ts +28 -0
  166. package/dist/components/item.js +301 -0
  167. package/dist/components/item.js.map +1 -0
  168. package/dist/components/item.mjs +260 -0
  169. package/dist/components/item.mjs.map +1 -0
  170. package/dist/components/kbd.d.mts +6 -0
  171. package/dist/components/kbd.d.ts +6 -0
  172. package/dist/components/kbd.js +94 -0
  173. package/dist/components/kbd.js.map +1 -0
  174. package/dist/components/kbd.mjs +69 -0
  175. package/dist/components/kbd.mjs.map +1 -0
  176. package/dist/components/label.d.mts +7 -0
  177. package/dist/components/label.d.ts +7 -0
  178. package/dist/components/label.js +96 -0
  179. package/dist/components/label.js.map +1 -0
  180. package/dist/components/label.mjs +64 -0
  181. package/dist/components/label.mjs.map +1 -0
  182. package/dist/components/menubar.d.mts +29 -0
  183. package/dist/components/menubar.d.ts +29 -0
  184. package/dist/components/menubar.js +361 -0
  185. package/dist/components/menubar.js.map +1 -0
  186. package/dist/components/menubar.mjs +314 -0
  187. package/dist/components/menubar.mjs.map +1 -0
  188. package/dist/components/navigation-menu.d.mts +18 -0
  189. package/dist/components/navigation-menu.d.ts +18 -0
  190. package/dist/components/navigation-menu.js +267 -0
  191. package/dist/components/navigation-menu.js.map +1 -0
  192. package/dist/components/navigation-menu.mjs +227 -0
  193. package/dist/components/navigation-menu.mjs.map +1 -0
  194. package/dist/components/pagination.d.mts +18 -0
  195. package/dist/components/pagination.d.ts +18 -0
  196. package/dist/components/pagination.js +231 -0
  197. package/dist/components/pagination.js.map +1 -0
  198. package/dist/components/pagination.mjs +207 -0
  199. package/dist/components/pagination.mjs.map +1 -0
  200. package/dist/components/popover.d.mts +10 -0
  201. package/dist/components/popover.d.ts +10 -0
  202. package/dist/components/popover.js +120 -0
  203. package/dist/components/popover.js.map +1 -0
  204. package/dist/components/popover.mjs +85 -0
  205. package/dist/components/popover.mjs.map +1 -0
  206. package/dist/components/progress.d.mts +7 -0
  207. package/dist/components/progress.d.ts +7 -0
  208. package/dist/components/progress.js +109 -0
  209. package/dist/components/progress.js.map +1 -0
  210. package/dist/components/progress.mjs +77 -0
  211. package/dist/components/progress.mjs.map +1 -0
  212. package/dist/components/radio-group.d.mts +8 -0
  213. package/dist/components/radio-group.d.ts +8 -0
  214. package/dist/components/radio-group.js +125 -0
  215. package/dist/components/radio-group.js.map +1 -0
  216. package/dist/components/radio-group.mjs +92 -0
  217. package/dist/components/radio-group.mjs.map +1 -0
  218. package/dist/components/resizable.d.mts +11 -0
  219. package/dist/components/resizable.d.ts +11 -0
  220. package/dist/components/resizable.js +128 -0
  221. package/dist/components/resizable.js.map +1 -0
  222. package/dist/components/resizable.mjs +94 -0
  223. package/dist/components/resizable.mjs.map +1 -0
  224. package/dist/components/scroll-area.d.mts +8 -0
  225. package/dist/components/scroll-area.d.ts +8 -0
  226. package/dist/components/scroll-area.js +143 -0
  227. package/dist/components/scroll-area.js.map +1 -0
  228. package/dist/components/scroll-area.mjs +110 -0
  229. package/dist/components/scroll-area.mjs.map +1 -0
  230. package/dist/components/select.d.mts +18 -0
  231. package/dist/components/select.d.ts +18 -0
  232. package/dist/components/select.js +270 -0
  233. package/dist/components/select.js.map +1 -0
  234. package/dist/components/select.mjs +229 -0
  235. package/dist/components/select.mjs.map +1 -0
  236. package/dist/components/separator.d.mts +7 -0
  237. package/dist/components/separator.d.ts +7 -0
  238. package/dist/components/separator.js +102 -0
  239. package/dist/components/separator.js.map +1 -0
  240. package/dist/components/separator.mjs +70 -0
  241. package/dist/components/separator.mjs.map +1 -0
  242. package/dist/components/sheet.d.mts +16 -0
  243. package/dist/components/sheet.d.ts +16 -0
  244. package/dist/components/sheet.js +213 -0
  245. package/dist/components/sheet.js.map +1 -0
  246. package/dist/components/sheet.mjs +174 -0
  247. package/dist/components/sheet.mjs.map +1 -0
  248. package/dist/components/sidebar.d.mts +75 -0
  249. package/dist/components/sidebar.d.ts +75 -0
  250. package/dist/components/sidebar.js +1055 -0
  251. package/dist/components/sidebar.js.map +1 -0
  252. package/dist/components/sidebar.mjs +1000 -0
  253. package/dist/components/sidebar.mjs.map +1 -0
  254. package/dist/components/skeleton.d.mts +5 -0
  255. package/dist/components/skeleton.d.ts +5 -0
  256. package/dist/components/skeleton.js +77 -0
  257. package/dist/components/skeleton.js.map +1 -0
  258. package/dist/components/skeleton.mjs +53 -0
  259. package/dist/components/skeleton.mjs.map +1 -0
  260. package/dist/components/slider.d.mts +7 -0
  261. package/dist/components/slider.d.ts +7 -0
  262. package/dist/components/slider.js +145 -0
  263. package/dist/components/slider.js.map +1 -0
  264. package/dist/components/slider.mjs +113 -0
  265. package/dist/components/slider.mjs.map +1 -0
  266. package/dist/components/sonner.d.mts +6 -0
  267. package/dist/components/sonner.d.ts +6 -0
  268. package/dist/components/sonner.js +85 -0
  269. package/dist/components/sonner.js.map +1 -0
  270. package/dist/components/sonner.mjs +69 -0
  271. package/dist/components/sonner.mjs.map +1 -0
  272. package/dist/components/spinner.d.mts +5 -0
  273. package/dist/components/spinner.d.ts +5 -0
  274. package/dist/components/spinner.js +79 -0
  275. package/dist/components/spinner.js.map +1 -0
  276. package/dist/components/spinner.mjs +57 -0
  277. package/dist/components/spinner.mjs.map +1 -0
  278. package/dist/components/switch.d.mts +7 -0
  279. package/dist/components/switch.d.ts +7 -0
  280. package/dist/components/switch.js +109 -0
  281. package/dist/components/switch.js.map +1 -0
  282. package/dist/components/switch.mjs +77 -0
  283. package/dist/components/switch.mjs.map +1 -0
  284. package/dist/components/table.d.mts +13 -0
  285. package/dist/components/table.d.ts +13 -0
  286. package/dist/components/table.js +184 -0
  287. package/dist/components/table.js.map +1 -0
  288. package/dist/components/table.mjs +153 -0
  289. package/dist/components/table.mjs.map +1 -0
  290. package/dist/components/tabs.d.mts +10 -0
  291. package/dist/components/tabs.d.ts +10 -0
  292. package/dist/components/tabs.js +147 -0
  293. package/dist/components/tabs.js.map +1 -0
  294. package/dist/components/tabs.mjs +112 -0
  295. package/dist/components/tabs.mjs.map +1 -0
  296. package/dist/components/textarea.d.mts +6 -0
  297. package/dist/components/textarea.d.ts +6 -0
  298. package/dist/components/textarea.js +80 -0
  299. package/dist/components/textarea.js.map +1 -0
  300. package/dist/components/textarea.mjs +56 -0
  301. package/dist/components/textarea.mjs.map +1 -0
  302. package/dist/components/toggle-group.d.mts +14 -0
  303. package/dist/components/toggle-group.d.ts +14 -0
  304. package/dist/components/toggle-group.js +179 -0
  305. package/dist/components/toggle-group.js.map +1 -0
  306. package/dist/components/toggle-group.mjs +146 -0
  307. package/dist/components/toggle-group.mjs.map +1 -0
  308. package/dist/components/toggle.d.mts +13 -0
  309. package/dist/components/toggle.d.ts +13 -0
  310. package/dist/components/toggle.js +119 -0
  311. package/dist/components/toggle.js.map +1 -0
  312. package/dist/components/toggle.mjs +86 -0
  313. package/dist/components/toggle.mjs.map +1 -0
  314. package/dist/components/tooltip.d.mts +10 -0
  315. package/dist/components/tooltip.d.ts +10 -0
  316. package/dist/components/tooltip.js +137 -0
  317. package/dist/components/tooltip.js.map +1 -0
  318. package/dist/components/tooltip.mjs +102 -0
  319. package/dist/components/tooltip.mjs.map +1 -0
  320. package/dist/hooks/use-mobile.d.mts +3 -0
  321. package/dist/hooks/use-mobile.d.ts +3 -0
  322. package/dist/hooks/use-mobile.js +56 -0
  323. package/dist/hooks/use-mobile.js.map +1 -0
  324. package/dist/hooks/use-mobile.mjs +22 -0
  325. package/dist/hooks/use-mobile.mjs.map +1 -0
  326. package/dist/styles/globals.css +230 -0
  327. package/dist/utils/utils.d.mts +5 -0
  328. package/dist/utils/utils.d.ts +5 -0
  329. package/dist/utils/utils.js +36 -0
  330. package/dist/utils/utils.js.map +1 -0
  331. package/dist/utils/utils.mjs +12 -0
  332. package/dist/utils/utils.mjs.map +1 -0
  333. package/package.json +393 -0
@@ -0,0 +1,343 @@
1
+ "use client";
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+ var __export = (target, all) => {
39
+ for (var name in all)
40
+ __defProp(target, name, { get: all[name], enumerable: true });
41
+ };
42
+ var __copyProps = (to, from, except, desc) => {
43
+ if (from && typeof from === "object" || typeof from === "function") {
44
+ for (let key of __getOwnPropNames(from))
45
+ if (!__hasOwnProp.call(to, key) && key !== except)
46
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
47
+ }
48
+ return to;
49
+ };
50
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
51
+ // If the importer is in node compatibility mode or this is not an ESM
52
+ // file that has been converted to a CommonJS file using a Babel-
53
+ // compatible transform (i.e. "__esModule" has not been set), then set
54
+ // "default" to the CommonJS "module.exports" for node compatibility.
55
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
56
+ mod
57
+ ));
58
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
59
+
60
+ // lib/components/carousel.tsx
61
+ var carousel_exports = {};
62
+ __export(carousel_exports, {
63
+ Carousel: () => Carousel,
64
+ CarouselContent: () => CarouselContent,
65
+ CarouselItem: () => CarouselItem,
66
+ CarouselNext: () => CarouselNext,
67
+ CarouselPrevious: () => CarouselPrevious
68
+ });
69
+ module.exports = __toCommonJS(carousel_exports);
70
+ var React = __toESM(require("react"));
71
+ var import_embla_carousel_react = __toESM(require("embla-carousel-react"));
72
+ var import_lucide_react = require("lucide-react");
73
+
74
+ // lib/utils/utils.ts
75
+ var import_clsx = require("clsx");
76
+ var import_tailwind_merge = require("tailwind-merge");
77
+ function cn(...inputs) {
78
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
79
+ }
80
+
81
+ // lib/components/button.tsx
82
+ var import_react_slot = require("@radix-ui/react-slot");
83
+ var import_class_variance_authority = require("class-variance-authority");
84
+ var import_jsx_runtime = require("react/jsx-runtime");
85
+ var buttonVariants = (0, import_class_variance_authority.cva)(
86
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
87
+ {
88
+ variants: {
89
+ variant: {
90
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
91
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
92
+ outline: "border bg-background hover:bg-accent hover:text-accent-foreground dark:border-border dark:hover:bg-input/50",
93
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
94
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
95
+ link: "text-primary underline-offset-4 hover:underline"
96
+ },
97
+ size: {
98
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
99
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
100
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
101
+ icon: "size-9",
102
+ "icon-sm": "size-8",
103
+ "icon-lg": "size-10"
104
+ }
105
+ },
106
+ defaultVariants: {
107
+ variant: "default",
108
+ size: "default"
109
+ }
110
+ }
111
+ );
112
+ function Button(_a) {
113
+ var _b = _a, {
114
+ className,
115
+ variant,
116
+ size,
117
+ asChild = false
118
+ } = _b, props = __objRest(_b, [
119
+ "className",
120
+ "variant",
121
+ "size",
122
+ "asChild"
123
+ ]);
124
+ const Comp = asChild ? import_react_slot.Slot : "button";
125
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
126
+ Comp,
127
+ __spreadValues({
128
+ "data-slot": "button",
129
+ className: cn(buttonVariants({ variant, size, className }))
130
+ }, props)
131
+ );
132
+ }
133
+
134
+ // lib/components/carousel.tsx
135
+ var import_jsx_runtime2 = require("react/jsx-runtime");
136
+ var CarouselContext = React.createContext(null);
137
+ function useCarousel() {
138
+ const context = React.useContext(CarouselContext);
139
+ if (!context) {
140
+ throw new Error("useCarousel must be used within a <Carousel />");
141
+ }
142
+ return context;
143
+ }
144
+ function Carousel(_a) {
145
+ var _b = _a, {
146
+ orientation = "horizontal",
147
+ opts,
148
+ setApi,
149
+ plugins,
150
+ className,
151
+ children
152
+ } = _b, props = __objRest(_b, [
153
+ "orientation",
154
+ "opts",
155
+ "setApi",
156
+ "plugins",
157
+ "className",
158
+ "children"
159
+ ]);
160
+ const [carouselRef, api] = (0, import_embla_carousel_react.default)(
161
+ __spreadProps(__spreadValues({}, opts), {
162
+ axis: orientation === "horizontal" ? "x" : "y"
163
+ }),
164
+ plugins
165
+ );
166
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false);
167
+ const [canScrollNext, setCanScrollNext] = React.useState(false);
168
+ const onSelect = React.useCallback((api2) => {
169
+ if (!api2) return;
170
+ setCanScrollPrev(api2.canScrollPrev());
171
+ setCanScrollNext(api2.canScrollNext());
172
+ }, []);
173
+ const scrollPrev = React.useCallback(() => {
174
+ api == null ? void 0 : api.scrollPrev();
175
+ }, [api]);
176
+ const scrollNext = React.useCallback(() => {
177
+ api == null ? void 0 : api.scrollNext();
178
+ }, [api]);
179
+ const handleKeyDown = React.useCallback(
180
+ (event) => {
181
+ if (event.key === "ArrowLeft") {
182
+ event.preventDefault();
183
+ scrollPrev();
184
+ } else if (event.key === "ArrowRight") {
185
+ event.preventDefault();
186
+ scrollNext();
187
+ }
188
+ },
189
+ [scrollPrev, scrollNext]
190
+ );
191
+ React.useEffect(() => {
192
+ if (!api || !setApi) return;
193
+ setApi(api);
194
+ }, [api, setApi]);
195
+ React.useEffect(() => {
196
+ if (!api) return;
197
+ onSelect(api);
198
+ api.on("reInit", onSelect);
199
+ api.on("select", onSelect);
200
+ return () => {
201
+ api == null ? void 0 : api.off("select", onSelect);
202
+ };
203
+ }, [api, onSelect]);
204
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
205
+ CarouselContext.Provider,
206
+ {
207
+ value: {
208
+ carouselRef,
209
+ api,
210
+ opts,
211
+ orientation: orientation || ((opts == null ? void 0 : opts.axis) === "y" ? "vertical" : "horizontal"),
212
+ scrollPrev,
213
+ scrollNext,
214
+ canScrollPrev,
215
+ canScrollNext
216
+ },
217
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
218
+ "div",
219
+ __spreadProps(__spreadValues({
220
+ onKeyDownCapture: handleKeyDown,
221
+ className: cn("relative", className),
222
+ role: "region",
223
+ "aria-roledescription": "carousel",
224
+ "data-slot": "carousel"
225
+ }, props), {
226
+ children
227
+ })
228
+ )
229
+ }
230
+ );
231
+ }
232
+ function CarouselContent(_a) {
233
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
234
+ const { carouselRef, orientation } = useCarousel();
235
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
236
+ "div",
237
+ {
238
+ ref: carouselRef,
239
+ className: "overflow-hidden",
240
+ "data-slot": "carousel-content",
241
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
242
+ "div",
243
+ __spreadValues({
244
+ className: cn(
245
+ "flex",
246
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
247
+ className
248
+ )
249
+ }, props)
250
+ )
251
+ }
252
+ );
253
+ }
254
+ function CarouselItem(_a) {
255
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
256
+ const { orientation } = useCarousel();
257
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
258
+ "div",
259
+ __spreadValues({
260
+ role: "group",
261
+ "aria-roledescription": "slide",
262
+ "data-slot": "carousel-item",
263
+ className: cn(
264
+ "min-w-0 shrink-0 grow-0 basis-full",
265
+ orientation === "horizontal" ? "pl-4" : "pt-4",
266
+ className
267
+ )
268
+ }, props)
269
+ );
270
+ }
271
+ function CarouselPrevious(_a) {
272
+ var _b = _a, {
273
+ className,
274
+ variant = "outline",
275
+ size = "icon"
276
+ } = _b, props = __objRest(_b, [
277
+ "className",
278
+ "variant",
279
+ "size"
280
+ ]);
281
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
282
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
283
+ Button,
284
+ __spreadProps(__spreadValues({
285
+ "data-slot": "carousel-previous",
286
+ variant,
287
+ size,
288
+ className: cn(
289
+ "absolute size-8 rounded-full",
290
+ orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
291
+ className
292
+ ),
293
+ disabled: !canScrollPrev,
294
+ onClick: scrollPrev
295
+ }, props), {
296
+ children: [
297
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ArrowLeft, {}),
298
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "sr-only", children: "Previous slide" })
299
+ ]
300
+ })
301
+ );
302
+ }
303
+ function CarouselNext(_a) {
304
+ var _b = _a, {
305
+ className,
306
+ variant = "outline",
307
+ size = "icon"
308
+ } = _b, props = __objRest(_b, [
309
+ "className",
310
+ "variant",
311
+ "size"
312
+ ]);
313
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
314
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
315
+ Button,
316
+ __spreadProps(__spreadValues({
317
+ "data-slot": "carousel-next",
318
+ variant,
319
+ size,
320
+ className: cn(
321
+ "absolute size-8 rounded-full",
322
+ orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
323
+ className
324
+ ),
325
+ disabled: !canScrollNext,
326
+ onClick: scrollNext
327
+ }, props), {
328
+ children: [
329
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ArrowRight, {}),
330
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "sr-only", children: "Next slide" })
331
+ ]
332
+ })
333
+ );
334
+ }
335
+ // Annotate the CommonJS export names for ESM import in node:
336
+ 0 && (module.exports = {
337
+ Carousel,
338
+ CarouselContent,
339
+ CarouselItem,
340
+ CarouselNext,
341
+ CarouselPrevious
342
+ });
343
+ //# sourceMappingURL=carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../lib/components/carousel.tsx","../../lib/utils/utils.ts","../../lib/components/button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\"\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\n\nimport { cn } from \"../utils/utils\"\nimport { Button } from \"./button\"\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) return\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) return\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel()\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../utils/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background hover:bg-accent hover:text-accent-foreground dark:border-border dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":"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","names":["import_jsx_runtime","useEmblaCarousel","api"]}
@@ -0,0 +1,307 @@
1
+ "use client";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+
34
+ // lib/components/carousel.tsx
35
+ import * as React from "react";
36
+ import useEmblaCarousel from "embla-carousel-react";
37
+ import { ArrowLeft, ArrowRight } from "lucide-react";
38
+
39
+ // lib/utils/utils.ts
40
+ import { clsx } from "clsx";
41
+ import { twMerge } from "tailwind-merge";
42
+ function cn(...inputs) {
43
+ return twMerge(clsx(inputs));
44
+ }
45
+
46
+ // lib/components/button.tsx
47
+ import { Slot } from "@radix-ui/react-slot";
48
+ import { cva } from "class-variance-authority";
49
+ import { jsx } from "react/jsx-runtime";
50
+ var buttonVariants = cva(
51
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
52
+ {
53
+ variants: {
54
+ variant: {
55
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
56
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
57
+ outline: "border bg-background hover:bg-accent hover:text-accent-foreground dark:border-border dark:hover:bg-input/50",
58
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
59
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
60
+ link: "text-primary underline-offset-4 hover:underline"
61
+ },
62
+ size: {
63
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
64
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
65
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
66
+ icon: "size-9",
67
+ "icon-sm": "size-8",
68
+ "icon-lg": "size-10"
69
+ }
70
+ },
71
+ defaultVariants: {
72
+ variant: "default",
73
+ size: "default"
74
+ }
75
+ }
76
+ );
77
+ function Button(_a) {
78
+ var _b = _a, {
79
+ className,
80
+ variant,
81
+ size,
82
+ asChild = false
83
+ } = _b, props = __objRest(_b, [
84
+ "className",
85
+ "variant",
86
+ "size",
87
+ "asChild"
88
+ ]);
89
+ const Comp = asChild ? Slot : "button";
90
+ return /* @__PURE__ */ jsx(
91
+ Comp,
92
+ __spreadValues({
93
+ "data-slot": "button",
94
+ className: cn(buttonVariants({ variant, size, className }))
95
+ }, props)
96
+ );
97
+ }
98
+
99
+ // lib/components/carousel.tsx
100
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
101
+ var CarouselContext = React.createContext(null);
102
+ function useCarousel() {
103
+ const context = React.useContext(CarouselContext);
104
+ if (!context) {
105
+ throw new Error("useCarousel must be used within a <Carousel />");
106
+ }
107
+ return context;
108
+ }
109
+ function Carousel(_a) {
110
+ var _b = _a, {
111
+ orientation = "horizontal",
112
+ opts,
113
+ setApi,
114
+ plugins,
115
+ className,
116
+ children
117
+ } = _b, props = __objRest(_b, [
118
+ "orientation",
119
+ "opts",
120
+ "setApi",
121
+ "plugins",
122
+ "className",
123
+ "children"
124
+ ]);
125
+ const [carouselRef, api] = useEmblaCarousel(
126
+ __spreadProps(__spreadValues({}, opts), {
127
+ axis: orientation === "horizontal" ? "x" : "y"
128
+ }),
129
+ plugins
130
+ );
131
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false);
132
+ const [canScrollNext, setCanScrollNext] = React.useState(false);
133
+ const onSelect = React.useCallback((api2) => {
134
+ if (!api2) return;
135
+ setCanScrollPrev(api2.canScrollPrev());
136
+ setCanScrollNext(api2.canScrollNext());
137
+ }, []);
138
+ const scrollPrev = React.useCallback(() => {
139
+ api == null ? void 0 : api.scrollPrev();
140
+ }, [api]);
141
+ const scrollNext = React.useCallback(() => {
142
+ api == null ? void 0 : api.scrollNext();
143
+ }, [api]);
144
+ const handleKeyDown = React.useCallback(
145
+ (event) => {
146
+ if (event.key === "ArrowLeft") {
147
+ event.preventDefault();
148
+ scrollPrev();
149
+ } else if (event.key === "ArrowRight") {
150
+ event.preventDefault();
151
+ scrollNext();
152
+ }
153
+ },
154
+ [scrollPrev, scrollNext]
155
+ );
156
+ React.useEffect(() => {
157
+ if (!api || !setApi) return;
158
+ setApi(api);
159
+ }, [api, setApi]);
160
+ React.useEffect(() => {
161
+ if (!api) return;
162
+ onSelect(api);
163
+ api.on("reInit", onSelect);
164
+ api.on("select", onSelect);
165
+ return () => {
166
+ api == null ? void 0 : api.off("select", onSelect);
167
+ };
168
+ }, [api, onSelect]);
169
+ return /* @__PURE__ */ jsx2(
170
+ CarouselContext.Provider,
171
+ {
172
+ value: {
173
+ carouselRef,
174
+ api,
175
+ opts,
176
+ orientation: orientation || ((opts == null ? void 0 : opts.axis) === "y" ? "vertical" : "horizontal"),
177
+ scrollPrev,
178
+ scrollNext,
179
+ canScrollPrev,
180
+ canScrollNext
181
+ },
182
+ children: /* @__PURE__ */ jsx2(
183
+ "div",
184
+ __spreadProps(__spreadValues({
185
+ onKeyDownCapture: handleKeyDown,
186
+ className: cn("relative", className),
187
+ role: "region",
188
+ "aria-roledescription": "carousel",
189
+ "data-slot": "carousel"
190
+ }, props), {
191
+ children
192
+ })
193
+ )
194
+ }
195
+ );
196
+ }
197
+ function CarouselContent(_a) {
198
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
199
+ const { carouselRef, orientation } = useCarousel();
200
+ return /* @__PURE__ */ jsx2(
201
+ "div",
202
+ {
203
+ ref: carouselRef,
204
+ className: "overflow-hidden",
205
+ "data-slot": "carousel-content",
206
+ children: /* @__PURE__ */ jsx2(
207
+ "div",
208
+ __spreadValues({
209
+ className: cn(
210
+ "flex",
211
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
212
+ className
213
+ )
214
+ }, props)
215
+ )
216
+ }
217
+ );
218
+ }
219
+ function CarouselItem(_a) {
220
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
221
+ const { orientation } = useCarousel();
222
+ return /* @__PURE__ */ jsx2(
223
+ "div",
224
+ __spreadValues({
225
+ role: "group",
226
+ "aria-roledescription": "slide",
227
+ "data-slot": "carousel-item",
228
+ className: cn(
229
+ "min-w-0 shrink-0 grow-0 basis-full",
230
+ orientation === "horizontal" ? "pl-4" : "pt-4",
231
+ className
232
+ )
233
+ }, props)
234
+ );
235
+ }
236
+ function CarouselPrevious(_a) {
237
+ var _b = _a, {
238
+ className,
239
+ variant = "outline",
240
+ size = "icon"
241
+ } = _b, props = __objRest(_b, [
242
+ "className",
243
+ "variant",
244
+ "size"
245
+ ]);
246
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel();
247
+ return /* @__PURE__ */ jsxs(
248
+ Button,
249
+ __spreadProps(__spreadValues({
250
+ "data-slot": "carousel-previous",
251
+ variant,
252
+ size,
253
+ className: cn(
254
+ "absolute size-8 rounded-full",
255
+ orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
256
+ className
257
+ ),
258
+ disabled: !canScrollPrev,
259
+ onClick: scrollPrev
260
+ }, props), {
261
+ children: [
262
+ /* @__PURE__ */ jsx2(ArrowLeft, {}),
263
+ /* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Previous slide" })
264
+ ]
265
+ })
266
+ );
267
+ }
268
+ function CarouselNext(_a) {
269
+ var _b = _a, {
270
+ className,
271
+ variant = "outline",
272
+ size = "icon"
273
+ } = _b, props = __objRest(_b, [
274
+ "className",
275
+ "variant",
276
+ "size"
277
+ ]);
278
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
279
+ return /* @__PURE__ */ jsxs(
280
+ Button,
281
+ __spreadProps(__spreadValues({
282
+ "data-slot": "carousel-next",
283
+ variant,
284
+ size,
285
+ className: cn(
286
+ "absolute size-8 rounded-full",
287
+ orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
288
+ className
289
+ ),
290
+ disabled: !canScrollNext,
291
+ onClick: scrollNext
292
+ }, props), {
293
+ children: [
294
+ /* @__PURE__ */ jsx2(ArrowRight, {}),
295
+ /* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Next slide" })
296
+ ]
297
+ })
298
+ );
299
+ }
300
+ export {
301
+ Carousel,
302
+ CarouselContent,
303
+ CarouselItem,
304
+ CarouselNext,
305
+ CarouselPrevious
306
+ };
307
+ //# sourceMappingURL=carousel.mjs.map