A reusable Svelte component library that serves raw .svelte files for use in pala blocks and other build tools.
This library serves raw Svelte components via an HTTP endpoint. Components are:
.svelte files in the components/ directory├── backend/
│ └── index.ts # HTTP endpoint (Hono app)
├── components/
│ └── button/
│ └── Button.svelte # Example component
└── README.md
backend/index.ts to your valOnce deployed, you can import components in your pala blocks or other projects:
// Import the component (use .svelte extension for better build tool recognition)
import Button from 'https://your-username-componentlib.web.val.run/button.svelte'
// Use it in your Svelte app
<Button variant="primary" size="medium">Click me</Button>
components/ with your component name (lowercase).svelte file with the capitalized component nameExample for a Card component:
components/
└── card/
└── Card.svelte
/card<script> export let variant = 'primary' export let disabled = false </script> <button class="{variant}" {disabled}> <slot>Default text</slot> </button> <style> button { padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; } .primary { background: #0066ff; color: white; } </style>
deno run --allow-net --allow-read backend/index.ts
These endpoints are available for development purposes:
POST /cache/clear - Clear all cached componentsPOST /cache/clear/:component - Clear cache for specific componentExample:
curl -X POST https://your-val.web.val.run/cache/clear/button
The library simply serves the raw .svelte files from the components/ directory. When you import a component:
.svelte fileThis approach ensures compatibility with any Svelte build setup since you're using your own compiler and configuration.
Raw component files are cached in memory to improve performance. The cache persists for the lifetime of the val instance.
.svelte files