Smelte

Demo
Smelte is a UI framework built on top of Svelte and Tailwind CSS using Material Design spec (hence the name).
It comes with many components and utility functions making it easy to build beautiful responsive layouts while keeping
bundle size and performance at check all thanks to Svelte.
Installation
Clone the project's template, install the dependencies and write some pretty code!
npx degit matyunya/smelte-sapper-template my-svelte-project
cd my-svelte-project
yarn && yarn dev
(or npm install && npm run dev)
If you don't want to use sapper you can use raw template:
npx degit matyunya/smelte-template my-svelte-project
Adding to existing project
Basically you need to add Tailwind to your project and import Smelte's configuration.
First add the dependencies:
yarn add smelte tailwindcss rollup-plugin-postcss svelte-preprocess @fullhuman/postcss-purgecss postcss-import tailwindcss-elevation
Add following to postcss.config.js
in your project's root directory
const production = !process.env.ROLLUP_WATCH;
const purgecss = require("@fullhuman/postcss-purgecss");
module.exports = {
plugins: [
require("postcss-import")(),
require("tailwindcss")("./tailwind.config.js"),
require("autoprefixer"),
production &&
purgecss({
content: ["./**/*.html", "./**/*.svelte"],
defaultExtractor: content => content.match(/[A-Za-z0-9-_:/]+/g) || [],
whitelistPatterns: [
/ripple/
]
})
]
};
Then to tailwind.config.js
const config = require("smelte/tailwind.config.js");
module.exports = config;
Add postcss to your Rollup config:
import postcss from "rollup-plugin-postcss";
import autoPreprocess from "svelte-preprocess";
...
plugins: [
svelte({
preprocess: autoPreprocess({
postcss: true
}),
dev: !production,
css: css => {
css.write("public/bundle.css");
}
}),
postcss({
extract: "public/utils.css"
}),
Add exported css file to public/index.html
:
<link rel='stylesheet' href='/utils.css'>
Create tailwind.css
in src
folder with this line:
@import 'smelte/src/tailwind';
And import it in your src/main.js
:
import './tailwind.css';
That's it! The process is quite tedious at the moment. Please send feedback if you know how to make it better.
Components
Features