From 5ff571881680cc377080714711627022449b8e99 Mon Sep 17 00:00:00 2001 From: baxyz Date: Fri, 6 Mar 2026 22:11:38 +0000 Subject: [PATCH 1/7] feat(CI-CD): :sparkles: Add NPM token envvar --- .devcontainer/devcontainer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3491fa4..382adb2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,6 +18,9 @@ "ghcr.io/helpers4/devcontainer/vite-plus:1": {}, "ghcr.io/helpers4/devcontainer/package-auto-install:1": {} }, + "containerEnv": { + "NPM_TOKEN_WEB_AWESOME": "${localEnv:NPM_TOKEN_WEB_AWESOME}" + }, "forwardPorts": [ 3000, 3001, From 459e02e0a06e63978dda281693a821f6c96b02b5 Mon Sep 17 00:00:00 2001 From: baxyz Date: Fri, 6 Mar 2026 22:58:27 +0000 Subject: [PATCH 2/7] feat(landing): :recycle: Reimplement WebAwesome usage --- assets/logo/Helpers4 Logo.png | Bin 0 -> 67303 bytes landing/index.html | 64 ++++---- landing/package.json | 7 +- landing/public/helpers4-logo.png | Bin 0 -> 67303 bytes landing/qwik.config.ts | 7 - landing/src/components/footer.module.css | 66 --------- landing/src/components/footer.tsx | 83 ----------- landing/src/components/hero.module.css | 91 ------------ landing/src/components/hero.tsx | 42 ------ landing/src/components/libraries.module.css | 63 -------- landing/src/components/libraries.tsx | 102 ------------- landing/src/components/navbar.module.css | 57 -------- landing/src/components/navbar.tsx | 42 ------ landing/src/index.tsx | 20 --- landing/src/lib/github-stats.tsx | 65 --------- landing/src/main.ts | 4 + landing/src/main.tsx | 13 -- landing/src/vite-env.d.ts | 6 - pnpm-lock.yaml | 154 -------------------- 19 files changed, 45 insertions(+), 841 deletions(-) create mode 100644 assets/logo/Helpers4 Logo.png create mode 100644 landing/public/helpers4-logo.png delete mode 100644 landing/qwik.config.ts delete mode 100644 landing/src/components/footer.module.css delete mode 100644 landing/src/components/footer.tsx delete mode 100644 landing/src/components/hero.module.css delete mode 100644 landing/src/components/hero.tsx delete mode 100644 landing/src/components/libraries.module.css delete mode 100644 landing/src/components/libraries.tsx delete mode 100644 landing/src/components/navbar.module.css delete mode 100644 landing/src/components/navbar.tsx delete mode 100644 landing/src/index.tsx delete mode 100644 landing/src/lib/github-stats.tsx create mode 100644 landing/src/main.ts delete mode 100644 landing/src/main.tsx delete mode 100644 landing/src/vite-env.d.ts diff --git a/assets/logo/Helpers4 Logo.png b/assets/logo/Helpers4 Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6f1237f97deeba065b977b1c68e987779c94dc GIT binary patch literal 67303 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 literal 0 HcmV?d00001 diff --git a/landing/index.html b/landing/index.html index 35d2ca0..6e7d7e0 100644 --- a/landing/index.html +++ b/landing/index.html @@ -6,33 +6,47 @@ - - - -
- + +

DevContainer

+

Reusable development container features for consistent environments.

+ Open DevContainer docs +
+ + +

GitHub Action

+

Automation workflows and publishing support for repositories.

+ Open Action docs +
+ + +
+

More updates are coming soon across all helpers4 projects.

+
+ diff --git a/landing/package.json b/landing/package.json index 744b843..9f97807 100644 --- a/landing/package.json +++ b/landing/package.json @@ -6,15 +6,12 @@ "type": "module", "scripts": { "build": "vite build", - "dev": "vite --port 3000", + "dev": "vite --host 0.0.0.0 --port 3000", "preview": "vite preview", "clean": "rm -rf dist .vite" }, "dependencies": { - "@awesome.me/webawesome-pro": "^3.2.1", - "@builder.io/qwik": "^1.19.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@awesome.me/webawesome-pro": "^3.2.1" }, "devDependencies": { "typescript": "^5.3.0", diff --git a/landing/public/helpers4-logo.png b/landing/public/helpers4-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6f1237f97deeba065b977b1c68e987779c94dc GIT binary patch literal 67303 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 literal 0 HcmV?d00001 diff --git a/landing/qwik.config.ts b/landing/qwik.config.ts deleted file mode 100644 index 8cbc12b..0000000 --- a/landing/qwik.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from '@builder.io/qwik/optimizer'; - -export default defineConfig({ - mdx: { - jsxImportSource: '@builder.io/qwik', - }, -}); diff --git a/landing/src/components/footer.module.css b/landing/src/components/footer.module.css deleted file mode 100644 index d1e627c..0000000 --- a/landing/src/components/footer.module.css +++ /dev/null @@ -1,66 +0,0 @@ -.footer { - background: var(--wa-color-surface-highest); - color: var(--wa-color-text-primary); - padding: 3rem 0 1rem 0; - margin-top: 4rem; - border-top: 1px solid var(--wa-color-stroke-default); -} - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 var(--wa-space-m); -} - -.grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 2rem; - margin-bottom: 2rem; -} - -.section h4 { - font-size: 0.95rem; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.05em; - margin: 0 0 1rem 0; - color: var(--wa-color-text-primary); -} - -.section ul { - list-style: none; - padding: 0; - margin: 0; -} - -.section li { - margin-bottom: 0.5rem; -} - -.section a { - color: var(--wa-color-text-secondary); - text-decoration: none; - transition: color 0.2s ease; - font-size: 0.9rem; -} - -.section a:hover { - color: var(--wa-color-brand-500); -} - -.bottom { - padding-top: 2rem; - text-align: center; -} - -.bottom p { - margin: 0.5rem 0; - font-size: 0.9rem; - color: var(--wa-color-text-secondary); -} - -.license { - font-size: 0.8rem; - color: var(--wa-color-text-tertiary); -} diff --git a/landing/src/components/footer.tsx b/landing/src/components/footer.tsx deleted file mode 100644 index 96856d1..0000000 --- a/landing/src/components/footer.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { component$ } from '@builder.io/qwik'; -import styles from './footer.module.css'; - -export const Footer = component$(() => { - return ( -
-
-
-
-

Organization

-
    -
  • - - - GitHub Organization - -
  • -
  • - - - All Repositories - -
  • -
-
- -
-

Libraries

-
    -
  • - - - TypeScript - -
  • -
  • - - - DevContainer - -
  • -
  • - - - GitHub Actions - -
  • -
-
- -
-

Links

-
    -
  • - - - npm Organization - -
  • -
  • - - - GitHub Marketplace - -
  • -
-
-
- - - -
-

- Built with ❤️ by the helpers4 community -

-

- AGPL-3.0 License - See individual repositories for details -

-
-
-
- ); -}); diff --git a/landing/src/components/hero.module.css b/landing/src/components/hero.module.css deleted file mode 100644 index dcbca15..0000000 --- a/landing/src/components/hero.module.css +++ /dev/null @@ -1,91 +0,0 @@ -.hero { - background: linear-gradient( - 135deg, - var(--wa-color-brand-900) 0%, - var(--wa-color-brand-700) 100% - ); - color: var(--wa-color-text-inverse-primary); - padding: 5rem var(--wa-space-m); - text-align: center; - min-height: 600px; - display: flex; - align-items: center; - justify-content: center; -} - -.content { - max-width: 800px; - margin: 0 auto; -} - -.title { - font-size: 3.5rem; - font-weight: 800; - line-height: 1.1; - margin: 0 0 1.5rem 0; - letter-spacing: -0.02em; -} - -.subtitle { - font-size: 1.25rem; - line-height: 1.8; - color: rgba(255, 255, 255, 0.9); - margin: 0 0 2rem 0; - max-width: 600px; - margin-left: auto; - margin-right: auto; -} - -.stats { - display: flex; - justify-content: center; - gap: var(--wa-space-l); - flex-wrap: wrap; - margin: 2rem 0; -} - -.stat { - min-width: 150px; - text-align: center; -} - -.stat::part(base) { - background: rgba(255, 255, 255, 0.1); - backdrop-filter: blur(10px); - border-color: rgba(255, 255, 255, 0.2); -} - -.statValue { - font-size: 2.5rem; - font-weight: 700; - margin: 0 0 0.5rem 0; -} - -.statLabel { - font-size: 0.95rem; - color: rgba(255, 255, 255, 0.8); - text-transform: uppercase; - letter-spacing: 0.05em; - font-weight: 500; -} - -.cta { - display: flex; - gap: var(--wa-space-m); - justify-content: center; - flex-wrap: wrap; -} - -@media (max-width: 768px) { - .title { - font-size: 2.5rem; - } - - .subtitle { - font-size: 1.05rem; - } - - .cta { - flex-direction: column; - } -} diff --git a/landing/src/components/hero.tsx b/landing/src/components/hero.tsx deleted file mode 100644 index 72fc639..0000000 --- a/landing/src/components/hero.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { component$ } from '@builder.io/qwik'; -import styles from './hero.module.css'; - -export const Hero = component$(() => { - return ( -
-
-

helpers4

-

- Modern open-source utilities for TypeScript, DevContainers, and GitHub Actions.
- Tree-shakable • Zero dependencies • Modular -

- -
- -
3
-
Libraries
-
- -
12+
-
Categories
-
- -
-
Tree-shakable
-
-
- -
- - - Explore Libraries - - - - View on GitHub - -
-
-
- ); -}); diff --git a/landing/src/components/libraries.module.css b/landing/src/components/libraries.module.css deleted file mode 100644 index e6e0357..0000000 --- a/landing/src/components/libraries.module.css +++ /dev/null @@ -1,63 +0,0 @@ -.section { - padding: 4rem 0; - background: linear-gradient(180deg, #ffffff 0%, #f3f4f6 100%); -} - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 var(--wa-space-m); -} - -.title { - font-size: 2.5rem; - font-weight: 700; - text-align: center; - margin: 0 0 0.5rem 0; - color: var(--wa-color-text-primary); -} - -.subtitle { - font-size: 1.125rem; - text-align: center; - color: var(--wa-color-text-secondary); - margin: 0 0 2rem 0; - max-width: 600px; - margin-left: auto; - margin-right: auto; -} - -.grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); - gap: 2rem; - margin-top: 2rem; -} - -.card { - display: flex; - flex-direction: column; - height: 100%; -} - -.description { - color: var(--wa-color-text-secondary); - line-height: 1.6; - margin: 0 0 1.25rem 0; - flex: 1; - font-size: 0.95rem; -} - -.badges { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - margin: 1rem 0; -} - -.loading, -.error { - text-align: center; - padding: var(--wa-space-l); - color: var(--wa-color-text-secondary); -} diff --git a/landing/src/components/libraries.tsx b/landing/src/components/libraries.tsx deleted file mode 100644 index 0bdba10..0000000 --- a/landing/src/components/libraries.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { component$, Resource } from '@builder.io/qwik'; -import { GithubCard, useGithubStats } from '../lib/github-stats'; -import styles from './libraries.module.css'; - -export const Libraries = component$(() => { - const githubStats = useGithubStats(); - - return ( -
-
-

Libraries

-

- Essential tools for modern development -

- -
- ( -
- - Loading stats... -
- )} - onRejected={() => ( - - - Failed to load stats - - )} - onResolved={(stats) => ( - <> - -
-

TypeScript Helpers

- -
-

- Tree-shakable utility functions: arrays, dates, numbers, objects, promises, strings, URLs, versions, and more. -

-
- TypeScript - ESM - Versioned -
-
- - - Learn more - -
-
- - -
-

DevContainer Features

- -
-

- Pre-configured dev container features for modern web development. Vite, TypeScript, Git tools, and more. -

-
- Docker - 7 Features - Dev -
-
- - - Learn more - -
-
- - -
-

GitHub Actions

- -
-

- Reusable actions for CI/CD workflows. Commit validation, releases, and automation. -

-
- CI/CD - GitHub - Automation -
-
- - - Learn more - -
-
- - )} - /> -
-
-
- ); -}); diff --git a/landing/src/components/navbar.module.css b/landing/src/components/navbar.module.css deleted file mode 100644 index 76ee9ca..0000000 --- a/landing/src/components/navbar.module.css +++ /dev/null @@ -1,57 +0,0 @@ -.navbar { - background: var(--wa-color-surface-high); - border-bottom: 1px solid var(--wa-color-stroke-default); - position: sticky; - top: 0; - z-index: 1000; -} - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 var(--wa-space-m); - display: flex; - justify-content: space-between; - align-items: center; - height: 70px; -} - -.logo { - display: flex; - align-items: center; - gap: 0.75rem; - text-decoration: none; - font-weight: 700; - font-size: 1.25rem; - color: var(--wa-color-text-primary); -} - -.icon { - background: linear-gradient(135deg, var(--wa-color-brand-400), var(--wa-color-brand-600)); - color: white; - width: 32px; - height: 32px; - border-radius: 0.5rem; - display: flex; - align-items: center; - justify-content: center; - font-weight: 800; - font-size: 0.85rem; -} - -.links { - display: flex; - gap: var(--wa-space-l); - align-items: center; -} - -.link { - color: var(--wa-color-text-secondary); - text-decoration: none; - font-weight: 500; - transition: color 0.2s ease; -} - -.link:hover { - color: var(--wa-color-brand-500); -} diff --git a/landing/src/components/navbar.tsx b/landing/src/components/navbar.tsx deleted file mode 100644 index 6eaa419..0000000 --- a/landing/src/components/navbar.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { component$ } from '@builder.io/qwik'; -import styles from './navbar.module.css'; - -export const NavBar = component$(() => { - return ( -
-
- - h4 - helpers4 - -
- - Libraries - - - - GitHub - - - - Docs - -
-
-
- ); -}); diff --git a/landing/src/index.tsx b/landing/src/index.tsx deleted file mode 100644 index 90534b5..0000000 --- a/landing/src/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { component$ } from '@builder.io/qwik'; -import { NavBar } from './components/navbar'; -import { Hero } from './components/hero'; -import { Libraries } from './components/libraries'; -import { Footer } from './components/footer'; - -export default component$(() => { - return ( - -
- -
- - -
-
-
-
- ); -}); diff --git a/landing/src/lib/github-stats.tsx b/landing/src/lib/github-stats.tsx deleted file mode 100644 index 8fcc406..0000000 --- a/landing/src/lib/github-stats.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { component$, useResource$, Resource } from '@builder.io/qwik'; - -interface GithubRepo { - name: string; - url: string; - stars: number; - issues: number; - description: string; -} - -interface GithubStats { - typescript: GithubRepo; - devcontainer: GithubRepo; - action: GithubRepo; -} - -export const useGithubStats = () => { - return useResource$(async () => { - const repos = ['typescript', 'devcontainer', 'action']; - const stats: any = {}; - - try { - for (const repo of repos) { - const response = await fetch(`https://api.github.com/repos/helpers4/${repo}`); - if (response.ok) { - const data = await response.json(); - stats[repo] = { - name: data.name, - url: data.html_url, - stars: data.stargazers_count || 0, - issues: data.open_issues_count || 0, - description: data.description || '', - }; - } - } - } catch (error) { - console.error('Failed to fetch GitHub stats:', error); - } - - return stats as GithubStats; - }); -}; - -export const GithubCard = component$<{ repo: GithubRepo| undefined }>( - ({ repo }) => { - if (!repo) { - return
Loading...
; - } - - return ( - - ); - } -); diff --git a/landing/src/main.ts b/landing/src/main.ts new file mode 100644 index 0000000..21ecdda --- /dev/null +++ b/landing/src/main.ts @@ -0,0 +1,4 @@ +import '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; +import '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; +import '@awesome.me/webawesome-pro/dist/components/card/card.js'; +import '@awesome.me/webawesome-pro/dist/components/button/button.js'; diff --git a/landing/src/main.tsx b/landing/src/main.tsx deleted file mode 100644 index e3a4f8e..0000000 --- a/landing/src/main.tsx +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; -import '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; -import '@awesome.me/webawesome-pro'; - -import { render } from '@builder.io/qwik'; -import App from './index'; - -const root = document.getElementById('root'); -if (root) { - render(root, ); -} diff --git a/landing/src/vite-env.d.ts b/landing/src/vite-env.d.ts deleted file mode 100644 index bc4bbf1..0000000 --- a/landing/src/vite-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -declare module '*.module.css' { - const classes: { [key: string]: string }; - export default classes; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db2ae0c..2521649 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,19 +115,6 @@ importers: version: 5.9.3 landing: - dependencies: - '@awesome.me/webawesome-pro': - specifier: ^3.2.1 - version: 3.2.1(@floating-ui/utils@0.2.10)(@types/react@18.3.28) - '@builder.io/qwik': - specifier: ^1.19.0 - version: 1.19.0(vite@7.3.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0)) - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) devDependencies: typescript: specifier: ^5.3.0 @@ -211,10 +198,6 @@ packages: resolution: {integrity: sha512-rprr8yA/tcoNoqoKFRm/6hBRsosMfcUSHVDGsi//hjo3g5BLwLtlzBxmhb47/7YjwfEQHtIDvu7L7qkY3kmC/g==} engines: {node: '>= 14.0.0'} - '@awesome.me/webawesome-pro@3.2.1': - resolution: {integrity: sha512-6rDqIpkHDozUL3pcrzvsN/3pjAKCD3JPVg2igb/RRHp+6CwU+GgPkEuRVaTfoj3Jq5/Sj+raWpcA3jvQUViaog==} - engines: {node: '>=14.17.0'} - '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -785,13 +768,6 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@builder.io/qwik@1.19.0': - resolution: {integrity: sha512-KT3auaIo52cGiw4xrNK91LTiJQ45o5ikUQ4RSoHOQYhioOjUa+WLdrUBVwHVW5KMzpmnhehWHra8p/8/6Xf4Ng==} - engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} - hasBin: true - peerDependencies: - vite: '>=5 <8' - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1096,10 +1072,6 @@ packages: peerDependencies: postcss: ^8.4 - '@ctrl/tinycolor@4.1.0': - resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} - engines: {node: '>=14'} - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -1461,15 +1433,6 @@ packages: cpu: [x64] os: [win32] - '@floating-ui/core@1.7.4': - resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} - - '@floating-ui/dom@1.7.5': - resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} - - '@floating-ui/utils@0.2.10': - resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1626,17 +1589,6 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@lit-labs/ssr-dom-shim@1.5.1': - resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} - - '@lit/react@1.0.8': - resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} - peerDependencies: - '@types/react': 17 || 18 || 19 - - '@lit/reactive-element@2.1.2': - resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} - '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} @@ -1854,12 +1806,6 @@ packages: cpu: [x64] os: [win32] - '@shoelace-style/animations@1.2.0': - resolution: {integrity: sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw==} - - '@shoelace-style/localize@3.2.1': - resolution: {integrity: sha512-r4C9C/5kSfMBIr0D9imvpRdCNXtUNgyYThc4YlS6K5Hchv1UyxNQ9mxwj+BTRH2i1Neits260sR3OjKMnplsFA==} - '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2112,9 +2058,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2567,11 +2510,6 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - composed-offset-position@0.0.6: - resolution: {integrity: sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw==} - peerDependencies: - '@floating-ui/utils': ^0.2.5 - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -3689,15 +3627,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lit-element@4.2.2: - resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} - - lit-html@3.3.2: - resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} - - lit@3.3.2: - resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -4038,11 +3967,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.6: - resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} - engines: {node: ^18 || >=20} - hasBin: true - negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -4685,9 +4609,6 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} - qr-creator@1.0.0: - resolution: {integrity: sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ==} - qs@6.14.2: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} @@ -5697,21 +5618,6 @@ snapshots: dependencies: '@algolia/client-common': 5.48.2 - '@awesome.me/webawesome-pro@3.2.1(@floating-ui/utils@0.2.10)(@types/react@18.3.28)': - dependencies: - '@ctrl/tinycolor': 4.1.0 - '@floating-ui/dom': 1.7.5 - '@lit/react': 1.0.8(@types/react@18.3.28) - '@shoelace-style/animations': 1.2.0 - '@shoelace-style/localize': 3.2.1 - composed-offset-position: 0.0.6(@floating-ui/utils@0.2.10) - lit: 3.3.2 - nanoid: 5.1.6 - qr-creator: 1.0.0 - transitivePeerDependencies: - - '@floating-ui/utils' - - '@types/react' - '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -6465,13 +6371,6 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@builder.io/qwik@1.19.0(vite@7.3.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0))': - dependencies: - csstype: 3.2.3 - launch-editor: 2.12.0 - rollup: 4.57.1 - vite: 7.3.1(@types/node@25.2.3)(jiti@1.21.7)(terser@5.46.0) - '@colors/colors@1.5.0': optional: true @@ -6784,8 +6683,6 @@ snapshots: dependencies: postcss: 8.5.6 - '@ctrl/tinycolor@4.1.0': {} - '@discoveryjs/json-ext@0.5.7': {} '@docsearch/core@4.5.4(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -7812,17 +7709,6 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@floating-ui/core@1.7.4': - dependencies: - '@floating-ui/utils': 0.2.10 - - '@floating-ui/dom@1.7.5': - dependencies: - '@floating-ui/core': 1.7.4 - '@floating-ui/utils': 0.2.10 - - '@floating-ui/utils@0.2.10': {} - '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': @@ -7995,16 +7881,6 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@lit-labs/ssr-dom-shim@1.5.1': {} - - '@lit/react@1.0.8(@types/react@18.3.28)': - dependencies: - '@types/react': 18.3.28 - - '@lit/reactive-element@2.1.2': - dependencies: - '@lit-labs/ssr-dom-shim': 1.5.1 - '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 @@ -8240,10 +8116,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true - '@shoelace-style/animations@1.2.0': {} - - '@shoelace-style/localize@3.2.1': {} - '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -8539,8 +8411,6 @@ snapshots: dependencies: '@types/node': 20.19.33 - '@types/trusted-types@2.0.7': {} - '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -9049,10 +8919,6 @@ snapshots: common-path-prefix@3.0.0: {} - composed-offset-position@0.0.6(@floating-ui/utils@0.2.10): - dependencies: - '@floating-ui/utils': 0.2.10 - compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -10266,22 +10132,6 @@ snapshots: lines-and-columns@1.2.4: {} - lit-element@4.2.2: - dependencies: - '@lit-labs/ssr-dom-shim': 1.5.1 - '@lit/reactive-element': 2.1.2 - lit-html: 3.3.2 - - lit-html@3.3.2: - dependencies: - '@types/trusted-types': 2.0.7 - - lit@3.3.2: - dependencies: - '@lit/reactive-element': 2.1.2 - lit-element: 4.2.2 - lit-html: 3.3.2 - loader-runner@4.3.1: {} loader-utils@2.0.4: @@ -10900,8 +10750,6 @@ snapshots: nanoid@3.3.11: {} - nanoid@5.1.6: {} - negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -11593,8 +11441,6 @@ snapshots: pvutils@1.1.5: {} - qr-creator@1.0.0: {} - qs@6.14.2: dependencies: side-channel: 1.1.0 From c19b3ec849ec090713ee5102dd73c8d2a85fe3eb Mon Sep 17 00:00:00 2001 From: baxyz Date: Fri, 6 Mar 2026 23:30:02 +0000 Subject: [PATCH 3/7] feat(landing): :sparkles: Migrate to React and update project structure --- landing/index.html | 43 ++--------- landing/package.json | 6 +- landing/src/main.ts | 4 -- landing/src/main.tsx | 147 ++++++++++++++++++++++++++++++++++++++ landing/src/vite-env.d.ts | 26 +++++++ landing/tsconfig.json | 3 +- 6 files changed, 186 insertions(+), 43 deletions(-) delete mode 100644 landing/src/main.ts create mode 100644 landing/src/main.tsx create mode 100644 landing/src/vite-env.d.ts diff --git a/landing/index.html b/landing/index.html index 6e7d7e0..383a0b8 100644 --- a/landing/index.html +++ b/landing/index.html @@ -10,43 +10,14 @@ - + -
-
- helpers4 logo -

helpers4

-

Open-source tooling for TypeScript helpers, DevContainer features, and GitHub Actions.

-
- -
-

Choose a library to explore its documentation:

-
- -
- -

TypeScript

-

Tree-shakable utility functions with strict typing.

- Open TypeScript docs -
- - -

DevContainer

-

Reusable development container features for consistent environments.

- Open DevContainer docs -
- - -

GitHub Action

-

Automation workflows and publishing support for repositories.

- Open Action docs -
-
- -
-

More updates are coming soon across all helpers4 projects.

-
-
+ +
diff --git a/landing/package.json b/landing/package.json index 9f97807..a2f2c25 100644 --- a/landing/package.json +++ b/landing/package.json @@ -11,9 +11,13 @@ "clean": "rm -rf dist .vite" }, "dependencies": { - "@awesome.me/webawesome-pro": "^3.2.1" + "@awesome.me/webawesome-pro": "^3.2.1", + "react": "^18.3.1", + "react-dom": "^18.3.1" }, "devDependencies": { + "@types/react": "^18.3.28", + "@types/react-dom": "^18.3.5", "typescript": "^5.3.0", "vite": "^7.3.1" } diff --git a/landing/src/main.ts b/landing/src/main.ts deleted file mode 100644 index 21ecdda..0000000 --- a/landing/src/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; -import '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; -import '@awesome.me/webawesome-pro/dist/components/card/card.js'; -import '@awesome.me/webawesome-pro/dist/components/button/button.js'; diff --git a/landing/src/main.tsx b/landing/src/main.tsx new file mode 100644 index 0000000..b391d59 --- /dev/null +++ b/landing/src/main.tsx @@ -0,0 +1,147 @@ +import { useEffect, useMemo, useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; +import '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; +import '@awesome.me/webawesome-pro/dist/components/card/card.js'; +import '@awesome.me/webawesome-pro/dist/components/button/button.js'; + +type ProjectCard = { + name: string; + description: string; + docsHref: string; + repoPath: string; +}; + +type RepoStars = Record; + +const projects: ProjectCard[] = [ + { + name: 'TypeScript', + description: 'Tree-shakable utility functions with strict typing.', + docsHref: '/ts/', + repoPath: 'helpers4/typescript', + }, + { + name: 'DevContainer', + description: 'Reusable development container features for consistent environments.', + docsHref: '/dev-container/', + repoPath: 'helpers4/devcontainer', + }, + { + name: 'GitHub Action', + description: 'Automation workflows and publishing support for repositories.', + docsHref: '/action/', + repoPath: 'helpers4/action', + }, +]; + +function formatStars(value: number | null): string { + if (value === null) { + return 'N/A'; + } + + if (value >= 1000) { + return `${(value / 1000).toFixed(1)}k`; + } + + return String(value); +} + +async function fetchRepoStars(repoPath: string): Promise { + const response = await fetch(`https://api.github.com/repos/${repoPath}`); + if (!response.ok) { + return null; + } + + const data = (await response.json()) as { stargazers_count?: number }; + return typeof data.stargazers_count === 'number' ? data.stargazers_count : null; +} + +async function fetchAllStars(cards: ProjectCard[]): Promise { + const entries = await Promise.all( + cards.map(async (card) => { + try { + const stars = await fetchRepoStars(card.repoPath); + return [card.repoPath, stars] as const; + } catch { + return [card.repoPath, null] as const; + } + }), + ); + + return Object.fromEntries(entries); +} + +function CardItem({ card, stars }: { card: ProjectCard; stars: number | null }): JSX.Element { + return ( + + // Header +

{card.name}

+ + + {formatStars(stars)} + + + // Body + {card.description} + + // Footer + + + Open {card.name} docs + +
+ ); +} + +function App(): JSX.Element { + const [starsByRepo, setStarsByRepo] = useState({}); + + useEffect(() => { + let active = true; + + void fetchAllStars(projects).then((stars) => { + if (active) { + setStarsByRepo(stars); + } + }); + + return () => { + active = false; + }; + }, []); + + const cards = useMemo( + () => + projects.map((project) => ( + + )), + [starsByRepo], + ); + + return ( +
+
+ helpers4 logo +

helpers4

+

Open-source tooling for TypeScript helpers, DevContainer features, and GitHub Actions.

+
+ +
+

Choose a library to explore its documentation:

+
+ +
{cards}
+ +
+

More updates are coming soon across all helpers4 projects.

+
+
+ ); +} + +const rootElement = document.getElementById('root'); + +if (rootElement) { + createRoot(rootElement).render(); +} diff --git a/landing/src/vite-env.d.ts b/landing/src/vite-env.d.ts new file mode 100644 index 0000000..57f639c --- /dev/null +++ b/landing/src/vite-env.d.ts @@ -0,0 +1,26 @@ +/// +/// + +import type React from 'react'; + +declare module '*.css'; +declare module '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; +declare module '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; + +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + 'wa-card': React.DetailedHTMLProps, HTMLElement> & { + appearance?: string; + }; + 'wa-button': React.DetailedHTMLProps, HTMLElement> & { + appearance?: string; + variant?: string; + href?: string; + target?: string; + rel?: string; + slot?: string; + }; + } + } +} diff --git a/landing/tsconfig.json b/landing/tsconfig.json index fa07a7c..742a625 100644 --- a/landing/tsconfig.json +++ b/landing/tsconfig.json @@ -4,7 +4,6 @@ "module": "ES2022", "lib": ["ES2022", "DOM", "DOM.Iterable"], "jsx": "react-jsx", - "jsxImportSource": "@builder.io/qwik", "declaration": true, "declarationMap": true, "sourceMap": true, @@ -12,7 +11,7 @@ "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "allowSyntheticDefaultImports": true }, From 8c14e8a15f264997ce9f46009882cc760f3acd77 Mon Sep 17 00:00:00 2001 From: baxyz Date: Fri, 6 Mar 2026 23:38:18 +0000 Subject: [PATCH 4/7] feat(landing): :sparkles: Refactor landing page structure --- landing/index.html | 10 +- landing/src/components/CardItem.tsx | 29 ++++++ landing/src/components/CardsList.tsx | 44 +++++++++ landing/src/components/Header.tsx | 13 +++ landing/src/components/index.ts | 7 ++ landing/src/const.ts | 26 ++++++ landing/src/main.tsx | 131 ++------------------------- landing/src/types.ts | 12 +++ landing/src/utils/github.ts | 40 ++++++++ 9 files changed, 186 insertions(+), 126 deletions(-) create mode 100644 landing/src/components/CardItem.tsx create mode 100644 landing/src/components/CardsList.tsx create mode 100644 landing/src/components/Header.tsx create mode 100644 landing/src/components/index.ts create mode 100644 landing/src/const.ts create mode 100644 landing/src/types.ts create mode 100644 landing/src/utils/github.ts diff --git a/landing/index.html b/landing/index.html index 383a0b8..9beac49 100644 --- a/landing/index.html +++ b/landing/index.html @@ -10,14 +10,14 @@ - - - -
+ + +
+ diff --git a/landing/src/components/CardItem.tsx b/landing/src/components/CardItem.tsx new file mode 100644 index 0000000..cf24f7c --- /dev/null +++ b/landing/src/components/CardItem.tsx @@ -0,0 +1,29 @@ +/** + * @license AGPL-3.0-or-later + */ + +import { type ProjectCard } from '../types'; +import { formatStars } from '../utils/github'; + +interface CardItemProps { + card: ProjectCard; + stars: number | null; +} + +export function CardItem({ card, stars }: CardItemProps) { + return ( + +

{card.name}

+ + + {formatStars(stars)} + + +

{card.description}

+ + + Open {card.name} docs + +
+ ); +} diff --git a/landing/src/components/CardsList.tsx b/landing/src/components/CardsList.tsx new file mode 100644 index 0000000..d623575 --- /dev/null +++ b/landing/src/components/CardsList.tsx @@ -0,0 +1,44 @@ +/** + * @license AGPL-3.0-or-later + */ + +import { useEffect, useMemo, useState } from 'react'; +import { type ProjectCard, type RepoStars } from '../types'; +import { fetchAllStars } from '../utils/github'; +import { CardItem } from './CardItem'; + +interface CardsListProps { + projects: ProjectCard[]; +} + +export function CardsList({ projects }: CardsListProps) { + const [starsByRepo, setStarsByRepo] = useState({}); + + useEffect(() => { + let active = true; + + void fetchAllStars(projects.map((p) => p.repoPath)).then((stars) => { + if (active) { + setStarsByRepo(stars); + } + }); + + return () => { + active = false; + }; + }, [projects]); + + const cards = useMemo( + () => + projects.map((project) => ( + + )), + [projects, starsByRepo], + ); + + return ( +
+ {cards} +
+ ); +} diff --git a/landing/src/components/Header.tsx b/landing/src/components/Header.tsx new file mode 100644 index 0000000..b3310d3 --- /dev/null +++ b/landing/src/components/Header.tsx @@ -0,0 +1,13 @@ +/** + * @license AGPL-3.0-or-later + */ + +export function Header() { + return ( +
+ helpers4 logo +

helpers4

+

Open-source tooling for TypeScript helpers, DevContainer features, and GitHub Actions.

+
+ ); +} diff --git a/landing/src/components/index.ts b/landing/src/components/index.ts new file mode 100644 index 0000000..2a1d76b --- /dev/null +++ b/landing/src/components/index.ts @@ -0,0 +1,7 @@ +/** + * @license AGPL-3.0-or-later + */ + +export { CardItem } from './CardItem'; +export { CardsList } from './CardsList'; +export { Header } from './Header'; diff --git a/landing/src/const.ts b/landing/src/const.ts new file mode 100644 index 0000000..fde4d3d --- /dev/null +++ b/landing/src/const.ts @@ -0,0 +1,26 @@ +/** + * @license AGPL-3.0-or-later + */ + +import { type ProjectCard } from './types'; + +export const PROJECTS: ProjectCard[] = [ + { + name: 'TypeScript', + description: 'Tree-shakable utility functions with strict typing.', + docsHref: '/ts/', + repoPath: 'helpers4/typescript', + }, + { + name: 'DevContainer', + description: 'Reusable development container features for consistent environments.', + docsHref: '/dev-container/', + repoPath: 'helpers4/devcontainer', + }, + { + name: 'GitHub Action', + description: 'Automation workflows and publishing support for repositories.', + docsHref: '/action/', + repoPath: 'helpers4/action', + }, +]; diff --git a/landing/src/main.tsx b/landing/src/main.tsx index b391d59..42bdbc2 100644 --- a/landing/src/main.tsx +++ b/landing/src/main.tsx @@ -1,137 +1,26 @@ -import { useEffect, useMemo, useState } from 'react'; +/** + * @license AGPL-3.0-or-later + */ + import { createRoot } from 'react-dom/client'; import '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; import '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; import '@awesome.me/webawesome-pro/dist/components/card/card.js'; import '@awesome.me/webawesome-pro/dist/components/button/button.js'; +import '@awesome.me/webawesome-pro/dist/components/icon/icon.js'; +import { Header, CardsList } from './components'; +import { PROJECTS } from './const'; -type ProjectCard = { - name: string; - description: string; - docsHref: string; - repoPath: string; -}; - -type RepoStars = Record; - -const projects: ProjectCard[] = [ - { - name: 'TypeScript', - description: 'Tree-shakable utility functions with strict typing.', - docsHref: '/ts/', - repoPath: 'helpers4/typescript', - }, - { - name: 'DevContainer', - description: 'Reusable development container features for consistent environments.', - docsHref: '/dev-container/', - repoPath: 'helpers4/devcontainer', - }, - { - name: 'GitHub Action', - description: 'Automation workflows and publishing support for repositories.', - docsHref: '/action/', - repoPath: 'helpers4/action', - }, -]; - -function formatStars(value: number | null): string { - if (value === null) { - return 'N/A'; - } - - if (value >= 1000) { - return `${(value / 1000).toFixed(1)}k`; - } - - return String(value); -} - -async function fetchRepoStars(repoPath: string): Promise { - const response = await fetch(`https://api.github.com/repos/${repoPath}`); - if (!response.ok) { - return null; - } - - const data = (await response.json()) as { stargazers_count?: number }; - return typeof data.stargazers_count === 'number' ? data.stargazers_count : null; -} - -async function fetchAllStars(cards: ProjectCard[]): Promise { - const entries = await Promise.all( - cards.map(async (card) => { - try { - const stars = await fetchRepoStars(card.repoPath); - return [card.repoPath, stars] as const; - } catch { - return [card.repoPath, null] as const; - } - }), - ); - - return Object.fromEntries(entries); -} - -function CardItem({ card, stars }: { card: ProjectCard; stars: number | null }): JSX.Element { - return ( - - // Header -

{card.name}

- - - {formatStars(stars)} - - - // Body - {card.description} - - // Footer - - - Open {card.name} docs - -
- ); -} - -function App(): JSX.Element { - const [starsByRepo, setStarsByRepo] = useState({}); - - useEffect(() => { - let active = true; - - void fetchAllStars(projects).then((stars) => { - if (active) { - setStarsByRepo(stars); - } - }); - - return () => { - active = false; - }; - }, []); - - const cards = useMemo( - () => - projects.map((project) => ( - - )), - [starsByRepo], - ); - +function App() { return (
-
- helpers4 logo -

helpers4

-

Open-source tooling for TypeScript helpers, DevContainer features, and GitHub Actions.

-
+

Choose a library to explore its documentation:

-
{cards}
+

More updates are coming soon across all helpers4 projects.

diff --git a/landing/src/types.ts b/landing/src/types.ts new file mode 100644 index 0000000..a7aaadf --- /dev/null +++ b/landing/src/types.ts @@ -0,0 +1,12 @@ +/** + * @license AGPL-3.0-or-later + */ + +export type ProjectCard = { + name: string; + description: string; + docsHref: string; + repoPath: string; +}; + +export type RepoStars = Record; diff --git a/landing/src/utils/github.ts b/landing/src/utils/github.ts new file mode 100644 index 0000000..c360591 --- /dev/null +++ b/landing/src/utils/github.ts @@ -0,0 +1,40 @@ +/** + * @license AGPL-3.0-or-later + */ + +export function formatStars(value: number | null): string { + if (value === null) { + return 'N/A'; + } + + if (value >= 1000) { + return `${(value / 1000).toFixed(1)}k`; + } + + return String(value); +} + +export async function fetchRepoStars(repoPath: string): Promise { + try { + const response = await fetch(`https://api.github.com/repos/${repoPath}`); + if (!response.ok) { + return null; + } + + const data = (await response.json()) as { stargazers_count?: number }; + return typeof data.stargazers_count === 'number' ? data.stargazers_count : null; + } catch { + return null; + } +} + +export async function fetchAllStars(repoPaths: string[]): Promise> { + const entries = await Promise.all( + repoPaths.map(async (repoPath) => { + const stars = await fetchRepoStars(repoPath); + return [repoPath, stars] as const; + }), + ); + + return Object.fromEntries(entries); +} From bc93cd0382e504f5960b1a0310401a0b35562df2 Mon Sep 17 00:00:00 2001 From: baxyz Date: Sat, 7 Mar 2026 00:28:19 +0000 Subject: [PATCH 5/7] feat(landing): :sparkles: Update CardItem and CardsList components --- landing/src/components/CardItem.tsx | 19 +++++++++++++------ landing/src/components/CardsList.tsx | 10 +++++++--- landing/src/components/Header.tsx | 1 - landing/src/const.ts | 12 +++++++++--- landing/src/main.tsx | 17 ++++++++++------- landing/src/types.ts | 4 +++- landing/src/vite-env.d.ts | 10 ++++++++++ 7 files changed, 52 insertions(+), 21 deletions(-) diff --git a/landing/src/components/CardItem.tsx b/landing/src/components/CardItem.tsx index cf24f7c..00d07be 100644 --- a/landing/src/components/CardItem.tsx +++ b/landing/src/components/CardItem.tsx @@ -12,18 +12,25 @@ interface CardItemProps { export function CardItem({ card, stars }: CardItemProps) { return ( - -

{card.name}

+ + {/* Header */} +

{card.title}

{formatStars(stars)} -

{card.description}

+ {/* Body */} + {card.description} - - Open {card.name} docs - + {/* Footer */} + +
+ Open {card.label} docs + + GitHub + +
); } diff --git a/landing/src/components/CardsList.tsx b/landing/src/components/CardsList.tsx index d623575..4a5487a 100644 --- a/landing/src/components/CardsList.tsx +++ b/landing/src/components/CardsList.tsx @@ -12,11 +12,15 @@ interface CardsListProps { } export function CardsList({ projects }: CardsListProps) { - const [starsByRepo, setStarsByRepo] = useState({}); + const [starsByRepo, setStarsByRepo] = useState(() => { + // Initialize with hardcoded stars to avoid GitHub API rate limit + return Object.fromEntries(projects.map((p) => [p.repoPath, p.stars ?? null])); + }); useEffect(() => { let active = true; + // Try to fetch live stars, but fallback to hardcoded values on rate limit void fetchAllStars(projects.map((p) => p.repoPath)).then((stars) => { if (active) { setStarsByRepo(stars); @@ -31,13 +35,13 @@ export function CardsList({ projects }: CardsListProps) { const cards = useMemo( () => projects.map((project) => ( - + )), [projects, starsByRepo], ); return ( -
+
{cards}
); diff --git a/landing/src/components/Header.tsx b/landing/src/components/Header.tsx index b3310d3..fb69742 100644 --- a/landing/src/components/Header.tsx +++ b/landing/src/components/Header.tsx @@ -7,7 +7,6 @@ export function Header() {
helpers4 logo

helpers4

-

Open-source tooling for TypeScript helpers, DevContainer features, and GitHub Actions.

); } diff --git a/landing/src/const.ts b/landing/src/const.ts index fde4d3d..48fcca1 100644 --- a/landing/src/const.ts +++ b/landing/src/const.ts @@ -6,21 +6,27 @@ import { type ProjectCard } from './types'; export const PROJECTS: ProjectCard[] = [ { - name: 'TypeScript', + title: 'For JS and TypeScript', + label: 'TypeScript', description: 'Tree-shakable utility functions with strict typing.', docsHref: '/ts/', repoPath: 'helpers4/typescript', + stars: 0, }, { - name: 'DevContainer', + title: 'For Dev Container', + label: 'Dev Container', description: 'Reusable development container features for consistent environments.', docsHref: '/dev-container/', repoPath: 'helpers4/devcontainer', + stars: 0, }, { - name: 'GitHub Action', + title: 'For GitHub Action', + label: 'GitHub Action', description: 'Automation workflows and publishing support for repositories.', docsHref: '/action/', repoPath: 'helpers4/action', + stars: 0, }, ]; diff --git a/landing/src/main.tsx b/landing/src/main.tsx index 42bdbc2..05b09f6 100644 --- a/landing/src/main.tsx +++ b/landing/src/main.tsx @@ -13,19 +13,22 @@ import { PROJECTS } from './const'; function App() { return ( -
+
-

Choose a library to explore its documentation:

+

+ Open-source libraries for developers. +

+

+ Free to use under the AGPL-3.0 license, including commercial use. + Modifications must be shared under the same license. + If you use this code to provide a network service, you must make the source code available to users. +

- -
-

More updates are coming soon across all helpers4 projects.

-
-
+ ); } diff --git a/landing/src/types.ts b/landing/src/types.ts index a7aaadf..226f8a3 100644 --- a/landing/src/types.ts +++ b/landing/src/types.ts @@ -3,10 +3,12 @@ */ export type ProjectCard = { - name: string; + title: string; + label: string; description: string; docsHref: string; repoPath: string; + stars?: number; }; export type RepoStars = Record; diff --git a/landing/src/vite-env.d.ts b/landing/src/vite-env.d.ts index 57f639c..7927712 100644 --- a/landing/src/vite-env.d.ts +++ b/landing/src/vite-env.d.ts @@ -6,10 +6,15 @@ import type React from 'react'; declare module '*.css'; declare module '@awesome.me/webawesome-pro/dist/styles/webawesome.css'; declare module '@awesome.me/webawesome-pro/dist/styles/themes/tailspin.css'; +declare module '@awesome.me/webawesome-pro/dist/components/page/page.js'; +declare module '@awesome.me/webawesome-pro/dist/components/card/card.js'; +declare module '@awesome.me/webawesome-pro/dist/components/button/button.js'; +declare module '@awesome.me/webawesome-pro/dist/components/icon/icon.js'; declare module 'react' { namespace JSX { interface IntrinsicElements { + 'wa-page': React.DetailedHTMLProps, HTMLElement>; 'wa-card': React.DetailedHTMLProps, HTMLElement> & { appearance?: string; }; @@ -21,6 +26,11 @@ declare module 'react' { rel?: string; slot?: string; }; + 'wa-icon': React.DetailedHTMLProps, HTMLElement> & { + name?: string; + variant?: string; + label?: string; + }; } } } From 0ca6c54c9141b8cc607adfb8f6a30062b640902d Mon Sep 17 00:00:00 2001 From: baxyz Date: Sat, 7 Mar 2026 00:33:16 +0000 Subject: [PATCH 6/7] chore: update pnpm-lock.yaml with React dependencies for landing --- pnpm-lock.yaml | 163 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2521649..f681d18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,23 @@ importers: version: 5.9.3 landing: + dependencies: + '@awesome.me/webawesome-pro': + specifier: ^3.2.1 + version: 3.3.1(@floating-ui/utils@0.2.11)(@types/react@18.3.28) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) devDependencies: + '@types/react': + specifier: ^18.3.28 + version: 18.3.28 + '@types/react-dom': + specifier: ^18.3.5 + version: 18.3.7(@types/react@18.3.28) typescript: specifier: ^5.3.0 version: 5.9.3 @@ -198,6 +214,10 @@ packages: resolution: {integrity: sha512-rprr8yA/tcoNoqoKFRm/6hBRsosMfcUSHVDGsi//hjo3g5BLwLtlzBxmhb47/7YjwfEQHtIDvu7L7qkY3kmC/g==} engines: {node: '>= 14.0.0'} + '@awesome.me/webawesome-pro@3.3.1': + resolution: {integrity: sha512-MeDDXApCmMboDNBVeRiCf2HWEmu0hFLz81etmPuP+VQkxe9cdGKlUmiBpxLjv5C1ma6UaVQ1izcx5Zffeh0zGA==} + engines: {node: '>=14.17.0'} + '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -1072,6 +1092,10 @@ packages: peerDependencies: postcss: ^8.4 + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -1433,6 +1457,15 @@ packages: cpu: [x64] os: [win32] + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + + '@floating-ui/dom@1.7.6': + resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1586,9 +1619,23 @@ packages: peerDependencies: tslib: '2' + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + '@lit-labs/ssr-dom-shim@1.5.1': + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} + + '@lit/react@1.0.8': + resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + + '@lit/reactive-element@2.1.2': + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} @@ -1806,6 +1853,12 @@ packages: cpu: [x64] os: [win32] + '@shoelace-style/animations@1.2.0': + resolution: {integrity: sha512-avvo1xxkLbv2dgtabdewBbqcJfV0e0zCwFqkPMnHFGbJbBHorRFfMAHh1NG9ymmXn0jW95ibUVH03E1NYXD6Gw==} + + '@shoelace-style/localize@3.2.1': + resolution: {integrity: sha512-r4C9C/5kSfMBIr0D9imvpRdCNXtUNgyYThc4YlS6K5Hchv1UyxNQ9mxwj+BTRH2i1Neits260sR3OjKMnplsFA==} + '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2058,6 +2111,9 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2422,6 +2478,10 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + chart.js@4.5.1: + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} + cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -2510,6 +2570,11 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + composed-offset-position@0.0.6: + resolution: {integrity: sha512-Q7dLompI6lUwd7LWyIcP66r4WcS9u7AL2h8HaeipiRfCRPLMWqRx8fYsjb4OHi6UQFifO7XtNC2IlEJ1ozIFxw==} + peerDependencies: + '@floating-ui/utils': ^0.2.5 + compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -3627,6 +3692,15 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lit-element@4.2.2: + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} + + lit-html@3.3.2: + resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} + + lit@3.3.2: + resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==} + loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -3967,6 +4041,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + hasBin: true + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -4609,6 +4688,9 @@ packages: resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} engines: {node: '>=16.0.0'} + qr-creator@1.0.0: + resolution: {integrity: sha512-C0cqfbS1P5hfqN4NhsYsUXePlk9BO+a45bAQ3xLYjBL3bOIFzoVEjs79Fado9u9BPBD3buHi3+vY+C8tHh4qMQ==} + qs@6.14.2: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} @@ -5072,6 +5154,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-observer@0.1.2: + resolution: {integrity: sha512-VdGkVx7dGqEzosau63CI33vRJsAGKPJCXyS9f5ze7gFbgsXm0wt5liXUNB9+YjyfhMyD+iTwNa7sM4cvpP3N9Q==} + style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -5618,6 +5703,23 @@ snapshots: dependencies: '@algolia/client-common': 5.48.2 + '@awesome.me/webawesome-pro@3.3.1(@floating-ui/utils@0.2.11)(@types/react@18.3.28)': + dependencies: + '@ctrl/tinycolor': 4.1.0 + '@floating-ui/dom': 1.7.6 + '@lit/react': 1.0.8(@types/react@18.3.28) + '@shoelace-style/animations': 1.2.0 + '@shoelace-style/localize': 3.2.1 + chart.js: 4.5.1 + composed-offset-position: 0.0.6(@floating-ui/utils@0.2.11) + lit: 3.3.2 + nanoid: 5.1.6 + qr-creator: 1.0.0 + style-observer: 0.1.2 + transitivePeerDependencies: + - '@floating-ui/utils' + - '@types/react' + '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -6683,6 +6785,8 @@ snapshots: dependencies: postcss: 8.5.6 + '@ctrl/tinycolor@4.1.0': {} + '@discoveryjs/json-ext@0.5.7': {} '@docsearch/core@4.5.4(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -7709,6 +7813,17 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.6': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/utils@0.2.11': {} + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': @@ -7879,8 +7994,20 @@ snapshots: '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 + '@kurkle/color@0.3.4': {} + '@leichtgewicht/ip-codec@2.0.5': {} + '@lit-labs/ssr-dom-shim@1.5.1': {} + + '@lit/react@1.0.8(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + + '@lit/reactive-element@2.1.2': + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 @@ -8116,6 +8243,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true + '@shoelace-style/animations@1.2.0': {} + + '@shoelace-style/localize@3.2.1': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -8411,6 +8542,8 @@ snapshots: dependencies: '@types/node': 20.19.33 + '@types/trusted-types@2.0.7': {} + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -8834,6 +8967,10 @@ snapshots: character-reference-invalid@2.0.1: {} + chart.js@4.5.1: + dependencies: + '@kurkle/color': 0.3.4 + cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -8919,6 +9056,10 @@ snapshots: common-path-prefix@3.0.0: {} + composed-offset-position@0.0.6(@floating-ui/utils@0.2.11): + dependencies: + '@floating-ui/utils': 0.2.11 + compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -10132,6 +10273,22 @@ snapshots: lines-and-columns@1.2.4: {} + lit-element@4.2.2: + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + '@lit/reactive-element': 2.1.2 + lit-html: 3.3.2 + + lit-html@3.3.2: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@3.3.2: + dependencies: + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 + loader-runner@4.3.1: {} loader-utils@2.0.4: @@ -10750,6 +10907,8 @@ snapshots: nanoid@3.3.11: {} + nanoid@5.1.6: {} + negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -11441,6 +11600,8 @@ snapshots: pvutils@1.1.5: {} + qr-creator@1.0.0: {} + qs@6.14.2: dependencies: side-channel: 1.1.0 @@ -12052,6 +12213,8 @@ snapshots: strip-json-comments@3.1.1: {} + style-observer@0.1.2: {} + style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 From 5c1d9e780243484d617e0158ea9de2ef42d52fad Mon Sep 17 00:00:00 2001 From: baxyz Date: Sat, 7 Mar 2026 00:46:35 +0000 Subject: [PATCH 7/7] feat(landing): :sparkles: Switch to dark mode --- landing/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landing/index.html b/landing/index.html index 9beac49..c3c1580 100644 --- a/landing/index.html +++ b/landing/index.html @@ -1,5 +1,5 @@ - + helpers4 - Open Source Utilities