diff --git a/_blog/2020-05-01-issue-1.md b/_blog/2020-05-01-issue-1.md index 3dff2032..b469fe89 100644 --- a/_blog/2020-05-01-issue-1.md +++ b/_blog/2020-05-01-issue-1.md @@ -22,7 +22,7 @@ There’s no other way to say it: solidarity is a struggle. Today, on May Day, what can any of us do to help our fellow workers win their demands? It’s a complicated question for any of us, [even in our own neighborhoods](https://itsgoingdown.org/autonomous-groups-are-mobilizing-mutual-aid-initiatives-to-combat-the-coronavirus/). It’s one thing to share mask-wearing tips, [DIY PPE resources](https://diyppe.us/), or even a [list of global and US grants for artists](https://www.booooooom.com/2020/03/20/covid-19-resources-for-artists/). It’s another thing to commit to working through things, together, especially with distances and divides between our communities and workplaces. The Reveal’s recent [podcast](https://www.revealnews.org/episodes/pandemic-protests-and-profits/) on COVID-19 in Amazon warehouses quotes one worker as saying, “Until Amazon and Jeff Bezos starts realizing there's real people that are going to die in his warehouse, that's not going to stop. And we need the customers to speak up. We can't do it alone.” Customer boycotts are part of the fight to support Amazon warehouse workers, and solidarity from other workers goes a long way, too. -A handful of volunteer organizers in TWC have been talking with collectives of delivery and ride-hail drivers about ways to show our support and help one another. [Restarting this newsletter]({% link index.md %}) is one small way to organize ourselves in response. (You can subscribe [here](/subscribe)! But it’s not easy to pressure these powerful companies to treat their frontline workers better. One way tech workers and allies might be able to provide material support is by helping to simplify the process of [applying](https://www.wired.com/story/gig-workers-unemployment-benefits-wont-come-quickly/) for unemployment insurance. Another is to pressure tech companies – especially gig economy companies – to pay their workers what they’re owed, instead of allocating $110 million to fund a [counter-proposal](https://www.motherjones.com/coronavirus-updates/2020/04/protesting-uber-and-lyft-drivers-want-back-pay-and-more-coronavirus-protections/) that would 'guarantee' drivers [just $5.64/hr](https://laborcenter.berkeley.edu/the-uber-lyft-ballot-initiative-guarantees-only-5-64-an-hour/). +A handful of volunteer organizers in TWC have been talking with collectives of delivery and ride-hail drivers about ways to show our support and help one another. [Restarting this newsletter]({% link index.11ty.tsx %}) is one small way to organize ourselves in response. (You can subscribe [here](/subscribe)! But it’s not easy to pressure these powerful companies to treat their frontline workers better. One way tech workers and allies might be able to provide material support is by helping to simplify the process of [applying](https://www.wired.com/story/gig-workers-unemployment-benefits-wont-come-quickly/) for unemployment insurance. Another is to pressure tech companies – especially gig economy companies – to pay their workers what they’re owed, instead of allocating $110 million to fund a [counter-proposal](https://www.motherjones.com/coronavirus-updates/2020/04/protesting-uber-and-lyft-drivers-want-back-pay-and-more-coronavirus-protections/) that would 'guarantee' drivers [just $5.64/hr](https://laborcenter.berkeley.edu/the-uber-lyft-ballot-initiative-guarantees-only-5-64-an-hour/). Learning about how we’re all connected and building relationships to make positive change across the industry is a slow but necessary process. This is why we need to stay in the struggle, together. diff --git a/_includes/new.css b/_includes/new.css new file mode 100644 index 00000000..1fda3caf --- /dev/null +++ b/_includes/new.css @@ -0,0 +1,510 @@ +/* montserrat-latin-wght-normal */ +@font-face { + font-family: "Montserrat Variable"; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(/fonts/montserrat-latin-wght-normal.woff2) format("woff2-variations"); + unicode-range: + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* silkscreen-latin-400-normal */ +@font-face { + font-family: "Silkscreen"; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url(/fonts/silkscreen-latin-400-normal.woff2) format("woff2"); + unicode-range: + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +/* roboto-mono-latin-wght-normal */ +@font-face { + font-family: "Roboto Mono Variable"; + font-style: normal; + font-display: swap; + font-weight: 100 700; + src: url(/files/roboto-mono-latin-wght-normal.woff2) + format("woff2-variations"); + unicode-range: + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, + U+2215, U+FEFF, U+FFFD; +} + +@layer reset, base, main, utils; + +@layer reset { + /* see https://www.joshwcomeau.com/css/custom-css-reset */ + /* see https://vale.rocks/posts/css-reset */ + *, + *::before, + *::after { + box-sizing: border-box; + background-repeat: no-repeat; + } + + * { + margin: 0; + padding: 0; + } + + :root { + color-scheme: light dark; + + -webkit-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; + text-size-adjust: 100%; + + line-height: 1.5; + overflow-wrap: break-word; + text-wrap: pretty; + font-variant-numeric: proportional-nums; + hanging-punctuation: first allow-end last; + + -webkit-font-smoothing: antialiased; + interpolate-size: allow-keywords; + + block-size: 100%; + } + + body { + min-block-size: 100%; + } + + :focus-visible { + outline-offset: 0.2rem; + } + + img, + picture, + audio, + video, + canvas, + iframe, + svg { + display: block; + max-inline-size: 100%; + block-size: auto; + } + + svg:not([fill]) { + fill: currentColor; + } + + input, + button, + textarea, + select { + font: inherit; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + text-wrap: balance; + } + + math, + time, + table { + font-variant-numeric: tabular-nums; + } + + pre, + code { + font-variant-numeric: tabular-nums slashed-zero; + } + + textarea { + resize: vertical; + } + + table { + border-collapse: collapse; + } + + sup, + sub { + line-height: 0; + } +} + +@layer base { + :root { + /* see https://utopia.fyi/ */ + --step--2: clamp(0.7813rem, 0.7736rem + 0.0341vw, 0.8rem); + --step--1: clamp(0.9375rem, 0.9119rem + 0.1136vw, 1rem); + --step-0: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem); + --step-1: clamp(1.35rem, 1.2631rem + 0.3864vw, 1.5625rem); + --step-2: clamp(1.62rem, 1.4837rem + 0.6057vw, 1.9531rem); + --step-3: clamp(1.944rem, 1.7405rem + 0.9044vw, 2.4414rem); + --step-4: clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem); + --step-5: clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem); + + --space-3xs: clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem); + --space-2xs: clamp(0.5625rem, 0.5369rem + 0.1136vw, 0.625rem); + --space-xs: clamp(0.875rem, 0.8494rem + 0.1136vw, 0.9375rem); + --space-s: clamp(1.125rem, 1.0739rem + 0.2273vw, 1.25rem); + --space-m: clamp(1.6875rem, 1.6108rem + 0.3409vw, 1.875rem); + --space-l: clamp(2.25rem, 2.1477rem + 0.4545vw, 2.5rem); + --space-xl: clamp(3.375rem, 3.2216rem + 0.6818vw, 3.75rem); + --space-2xl: clamp(4.5rem, 4.2955rem + 0.9091vw, 5rem); + --space-3xl: clamp(6.75rem, 6.4432rem + 1.3636vw, 7.5rem); + + --space-3xs-2xs: clamp(0.3125rem, 0.1847rem + 0.5682vw, 0.625rem); + --space-2xs-xs: clamp(0.5625rem, 0.4091rem + 0.6818vw, 0.9375rem); + --space-xs-s: clamp(0.875rem, 0.7216rem + 0.6818vw, 1.25rem); + --space-s-m: clamp(1.125rem, 0.8182rem + 1.3636vw, 1.875rem); + --space-m-l: clamp(1.6875rem, 1.3551rem + 1.4773vw, 2.5rem); + --space-l-xl: clamp(2.25rem, 1.6364rem + 2.7273vw, 3.75rem); + --space-xl-2xl: clamp(3.375rem, 2.7102rem + 2.9545vw, 5rem); + --space-2xl-3xl: clamp(4.5rem, 3.2727rem + 5.4545vw, 7.5rem); + + /* https://huetone.ardov.me/?palette=N4IgdghgtgpiBcIAqB1AwgAgMYHsAOAniADQgAWArjAM4IDaoksCIAChQE54A2cpu3HB1rw6IAMQATAGYwAzNOkkJWAEaSAjIuXiI01QDZtpcQE4ATKdPGJAdnMGsN8QFYAHHJfO5bjbawaOuaqAAzuSiYaBiFuLuY6IRAhIZ4gALoAvsSM0HCIAEowksoCQiJi4oqSWJKmOopYACxYIfXS1lZttlF8EtLRpnJyOljRIeYuOqa2yRoQOgaNIY0arSZykslhQeZb8ZnZ4LksAOIcEET8OILC9BIwLg8POpKNr6866l-FJhAuf38dLFgZMTAZTODwTpGtIYTCdENEcNIgFUQlNhj0lkcsxEAAZCAANxgYEkMA4JWuZTu4hgBhgWl6UkcTgiKkSijZuka0xgqiBjVs-jcC1MLlUEDqJjhMX560a5gccokWmWjSZq2SclaBxxeWQMAg3EpN3KEghnK5IS05lhCRCkjctR0UVUah%2BEmSpjcnRMyVs03mfrCqhcWHtclUkft5g0sYSGkTqyxaVIABccGAaHcXGsQJrlLs89q80s87m82NlDM825kspTPXMkA */ + /* todo(maximsmol): these are sRGB, we should try upgrading to P3/Rec2020 */ + /* todo(maximsmol): maybe use https://harmonizer.evilmartians.com*/ + /* todo(maximsmol): likely need to fork huetone and fix it up */ + + --color-purple-50: #dfe3ff; + --color-purple-50: oklch(0.921 0.038 279.169); + --color-purple-100: #cbd1ff; + --color-purple-100: oklch(0.871 0.064 279.15); + --color-purple-200: #afb6ff; + --color-purple-200: oklch(0.798 0.104 279.54); + --color-purple-300: #9299ff; + --color-purple-300: oklch(0.721 0.147 279.036); + --color-purple-400: #726cff; + --color-purple-400: oklch(0.616 0.212 280.012); + --color-purple-500: #5835ff; + --color-purple-500: oklch(0.521 0.273 279.068); + --color-purple-600: #3817c1; + --color-purple-600: oklch(0.403 0.233 276.822); + --color-purple-700: #2b058f; + --color-purple-700: oklch(0.32 0.19 279.274); + --color-purple-800: #160852; + --color-purple-800: oklch(0.226 0.122 279.099); + --color-purple-900: #090035; + --color-purple-900: oklch(0.16 0.098 279.099); + + --color-red-50: #ffdcd9; + --color-red-50: oklch(0.923 0.039 23.697); + --color-red-100: #ffc4c0; + --color-red-100: oklch(0.872 0.068 23.014); + --color-red-200: #ff9f99; + --color-red-200: oklch(0.798 0.115 23.837); + --color-red-300: #ff716e; + --color-red-300: oklch(0.72 0.174 23.661); + --color-red-400: #f60b33; + --color-red-400: oklch(0.616 0.246 23.532); + --color-red-500: #c60025; + --color-red-500: oklch(0.521 0.211 23.669); + --color-red-600: #97001a; + --color-red-600: oklch(0.427 0.172 23.571); + --color-red-700: #640410; + --color-red-700: oklch(0.32 0.125 23.383); + --color-red-800: #3d0005; + --color-red-800: oklch(0.227 0.092 23.707); + --color-red-900: #220002; + --color-red-900: oklch(0.16 0.064 23.707); + + --color-gray-50: #e5e5e5; + --color-gray-50: oklch(0.922 0 89.876); + --color-gray-100: #d4d4d4; + --color-gray-100: oklch(0.87 0 89.876); + --color-gray-200: #bdbdbd; + --color-gray-200: oklch(0.798 0 89.876); + --color-gray-300: #a5a5a5; + --color-gray-300: oklch(0.722 0 89.876); + --color-gray-400: #858585; + --color-gray-400: oklch(0.617 0 89.876); + --color-gray-500: #696969; + --color-gray-500: oklch(0.521 0 89.876); + --color-gray-600: #4f4f4f; + --color-gray-600: oklch(0.428 0 89.876); + --color-gray-700: #333333; + --color-gray-700: oklch(0.321 0 89.876); + --color-gray-800: #1c1c1c; + --color-gray-800: oklch(0.226 0 89.876); + --color-gray-900: #0d0d0d; + --color-gray-900: oklch(0.16 0 89.876); + + --color-lavender-50: #e6e1fe; + --color-lavender-50: oklch(0.922 0.039 293.523); + --color-lavender-100: #d6ccff; + --color-lavender-100: oklch(0.87 0.071 293.871); + --color-lavender-200: #c0afff; + --color-lavender-200: oklch(0.798 0.113 293.426); + --color-lavender-300: #a497eb; + --color-lavender-300: oklch(0.721 0.121 290.122); + --color-lavender-400: #8477c8; + --color-lavender-400: oklch(0.615 0.121 289.741); + --color-lavender-500: #695ba9; + --color-lavender-500: oklch(0.521 0.12 289.816); + --color-lavender-600: #4f408b; + --color-lavender-600: oklch(0.426 0.12 289.528); + --color-lavender-700: #34226b; + --color-lavender-700: oklch(0.321 0.121 289.1); + --color-lavender-800: #1f044e; + --color-lavender-800: oklch(0.225 0.12 289.591); + --color-lavender-900: #100030; + --color-lavender-900: oklch(0.16 0.09 289.59); + + --color-teal-50: #96ffff; + --color-teal-50: oklch(0.937 0.098 195.609); + --color-teal-100: #00f2f4; + --color-teal-100: oklch(0.871 0.148 195.842); + --color-teal-200: #01d8d9; + --color-teal-200: oklch(0.799 0.136 195.368); + --color-teal-300: #00bcbe; + --color-teal-300: oklch(0.721 0.123 196.129); + --color-teal-400: #009899; + --color-teal-400: oklch(0.616 0.105 195.596); + --color-teal-500: #00797a; + --color-teal-500: oklch(0.522 0.089 195.786); + --color-teal-600: #005b5c; + --color-teal-600: oklch(0.427 0.073 196.077); + --color-teal-700: #003b3b; + --color-teal-700: oklch(0.319 0.054 194.769); + --color-teal-800: #002121; + --color-teal-800: oklch(0.224 0.038 194.769); + --color-teal-900: #011110; + --color-teal-900: oklch(0.16 0.025 194.769); + + --font-main: "Montserrat Variable", sans-serif; + --font-monospace: "Roboto Mono Variable", monospace; + + --main-bg: var(--color-purple-900); + + font-size: var(--step-0); + font-family: var(--font-main); + + color: #fafafa; + background-color: var(--main-bg); + } + + pre, + code { + font-family: var(--font-monospace); + } + + h1, + .h1 { + font-size: var(--step-5); + } + + h2, + .h2 { + font-size: var(--step-4); + } + + h3, + .h3 { + font-size: var(--step-3); + } + + h4, + .h4 { + font-size: var(--step-2); + } + + h5, + .h5 { + font-size: var(--step-1); + } + + h6, + .h6 { + font-weight: bold; + } + + h1, + h2, + h3, + h4, + h5, + .h1, + .h2, + .h3, + .h4, + .h5 { + font-family: "Silkscreen", sans-serif; + } + + .monospace { + font-family: var(--font-monospace); + } + + svg.icon { + display: inline-block; + + inline-size: 1em; + aspect-ratio: 1/1; + } + + a.button { + padding: var(--space-2xs) var(--space-xs); + + display: flex; + align-items: center; + gap: 1ch; + + color: inherit; + text-decoration: none; + + &.framed { + border: 2px solid currentColor; + box-shadow: currentColor -2px 4px; + } + } + + body { + display: flex; + flex-direction: column; + + > header { + display: flex; + + padding: var(--space-s) var(--space-l); + + > h1 { + display: flex; + align-items: center; + gap: var(--space-s); + + font-size: inherit; + + > .logo { + block-size: 100%; + aspect-ratio: 1/1; + } + } + + > nav { + flex-grow: 1; + + display: flex; + justify-content: flex-end; + + > ul { + display: flex; + align-items: center; + gap: var(--space-m); + + list-style: none; + } + } + } + + > main { + .banner { + block-size: calc(1.5 * var(--space-3xl)); + overflow: hidden; + } + + .hero { + padding: var(--space-s) var(--space-l); + padding-top: var(--space-l); + + h2 { + line-height: 1; + + display: flex; + gap: var(--space-s); + + > svg { + color: var(--color-red-400); + + width: 2lh; + } + + > .title { + display: flex; + flex-direction: column; + + text-align: justify; + + .h4 { + line-height: 1.5; + } + } + + .red { + color: var(--color-red-400); + } + + > .icon-lines { + flex-grow: 1; + + display: flex; + flex-direction: column; + gap: var(--space-2xs); + + div { + flex-grow: 1; + flex-basis: 0; + min-block-size: 0; + + display: flex; + gap: var(--space-2xs); + justify-content: flex-end; + } + } + } + + > hr { + color: var(--color-red-400); + + margin: var(--space-l) 0; + } + + > .cards { + list-style: none; + + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-s); + + li { + padding: var(--space-s); + + border: 2px solid var(--color-red-400); + box-shadow: var(--color-red-400) -4px 6px; + + > section { + > .h5 { + background-color: var(--color-red-400); + color: var(--main-bg); + + text-transform: uppercase; + font-family: var(--font-main); + } + + display: flex; + flex-direction: column; + gap: var(--space-s); + } + } + } + + > .cta { + padding: var(--space-l) 0; + + display: flex; + gap: var(--space-s); + + font-weight: bold; + } + } + } + } +} diff --git a/_layouts/empty.11ty.tsx b/_layouts/empty.11ty.tsx new file mode 100644 index 00000000..aaa43099 --- /dev/null +++ b/_layouts/empty.11ty.tsx @@ -0,0 +1,3 @@ +export const render = ({ content }: { content: string }) => [ + { type: "raw", value: content }, +]; diff --git a/assets/img/decor/chip.svg b/assets/img/decor/chip.svg new file mode 100644 index 00000000..6f28f0fb --- /dev/null +++ b/assets/img/decor/chip.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/header.jpg b/assets/img/header.jpg new file mode 100644 index 00000000..ba1d62a0 Binary files /dev/null and b/assets/img/header.jpg differ diff --git a/assets/img/newspaper.svg b/assets/img/newspaper.svg new file mode 100644 index 00000000..a11f9212 --- /dev/null +++ b/assets/img/newspaper.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/eleventy.config.js b/eleventy.config.js index 8590205f..1b96ee9f 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -58,6 +58,16 @@ export default async (cfg) => { cfg.addPassthroughCopy("assets"); cfg.addPassthroughCopy("netlify.toml"); + // todo(maximsmol): fix fallback CLS with fontaine? + cfg.addPassthroughCopy({ + "node_modules/@fontsource/silkscreen/files/silkscreen-latin-400-normal.woff2": + "fonts/silkscreen-latin-400-normal.woff2", + "node_modules/@fontsource-variable/montserrat/files/montserrat-latin-wght-normal.woff2": + "fonts/montserrat-latin-wght-normal.woff2", + "node_modules/@fontsource-variable/roboto-mono/files/roboto-mono-latin-wght-normal.woff2": + "fonts/roboto-mono-latin-wght-normal.woff2", + }); + cfg.addPassthroughCopy("circuit-breakers"); cfg.ignores.add("circuit-breakers"); diff --git a/index.11ty.tsx b/index.11ty.tsx new file mode 100644 index 00000000..c82cdb5d --- /dev/null +++ b/index.11ty.tsx @@ -0,0 +1,483 @@ +import { readFile } from "node:fs/promises"; + +import browserslist from "browserslist"; +import * as lightningcss from "lightningcss"; + +export const data = { + layout: "empty.11ty.tsx", +}; + +const renderCss = async () => { + const res = lightningcss.transform({ + code: Buffer.concat([await readFile("_includes/new.css")]), + filename: "", + minify: true, + sourceMap: process.env["CONTEXT"] === "development", + drafts: { + customMedia: true, + }, + targets: lightningcss.browserslistToTargets(browserslist()), + }); + if (res.warnings.length > 0) { + console.warn("Lightning CSS warnings:"); + for (const x of res.warnings) console.warn(x); + } + // todo(maximsmol): does this to track dependencies on the CSS files somehow? + + return Buffer.from(res.code).toString(); +}; + +export const render = async () => { + return { + type: "root", + children: [ + { type: "doctype" }, + { type: "text", value: "\n" }, + + {/* see https://rviscomi.github.io/capo.js/ */} + + {/* todo(maximsmol): make sure we set the CSP header */} + + + + Tech Workers Coalition + + + + {/* todo(maximsmol): theme-color */} + {/* + */} + + + {/* todo(maximsmol): canonical? */} + + {/* todo(maximsmol): check favicon.ico */} + {/* todo(maximsmol): svg favicon */} + {/* todo(maximsmol): svg favicon dark mode */} + {/* */} + {/* todo(maximsmol): apple touch icon? */} + + {/* todo(maximsmol): Atom feeds */} + + {/* todo(maximsmol): OpenGraph */} + {/* */} + {/* todo(maximsmol): JSON-LD */} + {/* todo(maximsmol): WebMention? */} + + +
+

+ + + Tech Workers +
+ Coalition +
+

+ +
+
+ +
+

+ {{ + type: "raw", + value: await readFile("assets/img/decor/chip.svg"), + }} +
+
+ Worker Power +
+
In the Tech Industry
+
+
+
+ {/* see https://pixelarticons.com/ */} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + +
+
+

+
+ {/* todo(maximsmol): smarty-pants this */} +
    +
  • +
    +

    Vision & Values:

    +

    + Guided by our vision for an inclusive and equitable tech + industry, TWC organizes to build worker power through rank + and file self-organization and education. +

    +
    +
  • +
  • +
    +

    Who We Are:

    +

    + We are a coalition of workers in and around the tech + industry, labor organizers, community organizers, and + friends. We work in solidarity with existing movements + towards social justice, worker's rights, and economic + inclusion. +

    +
    +
  • +
  • +
    +

    How We Operate:

    +

    + We're democratically structured, all-volunteer, and + worker-led organization. +

    +
    +
  • +
+
+ + Find a Local Chapter + + {/* lucide */} + + Get Involved + + + + + +
+
+
+

+ Upcoming Events + View More +

+
    +
  1. +
    + +

    Bay Area: Social Meeting

    + +

    Bay Area

    +
    +
  2. +
  3. +
    + +

    TWC Book Club: Empire of AI

    + +

    Online

    +
    +
  4. +
  5. +
    + +

    Netherlands: Organizing Meetup

    + +

    Netherlands

    +
    +
  6. +
  7. +
    + +

    Portland: General Meeting

    + +

    Portland

    +
    +
  8. +
+
+
+

+ TWC in the Press + View More +

+
    +
  1. +
    + +

    + Despite Crackdown on Activism, Tech Employees Are Still + Picking Fights +

    + +

    New York Times

    +
    +
    + +

    + "Grand Theft, Not Wage Theft", Rockstar Protest in NYC + Draws Tech Workers, Multiple Unions +

    + +

    Aftermath

    +
    +
  2. +
+
+
+ + + , + ], + }; +}; diff --git a/index.md b/index.md deleted file mode 100644 index 755e5559..00000000 --- a/index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -permalink: / ---- - -

Worker power in the tech industry

- - -
-

Guided by our vision for an inclusive & equitable tech industry, TWC organizes to build worker power through rank & file self-organization and education.

-

We are a coalition of workers in and around the tech industry, labor organizers, community organizers, and friends. - We work in solidarity with existing movements towards social justice, workers' rights, and economic inclusion.

-

We’re a democratically structured, all-volunteer, and worker-led organization.

-
- - -
- {% include events.html limit=5 %} -
- -
- {% include blog.html limit=3 %} -
- -
-

TWC in the Press

- {% include press.html limit=2%} - -See more press mentions - -
diff --git a/notes.md b/notes.md new file mode 100644 index 00000000..4662f2b2 --- /dev/null +++ b/notes.md @@ -0,0 +1,13 @@ +# notes + +- header image licensing - pexels +- footer image - ??? pexels? +- event address is a link to the event page +- the events/press header doesn't look clickable - the "view more" button is hard to see on the right side of the screen + +# todo + +1. add analytics (web/mobile basically) +2. max existing site content +3. intros summary +4. new site map based on intros and interviews diff --git a/package.json b/package.json index 05cfb1d8..bfb3359d 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "@11ty/eleventy": "^3.1.5", "@11ty/eleventy-plugin-rss": "^2.0.4", "@eslint/js": "^9.39.2", + "@fontsource-variable/montserrat": "^5.2.8", + "@fontsource-variable/roboto-mono": "^5.2.9", + "@fontsource/silkscreen": "^5.2.8", "@mdx-js/mdx": "^3.1.1", "@types/luxon": "^3.7.1", "@types/markdown-it": "^14.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 643a8938..8dd3d10c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,15 @@ importers: '@eslint/js': specifier: ^9.39.2 version: 9.39.2 + '@fontsource-variable/montserrat': + specifier: ^5.2.8 + version: 5.2.8 + '@fontsource-variable/roboto-mono': + specifier: ^5.2.9 + version: 5.2.9 + '@fontsource/silkscreen': + specifier: ^5.2.8 + version: 5.2.8 '@mdx-js/mdx': specifier: ^3.1.1 version: 3.1.1(patch_hash=c3747fa40d5fa8b461c601e2f709b66223999ee269d6985ade30e835bf76f834) @@ -340,6 +349,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fontsource-variable/montserrat@5.2.8': + resolution: {integrity: sha512-d8wykq7GCKhEOlLwEuQIOK3w3qsXNxwDlH0meru4AZZzQ4/+rZyvHWKL6BBtHdmbovSHEEQDkwkD8qYUKlcFtQ==} + + '@fontsource-variable/roboto-mono@5.2.9': + resolution: {integrity: sha512-OzFO2AXlSGcXl/NcXS3CGjImb6rczCByPJ1C+Dzp9kkYOrUPyrGTuAtqPcmA/d+nZGX5oyOWKXLk5BrwVLYqkw==} + + '@fontsource/silkscreen@5.2.8': + resolution: {integrity: sha512-PfVe2BRZdjY/UIEXsrpzCo/W8FIGo6jEEMHuQiKfma+E5LXb6WfFFBfCEsO89ZWOSwl2mLE1Yq0d8gagmcaBpQ==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2831,6 +2849,12 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@fontsource-variable/montserrat@5.2.8': {} + + '@fontsource-variable/roboto-mono@5.2.9': {} + + '@fontsource/silkscreen@5.2.8': {} + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7':