@algolia/satellite
Version:
Algolia design system React components
170 lines (123 loc) • 4.01 kB
Markdown
# Satellite

[Library documentation](https://satellite.algolia.com/) | [NPM](https://www.npmjs.com/package/@algolia/satellite) | [Storybook](https://satellite-storybook.algolia.com/) | [Figma](https://www.figma.com/file/99l59il97k2n5y4n6Jucal/%5BSatellite%5D-Components)
## Installation
```sh
yarn add /satellite
```
## Quick start
```js
import React from "react";
import ReactDOM from "react-dom";
import "@algolia/satellite/satellite.min.css";
import { Satellite, Button } from "@algolia/satellite";
const App = () => (
<Satellite>
<Button>Hurray!</Button>
</Satellite>
);
ReactDOM.render(<App />, document.getElementById("root"));
```
## Usage
### Integrating it on an existing project
You can import `/satellite/satellite.min.css` before the rest of your styles. It contains a slightly modified version of `normalize.css` as well as the style for the library's components.
If you use scss and want to reuse the colors to build custom components, they are available in `/satellite/styles/scss/colors.scss`.
If you use some form of css-in-js library and want to reuse the colors to build custom components, they are available in `/satellite/styles/scss/colors.scss`
### I want to build a quick prototype
You can import `/satellite/satellite.css` before the rest of your styles. It contains all the classes generated by the library's tailwind config, unpurged. The classes are prefixed with `stl-`. It is recommended to use the `stl` tag template function available in `/satellite;`
Please refer to the official documentation to see which classes are available
https://tailwindcss.com/
<!-- TODO: quick description of the custom theme (colors, opacities etc) -->
```jsx
import React from "react";
import ReactDOM from "react-dom";
import "@algolia/satellite/satellite.min.css";
import { Satellite, Button, stl } from "@algolia/satellite";
const loading = true;
const App = () => (
<Satellite>
<div
className={stl`
flex flex-col m-4
${loading && "hidden"}
`}
>
<Button className={stl`mb-2`}>Clap your hands!</Button>
<Button>Hurray!</Button>
</div>
</Satellite>
);
ReactDOM.render(<App />, document.getElementById("root"));
```
### [ADVANCED] I want to use tailwind directly
First install tailwindcss
```sh
yarn add -D tailwindcss
```
Example `main.css`
```css
base;
components;
utilities;
components {
/* your custom components */
}
```
Example `postcss.config.js`
```js
// ...
const plugins = [
require("postcss-import"),
require("tailwindcss")(tailwindConfig),
require("autoprefixer"),
cssnano({ preset: "default" }),
];
module.exports = { plugins };
```
Example `tailwind.config.js`
```js
const { makePurgeCssExtractor } = require('/satellite');
const satelliteConfig = require("@algolia/satellite/cjs/styles/tailwind.config.js");
module.exports = {
presets: [satelliteConfig],
content: [
files: [
`node_modules/@algolia/satellite/**/*.js`,
`node_modules/react-day-picker/lib/style.css`,
`node_modules/react-day-picker/src/**/*.js`,
`src/**/*.{ts,tsx,js,jsx}`,
// Any other sources files
],
extract: makePurgeCssExtractor(prefix),
],
theme: {
extend: {
// any colors, fonts... you want to add
}
},
plugins: [
// extra plugins you want to add
]
};
```
Example `index.jsx`
```jsx
import React from "react";
import ReactDOM from "react-dom";
import "./main.css";
import { Satellite, Button, stl } from "@algolia/satellite";
const loading = true;
const App = () => (
<Satellite>
<div
className={stl`
flex items-center justify-center
${loading && "hidden"}
`}
>
<Button>Hurray!</Button>
</div>
</Satellite>
);
ReactDOM.render(<App />, document.getElementById("root"));
```