@mesob/ui 0.0.2

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 (194) hide show
  1. package/dist/components/accordion.d.ts +10 -0
  2. package/dist/components/accordion.js +74 -0
  3. package/dist/components/accordion.js.map +1 -0
  4. package/dist/components/alert-dialog.d.ts +17 -0
  5. package/dist/components/alert-dialog.js +187 -0
  6. package/dist/components/alert-dialog.js.map +1 -0
  7. package/dist/components/alert.d.ts +13 -0
  8. package/dist/components/alert.js +74 -0
  9. package/dist/components/alert.js.map +1 -0
  10. package/dist/components/animated-tabs.d.ts +26 -0
  11. package/dist/components/animated-tabs.js +290 -0
  12. package/dist/components/animated-tabs.js.map +1 -0
  13. package/dist/components/aspect-ratio.d.ts +6 -0
  14. package/dist/components/aspect-ratio.js +14 -0
  15. package/dist/components/aspect-ratio.js.map +1 -0
  16. package/dist/components/avatar.d.ts +9 -0
  17. package/dist/components/avatar.js +63 -0
  18. package/dist/components/avatar.js.map +1 -0
  19. package/dist/components/badge.d.ts +13 -0
  20. package/dist/components/badge.js +48 -0
  21. package/dist/components/badge.js.map +1 -0
  22. package/dist/components/breadcrumb.d.ts +14 -0
  23. package/dist/components/breadcrumb.js +110 -0
  24. package/dist/components/breadcrumb.js.map +1 -0
  25. package/dist/components/button-group.d.ts +17 -0
  26. package/dist/components/button-group.js +106 -0
  27. package/dist/components/button-group.js.map +1 -0
  28. package/dist/components/button.d.ts +14 -0
  29. package/dist/components/button.js +60 -0
  30. package/dist/components/button.js.map +1 -0
  31. package/dist/components/calendar.d.ts +13 -0
  32. package/dist/components/calendar.js +254 -0
  33. package/dist/components/calendar.js.map +1 -0
  34. package/dist/components/card.d.ts +12 -0
  35. package/dist/components/card.js +98 -0
  36. package/dist/components/card.js.map +1 -0
  37. package/dist/components/carousel.d.ts +24 -0
  38. package/dist/components/carousel.js +260 -0
  39. package/dist/components/carousel.js.map +1 -0
  40. package/dist/components/chart.d.ts +43 -0
  41. package/dist/components/chart.js +261 -0
  42. package/dist/components/chart.js.map +1 -0
  43. package/dist/components/checkbox.d.ts +7 -0
  44. package/dist/components/checkbox.js +41 -0
  45. package/dist/components/checkbox.js.map +1 -0
  46. package/dist/components/collapsible.d.ts +8 -0
  47. package/dist/components/collapsible.js +38 -0
  48. package/dist/components/collapsible.js.map +1 -0
  49. package/dist/components/command.d.ts +22 -0
  50. package/dist/components/command.js +281 -0
  51. package/dist/components/command.js.map +1 -0
  52. package/dist/components/context-menu.d.ts +28 -0
  53. package/dist/components/context-menu.js +233 -0
  54. package/dist/components/context-menu.js.map +1 -0
  55. package/dist/components/data-table/index.d.ts +46 -0
  56. package/dist/components/data-table/index.js +639 -0
  57. package/dist/components/data-table/index.js.map +1 -0
  58. package/dist/components/dialog.d.ts +18 -0
  59. package/dist/components/dialog.js +146 -0
  60. package/dist/components/dialog.js.map +1 -0
  61. package/dist/components/drawer.d.ts +16 -0
  62. package/dist/components/drawer.js +138 -0
  63. package/dist/components/drawer.js.map +1 -0
  64. package/dist/components/dropdown-menu.d.ts +28 -0
  65. package/dist/components/dropdown-menu.js +241 -0
  66. package/dist/components/dropdown-menu.js.map +1 -0
  67. package/dist/components/empty.d.ts +15 -0
  68. package/dist/components/empty.js +110 -0
  69. package/dist/components/empty.js.map +1 -0
  70. package/dist/components/entity/index.d.ts +160 -0
  71. package/dist/components/entity/index.js +1671 -0
  72. package/dist/components/entity/index.js.map +1 -0
  73. package/dist/components/field.d.ts +30 -0
  74. package/dist/components/field.js +279 -0
  75. package/dist/components/field.js.map +1 -0
  76. package/dist/components/form.d.ts +28 -0
  77. package/dist/components/form.js +150 -0
  78. package/dist/components/form.js.map +1 -0
  79. package/dist/components/hover-card.d.ts +9 -0
  80. package/dist/components/hover-card.js +48 -0
  81. package/dist/components/hover-card.js.map +1 -0
  82. package/dist/components/input-group.d.ts +20 -0
  83. package/dist/components/input-group.js +257 -0
  84. package/dist/components/input-group.js.map +1 -0
  85. package/dist/components/input-otp.d.ts +14 -0
  86. package/dist/components/input-otp.js +76 -0
  87. package/dist/components/input-otp.js.map +1 -0
  88. package/dist/components/input.d.ts +6 -0
  89. package/dist/components/input.js +29 -0
  90. package/dist/components/input.js.map +1 -0
  91. package/dist/components/item.d.ts +28 -0
  92. package/dist/components/item.js +220 -0
  93. package/dist/components/item.js.map +1 -0
  94. package/dist/components/jiret-logo.d.ts +13 -0
  95. package/dist/components/jiret-logo.js +80 -0
  96. package/dist/components/jiret-logo.js.map +1 -0
  97. package/dist/components/kbd.d.ts +6 -0
  98. package/dist/components/kbd.js +39 -0
  99. package/dist/components/kbd.js.map +1 -0
  100. package/dist/components/label.d.ts +7 -0
  101. package/dist/components/label.js +32 -0
  102. package/dist/components/label.js.map +1 -0
  103. package/dist/components/menubar.d.ts +29 -0
  104. package/dist/components/menubar.js +261 -0
  105. package/dist/components/menubar.js.map +1 -0
  106. package/dist/components/navigation-menu.d.ts +18 -0
  107. package/dist/components/navigation-menu.js +178 -0
  108. package/dist/components/navigation-menu.js.map +1 -0
  109. package/dist/components/pagination.d.ts +18 -0
  110. package/dist/components/pagination.js +160 -0
  111. package/dist/components/pagination.js.map +1 -0
  112. package/dist/components/popover.d.ts +10 -0
  113. package/dist/components/popover.js +54 -0
  114. package/dist/components/popover.js.map +1 -0
  115. package/dist/components/powered-by.d.ts +5 -0
  116. package/dist/components/powered-by.js +98 -0
  117. package/dist/components/powered-by.js.map +1 -0
  118. package/dist/components/progress.d.ts +7 -0
  119. package/dist/components/progress.js +41 -0
  120. package/dist/components/progress.js.map +1 -0
  121. package/dist/components/radio-group.d.ts +8 -0
  122. package/dist/components/radio-group.js +55 -0
  123. package/dist/components/radio-group.js.map +1 -0
  124. package/dist/components/resizable.d.ts +11 -0
  125. package/dist/components/resizable.js +58 -0
  126. package/dist/components/resizable.js.map +1 -0
  127. package/dist/components/scroll-area.d.ts +8 -0
  128. package/dist/components/scroll-area.js +70 -0
  129. package/dist/components/scroll-area.js.map +1 -0
  130. package/dist/components/section/index.d.ts +14 -0
  131. package/dist/components/section/index.js +139 -0
  132. package/dist/components/section/index.js.map +1 -0
  133. package/dist/components/select.d.ts +18 -0
  134. package/dist/components/select.js +181 -0
  135. package/dist/components/select.js.map +1 -0
  136. package/dist/components/separator.d.ts +7 -0
  137. package/dist/components/separator.js +36 -0
  138. package/dist/components/separator.js.map +1 -0
  139. package/dist/components/sheet.d.ts +16 -0
  140. package/dist/components/sheet.js +136 -0
  141. package/dist/components/sheet.js.map +1 -0
  142. package/dist/components/sidebar.d.ts +75 -0
  143. package/dist/components/sidebar.js +909 -0
  144. package/dist/components/sidebar.js.map +1 -0
  145. package/dist/components/skeleton.d.ts +5 -0
  146. package/dist/components/skeleton.js +23 -0
  147. package/dist/components/skeleton.js.map +1 -0
  148. package/dist/components/slider.d.ts +7 -0
  149. package/dist/components/slider.js +76 -0
  150. package/dist/components/slider.js.map +1 -0
  151. package/dist/components/sonner.d.ts +6 -0
  152. package/dist/components/sonner.js +41 -0
  153. package/dist/components/sonner.js.map +1 -0
  154. package/dist/components/spinner.d.ts +6 -0
  155. package/dist/components/spinner.js +28 -0
  156. package/dist/components/spinner.js.map +1 -0
  157. package/dist/components/spotlight-search.d.ts +25 -0
  158. package/dist/components/spotlight-search.js +387 -0
  159. package/dist/components/spotlight-search.js.map +1 -0
  160. package/dist/components/switch.d.ts +7 -0
  161. package/dist/components/switch.js +41 -0
  162. package/dist/components/switch.js.map +1 -0
  163. package/dist/components/table.d.ts +13 -0
  164. package/dist/components/table.js +124 -0
  165. package/dist/components/table.js.map +1 -0
  166. package/dist/components/tabs.d.ts +10 -0
  167. package/dist/components/tabs.js +77 -0
  168. package/dist/components/tabs.js.map +1 -0
  169. package/dist/components/textarea.d.ts +6 -0
  170. package/dist/components/textarea.js +26 -0
  171. package/dist/components/textarea.js.map +1 -0
  172. package/dist/components/theme-toggle.d.ts +8 -0
  173. package/dist/components/theme-toggle.js +86 -0
  174. package/dist/components/theme-toggle.js.map +1 -0
  175. package/dist/components/toggle-group.d.ts +14 -0
  176. package/dist/components/toggle-group.js +102 -0
  177. package/dist/components/toggle-group.js.map +1 -0
  178. package/dist/components/toggle.d.ts +13 -0
  179. package/dist/components/toggle.js +53 -0
  180. package/dist/components/toggle.js.map +1 -0
  181. package/dist/components/tooltip.d.ts +10 -0
  182. package/dist/components/tooltip.js +65 -0
  183. package/dist/components/tooltip.js.map +1 -0
  184. package/dist/hooks/use-mobile.d.ts +3 -0
  185. package/dist/hooks/use-mobile.js +22 -0
  186. package/dist/hooks/use-mobile.js.map +1 -0
  187. package/dist/index.d.ts +2 -0
  188. package/dist/index.js +10 -0
  189. package/dist/index.js.map +1 -0
  190. package/dist/lib/utils.d.ts +5 -0
  191. package/dist/lib/utils.js +10 -0
  192. package/dist/lib/utils.js.map +1 -0
  193. package/package.json +123 -0
  194. package/src/styles/globals.css +125 -0
@@ -0,0 +1,387 @@
1
+ "use client";
2
+
3
+ // src/lib/utils.ts
4
+ import { clsx } from "clsx";
5
+ import { twMerge } from "tailwind-merge";
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+
10
+ // src/components/button.tsx
11
+ import { Slot } from "@radix-ui/react-slot";
12
+ import { cva } from "class-variance-authority";
13
+ import { jsx } from "react/jsx-runtime";
14
+ var buttonVariants = cva(
15
+ "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",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
20
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
21
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
22
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
23
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
24
+ link: "text-primary underline-offset-4 hover:underline"
25
+ },
26
+ size: {
27
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
28
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
29
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
30
+ icon: "size-9",
31
+ "icon-sm": "size-8",
32
+ "icon-lg": "size-10"
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ variant: "default",
37
+ size: "default"
38
+ }
39
+ }
40
+ );
41
+ function Button({
42
+ className,
43
+ variant,
44
+ size,
45
+ asChild = false,
46
+ ...props
47
+ }) {
48
+ const Comp = asChild ? Slot : "button";
49
+ return /* @__PURE__ */ jsx(
50
+ Comp,
51
+ {
52
+ "data-slot": "button",
53
+ className: cn(buttonVariants({ variant, size, className })),
54
+ ...props
55
+ }
56
+ );
57
+ }
58
+
59
+ // src/components/dialog.tsx
60
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
61
+ import { IconX } from "@tabler/icons-react";
62
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
63
+ function Dialog({
64
+ ...props
65
+ }) {
66
+ return /* @__PURE__ */ jsx2(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
67
+ }
68
+ function DialogPortal({
69
+ ...props
70
+ }) {
71
+ return /* @__PURE__ */ jsx2(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
72
+ }
73
+ function DialogOverlay({
74
+ className,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsx2(
78
+ DialogPrimitive.Overlay,
79
+ {
80
+ "data-slot": "dialog-overlay",
81
+ className: cn(
82
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
83
+ className
84
+ ),
85
+ ...props
86
+ }
87
+ );
88
+ }
89
+ function DialogContent({
90
+ className,
91
+ children,
92
+ showCloseButton = true,
93
+ ...props
94
+ }) {
95
+ return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
96
+ /* @__PURE__ */ jsx2(DialogOverlay, {}),
97
+ /* @__PURE__ */ jsxs(
98
+ DialogPrimitive.Content,
99
+ {
100
+ "data-slot": "dialog-content",
101
+ className: cn(
102
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
103
+ className
104
+ ),
105
+ ...props,
106
+ children: [
107
+ children,
108
+ showCloseButton && /* @__PURE__ */ jsxs(
109
+ DialogPrimitive.Close,
110
+ {
111
+ "data-slot": "dialog-close",
112
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
113
+ children: [
114
+ /* @__PURE__ */ jsx2(IconX, {}),
115
+ /* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Close" })
116
+ ]
117
+ }
118
+ )
119
+ ]
120
+ }
121
+ )
122
+ ] });
123
+ }
124
+ function DialogHeader({ className, ...props }) {
125
+ return /* @__PURE__ */ jsx2(
126
+ "div",
127
+ {
128
+ "data-slot": "dialog-header",
129
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
130
+ ...props
131
+ }
132
+ );
133
+ }
134
+ function DialogTitle({
135
+ className,
136
+ ...props
137
+ }) {
138
+ return /* @__PURE__ */ jsx2(
139
+ DialogPrimitive.Title,
140
+ {
141
+ "data-slot": "dialog-title",
142
+ className: cn("text-lg leading-none font-semibold", className),
143
+ ...props
144
+ }
145
+ );
146
+ }
147
+ function DialogDescription({
148
+ className,
149
+ ...props
150
+ }) {
151
+ return /* @__PURE__ */ jsx2(
152
+ DialogPrimitive.Description,
153
+ {
154
+ "data-slot": "dialog-description",
155
+ className: cn("text-muted-foreground text-sm", className),
156
+ ...props
157
+ }
158
+ );
159
+ }
160
+
161
+ // src/components/command.tsx
162
+ import { IconSearch } from "@tabler/icons-react";
163
+ import { Command as CommandPrimitive } from "cmdk";
164
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
165
+ function Command({
166
+ className,
167
+ ...props
168
+ }) {
169
+ return /* @__PURE__ */ jsx3(
170
+ CommandPrimitive,
171
+ {
172
+ "data-slot": "command",
173
+ className: cn(
174
+ "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
175
+ className
176
+ ),
177
+ ...props
178
+ }
179
+ );
180
+ }
181
+ function CommandDialog({
182
+ title = "Command Palette",
183
+ description = "Search for a command to run...",
184
+ children,
185
+ className,
186
+ showCloseButton = true,
187
+ ...props
188
+ }) {
189
+ return /* @__PURE__ */ jsxs2(Dialog, { ...props, children: [
190
+ /* @__PURE__ */ jsxs2(DialogHeader, { className: "sr-only", children: [
191
+ /* @__PURE__ */ jsx3(DialogTitle, { children: title }),
192
+ /* @__PURE__ */ jsx3(DialogDescription, { children: description })
193
+ ] }),
194
+ /* @__PURE__ */ jsx3(
195
+ DialogContent,
196
+ {
197
+ className: cn("overflow-hidden p-0", className),
198
+ showCloseButton,
199
+ children: /* @__PURE__ */ jsx3(Command, { className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
200
+ }
201
+ )
202
+ ] });
203
+ }
204
+ function CommandInput({
205
+ className,
206
+ ...props
207
+ }) {
208
+ return /* @__PURE__ */ jsxs2(
209
+ "div",
210
+ {
211
+ "data-slot": "command-input-wrapper",
212
+ className: "flex h-9 items-center gap-2 border-b px-3",
213
+ children: [
214
+ /* @__PURE__ */ jsx3(IconSearch, { className: "size-4 shrink-0 opacity-50" }),
215
+ /* @__PURE__ */ jsx3(
216
+ CommandPrimitive.Input,
217
+ {
218
+ "data-slot": "command-input",
219
+ className: cn(
220
+ "placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
221
+ className
222
+ ),
223
+ ...props
224
+ }
225
+ )
226
+ ]
227
+ }
228
+ );
229
+ }
230
+ function CommandList({
231
+ className,
232
+ ...props
233
+ }) {
234
+ return /* @__PURE__ */ jsx3(
235
+ CommandPrimitive.List,
236
+ {
237
+ "data-slot": "command-list",
238
+ className: cn(
239
+ "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
240
+ className
241
+ ),
242
+ ...props
243
+ }
244
+ );
245
+ }
246
+ function CommandEmpty({
247
+ ...props
248
+ }) {
249
+ return /* @__PURE__ */ jsx3(
250
+ CommandPrimitive.Empty,
251
+ {
252
+ "data-slot": "command-empty",
253
+ className: "py-6 text-center text-sm",
254
+ ...props
255
+ }
256
+ );
257
+ }
258
+ function CommandGroup({
259
+ className,
260
+ ...props
261
+ }) {
262
+ return /* @__PURE__ */ jsx3(
263
+ CommandPrimitive.Group,
264
+ {
265
+ "data-slot": "command-group",
266
+ className: cn(
267
+ "text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
268
+ className
269
+ ),
270
+ ...props
271
+ }
272
+ );
273
+ }
274
+ function CommandSeparator({
275
+ className,
276
+ ...props
277
+ }) {
278
+ return /* @__PURE__ */ jsx3(
279
+ CommandPrimitive.Separator,
280
+ {
281
+ "data-slot": "command-separator",
282
+ className: cn("bg-border -mx-1 h-px", className),
283
+ ...props
284
+ }
285
+ );
286
+ }
287
+ function CommandItem({
288
+ className,
289
+ ...props
290
+ }) {
291
+ return /* @__PURE__ */ jsx3(
292
+ CommandPrimitive.Item,
293
+ {
294
+ "data-slot": "command-item",
295
+ className: cn(
296
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
297
+ className
298
+ ),
299
+ ...props
300
+ }
301
+ );
302
+ }
303
+
304
+ // src/components/spotlight-search.tsx
305
+ import { IconSearch as IconSearch2 } from "@tabler/icons-react";
306
+ import * as React from "react";
307
+ import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
308
+ function SpotlightSearch({
309
+ groups = [],
310
+ placeholder = "Search...",
311
+ emptyMessage = "No results found.",
312
+ className,
313
+ triggerClassName,
314
+ onSearch
315
+ }) {
316
+ const [open, setOpen] = React.useState(false);
317
+ React.useEffect(() => {
318
+ const down = (e) => {
319
+ if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
320
+ e.preventDefault();
321
+ setOpen((open2) => !open2);
322
+ }
323
+ };
324
+ document.addEventListener("keydown", down);
325
+ return () => document.removeEventListener("keydown", down);
326
+ }, []);
327
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
328
+ /* @__PURE__ */ jsxs3(
329
+ Button,
330
+ {
331
+ variant: "outline",
332
+ className: cn(
333
+ "relative h-9 w-9 p-0 xl:h-9 xl:w-60 xl:justify-start xl:px-3 xl:py-2",
334
+ triggerClassName
335
+ ),
336
+ onClick: () => setOpen(true),
337
+ children: [
338
+ /* @__PURE__ */ jsx4(IconSearch2, { className: "h-4 w-4 xl:mr-2" }),
339
+ /* @__PURE__ */ jsx4("span", { className: "hidden xl:inline-flex", children: "Search..." }),
340
+ /* @__PURE__ */ jsxs3("kbd", { className: "pointer-events-none absolute right-1.5 top-1/2 hidden h-5 -translate-y-1/2 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 xl:flex", children: [
341
+ /* @__PURE__ */ jsx4("span", { className: "text-xs", children: "\u2318" }),
342
+ "K"
343
+ ] })
344
+ ]
345
+ }
346
+ ),
347
+ /* @__PURE__ */ jsxs3(
348
+ CommandDialog,
349
+ {
350
+ open,
351
+ onOpenChange: setOpen,
352
+ title: "Search",
353
+ description: "Search for pages, actions, and more",
354
+ showCloseButton: false,
355
+ className,
356
+ children: [
357
+ /* @__PURE__ */ jsx4(CommandInput, { placeholder, onValueChange: onSearch }),
358
+ /* @__PURE__ */ jsxs3(CommandList, { children: [
359
+ /* @__PURE__ */ jsx4(CommandEmpty, { children: emptyMessage }),
360
+ groups.map((group, index) => /* @__PURE__ */ jsxs3(React.Fragment, { children: [
361
+ index > 0 && /* @__PURE__ */ jsx4(CommandSeparator, {}),
362
+ /* @__PURE__ */ jsx4(CommandGroup, { heading: group.heading, children: group.items.map((item) => /* @__PURE__ */ jsxs3(
363
+ CommandItem,
364
+ {
365
+ onSelect: () => {
366
+ item.onSelect?.();
367
+ setOpen(false);
368
+ },
369
+ children: [
370
+ item.icon,
371
+ /* @__PURE__ */ jsx4("span", { children: item.title }),
372
+ item.shortcut && /* @__PURE__ */ jsx4("kbd", { className: "pointer-events-none ml-auto hidden h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex", children: item.shortcut })
373
+ ]
374
+ },
375
+ item.id
376
+ )) })
377
+ ] }, group.heading))
378
+ ] })
379
+ ]
380
+ }
381
+ )
382
+ ] });
383
+ }
384
+ export {
385
+ SpotlightSearch
386
+ };
387
+ //# sourceMappingURL=spotlight-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/button.tsx","../../src/components/dialog.tsx","../../src/components/command.tsx","../../src/components/spotlight-search.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { cn } from '@mesob/ui/lib/utils';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\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 shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input 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","'use client';\n\nimport { cn } from '@mesob/ui/lib/utils';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <IconX />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","'use client';\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@mesob/ui/components/dialog';\nimport { cn } from '@mesob/ui/lib/utils';\nimport { IconSearch } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport type * as React from 'react';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('overflow-hidden p-0', className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <IconSearch className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { Button } from '@mesob/ui/components/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from '@mesob/ui/components/command';\nimport { cn } from '@mesob/ui/lib/utils';\nimport { IconSearch } from '@tabler/icons-react';\nimport * as React from 'react';\n\ntype SpotlightItem = {\n id: string;\n title: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n};\n\ntype SpotlightGroup = {\n heading: string;\n items: SpotlightItem[];\n};\n\ntype SpotlightSearchProps = {\n groups?: SpotlightGroup[];\n placeholder?: string;\n emptyMessage?: string;\n className?: string;\n triggerClassName?: string;\n onSearch?: (query: string) => void;\n};\n\nexport function SpotlightSearch({\n groups = [],\n placeholder = 'Search...',\n emptyMessage = 'No results found.',\n className,\n triggerClassName,\n onSearch,\n}: SpotlightSearchProps) {\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((open) => !open);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, []);\n\n return (\n <>\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 w-9 p-0 xl:h-9 xl:w-60 xl:justify-start xl:px-3 xl:py-2',\n triggerClassName,\n )}\n onClick={() => setOpen(true)}\n >\n <IconSearch className=\"h-4 w-4 xl:mr-2\" />\n <span className=\"hidden xl:inline-flex\">Search...</span>\n <kbd className=\"pointer-events-none absolute right-1.5 top-1/2 hidden h-5 -translate-y-1/2 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 xl:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n <CommandDialog\n open={open}\n onOpenChange={setOpen}\n title=\"Search\"\n description=\"Search for pages, actions, and more\"\n showCloseButton={false}\n className={className}\n >\n <CommandInput placeholder={placeholder} onValueChange={onSearch} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {groups.map((group, index) => (\n <React.Fragment key={group.heading}>\n {index > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading}>\n {group.items.map((item) => (\n <CommandItem\n key={item.id}\n onSelect={() => {\n item.onSelect?.();\n setOpen(false);\n }}\n >\n {item.icon}\n <span>{item.title}</span>\n {item.shortcut && (\n <kbd className=\"pointer-events-none ml-auto hidden h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n {item.shortcut}\n </kbd>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n </>\n );\n}\n"],"mappings":"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","names":["jsx","jsx","jsx","jsx","jsx","jsxs","IconSearch","Fragment","jsx","jsxs","open"]}
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ import * as React from 'react';
4
+
5
+ declare function Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime.JSX.Element;
6
+
7
+ export { Switch };
@@ -0,0 +1,41 @@
1
+ "use client";
2
+
3
+ // src/lib/utils.ts
4
+ import { clsx } from "clsx";
5
+ import { twMerge } from "tailwind-merge";
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+
10
+ // src/components/switch.tsx
11
+ import * as SwitchPrimitive from "@radix-ui/react-switch";
12
+ import { jsx } from "react/jsx-runtime";
13
+ function Switch({
14
+ className,
15
+ ...props
16
+ }) {
17
+ return /* @__PURE__ */ jsx(
18
+ SwitchPrimitive.Root,
19
+ {
20
+ "data-slot": "switch",
21
+ className: cn(
22
+ "peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
23
+ className
24
+ ),
25
+ ...props,
26
+ children: /* @__PURE__ */ jsx(
27
+ SwitchPrimitive.Thumb,
28
+ {
29
+ "data-slot": "switch-thumb",
30
+ className: cn(
31
+ "bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
32
+ )
33
+ }
34
+ )
35
+ }
36
+ );
37
+ }
38
+ export {
39
+ Switch
40
+ };
41
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/switch.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","'use client';\n\nimport { cn } from '@mesob/ui/lib/utils';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport type * as React from 'react';\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"mappings":";;;AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACFA,YAAY,qBAAqB;AAgB3B;AAbN,SAAS,OAAO;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAAsD;AACpD,SACE;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAiB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,UACF;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Table({ className, ...props }: React.ComponentProps<'table'>): react_jsx_runtime.JSX.Element;
5
+ declare function TableHeader({ className, ...props }: React.ComponentProps<'thead'>): react_jsx_runtime.JSX.Element;
6
+ declare function TableBody({ className, ...props }: React.ComponentProps<'tbody'>): react_jsx_runtime.JSX.Element;
7
+ declare function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>): react_jsx_runtime.JSX.Element;
8
+ declare function TableRow({ className, ...props }: React.ComponentProps<'tr'>): react_jsx_runtime.JSX.Element;
9
+ declare function TableHead({ className, ...props }: React.ComponentProps<'th'>): react_jsx_runtime.JSX.Element;
10
+ declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): react_jsx_runtime.JSX.Element;
11
+ declare function TableCaption({ className, ...props }: React.ComponentProps<'caption'>): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
@@ -0,0 +1,124 @@
1
+ "use client";
2
+
3
+ // src/lib/utils.ts
4
+ import { clsx } from "clsx";
5
+ import { twMerge } from "tailwind-merge";
6
+ function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+
10
+ // src/components/table.tsx
11
+ import { jsx } from "react/jsx-runtime";
12
+ function Table({ className, ...props }) {
13
+ return /* @__PURE__ */ jsx(
14
+ "div",
15
+ {
16
+ "data-slot": "table-container",
17
+ className: "relative w-full overflow-x-auto",
18
+ children: /* @__PURE__ */ jsx(
19
+ "table",
20
+ {
21
+ "data-slot": "table",
22
+ className: cn("w-full caption-bottom text-sm", className),
23
+ ...props
24
+ }
25
+ )
26
+ }
27
+ );
28
+ }
29
+ function TableHeader({ className, ...props }) {
30
+ return /* @__PURE__ */ jsx(
31
+ "thead",
32
+ {
33
+ "data-slot": "table-header",
34
+ className: cn("[&_tr]:border-b", className),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function TableBody({ className, ...props }) {
40
+ return /* @__PURE__ */ jsx(
41
+ "tbody",
42
+ {
43
+ "data-slot": "table-body",
44
+ className: cn("[&_tr:last-child]:border-0", className),
45
+ ...props
46
+ }
47
+ );
48
+ }
49
+ function TableFooter({ className, ...props }) {
50
+ return /* @__PURE__ */ jsx(
51
+ "tfoot",
52
+ {
53
+ "data-slot": "table-footer",
54
+ className: cn(
55
+ "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",
56
+ className
57
+ ),
58
+ ...props
59
+ }
60
+ );
61
+ }
62
+ function TableRow({ className, ...props }) {
63
+ return /* @__PURE__ */ jsx(
64
+ "tr",
65
+ {
66
+ "data-slot": "table-row",
67
+ className: cn(
68
+ "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
69
+ className
70
+ ),
71
+ ...props
72
+ }
73
+ );
74
+ }
75
+ function TableHead({ className, ...props }) {
76
+ return /* @__PURE__ */ jsx(
77
+ "th",
78
+ {
79
+ "data-slot": "table-head",
80
+ className: cn(
81
+ "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
82
+ className
83
+ ),
84
+ ...props
85
+ }
86
+ );
87
+ }
88
+ function TableCell({ className, ...props }) {
89
+ return /* @__PURE__ */ jsx(
90
+ "td",
91
+ {
92
+ "data-slot": "table-cell",
93
+ className: cn(
94
+ "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
95
+ className
96
+ ),
97
+ ...props
98
+ }
99
+ );
100
+ }
101
+ function TableCaption({
102
+ className,
103
+ ...props
104
+ }) {
105
+ return /* @__PURE__ */ jsx(
106
+ "caption",
107
+ {
108
+ "data-slot": "table-caption",
109
+ className: cn("text-muted-foreground mt-4 text-sm", className),
110
+ ...props
111
+ }
112
+ );
113
+ }
114
+ export {
115
+ Table,
116
+ TableBody,
117
+ TableCaption,
118
+ TableCell,
119
+ TableFooter,
120
+ TableHead,
121
+ TableHeader,
122
+ TableRow
123
+ };
124
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/components/table.tsx"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","'use client';\n\nimport { cn } from '@mesob/ui/lib/utils';\nimport type * as React from 'react';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'bg-muted/50 border-t font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"mappings":";;;AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACMM;AANN,SAAS,MAAM,EAAE,WAAW,GAAG,MAAM,GAAkC;AACrE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAEV;AAAA,QAAC;AAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,UACvD,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mBAAmB,SAAS;AAAA,MACzC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAA+B;AACrE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,MAC5D,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
3
+ import * as React from 'react';
4
+
5
+ declare function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime.JSX.Element;
7
+ declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
8
+ declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime.JSX.Element;
9
+
10
+ export { Tabs, TabsContent, TabsList, TabsTrigger };