From 2dd85a6db6a3fa038cd06771c5e52c03efb0087c Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Mon, 17 Aug 2026 20:29:23 +0200 Subject: [PATCH] File Download component --- src/back/jdd-components/file/file.css | 22 ++++++++++++ src/back/jdd-components/file/file.jdd.tsx | 34 +++++++++++++++++++ src/icons/paperclip.svg | 41 +++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 src/back/jdd-components/file/file.css create mode 100644 src/back/jdd-components/file/file.jdd.tsx create mode 100644 src/icons/paperclip.svg diff --git a/src/back/jdd-components/file/file.css b/src/back/jdd-components/file/file.css new file mode 100644 index 0000000..80e7f71 --- /dev/null +++ b/src/back/jdd-components/file/file.css @@ -0,0 +1,22 @@ +.file { + .file__icon { + svg * { + fill: var(--color-brand-link-fg) !important; + } + } + + a { + background-color: color-mix(in srgb, var(--color-brand-text-fg) 10%, transparent); + padding: 8px; + display: flex; + flex-flow: row nowrap; + align-items: center; + gap: 8px; + transition: none !important; + text-decoration: none; + + &:hover { + transform: scale(1.05); + } + } +} diff --git a/src/back/jdd-components/file/file.jdd.tsx b/src/back/jdd-components/file/file.jdd.tsx new file mode 100644 index 0000000..fec5150 --- /dev/null +++ b/src/back/jdd-components/file/file.jdd.tsx @@ -0,0 +1,34 @@ +import { TempstreamJSX } from "tempstream"; +import type { ComponentToHTMLArgs } from "@sealcode/jdd"; +import { Component, ComponentArguments } from "@sealcode/jdd"; +import { icon } from "src/back/icons.js"; +import { PathFilePointer } from "@sealcode/file-manager"; + +const component_arguments = { + file: new ComponentArguments.File(), + text: new ComponentArguments.ShortText().setDefaultValue(""), + force_download: new ComponentArguments.Boolean().setDefaultValue(false), +} as const; + +export class File extends Component { + getArguments() { + return component_arguments; + } + + async toHTML({ + args: { file, force_download, text }, + classes, + }: ComponentToHTMLArgs): Promise { + if (!(file instanceof PathFilePointer)) { + return ""; + } + return ( + + ); + } +} diff --git a/src/icons/paperclip.svg b/src/icons/paperclip.svg new file mode 100644 index 0000000..5ee6532 --- /dev/null +++ b/src/icons/paperclip.svg @@ -0,0 +1,41 @@ + + + + + + + +