completionId: cgen-696e9cb5a553406d86ca5baf70b04c40
cgen-696e9cb5a553406d86ca5baf70b04c40
This commit is contained in:
parent
da41aae918
commit
9541d3e38b
1 changed files with 69 additions and 11 deletions
|
|
@ -438,55 +438,93 @@ export default function ArtistSettings() {
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="text-white">Services & Pricing</CardTitle>
|
<CardTitle className="text-white">Services & Pricing</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Set your sample pricing for common services
|
Set your prices for custom services. Leave blank if you prefer "Contact for Quote"
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="space-y-4">
|
<CardContent className="space-y-4">
|
||||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label className="text-white">Custom Track</Label>
|
<Label className="text-white">Custom Track ($)</Label>
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
value={profile.sample_price_track || ""}
|
value={profile.price_list?.track_custom || ""}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setProfile({
|
setProfile({
|
||||||
...profile,
|
...profile,
|
||||||
sample_price_track: Number(e.target.value) || undefined,
|
price_list: {
|
||||||
|
...profile.price_list,
|
||||||
|
track_custom: Number(e.target.value) || null,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
placeholder="500"
|
placeholder="500"
|
||||||
className="bg-slate-800 border-slate-700"
|
className="bg-slate-800 border-slate-700"
|
||||||
|
min="0"
|
||||||
/>
|
/>
|
||||||
|
<p className="text-xs text-slate-400">Original music composition</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label className="text-white">SFX Pack</Label>
|
<Label className="text-white">SFX Pack ($)</Label>
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
value={profile.sample_price_sfx || ""}
|
value={profile.price_list?.sfx_pack || ""}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setProfile({
|
setProfile({
|
||||||
...profile,
|
...profile,
|
||||||
sample_price_sfx: Number(e.target.value) || undefined,
|
price_list: {
|
||||||
|
...profile.price_list,
|
||||||
|
sfx_pack: Number(e.target.value) || null,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
placeholder="150"
|
placeholder="150"
|
||||||
className="bg-slate-800 border-slate-700"
|
className="bg-slate-800 border-slate-700"
|
||||||
|
min="0"
|
||||||
/>
|
/>
|
||||||
|
<p className="text-xs text-slate-400">Sound effects collection</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label className="text-white">Full Score</Label>
|
<Label className="text-white">Full Score ($)</Label>
|
||||||
<Input
|
<Input
|
||||||
type="number"
|
type="number"
|
||||||
value={profile.sample_price_score || ""}
|
value={profile.price_list?.full_score || ""}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setProfile({
|
setProfile({
|
||||||
...profile,
|
...profile,
|
||||||
sample_price_score: Number(e.target.value) || undefined,
|
price_list: {
|
||||||
|
...profile.price_list,
|
||||||
|
full_score: Number(e.target.value) || null,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
placeholder="2000"
|
placeholder="2000"
|
||||||
className="bg-slate-800 border-slate-700"
|
className="bg-slate-800 border-slate-700"
|
||||||
|
min="0"
|
||||||
/>
|
/>
|
||||||
|
<p className="text-xs text-slate-400">Complete game/film score</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Label className="text-white">Day Rate ($)</Label>
|
||||||
|
<Input
|
||||||
|
type="number"
|
||||||
|
value={profile.price_list?.day_rate || ""}
|
||||||
|
onChange={(e) =>
|
||||||
|
setProfile({
|
||||||
|
...profile,
|
||||||
|
price_list: {
|
||||||
|
...profile.price_list,
|
||||||
|
day_rate: Number(e.target.value) || null,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
placeholder="1500"
|
||||||
|
className="bg-slate-800 border-slate-700"
|
||||||
|
min="0"
|
||||||
|
/>
|
||||||
|
<p className="text-xs text-slate-400">Hourly or daily rate for consulting</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -505,7 +543,27 @@ export default function ArtistSettings() {
|
||||||
className="bg-slate-800 border-slate-700"
|
className="bg-slate-800 border-slate-700"
|
||||||
min="1"
|
min="1"
|
||||||
/>
|
/>
|
||||||
|
<p className="text-xs text-slate-400">Typical delivery time for custom work</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<label className="flex items-center gap-2 p-3 rounded-lg bg-slate-800/50 border border-slate-700 cursor-pointer">
|
||||||
|
<Checkbox
|
||||||
|
checked={profile.price_list?.contact_for_quote || false}
|
||||||
|
onCheckedChange={(checked) =>
|
||||||
|
setProfile({
|
||||||
|
...profile,
|
||||||
|
price_list: {
|
||||||
|
...profile.price_list,
|
||||||
|
contact_for_quote: checked as boolean,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
className="border-slate-600"
|
||||||
|
/>
|
||||||
|
<span className="text-sm text-slate-300">
|
||||||
|
High-value projects (Enterprise clients): "Contact for Quote"
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue