Versions
각 패키지의 버전 변경 이력. 최신이 위에 표시됩니다.
@baneung-pack/ui
현재: v1.0.12
npmv1.0.12
PATCHSelect: Dialog/Sheet/Drawer 내부에서 옵션 휠 스크롤 동작 수정
- 원인: Radix Dialog의 react-remove-scroll이 트리 밖 wheel/touchmove를 preventDefault → Popover.Portal로 document.body에 띄운 옵션 리스트가 휠 무반응
- 수정: 트리거에서 가장 가까운 [role="dialog"] 조상을 찾아 Popover.Portal의 container로 지정 — Dialog/Sheet/Drawer(vaul 포함) 모두 적용
- 일반 컨텍스트(Dialog 밖)에서는 기존대로 document.body에 portal
v1.0.11
PATCHREADME 데모 사이트 URL을 새 커스텀 도메인으로 갱신
- 이전: https://baneung-ui-docs-op7v.vercel.app
- 변경: https://ui.baneung.com
- 코드 변경 없음. README 링크 한 줄 갱신.
v1.0.10
PATCHREADME 라이선스 배지 Apache-2.0으로 통일 (코드 변경 없음)
- README의 MIT 배지·푸터를 Apache-2.0으로 교체
- npmjs.com 페이지에 노출되는 라이선스 표기 일관성
v1.0.9
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 추가
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- npmjs.com 페이지에 라이선스 표시됨
v1.0.8
PATCHSelect 키보드 네비게이션 — Dialog/Drawer/Sheet 등 popup 안에서도 ↑↓ 동작
- Popover.Content가 portal로 body에 렌더 → 부모 FocusScope가 trigger로 포커스 되돌리던 문제
- 다단계 강제 포커스 — 즉시 + rAF + setTimeout 3번 호출로 race 커버
- 키 이벤트 캡처 fallback — Input이 비활성 상태일 때 포커스 옮기고 키 이벤트 재dispatch
v1.0.7
PATCHSelect 키보드 네비게이션 수정 — searchable=false에서도 ↑↓·Enter 동작
- cmdk + Radix Popover 조합에서 Popover.Content가 자기 자신에게 포커스를 잡아 키 이벤트가 cmdk에 전달되지 않던 문제
- CommandInput을 항상 DOM에 유지(searchable=false일 땐 sr-only) → 키 이벤트 캐처 역할
- Popover.Content.onOpenAutoFocus에서 input으로 포커스 위임
- shouldFilter={searchable}로 비검색 모드는 필터링 비활성화
- 신규 키보드 네비게이션 테스트 2개 (검색/비검색 양쪽)
v1.0.6
PATCH'use client' 주입을 React/Radix 사용 파일에만 선택적으로 적용 (1.0.5 회귀 수정)
- 1.0.5에서 cn 같은 순수 유틸리티까지 client-only가 되어 'Attempted to call cn() from the server' 에러 발생
- react / react-dom / @radix-ui / @tanstack/react-* / sonner / lucide-react / cmdk / vaul import가 있는 파일에만 주입
- 서버 컴포넌트에서 cn, 타입 등 직접 호출 가능
v1.0.5
PATCHNext.js App Router (RSC) 호환 — 빌드 출력물에 'use client' 디렉티브 주입 (1.0.6에서 회귀 수정)
- 대부분 컴포넌트가 Radix UI 기반(내부 hook) 또는 자체 hook 사용 → 서버 컴포넌트에서 직접 import 시 런타임 오류 발생하던 문제 해결
- tsup onSuccess에서 dist 출력물 모든 .js / .cjs 파일 최상단에 자동 주입
- 단, 무차별 주입으로 cn 유틸리티가 깨지는 문제가 있어 1.0.6에서 선택적 주입으로 보강
v1.0.4
PATCHREADME "CSS 격리 (Cascade Layers)" 섹션을 실전 검증 기반으로 재작성
- 패턴 A: 소비자가 본인 글로벌 CSS를 @layer app으로 감싸 라이브러리 override
- 패턴 B (권장): 소비자가 Tailwind를 함께 쓸 때 preflight 제외 import해 preflight↔utility 충돌 회피
- 데모 사이트(apps/docs)도 패턴 B로 적용 검증 완료
v1.0.3
PATCHREADME "CSS 격리" 섹션 보강 — layer 등록 시점 + import 순서 명시
- CSS Cascade Layer는 처음 등록된 시점의 위치가 우선순위를 결정
- 두 시나리오(소비자 override / 라이브러리 강제 우선) 각각의 import + layer 선언 패턴 예시
v1.0.2
PATCHCSS Cascade Layers로 스타일 격리 (@layer baneung)
- 라이브러리 모든 스타일을 @layer baneung 안에 wrap
- 소비자 글로벌 CSS의 의도치 않은 override 문제 해결
- README에 데모 사이트 링크 추가
v1.0.1
PATCHnpm 페이지용 README 추가 (코드 변경 없음)
- 각 패키지에 설치/사용법/컴포넌트 목록 README 추가
- npmjs.com에 표시될 페이지 콘텐츠
v1.0.0
MAJOR초기 출시 — 58개 React 컴포넌트 (Radix UI 기반)
- Foundation: Typography · Separator · AspectRatio · Skeleton · Spinner · Empty · Avatar · Badge · Kbd · Label
- Buttons & Toggles: Button(asChild·loading·variants) · ButtonGroup · Toggle · ToggleGroup
- Inputs: Input(좌/우 adornment) · InputGroup · InputOTP · Textarea · Field · Checkbox(indeterminate) · RadioGroup · Switch · Slider
- Selection: Select(single/multi/searchable) · NativeSelect · Combobox · Command · Calendar · DatePicker
- Layout: Card · Item · Sidebar · Resizable · ScrollArea · Direction
- Navigation: Tabs · Breadcrumb · Pagination · NavigationMenu · Menubar
- Overlay: Dialog · AlertDialog · Drawer · Sheet · Popover · HoverCard · Tooltip · DropdownMenu · ContextMenu
- Feedback: Alert · Toast · Sonner · Progress
- Data Display: Accordion · Collapsible · Table · DataTable · Carousel
- WCAG 2.1 AA · axe-core 0 violations · 한글 IME 안전 · React 18/19 호환 · 트리쉐이커블 ESM/CJS
@baneung-pack/grid
현재: v0.9.1
npmv0.9.1
PATCHREADME 데모 사이트 URL을 새 커스텀 도메인으로 갱신
- 이전: https://baneung-ui-docs-op7v.vercel.app
- 변경: https://ui.baneung.com
- 코드 변경 없음.
v0.9.0
MINOR관리자 화면 · 대용량 · Excel 환경 핵심 기능 대규모 추가
- XLSX 내보내기 (exportXlsx ref API) — exceljs 동적 로드, 번들 미포함
- Excel 호환 Ctrl+C/V 클립보드 (clipboard prop, TSV 직렬화)
- 빠른 검색 (quickFilter) — 모든 visible 컬럼 부분 일치
- 다중 컬럼 정렬 (Shift+클릭) + 헤더 순서 번호 표시
- 컬럼 폭 드래그 조절 (resizable + onColumnResize)
- 컬럼 고정 좌/우 (column.pin) — 가로 스크롤 시 sticky
- 컬럼 순서 변경 (reorderable) — 헤더 drag&drop, pin 경계 유지
- 컬럼 표시/숨김 (showColumnMenu + columnVisibility)
- 합계 행 (showFooter + column.aggregate) — sum/avg/count/min/max/함수
- 조건부 셀 스타일 (column.cellStyle / cellClassName)
- 키보드 네비게이션 — 화살표/Tab/Enter/Home·End/Ctrl+Home·End
- 우클릭 컨텍스트 메뉴 (contextMenu) — 기본 또는 함수형 커스텀
- 설정 자동 저장 (viewKey) — 정렬/폭/표시/순서 localStorage 영속화
- editCell stale closure 버그 fix (paste 같은 다중 컬럼 동시 입력 정확)
v0.8.4
PATCHautoSize prop 신규 — 부모 컨테이너에 꽉 맞춰 자동 리사이즈
- 활성 시 outer가 h-full w-full + scroll이 flex-1 min-h-0 → 부모 div 100% 채움
- 페이지네이션 푸터는 자동으로 바닥에 고정
- 부모 크기 변경 시 자동 반영 (virtualizer 내장 ResizeObserver)
- height prop은 무시. 기본 false → 기존 동작 그대로 (backwards-compatible)
- README의 MIT 배지·푸터를 Apache-2.0으로 함께 교체
v0.8.3
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 추가
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- npmjs.com 페이지에 라이선스 표시됨
v0.8.2
PATCH'use client' 주입을 React/Radix 사용 파일에만 선택적으로 적용 (0.8.1 회귀 수정)
- 0.8.1의 무차별 주입으로 순수 유틸리티(csv 빌더 등)까지 client-only가 되던 문제 수정
- react / @radix-ui / @tanstack/react-* import가 있는 파일에만 주입
v0.8.1
PATCHNext.js App Router (RSC) 호환 — 빌드 출력물에 'use client' 디렉티브 주입 (0.8.2에서 회귀 수정)
- 가상화/state/ref 전반 사용 → RSC 환경에서 client 필수
- tsup onSuccess에서 dist 출력물 모든 .js / .cjs 파일 최상단에 자동 주입
- 무차별 주입으로 순수 유틸리티가 깨지는 문제는 0.8.2에서 선택적 주입으로 수정
v0.8.0
MINORCSV 다운로드 — GridHandle.exportCsv
- exportCsv(filename?, options?) — UTF-8 BOM + Excel 호환
- options.rows로 명시 행만 export (변경분만 / 외부 필터 결과 등)
- 미지정 시 getSavedData() 사용 (편집 반영, 삭제 제외)
- 새 helper: buildCsv, downloadCsv (csv.ts)
v0.7.0
MINORFilter popover Portal · cell-selection · row add/remove · Delete 키
- Filter popover: react-dom Portal로 document.body 렌더 → 스크롤 컨테이너에 안 잘림
- cellSelection: "none" | "single" | "multi" (드래그 사각형 영역 다중 선택)
- addRow(row, position): "first" | "last" | "above-active" | "below-active"
- removeSelectedRows() / clearSelectedCells()
- clearOnDelete: Delete/Backspace로 선택 셀 값 클리어
v0.6.0
MINOR필터 UX를 Excel/AUIGrid 스타일 popover로 교체
- 헤더에 funnel 아이콘 → 클릭 시 popover
- "필터 초기화" + 검색 + "(전체선택)" + 각 값 + "(필드 값 없음)" 체크박스
- 확인(적용) / 취소(폐기) 버튼
- 외부 클릭 / Escape로 닫힘 (draft 폐기)
v0.5.0
MINOR헤더 정렬(sort) + 필터(filter)
- column.sortable — 헤더 클릭으로 3-state (↕ → ▲ asc → ▼ desc → 해제)
- column.filterable — 헤더 아래 input (부분 일치, case-insensitive)
- 값 비교: null 후순위, Date timestamp, number 산술, 그 외 localeCompare(numeric)
- 트리 모드는 sort skip (hierarchy 보존)
v0.4.1
PATCH진행률 바 fill 색이 표시되지 않던 문제 수정
- grid의 @theme inline에 status 컬러(--color-success/danger/warning/info) 매핑 누락
- bg-success utility가 색을 못 받아 fill 바가 투명했음
v0.4.0
MINOR빌트인 셀 에디터 (dropdown · date · number) + 렌더러 (progress · date)
- column.editor: 'text' | 'number' | 'date' | 'dropdown' (네이티브 input)
- column.renderer: 'progress' (진행률 바) / 'date' (포맷팅)
- column.options / min / max / dateFormat 필드 추가
- aria-progressbar / aria-valuenow / combobox role 표준
v0.3.0
MINORTree (계층) 모드
- tree prop + getChildren으로 중첩 데이터 계층 표시
- 첫 컬럼에 caret(▶/▼) + 들여쓰기 자동 삽입
- defaultExpandedIds: 'all' | 'none' | id 배열
- 가상화·페이지네이션 호환
v0.2.0
MINOR초기 publish — 가상화 · 페이지네이션 · 인라인 편집 · 행 선택 · ref API
- 가상화 토글 (virtualized) — @tanstack/react-virtual 기반
- 내장 페이지네이션 + 외부 페이징 controlled 모드
- 인라인 편집 (editable: true) + 한글 IME 안전
- 행 선택 체크박스 (selectable)
- Imperative API: getSavedData / getChangedData / getDeletedData / deleteSelected / clearSelection / reset
- @layer baneung에 격리
@baneung-pack/chart
현재: v0.3.0
npmv0.3.0
MINOR웹 접근성(WCAG 2.1 AA) + 한글 숫자 포맷 + FlowChart 추가
- 신규 FlowChart — SVG 기반 노드-엣지 그래프 (chart.js 무관)
- FlowChart edge 4종 내장: straight / bezier / step / smoothstep
- FlowChart 사용자 정의 edge — edgeTypes prop에 SVG path 함수 등록
- FlowChart pan + zoom (마우스 드래그, 휠 in/out 커서 위치 기준)
- FlowChart 화살표 머리, edge 라벨, 흐름 애니메이션, 점선 옵션
- 모든 차트에 a11yTable prop (기본 true) — sr-only <table>로 데이터 노출, 스크린리더 호환 (WCAG 1.1.1)
- a11yCaption prop — 표 caption (스크린리더가 먼저 읽음)
- 모든 차트에 valueFormat prop — tooltip · 데이터 라벨 · y축 tick 일관 적용
- valueFormat='korean' → 125만 · 1.2억 · 1.5조 자동 변환
- valueFormat='comma' → 1,250,000 천 단위 콤마
- 사용자 정의 함수: (n) => string 지원
- MapChart 삭제 — d3-geo, topojson-client peer dep 제거 (chart 패키지 범위 밖으로 판단)
- peer dep 5개 → 3개 감소 (chart.js, react-chartjs-2, chartjs-plugin-datalabels)
v0.2.0
MINOR렌더링 엔진 교체: SVG(recharts) → Canvas(chart.js)
- 대용량 데이터 포인트에서 Canvas 기반이 메모리/페인트 비용이 낮음
- chart.js는 자체적으로 controller/scale/plugin tree-shaking 지원
- SVG DOM 트리 생성 비용 제거
- BREAKING: peer dep 교체 — recharts ^2.12.0 → chart.js ^4.4.0 + react-chartjs-2 ^5.2.0
- BREAKING: PieChart.outerRadius deprecated (chart.js 반응형 — px 외부 반지름 미지원)
- BREAKING: PieChart.innerRadius는 px 대신 0~1 비율로 변경 (chart.js cutout 매핑)
- 공통 props는 시그니처 그대로 유지 — 마이그레이션은 dependencies 교체만으로 대부분 동작
- lib/chartjs-setup.ts에서 controller/scale/plugin 일괄 register (사용자 코드 register 불필요)
- "use client" 자동 주입 패턴 유지 (RSC 호환)
v0.1.0
MINOR초도 출시 — recharts 기반 차트 라이브러리 (0.2.0에서 chart.js로 교체됨)
- BarChart · LineChart · AreaChart · PieChart · DoughnutChart · ScatterChart · RadarChart · WaterfallChart · MixedChart 9종 (당시 recharts 기반)
- 공통 props: data / xKey / yKeys / nameKey / valueKey / labels / colors / height / showGrid / showLegend / showTooltip / emptyState / className
- @baneung-pack/tokens 공유로 디자인 일관성
@baneung-pack/editor
현재: v0.1.1
npmv0.1.1
PATCHpackage.json description / keywords 갱신 (npm 검색 노출 보강)
- description의 일부 표현 수정
- keywords 신규 추가: WYSIWYG · editor · rich-text-editor · react · contenteditable · design-system · baneung
- README에 키워드 강조 한 줄 추가
- 소스/dist 변경 없음. npm 페이지 메타데이터만 업데이트.
v0.1.0
MINOR초도 출시 — contentEditable 기반 리치 텍스트 WYSIWYG 에디터
- 풀스택 WYSIWYG 툴바: 굵게/기울임/밑줄/취소선, 글자색·형광펜, 글자 크기, 제목·인용구·코드 블록, 목록/들여쓰기, 정렬, 링크, 구분선, undo/redo, 서식 지우기, HTML 소스, 전체 화면
- 이미지 클립보드 붙여넣기 · 드래그앤드롭 · 파일 선택 (기본 base64 인라인, onImageUpload로 서버 업로드 연동)
- 제어/비제어 지원 — value/onChange 또는 defaultValue
- ref 명령형 API — getHTML · setHTML · insertHTML · focus
- 반응형 — 툴바 자동 줄바꿈, 이미지 max-width:100%
- 런타임 의존성 0 (clsx·tailwind-merge만) + @baneung-pack/tokens 공유
- React 18 / 19 호환, ESM/CJS dual export
- 17개 단위 테스트 + axe-core 접근성 0 위반
@baneung-pack/effect
현재: v0.1.0
npmv0.1.0
MINOR초도 출시 — 13개 React 비주얼 이펙트 (Tier 1 + 2 + 3)
- Typewriter — 글자 타이핑 + 깜빡이는 커서 (1회 / 무한 loop), 크기·색·굵기·커서 글자 커스터마이즈
- RotatingWords — "We build [apps]" 단어 슬라이드+페이드 순환 (grid template-areas로 폭 자동 측정)
- ScrambleText — 해킹/디코딩 스타일, 글자 풀 커스텀 (카타카나/HEX/바이너리)
- SplitTextReveal — 글자/단어 단위 순차 페이드+슬라이드, mount/inView 트리거
- CountUp — 숫자 카운터 (천 단위·소수점·prefix/suffix·감소 카운트), easeOutCubic
- GradientText — flow / shimmer 모드, 색상 배열·방향 커스터마이즈
- BlurInText — 흐릿→선명 등장, by char/word/all, mount/inView 트리거
- WavyText — 글자가 파도치거나 통통 튐, 위상 차이로 자연스러운 파동
- GlitchText — RGB 채널 어긋남 글리치, intensity 조절·hover-only 옵션
- VariableFontHover — 커서 주변 글자만 굵어짐 (가변 폰트 보간, smoothstep falloff)
- CircularText — 원형 경로 회전 텍스트 (배지/도장 스타일)
- GravityText — 글자가 중력에 떨어지거나 흩어짐 (mount/hover/inView)
- SpotlightText — 커서 주변만 밝아지는 스포트라이트 (radial-gradient mask)
- 공통 훅: useReducedMotion (a11y) + useInView (스크롤 reveal 표준화)
- 0-dependency 코어 — React peer만, Tailwind 비종속 (inline style 기반)
- 모든 컴포넌트 prefers-reduced-motion 자동 존중 (모션 줄임 시 정적 표시)
- aria-label로 원문을 스크린리더에 노출, 애니메이션 span은 aria-hidden
- ESM/CJS dual export + .d.ts, Next.js RSC 호환 (use client 자동 주입)
@baneung-pack/tokens
현재: v1.0.4
npmv1.0.4
PATCHREADME 데모 사이트 URL을 새 커스텀 도메인으로 갱신
- 이전: https://baneung-ui-docs-op7v.vercel.app
- 변경: https://ui.baneung.com
- 코드 변경 없음.
v1.0.3
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 신규 추가 (이전엔 license 필드 누락)
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- README의 MIT 배지·푸터를 Apache-2.0으로 교체
- npmjs.com 페이지에 라이선스 표시됨
v1.0.2
PATCHCSS Cascade Layers로 스타일 격리 (@layer baneung)
- ui와 같이 @layer baneung에 래핑
- 데모 사이트 링크 추가
v1.0.1
PATCHnpm 페이지용 README 추가
- 토큰 카테고리 안내. 코드 변경 없음
v1.0.0
MAJOR초기 출시 — CSS / JSON / TS 토큰 SSOT
- 컬러: bg/text/border/focus/status 시맨틱 + neutral/baneungNavy/baneungTeal primitive
- 라이트/다크 두 세트 — [data-theme="dark"] cascade
- 타이포(Pretendard Variable) · 스페이싱(4px) · 라디우스(0/2/4) · 모션 · z-index · breakpoint
- 산출물: tokens.css / tokens.json / tokens.js