Rocky_Mountain_Vending/components/forms/sms-consent-fields.tsx

76 lines
2.3 KiB
TypeScript

import Link from "next/link"
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
import { businessConfig } from "@/lib/seo-config"
function PolicyLinks() {
return (
<>
{" "}
Review our{" "}
<Link
href="/privacy-policy"
target="_blank"
rel="noopener noreferrer"
className="font-medium text-foreground underline underline-offset-4 hover:text-primary"
>
Privacy Policy
</Link>
{" "}and{" "}
<Link
href="/terms-and-conditions"
target="_blank"
rel="noopener noreferrer"
className="font-medium text-foreground underline underline-offset-4 hover:text-primary"
>
Terms
</Link>
.
</>
)
}
type SmsConsentFieldsProps = {
idPrefix: string
marketingChecked?: boolean
marketingError?: string
mode?: "chat" | "forms"
onMarketingChange?: (checked: boolean) => void
onServiceChange: (checked: boolean) => void
serviceChecked: boolean
serviceError?: string
}
export function SmsConsentFields({
idPrefix,
marketingChecked: _marketingChecked,
marketingError: _marketingError,
mode = "forms",
onMarketingChange: _onMarketingChange,
onServiceChange,
serviceChecked,
serviceError,
}: SmsConsentFieldsProps) {
return (
<div className="space-y-3">
<div className="flex items-start gap-3 rounded-2xl border border-border/60 bg-white px-4 py-3">
<Checkbox
id={`${idPrefix}-service-consent`}
checked={serviceChecked}
onCheckedChange={(checked) => onServiceChange(Boolean(checked))}
className="mt-0.5"
/>
<Label
htmlFor={`${idPrefix}-service-consent`}
className="text-xs leading-relaxed text-muted-foreground"
>
I agree to Terms & Conditions provided by {businessConfig.legalName}. By providing my phone number, I agree
to receive text messages about my inquiry, scheduling, support, repairs, moving, and follow-up. Message
frequency varies. Message and data rates may apply. Reply STOP to opt out and HELP for help.
<PolicyLinks />
</Label>
</div>
{serviceError ? <p className="text-xs text-destructive">{serviceError}</p> : null}
</div>
)
}