npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@farmzone/fz-react-ui

v1.1.15

Published

Farmzone React UI component library

Readme

@farmzone/fz-react-ui

Farmzone 사내 프로젝트에서 공통으로 쓰는 React 컴포넌트 라이브러리입니다. Tailwind CSS 기반 스타일링, Radix UI 프리미티브, tiptap 기반 리치 에디터를 포함합니다.

요구 사항

  • React >=18 / React DOM >=18
  • Node.js 20+
  • Tailwind CSS v4 (스타일을 직접 통합하는 경우)

설치

npm install @farmzone/fz-react-ui

필수 peer dependency

아래 패키지들은 peerDependencies로 선언되어 있어 직접 설치해야 합니다 (라이브러리 번들에 포함되지 않음):

npm install react react-dom lucide-react react-router
  • lucide-react — 아이콘. Sidebar, Pagination, Input, RichEditorToolbar 등 다수 컴포넌트가 사용합니다.
  • react-router — Sidebar가 내부적으로 useNavigate/useLocation을 사용합니다.

선택 peer dependency

특정 컴포넌트를 쓸 때만 필요합니다. 해당 컴포넌트를 쓰지 않으면 설치하지 않아도 됩니다.

| 패키지 | 필요한 컴포넌트 | |---|---| | react-hook-form, @hookform/resolvers, zod | SubmitForm | | react-daum-postcode | SearchAddress |

스타일 설정

두 가지 방법 중 하나를 선택합니다.

옵션 A — 컴파일된 CSS 그대로 사용 (Tailwind를 직접 쓰지 않는 프로젝트)

import "@farmzone/fz-react-ui/styles";

옵션 B — 컨슈머 프로젝트의 Tailwind v4 빌드에 통합 (권장, 트리쉐이킹됨)

/* 프로젝트의 Tailwind 진입 CSS 파일에 추가 */
@import "@farmzone/fz-react-ui/tw.css";

tw.css는 fz-react-ui의 컴파일된 JS를 @source로 스캔하고, 라이브러리 전용 색상 토큰(--color-main-red 등)을 @theme으로 노출합니다. 컨슈머 프로젝트도 Tailwind v4를 쓰고 있어야 합니다.

사용 예시

import { Button, Input, Table } from "@farmzone/fz-react-ui";
import type { Column } from "@farmzone/fz-react-ui";

function UserSearch() {
  const [name, setName] = useState("");

  return (
    <div className="flex flex-col gap-3">
      <div className="flex items-end gap-2">
        <Input label="이름" value={name} onChange={(e) => setName(e.target.value)} />
        <Button variant="search" size="sm">검색</Button>
      </div>
      <Table columns={columns as Array<Column<unknown>>} data={rows} rowKey="id" />
    </div>
  );
}

컴포넌트 조합 시 임의의 Tailwind 팔레트 클래스(bg-blue-600 등)보다 라이브러리 자체 semantic 토큰(bg-main, Button의 variant/size prop 등)을 우선 사용하세요 — 컴파일된 CSS에 없는 클래스는 조용히 무시됩니다.

컴포넌트

Form / Input Input, Textarea, Checkbox, Switch, Slider, Radio / RadioGroup, Select / SelectGroup, DatePicker, SearchBar, SearchAddress, SubmitForm, DebouncedButton

Feedback / Overlay Modal, ToastProvider (+ toast), Tooltip, Popover / SimplePopover, Empty, Loading / LoadingOverlay, Spinner, Skeleton, confirmModal

Layout / Navigation Sidebar, Tab, MultiTab, BreadCrumb, Pagination, PageFilter, ScrollArea

Data Display Table, Badge, Carousel, FilePreviewViewer, DetailModalFrame / DetailPageFrame / DetailContent

Upload BaseUploader, ExcelUploader, FileUploader

Editor RichEditor (+ RichEditorContent, RichEditorToolbar, useRichEditor) — tiptap 기반 리치 텍스트 에디터. 멘션, 테이블, 이미지, 정렬 등을 지원합니다.

Hooks useModal, useCustomBlocker, useBlockModalConfirm, useScrollToTop, useFilePreviewViewer, useParams, useMultiTabStore, useBreadCrumbItems

Utils cn, buttonVariants, textVariants, Z_INDEX

전체 export 목록과 정확한 타입은 dist/index.d.ts를 참고하세요.

로컬 개발

pnpm i --frozen-lockfile   # 이 리포는 pnpm 사용
pnpm dev                   # tsup watch 빌드
pnpm storybook              # Storybook (localhost:6006)
pnpm build                  # dist/ 전체 빌드 (JS + CSS)
pnpm lint
pnpm typecheck

배포

main 브랜치에 머지되면 GitLab CI가 npm publish를 실행합니다 (.gitlab-ci.yml). 배포 전 package.json의 version을 수동으로 올려야 합니다 — 특히 peerDependencies 변경처럼 컨슈머 쪽 설치 요구사항이 바뀌는 경우 최소 minor 버전을 올리세요.