# Shade
Ghost Design System that can be used by micro-frontends.
## Usage
Shade is consumed internally across Ghost apps. The package is currently private; when published, consumption will follow standard npm usage.
Example:
```tsx
import {Button} from '@tryghost/shade';
export function Example() {
return ;
}
```
Tailwind preset:
```js
// tailwind.config.cjs
module.exports = {
presets: [require('@tryghost/shade/tailwind')],
// your overrides...
};
```
Scoping and dark mode:
- All styles are scoped under a `.shade` container.
- Dark mode is toggled by adding `.dark` within that scope.
Wrap your surface with `ShadeApp` (includes provider and scoping):
```tsx
import ShadeApp from '@tryghost/shade';
{/* your UI */}
```
## Develop
This is a monorepo package.
Follow the instructions for the top-level repo.
1. `git clone` this repo & `cd` into it as usual
2. Run `yarn` to install top-level dependencies.
Local docs with Storybook:
- `yarn storybook` — run Storybook and view docs under `src/docs/`
- `yarn build-storybook` — build a static export
## Test
- `yarn test` — type-checks and runs Vitest with coverage
- `yarn test:unit` — type-checks and runs Vitest
- `yarn test:types` — TypeScript only
- `yarn lint` — ESLint for `src/` and `test/`
## Notes
- Utilities live at `@/lib/utils` (not `@/utils`). Use `cn(...)` to merge class names and prefer CVA for variants.
- Docs live alongside the code and are rendered via Storybook (`src/docs/*`).