From 54faec3540c6fa7291adee03e7b55544a6476b61 Mon Sep 17 00:00:00 2001 From: Martin Kivi Date: Thu, 15 Oct 2026 14:21:55 +0200 Subject: [PATCH] Inital template --- .eventsourced/session.yaml | 73 + .gitignore | 20 + .oxlintrc.json | 20 + AGENTS.md | 21 + CLAUDE.md | 1 + README.md | 83 + index.html | 22 + mock/server.d.mts | 1 + mock/server.mjs | 67 + package-lock.json | 4300 +++++++++++++++++ package.json | 37 + public/favicon.svg | 28 + public/logo-on-dark.svg | 63 + public/logo.svg | 63 + src/App.tsx | 19 + src/api/client.ts | 22 + src/api/hooks.ts | 29 + src/api/types.ts | 59 + src/components/Layout.tsx | 69 + src/components/Logo.tsx | 13 + src/components/SectionLabel.tsx | 23 + src/components/ThemeProvider.tsx | 47 + src/components/ThemeToggle.tsx | 44 + src/components/dashboard/BudgetCard.tsx | 38 + src/components/dashboard/DeploysTable.tsx | 54 + src/components/dashboard/ErrorNote.tsx | 17 + src/components/dashboard/ResourcesTable.tsx | 57 + src/components/dashboard/SentinelCard.tsx | 40 + src/components/dashboard/StatGrid.tsx | 50 + src/components/dashboard/TeamCard.tsx | 65 + src/components/gallery/AccordionDemo.tsx | 37 + src/components/gallery/BadgesDemo.tsx | 21 + src/components/gallery/ButtonsDemo.tsx | 32 + src/components/gallery/DialogDemo.tsx | 34 + src/components/gallery/FormDemo.tsx | 39 + src/components/gallery/NotificationsDemo.tsx | 48 + src/components/gallery/Section.tsx | 25 + src/components/gallery/ServicesDemo.tsx | 16 + src/components/gallery/TabsDemo.tsx | 35 + .../gallery/TooltipProgressDemo.tsx | 51 + src/components/gallery/UserMenuDemo.tsx | 49 + src/components/home/EnvironmentCard.tsx | 96 + src/components/home/Hero.tsx | 58 + src/components/home/LoopSection.tsx | 52 + src/components/home/StackGrid.tsx | 42 + src/components/ui/Badge.tsx | 34 + src/components/ui/Button.tsx | 46 + src/components/ui/Card.tsx | 39 + src/components/ui/ProgressBar.tsx | 26 + src/components/ui/ServiceIcon.tsx | 27 + src/components/ui/Skeleton.tsx | 4 + src/components/ui/services.ts | 28 + src/index.css | 254 + src/main.tsx | 32 + src/pages/Components.tsx | 64 + src/pages/Dashboard.tsx | 60 + src/pages/Home.tsx | 13 + src/pages/NotFound.tsx | 18 + tsconfig.app.json | 26 + tsconfig.json | 7 + tsconfig.node.json | 23 + vite.config.ts | 27 + 62 files changed, 6808 insertions(+) create mode 100644 .eventsourced/session.yaml create mode 100644 .gitignore create mode 100644 .oxlintrc.json create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 README.md create mode 100644 index.html create mode 100644 mock/server.d.mts create mode 100644 mock/server.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/logo-on-dark.svg create mode 100644 public/logo.svg create mode 100644 src/App.tsx create mode 100644 src/api/client.ts create mode 100644 src/api/hooks.ts create mode 100644 src/api/types.ts create mode 100644 src/components/Layout.tsx create mode 100644 src/components/Logo.tsx create mode 100644 src/components/SectionLabel.tsx create mode 100644 src/components/ThemeProvider.tsx create mode 100644 src/components/ThemeToggle.tsx create mode 100644 src/components/dashboard/BudgetCard.tsx create mode 100644 src/components/dashboard/DeploysTable.tsx create mode 100644 src/components/dashboard/ErrorNote.tsx create mode 100644 src/components/dashboard/ResourcesTable.tsx create mode 100644 src/components/dashboard/SentinelCard.tsx create mode 100644 src/components/dashboard/StatGrid.tsx create mode 100644 src/components/dashboard/TeamCard.tsx create mode 100644 src/components/gallery/AccordionDemo.tsx create mode 100644 src/components/gallery/BadgesDemo.tsx create mode 100644 src/components/gallery/ButtonsDemo.tsx create mode 100644 src/components/gallery/DialogDemo.tsx create mode 100644 src/components/gallery/FormDemo.tsx create mode 100644 src/components/gallery/NotificationsDemo.tsx create mode 100644 src/components/gallery/Section.tsx create mode 100644 src/components/gallery/ServicesDemo.tsx create mode 100644 src/components/gallery/TabsDemo.tsx create mode 100644 src/components/gallery/TooltipProgressDemo.tsx create mode 100644 src/components/gallery/UserMenuDemo.tsx create mode 100644 src/components/home/EnvironmentCard.tsx create mode 100644 src/components/home/Hero.tsx create mode 100644 src/components/home/LoopSection.tsx create mode 100644 src/components/home/StackGrid.tsx create mode 100644 src/components/ui/Badge.tsx create mode 100644 src/components/ui/Button.tsx create mode 100644 src/components/ui/Card.tsx create mode 100644 src/components/ui/ProgressBar.tsx create mode 100644 src/components/ui/ServiceIcon.tsx create mode 100644 src/components/ui/Skeleton.tsx create mode 100644 src/components/ui/services.ts create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/pages/Components.tsx create mode 100644 src/pages/Dashboard.tsx create mode 100644 src/pages/Home.tsx create mode 100644 src/pages/NotFound.tsx create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eventsourced/session.yaml b/.eventsourced/session.yaml new file mode 100644 index 0000000..c2c68f0 --- /dev/null +++ b/.eventsourced/session.yaml @@ -0,0 +1,73 @@ +# .eventsourced/session.yaml for Circuit's frontend template (React + Vite + +# Tailwind, with a mock API that vite.config.ts starts). Commit it at the +# ROOT of the template project; every initiative created from the template +# then has a ready dev server and a published preview when its session +# starts, instead of waiting for the agent (or the preview tab) to start one. +# See docs/circuit-session-startup.md for the design and how to verify it. +# +# It runs only where the deployment sets SESSION_STARTUP=true (Circuit's does), +# and a session can opt out with the per-session `session_startup: false`. +# Port exposure also needs the session to be allowed network.expose, which +# every Circuit mode allows (TestNoCircuitModeDeniesNetworkExpose). +# +# Why each step is written the way it is: +# +# * Install only when node_modules is missing (a worker that kept its +# workspace volume does not reinstall), with `npm ci` when there is a +# lockfile and `npm install` when there is not. +# +# * The dev server binds 0.0.0.0 and uses --strictPort on 5173, the port the +# template serves on (its README says so and vite.config.ts does not set +# another). Circuit's own preview start takes whatever port is published +# first, so the port declared here is the one the preview uses. +# +# * Vite refuses requests whose Host header it does not know ("Blocked +# request. This host is not allowed"). The published host is +#