Skip to content

Commit 22807e7

Browse files
committed
feat: add templates page with edit, add, delete methods
feat: add blocks page with edit, add, delete blocks
1 parent f5d543b commit 22807e7

42 files changed

Lines changed: 1841 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@lexical/html": "^0.39.0",
5858
"@lexical/react": "^0.39.0",
5959
"@lexical/rich-text": "^0.39.0",
60+
"@dnd-kit/core": "^6.3.1",
6061
"@react-email/components": "^0.5.7",
6162
"@react-email/preview-server": "^4.3.1",
6263
"@react-email/render": "^1.4.0",
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Checkbox, Label } from "@medusajs/ui"
2+
3+
interface CheckboxFieldProps {
4+
label: string
5+
checked: boolean
6+
onChange: (checked: boolean) => void
7+
required?: boolean
8+
disabled?: boolean
9+
}
10+
11+
export const CheckboxField = ({
12+
label,
13+
checked,
14+
onChange,
15+
required = false,
16+
disabled = false,
17+
}: CheckboxFieldProps) => {
18+
return (
19+
<div className="flex items-center space-x-2">
20+
<Checkbox
21+
checked={checked}
22+
onCheckedChange={onChange}
23+
disabled={disabled}
24+
id={`checkbox-${label}`}
25+
/>
26+
<Label
27+
htmlFor={`checkbox-${label}`}
28+
className="text-sm font-medium cursor-pointer"
29+
>
30+
{label}
31+
{required && (
32+
<span className="text-red-500 ml-1">*</span>
33+
)}
34+
</Label>
35+
</div>
36+
)
37+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Input, Label } from "@medusajs/ui"
2+
3+
interface FormFieldProps {
4+
label: string
5+
required?: boolean
6+
children: React.ReactNode
7+
}
8+
9+
export const FormField = ({
10+
label,
11+
required,
12+
children,
13+
}: FormFieldProps) => {
14+
return (
15+
<div>
16+
<div className="mb-2">
17+
<Label className="block text-sm font-medium">
18+
{label}
19+
{required && (
20+
<span className="text-red-500 ml-1">*</span>
21+
)}
22+
</Label>
23+
</div>
24+
{children}
25+
</div>
26+
)
27+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export { TextField } from "./text-field"
2+
export { TextAreaField } from "./text-area-field"
3+
export { NumberField } from "./number-field"
4+
export { SelectField } from "./select-field"
5+
export { CheckboxField } from "./checkbox-field"
6+
export { FormField } from "./form-field"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { Input, Label } from "@medusajs/ui"
2+
3+
interface NumberFieldProps {
4+
label: string
5+
value: number
6+
onChange: (value: number) => void
7+
placeholder?: string
8+
required?: boolean
9+
disabled?: boolean
10+
min?: number | null
11+
max?: number | null
12+
step?: number | null
13+
}
14+
15+
export const NumberField = ({
16+
label,
17+
value,
18+
onChange,
19+
placeholder = "",
20+
required = false,
21+
disabled = false,
22+
min,
23+
max,
24+
step = null,
25+
}: NumberFieldProps) => {
26+
return (
27+
<Input
28+
type="number"
29+
value={value}
30+
onChange={(e) => onChange(Number(e.target.value))}
31+
placeholder={placeholder}
32+
disabled={disabled}
33+
min={min || undefined}
34+
max={max || undefined}
35+
step={step || undefined}
36+
/>
37+
)
38+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { Select, Label } from "@medusajs/ui"
2+
3+
interface SelectFieldProps {
4+
label: string
5+
value: string
6+
onChange: (value: string) => void
7+
options: Array<{ value: string; name: string }>
8+
required?: boolean
9+
disabled?: boolean
10+
}
11+
12+
export const SelectField = ({
13+
label,
14+
value,
15+
onChange,
16+
options,
17+
required = false,
18+
disabled = false,
19+
}: SelectFieldProps) => {
20+
return (
21+
<Select
22+
value={value}
23+
onValueChange={onChange}
24+
disabled={disabled}
25+
>
26+
<Select.Trigger>
27+
<Select.Value placeholder="Select an option" />
28+
</Select.Trigger>
29+
<Select.Content>
30+
{options.map((option) => (
31+
<Select.Item
32+
key={option.value}
33+
value={option.value}
34+
>
35+
{option.name}
36+
</Select.Item>
37+
))}
38+
</Select.Content>
39+
</Select>
40+
)
41+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Textarea, Label } from "@medusajs/ui"
2+
3+
interface TextAreaFieldProps {
4+
label: string
5+
value: string
6+
onChange: (value: string) => void
7+
placeholder?: string
8+
required?: boolean
9+
disabled?: boolean
10+
rows?: number
11+
}
12+
13+
export const TextAreaField = ({
14+
label,
15+
value,
16+
onChange,
17+
placeholder = "",
18+
required = false,
19+
disabled = false,
20+
rows = 3,
21+
}: TextAreaFieldProps) => {
22+
return (
23+
<Textarea
24+
value={value}
25+
onChange={(e) => onChange(e.target.value)}
26+
placeholder={placeholder}
27+
disabled={disabled}
28+
rows={rows}
29+
/>
30+
)
31+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Input, Label } from "@medusajs/ui"
2+
3+
interface TextFieldProps {
4+
label: string
5+
value: string
6+
onChange: (value: string) => void
7+
placeholder?: string
8+
required?: boolean
9+
disabled?: boolean
10+
}
11+
12+
export const TextField = ({
13+
label,
14+
value,
15+
onChange,
16+
placeholder = "",
17+
required = false,
18+
disabled = false,
19+
}: TextFieldProps) => {
20+
return (
21+
<Input
22+
type="text"
23+
value={value}
24+
onChange={(e) => onChange(e.target.value)}
25+
placeholder={placeholder}
26+
disabled={disabled}
27+
/>
28+
)
29+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { ManagerFields } from "./manager-fields"

0 commit comments

Comments
 (0)