mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-14 18:01:06 +00:00
**carbon-components-svelte has unstable styles and interactions during this pre-release phase. See #1872 for details.**
Breaking changes
- Overall, this is a major style change the will impact the appearance and features of many components. Use caution when upgrading and test your applications.
Components
- Button has new prop values for size and kind
- Theme follows v11 conventions: g80 theme isn't supported, toggled themes adjust data-carbon-theme attribute in <html> tag (for now, tokens use bx prefix, but that may change)
- Tabs has a contained prop instead of type, and a new mobile appearance (scrolling tabs)
- ContentSwitcher size prop no longer supports size="xl"; md is the new default
- MultiSelect no longer supports xl size
- OverflowMenu no longer supports xl size
- Search no longer supports xl size
- TreeView no longer supports compact size
- UIShell has a new light theme
CSS
- Several class names have been changed due to the v11 overhaul. If you're targeting or overriding component classes, be sure to test your code
- Many tokens and CSS variables have been renamed. Details: https://carbondesignsystem.com/migrating/guide/develop
- Themes are applied to the <html> element as data-carbon-theme="g10" instead of theme="g10"
- The g80 theme no longer exists
General
- Codebase uses npm instead of yarn
--- Commit notes
* chore: depend on @carbon/styles instead of carbon-components
See upgrade guide here: https://carbondesignsystem.com/migrating/guide/develop
* chore: use v11 styles for docs
* chore: stick to `bx` instead of `cds` class prefix
* chore: migrate layout spacing to v11
See [@carbon/layout](https://github.com/carbon-design-system/carbon/blob/main/docs/migration/v11.md#carbonlayout) migration guide:
$layout-01 Removed, use $spacing-05 instead
$layout-02 Removed, use $spacing-06 instead
$layout-03 Removed, use $spacing-07 instead
$layout-04 Removed, use $spacing-09 instead
$layout-05 Removed, use $spacing-10 instead
$layout-06 Removed, use $spacing-12 instead
$layout-07 Removed, use $spacing-13 instead
* chore: migrate type tokens to v11
See https://github.com/carbon-design-system/carbon/blob/main/docs/migration/v11.md#type-tokens
* chore: keep flex-grid instead of css grid for the moment
Upgrading to css-grid should be separate.
* chore: v11 Tabs
In v11 [Tabs](https://carbondesignsystem.com/migrating/guide/design/#tabs-breaking) received some additional modifiers. In this commit we only want to make sure that the Svelte v10 tabs still work using v11 styles. This probably needs additional testing.
* chore: use @ibm/plex fonts
* chore: v11 Button
* dependency: @carbon/styles update
* chore: v11 ComboBox
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 ContentSwitcher
For better compatibility with existing code bases size `xl` is still supported.
* chore: remove legacy v10 css files
Note that further work is needed here in order to make theming work again.
Also documentation needs updating.
* chore: v11 DatePicker
For better compatibility with existing codebases size xl is still supported.
* chore: v11 Dropdown
For better compatibility with existing codebases size xl is still supported.
* chore: v11 ExpandableTile
Note that state labels `tileCollapsedLabel` and `tileExpandedLabel` are no longer supported.
* chore: v11 FileUploader
For better compatibility with existing codebases sizes `field` and `small` are still supported. Note that flagship implementation does the same thing.
* chore: v11 Toggle
This removes legacy `ToggleSkeleton`.
* chore: v11 MultiSelect
Size `xl` changed to `lg`.
* chore: v11 NumberInput
For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 OverflowMenu
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 PasswordInput
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 Search
* chore: v11 Select
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 AspectRatio
The `bx--aspect-ratio--object` class is gone and needs to be replaced manually.
* chore: v11 TextArea
`cols` no longer has a defaults to 50 but remains at 100% width by default.
* chore: v11 TextInput
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 TimePicker
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* chore: v11 TreeView
Size `compact` changed to `xs`. For better compatibility with existing codebases size `compact` is still supported.
* chore: remove Truncate since it does not exist in Carbon v11
* chore: v11 UIShell
* chore: v11 Accordion
Size `xl` changed to `lg`. For better compatibility with existing codebases size `xl` is still supported.
* tmp: v11 PopoverContent
* Revert "chore: remove Truncate since it does not exist in Carbon v11"
This reverts commit 5833536199
.
* chore: use truncate mixins
* docs: add truncate mixins
* chore: use `cds` class prefix in v11 styles
* build: switch to npm
* chore: set up all component styles, fonts, and themes
- Adapt documentation to new styles
* chore: add individual theme css
* feat: migrate Theme component to v11
- remove g80 theme option everywhere
- utilize new `data-carbon-theme` attribute when applying theme
- use cds instead of bx in places
* chore: use bx css prefixes for now
* chore: resolve peerDependencies
- Leaving out latest prettier for now
- Ignoring Sveld warnings for now
* chore: fix type errors and tests
---------
Co-authored-by: Gregor Wassmann <gregor.wassmann@gmail.com>
208 lines
5.8 KiB
Markdown
208 lines
5.8 KiB
Markdown
# Contributing
|
|
|
|
Before submitting a pull request (PR), consider [filing an issue](https://github.com/carbon-design-system/carbon-components-svelte/issues) to gain clarity and direction.
|
|
|
|
- [Prerequisites](#prerequisites)
|
|
- [Project set-up](#project-set-up)
|
|
- [Install](#install)
|
|
- [Documentation set-up](#documentation-set-up)
|
|
- [Development workflow](#development-workflow)
|
|
- [Component Format](#component-format)
|
|
- [Editing a component](#editing-a-component)
|
|
- [Creating a component](#creating-a-component)
|
|
- [Run `npm run build:docs`](#run-npm-run-builddocs)
|
|
- [Submit a Pull Request](#submit-a-pull-request)
|
|
- [Sync Your Fork](#sync-your-fork)
|
|
- [Submit a PR](#submit-a-pr)
|
|
|
|
## Prerequisites
|
|
|
|
- [Node.js](https://nodejs.org/en/download/package-manager/) (version >=18)
|
|
- [npm](https://docs.npmjs.com/cli) (bundled with Node.js)
|
|
|
|
## Project set-up
|
|
|
|
Fork the repo and clone your fork:
|
|
|
|
```sh
|
|
git clone <YOUR_FORK>
|
|
cd carbon-components-svelte
|
|
```
|
|
|
|
Set the original repository as the upstream:
|
|
|
|
```sh
|
|
git remote add upstream git@github.com:carbon-design-system/carbon-components-svelte.git
|
|
# verify that the upstream is added
|
|
git remote -v
|
|
```
|
|
|
|
### Install
|
|
|
|
Install the project dependencies:
|
|
|
|
```sh
|
|
# carbon-components-svelte/
|
|
npm install
|
|
```
|
|
|
|
## Documentation set-up
|
|
|
|
Component documentation is located in the `docs` folder. The website is built using svite, routify, and MDsveX. You will need to create a symbolic project link in order to see live changes reflected when developing locally.
|
|
|
|
First, create a symbolic link at the root of the project folder:
|
|
|
|
```sh
|
|
# carbon-components-svelte/
|
|
npm link
|
|
```
|
|
|
|
Go into the `docs` folder:
|
|
|
|
```sh
|
|
cd docs
|
|
```
|
|
|
|
Link `"carbon-components-svelte"`:
|
|
|
|
```sh
|
|
npm link "carbon-components-svelte"
|
|
npm install
|
|
```
|
|
|
|
If linked correctly, any change to a component in the `src` folder should be reflected in the `docs` site.
|
|
|
|
---
|
|
|
|
## Development workflow
|
|
|
|
Create a topic branch from `master`. Keep your PR focused and branch up-to-date with upstream `master`.
|
|
|
|
```sh
|
|
git checkout -b new-feature
|
|
```
|
|
|
|
Preview changes to components from the `src` folder in the documentation website located in `docs/`.
|
|
|
|
In the `docs` folder, run:
|
|
|
|
```sh
|
|
npm run dev
|
|
```
|
|
|
|
The site should be served at `http://localhost:3000/` (or the next available port).
|
|
|
|
### Component Format
|
|
|
|
Each component should adopt the following structure:
|
|
|
|
```js
|
|
src/Component
|
|
│
|
|
└───Component.svelte // main component
|
|
└───ComponentSkeleton.svelte // Skeleton component (if applicable)
|
|
└───index.js // export components
|
|
```
|
|
|
|
### Editing a component
|
|
|
|
If adding or editing an exported component prop, be sure to annotate its value using [JSDoc](https://jsdoc.app/) conventions.
|
|
|
|
```js
|
|
/**
|
|
* Specify the size of the component
|
|
* @type {"sm" | "default" | "lg"}
|
|
*/
|
|
export let size = "default";
|
|
```
|
|
|
|
### Creating a component
|
|
|
|
First, [submit an issue](https://github.com/carbon-design-system/carbon-components-svelte/issues).
|
|
|
|
If creating a new component, don't forget it from `src/index.js`:
|
|
|
|
```diff
|
|
export { CopyButton } from "./CopyButton";
|
|
export { ComboBox } from "./ComboBox";
|
|
+ export { FixedComboBox } from "./FixedComboBox";
|
|
export {
|
|
ComposedModal,
|
|
ModalHeader,
|
|
ModalBody,
|
|
ModalFooter,
|
|
} from "./ComposedModal";
|
|
```
|
|
|
|
### Run `npm run build:docs`
|
|
|
|
Run the following command to re-generate TypeScript definitions and documentation.
|
|
|
|
```sh
|
|
# carbon-components-svelte/
|
|
npm run build:docs
|
|
```
|
|
|
|
## Submit a Pull Request
|
|
|
|
### Sync Your Fork
|
|
|
|
Before submitting a pull request, make sure your fork is up to date with the latest upstream changes.
|
|
|
|
```sh
|
|
git fetch upstream
|
|
git checkout master
|
|
git merge upstream/master
|
|
```
|
|
|
|
### Submit a PR
|
|
|
|
After you've pushed your changes to remote, submit your PR. Make sure you are comparing `<YOUR_USER_ID>/feature` to `origin/master`.
|
|
|
|
## Maintainer guide
|
|
|
|
The following items only apply to project maintainers.
|
|
|
|
### Release
|
|
|
|
This library is published to NPM with [provenance](https://docs.npmjs.com/generating-provenance-statements) via a [GitHub workflow](https://github.com/carbon-design-system/carbon-components-svelte/blob/master/.github/workflows/release.yml).
|
|
|
|
The workflow is automatically triggered when pushing a tag that begins with `v` (e.g., `v0.81.1`).
|
|
|
|
However, maintainers must perform a few things in preparation for a release.
|
|
|
|
Locally, while on `master` and the branch is clean, run `npm run release`. This command will:
|
|
|
|
- Bump the semantic version in `package.json`
|
|
- Generate notes in `CHANGELOG.md`
|
|
- Run `npm run build:docs` to update the generated documentation
|
|
|
|
This command will not create a commit nor tag. Afterwards, perform the following manually:
|
|
|
|
```sh
|
|
# 1. Commit the changes using the new version as the commit message.
|
|
git commit -am "v0.81.1"
|
|
|
|
# 2. Create a tag.
|
|
git tag v0.81.1
|
|
|
|
# 3. Push the tag to the remote.
|
|
# This will trigger the `release.yml` workflow to publish a new package to NPM (with provenance).
|
|
git push origin v0.81.1
|
|
```
|
|
|
|
If all goes as expected, the [`release.yml` workflow](https://github.com/carbon-design-system/carbon-components-svelte/actions/workflows/release.yml) should trigger a new run and publish the new version to NPM.
|
|
|
|
### Post-release checklist
|
|
|
|
After confirming that the new release is published to NPM, perform the following:
|
|
|
|
1. Create a [new release](https://github.com/carbon-design-system/carbon-components-svelte/releases/new) on GitHub. Click "Generate release notes" to automatically list changes by commit with the relevant Pull Request and author metadata. You may manually remove notes that are not relevant to the release (e.g., CI changes).
|
|
|
|
2. Publish the release as the latest release.
|
|
|
|
3. As good practice, visit the Pull Request and/or issue for each commit and manually confirm that it's been released. This is helpful for future readers to understand what version includes the new feature or fix.
|
|
|
|
```md
|
|
Released in [v0.81.1](https://github.com/carbon-design-system/carbon-components-svelte/releases/tag/v0.81.1).
|
|
```
|