class JobsGrid extends Shadow { jobs; constructor(jobs) { super() this.jobs = jobs } boldUntilFirstSpace(text) { const index = text.indexOf(' '); if (index === -1) { // No spaces — bold the whole thing return `${text}`; } return `${text.slice(0, index)}${text.slice(index)}`; } render() { VStack(() => { h3("Results") .marginTop(0.1, em) .marginBottom(1, em) .marginLeft(0.4, em) .color("var(--accent2)") if (this.jobs.length > 0) { ZStack(() => { for (let i = 0; i < this.jobs.length; i++) { VStack(() => { p(this.jobs[i].title) .fontSize(1.2, em) .fontWeight("bold") .marginBottom(0.5, em) p(this.jobs[i].company) p(this.jobs[i].city + ", " + this.jobs[i].state) .marginBottom(0.5, em) p(this.boldUntilFirstSpace(this.jobs[i].salary)) }) .padding(1, em) .borderRadius(5, "px") .background("var(--darkbrown)") } }) .display("grid") .gridTemplateColumns("repeat(auto-fill, minmax(250px, 1fr))") .gap(1, em) } else { p("No Jobs!") } }) .height(100, vh) .paddingLeft(2, em) .paddingRight(2, em) .paddingTop(2, em) .gap(0, em) .width(100, "%") } } register(JobsGrid)