Your team
Invite and manage who can see this project.
- John Doejohn.doe@acme.dev
Owner - Jane Smithjane.smith@acme.dev
Editor - Alex Leealex.lee@acme.dev
Viewer
The CodeChem design system as accessible, themeable web components. Use them in React, Vue, Angular or plain HTML with a single import.
Invite and manage who can see this project.
Positions the hiring team is working on.
30 minutes with the design system team.
Billable work across all projects.
Choose what you hear about.
Set it up now, invite people later.
Standard custom elements built with Lit. No framework wrapper to install, no build plugin to configure.
change and input like on any form control.<!-- main.js: import '@codechem/components'; -->
<cc-text-input label="Work email"></cc-text-input>
<cc-switch checked>Email notifications</cc-switch>
<cc-button>Save changes</cc-button>import '@codechem/components';
export function Settings() {
return (
<form>
<cc-switch checked>Email notifications</cc-switch>
<cc-button onClick={save}>Save changes</cc-button>
</form>
);
}<!-- vite.config: isCustomElement: (tag) => tag.startsWith('cc-') -->
<template>
<cc-switch :checked="alerts" @change="alerts = $event.target.checked">
Email notifications
</cc-switch>
<cc-button @click="save">Save changes</cc-button>
</template>@Component({
selector: 'app-settings',
schemas: [CUSTOM_ELEMENTS_SCHEMA],
template: `
<cc-switch checked>Email notifications</cc-switch>
<cc-button (click)="save()">Save changes</cc-button>
`,
})
export class SettingsComponent {}Every colour, radius and surface comes from --cc-* custom properties. Override them on :root. No !important, no rebuild.
@codechem/tokens is the same Figma palette, type scale, spacing and radius as plain CSS custom properties. The components load it for you; install it on its own to style anything else.
tokens.css and every --cc-* variable is on :root.@layer cc-tokens, so your overrides win./* main.js: import '@codechem/tokens/tokens.css'; */
.card {
background: var(--cc-surface-surface-1);
color: var(--cc-text-high-emphasis);
padding: var(--cc-padding-padding-3);
border: 1px solid var(--cc-border-medium-contrast);
border-radius: var(--cc-radius);
font-family: var(--cc-typeface-typeface);
}