Download frontend/src/components/settings/CtaFormPreview.jsx from Seth0330/qualifier: direct link, hf CLI and curl.
- Browser
- Download file 2.24 kB
-
https://huggingface.co/spaces/Seth0330/qualifier/resolve/main/frontend/src/components/settings/CtaFormPreview.jsx
- Command line
-
hf download hf://spaces/Seth0330/qualifier/frontend/src/components/settings/CtaFormPreview.jsx
-
curl -L -o CtaFormPreview.jsx https://huggingface.co/spaces/Seth0330/qualifier/resolve/main/frontend/src/components/settings/CtaFormPreview.jsx
2.24 kB
| import React from 'react'; | |
| import { cn } from '@/lib/utils'; | |
| /** | |
| * Static preview of embed form fields (matches public embed styling). | |
| */ | |
| export default function CtaFormPreview({ fields, className }) { | |
| const list = fields || []; | |
| return ( | |
| <div className={cn('rounded-xl border border-slate-200 bg-white p-4', className)}> | |
| {list.length === 0 ? ( | |
| <p className="text-sm text-slate-400 text-center py-6">Add fields to preview</p> | |
| ) : ( | |
| <div className="space-y-3"> | |
| {list.map((f, idx) => ( | |
| <div key={`${f.key}-${idx}`}> | |
| <label className="block text-xs font-medium text-slate-600 mb-1"> | |
| {f.label} | |
| {f.required ? ' *' : ''} | |
| </label> | |
| {f.type === 'textarea' ? ( | |
| <textarea | |
| readOnly | |
| tabIndex={-1} | |
| rows={3} | |
| placeholder="" | |
| className="w-full rounded-lg border border-slate-200 px-3 py-2 text-sm bg-white pointer-events-none" | |
| /> | |
| ) : ( | |
| <input | |
| readOnly | |
| tabIndex={-1} | |
| type={f.type || 'text'} | |
| placeholder="" | |
| className="w-full rounded-lg border border-slate-200 px-3 py-2 text-sm bg-white pointer-events-none" | |
| /> | |
| )} | |
| </div> | |
| ))} | |
| <button | |
| type="button" | |
| tabIndex={-1} | |
| className="w-full rounded-lg bg-violet-600 py-2.5 text-sm font-semibold text-white pointer-events-none" | |
| > | |
| Submit | |
| </button> | |
| </div> | |
| )} | |
| </div> | |
| ); | |
| } | |