@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,272 +0,0 @@
1
- import { CheckIcon } from '@radix-ui/react-icons';
2
- import { LoaderCircle } from 'lucide-react';
3
- import React from 'react';
4
- import { createContext, useContext } from 'react';
5
-
6
- import { cn } from '../src/utils';
7
-
8
- type StepperContextValue = {
9
- activeStep: number;
10
- setActiveStep: (step: number) => void;
11
- orientation: 'horizontal' | 'vertical';
12
- };
13
-
14
- type StepItemContextValue = {
15
- step: number;
16
- state: StepState;
17
- isDisabled: boolean;
18
- isLoading: boolean;
19
- };
20
-
21
- type StepState = 'active' | 'completed' | 'inactive' | 'loading';
22
-
23
- const StepperContext = createContext<StepperContextValue | undefined>(
24
- undefined,
25
- );
26
- const StepItemContext = createContext<StepItemContextValue | undefined>(
27
- undefined,
28
- );
29
-
30
- const useStepper = () => {
31
- const context = useContext(StepperContext);
32
- if (!context) {
33
- throw new Error('useStepper must be used within a Stepper');
34
- }
35
- return context;
36
- };
37
-
38
- const useStepItem = () => {
39
- const context = useContext(StepItemContext);
40
- if (!context) {
41
- throw new Error('useStepItem must be used within a StepperItem');
42
- }
43
- return context;
44
- };
45
-
46
- interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {
47
- defaultValue?: number;
48
- value?: number;
49
- onValueChange?: (value: number) => void;
50
- orientation?: 'horizontal' | 'vertical';
51
- }
52
-
53
- const Stepper = ({
54
- defaultValue = 0,
55
- value,
56
- onValueChange,
57
- orientation = 'horizontal',
58
- className,
59
- ...props
60
- }: StepperProps) => {
61
- const [activeStep, setInternalStep] = React.useState(defaultValue);
62
-
63
- const setActiveStep = React.useCallback(
64
- (step: number) => {
65
- if (value === undefined) {
66
- setInternalStep(step);
67
- }
68
- onValueChange?.(step);
69
- },
70
- [value, onValueChange],
71
- );
72
-
73
- const currentStep = value ?? activeStep;
74
-
75
- return (
76
- <StepperContext.Provider
77
- value={{
78
- activeStep: currentStep,
79
- setActiveStep,
80
- orientation,
81
- }}
82
- >
83
- <div
84
- className={cn(
85
- 'group/stepper inline-flex data-[orientation=horizontal]:w-full data-[orientation=horizontal]:flex-row data-[orientation=vertical]:flex-col',
86
- className,
87
- )}
88
- data-orientation={orientation}
89
- {...props}
90
- />
91
- </StepperContext.Provider>
92
- );
93
- };
94
- Stepper.displayName = 'Stepper';
95
-
96
- // StepperItem
97
- interface StepperItemProps extends React.HTMLAttributes<HTMLDivElement> {
98
- step: number;
99
- completed?: boolean;
100
- disabled?: boolean;
101
- loading?: boolean;
102
- }
103
-
104
- const StepperItem = ({
105
- step,
106
- completed = false,
107
- disabled = false,
108
- loading = false,
109
- className,
110
- children,
111
- ...props
112
- }: StepperItemProps) => {
113
- const { activeStep } = useStepper();
114
-
115
- const state: StepState =
116
- completed || step < activeStep
117
- ? 'completed'
118
- : activeStep === step
119
- ? 'active'
120
- : 'inactive';
121
-
122
- const isLoading = loading && step === activeStep;
123
-
124
- return (
125
- <StepItemContext.Provider
126
- value={{ step, state, isDisabled: disabled, isLoading }}
127
- >
128
- <div
129
- className={cn(
130
- 'group/step flex items-center group-data-[orientation=horizontal]/stepper:flex-row group-data-[orientation=vertical]/stepper:flex-col',
131
- className,
132
- )}
133
- data-state={state}
134
- {...(isLoading ? { 'data-loading': true } : {})}
135
- {...props}
136
- >
137
- {children}
138
- </div>
139
- </StepItemContext.Provider>
140
- );
141
- };
142
-
143
- StepperItem.displayName = 'StepperItem';
144
-
145
- // StepperTrigger
146
- interface StepperTriggerProps
147
- extends React.ButtonHTMLAttributes<HTMLButtonElement> {
148
- asChild?: boolean;
149
- }
150
-
151
- const StepperTrigger = ({
152
- asChild = false,
153
- className,
154
- children,
155
- ...props
156
- }: StepperTriggerProps) => {
157
- const { setActiveStep } = useStepper();
158
- const { step, isDisabled } = useStepItem();
159
-
160
- if (asChild) {
161
- return <div className={className}>{children}</div>;
162
- }
163
-
164
- return (
165
- <button
166
- className={cn(
167
- 'inline-flex items-center gap-3 disabled:pointer-events-none',
168
- className,
169
- )}
170
- disabled={isDisabled}
171
- onClick={() => setActiveStep(step)}
172
- {...props}
173
- >
174
- {children}
175
- </button>
176
- );
177
- };
178
- StepperTrigger.displayName = 'StepperTrigger';
179
-
180
- interface StepperIndicatorProps extends React.HTMLAttributes<HTMLDivElement> {
181
- asChild?: boolean;
182
- }
183
-
184
- const StepperIndicator = ({
185
- asChild = false,
186
- className,
187
- children,
188
- ...props
189
- }: StepperIndicatorProps) => {
190
- const { state, step, isLoading } = useStepItem();
191
-
192
- return (
193
- <div
194
- className={cn(
195
- 'bg-bg-tertiary text-text-secondary data-[state=completed]:bg-brand data-[state=active]:text-text-default data-[state=completed]:text-primary-foreground data-[state=active]:bg-bg-secondary relative flex size-6 shrink-0 items-center justify-center rounded-full text-xs font-medium',
196
- className,
197
- )}
198
- data-state={state}
199
- {...props}
200
- >
201
- {asChild ? (
202
- children
203
- ) : (
204
- <>
205
- <span className="transition-all group-data-[loading=true]/step:scale-0 group-data-[loading=true]/step:opacity-0 group-data-[loading=true]/step:transition-none group-data-[state=completed]/step:scale-0 group-data-[state=completed]/step:opacity-0">
206
- {step}
207
- </span>
208
- <CheckIcon
209
- aria-hidden="true"
210
- className="absolute scale-0 opacity-0 transition-all group-data-[state=completed]/step:scale-100 group-data-[state=completed]/step:opacity-100"
211
- // size={16}
212
- strokeWidth={2}
213
- />
214
- {isLoading && (
215
- <span className="absolute transition-all">
216
- <LoaderCircle
217
- aria-hidden="true"
218
- className="animate-spin"
219
- size={14}
220
- strokeWidth={2}
221
- />
222
- </span>
223
- )}
224
- </>
225
- )}
226
- </div>
227
- );
228
- };
229
- StepperIndicator.displayName = 'StepperIndicator';
230
-
231
- // StepperTitle
232
- const StepperTitle = ({
233
- className,
234
- ...props
235
- }: React.HTMLAttributes<HTMLHeadingElement>) => (
236
- <h3 className={cn('text-sm font-medium', className)} {...props} />
237
- );
238
- StepperTitle.displayName = 'StepperTitle';
239
-
240
- const StepperDescription = ({
241
- className,
242
- ...props
243
- }: React.HTMLAttributes<HTMLParagraphElement>) => (
244
- <p className={cn('text-text-secondary text-sm', className)} {...props} />
245
- );
246
- StepperDescription.displayName = 'StepperDescription';
247
-
248
- const StepperSeparator = ({
249
- className,
250
- ...props
251
- }: React.HTMLAttributes<HTMLDivElement>) => {
252
- return (
253
- <div
254
- className={cn(
255
- 'bg-muted group-data-[state=completed]/step:bg-primary m-0.5 group-data-[orientation=horizontal]/stepper:h-0.5 group-data-[orientation=horizontal]/stepper:w-full group-data-[orientation=horizontal]/stepper:flex-1 group-data-[orientation=vertical]/stepper:h-12 group-data-[orientation=vertical]/stepper:w-0.5',
256
- className,
257
- )}
258
- {...props}
259
- />
260
- );
261
- };
262
- StepperSeparator.displayName = 'StepperSeparator';
263
-
264
- export {
265
- Stepper,
266
- StepperDescription,
267
- StepperIndicator,
268
- StepperItem,
269
- StepperSeparator,
270
- StepperTitle,
271
- StepperTrigger,
272
- };
@@ -1,27 +0,0 @@
1
- import * as SwitchPrimitives from '@radix-ui/react-switch';
2
- import React from 'react';
3
-
4
- import { cn } from '../src/utils';
5
-
6
- const Switch = ({
7
- className,
8
- ...props
9
- }: React.ComponentProps<typeof SwitchPrimitives.Root>) => (
10
- <SwitchPrimitives.Root
11
- className={cn(
12
- 'data-[state=checked]:bg-brand peer data-[state=unchecked]:bg-bg-secondary inline-flex h-[20px] w-[36px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs transition-colors focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 focus-visible:ring-offset-white focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
13
- className,
14
- )}
15
- {...props}
16
- >
17
- <SwitchPrimitives.Thumb
18
- className={cn(
19
- 'pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',
20
- )}
21
- />
22
- </SwitchPrimitives.Root>
23
- );
24
- Switch.displayName = SwitchPrimitives.Root.displayName;
25
-
26
- export { Switch };
27
- export default Switch;
@@ -1,105 +0,0 @@
1
- import React from 'react';
2
-
3
- import { cn } from '../src/utils';
4
-
5
- const Table = ({
6
- className,
7
- ...props
8
- }: React.HTMLAttributes<HTMLTableElement>) => (
9
- <table
10
- className={cn('w-full caption-bottom text-sm', className)}
11
- {...props}
12
- />
13
- );
14
- Table.displayName = 'Table';
15
-
16
- const TableHeader = ({
17
- className,
18
- ...props
19
- }: React.HTMLAttributes<HTMLTableSectionElement>) => (
20
- <thead
21
- className={cn('[&_tr]:border-0 [&_tr]:border-b', className)}
22
- {...props}
23
- />
24
- );
25
- TableHeader.displayName = 'TableHeader';
26
-
27
- const TableBody = ({
28
- className,
29
- ...props
30
- }: React.HTMLAttributes<HTMLTableSectionElement>) => (
31
- <tbody className={cn('[&_tr]:border-0', className)} {...props} />
32
- );
33
- TableBody.displayName = 'TableBody';
34
-
35
- const TableFooter = ({
36
- className,
37
- ...props
38
- }: React.HTMLAttributes<HTMLTableSectionElement>) => (
39
- <tfoot
40
- className={cn('border-t font-medium [&>tr]:last:border-b-0', className)}
41
- {...props}
42
- />
43
- );
44
- TableFooter.displayName = 'TableFooter';
45
-
46
- const TableRow = ({
47
- className,
48
- ...props
49
- }: React.HTMLAttributes<HTMLTableRowElement>) => (
50
- <tr
51
- className={cn(
52
- 'data-[state=selected]:bg-muted transition-colors hover:bg-gray-300/50',
53
- className,
54
- )}
55
- {...props}
56
- />
57
- );
58
- TableRow.displayName = 'TableRow';
59
-
60
- const TableHead = ({
61
- className,
62
- ...props
63
- }: React.HTMLAttributes<HTMLTableCellElement>) => (
64
- <th
65
- className={cn(
66
- 'text-text-secondary h-12 px-4 text-left align-middle font-medium uppercase [&:has([role=checkbox])]:pr-0',
67
- className,
68
- )}
69
- {...props}
70
- />
71
- );
72
- TableHead.displayName = 'TableHead';
73
-
74
- const TableCell = ({
75
- className,
76
- ...props
77
- }: React.HTMLAttributes<HTMLTableCellElement>) => (
78
- <td
79
- className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}
80
- {...props}
81
- />
82
- );
83
- TableCell.displayName = 'TableCell';
84
-
85
- const TableCaption = ({
86
- className,
87
- ...props
88
- }: React.HTMLAttributes<HTMLTableCaptionElement>) => (
89
- <caption
90
- className={cn('text-text-secondary mt-4 text-sm', className)}
91
- {...props}
92
- />
93
- );
94
- TableCaption.displayName = 'TableCaption';
95
-
96
- export {
97
- Table,
98
- TableHeader,
99
- TableBody,
100
- TableFooter,
101
- TableHead,
102
- TableRow,
103
- TableCell,
104
- TableCaption,
105
- };
@@ -1,50 +0,0 @@
1
- import * as TabsPrimitive from '@radix-ui/react-tabs';
2
- import React from 'react';
3
-
4
- import { cn } from '../src/utils';
5
-
6
- const Tabs = TabsPrimitive.Root;
7
-
8
- const TabsList = ({
9
- className,
10
- ...props
11
- }: React.ComponentProps<typeof TabsPrimitive.List>) => (
12
- <TabsPrimitive.List
13
- className={cn(
14
- 'text-text-tertiary inline-flex h-10 items-center justify-center rounded-md bg-[#27252B] p-1',
15
- className,
16
- )}
17
- {...props}
18
- />
19
- );
20
- TabsList.displayName = TabsPrimitive.List.displayName;
21
-
22
- const TabsTrigger = ({
23
- className,
24
- ...props
25
- }: React.ComponentProps<typeof TabsPrimitive.Trigger>) => (
26
- <TabsPrimitive.Trigger
27
- className={cn(
28
- 'ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-[#2D3239] data-[state=active]:text-white data-[state=active]:shadow-xs',
29
- className,
30
- )}
31
- {...props}
32
- />
33
- );
34
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
35
-
36
- const TabsContent = ({
37
- className,
38
- ...props
39
- }: React.ComponentProps<typeof TabsPrimitive.Content>) => (
40
- <TabsPrimitive.Content
41
- className={cn(
42
- 'ring-offset-background focus-visible:ring-ring mt-3 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',
43
- className,
44
- )}
45
- {...props}
46
- />
47
- );
48
- TabsContent.displayName = TabsPrimitive.Content.displayName;
49
-
50
- export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -1,26 +0,0 @@
1
- import React from 'react'
2
-
3
- import { cn } from '../util'
4
-
5
- export interface TextAreaProps
6
- extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
7
-
8
- const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(
9
- ({ className, ...props }, ref) => {
10
- return (
11
- <textarea
12
- className={cn(
13
- 'flex min-h-[80px] w-full rounded-md border border-muted-3 px-3 py-2 text-sm ' +
14
- 'placeholder:text-muted-2 focus-visible:outline-none focus-visible:ring-2 ' +
15
- 'focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
16
- className
17
- )}
18
- ref={ref}
19
- {...props}
20
- />
21
- )
22
- }
23
- )
24
- TextArea.displayName = 'TextArea'
25
-
26
- export default TextArea
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
-
3
- import { cn } from '../src/utils';
4
-
5
- export const TextLink = ({
6
- label,
7
- url,
8
- className,
9
- ...props
10
- }: {
11
- label: string;
12
- url: string;
13
- } & React.ButtonHTMLAttributes<HTMLSpanElement>) => (
14
- <span
15
- className={cn('cursor-pointer text-white underline', className)}
16
- onClick={() => {
17
- if (typeof window !== 'undefined') {
18
- window.open(url);
19
- }
20
- }}
21
- {...props}
22
- >
23
- <a href={url} rel="noreferrer" target="_blank">
24
- {label}
25
- </a>
26
- </span>
27
- );
@@ -1,64 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
-
5
- import { RefCallBack } from 'react-hook-form';
6
- import { cn } from '../src/utils';
7
-
8
- const DEFAULT_MIN_TEXTAREA_HEIGHT = 32;
9
- const DEFAULT_MAX_TEXTAREA_HEIGHT = 300;
10
-
11
- export type TextareaProps =
12
- React.TextareaHTMLAttributes<HTMLTextAreaElement> & {
13
- minHeight?: number;
14
- maxHeight?: number;
15
- resize?: 'none' | 'both' | 'horizontal' | 'vertical';
16
- ref?: React.RefObject<HTMLTextAreaElement | null> | RefCallBack;
17
- };
18
-
19
- const Textarea = ({
20
- className,
21
- minHeight = DEFAULT_MIN_TEXTAREA_HEIGHT,
22
- maxHeight = DEFAULT_MAX_TEXTAREA_HEIGHT,
23
- resize = 'none',
24
- ref,
25
- ...props
26
- }: TextareaProps) => {
27
- const textareaRef = React.useRef<HTMLTextAreaElement>(null);
28
-
29
- React.useLayoutEffect(() => {
30
- // Reset height - important to shrink on delete
31
- if (!textareaRef.current) return;
32
- textareaRef.current.style.height = 'inherit';
33
- // Set height
34
- textareaRef.current.style.height = `${Math.max(
35
- textareaRef.current.scrollHeight + 2,
36
- minHeight,
37
- )}px`;
38
-
39
- if (props.autoFocus !== undefined && props.autoFocus) {
40
- textareaRef.current.focus();
41
- }
42
- // eslint-disable-next-line react-hooks/exhaustive-deps
43
- }, [props.value, minHeight, maxHeight]);
44
-
45
- return (
46
- <textarea
47
- className={cn(
48
- 'bg-bg-secondary placeholder:!text-text-placeholder border-input focus-visible:ring-border-input-focus flex w-full rounded-md border px-4 py-2 pt-7 text-sm break-words focus-visible:ring-1 focus-visible:outline-hidden focus-visible:ring-inset disabled:cursor-not-allowed disabled:opacity-50',
49
- className,
50
- )}
51
- ref={ref || textareaRef}
52
- style={{
53
- minHeight: `${minHeight}px`,
54
- maxHeight: resize === 'vertical' ? undefined : `${maxHeight}px`,
55
- resize: resize,
56
- }}
57
- {...props}
58
- />
59
- );
60
- };
61
- Textarea.displayName = 'Textarea';
62
-
63
- export { Textarea };
64
- export default Textarea;
@@ -1,78 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
-
5
- import { RefCallBack } from 'react-hook-form';
6
- import { cn } from '../src/utils';
7
- import {
8
- FormControl,
9
- FormDescription,
10
- FormItem,
11
- FormLabel,
12
- FormMessage,
13
- } from './form';
14
- import { Input } from './input';
15
-
16
- const TextField = ({
17
- classes,
18
- field,
19
- label,
20
- type = 'text',
21
- helperMessage,
22
- startAdornment,
23
- endAdornment,
24
- autoFocus,
25
- min,
26
- max,
27
- }: {
28
- classes?: {
29
- formItem?: string;
30
- label?: string;
31
- input?: string;
32
- helperMessage?: string;
33
- };
34
- field: {
35
- onChange?: (...event: any[]) => void;
36
- onFocus?: (...event: any[]) => void;
37
- onKeyDown?: (...event: any[]) => void;
38
- onBlur?: () => void;
39
- value: any;
40
- disabled?: boolean;
41
- name?: string;
42
- ref?: React.RefObject<HTMLInputElement | null> | RefCallBack;
43
- placeholder?: string;
44
- readOnly?: boolean;
45
- };
46
- autoFocus?: boolean;
47
- label: React.ReactNode;
48
- helperMessage?: React.ReactNode;
49
- type?: 'text' | 'password' | 'number';
50
- startAdornment?: React.ReactNode;
51
- endAdornment?: React.ReactNode;
52
- min?: number;
53
- max?: number;
54
- }) => {
55
- return (
56
- <FormItem className={cn(classes?.formItem)}>
57
- <FormControl>
58
- <Input
59
- autoFocus={autoFocus}
60
- className={cn(classes?.input)}
61
- endAdornment={endAdornment}
62
- max={max}
63
- min={min}
64
- spellCheck={false}
65
- startAdornment={startAdornment}
66
- type={type}
67
- {...field}
68
- />
69
- </FormControl>
70
- <FormLabel className={cn(classes?.label)}>{label}</FormLabel>
71
- <FormDescription>{helperMessage}</FormDescription>
72
- <FormMessage className={cn(classes?.helperMessage)} />
73
- </FormItem>
74
- );
75
- };
76
-
77
- export { TextField };
78
- export default TextField;
@@ -1,30 +0,0 @@
1
- import React from 'react';
2
- import { Toaster as Sonner } from 'sonner';
3
-
4
- type ToasterProps = React.ComponentProps<typeof Sonner>;
5
-
6
- const Toaster = ({ ...props }: ToasterProps) => {
7
- return (
8
- <Sonner
9
- className="toaster group"
10
- closeButton
11
- position="top-center"
12
- richColors
13
- theme={'dark' as ToasterProps['theme']}
14
- toastOptions={{
15
- classNames: {
16
- toast:
17
- 'group toast group-[.toaster]:bg-background group-[.toaster]:text-text-default group-[.toaster]:border-border group-[.toaster]:shadow-lg',
18
- description: 'group-[.toast]:text-text-secondary',
19
- actionButton: 'group-[.toast]:bg-brand group-[.toast]:text-white',
20
- cancelButton:
21
- 'group-[.toast]:bg-transparent group-[.toast]:text-gray=80',
22
- },
23
- }}
24
- visibleToasts={5}
25
- {...props}
26
- />
27
- );
28
- };
29
-
30
- export { Toaster };