@hanzo/ui 5.0.2 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/dist/accordion.js +1 -0
  2. package/dist/accordion.mjs +1 -0
  3. package/dist/alert-dialog.js +1 -0
  4. package/dist/alert-dialog.mjs +1 -0
  5. package/dist/alert.js +1 -0
  6. package/dist/alert.mjs +1 -0
  7. package/dist/avatar.js +1 -0
  8. package/dist/avatar.mjs +1 -0
  9. package/dist/badge.js +1 -0
  10. package/dist/badge.mjs +1 -0
  11. package/dist/breadcrumb.js +1 -0
  12. package/dist/breadcrumb.mjs +1 -0
  13. package/dist/calendar.js +1 -0
  14. package/dist/calendar.mjs +1 -0
  15. package/dist/carousel.js +1 -0
  16. package/dist/carousel.mjs +1 -0
  17. package/dist/checkbox.js +1 -0
  18. package/dist/checkbox.mjs +1 -0
  19. package/dist/chunk-3H5S2OQ3.mjs +1 -0
  20. package/dist/chunk-5GRJ7UQX.js +1 -0
  21. package/dist/chunk-63HNMH7C.js +1 -0
  22. package/dist/chunk-72TOQ4DM.mjs +1 -0
  23. package/dist/chunk-7AEFTV5R.mjs +1 -0
  24. package/dist/chunk-7M4AVV2R.js +1 -0
  25. package/dist/chunk-DKPVJSBC.js +1 -0
  26. package/dist/chunk-EI7MMDWY.js +1 -0
  27. package/dist/chunk-GANGDIZG.mjs +1 -0
  28. package/dist/chunk-GRGT2Z4K.js +1 -0
  29. package/dist/chunk-JCUUC6NY.mjs +1 -0
  30. package/dist/chunk-JUQMWLIN.js +1 -0
  31. package/dist/chunk-PRVEIITE.js +1 -0
  32. package/dist/chunk-SH52AKNZ.js +1 -0
  33. package/dist/chunk-TU67EJEW.mjs +1 -0
  34. package/dist/chunk-WN5KN73U.mjs +1 -0
  35. package/dist/chunk-YSXGDEY5.mjs +1 -0
  36. package/dist/chunk-Z76OOVUE.mjs +1 -0
  37. package/dist/collapsible.js +1 -0
  38. package/dist/collapsible.mjs +1 -0
  39. package/dist/command.js +1 -0
  40. package/dist/command.mjs +1 -0
  41. package/dist/context-menu.js +1 -0
  42. package/dist/context-menu.mjs +1 -0
  43. package/dist/dialog.js +1 -0
  44. package/dist/dialog.mjs +1 -0
  45. package/dist/drawer.js +1 -0
  46. package/dist/drawer.mjs +1 -0
  47. package/dist/dropdown-menu.js +1 -0
  48. package/dist/dropdown-menu.mjs +1 -0
  49. package/dist/form.js +1 -0
  50. package/dist/form.mjs +1 -0
  51. package/dist/hover-card.js +1 -0
  52. package/dist/hover-card.mjs +1 -0
  53. package/dist/index.js +1 -9079
  54. package/dist/index.mjs +1 -8700
  55. package/dist/input-otp.js +1 -0
  56. package/dist/input-otp.mjs +1 -0
  57. package/dist/lib/utils.js +1 -0
  58. package/dist/lib/utils.mjs +1 -0
  59. package/dist/navigation-menu.js +1 -0
  60. package/dist/navigation-menu.mjs +1 -0
  61. package/dist/popover.js +1 -0
  62. package/dist/popover.mjs +1 -0
  63. package/dist/progress.js +1 -0
  64. package/dist/progress.mjs +1 -0
  65. package/dist/radio-group.js +1 -0
  66. package/dist/radio-group.mjs +1 -0
  67. package/dist/resizable.js +1 -0
  68. package/dist/resizable.mjs +1 -0
  69. package/dist/scroll-area.js +1 -0
  70. package/dist/scroll-area.mjs +1 -0
  71. package/dist/select.js +1 -0
  72. package/dist/select.mjs +1 -0
  73. package/dist/separator.js +1 -0
  74. package/dist/separator.mjs +1 -0
  75. package/dist/sheet.js +1 -0
  76. package/dist/sheet.mjs +1 -0
  77. package/dist/skeleton.js +1 -0
  78. package/dist/skeleton.mjs +1 -0
  79. package/dist/slider.js +1 -0
  80. package/dist/slider.mjs +1 -0
  81. package/dist/sonner.js +1 -0
  82. package/dist/sonner.mjs +1 -0
  83. package/dist/src/utils.js +1 -0
  84. package/dist/src/utils.mjs +1 -0
  85. package/dist/switch.js +1 -0
  86. package/dist/switch.mjs +1 -0
  87. package/dist/table.js +1 -0
  88. package/dist/table.mjs +1 -0
  89. package/dist/tabs.js +1 -0
  90. package/dist/tabs.mjs +1 -0
  91. package/dist/tailwind/index.js +1 -0
  92. package/dist/tailwind/index.mjs +1 -0
  93. package/dist/textarea.js +1 -0
  94. package/dist/textarea.mjs +1 -0
  95. package/dist/toggle-group.js +1 -0
  96. package/dist/toggle-group.mjs +1 -0
  97. package/dist/toggle.js +1 -0
  98. package/dist/toggle.mjs +1 -0
  99. package/dist/tooltip.js +1 -0
  100. package/dist/tooltip.mjs +1 -0
  101. package/dist/types/index.js +1 -0
  102. package/dist/types/index.mjs +1 -0
  103. package/package.json +110 -81
  104. package/assets/ai-icons.tsx +0 -207
  105. package/assets/crypto.tsx +0 -33
  106. package/assets/file-type-icon.tsx +0 -66
  107. package/assets/file.tsx +0 -45
  108. package/assets/general.tsx +0 -2318
  109. package/assets/hanzo-logo.svg +0 -9
  110. package/assets/hanzo-logo.tsx +0 -17
  111. package/assets/index.ts +0 -122
  112. package/assets/index.tsx +0 -4
  113. package/assets/llm-provider.tsx +0 -1094
  114. package/blocks/auth/index.ts +0 -6
  115. package/blocks/auth/login-2fa.tsx +0 -165
  116. package/blocks/auth/login-basic.tsx +0 -94
  117. package/blocks/auth/login-social.tsx +0 -148
  118. package/blocks/auth/magic-link.tsx +0 -129
  119. package/blocks/auth/password-reset.tsx +0 -97
  120. package/blocks/auth/signup.tsx +0 -157
  121. package/blocks/components/accordian-block.tsx +0 -48
  122. package/blocks/components/block-component-props.ts +0 -11
  123. package/blocks/components/bullet-cards-block.tsx +0 -46
  124. package/blocks/components/card-block/index.tsx +0 -171
  125. package/blocks/components/card-block/link-out-button.tsx +0 -20
  126. package/blocks/components/card-block/util.ts +0 -28
  127. package/blocks/components/carte-blanche-block/index.tsx +0 -127
  128. package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
  129. package/blocks/components/content.tsx +0 -70
  130. package/blocks/components/cta-block.tsx +0 -115
  131. package/blocks/components/enh-heading-block.tsx +0 -204
  132. package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
  133. package/blocks/components/grid-block/index.tsx +0 -83
  134. package/blocks/components/grid-block/mutator-registry.ts +0 -10
  135. package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
  136. package/blocks/components/group-block.tsx +0 -83
  137. package/blocks/components/heading-block.tsx +0 -88
  138. package/blocks/components/image-block.tsx +0 -111
  139. package/blocks/components/index.ts +0 -30
  140. package/blocks/components/screenful-block/content.tsx +0 -123
  141. package/blocks/components/screenful-block/index.tsx +0 -107
  142. package/blocks/components/screenful-block/poster-background.tsx +0 -34
  143. package/blocks/components/screenful-block/video-background.tsx +0 -45
  144. package/blocks/components/space-block.tsx +0 -66
  145. package/blocks/components/video-block.tsx +0 -138
  146. package/blocks/data-display/activity-feed.tsx +0 -242
  147. package/blocks/data-display/data-table.tsx +0 -235
  148. package/blocks/data-display/stats-grid.tsx +0 -194
  149. package/blocks/def/accordian-block.ts +0 -14
  150. package/blocks/def/block.ts +0 -7
  151. package/blocks/def/bullet-cards-block.ts +0 -22
  152. package/blocks/def/card-block.ts +0 -22
  153. package/blocks/def/carte-blanche-block.ts +0 -21
  154. package/blocks/def/cta-block.ts +0 -19
  155. package/blocks/def/element-block.ts +0 -11
  156. package/blocks/def/enh-heading-block.ts +0 -44
  157. package/blocks/def/grid-block.ts +0 -16
  158. package/blocks/def/group-block.ts +0 -11
  159. package/blocks/def/heading-block.ts +0 -15
  160. package/blocks/def/image-block.ts +0 -31
  161. package/blocks/def/index.ts +0 -35
  162. package/blocks/def/screenful-block.ts +0 -54
  163. package/blocks/def/space-block.ts +0 -64
  164. package/blocks/def/video-block.ts +0 -9
  165. package/blocks/ecommerce/checkout.tsx +0 -242
  166. package/blocks/ecommerce/index.ts +0 -7
  167. package/blocks/ecommerce/product-detail.tsx +0 -257
  168. package/blocks/ecommerce/product-grid.tsx +0 -148
  169. package/blocks/ecommerce/shopping-cart.tsx +0 -181
  170. package/blocks/index.ts +0 -2
  171. package/blocks/marketing/cta-section.tsx +0 -207
  172. package/blocks/marketing/faq.tsx +0 -159
  173. package/blocks/marketing/features-grid.tsx +0 -156
  174. package/blocks/marketing/hero-section.tsx +0 -192
  175. package/blocks/marketing/index.ts +0 -6
  176. package/blocks/marketing/pricing-table.tsx +0 -121
  177. package/blocks/marketing/testimonials.tsx +0 -196
  178. package/components/index.ts +0 -9
  179. package/dist/index.js.map +0 -1
  180. package/dist/index.mjs.map +0 -1
  181. package/dist/tailwind.js +0 -2025
  182. package/dist/tailwind.js.map +0 -1
  183. package/dist/tailwind.mjs +0 -2013
  184. package/dist/tailwind.mjs.map +0 -1
  185. package/dist/types.js +0 -59
  186. package/dist/types.js.map +0 -1
  187. package/dist/types.mjs +0 -53
  188. package/dist/types.mjs.map +0 -1
  189. package/dist/utils.js +0 -30
  190. package/dist/utils.js.map +0 -1
  191. package/dist/utils.mjs +0 -26
  192. package/dist/utils.mjs.map +0 -1
  193. package/frameworks/core/index.ts +0 -6
  194. package/frameworks/core/utils/index.ts +0 -64
  195. package/frameworks/react/components/button.tsx +0 -26
  196. package/frameworks/react/components/index.ts +0 -5
  197. package/frameworks/react/hooks/index.ts +0 -5
  198. package/frameworks/react/index.ts +0 -9
  199. package/frameworks/react/package.json +0 -8
  200. package/frameworks/react/utils/index.ts +0 -2
  201. package/frameworks/react-native/index.ts +0 -9
  202. package/frameworks/react-native/package.json +0 -8
  203. package/frameworks/registry.json +0 -371
  204. package/frameworks/setup.sh +0 -69
  205. package/frameworks/svelte/index.ts +0 -9
  206. package/frameworks/svelte/package.json +0 -8
  207. package/frameworks/tracker.json +0 -1854
  208. package/frameworks/vue/index.ts +0 -9
  209. package/frameworks/vue/package.json +0 -8
  210. package/helpers/file.ts +0 -33
  211. package/helpers/memoization.ts +0 -40
  212. package/primitives/accordion.tsx +0 -74
  213. package/primitives/action-button.tsx +0 -42
  214. package/primitives/alert-dialog.tsx +0 -185
  215. package/primitives/alert.tsx +0 -74
  216. package/primitives/apply-typography.tsx +0 -55
  217. package/primitives/aspect-ratio.tsx +0 -5
  218. package/primitives/avatar.tsx +0 -57
  219. package/primitives/background-beams.tsx +0 -142
  220. package/primitives/badge.tsx +0 -45
  221. package/primitives/breadcrumb.tsx +0 -130
  222. package/primitives/breakpoint-indicator.tsx +0 -19
  223. package/primitives/button.tsx +0 -72
  224. package/primitives/calendar.tsx +0 -72
  225. package/primitives/card.tsx +0 -97
  226. package/primitives/carousel.tsx +0 -238
  227. package/primitives/chat/chat-input-area.tsx +0 -88
  228. package/primitives/chat/chat-input.tsx +0 -71
  229. package/primitives/chat/files-preview.tsx +0 -331
  230. package/primitives/chat/index.ts +0 -6
  231. package/primitives/chat/json-form.tsx +0 -8
  232. package/primitives/chat/message-list.tsx +0 -308
  233. package/primitives/chat/message.tsx +0 -569
  234. package/primitives/chat/sqlite-preview.tsx +0 -215
  235. package/primitives/checkbox.tsx +0 -32
  236. package/primitives/collapsible.tsx +0 -9
  237. package/primitives/combobox.tsx +0 -239
  238. package/primitives/command.tsx +0 -151
  239. package/primitives/context-menu.tsx +0 -206
  240. package/primitives/copy-to-clipboard-icon.tsx +0 -60
  241. package/primitives/dialog-video-controller.tsx +0 -38
  242. package/primitives/dialog.tsx +0 -128
  243. package/primitives/dot-pattern.tsx +0 -57
  244. package/primitives/dots-loader.tsx +0 -13
  245. package/primitives/drawer.tsx +0 -113
  246. package/primitives/dropdown-menu.tsx +0 -199
  247. package/primitives/error-message.tsx +0 -19
  248. package/primitives/file-uploader.tsx +0 -203
  249. package/primitives/form.tsx +0 -185
  250. package/primitives/hover-card.tsx +0 -28
  251. package/primitives/icons/github.tsx +0 -14
  252. package/primitives/icons/index.ts +0 -18
  253. package/primitives/icons/youtube-logo.tsx +0 -59
  254. package/primitives/index-client.ts +0 -4
  255. package/primitives/index-common.ts +0 -304
  256. package/primitives/index-next.ts +0 -4
  257. package/primitives/input-otp.tsx +0 -65
  258. package/primitives/input.tsx +0 -128
  259. package/primitives/label.tsx +0 -21
  260. package/primitives/list-adaptor.ts +0 -12
  261. package/primitives/list-box.tsx +0 -74
  262. package/primitives/loading-spinner.tsx +0 -33
  263. package/primitives/markdown-preview.tsx +0 -612
  264. package/primitives/mermaid.tsx +0 -196
  265. package/primitives/navigation-menu.tsx +0 -147
  266. package/primitives/next/image.tsx +0 -91
  267. package/primitives/next/index.ts +0 -7
  268. package/primitives/next/inline-icon.tsx +0 -36
  269. package/primitives/next/link-element.tsx +0 -109
  270. package/primitives/next/mdx-link.tsx +0 -22
  271. package/primitives/next/media-stack.tsx +0 -52
  272. package/primitives/next/nav-items.tsx +0 -45
  273. package/primitives/next/youtube-embed.tsx +0 -83
  274. package/primitives/pagination.tsx +0 -117
  275. package/primitives/popover.tsx +0 -34
  276. package/primitives/pretty-json-print.tsx +0 -28
  277. package/primitives/progress.tsx +0 -27
  278. package/primitives/prompt-textarea.tsx +0 -72
  279. package/primitives/qr-code.tsx +0 -112
  280. package/primitives/radio-group.tsx +0 -42
  281. package/primitives/resizable.tsx +0 -47
  282. package/primitives/scroll-area.tsx +0 -57
  283. package/primitives/search-input.tsx +0 -66
  284. package/primitives/select.tsx +0 -122
  285. package/primitives/separator.tsx +0 -26
  286. package/primitives/sheet.tsx +0 -139
  287. package/primitives/skeleton.tsx +0 -18
  288. package/primitives/slider.tsx +0 -63
  289. package/primitives/sonner.tsx +0 -35
  290. package/primitives/step-indicator.tsx +0 -69
  291. package/primitives/stepper.tsx +0 -272
  292. package/primitives/switch.tsx +0 -27
  293. package/primitives/table.tsx +0 -105
  294. package/primitives/tabs.tsx +0 -50
  295. package/primitives/text-area.tsx +0 -26
  296. package/primitives/text-link.tsx +0 -27
  297. package/primitives/textarea.tsx +0 -64
  298. package/primitives/textfield.tsx +0 -78
  299. package/primitives/toast.tsx +0 -30
  300. package/primitives/toggle-group.tsx +0 -63
  301. package/primitives/toggle.tsx +0 -44
  302. package/primitives/tooltip.tsx +0 -47
  303. package/primitives/video-player.tsx +0 -23
  304. package/src/button.ts +0 -1
  305. package/src/hooks/index.ts +0 -7
  306. package/src/hooks/use-click-away.ts +0 -31
  307. package/src/hooks/use-combined-refs.ts +0 -22
  308. package/src/hooks/use-copy-clipboard.ts +0 -30
  309. package/src/hooks/use-debounce.ts +0 -17
  310. package/src/hooks/use-fill-ids.ts +0 -25
  311. package/src/hooks/use-map.ts +0 -26
  312. package/src/hooks/use-measure.ts +0 -42
  313. package/src/hooks/use-reverse-video-playback.ts +0 -43
  314. package/src/hooks/use-scroll-restoration.ts +0 -50
  315. package/src/index-lean.ts +0 -87
  316. package/src/index.ts +0 -54
  317. package/src/mcp/README.md +0 -141
  318. package/src/mcp/enhanced-server.ts +0 -1208
  319. package/src/mcp/index.ts +0 -518
  320. package/src/mcp/package.json +0 -10
  321. package/src/registry/api.ts +0 -164
  322. package/src/registry/index.ts +0 -60
  323. package/src/registry/package.json +0 -10
  324. package/src/utils.ts +0 -19
  325. package/tailwind/colors.tailwind.js +0 -53
  326. package/tailwind/fontFamily.tailwind.ts +0 -7
  327. package/tailwind/fontSize.tailwind.ts +0 -13
  328. package/tailwind/index.ts +0 -7
  329. package/tailwind/safelist.tailwind.js +0 -26
  330. package/tailwind/screens.tailwind.js +0 -8
  331. package/tailwind/spacing.tailwind.js +0 -65
  332. package/tailwind/tailwind.config.hanzo-preset.d.ts +0 -5
  333. package/tailwind/tailwind.config.hanzo-preset.js +0 -915
  334. package/tailwind/tw-font-desc.ts +0 -15
  335. package/tailwind/typo-plugin/get-plugin-styles.js +0 -679
  336. package/tailwind/typo-plugin/index.d.ts +0 -9
  337. package/tailwind/typo-plugin/index.js +0 -141
  338. package/tailwind/typo-plugin/utils.js +0 -60
  339. package/tailwind/typography-test.mdx +0 -35
  340. package/tailwind/z-index.tailwind.js +0 -71
  341. package/types/animation-def.ts +0 -3
  342. package/types/breakpoints.ts +0 -11
  343. package/types/bullet-item.ts +0 -10
  344. package/types/button-def.ts +0 -39
  345. package/types/dimensions.ts +0 -8
  346. package/types/grid-def.ts +0 -56
  347. package/types/image-def.ts +0 -32
  348. package/types/index.ts +0 -30
  349. package/types/link-def.ts +0 -56
  350. package/types/media-stack-def.ts +0 -31
  351. package/types/t-shirt-size.ts +0 -5
  352. package/types/tshirt-dimensions.ts +0 -20
  353. package/types/video-def.ts +0 -25
  354. package/util/blob.ts +0 -33
  355. package/util/copy-to-clipboard.ts +0 -17
  356. package/util/create-shadow-root.ts +0 -22
  357. package/util/date.ts +0 -84
  358. package/util/debounce.ts +0 -11
  359. package/util/file.ts +0 -15
  360. package/util/format-and-abbreviate-as-currency.ts +0 -125
  361. package/util/format-text.ts +0 -34
  362. package/util/format-to-max-char.ts +0 -68
  363. package/util/index-client.ts +0 -3
  364. package/util/index.ts +0 -112
  365. package/util/number-abbreviate.ts +0 -49
  366. package/util/specifier.ts +0 -43
  367. package/util/spread-to-transform.ts +0 -25
  368. package/util/step-animation.ts +0 -90
  369. package/util/timing.ts +0 -3
  370. package/util/toasts.tsx +0 -17
  371. package/util/two-way-map.ts +0 -19
@@ -1,206 +0,0 @@
1
- import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
2
- import { Check, ChevronRight, Circle } from 'lucide-react';
3
- import React from 'react';
4
-
5
- import { cn } from '../src/utils';
6
-
7
- const ContextMenu = ContextMenuPrimitive.Root;
8
-
9
- const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
10
-
11
- const ContextMenuGroup = ContextMenuPrimitive.Group;
12
-
13
- const ContextMenuPortal = ContextMenuPrimitive.Portal;
14
-
15
- const ContextMenuSub = ContextMenuPrimitive.Sub;
16
-
17
- const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
18
-
19
- type ContextMenuSubTriggerProps = React.ComponentPropsWithoutRef<
20
- typeof ContextMenuPrimitive.SubTrigger
21
- > & {
22
- inset?: boolean;
23
- ref?: React.RefObject<
24
- React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>
25
- >;
26
- };
27
-
28
- const ContextMenuSubTrigger = ({
29
- className,
30
- inset,
31
- children,
32
- ref,
33
- ...props
34
- }: ContextMenuSubTriggerProps) => (
35
- <ContextMenuPrimitive.SubTrigger
36
- className={cn(
37
- 'focus:bg-accent data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none focus:text-white',
38
- inset && 'pl-8',
39
- className,
40
- )}
41
- ref={ref}
42
- {...props}
43
- >
44
- {children}
45
- <ChevronRight className="ml-auto h-4 w-4" />
46
- </ContextMenuPrimitive.SubTrigger>
47
- );
48
- ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
49
-
50
- const ContextMenuSubContent = ({
51
- className,
52
- ...props
53
- }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) => (
54
- <ContextMenuPrimitive.SubContent
55
- className={cn(
56
- '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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border bg-gray-300 p-1 text-white shadow-md',
57
- className,
58
- )}
59
- {...props}
60
- />
61
- );
62
- ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
63
-
64
- const ContextMenuContent = ({
65
- className,
66
- ...props
67
- }: React.ComponentProps<typeof ContextMenuPrimitive.Content>) => (
68
- <ContextMenuPrimitive.Portal>
69
- <ContextMenuPrimitive.Content
70
- className={cn(
71
- 'animate-in fade-in-80 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-600 bg-gray-300 p-1 text-gray-50 shadow-md',
72
- className,
73
- )}
74
- {...props}
75
- />
76
- </ContextMenuPrimitive.Portal>
77
- );
78
- ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
79
-
80
- const ContextMenuItem = ({
81
- className,
82
- inset,
83
- ...props
84
- }: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {
85
- inset?: boolean;
86
- }) => (
87
- <ContextMenuPrimitive.Item
88
- className={cn(
89
- 'relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none focus:bg-gray-200 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
90
- inset && 'pl-8',
91
- className,
92
- )}
93
- {...props}
94
- />
95
- );
96
- ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
97
-
98
- const ContextMenuCheckboxItem = ({
99
- className,
100
- children,
101
- checked,
102
- ...props
103
- }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) => (
104
- <ContextMenuPrimitive.CheckboxItem
105
- checked={checked}
106
- className={cn(
107
- 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
108
- className,
109
- )}
110
- {...props}
111
- >
112
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
113
- <ContextMenuPrimitive.ItemIndicator>
114
- <Check className="h-4 w-4" />
115
- </ContextMenuPrimitive.ItemIndicator>
116
- </span>
117
- {children}
118
- </ContextMenuPrimitive.CheckboxItem>
119
- );
120
- ContextMenuCheckboxItem.displayName =
121
- ContextMenuPrimitive.CheckboxItem.displayName;
122
-
123
- const ContextMenuRadioItem = ({
124
- className,
125
- children,
126
- ...props
127
- }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) => (
128
- <ContextMenuPrimitive.RadioItem
129
- className={cn(
130
- 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
131
- className,
132
- )}
133
- {...props}
134
- >
135
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
136
- <ContextMenuPrimitive.ItemIndicator>
137
- <Circle className="h-2 w-2 fill-current" />
138
- </ContextMenuPrimitive.ItemIndicator>
139
- </span>
140
- {children}
141
- </ContextMenuPrimitive.RadioItem>
142
- );
143
- ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
144
-
145
- const ContextMenuLabel = ({
146
- className,
147
- inset,
148
- ...props
149
- }: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {
150
- inset?: boolean;
151
- }) => (
152
- <ContextMenuPrimitive.Label
153
- className={cn(
154
- 'text-text-default px-2 py-1.5 text-sm font-semibold',
155
- inset && 'pl-8',
156
- className,
157
- )}
158
- {...props}
159
- />
160
- );
161
- ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
162
-
163
- const ContextMenuSeparator = ({
164
- className,
165
- ...props
166
- }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) => (
167
- <ContextMenuPrimitive.Separator
168
- className={cn('bg-border -mx-1 my-1 h-px', className)}
169
- {...props}
170
- />
171
- );
172
- ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
173
-
174
- const ContextMenuShortcut = ({
175
- className,
176
- ...props
177
- }: React.HTMLAttributes<HTMLSpanElement>) => {
178
- return (
179
- <span
180
- className={cn(
181
- 'text-text-secondary ml-auto text-xs tracking-widest',
182
- className,
183
- )}
184
- {...props}
185
- />
186
- );
187
- };
188
- ContextMenuShortcut.displayName = 'ContextMenuShortcut';
189
-
190
- export {
191
- ContextMenu,
192
- ContextMenuTrigger,
193
- ContextMenuContent,
194
- ContextMenuItem,
195
- ContextMenuCheckboxItem,
196
- ContextMenuRadioItem,
197
- ContextMenuLabel,
198
- ContextMenuSeparator,
199
- ContextMenuShortcut,
200
- ContextMenuGroup,
201
- ContextMenuPortal,
202
- ContextMenuSub,
203
- ContextMenuSubContent,
204
- ContextMenuSubTrigger,
205
- ContextMenuRadioGroup,
206
- };
@@ -1,60 +0,0 @@
1
- import { CheckCircle2, CopyIcon } from 'lucide-react';
2
- import React, { cloneElement, type ReactElement } from 'react';
3
-
4
- import { useCopyClipboard } from '../src/hooks';
5
- import { cn } from '../src/utils';
6
- import { Button } from './button';
7
-
8
- type CopyToClipboardIconProps = {
9
- string?: string;
10
- children?: ReactElement<{
11
- className?: string;
12
- onClick?: () => void;
13
- }>;
14
- className?: string;
15
- onCopyClipboard?: () => void;
16
- asChild?: boolean;
17
- };
18
-
19
- const CopyToClipboardIcon = ({
20
- string,
21
- children,
22
- className,
23
- onCopyClipboard,
24
- asChild = false,
25
- }: CopyToClipboardIconProps) => {
26
- const { isCopied, onCopy } = useCopyClipboard({
27
- string,
28
- onCopyClipboard,
29
- });
30
-
31
- const ClipboardIcon = isCopied ? CheckCircle2 : CopyIcon;
32
-
33
- if (asChild && children) {
34
- return cloneElement(children, {
35
- onClick: onCopy,
36
- className: cn(children.props?.className, className),
37
- });
38
- }
39
-
40
- return (
41
- <Button
42
- className={cn(
43
- 'text-text-secondary hover:bg-bg-tertiary bg-bg-tertiary flex h-8 w-8 gap-2 rounded-lg text-xs font-normal transition-colors hover:text-white',
44
- className,
45
- )}
46
- disabled={!string}
47
- onClick={onCopy}
48
- size={'icon'}
49
- type="button"
50
- variant="tertiary"
51
- >
52
- <ClipboardIcon
53
- className={cn('h-3.5 w-3.5', isCopied && 'text-green-500')}
54
- />
55
- {children}
56
- </Button>
57
- );
58
- };
59
-
60
- export { CopyToClipboardIcon, useCopyClipboard };
@@ -1,38 +0,0 @@
1
- 'use client'
2
-
3
- import React, { PropsWithChildren, useState } from 'react'
4
-
5
- const DialogVideoController: React.FC<PropsWithChildren> = ({
6
- children,
7
- }) => {
8
-
9
- const [open, setOpen] = useState<boolean>(false)
10
-
11
- const onOpenChange = (b: boolean) => {
12
- setOpen(b)
13
- const videos = document.getElementsByTagName('video')
14
- const videoArray = Array.from(videos)
15
- videoArray.forEach((v) => {
16
- if (b) {
17
- v.pause()
18
- }
19
- else {
20
- v.play()
21
- }
22
- })
23
- }
24
-
25
- // https://stackoverflow.com/a/49052730/11645689
26
- const updatedChildren = React.Children.map(
27
- children,
28
- (child) => (React.cloneElement(
29
- child as any, { open, onOpenChange }
30
- ))
31
- )
32
-
33
- return (<>
34
- {updatedChildren}
35
- </>)
36
- }
37
-
38
- export default DialogVideoController
@@ -1,128 +0,0 @@
1
- 'use client';
2
-
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
4
- import { X } from 'lucide-react';
5
- import React from 'react';
6
-
7
- import { cn } from '../src/utils';
8
-
9
- const Dialog = DialogPrimitive.Root;
10
-
11
- const DialogTrigger = DialogPrimitive.Trigger;
12
-
13
- const DialogPortal = DialogPrimitive.Portal;
14
-
15
- const DialogClose = DialogPrimitive.Close;
16
-
17
- const DialogOverlay = ({
18
- className,
19
- ...props
20
- }: React.ComponentProps<typeof DialogPrimitive.Overlay>) => (
21
- <DialogPrimitive.Overlay
22
- className={cn(
23
- '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',
24
- 'bg-bg-dark/90',
25
- className,
26
- )}
27
- {...props}
28
- />
29
- );
30
- DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
31
-
32
- const DialogContent = ({
33
- className,
34
- children,
35
- showCloseButton = false,
36
- ...props
37
- }: React.ComponentProps<typeof DialogPrimitive.Content> & {
38
- showCloseButton?: boolean;
39
- }) => (
40
- <DialogPortal>
41
- <DialogOverlay />
42
- <DialogPrimitive.Content
43
- className={cn(
44
- 'bg-bg-default 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 border-divider fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:rounded-lg md:w-full',
45
- className,
46
- )}
47
- {...props}
48
- >
49
- {children}
50
- <DialogPrimitive.Close
51
- className={cn(
52
- 'ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-text-secondary 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',
53
- !showCloseButton && 'hidden',
54
- )}
55
- >
56
- <X className="h-4 w-4" />
57
- <span className="sr-only">Close</span>
58
- </DialogPrimitive.Close>
59
- </DialogPrimitive.Content>
60
- </DialogPortal>
61
- );
62
- DialogContent.displayName = DialogPrimitive.Content.displayName;
63
-
64
- const DialogHeader = ({
65
- className,
66
- ...props
67
- }: React.HTMLAttributes<HTMLDivElement>) => (
68
- <div
69
- className={cn(
70
- 'flex flex-col space-y-1.5 text-center sm:text-left',
71
- className,
72
- )}
73
- {...props}
74
- />
75
- );
76
- DialogHeader.displayName = 'DialogHeader';
77
-
78
- const DialogFooter = ({
79
- className,
80
- ...props
81
- }: React.HTMLAttributes<HTMLDivElement>) => (
82
- <div
83
- className={cn(
84
- 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',
85
- className,
86
- )}
87
- {...props}
88
- />
89
- );
90
- DialogFooter.displayName = 'DialogFooter';
91
-
92
- const DialogTitle = ({
93
- className,
94
- ...props
95
- }: React.ComponentProps<typeof DialogPrimitive.Title>) => (
96
- <DialogPrimitive.Title
97
- className={cn(
98
- 'text-lg leading-none font-semibold tracking-tight',
99
- className,
100
- )}
101
- {...props}
102
- />
103
- );
104
- DialogTitle.displayName = DialogPrimitive.Title.displayName;
105
-
106
- const DialogDescription = ({
107
- className,
108
- ...props
109
- }: React.ComponentProps<typeof DialogPrimitive.Description>) => (
110
- <DialogPrimitive.Description
111
- className={cn('text-text-secondary text-sm', className)}
112
- {...props}
113
- />
114
- );
115
- DialogDescription.displayName = DialogPrimitive.Description.displayName;
116
-
117
- export {
118
- Dialog,
119
- DialogPortal,
120
- DialogOverlay,
121
- DialogClose,
122
- DialogTrigger,
123
- DialogContent,
124
- DialogHeader,
125
- DialogFooter,
126
- DialogTitle,
127
- DialogDescription,
128
- };
@@ -1,57 +0,0 @@
1
- import { useId } from 'react';
2
-
3
- import { cn } from '../src/utils';
4
-
5
- interface DotPatternProps {
6
- width?: any;
7
- height?: any;
8
- x?: any;
9
- y?: any;
10
- cx?: any;
11
- cy?: any;
12
- cr?: any;
13
- className?: string;
14
- [key: string]: any;
15
- }
16
-
17
- function DotPattern({
18
- width = 16,
19
- height = 16,
20
- x = 0,
21
- y = 0,
22
- cx = 1,
23
- cy = 1,
24
- cr = 1,
25
- className,
26
- ...props
27
- }: DotPatternProps) {
28
- const id = useId();
29
-
30
- return (
31
- <svg
32
- aria-hidden="true"
33
- className={cn(
34
- 'pointer-events-none absolute inset-0 h-full w-full fill-neutral-400/80',
35
- className,
36
- )}
37
- {...props}
38
- >
39
- <defs>
40
- <pattern
41
- height={height}
42
- id={id}
43
- patternContentUnits="userSpaceOnUse"
44
- patternUnits="userSpaceOnUse"
45
- width={width}
46
- x={x}
47
- y={y}
48
- >
49
- <circle cx={cx} cy={cy} id="pattern-circle" r={cr} />
50
- </pattern>
51
- </defs>
52
- <rect fill={`url(#${id})`} height="100%" strokeWidth={0} width="100%" />
53
- </svg>
54
- );
55
- }
56
-
57
- export { DotPattern };
@@ -1,13 +0,0 @@
1
- const DotsLoader = ({ className }: { className?: string }) => {
2
- return (
3
- <div className={className}>
4
- <div className="flex h-4 space-x-1.5">
5
- <div className="h-2 w-2 animate-[loaderDots_0.6s_0s_infinite_alternate] rounded-full bg-slate-100" />
6
- <div className="h-2 w-2 animate-[loaderDots_0.6s_0.3s_infinite_alternate] rounded-full bg-slate-100" />
7
- <div className="h-2 w-2 animate-[loaderDots_0.6s_0.6s_infinite_alternate] rounded-full bg-slate-100" />
8
- </div>
9
- </div>
10
- );
11
- };
12
-
13
- export { DotsLoader };
@@ -1,113 +0,0 @@
1
- import React from 'react';
2
- import { Drawer as DrawerPrimitive } from 'vaul';
3
-
4
- import { cn } from '../src/utils';
5
-
6
- const Drawer = ({
7
- shouldScaleBackground = false,
8
- ...props
9
- }: React.ComponentProps<typeof DrawerPrimitive.Root>) => (
10
- <DrawerPrimitive.Root
11
- shouldScaleBackground={shouldScaleBackground}
12
- {...props}
13
- />
14
- );
15
- Drawer.displayName = 'Drawer';
16
-
17
- const DrawerTrigger = DrawerPrimitive.Trigger;
18
-
19
- const DrawerPortal = DrawerPrimitive.Portal;
20
-
21
- const DrawerClose = DrawerPrimitive.Close;
22
-
23
- const DrawerHandle = DrawerPrimitive.Handle;
24
-
25
- const DrawerOverlay = ({
26
- className,
27
- ...props
28
- }: React.ComponentProps<typeof DrawerPrimitive.Overlay>) => (
29
- <DrawerPrimitive.Overlay
30
- className={cn('fixed inset-0 z-50 bg-black/70', className)}
31
- {...props}
32
- />
33
- );
34
- DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
35
-
36
- const DrawerContent = ({
37
- className,
38
- children,
39
- ...props
40
- }: React.ComponentProps<typeof DrawerPrimitive.Content>) => (
41
- <DrawerPortal>
42
- <DrawerOverlay />
43
- <DrawerPrimitive.Content
44
- className={cn(
45
- 'fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-gray-500 px-6 pb-6 focus:outline-hidden',
46
- className,
47
- )}
48
- {...props}
49
- >
50
- <div className="mx-auto mt-4 h-2 w-[100px] rounded-full bg-gray-300" />
51
- {children}
52
- </DrawerPrimitive.Content>
53
- </DrawerPortal>
54
- );
55
- DrawerContent.displayName = 'DrawerContent';
56
-
57
- const DrawerHeader = ({
58
- className,
59
- ...props
60
- }: React.HTMLAttributes<HTMLDivElement>) => (
61
- <div className={cn('pt-5 pb-0', className)} {...props} />
62
- );
63
- DrawerHeader.displayName = 'DrawerHeader';
64
-
65
- const DrawerFooter = ({
66
- className,
67
- ...props
68
- }: React.HTMLAttributes<HTMLDivElement>) => (
69
- <div
70
- className={cn('mt-auto flex flex-col gap-2 p-4', className)}
71
- {...props}
72
- />
73
- );
74
- DrawerFooter.displayName = 'DrawerFooter';
75
-
76
- const DrawerTitle = ({
77
- className,
78
- ...props
79
- }: React.ComponentProps<typeof DrawerPrimitive.Title>) => (
80
- <DrawerPrimitive.Title
81
- className={cn(
82
- 'text-lg leading-none font-semibold tracking-tight',
83
- className,
84
- )}
85
- {...props}
86
- />
87
- );
88
- DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
89
-
90
- const DrawerDescription = ({
91
- className,
92
- ...props
93
- }: React.ComponentProps<typeof DrawerPrimitive.Description>) => (
94
- <DrawerPrimitive.Description
95
- className={cn('text-text-secondary text-sm', className)}
96
- {...props}
97
- />
98
- );
99
- DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
100
-
101
- export {
102
- Drawer,
103
- DrawerPortal,
104
- DrawerOverlay,
105
- DrawerTrigger,
106
- DrawerClose,
107
- DrawerHandle,
108
- DrawerContent,
109
- DrawerHeader,
110
- DrawerFooter,
111
- DrawerTitle,
112
- DrawerDescription,
113
- };