elie222/inbox-zero

ui-components

UI component and styling guidelines using Shadcn UI, Radix UI, and Tailwind

First seen Feb 13, 2026

Installation

$ npx skills add elie222/inbox-zero --skill ui-components

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from elie222/inbox-zero · top by installs.

npx skills add elie222/inbox-zero

Browse all from elie222/inbox-zero

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 12.1K
License LICENSE
Default branch main
Open issues 96
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 1,396 B
  • docs SUMMARY.md 96 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 94 installs

SKILL.md

UI Components and Styling

UI Framework

  • Use Shadcn UI and Tailwind for components and styling
  • Implement responsive design with Tailwind CSS using a mobile-first approach
  • Use next/image package for images

Install new Shadcn components

pnpm dlx shadcn@latest add COMPONENT

Example:

pnpm dlx shadcn@latest add progress

Data Fetching with SWR

For API get requests to server use the swr package:

const searchParams = useSearchParams();
const page = searchParams.get("page") || "1";
const { data, isLoading, error } = useSWR<PlanHistoryResponse>(
  `/api/user/planned/history?page=${page}`
);

Loading Components

Use the LoadingContent component to handle loading states:

<Card>
  <LoadingContent loading={isLoading} error={error}>
    {data && <MyComponent data={data} />}
  </LoadingContent>
</Card>

Form Components

Text Inputs

<Input
  type="email"
  name="email"
  label="Email"
  registerProps={register("email", { required: true })}
  error={errors.email}
/>

Text Area

<Input
  type="text"
  autosizeTextarea
  rows={3}
  name="message"
  placeholder="Paste in email content"
  registerProps={register("message", { required: true })}
  error={errors.message}
/>