@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,157 +0,0 @@
1
- 'use client'
2
-
3
- import { cn } from '@hanzo/ui/util'
4
- import { Button } from '@hanzo/ui/primitives'
5
- import {
6
- Card,
7
- CardContent,
8
- CardDescription,
9
- CardHeader,
10
- CardTitle,
11
- } from '@hanzo/ui/primitives'
12
- import { Input } from '@hanzo/ui/primitives'
13
- import { Label } from '@hanzo/ui/primitives'
14
- import { Checkbox } from '@hanzo/ui/primitives'
15
-
16
- interface SignupProps extends React.ComponentPropsWithoutRef<'div'> {
17
- onSubmit?: (data: {
18
- firstName: string
19
- lastName: string
20
- email: string
21
- password: string
22
- acceptTerms: boolean
23
- }) => void
24
- onLogin?: () => void
25
- onGoogleSignup?: () => void
26
- }
27
-
28
- export function Signup({
29
- className,
30
- onSubmit,
31
- onLogin,
32
- onGoogleSignup,
33
- ...props
34
- }: SignupProps) {
35
- const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
36
- e.preventDefault()
37
- const formData = new FormData(e.currentTarget)
38
- const data = {
39
- firstName: formData.get('firstName') as string,
40
- lastName: formData.get('lastName') as string,
41
- email: formData.get('email') as string,
42
- password: formData.get('password') as string,
43
- acceptTerms: formData.get('acceptTerms') === 'on',
44
- }
45
- onSubmit?.(data)
46
- }
47
-
48
- return (
49
- <div className={cn('flex flex-col gap-6', className)} {...props}>
50
- <Card>
51
- <CardHeader>
52
- <CardTitle className="text-2xl">Sign Up</CardTitle>
53
- <CardDescription>
54
- Create a new account to get started
55
- </CardDescription>
56
- </CardHeader>
57
- <CardContent>
58
- <form onSubmit={handleSubmit}>
59
- <div className="flex flex-col gap-6">
60
- <div className="grid gap-4 sm:grid-cols-2">
61
- <div className="grid gap-2">
62
- <Label htmlFor="firstName">First name</Label>
63
- <Input
64
- id="firstName"
65
- name="firstName"
66
- placeholder="Max"
67
- required
68
- />
69
- </div>
70
- <div className="grid gap-2">
71
- <Label htmlFor="lastName">Last name</Label>
72
- <Input
73
- id="lastName"
74
- name="lastName"
75
- placeholder="Robinson"
76
- required
77
- />
78
- </div>
79
- </div>
80
- <div className="grid gap-2">
81
- <Label htmlFor="email">Email</Label>
82
- <Input
83
- id="email"
84
- name="email"
85
- type="email"
86
- placeholder="m@example.com"
87
- required
88
- />
89
- </div>
90
- <div className="grid gap-2">
91
- <Label htmlFor="password">Password</Label>
92
- <Input
93
- id="password"
94
- name="password"
95
- type="password"
96
- required
97
- />
98
- <p className="text-xs text-muted-foreground">
99
- Must be at least 8 characters
100
- </p>
101
- </div>
102
- <div className="flex items-center space-x-2">
103
- <Checkbox id="acceptTerms" name="acceptTerms" required />
104
- <label
105
- htmlFor="acceptTerms"
106
- className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
107
- >
108
- I accept the{' '}
109
- <a href="#" className="underline underline-offset-4">
110
- terms and conditions
111
- </a>
112
- </label>
113
- </div>
114
- <Button type="submit" className="w-full">
115
- Create account
116
- </Button>
117
- {onGoogleSignup && (
118
- <>
119
- <div className="relative">
120
- <div className="absolute inset-0 flex items-center">
121
- <span className="w-full border-t" />
122
- </div>
123
- <div className="relative flex justify-center text-xs uppercase">
124
- <span className="bg-background px-2 text-muted-foreground">
125
- Or continue with
126
- </span>
127
- </div>
128
- </div>
129
- <Button
130
- type="button"
131
- variant="outline"
132
- className="w-full"
133
- onClick={onGoogleSignup}
134
- >
135
- Sign up with Google
136
- </Button>
137
- </>
138
- )}
139
- </div>
140
- {onLogin && (
141
- <div className="mt-4 text-center text-sm">
142
- Already have an account?{' '}
143
- <button
144
- type="button"
145
- onClick={onLogin}
146
- className="underline underline-offset-4"
147
- >
148
- Login
149
- </button>
150
- </div>
151
- )}
152
- </form>
153
- </CardContent>
154
- </Card>
155
- </div>
156
- )
157
- }
@@ -1,48 +0,0 @@
1
- import React from 'react'
2
-
3
- import {
4
- Accordion,
5
- AccordionContent,
6
- AccordionItem,
7
- AccordionTrigger,
8
- ApplyTypography
9
- } from '../../primitives/index-common'
10
-
11
- import { cn } from '../../util'
12
-
13
- import type { AccordianBlock } from '../def'
14
- import type BlockComponentProps from './block-component-props'
15
-
16
- const AccordianBlockComponent: React.FC<BlockComponentProps> = ({
17
- block,
18
- className=''
19
- }) => {
20
-
21
- if (block.blockType !== 'accordian') {
22
- return <>accordian block required</>
23
- }
24
-
25
- const accordian = block as AccordianBlock
26
-
27
- return (
28
- <Accordion type="single" collapsible className={cn('w-full border rounded-xl overflow-hidden', className)}>
29
- {accordian.items.map((item, index) => (
30
- <AccordionItem className='border-b last:border-0 overflow-hidden' value={`value-${index}`} key={index}>
31
- <AccordionTrigger className='px-3 md:px-4 lg:px-6 hover:no-underline hover:bg-level-3' >
32
- <ApplyTypography>
33
- {/* styles specific to accordion. From old site */}
34
- <h6 className='leading-[1.2] text-[1.05rem] font-semibold ' >{item.trigger}</h6>
35
- </ApplyTypography>
36
- </AccordionTrigger>
37
- <AccordionContent className='p-4 border-t bg-level-1'>
38
- <ApplyTypography className='flex flex-col justify-start items-start '>
39
- {(typeof item.content === 'string') ? (<p>{item.content}</p>) : item.content}
40
- </ApplyTypography>
41
- </AccordionContent>
42
- </AccordionItem>
43
- ))}
44
- </Accordion>
45
- )
46
- }
47
-
48
- export default AccordianBlockComponent
@@ -1,11 +0,0 @@
1
- import type { Block } from "../def";
2
-
3
- interface BlockComponentProps {
4
- block: Block
5
- className?: string
6
- agent?: string
7
- }
8
-
9
- export {
10
- type BlockComponentProps as default
11
- }
@@ -1,46 +0,0 @@
1
- import React from 'react'
2
-
3
- import { containsToken, cn } from '../../util'
4
- import type { Block, BulletCardsBlock } from '../def'
5
- import InlineIcon from '../../primitives/next/inline-icon'
6
-
7
- import type BlockComponentProps from './block-component-props'
8
- import GridBlockComponent from './grid-block'
9
-
10
- const BulletCardsBlockComponent: React.FC<BlockComponentProps> = ({
11
- block,
12
- className='',
13
- agent
14
- }) => {
15
-
16
- if (block.blockType !== 'bullet-cards') {
17
- return <>bullet cards block required</>
18
- }
19
- const b = block as BulletCardsBlock
20
- const specified = (s: string) => (containsToken(b.specifiers, s))
21
-
22
- const noBorder = specified('no-card-border') ? 'border-0' : 'md:border'
23
- const mobileTextXs = specified('mobile-small-text') ? 'text-xs' : 'text-sm'
24
-
25
- const borderclx = specified('border-muted-3') ?
26
- 'md:border-muted-3'
27
- :
28
- (specified('border-muted-1') ? 'md:border-muted-1' : 'md:border-muted-2')
29
-
30
- return (
31
- <GridBlockComponent block={{blockType: 'grid', grid: b.grid} as Block} className={className} agent={agent}>
32
- {b.cards.map((card, index) => (
33
- <div key={index} className={cn('px-0 sm:px-4 py-1 md:py-4 rounded-lg ' +
34
- 'flex flex-row justify-start items-center not-typography text-foreground',
35
- noBorder,
36
- borderclx
37
- )}>
38
- <InlineIcon icon={card.icon} size={b.iconSize ?? 28} agent={agent} className='shrink-0 mr-2 md:mr-4 '/>
39
- <p className={cn('m-0 sm:text-base', mobileTextXs)}>{card.text}</p>
40
- </div>
41
- ))}
42
- </GridBlockComponent>
43
- )
44
- }
45
-
46
- export default BulletCardsBlockComponent
@@ -1,171 +0,0 @@
1
- import React from 'react'
2
-
3
- import type { LinkDef, TShirtDimensions } from '../../../types'
4
-
5
- import {
6
- ApplyTypography,
7
- Card,
8
- CardContent,
9
- CardDescription,
10
- CardFooter,
11
- CardHeader,
12
- CardTitle,
13
- type TypographySize
14
- } from '../../../primitives/index-common'
15
-
16
- import type { CardBlock, VideoBlock } from '../../def'
17
-
18
- import ImageBlockComponent from '../image-block'
19
- import VideoBlockComponent from '../video-block'
20
- import CTABlockComponent from '../cta-block'
21
- import type BlockComponentProps from '../block-component-props'
22
- import { cn } from '../../../util'
23
-
24
- import { getTypographySize } from './util'
25
- import LinkOutButton from './link-out-button'
26
-
27
- const CardBlockComponent: React.FC<BlockComponentProps & {
28
- contentClassName?: string
29
- }> = ({
30
- block,
31
- className='',
32
- contentClassName=''
33
- }) => {
34
-
35
- if (block.blockType !== 'card') {
36
- return <>card block required</>
37
- }
38
-
39
- const card = block as CardBlock
40
- const has = (s: string) => (card.specifiers?.includes(s))
41
-
42
- const ghost = has('ghost') // no outer padding, no borders, larger title, all left-aligned bg is same (default)
43
-
44
- const contentclx = (has('content-left') ? 'items-start ' : ' items-center ') + (has('content-top') ? '!justify-start' : '') + contentClassName
45
- const disabledBorder = (has('appear-disabled' ) ? ' border-muted-4' : ' border-muted-3')
46
- const outerBorder = ((has('no-outer-border') || ghost) ? ' border-0' : '')
47
- const innerBorder = (ghost ? ' border-0' : '')
48
- const paddingclx = ghost ? ' px-0 py-0' : ' px-6 py-3'
49
- const mainGap = ghost ? ' gap-2' : ''
50
- const disabledText = (has('appear-disabled') ? ' text-muted-2' : '')
51
- const disabledTypoText = (has('appear-disabled') ? ' typography-p:text-muted-2' : '')
52
- const bgclx = (has('bg-card') ? ' bg-level-1' : '')
53
- const titleclx = (has('heading-style-title') ? ' font-heading text-base leading-tight' : '') +
54
- (ghost ? ' text-left md:text-xl' : '')
55
-
56
- const typoSize: TypographySize = (card.specifiers) ? getTypographySize(card.specifiers) : 'responsive'
57
- const typoclx = (typoSize === 'sm') ? 'typography-sm typography-p:text-sm ' : (typoSize === 'lg') ? 'typography-lg ' : ''
58
-
59
- const contentBefore = has('content-before')
60
- const iconInline = has('icon-inline')
61
- const contentOnHover = has('reveal-content-on-hover')
62
- //const smallIconDim = (contentOnHover && card.specifiers) ? getSmallIconDim(card.specifiers) : undefined
63
-
64
- const Header: React.FC<{
65
- inContent?: boolean
66
- className?: string
67
- }> = ({
68
- inContent=false,
69
- className=''
70
- }) => (
71
- (card.title || card.byline || card.icon) ? (
72
- <CardHeader className={'not-typography' + ' text-accent' + disabledText + paddingclx + innerBorder + className}>
73
- <div className={(iconInline || inContent) ? 'flex flex-row justify-start items-end my-3' : ''}>
74
- {(card.icon && !card.iconAfter ) && (<div className={iconInline ? 'mr-1' : 'mb-2'}>{card.icon}</div>)}
75
- {card.title && (
76
- <CardTitle className={'text-center text-lg font-medium' + titleclx + (iconInline ? ' md:text-xl/none' : '') }>
77
- {card.title}
78
- </CardTitle>
79
- )}
80
- {(card.icon && card.iconAfter) && (<div className={iconInline ? 'ml-1' : 'my-1'}>{card.icon}</div>)}
81
- </div>
82
- {card.byline && (<CardDescription>{card.byline}</CardDescription>)}
83
- </CardHeader>
84
- ) : null
85
- )
86
-
87
- const MediaAndContent: React.FC<{
88
- className?: string
89
- }> = ({
90
- className=''
91
- }) => (has('media-left') ? (
92
- // media left layout
93
- <CardContent className={'flex flex-row justify-start items-stretch p-0 grow ' + disabledBorder + bgclx + contentclx + className}>
94
- {card.media && (
95
- <div className={'box-content grow-0 not-typography' + paddingclx} style={{
96
- // If this layout has been specified, assume media is video, and that the 'sm' dim exists.
97
- width: (card.media as VideoBlock).dim.sm!.w
98
- }}>
99
- <VideoBlockComponent
100
- block={card.media}
101
- usePoster={has('video-use-poster')}
102
- size='sm'
103
- className={has('appear-disabled') ? 'opacity-[0.6]' : ''}
104
- />
105
- </div>
106
- )}
107
- {card.content && (
108
- <ApplyTypography className={'grow border-l flex flex-col justify-center ' + disabledTypoText + paddingclx + disabledBorder + contentclx} size={typoSize}>
109
- {(typeof card.content === 'string') ? (<p>{card.content}</p>) : card.content}
110
- </ApplyTypography>
111
- )}
112
- </CardContent>
113
- ) : ( // default layout
114
- <CardContent className={
115
- 'grow typography flex flex-col justify-center ' +
116
- typoclx + disabledTypoText + bgclx + paddingclx + contentclx + (has('full-width') ? ' p-0 ' : ' ') +
117
- className
118
- }>
119
- {contentOnHover && (<Header inContent/>)}
120
- {card.content && contentBefore && (
121
- (typeof card.content === 'string') ? (<p>{card.content}</p>) : card.content
122
- )}
123
- {card.media && (card.media.blockType === 'image' ? (
124
- <ImageBlockComponent block={card.media} />
125
- ) : (
126
- <VideoBlockComponent block={card.media} />
127
- ))}
128
- {card.content && !contentBefore && (
129
- (typeof card.content === 'string') ? (<p>{card.content}</p>) : card.content
130
- )}
131
- </CardContent>
132
- ))
133
-
134
- const Footer: React.FC = () => ( !card.cta ? null : (has('links-w-arrow') ? (
135
- // links w arrow
136
- <CardFooter className={
137
- 'typography typography-a:text-muted-2 typography-a:hover:text-muted-1 typography-a:text-xs typography-a:no-underline typography-a:hover:underline ' +
138
- 'flex flex-col justify-start items-stretch ' + paddingclx
139
- }>
140
- <CTABlockComponent
141
- block={card.cta}
142
- renderLink={(def: LinkDef, key: any) => (<LinkOutButton def={def} key={key} />)}
143
- />
144
- </CardFooter>
145
- ) : ( // default
146
- <CardFooter className={'grid grid-cols-1 gap-2 md:flex md:flex-row md:justify-center ' + paddingclx} >
147
- <CTABlockComponent block={card.cta} />
148
- </CardFooter>
149
- )))
150
-
151
- return (
152
- <Card className={cn(
153
- 'flex flex-col self-stretch ' +
154
- (contentOnHover ? 'group relative' : '') +
155
- disabledBorder +
156
- outerBorder +
157
- bgclx +
158
- mainGap,
159
- className
160
- )}>
161
- <Header className={(contentOnHover ? ' absolute top-[0px] left-[0px] w-full hidden ' : '')}/>
162
- <MediaAndContent className={(contentOnHover ?
163
- ' bg-gradient-to-t from-secondary to-65%' +
164
- ' items-start justify-start rounded-lg p-4' +
165
- ' transition-opacity duration-500 ease-out opacity-100 ' : '')}/>
166
- <Footer />
167
- </Card>
168
- )
169
- }
170
-
171
- export default CardBlockComponent
@@ -1,20 +0,0 @@
1
- import React from 'react'
2
-
3
- import type { LinkDef } from '../../../types'
4
- import { LinkElement, Icons } from '../../../primitives/index-next'
5
-
6
- const ArrowLinkElement: React.FC<{
7
- def: LinkDef,
8
- }> = ({
9
- def
10
- }) => (
11
- <LinkElement
12
- def={def}
13
- className='justify-between'
14
- variant='link'
15
- icon={<Icons.linkOut className='w-[18px] h-[18px]' />}
16
- iconAfter
17
- />
18
- )
19
-
20
- export default ArrowLinkElement
@@ -1,28 +0,0 @@
1
- import type { Dimensions } from '../../../types'
2
- import type {TypographySize } from '../../../primitives/index-common'
3
- import {
4
- getSpecifierData,
5
- getPrimaryStartingWith,
6
- getDim,
7
- } from '../../../util/specifier'
8
-
9
- export const getTypographySize = (s: string): TypographySize => (
10
- getSpecifierData<TypographySize>(
11
- s,
12
- (s: string) => (getPrimaryStartingWith(s, 'typography')),
13
- (s: string): TypographySize | undefined => {
14
- const subTokenArray = s.split('-')
15
- return subTokenArray[subTokenArray.length - 1] as TypographySize
16
- },
17
- 'responsive'
18
- ) as TypographySize
19
- )
20
-
21
- export const getSmallIconDim = (s: string): Dimensions | undefined => (
22
- getSpecifierData<Dimensions>(
23
- s,
24
- (s: string) => (getPrimaryStartingWith(s, 'small-icon')),
25
- getDim,
26
- )
27
- )
28
-
@@ -1,127 +0,0 @@
1
- import React from 'react'
2
-
3
- import {
4
- Card,
5
- CardContent,
6
- CardFooter,
7
- CardHeader,
8
- } from '../../../primitives/index-common'
9
-
10
- import { cn, containsToken } from '../../../util'
11
-
12
- import {
13
- getSpecifierData,
14
- getPrimaryStartingWith,
15
- getDim,
16
- } from '../../../util/specifier'
17
-
18
- import type CarteBlancheBlock from '../../def/carte-blanche-block'
19
-
20
- import CTABlockComponent from '../cta-block'
21
- import Content from '../content'
22
- import type BlockComponentProps from '../block-component-props'
23
- import { EnhHeadingBlockComponent } from '..'
24
- import VariantContentLeft from './variant-content-left'
25
-
26
- type CardSection = 'entire' | 'header' | 'content' | 'footer'
27
-
28
- const _getClx = (specifier: string, section: CardSection): string => {
29
- let result = ''
30
- if (specifier === 'big-padding') {
31
- switch (section) {
32
- // defaults: p-4 lg:p-6 xl:p-8
33
- case 'header': {
34
- result = 'md:p-8 lg:p-12 xl:p-16'
35
- } break
36
- }
37
- }
38
- if (specifier === 'big-padding-content') {
39
- switch (section) {
40
- case 'content': {
41
- result = 'md:p-8 lg:p-12 xl:p-16'
42
- } break
43
- }
44
- }
45
- else if (specifier === 'no-inner-borders') {
46
- switch (section) {
47
- case 'header': {
48
- result = 'border-none'
49
- } break
50
- case 'footer': {
51
- result = 'border-t-0'
52
- } break
53
- }
54
- }
55
-
56
- return result
57
- }
58
-
59
- const CarteBlancheBlockComponent: React.FC<
60
- BlockComponentProps
61
- > = ({
62
- block,
63
- className='',
64
- agent,
65
- }) => {
66
-
67
- if (block.blockType !== 'carte-blanche') {
68
- return <>carte blanche block required</>
69
- }
70
-
71
- const b = block as CarteBlancheBlock
72
-
73
- const specified = (s: string): boolean => (containsToken(b.specifiers, s))
74
- const getClx = (specifier: string, section: CardSection): string => (
75
- (specified(specifier)) ? _getClx(specifier, section) : ''
76
- )
77
-
78
- //const bigPadding = specified('big-padding')
79
-
80
- const headingclx = [
81
- getClx('big-padding', 'header'),
82
- getClx('no-inner-borders', 'header'),
83
- ].join(' ')
84
-
85
- const contentclx = [
86
- getClx('big-padding-content', 'content'),
87
- ].join(' ')
88
-
89
- const footerclx = [
90
- getClx('no-inner-borders', 'footer'),
91
- ].join(' ')
92
-
93
- const noOuterBorders = specified('no-outer-borders')
94
- const contentLeft = specified('variant-content-left')
95
- const mobileContentLeft = specified('variant-mobile-content-left')
96
-
97
- return (
98
- <Card className={cn('flex flex-col', className, noOuterBorders ? 'border-none' : '')} >
99
- {contentLeft || (mobileContentLeft && agent === 'phone') ? (
100
- <VariantContentLeft block={b} agent={agent} className={className} headingclx={headingclx} contentclx={contentclx} footerclx={footerclx}/>
101
- ) : (<>
102
- {(b.heading || b.topContent) && (
103
- <CardHeader className={cn('typography-img:m-0', headingclx)} >
104
- {b.topContent && (
105
- <Content blocks={b.topContent} agent={agent} className=''/>
106
- )}
107
- {b.heading && (
108
- <EnhHeadingBlockComponent block={b.heading} className='text-accent' agent={agent}/>
109
- )}
110
- </CardHeader>
111
- )}
112
- {b.content && (
113
- <CardContent className={cn('typography flex flex-col justify-center', contentclx, className)}>
114
- <Content blocks={b.content} agent={agent}/>
115
- </CardContent>
116
- )}
117
- {b.cta && (
118
- <CardFooter className={cn('grid grid-cols-1 gap-2 md:flex md:flex-row md:justify-center', footerclx)} >
119
- <CTABlockComponent block={b.cta} agent={agent}/>
120
- </CardFooter>
121
- )}
122
- </>)}
123
- </Card>
124
- )
125
- }
126
-
127
- export default CarteBlancheBlockComponent
@@ -1,49 +0,0 @@
1
- import { EnhHeadingBlockComponent, type CarteBlancheBlock, CTABlockComponent } from '../..'
2
- import {
3
- CardContent,
4
- CardFooter,
5
- CardHeader,
6
- } from '../../../primitives/index-common'
7
- import { cn } from '../../../util'
8
- import Content from '../content'
9
-
10
- const VariantContentLeft: React.FC<{
11
- block: CarteBlancheBlock,
12
- agent?: string
13
- className?: string
14
- headingclx?: string
15
- contentclx?: string
16
- footerclx?: string
17
- }> = ({
18
- block,
19
- agent,
20
- className,
21
- headingclx,
22
- contentclx,
23
- footerclx,
24
- }) => {
25
- return (<>
26
- <div className='flex gap-2'>
27
- {block.topContent && <Content blocks={block.topContent} agent={agent} className='self-center ml-6 mt-6'/>}
28
- <div className='flex flex-col'>
29
- {block.heading && (
30
- <CardHeader className={cn('typography-img:m-0', headingclx)} >
31
- <EnhHeadingBlockComponent block={block.heading} className='text-accent' agent={agent}/>
32
- </CardHeader>
33
- )}
34
- {block.content && (
35
- <CardContent className={cn('typography flex flex-col justify-start', contentclx, className)}>
36
- <Content blocks={block.content} agent={agent}/>
37
- </CardContent>
38
- )}
39
- </div>
40
- </div>
41
- {block.cta && (
42
- <CardFooter className={cn('grid grid-cols-1 gap-2 md:flex md:flex-row md:justify-center mx-auto', footerclx)}>
43
- <CTABlockComponent block={block.cta} agent={agent}/>
44
- </CardFooter>
45
- )}
46
- </>)
47
- }
48
-
49
- export default VariantContentLeft