Add PDF file attachments to components
- Upload PDFs, rename them (conflict-checked), delete them - Link/unlink files per component (many components can share a file) - File picker dialog: browse existing files, rename inline, upload new - Component detail shows linked files as clickable links - Files stored in data/pdfs/, served at /pdf/:filename - KV prefix: pdf: Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,21 @@ export const create_component_template = (body) => req('POST', '/api/component-
|
||||
export const update_component_template = (id, body) => req('PUT', `/api/component-templates/${id}`, body);
|
||||
export const delete_component_template = (id) => req('DELETE', `/api/component-templates/${id}`);
|
||||
|
||||
// PDF files
|
||||
export const get_pdfs = () => req('GET', '/api/pdfs');
|
||||
export const rename_pdf = (id, display_name) => req('PUT', `/api/pdfs/${id}`, { display_name });
|
||||
export const delete_pdf = (id) => req('DELETE', `/api/pdfs/${id}`);
|
||||
|
||||
export async function upload_pdf(file, display_name) {
|
||||
const form = new FormData();
|
||||
form.append('file', file);
|
||||
if (display_name) form.append('display_name', display_name);
|
||||
const res = await fetch('/api/pdfs', { method: 'POST', body: form });
|
||||
const data = await res.json();
|
||||
if (!data.ok) throw new Error(data.error ?? 'Upload failed');
|
||||
return data;
|
||||
}
|
||||
|
||||
// Grid images
|
||||
export const get_grids = () => req('GET', '/api/grid-images');
|
||||
export const get_grid = (id) => req('GET', `/api/grid-images/${id}`);
|
||||
|
||||
Reference in New Issue
Block a user