Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
49d2db4
refactor: rename packages to src for better structure
3o14 Jan 5, 2026
ced5f8f
feat: add @base-ui/react for headless component primitives
3o14 Jan 5, 2026
f622a58
feat(Button): migrate to @base-ui/react for better accessibility
3o14 Jan 5, 2026
f941e1b
test(Button): add comprehensive test suite with vitest
3o14 Jan 5, 2026
73618bd
fix(storybook): update import paths from packages to src
3o14 Jan 5, 2026
189ad79
feat(Switch): migrate to @base-ui/react for better accessibility
3o14 Jan 5, 2026
9a5b372
test(Switch): add comprehensive test suite
3o14 Jan 5, 2026
8f58f88
feat(Checkbox): migrate to @base-ui/react for better accessibility
3o14 Jan 6, 2026
ba6e367
test(Checkbox): add comprehensive test suite
3o14 Jan 6, 2026
c8283fb
feat(Dialog): migrate to @base-ui/react for better accessibility
3o14 Jan 6, 2026
392727e
test(Dialog): add comprehensive test suite
3o14 Jan 6, 2026
9562939
feat(Dropdown): migrate to @base-ui/react for better accessibility
3o14 Jan 6, 2026
bf97d86
test(Dropdown): add comprehensive test suite
3o14 Jan 6, 2026
d17b66b
feat(TextField): migrate to @base-ui/react for better form handling
3o14 Jan 6, 2026
ec0dc80
test(TextField): add comprehensive test suite
3o14 Jan 6, 2026
5ba781f
test(Text): add comprehensive test suite
3o14 Jan 6, 2026
8012d24
test(Badge): add comprehensive test suite
3o14 Jan 6, 2026
953c8b8
feat: add CSS isolation for Base UI overlay components
3o14 Jan 8, 2026
816695d
feat: add iOS 26+ Safari support for Base UI backdrops
3o14 Jan 8, 2026
5797feb
feat: add Tooltip and Tabs components with Base UI
3o14 Jan 8, 2026
74a28ae
chore: add VS Code file nesting configuration
3o14 Jan 8, 2026
897c314
fix: add missing Tooltip.Trigger for proper hover/click interaction
3o14 Jan 8, 2026
73ec5cd
chore: delete tooltip
3o14 Jan 8, 2026
9057934
refactor: rename Tabs to Tab for better semantics
3o14 Jan 8, 2026
31fef36
chore: type error
3o14 Jan 8, 2026
e3da8af
chore: changeset check ci
3o14 Jan 8, 2026
dd3514e
feat: auto pr
3o14 Jan 8, 2026
a84b4fa
feat: auto changeset
3o14 Jan 8, 2026
336a9a4
docs: add changeset for minor release
3o14 Jan 8, 2026
09a7423
chore: set gh
3o14 Jan 8, 2026
a7bf7f3
fix: sh
3o14 Jan 8, 2026
3f53f53
fix: sh script
3o14 Jan 8, 2026
69f1dbe
fix: changeset-check ci
3o14 Jan 8, 2026
5cfd659
chore: changeset update
3o14 Jan 10, 2026
072a138
chore: test code update
3o14 Jan 10, 2026
1e0fa1c
chore: component jsdoc
3o14 Jan 10, 2026
ef124b7
chore: components type extend
3o14 Jan 10, 2026
976d4f5
chore: remove unnecessary commenets
3o14 Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .changeset/happy-mountain-fly.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
"pine-ui-kit": minor
---

Component updates and improvements

## New Components

- **Tab**: Added tab interface component for organizing content

## Component Improvements

- **Base UI Migration**: Migrated all interactive components to Base UI for better accessibility and form handling
- Enhanced Button, Switch, Checkbox, Dialog, Dropdown, and TextField components
- Improved keyboard navigation and screen reader support
- Better form validation and state management

## Browser Support

- **iOS 26+ Safari**: Added backdrop support for overlay components like Dialog and Dropdown
87 changes: 87 additions & 0 deletions .github/workflows/changeset-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Changeset Check

on:
pull_request:
branches:
- main

jobs:
changeset-check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check if changeset is required
id: check-skip
run: |
# PR에 'skip-changeset' 라벨이 있는지 확인
if [[ "${{ contains(github.event.pull_request.labels.*.name, 'skip-changeset') }}" == "true" ]]; then
echo "skip=true" >> $GITHUB_OUTPUT
echo "⏭️ Skipping changeset check due to 'skip-changeset' label"
exit 0
fi

# 변경된 파일 목록 가져오기
git fetch origin ${{ github.base_ref }}
# main 브랜치를 로컬에 명시적으로 생성 (changeset status를 위해 필요)
git fetch origin ${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)

# 문서, CI, 설정 파일만 변경된 경우 체크
if echo "$CHANGED_FILES" | grep -qvE '^(\.github/|\.changeset/|\.vscode/|docs/|README\.md|LICENSE|\.gitignore|\.prettierrc|\.eslintrc|package\.json|tsconfig\.json|vite\.config\.ts)'; then
echo "skip=false" >> $GITHUB_OUTPUT
echo "📦 Source code changes detected - changeset required"
else
echo "skip=true" >> $GITHUB_OUTPUT
echo "⏭️ Only docs/config changes detected - skipping changeset check"
fi

- name: Setup pnpm
if: steps.check-skip.outputs.skip != 'true'
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
if: steps.check-skip.outputs.skip != 'true'
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"

- name: Install dependencies
if: steps.check-skip.outputs.skip != 'true'
run: pnpm install --frozen-lockfile

- name: Check for changesets
if: steps.check-skip.outputs.skip != 'true'
run: |
# .changeset 디렉토리에 있는 .md 파일 개수 확인 (config.json, README.md 제외)
CHANGESET_COUNT=$(find .changeset -name "*.md" ! -name "README.md" | wc -l)

echo "Found $CHANGESET_COUNT changeset(s)"

if [ "$CHANGESET_COUNT" -eq 0 ]; then
echo "❌ Error: No changeset found!"
echo ""
echo "Please add a changeset to describe your changes:"
echo " pnpm changeset"
echo ""
echo "This helps us maintain a proper changelog and version history."
echo ""
echo "If you believe this PR doesn't need a changeset (docs/config only),"
echo "please add the 'skip-changeset' label to this PR."
exit 1
else
echo "✅ Changeset found!"
echo ""
echo "Changeset files:"
find .changeset -name "*.md" ! -name "README.md" -exec echo " - {}" \;
fi

- name: Validate changeset format
if: steps.check-skip.outputs.skip != 'true'
run: pnpm changeset status --since=origin/${{ github.base_ref }} --verbose
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,13 @@ dist-ssr
*.local
storybook-static

# pnpm
.pnpm-store

# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
.idea
.DS_Store
*.suo
Expand Down
4 changes: 2 additions & 2 deletions .storybook/ThemeWrapper.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import React from "react";
import { ThemeProvider } from "../packages/providers";
import { ThemeProvider } from "../src/providers";
import {
appearanceTheme,
applyAppearanceTheme,
type AppearanceMode,
} from "../packages/tokens/appearanceTheme";
} from "../src/tokens/appearanceTheme";

interface ThemeWrapperProps {
mode: AppearanceMode;
Expand Down
4 changes: 2 additions & 2 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import type { StorybookConfig } from "@storybook/react-vite";
const config: StorybookConfig = {
stories: [
"../.storybook/**/*.mdx",
"../packages/**/*.mdx",
"../packages/**/*.stories.@(js|jsx|mjs|ts|tsx)",
"../src/**/*.mdx",
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)",
],
addons: [
"@storybook/addon-essentials",
Expand Down
4 changes: 2 additions & 2 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React from "react";
import type { Decorator, Preview } from "@storybook/react";
import "../packages/tokens/theme.css";
import "../src/tokens/theme.css";
import { ThemeWrapper } from "./ThemeWrapper";
import {
appearanceTheme,
type AppearanceMode,
} from "../packages/tokens/appearanceTheme";
} from "../src/tokens/appearanceTheme";

const withTheme: Decorator = (Story, context) => {
const theme = (context.globals?.theme || "light") as AppearanceMode;
Expand Down
15 changes: 15 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.expand": false,
"explorer.fileNesting.patterns": {
"*.tsx": "${capture}.css.ts, ${capture}.spec.tsx, ${capture}.stories.tsx, ${capture}.test.tsx",
"*.ts": "${capture}.spec.ts, ${capture}.test.ts",
"package.json": "package-lock.json, pnpm-lock.yaml, yarn.lock, .npmrc, .nvmrc, .node-version",
"tsconfig.json": "tsconfig.*.json",
"vite.config.*": "vitest.config.*, vitest.setup.*",
".eslintrc.*": ".eslintignore, .prettierrc*, .prettierignore",
".gitignore": ".gitattributes, .gitmodules",
"README.md": "CHANGELOG.md, LICENSE, CONTRIBUTING.md",
".storybook": "storybook-static"
}
}
16 changes: 14 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,21 @@
"build": "vite build && tsc --project tsconfig.build.json",
"build:lib": "pnpm run build",
"lint": "eslint .",
"test": "vitest",
"test:ui": "vitest --ui",
"test:run": "vitest run",
"storybook": "storybook dev -p 6006",
"build-storybook": "pnpm run sync-readme && storybook build",
"sync-readme": "node scripts/sync-readme.js",
"prepublishOnly": "pnpm run build:lib",
"changeset": "changeset",
"changeset:auto": "./scripts/auto-changeset.sh",
"version": "changeset version",
"release": "pnpm run version && pnpm run build:lib && npm publish --access public"
"release": "pnpm run version && pnpm run build:lib && npm publish --access public",
"pr": "./scripts/create-pr.sh"
},
"dependencies": {
"@base-ui/react": "^1.0.0",
"clsx": "^2.1.1"
},
"peerDependencies": {
Expand All @@ -68,25 +74,31 @@
"@storybook/react": "^8",
"@storybook/react-vite": "^8",
"@storybook/test": "^8",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.1",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^24.10.1",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"@vanilla-extract/css": "^1.17.4",
"@vanilla-extract/recipes": "^0.5.7",
"@vanilla-extract/vite-plugin": "^5.1.1",
"@vitejs/plugin-react": "^5.1.0",
"@vitest/ui": "^4.0.16",
"eslint": "^9.39.1",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.24",
"eslint-plugin-storybook": "^10.0.7",
"globals": "^16.5.0",
"jsdom": "^27.4.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"storybook": "^8",
"storybook-dark-mode": "^4.0.2",
"typescript": "~5.9.3",
"typescript-eslint": "^8.46.3",
"vite": "^5.4.11"
"vite": "^5.4.11",
"vitest": "^4.0.16"
},
"eslintConfig": {
"extends": [
Expand Down
55 changes: 0 additions & 55 deletions packages/components/Button/Button.tsx

This file was deleted.

96 changes: 0 additions & 96 deletions packages/components/Checkbox/Checkbox.tsx

This file was deleted.

Loading