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 🙏

© 2024 – Pkg Stats / Ryan Hefner

navrary-modal

v0.2.4

Published

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

Downloads

4

Readme

Navrary-modal

간단한 열고 닫는 기능을 가진 모달 라이브러리입니다.

설치방법

npm install navrary-modal

사용법

⚠️ 해당 라이브러리는 styled-components & typescript를 사용합니다.

1️⃣ Basic

import { Modal } from "navrary-modal";

<Modal defaultOpen>
  <Modal.Backdrop />
  <Modal.Trigger />
  <Modal.Contents>{children}</Modal.Contents>
</Modal>;
  • 모달의 구조는 반드시 <Modal>컴포넌트가 최상위 부모가 되어야합니다.
  • <Modal>컴포넌트 하위에 있는 모든 컴포넌트들은 순서, 위치, 스타일에 구애받지 않고 자유롭게 사용될 수 있습니다.
  • 각 컴포넌트들은 children을 받을수도 & 받지 않을수도 있습니다.
  • 기본 사용 형태는 위와 같습니다.

2️⃣ Options ( Optional )

function Outside() {
  const [isOpen, setIsOpen] = usestate(false);

  function openModal() {
    setIsOpen(true);
  }

  function closeModal() {
    setIsOpen(false);
  }

  return (
    <Modal modalState={{ isOpen, openModal, closeModal }}>{children}</Modal>
  );
}
  • modalState : 모달의 열림 & 닫힘 상태가 모달 컴포넌트 외부와 공유되어야 할 때 해당 상태를 컴포넌트에 넣어줄 수 있습니다. 전달하는 외부상태는 반드시 { isOpen : 모달이 열렸는지의 여부, openModal : 모달을 여는 함수, closeModal : 모달을 닫는 함수 } 형태여아합니다.
function Outside() {
  return <Modal defaultOpen>{children}</Modal>;
}
  • defaultOpen : 모달이 trigger에 의해서가 아닌 자동으로 열리게 설정하고싶을 때 해당 옵션을 컴포넌트에 넣어줄 수 있습니다.

  • asChild : 컴포넌트의 스타일을 커스텀할 수 있는 옵션입니다. 이 옵션은 반드시 children과 함께 사용되어야 합니다. (3️⃣ 설명 참고)

3️⃣ Custom Style

모든 Modal의 하위 컴포넌트들은 props의 전달 없이 asChild 옵션을 통해 모든 스타일 커스텀이 가능합니다. (Trigger button의 스타일 커스텀의 예)

function Outside() {
  return (
    <Modal>
      <Modal.Trigger asChild>
        <CustomedTrigger />
      </Modal.Trigger>
    </Modal>
  );
}

const CustomedTrigger = styled.button`
  background-color: "yellow";
`;

위와같이 <Modal.Trigger>의 자식으로 스타일링 된 Trigger을 생성한 뒤, <Modal.Trigger> 컴포넌트에 asChild 속성을 줍니다. 그렇다면 스탕일링 된 Trigger 컴포넌트는 기존 <Modal.Trigger> 컴폰너트와 똑같은 기능을 수행할 수 있습니다. ⚠️ 이때 스타일링 된 자식 컴포넌트는 반드시 1개여아합니다.

// ❌ERROR❌

function Outside() {
  return (
    <Modal>
      <Modal.Trigger asChild>
        <YellowTrigger />
        <RedTrigger />
      </Modal.Trigger>
    </Modal>
  );
}

const YellowTrigger = styled.button`
  background-color: "yellow";
`;

const RedTrigger = styled.button`
  background-color: "red";
`;

//⭕️GOOD⭕️

function Outside() {
  return (
    <Modal>
      <Modal.Trigger asChild>
        <YellowTrigger>
          <SubStyle />
        </YellowTrigger>
      </Modal.Trigger>
    </Modal>
  );
}

const YellowTrigger = styled.button`
  background-color: "yellow";
`;

const SubStyle = styled.button`
  background-color: "red";
`;