This commit is contained in:
metacryst
2026-04-28 20:05:00 -05:00
commit 0d6c7683ff
123 changed files with 20922 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
class DesktopFilesToolbar extends Shadow {
constructor(title, viewMode, searchText, onViewChange, onSearch, onUpload) {
super()
this.title = title
this.viewMode = viewMode
this.searchText = searchText
this.onViewChange = onViewChange
this.onSearch = onSearch
this.onUpload = onUpload
}
render() {
const self = this
HStack(() => {
// Title
p(this.title)
.margin(0)
.fontSize(1.05, em)
.fontWeight("700")
.color("var(--headertext)")
.flex(1)
.minWidth(0)
// Search
HStack(() => {
p("🔍")
.margin(0)
.fontSize(0.8, em)
.opacity(0.38)
.flexShrink(0)
input("", "200px")
.attr({ type: "text", placeholder: "Search files…", value: this.searchText })
.border("none")
.outline("none")
.background("transparent")
.color("var(--headertext)")
.fontSize(0.85, em)
.onInput((e) => this.onSearch(e.target.value))
})
.gap(0.5, em)
.paddingHorizontal(0.8, em)
.paddingVertical(0.52, em)
.background("var(--darkaccent)")
.border("1px solid var(--divider)")
.borderRadius(0.5, em)
.alignItems("center")
// View toggle
HStack(() => {
this.viewBtn("list", "☰")
this.viewBtn("grid", "⊞")
})
.background("var(--darkaccent)")
.border("1px solid var(--divider)")
.borderRadius(0.5, em)
.overflow("hidden")
// Upload
button("+ Upload")
.paddingHorizontal(1, em)
.paddingVertical(0.52, em)
.background("var(--quillred)")
.color("white")
.border("none")
.borderRadius(0.5, em)
.fontSize(0.85, em)
.fontWeight("600")
.cursor("pointer")
.flexShrink(0)
.onClick(function(done){ if(done){ self.onUpload() } })
})
.gap(0.65, em)
.paddingHorizontal(1.5, em)
.paddingVertical(0.85, em)
.borderBottom("1px solid var(--divider)")
.alignItems("center")
.width(100, pct)
.boxSizing("border-box")
.flexShrink(0)
}
viewBtn(mode, icon) {
const self = this
const isActive = this.viewMode === mode;
button(icon)
.paddingHorizontal(0.65, em)
.paddingVertical(0.45, em)
.background(isActive ? "var(--app)" : "transparent")
.color("var(--headertext)")
.border("none")
.cursor("pointer")
.fontSize(0.95, em)
.opacity(isActive ? 1 : 0.45)
.onClick(function(done){ if(done){ self.onViewChange(mode) } })
}
}
register(DesktopFilesToolbar)