Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
84a34e2
build(scripts): release-npm에 BREAKING CHANGE 감지 시 major bump 강제 추가
berrypjh May 9, 2026
836eaf7
feat(commitlint-config): 워크스페이스 공통 commitlint 설정 패키지 신규 추가
berrypjh May 12, 2026
399ea69
feat(prettier-config): 워크스페이스 공통 prettier 설정 패키지 신규 추가
berrypjh May 12, 2026
e4cdd68
feat(tsconfig): 워크스페이스 공통 tsconfig 베이스 패키지 신규 추가
berrypjh May 12, 2026
bc602ca
feat(eslint-config): 워크스페이스 공통 eslint flat config 패키지 신규 추가
berrypjh May 12, 2026
b82af16
build(root): 공통 설정 패키지(@berrypjh/*) 채택 및 nx release 등록
berrypjh May 12, 2026
cd70bff
refactor(demo-mobile): 루트 baseConfig가 react 프리셋을 포함하므로 중복 nx.configs[…
berrypjh May 12, 2026
6dc9bb3
refactor(demo-web): 루트 baseConfig가 react 프리셋을 포함하므로 중복 nx.configs[fla…
berrypjh May 12, 2026
d87848d
refactor(react-native-ui): 루트 baseConfig가 react 프리셋을 포함하므로 중복 nx.conf…
berrypjh May 12, 2026
cc06f1c
refactor(react-ui): 루트 baseConfig가 react 프리셋을 포함하므로 중복 nx.configs[fla…
berrypjh May 12, 2026
30eec21
chore(root): 패키지명을 shared-stack으로 변경
berrypjh May 16, 2026
fb37758
chore(demo-web): GitHub 링크를 shared-stack 저장소로 변경
berrypjh May 16, 2026
bdb0cbd
refactor(react-ui): BubbleButton 컴포넌트 제거 (it-tech-blog로 이관)
berrypjh May 16, 2026
8940628
refactor(demo-web): BubbleButton 데모 페이지/라우트 제거
berrypjh May 16, 2026
657fa45
fix(design-tokens): light 테마 텍스트 토큰 WCAG AA 대비 충족
berrypjh May 16, 2026
9634ee7
fix(react-ui): Input 계열 stories a11y 위반 해소 및 InputBase aria 속성 forward
berrypjh May 16, 2026
3f8e2a6
feat(ui-core): button, field, fab, icon-button, menu-item 보편 계약 확장
berrypjh May 16, 2026
91cf75e
refactor(react-ui): 컴포넌트 props가 ui-core contracts를 wrap하도록 정리
berrypjh May 16, 2026
cbd3af6
chore(design-tokens): 미사용 consumer AGENTS.md 생성 로직 제거
berrypjh May 16, 2026
c91f167
chore(ui-core): 미사용 AGENTS.consumer.md 제거
berrypjh May 16, 2026
a8a5532
refactor(ui-core): form/input 유틸을 ui-core utils로 승격
berrypjh May 16, 2026
3be58e4
refactor(react-ui): form/input 유틸 사용처를 ui-core로 전환
berrypjh May 16, 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
34 changes: 0 additions & 34 deletions .prettierrc

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# @berrypjh/ui-source
# @berrypjh/shared-stack

> **Note**
> GitHub Packages 비공개 배포 라이브러리입니다. 설치 전 `.npmrc` 설정이 필요합니다.
Expand Down
8 changes: 0 additions & 8 deletions apps/demo-mobile/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
import nx from '@nx/eslint-plugin';

import baseConfig from '../../eslint.config.mjs';

export default [
...baseConfig,
...nx.configs['flat/react'],
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
},
{
ignores: ['.expo', 'web-build', 'cache', 'dist', '**/out-tsc'],
},
Expand Down
12 changes: 1 addition & 11 deletions apps/demo-web/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,13 +1,3 @@
import nx from '@nx/eslint-plugin';

import baseConfig from '../../eslint.config.mjs';

export default [
...baseConfig,
...nx.configs['flat/react'],
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
// Override or add rules here
rules: {},
},
];
export default [...baseConfig];
2 changes: 0 additions & 2 deletions apps/demo-web/src/app/app.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Route, Routes } from 'react-router-dom';

import { Layout } from './components/Layout';
import { BubbleButtonPage } from './pages/BubbleButtonPage';
import { ButtonPage } from './pages/ButtonPage';
import { FabPage } from './pages/FabPage';
import { HomePage } from './pages/HomePage';
Expand All @@ -25,7 +24,6 @@ export const App = () => {
<Route path="/components/search-field" element={<SearchFieldPage />} />
<Route path="/components/fab" element={<FabPage />} />
<Route path="/components/icon-button" element={<IconButtonPage />} />
<Route path="/components/bubble-button" element={<BubbleButtonPage />} />
</Routes>
</Layout>
);
Expand Down
1 change: 0 additions & 1 deletion apps/demo-web/src/app/components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ const NAV_GROUPS = [
{ label: 'SearchField', path: '/components/search-field' },
{ label: 'FAB', path: '/components/fab' },
{ label: 'IconButton', path: '/components/icon-button' },
{ label: 'BubbleButton', path: '/components/bubble-button' },
],
},
];
Expand Down
87 changes: 0 additions & 87 deletions apps/demo-web/src/app/pages/BubbleButtonPage.tsx

This file was deleted.

2 changes: 1 addition & 1 deletion apps/demo-web/src/app/pages/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export const HomePage = () => {
<Button
variant="outlined"
size="lg"
onClick={() => window.open('https://github.com/berrypjh/ui-source', '_blank')}
onClick={() => window.open('https://github.com/berrypjh/shared-stack', '_blank')}
style={{ borderColor: 'rgba(255,255,255,0.4)', color: '#ffffff' }}
>
View on GitHub
Expand Down
46 changes: 1 addition & 45 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -1,45 +1 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
plugins: [
{
rules: {
'no-header-bang': ({ header }) => {
// 헤더에 '!:'가 포함되어 있으면 에러 반환
return [
!header.includes('!:'),
'실수 방지를 위해 feat!: 문법 사용을 금지합니다. Major 변경은 Footer에 "BREAKING CHANGE"를 사용하세요.',
];
},
},
},
],
rules: {
'no-header-bang': [2, 'always'],
// Type(태그)의 종류를 제한 (레벨: 0=무시, 1=경고, 2=에러)
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'design',
'style',
'refactor',
'test',
'chore',
'build',
'ci',
'revert',
],
],
// Subject의 케이스를 제한
'subject-case': [0, 'always', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
// Subject가 비어있으면 안 됨
'subject-empty': [2, 'never'],
// Type이 비어있으면 안 됨
'type-empty': [2, 'never'],
// Body의 최대 줄 수를 제한
'body-max-line-length': [0, 'always', 200],
},
};
module.exports = { extends: ['@berrypjh/commitlint-config'] };
62 changes: 7 additions & 55 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import nx from '@nx/eslint-plugin';
import jsxA11y from 'eslint-plugin-jsx-a11y';
import reactHooks from 'eslint-plugin-react-hooks';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import base from '@berrypjh/eslint-config/base';
import nx from '@berrypjh/eslint-config/nx';
import react from '@berrypjh/eslint-config/react';

import storybook from 'eslint-plugin-storybook';
import unusedImports from 'eslint-plugin-unused-imports';

export default [
...nx.configs['flat/base'],
...nx.configs['flat/typescript'],
...nx.configs['flat/javascript'],
...base,
...nx,
...react,
...storybook.configs['flat/recommended'],
{
ignores: [
Expand All @@ -21,24 +20,6 @@ export default [
'!.storybook',
],
},
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
rules: {
'@nx/enforce-module-boundaries': [
'error',
{
enforceBuildableLibDependency: true,
allow: ['^.*/eslint(\\.base)?\\.config\\.[cm]?[jt]s$'],
depConstraints: [
{
sourceTag: '*',
onlyDependOnLibsWithTags: ['*'],
},
],
},
],
},
},
{
files: [
'**/*.ts',
Expand All @@ -50,10 +31,6 @@ export default [
'**/*.cjs',
'**/*.mjs',
],
plugins: {
'simple-import-sort': simpleImportSort,
'unused-imports': unusedImports,
},
rules: {
'simple-import-sort/imports': [
'error',
Expand All @@ -80,36 +57,11 @@ export default [
],
},
],
'simple-import-sort/exports': 'error',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
},
},
{
files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],
rules: {
'@typescript-eslint/no-explicit-any': 'error',
},
},
{
files: ['**/*.jsx', '**/*.tsx'],
plugins: {
'react-hooks': reactHooks,
'jsx-a11y': jsxA11y,
},
rules: {
...reactHooks.configs.recommended.rules,
...jsxA11y.flatConfigs.recommended.rules,
// 커스텀 컴포넌트가 autoFocus prop을 forward 하는 패턴은 호출자 책임이므로 제외
'jsx-a11y/no-autofocus': ['error', { ignoreNonDOM: true }],
},
Expand Down
20 changes: 20 additions & 0 deletions libs/commitlint-config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# @berrypjh/commitlint-config

워크스페이스 공통 Commitlint 설정. Conventional Commits 기반.

## 사용

```bash
pnpm add -D @berrypjh/commitlint-config @commitlint/cli
```

```js
// commitlint.config.js
module.exports = { extends: ['@berrypjh/commitlint-config'] };
```

## 규칙 요약

- `type-enum`: feat, fix, docs, design, style, refactor, test, chore, build, ci, revert
- `no-header-bang`: `feat!:` 형태 헤더 금지. Major 변경은 Footer에 `BREAKING CHANGE`를 사용
- `subject-empty`, `type-empty`: 빈 값 금지
39 changes: 39 additions & 0 deletions libs/commitlint-config/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
plugins: [
{
rules: {
'no-header-bang': ({ header }) => {
return [
!header.includes('!:'),
'실수 방지를 위해 feat!: 문법 사용을 금지합니다. Major 변경은 Footer에 "BREAKING CHANGE"를 사용하세요.',
];
},
},
},
],
rules: {
'no-header-bang': [2, 'always'],
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'design',
'style',
'refactor',
'test',
'chore',
'build',
'ci',
'revert',
],
],
'subject-case': [0, 'always', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
'subject-empty': [2, 'never'],
'type-empty': [2, 'never'],
'body-max-line-length': [0, 'always', 200],
},
};
Loading
Loading