* refactor(search): resolve svelte file paths * docs(Search): add reactive example * refactor(tag): use class name directive for tag types, resolve svelte icon path * chore(button-skeleton): deprecate small prop * fix(breadcrumb-item): type default slot * refactor(breadcrumb-skeleton): omit unused index * refactor(aspect-ratio): use class name directive * refactor(accordion): use the class name directive, resolve svelte icon paths * refactor(code-snippet): use class name directive, resolve svelte icon paths * fix(code-snippet-skeleton): CodeSnippetSkeleton can only be single or multi * refactor(content-switcher): use class name directive * docs(content-switcher): add reactive example * docs(content-switcher): remove unused import * docs(toggle): add reactive example * refactor(tooltip-definition): use class name directive * refactor(tooltip-icon): use class name directive * refactor(tooltip): resolve svelte icon import * fix(select): type dispatched change event * refactor(select): resolve svelte icon import * feat(select-item): spread rest props, avoid $ variable name * fix(pagination-nav): type dispatched events * refactor(pagination): resolve svelte imports * fix(pagination): type dispatched update event * fix(overflow-menu): type dispatched close event * fix(number-input): type dispatched change event * refactor(modal): use class name directive, resolve svelte imports * refactor(inline-loading): use class name directive, resolve svelte imports * refactor(composed-modal): resolve svelte icon imports * refactor(combo-box): resolve svelte imports * fix(fluid-form): rest props should not override Form class * refactor(progress-step): resolve svelte icon imports |
||
---|---|---|
docs | ||
examples | ||
scripts | ||
src | ||
tests | ||
types | ||
.gitignore | ||
.prettierignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CODEOWNERS | ||
COMPONENT_INDEX.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
MAINTAINERS.md | ||
package.json | ||
README.md | ||
rollup.config.js | ||
tsconfig.json | ||
yarn.lock |
carbon-components-svelte
Carbon Components Svelte is a Svelte component library that implements the Carbon Design System, an open source design system by IBM.
Design systems facilitate design and development through reuse, consistency, and extensibility.
The Carbon Svelte portfolio also includes:
- Carbon Icons Svelte: 5800+ Carbon icons as Svelte components
- Carbon Pictograms Svelte: 600+ Carbon pictograms as Svelte components
- Carbon Charts Svelte: 16 chart types, powered by d3
Documentation
The documentation website contains live demos and examples. Other forms of documentation are auto-generated:
- Component Index: Markdown file documenting component props, slots, and events
- TypeScript definitions: Component TypeScript definitions
- Component API: Component API metadata in JSON format
Getting started
Install carbon-components-svelte
as a development dependency.
yarn add -D carbon-components-svelte
# OR
npm i -D carbon-components-svelte
Usage
The quickest way to get started is to customize a template from the examples folder.
Example set-ups demonstrate usage with popular application bundlers and frameworks. They feature a mix of Single-page Applications (SPA), Server-side rendering (SSR) and statically exported approaches.
- examples/rollup: SPA bundled using Rollup
- examples/rollup-typescript: SPA bundled using Rollup with TypeScript support
- examples/routify: SPA + static export using Routify
- examples/sapper: SSR + static export using Sapper
- examples/svite: SPA developed with Svite, bundled with Rollup
- examples/webpack: SPA bundled with webpack
Scaffolding
Each example is published in a dedicated branch of the same name.
Use degit to scaffold a new project:
For example, to use the svite
template, run the following commands:
npx degit ibm/carbon-components-svelte#svite svelte-app
cd svelte-app
yarn install
Importing components
Import components from carbon-components-svelte
in the script
tag of your Svelte file.
<!-- App.svelte -->
<script>
import { Accordion, AccordionItem } from "carbon-components-svelte";
</script>
<Accordion>
<AccordionItem title="Section 1" open> Content 1 </AccordionItem>
<AccordionItem title="Section 2"> Content 2 </AccordionItem>
<AccordionItem title="Section 3"> Content 3 </AccordionItem>
</Accordion>
Refer to COMPONENT_INDEX.md for component API documentation.
Precompiled CSS StyleSheets
carbon-components-svelte
includes precompiled CSS StyleSheets for each Carbon theme:
- white.css: Default Carbon theme (light)
- g10.css: Gray 10 theme (light)
- g90.css: Gray 90 theme (dark)
- g100.css: Gray 100 theme (dark)
- all.css: All themes (White, Gray 10, Gray 90, Gray 100) using CSS variables
Each StyleSheet is generated from the flagship carbon-components library.
The examples use all.css
for dynamic theming through CSS variables.
Because the CSS is precompiled, it includes all Carbon design styles. One method to optimize the CSS is to ship only the CSS that is used. This can be accomplished using PurgeCSS with a Carbon style extractor (WIP).
Usage
svelte-preprocess
The easiest way to import a StyleSheet is with svelte-preprocess.
const svelteOptions = {
preprocess: require("svelte-preprocess")(),
};
<!-- App.svelte -->
<style lang="scss" global>
/** Gray 10 theme **/
@import "carbon-components-svelte/css/g10";
</style>
JavaScript import
Importing a CSS file in a JavaScript file will require the appropriate file loader(s).
import "carbon-components-svelte/css/all.css";
import App from "./App.svelte";
const app = new App({ target: document.body });
export default app;
See webpack.config.js in examples/webpack.
TypeScript support
TypeScript definitions are generated by sveld.
Contributing
Refer to the Contributing guidelines.