Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 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
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
"@ai-sdk/svelte": "^1.1.24",
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@f21fc7f",
"@appwrite.io/pink-icons": "0.25.0",
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@865e2fc",
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@cfa2920",
"@appwrite.io/pink-legacy": "^1.0.3",
"@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@865e2fc",
"@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@cfa2920",
"@faker-js/faker": "^9.9.0",
"@popperjs/core": "^2.11.8",
"@sentry/sveltekit": "^8.38.0",
Expand All @@ -40,9 +40,11 @@
"deep-equal": "^2.2.3",
"echarts": "^5.6.0",
"ignore": "^6.0.2",
"install": "^0.13.0",
"nanoid": "^5.1.5",
"nanotar": "^0.1.1",
"plausible-tracker": "^0.3.9",
"pnpm": "^10.27.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove pnpm from runtime dependencies and resolve version conflict.

Package managers like pnpm should not be listed as runtime dependencies. Additionally, this creates a version conflict with the packageManager field on line 104 (pnpm@10.20.0 vs ^10.27.0).

To specify the required pnpm version, use the packageManager field (already present) or the engines field, not dependencies. Having pnpm as a runtime dependency adds ~30MB of unnecessary files to node_modules.

🔎 Proposed fix
-        "pnpm": "^10.27.0",

If you need to update the pnpm version requirement, update line 104 instead:

-    "packageManager": "pnpm@10.20.0"
+    "packageManager": "pnpm@10.27.0"

Or add to the engines field:

     "engines": {
-        "node": ">=22.0.0"
+        "node": ">=22.0.0",
+        "pnpm": ">=10.20.0"
     },

Verify that pnpm is not imported as a module anywhere:

#!/bin/bash
# Description: Check if pnpm is imported as a module anywhere in the codebase

# Search for imports or requires of pnpm as a module
rg -n --type=ts --type=js --type=svelte "from ['\"]pnpm['\"]|require\(['\"]pnpm['\"]"
🤖 Prompt for AI Agents
In @package.json at line 47, Remove "pnpm": "^10.27.0" from package.json
dependencies (the entry under "dependencies") and resolve the version mismatch
with the existing packageManager field (pnpm@10.20.0) by updating packageManager
to the desired version or adding an "engines" entry for pnpm; then search the
codebase for any imports/requires of the "pnpm" module (e.g., occurrences of
from 'pnpm' or require('pnpm')) and remove/replace them if found so pnpm is not
treated as a runtime dependency.

"pretty-bytes": "^6.1.1",
"prismjs": "^1.30.0",
"remarkable": "^2.0.1",
Expand Down
39 changes: 29 additions & 10 deletions pnpm-lock.yaml

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

6 changes: 6 additions & 0 deletions src/lib/profiles/css/base.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.responsive-table {
overflow: hidden;
width: 100%;
scrollbar-width: thin;
position: relative;
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,16 @@
} from '@appwrite.io/pink-svelte';
import DomainMetrics from './domainMetrics.svelte';
import { base } from '$app/paths';
import { isSmallViewport } from '$lib/stores/viewport';
import { app } from '$lib/stores/app';
import { Button } from '$lib/elements/forms';
import { IconDownload, IconPlus, IconUpload } from '@appwrite.io/pink-icons-svelte';
import {
IconDownload,
IconPlus,
IconUpload,
IconAdjustments
} from '@appwrite.io/pink-icons-svelte';
import DisplaySettingsModal from '$lib/layout/displaySettingsModal.svelte';
import { ViewSelector } from '$lib/components';
import { View } from '$lib/helpers/load';
import { columns, presets } from './store';
Expand All @@ -33,6 +40,7 @@
let showCreate = false;
let showPresetModal = false;
let showImportModal = false;
let showDisplaySettingsModal = false;
let selectedPreset = '';

async function downloadRecords() {
Expand Down Expand Up @@ -70,42 +78,115 @@

<Layout.Stack gap="l">
{#if data.recordList.total}
<Layout.Stack direction="row" justifyContent="space-between">
<Layout.Stack direction="row" gap="s" inline>
<Button secondary on:click={() => (showImportModal = true)}>
<Icon icon={IconUpload} size="s" slot="start" />
Import zone file
</Button>
<Tooltip>
<PinkButton.Button variant="secondary" icon on:click={downloadRecords}>
<Icon icon={IconDownload} size="s" />
</PinkButton.Button>
<svelte:fragment slot="tooltip">Export as .txt</svelte:fragment>
</Tooltip>
</Layout.Stack>
<Layout.Stack direction="row" gap="s" inline>
<ViewSelector ui="new" view={View.Table} {columns} hideView />
<Popover let:toggle padding="none">
<Button secondary on:click={toggle}>Add preset</Button>
<svelte:fragment slot="tooltip" let:toggle>
<ActionMenu.Root>
{#each presets as preset}
<ActionMenu.Item.Button
on:click={(e) => {
toggle(e);
selectedPreset = preset;
showPresetModal = true;
}}>{preset}</ActionMenu.Item.Button>
{/each}
</ActionMenu.Root>
</svelte:fragment>
</Popover>
<Button size="s" on:click={() => (showCreate = true)}>
{#if $isSmallViewport}
<Layout.Stack gap="s">
<Layout.Stack direction="row" gap="s">
<div style="flex: 1">
<Popover let:toggle padding="none">
<Button secondary fullWidth on:click={toggle}
>Add preset</Button>
<svelte:fragment slot="tooltip" let:toggle>
<ActionMenu.Root>
{#each presets as preset}
<ActionMenu.Item.Button
on:click={(e) => {
toggle(e);
selectedPreset = preset;
showPresetModal = true;
}}>{preset}</ActionMenu.Item.Button>
{/each}
</ActionMenu.Root>
</svelte:fragment>
</Popover>
</div>
<Button
secondary
icon
ariaLabel="Import zone file"
on:click={() => (showImportModal = true)}>
<Icon size="m" icon={IconUpload} />
</Button>
<Tooltip>
<PinkButton.Button
variant="secondary"
icon
on:click={downloadRecords}>
<Icon icon={IconDownload} size="m" />
</PinkButton.Button>
<svelte:fragment slot="tooltip">Export as .txt</svelte:fragment>
</Tooltip>
<Button
secondary
icon
ariaLabel="Display settings"
on:click={() => (showDisplaySettingsModal = true)}>
<Icon icon={IconAdjustments} />
</Button>
</Layout.Stack>
<Button fullWidth on:click={() => (showCreate = true)}>
<Icon size="s" icon={IconPlus} slot="start" />
Create record
</Button>
</Layout.Stack>
</Layout.Stack>
{:else}
<Layout.Stack
direction="row"
gap="m"
justifyContent="space-between"
alignItems="center"
wrap="wrap">
<Layout.Stack
direction="row"
gap="s"
alignItems="center"
wrap="wrap"
style="flex: 1">
<Button secondary on:click={() => (showImportModal = true)}>
<Icon icon={IconUpload} size="s" slot="start" />
Import zone file
</Button>
<Tooltip>
<PinkButton.Button
variant="secondary"
icon
on:click={downloadRecords}>
<Icon icon={IconDownload} size="s" />
</PinkButton.Button>
<svelte:fragment slot="tooltip">Export as .txt</svelte:fragment>
</Tooltip>
</Layout.Stack>
<Layout.Stack
direction="row"
gap="s"
alignItems="center"
style="flex: 1; min-width: 250px; justify-content: flex-end;">
<ViewSelector ui="new" view={View.Table} {columns} hideView />

<Popover let:toggle padding="none">
<Button secondary on:click={toggle}>Add preset</Button>
<svelte:fragment slot="tooltip" let:toggle>
<ActionMenu.Root>
{#each presets as preset}
<ActionMenu.Item.Button
on:click={(e) => {
toggle(e);
selectedPreset = preset;
showPresetModal = true;
}}>{preset}</ActionMenu.Item.Button>
{/each}
</ActionMenu.Root>
</svelte:fragment>
</Popover>

<div>
<Button on:click={() => (showCreate = true)}>
<Icon size="s" icon={IconPlus} slot="start" />
Create record
</Button>
</div>
</Layout.Stack>
</Layout.Stack>
{/if}
<Table {data} />
{:else}
<Card.Base padding="none">
Expand Down Expand Up @@ -153,3 +234,11 @@
{#if showRetry}
<RetryDomainModal bind:show={showRetry} selectedDomain={data.domain} />
{/if}

{#if showDisplaySettingsModal}
<DisplaySettingsModal
bind:show={showDisplaySettingsModal}
{columns}
hideView
view={View.Table} />
{/if}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@
</script>

<Layout.Stack>
<Table.Root columns={[...$columns, { id: 'actions', width: 40 }]} let:root>
<Table.Root
class="responsive-table"
columns={[...$columns, { id: 'actions', width: 40 }]}
let:root>
<svelte:fragment slot="header" let:root>
{#each $columns as { id, title } (id)}
<Table.Header.Cell column={id} {root}>
Expand Down
1 change: 1 addition & 0 deletions src/routes/+layout.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import { ThemeDark, ThemeLight, ThemeDarkCloud, ThemeLightCloud } from '../themes';
import { isSmallViewport, updateViewport } from '$lib/stores/viewport';
import { feedback } from '$lib/stores/feedback';
import '$lib/profiles/css/base.css';

function resolveTheme(theme: AppStore['themeInUse']) {
switch (theme) {
Expand Down