@shipsite.dev/components 0.2.55 → 0.2.60

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 (62) hide show
  1. package/components.json +102 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/use-form-submit.d.ts +7 -0
  7. package/dist/lib/use-form-submit.d.ts.map +1 -0
  8. package/dist/lib/use-form-submit.js +47 -0
  9. package/dist/lib/use-form-submit.js.map +1 -0
  10. package/dist/marketing/ContactForm.d.ts +16 -0
  11. package/dist/marketing/ContactForm.d.ts.map +1 -0
  12. package/dist/marketing/ContactForm.js +29 -0
  13. package/dist/marketing/ContactForm.js.map +1 -0
  14. package/dist/marketing/Form.d.ts +25 -0
  15. package/dist/marketing/Form.d.ts.map +1 -0
  16. package/dist/marketing/Form.js +18 -0
  17. package/dist/marketing/Form.js.map +1 -0
  18. package/dist/marketing/FormClient.d.ts +23 -0
  19. package/dist/marketing/FormClient.d.ts.map +1 -0
  20. package/dist/marketing/FormClient.js +41 -0
  21. package/dist/marketing/FormClient.js.map +1 -0
  22. package/dist/marketing/FormEmbed.d.ts +13 -0
  23. package/dist/marketing/FormEmbed.d.ts.map +1 -0
  24. package/dist/marketing/FormEmbed.js +27 -0
  25. package/dist/marketing/FormEmbed.js.map +1 -0
  26. package/dist/marketing/NewsletterForm.d.ts +13 -0
  27. package/dist/marketing/NewsletterForm.d.ts.map +1 -0
  28. package/dist/marketing/NewsletterForm.js +23 -0
  29. package/dist/marketing/NewsletterForm.js.map +1 -0
  30. package/dist/marketing/WaitlistForm.d.ts +16 -0
  31. package/dist/marketing/WaitlistForm.d.ts.map +1 -0
  32. package/dist/marketing/WaitlistForm.js +27 -0
  33. package/dist/marketing/WaitlistForm.js.map +1 -0
  34. package/dist/ui/input.d.ts +5 -0
  35. package/dist/ui/input.d.ts.map +1 -0
  36. package/dist/ui/input.js +7 -0
  37. package/dist/ui/input.js.map +1 -0
  38. package/dist/ui/label.d.ts +5 -0
  39. package/dist/ui/label.d.ts.map +1 -0
  40. package/dist/ui/label.js +9 -0
  41. package/dist/ui/label.js.map +1 -0
  42. package/dist/ui/select.d.ts +14 -0
  43. package/dist/ui/select.d.ts.map +1 -0
  44. package/dist/ui/select.js +28 -0
  45. package/dist/ui/select.js.map +1 -0
  46. package/dist/ui/textarea.d.ts +5 -0
  47. package/dist/ui/textarea.d.ts.map +1 -0
  48. package/dist/ui/textarea.js +7 -0
  49. package/dist/ui/textarea.js.map +1 -0
  50. package/package.json +3 -1
  51. package/src/index.ts +7 -0
  52. package/src/lib/use-form-submit.ts +53 -0
  53. package/src/marketing/ContactForm.tsx +157 -0
  54. package/src/marketing/Form.tsx +41 -0
  55. package/src/marketing/FormClient.tsx +194 -0
  56. package/src/marketing/FormEmbed.tsx +118 -0
  57. package/src/marketing/NewsletterForm.tsx +102 -0
  58. package/src/marketing/WaitlistForm.tsx +145 -0
  59. package/src/ui/input.tsx +21 -0
  60. package/src/ui/label.tsx +24 -0
  61. package/src/ui/select.tsx +160 -0
  62. package/src/ui/textarea.tsx +20 -0
@@ -0,0 +1,160 @@
1
+ "use client";
2
+
3
+ import * as SelectPrimitive from "@radix-ui/react-select";
4
+ import { Check, ChevronDown, ChevronUp } from "lucide-react";
5
+ import * as React from "react";
6
+
7
+ import { cn } from "../lib/utils";
8
+
9
+ const Select = SelectPrimitive.Root;
10
+
11
+ const SelectGroup = SelectPrimitive.Group;
12
+
13
+ const SelectValue = SelectPrimitive.Value;
14
+
15
+ const SelectTrigger = React.forwardRef<
16
+ React.ElementRef<typeof SelectPrimitive.Trigger>,
17
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>
18
+ >(({ className, children, ...props }, ref) => (
19
+ <SelectPrimitive.Trigger
20
+ ref={ref}
21
+ className={cn(
22
+ "border-input bg-background ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-10 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
23
+ className,
24
+ )}
25
+ {...props}
26
+ >
27
+ {children}
28
+ <SelectPrimitive.Icon asChild>
29
+ <ChevronDown className="size-4 opacity-50" />
30
+ </SelectPrimitive.Icon>
31
+ </SelectPrimitive.Trigger>
32
+ ));
33
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
34
+
35
+ const SelectScrollUpButton = React.forwardRef<
36
+ React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
37
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>
38
+ >(({ className, ...props }, ref) => (
39
+ <SelectPrimitive.ScrollUpButton
40
+ ref={ref}
41
+ className={cn(
42
+ "flex cursor-default items-center justify-center py-1",
43
+ className,
44
+ )}
45
+ {...props}
46
+ >
47
+ <ChevronUp className="size-4" />
48
+ </SelectPrimitive.ScrollUpButton>
49
+ ));
50
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
51
+
52
+ const SelectScrollDownButton = React.forwardRef<
53
+ React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
54
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>
55
+ >(({ className, ...props }, ref) => (
56
+ <SelectPrimitive.ScrollDownButton
57
+ ref={ref}
58
+ className={cn(
59
+ "flex cursor-default items-center justify-center py-1",
60
+ className,
61
+ )}
62
+ {...props}
63
+ >
64
+ <ChevronDown className="size-4" />
65
+ </SelectPrimitive.ScrollDownButton>
66
+ ));
67
+ SelectScrollDownButton.displayName =
68
+ SelectPrimitive.ScrollDownButton.displayName;
69
+
70
+ const SelectContent = React.forwardRef<
71
+ React.ElementRef<typeof SelectPrimitive.Content>,
72
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
73
+ >(({ className, children, position = "popper", ...props }, ref) => (
74
+ <SelectPrimitive.Portal>
75
+ <SelectPrimitive.Content
76
+ ref={ref}
77
+ className={cn(
78
+ "bg-popover text-popover-foreground 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 border-border dark:border-border/15 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md",
79
+ position === "popper" &&
80
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
81
+ className,
82
+ )}
83
+ position={position}
84
+ {...props}
85
+ >
86
+ <SelectScrollUpButton />
87
+ <SelectPrimitive.Viewport
88
+ className={cn(
89
+ "p-1",
90
+ position === "popper" &&
91
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]",
92
+ )}
93
+ >
94
+ {children}
95
+ </SelectPrimitive.Viewport>
96
+ <SelectScrollDownButton />
97
+ </SelectPrimitive.Content>
98
+ </SelectPrimitive.Portal>
99
+ ));
100
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
101
+
102
+ const SelectLabel = React.forwardRef<
103
+ React.ElementRef<typeof SelectPrimitive.Label>,
104
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>
105
+ >(({ className, ...props }, ref) => (
106
+ <SelectPrimitive.Label
107
+ ref={ref}
108
+ className={cn("py-1.5 pr-2 pl-8 text-sm font-semibold", className)}
109
+ {...props}
110
+ />
111
+ ));
112
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
113
+
114
+ const SelectItem = React.forwardRef<
115
+ React.ElementRef<typeof SelectPrimitive.Item>,
116
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>
117
+ >(({ className, children, ...props }, ref) => (
118
+ <SelectPrimitive.Item
119
+ ref={ref}
120
+ className={cn(
121
+ "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50",
122
+ className,
123
+ )}
124
+ {...props}
125
+ >
126
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
127
+ <SelectPrimitive.ItemIndicator>
128
+ <Check className="size-4" />
129
+ </SelectPrimitive.ItemIndicator>
130
+ </span>
131
+
132
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
133
+ </SelectPrimitive.Item>
134
+ ));
135
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
136
+
137
+ const SelectSeparator = React.forwardRef<
138
+ React.ElementRef<typeof SelectPrimitive.Separator>,
139
+ React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>
140
+ >(({ className, ...props }, ref) => (
141
+ <SelectPrimitive.Separator
142
+ ref={ref}
143
+ className={cn("bg-muted -mx-1 my-1 h-px", className)}
144
+ {...props}
145
+ />
146
+ ));
147
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
148
+
149
+ export {
150
+ Select,
151
+ SelectContent,
152
+ SelectGroup,
153
+ SelectItem,
154
+ SelectLabel,
155
+ SelectScrollDownButton,
156
+ SelectScrollUpButton,
157
+ SelectSeparator,
158
+ SelectTrigger,
159
+ SelectValue,
160
+ };
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+
3
+ import { cn } from "../lib/utils";
4
+
5
+ export type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;
6
+
7
+ function Textarea({ className, ...props }: TextareaProps) {
8
+ return (
9
+ <textarea
10
+ data-slot="textarea"
11
+ className={cn(
12
+ "border-input bg-background ring-offset-background placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[120px] w-full rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
13
+ className,
14
+ )}
15
+ {...props}
16
+ />
17
+ );
18
+ }
19
+
20
+ export { Textarea };