@designbasekorea/wordpress-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.
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # @designbasekorea/wordpress-ui
2
+
3
+ WordPress 관리자 플러그인 화면을 위한 Designbase façade/adaptor 패키지입니다.
4
+ WordPress 전체 관리자 프레임을 대체하지 않고, 플러그인 내부의 shell과 반복되는
5
+ 페이지 패턴만 제공합니다.
6
+
7
+ ## 사용
8
+
9
+ Vanilla/PHP 플러그인은 필요한 화면에서만 다음 자산을 enqueue합니다.
10
+
11
+ ```ts
12
+ import '@designbasekorea/wordpress-ui/browser';
13
+ import '@designbasekorea/wordpress-ui/styles.css';
14
+ ```
15
+
16
+ React 플러그인은 React를 peer dependency로 유지하며 다음처럼 사용합니다.
17
+
18
+ ```tsx
19
+ import '@designbasekorea/wordpress-ui/styles.css';
20
+ import {
21
+ AdminDataTable,
22
+ AdminPage,
23
+ AdminPageContent,
24
+ AdminPageHeader,
25
+ AdminSection,
26
+ } from '@designbasekorea/wordpress-ui/react';
27
+ ```
28
+
29
+ `AdminFilterBar`, `AdminDataTable`은 데이터를 조회하거나 저장하지 않습니다. REST,
30
+ nonce, capability, pagination과 같은 비즈니스 상태는 소비 플러그인이 소유합니다.
31
+
32
+ Vanilla/PHP 화면에서는 등록된 ui-wc element를 직접 사용할 수도 있습니다.
33
+
34
+ ```html
35
+ <div class="designbase-wp-admin">
36
+ <db-page-header title="페이지 목록" description="페이지를 관리하세요." variant="minimal">
37
+ <a slot="actions" class="button button-primary" href="?page=my-pages">새 페이지</a>
38
+ </db-page-header>
39
+ </div>
40
+ ```
41
+
42
+ ## 엔트리포인트
43
+
44
+ - `browser`: React 없이 필요한 ui-wc primitives만 등록하고 모바일 sidebar toggle을 보강합니다.
45
+ - `react`: ui-wc primitives의 React façade와 native-first 관리자 패턴을 제공합니다.
46
+ - `styles.css`: `@designbasekorea/theme`의 전체 토큰/시맨틱 변수, ui-wc controls,
47
+ shell, overlays, `icons-webfont`를 scoped로 포함한 기본 스타일입니다. 소비자는 별도의
48
+ `theme.css`나 아이콘 폰트를 추가로 enqueue할 필요가 없습니다.
49
+ - `styles/controls.css`, `styles/shell.css`, `styles/overlays.css`: 선택 로딩용 스타일입니다.
50
+
51
+ 관리자 패턴에서 아이콘이 필요한 경우 Designbase 아이콘 이름을 사용합니다. 아이콘 폰트도
52
+ 기본 스타일에 포함되므로 React 없이 PHP/HTML에서 사용할 수 있습니다.
53
+
54
+ ```html
55
+ <i class="icon-dashboard" aria-hidden="true"></i>
56
+ <i class="icon-search" aria-hidden="true"></i>
57
+ <i class="icon-settings" aria-hidden="true"></i>
58
+ ```
59
+
60
+ 로컬 검증은 `npm run build`, `npm run verify`, `npm run audit:axe` 순서로 실행합니다.
61
+ `audit:axe`는 Chromium이 설치된 환경에서 vanilla 예제의 실제 DOM을 검사합니다.
62
+
63
+ 컴포넌트 미리보기는 Storybook으로 확인할 수 있습니다.
64
+
65
+ ```bash
66
+ cd packages/wordpress-ui
67
+ npm run storybook
68
+ ```
69
+
70
+ 기본 포트는 `http://localhost:6008` 입니다. (`figma-ui` Storybook은 `:6007`)
71
+
72
+ 모든 관리자 패턴과 runtime surface는 `.designbase-wp-admin` 아래에서 동작합니다. 신규
73
+ 플러그인과 테마는 `ui-wc` 또는 이 패키지의 public API만 사용하세요. 기존 UI
74
+ 라이브러리의 전역 객체나 호환 계층은 제공하지 않습니다.
75
+
76
+ ## WordPress 플러그인·테마 enqueue
77
+
78
+ 관리자 화면에서 `admin_enqueue_scripts`와 화면 allowlist는 소비자가 소유합니다.
79
+ 패키지의 `wordpress-ui.php`를 include한 뒤 플러그인이나 테마의 vendor 경로를
80
+ 전달하면 React 없이 같은 runtime을 사용할 수 있습니다.
81
+
82
+ ```php
83
+ require_once get_template_directory() . '/vendor/wordpress-ui/wordpress-ui.php';
84
+
85
+ add_action('admin_enqueue_scripts', function ($hook_suffix) {
86
+ if ($hook_suffix !== 'toplevel_page_my-theme-settings') {
87
+ return;
88
+ }
89
+
90
+ designbase_wordpress_ui_enqueue([
91
+ 'handle' => 'my-theme-wordpress-ui',
92
+ 'base_url' => get_template_directory_uri() . '/vendor/wordpress-ui',
93
+ 'base_path' => get_template_directory() . '/vendor/wordpress-ui',
94
+ ]);
95
+ });
96
+ ```
97
+
98
+ ## 상세 적용 가이드
99
+
100
+ 플러그인과 테마 관리자 화면에 적용하는 전체 규칙은 다음 문서를 참고하세요.
101
+
102
+ - [WordPress 관리자 적용 가이드](./docs/WORDPRESS-ADMIN-GUIDE.md)