Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ dev server.
- fuz_ui (@fuzdev/fuz_ui) - UI components, theming, docs system
- fuz_util (@fuzdev/fuz_util) - utility functions
- fuz_code (@fuzdev/fuz_code) - syntax highlighting
- fuz_gitops (@fuzdev/fuz_gitops) - multi-repo management and UI components
- Gro (@fuzdev/gro) - build system and task runner

## SvelteKit app
Expand All @@ -53,6 +54,18 @@ Static site at fuz.dev. Uses `@sveltejs/adapter-static` with prerendering.

- `/` - Main landing page with vision, description, ProjectLinks
- `/about` - About the Fuz ecosystem and fuzdev
- `/tree` - Repo tree view (fuz_gitops), with `/tree/[slug]` per-repo detail
- `/table` - Repo dependency table (fuz_gitops)
- `/modules` - Module explorer (fuz_gitops)
- `/pull_requests` - Pull requests across repos (fuz_gitops)

### Gitops

`gitops.config.ts` lists all public fuzdev repos. Data is generated by
`gro gitops_sync` into `src/routes/repos.json`. Each gitops route has its
own layout for code-splitting (duplicated `repos_context` setup pattern,
same as ryanatkn.com). Presentation will be rethought toward tx-style
dashboard layouts.

Deploy with `gro deploy` (builds and pushes to deploy branch).

Expand All @@ -70,4 +83,5 @@ Deploy with `gro deploy` (builds and pushes to deploy branch).
- [`fuz_css`](../fuz_css/CLAUDE.md) - CSS framework
- [`fuz_ui`](../fuz_ui/CLAUDE.md) - UI components and docs system
- [`fuz_util`](../fuz_util/CLAUDE.md) - utility functions
- [`fuz_gitops`](../fuz_gitops/CLAUDE.md) - multi-repo management UI
- [`gro`](../gro/CLAUDE.md) - build system and task runner
27 changes: 27 additions & 0 deletions gitops.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import type {CreateGitopsConfig} from '@fuzdev/fuz_gitops/gitops_config.js';

const config: CreateGitopsConfig = () => {
return {
repos: [
'https://github.com/fuzdev/fuz_util',
'https://github.com/fuzdev/gro',
'https://github.com/fuzdev/fuz_css',
'https://github.com/fuzdev/fuz_ui',
'https://github.com/fuzdev/fuz_app',
'https://github.com/fuzdev/fuz_template',
'https://github.com/fuzdev/fuz_blog',
'https://github.com/fuzdev/fuz_mastodon',
'https://github.com/fuzdev/fuz_code',
'https://github.com/fuzdev/fuz_gitops',
'https://github.com/fuzdev/zzz',
'https://github.com/fuzdev/fuz_docs',
'https://github.com/fuzdev/tsv.dev',
{
repo_url: 'https://github.com/fuzdev/fuz.dev',
branch: 'main',
},
],
};
};

export default config;
23 changes: 23 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"devDependencies": {
"@fuzdev/fuz_code": "^0.45.1",
"@fuzdev/fuz_css": "^0.53.0",
"@fuzdev/fuz_gitops": "^0.67.0",
"@fuzdev/fuz_ui": "^0.185.1",
"@fuzdev/fuz_util": "^0.52.0",
"@fuzdev/gro": "^0.195.0",
Expand Down
1 change: 1 addition & 0 deletions src/lib/gitops_analyze.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_analyze.task.js';
1 change: 1 addition & 0 deletions src/lib/gitops_plan.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_plan.task.js';
1 change: 1 addition & 0 deletions src/lib/gitops_publish.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_publish.task.js';
1 change: 1 addition & 0 deletions src/lib/gitops_run.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_run.task.js';
1 change: 1 addition & 0 deletions src/lib/gitops_sync.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_sync.task.js';
1 change: 1 addition & 0 deletions src/lib/gitops_validate.task.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from '@fuzdev/fuz_gitops/gitops_validate.task.js';
51 changes: 51 additions & 0 deletions src/routes/fuz.css
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,30 @@ body {
margin-bottom: var(--space_sm);
}

:where(table) {
border-collapse: collapse;
}

:where(thead) {
text-align: left;
}

:where(th) {
font-weight: bold;
}

:where(th, td) {
padding: var(--space_xs3) var(--space_sm);
}

:where(tr) {
border-bottom: 1px solid var(--border_color_10);
}

:where(tr:hover) {
background-color: var(--fg_10);
}

/* Utility Classes */

.box {
Expand All @@ -954,6 +978,12 @@ body {
flex-direction: row;
align-items: center;
}
.ellipsis {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.selectable {
--button_fill: color-mix(in hsl, var(--shade_50) 8%, transparent);
--button_fill_hover: color-mix(in hsl, var(--shade_50) 16%, transparent);
Expand Down Expand Up @@ -1116,6 +1146,9 @@ a.chip {
color: var(--color_j_50);
background-color: var(--color_j_10);
}
.font_family_mono {
font-family: var(--font_family_mono);
}
.font_size_md {
font-size: var(--font_size_md);
--font_size: var(--font_size_md);
Expand Down Expand Up @@ -1219,6 +1252,9 @@ a.chip {
.p_sm {
padding: var(--space_sm);
}
.p_md {
padding: var(--space_md);
}
.p_lg {
padding: var(--space_lg);
}
Expand Down Expand Up @@ -1268,9 +1304,18 @@ a.chip {
.mb_xl3 {
margin-bottom: var(--space_xl3);
}
.mb_xl5 {
margin-bottom: var(--space_xl5);
}
.mb_xl7 {
margin-bottom: var(--space_xl7);
}
.mb_xl9 {
margin-bottom: var(--space_xl9);
}
.gap_xs2 {
gap: var(--space_xs2);
}
.align-items\:center {
align-items: center;
}
Expand All @@ -1289,6 +1334,12 @@ a.chip {
.height\:100\% {
height: 100%;
}
.position\:relative {
position: relative;
}
.text-align\:center {
text-align: center;
}
.width\:100\% {
width: 100%;
}
Expand Down
41 changes: 40 additions & 1 deletion src/routes/library.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"devDependencies": {
"@fuzdev/fuz_code": "^0.45.1",
"@fuzdev/fuz_css": "^0.53.0",
"@fuzdev/fuz_gitops": "^0.67.0",
"@fuzdev/fuz_ui": "^0.185.1",
"@fuzdev/fuz_util": "^0.52.0",
"@fuzdev/gro": "^0.195.0",
Expand Down Expand Up @@ -82,6 +83,44 @@
"source_json": {
"name": "fuz.dev",
"version": "0.0.1",
"modules": []
"modules": [
{
"path": "gitops_analyze.task.ts",
"declarations": []
},
{
"path": "gitops_plan.task.ts",
"declarations": []
},
{
"path": "gitops_publish.task.ts",
"declarations": []
},
{
"path": "gitops_run.task.ts",
"declarations": [
{
"name": "Args",
"kind": "type",
"source_line": 2,
"type_signature": "ZodObject<{ command: ZodString; config: ZodDefault<ZodString>; concurrency: ZodDefault<ZodNumber>; format: ZodDefault<ZodEnum<{ json: \"json\"; text: \"text\"; }>>; }, $strict>"
},
{
"name": "task",
"kind": "variable",
"source_line": 2,
"type_signature": "Task<{ command: string; config: string; concurrency: number; format: \"json\" | \"text\"; }, ZodType<Args, Args, $ZodTypeInternals<Args, Args>>, unknown>"
}
]
},
{
"path": "gitops_sync.task.ts",
"declarations": []
},
{
"path": "gitops_validate.task.ts",
"declarations": []
}
]
}
}
29 changes: 29 additions & 0 deletions src/routes/modules/+layout.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<script lang="ts">
import {Repo, repos_parse, repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';
import type {Snippet} from 'svelte';
import {Library, library_context} from '@fuzdev/fuz_ui/library.svelte.js';

import {repos_json} from '$routes/repos.ts';
import {library_json} from '$routes/library.ts';

const {
children,
}: {
children: Snippet;
} = $props();

// this is duplicated in each repos page to code split the repos data

repos_context.set(
repos_parse(
repos_json.map((r) => new Repo(r)),
'https://www.fuz.dev/',
),
);

library_context.set(new Library(library_json));
</script>

<div class="width:100% flex:1">
{@render children()}
</div>
8 changes: 8 additions & 0 deletions src/routes/modules/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<script lang="ts">
import ModulesPage from '@fuzdev/fuz_gitops/ModulesPage.svelte';
import {repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';

const {repo, repos} = repos_context.get();
</script>

<ModulesPage {repo} {repos} />
29 changes: 29 additions & 0 deletions src/routes/pull_requests/+layout.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<script lang="ts">
import {Repo, repos_parse, repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';
import type {Snippet} from 'svelte';
import {Library, library_context} from '@fuzdev/fuz_ui/library.svelte.js';

import {repos_json} from '$routes/repos.ts';
import {library_json} from '$routes/library.ts';

const {
children,
}: {
children: Snippet;
} = $props();

// this is duplicated in each repos page to code split the repos data

repos_context.set(
repos_parse(
repos_json.map((r) => new Repo(r)),
'https://www.fuz.dev/',
),
);

library_context.set(new Library(library_json));
</script>

<div class="width:100% flex:1">
{@render children()}
</div>
13 changes: 13 additions & 0 deletions src/routes/pull_requests/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<script lang="ts">
import PullRequestsPage from '@fuzdev/fuz_gitops/PullRequestsPage.svelte';
import {repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';

const {repo, repos} = repos_context.get();
</script>

<!-- TODO remove the `: any` after fixing the fuz_gitops published types -->
<PullRequestsPage
{repo}
{repos}
filter_pull_request={(pull: any) => pull.user.login === 'ryanatkn'}
/>
7 changes: 7 additions & 0 deletions src/routes/repos.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// generated by gitops_sync.task.js - do not edit

import type {RepoJson} from '@fuzdev/fuz_gitops/repo.svelte.js';

import json from './repos.json' with {type: 'json'};

export const repos_json: Array<RepoJson> = json as unknown as Array<RepoJson>;
29 changes: 29 additions & 0 deletions src/routes/table/+layout.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<script lang="ts">
import {Repo, repos_parse, repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';
import type {Snippet} from 'svelte';
import {Library, library_context} from '@fuzdev/fuz_ui/library.svelte.js';

import {repos_json} from '$routes/repos.ts';
import {library_json} from '$routes/library.ts';

const {
children,
}: {
children: Snippet;
} = $props();

// this is duplicated in each repos page to code split the repos data

repos_context.set(
repos_parse(
repos_json.map((r) => new Repo(r)),
'https://www.fuz.dev/',
),
);

library_context.set(new Library(library_json));
</script>

<div class="width:100% flex:1">
{@render children()}
</div>
8 changes: 8 additions & 0 deletions src/routes/table/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<script lang="ts">
import TablePage from '@fuzdev/fuz_gitops/TablePage.svelte';
import {repos_context} from '@fuzdev/fuz_gitops/repo.svelte.js';

const {repo, repos} = repos_context.get();
</script>

<TablePage {repo} {repos} />
Loading
Loading