@kusitms/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/Accordion/Accordion.tsx","../src/components/Label/Label.tsx","../src/components/Blog/Blog.tsx","../src/components/BottomGradient.tsx","../src/components/Button/Button.tsx","../src/components/Button/NavigationButton.tsx","../src/components/Button/PageNavButton.tsx","../src/components/Button/ScrollTopButton.tsx","../src/components/Card/RecruitmentCard.tsx","../src/components/Card/ReviewCard.tsx","../src/components/Card/ShowcaseCard.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/EmailInput/EmailInput.tsx","../src/components/Footer/Footer.tsx","../src/components/Header/Header.tsx","../src/components/HeaderNavigation/HeaderNavigation.tsx","../src/components/List/List.tsx","../src/components/Modal/Modal.tsx","../src/components/NavigationFilter/NavigationFilter.tsx","../src/components/NavigationTab/NavigationTab.tsx","../src/components/Pagination/Pagination.tsx"],"names":["jsx","RadixAccordion","useRef","useState","useEffect","jsxs","ToggleOpenSIcon","Fragment","ArrowRightIcon","ArrowRightMIcon","RightSIcon","RadixSelect","useCallback","Children","isValidElement","Header","useId","SnowGraphic","BehanceIcon","GithubIcon","LinkIcon","Icon","CancelMIcon","cloneElement","KeyboardArrowLeftIcon","KeyboardArrowRightIcon","KeyboardDoubleArrowLeftIcon","KeyboardDoubleArrowRightIcon"],"mappings":"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","file":"index.cjs","sourcesContent":["export function cn(...values: Array<string | undefined | false>) {\n return values.filter(Boolean).join(\" \")\n}\n","\"use client\"\n\nimport { ToggleOpenSIcon } from \"@kusitms/icons\"\nimport * as RadixAccordion from \"@radix-ui/react-accordion\"\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\"\nimport { cn } from \"../../utils/cn\"\n\ntype RadixRootProps = ComponentPropsWithoutRef<typeof RadixAccordion.Root>\n\nexport type AccordionProps = Omit<RadixRootProps, \"asChild\"> & {\n collapsible?: boolean\n}\n\nfunction AccordionRoot({ className, children, ...props }: AccordionProps) {\n return (\n <RadixAccordion.Root\n className={cn(\"flex w-full flex-col gap-2 lg:gap-3\", className)}\n {...(props as RadixRootProps)}\n >\n {children}\n </RadixAccordion.Root>\n )\n}\n\nexport type AccordionItemProps = {\n value: string\n question: ReactNode\n answer: ReactNode\n className?: string\n}\n\nfunction AccordionItem({\n value,\n question,\n answer,\n className,\n}: AccordionItemProps) {\n const itemRef = useRef<HTMLDivElement>(null)\n const innerRef = useRef<HTMLDivElement>(null)\n const [isOpen, setIsOpen] = useState(false)\n const [height, setHeight] = useState(0)\n\n useEffect(() => {\n const item = itemRef.current\n if (!item) return\n\n const update = () => {\n const open = item.getAttribute(\"data-state\") === \"open\"\n setIsOpen(open)\n setHeight(open ? (innerRef.current?.scrollHeight ?? 0) : 0)\n }\n\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(item, {\n attributes: true,\n attributeFilter: [\"data-state\"],\n })\n return () => observer.disconnect()\n }, [])\n\n return (\n <RadixAccordion.Item\n ref={itemRef}\n value={value}\n className={cn(\n \"w-full bg-fill-netural\",\n \"rounded-2xl px-5 py-4\",\n \"lg:rounded-5 lg:px-10 lg:py-8\",\n className,\n )}\n >\n <RadixAccordion.Header className=\"flex\">\n <RadixAccordion.Trigger\n className={cn(\n \"group flex w-full cursor-pointer items-center justify-between gap-2 text-left outline-none\",\n \"focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-brand-primary/40\",\n )}\n >\n <span className=\"flex min-w-0 flex-1 items-start gap-1 lg:items-center lg:gap-2\">\n <span className=\"shrink-0 text-center text-body-18sb text-brand-primary lg:w-5.75 lg:pb-1 lg:text-headline-24sb\">\n Q.\n </span>\n <span className=\"min-w-0 flex-1 pt-0.5 text-body-16m text-label-normal lg:pt-0 lg:text-headline-24sb\">\n {question}\n </span>\n </span>\n <ToggleOpenSIcon\n aria-hidden\n className={cn(\n \"shrink-0 text-label-normal transition-transform duration-200\",\n \"size-5 lg:size-6\",\n \"group-data-[state=open]:-rotate-180\",\n )}\n />\n </RadixAccordion.Trigger>\n </RadixAccordion.Header>\n\n <RadixAccordion.Content forceMount>\n <div\n style={{\n height,\n overflow: \"hidden\",\n opacity: isOpen ? 1 : 0,\n transition: [\n `height ${isOpen ? 300 : 500}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n `opacity ${isOpen ? 200 : 400}ms`,\n ].join(\", \"),\n }}\n >\n <div\n ref={innerRef}\n className=\"whitespace-pre-line pt-3 text-body-16r text-label-netural lg:text-headline-20r\"\n >\n {answer}\n </div>\n </div>\n </RadixAccordion.Content>\n </RadixAccordion.Item>\n )\n}\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n})\n","import type { HTMLAttributes, PropsWithChildren, ReactNode } from \"react\"\nimport { cn } from \"../../utils/cn\"\n\ntype LabelType = \"brand\" | \"secondary\" | \"default\"\n\nexport type LabelProps = PropsWithChildren<\n HTMLAttributes<HTMLSpanElement> & {\n type?: LabelType\n description?: ReactNode\n className?: string\n }\n>\n\nfunction getChipClasses(type: \"brand\" | \"secondary\") {\n switch (type) {\n case \"brand\":\n return cn(\n \"inline-flex items-center justify-center rounded px-4 py-1\",\n \"bg-fill-primary text-brand-primary text-label-14sb whitespace-nowrap lg:w-16 lg:h-8\",\n )\n case \"secondary\":\n return cn(\n \"inline-flex items-center justify-center rounded-md px-3 py-1\",\n \"bg-fill-netural text-label-alternative\",\n \"text-caption-12sb lg:text-label-14sb whitespace-nowrap\",\n )\n }\n}\n\nexport function Label({\n children,\n className,\n type = \"brand\",\n description,\n ...props\n}: LabelProps) {\n if (type === \"default\") {\n return (\n <span\n className={cn(\"inline-flex self-start items-center gap-2.5\", className)}\n {...props}\n >\n <span\n className={cn(\n \"inline-flex h-7.5 w-20 items-center justify-center rounded-sm bg-fill-netural\",\n \"text-label-normal text-label-14sb whitespace-nowrap\",\n )}\n >\n {children}\n </span>\n {description != null && description !== \"\" && (\n <span className=\"text-label-alternative text-label-14m whitespace-nowrap\">\n {description}\n </span>\n )}\n </span>\n )\n }\n\n return (\n <span\n className={cn(getChipClasses(type), \"self-start\", className)}\n {...props}\n >\n {children}\n </span>\n )\n}\n","import { Label } from \"../Label/Label\"\n\nexport type BlogProps = {\n imageUrl: string\n title: string\n content: string\n labels: string[]\n}\n\nexport function Blog({ imageUrl, title, content, labels }: BlogProps) {\n return (\n <div className=\"flex w-full flex-row gap-3 lg:gap-7 pb-5 lg:pb-8 px-4 lg:pr-8 lg:pl-0\">\n <div className=\"size-26 lg:w-60 lg:h-41 rounded-lg bg-fill-netural shrink-0 self-stretch overflow-hidden\">\n <img\n src={imageUrl}\n alt={title}\n className=\"block h-full w-full object-cover\"\n />\n </div>\n <div className=\"flex min-w-0 flex-col gap-2 lg:gap-4 py-1\">\n <div className=\"flex flex-col gap-0.5 lg:gap-1\">\n <p className=\"text-body-16b text-label-netural lg:text-headline-20b line-clamp-1\">\n {title}\n </p>\n <p className=\"h-10 lg:h-13 text-label-14m text-label-alternative lg:text-body-16m line-clamp-2\">\n {content}\n </p>\n </div>\n {labels.length > 0 && (\n <div className=\"flex flex-row flex-wrap gap-1 lg:gap-2\">\n {labels.map((label) => (\n <Label key={label} type=\"secondary\">\n {label}\n </Label>\n ))}\n </div>\n )}\n </div>\n </div>\n )\n}\n","import type { HTMLAttributes } from \"react\"\n\nexport type BottomGradientProps = HTMLAttributes<HTMLDivElement> & {\n height?: number\n}\n\nexport function BottomGradient({\n height = 54,\n className,\n style,\n ...props\n}: BottomGradientProps) {\n return (\n <div\n className={`absolute bottom-0 left-1/2 -translate-x-1/2 w-full pointer-events-none ${className ?? \"\"}`}\n style={{ height: `${height}px`, ...style }}\n {...props}\n >\n <div className=\"absolute inset-0 bg-linear-to-b from-transparent to-white rounded-b-2xl\" />\n </div>\n )\n}\n","import { ArrowRightIcon, ArrowRightMIcon } from \"@kusitms/icons\"\nimport type { ButtonHTMLAttributes, PropsWithChildren } from \"react\"\nimport { cn } from \"../../utils/cn\"\n\nexport type ButtonProps = PropsWithChildren<\n ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string\n showIcon?: boolean\n }\n>\n\nexport function Button({\n children,\n className,\n disabled,\n showIcon = true,\n ...props\n}: ButtonProps) {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"group relative overflow-hidden inline-flex items-center justify-center rounded-full transition-colors\",\n \"py-2 px-3 gap-1 lg:px-6 lg:gap-2\",\n disabled\n ? \"text-label-14r lg:text-body-18m bg-fill-alternative text-label-light cursor-not-allowed\"\n : \"text-label-14m lg:text-body-18sb bg-brand-primary text-label-contrast cursor-pointer\",\n className,\n )}\n {...props}\n >\n {!disabled && (\n <span className=\"pointer-events-none absolute inset-0 bg-white/0 transition-colors group-hover:bg-white/25 group-active:bg-black/8\" />\n )}\n <span className={showIcon ? \"pl-2\" : undefined}>{children}</span>\n {showIcon && (\n <>\n <ArrowRightIcon\n className={cn(\n \"size-5 shrink-0 lg:hidden\",\n disabled ? \"text-label-light\" : \"text-label-contrast\",\n )}\n />\n <ArrowRightMIcon\n className={cn(\n \"size-6 shrink-0 hidden lg:block\",\n disabled ? \"text-label-light\" : \"text-label-contrast\",\n )}\n />\n </>\n )}\n </button>\n )\n}\n","import { RightSIcon } from \"@kusitms/icons\"\nimport type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from \"react\"\nimport { cn } from \"../../utils/cn\"\n\nexport type NavigationButtonProps = PropsWithChildren<\n ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string\n icon?: ReactNode\n showArrow?: boolean\n }\n>\n\nexport function NavigationButton({\n children,\n className,\n icon,\n showArrow = true,\n ...props\n}: NavigationButtonProps) {\n return (\n <button\n type=\"button\"\n className={cn(\n \"group relative inline-flex items-center overflow-hidden rounded-lg bg-fill-netural pl-3 pr-2 py-2 gap-2 text-label-netural transition-colors cursor-pointer\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute inset-0 rounded-lg bg-transparent transition-colors group-hover:bg-interaction-hover-inverse\" />\n {icon ? (\n <span className=\"relative z-10 inline-flex size-5 shrink-0 items-center justify-center overflow-hidden\">\n {icon}\n </span>\n ) : null}\n <span\n className={cn(\n \"relative z-10 flex-1 text-left text-body-16m\",\n !showArrow && \"pr-1\",\n )}\n >\n {children}\n </span>\n {showArrow ? (\n <RightSIcon\n aria-hidden=\"true\"\n className=\"relative z-10 size-5 shrink-0 text-label-alternative\"\n />\n ) : null}\n </button>\n )\n}\n","import { RightSIcon } from \"@kusitms/icons\"\nimport type { ButtonHTMLAttributes } from \"react\"\nimport { cn } from \"../../utils/cn\"\n\ntype PageNavButtonColor = \"light\" | \"dark\"\ntype PageNavButtonDirection = \"prev\" | \"next\"\n\nexport type PageNavButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n color?: PageNavButtonColor\n direction?: PageNavButtonDirection\n className?: string\n}\n\nexport function PageNavButton({\n className,\n color = \"light\",\n direction = \"next\",\n ...props\n}: PageNavButtonProps) {\n return (\n <button\n type=\"button\"\n aria-label={\n direction === \"next\" ? \"다음 페이지로 이동\" : \"이전 페이지로 이동\"\n }\n className={cn(\n \"group relative inline-flex items-center justify-center overflow-hidden rounded-full transition-colors cursor-pointer\",\n \"size-9 lg:size-13\",\n color === \"light\"\n ? \"bg-fill-transparent-white text-static-white\"\n : \"bg-fill-transparent-black text-static-white\",\n direction === \"prev\" ? \"rotate-180\" : undefined,\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute inset-0 rounded-full bg-transparent transition-colors group-active:bg-interaction-pressed\" />\n <RightSIcon className=\"relative z-10 size-7 lg:size-10 translate-x-px\" />\n </button>\n )\n}\n","import { ArrowRightIcon } from \"@kusitms/icons\"\nimport type { ButtonHTMLAttributes } from \"react\"\nimport { cn } from \"../../utils/cn\"\n\nexport type ScrollTopButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string\n}\n\nexport function ScrollTopButton({ className, ...props }: ScrollTopButtonProps) {\n return (\n <button\n type=\"button\"\n aria-label=\"맨 위로 이동\"\n className={cn(\n \"group relative inline-flex items-center justify-center overflow-hidden rounded-full border transition-colors cursor-pointer\",\n \"size-10 lg:size-12\",\n \"border-line-neutral bg-fill-normal text-static-black active:bg-interaction-pressed\",\n className,\n )}\n {...props}\n >\n <ArrowRightIcon aria-hidden className=\"-rotate-90 size-5 lg:size-6\" />\n </button>\n )\n}\n","import type { SVGProps } from \"react\"\n\ntype RecruitmentCardType = \"default\" | \"titled\"\n\nexport type RecruitmentCardProps = {\n type: RecruitmentCardType\n graphic: React.ComponentType<SVGProps<SVGSVGElement>>\n title?: string\n description: string\n}\n\ntype VariantStyle = {\n container: string\n content: (\n props: Pick<RecruitmentCardProps, \"title\" | \"description\">,\n ) => React.ReactNode\n}\n\nconst variantStyles: Record<RecruitmentCardType, VariantStyle> = {\n default: {\n container: \"w-75 gap-5 px-4 pt-7 pb-9.5 pt-8.5 lg:pb-8.5 lg:pt-7.5\",\n content: ({ description }) => (\n <p className=\"text-label-14sb text-label-normal lg:text-body-16sb text-center whitespace-pre-line\">\n {description}\n </p>\n ),\n },\n titled: {\n container: \"w-75 lg:w-55 gap-5 px-4 py-5 lg:pb-6.5\",\n content: ({ title, description }) => (\n <div className=\"flex flex-col items-center gap-5 text-center lg:gap-4.5\">\n <div className=\"flex flex-col gap-3 lg:gap-2.5\">\n <p className=\"text-brand-primary text-body-16b lg:text-body-18b\">\n {title}\n </p>\n <div className=\"w-3.5 h-[1.5px] bg-line-normal rounded-full mx-auto\" />\n <p className=\"text-label-normal text-label-14m whitespace-pre-line\">\n {description}\n </p>\n </div>\n </div>\n ),\n },\n}\n\nexport function RecruitmentCard({\n type,\n graphic: Graphic,\n title,\n description,\n}: RecruitmentCardProps) {\n const { container, content } = variantStyles[type]\n\n return (\n <div\n className={`flex flex-col items-center rounded-2xl bg-fill-primary ${container}`}\n >\n <div className=\"flex size-20 shrink-0 items-center justify-center rounded-full bg-fill-normal\">\n <Graphic />\n </div>\n {content({ title, description })}\n </div>\n )\n}\n","export type ReviewCardProps = {\n name: string\n part: string\n body: string\n}\n\nexport function ReviewCard({ name, part, body }: ReviewCardProps) {\n return (\n <div className=\"w-72 lg:w-76 flex flex-col rounded-2xl bg-fill-primary p-5\">\n <p className=\"text-body-16b text-label-normal pb-1 lg:text-body-18b\">\n {name}\n </p>\n <p className=\"text-label-14sb text-brand-primary pb-3\">{part}</p>\n <p className=\"text-label-14m text-label-netural\">{body}</p>\n </div>\n )\n}\n","type ShowcaseCardType = \"WEB\" | \"APP\"\n\nexport type ShowcaseCardProps = {\n name: string\n description: string\n th: number\n isMeetup?: boolean\n type: ShowcaseCardType\n imageUrl: string\n}\n\nexport function ShowcaseCard({\n name,\n description,\n th,\n isMeetup = false,\n type,\n imageUrl,\n}: ShowcaseCardProps) {\n return (\n <div className=\"flex w-85.75 lg:w-96 shrink-0 self-start flex-col rounded-2xl bg-fill-normal shadow-[0_1px_10px_0_rgba(179,179,188,0.25)]\">\n <div className=\"h-47.5 lg:h-64 w-full shrink-0 overflow-hidden rounded-t-2xl bg-fill-alternative\">\n <img\n src={imageUrl}\n alt={name}\n className=\"block h-full w-full object-cover\"\n />\n </div>\n <div className=\"flex flex-col px-4 pt-4 pb-4.5 lg:px-5 lg:pb-5\">\n <div className=\"flex items-center gap-1.5 mb-1\">\n <span className=\"text-label-14b text-brand-primary lg:text-body-18b\">\n {th}기\n </span>\n {isMeetup && (\n <div className=\"flex flex-row gap-1.25 text-label-assitive text-caption-12r\">\n <span>·</span>\n <span className=\"lg:text-body-16m\">{type}</span>\n </div>\n )}\n </div>\n <p className=\"text-label-netural text-body-16b mb-0.5 lg:text-headline-20b\">\n {name}\n </p>\n <div className=\"h-10 lg:h-13 overflow-hidden shrink-0\">\n <p className=\"text-label-14m text-label-alternative lg:text-body-18m line-clamp-2\">\n {description}\n </p>\n </div>\n </div>\n </div>\n )\n}\n","\"use client\"\n\nimport { ToggleOpenSIcon } from \"@kusitms/icons\"\nimport * as RadixSelect from \"@radix-ui/react-select\"\nimport { cn } from \"../../utils/cn\"\n\nexport type DropdownOption = {\n value: string\n label: string\n}\n\nexport type DropdownProps = {\n options: DropdownOption[]\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n}\n\nexport function Dropdown({\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = \"선택\",\n disabled = false,\n className,\n}: DropdownProps) {\n return (\n <RadixSelect.Root\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <RadixSelect.Trigger\n className={cn(\n \"group flex cursor-pointer items-center gap-x-2 bg-fill-normal outline-none\",\n \"border border-line-neutral\",\n \"rounded-md py-1.5 pl-3 pr-2\",\n \"lg:rounded-lg lg:py-2.5 lg:pl-5 lg:pr-4\",\n \"text-label-14sb lg:text-body-18sb text-label-light\",\n \"disabled:cursor-not-allowed disabled:opacity-40\",\n className,\n )}\n aria-label={placeholder}\n >\n <RadixSelect.Value placeholder={placeholder} />\n <RadixSelect.Icon asChild>\n <ToggleOpenSIcon\n className={cn(\n \"shrink-0 text-label-light transition-transform duration-200\",\n \"size-4 lg:size-5\",\n \"group-data-[state=open]:-rotate-180\",\n )}\n />\n </RadixSelect.Icon>\n </RadixSelect.Trigger>\n\n <RadixSelect.Portal>\n <RadixSelect.Content\n position=\"popper\"\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[var(--radix-select-trigger-width)]\",\n \"bg-fill-normal rounded-lg p-1\",\n \"shadow-[0px_1px_10px_rgba(179,179,188,0.25)]\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n )}\n >\n <RadixSelect.Viewport>\n {options.map((option) => (\n <RadixSelect.Item\n key={option.value}\n value={option.value}\n className={cn(\n \"flex cursor-pointer items-center rounded-md outline-none select-none\",\n \"text-label-alternative text-label-14m lg:text-body-18m\",\n \"p-2 lg:px-3 lg:py-2\",\n \"data-[state=checked]:text-brand-primary data-[state=checked]:text-label-14sb lg:data-[state=checked]:text-body-18sb\",\n \"data-[highlighted]:bg-fill-netural data-[highlighted]:outline-none\",\n )}\n >\n <RadixSelect.ItemText>{option.label}</RadixSelect.ItemText>\n </RadixSelect.Item>\n ))}\n </RadixSelect.Viewport>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n </RadixSelect.Root>\n )\n}\n","import type {\n ButtonHTMLAttributes,\n InputHTMLAttributes,\n KeyboardEvent,\n} from \"react\"\n\nimport { cn } from \"../../utils/cn\"\nimport { Button } from \"../Button/Button\"\n\nexport type EmailInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\" | \"size\" | \"type\"\n> & {\n value: string\n onChange: (value: string) => void\n onSubmit?: (value: string) => void\n validate?: (value: string) => boolean\n buttonLabel?: string\n buttonProps?: Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"onClick\" | \"disabled\" | \"type\"\n >\n className?: string\n}\n\nexport function EmailInput({\n value,\n onChange,\n onSubmit,\n validate,\n buttonLabel = \"알림 받기\",\n buttonProps,\n disabled,\n className,\n placeholder = \"이메일을 입력하세요\",\n ...inputProps\n}: EmailInputProps) {\n const canSubmit = !disabled && (validate ? validate(value) : value.length > 0)\n\n const handleSubmit = () => {\n if (!canSubmit) return\n onSubmit?.(value)\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault()\n handleSubmit()\n }\n }\n\n return (\n <div\n className={cn(\n \"flex items-center rounded-full bg-fill-netural\",\n \"w-full gap-1 py-2 pl-5 pr-2.5 min-w-72\",\n \"lg:w-163 lg:gap-2 lg:py-3 lg:pl-7 lg:pr-5\",\n className,\n )}\n >\n <input\n type=\"email\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none\",\n \"text-label-strong placeholder:text-label-alternative\",\n \"disabled:cursor-not-allowed\",\n \"text-body-16m lg:text-headline-20m\",\n )}\n {...inputProps}\n />\n <Button\n showIcon={false}\n disabled={!canSubmit}\n onClick={handleSubmit}\n className=\"shrink-0\"\n {...buttonProps}\n >\n {buttonLabel}\n </Button>\n </div>\n )\n}\n","import type { HTMLAttributes, ReactNode } from \"react\"\n\nimport { cn } from \"../../utils/cn\"\n\nexport type FooterProps = HTMLAttributes<HTMLElement> & {\n logo?: ReactNode\n mobileLogo?: ReactNode\n links?: ReactNode\n contactIcons?: ReactNode\n copyright?: string\n scrollTopButton?: ReactNode\n bylawsHref?: string\n bylawsLabel?: string\n}\n\nconst defaultBylawsLink = (\n device: \"desktop\" | \"mobile\",\n href?: string,\n label = \"학회정관\",\n) => {\n const className = cn(\n \"font-sans not-italic text-label-normal\",\n device === \"desktop\" ? \"text-body-16sb\" : \"text-caption-12r\",\n )\n\n if (!href) {\n return <span className={className}>{label}</span>\n }\n\n return (\n <a className={`${className} underline decoration-solid`} href={href}>\n {label}\n </a>\n )\n}\n\nexport function Footer({\n logo,\n mobileLogo,\n links,\n contactIcons,\n copyright = \"KUSITMS (큐시즘, 한국대학생IT경영학회)\\n© 2023.KUSITMS. ALL rights reserved.\",\n scrollTopButton,\n bylawsHref,\n bylawsLabel = \"학회정관\",\n className,\n ...props\n}: FooterProps) {\n return (\n <footer className={cn(\"w-full\", \"bg-fill-normal\", className)} {...props}>\n <div className=\"hidden w-full flex-col items-center justify-center px-10 pb-15 lg:flex\">\n <div className=\"flex w-full items-end justify-between\">\n <div className=\"flex w-68.5 flex-col items-start\">\n <div className=\"flex flex-col items-start pb-10 pt-15\">{logo}</div>\n <div className=\"flex w-full pb-3\">\n {links ?? defaultBylawsLink(\"desktop\", bylawsHref, bylawsLabel)}\n </div>\n <p className=\"whitespace-pre-wrap font-sans text-body-16sb text-label-normal\">\n {copyright}\n </p>\n </div>\n <div className=\"flex shrink-0 flex-col items-start gap-5\">\n <p className=\"w-full font-sans text-body-16sb text-label-normal\">\n Contact\n </p>\n <div className=\"flex items-center gap-5\">{contactIcons}</div>\n </div>\n </div>\n </div>\n <div className=\"flex w-full flex-col items-center justify-center px-4 pb-15 lg:hidden\">\n <div className=\"flex w-full flex-col items-start\">\n <div className=\"flex w-full flex-col items-start\">\n <div className=\"flex w-full items-start justify-between gap-4\">\n <div className=\"flex min-w-0 flex-1 flex-col items-start\">\n <div className=\"pb-4 pt-15\">{mobileLogo ?? logo}</div>\n <div className=\"pb-2\">\n {links ??\n defaultBylawsLink(\"mobile\", bylawsHref, bylawsLabel)}\n </div>\n <p className=\"w-full whitespace-pre-wrap font-sans text-caption-12r text-label-normal\">\n {copyright}\n </p>\n </div>\n <div className=\"shrink-0 pt-13\">{scrollTopButton}</div>\n </div>\n </div>\n <div className=\"flex w-full flex-col items-start gap-2 pt-7\">\n <p className=\"w-full font-sans text-body-16sb text-label-normal\">\n Contact\n </p>\n <div className=\"flex w-full flex-wrap items-center gap-1.5\">\n {contactIcons}\n </div>\n </div>\n </div>\n </div>\n </footer>\n )\n}\n","import {\n Children,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n type ReactNode,\n type TransitionEvent,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\"\n\nimport { cn } from \"../../utils/cn\"\n\nexport type HeaderProps = HTMLAttributes<HTMLElement> & {\n logo?: ReactNode\n children?: ReactNode\n mobileLogo?: ReactNode\n menuIcon?: ReactNode\n closeIcon?: ReactNode\n isOpen?: boolean\n defaultOpen?: boolean\n onOpenChange?: (isOpen: boolean) => void\n menuId?: string\n}\n\ntype NavigationChildProps = {\n children?: ReactNode\n href?: string\n onClick?: () => void\n}\n\nfunction HeaderMobileBar({\n logo,\n menuIcon,\n closeIcon,\n isOpen,\n onToggle,\n menuId,\n}: {\n logo?: ReactNode\n menuIcon?: ReactNode\n closeIcon?: ReactNode\n isOpen: boolean\n onToggle: () => void\n menuId: string\n}) {\n return (\n <div className=\"flex h-17.25 w-full items-center justify-between bg-fill-normal px-4 py-5\">\n <div className=\"shrink-0\">{logo}</div>\n <button\n type=\"button\"\n className={cn(\n \"flex size-6 shrink-0 items-center justify-center transition-transform duration-200\",\n isOpen && \"rotate-90\",\n )}\n onClick={onToggle}\n aria-controls={menuId}\n aria-expanded={isOpen}\n aria-label={isOpen ? \"Close navigation menu\" : \"Open navigation menu\"}\n >\n {isOpen ? closeIcon : menuIcon}\n </button>\n </div>\n )\n}\n\nfunction HeaderMobileMenu({\n children,\n isOpen,\n menuId,\n}: {\n children?: ReactNode\n isOpen: boolean\n menuId: string\n}) {\n const contentRef = useRef<HTMLDivElement>(null)\n const [height, setHeight] = useState(0)\n const [isVisible, setIsVisible] = useState(false)\n\n const updateHeight = useCallback(() => {\n if (isOpen && contentRef.current) {\n setHeight(contentRef.current.scrollHeight)\n }\n }, [isOpen])\n\n useEffect(() => {\n updateHeight()\n }, [updateHeight])\n\n useEffect(() => {\n const content = contentRef.current\n\n if (!isOpen || !content || typeof ResizeObserver === \"undefined\") {\n return\n }\n\n const observer = new ResizeObserver(updateHeight)\n observer.observe(content)\n\n return () => observer.disconnect()\n }, [isOpen, updateHeight])\n\n useEffect(() => {\n if (isOpen) {\n setIsVisible(true)\n }\n }, [isOpen])\n\n const handleTransitionEnd = (event: TransitionEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget && !isOpen) {\n setIsVisible(false)\n }\n }\n\n return (\n <div\n id={menuId}\n className=\"overflow-hidden transition-[max-height] duration-300 ease-in-out\"\n style={{ maxHeight: isOpen ? height : 0 }}\n onTransitionEnd={handleTransitionEnd}\n >\n <nav\n ref={contentRef}\n className={isVisible || isOpen ? \"bg-fill-netural\" : \"hidden\"}\n >\n {children}\n </nav>\n </div>\n )\n}\n\nfunction HeaderMobileNavigationItem({\n child,\n}: {\n child: ReactElement<NavigationChildProps>\n}) {\n const className = cn(\n \"flex w-full flex-col items-center gap-3 bg-fill-netural px-4 py-5\",\n )\n const content = (\n <>\n <span className=\"w-full overflow-hidden text-ellipsis whitespace-nowrap text-center font-sans text-headline-20sb text-label-normal\">\n {child.props.children}\n </span>\n <span className=\"h-px w-full bg-line-alternative\" />\n </>\n )\n\n if (child.props.href) {\n return (\n <a className={className} href={child.props.href}>\n {content}\n </a>\n )\n }\n\n return (\n <button className={className} type=\"button\" onClick={child.props.onClick}>\n {content}\n </button>\n )\n}\n\nfunction HeaderMobileNavigation({ children }: { children?: ReactNode }) {\n return Children.map(children, (child) => {\n if (!isValidElement<NavigationChildProps>(child)) {\n return child\n }\n\n return <HeaderMobileNavigationItem child={child} />\n })\n}\n\nexport function Header({\n logo,\n children,\n mobileLogo,\n menuIcon,\n closeIcon,\n isOpen,\n defaultOpen = false,\n onOpenChange,\n menuId,\n className,\n ...props\n}: HeaderProps) {\n const generatedMenuId = useId()\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen)\n const hasResponsiveHeader = Boolean(mobileLogo || menuIcon || closeIcon)\n const isMenuOpen = isOpen ?? uncontrolledOpen\n const resolvedMenuId = menuId ?? generatedMenuId\n\n const handleToggle = () => {\n const nextOpen = !isMenuOpen\n\n if (isOpen === undefined) {\n setUncontrolledOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n if (hasResponsiveHeader) {\n return (\n <header className={cn(\"w-full bg-fill-normal\", className)} {...props}>\n <div className=\"hidden items-center justify-between px-10 py-6 lg:flex\">\n <div className=\"shrink-0\">{logo}</div>\n <nav className=\"flex min-w-0 items-center justify-end gap-6 overflow-hidden\">\n {children}\n </nav>\n </div>\n\n <div className=\"lg:hidden\">\n <HeaderMobileBar\n logo={mobileLogo ?? logo}\n menuIcon={menuIcon}\n closeIcon={closeIcon}\n isOpen={isMenuOpen}\n onToggle={handleToggle}\n menuId={resolvedMenuId}\n />\n <HeaderMobileMenu menuId={resolvedMenuId} isOpen={isMenuOpen}>\n <HeaderMobileNavigation>{children}</HeaderMobileNavigation>\n </HeaderMobileMenu>\n </div>\n </header>\n )\n }\n\n return (\n <header\n className={cn(\n \"flex items-center justify-between\",\n \"w-full\",\n \"bg-fill-normal px-10 py-6\",\n className,\n )}\n {...props}\n >\n <div className=\"shrink-0\">{logo}</div>\n <nav className=\"flex min-w-0 items-center justify-end gap-6 overflow-hidden\">\n {children}\n </nav>\n </header>\n )\n}\n","import type {\n AnchorHTMLAttributes,\n ButtonHTMLAttributes,\n PropsWithChildren,\n} from \"react\"\n\nimport { cn } from \"../../utils/cn\"\n\ntype HeaderNavState = \"default\" | \"hovered\" | \"pressed\"\n\ntype HeaderNavigationBaseProps = {\n state?: HeaderNavState\n}\n\ntype HeaderNavigationButtonProps = PropsWithChildren<\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> &\n HeaderNavigationBaseProps & {\n href?: undefined\n }\n>\n\ntype HeaderNavigationLinkProps = PropsWithChildren<\n AnchorHTMLAttributes<HTMLAnchorElement> &\n HeaderNavigationBaseProps & {\n href: string\n }\n>\n\nexport type HeaderNavigationProps =\n | HeaderNavigationButtonProps\n | HeaderNavigationLinkProps\n\nconst stateStyles: Record<HeaderNavState, string> = {\n default:\n \"text-body-16m text-label-light hover:text-body-16b hover:text-label-normal active:text-body-16b active:text-brand-primary\",\n hovered: \"text-body-16b text-label-normal\",\n pressed: \"text-body-16b text-brand-primary\",\n}\n\nfunction isLinkProps(\n props: HeaderNavigationProps,\n): props is HeaderNavigationLinkProps {\n return \"href\" in props && typeof props.href === \"string\"\n}\n\nexport function HeaderNavigation({\n children,\n className,\n state = \"default\",\n ...props\n}: HeaderNavigationProps) {\n const sharedClassName = cn(\n \"flex max-w-full items-center justify-center overflow-hidden text-ellipsis whitespace-nowrap px-4\",\n \"font-sans transition-colors\",\n stateStyles[state],\n className,\n )\n\n if (isLinkProps(props)) {\n const linkProps = props\n\n return (\n <a className={sharedClassName} {...linkProps}>\n {children}\n </a>\n )\n }\n\n const buttonProps = props as HeaderNavigationButtonProps\n\n return (\n <button className={sharedClassName} {...buttonProps} type=\"button\">\n {children}\n </button>\n )\n}\n","import { SnowGraphic } from \"@kusitms/icons\"\n\nexport type ListProps = {\n title: string\n items: [string, string, string]\n}\n\nexport function List({ title, items }: ListProps) {\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-center gap-2 px-1\">\n <div className=\"w-5.5 h-6 lg:w-7.5 lg:h-8 shrink-0\">\n <SnowGraphic className=\"w-full h-full\" />\n </div>\n <span className=\"text-body-16b text-label-normal lg:text-headline-20b\">\n {title}\n </span>\n </div>\n <ul className=\"list-disc list-inside space-y-3 rounded-2xl bg-fill-netural px-4 py-6 lg:px-6 lg:py-7 w-236\">\n <li className=\"text-body-16m text-label-netural lg:text-body-18m truncate\">\n {items[0]}\n </li>\n <li className=\"text-body-16m text-label-netural lg:text-body-18m truncate\">\n {items[1]}\n </li>\n <li className=\"text-body-16m text-label-netural lg:text-body-18m truncate\">\n {items[2]}\n </li>\n </ul>\n </div>\n )\n}\n","import { BehanceIcon, CancelMIcon, GithubIcon, LinkIcon } from \"@kusitms/icons\"\nimport { type JSX, useEffect } from \"react\"\nimport { cn } from \"../../utils/cn\"\nimport { BottomGradient } from \"../BottomGradient\"\nimport { NavigationButton } from \"../Button/NavigationButton\"\nimport { PageNavButton } from \"../Button/PageNavButton\"\nimport { Label } from \"../Label/Label\"\n\nexport type ModalTeamRole = {\n role: string\n members: string[]\n}\n\nexport type ModalLinkType = \"behance\" | \"github\" | \"service\"\n\nexport type ModalLink = {\n type: ModalLinkType\n label: string\n url: string\n}\n\nexport type ModalProps = {\n isOpen: boolean\n onClose: () => void\n onPrev?: () => void\n onNext?: () => void\n name: string\n th: number\n type: \"WEB\" | \"APP\"\n imageUrl: string\n description: string\n teamRoles?: ModalTeamRole[]\n links?: ModalLink[]\n}\n\nconst LINK_ICONS: Record<\n ModalLinkType,\n (props: { className: string }) => JSX.Element\n> = {\n behance: BehanceIcon,\n github: GithubIcon,\n service: LinkIcon,\n}\n\nfunction ModalLinkIcon({ type }: { type: ModalLinkType }) {\n const Icon = LINK_ICONS[type]\n return <Icon className=\"size-5 shrink-0\" />\n}\n\nexport function Modal({\n isOpen,\n onClose,\n onPrev,\n onNext,\n name,\n th,\n type,\n imageUrl,\n description,\n teamRoles = [],\n links = [],\n}: ModalProps) {\n useEffect(() => {\n if (!isOpen) return\n const prev = document.body.style.overflow\n document.body.style.overflow = \"hidden\"\n return () => {\n document.body.style.overflow = prev\n }\n }, [isOpen])\n\n useEffect(() => {\n if (!isOpen) return\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose()\n }\n window.addEventListener(\"keydown\", handleKey)\n return () => window.removeEventListener(\"keydown\", handleKey)\n }, [isOpen, onClose])\n\n if (!isOpen) return null\n\n const hasNav = !!(onPrev || onNext)\n\n return (\n <div\n className=\"fixed inset-0 z-50 overflow-y-auto\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={name}\n >\n <div\n className=\"fixed inset-0 bg-effect-dimmer\"\n onClick={onClose}\n aria-hidden=\"true\"\n />\n <div className=\"flex min-h-full items-start lg:items-center justify-center\">\n <div className=\"flex flex-col items-center\">\n <div className=\"flex items-center\">\n {hasNav && (\n <div className=\"hidden lg:flex mr-5\">\n <PageNavButton\n direction=\"prev\"\n color=\"light\"\n onClick={onPrev}\n className={!onPrev ? \"invisible pointer-events-none\" : \"\"}\n />\n </div>\n )}\n <div className=\"relative flex w-83.75 lg:w-156 max-h-144 lg:max-h-231.5 flex-col rounded-2xl bg-fill-normal overflow-hidden\">\n <div className=\"shrink-0 border-b-2 border-line-alternative p-4 lg:pl-7 lg:pr-8 lg:py-6\">\n <button\n type=\"button\"\n aria-label=\"닫기\"\n onClick={onClose}\n className=\"flex items-center justify-center text-label-alternative cursor-pointer\"\n >\n <CancelMIcon aria-hidden className=\"size-5 lg:size-8\" />\n </button>\n </div>\n <div\n className={cn(\n \"flex-1 min-h-0 overflow-y-auto pt-3 pb-4 lg:pt-5 lg:pb-8\",\n \"[&::-webkit-scrollbar]:w-0.75\",\n \"[&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-track]:rounded-full\",\n \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-label-normal/75 [&::-webkit-scrollbar-thumb]:h-16\",\n )}\n >\n <div className=\"px-5 lg:px-8\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <p className=\"text-headline-20b lg:text-pc-30b text-label-normal\">\n {name}\n </p>\n <div className=\"flex gap-1.5 lg:gap-2\">\n <Label type=\"brand\">{th}기</Label>\n <Label type=\"brand\">{type}</Label>\n </div>\n </div>\n <div className=\"pt-4 lg:pt-5 pb-6 lg:pb-5\">\n <div className=\"w-full overflow-hidden rounded-xl border border-line-neutral bg-fill-alternative aspect-video\">\n <img\n src={imageUrl}\n alt={name}\n className=\"block h-full w-full object-cover\"\n />\n </div>\n </div>\n <div className=\"flex flex-col gap-5 lg:gap-8\">\n <div className=\"flex flex-col gap-1 lg:gap-2\">\n <p className=\"text-body-16b lg:text-body-18b text-label-netural\">\n 프로젝트 설명\n </p>\n <p className=\"text-label-light text-body-16r lg:text-body-16m lg:text-label-alternative\">\n {description}\n </p>\n </div>\n {(teamRoles.length > 0 || links.length > 0) && (\n <div className=\"flex flex-col gap-5 lg:flex-row lg:gap-8\">\n {teamRoles.length > 0 && (\n <div className=\"flex flex-col gap-2 lg:gap-3 lg:flex-1\">\n <p className=\"text-body-16b lg:text-body-18b text-label-netural\">\n 프로젝트 팀원\n </p>\n <div className=\"flex flex-col gap-1.5\">\n {teamRoles.map(({ role, members }) => (\n <div\n key={role}\n className=\"flex items-center gap-2.5\"\n >\n <Label type=\"default\">{role}</Label>\n <span className=\"text-label-14m text-label-alternative\">\n {members.join(\", \")}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n {links.length > 0 && (\n <div className=\"flex flex-col gap-2 lg:flex-1\">\n <p className=\"text-body-16b lg:text-body-18b text-label-netural\">\n 링크\n </p>\n <div className=\"flex flex-col gap-2 items-start\">\n {links.map(({ type: linkType, label, url }) => (\n <NavigationButton\n key={url}\n icon={<ModalLinkIcon type={linkType} />}\n onClick={() =>\n window.open(url, \"_blank\", \"noreferrer\")\n }\n >\n {label}\n </NavigationButton>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n <BottomGradient\n height={48}\n className=\"lg:left-5! lg:right-5! lg:w-auto! lg:translate-x-0!\"\n />\n </div>\n {hasNav && (\n <div className=\"hidden lg:flex ml-5\">\n <PageNavButton\n direction=\"next\"\n color=\"light\"\n onClick={onNext}\n className={!onNext ? \"invisible pointer-events-none\" : \"\"}\n />\n </div>\n )}\n </div>\n {hasNav && (\n <div className=\"flex w-83.75 justify-between mt-4 lg:hidden\">\n <PageNavButton\n direction=\"prev\"\n color=\"light\"\n onClick={onPrev}\n className={!onPrev ? \"invisible pointer-events-none\" : \"\"}\n />\n <PageNavButton\n direction=\"next\"\n color=\"light\"\n onClick={onNext}\n className={!onNext ? \"invisible pointer-events-none\" : \"\"}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import {\n type ButtonHTMLAttributes,\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n type ReactNode,\n} from \"react\"\nimport { cn } from \"../../utils/cn\"\n\ntype FilterDevice = \"desktop\" | \"mobile\" | \"responsive\"\n\nconst filterStyles: Record<\n FilterDevice,\n {\n container: string\n item: string\n activeItem?: string\n inactiveItem?: string\n text: string\n activeText: string\n inactiveText: string\n }\n> = {\n desktop: {\n container: \"justify-center gap-5\",\n item: \"min-w-30 px-2.5 py-2.5\",\n activeItem: \"bg-fill-primary\",\n text: \"\",\n activeText: \"text-headline-20b text-brand-primary\",\n inactiveText: \"text-headline-20m text-label-netural\",\n },\n mobile: {\n container:\n \"justify-start gap-1 overflow-x-auto [scrollbar-width:none] [-ms-overflow-style:none]\",\n item: \"py-1\",\n activeItem: \"bg-fill-primary px-4\",\n inactiveItem: \"px-3\",\n text: \"\",\n activeText: \"text-body-16sb text-brand-primary\",\n inactiveText: \"text-body-16m text-label-netural\",\n },\n responsive: {\n container:\n \"justify-start gap-1 overflow-x-auto pb-10 [scrollbar-width:none] [-ms-overflow-style:none] lg:justify-center lg:gap-5 lg:overflow-visible lg:px-50 lg:pb-15\",\n item: \"py-1 lg:min-w-30 lg:px-2.5 lg:py-2.5\",\n activeItem: \"bg-fill-primary px-4 lg:px-2.5\",\n inactiveItem: \"px-3 lg:px-2.5\",\n text: \"\",\n activeText: \"text-body-16sb text-brand-primary lg:text-headline-20b\",\n inactiveText: \"text-body-16m text-label-netural lg:text-headline-20m\",\n },\n}\n\nexport type FilterItemProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ReactNode\n active?: boolean\n device?: FilterDevice\n}\n\nexport function FilterItem({\n children,\n active = false,\n device = \"responsive\",\n className,\n ...props\n}: FilterItemProps) {\n const styles = filterStyles[device]\n\n return (\n <button\n aria-pressed={active}\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-full whitespace-nowrap\",\n styles.item,\n active ? styles.activeItem : styles.inactiveItem,\n className,\n )}\n type=\"button\"\n {...props}\n >\n <span\n className={cn(\n \"font-sans\",\n styles.text,\n active ? styles.activeText : styles.inactiveText,\n )}\n >\n {children}\n </span>\n </button>\n )\n}\n\nexport type NavigationFilterProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode\n device?: FilterDevice\n}\n\nexport function NavigationFilter({\n children,\n device = \"responsive\",\n className,\n ...props\n}: NavigationFilterProps) {\n const styles = filterStyles[device]\n const childrenWithDevice = Children.map(children, (child) => {\n if (!isValidElement<Partial<FilterItemProps>>(child)) {\n return child\n }\n\n return cloneElement(child, {\n device: child.props.device ?? device,\n })\n })\n\n return (\n <div\n className={cn(\n \"flex w-full items-center\",\n device === \"desktop\" ? \"flex-wrap\" : undefined,\n device === \"responsive\" ? \"lg:flex-wrap\" : undefined,\n styles.container,\n className,\n )}\n {...props}\n >\n {childrenWithDevice}\n </div>\n )\n}\n","import {\n type ButtonHTMLAttributes,\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n type ReactNode,\n} from \"react\"\n\nimport { cn } from \"../../utils/cn\"\n\ntype TabSize = \"m\" | \"s\" | \"responsive\"\n\nconst sizeStyles: Record<\n TabSize,\n {\n container: string\n item: string\n text: string\n textOffset: string\n activeText: string\n inactiveText: string\n underline: string\n }\n> = {\n m: {\n container: \"max-w-300\",\n item: \"h-31\",\n text: \"text-headline-24m\",\n textOffset: \"translate-y-4.75\",\n activeText: \"text-headline-24sb text-label-normal\",\n inactiveText: \"text-label-netural\",\n underline: \"after:h-0.75\",\n },\n s: {\n container: \"max-w-256\",\n item: \"h-26\",\n text: \"text-body-16m\",\n textOffset: \"translate-y-7\",\n activeText: \"text-body-16b text-label-normal\",\n inactiveText: \"text-label-netural\",\n underline: \"after:h-0.5\",\n },\n responsive: {\n container: \"max-w-256 lg:max-w-300\",\n item: \"h-26 lg:h-31\",\n text: \"text-body-16m lg:text-headline-24m\",\n textOffset: \"translate-y-7 lg:translate-y-4.75\",\n activeText:\n \"text-body-16b text-label-normal lg:text-headline-24sb lg:text-label-normal\",\n inactiveText: \"text-label-netural\",\n underline: \"after:h-0.5 lg:after:h-0.75\",\n },\n}\n\nexport type NavigationTabItemProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"type\"\n> & {\n children?: ReactNode\n active?: boolean\n size?: TabSize\n}\n\nexport function NavigationTabItem({\n children,\n active = false,\n size = \"responsive\",\n className,\n ...props\n}: NavigationTabItemProps) {\n const styles = sizeStyles[size]\n\n return (\n <button\n className={cn(\n \"relative flex min-w-0 flex-1 basis-0 items-center justify-center border-b border-line-alternative px-4\",\n styles.item,\n active\n ? \"after:absolute after:bottom-0 after:left-0 after:w-full after:bg-brand-primary\"\n : undefined,\n active ? styles.underline : undefined,\n className,\n )}\n role=\"tab\"\n aria-selected={active}\n type=\"button\"\n {...props}\n >\n <span\n className={cn(\n \"max-w-full overflow-hidden text-ellipsis whitespace-nowrap font-sans\",\n styles.text,\n styles.textOffset,\n active ? styles.activeText : styles.inactiveText,\n )}\n >\n {children}\n </span>\n </button>\n )\n}\n\nexport type NavigationTabProps = HTMLAttributes<HTMLDivElement> & {\n children?: ReactNode\n size?: TabSize\n}\n\nexport function NavigationTab({\n children,\n size = \"responsive\",\n className,\n ...props\n}: NavigationTabProps) {\n const styles = sizeStyles[size]\n const childrenWithSize = Children.map(children, (child) => {\n if (!isValidElement<Partial<NavigationTabItemProps>>(child)) {\n return child\n }\n\n return cloneElement(child, {\n size: child.props.size ?? size,\n })\n })\n\n return (\n <div\n className={cn(\n \"mx-auto flex w-full items-stretch\",\n styles.container,\n className,\n )}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n {...props}\n >\n {childrenWithSize}\n </div>\n )\n}\n","import {\n KeyboardArrowLeftIcon,\n KeyboardArrowRightIcon,\n KeyboardDoubleArrowLeftIcon,\n KeyboardDoubleArrowRightIcon,\n} from \"@kusitms/icons\"\nimport type { HTMLAttributes, ReactNode } from \"react\"\n\nimport { cn } from \"../../utils/cn\"\n\nexport type PaginationProps = HTMLAttributes<HTMLDivElement> & {\n currentPage?: number\n totalPages?: number\n onPageChange?: (page: number) => void\n prevIcon?: ReactNode\n nextIcon?: ReactNode\n firstIcon?: ReactNode\n lastIcon?: ReactNode\n}\n\nconst paginationControlClassName =\n \"flex size-6 items-center justify-center disabled:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0\"\n\ntype PageItem = number | \"ellipsis-start\" | \"ellipsis-end\"\n\nconst getPageItems = (currentPage: number, totalPages: number): PageItem[] => {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const middleStart = Math.max(2, currentPage - 1)\n const middleEnd = Math.min(totalPages - 1, currentPage + 1)\n const items: PageItem[] = [1]\n\n if (middleStart > 2) {\n items.push(\"ellipsis-start\")\n }\n\n for (let page = middleStart; page <= middleEnd; page += 1) {\n items.push(page)\n }\n\n if (middleEnd < totalPages - 1) {\n items.push(\"ellipsis-end\")\n }\n\n items.push(totalPages)\n\n return items\n}\n\nexport function Pagination({\n currentPage = 1,\n totalPages = 5,\n onPageChange,\n prevIcon = <KeyboardArrowLeftIcon aria-hidden=\"true\" />,\n nextIcon = <KeyboardArrowRightIcon aria-hidden=\"true\" />,\n firstIcon = <KeyboardDoubleArrowLeftIcon aria-hidden=\"true\" />,\n lastIcon = <KeyboardDoubleArrowRightIcon aria-hidden=\"true\" />,\n className,\n ...props\n}: PaginationProps) {\n const safeTotalPages = Math.max(1, Math.floor(totalPages))\n const safeCurrentPage = Math.min(\n safeTotalPages,\n Math.max(1, Math.floor(currentPage)),\n )\n const pageItems = getPageItems(safeCurrentPage, safeTotalPages)\n\n const handlePageChange = (page: number) => {\n onPageChange?.(Math.min(safeTotalPages, Math.max(1, page)))\n }\n\n const isFirstPage = safeCurrentPage === 1\n const isLastPage = safeCurrentPage === safeTotalPages\n const getControlClassName = (disabled: boolean) =>\n cn(\n paginationControlClassName,\n disabled ? \"text-label-disable\" : \"text-label-normal\",\n )\n\n return (\n <div\n className={cn(\"inline-flex h-11 items-center gap-3 sm:gap-5\", className)}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className={cn(getControlClassName(isFirstPage), \"hidden sm:flex\")}\n onClick={() => handlePageChange(1)}\n disabled={isFirstPage}\n aria-label=\"First page\"\n >\n {firstIcon}\n </button>\n <button\n type=\"button\"\n className={getControlClassName(isFirstPage)}\n onClick={() => handlePageChange(safeCurrentPage - 1)}\n disabled={isFirstPage}\n aria-label=\"Previous page\"\n >\n {prevIcon}\n </button>\n </div>\n\n <div className=\"flex items-center gap-2 sm:gap-3\">\n {pageItems.map((pageItem) => {\n if (typeof pageItem !== \"number\") {\n return (\n <span\n key={pageItem}\n aria-hidden=\"true\"\n className=\"font-sans text-body-16m text-label-disable\"\n >\n ...\n </span>\n )\n }\n\n return (\n <button\n key={pageItem}\n type=\"button\"\n className={cn(\n \"whitespace-nowrap font-sans\",\n pageItem === safeCurrentPage\n ? \"text-body-16b text-label-normal\"\n : \"text-body-16m text-label-disable\",\n )}\n onClick={() => handlePageChange(pageItem)}\n aria-current={pageItem === safeCurrentPage ? \"page\" : undefined}\n >\n {pageItem}\n </button>\n )\n })}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className={getControlClassName(isLastPage)}\n onClick={() => handlePageChange(safeCurrentPage + 1)}\n disabled={isLastPage}\n aria-label=\"Next page\"\n >\n {nextIcon}\n </button>\n <button\n type=\"button\"\n className={cn(getControlClassName(isLastPage), \"hidden sm:flex\")}\n onClick={() => handlePageChange(safeTotalPages)}\n disabled={isLastPage}\n aria-label=\"Last page\"\n >\n {lastIcon}\n </button>\n </div>\n </div>\n )\n}\n"]}
@@ -0,0 +1,228 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as RadixAccordion from '@radix-ui/react-accordion';
3
+ import { ComponentPropsWithoutRef, ReactNode, HTMLAttributes, PropsWithChildren, ButtonHTMLAttributes, SVGProps, InputHTMLAttributes, AnchorHTMLAttributes } from 'react';
4
+
5
+ type RadixRootProps = ComponentPropsWithoutRef<typeof RadixAccordion.Root>;
6
+ type AccordionProps = Omit<RadixRootProps, "asChild"> & {
7
+ collapsible?: boolean;
8
+ };
9
+ declare function AccordionRoot({ className, children, ...props }: AccordionProps): react_jsx_runtime.JSX.Element;
10
+ type AccordionItemProps = {
11
+ value: string;
12
+ question: ReactNode;
13
+ answer: ReactNode;
14
+ className?: string;
15
+ };
16
+ declare function AccordionItem({ value, question, answer, className, }: AccordionItemProps): react_jsx_runtime.JSX.Element;
17
+ declare const Accordion: typeof AccordionRoot & {
18
+ Item: typeof AccordionItem;
19
+ };
20
+
21
+ type BlogProps = {
22
+ imageUrl: string;
23
+ title: string;
24
+ content: string;
25
+ labels: string[];
26
+ };
27
+ declare function Blog({ imageUrl, title, content, labels }: BlogProps): react_jsx_runtime.JSX.Element;
28
+
29
+ type BottomGradientProps = HTMLAttributes<HTMLDivElement> & {
30
+ height?: number;
31
+ };
32
+ declare function BottomGradient({ height, className, style, ...props }: BottomGradientProps): react_jsx_runtime.JSX.Element;
33
+
34
+ type ButtonProps = PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement> & {
35
+ className?: string;
36
+ showIcon?: boolean;
37
+ }>;
38
+ declare function Button({ children, className, disabled, showIcon, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
39
+
40
+ type NavigationButtonProps = PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement> & {
41
+ className?: string;
42
+ icon?: ReactNode;
43
+ showArrow?: boolean;
44
+ }>;
45
+ declare function NavigationButton({ children, className, icon, showArrow, ...props }: NavigationButtonProps): react_jsx_runtime.JSX.Element;
46
+
47
+ type PageNavButtonColor = "light" | "dark";
48
+ type PageNavButtonDirection = "prev" | "next";
49
+ type PageNavButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
50
+ color?: PageNavButtonColor;
51
+ direction?: PageNavButtonDirection;
52
+ className?: string;
53
+ };
54
+ declare function PageNavButton({ className, color, direction, ...props }: PageNavButtonProps): react_jsx_runtime.JSX.Element;
55
+
56
+ type ScrollTopButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
57
+ className?: string;
58
+ };
59
+ declare function ScrollTopButton({ className, ...props }: ScrollTopButtonProps): react_jsx_runtime.JSX.Element;
60
+
61
+ type RecruitmentCardType = "default" | "titled";
62
+ type RecruitmentCardProps = {
63
+ type: RecruitmentCardType;
64
+ graphic: React.ComponentType<SVGProps<SVGSVGElement>>;
65
+ title?: string;
66
+ description: string;
67
+ };
68
+ declare function RecruitmentCard({ type, graphic: Graphic, title, description, }: RecruitmentCardProps): react_jsx_runtime.JSX.Element;
69
+
70
+ type ReviewCardProps = {
71
+ name: string;
72
+ part: string;
73
+ body: string;
74
+ };
75
+ declare function ReviewCard({ name, part, body }: ReviewCardProps): react_jsx_runtime.JSX.Element;
76
+
77
+ type ShowcaseCardType = "WEB" | "APP";
78
+ type ShowcaseCardProps = {
79
+ name: string;
80
+ description: string;
81
+ th: number;
82
+ isMeetup?: boolean;
83
+ type: ShowcaseCardType;
84
+ imageUrl: string;
85
+ };
86
+ declare function ShowcaseCard({ name, description, th, isMeetup, type, imageUrl, }: ShowcaseCardProps): react_jsx_runtime.JSX.Element;
87
+
88
+ type DropdownOption = {
89
+ value: string;
90
+ label: string;
91
+ };
92
+ type DropdownProps = {
93
+ options: DropdownOption[];
94
+ value?: string;
95
+ defaultValue?: string;
96
+ onValueChange?: (value: string) => void;
97
+ placeholder?: string;
98
+ disabled?: boolean;
99
+ className?: string;
100
+ };
101
+ declare function Dropdown({ options, value, defaultValue, onValueChange, placeholder, disabled, className, }: DropdownProps): react_jsx_runtime.JSX.Element;
102
+
103
+ type EmailInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "size" | "type"> & {
104
+ value: string;
105
+ onChange: (value: string) => void;
106
+ onSubmit?: (value: string) => void;
107
+ validate?: (value: string) => boolean;
108
+ buttonLabel?: string;
109
+ buttonProps?: Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onClick" | "disabled" | "type">;
110
+ className?: string;
111
+ };
112
+ declare function EmailInput({ value, onChange, onSubmit, validate, buttonLabel, buttonProps, disabled, className, placeholder, ...inputProps }: EmailInputProps): react_jsx_runtime.JSX.Element;
113
+
114
+ type FooterProps = HTMLAttributes<HTMLElement> & {
115
+ logo?: ReactNode;
116
+ mobileLogo?: ReactNode;
117
+ links?: ReactNode;
118
+ contactIcons?: ReactNode;
119
+ copyright?: string;
120
+ scrollTopButton?: ReactNode;
121
+ bylawsHref?: string;
122
+ bylawsLabel?: string;
123
+ };
124
+ declare function Footer({ logo, mobileLogo, links, contactIcons, copyright, scrollTopButton, bylawsHref, bylawsLabel, className, ...props }: FooterProps): react_jsx_runtime.JSX.Element;
125
+
126
+ type HeaderProps = HTMLAttributes<HTMLElement> & {
127
+ logo?: ReactNode;
128
+ children?: ReactNode;
129
+ mobileLogo?: ReactNode;
130
+ menuIcon?: ReactNode;
131
+ closeIcon?: ReactNode;
132
+ isOpen?: boolean;
133
+ defaultOpen?: boolean;
134
+ onOpenChange?: (isOpen: boolean) => void;
135
+ menuId?: string;
136
+ };
137
+ declare function Header({ logo, children, mobileLogo, menuIcon, closeIcon, isOpen, defaultOpen, onOpenChange, menuId, className, ...props }: HeaderProps): react_jsx_runtime.JSX.Element;
138
+
139
+ type HeaderNavState = "default" | "hovered" | "pressed";
140
+ type HeaderNavigationBaseProps = {
141
+ state?: HeaderNavState;
142
+ };
143
+ type HeaderNavigationButtonProps = PropsWithChildren<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type"> & HeaderNavigationBaseProps & {
144
+ href?: undefined;
145
+ }>;
146
+ type HeaderNavigationLinkProps = PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement> & HeaderNavigationBaseProps & {
147
+ href: string;
148
+ }>;
149
+ type HeaderNavigationProps = HeaderNavigationButtonProps | HeaderNavigationLinkProps;
150
+ declare function HeaderNavigation({ children, className, state, ...props }: HeaderNavigationProps): react_jsx_runtime.JSX.Element;
151
+
152
+ type LabelType = "brand" | "secondary" | "default";
153
+ type LabelProps = PropsWithChildren<HTMLAttributes<HTMLSpanElement> & {
154
+ type?: LabelType;
155
+ description?: ReactNode;
156
+ className?: string;
157
+ }>;
158
+ declare function Label({ children, className, type, description, ...props }: LabelProps): react_jsx_runtime.JSX.Element;
159
+
160
+ type ListProps = {
161
+ title: string;
162
+ items: [string, string, string];
163
+ };
164
+ declare function List({ title, items }: ListProps): react_jsx_runtime.JSX.Element;
165
+
166
+ type ModalTeamRole = {
167
+ role: string;
168
+ members: string[];
169
+ };
170
+ type ModalLinkType = "behance" | "github" | "service";
171
+ type ModalLink = {
172
+ type: ModalLinkType;
173
+ label: string;
174
+ url: string;
175
+ };
176
+ type ModalProps = {
177
+ isOpen: boolean;
178
+ onClose: () => void;
179
+ onPrev?: () => void;
180
+ onNext?: () => void;
181
+ name: string;
182
+ th: number;
183
+ type: "WEB" | "APP";
184
+ imageUrl: string;
185
+ description: string;
186
+ teamRoles?: ModalTeamRole[];
187
+ links?: ModalLink[];
188
+ };
189
+ declare function Modal({ isOpen, onClose, onPrev, onNext, name, th, type, imageUrl, description, teamRoles, links, }: ModalProps): react_jsx_runtime.JSX.Element | null;
190
+
191
+ type FilterDevice = "desktop" | "mobile" | "responsive";
192
+ type FilterItemProps = ButtonHTMLAttributes<HTMLButtonElement> & {
193
+ children?: ReactNode;
194
+ active?: boolean;
195
+ device?: FilterDevice;
196
+ };
197
+ declare function FilterItem({ children, active, device, className, ...props }: FilterItemProps): react_jsx_runtime.JSX.Element;
198
+ type NavigationFilterProps = HTMLAttributes<HTMLDivElement> & {
199
+ children?: ReactNode;
200
+ device?: FilterDevice;
201
+ };
202
+ declare function NavigationFilter({ children, device, className, ...props }: NavigationFilterProps): react_jsx_runtime.JSX.Element;
203
+
204
+ type TabSize = "m" | "s" | "responsive";
205
+ type NavigationTabItemProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type"> & {
206
+ children?: ReactNode;
207
+ active?: boolean;
208
+ size?: TabSize;
209
+ };
210
+ declare function NavigationTabItem({ children, active, size, className, ...props }: NavigationTabItemProps): react_jsx_runtime.JSX.Element;
211
+ type NavigationTabProps = HTMLAttributes<HTMLDivElement> & {
212
+ children?: ReactNode;
213
+ size?: TabSize;
214
+ };
215
+ declare function NavigationTab({ children, size, className, ...props }: NavigationTabProps): react_jsx_runtime.JSX.Element;
216
+
217
+ type PaginationProps = HTMLAttributes<HTMLDivElement> & {
218
+ currentPage?: number;
219
+ totalPages?: number;
220
+ onPageChange?: (page: number) => void;
221
+ prevIcon?: ReactNode;
222
+ nextIcon?: ReactNode;
223
+ firstIcon?: ReactNode;
224
+ lastIcon?: ReactNode;
225
+ };
226
+ declare function Pagination({ currentPage, totalPages, onPageChange, prevIcon, nextIcon, firstIcon, lastIcon, className, ...props }: PaginationProps): react_jsx_runtime.JSX.Element;
227
+
228
+ export { Accordion, type AccordionItemProps, type AccordionProps, Blog, type BlogProps, BottomGradient, type BottomGradientProps, Button, type ButtonProps, Dropdown, type DropdownOption, type DropdownProps, EmailInput, type EmailInputProps, FilterItem, type FilterItemProps, Footer, type FooterProps, Header, HeaderNavigation, type HeaderNavigationProps, type HeaderProps, Label, type LabelProps, List, type ListProps, Modal, type ModalLink, type ModalLinkType, type ModalProps, type ModalTeamRole, NavigationButton, type NavigationButtonProps, NavigationFilter, type NavigationFilterProps, NavigationTab, NavigationTabItem, type NavigationTabItemProps, type NavigationTabProps, PageNavButton, type PageNavButtonProps, Pagination, type PaginationProps, RecruitmentCard, type RecruitmentCardProps, ReviewCard, type ReviewCardProps, ScrollTopButton, type ScrollTopButtonProps, ShowcaseCard, type ShowcaseCardProps };