Skip to content

Commit ce20225

Browse files
committed
fix: config page now shows dashboard-configured packages when snapshot is empty, add NPM tab
1 parent 307a7b1 commit ce20225

File tree

1 file changed

+58
-24
lines changed

1 file changed

+58
-24
lines changed

src/routes/[username]/[slug]/+page.svelte

Lines changed: 58 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,6 @@
77
let activeTab = $state('overview');
88
let copied = $state(false);
99
10-
const tabs = [
11-
{ id: 'overview', label: 'Overview' },
12-
{ id: 'formulae', label: 'Formulae' },
13-
{ id: 'casks', label: 'Casks' },
14-
{ id: 'macos', label: 'macOS' },
15-
{ id: 'shell', label: 'Shell' }
16-
];
17-
1810
function getInstallCommand() {
1911
return `curl -fsSL https://openboot.dev/${data.configUser.username}/${data.config.slug}/install | bash`;
2012
}
@@ -26,14 +18,33 @@
2618
}
2719
2820
const snapshot = data.config.snapshot || {};
29-
const packages = snapshot.packages || {};
30-
const formulae = packages.formulae || [];
31-
const casks = packages.casks || [];
32-
const taps = packages.taps || [];
21+
const snapshotPkgs = snapshot.packages || {};
3322
const macosPrefs = snapshot.macos_prefs || [];
3423
const shell = snapshot.shell || {};
3524
const git = snapshot.git || {};
3625
const devTools = snapshot.dev_tools || [];
26+
27+
const configPkgs: { name: string; type: string }[] = Array.isArray(data.config.packages)
28+
? data.config.packages.map((p: any) => (typeof p === 'string' ? { name: p, type: 'formula' } : p))
29+
: [];
30+
31+
const configCli = configPkgs.filter((p: any) => p.type !== 'cask' && p.type !== 'npm');
32+
const configApps = configPkgs.filter((p: any) => p.type === 'cask');
33+
const configNpm = configPkgs.filter((p: any) => p.type === 'npm');
34+
35+
const formulae = snapshotPkgs.formulae?.length ? snapshotPkgs.formulae : configCli.map((p: any) => p.name);
36+
const casks = snapshotPkgs.casks?.length ? snapshotPkgs.casks : configApps.map((p: any) => p.name);
37+
const taps = snapshotPkgs.taps || [];
38+
const hasSnapshot = !!(snapshotPkgs.formulae?.length || snapshotPkgs.casks?.length);
39+
40+
const tabs = [
41+
{ id: 'overview', label: 'Overview' },
42+
{ id: 'formulae', label: 'CLI' },
43+
{ id: 'casks', label: 'Apps' },
44+
...(configNpm.length > 0 ? [{ id: 'npm', label: 'NPM' }] : []),
45+
...(macosPrefs.length > 0 ? [{ id: 'macos', label: 'macOS' }] : []),
46+
...(shell.default || shell.oh_my_zsh ? [{ id: 'shell', label: 'Shell' }] : [])
47+
];
3748
</script>
3849

3950
<svelte:head>
@@ -79,20 +90,30 @@
7990
<div class="stats">
8091
<div class="stat">
8192
<span class="stat-value">{formulae.length}</span>
82-
<span class="stat-label">Formulae</span>
93+
<span class="stat-label">CLI</span>
8394
</div>
8495
<div class="stat">
8596
<span class="stat-value">{casks.length}</span>
86-
<span class="stat-label">Casks</span>
87-
</div>
88-
<div class="stat">
89-
<span class="stat-value">{devTools.length}</span>
90-
<span class="stat-label">Dev Tools</span>
91-
</div>
92-
<div class="stat">
93-
<span class="stat-value">{macosPrefs.length}</span>
94-
<span class="stat-label">Preferences</span>
97+
<span class="stat-label">Apps</span>
9598
</div>
99+
{#if configNpm.length > 0}
100+
<div class="stat">
101+
<span class="stat-value">{configNpm.length}</span>
102+
<span class="stat-label">NPM</span>
103+
</div>
104+
{/if}
105+
{#if devTools.length > 0}
106+
<div class="stat">
107+
<span class="stat-value">{devTools.length}</span>
108+
<span class="stat-label">Dev Tools</span>
109+
</div>
110+
{/if}
111+
{#if macosPrefs.length > 0}
112+
<div class="stat">
113+
<span class="stat-value">{macosPrefs.length}</span>
114+
<span class="stat-label">Preferences</span>
115+
</div>
116+
{/if}
96117
</div>
97118
</section>
98119

@@ -108,6 +129,8 @@
108129
<span class="tab-count">{formulae.length}</span>
109130
{:else if tab.id === 'casks' && casks.length > 0}
110131
<span class="tab-count">{casks.length}</span>
132+
{:else if tab.id === 'npm' && configNpm.length > 0}
133+
<span class="tab-count">{configNpm.length}</span>
111134
{:else if tab.id === 'macos' && macosPrefs.length > 0}
112135
<span class="tab-count">{macosPrefs.length}</span>
113136
{/if}
@@ -182,7 +205,7 @@
182205

183206
{:else if activeTab === 'formulae'}
184207
{#if formulae.length === 0}
185-
<div class="empty-state">No formulae in this snapshot.</div>
208+
<div class="empty-state">No CLI packages configured.</div>
186209
{:else}
187210
<div class="package-grid">
188211
{#each formulae as pkg}
@@ -193,7 +216,7 @@
193216

194217
{:else if activeTab === 'casks'}
195218
{#if casks.length === 0}
196-
<div class="empty-state">No casks in this snapshot.</div>
219+
<div class="empty-state">No apps configured.</div>
197220
{:else}
198221
<div class="package-grid">
199222
{#each casks as pkg}
@@ -202,6 +225,17 @@
202225
</div>
203226
{/if}
204227

228+
{:else if activeTab === 'npm'}
229+
{#if configNpm.length === 0}
230+
<div class="empty-state">No npm packages configured.</div>
231+
{:else}
232+
<div class="package-grid">
233+
{#each configNpm as pkg}
234+
<div class="package-item">{pkg.name}</div>
235+
{/each}
236+
</div>
237+
{/if}
238+
205239
{:else if activeTab === 'macos'}
206240
{#if macosPrefs.length === 0}
207241
<div class="empty-state">No macOS preferences in this snapshot.</div>

0 commit comments

Comments
 (0)