From 904cbba3d9996523ee0dc8d3d99a405c258fd651 Mon Sep 17 00:00:00 2001 From: Abel de Bruijn Date: Sat, 23 Nov 2024 22:16:56 +0100 Subject: [PATCH 1/3] Refactor UI components: remove unused Slider, Dialog, FormButton, Card components; add Separator and Select components --- components.json | 11 +- eslint.config.js | 11 ++ package.json | 12 +- pnpm-lock.yaml | 133 ++++++++++-------- src/app.css | 38 +++-- src/lib/components/Embedding.svelte | 6 +- src/lib/components/ShareWindow.svelte | 6 +- src/lib/components/controls/Dropdown.svelte | 75 +++------- src/lib/components/controls/SlideShow.svelte | 4 +- src/lib/components/controls/Slider.svelte | 13 +- src/lib/components/controls/Toggle.svelte | 12 +- .../ui/accordion/accordion-content.svelte | 29 ++-- .../ui/accordion/accordion-item.svelte | 14 +- .../ui/accordion/accordion-trigger.svelte | 27 ++-- src/lib/components/ui/accordion/index.ts | 2 +- .../ui/breadcrumb/breadcrumb-ellipsis.svelte | 21 ++- .../ui/breadcrumb/breadcrumb-item.svelte | 18 +-- .../ui/breadcrumb/breadcrumb-link.svelte | 40 +++--- .../ui/breadcrumb/breadcrumb-list.svelte | 22 +-- .../ui/breadcrumb/breadcrumb-page.svelte | 22 +-- .../ui/breadcrumb/breadcrumb-separator.svelte | 26 ++-- .../ui/breadcrumb/breadcrumb.svelte | 18 +-- ...ton-action.svelte => action-button.svelte} | 32 +++-- src/lib/components/ui/button/button.svelte | 84 ++++++++--- src/lib/components/ui/button/index.ts | 55 ++------ .../components/ui/card/card-content.svelte | 13 -- .../ui/card/card-description.svelte | 13 -- src/lib/components/ui/card/card-footer.svelte | 13 -- src/lib/components/ui/card/card-header.svelte | 13 -- src/lib/components/ui/card/card-title.svelte | 21 --- src/lib/components/ui/card/card.svelte | 16 --- src/lib/components/ui/card/index.ts | 24 ---- .../components/ui/checkbox/checkbox.svelte | 54 ++++--- .../ui/command/command-dialog.svelte | 38 +++-- .../ui/command/command-empty.svelte | 14 +- .../ui/command/command-group.svelte | 29 ++-- .../ui/command/command-input.svelte | 22 +-- .../components/ui/command/command-item.svelte | 25 ++-- .../ui/command/command-link-item.svelte | 19 +++ .../components/ui/command/command-list.svelte | 17 +-- .../ui/command/command-separator.svelte | 12 +- .../ui/command/command-shortcut.svelte | 18 ++- src/lib/components/ui/command/command.svelte | 23 ++- src/lib/components/ui/command/index.ts | 7 +- .../ui/dialog/dialog-content.svelte | 38 ++--- .../ui/dialog/dialog-description.svelte | 18 +-- .../components/ui/dialog/dialog-footer.svelte | 16 ++- .../components/ui/dialog/dialog-header.svelte | 19 ++- .../ui/dialog/dialog-overlay.svelte | 24 ++-- .../components/ui/dialog/dialog-portal.svelte | 8 -- .../components/ui/dialog/dialog-title.svelte | 16 +-- src/lib/components/ui/dialog/index.ts | 8 +- src/lib/components/ui/form/form-button.svelte | 10 -- .../ui/form/form-description.svelte | 17 --- .../ui/form/form-element-field.svelte | 25 ---- .../ui/form/form-field-errors.svelte | 26 ---- src/lib/components/ui/form/form-field.svelte | 25 ---- .../components/ui/form/form-fieldset.svelte | 30 ---- src/lib/components/ui/form/form-label.svelte | 17 --- src/lib/components/ui/form/form-legend.svelte | 17 --- src/lib/components/ui/form/index.ts | 33 ----- src/lib/components/ui/input/index.ts | 29 ---- src/lib/components/ui/input/input.svelte | 42 ------ src/lib/components/ui/label/label.svelte | 18 ++- .../ui/popover/popover-content.svelte | 40 +++--- src/lib/components/ui/select/index.ts | 34 +++++ .../ui/select/select-content.svelte | 38 +++++ .../ui/select/select-group-heading.svelte | 16 +++ .../components/ui/select/select-item.svelte | 37 +++++ .../select/select-scroll-down-button.svelte | 19 +++ .../ui/select/select-scroll-up-button.svelte | 19 +++ .../ui/select/select-separator.svelte | 13 ++ .../ui/select/select-trigger.svelte | 24 ++++ src/lib/components/ui/separator/index.ts | 7 + .../components/ui/separator/separator.svelte | 22 +++ src/lib/components/ui/slider/index.ts | 7 - src/lib/components/ui/slider/slider.svelte | 27 ---- src/lib/components/ui/switch/switch.svelte | 23 ++- .../components/ui/textarea/textarea.svelte | 38 ++--- src/lib/components/ui/tooltip/index.ts | 5 +- .../ui/tooltip/tooltip-content.svelte | 29 ++-- src/lib/controls/Dropdown.svelte.ts | 11 +- src/lib/threlte/Camera3D.svelte | 4 +- src/lib/utils/shadcn-utils.ts | 50 ------- src/routes/[...catchall]/+page.svelte | 2 +- src/routes/[...catchall]/CommandPrompt.svelte | 2 +- src/routes/[...catchall]/FolderList.svelte | 2 +- src/routes/[...catchall]/ListItem.svelte | 4 +- src/routes/[...catchall]/NavBar.svelte | 23 ++- tailwind.config.js | 36 ++++- 90 files changed, 977 insertions(+), 1113 deletions(-) rename src/lib/components/ui/button/{button-action.svelte => action-button.svelte} (53%) delete mode 100644 src/lib/components/ui/card/card-content.svelte delete mode 100644 src/lib/components/ui/card/card-description.svelte delete mode 100644 src/lib/components/ui/card/card-footer.svelte delete mode 100644 src/lib/components/ui/card/card-header.svelte delete mode 100644 src/lib/components/ui/card/card-title.svelte delete mode 100644 src/lib/components/ui/card/card.svelte delete mode 100644 src/lib/components/ui/card/index.ts create mode 100644 src/lib/components/ui/command/command-link-item.svelte delete mode 100644 src/lib/components/ui/dialog/dialog-portal.svelte delete mode 100644 src/lib/components/ui/form/form-button.svelte delete mode 100644 src/lib/components/ui/form/form-description.svelte delete mode 100644 src/lib/components/ui/form/form-element-field.svelte delete mode 100644 src/lib/components/ui/form/form-field-errors.svelte delete mode 100644 src/lib/components/ui/form/form-field.svelte delete mode 100644 src/lib/components/ui/form/form-fieldset.svelte delete mode 100644 src/lib/components/ui/form/form-label.svelte delete mode 100644 src/lib/components/ui/form/form-legend.svelte delete mode 100644 src/lib/components/ui/form/index.ts delete mode 100644 src/lib/components/ui/input/index.ts delete mode 100644 src/lib/components/ui/input/input.svelte create mode 100644 src/lib/components/ui/select/index.ts create mode 100644 src/lib/components/ui/select/select-content.svelte create mode 100644 src/lib/components/ui/select/select-group-heading.svelte create mode 100644 src/lib/components/ui/select/select-item.svelte create mode 100644 src/lib/components/ui/select/select-scroll-down-button.svelte create mode 100644 src/lib/components/ui/select/select-scroll-up-button.svelte create mode 100644 src/lib/components/ui/select/select-separator.svelte create mode 100644 src/lib/components/ui/select/select-trigger.svelte create mode 100644 src/lib/components/ui/separator/index.ts create mode 100644 src/lib/components/ui/separator/separator.svelte delete mode 100644 src/lib/components/ui/slider/index.ts delete mode 100644 src/lib/components/ui/slider/slider.svelte diff --git a/components.json b/components.json index dacfd561..97d7ea83 100644 --- a/components.json +++ b/components.json @@ -1,6 +1,6 @@ { - "$schema": "https://shadcn-svelte.com/schema.json", - "style": "default", + "$schema": "https://next.shadcn-svelte.com/schema.json", + "style": "new-york", "tailwind": { "config": "tailwind.config.js", "css": "src/app.css", @@ -8,7 +8,10 @@ }, "aliases": { "components": "$lib/components", - "utils": "$lib/utils/shadcn-utils" + "utils": "$lib/utils/shadcn-utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks" }, - "typescript": true + "typescript": true, + "registry": "https://next.shadcn-svelte.com/registry" } diff --git a/eslint.config.js b/eslint.config.js index 8f0faabf..27e1544c 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -40,5 +40,16 @@ export default ts.config( 'src/lib/components/ui/' ] + }, + { + rules: { + '@typescript-eslint/no-unused-vars': [ + 'warn', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^\\$\\$(Props|Events|Slots|Generic)$' + } + ] + } } ); diff --git a/package.json b/package.json index 58cea777..90647809 100644 --- a/package.json +++ b/package.json @@ -34,16 +34,22 @@ "@types/katex": "^0.16.7", "@types/three": "^0.170.0", "autoprefixer": "^10.4.20", + "bits-ui": "1.0.0-next.64", + "clsx": "^2.1.1", "eslint": "^9.7.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.36.0", "globals": "^15.0.0", + "lucide-svelte": "^0.456.0", "prettier": "^3.3.2", "prettier-plugin-svelte": "^3.2.6", "storybook": "^8.4.2", "svelte": "^5.0.0", "svelte-check": "^4.0.0", + "tailwind-merge": "^2.5.4", + "tailwind-variants": "^0.3.0", "tailwindcss": "^3.4.9", + "tailwindcss-animate": "^1.0.7", "typescript": "^5.0.0", "typescript-eslint": "^8.0.0", "vite": "^5.0.3" @@ -53,18 +59,12 @@ "@sveltejs/adapter-node": "^5.2.9", "@threlte/core": "8.0.0-next.30", "@threlte/extras": "9.0.0-next.39", - "bits-ui": "^0.21.16", - "clsx": "^2.1.1", - "cmdk-sv": "^0.0.18", "d3": "^7.9.0", "formsnap": "^1.0.1", "katex": "^0.16.11", - "lucide-svelte": "^0.456.0", "screenfull": "^6.0.2", "svelte-confetti": "^2.1.2", "sveltekit-superforms": "^2.20.0", - "tailwind-merge": "^2.5.4", - "tailwind-variants": "^0.3.0", "three": "^0.170.0", "zod": "^3.23.8" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d4a51d4a..1e86ed01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,15 +20,6 @@ importers: '@threlte/extras': specifier: 9.0.0-next.39 version: 9.0.0-next.39(@types/three@0.170.0)(svelte@5.1.16)(three@0.170.0) - bits-ui: - specifier: ^0.21.16 - version: 0.21.16(svelte@5.1.16) - clsx: - specifier: ^2.1.1 - version: 2.1.1 - cmdk-sv: - specifier: ^0.0.18 - version: 0.0.18(svelte@5.1.16) d3: specifier: ^7.9.0 version: 7.9.0 @@ -38,9 +29,6 @@ importers: katex: specifier: ^0.16.11 version: 0.16.11 - lucide-svelte: - specifier: ^0.456.0 - version: 0.456.0(svelte@5.1.16) screenfull: specifier: ^6.0.2 version: 6.0.2 @@ -50,12 +38,6 @@ importers: sveltekit-superforms: specifier: ^2.20.0 version: 2.20.0(@sveltejs/kit@2.8.0(@sveltejs/vite-plugin-svelte@4.0.0(svelte@5.1.16)(vite@5.4.11(@types/node@22.5.4)))(svelte@5.1.16)(vite@5.4.11(@types/node@22.5.4)))(@types/json-schema@7.0.15)(svelte@5.1.16)(typescript@5.6.3) - tailwind-merge: - specifier: ^2.5.4 - version: 2.5.4 - tailwind-variants: - specifier: ^0.3.0 - version: 0.3.0(tailwindcss@3.4.14) three: specifier: ^0.170.0 version: 0.170.0 @@ -117,6 +99,12 @@ importers: autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.49) + bits-ui: + specifier: 1.0.0-next.64 + version: 1.0.0-next.64(svelte@5.1.16) + clsx: + specifier: ^2.1.1 + version: 2.1.1 eslint: specifier: ^9.7.0 version: 9.14.0(jiti@1.21.6) @@ -129,6 +117,9 @@ importers: globals: specifier: ^15.0.0 version: 15.12.0 + lucide-svelte: + specifier: ^0.456.0 + version: 0.456.0(svelte@5.1.16) prettier: specifier: ^3.3.2 version: 3.3.3 @@ -144,9 +135,18 @@ importers: svelte-check: specifier: ^4.0.0 version: 4.0.7(picomatch@4.0.2)(svelte@5.1.16)(typescript@5.6.3) + tailwind-merge: + specifier: ^2.5.4 + version: 2.5.4 + tailwind-variants: + specifier: ^0.3.0 + version: 0.3.0(tailwindcss@3.4.14) tailwindcss: specifier: ^3.4.9 version: 3.4.14 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.14) typescript: specifier: ^5.0.0 version: 5.6.3 @@ -604,11 +604,6 @@ packages: '@types/react': '>=16' react: '>=16' - '@melt-ui/svelte@0.76.2': - resolution: {integrity: sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==} - peerDependencies: - svelte: '>=3 <5' - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1394,10 +1389,11 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bits-ui@0.21.16: - resolution: {integrity: sha512-XFZ7/bK7j/K+5iktxX/ZpmoFHjYjpPzP5EOO/4bWiaFg5TG1iMcfjDhlBTQnJxD6BoVoHuqeZPHZvaTgF4Iv3Q==} + bits-ui@1.0.0-next.64: + resolution: {integrity: sha512-r1JThjUSKwTkaB1onwIs7ZQoqygSsWhjBaUElCS8m8CCbY1RxmTz0HnbN+Xp2oJgJ4YQgIfiXTG3170l80FEgg==} + engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.118 + svelte: ^5.0.0-next.1 brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1486,11 +1482,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - cmdk-sv@0.0.18: - resolution: {integrity: sha512-istixiQSy9Ez/mQ4VXWB69btqNyDZckbd1XFEwR46Vw+n5zjdmvoWAcOTj0uX3FZXtw9ikwLVmfoW2nwwMClRg==} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.1 - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1993,9 +1984,6 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - focus-trap@7.6.1: - resolution: {integrity: sha512-nB8y4nQl8PshahLpGKZOq1sb0xrMVFSn6at7u/qOsBZTlZRzaapISGENcB6mOkoezbClZyiMwEF/dGY8AZ00rA==} - for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -2133,6 +2121,9 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -2687,6 +2678,11 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + runed@0.15.3: + resolution: {integrity: sha512-HtayB+loDcGdqJDHW8JFdsZzGQMyVzim6+s3052MkjZnwmwDstmF+cusMeTssBe6TCdt5i9D/Tb+KYXN3L0kXA==} + peerDependencies: + svelte: ^5.0.0-next.1 + rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} @@ -2783,6 +2779,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -2865,6 +2864,12 @@ packages: typescript: optional: true + svelte-toolbelt@0.4.6: + resolution: {integrity: sha512-k8OUvXBUifHZcAlWeY/HLg/4J0v5m2iOfOhn8fDmjt4AP8ZluaDh9eBFus9lFiLX6O5l6vKqI1dKL5wy7090NQ==} + engines: {node: '>=18', pnpm: '>=8.7.0'} + peerDependencies: + svelte: ^5.0.0-next.126 + svelte2tsx@0.7.24: resolution: {integrity: sha512-KbKD+5aqTYdRPfAroA72xc3kEz3Dj0Vq7X3IjHLWbwfco7pwioEx4x/V9lOpKmkHlYh9YNPkqXWlbrH7Cc580A==} peerDependencies: @@ -2885,9 +2890,6 @@ packages: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwind-merge@2.5.4: resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} @@ -2897,6 +2899,11 @@ packages: peerDependencies: tailwindcss: '*' + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + tailwindcss@3.4.14: resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} engines: {node: '>=14.0.0'} @@ -3544,16 +3551,6 @@ snapshots: '@types/react': 18.3.5 react: 18.3.1 - '@melt-ui/svelte@0.76.2(svelte@5.1.16)': - dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/dom': 1.6.12 - '@internationalized/date': 3.5.6 - dequal: 2.0.3 - focus-trap: 7.6.1 - nanoid: 5.0.8 - svelte: 5.1.16 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4500,12 +4497,15 @@ snapshots: binary-extensions@2.3.0: {} - bits-ui@0.21.16(svelte@5.1.16): + bits-ui@1.0.0-next.64(svelte@5.1.16): dependencies: + '@floating-ui/core': 1.6.8 + '@floating-ui/dom': 1.6.12 '@internationalized/date': 3.5.6 - '@melt-ui/svelte': 0.76.2(svelte@5.1.16) - nanoid: 5.0.8 + esm-env: 1.1.4 + runed: 0.15.3(svelte@5.1.16) svelte: 5.1.16 + svelte-toolbelt: 0.4.6(svelte@5.1.16) brace-expansion@1.1.11: dependencies: @@ -4598,12 +4598,6 @@ snapshots: clsx@2.1.1: {} - cmdk-sv@0.0.18(svelte@5.1.16): - dependencies: - bits-ui: 0.21.16(svelte@5.1.16) - nanoid: 5.0.8 - svelte: 5.1.16 - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -5200,10 +5194,6 @@ snapshots: flatted@3.3.1: {} - focus-trap@7.6.1: - dependencies: - tabbable: 6.2.0 - for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -5335,6 +5325,8 @@ snapshots: inherits@2.0.4: {} + inline-style-parser@0.2.4: {} + internmap@2.0.3: {} is-arguments@1.1.1: @@ -5822,6 +5814,11 @@ snapshots: dependencies: queue-microtask: 1.2.3 + runed@0.15.3(svelte@5.1.16): + dependencies: + esm-env: 1.1.4 + svelte: 5.1.16 + rw@1.3.3: {} sade@1.8.1: @@ -5923,6 +5920,10 @@ snapshots: strip-json-comments@3.1.1: {} + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -5987,6 +5988,12 @@ snapshots: postcss-load-config: 4.0.2(postcss@8.4.49) typescript: 5.6.3 + svelte-toolbelt@0.4.6(svelte@5.1.16): + dependencies: + clsx: 2.1.1 + style-to-object: 1.0.8 + svelte: 5.1.16 + svelte2tsx@0.7.24(svelte@5.1.16)(typescript@5.6.3): dependencies: dedent-js: 1.0.1 @@ -6047,8 +6054,6 @@ snapshots: - '@types/json-schema' - typescript - tabbable@6.2.0: {} - tailwind-merge@2.5.4: {} tailwind-variants@0.3.0(tailwindcss@3.4.14): @@ -6056,6 +6061,10 @@ snapshots: tailwind-merge: 2.5.4 tailwindcss: 3.4.14 + tailwindcss-animate@1.0.7(tailwindcss@3.4.14): + dependencies: + tailwindcss: 3.4.14 + tailwindcss@3.4.14: dependencies: '@alloc/quick-lru': 5.2.0 diff --git a/src/app.css b/src/app.css index 16d01c9e..95927941 100644 --- a/src/app.css +++ b/src/app.css @@ -6,6 +6,7 @@ html, body { height: 100%; + @apply bg-blue-800; } .latex .katex-display { @@ -19,65 +20,62 @@ :root { --background: 0 0% 100%; --foreground: 222.2 84% 4.9%; - --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; - --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; - --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; - --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; - --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; - --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; - --destructive: 0 72.2% 50.6%; --destructive-foreground: 210 40% 98%; - --ring: 222.2 84% 4.9%; - --radius: 0.5rem; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; } .dark { --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; - --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; - --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; - --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; - --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; - - --ring: hsl(212.7, 26.8%, 83.9); + --ring: 212.7 26.8% 83.9%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; } } diff --git a/src/lib/components/Embedding.svelte b/src/lib/components/Embedding.svelte index c08162f9..431e95e4 100644 --- a/src/lib/components/Embedding.svelte +++ b/src/lib/components/Embedding.svelte @@ -85,9 +85,7 @@
- + diff --git a/src/lib/components/ui/tooltip/index.ts b/src/lib/components/ui/tooltip/index.ts index 30adbb72..cee9100d 100644 --- a/src/lib/components/ui/tooltip/index.ts +++ b/src/lib/components/ui/tooltip/index.ts @@ -3,13 +3,16 @@ import Content from './tooltip-content.svelte'; const Root = TooltipPrimitive.Root; const Trigger = TooltipPrimitive.Trigger; +const Provider = TooltipPrimitive.Provider; export { Root, Trigger, Content, + Provider, // Root as Tooltip, Content as TooltipContent, - Trigger as TooltipTrigger + Trigger as TooltipTrigger, + Provider as TooltipProvider }; diff --git a/src/lib/components/ui/tooltip/tooltip-content.svelte b/src/lib/components/ui/tooltip/tooltip-content.svelte index 326026e2..8263fd57 100644 --- a/src/lib/components/ui/tooltip/tooltip-content.svelte +++ b/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -1,28 +1,21 @@ - - + {...restProps} +/> diff --git a/src/lib/controls/Dropdown.svelte.ts b/src/lib/controls/Dropdown.svelte.ts index b136a018..24274dd7 100644 --- a/src/lib/controls/Dropdown.svelte.ts +++ b/src/lib/controls/Dropdown.svelte.ts @@ -5,18 +5,26 @@ import { PrimeColor } from '$lib/utils/PrimeColors'; * The Dropdown class is used to create a dropdown with a default value and a range of values. * * @param defaultValue The default value for the dropdown + * @param values The range of values for the dropdown + * @param title The title of the dropdown * @param color The color of the dropdown default is blue */ export class Dropdown implements Controller { defaultValue: (typeof this.values)[number] = ''; value = $state<(typeof this.values)[number]>(''); + label = ''; color: string = PrimeColor.blue; width = 30; values: readonly string[] = []; type = 'toggle'; - constructor(defaultValue: string, values: readonly string[], color: string = PrimeColor.blue) { + constructor( + defaultValue: string, + values: readonly string[], + color: string = PrimeColor.blue, + label = '' + ) { if (values.length === 0) { throw new Error('Dropdown must have at least one label'); } @@ -28,6 +36,7 @@ export class Dropdown implements Controller { this.defaultValue = defaultValue; } + this.label = label; this.value = this.defaultValue; this.values = values; this.color = color; diff --git a/src/lib/threlte/Camera3D.svelte b/src/lib/threlte/Camera3D.svelte index 462b4434..15f86cc1 100644 --- a/src/lib/threlte/Camera3D.svelte +++ b/src/lib/threlte/Camera3D.svelte @@ -30,8 +30,8 @@ const INTERVALS = 20; const DURATION = 750; - let interval: number | NodeJS.Timeout; - let doReset: number | NodeJS.Timeout; + let interval: ReturnType; + let doReset: ReturnType; /** * Function for reseting the 3D camera to the original position and zoom diff --git a/src/lib/utils/shadcn-utils.ts b/src/lib/utils/shadcn-utils.ts index cae01d12..9ad0df42 100644 --- a/src/lib/utils/shadcn-utils.ts +++ b/src/lib/utils/shadcn-utils.ts @@ -1,56 +1,6 @@ import { type ClassValue, clsx } from 'clsx'; import { twMerge } from 'tailwind-merge'; -import { cubicOut } from 'svelte/easing'; -import type { TransitionConfig } from 'svelte/transition'; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } - -type FlyAndScaleParams = { - y?: number; - x?: number; - start?: number; - duration?: number; -}; - -export const flyAndScale = ( - node: Element, - params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } -): TransitionConfig => { - const style = getComputedStyle(node); - const transform = style.transform === 'none' ? '' : style.transform; - - const scaleConversion = (valueA: number, scaleA: [number, number], scaleB: [number, number]) => { - const [minA, maxA] = scaleA; - const [minB, maxB] = scaleB; - - const percentage = (valueA - minA) / (maxA - minA); - const valueB = percentage * (maxB - minB) + minB; - - return valueB; - }; - - const styleToString = (style: Record): string => { - return Object.keys(style).reduce((str, key) => { - if (style[key] === undefined) return str; - return str + `${key}:${style[key]};`; - }, ''); - }; - - return { - duration: params.duration ?? 200, - delay: 0, - css: (t) => { - const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); - const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); - const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); - - return styleToString({ - transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, - opacity: t - }); - }, - easing: cubicOut - }; -}; diff --git a/src/routes/[...catchall]/+page.svelte b/src/routes/[...catchall]/+page.svelte index d6625a35..0268b284 100644 --- a/src/routes/[...catchall]/+page.svelte +++ b/src/routes/[...catchall]/+page.svelte @@ -22,7 +22,7 @@ -
+
-

+

Press - + {#each Object.entries(folders) as [folderTitle, files], index} {formatString(folderTitle)} diff --git a/src/routes/[...catchall]/ListItem.svelte b/src/routes/[...catchall]/ListItem.svelte index ad010b26..82df6cec 100644 --- a/src/routes/[...catchall]/ListItem.svelte +++ b/src/routes/[...catchall]/ListItem.svelte @@ -17,11 +17,11 @@

{#if showUrlIframe == url} - toggleUrlIframe(url)}> + toggleUrlIframe(url)}> {:else} - toggleUrlIframe(url)}> + toggleUrlIframe(url)}> {/if} diff --git a/src/routes/[...catchall]/NavBar.svelte b/src/routes/[...catchall]/NavBar.svelte index c99ababd..4b4957f5 100644 --- a/src/routes/[...catchall]/NavBar.svelte +++ b/src/routes/[...catchall]/NavBar.svelte @@ -5,16 +5,21 @@ export let fileUrls: string[]; -