diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..39e87c1e --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +PUBLIC_DEV="true" +PUBLIC_GTM_ID="" +PUBLIC_GTAG_ID="" diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml new file mode 100644 index 00000000..fb518e99 --- /dev/null +++ b/.github/workflows/canary.yml @@ -0,0 +1,31 @@ +name: CI/CD Canary + +on: + push: + branches-ignore: + - develop + - main + +jobs: + deploy: + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: deploy on production environment + uses: appleboy/ssh-action@v1.2.5 + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ secrets.VPS_PORT }} + script: | + set -euo pipefail + cd ~/${{ secrets.PATH_CANARY }} + git fetch origin + git reset --hard origin/${{ github.ref_name }} + docker compose build + docker compose up -d --remove-orphans diff --git a/.github/workflows/ci-alpha.yml b/.github/workflows/ci-alpha.yml deleted file mode 100644 index ac571898..00000000 --- a/.github/workflows/ci-alpha.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: CI Alpha - -on: - workflow_call: - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: deploy on alpha environment - uses: appleboy/ssh-action@v1.2.2 - with: - host: ${{ secrets.VPS_HOST }} - username: ${{ secrets.VPS_USER }} - key: ${{ secrets.SSH_KEY }} - port: ${{ secrets.VPS_PORT }} - script: | - cd ~/${{ secrets.PATH_ALPHA }} - git pull origin develop - docker compose build - docker compose up -d diff --git a/.github/workflows/ci-current.yml b/.github/workflows/ci-current.yml deleted file mode 100644 index 584db83e..00000000 --- a/.github/workflows/ci-current.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: CI Current - -on: - workflow_call: - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: deploy on production environment - uses: appleboy/ssh-action@v1.2.2 - with: - host: ${{ secrets.VPS_HOST }} - username: ${{ secrets.VPS_USER }} - key: ${{ secrets.SSH_KEY }} - port: ${{ secrets.VPS_PORT }} - script: | - cd ~/${{ secrets.PATH_CURRENT }} - git pull origin main - docker compose build - docker compose up -d diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml new file mode 100644 index 00000000..55e5848f --- /dev/null +++ b/.github/workflows/current.yml @@ -0,0 +1,38 @@ +name: CI/CD Current + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + uses: ./.github/workflows/integrations-test.yml + + deploy: + runs-on: ubuntu-latest + timeout-minutes: 10 + needs: build + if: github.event_name == 'push' + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: deploy on production environment + uses: appleboy/ssh-action@v1.2.5 + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ secrets.VPS_PORT }} + script: | + set -euo pipefail + cd ~/${{ secrets.PATH_CURRENT }} + git fetch origin + git reset --hard origin/main + docker compose build + docker compose up -d --remove-orphans diff --git a/.github/workflows/insider.yml b/.github/workflows/insider.yml new file mode 100644 index 00000000..ac1f0d39 --- /dev/null +++ b/.github/workflows/insider.yml @@ -0,0 +1,38 @@ +name: CI/CD Insider + +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +jobs: + build: + uses: ./.github/workflows/integrations-test.yml + + deploy: + runs-on: ubuntu-latest + timeout-minutes: 10 + needs: build + if: github.event_name == 'push' + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: deploy on production environment + uses: appleboy/ssh-action@v1.2.5 + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USER }} + key: ${{ secrets.SSH_KEY }} + port: ${{ secrets.VPS_PORT }} + script: | + set -euo pipefail + cd ~/${{ secrets.PATH_INSIDER }} + git fetch origin + git reset --hard origin/develop + docker compose build + docker compose up -d --remove-orphans diff --git a/.github/workflows/integrations-test.yml b/.github/workflows/integrations-test.yml index 80d3e9aa..4f29c6d1 100644 --- a/.github/workflows/integrations-test.yml +++ b/.github/workflows/integrations-test.yml @@ -1,306 +1,58 @@ -name: Integrations test +name: CI Tests on: - push: - branches: - - "**" - -env: - NODE_VERSION: "22.x" - BUN_VERSION: "latest" - LAPIKIT_REPOSITORY: "lapikit/lapikit" - LAPIKIT_REF: ${{ github.ref == 'refs/heads/main' && 'main' || 'develop' }} + workflow_call: jobs: - dependencies: - name: Install dependencies - runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} - - - name: Cache Bun dependencies - uses: actions/cache@v4 - id: bun-cache - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- - - - name: Install dependencies - if: steps.bun-cache.outputs.cache-hit != 'true' - run: bun install - - site-kit-vitest: - name: Site-Kit vitest - needs: - - dependencies - runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} - - - name: Restore Bun dependencies cache - uses: actions/cache@v4 - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- - - - name: Install dependencies - run: bun install - - - name: Test site-kit with vitest - run: bun --cwd packages/site-kit test - - site-kit-lint: - name: Site-Kit lint - needs: - - site-kit-vitest - runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} - - - name: Restore Bun dependencies cache - uses: actions/cache@v4 - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- - - - name: Install dependencies - run: bun install - - - name: Run linter on site-kit - run: bun --cwd packages/site-kit lint - - site-kit-build: - name: Build site-kit - needs: - - site-kit-lint + build: runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} - - - name: Restore Bun dependencies cache - uses: actions/cache@v4 - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- - - - name: Install dependencies - run: bun install - - - name: Build site-kit - run: bun --cwd packages/site-kit build - - - name: Verify site-kit build - run: test -d packages/site-kit/dist - - - name: Upload site-kit build - uses: actions/upload-artifact@v4 - with: - name: site-kit-dist - path: packages/site-kit/dist - - lapikit-build: - name: Build lapikit - needs: - - dependencies - runs-on: ubuntu-latest - timeout-minutes: 5 + timeout-minutes: 10 steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} + - name: Checkout repository + uses: actions/checkout@v6 - - name: Restore Bun dependencies cache - uses: actions/cache@v4 - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- + - name: Setup Bun + uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun install - - name: Build lapikit - run: bun --cwd packages/lapikit build + - name: Create .env file + run: cp .env.example .env - - name: Verify lapikit build - run: test -d packages/lapikit/dist + - name: Build + run: bun run build - - name: Upload lapikit build - uses: actions/upload-artifact@v4 + - name: Upload build artifact + uses: actions/upload-artifact@v7 with: - name: lapikit-dist - path: packages/lapikit/dist + name: build-output + path: build/ - website: - name: Build website + test: runs-on: ubuntu-latest - needs: - - site-kit-build - - lapikit-build timeout-minutes: 10 + needs: build steps: - - uses: actions/checkout@v4 - - name: Checkout lapikit package - uses: actions/checkout@v4 - with: - repository: ${{ env.LAPIKIT_REPOSITORY }} - ref: ${{ env.LAPIKIT_REF }} - path: packages/lapikit - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - uses: oven-sh/setup-bun@v2 - with: - bun-version: ${{ env.BUN_VERSION }} + - name: Checkout repository + uses: actions/checkout@v6 - - name: Restore Bun dependencies cache - uses: actions/cache@v4 - with: - path: | - node_modules - ~/.bun/install/cache - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} - restore-keys: | - ${{ runner.os }}-bun- + - name: Setup Bun + uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun install - - name: Download site-kit build - uses: actions/download-artifact@v4 - with: - name: site-kit-dist - path: packages/site-kit/dist - - - name: Download lapikit build - uses: actions/download-artifact@v4 + - name: Download build artifact + uses: actions/download-artifact@v8 with: - name: lapikit-dist - path: packages/lapikit/dist - - - name: Create .env file - run: | - cd apps/website - echo "PUBLIC_ENV=development" >> .env - echo "PUBLIC_BASE_URL=http://localhost:5173" >> .env - echo "PUBLIC_API=true" >> .env - echo "PUBLIC_GOOGLE_ANALYTICS_ENABLED=true" >> .env - echo "PUBLIC_GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX" >> .env - echo "PUBLIC_GOOGLE_TAG_MANAGER_ENABLED=true" >> .env - echo "PUBLIC_GOOGLE_TAG_MANAGER_ID=GTM-XXXXXX" >> .env - echo "PUBLIC_BING_WEBMASTER_TOOLS_ENABLED=true" >> .env - echo "PUBLIC_BING_WEBMASTER_TOOLS_ID=XXXXXXXXXX" >> .env - - - name: Build website - run: | - cd apps/website - bun run prepare - bun initialize - bun run build + name: build-output + path: build/ - deploy-alpha: - name: Deploy Alpha - needs: website - if: github.ref != 'refs/heads/main' - permissions: - id-token: write - contents: read - uses: ./.github/workflows/ci-alpha.yml - secrets: inherit + - name: Install Playwright browsers + run: bunx playwright install --with-deps chromium - deploy-production: - name: Deploy Production - needs: website - if: github.ref == 'refs/heads/main' - permissions: - id-token: write - contents: read - uses: ./.github/workflows/ci-current.yml - secrets: inherit + - name: Run smoke tests + run: bun run test:e2e diff --git a/.gitignore b/.gitignore index 09a7d93a..397735a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,45 +1,35 @@ -# dependencies (bun install) node_modules -# output -out -dist -*.tgz +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build +/test-results -# code coverage -coverage -*.lcov +# OS +.DS_Store +Thumbs.db -# logs -logs -_.log -report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json +# IA +.codex +.claude -# dotenv environment variable files +# Env .env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# caches -.eslintcache -.cache -*.tsbuildinfo +.env.* +!.env.example +!.env.test -# IntelliJ based IDEs -.idea - -# Finder (MacOS) folder config -.DS_Store +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* # Docker docker-compose.yml Dockerfile -# monorepo packages -packages/* -!packages/site-kit/ -!packages/site-kit/** -!packages/logos/ -!packages/logos/** +# Markdown +src/pages.docs.json \ No newline at end of file diff --git a/apps/lapikit.dev/.npmrc b/.npmrc similarity index 100% rename from apps/lapikit.dev/.npmrc rename to .npmrc diff --git a/apps/lapikit.dev/.prettierignore b/.prettierignore similarity index 100% rename from apps/lapikit.dev/.prettierignore rename to .prettierignore diff --git a/apps/lapikit.dev/.prettierrc b/.prettierrc similarity index 100% rename from apps/lapikit.dev/.prettierrc rename to .prettierrc diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..175f389e --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "svelte.svelte-vscode", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "bradlc.vscode-tailwindcss" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 0d770bc8..bc31e155 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,65 +1,5 @@ { - "git.ignoreLimitWarning": true, - - // TypeScript configuration - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, - "typescript.preferences.includePackageJsonAutoImports": "on", - "typescript.preferences.importModuleSpecifier": "non-relative", - - // ESLint configuration pour monorepo - "eslint.useFlatConfig": true, - "eslint.workingDirectories": [{ "mode": "auto" }], - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "svelte" - ], - - // Enable project references support - "typescript.disableAutomaticTypeAcquisition": false, - - // Editor improvements - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "always" - }, - "editor.formatOnPaste": true, - "editor.formatOnSave": true, - "prettier.prettierPath": "./node_modules/prettier", - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[svelte]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "files.insertFinalNewline": true, - "files.trimTrailingWhitespace": true, - - // File associations - "files.associations": { - "*.css": "css", - "*.md": "markdown" - }, - - // Search exclusions (better performance) - "search.exclude": { - "**/node_modules": true, - "**/.svelte-kit": true, - "**/dist": true, - "**/.git": true, - "**/bun.lock": true, - "**/*.tsbuildinfo": true - }, - - // Files exclusions in explorer - "files.exclude": { - "**/.svelte-kit": true, - "**/*.tsbuildinfo": true - } + "files.associations": { + "*.css": "tailwindcss" + } } diff --git a/README.md b/README.md index 43e32d2b..344005ed 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Use your first component: ```svelte diff --git a/apps/lapikit.dev/.env.example b/apps/lapikit.dev/.env.example deleted file mode 100644 index bc06831d..00000000 --- a/apps/lapikit.dev/.env.example +++ /dev/null @@ -1,13 +0,0 @@ -# This file is used to set environment variables for the website application. -# Copy this file to .env and fill in the values. -# This file should not be committed to version control. - -# ENVIRONMENT -# Set the environment to development or production -PUBLIC_ENV=development - -# Set the base URL for the website -PUBLIC_BASE_URL="http://localhost:5173" - -# PRERENDER ORIGIN -VITE_PRECONNECT_ORIGIN=http://localhost:5173 diff --git a/apps/lapikit.dev/.gitignore b/apps/lapikit.dev/.gitignore deleted file mode 100644 index 86317e4c..00000000 --- a/apps/lapikit.dev/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -test-results -node_modules - -# Output -.output -.vercel -.netlify -.wrangler -/.svelte-kit -/build -/static/images/* -!/static/images/original - -# OS -.DS_Store -Thumbs.db - -# Env -.env -.env.* -!.env.example -!.env.test - -# Vite -vite.config.js.timestamp-* -vite.config.ts.timestamp-* diff --git a/apps/lapikit.dev/README.md b/apps/lapikit.dev/README.md deleted file mode 100644 index 75842c40..00000000 --- a/apps/lapikit.dev/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# sv - -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). - -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```sh -# create a new project in the current directory -npx sv create - -# create a new project in my-app -npx sv create my-app -``` - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: - -```sh -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -To create a production version of your app: - -```sh -npm run build -``` - -You can preview the production build with `npm run preview`. - -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/apps/lapikit.dev/e2e/demo.test.ts b/apps/lapikit.dev/e2e/demo.test.ts deleted file mode 100644 index 9985ce11..00000000 --- a/apps/lapikit.dev/e2e/demo.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('home page has expected h1', async ({ page }) => { - await page.goto('/'); - await expect(page.locator('h1')).toBeVisible(); -}); diff --git a/apps/lapikit.dev/eslint.config.js b/apps/lapikit.dev/eslint.config.js deleted file mode 100644 index 53caa9dc..00000000 --- a/apps/lapikit.dev/eslint.config.js +++ /dev/null @@ -1,44 +0,0 @@ -import prettier from 'eslint-config-prettier'; -import js from '@eslint/js'; -import { includeIgnoreFile } from '@eslint/compat'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import { fileURLToPath } from 'node:url'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; - -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default ts.config( - includeIgnoreFile(gitignorePath), - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - prettier, - ...svelte.configs.prettier, - { - languageOptions: { - globals: { ...globals.browser, ...globals.node }, - parserOptions: { - tsconfigRootDir: fileURLToPath(new URL('.', import.meta.url)) - } - }, - rules: { 'no-undef': 'off' } - }, - { - files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - languageOptions: { - parserOptions: { - projectService: true, - tsconfigRootDir: fileURLToPath(new URL('.', import.meta.url)), - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig - } - } - }, - { - files: ['**/*.config.js', '**/*.config.ts'], - ...ts.configs.disableTypeChecked - } -); diff --git a/apps/lapikit.dev/mdsvex.config.js b/apps/lapikit.dev/mdsvex.config.js deleted file mode 100644 index 260da02a..00000000 --- a/apps/lapikit.dev/mdsvex.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('mdsvex').MdsvexOptions} */ -export const mdsvexOptions = { - extensions: ['.md', '.svx'] -}; diff --git a/apps/lapikit.dev/package.json b/apps/lapikit.dev/package.json deleted file mode 100644 index 622ae5d3..00000000 --- a/apps/lapikit.dev/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "lapikit.dev", - "private": true, - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite dev", - "build": "npm run optimize-images && vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write .", - "lint": "prettier --check . && eslint .", - "test:unit": "vitest", - "test": "npm run test:unit -- --run && npm run test:e2e", - "test:e2e": "playwright test", - "optimize-images": "npm run scripts/optimize-images.js" - }, - "devDependencies": { - "@eslint/compat": "^1.4.0", - "@eslint/js": "^9.39.1", - "@playwright/test": "^1.57.0", - "@sveltejs/adapter-auto": "^7.0.0", - "@sveltejs/adapter-node": "^5.4.0", - "@sveltejs/enhanced-img": "^0.9.2", - "@sveltejs/kit": "^2.49.1", - "@sveltejs/vite-plugin-svelte": "^6.2.1", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.17", - "@types/node": "^24", - "@vitest/browser-playwright": "^4.0.15", - "browserslist": "^4.28.1", - "eslint": "^9.39.1", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-svelte": "^3.13.1", - "globals": "^16.5.0", - "lapikit": "*", - "@lapikit/repl": "*", - "lightningcss": "^1.30.2", - "mdsvex": "^0.12.6", - "playwright": "^1.57.0", - "prettier": "^3.7.4", - "prettier-plugin-svelte": "^3.4.0", - "prettier-plugin-tailwindcss": "^0.7.2", - "sharp": "^0.34.5", - "svelte": "^5.45.6", - "svelte-check": "^4.3.4", - "tailwindcss": "^4.1.17", - "typescript": "^5.9.3", - "typescript-eslint": "^8.48.1", - "vite": "^7.2.6", - "vite-imagetools": "^9.0.2", - "vite-plugin-compression": "^0.5.1", - "vitest": "^4.0.15", - "vitest-browser-svelte": "^2.0.1" - }, - "dependencies": { - "@lucide/svelte": "^0.562.0", - "@unpic/svelte": "^1.0.1", - "shiki": "^3.20.0" - } -} diff --git a/apps/lapikit.dev/playwright.config.ts b/apps/lapikit.dev/playwright.config.ts deleted file mode 100644 index 8f5062c2..00000000 --- a/apps/lapikit.dev/playwright.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from '@playwright/test'; - -export default defineConfig({ - webServer: { command: 'npm run build && npm run preview', port: 4173 }, - testDir: 'e2e' -}); diff --git a/apps/lapikit.dev/scripts/optimize-images.js b/apps/lapikit.dev/scripts/optimize-images.js deleted file mode 100644 index f66d915b..00000000 --- a/apps/lapikit.dev/scripts/optimize-images.js +++ /dev/null @@ -1,65 +0,0 @@ -import sharp from 'sharp'; -import { readdir, mkdir } from 'fs/promises'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const inputDir = path.join(__dirname, '../static/images/original'); -const outputDir = path.join(__dirname, '../static/images'); - -// Tailles pour mobile, desktop, retina -const sizes = [ - { width: 320, suffix: '-mobile' }, - { width: 700, suffix: '-desktop' }, - { width: 1400, suffix: '-2x' } -]; - -async function optimizeImages() { - try { - // CrΓ©er le dossier de sortie s'il n'existe pas - await mkdir(outputDir, { recursive: true }); - - console.log('πŸ–ΌοΈ Optimisation des images...\n'); - - // Lire tous les fichiers du dossier original - const files = await readdir(inputDir); - - for (const file of files) { - // VΓ©rifier que c'est une image - if (!/\.(jpg|jpeg|png|webp)$/i.test(file)) continue; - - const inputPath = path.join(inputDir, file); - const name = path.parse(file).name; - - console.log(`πŸ“Έ Processing: ${file}`); - - // GΓ©nΓ©rer toutes les tailles - for (const { width, suffix } of sizes) { - // WebP - const webpOutput = path.join(outputDir, `${name}${suffix}.webp`); - await sharp(inputPath) - .resize(width, null, { withoutEnlargement: true }) - .webp({ quality: 85 }) - .toFile(webpOutput); - - console.log(` βœ… ${name}${suffix}.webp (${width}px)`); - } - - // Aussi crΓ©er une version standard (pour fallback) - const standardOutput = path.join(outputDir, `${name}.jpg`); - await sharp(inputPath) - .resize(700, null, { withoutEnlargement: true }) - .jpeg({ quality: 85 }) - .toFile(standardOutput); - - console.log(` βœ… ${name}.jpg (standard)\n`); - } - - console.log('✨ Optimisation terminΓ©e !'); - } catch (error) { - console.error('❌ Erreur:', error); - process.exit(1); - } -} - -optimizeImages(); diff --git a/apps/lapikit.dev/src/app.d.ts b/apps/lapikit.dev/src/app.d.ts deleted file mode 100644 index da08e6da..00000000 --- a/apps/lapikit.dev/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/apps/lapikit.dev/src/content/pages/city/kalimdor.md b/apps/lapikit.dev/src/content/pages/city/kalimdor.md deleted file mode 100644 index 9e3312bf..00000000 --- a/apps/lapikit.dev/src/content/pages/city/kalimdor.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: 'Kalimdor - Diversity and Heritage' -description: 'Discover Kalimdor, a vast continent known for its diverse landscapes and rich cultural heritage.' -date: '2026-01-01' -author: 'Nycolaide' -tags: ['city', 'travel', 'culture', 'kalimdor'] -image: '/images/kalimdor.jpg' -published: true ---- - -# Kalimdor - -Kalimdor is a vast continent known for its diverse landscapes and rich cultural heritage. From the arid deserts to lush forests, Kalimdor offers a variety of environments that are home to many unique species and civilizations. diff --git a/apps/lapikit.dev/src/content/pages/city/pandarie.md b/apps/lapikit.dev/src/content/pages/city/pandarie.md deleted file mode 100644 index 4364c32f..00000000 --- a/apps/lapikit.dev/src/content/pages/city/pandarie.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: 'Pandarie - Land of Serenity' -description: 'Discover Pandarie, a mystical land known for its serene landscapes and rich traditions.' -date: '2026-01-02' -author: 'Nycolaide' -tags: ['city', 'travel', 'culture', 'pandarie', 'nature'] -image: '/images/pandarie.jpg' -published: true ---- - -# Pandarie - -Pandarie is a mystical land known for its serene landscapes and rich traditions. The region is characterized by its lush bamboo forests, tranquil rivers, and majestic mountains. Pandarie is home to a unique culture that emphasizes harmony with nature and spiritual enlightenment. diff --git a/apps/lapikit.dev/src/content/pages/city/royaumes-de-l-est.md b/apps/lapikit.dev/src/content/pages/city/royaumes-de-l-est.md deleted file mode 100644 index 110198fb..00000000 --- a/apps/lapikit.dev/src/content/pages/city/royaumes-de-l-est.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: 'The Eastern Kingdoms - Land of History' -description: 'The Eastern Kingdoms, a continent steeped in history and culture, known for its diverse landscapes.' -date: '2026-01-03' -author: 'Nycolaide' -tags: ['city', 'travel', 'history', 'culture'] -image: '/images/the-eastern-kingdoms.jpg' -published: true ---- - -# Royaumes de l'Est - -The Eastern Kingdoms is a continent steeped in history and culture, known for its diverse landscapes ranging from rolling hills to dense forests. It is home to several prominent cities and civilizations, each contributing to the rich tapestry of the region. The Eastern Kingdoms have witnessed numerous historical events that have shaped its current identity, making it a fascinating destination for explorers and historians alike. diff --git a/apps/lapikit.dev/src/content/pages/dicsover.md b/apps/lapikit.dev/src/content/pages/dicsover.md deleted file mode 100644 index 49e1de7d..00000000 --- a/apps/lapikit.dev/src/content/pages/dicsover.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: 'Discover all the cities of the world' -description: 'Explore diverse and dynamic cities around the world. Each city has its own unique culture, history, and attractions.' -date: '2026-01-04' -author: 'Nycolaide' -tags: ['cities', 'travel', 'discovery', 'tourism'] -image: '/images/cities.jpg' -published: true ---- - - - -# Discover all citys - -Explore the diverse and vibrant cities around the world. Each city has its own unique culture, history, and attractions waiting to be discovered. Whether you're looking for bustling urban centers or charming small towns, there's something for everyone. - -## Popular Cities to Explore - -- **Kalimdor**: A city known for its rich history and stunning architecture. -- **Les Royaumres de l'Est**: Famous for its beautiful landscapes and vibrant culture. -- **Northrend**: A city that offers breathtaking views and exciting adventures. -- **Pandaria**: Known for its serene environment and unique traditions. -- **Draenor**: A city that combines ancient history with modern innovation. -- **The Broken Isles**: A city that boasts a mix of old-world charm and new-world excitement. -- **Zandalar**: Renowned for its exotic culture and stunning natural beauty. -- **Kul Tiras**: A city with a rich maritime history and vibrant coastal life. -- **Argus**: A city that offers a glimpse into a futuristic world with advanced technology. - -
- -
- - -
- -
\ No newline at end of file diff --git a/apps/lapikit.dev/src/content/pages/sample.json b/apps/lapikit.dev/src/content/pages/sample.json deleted file mode 100644 index a200084b..00000000 --- a/apps/lapikit.dev/src/content/pages/sample.json +++ /dev/null @@ -1,298 +0,0 @@ -[ - { - "_id": "695cd88bc8412d197891857c", - "index": 0, - "guid": "ccfdda0e-4e01-40ef-9414-31ab6db220a8", - "isActive": true, - "balance": "$2,904.67", - "picture": "http://placehold.it/32x32", - "age": 23, - "eyeColor": "blue", - "name": "Miranda Stevens", - "gender": "male", - "company": "NEOCENT", - "email": "mirandastevens@neocent.com", - "phone": "+1 (973) 514-2774", - "address": "688 Corbin Place, Enlow, Texas, 4107", - "about": "Culpa in tempor exercitation consectetur. Ipsum laboris fugiat irure voluptate reprehenderit est nostrud ut eiusmod et. Eiusmod excepteur enim dolore ad sunt amet nostrud labore commodo. Ipsum occaecat anim veniam non tempor aliquip reprehenderit.\r\n", - "registered": "2020-06-06T07:32:41 -02:00", - "latitude": -24.611156, - "longitude": -126.99921, - "tags": ["exercitation", "do", "adipisicing", "magna", "ipsum", "dolor", "aliqua"], - "friends": [ - { - "id": 0, - "name": "Fulton Mccoy" - }, - { - "id": 1, - "name": "Mccormick Moore" - }, - { - "id": 2, - "name": "Bridget Holder" - } - ], - "greeting": "Hello, Miranda Stevens! You have 9 unread messages.", - "favoriteFruit": "apple" - }, - { - "_id": "695cd88be15abe14509ccaf5", - "index": 1, - "guid": "4f8d30d6-28fc-4744-98f1-3cfd62c7282f", - "isActive": true, - "balance": "$2,810.16", - "picture": "http://placehold.it/32x32", - "age": 26, - "eyeColor": "green", - "name": "Travis Rutledge", - "gender": "male", - "company": "OLYMPIX", - "email": "travisrutledge@olympix.com", - "phone": "+1 (874) 413-2951", - "address": "176 Johnson Street, Romeville, Georgia, 6990", - "about": "Magna mollit laborum in anim incididunt do reprehenderit minim deserunt esse eiusmod in duis in. Incididunt aliquip est culpa adipisicing duis officia reprehenderit cillum aliqua et aute voluptate. Pariatur id sunt excepteur consequat amet reprehenderit non eiusmod eiusmod.\r\n", - "registered": "2018-07-22T10:42:55 -02:00", - "latitude": -56.359864, - "longitude": 162.964443, - "tags": ["aute", "incididunt", "laborum", "mollit", "commodo", "qui", "cupidatat"], - "friends": [ - { - "id": 0, - "name": "Tamra Webster" - }, - { - "id": 1, - "name": "Summer Richard" - }, - { - "id": 2, - "name": "Hensley Mills" - } - ], - "greeting": "Hello, Travis Rutledge! You have 7 unread messages.", - "favoriteFruit": "banana" - }, - { - "_id": "695cd88b8c732d8cf6d59e1d", - "index": 2, - "guid": "2c17e440-626b-46bb-889d-2679ef368102", - "isActive": true, - "balance": "$3,469.56", - "picture": "http://placehold.it/32x32", - "age": 21, - "eyeColor": "green", - "name": "Kelly Kramer", - "gender": "male", - "company": "STRALUM", - "email": "kellykramer@stralum.com", - "phone": "+1 (822) 480-3040", - "address": "789 Eldert Street, Alfarata, Hawaii, 5669", - "about": "Est esse ad consequat tempor ut ad voluptate voluptate minim officia magna reprehenderit culpa adipisicing. Dolore sunt nostrud qui veniam culpa id deserunt aute fugiat. Eu mollit adipisicing veniam nisi consectetur in exercitation. Ullamco reprehenderit consequat tempor quis aute minim exercitation aliqua dolor nostrud aliquip Lorem occaecat. Commodo ad aliquip occaecat culpa enim. Deserunt in exercitation quis non cupidatat irure culpa ad deserunt quis laborum laboris officia aute. Anim voluptate esse et reprehenderit irure ad anim culpa nisi pariatur cillum Lorem dolor.\r\n", - "registered": "2022-05-24T09:37:31 -02:00", - "latitude": 32.748187, - "longitude": 13.377767, - "tags": ["duis", "ex", "id", "eiusmod", "pariatur", "enim", "est"], - "friends": [ - { - "id": 0, - "name": "Brenda Giles" - }, - { - "id": 1, - "name": "Bass Parrish" - }, - { - "id": 2, - "name": "Beulah Donovan" - } - ], - "greeting": "Hello, Kelly Kramer! You have 2 unread messages.", - "favoriteFruit": "apple" - }, - { - "_id": "695cd88b0b48ca8a8052e907", - "index": 3, - "guid": "5d69e391-94c3-48f6-b99c-8d5552b31fce", - "isActive": false, - "balance": "$3,358.23", - "picture": "http://placehold.it/32x32", - "age": 36, - "eyeColor": "brown", - "name": "Hays Nieves", - "gender": "male", - "company": "QUIZMO", - "email": "haysnieves@quizmo.com", - "phone": "+1 (904) 446-2829", - "address": "675 Gallatin Place, Bancroft, Federated States Of Micronesia, 7745", - "about": "Qui mollit Lorem anim non. Consectetur exercitation consequat incididunt minim reprehenderit. Veniam ullamco nostrud enim reprehenderit enim tempor esse et voluptate sunt. Veniam labore cupidatat nisi deserunt id eu.\r\n", - "registered": "2014-04-27T12:15:57 -02:00", - "latitude": -37.306757, - "longitude": 49.790809, - "tags": ["dolor", "consectetur", "labore", "laborum", "reprehenderit", "cupidatat", "amet"], - "friends": [ - { - "id": 0, - "name": "Best Goff" - }, - { - "id": 1, - "name": "Margarita Velazquez" - }, - { - "id": 2, - "name": "Porter Luna" - } - ], - "greeting": "Hello, Hays Nieves! You have 8 unread messages.", - "favoriteFruit": "apple" - }, - { - "_id": "695cd88be193cea8c49b9687", - "index": 4, - "guid": "05cdc776-3249-4131-bf88-58b99ee054cf", - "isActive": true, - "balance": "$3,095.04", - "picture": "http://placehold.it/32x32", - "age": 39, - "eyeColor": "brown", - "name": "Vicky Abbott", - "gender": "female", - "company": "EARTHPLEX", - "email": "vickyabbott@earthplex.com", - "phone": "+1 (806) 538-2851", - "address": "122 Havens Place, Crenshaw, Indiana, 3550", - "about": "Laboris qui est laboris enim deserunt id do duis occaecat in incididunt do excepteur. Qui occaecat enim commodo officia duis ut. Ut nisi dolor ut Lorem mollit cillum esse dolor proident. Eiusmod consectetur ad fugiat et aute esse duis magna adipisicing sunt. Incididunt aliquip dolore quis ipsum. Lorem sit occaecat consequat exercitation velit do enim enim aute aliqua est ex enim. Irure Lorem tempor nisi do cillum enim irure.\r\n", - "registered": "2021-06-01T05:23:01 -02:00", - "latitude": 20.090701, - "longitude": 14.703592, - "tags": ["consequat", "anim", "exercitation", "Lorem", "exercitation", "pariatur", "fugiat"], - "friends": [ - { - "id": 0, - "name": "Lorie Stephens" - }, - { - "id": 1, - "name": "Mai Mccullough" - }, - { - "id": 2, - "name": "Steele Sexton" - } - ], - "greeting": "Hello, Vicky Abbott! You have 5 unread messages.", - "favoriteFruit": "strawberry" - }, - { - "_id": "695cd88b6ead487b99ab6f5e", - "index": 5, - "guid": "ae27efcb-133f-42ce-a305-7f4456d741a6", - "isActive": true, - "balance": "$1,642.36", - "picture": "http://placehold.it/32x32", - "age": 26, - "eyeColor": "green", - "name": "Rollins Vazquez", - "gender": "male", - "company": "EXODOC", - "email": "rollinsvazquez@exodoc.com", - "phone": "+1 (807) 485-2330", - "address": "472 Nevins Street, Nutrioso, New Hampshire, 3272", - "about": "Pariatur anim duis commodo minim. Et dolore sit adipisicing sint est occaecat veniam consequat deserunt aliquip dolor dolor. Aliqua veniam fugiat cillum minim labore aliquip. Eiusmod duis nisi exercitation eiusmod enim minim magna est id eu enim sit do.\r\n", - "registered": "2014-05-19T04:51:57 -02:00", - "latitude": -36.224382, - "longitude": 101.251397, - "tags": ["nostrud", "nisi", "non", "dolore", "dolor", "reprehenderit", "cupidatat"], - "friends": [ - { - "id": 0, - "name": "Carlene Hamilton" - }, - { - "id": 1, - "name": "Mcintyre Villarreal" - }, - { - "id": 2, - "name": "Arline Blackwell" - } - ], - "greeting": "Hello, Rollins Vazquez! You have 4 unread messages.", - "favoriteFruit": "banana" - }, - { - "_id": "695cd88b394a034848e4101e", - "index": 6, - "guid": "485e21f6-310b-4543-832b-3803240505e1", - "isActive": false, - "balance": "$3,446.59", - "picture": "http://placehold.it/32x32", - "age": 28, - "eyeColor": "blue", - "name": "Adrian Lucas", - "gender": "female", - "company": "GALLAXIA", - "email": "adrianlucas@gallaxia.com", - "phone": "+1 (964) 456-3810", - "address": "848 Haring Street, Ogema, Palau, 1194", - "about": "Et reprehenderit occaecat do commodo dolor et qui minim amet. Laborum fugiat irure est ut Lorem dolor qui velit magna duis. Excepteur ipsum dolore veniam culpa mollit dolor eiusmod irure excepteur eu. Proident magna dolore dolore consectetur tempor sunt aliquip. Incididunt laboris adipisicing nisi nostrud qui ea ea.\r\n", - "registered": "2019-12-17T02:26:51 -01:00", - "latitude": 75.56098, - "longitude": -22.276802, - "tags": ["ullamco", "id", "non", "consequat", "tempor", "sunt", "ad"], - "friends": [ - { - "id": 0, - "name": "Ernestine Glover" - }, - { - "id": 1, - "name": "Snow Golden" - }, - { - "id": 2, - "name": "Owen Clay" - } - ], - "greeting": "Hello, Adrian Lucas! You have 8 unread messages.", - "favoriteFruit": "banana" - }, - { - "_id": "695cd88be15bd1de32def0df", - "index": 7, - "guid": "e7d35480-e516-4841-afc0-e8bc60423668", - "isActive": false, - "balance": "$1,078.49", - "picture": "http://placehold.it/32x32", - "age": 29, - "eyeColor": "brown", - "name": "Reyes Riley", - "gender": "male", - "company": "PROTODYNE", - "email": "reyesriley@protodyne.com", - "phone": "+1 (980) 533-3381", - "address": "698 Chestnut Street, Saticoy, New Mexico, 9909", - "about": "Aliquip anim sint esse duis ut pariatur fugiat eu est dolore est occaecat amet qui. Nisi anim veniam veniam enim ullamco do. Deserunt laborum mollit officia labore aliquip elit voluptate qui sint mollit commodo est. Dolore cupidatat ex anim ex ullamco. Excepteur officia eu dolore nostrud minim ipsum labore elit deserunt adipisicing eu in veniam laboris. Eu adipisicing eu officia commodo incididunt velit Lorem dolore anim Lorem veniam do amet.\r\n", - "registered": "2014-03-04T09:12:47 -01:00", - "latitude": -16.980884, - "longitude": 49.289036, - "tags": ["incididunt", "consectetur", "exercitation", "cupidatat", "quis", "occaecat", "minim"], - "friends": [ - { - "id": 0, - "name": "Bauer Ferguson" - }, - { - "id": 1, - "name": "French Colon" - }, - { - "id": 2, - "name": "Rich King" - } - ], - "greeting": "Hello, Reyes Riley! You have 8 unread messages.", - "favoriteFruit": "strawberry" - } -] diff --git a/apps/lapikit.dev/src/demo.spec.ts b/apps/lapikit.dev/src/demo.spec.ts deleted file mode 100644 index e07cbbd7..00000000 --- a/apps/lapikit.dev/src/demo.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it, expect } from 'vitest'; - -describe('sum test', () => { - it('adds 1 + 2 to equal 3', () => { - expect(1 + 2).toBe(3); - }); -}); diff --git a/apps/lapikit.dev/src/hook.server.ts b/apps/lapikit.dev/src/hook.server.ts deleted file mode 100644 index 40c75df3..00000000 --- a/apps/lapikit.dev/src/hook.server.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Handle } from '@sveltejs/kit'; - -// selectively preload fonts -const fonts: string[] = ['roboto-latin-400-normal']; - -export const handle: Handle = async ({ event, resolve }) => { - const response = await resolve(event, { - preload: ({ type, path }) => { - if (type === 'font') { - if (!path.endsWith('.woff2')) return false; - return fonts.some((font) => path.includes(font)); - } - - return type === 'js' || type === 'css'; // future-proof, if we add `assets` later - } - }); - - return response; -}; diff --git a/apps/lapikit.dev/src/lib/assets/favicon.svg b/apps/lapikit.dev/src/lib/assets/favicon.svg deleted file mode 100644 index cc5dc66a..00000000 --- a/apps/lapikit.dev/src/lib/assets/favicon.svg +++ /dev/null @@ -1 +0,0 @@ -svelte-logo \ No newline at end of file diff --git a/apps/lapikit.dev/src/lib/components/Breadcrumb.svelte b/apps/lapikit.dev/src/lib/components/Breadcrumb.svelte deleted file mode 100644 index 7d063454..00000000 --- a/apps/lapikit.dev/src/lib/components/Breadcrumb.svelte +++ /dev/null @@ -1,44 +0,0 @@ - - - - {@html ` - - - - - - - {alt} - - - - - - - diff --git a/apps/lapikit.dev/src/lib/components/SearchBar.svelte b/apps/lapikit.dev/src/lib/components/SearchBar.svelte deleted file mode 100644 index bd51b05c..00000000 --- a/apps/lapikit.dev/src/lib/components/SearchBar.svelte +++ /dev/null @@ -1,126 +0,0 @@ - - -
-
- - - {#if searchQuery} - - {/if} -
- - {#if showResults} -
- {#if isSearching} -
Search...
- {:else if searchResults.length > 0} -
    - {#each searchResults as result (result.slug)} -
  • - -
  • - {/each} -
- {:else} -
No result for "{searchQuery}"
- {/if} -
- {/if} -
diff --git a/apps/lapikit.dev/src/lib/index.ts b/apps/lapikit.dev/src/lib/index.ts deleted file mode 100644 index 856f2b6c..00000000 --- a/apps/lapikit.dev/src/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/apps/lapikit.dev/src/lib/types/blog.ts b/apps/lapikit.dev/src/lib/types/blog.ts deleted file mode 100644 index d7b1b31f..00000000 --- a/apps/lapikit.dev/src/lib/types/blog.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Component } from 'svelte'; - -export interface BlogPost { - slug: string; - title: string; - description?: string; - date?: string; - author?: string; - tags?: string[]; - image?: string; - published?: boolean; -} - -export interface BlogPostModule { - default: Component; - metadata: Omit; -} diff --git a/apps/lapikit.dev/src/lib/utils/blog.ts b/apps/lapikit.dev/src/lib/utils/blog.ts deleted file mode 100644 index 96351aa7..00000000 --- a/apps/lapikit.dev/src/lib/utils/blog.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { BlogPost } from '$lib/types/blog'; - -export async function loadBlogPosts(): Promise { - const modules = import.meta.glob('/src/content/pages/**/*.md'); - - const posts: BlogPost[] = []; - - for (const [filepath, loader] of Object.entries(modules)) { - const slug = filepath - .replace('/src/content/pages/', '') - .replace('.md', '') - .replace(/\/index$/, ''); - - try { - const module = (await loader()) as any; - const metadata = module.metadata || {}; - - const published = metadata?.published !== false; - - if (published) { - posts.push({ - slug, - title: metadata?.title || slug, - description: metadata?.description, - date: metadata?.date, - author: metadata?.author, - tags: metadata?.tags, - image: metadata?.image, - published - }); - } - } catch (error) { - console.error(`Error loading ${filepath}:`, error); - } - } - - return posts.sort((a, b) => { - if (!a.date || !b.date) return 0; - return new Date(b.date).getTime() - new Date(a.date).getTime(); - }); -} - -export async function loadBlogPost(slug: string): Promise<{ - component: any; - metadata: BlogPost; -} | null> { - try { - const modules = import.meta.glob('/src/content/pages/**/*.md'); - - for (const [filepath, loader] of Object.entries(modules)) { - const postSlug = filepath - .replace('/src/content/pages/', '') - .replace('.md', '') - .replace(/\/index$/, ''); - - if (postSlug === slug) { - const module = (await loader()) as any; - const metadata = module.metadata || {}; - - return { - component: module.default, - metadata: { - slug, - title: metadata?.title || slug, - description: metadata?.description, - date: metadata?.date, - author: metadata?.author, - tags: metadata?.tags, - image: metadata?.image, - published: metadata?.published !== false - } - }; - } - } - - return null; - } catch (error) { - console.error('Error loading blog post:', error); - return null; - } -} - -export async function getAdjacentPosts(currentSlug: string): Promise<{ - prev: BlogPost | null; - next: BlogPost | null; -}> { - const allPosts = await loadBlogPosts(); - - const category = currentSlug.includes('/') ? currentSlug.split('/')[0] : null; - - const posts = category - ? allPosts.filter((post) => post.slug.startsWith(category + '/')) - : allPosts; - - const currentIndex = posts.findIndex((post) => post.slug === currentSlug); - - if (currentIndex === -1) { - return { prev: null, next: null }; - } - - return { - prev: currentIndex > 0 ? posts[currentIndex - 1] : null, - next: currentIndex < posts.length - 1 ? posts[currentIndex + 1] : null - }; -} diff --git a/apps/lapikit.dev/src/routes/+error.svelte b/apps/lapikit.dev/src/routes/+error.svelte deleted file mode 100644 index 6d1c83bd..00000000 --- a/apps/lapikit.dev/src/routes/+error.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - {page?.status} - - -
-

{page?.error?.message}

-
\ No newline at end of file diff --git a/apps/lapikit.dev/src/routes/+layout.server.ts b/apps/lapikit.dev/src/routes/+layout.server.ts deleted file mode 100644 index 2ae3a706..00000000 --- a/apps/lapikit.dev/src/routes/+layout.server.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { LayoutServerLoad } from './$types'; - -export const load: LayoutServerLoad = async ({ fetch }) => { - const [npmRes] = await Promise.all([ - fetch('https://api.npmjs.org/downloads/point/last-month/lapikit').then((r) => r.json()) - ]); - - const data = { - downloads: npmRes.downloads ?? 0 - }; - - return { stats: data }; -}; diff --git a/apps/lapikit.dev/src/routes/+layout.svelte b/apps/lapikit.dev/src/routes/+layout.svelte deleted file mode 100644 index 7d47205e..00000000 --- a/apps/lapikit.dev/src/routes/+layout.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Lapikit - - - - - -
- {@render children()} -
- diff --git a/apps/lapikit.dev/src/routes/+page.svelte b/apps/lapikit.dev/src/routes/+page.svelte deleted file mode 100644 index 3f117ed0..00000000 --- a/apps/lapikit.dev/src/routes/+page.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -

Welcome to SvelteKit

-

Visit svelte.dev/docs/kit to read the documentation

- -

Stats Lapikit

-
    -
  • Downloads : {data.stats.downloads.toLocaleString()}
  • -
- -

Components Lab

- -demo - -

Labs merge Class and Styles Core

-Demo diff --git a/apps/lapikit.dev/src/routes/api/search/+server.ts b/apps/lapikit.dev/src/routes/api/search/+server.ts deleted file mode 100644 index 35ab3a12..00000000 --- a/apps/lapikit.dev/src/routes/api/search/+server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { json } from '@sveltejs/kit'; -import { loadBlogPosts } from '$lib/utils/blog'; -import type { RequestHandler } from './$types'; - -export const GET: RequestHandler = async () => { - const posts = await loadBlogPosts(); - - const searchData = posts.map((post) => ({ - slug: post.slug, - title: post.title, - description: post.description, - category: post.slug.includes('/') ? post.slug.split('/')[0] : null - })); - - return json(searchData); -}; diff --git a/apps/lapikit.dev/src/routes/blog/+page.server.ts b/apps/lapikit.dev/src/routes/blog/+page.server.ts deleted file mode 100644 index 232d2203..00000000 --- a/apps/lapikit.dev/src/routes/blog/+page.server.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { loadBlogPosts } from '$lib/utils/blog'; -import type { PageServerLoad } from './$types'; - -export const load: PageServerLoad = async () => { - const posts = await loadBlogPosts(); - - return { - posts, - meta: { - title: 'Blog - All posts', - description: 'Discover all our blog posts', - canonical: '/blog' - } - }; -}; diff --git a/apps/lapikit.dev/src/routes/blog/+page.svelte b/apps/lapikit.dev/src/routes/blog/+page.svelte deleted file mode 100644 index 2d491511..00000000 --- a/apps/lapikit.dev/src/routes/blog/+page.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - - - {data.meta.title} - - - - - - - - - -
- -
-

Blog

-

Discover all articles

-
- - -
diff --git a/apps/lapikit.dev/src/routes/blog/[...slug]/+page.server.ts b/apps/lapikit.dev/src/routes/blog/[...slug]/+page.server.ts deleted file mode 100644 index aca2186e..00000000 --- a/apps/lapikit.dev/src/routes/blog/[...slug]/+page.server.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { loadBlogPost, getAdjacentPosts } from '$lib/utils/blog'; -import { error } from '@sveltejs/kit'; -import type { PageServerLoad } from './$types'; -import { PUBLIC_BASE_URL } from '$env/static/public'; - -export const load: PageServerLoad = async ({ params }) => { - const slug = params.slug; - const post = await loadBlogPost(slug); - - if (!post || !post.metadata.published) { - throw error(404, 'Article not found'); - } - - const { prev, next } = await getAdjacentPosts(slug); - - const slugParts = slug.split('/'); - const breadcrumbs = [ - { label: 'Homepage', url: '/' }, - { label: 'Blog', url: '/blog' } - ]; - - let currentPath = ''; - for (let i = 0; i < slugParts.length - 1; i++) { - currentPath += (currentPath ? '/' : '') + slugParts[i]; - breadcrumbs.push({ - label: slugParts[i].charAt(0).toUpperCase() + slugParts[i].slice(1), - url: `/blog/${currentPath}` - }); - } - - breadcrumbs.push({ - label: post.metadata.title, - url: `/blog/${slug}` - }); - - return { - slug, - metadata: post.metadata, - breadcrumbs, - baseUrl: PUBLIC_BASE_URL, - prevPost: prev, - nextPost: next, - meta: { - title: post.metadata.title, - description: post.metadata.description || post.metadata.title, - canonical: `/blog/${slug}`, - image: post.metadata.image, - date: post.metadata.date, - author: post.metadata.author - } - }; -}; diff --git a/apps/lapikit.dev/src/routes/blog/[...slug]/+page.svelte b/apps/lapikit.dev/src/routes/blog/[...slug]/+page.svelte deleted file mode 100644 index 1294e96a..00000000 --- a/apps/lapikit.dev/src/routes/blog/[...slug]/+page.svelte +++ /dev/null @@ -1,125 +0,0 @@ - - - - {data.meta.title} - - - - - - - - - - {#if data.meta.image} - - {/if} - {#if data.meta.date} - - {/if} - {#if data.meta.author} - - {/if} - - - - - - {#if data.meta.image} - - {/if} - - {@html ` - - - {data.meta.title} - - - - - - - - - - -
- - -
-

Cities

-

Discover our articles about cities around the world

-
- {data.posts.length} post{data.posts.length > 1 ? 's' : ''} -
-
- - {#if data.posts.length > 0} - - {:else} -
-

No articles available at the moment.

- ← Back to blog -
- {/if} -
diff --git a/apps/lapikit.dev/src/routes/layout.css b/apps/lapikit.dev/src/routes/layout.css deleted file mode 100644 index cd670237..00000000 --- a/apps/lapikit.dev/src/routes/layout.css +++ /dev/null @@ -1,3 +0,0 @@ -@import 'tailwindcss'; -@plugin '@tailwindcss/forms'; -@plugin '@tailwindcss/typography'; diff --git a/apps/lapikit.dev/src/routes/page.svelte.spec.ts b/apps/lapikit.dev/src/routes/page.svelte.spec.ts deleted file mode 100644 index d54f00a7..00000000 --- a/apps/lapikit.dev/src/routes/page.svelte.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { page } from 'vitest/browser'; -import { describe, expect, it } from 'vitest'; -import { render } from 'vitest-browser-svelte'; -import Page from './+page.svelte'; - -describe('/+page.svelte', () => { - it('should render h1', async () => { - render(Page); - - const heading = page.getByRole('heading', { level: 1 }); - await expect.element(heading).toBeInTheDocument(); - }); -}); diff --git a/apps/lapikit.dev/src/routes/sitemap.xml/+server.ts b/apps/lapikit.dev/src/routes/sitemap.xml/+server.ts deleted file mode 100644 index 1fba4021..00000000 --- a/apps/lapikit.dev/src/routes/sitemap.xml/+server.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { PUBLIC_BASE_URL } from '$env/static/public'; -import { loadBlogPosts } from '$lib/utils/blog'; - -export const prerender = true; - -export async function GET() { - const posts = await loadBlogPosts(); - - const blogUrls = posts - .map( - (post) => ` - - ${PUBLIC_BASE_URL}/blog/${post.slug} - ${post.date ? new Date(post.date).toISOString().split('T')[0] : new Date().toISOString().split('T')[0]} - monthly - 0.8 - ` - ) - .join(''); - - return new Response( - ` - - - ${PUBLIC_BASE_URL} - ${new Date().toISOString().split('T')[0]} - weekly - 1.0 - - - ${PUBLIC_BASE_URL}/blog - ${new Date().toISOString().split('T')[0]} - weekly - 0.9 - - - ${PUBLIC_BASE_URL}/blog/city - ${new Date().toISOString().split('T')[0]} - weekly - 0.85 - ${blogUrls} -`, - { - headers: { - 'Content-Type': 'application/xml' - } - } - ); -} diff --git a/apps/lapikit.dev/static/images/original/cities.webp b/apps/lapikit.dev/static/images/original/cities.webp deleted file mode 100644 index 0265daab..00000000 Binary files a/apps/lapikit.dev/static/images/original/cities.webp and /dev/null differ diff --git a/apps/lapikit.dev/static/images/original/kalimdor.webp b/apps/lapikit.dev/static/images/original/kalimdor.webp deleted file mode 100644 index 6b938fa9..00000000 Binary files a/apps/lapikit.dev/static/images/original/kalimdor.webp and /dev/null differ diff --git a/apps/lapikit.dev/static/images/original/pandarie.webp b/apps/lapikit.dev/static/images/original/pandarie.webp deleted file mode 100644 index 60903d20..00000000 Binary files a/apps/lapikit.dev/static/images/original/pandarie.webp and /dev/null differ diff --git a/apps/lapikit.dev/static/images/original/the-eastern-kingdoms.webp b/apps/lapikit.dev/static/images/original/the-eastern-kingdoms.webp deleted file mode 100644 index d11c8670..00000000 Binary files a/apps/lapikit.dev/static/images/original/the-eastern-kingdoms.webp and /dev/null differ diff --git a/apps/lapikit.dev/static/robots.txt b/apps/lapikit.dev/static/robots.txt deleted file mode 100644 index b21f0887..00000000 --- a/apps/lapikit.dev/static/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: / diff --git a/apps/lapikit.dev/svelte.config.js b/apps/lapikit.dev/svelte.config.js deleted file mode 100644 index d1ba3344..00000000 --- a/apps/lapikit.dev/svelte.config.js +++ /dev/null @@ -1,35 +0,0 @@ -import { mdsvex } from 'mdsvex'; -import adapter from '@sveltejs/adapter-node'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; -import { lapikitPreprocess } from 'lapikit/labs/preprocess'; -import { mdsvexOptions } from './mdsvex.config.js'; - -// Env -const prerenderOrigin = process.env.VITE_PRERENDER_ORIGIN || 'http://localhost:5173'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://svelte.dev/docs/kit/integrations - // for more information about preprocessors - preprocess: [vitePreprocess(), mdsvex(mdsvexOptions), lapikitPreprocess({ plugins: ['repl'] })], - - kit: { - // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://svelte.dev/docs/kit/adapters for more information about adapters. - adapter: adapter({ - out: 'build', - //envPrefix: '', - precompress: true, - polyfill: true - }), - inlineStyleThreshold: 1000, - prerender: { - origin: prerenderOrigin - } - }, - - extensions: ['.svelte', '.svx', '.md'] -}; - -export default config; diff --git a/apps/lapikit.dev/tsconfig.build.json b/apps/lapikit.dev/tsconfig.build.json deleted file mode 100644 index fc1b7d59..00000000 --- a/apps/lapikit.dev/tsconfig.build.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "composite": true, - "declaration": true, - "declarationMap": true, - "emitDeclarationOnly": true, - "noEmit": false, - "outDir": "./dist", - "rootDir": "./src" - }, - "references": [ - { "path": "../../packages/site-kit/tsconfig.build.json" }, - { "path": "../../packages/lapikit/tsconfig.build.json" } - ], - "include": ["src/**/*"], - "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts", "**/demo.spec.ts", ".svelte-kit"] -} diff --git a/apps/lapikit.dev/tsconfig.json b/apps/lapikit.dev/tsconfig.json deleted file mode 100644 index 2c2ed3c4..00000000 --- a/apps/lapikit.dev/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "rewriteRelativeImportExtensions": true, - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // To make changes to top-level options such as include and exclude, we recommend extending - // the generated config; see https://svelte.dev/docs/kit/configuration#typescript -} diff --git a/apps/lapikit.dev/vite.config.ts b/apps/lapikit.dev/vite.config.ts deleted file mode 100644 index 73848397..00000000 --- a/apps/lapikit.dev/vite.config.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import { playwright } from '@vitest/browser-playwright'; -import { sveltekit } from '@sveltejs/kit/vite'; - -// tailwindcss plugin -import tailwindcss from '@tailwindcss/vite'; - -// compression plugin -import { enhancedImages } from '@sveltejs/enhanced-img'; -import { imagetools } from 'vite-imagetools'; - -import viteCompression from 'vite-plugin-compression'; - -export default defineConfig({ - plugins: [ - enhancedImages(), - imagetools({ - defaultDirectives: (url) => { - return new URLSearchParams({ - format: 'webp;jpg', - w: '320;700;1400', - as: 'picture' - }); - } - }), - tailwindcss(), - sveltekit(), - viteCompression({ algorithm: 'brotliCompress' }) - ], - - build: { cssMinify: 'lightningcss' }, - - test: { - expect: { requireAssertions: true }, - - projects: [ - { - extends: './vite.config.ts', - - test: { - name: 'client', - - browser: { - enabled: true, - provider: playwright(), - instances: [{ browser: 'chromium', headless: true }] - }, - - include: ['src/**/*.svelte.{test,spec}.{js,ts}'], - exclude: ['src/lib/server/**'] - } - }, - - { - extends: './vite.config.ts', - - test: { - name: 'server', - environment: 'node', - include: ['src/**/*.{test,spec}.{js,ts}'], - exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] - } - } - ] - } -}); diff --git a/apps/website/.env.example b/apps/website/.env.example deleted file mode 100644 index dbabb998..00000000 --- a/apps/website/.env.example +++ /dev/null @@ -1,33 +0,0 @@ -# This file is used to set environment variables for the website application. -# Copy this file to .env and fill in the values. -# This file should not be committed to version control. - -# ENVIRONMENT -# Set the environment to development or production -PUBLIC_ENV=development -# Set the base URL for the website -PUBLIC_BASE_URL="http://localhost:5173" -# Call API enabled -PUBLIC_API=false - -# GOOGLE ANALYTICS -# Set to true to enable Google Analytics -PUBLIC_GOOGLE_ANALYTICS_ENABLED=true -# Set Google Analytics ID -PUBLIC_GOOGLE_ANALYTICS_ID="G-XXXXXXXXXX" - -# GOOGLE TAGS MANAGER -# Set to true to enable Google Tag Manager -PUBLIC_GOOGLE_TAG_MANAGER_ENABLED=true -# Set Google Tag Manager ID -PUBLIC_GOOGLE_TAG_MANAGER_ID="GTM-XXXXXX" - -# BING WEBMASTER TOOLS -# Set to true to enable Bing Webmaster Tools -PUBLIC_BING_WEBMASTER_TOOLS_ENABLED=true -# Set Bing Webmaster Tools ID -PUBLIC_BING_WEBMASTER_TOOLS_ID="XXXXXXXXXX" - -# CALL API -# Enable or disable the call API -PUBLIC_CALL_API_ENABLED=false \ No newline at end of file diff --git a/apps/website/.gitignore b/apps/website/.gitignore deleted file mode 100644 index 354a11ea..00000000 --- a/apps/website/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -test-results -node_modules - -# Output -.output -.vercel -.netlify -.wrangler -/.svelte-kit -/build -/src/content/docs -/src/content/data/api/*.json - -# OS -.DS_Store -Thumbs.db - -# Env -.env -.env.* -!.env.example -!.env.test - -# Vite -vite.config.js.timestamp-* -vite.config.ts.timestamp-* diff --git a/apps/website/.npmrc b/apps/website/.npmrc deleted file mode 100644 index b6f27f13..00000000 --- a/apps/website/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/apps/website/.prettierignore b/apps/website/.prettierignore deleted file mode 100644 index 6562bcbb..00000000 --- a/apps/website/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -# Package Managers -package-lock.json -pnpm-lock.yaml -yarn.lock -bun.lock -bun.lockb diff --git a/apps/website/.prettierrc b/apps/website/.prettierrc deleted file mode 100644 index e21ceeb4..00000000 --- a/apps/website/.prettierrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-tailwindcss"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte", - "plugins": ["prettier-plugin-svelte"] - } - } - ] -} diff --git a/apps/website/README.md b/apps/website/README.md deleted file mode 100644 index b5b29507..00000000 --- a/apps/website/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# sv - -Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). - -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npx sv create - -# create a new project in my-app -npx sv create my-app -``` - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: - -```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -To create a production version of your app: - -```bash -npm run build -``` - -You can preview the production build with `npm run preview`. - -> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/apps/website/eslint.config.js b/apps/website/eslint.config.js deleted file mode 100644 index 38b250db..00000000 --- a/apps/website/eslint.config.js +++ /dev/null @@ -1,47 +0,0 @@ -import prettier from 'eslint-config-prettier'; -import js from '@eslint/js'; -import { includeIgnoreFile } from '@eslint/compat'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import { fileURLToPath } from 'node:url'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; - -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default ts.config( - includeIgnoreFile(gitignorePath), - { - ignores: ['src/content/examples/**'] - }, - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - prettier, - ...svelte.configs.prettier, - { - languageOptions: { - globals: { ...globals.browser, ...globals.node }, - parserOptions: { - tsconfigRootDir: fileURLToPath(new URL('.', import.meta.url)) - } - }, - rules: { 'no-undef': 'off' } - }, - { - files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - languageOptions: { - parserOptions: { - projectService: true, - tsconfigRootDir: fileURLToPath(new URL('.', import.meta.url)), - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig - } - } - }, - { - files: ['**/*.config.js', '**/*.config.ts'], - ...ts.configs.disableTypeChecked - } -); diff --git a/apps/website/mdsvex.config.js b/apps/website/mdsvex.config.js deleted file mode 100644 index 11e0576c..00000000 --- a/apps/website/mdsvex.config.js +++ /dev/null @@ -1,35 +0,0 @@ -import { escapeSvelte } from 'mdsvex'; -import { createHighlighter } from 'shiki'; -import remarkToc from 'remark-toc'; -import rehypeSlug from 'rehype-slug'; -import extractHeadings from './remark-extract-headings.js'; - -// node -import { fileURLToPath } from 'node:url'; -import { dirname } from 'node:path'; - -// Cache pour l'instance Shiki (singleton) -let highlighter; - -/** @type {import('mdsvex').MdsvexOptions} */ -export const mdsvexOptions = { - extensions: ['.md'], - layout: { - _: dirname(fileURLToPath(import.meta.url)) + '/src/lib/templates/page.mdsvex.svelte' - }, - highlight: { - highlighter: async (code, lang = 'text') => { - // CrΓ©er l'highlighter une seule fois et le rΓ©utiliser - if (!highlighter) { - highlighter = await createHighlighter({ - themes: ['poimandres'], - langs: ['javascript', 'typescript', 'svelte'] - }); - } - const html = escapeSvelte(highlighter.codeToHtml(code, { lang, theme: 'poimandres' })); - return `{@html \`${html}\` }`; - } - }, - remarkPlugins: [[remarkToc, { tight: true }], extractHeadings], - rehypePlugins: [rehypeSlug] -}; diff --git a/apps/website/package.json b/apps/website/package.json deleted file mode 100644 index 25678da1..00000000 --- a/apps/website/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "lapikit.dev-v1", - "private": true, - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "initialize": "npm run prepare:files && npm run prepare:docs && npm run prepare:search && npm run prepare:counter && npm run prepare:summaries", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "prepare:files": "node --import tsx scripts/sync-docs/index.ts", - "prepare:docs": "node --import tsx scripts/get-navigation-docs.ts", - "prepare:search": "node --import tsx scripts/get-search-pages.ts", - "prepare:counter": "node --import tsx scripts/get-counter.ts", - "prepare:summaries": "node --import tsx scripts/generate-summaries.ts", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write .", - "lint": "prettier --check . && eslint .", - "lint:fix": "prettier --write . && eslint . --fix", - "test:unit": "vitest", - "test": "npm run test:unit -- --run" - }, - "devDependencies": { - "@eslint/compat": "^1.4.1", - "@eslint/js": "^9.39.1", - "@polka/compression": "^1.0.0-next.25", - "@sveltejs/adapter-node": "^5.4.0", - "@sveltejs/enhanced-img": "^0.8.4", - "@sveltejs/kit": "^2.48.4", - "@sveltejs/vite-plugin-svelte": "^6.2.1", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.17", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/svelte": "^5.2.8", - "eslint": "^9.39.1", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-svelte": "^3.13.0", - "express": "^5.1.0", - "globals": "^16.5.0", - "jsdom": "^26.1.0", - "lapikit": "*", - "mdsvex": "^0.12.6", - "mingcute_icon": "^2.9.6", - "prettier": "^3.7.4", - "prettier-plugin-svelte": "^3.4.0", - "prettier-plugin-tailwindcss": "^0.7.2", - "remark-extract-toc": "^1.1.0", - "site-kit": "*", - "logos": "*", - "svelte": "^5.43.4", - "svelte-check": "^4.3.3", - "tailwindcss": "^4.1.17", - "tsx": "^4.20.6", - "typescript": "^5.9.3", - "typescript-eslint": "^8.46.3", - "vite": "^7.2.2", - "vitest": "^3.2.4" - }, - "dependencies": { - "@fontsource/roboto": "^5.2.8", - "rehype-slug": "^6.0.0", - "remark-toc": "^9.0.0", - "shiki": "^3.15.0", - "unist-util-visit": "^5.0.0" - } -} diff --git a/apps/website/remark-extract-headings.js b/apps/website/remark-extract-headings.js deleted file mode 100644 index f8047d8b..00000000 --- a/apps/website/remark-extract-headings.js +++ /dev/null @@ -1,33 +0,0 @@ -import { visit } from 'unist-util-visit'; - -export default function extractHeadings() { - return (tree, file) => { - const headings = []; - - visit(tree, 'heading', (node) => { - const depth = node.depth; - - const extractText = (node) => { - if (node.type === 'text') { - return node.value; - } - if (node.children) { - return node.children.map(extractText).join(''); - } - return ''; - }; - - const text = node.children.map(extractText).join(''); - - const id = text - .toLowerCase() - .replace(/\s+/g, '-') - .replace(/[^\w-]+/g, ''); - - headings.push({ id, text, level: depth }); - }); - - file.data.fm = file.data.fm || {}; - file.data.fm.headings = headings; - }; -} diff --git a/apps/website/scripts/generate-summaries.ts b/apps/website/scripts/generate-summaries.ts deleted file mode 100644 index b3ff0cbf..00000000 --- a/apps/website/scripts/generate-summaries.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, statSync } from 'fs'; -import { join, extname } from 'path'; -import type { HeadingItem, PageSummary, SummariesData } from './types'; - -// Whitelist des slugs qui ne doivent afficher que les H2 (niveau 2) -const H2_ONLY_WHITELIST = ['/docs/changelog']; - -function extractHeadingsFromMarkdown(content: string, slug?: string): HeadingItem[] { - const headings: HeadingItem[] = []; - const lines = content.split('\n'); - - // VΓ©rifier si ce slug est dans la whitelist H2 uniquement - const isH2Only = slug && H2_ONLY_WHITELIST.includes(slug); - - for (const line of lines) { - const trimmedLine = line.trim(); - - const headingMatch = trimmedLine.match(/^(#{1,6})\s+(.+)$/); - if (headingMatch && headingMatch[1] && headingMatch[2]) { - const level = headingMatch[1].length; - const text = headingMatch[2].trim(); - - // Si slug est dans la whitelist, ne garder que les H2 (niveau 2) - if (isH2Only && level !== 2) { - continue; - } - - if (text) { - const id = text - .toLowerCase() - .replace(/\s+/g, '-') - .replace(/[^\w\u00C0-\u024F\u1E00-\u1EFF-]+/g, '') - .replace(/^-+|-+$/g, ''); - - headings.push({ id, text, level }); - } - } - } - - return headings; -} - -function extractFrontmatter(content: string): { - frontmatter: Record; - markdownContent: string; -} { - const frontmatterRegex = /^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/; - const match = content.match(frontmatterRegex); - - if (!match || !match[1] || !match[2]) { - return { frontmatter: {}, markdownContent: content }; - } - - const frontmatterText = match[1]; - const markdownContent = match[2]; - const frontmatter: Record = {}; - - const lines = frontmatterText.split('\n'); - for (const line of lines) { - const trimmedLine = line.trim(); - if (trimmedLine && !trimmedLine.startsWith('#')) { - const colonIndex = trimmedLine.indexOf(':'); - if (colonIndex > 0) { - const key = trimmedLine.substring(0, colonIndex).trim(); - let value = trimmedLine.substring(colonIndex + 1).trim(); - - if (value.startsWith('"') && value.endsWith('"')) { - value = value.slice(1, -1); - } - if (value.startsWith("'") && value.endsWith("'")) { - value = value.slice(1, -1); - } - - frontmatter[key] = value; - } - } - } - - return { frontmatter, markdownContent }; -} - -function findMarkdownFiles(dirPath: string): string[] { - const files: string[] = []; - - if (!existsSync(dirPath)) { - return files; - } - - const items = readdirSync(dirPath); - - for (const item of items) { - const fullPath = join(dirPath, item); - const stats = statSync(fullPath); - - if (stats.isDirectory()) { - files.push(...findMarkdownFiles(fullPath)); - } else if (stats.isFile() && extname(item) === '.md') { - files.push(fullPath); - } - } - - return files; -} - -function extractSlugFromPath(filePath: string): string { - const relativePath = filePath.replace(process.cwd(), ''); - const slug = relativePath - .replace(/^\/src\/content/, '') - .replace(/\.md$/, '') - .replace(/^\//, ''); - - return `/${slug}`; -} - -async function generateSummaries() { - const dataDir = join(process.cwd(), 'src/content/data/api'); - const summariesPath = join(dataDir, 'summaries.json'); - - console.log('πŸ” Search markdown files...'); - - const contentDir = join(process.cwd(), 'src/content'); - const markdownFiles = findMarkdownFiles(contentDir); - - if (markdownFiles.length === 0) { - console.warn('⚠️ No markdown files found. Exiting.'); - return; - } - - console.log(`πŸ“„ ${markdownFiles.length} markdown file(s) found`); - - const summaries: PageSummary[] = []; - - for (const filePath of markdownFiles) { - try { - console.log(`πŸ“– Processing: ${filePath.replace(process.cwd(), '')}`); - - const fileContent = readFileSync(filePath, 'utf-8'); - const { frontmatter, markdownContent } = extractFrontmatter(fileContent); - - const slug = extractSlugFromPath(filePath); - const title = frontmatter.title || slug.split('/').pop() || 'Untitled'; - - const headings = extractHeadingsFromMarkdown(markdownContent, slug); - - summaries.push({ - slug, - path: filePath.replace(process.cwd(), ''), - title, - headings - }); - } catch (error) { - console.error(`❌ Error processing ${filePath}:`, error); - } - } - summaries.sort((a, b) => a.slug.localeCompare(b.slug)); - - const summariesData: SummariesData = { - generatedAt: new Date().toISOString(), - totalPages: summaries.length, - summaries - }; - - if (!existsSync(dataDir)) { - console.log(`πŸ“ Creating directory: ${dataDir}`); - mkdirSync(dataDir, { recursive: true }); - } - - writeFileSync(summariesPath, JSON.stringify(summariesData, null, 2), 'utf-8'); - - console.log('βœ… Generation completed successfully!'); - console.log(`πŸ“Š ${summaries.length} page(s) processed`); - console.log(`πŸ“ File created: ${summariesPath}`); - - const totalHeadings = summaries.reduce((sum, page) => sum + page.headings.length, 0); - console.log(`πŸ“‹ ${totalHeadings} heading(s) total`); - - const pagesWithHeadings = summaries.filter((page) => page.headings.length > 0).length; - console.log(`πŸ“„ ${pagesWithHeadings} page(s) with headings`); - - if (existsSync(summariesPath)) { - console.log('♻️ Existing file has been replaced'); - } -} - -generateSummaries().catch((error) => { - console.error('❌ Fatal error:', error); - process.exit(1); -}); - -export { generateSummaries }; diff --git a/apps/website/scripts/get-counter.ts b/apps/website/scripts/get-counter.ts deleted file mode 100644 index 5c8e6599..00000000 --- a/apps/website/scripts/get-counter.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { existsSync, readFileSync, writeFileSync } from 'fs'; -import { join } from 'path'; -import type { CategoryCounter, CounterData, NavDocsStructure } from './types'; - -function generateCounterData() { - const dataDir = join(process.cwd(), 'src/content/data/api'); - const rawDocsPath = join(dataDir, 'docs.json'); - const counterPath = join(dataDir, 'counter-lapikit.json'); - - if (!existsSync(rawDocsPath)) { - console.error('❌ The file docs.json was not found in src/content/data/api'); - process.exit(1); - } - - console.log('βœ… The file docs.json was found, generating counter-lapikit.json...'); - - try { - const rawDocsContent = readFileSync(rawDocsPath, 'utf-8'); - const navDocs: NavDocsStructure = JSON.parse(rawDocsContent); - - const categories: CategoryCounter = {}; - - navDocs.files.forEach((file) => { - const section = file.metadata.state.section; - - if (categories[section]) { - categories[section]++; - } else { - categories[section] = 1; - } - }); - - const counterData: CounterData = { - generatedAt: new Date().toISOString(), - totalElements: navDocs.files.length, - categories: categories - }; - - writeFileSync(counterPath, JSON.stringify(counterData, null, 2), 'utf-8'); - - console.log(`βœ… The file counter-lapikit.json was generated successfully!`); - console.log(` πŸ“Š ${counterData.totalElements} elements in total`); - console.log(` πŸ“ File created: ${counterPath}`); - - console.log(' πŸ“ˆ Category distribution:'); - Object.entries(categories) - .sort(([, a], [, b]) => b - a) - .forEach(([category, count]) => { - console.log(` - ${category}: ${count} element${count > 1 ? 's' : ''}`); - }); - - if (existsSync(counterPath)) { - console.log(' ♻️ The existing file was replaced'); - } - } catch (error) { - console.error('❌ Error generating the counter-lapikit.json file:', error); - process.exit(1); - } -} - -generateCounterData(); diff --git a/apps/website/scripts/get-navigation-docs.ts b/apps/website/scripts/get-navigation-docs.ts deleted file mode 100644 index e093bfe2..00000000 --- a/apps/website/scripts/get-navigation-docs.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { existsSync, readFileSync, writeFileSync } from 'fs'; -import { join } from 'path'; -import type { DocFile, NavigationData, CategoryConfig } from './types.js'; - -function generateNavigationDocuments() { - const dataDir = join(process.cwd(), 'src/content/data'); - const dataDirApi = join(process.cwd(), 'src/content/data/api'); - const rawDocsPath = join(dataDirApi, 'docs.json'); - const categoryDocsPath = join(dataDir, 'category.json'); - - const navPath = join(dataDirApi, 'nav-docs.json'); - - if (!existsSync(rawDocsPath)) { - console.error('❌ File docs.json not found in src/content/data/api'); - process.exit(1); - } - - if (!existsSync(categoryDocsPath)) { - console.error('❌ File category.json not found in src/content/data'); - process.exit(1); - } - - console.log('βœ… Files docs.json and category.json found, generating nav-docs.json...'); - - try { - const rawDocsContent = readFileSync(rawDocsPath, 'utf-8'); - const categoryDocsContent = readFileSync(categoryDocsPath, 'utf-8'); - - const rawDocs: { files: DocFile[] } = JSON.parse(rawDocsContent); - const categoryDocs: Record< - string, - { - key: string; - title: string; - order: number; - slug: string; - style: { color: string; icon: string }; - categories: CategoryConfig[]; - } - > = JSON.parse(categoryDocsContent); - - const navigation: NavigationData = {}; - - Object.keys(categoryDocs).forEach((sectionKey) => { - const sectionConfig = categoryDocs[sectionKey]; - if (sectionConfig) { - navigation[sectionKey] = { - key: sectionConfig.key, - title: sectionConfig.title, - order: sectionConfig.order, - style: sectionConfig.style, - slug: sectionConfig.slug, - categories: sectionConfig.categories.map((category: CategoryConfig) => ({ - ...category, - order: 0, - items: [] - })) - }; - } - }); - - Object.keys(navigation).forEach((sectionKey) => { - const section = navigation[sectionKey]; - if (!section) return; - - rawDocs.files.forEach((file: DocFile) => { - const fileSection = file.metadata?.state?.section || 'base'; - const fileCategory = file.metadata?.state?.category || 'uncategorized'; - - if (fileSection === sectionKey) { - const hasCategory = section.categories.some((item) => item.key === fileCategory); - - if (hasCategory) { - const categoryItem = section.categories.find((item) => item.key === fileCategory); - if (categoryItem) { - if (!categoryItem.items) { - categoryItem.items = []; - } - categoryItem.items.push(file); - } - } else { - let uncategorizedCategory = section.categories.find( - (item) => item.key === 'uncategorized' - ); - - if (!uncategorizedCategory) { - uncategorizedCategory = { - key: 'uncategorized', - title: 'uncategorized', - order: 999, - style: { - color: 'gray', - icon: 'mgc_folder_line' - }, - items: [] - }; - section.categories.push(uncategorizedCategory); - } - - if (!uncategorizedCategory.items) { - uncategorizedCategory.items = []; - } - - uncategorizedCategory.items.push(file); - } - } - }); - }); - - Object.keys(navigation).forEach((sectionKey) => { - const section = navigation[sectionKey]; - if (!section) return; - - section.categories.forEach((category) => { - if (category.items && category.items.length > 0) { - category.items.sort((a: DocFile, b: DocFile) => { - const orderA = a.metadata?.state?.order; - const orderB = b.metadata?.state?.order; - - if (orderA === -1 && orderB === -1) return 0; - if (orderA === -1 && orderB !== -1) return 1; - if (orderB === -1 && orderA !== -1) return -1; - if (orderA === undefined && orderB === undefined) return 0; - if (orderA === undefined && orderB !== undefined) return 1; - if (orderB === undefined && orderA !== undefined) return -1; - return (orderA as number) - (orderB as number); - }); - } - }); - }); - - const sortedNavigation = Object.values(navigation).sort((a, b) => a.order - b.order); - - const sortedNavigationRecord: NavigationData = Object.fromEntries( - sortedNavigation.map((section) => [section.key, section]) - ); - - writeFileSync(navPath, JSON.stringify(sortedNavigationRecord, null, 2), 'utf-8'); - - console.log(`βœ… File api-nav-docs.json generated successfully!`); - console.log(` πŸ“Š ${Object.keys(sortedNavigationRecord).length} items processed`); - console.log(` πŸ“ File created: ${navPath}`); - - if (existsSync(navPath)) { - console.log(' ♻️ Existing file has been replaced'); - } - } catch (error) { - console.error('❌ Error generating api-nav-docs.json file:', error); - process.exit(1); - } -} - -generateNavigationDocuments(); diff --git a/apps/website/scripts/get-search-pages.ts b/apps/website/scripts/get-search-pages.ts deleted file mode 100644 index 037ba9b3..00000000 --- a/apps/website/scripts/get-search-pages.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { existsSync, readFileSync, writeFileSync } from 'fs'; -import { join } from 'path'; -import type { NavDocsStructure, SearchItem } from './types'; - -function generateSearchData() { - const dataDir = join(process.cwd(), 'src/content/data/api'); - const rawDocsPath = join(dataDir, 'docs.json'); - const searchPath = join(dataDir, 'search.json'); - - if (!existsSync(rawDocsPath)) { - console.error('❌ File docs.json not found in src/content/data/api'); - process.exit(1); - } - - console.log('βœ… File docs.json found, generating search.json...'); - - try { - const rawDocsContent = readFileSync(rawDocsPath, 'utf-8'); - const navDocs: NavDocsStructure = JSON.parse(rawDocsContent); - - const searchData: SearchItem[] = navDocs.files.map((file) => ({ - slug: file.slug, - path: file.path, - title: file.metadata.title, - subtitle: file.metadata.subtitle, - description: file.metadata.description, - section: file.metadata.state.section, - style: file.metadata.style - ? { - icon: file.metadata.style.icon, - cover: file.metadata.style.cover - } - : undefined, - keywords: file.metadata.keywords - })); - - writeFileSync(searchPath, JSON.stringify(searchData, null, 2), 'utf-8'); - - console.log(`βœ… File search.json generated successfully!`); - console.log(` πŸ“Š ${searchData.length} items processed`); - console.log(` πŸ“ File created: ${searchPath}`); - - if (existsSync(searchPath)) { - console.log(' ♻️ Existing file has been replaced'); - } - } catch (error) { - console.error('❌ Error generating search.json file:', error); - process.exit(1); - } -} - -generateSearchData(); diff --git a/apps/website/scripts/sync-docs/index.ts b/apps/website/scripts/sync-docs/index.ts deleted file mode 100644 index 875074a6..00000000 --- a/apps/website/scripts/sync-docs/index.ts +++ /dev/null @@ -1,75 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { processMarkdownFiles } from './utils.js'; - -async function syncDocs(): Promise { - console.log('πŸ”„ Synchronization of documentation files...'); - - const sourceDir: string = path.resolve(process.cwd(), '../../docs'); - const destDir: string = path.resolve(process.cwd(), 'src/content/docs'); - - try { - if (!fs.existsSync(sourceDir)) { - throw new Error(`The source directory does not exist: ${sourceDir}`); - } - - console.log(`πŸ“‚ Source: ${sourceDir}`); - console.log(`πŸ“ Destination: ${destDir}`); - - if (!fs.existsSync(destDir)) { - fs.mkdirSync(destDir, { recursive: true }); - } - - function copyRecursive(src: string, dest: string): void { - const stats = fs.statSync(src); - - if (stats.isDirectory()) { - if (!fs.existsSync(dest)) { - fs.mkdirSync(dest, { recursive: true }); - } - - const items: string[] = fs.readdirSync(src); - - items.forEach((item: string) => { - const srcPath: string = path.join(src, item); - const destPath: string = path.join(dest, item); - copyRecursive(srcPath, destPath); - }); - } else { - fs.copyFileSync(src, dest); - console.log(`βœ… Copy: ${path.relative(sourceDir, src)}`); - } - } - - copyRecursive(sourceDir, destDir); - - // Copier les fichiers supplΓ©mentaires depuis packages/lapikit - const lapikitDir: string = path.resolve(process.cwd(), '../../packages/lapikit'); - const additionalFiles: { src: string; dest: string }[] = [ - { src: 'ROADMAP.md', dest: 'roadmap.md' }, - { src: 'CHANGELOG.md', dest: 'changelog.md' } - ]; - - additionalFiles.forEach(({ src, dest }) => { - const srcPath: string = path.join(lapikitDir, src); - const destPath: string = path.join(destDir, dest); - - if (fs.existsSync(srcPath)) { - fs.copyFileSync(srcPath, destPath); - console.log(`βœ… Copy: ${src} -> ${dest}`); - } else { - console.warn(`⚠️ Warning: File not found: ${srcPath}`); - } - }); - - console.log('✨ Synchronization completed successfully!'); - const navDocsPath = path.resolve(process.cwd(), 'src/content/data/api/docs.json'); - processMarkdownFiles(destDir, navDocsPath); - } catch (error: unknown) { - const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - console.error('❌ Error during synchronization:', errorMessage); - process.exit(1); - } -} - -syncDocs(); diff --git a/apps/website/scripts/sync-docs/types.ts b/apps/website/scripts/sync-docs/types.ts deleted file mode 100644 index f77677be..00000000 --- a/apps/website/scripts/sync-docs/types.ts +++ /dev/null @@ -1,36 +0,0 @@ -export interface FrontMatterData { - title?: string; - subtitle?: string; - description?: string; - head?: { - title?: string; - description?: string; - }; - style?: { - icon?: string; - }; - state?: { - section?: string; - published?: boolean; - recommended?: boolean; - order?: number; - }; - github?: { - url?: string; - }; - keywords?: string[]; - [key: string]: unknown; -} - -export interface ManifestEntry { - path: string; - slug: string; - breadcrumbs: string[]; - metadata: FrontMatterData | null; -} - -export interface Manifest { - generatedAt: string; - totalFiles: number; - files: ManifestEntry[]; -} diff --git a/apps/website/scripts/sync-docs/utils.ts b/apps/website/scripts/sync-docs/utils.ts deleted file mode 100644 index 33929023..00000000 --- a/apps/website/scripts/sync-docs/utils.ts +++ /dev/null @@ -1,166 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import type { FrontMatterData, Manifest, ManifestEntry } from './types'; - -export function extractFrontMatter(filePath: string): FrontMatterData | null { - try { - const content = fs.readFileSync(filePath, 'utf-8'); - - if (!content.startsWith('---')) { - return null; - } - - const endIndex = content.indexOf('---', 3); - if (endIndex === -1) { - return null; - } - - const yamlContent = content.substring(3, endIndex).trim(); - - const frontMatter: Record = {}; - const lines = yamlContent.split('\n'); - - let currentSection: string | null = null; - let currentArray: string | null = null; - - for (const line of lines) { - const trimmedLine = line.trim(); - if (!trimmedLine || trimmedLine.startsWith('#')) continue; - - const indentLevel = line.length - line.trimStart().length; - - if (trimmedLine.includes(':') && indentLevel === 0) { - const colonIndex = trimmedLine.indexOf(':'); - const key = trimmedLine.substring(0, colonIndex).trim(); - const value = trimmedLine.substring(colonIndex + 1).trim(); - - if (value) { - frontMatter[key] = parseValue(value); - } else { - frontMatter[key] = {}; - currentSection = key; - } - currentArray = null; - } else if (trimmedLine.includes(':') && indentLevel > 0 && currentSection) { - const colonIndex = trimmedLine.indexOf(':'); - const key = trimmedLine.substring(0, colonIndex).trim(); - const value = trimmedLine.substring(colonIndex + 1).trim(); - - const sectionObj = frontMatter[currentSection] as Record; - sectionObj[key] = parseValue(value); - } else if (trimmedLine.startsWith('-') && indentLevel > 0) { - const item = trimmedLine.substring(1).trim(); - - if (currentSection && !currentArray) { - const sectionObj = frontMatter[currentSection] as Record; - for (const [key, val] of Object.entries(sectionObj)) { - if (Array.isArray(val)) { - currentArray = key; - break; - } - } - } - - if (currentSection === 'keywords' || currentArray === 'keywords') { - if (!Array.isArray(frontMatter.keywords)) { - frontMatter.keywords = []; - } - (frontMatter.keywords as string[]).push(item); - } - } - } - - return frontMatter as FrontMatterData; - } catch (error) { - console.error(`❌ Error to read ${filePath}:`, error); - return null; - } -} - -function parseValue(value: string): unknown { - if (value.startsWith('"') && value.endsWith('"')) { - return value.slice(1, -1); - } else if (value === 'true') { - return true; - } else if (value === 'false') { - return false; - } else if (!isNaN(Number(value)) && value !== '') { - return Number(value); - } else { - return value; - } -} - -export function processMarkdownFiles(dirPath: string, manifestOutputPath: string): void { - console.log('\nπŸ“– Extracting metadata from Markdown files...'); - - const manifestEntries: ManifestEntry[] = []; - const isProduction = process.env.PUBLIC_ENV === 'production'; - - function processDirectory(currentPath: string): void { - const items = fs.readdirSync(currentPath); - - for (const item of items) { - const fullPath = path.join(currentPath, item); - const stat = fs.statSync(fullPath); - - if (stat.isDirectory()) { - processDirectory(fullPath); - } else if (path.extname(item) === '.md') { - const relativePath = path.relative(dirPath, fullPath); - const frontMatter = extractFrontMatter(fullPath); - - const docsPath = `/docs/${relativePath}`; - const slug = docsPath.replace(/\.md$/, ''); - - const pathSegments = relativePath.split(path.sep); - const breadcrumbs = ['docs', ...pathSegments.slice(0, -1)]; - - const fileName = pathSegments[pathSegments.length - 1]; - if (fileName) { - const fileNameWithoutExt = fileName.replace(/\.md$/, ''); - breadcrumbs.push(fileNameWithoutExt); - } - - const shouldInclude = !isProduction || frontMatter?.state?.published === true; - - if (shouldInclude) { - manifestEntries.push({ - path: docsPath, - slug: slug, - breadcrumbs: breadcrumbs, - metadata: frontMatter - }); - - if (frontMatter) { - console.log(`\nπŸ“„ File: ${relativePath} βœ…`); - } else { - console.log(`\nπŸ“„ File: ${relativePath} (no front matter)`); - } - } else { - console.log(`\nπŸ“„ File: ${relativePath} (skipped - not published in production)`); - } - } - } - } - - processDirectory(dirPath); - - const manifest: Manifest = { - generatedAt: new Date().toISOString(), - totalFiles: manifestEntries.length, - files: manifestEntries - }; - - const outputDir = path.dirname(manifestOutputPath); - if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir, { recursive: true }); - } - - // Write the manifest.json file - fs.writeFileSync(manifestOutputPath, JSON.stringify(manifest, null, 2), 'utf-8'); - - console.log(`\nπŸ“¦ Navigation docs file created: ${manifestOutputPath}`); - console.log(`πŸ“Š Total files processed: ${manifest.totalFiles}`); - console.log('✨ Metadata extraction completed!'); -} diff --git a/apps/website/scripts/types.ts b/apps/website/scripts/types.ts deleted file mode 100644 index 25a50405..00000000 --- a/apps/website/scripts/types.ts +++ /dev/null @@ -1,150 +0,0 @@ -export interface StyleConfig { - color?: string; - icon?: string; -} - -export interface DocumentStyle { - icon?: string; - cover?: string; -} - -export interface DocumentHead { - title?: string; - description?: string; -} - -export interface DocumentState { - section?: string; - category?: string; - published?: boolean; - recommended?: boolean; - order?: number; - status?: string; -} - -export interface DocumentGitHub { - url?: string; -} - -export interface DocumentMetadata { - title?: string; - subtitle?: string; - description?: string; - head?: DocumentHead; - style?: DocumentStyle; - state?: DocumentState; - github?: DocumentGitHub; - keywords?: string[]; - [key: string]: unknown; -} - -export interface DocFile { - path: string; - slug: string; - breadcrumbs: string[]; - metadata: DocumentMetadata | null; -} - -export interface NavDocsFile { - path: string; - slug: string; - metadata: { - title: string; - subtitle?: string; - description?: string; - style?: DocumentStyle; - state: { - section: string; - published?: boolean; - }; - keywords?: string[]; - }; -} - -export interface NavigationCategory { - key: string; - title: string; - order: number; - style?: StyleConfig; - items?: DocFile[]; -} - -export interface NavigationSection { - key: string; - title: string; - order: number; - slug: string; - style?: StyleConfig; - categories: NavigationCategory[]; -} - -export interface NavigationData { - [key: string]: NavigationSection; -} - -export interface CategoryConfig { - key: string; - title: string; - style: StyleConfig; -} - -export interface SectionConfig { - key: string; - title: string; - order: number; - slug: string; - style: StyleConfig; - categories: CategoryConfig[]; -} - -export type CategoryData = Record; - -export interface RawDocsData { - files: DocFile[]; -} - -export interface NavDocsStructure { - generatedAt: string; - totalFiles: number; - files: NavDocsFile[]; -} - -export interface CategoryCounter { - [category: string]: number; -} - -export interface CounterData { - generatedAt: string; - totalElements: number; - categories: CategoryCounter; -} - -export interface SearchItem { - slug: string; - path: string; - title: string; - subtitle?: string; - description?: string; - section: string; - style?: DocumentStyle; - keywords?: string[]; -} - -export interface HeadingItem { - id: string; - text: string; - level: number; -} - -export interface PageSummary { - slug: string; - path: string; - title: string; - headings: HeadingItem[]; -} - -export interface SummariesData { - generatedAt: string; - totalPages: number; - summaries: PageSummary[]; -} diff --git a/apps/website/src/app.d.ts b/apps/website/src/app.d.ts deleted file mode 100644 index da08e6da..00000000 --- a/apps/website/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/apps/website/src/app.html b/apps/website/src/app.html deleted file mode 100644 index e90fa44d..00000000 --- a/apps/website/src/app.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/apps/website/src/content/data/category.json b/apps/website/src/content/data/category.json deleted file mode 100644 index 64ff1b4b..00000000 --- a/apps/website/src/content/data/category.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "base": { - "key": "base", - "title": "Environment", - "order": 0, - "slug": "/docs/introduction", - "style": { - "color": "red", - "icon": "mgc_settings_5_line" - }, - "categories": [] - }, - "components": { - "key": "components", - "title": "Components", - "order": 1, - "slug": "/docs/components", - "style": { - "color": "red", - "icon": "mgc_cube_3d_line" - }, - "categories": [] - }, - "hooks": { - "key": "hooks", - "title": "Hooks", - "order": 2, - "slug": "/docs/hooks", - "style": { - "color": "red", - "icon": "mgc_webhook_line" - }, - "categories": [ - { - "key": "stores", - "title": "Stores", - "style": { - "color": "accent-primary", - "icon": "mgc_store_line" - } - }, - { - "key": "actions", - "title": "Actions", - "style": { - "color": "accent-primary", - "icon": "mgc_magic_2_line" - } - } - ] - } -} diff --git a/apps/website/src/content/data/url.json b/apps/website/src/content/data/url.json deleted file mode 100644 index add13acc..00000000 --- a/apps/website/src/content/data/url.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "discord": { - "invite": "https://discord.gg/gn9ZGtDtK4" - }, - "github": { - "repository": "https://github.com/lapikit/lapikit", - "issues": "https://github.com/lapikit/lapikit/issues", - "edit_page": "https://github.com/lapikit/lapikit/edit/main", - "discussions": "https://github.com/lapikit/lapikit/discussions", - "contributing": "https://github.com/lapikit/lapikit.dev/blob/main/CONTRIBUTING.md", - "sponsors": "https://github.com/lapikit/lapikit" - }, - "package": { - "licence": "https://github.com/lapikit/lapikit/blob/main/LICENSE" - }, - "npm": { - "package": "https://www.npmjs.com/package/lapikit" - }, - "buymeacoffee": { - "page": "https://www.buymeacoffee.com/nycolaide" - }, - "social_network": { - "x": "https://x.com/lapikit", - "instagram": "https://www.instagram.com/lapikit" - }, - "nycolaide": { - "website": "https://nycolaide.dev", - "github": "https://github.com/Nycolaide" - } -} diff --git a/apps/website/src/content/examples/customize/default-configuration.txt b/apps/website/src/content/examples/customize/default-configuration.txt deleted file mode 100644 index b371df19..00000000 --- a/apps/website/src/content/examples/customize/default-configuration.txt +++ /dev/null @@ -1,177 +0,0 @@ -{ - breakpoints: { - devices: { - desktop: 1024, - tablet: 768, - mobile: 640, - }, - thresholds: { - base: 0, - xs: 448, - sm: 640, - md: 768, - lg: 1024, - xl: 1280, - "2xl": 1536, - "3xl": 1792, - }, - }, - theme: { - defaultTheme: "light", - colorScheme: true, - themes: { - light: { - dark: false, - colors: { - label: { - primary: "#000000", - secondary: "#8E8E93", - tertiary: "#C7C7CC", - quaternary: "#D1D1D6", - }, - accent: { - primary: "#007AFF", - success: "#34C759", - warning: "#FF9500", - destructive: "#FF3B30", - info: "#5AC8FA", - }, - separator: { - default: "#C6C6C8", - opaque: "#E5E5EA", - }, - state: { - placeholder: "#C7C7CC", - disabled: "#8E8E93", - link: "#007AFF", - highlight: "#E5E5EA", - shadow: "#00000033", - }, - background: { - primary: "#FFFFFF", - secondary: "#F2F2F7", - tertiary: "#FFFFFF", - grouped: { - primary: "#F2F2F7", - secondary: "#FFFFFF", - tertiary: "#F2F2F7", - }, - }, - }, - variables: { - "test-variable": "1rem", - }, - }, - dark: { - dark: true, - colors: { - label: { - primary: "#FFFFFF", - secondary: "#EBEBF5", - tertiary: "#EBEBF5", - quaternary: "#D1D1D6", - }, - accent: { - primary: "#0A84FF", - success: "#30D158", - warning: "#FF9F0A", - destructive: "#FF453A", - info: "#64D2FF", - }, - separator: { - default: "#38383A", - opaque: "#545458", - }, - state: { - placeholder: "#3A3A3C", - disabled: "#545458", - link: "#0A84FF", - highlight: "#3A3A3C", - shadow: "#00000066", - }, - background: { - primary: "#000000", - secondary: "#1C1C1E", - tertiary: "#2C2C2E", - grouped: { - primary: "#1C1C1E", - secondary: "#2C2C2E", - tertiary: "#3A3A3C", - }, - }, - }, - variables: { - "test-variable": "1rem", - }, - }, - }, - }, - typography: { - defaultTypography: "default", - fonts: { - default: { - sans: [ - "system-ui", - "-apple-system", - "BlinkMacSystemFont", - "Segoe UI", - "Roboto", - "Helvetica Neue", - "Arial", - "sans-serif", - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - ], - mono: [ - "SFMono-Regular", - "ui-monospace", - "SF Mono", - "Menlo", - "Monaco", - "Consolas", - "Liberation Mono", - "Courier New", - "monospace", - ], - serif: [ - "Merriweather", - "Georgia", - "Cambria", - "Times New Roman", - "Times", - "serif", - ], - }, - }, - }, - styles: { - spacing: "0.125rem", - shape: { - sm: "0.125rem", - md: "0.25rem", - lg: "0.5rem", - xl: "0.75rem", - "2xl": "1rem", - "3xl": "1.5rem", - full: "9999px", - }, - dialog: { - xs: "18.75rem", - sm: "25rem", - md: "37.5rem", - lg: "53.125rem", - xl: "75rem", - }, - modal: { - xs: "18.75rem", - sm: "25rem", - md: "37.5rem", - lg: "53.125rem", - xl: "75rem", - }, - animation: { - "ripple-duration": "0.4s", - }, - }, -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-animation.txt b/apps/website/src/content/examples/customize/default-value-animation.txt deleted file mode 100644 index 79386e2b..00000000 --- a/apps/website/src/content/examples/customize/default-value-animation.txt +++ /dev/null @@ -1,3 +0,0 @@ -animation: { - "ripple-duration": "0.4s" -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-breakpoints.txt b/apps/website/src/content/examples/customize/default-value-breakpoints.txt deleted file mode 100644 index 56758806..00000000 --- a/apps/website/src/content/examples/customize/default-value-breakpoints.txt +++ /dev/null @@ -1,7 +0,0 @@ -breakpoints: { - devices: { - desktop: 1024, // 64rem (lg) - tablet: 768, // 48rem (md) - mobile: 640 // 40rem (sm) - } -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-dialog.txt b/apps/website/src/content/examples/customize/default-value-dialog.txt deleted file mode 100644 index 4340079a..00000000 --- a/apps/website/src/content/examples/customize/default-value-dialog.txt +++ /dev/null @@ -1,7 +0,0 @@ -dialog: { - xs: "18.75rem", // 300px - sm: "25rem", // 400px - md: "37.5rem", // 600px - lg: "53.125rem", // 850px - xl: "75rem" // 1200px -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-modal.txt b/apps/website/src/content/examples/customize/default-value-modal.txt deleted file mode 100644 index aecf1a69..00000000 --- a/apps/website/src/content/examples/customize/default-value-modal.txt +++ /dev/null @@ -1,7 +0,0 @@ -modal: { - xs: "18.75rem", // 300px - sm: "25rem", // 400px - md: "37.5rem", // 600px - lg: "53.125rem", // 850px - xl: "75rem" // 1200px -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-shape.txt b/apps/website/src/content/examples/customize/default-value-shape.txt deleted file mode 100644 index 8b9d5b73..00000000 --- a/apps/website/src/content/examples/customize/default-value-shape.txt +++ /dev/null @@ -1,9 +0,0 @@ -shape: { - sm: "0.125rem", // 2px - md: "0.25rem", // 4px - lg: "0.5rem", // 8px - xl: "0.75rem", // 12px - "2xl": "1rem", // 16px - "3xl": "1.5rem", // 24px - full: "9999px" // Fully rounded -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-styles.txt b/apps/website/src/content/examples/customize/default-value-styles.txt deleted file mode 100644 index 6e86e865..00000000 --- a/apps/website/src/content/examples/customize/default-value-styles.txt +++ /dev/null @@ -1,29 +0,0 @@ -styles: { - spacing: "0.125rem", - shape: { - sm: "0.125rem", - md: "0.25rem", - lg: "0.5rem", - xl: "0.75rem", - "2xl": "1rem", - "3xl": "1.5rem", - full: "9999px" - }, - dialog: { - xs: "18.75rem", - sm: "25rem", - md: "37.5rem", - lg: "53.125rem", - xl: "75rem" - }, - modal: { - xs: "18.75rem", - sm: "25rem", - md: "37.5rem", - lg: "53.125rem", - xl: "75rem" - }, - animation: { - "ripple-duration": "0.4s" - } -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-themes.txt b/apps/website/src/content/examples/customize/default-value-themes.txt deleted file mode 100644 index edbfdd41..00000000 --- a/apps/website/src/content/examples/customize/default-value-themes.txt +++ /dev/null @@ -1,90 +0,0 @@ -theme: { - defaultTheme: "light", - colorScheme: true, - themes: { - light: { - dark: false, - colors: { - label: { - primary: "#000000", - secondary: "#8E8E93", - tertiary: "#C7C7CC", - quaternary: "#D1D1D6" - }, - accent: { - primary: "#007AFF", - success: "#34C759", - warning: "#FF9500", - destructive: "#FF3B30", - info: "#5AC8FA" - }, - separator: { - default: "#C6C6C8", - opaque: "#E5E5EA" - }, - state: { - placeholder: "#C7C7CC", - disabled: "#8E8E93", - link: "#007AFF", - highlight: "#E5E5EA", - shadow: "#00000033" - }, - background: { - primary: "#FFFFFF", - secondary: "#F2F2F7", - tertiary: "#FFFFFF", - grouped: { - primary: "#F2F2F7", - secondary: "#FFFFFF", - tertiary: "#F2F2F7" - } - } - }, - variables: { - "test-variable": "1rem" - } - }, - dark: { - dark: true, - colors: { - label: { - primary: "#FFFFFF", - secondary: "#EBEBF5", - tertiary: "#EBEBF5", - quaternary: "#D1D1D6" - }, - accent: { - primary: "#0A84FF", - success: "#30D158", - warning: "#FF9F0A", - destructive: "#FF453A", - info: "#64D2FF" - }, - separator: { - default: "#38383A", - opaque: "#545458" - }, - state: { - placeholder: "#3A3A3C", - disabled: "#545458", - link: "#0A84FF", - highlight: "#3A3A3C", - shadow: "#00000066" - }, - background: { - primary: "#000000", - secondary: "#1C1C1E", - tertiary: "#2C2C2E", - grouped: { - primary: "#1C1C1E", - secondary: "#2C2C2E", - tertiary: "#3A3A3C" - } - } - }, - variables: { - "test-variable": "1rem" - } - } - } -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-thresholds.txt b/apps/website/src/content/examples/customize/default-value-thresholds.txt deleted file mode 100644 index 3c73abd3..00000000 --- a/apps/website/src/content/examples/customize/default-value-thresholds.txt +++ /dev/null @@ -1,12 +0,0 @@ -breakpoints: { - thresholds: { - base: 0, // 0px - xs: 448, // 28rem - sm: 640, // 40rem - md: 768, // 48rem - lg: 1024, // 64rem - xl: 1280, // 80rem - "2xl": 1536, // 96rem - "3xl": 1792 // 112rem - } -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/default-value-typography.txt b/apps/website/src/content/examples/customize/default-value-typography.txt deleted file mode 100644 index 49c96c1b..00000000 --- a/apps/website/src/content/examples/customize/default-value-typography.txt +++ /dev/null @@ -1,39 +0,0 @@ -typography: { - defaultTypography: "default", - fonts: { - default: { - sans: [ - "system-ui", - "-apple-system", - "BlinkMacSystemFont", - "Segoe UI", - "Roboto", - "Helvetica Neue", - "Arial", - "sans-serif", - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol" - ], - mono: [ - "SFMono-Regular", - "ui-monospace", - "SF Mono", - "Menlo", - "Monaco", - "Consolas", - "Liberation Mono", - "Courier New", - "monospace" - ], - serif: [ - "Merriweather", - "Georgia", - "Cambria", - "Times New Roman", - "Times", - "serif" - ] - } - } -} \ No newline at end of file diff --git a/apps/website/src/content/examples/customize/vite-plugin-import.js b/apps/website/src/content/examples/customize/vite-plugin-import.js deleted file mode 100644 index d9451840..00000000 --- a/apps/website/src/content/examples/customize/vite-plugin-import.js +++ /dev/null @@ -1 +0,0 @@ -import { lapikit } from 'lapikit/vite'; diff --git a/apps/website/src/content/examples/customize/vite-plugin-usage.js b/apps/website/src/content/examples/customize/vite-plugin-usage.js deleted file mode 100644 index 323225eb..00000000 --- a/apps/website/src/content/examples/customize/vite-plugin-usage.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite'; -import { lapikit } from 'lapikit/vite'; -import { sveltekit } from '@sveltejs/kit/vite'; - -export default defineConfig({ - plugins: [sveltekit(), lapikit({ config: 'src/plugins/lapikit.ts' })] -}); diff --git a/apps/website/src/content/examples/getting-started/css-format.txt b/apps/website/src/content/examples/getting-started/css-format.txt deleted file mode 100644 index 161045c7..00000000 --- a/apps/website/src/content/examples/getting-started/css-format.txt +++ /dev/null @@ -1,4 +0,0 @@ -What is your CSS format used on your app? -> Basic (classic import) -> TailwindCSS (v4) -> UnoCSS \ No newline at end of file diff --git a/apps/website/src/content/examples/getting-started/launch-install.txt b/apps/website/src/content/examples/getting-started/launch-install.txt deleted file mode 100644 index 96690eb8..00000000 --- a/apps/website/src/content/examples/getting-started/launch-install.txt +++ /dev/null @@ -1 +0,0 @@ -Launch install Lapikit on your project? (Yes / No) \ No newline at end of file diff --git a/apps/website/src/content/examples/getting-started/path-css-import.txt b/apps/website/src/content/examples/getting-started/path-css-import.txt deleted file mode 100644 index 890316aa..00000000 --- a/apps/website/src/content/examples/getting-started/path-css-import.txt +++ /dev/null @@ -1,2 +0,0 @@ -Where would you like to import the lapikit CSS files? -(default: src/app.css) diff --git a/apps/website/src/content/examples/getting-started/path-import.txt b/apps/website/src/content/examples/getting-started/path-import.txt deleted file mode 100644 index ab7d3993..00000000 --- a/apps/website/src/content/examples/getting-started/path-import.txt +++ /dev/null @@ -1,2 +0,0 @@ -Where would you like to install the lapikit configuration files? -(default: src/plugins) \ No newline at end of file diff --git a/apps/website/src/content/examples/getting-started/use-typescript.txt b/apps/website/src/content/examples/getting-started/use-typescript.txt deleted file mode 100644 index 9a3634b9..00000000 --- a/apps/website/src/content/examples/getting-started/use-typescript.txt +++ /dev/null @@ -1 +0,0 @@ -Use TypeScript? (Yes / No) \ No newline at end of file diff --git a/apps/website/src/demo.spec.ts b/apps/website/src/demo.spec.ts deleted file mode 100644 index e07cbbd7..00000000 --- a/apps/website/src/demo.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { describe, it, expect } from 'vitest'; - -describe('sum test', () => { - it('adds 1 + 2 to equal 3', () => { - expect(1 + 2).toBe(3); - }); -}); diff --git a/apps/website/src/global.d.ts b/apps/website/src/global.d.ts deleted file mode 100644 index 4b8196f7..00000000 --- a/apps/website/src/global.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare interface Window { - /* eslint-disable @typescript-eslint/no-explicit-any */ - dataLayer: any[]; - gtag?: (...args: any[]) => void; -} diff --git a/apps/website/src/hooks.server.ts b/apps/website/src/hooks.server.ts deleted file mode 100644 index fa2d9c7c..00000000 --- a/apps/website/src/hooks.server.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { Handle } from '@sveltejs/kit'; - -export const handle: Handle = async ({ event, resolve }) => { - const { url, request } = event; - const pathname = url.pathname; - - // 1) Redirect HTTP -> HTTPS (OK) - if (request.headers.get('x-forwarded-proto') === 'http' && !pathname.startsWith('/health')) { - return new Response(null, { - status: 301, - headers: { - location: `https://${url.host}${url.pathname}${url.search}` - } - }); - } - - // 2) IMPORTANT: never redirect source markdown files - // Make them 404 (or 410) so Google drops them. - if (pathname.endsWith('.md')) { - return new Response('Not found', { status: 404 }); - // alternative: 410 is even more explicit - // return new Response('Gone', { status: 410 }); - } - - // 3) Redirect old URLs to /docs (good) - const docsPatterns = [ - '/getting-started', - '/migration-guide', - '/introduction', - '/breakpoints', - '/customize' - ]; - const componentPatterns = ['/components/', '/hooks/', '/stores/', '/actions/']; - - if (docsPatterns.some((pattern) => pathname.startsWith(pattern))) { - return new Response(null, { - status: 301, - headers: { location: `/docs${pathname}${url.search}` } - }); - } - - if ( - componentPatterns.some((pattern) => pathname.startsWith(pattern)) && - !pathname.startsWith('/docs/') - ) { - return new Response(null, { - status: 301, - headers: { location: `/docs${pathname}${url.search}` } - }); - } - - // 4) Trailing slash normalize in /docs (OK) - if (pathname.startsWith('/docs/') && pathname !== '/docs' && pathname !== '/docs/') { - if (pathname.endsWith('/') && pathname !== '/docs/') { - const newPath = pathname.slice(0, -1); - return new Response(null, { - status: 301, - headers: { location: `${newPath}${url.search}` } - }); - } - } - - return resolve(event); -}; diff --git a/apps/website/src/lib/animations/index.ts b/apps/website/src/lib/animations/index.ts deleted file mode 100644 index 52e9e82c..00000000 --- a/apps/website/src/lib/animations/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './scroll'; -export { default as PageTransition } from './transition.svelte'; -export { default as BackgroundAnimationStars } from './background-star.svelte'; -export { default as RainingAnimation } from './raining.svelte'; diff --git a/apps/website/src/lib/animations/raining.svelte b/apps/website/src/lib/animations/raining.svelte deleted file mode 100644 index 2de97b6f..00000000 --- a/apps/website/src/lib/animations/raining.svelte +++ /dev/null @@ -1,76 +0,0 @@ - - -
- - {#each drops as drop (drop.id)} - - {/each} -
- - diff --git a/apps/website/src/lib/components/banner.svelte b/apps/website/src/lib/components/banner.svelte deleted file mode 100644 index 65aa199d..00000000 --- a/apps/website/src/lib/components/banner.svelte +++ /dev/null @@ -1,60 +0,0 @@ - - -{#if display} - - {#if banner?.href} - - -
- {banner.content.lg} - {banner.content.sm} -
- -
- - {:else} -
- {banner.content.lg} - {banner.content.sm} -
- {/if} -
-{/if} diff --git a/apps/website/src/lib/components/command-line.svelte b/apps/website/src/lib/components/command-line.svelte deleted file mode 100644 index 47ca7b8c..00000000 --- a/apps/website/src/lib/components/command-line.svelte +++ /dev/null @@ -1,104 +0,0 @@ - - -
- {#each packageManagers as packageManager (packageManager)} - - {/each} - -
- - -
{@html commandHTML}
-
-
- - diff --git a/apps/website/src/lib/components/consent-modal.svelte b/apps/website/src/lib/components/consent-modal.svelte deleted file mode 100644 index e542e0d8..00000000 --- a/apps/website/src/lib/components/consent-modal.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - - - {#snippet dialog(model: Model)} - -
-
- - -
- -
-

{capitalize($t('common.gdpr.description'))}

-
- -
- -
-
-
- {/snippet} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-base.svelte b/apps/website/src/lib/components/docs/accordion/accordion-base.svelte deleted file mode 100644 index 4c6b1430..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-base.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - {#each items as item, index (index)} - -

{item.content}

-
- {/each} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-icon.svelte b/apps/website/src/lib/components/docs/accordion/accordion-icon.svelte deleted file mode 100644 index 59466b50..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-icon.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - {#each items as item, index (index)} - -

{item.content}

- - {#snippet indicator(model)} - {#if model.open} - - {:else} - - {/if} - {/snippet} -
- {/each} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-multiple.svelte b/apps/website/src/lib/components/docs/accordion/accordion-multiple.svelte deleted file mode 100644 index ea482c97..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-multiple.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - {#each items as item, index (index)} - -

{item.content}

-
- {/each} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-read-only.svelte b/apps/website/src/lib/components/docs/accordion/accordion-read-only.svelte deleted file mode 100644 index 486b509d..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-read-only.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {#each items as item, index (index)} - -

{item.content}

-
- {/each} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-snippet.svelte b/apps/website/src/lib/components/docs/accordion/accordion-snippet.svelte deleted file mode 100644 index ae1f89f8..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-snippet.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - - {#each items as item, index (index)} - - {#snippet activator()} -

{item.title}

- - {/snippet} - -

{item.content}

- - {#snippet indicator(model)} - {#if model.open} - - {:else} - - {/if} - {/snippet} -
- {/each} -
diff --git a/apps/website/src/lib/components/docs/accordion/accordion-spacer.svelte b/apps/website/src/lib/components/docs/accordion/accordion-spacer.svelte deleted file mode 100644 index 07a82ad0..00000000 --- a/apps/website/src/lib/components/docs/accordion/accordion-spacer.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - {#each items as item, index (index)} - -

{item.content}

-
- {/each} -
diff --git a/apps/website/src/lib/components/docs/actions/use-accordion.svelte b/apps/website/src/lib/components/docs/actions/use-accordion.svelte deleted file mode 100644 index 3320656c..00000000 --- a/apps/website/src/lib/components/docs/actions/use-accordion.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/apps/website/src/lib/components/docs/actions/use-theme.svelte b/apps/website/src/lib/components/docs/actions/use-theme.svelte deleted file mode 100644 index 0d1a2aa9..00000000 --- a/apps/website/src/lib/components/docs/actions/use-theme.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/alert/alert-base.svelte b/apps/website/src/lib/components/docs/alert/alert-base.svelte deleted file mode 100644 index 12b687f9..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-base.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - -

- Inform your users of the status of an action or page in your application. It supports states - such as info, warning, error, or success to highlight the type of information you want to - convey. -

-
diff --git a/apps/website/src/lib/components/docs/alert/alert-closable.svelte b/apps/website/src/lib/components/docs/alert/alert-closable.svelte deleted file mode 100644 index 679d2c73..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-closable.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -{#if !open} - -{/if} - - -

- With this alert system, you can display them optionally. The closable action lets your users - hide the alert once they've viewed it. -

-
diff --git a/apps/website/src/lib/components/docs/alert/alert-density.svelte b/apps/website/src/lib/components/docs/alert/alert-density.svelte deleted file mode 100644 index b8c2b8ad..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-density.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- -

This is a compact alert, with reduced margins and padding

-
- - -

This is a basic options alert

-
- - -

This is a comfortable alert, margins and padding are increased

-
-
diff --git a/apps/website/src/lib/components/docs/alert/alert-snippet.svelte b/apps/website/src/lib/components/docs/alert/alert-snippet.svelte deleted file mode 100644 index 37ef2b23..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-snippet.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - {#snippet prepend()} -

prepend

- {/snippet} -

children

- {#snippet append()} -

append

- {/snippet} - - {#snippet close()} - - {/snippet} -
diff --git a/apps/website/src/lib/components/docs/alert/alert-state.svelte b/apps/website/src/lib/components/docs/alert/alert-state.svelte deleted file mode 100644 index 2cf28d91..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-state.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - -
- -

A success-style alert

-
- - -

A success-style alert

-
- - -

A warning-style alert

-
- - -

A warning-style alert

-
- - -

An error-style alert

-
- - -

An error-style alert

-
- - -

An info-style alert

-
- - -

An info-style alert

-
-
diff --git a/apps/website/src/lib/components/docs/alert/alert-variant.svelte b/apps/website/src/lib/components/docs/alert/alert-variant.svelte deleted file mode 100644 index c8becf4b..00000000 --- a/apps/website/src/lib/components/docs/alert/alert-variant.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- -

An alert with no background

-
- - -

An alert with an outline

-
- - -

An alert with a dashed border

-
-
diff --git a/apps/website/src/lib/components/docs/appbar/appbar-base.svelte b/apps/website/src/lib/components/docs/appbar/appbar-base.svelte deleted file mode 100644 index 3c692023..00000000 --- a/apps/website/src/lib/components/docs/appbar/appbar-base.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -
- -

Lapikit

-
-
diff --git a/apps/website/src/lib/components/docs/appbar/appbar-density.svelte b/apps/website/src/lib/components/docs/appbar/appbar-density.svelte deleted file mode 100644 index 572be9cc..00000000 --- a/apps/website/src/lib/components/docs/appbar/appbar-density.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- -

Lapikit

-
- - -

Lapikit

-
- - -

Lapikit

-
-
diff --git a/apps/website/src/lib/components/docs/application/application-forbidden.svelte b/apps/website/src/lib/components/docs/application/application-forbidden.svelte deleted file mode 100644 index 30cb87c4..00000000 --- a/apps/website/src/lib/components/docs/application/application-forbidden.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - -

Application Base

-

This is the base application component.

- - - -

Application Base Child

-

This is the base application component child.

-
-
diff --git a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-aspectratio.svelte b/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-aspectratio.svelte deleted file mode 100644 index d49ecbbd..00000000 --- a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-aspectratio.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - the office the office tv moroccan christmas - - - - the office the office tv moroccan christmas - diff --git a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-base.svelte b/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-base.svelte deleted file mode 100644 index 64371e76..00000000 --- a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-base.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - the office the office tv moroccan christmas - diff --git a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-inline.svelte b/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-inline.svelte deleted file mode 100644 index 6767d1ab..00000000 --- a/apps/website/src/lib/components/docs/aspect-ratio/aspect-ratio-inline.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - the office the office tv moroccan christmas - diff --git a/apps/website/src/lib/components/docs/avatar/avatar-base.svelte b/apps/website/src/lib/components/docs/avatar/avatar-base.svelte deleted file mode 100644 index 495d492d..00000000 --- a/apps/website/src/lib/components/docs/avatar/avatar-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -NY diff --git a/apps/website/src/lib/components/docs/avatar/avatar-density.svelte b/apps/website/src/lib/components/docs/avatar/avatar-density.svelte deleted file mode 100644 index 4cd9ab0c..00000000 --- a/apps/website/src/lib/components/docs/avatar/avatar-density.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -Hi -Ny -Hey diff --git a/apps/website/src/lib/components/docs/avatar/avatar-image.svelte b/apps/website/src/lib/components/docs/avatar/avatar-image.svelte deleted file mode 100644 index f3390bb6..00000000 --- a/apps/website/src/lib/components/docs/avatar/avatar-image.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/avatar/avatar-size.svelte b/apps/website/src/lib/components/docs/avatar/avatar-size.svelte deleted file mode 100644 index d3e71df0..00000000 --- a/apps/website/src/lib/components/docs/avatar/avatar-size.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -xs -sm -md -lg -xl diff --git a/apps/website/src/lib/components/docs/avatar/avatar-variant.svelte b/apps/website/src/lib/components/docs/avatar/avatar-variant.svelte deleted file mode 100644 index 07fbc036..00000000 --- a/apps/website/src/lib/components/docs/avatar/avatar-variant.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-base.svelte b/apps/website/src/lib/components/docs/button/button-base.svelte deleted file mode 100644 index 0d616db3..00000000 --- a/apps/website/src/lib/components/docs/button/button-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/button/button-color.svelte b/apps/website/src/lib/components/docs/button/button-color.svelte deleted file mode 100644 index a1f8d312..00000000 --- a/apps/website/src/lib/components/docs/button/button-color.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - -
- - - - - -
diff --git a/apps/website/src/lib/components/docs/button/button-composable.svelte b/apps/website/src/lib/components/docs/button/button-composable.svelte deleted file mode 100644 index 82d814ae..00000000 --- a/apps/website/src/lib/components/docs/button/button-composable.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-density.svelte b/apps/website/src/lib/components/docs/button/button-density.svelte deleted file mode 100644 index 50ccc3b0..00000000 --- a/apps/website/src/lib/components/docs/button/button-density.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-disabled.svelte b/apps/website/src/lib/components/docs/button/button-disabled.svelte deleted file mode 100644 index 433b6de9..00000000 --- a/apps/website/src/lib/components/docs/button/button-disabled.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-event.svelte b/apps/website/src/lib/components/docs/button/button-event.svelte deleted file mode 100644 index 54b033a4..00000000 --- a/apps/website/src/lib/components/docs/button/button-event.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-icon.svelte b/apps/website/src/lib/components/docs/button/button-icon.svelte deleted file mode 100644 index bfb52b8e..00000000 --- a/apps/website/src/lib/components/docs/button/button-icon.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-loading.svelte b/apps/website/src/lib/components/docs/button/button-loading.svelte deleted file mode 100644 index 03b69a08..00000000 --- a/apps/website/src/lib/components/docs/button/button-loading.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-media-queries.svelte b/apps/website/src/lib/components/docs/button/button-media-queries.svelte deleted file mode 100644 index b11422b8..00000000 --- a/apps/website/src/lib/components/docs/button/button-media-queries.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/button/button-ripple.svelte b/apps/website/src/lib/components/docs/button/button-ripple.svelte deleted file mode 100644 index af375638..00000000 --- a/apps/website/src/lib/components/docs/button/button-ripple.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/apps/website/src/lib/components/docs/button/button-size.svelte b/apps/website/src/lib/components/docs/button/button-size.svelte deleted file mode 100644 index b75bf955..00000000 --- a/apps/website/src/lib/components/docs/button/button-size.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/apps/website/src/lib/components/docs/button/button-snippet.svelte b/apps/website/src/lib/components/docs/button/button-snippet.svelte deleted file mode 100644 index 73807bf7..00000000 --- a/apps/website/src/lib/components/docs/button/button-snippet.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/button/button-state.svelte b/apps/website/src/lib/components/docs/button/button-state.svelte deleted file mode 100644 index ce8faf58..00000000 --- a/apps/website/src/lib/components/docs/button/button-state.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -
- - - - - - -
diff --git a/apps/website/src/lib/components/docs/button/button-type.svelte b/apps/website/src/lib/components/docs/button/button-type.svelte deleted file mode 100644 index 51036333..00000000 --- a/apps/website/src/lib/components/docs/button/button-type.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/apps/website/src/lib/components/docs/button/button-variant.svelte b/apps/website/src/lib/components/docs/button/button-variant.svelte deleted file mode 100644 index 6de1fc9c..00000000 --- a/apps/website/src/lib/components/docs/button/button-variant.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/card/card-base.svelte b/apps/website/src/lib/components/docs/card/card-base.svelte deleted file mode 100644 index f5183447..00000000 --- a/apps/website/src/lib/components/docs/card/card-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -Default diff --git a/apps/website/src/lib/components/docs/card/card-density.svelte b/apps/website/src/lib/components/docs/card/card-density.svelte deleted file mode 100644 index f025a12c..00000000 --- a/apps/website/src/lib/components/docs/card/card-density.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -Default -Compact -Comfortable diff --git a/apps/website/src/lib/components/docs/card/card-disabled.svelte b/apps/website/src/lib/components/docs/card/card-disabled.svelte deleted file mode 100644 index 6d940a93..00000000 --- a/apps/website/src/lib/components/docs/card/card-disabled.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -Disabled diff --git a/apps/website/src/lib/components/docs/card/card-event.svelte b/apps/website/src/lib/components/docs/card/card-event.svelte deleted file mode 100644 index 08da8fb4..00000000 --- a/apps/website/src/lib/components/docs/card/card-event.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -Anchor - alert('hello')}>click diff --git a/apps/website/src/lib/components/docs/card/card-variant.svelte b/apps/website/src/lib/components/docs/card/card-variant.svelte deleted file mode 100644 index 116c1d3d..00000000 --- a/apps/website/src/lib/components/docs/card/card-variant.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -Outline -Text diff --git a/apps/website/src/lib/components/docs/chip/chip-base.svelte b/apps/website/src/lib/components/docs/chip/chip-base.svelte deleted file mode 100644 index bf6b75d1..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -Default diff --git a/apps/website/src/lib/components/docs/chip/chip-closable.svelte b/apps/website/src/lib/components/docs/chip/chip-closable.svelte deleted file mode 100644 index ce305ec8..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-closable.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -{#if !open} - -{/if} - - - {#snippet prepend()} - - {/snippet} - Default content - diff --git a/apps/website/src/lib/components/docs/chip/chip-color.svelte b/apps/website/src/lib/components/docs/chip/chip-color.svelte deleted file mode 100644 index e8d9c172..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-color.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -Primary -Secondary -Tertiary -Primary variables -Outline colors diff --git a/apps/website/src/lib/components/docs/chip/chip-composable.svelte b/apps/website/src/lib/components/docs/chip/chip-composable.svelte deleted file mode 100644 index 85336f5c..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-composable.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - - Default - Outline diff --git a/apps/website/src/lib/components/docs/chip/chip-density.svelte b/apps/website/src/lib/components/docs/chip/chip-density.svelte deleted file mode 100644 index dd9f92a9..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-density.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -compact -default -comfortable diff --git a/apps/website/src/lib/components/docs/chip/chip-disabled.svelte b/apps/website/src/lib/components/docs/chip/chip-disabled.svelte deleted file mode 100644 index e580ee6c..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-disabled.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -disabled -anchor - alert('hello')} disabled>anchor diff --git a/apps/website/src/lib/components/docs/chip/chip-event.svelte b/apps/website/src/lib/components/docs/chip/chip-event.svelte deleted file mode 100644 index e580ee6c..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-event.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -disabled -anchor - alert('hello')} disabled>anchor diff --git a/apps/website/src/lib/components/docs/chip/chip-loading.svelte b/apps/website/src/lib/components/docs/chip/chip-loading.svelte deleted file mode 100644 index 7347b997..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-loading.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - handleClick()}> Default - handleClick()}>Outline diff --git a/apps/website/src/lib/components/docs/chip/chip-size.svelte b/apps/website/src/lib/components/docs/chip/chip-size.svelte deleted file mode 100644 index a6f7fe7e..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-size.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -chip xs -chip sm -chip default -chip md -chip lg -chip xl diff --git a/apps/website/src/lib/components/docs/chip/chip-snippet.svelte b/apps/website/src/lib/components/docs/chip/chip-snippet.svelte deleted file mode 100644 index 297ae968..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-snippet.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - {#snippet prepend()} - - {/snippet} - {#snippet append()} - - {/snippet} - - Default content - - {#snippet close()} - - {/snippet} - diff --git a/apps/website/src/lib/components/docs/chip/chip-state.svelte b/apps/website/src/lib/components/docs/chip/chip-state.svelte deleted file mode 100644 index f03e9d9d..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-state.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -Info -Success -Warning -Error -
-Info diff --git a/apps/website/src/lib/components/docs/chip/chip-variant.svelte b/apps/website/src/lib/components/docs/chip/chip-variant.svelte deleted file mode 100644 index 3b355bd2..00000000 --- a/apps/website/src/lib/components/docs/chip/chip-variant.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -Default -Outline diff --git a/apps/website/src/lib/components/docs/configure-vite.config.js b/apps/website/src/lib/components/docs/configure-vite.config.js deleted file mode 100644 index cc237d5d..00000000 --- a/apps/website/src/lib/components/docs/configure-vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import { lapikit } from 'lapikit/vite'; -import { defineConfig } from 'vite'; - -export default defineConfig({ - plugins: [sveltekit(), lapikit()] -}); diff --git a/apps/website/src/lib/components/docs/dialog/dialog-base.svelte b/apps/website/src/lib/components/docs/dialog/dialog-base.svelte deleted file mode 100644 index 92ebd4c5..00000000 --- a/apps/website/src/lib/components/docs/dialog/dialog-base.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -
-

Lapikit is the toolbox you've been missing.

-

Clever components, designed for speed and efficiency.

-

Lightweight, clean, elegant: it does the job without any headaches.

-

Once adopted, it's hard to go back.

-
-
diff --git a/apps/website/src/lib/components/docs/dialog/dialog-density.svelte b/apps/website/src/lib/components/docs/dialog/dialog-density.svelte deleted file mode 100644 index de5ad466..00000000 --- a/apps/website/src/lib/components/docs/dialog/dialog-density.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
Dialog with default density
-
- - -
Dialog with compact density
-
- - -
Dialog with comfortable density
-
diff --git a/apps/website/src/lib/components/docs/dialog/dialog-persistent.svelte b/apps/website/src/lib/components/docs/dialog/dialog-persistent.svelte deleted file mode 100644 index b08d0f1d..00000000 --- a/apps/website/src/lib/components/docs/dialog/dialog-persistent.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -
- -
-
- Dialog with persistent behavior. This dialog will not close when clicking outside of it or - pressing the escape key. -
-
diff --git a/apps/website/src/lib/components/docs/dialog/dialog-position.svelte b/apps/website/src/lib/components/docs/dialog/dialog-position.svelte deleted file mode 100644 index 4c24a9f4..00000000 --- a/apps/website/src/lib/components/docs/dialog/dialog-position.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - -
Dialog positioned at the top of the viewport
-
- - -
- Dialog positioned at the center of the viewport. This is the default position if none is - specified. -
-
- - -
Dialog positioned at the bottom of the viewport
-
- - -
- Dialog positioned at the bottom of the viewport on small screens and at the center on medium and - larger screens -
-
diff --git a/apps/website/src/lib/components/docs/dialog/dialog-size.svelte b/apps/website/src/lib/components/docs/dialog/dialog-size.svelte deleted file mode 100644 index 9ba61860..00000000 --- a/apps/website/src/lib/components/docs/dialog/dialog-size.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - -
Dialog with extra small size
-
- -
Dialog with small size
-
- -
Dialog with medium size
-
- -
Dialog with large size
-
- -
Dialog with extra large size
-
- -
- -
-
- Dialog with responsive size. It will be extra small on small screens, small on medium screens, - and large on large screens -
-
diff --git a/apps/website/src/lib/components/docs/dropdown/dropdown-base.svelte b/apps/website/src/lib/components/docs/dropdown/dropdown-base.svelte deleted file mode 100644 index aa0248e0..00000000 --- a/apps/website/src/lib/components/docs/dropdown/dropdown-base.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - {#snippet activator(model)} - - {/snippet} -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
-
-
diff --git a/apps/website/src/lib/components/docs/dropdown/dropdown-close-on-click.svelte b/apps/website/src/lib/components/docs/dropdown/dropdown-close-on-click.svelte deleted file mode 100644 index 16337815..00000000 --- a/apps/website/src/lib/components/docs/dropdown/dropdown-close-on-click.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - - - {#snippet activator(model)} - - {/snippet} -
-
    -
  • Γ§a marche ??
  • -
  • oui
  • -
  • c'est bien
  • -
  • c'est super
  • -
  • c'est gΓ©nial
  • -
  • c'est incroyable
  • -
  • c'est fantastique
  • -
  • c'est merveilleux
  • -
  • c'est extraordinaire
  • -
  • c'est exceptionnel
  • -
  • c'est sensationnel
  • -
  • c'est fabuleux
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
  • c'est incroyable
  • -
-
-
-
    -
  • -
    alert('Element 1')}>Item 1
    -
  • -
  • -
    alert('Element 2')}>Item 2
    -
  • -
  • -
    alert('Element3')}>Item 3
    -
  • -
-
-
diff --git a/apps/website/src/lib/components/docs/dropdown/dropdown-open-on-hover.svelte b/apps/website/src/lib/components/docs/dropdown/dropdown-open-on-hover.svelte deleted file mode 100644 index 91510aca..00000000 --- a/apps/website/src/lib/components/docs/dropdown/dropdown-open-on-hover.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - - {#snippet activator(model, handleMouseEvent)} - - {/snippet} -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
-
-
diff --git a/apps/website/src/lib/components/docs/dropdown/dropdown-position.svelte b/apps/website/src/lib/components/docs/dropdown/dropdown-position.svelte deleted file mode 100644 index 00d1ea88..00000000 --- a/apps/website/src/lib/components/docs/dropdown/dropdown-position.svelte +++ /dev/null @@ -1,92 +0,0 @@ - - - - {#snippet activator(model, handleMouseEvent)} - - {/snippet} -
-
    -
  • Element 1
  • -
  • Element 2
  • -
  • Element 3
  • -
-
-
- - - {#snippet activator(model, handleMouseEvent)} - - {/snippet} -
-
    -
  • Element 1
  • -
  • Element 2
  • -
  • Element 3
  • -
-
-
- - - {#snippet activator(model, handleMouseEvent)} - - {/snippet} -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
-
-
- - - {#snippet activator(model, handleMouseEvent)} - - {/snippet} -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
-
-
diff --git a/apps/website/src/lib/components/docs/dropdown/dropdown-ref.svelte b/apps/website/src/lib/components/docs/dropdown/dropdown-ref.svelte deleted file mode 100644 index f82783f9..00000000 --- a/apps/website/src/lib/components/docs/dropdown/dropdown-ref.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - {#snippet activator(model)} - - {/snippet} -
-
    -
  • Item 1
  • -
  • Item 2
  • -
  • Item 3
  • -
-
-
diff --git a/apps/website/src/lib/components/docs/example-configuration-lapikit.ts b/apps/website/src/lib/components/docs/example-configuration-lapikit.ts deleted file mode 100644 index 835e3cd6..00000000 --- a/apps/website/src/lib/components/docs/example-configuration-lapikit.ts +++ /dev/null @@ -1,53 +0,0 @@ -// src/plugins/lapikit.ts -import createLapikit from 'lapikit'; - -export default createLapikit({ - breakpoints: { - devices: { - desktop: 1024, - tablet: 768, - mobile: 640 - }, - thresholds: { - base: 0, - xs: 448, - sm: 640, - md: 768, - lg: 1024, - xl: 1280, - '2xl': 1536, - '3xl': 1792 - } - }, - theme: { - defaultTheme: 'light', - colorScheme: true, - themes: { - light: { - dark: false, - colors: { - label: { - primary: '#000000' - } - } - } - }, - variables: { - 'test-variable': '1rem' - } - }, - typography: { - defaultTypography: 'default', - fonts: { - default: { - serif: ['Merriweather', 'Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif'] - } - } - }, - styles: { - spacing: '0.125rem', // 2px - shape: { - sm: '0.125rem' - } - } -}); diff --git a/apps/website/src/lib/components/docs/homepage-button-lapikit.svelte b/apps/website/src/lib/components/docs/homepage-button-lapikit.svelte deleted file mode 100644 index 3526f633..00000000 --- a/apps/website/src/lib/components/docs/homepage-button-lapikit.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/homepage-button.svelte b/apps/website/src/lib/components/docs/homepage-button.svelte deleted file mode 100644 index 24e61dcf..00000000 --- a/apps/website/src/lib/components/docs/homepage-button.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/homepage-modal-lapikit.svelte b/apps/website/src/lib/components/docs/homepage-modal-lapikit.svelte deleted file mode 100644 index 2b54c068..00000000 --- a/apps/website/src/lib/components/docs/homepage-modal-lapikit.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

This is a Modal Lapikit

-

You can put any content you like here.

- -
diff --git a/apps/website/src/lib/components/docs/icon/icon-base.svelte b/apps/website/src/lib/components/docs/icon/icon-base.svelte deleted file mode 100644 index 2942e5e8..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/icon/icon-color.svelte b/apps/website/src/lib/components/docs/icon/icon-color.svelte deleted file mode 100644 index b5a256a0..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-color.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/apps/website/src/lib/components/docs/icon/icon-disabled.svelte b/apps/website/src/lib/components/docs/icon/icon-disabled.svelte deleted file mode 100644 index e4e7bb52..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-disabled.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/apps/website/src/lib/components/docs/icon/icon-size.svelte b/apps/website/src/lib/components/docs/icon/icon-size.svelte deleted file mode 100644 index 39c8d608..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-size.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/apps/website/src/lib/components/docs/icon/icon-state.svelte b/apps/website/src/lib/components/docs/icon/icon-state.svelte deleted file mode 100644 index 54eab599..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-state.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/apps/website/src/lib/components/docs/icon/icon-type.svelte b/apps/website/src/lib/components/docs/icon/icon-type.svelte deleted file mode 100644 index 7f17135d..00000000 --- a/apps/website/src/lib/components/docs/icon/icon-type.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/apps/website/src/lib/components/docs/icon/sample.svelte b/apps/website/src/lib/components/docs/icon/sample.svelte deleted file mode 100644 index 1e5b81a7..00000000 --- a/apps/website/src/lib/components/docs/icon/sample.svelte +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/website/src/lib/components/docs/index.ts b/apps/website/src/lib/components/docs/index.ts deleted file mode 100644 index 123e58fa..00000000 --- a/apps/website/src/lib/components/docs/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -// Button -export { default as ButtonBase } from './button/button-base.svelte'; -export { default as ButtonMediaQueries } from './button/button-media-queries.svelte'; -export { default as ButtonSize } from './button/button-size.svelte'; -export { default as ButtonState } from './button/button-state.svelte'; -export { default as ButtonVariant } from './button/button-variant.svelte'; -export { default as ButtonColor } from './button/button-color.svelte'; -export { default as ButtonDensity } from './button/button-density.svelte'; -export { default as ButtonDisabled } from './button/button-disabled.svelte'; -export { default as ButtonEvent } from './button/button-event.svelte'; -export { default as ButtonType } from './button/button-type.svelte'; -export { default as ButtonIcon } from './button/button-icon.svelte'; -export { default as ButtonComposable } from './button/button-composable.svelte'; -export { default as ButtonLoading } from './button/button-loading.svelte'; -export { default as ButtonSnippet } from './button/button-snippet.svelte'; -export { default as ButtonRipple } from './button/button-ripple.svelte'; -// icon -export { default as IconBase } from './icon/icon-base.svelte'; -export { default as IconColor } from './icon/icon-color.svelte'; -export { default as IconState } from './icon/icon-state.svelte'; -export { default as IconType } from './icon/icon-type.svelte'; -export { default as IconSize } from './icon/icon-size.svelte'; -export { default as IconDisabled } from './icon/icon-disabled.svelte'; -// dropdwown -export { default as DropdownBase } from './dropdown/dropdown-base.svelte'; -export { default as DropdownRef } from './dropdown/dropdown-ref.svelte'; -export { default as DropdownCloseOnClick } from './dropdown/dropdown-close-on-click.svelte'; -export { default as DropdownOpenOnHover } from './dropdown/dropdown-open-on-hover.svelte'; -export { default as DropdownPosition } from './dropdown/dropdown-position.svelte'; -// popover -export { default as PopoverBase } from './popover/popover-base.svelte'; -export { default as PopoverPosition } from './popover/popover-position.svelte'; -// tooltip -export { default as TooltipBase } from './tooltip/tooltip-base.svelte'; -export { default as TooltipDensity } from './tooltip/tooltip-density.svelte'; -export { default as TooltipPosition } from './tooltip/tooltip-position.svelte'; -export { default as TooltipSnippet } from './tooltip/tooltip-snippet.svelte'; -export { default as TooltipVariant } from './tooltip/tooltip-variant.svelte'; -// dialog -export { default as DialogBase } from './dialog/dialog-base.svelte'; -export { default as DialogPersistent } from './dialog/dialog-persistent.svelte'; -export { default as DialogPosition } from './dialog/dialog-position.svelte'; -export { default as DialogSize } from './dialog/dialog-size.svelte'; -export { default as DialogDensity } from './dialog/dialog-density.svelte'; -// separator -export { default as SeparatorBase } from './separator/separator-base.svelte'; -export { default as SeparatorColor } from './separator/separator-color.svelte'; -export { default as SeparatorInset } from './separator/separator-inset.svelte'; -export { default as SeparatorOpacity } from './separator/separator-opacity.svelte'; -export { default as SeparatorOrientation } from './separator/separator-orientation.svelte'; -export { default as SeparatorSize } from './separator/separator-size.svelte'; -// modal -export { default as ModalBase } from './modal/modal-base.svelte'; -export { default as ModalContain } from './modal/modal-contain.svelte'; -export { default as ModalDensity } from './modal/modal-density.svelte'; -export { default as ModalKeyboard } from './modal/modal-keyboard.svelte'; -export { default as ModalPersistent } from './modal/modal-persistent.svelte'; -export { default as ModalPosition } from './modal/modal-position.svelte'; -export { default as ModalSize } from './modal/modal-size.svelte'; -export { default as ModalStack } from './modal/modal-stack.svelte'; -// list -export { default as ListBase } from './list/list-base.svelte'; -export { default as ListActive } from './list/list-active.svelte'; -export { default as ListDensity } from './list/list-density.svelte'; -export { default as ListDisabled } from './list/list-disabled.svelte'; -export { default as ListNav } from './list/list-nav.svelte'; -export { default as ListOrientation } from './list/list-orientation.svelte'; -export { default as ListSize } from './list/list-size.svelte'; -export { default as ListVariant } from './list/list-variant.svelte'; -export { default as ListSnippet } from './list/list-snippet.svelte'; -// avatar -export { default as AvatarBase } from './avatar/avatar-base.svelte'; -export { default as AvatarSize } from './avatar/avatar-size.svelte'; -export { default as AvatarDensity } from './avatar/avatar-density.svelte'; -export { default as AvatarImage } from './avatar/avatar-image.svelte'; -export { default as AvatarVariant } from './avatar/avatar-variant.svelte'; -// accordion -export { default as AccordionBase } from './accordion/accordion-base.svelte'; -export { default as AccordionIcon } from './accordion/accordion-icon.svelte'; -export { default as AccordionMultiple } from './accordion/accordion-multiple.svelte'; -export { default as AccordionReadOnly } from './accordion/accordion-read-only.svelte'; -export { default as AccordionSnippet } from './accordion/accordion-snippet.svelte'; -export { default as AccordionSpacer } from './accordion/accordion-spacer.svelte'; -// aspect ratio -export { default as AspectRatioBase } from './aspect-ratio/aspect-ratio-base.svelte'; -export { default as AspectRatioInline } from './aspect-ratio/aspect-ratio-inline.svelte'; -// alert -export { default as AlertBase } from './alert/alert-base.svelte'; -export { default as AlertClosable } from './alert/alert-closable.svelte'; -export { default as AlertDensity } from './alert/alert-density.svelte'; -export { default as AlertSnippet } from './alert/alert-snippet.svelte'; -export { default as AlertState } from './alert/alert-state.svelte'; -export { default as AlertVariant } from './alert/alert-variant.svelte'; -// chip -export { default as ChipBase } from './chip/chip-base.svelte'; -export { default as ChipClosable } from './chip/chip-closable.svelte'; -export { default as ChipColor } from './chip/chip-color.svelte'; -export { default as ChipComposable } from './chip/chip-composable.svelte'; -export { default as ChipDensity } from './chip/chip-density.svelte'; -export { default as ChipDisabled } from './chip/chip-disabled.svelte'; -export { default as ChipEvent } from './chip/chip-event.svelte'; -export { default as ChipLoading } from './chip/chip-loading.svelte'; -export { default as ChipSize } from './chip/chip-size.svelte'; -export { default as ChipSnippet } from './chip/chip-snippet.svelte'; -export { default as ChipState } from './chip/chip-state.svelte'; -export { default as ChipVariant } from './chip/chip-variant.svelte'; -// card -export { default as CardBase } from './card/card-base.svelte'; -export { default as CardDensity } from './card/card-density.svelte'; -export { default as CardDisabled } from './card/card-disabled.svelte'; -export { default as CardEvent } from './card/card-event.svelte'; -export { default as CardVariant } from './card/card-variant.svelte'; -// toolbar -export { default as ToolbarBase } from './toolbar/toolbar-base.svelte'; -export { default as ToolbarDensity } from './toolbar/toolbar-density.svelte'; -export { default as ToolbarOrientation } from './toolbar/toolbar-orientation.svelte'; -export { default as ToolbarVariant } from './toolbar/toolbar-variant.svelte'; -// appbar -export { default as AppbarBase } from './appbar/appbar-base.svelte'; diff --git a/apps/website/src/lib/components/docs/list/list-active.svelte b/apps/website/src/lib/components/docs/list/list-active.svelte deleted file mode 100644 index d1099edb..00000000 --- a/apps/website/src/lib/components/docs/list/list-active.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - Item 1 - Item 2 - Item 3 - Item 4 - Item 5 - diff --git a/apps/website/src/lib/components/docs/list/list-base.svelte b/apps/website/src/lib/components/docs/list/list-base.svelte deleted file mode 100644 index d0dcc613..00000000 --- a/apps/website/src/lib/components/docs/list/list-base.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - Item 1 - alert('hello !')}>Item 2 - Item 3 - Item 4 - Item 5 - diff --git a/apps/website/src/lib/components/docs/list/list-density.svelte b/apps/website/src/lib/components/docs/list/list-density.svelte deleted file mode 100644 index d9324b55..00000000 --- a/apps/website/src/lib/components/docs/list/list-density.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - -
- - Item 1 - Item 2 - Item 3 - Item 4 - Item 5 - - - - Item 1 comfortable - Item 2 comfortable - Item 3 comfortable - Item 4 comfortable - Item 5 comfortable - - - - Item 1 compact - Item 2 compact - Item 3 compact - Item 4 compact - Item 5 compact - -
diff --git a/apps/website/src/lib/components/docs/list/list-disabled.svelte b/apps/website/src/lib/components/docs/list/list-disabled.svelte deleted file mode 100644 index adab4ee8..00000000 --- a/apps/website/src/lib/components/docs/list/list-disabled.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - Item 1 - Item 2 - Item 3 - alert('ping')} disabled>Item 4 - Item 5 - diff --git a/apps/website/src/lib/components/docs/list/list-nav.svelte b/apps/website/src/lib/components/docs/list/list-nav.svelte deleted file mode 100644 index 3734eecf..00000000 --- a/apps/website/src/lib/components/docs/list/list-nav.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
- - Item 1 - Item 2 - Item 3 - alert('ping')}>Item 4 - Item 5 - -
diff --git a/apps/website/src/lib/components/docs/list/list-orientation.svelte b/apps/website/src/lib/components/docs/list/list-orientation.svelte deleted file mode 100644 index b2397938..00000000 --- a/apps/website/src/lib/components/docs/list/list-orientation.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - -
- - Item 1 - Item 2 - Item 3 - alert('ping')}>Item 4 - Item 5 - - - - Item 1 - Item 2 - Item 3 - alert('ping')}>Item 4 - Item 5 - -
diff --git a/apps/website/src/lib/components/docs/list/list-size.svelte b/apps/website/src/lib/components/docs/list/list-size.svelte deleted file mode 100644 index 17322caa..00000000 --- a/apps/website/src/lib/components/docs/list/list-size.svelte +++ /dev/null @@ -1,41 +0,0 @@ - - -
- - Item 1 xs - alert('ping')}>Item 2 xs - Item 3 xs - - - - Item 1 sm - alert('ping')}>Item 2 sm - Item 3 sm - - - - Item 1 md - alert('ping')}>Item 2 md - Item 3 md - - - - Item 1 lg - alert('ping')}>Item 2 lg - Item 3 lg - - - - Item 1 xl - alert('ping')}>Item 2 xl - Item 2 xl - - - - Item 2 responsive - alert('ping')}>Item 2 responsive - Item 3 responsive - -
diff --git a/apps/website/src/lib/components/docs/list/list-snippet.svelte b/apps/website/src/lib/components/docs/list/list-snippet.svelte deleted file mode 100644 index d736ea70..00000000 --- a/apps/website/src/lib/components/docs/list/list-snippet.svelte +++ /dev/null @@ -1,57 +0,0 @@ - - -
- - - {#snippet append()} - - {/snippet} - Item 1 - - - {#snippet append()} - - {/snippet} - Item 2 - {#snippet prepend()} - - {/snippet} - - - Item 3 - {#snippet prepend()} - - {/snippet} - - Item 4 - Item 5 - - - - - {#snippet append()} - - {/snippet} - Item 1 - - - {#snippet append()} - - {/snippet} - Item 2 - {#snippet prepend()} - - {/snippet} - - - Item 3 - {#snippet prepend()} - - {/snippet} - - Item 4 - Item 5 - -
diff --git a/apps/website/src/lib/components/docs/list/list-variant.svelte b/apps/website/src/lib/components/docs/list/list-variant.svelte deleted file mode 100644 index 6c9ac270..00000000 --- a/apps/website/src/lib/components/docs/list/list-variant.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - -
- - Item 1 text - Item 2 text - Item 3 text - alert('ping')}>Item 4 text - Item 5 text - - - - Item 1 outline - Item 2 outline - Item 3 outline - alert('ping')}>Item 4 outline - Item 5 outline - - - - Item 1 filled - Item 2 filled - Item 3 filled - alert('ping')}>Item 4 filled - Item 5 filled - -
diff --git a/apps/website/src/lib/components/docs/modal/modal-base.svelte b/apps/website/src/lib/components/docs/modal/modal-base.svelte deleted file mode 100644 index a9e147fa..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-base.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-contain.svelte b/apps/website/src/lib/components/docs/modal/modal-contain.svelte deleted file mode 100644 index bff51013..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-contain.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-density.svelte b/apps/website/src/lib/components/docs/modal/modal-density.svelte deleted file mode 100644 index 2b38d1f2..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-density.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -Modal content -Modal content -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-keyboard.svelte b/apps/website/src/lib/components/docs/modal/modal-keyboard.svelte deleted file mode 100644 index cc4ca5b9..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-keyboard.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-persistent.svelte b/apps/website/src/lib/components/docs/modal/modal-persistent.svelte deleted file mode 100644 index 09cf9ea8..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-persistent.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-position.svelte b/apps/website/src/lib/components/docs/modal/modal-position.svelte deleted file mode 100644 index 4adf2806..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-position.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -Modal content -Modal content -Modal content -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-size.svelte b/apps/website/src/lib/components/docs/modal/modal-size.svelte deleted file mode 100644 index da43895b..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-size.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - -Modal content -Modal content -Modal content -Modal content -Modal content -Modal content -Modal content diff --git a/apps/website/src/lib/components/docs/modal/modal-stack.svelte b/apps/website/src/lib/components/docs/modal/modal-stack.svelte deleted file mode 100644 index 9c989ed7..00000000 --- a/apps/website/src/lib/components/docs/modal/modal-stack.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - -

- Modal with persistent behavior. This modal will not close when clicking outside of it or - pressing the escape key. -

- - - - - Modal content child - - -
diff --git a/apps/website/src/lib/components/docs/popover/popover-base.svelte b/apps/website/src/lib/components/docs/popover/popover-base.svelte deleted file mode 100644 index 4b10d9c4..00000000 --- a/apps/website/src/lib/components/docs/popover/popover-base.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - {#snippet activator(model)} - - {/snippet} -
-
-

Add new comment

-

Please describe your impression

-
- - - -
-
-
diff --git a/apps/website/src/lib/components/docs/popover/popover-position.svelte b/apps/website/src/lib/components/docs/popover/popover-position.svelte deleted file mode 100644 index 398b6ada..00000000 --- a/apps/website/src/lib/components/docs/popover/popover-position.svelte +++ /dev/null @@ -1,100 +0,0 @@ - - - - {#snippet activator(model)} - - {/snippet} -
-
-

Add new comment

-

Please describe your impression

-
- - - -
-
-
- - - {#snippet activator(model)} - - {/snippet} -
-
-

Add new comment

-

Please describe your impression

-
- - - -
-
-
- - - {#snippet activator(model)} - - {/snippet} -
-
-

Add new comment

-

Please describe your impression

-
- - - -
-
-
- - - {#snippet activator(model)} - - {/snippet} -
-
-

Add new comment

-

Please describe your impression

-
- - - -
-
-
diff --git a/apps/website/src/lib/components/docs/separator/separator-base.svelte b/apps/website/src/lib/components/docs/separator/separator-base.svelte deleted file mode 100644 index bfd56576..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-base.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/separator/separator-color.svelte b/apps/website/src/lib/components/docs/separator/separator-color.svelte deleted file mode 100644 index b862590e..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-color.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - -
- -
- diff --git a/apps/website/src/lib/components/docs/separator/separator-inset.svelte b/apps/website/src/lib/components/docs/separator/separator-inset.svelte deleted file mode 100644 index 66c55b57..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-inset.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - -
- -
diff --git a/apps/website/src/lib/components/docs/separator/separator-opacity.svelte b/apps/website/src/lib/components/docs/separator/separator-opacity.svelte deleted file mode 100644 index e5299189..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-opacity.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - -
- -
- diff --git a/apps/website/src/lib/components/docs/separator/separator-orientation.svelte b/apps/website/src/lib/components/docs/separator/separator-orientation.svelte deleted file mode 100644 index 0bdb3a29..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-orientation.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -
- -
-
- -
diff --git a/apps/website/src/lib/components/docs/separator/separator-size.svelte b/apps/website/src/lib/components/docs/separator/separator-size.svelte deleted file mode 100644 index 38c07726..00000000 --- a/apps/website/src/lib/components/docs/separator/separator-size.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - -
- -
diff --git a/apps/website/src/lib/components/docs/stores/store-breakpoints.svelte b/apps/website/src/lib/components/docs/stores/store-breakpoints.svelte deleted file mode 100644 index 174428a5..00000000 --- a/apps/website/src/lib/components/docs/stores/store-breakpoints.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -

XS: {$breakpoints.xs}px

-//448px - -

MD: {$breakpoints.md}px

-//768px - -

LG: {$breakpoints.lg}px

-//1024px diff --git a/apps/website/src/lib/components/docs/stores/store-devices.svelte b/apps/website/src/lib/components/docs/stores/store-devices.svelte deleted file mode 100644 index fc0fd56b..00000000 --- a/apps/website/src/lib/components/docs/stores/store-devices.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - -{#if innerWidth > $devices.desktop} -

Desktop

-{/if} diff --git a/apps/website/src/lib/components/docs/stores/store-theme.svelte b/apps/website/src/lib/components/docs/stores/store-theme.svelte deleted file mode 100644 index 061ad5c4..00000000 --- a/apps/website/src/lib/components/docs/stores/store-theme.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -

Current theme: {$theme}

diff --git a/apps/website/src/lib/components/docs/tailwindcss-layer-style.txt b/apps/website/src/lib/components/docs/tailwindcss-layer-style.txt deleted file mode 100644 index 1d72c34a..00000000 --- a/apps/website/src/lib/components/docs/tailwindcss-layer-style.txt +++ /dev/null @@ -1,3 +0,0 @@ -@layer components { - @import 'lapikit/styles'; -} \ No newline at end of file diff --git a/apps/website/src/lib/components/docs/textfield/textfield-base.svelte b/apps/website/src/lib/components/docs/textfield/textfield-base.svelte deleted file mode 100644 index c05bc471..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-base.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/textfield/textfield-clearable.svelte b/apps/website/src/lib/components/docs/textfield/textfield-clearable.svelte deleted file mode 100644 index 0b6a8c0f..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-clearable.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -
- - -
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-counter.svelte b/apps/website/src/lib/components/docs/textfield/textfield-counter.svelte deleted file mode 100644 index 759768f7..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-counter.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
- - -
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-density.svelte b/apps/website/src/lib/components/docs/textfield/textfield-density.svelte deleted file mode 100644 index a8bc334b..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-density.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - -
- - - -
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-error.svelte b/apps/website/src/lib/components/docs/textfield/textfield-error.svelte deleted file mode 100644 index 1488f4da..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-error.svelte +++ /dev/null @@ -1,101 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/textfield/textfield-form.svelte b/apps/website/src/lib/components/docs/textfield/textfield-form.svelte deleted file mode 100644 index 18bb0d5f..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-form.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - -
-

User Information Form

- -
- - {#snippet prependInner()} - First Name - {/snippet} - - - - {#snippet prependInner()} - Last Name - {/snippet} - - - - {#snippet prependInner()} - Age - {/snippet} - - -
- - -
-
-
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-message.svelte b/apps/website/src/lib/components/docs/textfield/textfield-message.svelte deleted file mode 100644 index ef4b2c69..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-message.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/docs/textfield/textfield-size.svelte b/apps/website/src/lib/components/docs/textfield/textfield-size.svelte deleted file mode 100644 index 62d8e55f..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-size.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - -
- - - - - - -
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-snippet.svelte b/apps/website/src/lib/components/docs/textfield/textfield-snippet.svelte deleted file mode 100644 index ca44af1b..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-snippet.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - {#snippet prepend()} - - {/snippet} - - {#snippet prependInner()} - - {/snippet} - - {#snippet appendInner()} - - {/snippet} - - {#snippet append()} - - {/snippet} - diff --git a/apps/website/src/lib/components/docs/textfield/textfield-type.svelte b/apps/website/src/lib/components/docs/textfield/textfield-type.svelte deleted file mode 100644 index f6d53053..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-type.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
- - - - -
diff --git a/apps/website/src/lib/components/docs/textfield/textfield-variant.svelte b/apps/website/src/lib/components/docs/textfield/textfield-variant.svelte deleted file mode 100644 index 4805b475..00000000 --- a/apps/website/src/lib/components/docs/textfield/textfield-variant.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - -
- - - -
diff --git a/apps/website/src/lib/components/docs/toolbar/toolbar-base.svelte b/apps/website/src/lib/components/docs/toolbar/toolbar-base.svelte deleted file mode 100644 index b4ba85bb..00000000 --- a/apps/website/src/lib/components/docs/toolbar/toolbar-base.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -
- -

Toolbar

-
-
diff --git a/apps/website/src/lib/components/docs/toolbar/toolbar-density.svelte b/apps/website/src/lib/components/docs/toolbar/toolbar-density.svelte deleted file mode 100644 index 7680800b..00000000 --- a/apps/website/src/lib/components/docs/toolbar/toolbar-density.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -
- -

Toolbar

-
- - -

Toolbar compact

-
- - -

Toolbar comfortable

-
-
diff --git a/apps/website/src/lib/components/docs/toolbar/toolbar-orientation.svelte b/apps/website/src/lib/components/docs/toolbar/toolbar-orientation.svelte deleted file mode 100644 index a9a1d838..00000000 --- a/apps/website/src/lib/components/docs/toolbar/toolbar-orientation.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
- -

Toolbar horizontal

-
- - -

Toolbar vertical

-
-
diff --git a/apps/website/src/lib/components/docs/toolbar/toolbar-variant.svelte b/apps/website/src/lib/components/docs/toolbar/toolbar-variant.svelte deleted file mode 100644 index 5afa90c7..00000000 --- a/apps/website/src/lib/components/docs/toolbar/toolbar-variant.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - -
- -

Toolbar

-
- - -

Toolbar text

-
- - -

Toolbar outline

-
- - -

Toolbar dash

-
-
diff --git a/apps/website/src/lib/components/docs/tooltip/tooltip-base.svelte b/apps/website/src/lib/components/docs/tooltip/tooltip-base.svelte deleted file mode 100644 index 0e193013..00000000 --- a/apps/website/src/lib/components/docs/tooltip/tooltip-base.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/apps/website/src/lib/components/docs/tooltip/tooltip-density.svelte b/apps/website/src/lib/components/docs/tooltip/tooltip-density.svelte deleted file mode 100644 index 54d58f01..00000000 --- a/apps/website/src/lib/components/docs/tooltip/tooltip-density.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - diff --git a/apps/website/src/lib/components/docs/tooltip/tooltip-position.svelte b/apps/website/src/lib/components/docs/tooltip/tooltip-position.svelte deleted file mode 100644 index 5f0592b3..00000000 --- a/apps/website/src/lib/components/docs/tooltip/tooltip-position.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - diff --git a/apps/website/src/lib/components/docs/tooltip/tooltip-snippet.svelte b/apps/website/src/lib/components/docs/tooltip/tooltip-snippet.svelte deleted file mode 100644 index 4e164334..00000000 --- a/apps/website/src/lib/components/docs/tooltip/tooltip-snippet.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - {#snippet tooltip()} - the office the office tv moroccan christmas - {/snippet} - - - - - - {#snippet tooltip()} -
-

Tooltip custom content

-

- Lapikit is the Svelte component library designed for developers who want to get straight to - the point with elegant, high-performance components that are easy to integrate, without - sacrificing customization or getting lost in unnecessary overlay. -

-
- {/snippet} -
diff --git a/apps/website/src/lib/components/docs/tooltip/tooltip-variant.svelte b/apps/website/src/lib/components/docs/tooltip/tooltip-variant.svelte deleted file mode 100644 index fcc70981..00000000 --- a/apps/website/src/lib/components/docs/tooltip/tooltip-variant.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/apps/website/src/lib/components/docs/update-breakpoints-device.ts b/apps/website/src/lib/components/docs/update-breakpoints-device.ts deleted file mode 100644 index e8adb92f..00000000 --- a/apps/website/src/lib/components/docs/update-breakpoints-device.ts +++ /dev/null @@ -1,11 +0,0 @@ -import createLapikit from 'lapikit'; - -export default createLapikit({ - breakpoints: { - devices: { - desktop: 1024, // 64rem (lg) - tablet: 768, // 48rem (md) - mobile: 640 // 40rem (sm) - } - } -}); diff --git a/apps/website/src/lib/components/docs/update-breakpoints.ts b/apps/website/src/lib/components/docs/update-breakpoints.ts deleted file mode 100644 index 5c932683..00000000 --- a/apps/website/src/lib/components/docs/update-breakpoints.ts +++ /dev/null @@ -1,18 +0,0 @@ -import createLapikit from 'lapikit'; - -export default createLapikit({ - breakpoints: { - devices: { - desktop: 1536, // 96rem (2xl) - tablet: 1024, // 64rem (lg) - mobile: 768 // 48rem (md) - }, - thresholds: { - sm: 640, - md: 768, - lg: 1024, - '2xl': 1536, - '6xl': 2560 - } - } -}); diff --git a/apps/website/src/lib/components/footer-docs.svelte b/apps/website/src/lib/components/footer-docs.svelte deleted file mode 100644 index a1f6873d..00000000 --- a/apps/website/src/lib/components/footer-docs.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - -
-
- -
- -
- -
- - -

- Copyright Β© {year === 2025 ? year : `2025 - ${year}`} Lapikit - - - MIT License -

-
- {#each socials as { name, icon, href, color } (name)} - - {/each} - - - - Developed by - - - Nycolaide - - -
-
-
diff --git a/apps/website/src/lib/components/footer.svelte b/apps/website/src/lib/components/footer.svelte deleted file mode 100644 index baa217f7..00000000 --- a/apps/website/src/lib/components/footer.svelte +++ /dev/null @@ -1,165 +0,0 @@ - - -
-
- -
- -
- -
- -
-
- - -
- - Lapikit -
-
- -
- {#each socials as { name, icon, href, color } (name)} - - {/each} -
- -
- -
-
-
-
- {#each Object.entries(navigation) as [sectionKey, sectionValue] (sectionKey)} -
    -
  • {capitalize(`${sectionValue.title}`)}
  • - {#if Array.isArray(sectionValue.items)} - {#each sectionValue.items as { key, title, slug, custom, external } (key)} - {#if !custom} -
  • - -
  • - {:else if custom === 'cookie-consent'} -
  • - -
  • - {/if} - {/each} - {:else} - {#each Object.entries(sectionValue.items) as [key, { title, slug, external }] (key)} -
  • - -
  • - {/each} - {/if} -
- {/each} -
- - -

Join our community on Discord

-

News, updates, and discussions await you!

-
- -
-
-
- - -

- Copyright Β© {year === 2025 ? year : `2025 - ${year}`} Lapikit - - - MIT License -

-
- Developed by - - - Nycolaide - -
-
-
-
- - diff --git a/apps/website/src/lib/components/gtm.svelte b/apps/website/src/lib/components/gtm.svelte deleted file mode 100644 index f2bb3c76..00000000 --- a/apps/website/src/lib/components/gtm.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -{#if gtm && gtmID} - - - -{/if} diff --git a/apps/website/src/lib/components/header-docs.svelte b/apps/website/src/lib/components/header-docs.svelte deleted file mode 100644 index 7638257d..00000000 --- a/apps/website/src/lib/components/header-docs.svelte +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -
- {#if $viewport.innerWidth >= $breakpoints.lg} - - {/if} -
- -
- {#if $viewport.innerWidth < $breakpoints.lg} - - - - {/if} - - - - -
-
diff --git a/apps/website/src/lib/components/header.svelte b/apps/website/src/lib/components/header.svelte deleted file mode 100644 index f88b0e72..00000000 --- a/apps/website/src/lib/components/header.svelte +++ /dev/null @@ -1,178 +0,0 @@ - - - -
- - -
- -

Lapikit

-
-
- - - - {`v${npm?.version || '0.0.0'}`} - - - {#if $viewport.innerWidth >= $breakpoints.md} - {#each Object.entries(navigation || {}) as [sectionKey, sectionValue] (sectionKey)} - - {/each} - {/if} -
- -
- {#if $viewport.innerWidth >= $breakpoints.lg} - - {:else} - - - - {/if} - - {#if !isHome} - - {/if} - - - - - {#snippet activator(model)} - - {/snippet} -
- - {#each Object.entries(navigation || {}) as [sectionKey, sectionValue] (sectionKey)} - - {capitalize(`${sectionValue.title}`)} - - {/each} - -
-
-
-
diff --git a/apps/website/src/lib/components/index.ts b/apps/website/src/lib/components/index.ts deleted file mode 100644 index 19a17389..00000000 --- a/apps/website/src/lib/components/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { default as ThemeToggle } from './theme-toggle.svelte'; -export { default as Footer } from './footer.svelte'; -export { default as Search } from './search/search.svelte'; -export { default as Header } from './header.svelte'; -export { default as HeaderDocs } from './header-docs.svelte'; -export { default as NavDocs } from './navbar/docs/nav.svelte'; - -// preview and explain code -export { default as Sandbox } from './sandbox/sandbox.svelte'; -export { default as CommandLine } from './command-line.svelte'; diff --git a/apps/website/src/lib/components/markdown/blockquote.svelte b/apps/website/src/lib/components/markdown/blockquote.svelte deleted file mode 100644 index ef699a77..00000000 --- a/apps/website/src/lib/components/markdown/blockquote.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - - - {#snippet prepend()} - {#if type === 'info'} - - {:else if type === 'warning'} - - {:else if type === 'important'} - - {/if} - {/snippet} - -
- {#if text} - {text} - {:else} - {@render props.children?.()} - {/if} -
-
diff --git a/apps/website/src/lib/components/markdown/img.svelte b/apps/website/src/lib/components/markdown/img.svelte deleted file mode 100644 index 4353041e..00000000 --- a/apps/website/src/lib/components/markdown/img.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/markdown/index.ts b/apps/website/src/lib/components/markdown/index.ts deleted file mode 100644 index 3a37220a..00000000 --- a/apps/website/src/lib/components/markdown/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import img from './img.svelte'; -import blockquote from './blockquote.svelte'; -import table from './table.svelte'; -export { img, blockquote, table }; diff --git a/apps/website/src/lib/components/markdown/table.svelte b/apps/website/src/lib/components/markdown/table.svelte deleted file mode 100644 index de5675be..00000000 --- a/apps/website/src/lib/components/markdown/table.svelte +++ /dev/null @@ -1,235 +0,0 @@ - - -
-
- {#if headers.length > 0} - - - - {#each headers as head (head)} - - - {/each} - - - - {#each rows as row (row)} - - {#each row as cell (cell)} - - - {/each} - - {/each} - -
{@html head}
{@html cell}
- {:else} - - {@render props.children?.()} -
- {/if} -
-
- - diff --git a/apps/website/src/lib/components/navbar/docs/nav-list.svelte b/apps/website/src/lib/components/navbar/docs/nav-list.svelte deleted file mode 100644 index de8c5978..00000000 --- a/apps/website/src/lib/components/navbar/docs/nav-list.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - -{#each elements as item (item?.path || item?.key)} - (open = false)}> - {#snippet append()} - {#if item.metadata?.style?.icon} - - {/if} - {/snippet} - - {capitalize(item.metadata?.title || '')} - - {#snippet prepend()} - {#if item.metadata?.state?.status} - - {capitalize(item.metadata?.state.status)} - - {/if} - {/snippet} - -{/each} diff --git a/apps/website/src/lib/components/navbar/docs/nav.svelte b/apps/website/src/lib/components/navbar/docs/nav.svelte deleted file mode 100644 index 83292076..00000000 --- a/apps/website/src/lib/components/navbar/docs/nav.svelte +++ /dev/null @@ -1,73 +0,0 @@ - - -{#if $viewport.innerHeight > 1 && $viewport.innerWidth <= $breakpoints.lg} - - {#snippet activator(model)} - - {/snippet} - - - {#each Object.entries((navigation['docs'] as NavigationLink).sections!) as [keyNav, sectionData] (keyNav)} - { - currentSection = keyNav; - }} - > - {sectionData.title} - - {/each} - - -{/if} - - - {#if elements?.categories} - {#each elements.categories as category, index (index)} - {#if category.title !== 'uncategorized'} - - {#snippet append()} - {#if category.style?.icon} - - {/if} - {/snippet} - - {capitalize(category.title || '')} - - - - {:else} - - {/if} - {/each} - {/if} - diff --git a/apps/website/src/lib/components/sandbox/action.svelte b/apps/website/src/lib/components/sandbox/action.svelte deleted file mode 100644 index 299f479e..00000000 --- a/apps/website/src/lib/components/sandbox/action.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -{#if presentation} - -{/if} - -
-
- {#if !presentation && !tab?.includes('only')} - - - - {/if} - - {@render actions?.()} -
- -
- {#if (presentation || tab === 'code' || tab === 'code-only') && !noExpandedButton} - - {/if} - {#if !presentation && tab !== 'code' && tab !== 'code-only'} - - {/if} -
-
- - diff --git a/apps/website/src/lib/components/sandbox/code.svelte b/apps/website/src/lib/components/sandbox/code.svelte deleted file mode 100644 index ba528f5b..00000000 --- a/apps/website/src/lib/components/sandbox/code.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - -{#if !noCopy} - -{/if} - -
- -
{@html codeHTML}
-
- - diff --git a/apps/website/src/lib/components/sandbox/component.svelte b/apps/website/src/lib/components/sandbox/component.svelte deleted file mode 100644 index b350b11d..00000000 --- a/apps/website/src/lib/components/sandbox/component.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - -
- {@render children?.()} -
- - diff --git a/apps/website/src/lib/components/sandbox/sandbox.svelte b/apps/website/src/lib/components/sandbox/sandbox.svelte deleted file mode 100644 index bf913b9d..00000000 --- a/apps/website/src/lib/components/sandbox/sandbox.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - -
- {#if presentation && component} - - {#if component} -
- - {@render component?.()} - -
- {/if} - - {#if code} - - -
- -
- {/if} - {:else} - - -
- {#if code && (tab === 'code' || tab === 'code-only')} -
- {/if} - {#if component && (tab === 'preview' || tab === 'preview-only')} -
- - {@render component?.()} - -
- {/if} - - {#if code && (tab === 'code' || tab === 'code-only')} -
- -
- {/if} -
- {/if} -
- - diff --git a/apps/website/src/lib/components/sandbox/theme-toggle-component.svelte b/apps/website/src/lib/components/sandbox/theme-toggle-component.svelte deleted file mode 100644 index 330d6804..00000000 --- a/apps/website/src/lib/components/sandbox/theme-toggle-component.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/apps/website/src/lib/components/sandbox/types.ts b/apps/website/src/lib/components/sandbox/types.ts deleted file mode 100644 index 14127ca7..00000000 --- a/apps/website/src/lib/components/sandbox/types.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { Snippet } from 'svelte'; - -export type SandboxProps = { - presentation?: boolean; - name: string; - component?: Snippet; - code?: string; - noExpandedButton?: boolean; - noCopy?: boolean; - actions?: Snippet; -}; - -export type SandboxCodeProps = { - code?: string; - expanded?: boolean; - noCopy?: boolean; -}; - -export type SandboxComponentProps = { - children?: Snippet; -}; - -export type SandboxActionsProps = { - expanded?: boolean; - presentation?: boolean; - localColorScheme?: string; - tab?: string; - handleTab: (key: string) => void; - handleExpand: (key: boolean) => void; - noExpandedButton?: boolean; - actions?: Snippet; -}; diff --git a/apps/website/src/lib/components/search/search.svelte b/apps/website/src/lib/components/search/search.svelte deleted file mode 100644 index 1df92bd7..00000000 --- a/apps/website/src/lib/components/search/search.svelte +++ /dev/null @@ -1,218 +0,0 @@ - - - - - {#snippet appendInner()} - - {/snippet} - - - {#if searchQuery || historyResults.length > 0} -
-
- {#if searchQuery !== '' && searchQuery} - {$results.length} results - {/if} -
- - {#if historyResults.length > 0 && (searchQuery === '' || !searchQuery)} - clearHistory()} size="sm" class="px-2!"> - {#snippet prepend()} - - {/snippet} - Clear - - {/if} -
- {/if} - -
- - {#if searchQuery === '' || !searchQuery} - {#each historyResults as item, index (index)} - { - open = false; - saveOnHistory({ title: item.title, slug: item.slug }); - }} - href={`${item.slug}`} - class="rounded-sm! cursor-pointer" - style={`${selectedIndex === index ? 'background:var(--kit-background-tertiary);' : ''}`} - > - {#snippet prepend()} - - {/snippet} - {capitalize(item.title)} - - {/each} - {:else} - {#each $results as item, index (index)} - { - open = false; - saveOnHistory({ title: item.title, slug: item.slug }); - }} - href={`${item.slug}`} - class="rounded-sm! cursor-pointer" - style={`${selectedIndex === index ? 'background:var(--kit-background-tertiary);' : ''}`} - > - {#snippet prepend()} - {#if item.style?.icon} - - {:else} - - {/if} - {/snippet} -
- {capitalize(item.title)} - {#if item.subtitle} - {capitalize(item.subtitle)} - {/if} -
-
- {/each} - {/if} -
-
-
- - diff --git a/apps/website/src/lib/components/search/search.svelte.ts b/apps/website/src/lib/components/search/search.svelte.ts deleted file mode 100644 index 4654f685..00000000 --- a/apps/website/src/lib/components/search/search.svelte.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { writable } from 'svelte/store'; - -interface SearchItem { - slug: string; - path: string; - title: string; - subtitle?: string; - description?: string; - section: string; - style?: { - icon?: string; - cover?: string; - }; - keywords?: string[]; - score: number; -} - -interface SearchResponse { - query: string; - results: SearchItem[]; - total: number; -} - -export function useSearch() { - const results = writable([]); - const loading = writable(false); - - async function callResults(query: string) { - if (!query.trim()) { - results.set([]); - return; - } - loading.set(true); - try { - const res = await fetch(`/api/search?q=${encodeURIComponent(query)}`); - const data: SearchResponse = await res.json(); - results.set(data.results); - } catch (error) { - console.error('Erreur lors de la recherche:', error); - results.set([]); - } - loading.set(false); - } - - return { - results, - loading, - callResults - }; -} diff --git a/apps/website/src/lib/components/theme-toggle.svelte b/apps/website/src/lib/components/theme-toggle.svelte deleted file mode 100644 index 215582e6..00000000 --- a/apps/website/src/lib/components/theme-toggle.svelte +++ /dev/null @@ -1,63 +0,0 @@ - - -{#if icon} - -{:else} - - {#snippet activator(model)} - - {/snippet} - - useTheme('dark')} active={$theme === 'dark'}> - {#snippet append()} - - {/snippet} - Dark theme - - useTheme('light')} active={$theme === 'light'}> - {#snippet append()} - - {/snippet} - Light theme - - - -{/if} diff --git a/apps/website/src/lib/config.ts b/apps/website/src/lib/config.ts deleted file mode 100644 index 98da7939..00000000 --- a/apps/website/src/lib/config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { SitemapPage } from '$lib/types/sitemap.js'; - -export const sitemapConfig = { - baseUrl: 'https://lapikit.dev', - defaultChangefreq: 'weekly' as const, - defaultPriority: 0.5 -}; - -export const staticPages: SitemapPage[] = [ - { - url: '/', - changefreq: 'weekly', - priority: 1.0 - }, - { - url: '/terms', - changefreq: 'yearly', - priority: 0.3 - } -]; - -export const packageManagers: { name: string; icon: string }[] = [ - { - name: 'npm', - icon: '/icons/npm-color.svg' - }, - { - name: 'yarn', - icon: '/icons/yarn-color.svg' - }, - { - name: 'bun', - icon: '/icons/bun-color.svg' - } -]; diff --git a/apps/website/src/lib/i18n.ts b/apps/website/src/lib/i18n.ts deleted file mode 100644 index d652f8c8..00000000 --- a/apps/website/src/lib/i18n.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { derived, writable } from 'svelte/store'; -import type { Writable } from 'svelte/store'; -import translations from './locales/translations'; - -export const locale: Writable<'en' | 'fr' | 'es'> = writable('en'); -export const locales = Object.keys(translations); - -type TranslationValue = string | { [key: string]: TranslationValue }; - -interface Translations { - [locale: string]: TranslationValue; -} - -function getNestedTranslation(obj: TranslationValue, keys: string[]): TranslationValue | undefined { - return keys.reduce((acc, key) => { - if (acc && typeof acc === 'object' && key in acc) { - return (acc as { [key: string]: TranslationValue })[key]; - } - return undefined; - }, obj); -} - -function translate(locale: string, key: string, vars: Record = {}): string { - if (!key) throw new Error('no key provided to $t()'); - if (!locale) throw new Error(`no translation for key "${key}"`); - - const referencial: Translations = translations; - const translate = referencial[locale]; - if (!translate) return `${locale}.${key}`; - - const keys = key.split('.'); - let text = getNestedTranslation(translate, keys); - if (!text || typeof text !== 'string') return `${locale}.${key}`; - - Object.keys(vars).map((k) => { - const regex = new RegExp(`{{${k}}}`, 'g'); - if (typeof text === 'string') { - text = text.replace(regex, String(vars[k])); - } - }); - - return text; -} - -interface TranslationFunction { - (key: string, vars?: Record): string; -} - -export const t = derived( - locale, - ($locale) => - (key: string, vars: Record = {}) => - translate($locale, key, vars) -); diff --git a/apps/website/src/lib/images/assets/bulle.webp b/apps/website/src/lib/images/assets/bulle.webp deleted file mode 100644 index b29397d9..00000000 Binary files a/apps/website/src/lib/images/assets/bulle.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/cloud-tempest.webp b/apps/website/src/lib/images/assets/cloud-tempest.webp deleted file mode 100644 index c98eeb05..00000000 Binary files a/apps/website/src/lib/images/assets/cloud-tempest.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/multi-stars.webp b/apps/website/src/lib/images/assets/multi-stars.webp deleted file mode 100644 index 2f5ad811..00000000 Binary files a/apps/website/src/lib/images/assets/multi-stars.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/omg.webp b/apps/website/src/lib/images/assets/omg.webp deleted file mode 100644 index 3073b0bb..00000000 Binary files a/apps/website/src/lib/images/assets/omg.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/puddle-of-water.webp b/apps/website/src/lib/images/assets/puddle-of-water.webp deleted file mode 100644 index 398904a6..00000000 Binary files a/apps/website/src/lib/images/assets/puddle-of-water.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/rain.webp b/apps/website/src/lib/images/assets/rain.webp deleted file mode 100644 index a80296e8..00000000 Binary files a/apps/website/src/lib/images/assets/rain.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/star-large.webp b/apps/website/src/lib/images/assets/star-large.webp deleted file mode 100644 index f7819836..00000000 Binary files a/apps/website/src/lib/images/assets/star-large.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/star-small.webp b/apps/website/src/lib/images/assets/star-small.webp deleted file mode 100644 index e8223f1b..00000000 Binary files a/apps/website/src/lib/images/assets/star-small.webp and /dev/null differ diff --git a/apps/website/src/lib/images/assets/think.webp b/apps/website/src/lib/images/assets/think.webp deleted file mode 100644 index 933f8404..00000000 Binary files a/apps/website/src/lib/images/assets/think.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/actions.webp b/apps/website/src/lib/images/buttons/actions.webp deleted file mode 100644 index b2c49649..00000000 Binary files a/apps/website/src/lib/images/buttons/actions.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/components.webp b/apps/website/src/lib/images/buttons/components.webp deleted file mode 100644 index 975dd0da..00000000 Binary files a/apps/website/src/lib/images/buttons/components.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/stores.webp b/apps/website/src/lib/images/buttons/stores.webp deleted file mode 100644 index f9b55deb..00000000 Binary files a/apps/website/src/lib/images/buttons/stores.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/svelte-lapikit.webp b/apps/website/src/lib/images/buttons/svelte-lapikit.webp deleted file mode 100644 index ac1b9cea..00000000 Binary files a/apps/website/src/lib/images/buttons/svelte-lapikit.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/svelte-tailwindcss.webp b/apps/website/src/lib/images/buttons/svelte-tailwindcss.webp deleted file mode 100644 index 064eabb8..00000000 Binary files a/apps/website/src/lib/images/buttons/svelte-tailwindcss.webp and /dev/null differ diff --git a/apps/website/src/lib/images/buttons/svelte.webp b/apps/website/src/lib/images/buttons/svelte.webp deleted file mode 100644 index c6ab3c82..00000000 Binary files a/apps/website/src/lib/images/buttons/svelte.webp and /dev/null differ diff --git a/apps/website/src/lib/images/favicon.webp b/apps/website/src/lib/images/favicon.webp deleted file mode 100644 index a0f733e4..00000000 Binary files a/apps/website/src/lib/images/favicon.webp and /dev/null differ diff --git a/apps/website/src/lib/images/home/cards/lapikit-actions-large.webp b/apps/website/src/lib/images/home/cards/lapikit-actions-large.webp deleted file mode 100644 index 94b6998e..00000000 Binary files a/apps/website/src/lib/images/home/cards/lapikit-actions-large.webp and /dev/null differ diff --git a/apps/website/src/lib/images/home/cards/lapikit-components-large.webp b/apps/website/src/lib/images/home/cards/lapikit-components-large.webp deleted file mode 100644 index 8226e383..00000000 Binary files a/apps/website/src/lib/images/home/cards/lapikit-components-large.webp and /dev/null differ diff --git a/apps/website/src/lib/images/home/cards/lapikit-stores-large.webp b/apps/website/src/lib/images/home/cards/lapikit-stores-large.webp deleted file mode 100644 index 8f41ae6e..00000000 Binary files a/apps/website/src/lib/images/home/cards/lapikit-stores-large.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapikit-error.webp b/apps/website/src/lib/images/lapikit-error.webp deleted file mode 100644 index 088c5b11..00000000 Binary files a/apps/website/src/lib/images/lapikit-error.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapikit-yolo.webp b/apps/website/src/lib/images/lapikit-yolo.webp deleted file mode 100644 index c57ea9a4..00000000 Binary files a/apps/website/src/lib/images/lapikit-yolo.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapikit_logo.webp b/apps/website/src/lib/images/lapikit_logo.webp deleted file mode 100644 index 50097d0b..00000000 Binary files a/apps/website/src/lib/images/lapikit_logo.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapinosaure/lapinosaure-sad.webp b/apps/website/src/lib/images/lapinosaure/lapinosaure-sad.webp deleted file mode 100644 index fdf1ce84..00000000 Binary files a/apps/website/src/lib/images/lapinosaure/lapinosaure-sad.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapinosaure/lapinosaure-very-sad.webp b/apps/website/src/lib/images/lapinosaure/lapinosaure-very-sad.webp deleted file mode 100644 index 7cb4bff8..00000000 Binary files a/apps/website/src/lib/images/lapinosaure/lapinosaure-very-sad.webp and /dev/null differ diff --git a/apps/website/src/lib/images/lapinosaure/lapinosaure.webp b/apps/website/src/lib/images/lapinosaure/lapinosaure.webp deleted file mode 100644 index dfc1f5d3..00000000 Binary files a/apps/website/src/lib/images/lapinosaure/lapinosaure.webp and /dev/null differ diff --git a/apps/website/src/lib/index.ts b/apps/website/src/lib/index.ts deleted file mode 100644 index fbcbbbe7..00000000 --- a/apps/website/src/lib/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. -export interface MarkdownPage { - title: string; - subtitle?: string | null; - introduction?: string | null; - slug?: string; - style?: { - icon?: string | null; - cover?: string | null; - color?: string | null; - }; - state?: { - section?: string; - published?: boolean; - order?: string | null; - recommended?: boolean; - }; - github?: { - url?: string | null; - issues?: string | null; - pullRequests?: string | null; - }; - keywords?: string[] | null; -} - -export interface MarkdownWithMetadata extends MarkdownPage { - type?: 'match' | 'recommendation'; - metadata: { - slug: string; - date?: string; - filename?: string; - }; -} - -export interface MarkdownHead extends MarkdownPage { - head: { - title: string; - description: string; - }; -} - -export interface MarkdownHeadWithMetadata extends MarkdownHead { - type?: 'match' | 'recommendation'; - metadata: { - slug: string; - date?: string; - filename?: string; - }; -} - -export interface SectionPages { - key: string; - icon?: string; - submenu?: boolean; - pages: MarkdownWithMetadata[]; -} diff --git a/apps/website/src/lib/locales/en/common.json b/apps/website/src/lib/locales/en/common.json deleted file mode 100644 index 01f15633..00000000 --- a/apps/website/src/lib/locales/en/common.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "title": "Hello, World!", - "welcome": "Hi {{name}}, how are you?", - "time": "The current time is: {{time}}", - "hero": { - "made_with": "made with", - "by": "by" - }, - "open": "open", - "close": "close", - "or": "or", - "terms_and_privacy": "terms & privacy", - "gdpr": { - "cookie_settings": "cookie settings", - "title": "Lapikit respects your privacy", - "description": "Lapikit and our partners use cookies or similar technologies to enable us to improve the site, your experience and to ensure the proper functioning of the site, to collect statistics in order to optimize the services offered, and to adapt Lapikit's content.", - "button": { - "accept": "accept all", - "decline": "decline all" - } - }, - "github": { - "stars": "stars", - "forks": "forks", - "issues": "open issues", - "prs": "open pull requests", - "last_commit": "last commit", - "downloads": "downloads", - "last_published": "last published" - } -} diff --git a/apps/website/src/lib/locales/es/common.json b/apps/website/src/lib/locales/es/common.json deleted file mode 100644 index 6c105adb..00000000 --- a/apps/website/src/lib/locales/es/common.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Β‘Hola Mundo!", - "welcome": "Hola, {{name}}, ΒΏcΓ³mo estΓ‘s?", - "time": "La hora actual es: {{time}}" -} diff --git a/apps/website/src/lib/locales/fr/common.json b/apps/website/src/lib/locales/fr/common.json deleted file mode 100644 index 484e528d..00000000 --- a/apps/website/src/lib/locales/fr/common.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Bonjour tous le monde !", - "welcome": "Bonjour, {{name}}, comment tu vas?", - "time": "Il est actuellement: {{time}}" -} diff --git a/apps/website/src/lib/locales/translations.ts b/apps/website/src/lib/locales/translations.ts deleted file mode 100644 index f88731fb..00000000 --- a/apps/website/src/lib/locales/translations.ts +++ /dev/null @@ -1,18 +0,0 @@ -// en -import commonEn from './en/common.json'; -// es -import commonEs from './es/common.json'; -// fr -import commonFr from './fr/common.json'; - -export default { - en: { - common: commonEn - }, - es: { - common: commonEs - }, - fr: { - common: commonFr - } -}; diff --git a/apps/website/src/lib/shiki.ts b/apps/website/src/lib/shiki.ts deleted file mode 100644 index e29bedfd..00000000 --- a/apps/website/src/lib/shiki.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createHighlighter, type Highlighter } from 'shiki'; - -let highlighter: Highlighter; - -export async function getHighlighterSingleton() { - if (!highlighter) { - highlighter = await createHighlighter({ - themes: ['vitesse-dark'], - langs: ['svelte', 'typescript', 'javascript'] - }); - } - return highlighter; -} diff --git a/apps/website/src/lib/stores/app.ts b/apps/website/src/lib/stores/app.ts deleted file mode 100644 index 5e05163f..00000000 --- a/apps/website/src/lib/stores/app.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { writable, readable } from 'svelte/store'; - -// internal -export const mode = writable('development'); -export const search = writable(false); -export const sectionSelected = writable('base'); -export const consentManaged = writable(false); - -export const packageManager = writable('npm'); - -// user device -export const deviceUsed = readable('other', (set) => { - if (typeof navigator !== 'undefined') { - set(navigator.platform.toUpperCase().includes('MAC') ? 'apple' : 'other'); - } -}); diff --git a/apps/website/src/lib/stores/device.ts b/apps/website/src/lib/stores/device.ts deleted file mode 100644 index 9ce3a0d5..00000000 --- a/apps/website/src/lib/stores/device.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { readable } from 'svelte/store'; - -export const isMac = readable(false, (set) => { - if (typeof navigator !== 'undefined') { - set(navigator.platform.toUpperCase().includes('MAC')); - } -}); diff --git a/apps/website/src/lib/styles/app.css b/apps/website/src/lib/styles/app.css deleted file mode 100644 index d68df308..00000000 --- a/apps/website/src/lib/styles/app.css +++ /dev/null @@ -1,32 +0,0 @@ -@import 'tailwindcss'; - -@theme { - --breakpoint-lg: 64rem; -} - -@plugin '@tailwindcss/forms'; -@plugin '@tailwindcss/typography'; - -@import './markdown.css'; -@import './icon.css'; - -/* @layer components { - @import 'lapikit/css'; -} */ - -/* html, -body, -* { - cursor: none !important; -} */ - -:root { - --ui-container: 90rem; -} - -.no-select { - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - pointer-events: none; -} diff --git a/apps/website/src/lib/styles/icon.css b/apps/website/src/lib/styles/icon.css deleted file mode 100644 index 1f5b79cd..00000000 --- a/apps/website/src/lib/styles/icon.css +++ /dev/null @@ -1,22 +0,0 @@ -/* @font-face { - font-family: 'MingCute'; - src: url('/fonts/Mingcute/MingCute.eot?bysiq1'); - src: - url('/fonts/Mingcute/MingCute.eot?bysiq1#iefix') format('embedded-opentype'), - url('/fonts/Mingcute/MingCute.ttf?bysiq1') format('truetype'), - url('/fonts/Mingcute/MingCute.woff?bysiq1') format('woff'), - url('/fonts/Mingcute/MingCute.svg?bysiq1#MingCute') format('svg'); - font-weight: normal; - font-style: normal; - font-display: swap; -} */ - -/** - config mgc - @link https://github.com/Richard9394/MingCute -**/ - -[class^='mgc_']::before, -[class*=' mgc_']::before { - color: inherit !important; -} diff --git a/apps/website/src/lib/styles/markdown.css b/apps/website/src/lib/styles/markdown.css deleted file mode 100644 index a1b22ae5..00000000 --- a/apps/website/src/lib/styles/markdown.css +++ /dev/null @@ -1,104 +0,0 @@ -.markdown .title { - font-weight: var(--font-weight-semibold); - font-size: var(--text-5xl); - line-height: var(--tw-leading, var(--text-5xl--line-height)) !important; -} - -.markdown .subtitle { - color: color-mix(in oklab, var(--kit-on-base) 40%, transparent); - font-weight: var(--font-weight-semibold); - font-size: var(--text-xl); - line-height: var(--tw-leading, var(--text-5xl--line-height)) !important; -} - -.markdown p.description { - margin-top: calc(var(--system-spacing) * 6) !important; - font-size: 21px; - line-height: calc(var(--system-spacing) * 14) !important; - font-weight: var(--font-weight-semibold); - text-wrap: balance; - color: color-mix(in oklab, var(--kit-on-base) 70%, transparent); -} - -@media screen and (max-width: 48rem) { - .markdown h2 { - margin-top: calc(var(--system-spacing) * 16); - font-size: 27px; - font-weight: var(--font-weight-semibold); - } - - .markdown h3 { - margin-top: calc(var(--system-spacing) * 16); - font-size: var(--text-xl); - font-weight: var(--font-weight-semibold); - } - - .markdown p { - margin-top: calc(var(--system-spacing) * 7); - line-height: calc(var(--system-spacing) * 12); - } - - .markdown img { - margin-top: calc(var(--system-spacing) * 12); - margin-bottom: calc(var(--system-spacing) * -6); - margin-right: auto; - margin-left: auto; - } - - .markdown ul { - list-style-type: disc; - margin-left: calc(var(--system-spacing) * 12); - margin-block: calc(var(--system-spacing) * 8); - } - - .markdown ul > li { - line-height: calc(var(--system-spacing) * 14); - margin-top: calc(var(--system-spacing) * 3); - } - - .markdown a { - text-underline-offset: 4px; - text-decoration-line: underline; - font-weight: 500; - } -} - -@media screen and (min-width: 48rem) { - .markdown h2 { - margin-top: calc(var(--system-spacing) * 24); - font-size: 27px; - font-weight: var(--font-weight-semibold); - } - - .markdown h3 { - margin-top: calc(var(--system-spacing) * 24); - font-size: var(--text-xl); - font-weight: var(--font-weight-semibold); - } - - .markdown p { - margin-top: calc(var(--system-spacing) * 12); - line-height: calc(var(--system-spacing) * 14); - } - - .markdown img { - margin-top: calc(var(--system-spacing) * 12); - margin-bottom: calc(var(--system-spacing) * -12); - } - - .markdown ul { - list-style-type: disc; - margin-left: calc(var(--system-spacing) * 12); - margin-block: calc(var(--system-spacing) * 8); - } - - .markdown ul > li { - line-height: calc(var(--system-spacing) * 16); - margin-top: calc(var(--system-spacing) * 5); - } - .markdown a { - text-underline-offset: 4px; - text-decoration-line: underline; - font-weight: 500; - } -} diff --git a/apps/website/src/lib/templates/page.mdsvex.svelte b/apps/website/src/lib/templates/page.mdsvex.svelte deleted file mode 100644 index 3833304c..00000000 --- a/apps/website/src/lib/templates/page.mdsvex.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - -{#if props?.subtitle} -

{capitalize(props?.subtitle)}

-{/if} -{#if props?.title} -

{capitalize(props?.title)}

-{/if} -{#if props?.description} -

{props?.description}

-{/if} - -{@render props?.children?.()} diff --git a/apps/website/src/lib/types/api.ts b/apps/website/src/lib/types/api.ts deleted file mode 100644 index 3d070f50..00000000 --- a/apps/website/src/lib/types/api.ts +++ /dev/null @@ -1,29 +0,0 @@ -export interface GitHubRepositoryData { - full_name: string; - description: string | null; - stargazers_count: number; - subscribers_count: number; - open_issues_count: number; - forks_count: number; - html_url: string; - homepage: string | null; - language: string | null; - license: string | null; - updated_at: string; -} - -export interface NpmPackageData { - name: string; - version: string; - description: string; - homepage?: string; - license?: string; - repository?: string; - lastPublished?: string; - downloads: number; -} - -export interface ApiData { - github?: GitHubRepositoryData | null; - npm?: NpmPackageData | null; -} diff --git a/apps/website/src/lib/types/breadcrumbs.ts b/apps/website/src/lib/types/breadcrumbs.ts deleted file mode 100644 index c6c1a6ea..00000000 --- a/apps/website/src/lib/types/breadcrumbs.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface BreadcrumbItem { - label: string; - href?: string; -} - -export interface StructuredDataBreadcrumbItem { - '@type': string; - position: number; - name: string; - item?: string; -} - -export interface StructuredDataBreadcrumb { - '@context': string; - '@type': string; - itemListElement: StructuredDataBreadcrumbItem[]; -} - -export interface BreadcrumbsProps { - url: string; - class?: string; - [key: string]: unknown; -} diff --git a/apps/website/src/lib/types/components.ts b/apps/website/src/lib/types/components.ts deleted file mode 100644 index 2aebfa19..00000000 --- a/apps/website/src/lib/types/components.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { FooterNavigation, SocialLink } from './footer'; -import type { NavigationLinks } from './navigation'; - -export interface ComponentPropsBase { - class?: string; - [key: string]: unknown; -} - -export interface FooterComponentProps extends ComponentPropsBase { - url: string; - navigation: FooterNavigation; - socials: SocialLink[]; -} - -export interface BreadcrumbsComponentProps extends ComponentPropsBase { - url: string; -} - -import type { SvelteComponent } from 'svelte'; - -export interface DocPageData { - nav_links: NavigationLinks; - page: { - content: typeof SvelteComponent; - meta: { - head?: { - title?: string; - description?: string; - }; - }; - }; -} diff --git a/apps/website/src/lib/types/footer.ts b/apps/website/src/lib/types/footer.ts deleted file mode 100644 index d6eb16c8..00000000 --- a/apps/website/src/lib/types/footer.ts +++ /dev/null @@ -1,50 +0,0 @@ -export interface FooterNavigationItem { - key: string; - title: string; - slug?: string; - custom?: string; - external?: boolean; -} - -export interface FooterNavigationSection { - title: string; - items: FooterNavigationItem[] | Record; -} - -export interface FooterNavigation { - [key: string]: FooterNavigationSection; -} - -export interface SocialLink { - name?: string; - title?: string; - icon: string; - href: string; - color: string; - footer?: boolean; -} - -export interface UrlInternal { - discord: { invite: string }; - github: { - repository: string; - issues: string; - edit_page: string; - discussions: string; - contributing: string; - sponsors: string; - }; - package: { licence: string }; - npm: { package: string }; - buymeacoffee: { [key: string]: unknown }; - social_network: { [key: string]: unknown }; - nycolaide: { website: string }; -} - -export interface FooterProps { - url: UrlInternal; - navigation: FooterNavigation; - socials: SocialLink[]; - class?: string; - [key: string]: unknown; -} diff --git a/apps/website/src/lib/types/frontmatter.ts b/apps/website/src/lib/types/frontmatter.ts deleted file mode 100644 index 7e95bb25..00000000 --- a/apps/website/src/lib/types/frontmatter.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { SvelteComponent } from 'svelte'; - -export interface DocFile { - path: string; - slug: string; - breadcrumbs: string[]; - metadata: { - title?: string; - subtitle?: string; - description?: string; - head?: { - title?: string; - description?: string; - }; - style?: { - icon?: string; - cover?: string; - }; - state?: { - section?: string; - category?: string; - published?: boolean; - recommended?: boolean; - order?: number; - status?: string; - }; - github?: { - url?: string; - }; - keywords?: string[]; - [key: string]: unknown; - } | null; -} - -export interface Frontmatter { - title: string; - headings: { id: string; text: string; level: number }[]; - head?: { - title?: string; - description?: string; - }; -} - -export interface MarkdownModule { - default: typeof SvelteComponent; - metadata: Frontmatter; -} diff --git a/apps/website/src/lib/types/guards.ts b/apps/website/src/lib/types/guards.ts deleted file mode 100644 index 4a934369..00000000 --- a/apps/website/src/lib/types/guards.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { - NavigationLink, - NavigationSectionDirect, - NavigationLinkWithSections, - NavigationData -} from './navigation'; - -export function hasNavSections( - nav: NavigationLink | NavigationSectionDirect | NavigationLinkWithSections -): nav is NavigationLinkWithSections { - return 'sections' in nav && nav.sections !== undefined; -} - -export function isNavigationSectionDirect( - nav: NavigationLink | NavigationSectionDirect | NavigationLinkWithSections -): nav is NavigationSectionDirect { - return 'items' in nav && !('sections' in nav); -} - -export function getNavigationSections( - nav: NavigationLink | NavigationSectionDirect | NavigationLinkWithSections -): NavigationData | null { - return hasNavSections(nav) ? nav.sections : null; -} diff --git a/apps/website/src/lib/types/index.ts b/apps/website/src/lib/types/index.ts deleted file mode 100644 index f17abd5b..00000000 --- a/apps/website/src/lib/types/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -// API types -export * from './api'; - -// Breadcrumbs types -export * from './breadcrumbs'; - -// Component types -export * from './components'; - -// Footer types -export * from './footer'; - -// Frontmatter types -export type { DocFile as FrontmatterDocFile, Frontmatter, MarkdownModule } from './frontmatter'; - -// Guards types -export * from './guards'; - -// Internal types -export type { UrlInternal as InternalUrlConfig } from './internal'; - -// Navigation types -export * from './navigation'; - -// Sitemap types -export type { DocFile as SitemapDocFile, SitemapPage, DocFileMetadata, DocsData } from './sitemap'; - -// Summaries types -export * from './summaries'; diff --git a/apps/website/src/lib/types/internal.ts b/apps/website/src/lib/types/internal.ts deleted file mode 100644 index 0ed10b1f..00000000 --- a/apps/website/src/lib/types/internal.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface UrlInternal { - [key: string]: { [key: string]: string }; -} diff --git a/apps/website/src/lib/types/navigation.ts b/apps/website/src/lib/types/navigation.ts deleted file mode 100644 index 8d5fd207..00000000 --- a/apps/website/src/lib/types/navigation.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { DocFile } from '$lib/types/frontmatter'; - -export interface NavigationLink { - title: string; - slug: string; - sections?: NavigationData; -} - -export interface NavigationSectionDirect { - title: string; - items: DocFile[]; -} - -export interface NavigationLinkWithSections extends NavigationLink { - sections: NavigationData; -} - -export interface NavigationLinks { - [key: string]: NavigationLink | NavigationSectionDirect | NavigationLinkWithSections; -} - -export interface NavigationSection { - key: string; - path?: string; - items: DocFile[]; -} - -export interface UrlConfig { - github: { - repository: string; - discussions: string; - }; -} - -export interface NpmData { - name?: string; - version?: string; - description?: string; - homepage?: string; - license?: string; - repository?: string; - lastPublished?: string; - downloads?: number; -} - -export interface NavigationSectionWithCategories { - key: string; - title: string; - order: number; - slug: string; - style?: { - color?: string; - icon?: string; - }; - categories: Array<{ - key: string; - title: string; - order?: number; - style?: { - color?: string; - icon?: string; - }; - items?: DocFile[]; - }>; -} - -export interface NavigationData { - [key: string]: NavigationSectionWithCategories; -} - -export interface DocNavProps { - url: UrlConfig; - npm?: NpmData; - // navigation: NavigationData; - class?: string; - [key: string]: unknown; -} diff --git a/apps/website/src/lib/types/sitemap.ts b/apps/website/src/lib/types/sitemap.ts deleted file mode 100644 index 8e8c9129..00000000 --- a/apps/website/src/lib/types/sitemap.ts +++ /dev/null @@ -1,33 +0,0 @@ -export interface SitemapPage { - url: string; - lastmod?: string; - changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'; - priority?: number; -} - -export interface DocFileMetadata { - title?: string; - subtitle?: string; - head?: { - title?: string; - description?: string; - }; - state?: { - section?: string; - published?: boolean; - recommended?: boolean; - order?: number; - }; -} - -export interface DocFile { - path?: string; - slug?: string; - metadata?: DocFileMetadata; -} - -export interface DocsData { - generatedAt?: string; - totalFiles?: number; - files?: DocFile[]; -} diff --git a/apps/website/src/lib/types/summaries.ts b/apps/website/src/lib/types/summaries.ts deleted file mode 100644 index 7181b1cd..00000000 --- a/apps/website/src/lib/types/summaries.ts +++ /dev/null @@ -1,118 +0,0 @@ -export interface HeadingItem { - id: string; - text: string; - level: number; -} - -export interface PageSummary { - slug: string; - path: string; - title: string; - headings: HeadingItem[]; -} - -export interface SummariesData { - generatedAt: string; - totalPages: number; - summaries: PageSummary[]; -} - -export class SummariesManager { - private summaries: PageSummary[] = []; - private summariesMap = new Map(); - - constructor(data: SummariesData) { - this.summaries = data.summaries; - this.summariesMap = new Map(data.summaries.map((summary) => [summary.slug, summary])); - } - - /** - * Récupère le summary d'une page par son slug - */ - getPageSummary(slug: string): PageSummary | undefined { - return this.summariesMap.get(slug); - } - - /** - * Récupère les headings d'une page par son slug - */ - getPageHeadings(slug: string): HeadingItem[] { - const summary = this.summariesMap.get(slug); - return summary?.headings || []; - } - - /** - * Recherche dans tous les summaries par texte - */ - searchInHeadings(query: string): Array<{ page: PageSummary; heading: HeadingItem }> { - const results: Array<{ page: PageSummary; heading: HeadingItem }> = []; - const lowerQuery = query.toLowerCase(); - - for (const page of this.summaries) { - for (const heading of page.headings) { - if (heading.text.toLowerCase().includes(lowerQuery)) { - results.push({ page, heading }); - } - } - } - - return results; - } - - /** - * Récupère tous les headings d'un niveau spécifique - */ - getHeadingsByLevel(level: number): Array<{ page: PageSummary; heading: HeadingItem }> { - const results: Array<{ page: PageSummary; heading: HeadingItem }> = []; - - for (const page of this.summaries) { - for (const heading of page.headings) { - if (heading.level === level) { - results.push({ page, heading }); - } - } - } - - return results; - } - - /** - * Récupère les pages avec le plus de headings - */ - getPagesWithMostHeadings(limit: number = 10): PageSummary[] { - return [...this.summaries] - .sort((a, b) => b.headings.length - a.headings.length) - .slice(0, limit); - } - - /** - * Récupère toutes les pages - */ - getAllPages(): PageSummary[] { - return this.summaries; - } - - /** - * Statistiques des summaries - */ - getStats() { - const totalHeadings = this.summaries.reduce((sum, page) => sum + page.headings.length, 0); - const pagesWithHeadings = this.summaries.filter((page) => page.headings.length > 0).length; - - const headingsByLevel: Record = {}; - for (const page of this.summaries) { - for (const heading of page.headings) { - headingsByLevel[heading.level] = (headingsByLevel[heading.level] || 0) + 1; - } - } - - return { - totalPages: this.summaries.length, - totalHeadings, - pagesWithHeadings, - pagesWithoutHeadings: this.summaries.length - pagesWithHeadings, - headingsByLevel, - averageHeadingsPerPage: totalHeadings / this.summaries.length - }; - } -} diff --git a/apps/website/src/lib/use-debounce.ts b/apps/website/src/lib/use-debounce.ts deleted file mode 100644 index abee9dc4..00000000 --- a/apps/website/src/lib/use-debounce.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { writable } from 'svelte/store'; - -export function useDebounced(value: T, delay = 300) { - const debounced = writable(value); - let timeout: ReturnType; - - return { - subscribe: debounced.subscribe, - set(newValue: T) { - clearTimeout(timeout); - timeout = setTimeout(() => { - debounced.set(newValue); - }, delay); - } - }; -} diff --git a/apps/website/src/plugins/lapikit.ts b/apps/website/src/plugins/lapikit.ts deleted file mode 100644 index d3101b8d..00000000 --- a/apps/website/src/plugins/lapikit.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Lapikit - * Library documentation: https://lapikit.dev - */ - -// Styles -import 'lapikit/styles'; -import 'lapikit/themes'; - -// Composables -import createLapikit from 'lapikit'; - -// https://lapikit.dev/docs/getting-started -export default createLapikit({ - theme: { - defaultTheme: 'light', - themes: { - light: { - colors: { - service: { - github: 'oklch(23.166% .0107 242.2)', - 'on-github': 'oklch(97.913% 0 89.88)', - svelte: '#ff3e00', - 'buy-me-a-coffee': '#FFDD00', - 'on-buy-me-a-coffee': '#000000', - discord: '#5661ec', - 'on-discord': '#ffffff', - npm: '#CB3837', - 'on-npm': '#ffffff', - x: 'oklch(23.166% .0107 242.2)', - instagram: 'linear-gradient(45deg, #833AB4 0%, #C13584 25%, #F56040 50%, #FCAF45 100%)', - 'on-instagram': '#ffffff' - } - } - }, - dark: { - colors: { - service: { - github: 'oklch(97.913% 0 89.88)', - 'on-github': 'oklch(23.166% .0107 242.2)', - svelte: '#ff3e00', - 'buy-me-a-coffee': '#FFDD00', - 'on-buy-me-a-coffee': '#000000', - discord: '#5661ec', - 'on-discord': '#ffffff', - npm: '#CB3837', - 'on-npm': '#ffffff', - x: 'oklch(97.913% 0 89.88)', - instagram: 'linear-gradient(45deg, #833AB4 0%, #C13584 25%, #F56040 50%, #FCAF45 100%)', - 'on-instagram': '#ffffff' - } - } - } - } - }, - typography: { - fonts: { - default: { - sans: ['Roboto Variable', 'sans-serif'] - } - } - } -}); diff --git a/apps/website/src/routes/(pages)/+layout.svelte b/apps/website/src/routes/(pages)/+layout.svelte deleted file mode 100644 index 7686fa5b..00000000 --- a/apps/website/src/routes/(pages)/+layout.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - -
- -
- {@render children()} -
- -