Introducing Nerdfishui - a custom component library built with React and TailwindCSS to help streamline proof of concept development and provide visually pleasing and functional components. Nerdfishui is the perfect tool for developers who want to quickly create stunning and user-friendly interfaces.
It's an opinionated library, so you might not agree with all the design, but you can add your own styles to the components.
It's mainly radix-ui primitives with some custom styling, with strong inspiration from https://ui.shadcn.com
To install the component-library run the following within your project directory.
npm
npm install @nerdfish/theme @nerdfish/tailwind-config @nerdfish/ui postcss tailwindcss @tailwindcss/typography lucide-react tailwindcss-animate
yarn
yarn add @nerdfish/theme @nerdfish/tailwind-config @nerdfish/ui postcss tailwindcss @tailwindcss/typography lucide-react tailwindcss-animate
npm
pnpm add @nerdfish/theme @nerdfish/tailwind-config @nerdfish/ui postcss tailwindcss @tailwindcss/typography lucide-react tailwindcss-animate
The theme of this library depends on the @tailwindcss/typography plugin. To use it, follow the steps on the plugin source page. https://github.com/tailwindlabs/tailwindcss-typography For animations, you need to install the tailwindcss-animate plugin.
// tailwind.config.js
module.exports = {
mode: "jit",
content: [
// ... paths that use tailwind
"./node_modules/@nerdfish/**/*.{js,ts,jsx,tsx}", // path to nerdfishui
],
theme: {
extend: {},
},
plugins: [
require('tailwindcss-animate'),
require('@tailwindcss/typography'),
require("@nerdfish/tailwind-config"),
],
};
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
Then you need a global css file which you import at the root of the project
@tailwind base;
@tailwind components;
@tailwind utilities;
import * as React from "react";
import { ThemeProvider, H1 } from "@nerdfish/ui";
import "@nerdfish/theme/dist/nerdfishui.css"
function App() {
return (
<ThemeProvider>
<H1>Hello Nerdfish</H1>
</ThemeProvider>
);
}
pnpm build
- Build all packages, including the docspnpm dev
- Run all packages locally and preview the docspnpm validate
- Lint all packagespnpm changeset
- Generate a changesetpnpm clean
- Clean up allnode_modules
anddist
folders (runs each package's clean script)
The docs are built with NextJS and MDX. The docs are located in the apps/docs
folder.
To run the docs locally, run pnpm dev
from the root of the project. This will run the dev
script defined in the root package.json
:
pnpm dev
This example uses Changesets to manage versions, create changelogs, and publish to npm. It's preconfigured so you can start publishing packages immediately.
You'll need to create an NPM_TOKEN
and GITHUB_TOKEN
and add it to your GitHub repository settings to enable access to npm. It's also worth installing the Changesets bot on your repository.
To generate your changelog, run pnpm changeset
locally:
- Which packages would you like to include? – This shows which packages and changed and which have remained the same. By default, no packages are included. Press
space
to select the packages you want to include in thechangeset
. - Which packages should have a major bump? – Press
space
to select the packages you want to bump versions for. - If doing the first major version, confirm you want to release.
- Write a summary for the changes.
- Confirm the changeset looks as expected.
- A new Markdown file will be created in the
changeset
folder with the summary and a list of the packages included.
When you push your code to GitHub, the GitHub Action will run the release
script defined in the root package.json
:
turbo run build --filter=docs^... && changeset publish