A set of UI components for Svelte framework based on Fomantic-UI library
-- Coming soon --
# npm
npm install svantic
# yarn
yarn add svantic
Create a new project based on sveltejs/template
npx degit sveltejs/template svantic-app
cd svantic-app
# npm
npm install
# yarn
yarn install
Or you can use our svantic template, it comes pre-configured
npx degit ryu-man/svantic-template#main svantic-app
cd svantic-app
# npm
npm install
# yarn
yarn install
NOTE: There are of course other ways to set up a project using svelte. This is just the quickest way to start.
Because svantic uses dymanic import for better footprint and performance you have to configure rollup as following:
output: {
...,
dir: "path to output directory",
entryFileNames: "index.js",
chunkFileNames: "[name].js"
},
used to load global scripts and stylesheets, must mounted on the top level of the app
<script>
import { Svantic, ... } from 'svantic'
</script>
//
<Svantic>
...
</Svantic>
allows acces to the top level dom elem instead of module controller
to controll a module you use bind:this={varname} on the component to save an instance of its controller
is a reactive store that allows subscribtion to a module and execute a callback when the component is mounted
<script>
// import modules
import { Dropdown, controllable, Svantic } from 'svantic';
const dropdownController = controllable(controller=>{
// do something
})
</script>
<Svantic>
<Dropdown bind:this={$dropdownController}>
// ...
</Dropdown>
</Svantic>
Add svantic and modify src/App.svelte
file in the following way
<script>
// import any components you want
import { Button, Svantic } from 'svantic'
</script>
<Svantic>
<Button>Hello world</Button>
</Svantic>
or
<script>
// import modules
import { Dropdown, initDropdown, controllable, Icon, Svantic } from 'svantic';
// call this function if you want to use Module.SubModule syntax, ex: Dropdown.Item
initDropdown()
const dropdownController = controllable(controller=>{
// called when the component is mounted and ready
// access the controller and manupilate dropdown
})
</script>
// mount Svantic component on the top level of the app
<Svantic>
// onMount: allows control module behaviors
// settings: pass module settings
<Dropdown
bind:this={$dropdownController}
onMount={(domElem) => {}}
settings={{}}
selection >
<Icon name="caret down" />
<Dropdown.Text>Select language</Dropdown.Text>
<Dropdown.Menu>
<Dropdown.Item>English</Dropdown.Item>
<Dropdown.Item>Arabic</Dropdown.Item>
<Dropdown.Item>Spanish</Dropdown.Item>
<Dropdown.Item>German</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
</Svantic>
Another way to use Module.SubModule syntax
<script>
import { Icon, Svantic } from 'svantic'
import * as Dropdown from 'svantic/modules/dropdown';
</script>
<Svantic>
<Dropdown.default selection >
<Icon name="caret down" />
<Dropdown.Text>Select language</Dropdown.Text>
<Dropdown.Menu>
<Dropdown.Item>English</Dropdown.Item>
<Dropdown.Item>Arabic</Dropdown.Item>
<Dropdown.Item>Spanish</Dropdown.Item>
<Dropdown.Item>German</Dropdown.Item>
</Dropdown.Menu>
</Dropdown.default>
</Svantic>
- Clone this repo:
git clone https://github.com/ryu-man/svantic.git
- Install dependencies:
npm i
- Start building fomantic:
npm run build:fomantic
Code released under MIT license
Copyright © - ryu-man.