ksk-design-system 1.35.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.
Files changed (261) hide show
  1. package/AGENTS.md +190 -0
  2. package/CLAUDE.md +189 -0
  3. package/DESIGN.md +190 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATION.md +107 -0
  6. package/PUBLISHING.md +160 -0
  7. package/README.md +59 -0
  8. package/RELEASE.md +82 -0
  9. package/bin/init.js +112 -0
  10. package/contracts/components.json +1443 -0
  11. package/contracts/rules.json +447 -0
  12. package/dist/class-names.js +4 -0
  13. package/dist/index.js +13157 -0
  14. package/dist/native/ui.js +4928 -0
  15. package/dist/native.js +1559 -0
  16. package/dist/server-variants-Dr_V3bDI.js +55 -0
  17. package/dist/types/class-names.d.ts +27 -0
  18. package/dist/types/components/patterns/admin/bulk-actions.d.ts +17 -0
  19. package/dist/types/components/patterns/admin/chart-controls.d.ts +16 -0
  20. package/dist/types/components/patterns/admin/data-table.d.ts +165 -0
  21. package/dist/types/components/patterns/admin/image-uploader.d.ts +14 -0
  22. package/dist/types/components/patterns/admin/kebab-menu.d.ts +17 -0
  23. package/dist/types/components/patterns/admin/notification-list.d.ts +16 -0
  24. package/dist/types/components/patterns/admin/search-panel.d.ts +9 -0
  25. package/dist/types/components/patterns/admin/status-tabs.d.ts +13 -0
  26. package/dist/types/components/patterns/app-header.d.ts +76 -0
  27. package/dist/types/components/patterns/banner-carousel.d.ts +25 -0
  28. package/dist/types/components/patterns/banner.d.ts +13 -0
  29. package/dist/types/components/patterns/bottom-sheet-form.d.ts +17 -0
  30. package/dist/types/components/patterns/category-nav.d.ts +43 -0
  31. package/dist/types/components/patterns/category-scroll.d.ts +53 -0
  32. package/dist/types/components/patterns/chip-selector.d.ts +20 -0
  33. package/dist/types/components/patterns/chip.d.ts +42 -0
  34. package/dist/types/components/patterns/coach-mark-overlay.d.ts +66 -0
  35. package/dist/types/components/patterns/commerce/bottom-tab-bar.d.ts +27 -0
  36. package/dist/types/components/patterns/commerce/filter-bar.d.ts +39 -0
  37. package/dist/types/components/patterns/commerce/image-carousel.d.ts +14 -0
  38. package/dist/types/components/patterns/commerce/order-summary.d.ts +26 -0
  39. package/dist/types/components/patterns/commerce/price-display.d.ts +20 -0
  40. package/dist/types/components/patterns/commerce/product-card.d.ts +50 -0
  41. package/dist/types/components/patterns/commerce/product-carousel.d.ts +15 -0
  42. package/dist/types/components/patterns/commerce/quantity-selector.d.ts +21 -0
  43. package/dist/types/components/patterns/commerce/rating-display.d.ts +15 -0
  44. package/dist/types/components/patterns/commerce/review-card.d.ts +22 -0
  45. package/dist/types/components/patterns/commerce/review-summary.d.ts +12 -0
  46. package/dist/types/components/patterns/confirm-dialog.d.ts +32 -0
  47. package/dist/types/components/patterns/cookie-consent.d.ts +62 -0
  48. package/dist/types/components/patterns/empty-state.d.ts +15 -0
  49. package/dist/types/components/patterns/error-state.d.ts +10 -0
  50. package/dist/types/components/patterns/file-upload.d.ts +31 -0
  51. package/dist/types/components/patterns/filter-chip.d.ts +26 -0
  52. package/dist/types/components/patterns/footer.d.ts +24 -0
  53. package/dist/types/components/patterns/form-field.d.ts +30 -0
  54. package/dist/types/components/patterns/form.d.ts +13 -0
  55. package/dist/types/components/patterns/list-item.d.ts +23 -0
  56. package/dist/types/components/patterns/list-skeletons.d.ts +43 -0
  57. package/dist/types/components/patterns/menu-drawer.d.ts +27 -0
  58. package/dist/types/components/patterns/notification-badge.d.ts +15 -0
  59. package/dist/types/components/patterns/progress-steps.d.ts +7 -0
  60. package/dist/types/components/patterns/review-overlay.d.ts +25 -0
  61. package/dist/types/components/patterns/search-bar.d.ts +6 -0
  62. package/dist/types/components/patterns/section-header.d.ts +8 -0
  63. package/dist/types/components/patterns/share-buttons.d.ts +13 -0
  64. package/dist/types/components/patterns/shells/admin-shell.d.ts +8 -0
  65. package/dist/types/components/patterns/shells/app-shell.d.ts +7 -0
  66. package/dist/types/components/patterns/shells/marketing-shell.d.ts +7 -0
  67. package/dist/types/components/patterns/simple-pagination.d.ts +69 -0
  68. package/dist/types/components/patterns/stat-card.d.ts +43 -0
  69. package/dist/types/components/patterns/sticky-action-bar.d.ts +27 -0
  70. package/dist/types/components/patterns/swipe-row.d.ts +17 -0
  71. package/dist/types/components/patterns/tag-input.d.ts +20 -0
  72. package/dist/types/components/patterns/tag.d.ts +7 -0
  73. package/dist/types/components/ui/accordion.d.ts +7 -0
  74. package/dist/types/components/ui/alert-dialog.d.ts +47 -0
  75. package/dist/types/components/ui/alert.d.ts +45 -0
  76. package/dist/types/components/ui/auto-grow-textarea.d.ts +40 -0
  77. package/dist/types/components/ui/avatar.d.ts +6 -0
  78. package/dist/types/components/ui/badge.d.ts +18 -0
  79. package/dist/types/components/ui/breadcrumb.d.ts +16 -0
  80. package/dist/types/components/ui/button.d.ts +29 -0
  81. package/dist/types/components/ui/calendar.d.ts +5 -0
  82. package/dist/types/components/ui/card.d.ts +28 -0
  83. package/dist/types/components/ui/checkbox-card.d.ts +29 -0
  84. package/dist/types/components/ui/checkbox-field.d.ts +24 -0
  85. package/dist/types/components/ui/checkbox-group.d.ts +33 -0
  86. package/dist/types/components/ui/checkbox.d.ts +44 -0
  87. package/dist/types/components/ui/coach-mark.d.ts +27 -0
  88. package/dist/types/components/ui/collapsible.d.ts +24 -0
  89. package/dist/types/components/ui/combobox.d.ts +19 -0
  90. package/dist/types/components/ui/countdown-timer.d.ts +39 -0
  91. package/dist/types/components/ui/date-picker.d.ts +53 -0
  92. package/dist/types/components/ui/dialog.d.ts +54 -0
  93. package/dist/types/components/ui/dropdown-filter.d.ts +35 -0
  94. package/dist/types/components/ui/dropdown-menu.d.ts +42 -0
  95. package/dist/types/components/ui/error-boundary.d.ts +66 -0
  96. package/dist/types/components/ui/form.d.ts +61 -0
  97. package/dist/types/components/ui/hover-card.d.ts +24 -0
  98. package/dist/types/components/ui/image-gallery.d.ts +28 -0
  99. package/dist/types/components/ui/input.d.ts +17 -0
  100. package/dist/types/components/ui/label.d.ts +4 -0
  101. package/dist/types/components/ui/multi-select.d.ts +21 -0
  102. package/dist/types/components/ui/navigation-bar.d.ts +58 -0
  103. package/dist/types/components/ui/number-input.d.ts +20 -0
  104. package/dist/types/components/ui/pagination.d.ts +26 -0
  105. package/dist/types/components/ui/pill-toggle.d.ts +16 -0
  106. package/dist/types/components/ui/popover.d.ts +7 -0
  107. package/dist/types/components/ui/progress-ring.d.ts +31 -0
  108. package/dist/types/components/ui/progress.d.ts +34 -0
  109. package/dist/types/components/ui/radio-group.d.ts +22 -0
  110. package/dist/types/components/ui/responsive-dialog.d.ts +31 -0
  111. package/dist/types/components/ui/scroll-area.d.ts +5 -0
  112. package/dist/types/components/ui/select.d.ts +22 -0
  113. package/dist/types/components/ui/separator.d.ts +4 -0
  114. package/dist/types/components/ui/sheet.d.ts +139 -0
  115. package/dist/types/components/ui/skeleton.d.ts +31 -0
  116. package/dist/types/components/ui/slider.d.ts +14 -0
  117. package/dist/types/components/ui/social-icon-data.d.ts +10 -0
  118. package/dist/types/components/ui/social-icon.d.ts +38 -0
  119. package/dist/types/components/ui/social-login-button.d.ts +10 -0
  120. package/dist/types/components/ui/spinner.d.ts +22 -0
  121. package/dist/types/components/ui/star-rating.d.ts +12 -0
  122. package/dist/types/components/ui/sub-nav.d.ts +17 -0
  123. package/dist/types/components/ui/switch.d.ts +4 -0
  124. package/dist/types/components/ui/sync-status-badge.d.ts +17 -0
  125. package/dist/types/components/ui/tabs.d.ts +15 -0
  126. package/dist/types/components/ui/textarea.d.ts +8 -0
  127. package/dist/types/components/ui/time-picker.d.ts +14 -0
  128. package/dist/types/components/ui/toast.d.ts +49 -0
  129. package/dist/types/components/ui/tooltip.d.ts +7 -0
  130. package/dist/types/index.d.ts +174 -0
  131. package/dist/types/lib/server-variants/button-variants.d.ts +20 -0
  132. package/dist/types/lib/utils.d.ts +2 -0
  133. package/dist/types/native/components/Accordion.d.ts +12 -0
  134. package/dist/types/native/components/Alert.d.ts +9 -0
  135. package/dist/types/native/components/AlertDialog.d.ts +11 -0
  136. package/dist/types/native/components/AppHeader.d.ts +10 -0
  137. package/dist/types/native/components/AppShell.d.ts +13 -0
  138. package/dist/types/native/components/AutoGrowTextarea.d.ts +8 -0
  139. package/dist/types/native/components/Avatar.d.ts +8 -0
  140. package/dist/types/native/components/Badge.d.ts +8 -0
  141. package/dist/types/native/components/Banner.d.ts +10 -0
  142. package/dist/types/native/components/BannerCarousel.d.ts +8 -0
  143. package/dist/types/native/components/BottomSheetForm.d.ts +10 -0
  144. package/dist/types/native/components/BottomTabBar.d.ts +8 -0
  145. package/dist/types/native/components/Breadcrumb.d.ts +12 -0
  146. package/dist/types/native/components/Button.d.ts +9 -0
  147. package/dist/types/native/components/Calendar.d.ts +8 -0
  148. package/dist/types/native/components/Card.d.ts +11 -0
  149. package/dist/types/native/components/CategoryNav.d.ts +13 -0
  150. package/dist/types/native/components/CategoryScroll.d.ts +12 -0
  151. package/dist/types/native/components/Checkbox.d.ts +7 -0
  152. package/dist/types/native/components/CheckboxCard.d.ts +8 -0
  153. package/dist/types/native/components/CheckboxField.d.ts +8 -0
  154. package/dist/types/native/components/CheckboxGroup.d.ts +12 -0
  155. package/dist/types/native/components/Chip.d.ts +17 -0
  156. package/dist/types/native/components/ChipSelector.d.ts +13 -0
  157. package/dist/types/native/components/CoachMark.d.ts +12 -0
  158. package/dist/types/native/components/CoachMarkOverlay.d.ts +19 -0
  159. package/dist/types/native/components/Collapsible.d.ts +7 -0
  160. package/dist/types/native/components/Combobox.d.ts +14 -0
  161. package/dist/types/native/components/ConfirmDialog.d.ts +7 -0
  162. package/dist/types/native/components/CountdownTimer.d.ts +7 -0
  163. package/dist/types/native/components/DatePicker.d.ts +10 -0
  164. package/dist/types/native/components/Dialog.d.ts +12 -0
  165. package/dist/types/native/components/DropdownFilter.d.ts +12 -0
  166. package/dist/types/native/components/DropdownMenu.d.ts +19 -0
  167. package/dist/types/native/components/EmptyState.d.ts +8 -0
  168. package/dist/types/native/components/ErrorState.d.ts +8 -0
  169. package/dist/types/native/components/FileUpload.d.ts +12 -0
  170. package/dist/types/native/components/FilterBar.d.ts +13 -0
  171. package/dist/types/native/components/FilterChip.d.ts +7 -0
  172. package/dist/types/native/components/Footer.d.ts +9 -0
  173. package/dist/types/native/components/FormField.d.ts +9 -0
  174. package/dist/types/native/components/GlassView.d.ts +25 -0
  175. package/dist/types/native/components/ImageCarousel.d.ts +8 -0
  176. package/dist/types/native/components/ImageGallery.d.ts +7 -0
  177. package/dist/types/native/components/Input.d.ts +9 -0
  178. package/dist/types/native/components/Label.d.ts +7 -0
  179. package/dist/types/native/components/ListItem.d.ts +11 -0
  180. package/dist/types/native/components/ListSkeletons.d.ts +6 -0
  181. package/dist/types/native/components/MarketingShell.d.ts +9 -0
  182. package/dist/types/native/components/MenuDrawer.d.ts +21 -0
  183. package/dist/types/native/components/MultiSelect.d.ts +13 -0
  184. package/dist/types/native/components/NavigationBar.d.ts +18 -0
  185. package/dist/types/native/components/NotificationBadge.d.ts +9 -0
  186. package/dist/types/native/components/NumberInput.d.ts +9 -0
  187. package/dist/types/native/components/OrderSummary.d.ts +10 -0
  188. package/dist/types/native/components/Pagination.d.ts +7 -0
  189. package/dist/types/native/components/PillToggle.d.ts +12 -0
  190. package/dist/types/native/components/Popover.d.ts +14 -0
  191. package/dist/types/native/components/PriceDisplay.d.ts +8 -0
  192. package/dist/types/native/components/ProductCard.d.ts +14 -0
  193. package/dist/types/native/components/ProductCarousel.d.ts +11 -0
  194. package/dist/types/native/components/Progress.d.ts +7 -0
  195. package/dist/types/native/components/ProgressRing.d.ts +12 -0
  196. package/dist/types/native/components/ProgressSteps.d.ts +9 -0
  197. package/dist/types/native/components/QuantitySelector.d.ts +6 -0
  198. package/dist/types/native/components/RadioGroup.d.ts +13 -0
  199. package/dist/types/native/components/RatingDisplay.d.ts +7 -0
  200. package/dist/types/native/components/ResponsiveDialog.d.ts +7 -0
  201. package/dist/types/native/components/ReviewCard.d.ts +11 -0
  202. package/dist/types/native/components/ReviewOverlay.d.ts +7 -0
  203. package/dist/types/native/components/ReviewSummary.d.ts +7 -0
  204. package/dist/types/native/components/ScrollArea.d.ts +9 -0
  205. package/dist/types/native/components/SearchBar.d.ts +9 -0
  206. package/dist/types/native/components/SectionHeader.d.ts +10 -0
  207. package/dist/types/native/components/Select.d.ts +14 -0
  208. package/dist/types/native/components/Separator.d.ts +5 -0
  209. package/dist/types/native/components/ShareButtons.d.ts +11 -0
  210. package/dist/types/native/components/Sheet.d.ts +20 -0
  211. package/dist/types/native/components/SimplePagination.d.ts +7 -0
  212. package/dist/types/native/components/Skeleton.d.ts +11 -0
  213. package/dist/types/native/components/Slider.d.ts +9 -0
  214. package/dist/types/native/components/SocialIcon.d.ts +12 -0
  215. package/dist/types/native/components/SocialLoginButton.d.ts +8 -0
  216. package/dist/types/native/components/Spinner.d.ts +6 -0
  217. package/dist/types/native/components/Stack.d.ts +13 -0
  218. package/dist/types/native/components/StarRating.d.ts +9 -0
  219. package/dist/types/native/components/StatCard.d.ts +7 -0
  220. package/dist/types/native/components/StickyActionBar.d.ts +6 -0
  221. package/dist/types/native/components/SubNav.d.ts +12 -0
  222. package/dist/types/native/components/SwipeRow.d.ts +14 -0
  223. package/dist/types/native/components/Switch.d.ts +4 -0
  224. package/dist/types/native/components/SyncStatusBadge.d.ts +6 -0
  225. package/dist/types/native/components/Tabs.d.ts +23 -0
  226. package/dist/types/native/components/Tag.d.ts +10 -0
  227. package/dist/types/native/components/TagInput.d.ts +7 -0
  228. package/dist/types/native/components/Text.d.ts +10 -0
  229. package/dist/types/native/components/Textarea.d.ts +7 -0
  230. package/dist/types/native/components/TimePicker.d.ts +12 -0
  231. package/dist/types/native/components/Toast.d.ts +18 -0
  232. package/dist/types/native/components/index.d.ts +99 -0
  233. package/dist/types/native/components/social-icon-data.d.ts +5 -0
  234. package/dist/types/native/index.d.ts +4 -0
  235. package/dist/types/native/theme/ThemeProvider.d.ts +21 -0
  236. package/dist/types/native/typography.d.ts +8 -0
  237. package/dist/types/tokens/native/index.d.ts +13 -0
  238. package/dist/types/tokens/native/primitives.d.ts +116 -0
  239. package/dist/types/tokens/native/scales.d.ts +270 -0
  240. package/dist/types/tokens/native/themes.d.ts +1147 -0
  241. package/eslint/deprecated.js +104 -0
  242. package/eslint/no-colorless-border.js +217 -0
  243. package/package.json +215 -0
  244. package/scripts/codemod/README.md +51 -0
  245. package/scripts/codemod/template.mjs +164 -0
  246. package/src/components/COMPONENT_LOOKUP.md +190 -0
  247. package/src/preset.css +168 -0
  248. package/src/styles/categorical.css +161 -0
  249. package/src/styles/glass.css +365 -0
  250. package/src/styles/primitive.css +161 -0
  251. package/src/styles/semantic.css +247 -0
  252. package/src/styles/typography.css +140 -0
  253. package/src/themes/README.md +44 -0
  254. package/src/themes/blue.css +21 -0
  255. package/src/themes/default.css +12 -0
  256. package/src/themes/green.css +22 -0
  257. package/src/themes/orange.css +21 -0
  258. package/src/themes/violet.css +22 -0
  259. package/templates/AGENTS.md +77 -0
  260. package/templates/CLAUDE.md +77 -0
  261. package/tokens.json +607 -0
package/MIGRATION.md ADDED
@@ -0,0 +1,107 @@
1
+ # Migration Guide — `ksk-design-system`
2
+
3
+ メジャーバージョン間の移行ガイド。
4
+ patch / minor は原則破壊変更なし、自動アップグレード可(例外: **v1.34.0 で npm パッケージ名を変更**。import の置換が必要。下記参照)。
5
+
6
+ ## v2.0 (未リリース)
7
+
8
+ まだメジャー破壊変更の予定はなし。
9
+
10
+ 破壊変更を入れる際にはここに以下を書く:
11
+ 1. 削除した識別子 / prop の一覧(rename テーブル)
12
+ 2. before / after コード例
13
+ 3. 自動移行コマンド: `npx ksk-design-system codemod v1-to-v2 ./src`
14
+ 4. 手動対応が必要な項目(codemod では拾えないケース)
15
+
16
+ ---
17
+
18
+ ## v1 系内の minor 変更(参考)
19
+
20
+ ### v1.34.0 — パッケージ名変更(要対応)+ RN/Expo 対応
21
+
22
+ **npm パッケージ名を `@ksk/design-system` → `ksk-design-system` に変更**(npm スコープ除去・OSS 公開準備)。機能面の破壊はないが、**import の一括置換が必要**:
23
+
24
+ - TS/JS: `from "@ksk/design-system"` → `from "ksk-design-system"`
25
+ - CSS: `@import "@ksk/design-system/preset"` → `@import "ksk-design-system/preset"`(`/themes/*` も同様)
26
+ - 依存名: package.json の `@ksk/design-system` → `ksk-design-system`(vendoring の tgz 差し替え時)
27
+
28
+ 消費リポでの一括置換例:
29
+
30
+ ```bash
31
+ git grep -lz '@ksk/design-system' -- src \
32
+ | xargs -0 sed -i '' 's#@ksk/design-system#ksk-design-system#g'
33
+ ```
34
+
35
+ あわせて追加(いずれも破壊変更なし):
36
+
37
+ - **RN/Expo 対応**: `ksk-design-system/native`(解決済みトークン)と `ksk-design-system/native/ui`(RN コンポーネント)を新設
38
+ - **CheckboxField** コンポーネント追加
39
+ - 角丸トークンに `md`(6px) / `xl`(12px) を許可セットへ追加
40
+
41
+ ### v1.16.0 (予定)
42
+
43
+ 新機能追加のみ・破壊変更なし:
44
+
45
+ - **Button** に `inverse` / `ghost-inverse` バリアント追加
46
+ - **Button** に `hero` サイズ追加
47
+ - **Checkbox** に `label` / `description` / `count` props 追加(polymorphic 化)
48
+ - **Alert** に prop ベース API 追加(`title` / `description` / `icon` / `action`)
49
+ - **Chip** に `soldOut` / `count` / `href` 状態追加
50
+ - **Storybook** で autodocs グローバル化、guidelines.mdx 追加
51
+ - **scripts/check-deps.sh** で ui → patterns 階層の逆依存を CI でブロック
52
+ - **Vitest** 最小導入 + backwards-compat スイート
53
+ - 全コンポーネントに `data-slot` / `data-variant` / `data-size` を徹底
54
+ - **preset.css**: Tailwind v4 の `currentColor` 既定対策として、border-color / outline-color のベースレイヤ保険を追加。`@import "ksk-design-system/preset"` するだけで有効。破壊変更なし — 明示色を持つ枠線は不変で、色未指定の枠線のフォールバックのみ `--border` / `--ring` に固定される(消費側で枠線が黒ずむ不具合を防止)
55
+
56
+ 何もしなくても既存コードはそのまま動く。
57
+
58
+ ### v1.15.x
59
+
60
+ 過去の minor / patch 履歴は GitHub Releases を参照。
61
+
62
+ ---
63
+
64
+ ## 移行作業の進め方
65
+
66
+ ### Step 1. Codemod を dry-run
67
+
68
+ ```bash
69
+ npx ksk-design-system codemod vX-to-vY ./src --dry
70
+ ```
71
+
72
+ 書き換え対象ファイル一覧が表示される。
73
+
74
+ ### Step 2. 実際に適用
75
+
76
+ ```bash
77
+ npx ksk-design-system codemod vX-to-vY ./src
78
+ git diff
79
+ ```
80
+
81
+ `git diff` で意図通りか確認。
82
+
83
+ ### Step 3. ESLint で残骸チェック
84
+
85
+ `eslint.config.js` に:
86
+
87
+ ```js
88
+ import kskDeprecated from "ksk-design-system/eslint/deprecated"
89
+
90
+ export default [
91
+ {
92
+ plugins: { "ksk-deprecated": kskDeprecated },
93
+ rules: { "ksk-deprecated/no-deprecated": "error" },
94
+ },
95
+ ]
96
+ ```
97
+
98
+ これで codemod が拾えなかった旧 API の使用を検出できる。
99
+
100
+ ### Step 4. 動作確認
101
+
102
+ ```bash
103
+ npm run test
104
+ npm run build
105
+ ```
106
+
107
+ それから本番デプロイへ。
package/PUBLISHING.md ADDED
@@ -0,0 +1,160 @@
1
+ # Publishing — `ksk-design-system`
2
+
3
+ `ksk-design-system` のリリース・配布手順。
4
+
5
+ > **配布方式**: このパッケージは npm レジストリには公開しない。
6
+ > `npm pack` で生成した tgz を各消費リポジトリの `vendor/` に置き、
7
+ > `package.json` から `file:vendor/ksk-design-system-X.Y.Z.tgz` で参照する **vendoring 方式**。
8
+ > 消費リポ: belle-todo / trip_todo / ninshin-todo / yokoku-app / pawly(いずれも `~/LocalDev/` 直下)。
9
+
10
+ ## 前提
11
+
12
+ - main ブランチが clean (`git status` で何もない)、リモートと一致
13
+ - 消費リポが `~/LocalDev/<name>` に clone 済みで、`gh` CLI が使えること(PR 自動作成に使用)
14
+
15
+ ## 最短手順(推奨)
16
+
17
+ ```bash
18
+ bash scripts/release.sh minor # patch / minor / major / x.y.z
19
+ ```
20
+
21
+ これだけ。中で以下を全部やる:
22
+
23
+ 1. `git diff --quiet` & main ブランチチェック(曜日チェック)
24
+ 2. `npm run check`
25
+ 3. `npm version <level>`(tag 切り)
26
+ 4. `npm pack`(新名 tgz 生成)
27
+ 5. `git push origin main --tags`
28
+ 6. `bash scripts/bump-consumers.sh <version>`(5 リポへ PR 自動作成)
29
+
30
+ > v1.35.0 で旧名 `@ksk/design-system` 互換 tgz の生成は廃止。
31
+ > 消費5リポ + todo-shared が新名 `ksk-design-system` に移行済。
32
+ > 旧名復活が必要になった場合は git history で v1.35.0 期の release.sh を参照。
33
+
34
+ 個別に手作業したい場合は以下の手動フローを参照。
35
+
36
+ ## リリースフロー(手動)
37
+
38
+ ### 1. ローカルで動作確認
39
+
40
+ ```bash
41
+ npm run check # tsc + lint + deps + drift + lookup
42
+ npm test # vitest スイート
43
+ npm run storybook # 目視確認(特に新機能のストーリー)
44
+ ```
45
+
46
+ すべて green であること。失敗があれば修正してコミット。
47
+
48
+ ### 2. バージョン更新
49
+
50
+ ```bash
51
+ # patch (bug fix) 例: 1.15.2 → 1.15.3
52
+ npm version patch
53
+
54
+ # minor (feature add, 互換あり) 例: 1.15.2 → 1.16.0
55
+ npm version minor
56
+
57
+ # major (破壊変更) 例: 1.15.2 → 2.0.0
58
+ npm version major
59
+ ```
60
+
61
+ `npm version` が自動で `package.json` を更新し、`v1.16.0` タグを切る。
62
+ `dist/` の再ビルド・コミットはこの version bump のタイミングでのみ行う。
63
+
64
+ ### 3. tgz 生成
65
+
66
+ ```bash
67
+ npm pack
68
+ ```
69
+
70
+ `prepack` フックで `npm run build:lib` が自動実行され、リポ直下に
71
+ `ksk-design-system-X.Y.Z.tgz` が生成される。
72
+
73
+ 中身を確認したい場合:
74
+
75
+ ```bash
76
+ npm pack --dry-run | tail -50
77
+ ```
78
+
79
+ 公開ファイル一覧を確認。`package.json#files` で許可した中身だけが入っているはず:
80
+ - `dist/`
81
+ - `bin/`
82
+ - `templates/`
83
+ - `contracts/`
84
+ - `eslint/`
85
+ - `scripts/codemod/`
86
+ - `src/preset.css` / `src/styles/` / `src/themes/`
87
+ - `tokens.json`
88
+ - `AGENTS.md` / `CLAUDE.md` / `MIGRATION.md` / `PUBLISHING.md` / `RELEASE.md`
89
+ - `src/components/COMPONENT_LOOKUP.md`
90
+
91
+ ### 4. push
92
+
93
+ ```bash
94
+ git push origin main --tags
95
+ ```
96
+
97
+ ### 5. 消費リポへ配布
98
+
99
+ ```bash
100
+ # 全リポ一括
101
+ bash scripts/bump-consumers.sh 1.16.0
102
+
103
+ # 特定リポのみ
104
+ bash scripts/bump-consumers.sh 1.16.0 belle-todo pawly
105
+ ```
106
+
107
+ 各消費リポで `chore/bump-ds-<version>` ブランチを切り、tgz の `vendor/` 配置・
108
+ `package.json` の参照書換・`npm install`・commit・push・PR 作成まで自動で行う。
109
+ 失敗したリポはスキップされ最後にまとめて報告されるので、個別にリトライする。
110
+
111
+ 過去版の tgz は `vendor/` に残す運用(ロールバックを git revert だけで済ませるため)。
112
+
113
+ ### 6. PR マージ
114
+
115
+ 各消費リポの PR で CI が green なことを確認してマージ。
116
+ 破壊変更を含む場合は、全リポ一括でなく 1〜2 リポで先に動作確認してから残りを配布する。
117
+
118
+ ## 緊急ホットフィックス
119
+
120
+ 本番障害時の応急対応:
121
+
122
+ ```bash
123
+ # main から直接でも OK(hotfix ブランチを切る暇がない時)
124
+ # 修正コミット
125
+ git commit -m "fix: 重大なバグの説明"
126
+
127
+ npm version patch
128
+ npm pack
129
+ git push origin main --tags
130
+ bash scripts/bump-consumers.sh <version> <影響リポ...>
131
+ ```
132
+
133
+ 修正コミットの背景・影響範囲を `RELEASE.md` の「ホットフィックス履歴」セクションに必ず追記。
134
+
135
+ ## バージョニング規約
136
+
137
+ `ksk-design-system` は [Semantic Versioning](https://semver.org/lang/ja/) に従う:
138
+
139
+ | 種類 | 内容 | 例 |
140
+ |---|---|---|
141
+ | patch | バグ修正・内部最適化 | 1.15.2 → 1.15.3 |
142
+ | minor | 新コンポーネント追加・新 prop 追加(既存壊さない) | 1.15.x → 1.16.0 |
143
+ | major | 既存 prop 削除・コンポーネント rename・default 値変更 | 1.x → 2.0.0 |
144
+
145
+ 破壊変更時は `scripts/codemod/` に migration script を必ず添える。
146
+ `MIGRATION.md` に rename テーブル / before-after を文書化。
147
+
148
+ ## 注意
149
+
150
+ - 配布前に必ず `npm pack --dry-run` で中身確認
151
+ - `package.json#exports` を変更したら必ず利用側プロジェクトでの import を試す
152
+ - 金曜午後のリリースは厳禁(週末に障害対応できない)
153
+ - メジャーリリースは月初の月曜が望ましい(フィードバック収集期間が取れる)
154
+
155
+ ## npm 公開について
156
+
157
+ 過去にタグ push で npm publish する GitHub Actions(`publish.yml`)が存在したが、
158
+ 実際の配布が vendoring 方式であり NPM_TOKEN も未設定で失敗し続けていたため削除した。
159
+ 将来 npm レジストリ公開に切り替える場合は、NPM_TOKEN の Secrets 登録と
160
+ workflow の再作成をセットで行うこと。
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # KSK Design System
2
+
3
+ 複数クライアント案件を **1つのデザインシステム** で高速に回すために設計された、React 製のマルチテーマ対応 UI ライブラリ。BtoB / SaaS の信頼感と EC / BtoC の購買体験、2つのドメインの設計思想を統合しています。
4
+
5
+ **🔗 ライブ Storybook → https://ksk-design-system.vercel.app**
6
+
7
+ 110 コンポーネントを実際に操作・確認できます。
8
+
9
+ ---
10
+
11
+ ## ✨ 特徴
12
+
13
+ - **マルチテーマ** — Brand 色の 10 行を差し替えるだけで、全コンポーネントの見た目が自動で切り替わる(Primitive → Semantic → Bridge の 3 層トークン構造)
14
+ - **アクセシブル** — shadcn/ui(Radix UI ベース)+ `@storybook/addon-a11y` で a11y を担保
15
+ - **Tailwind CSS v4 ネイティブ** — `@theme` ベースのトークン設計
16
+ - **型安全** — React 19 + TypeScript、CVA によるバリアント管理
17
+ - **110 コンポーネント** — 汎用 UI 55 / EC 系 11 / 管理画面系 8 / レイアウトシェル 3 / 汎用パターン 33
18
+
19
+ ## 🎨 テーマ
20
+
21
+ Brand 色を差し替えるだけで業種に合わせた配色に切り替わります。
22
+
23
+ | テーマ | Brand-500 | 想定業種 |
24
+ |--------|-----------|---------|
25
+ | Default (Blue) | `#3B82F6` | 汎用・SaaS・BtoB |
26
+ | Orange | `#F97316` | EC・フード・エンタメ |
27
+ | Green | `#16A34A` | ヘルスケア・サステナ・金融 |
28
+ | Violet | `#7C3AED` | プレミアム・クリエイティブ・教育 |
29
+
30
+ ## 🧱 技術スタック
31
+
32
+ React 19 + TypeScript / Vite / **Tailwind CSS v4** / shadcn/ui(Radix UI)/ CVA / iconsax-reactjs / Storybook
33
+
34
+ **Peer dependencies**: `react` 18 or 19, `react-dom`, `tailwindcss` ^4, `radix-ui`, `@radix-ui/react-slot`, `iconsax-reactjs`
35
+
36
+ ## 🚀 使い方
37
+
38
+ ```css
39
+ /* プロジェクトの CSS */
40
+ @import "ksk-design-system/preset";
41
+ @import "./themes/my-client.css"; /* Brand 色を差し替えたテーマ */
42
+ ```
43
+
44
+ ```tsx
45
+ import { Button, Card, Input, FormField } from "ksk-design-system"
46
+ ```
47
+
48
+ 新規クライアント案件では、テーマファイルで `--Primitive-Brand-500` などブランドカラーの 10 行を定義するだけで、全コンポーネントがそのブランドカラーで動作します。
49
+
50
+ > **インストールについて**: 現在は npm 未公開です。まずは上のライブ Storybook でコンポーネントと挙動をご確認ください。npm パッケージとしての配布を準備中です。
51
+
52
+ ## 📖 ドキュメント
53
+
54
+ - **ライブ Storybook**: https://ksk-design-system.vercel.app — 全コンポーネントのバリアント・テーマ切り替えを操作可能
55
+ - 設計思想・トークン体系の詳細は `CLAUDE.md` / `DESIGN.md` を参照
56
+
57
+ ## 📄 ライセンス
58
+
59
+ [MIT](./LICENSE) © 奥野圭祐 (Keisuke Okuno)
package/RELEASE.md ADDED
@@ -0,0 +1,82 @@
1
+ # Release Cadence — `ksk-design-system`
2
+
3
+ `ksk-design-system` のリリーススケジュール・運用ルール。
4
+
5
+ ## 通常リリースサイクル
6
+
7
+ | 種類 | 頻度 | 曜日 |
8
+ |---|---|---|
9
+ | patch | 必要時 | 月〜木(金曜禁止) |
10
+ | minor | 隔週 | 火曜 or 水曜 |
11
+ | major | 四半期 | 月初の月曜 |
12
+
13
+ **金曜午後・休前日のリリースは禁止**。週末に障害対応できる体制でない時間帯は patch も避ける。
14
+
15
+ ## メジャーリリースの段取り
16
+
17
+ メジャー (`vX → vX+1`) は破壊変更を含むため、最低 4 週間前から計画する:
18
+
19
+ ```
20
+ T-4w 破壊変更内容の確定 → MIGRATION.md 草案作成
21
+ T-3w scripts/codemod/vX-to-vY.mjs を実装、利用側で dry-run 検証
22
+ T-2w RC 版の tgz を 1〜2 の消費リポへ先行配布、動作確認
23
+ T-1w feedback 反映、ESLint 旧 API ルールを "error" に昇格
24
+ T-0 全消費リポへ配布 (bump-consumers.sh)、リリースノート公開、社内告知
25
+ T+1w 次の patch で旧 API を完全削除
26
+ ```
27
+
28
+ ## ホットフィックス手順
29
+
30
+ 本番障害が発生したら:
31
+
32
+ 1. main で直接修正(or hotfix ブランチ)
33
+ 2. `npm version patch`
34
+ 3. `npm pack` → `bash scripts/bump-consumers.sh <version> <影響リポ...>`
35
+ 4. 影響範囲・原因・修正内容を「ホットフィックス履歴」に記録
36
+ 5. ポストモーテムを Issue / wiki に書く
37
+
38
+ ## ホットフィックス履歴
39
+
40
+ | 日付 | バージョン | 内容 | 影響 |
41
+ |---|---|---|---|
42
+ | 2026-05-30 | v1.21.2 | Sheet (`side="bottom"` / `swipeToClose` / `bottom-glass`) が仮想キーボード表示時にシート上端を画面外へ出さないよう `visualViewport` 監視で修正(PR #12) | モバイルの入力付きボトムシートでタイトル/ドラッグハンドルが隠れる不具合を解消 |
43
+ | 2026-06-13 | v1.31.1 | `.glass-specular > *` が**絶対配置の子要素**の `position`/`z-index` を踏み潰す問題を `:not(.absolute):not(.fixed):not(.sticky)` 除外で修正 | glass 面に重ねた絶対配置オーバーレイ(閉じる × 等)が consumer 側の `absolute`/`z-*` を奪われ角からはみ出す不具合を解消 |
44
+
45
+ 新しいホットフィックスがあれば追記する。
46
+
47
+ ## リリースノート書き方
48
+
49
+ GitHub Releases にコピペできるテンプレ:
50
+
51
+ ```md
52
+ ## v1.16.0 (2026-MM-DD)
53
+
54
+ ### Features
55
+ - Button: `inverse` / `ghost-inverse` バリアント追加(暗背景上の CTA 用)
56
+ - Button: `hero` サイズ追加(hero / final-CTA 専用ピル型)
57
+ - Checkbox: `label` / `description` / `count` props でポリモーフィック化
58
+
59
+ ### Fixes
60
+ - ...
61
+
62
+ ### Docs
63
+ - ...
64
+
65
+ ### Migration
66
+ - 破壊変更なし。vendor tgz の差し替え PR(bump-consumers.sh が自動作成)をマージするだけで OK。
67
+ ```
68
+
69
+ 破壊変更がある場合は必ず:
70
+
71
+ ```md
72
+ ### Breaking Changes
73
+ - `OldComponent` を削除。`NewComponent` を使ってください。
74
+ 自動移行: `npx ksk-design-system codemod v1-to-v2 ./src`
75
+ - 詳細: [MIGRATION.md](./MIGRATION.md)
76
+ ```
77
+
78
+ ## 関連
79
+
80
+ - [PUBLISHING.md](./PUBLISHING.md) — 実際の手順
81
+ - [MIGRATION.md](./MIGRATION.md) — メジャー毎の移行ガイド
82
+ - [scripts/codemod/README.md](./scripts/codemod/README.md) — codemod 雛形と使い方
package/bin/init.js ADDED
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env node
2
+
3
+ // ksk-design-system init
4
+ // Consumer プロジェクトに AI (Claude / Codex) 向けルールファイルを設置する。
5
+ // AI エージェントは node_modules 配下のファイルを自動で読まないため、
6
+ // プロジェクトルートに AGENTS.md / CLAUDE.md(node_modules 内の DS ルールを
7
+ // 参照する薄いポインタ)を置く必要がある。
8
+ //
9
+ // Usage:
10
+ // npx ksk-ds init # AGENTS.md + CLAUDE.md を設置
11
+ // npx ksk-ds init --force # 既存ファイルを上書き
12
+ // npx ksk-ds postinstall # npm postinstall から呼ばれる silent モード
13
+
14
+ import { copyFileSync, existsSync } from "node:fs"
15
+ import { dirname, join, resolve } from "node:path"
16
+ import { fileURLToPath } from "node:url"
17
+
18
+ const __dirname = dirname(fileURLToPath(import.meta.url))
19
+ const pkgRoot = resolve(__dirname, "..")
20
+
21
+ const args = process.argv.slice(2)
22
+ const cmd = args[0] || "init"
23
+ const force = args.includes("--force")
24
+
25
+ if (cmd === "help" || cmd === "--help" || cmd === "-h") {
26
+ console.log(`ksk-design-system CLI
27
+
28
+ 使い方:
29
+ npx ksk-ds init AI ルールファイルを設置
30
+ npx ksk-ds init --force 既存ファイルを上書き
31
+ `)
32
+ process.exit(0)
33
+ }
34
+
35
+ if (cmd !== "init" && cmd !== "postinstall") {
36
+ console.error(`未知のコマンド: ${cmd}`)
37
+ console.error(`npx ksk-ds help を参照してください`)
38
+ process.exit(1)
39
+ }
40
+
41
+ // ─── postinstall モードのガード ─────────────────────────────
42
+ // INIT_CWD は npm install が実行されたディレクトリ(consumer のルート)。
43
+ // 未設定、または pkgRoot と同じ場合は DS 自身のインストールコンテキストなのでスキップ。
44
+ const isPostinstall = cmd === "postinstall"
45
+ const consumerRoot = process.env.INIT_CWD || process.cwd()
46
+
47
+ if (isPostinstall) {
48
+ // DS 自身を開発している場合(INIT_CWD が pkgRoot)はスキップ
49
+ if (!process.env.INIT_CWD || resolve(consumerRoot) === pkgRoot) {
50
+ process.exit(0)
51
+ }
52
+ // consumer のルートに package.json が無ければスキップ(安全のため)
53
+ if (!existsSync(join(consumerRoot, "package.json"))) {
54
+ process.exit(0)
55
+ }
56
+ }
57
+
58
+ const files = [
59
+ { src: "templates/AGENTS.md", dest: "AGENTS.md", label: "Codex 用" },
60
+ { src: "templates/CLAUDE.md", dest: "CLAUDE.md", label: "Claude Code 用" },
61
+ ]
62
+
63
+ if (!isPostinstall) {
64
+ console.log("ksk-design-system init")
65
+ console.log("AI (Claude / Codex) 向けルールファイルを設置します。\n")
66
+ }
67
+
68
+ let created = 0
69
+ let skipped = 0
70
+
71
+ for (const { src, dest, label } of files) {
72
+ const srcPath = join(pkgRoot, src)
73
+ const destPath = join(consumerRoot, dest)
74
+
75
+ if (!existsSync(srcPath)) {
76
+ if (!isPostinstall) {
77
+ console.error(` ✗ テンプレートが見つかりません: ${srcPath}`)
78
+ }
79
+ process.exit(isPostinstall ? 0 : 1)
80
+ }
81
+
82
+ if (existsSync(destPath) && !force) {
83
+ if (!isPostinstall) {
84
+ console.log(` ⏭ ${dest} は既に存在するためスキップ(--force で上書き)`)
85
+ }
86
+ skipped++
87
+ continue
88
+ }
89
+
90
+ copyFileSync(srcPath, destPath)
91
+ if (isPostinstall) {
92
+ console.log(`[ksk-design-system] ${dest} をプロジェクトルートに設置しました`)
93
+ } else {
94
+ console.log(` ✓ ${dest} を設置しました(${label})`)
95
+ }
96
+ created++
97
+ }
98
+
99
+ if (isPostinstall) {
100
+ process.exit(0)
101
+ }
102
+
103
+ console.log(`\n完了: ${created} 作成 / ${skipped} スキップ`)
104
+
105
+ if (created > 0) {
106
+ console.log(`
107
+ 次のステップ:
108
+ 1. AI (Claude Code / Codex) を再起動してルールを読み込ませる
109
+ 2. UI を作る前に必ず node_modules/ksk-design-system/{AGENTS.md,CLAUDE.md,contracts/*,tokens.json} を AI に読ませる
110
+ 3. スクラッチコード(ハードコードカラー・余白・角丸等)を書かない運用を徹底する
111
+ `)
112
+ }