ksk-design-system 1.40.1 → 1.42.2

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 (280) hide show
  1. package/AGENTS.md +23 -2
  2. package/CLAUDE.md +16 -0
  3. package/NATIVE_RECIPES.md +46 -1
  4. package/README.md +24 -4
  5. package/contracts/components.json +179 -19
  6. package/dist/class-names.js +2 -4
  7. package/dist/index.js +16961 -15464
  8. package/dist/native/ui.js +7305 -6335
  9. package/dist/native-D6LJPc6D.js +1748 -0
  10. package/dist/native.js +2 -1609
  11. package/dist/rolldown-runtime-Df-vAQej.js +25 -0
  12. package/dist/server-variants-BtHHqzwI.js +46 -0
  13. package/dist/types/components/patterns/admin/bulk-actions.d.ts +1 -1
  14. package/dist/types/components/patterns/admin/chart-controls.d.ts +1 -1
  15. package/dist/types/components/patterns/admin/data-table.d.ts +21 -21
  16. package/dist/types/components/patterns/admin/image-uploader.d.ts +1 -1
  17. package/dist/types/components/patterns/admin/kebab-menu.d.ts +1 -1
  18. package/dist/types/components/patterns/admin/notification-list.d.ts +1 -1
  19. package/dist/types/components/patterns/admin/search-panel.d.ts +1 -1
  20. package/dist/types/components/patterns/admin/status-tabs.d.ts +1 -1
  21. package/dist/types/components/patterns/app-header.d.ts +1 -1
  22. package/dist/types/components/patterns/banner-carousel.d.ts +1 -1
  23. package/dist/types/components/patterns/banner.d.ts +1 -1
  24. package/dist/types/components/patterns/bottom-sheet-form.d.ts +1 -1
  25. package/dist/types/components/patterns/bottom-sheet-frame.d.ts +1 -1
  26. package/dist/types/components/patterns/category-nav.d.ts +1 -1
  27. package/dist/types/components/patterns/category-scroll.d.ts +1 -1
  28. package/dist/types/components/patterns/celebration-dialog.d.ts +49 -0
  29. package/dist/types/components/patterns/celebration.d.ts +38 -2
  30. package/dist/types/components/patterns/chip-filter-bar.d.ts +38 -0
  31. package/dist/types/components/patterns/chip-selector.d.ts +1 -1
  32. package/dist/types/components/patterns/chip.d.ts +1 -1
  33. package/dist/types/components/patterns/collapsible-chip-field.d.ts +35 -0
  34. package/dist/types/components/patterns/commerce/bottom-tab-bar.d.ts +10 -2
  35. package/dist/types/components/patterns/commerce/filter-bar.d.ts +1 -1
  36. package/dist/types/components/patterns/commerce/image-carousel.d.ts +1 -1
  37. package/dist/types/components/patterns/commerce/mobile-tab-bar.d.ts +39 -0
  38. package/dist/types/components/patterns/commerce/order-summary.d.ts +1 -1
  39. package/dist/types/components/patterns/commerce/price-display.d.ts +1 -1
  40. package/dist/types/components/patterns/commerce/product-card.d.ts +1 -1
  41. package/dist/types/components/patterns/commerce/product-carousel.d.ts +1 -1
  42. package/dist/types/components/patterns/commerce/quantity-selector.d.ts +1 -1
  43. package/dist/types/components/patterns/commerce/rating-display.d.ts +1 -1
  44. package/dist/types/components/patterns/commerce/review-card.d.ts +2 -2
  45. package/dist/types/components/patterns/commerce/review-summary.d.ts +1 -1
  46. package/dist/types/components/patterns/compact-file-picker.d.ts +2 -2
  47. package/dist/types/components/patterns/confirm-dialog.d.ts +2 -1
  48. package/dist/types/components/patterns/cookie-consent.d.ts +1 -1
  49. package/dist/types/components/patterns/countdown-hero.d.ts +49 -0
  50. package/dist/types/components/patterns/detail-sheet-scaffold.d.ts +3 -3
  51. package/dist/types/components/patterns/empty-state.d.ts +1 -1
  52. package/dist/types/components/patterns/error-state.d.ts +1 -1
  53. package/dist/types/components/patterns/file-upload.d.ts +2 -1
  54. package/dist/types/components/patterns/filter-chip.d.ts +1 -1
  55. package/dist/types/components/patterns/footer.d.ts +1 -1
  56. package/dist/types/components/patterns/form-field.d.ts +1 -1
  57. package/dist/types/components/patterns/form.d.ts +3 -3
  58. package/dist/types/components/patterns/keyboard-aware-sheet-footer.d.ts +1 -1
  59. package/dist/types/components/patterns/list-item.d.ts +1 -1
  60. package/dist/types/components/patterns/list-skeletons.d.ts +2 -2
  61. package/dist/types/components/patterns/media-action-cluster.d.ts +1 -1
  62. package/dist/types/components/patterns/menu-drawer.d.ts +1 -1
  63. package/dist/types/components/patterns/mobile-app-header.d.ts +1 -1
  64. package/dist/types/components/patterns/mobile-app-shell.d.ts +1 -1
  65. package/dist/types/components/patterns/mobile-floating-action-button.d.ts +1 -1
  66. package/dist/types/components/patterns/notification-badge.d.ts +1 -1
  67. package/dist/types/components/patterns/photo-hero.d.ts +5 -5
  68. package/dist/types/components/patterns/presence-indicator.d.ts +23 -0
  69. package/dist/types/components/patterns/progress-steps.d.ts +1 -1
  70. package/dist/types/components/patterns/quick-action-grid.d.ts +2 -2
  71. package/dist/types/components/patterns/review-overlay.d.ts +1 -1
  72. package/dist/types/components/patterns/screen.d.ts +1 -1
  73. package/dist/types/components/patterns/search-bar.d.ts +1 -1
  74. package/dist/types/components/patterns/section-header.d.ts +1 -1
  75. package/dist/types/components/patterns/settings-section.d.ts +2 -2
  76. package/dist/types/components/patterns/share-buttons.d.ts +2 -1
  77. package/dist/types/components/patterns/shells/admin-shell.d.ts +1 -1
  78. package/dist/types/components/patterns/shells/app-shell.d.ts +1 -1
  79. package/dist/types/components/patterns/shells/marketing-shell.d.ts +1 -1
  80. package/dist/types/components/patterns/side-drawer-frame.d.ts +18 -0
  81. package/dist/types/components/patterns/simple-pagination.d.ts +1 -1
  82. package/dist/types/components/patterns/stat-card.d.ts +1 -1
  83. package/dist/types/components/patterns/sticky-action-bar.d.ts +1 -1
  84. package/dist/types/components/patterns/swipe-row.d.ts +1 -1
  85. package/dist/types/components/patterns/tag-input.d.ts +2 -1
  86. package/dist/types/components/patterns/tag.d.ts +2 -2
  87. package/dist/types/components/ui/accordion.d.ts +4 -4
  88. package/dist/types/components/ui/alert-dialog.d.ts +11 -11
  89. package/dist/types/components/ui/alert.d.ts +3 -3
  90. package/dist/types/components/ui/auto-grow-textarea.d.ts +1 -1
  91. package/dist/types/components/ui/avatar.d.ts +3 -3
  92. package/dist/types/components/ui/badge.d.ts +2 -2
  93. package/dist/types/components/ui/breadcrumb.d.ts +7 -7
  94. package/dist/types/components/ui/button.d.ts +4 -2
  95. package/dist/types/components/ui/calendar.d.ts +1 -1
  96. package/dist/types/components/ui/card.d.ts +7 -7
  97. package/dist/types/components/ui/checkbox-card.d.ts +2 -2
  98. package/dist/types/components/ui/checkbox-field.d.ts +1 -1
  99. package/dist/types/components/ui/checkbox-group.d.ts +2 -2
  100. package/dist/types/components/ui/checkbox.d.ts +1 -1
  101. package/dist/types/components/ui/coach-mark.d.ts +1 -1
  102. package/dist/types/components/ui/collapsible.d.ts +3 -3
  103. package/dist/types/components/ui/combobox.d.ts +2 -1
  104. package/dist/types/components/ui/countdown-timer.d.ts +2 -1
  105. package/dist/types/components/ui/date-field.d.ts +26 -0
  106. package/dist/types/components/ui/date-picker.d.ts +3 -2
  107. package/dist/types/components/ui/dialog.d.ts +10 -10
  108. package/dist/types/components/ui/dropdown-filter.d.ts +1 -1
  109. package/dist/types/components/ui/dropdown-menu.d.ts +15 -15
  110. package/dist/types/components/ui/error-boundary.d.ts +1 -1
  111. package/dist/types/components/ui/form.d.ts +7 -7
  112. package/dist/types/components/ui/hover-card.d.ts +3 -3
  113. package/dist/types/components/ui/image-gallery.d.ts +2 -1
  114. package/dist/types/components/ui/input.d.ts +1 -1
  115. package/dist/types/components/ui/label.d.ts +1 -1
  116. package/dist/types/components/ui/multi-select.d.ts +2 -1
  117. package/dist/types/components/ui/navigation-bar.d.ts +4 -4
  118. package/dist/types/components/ui/number-input.d.ts +2 -1
  119. package/dist/types/components/ui/pagination.d.ts +7 -7
  120. package/dist/types/components/ui/pill-toggle.d.ts +1 -1
  121. package/dist/types/components/ui/popover.d.ts +4 -4
  122. package/dist/types/components/ui/progress-ring.d.ts +1 -1
  123. package/dist/types/components/ui/progress.d.ts +1 -1
  124. package/dist/types/components/ui/radio-group.d.ts +2 -2
  125. package/dist/types/components/ui/responsive-dialog.d.ts +8 -8
  126. package/dist/types/components/ui/scroll-area.d.ts +2 -2
  127. package/dist/types/components/ui/select.d.ts +8 -8
  128. package/dist/types/components/ui/separator.d.ts +1 -1
  129. package/dist/types/components/ui/sheet.d.ts +49 -17
  130. package/dist/types/components/ui/skeleton.d.ts +1 -1
  131. package/dist/types/components/ui/slider.d.ts +1 -1
  132. package/dist/types/components/ui/social-icon.d.ts +1 -1
  133. package/dist/types/components/ui/social-login-button.d.ts +1 -1
  134. package/dist/types/components/ui/spinner.d.ts +1 -1
  135. package/dist/types/components/ui/star-rating.d.ts +2 -1
  136. package/dist/types/components/ui/status-action-badge.d.ts +1 -1
  137. package/dist/types/components/ui/sub-nav.d.ts +2 -1
  138. package/dist/types/components/ui/switch.d.ts +1 -1
  139. package/dist/types/components/ui/sync-status-badge.d.ts +1 -1
  140. package/dist/types/components/ui/tabs.d.ts +4 -4
  141. package/dist/types/components/ui/textarea.d.ts +1 -1
  142. package/dist/types/components/ui/time-picker.d.ts +2 -1
  143. package/dist/types/components/ui/toast.d.ts +2 -2
  144. package/dist/types/components/ui/tooltip.d.ts +4 -4
  145. package/dist/types/index.d.ts +19 -1
  146. package/dist/types/lib/category-presets.d.ts +64 -0
  147. package/dist/types/lib/server-variants/button-variants.d.ts +2 -2
  148. package/dist/types/native/components/Accordion.d.ts +1 -1
  149. package/dist/types/native/components/Alert.d.ts +1 -1
  150. package/dist/types/native/components/AlertDialog.d.ts +2 -1
  151. package/dist/types/native/components/AppHeader.d.ts +1 -1
  152. package/dist/types/native/components/AppShell.d.ts +1 -1
  153. package/dist/types/native/components/AutoGrowTextarea.d.ts +2 -1
  154. package/dist/types/native/components/Avatar.d.ts +2 -1
  155. package/dist/types/native/components/Badge.d.ts +1 -1
  156. package/dist/types/native/components/Banner.d.ts +2 -1
  157. package/dist/types/native/components/BannerCarousel.d.ts +2 -1
  158. package/dist/types/native/components/BottomSheetForm.d.ts +1 -1
  159. package/dist/types/native/components/BottomSheetFrame.d.ts +1 -1
  160. package/dist/types/native/components/BottomTabBar.d.ts +13 -47
  161. package/dist/types/native/components/Breadcrumb.d.ts +1 -1
  162. package/dist/types/native/components/Button.d.ts +1 -1
  163. package/dist/types/native/components/Calendar.d.ts +2 -1
  164. package/dist/types/native/components/Card.d.ts +1 -1
  165. package/dist/types/native/components/CategoryNav.d.ts +1 -1
  166. package/dist/types/native/components/CategoryScroll.d.ts +2 -1
  167. package/dist/types/native/components/Celebration.d.ts +33 -1
  168. package/dist/types/native/components/CelebrationDialog.d.ts +30 -0
  169. package/dist/types/native/components/Checkbox.d.ts +2 -1
  170. package/dist/types/native/components/CheckboxCard.d.ts +2 -1
  171. package/dist/types/native/components/CheckboxField.d.ts +2 -1
  172. package/dist/types/native/components/CheckboxGroup.d.ts +2 -1
  173. package/dist/types/native/components/Chip.d.ts +1 -1
  174. package/dist/types/native/components/ChipFilterBar.d.ts +19 -0
  175. package/dist/types/native/components/ChipSelector.d.ts +2 -1
  176. package/dist/types/native/components/CoachMark.d.ts +2 -1
  177. package/dist/types/native/components/CoachMarkOverlay.d.ts +1 -1
  178. package/dist/types/native/components/Collapsible.d.ts +1 -1
  179. package/dist/types/native/components/CollapsibleChipField.d.ts +23 -0
  180. package/dist/types/native/components/Combobox.d.ts +2 -1
  181. package/dist/types/native/components/CompactFilePicker.d.ts +2 -2
  182. package/dist/types/native/components/ConfirmDialog.d.ts +2 -1
  183. package/dist/types/native/components/CountdownHero.d.ts +20 -0
  184. package/dist/types/native/components/CountdownTimer.d.ts +2 -1
  185. package/dist/types/native/components/DateField.d.ts +15 -0
  186. package/dist/types/native/components/DatePicker.d.ts +2 -1
  187. package/dist/types/native/components/DetailSheetScaffold.d.ts +3 -3
  188. package/dist/types/native/components/Dialog.d.ts +1 -1
  189. package/dist/types/native/components/DropdownFilter.d.ts +2 -1
  190. package/dist/types/native/components/DropdownMenu.d.ts +2 -1
  191. package/dist/types/native/components/EmptyState.d.ts +1 -1
  192. package/dist/types/native/components/ErrorState.d.ts +1 -1
  193. package/dist/types/native/components/FileUpload.d.ts +2 -1
  194. package/dist/types/native/components/FilterBar.d.ts +2 -1
  195. package/dist/types/native/components/FilterChip.d.ts +2 -1
  196. package/dist/types/native/components/FloatingTabBar.d.ts +30 -0
  197. package/dist/types/native/components/Footer.d.ts +2 -1
  198. package/dist/types/native/components/FormField.d.ts +1 -1
  199. package/dist/types/native/components/GlassView.d.ts +1 -1
  200. package/dist/types/native/components/GradientSurface.d.ts +27 -0
  201. package/dist/types/native/components/ImageCarousel.d.ts +2 -1
  202. package/dist/types/native/components/ImageGallery.d.ts +2 -1
  203. package/dist/types/native/components/Input.d.ts +1 -1
  204. package/dist/types/native/components/KeyboardAwareSheetFooter.d.ts +1 -1
  205. package/dist/types/native/components/Label.d.ts +1 -1
  206. package/dist/types/native/components/ListItem.d.ts +1 -1
  207. package/dist/types/native/components/ListSkeletons.d.ts +14 -1
  208. package/dist/types/native/components/MarketingShell.d.ts +1 -1
  209. package/dist/types/native/components/MediaActionCluster.d.ts +32 -0
  210. package/dist/types/native/components/MenuDrawer.d.ts +1 -1
  211. package/dist/types/native/components/MobileAppHeader.d.ts +1 -1
  212. package/dist/types/native/components/MobileAppShell.d.ts +1 -1
  213. package/dist/types/native/components/MobileFloatingActionButton.d.ts +1 -1
  214. package/dist/types/native/components/MultiSelect.d.ts +2 -1
  215. package/dist/types/native/components/NavigationBar.d.ts +1 -1
  216. package/dist/types/native/components/NotificationBadge.d.ts +1 -1
  217. package/dist/types/native/components/NumberInput.d.ts +2 -1
  218. package/dist/types/native/components/OrderSummary.d.ts +2 -1
  219. package/dist/types/native/components/Pagination.d.ts +2 -1
  220. package/dist/types/native/components/PhotoHero.d.ts +36 -0
  221. package/dist/types/native/components/PillToggle.d.ts +2 -1
  222. package/dist/types/native/components/Popover.d.ts +1 -1
  223. package/dist/types/native/components/PresenceIndicator.d.ts +15 -0
  224. package/dist/types/native/components/PriceDisplay.d.ts +2 -1
  225. package/dist/types/native/components/ProductCard.d.ts +2 -1
  226. package/dist/types/native/components/ProductCarousel.d.ts +2 -1
  227. package/dist/types/native/components/Progress.d.ts +2 -1
  228. package/dist/types/native/components/ProgressRing.d.ts +2 -1
  229. package/dist/types/native/components/ProgressSteps.d.ts +2 -1
  230. package/dist/types/native/components/QuantitySelector.d.ts +2 -1
  231. package/dist/types/native/components/QuickActionGrid.d.ts +2 -2
  232. package/dist/types/native/components/RadioGroup.d.ts +2 -1
  233. package/dist/types/native/components/RatingDisplay.d.ts +2 -1
  234. package/dist/types/native/components/ResponsiveDialog.d.ts +2 -1
  235. package/dist/types/native/components/ReviewCard.d.ts +2 -1
  236. package/dist/types/native/components/ReviewOverlay.d.ts +2 -1
  237. package/dist/types/native/components/ReviewSummary.d.ts +2 -1
  238. package/dist/types/native/components/Screen.d.ts +16 -0
  239. package/dist/types/native/components/ScrollArea.d.ts +1 -1
  240. package/dist/types/native/components/SearchBar.d.ts +2 -1
  241. package/dist/types/native/components/SectionHeader.d.ts +2 -1
  242. package/dist/types/native/components/Select.d.ts +2 -1
  243. package/dist/types/native/components/Separator.d.ts +2 -1
  244. package/dist/types/native/components/SettingsSection.d.ts +2 -2
  245. package/dist/types/native/components/ShareButtons.d.ts +2 -1
  246. package/dist/types/native/components/Sheet.d.ts +1 -1
  247. package/dist/types/native/components/SimplePagination.d.ts +2 -1
  248. package/dist/types/native/components/Skeleton.d.ts +3 -2
  249. package/dist/types/native/components/Slider.d.ts +2 -1
  250. package/dist/types/native/components/SocialIcon.d.ts +2 -1
  251. package/dist/types/native/components/SocialLoginButton.d.ts +2 -1
  252. package/dist/types/native/components/Spinner.d.ts +2 -1
  253. package/dist/types/native/components/Stack.d.ts +1 -1
  254. package/dist/types/native/components/StarRating.d.ts +2 -1
  255. package/dist/types/native/components/StatCard.d.ts +2 -1
  256. package/dist/types/native/components/StatusActionBadge.d.ts +1 -1
  257. package/dist/types/native/components/StickyActionBar.d.ts +1 -1
  258. package/dist/types/native/components/SubNav.d.ts +2 -1
  259. package/dist/types/native/components/SwipeRow.d.ts +1 -1
  260. package/dist/types/native/components/Switch.d.ts +2 -1
  261. package/dist/types/native/components/SyncStatusBadge.d.ts +2 -1
  262. package/dist/types/native/components/Tabs.d.ts +4 -4
  263. package/dist/types/native/components/Tag.d.ts +1 -1
  264. package/dist/types/native/components/TagInput.d.ts +2 -1
  265. package/dist/types/native/components/Text.d.ts +1 -1
  266. package/dist/types/native/components/Textarea.d.ts +2 -1
  267. package/dist/types/native/components/TimePicker.d.ts +2 -1
  268. package/dist/types/native/components/Toast.d.ts +1 -1
  269. package/dist/types/native/components/index.d.ts +12 -1
  270. package/dist/types/native/components/use-reduce-motion.d.ts +6 -0
  271. package/dist/types/native/theme/ThemeProvider.d.ts +1 -1
  272. package/dist/types/tokens/native/themes.d.ts +237 -0
  273. package/package.json +33 -14
  274. package/src/components/COMPONENT_LOOKUP.md +12 -4
  275. package/src/native/COMPONENT_LOOKUP.md +145 -0
  276. package/src/preset.css +25 -0
  277. package/src/styles/glass.css +42 -20
  278. package/src/themes/cobalt.css +22 -0
  279. package/tokens.json +100 -16
  280. package/dist/server-variants-qSBVrkGA.js +0 -56
package/AGENTS.md CHANGED
@@ -15,13 +15,18 @@
15
15
  コードを書く前に、以下を必ず読み込むこと:
16
16
 
17
17
  ```
18
- contracts/rules.json # 禁止パターン32件・AIアンチパターン10件・a11y要件
19
- contracts/components.json # 全112コンポーネントの定義・バリアント・ルール
18
+ .claude/skills/ksk-design-system/SKILL.md # 判断Skill: 実装・レビューの判断基準(正本への索引)
19
+ contracts/rules.json # 禁止パターン43件・AIアンチパターン10件・a11y要件
20
+ contracts/components.json # 全132コンポーネントの定義・バリアント・ルール
20
21
  contracts/design-context.json # DESIGN.md と正本ファイルの関係・AI向け検査方針
21
22
  tokens.json # カラー・スペーシング・シャドウトークン
22
23
  src/components/COMPONENT_LOOKUP.md # バリアント・インポートパス一覧(自動生成)
23
24
  ```
24
25
 
26
+ UI コンポーネント・画面の生成/修正・レビューの前には、必ず
27
+ `.claude/skills/ksk-design-system/SKILL.md` を読み、その判断基準に従うこと
28
+ (トークン選定・コンポーネント選択・レビュー優先順位・例外運用。迷ったら同ディレクトリの `references/` を参照)。
29
+
25
30
  **必ず `contracts/rules.json` の `prohibited` と `aiPatterns` を確認してから実装すること。**
26
31
  特に `aiPatterns` は AI が典型的に犯すパターン集 — 自分が生成しようとしているコードと照合すること。
27
32
 
@@ -86,6 +91,22 @@ Brand色を差し替え(10行)→ Primitive Layer → Semantic Layer → Bri
86
91
 
87
92
  ---
88
93
 
94
+ ## AIモデルの使い分け方針
95
+
96
+ | モデル | 用途 |
97
+ |--------|------|
98
+ | `claude-fable-5` | 最難関の設計・長時間エージェント作業のみ(高コストのため温存) |
99
+ | `claude-opus-4-8` | 通常のUI実装・レビュー・リファクタの既定 |
100
+
101
+ **検証ループを使う場合:** 実装 = Fable 5 / 検証 = Opus 4.8 のように実装者と検証者で別モデルを使う(同一モデルは同じバイアスを共有し独立検証にならない)。
102
+
103
+ **Fable 5 使用時の注意:**
104
+ - thinking は常時オン(パラメータ省略でデフォルトに任せる)
105
+ - refusal 時は `fallbacks` で Opus 4.8 に自動フォールバック
106
+ - 30日データ保持が必須
107
+
108
+ ---
109
+
89
110
  ## ドキュメント構成
90
111
 
91
112
  | ファイル | 内容 |
package/CLAUDE.md CHANGED
@@ -51,6 +51,22 @@ Brand色を差し替え(10行)→ Primitive Layer → Semantic Layer → Bri
51
51
 
52
52
  ---
53
53
 
54
+ ## AIモデルの使い分け方針
55
+
56
+ | モデル | 用途 |
57
+ |--------|------|
58
+ | `claude-fable-5` | 最難関の設計・長時間エージェント作業のみ(高コストのため温存) |
59
+ | `claude-opus-4-8` | 通常のUI実装・レビュー・リファクタの既定 |
60
+
61
+ **検証ループを使う場合:** 実装 = Fable 5 / 検証 = Opus 4.8 のように実装者と検証者で別モデルを使う(同一モデルは同じバイアスを共有し独立検証にならない)。
62
+
63
+ **Fable 5 使用時の注意:**
64
+ - thinking は常時オン(パラメータ省略でデフォルトに任せる)
65
+ - refusal 時は `fallbacks` で Opus 4.8 に自動フォールバック
66
+ - 30日データ保持が必須
67
+
68
+ ---
69
+
54
70
  ## ドキュメント構成
55
71
 
56
72
  | ファイル | 内容 |
package/NATIVE_RECIPES.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # KSK Design System Native Recipes
2
2
 
3
- Native / Expo consumer は、新規 UI を作る前に `ksk-design-system/native/ui` の既存コンポーネントを確認してください。ローカル `ds/` に独自 wrapper を増やす前に、このファイルの recipe を使います。
3
+ Native / Expo consumer は、新規 UI を作る前に `ksk-design-system/native/ui` の既存コンポーネントを確認してください。ローカル `ds/` に独自 wrapper を増やす前に、`src/native/COMPONENT_LOOKUP.md` とこのファイルの recipe を使います。
4
+
5
+ ## Component lookup
6
+
7
+ RN 側の公開 export 一覧は `src/native/COMPONENT_LOOKUP.md` で確認できます。Web 側の `src/components/COMPONENT_LOOKUP.md` と同じく、consumer 実装前の DS-first チェックに使います。
8
+
9
+ ```tsx
10
+ import { Button, Screen, PhotoHero } from "ksk-design-system/native/ui"
11
+ ```
4
12
 
5
13
  ## Expo Router / React Navigation bottom tabs
6
14
 
@@ -102,6 +110,43 @@ import {
102
110
 
103
111
  Web/PWA consumer は `ksk-design-system` の `MobileAppShell` と `BottomTabBar variant="pill"` / `MobileFloatingActionButton` を組み合わせます。`bottomNavMode="fixed"` では shell が fixed wrapper と safe-area padding を持ちます。既に fixed な nav を渡す場合は `bottomNavMode="external"` を指定します。
104
112
 
113
+ ## Fullscreen screen / photo onboarding
114
+
115
+ `Screen` は header / internal scroll body / footer CTA の骨組みです。写真背景のオンボーディングや入口画面は `PhotoHero` の compound slots を使います。consumer 側で safe-area footer や写真上 typography を再実装しません。
116
+
117
+ ```tsx
118
+ import { Button, PhotoHero, Screen } from "ksk-design-system/native/ui"
119
+
120
+ <Screen scroll={false} padding="none">
121
+ <PhotoHero src={{ uri: heroUrl }} overlay="dark" align="bottom">
122
+ <PhotoHero.Eyebrow>WELCOME</PhotoHero.Eyebrow>
123
+ <PhotoHero.Title>今日の準備を始める</PhotoHero.Title>
124
+ <PhotoHero.Body>写真の上でも読める DS typography と overlay をまとめて扱います。</PhotoHero.Body>
125
+ <PhotoHero.Actions>
126
+ <Button variant="glass" onPress={start}>始める</Button>
127
+ </PhotoHero.Actions>
128
+ </PhotoHero>
129
+ </Screen>
130
+ ```
131
+
132
+ ## Media action cluster
133
+
134
+ 動画・写真上の Like / Share / Save などの操作群は `MediaActionCluster` を使います。`position="fixed"` は RN では absolute と同等に扱い、`href` は `Linking.openURL` に委譲します。
135
+
136
+ ```tsx
137
+ <View style={{ flex: 1 }}>
138
+ <PhotoHero src={{ uri: mediaUrl }} overlay="medium">
139
+ <MediaActionCluster
140
+ anchor="bottom-right"
141
+ items={[
142
+ { label: "いいね", icon: <HeartIcon />, active: liked, onPress: toggleLike },
143
+ { label: "シェア", icon: <ShareIcon />, onPress: share },
144
+ ]}
145
+ />
146
+ </PhotoHero>
147
+ </View>
148
+ ```
149
+
105
150
  ## Settings screens
106
151
 
107
152
  設定画面は `SettingsSection` と `SettingsListRow` を使います。`Card + SectionHeader + ListItem` のローカル wrapper を consumer 側で複製しないでください。
package/README.md CHANGED
@@ -1,10 +1,15 @@
1
1
  # KSK Design System
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/ksk-design-system.svg)](https://www.npmjs.com/package/ksk-design-system)
4
+ [![npm downloads/month](https://img.shields.io/npm/dm/ksk-design-system.svg)](https://npm-stat.com/charts.html?package=ksk-design-system)
5
+ [![npm downloads total](https://img.shields.io/npm/dt/ksk-design-system.svg)](https://npm-stat.com/charts.html?package=ksk-design-system)
6
+ [![license](https://img.shields.io/npm/l/ksk-design-system.svg)](./LICENSE)
7
+
3
8
  複数クライアント案件を **1つのデザインシステム** で高速に回すために設計された、React 製のマルチテーマ対応 UI ライブラリ。BtoB / SaaS の信頼感と EC / BtoC の購買体験、2つのドメインの設計思想を統合しています。
4
9
 
5
10
  **🔗 ライブ Storybook → https://ksk-design-system.vercel.app**
6
11
 
7
- 125 コンポーネントを実際に操作・確認できます。
12
+ 133 コンポーネントを実際に操作・確認できます。
8
13
 
9
14
  ---
10
15
 
@@ -14,7 +19,7 @@
14
19
  - **アクセシブル** — shadcn/ui(Radix UI ベース)+ `@storybook/addon-a11y` で a11y を担保
15
20
  - **Tailwind CSS v4 ネイティブ** — `@theme` ベースのトークン設計
16
21
  - **型安全** — React 19 + TypeScript、CVA によるバリアント管理
17
- - **125 + 96 コンポーネント** — Web 125(UI 57 / EC 11 / 管理 8 / シェル 3 / パターン 46)+ React Native 96
22
+ - **133 Web コンポーネント + 134 React Native exports** — Web 133(UI 58 / パターン 52 / EC 12 / 管理 8 / シェル 3)+ RN `native/ui` 公開 export 134
18
23
  - **iOS 26 Liquid Glass 対応** — RN 側 `GlassView` + `Button variant="glass"`、Web 側 `.glass` CSS マテリアル
19
24
 
20
25
  ## 🎨 テーマ
@@ -131,7 +136,7 @@ import { BottomTabBar } from "ksk-design-system"
131
136
 
132
137
  ### React Native / Expo
133
138
 
134
- `ksk-design-system/native/ui` から直接 RN 用コンポーネント(91 個)を import できます。iOS 26 の **Liquid Glass** にも対応:
139
+ `ksk-design-system/native/ui` から直接 RN 用コンポーネント export(134 個)を import できます。iOS 26 の **Liquid Glass** にも対応:
135
140
 
136
141
  ```tsx
137
142
  import { ThemeProvider, Button, Card, GlassView } from "ksk-design-system/native/ui"
@@ -144,7 +149,7 @@ npx expo install expo-glass-effect expo-blur
144
149
 
145
150
  Web は backdrop-filter で擬似、Android は半透明 surface でフォールバックします。
146
151
 
147
- Expo Router / React Navigation の tab bar、native `GlassView`、Button loading、settings/attachment/mobile shell recipes は `NATIVE_RECIPES.md` を参照してください。
152
+ 既存コンポーネントの確認は `src/native/COMPONENT_LOOKUP.md`、Expo Router / React Navigation の tab bar、native `GlassView`、Button loading、fullscreen/media/settings/attachment/mobile shell recipes は `NATIVE_RECIPES.md` を参照してください。
148
153
 
149
154
  ## 🧪 試してみる(1コマンドお試し)
150
155
 
@@ -182,6 +187,21 @@ DS コンポーネントを最大限活用したモックが `src/prototypes/`
182
187
  - **npm**: https://www.npmjs.com/package/ksk-design-system
183
188
  - 設計思想・トークン体系の詳細は `CLAUDE.md` / `DESIGN.md` を参照
184
189
 
190
+ ## 📈 ダウンロード数
191
+
192
+ npm の公開統計から、インストール数を確認できます。
193
+
194
+ ```bash
195
+ npm run metrics # 直近の DL 数・推移・バージョン別内訳を表示
196
+ npm run metrics -- --json # 生データを JSON で出力
197
+ npm run metrics -- --range last-year
198
+ ```
199
+
200
+ - リアルタイムのグラフ: https://npm-stat.com/charts.html?package=ksk-design-system
201
+ - README 冒頭のバッジは shields.io 経由で常時最新の月間 DL 数を表示
202
+
203
+ > npm は匿名集計のため、CI やミラーの重複を含む **install 回数の目安** です(ユニークユーザー数ではありません)。
204
+
185
205
  ## 📄 ライセンス
186
206
 
187
207
  [MIT](./LICENSE) © 奥野圭祐 (Keisuke Okuno)
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "meta": {
3
3
  "name": "KSK Design System — Component Contracts",
4
- "version": "1.34.0",
4
+ "version": "1.42.2",
5
5
  "description": "全コンポーネントの構造化定義。バリアント・アクセシビリティ要件・使用ルールを機械可読形式で管理。",
6
6
  "counts": {
7
- "ui": 57,
8
- "patterns": 46,
9
- "commerce": 11,
7
+ "ui": 58,
8
+ "patterns": 52,
9
+ "commerce": 12,
10
10
  "admin": 8,
11
11
  "shells": 3,
12
- "total": 125
12
+ "total": 133
13
13
  }
14
14
  },
15
15
  "ui": [
16
16
  {
17
17
  "name": "Button",
18
18
  "path": "src/components/ui/button.tsx",
19
- "description": "アクションボタン。最重要CTAにはdefault、Liquid Glass背景にはglass、暗背景上のLiquid Glassにはglass-inverse。アイコン単独はiconサイズ群。",
19
+ "description": "アクションボタン。最重要CTAにはdefault、Liquid Glass背景にはglass、暗背景上のLiquid Glassにはglass-inverse、ブランドカラーをティントしたglassはglass-accent(FAB等)。アイコン単独はiconサイズ群。",
20
20
  "variants": [
21
21
  "default",
22
22
  "secondary",
@@ -27,6 +27,7 @@
27
27
  "destructive",
28
28
  "glass",
29
29
  "glass-inverse",
30
+ "glass-accent",
30
31
  "accent",
31
32
  "inverse",
32
33
  "ghost-inverse"
@@ -42,6 +43,7 @@
42
43
  "icon-sm",
43
44
  "icon-lg",
44
45
  "icon-xl",
46
+ "icon-fab",
45
47
  "match"
46
48
  ],
47
49
  "accessibility": [
@@ -97,6 +99,20 @@
97
99
  "Use DateRangePicker for date range selection"
98
100
  ]
99
101
  },
102
+ {
103
+ "name": "DateField",
104
+ "path": "src/components/ui/date-field.tsx",
105
+ "description": "DatePicker を \"YYYY-MM-DD\" ISO 文字列 API でラップする adapter。バックエンド/store が ISO date 文字列で日付を保持する場合に使う。value=\"\" が未選択を表す。",
106
+ "variants": [],
107
+ "accessibility": [
108
+ "Must pair with <Label>",
109
+ "aria-expanded on trigger button(内部 DatePicker 由来)"
110
+ ],
111
+ "rules": [
112
+ "value/onChange は常に \"YYYY-MM-DD\" 文字列。Date オブジェクトを直接渡さない",
113
+ "strToDate/dateToStr は new Date(y, m-1, d) のローカルタイム方式(TZ ずれ回避)"
114
+ ]
115
+ },
100
116
  {
101
117
  "name": "Textarea",
102
118
  "path": "src/components/ui/textarea.tsx",
@@ -1056,7 +1072,7 @@
1056
1072
  {
1057
1073
  "name": "Celebration",
1058
1074
  "path": "src/components/patterns/celebration.tsx",
1059
- "description": "マイルストーン達成・大目標達成などの祝い演出。confetti / emoji 表示、actions slot、interactive card tap、cardless モード、tap dismiss、prefers-reduced-motion 対応。",
1075
+ "description": "マイルストーン達成・大目標達成などの祝い演出。confetti / emoji 表示、actions slot、interactive card tap、cardless モード、tap dismiss、prefers-reduced-motion 対応。confetti の duration / colors / driftRange をカスタマイズ可能。effect で confetti の演出モード(fall / burst)を切り替え可能(Issue #111)。",
1060
1076
  "variants": [
1061
1077
  "confetti",
1062
1078
  "emoji",
@@ -1068,18 +1084,25 @@
1068
1084
  "interactive",
1069
1085
  "cardless",
1070
1086
  "tap-dismiss",
1071
- "duration-control"
1087
+ "duration-control",
1088
+ "custom-duration",
1089
+ "custom-colors",
1090
+ "custom-drift-range",
1091
+ "emoji-animation-pop-or-bounce",
1092
+ "effect-fall-or-burst",
1093
+ "confetti-burst-radial-360"
1072
1094
  ],
1073
1095
  "accessibility": [
1074
1096
  "role=status",
1075
1097
  "aria-live=polite",
1076
- "prefers-reduced-motion で confetti を抑制"
1098
+ "prefers-reduced-motion で confetti を抑制(emojiAnimation=bounce も含む。effect=burst も同様にスキップ)"
1077
1099
  ],
1078
1100
  "rules": [
1079
1101
  "一時的な達成演出に使用",
1080
1102
  "ローディングや常時表示の装飾用途には使わない",
1081
1103
  "CTA を含む達成 UI は actions slot を使い、カード tap で任意 dismiss したい場合は interactive または onTapDismiss を使う",
1082
- "カード不要の演出は cardless を使う"
1104
+ "カード不要の演出は cardless を使う",
1105
+ "effect は既定 \"fall\"(後方互換)。クラッカーが弾けた感じにしたい達成演出は effect=\"burst\" を使う(中央から全方位 360° に放射)"
1083
1106
  ]
1084
1107
  },
1085
1108
  {
@@ -1191,6 +1214,83 @@
1191
1214
  "Do not patch selected flicker in consumer CSS; Chip handles Android tap highlight and touch transition behavior."
1192
1215
  ]
1193
1216
  },
1217
+ {
1218
+ "name": "CollapsibleChipField",
1219
+ "path": "src/components/patterns/collapsible-chip-field.tsx",
1220
+ "description": "折りたたみ式の単一選択チップフィールド。未選択時は全選択肢を展開表示し、選択後は選択中の1チップのみに折りたたむ。再タップで解除(onClear)または再選択用に再展開する。belle-todo 移植(Issue #106)。ChipSelector(複数選択)とは別 API・別用途。",
1221
+ "features": [
1222
+ "single-select",
1223
+ "collapse-on-select",
1224
+ "always-expanded-mode",
1225
+ "leading-icon-or-label"
1226
+ ],
1227
+ "rules": [
1228
+ "ChipSelector(chip-selector.tsx)とは別コンポーネント。混同して置き換えない。",
1229
+ "onClear 未指定時、選択済み chip の再タップは解除でなく再選択用の再展開のみ(required field 対応)。",
1230
+ "label 指定時は幅 w-20 固定でフィールドリストの他行とラベル幅を揃える。"
1231
+ ]
1232
+ },
1233
+ {
1234
+ "name": "ChipFilterBar",
1235
+ "path": "src/components/patterns/chip-filter-bar.tsx",
1236
+ "description": "Chip を横スクロール表示するフィルターバーパターン。sticky モード・結果件数表示・bare(ラッパーなし)モードを持つ。belle-todo 移植(Issue #104)。",
1237
+ "features": [
1238
+ "horizontal-scroll",
1239
+ "sticky-mode",
1240
+ "result-count",
1241
+ "bare-mode"
1242
+ ],
1243
+ "rules": [
1244
+ "commerce/FilterBar(filters/sortOptions 統合型)とは別コンポーネント。children に任意の Chip 群を渡すシンプルなラッパー。",
1245
+ "sticky 時の top オフセットは stickyOffset prop で指定する(固定ヘッダー高さの相殺用)。",
1246
+ "resultCountLabel 未指定時は \"{n}件\" を表示。i18n が必要な場合は関数 props で差し替える。",
1247
+ "bare=true 時は overflow/padding ラッパーを付けない。外側スクロールコンテナと共有する場合に使う。"
1248
+ ]
1249
+ },
1250
+ {
1251
+ "name": "CelebrationDialog",
1252
+ "path": "src/components/patterns/celebration-dialog.tsx",
1253
+ "description": "達成演出用の Dialog + Celebration confetti + emoji/title/description/actions スロット合成パターン。belle-todo の MilestoneCelebration を参考に、MILESTONES 定義・アップセル CTA・store・i18n・analytics は持ち込まずスロット化(Issue #110)。confetti の既定 effect は \"burst\"(クラッカー演出)(Issue #111)。",
1254
+ "features": [
1255
+ "dialog-based",
1256
+ "confetti-overlay",
1257
+ "emoji-slot",
1258
+ "actions-slot",
1259
+ "auto-dismiss",
1260
+ "emoji-animation-pop-or-bounce",
1261
+ "confetti-props-passthrough",
1262
+ "effect-burst-default"
1263
+ ],
1264
+ "accessibility": [
1265
+ "DS Dialog(Radix)ベースのため Esc / overlay クリックで閉じる",
1266
+ "prefers-reduced-motion で confetti・emoji bounce を抑制"
1267
+ ],
1268
+ "rules": [
1269
+ "MILESTONES 定義・アップセル文言・分析トラッキングは呼び出し側で actions スロットに組み込む。コンポーネント内部に業務ロジックを持たせない。",
1270
+ "autoDismissMs 指定時は経過後に onOpenChange(false) を呼ぶだけで、closeロジック自体は呼び出し側に委譲する。",
1271
+ "effect 既定は \"burst\"(達成演出はクラッカーが標準)。fall に戻したい場合は effect=\"fall\" を明示する。",
1272
+ "confetti 系 props(particleCount/duration/colors/driftRange)は Celebration へそのままパススルー。"
1273
+ ]
1274
+ },
1275
+ {
1276
+ "name": "CountdownHero",
1277
+ "path": "src/components/patterns/countdown-hero.tsx",
1278
+ "description": "装飾的な serif 数字で目標日までの残日数を表示するヒーロー表示。belle-todo の CountdownSection を参考に、日付編集フォーム・wedding イラスト・i18n・store は持ち込まず表示専用に再設計(Issue #110)。dateLabel prop で数字の下に目標日そのもの(消費側でフォーマット)を、todayValue prop で当日に数字 0 の代わりの文言を表示できる(Issue #118)。",
1279
+ "features": [
1280
+ "large-serif-number",
1281
+ "today-past-active-states",
1282
+ "illustration-slot",
1283
+ "iso-string-or-date-target",
1284
+ "date-label-slot",
1285
+ "today-value-override"
1286
+ ],
1287
+ "rules": [
1288
+ "既存の CountdownTimer(残日数ピル表示)とは別コンポーネント。装飾ヒーロー表示専用で置き換えない。",
1289
+ "日付編集フォームは持ち込まない。表示専用コンポーネント。",
1290
+ "illustration スロットに wedding 画像等のドメイン固有アセットを直接埋め込まない。呼び出し側が用意する。",
1291
+ "serif フォントは --font-display-serif トークン未定義環境向けに Georgia / Noto Serif JP / serif へフォールバックする。"
1292
+ ]
1293
+ },
1194
1294
  {
1195
1295
  "name": "StickyActionBar",
1196
1296
  "path": "src/components/patterns/sticky-action-bar.tsx",
@@ -1272,7 +1372,8 @@
1272
1372
  "safe-area anchor",
1273
1373
  "idle auto-hide",
1274
1374
  "glass buttons",
1275
- "text-on-media"
1375
+ "text-on-media",
1376
+ "React Native port"
1276
1377
  ],
1277
1378
  "accessibility": [
1278
1379
  "role=group",
@@ -1284,7 +1385,8 @@
1284
1385
  "メディア上の操作群に使用する。通常画面の下部 CTA には StickyActionBar を使う",
1285
1386
  "items[].label は必須。アイコン単独にしない",
1286
1387
  "暗い写真・動画・濃色面上では glass-inverse / text-on-media を維持する",
1287
- "autoHideMs=null で idle fade を無効化できる"
1388
+ "autoHideMs=null で idle fade を無効化できる",
1389
+ "React Native consumer は ksk-design-system/native/ui の MediaActionCluster を使い、ローカル overlay action を再実装しない"
1288
1390
  ]
1289
1391
  },
1290
1392
  {
@@ -1297,7 +1399,8 @@
1297
1399
  "min-h-0 guard",
1298
1400
  "fixed header slot",
1299
1401
  "fixed footer slot",
1300
- "safe-area bottom"
1402
+ "safe-area bottom",
1403
+ "React Native port"
1301
1404
  ],
1302
1405
  "accessibility": [
1303
1406
  "main landmark",
@@ -1307,7 +1410,8 @@
1307
1410
  "body スクロールを使わないアプリのフルスクリーン画面に使う",
1308
1411
  "本文が長い画面では scroll=true のまま使う",
1309
1412
  "写真ヒーローなど 1 画面固定では scroll=false と padding=none を組み合わせる",
1310
- "footer には主要 CTA を置き、safe-area 余白を消費側で再実装しない"
1413
+ "footer には主要 CTA を置き、safe-area 余白を消費側で再実装しない",
1414
+ "React Native consumer は ksk-design-system/native/ui の Screen を使い、header/body/footer shell をローカル再実装しない"
1311
1415
  ]
1312
1416
  },
1313
1417
  {
@@ -1319,7 +1423,8 @@
1319
1423
  "medium / dark overlay",
1320
1424
  "bottom / center align",
1321
1425
  "on-image typography",
1322
- "compound slots"
1426
+ "compound slots",
1427
+ "React Native port"
1323
1428
  ],
1324
1429
  "subcomponents": [
1325
1430
  "PhotoHero.Eyebrow",
@@ -1333,8 +1438,9 @@
1333
1438
  ],
1334
1439
  "rules": [
1335
1440
  "オンボーディング入口・写真スライド・メディア上 CTA に使う",
1336
- "写真上の CTA には Button variant=glass-inverse / ghost-inverse を使う",
1337
- "本文が長い場合は Screen scroll=true 側で内部スクロールを確保する"
1441
+ "写真上の CTA には Web では Button variant=glass-inverse / ghost-inverse、React Native では Button variant=glass を使う",
1442
+ "本文が長い場合は Screen scroll=true 側で内部スクロールを確保する",
1443
+ "React Native consumer は ksk-design-system/native/ui の PhotoHero compound slots を使い、写真上 typography をローカル再実装しない"
1338
1444
  ]
1339
1445
  },
1340
1446
  {
@@ -1433,7 +1539,8 @@
1433
1539
  "rules": [
1434
1540
  "loadingLabel prop で i18n",
1435
1541
  "ListSkeleton: rowHeight で 1 行高",
1436
- "GridSkeleton: columns 1-4 + cardHeight で調整"
1542
+ "GridSkeleton: columns 1-4 + cardHeight で調整",
1543
+ "React Native consumer は ksk-design-system/native/ui の ListSkeleton / GridSkeleton alias を使う"
1437
1544
  ]
1438
1545
  },
1439
1546
  {
@@ -1450,6 +1557,21 @@
1450
1557
  "isActive 切替時に key を変えて Chip を強制再マウント (selected キャッシュ残り防止)"
1451
1558
  ]
1452
1559
  },
1560
+ {
1561
+ "name": "PresenceIndicator",
1562
+ "path": "src/components/patterns/presence-indicator.tsx",
1563
+ "description": "「誰か(何か)が今いる/見ている」ことを示す汎用インジケーター。Avatar(イニシャル)+ 右下ステータスドット + statusText + Badge(badgeLabel 指定時)。realtime 取得ロジックや i18n は持ち込まず表示専用。",
1564
+ "variants": [],
1565
+ "sizes": [],
1566
+ "accessibility": [
1567
+ "role=\"status\" + aria-label で name/statusText を読み上げ",
1568
+ "ステータスドットは aria-hidden(色だけに依存させない)"
1569
+ ],
1570
+ "rules": [
1571
+ "online=false は中立色(--Object-Low-Emphasis)、online=true(既定)は --Object-Success",
1572
+ "レスポンシブ非表示は呼び出し側の責務(className でユーティリティを渡す)"
1573
+ ]
1574
+ },
1453
1575
  {
1454
1576
  "name": "BottomSheetFrame",
1455
1577
  "path": "src/components/patterns/bottom-sheet-frame.tsx",
@@ -1469,6 +1591,25 @@
1469
1591
  "フォーム/詳細の中身は DetailSheetScaffold と KeyboardAwareSheetFooter を使う"
1470
1592
  ]
1471
1593
  },
1594
+ {
1595
+ "name": "SideDrawerFrame",
1596
+ "path": "src/components/patterns/side-drawer-frame.tsx",
1597
+ "description": "SheetContent(side=right/left) の詳細ドロワー outer frame preset。全高・padding無し・flex縦・幅md を1つの口でまとめる。PC の右詳細ドロワー用(モバイルの下部シートは BottomSheetFrame)。swipeToClose は side に追従した方向で閉じる。",
1598
+ "variants": [
1599
+ "left",
1600
+ "right"
1601
+ ],
1602
+ "features": [
1603
+ "full-height side drawer",
1604
+ "flex column scroll composition",
1605
+ "side-following swipe-to-close"
1606
+ ],
1607
+ "rules": [
1608
+ "詳細ドロワーの className 上書き(p-0 w-full max-w-md flex flex-col overflow-hidden)を consumer 側に重複させず SideDrawerFrame を使う",
1609
+ "中身は DetailSheetScaffold + 固定フッタで組む(本文 flex-1 overflow-y-auto)",
1610
+ "モバイルの下から出る詳細/フォームは BottomSheetFrame を使う"
1611
+ ]
1612
+ },
1472
1613
  {
1473
1614
  "name": "SettingsSection / SettingsListRow",
1474
1615
  "path": "src/components/patterns/settings-section.tsx",
@@ -1662,7 +1803,7 @@
1662
1803
  {
1663
1804
  "name": "BottomTabBar",
1664
1805
  "path": "src/components/patterns/commerce/bottom-tab-bar.tsx",
1665
- "description": "SP 下部固定タブナビゲーション。default と pill(iOS 26 Liquid Glass)バリアント。pill は centerAction・ラベル表示・inverse tone・mobile shell max-width に対応。",
1806
+ "description": "SP 下部固定タブナビゲーション。default と pill(iOS 26 Liquid Glass)バリアント。pill は centerAction・ラベル表示・inverse tone・mobile shell max-width・floatingPosition(left/center/right)に対応。",
1666
1807
  "features": [
1667
1808
  "badge",
1668
1809
  "centerAction",
@@ -1672,6 +1813,7 @@
1672
1813
  "fixed-or-absolute",
1673
1814
  "maxWidth",
1674
1815
  "inverse-tone",
1816
+ "floatingPosition",
1675
1817
  "native Expo Router tabBar adapter",
1676
1818
  "native hidden routes"
1677
1819
  ],
@@ -1684,9 +1826,27 @@
1684
1826
  "Use tone='inverse' over dark photo/video/gradient backgrounds.",
1685
1827
  "Use pillPosition='absolute' only inside controlled shells or Storybook demos; fixed is the app default.",
1686
1828
  "Set maxWidth to the mobile web shell width when the app is centered in a desktop viewport.",
1829
+ "Use floatingPosition='left'|'right' (variant='pill' only) when a FAB is placed on the opposite side; default 'center' keeps the existing centered float.",
1687
1830
  "Native Expo Router / React Navigation consumers should use createExpoRouterTabBar instead of local floating tab bars."
1688
1831
  ]
1689
1832
  },
1833
+ {
1834
+ "name": "MobileTabBar",
1835
+ "path": "src/components/patterns/commerce/mobile-tab-bar.tsx",
1836
+ "description": "BottomTabBar の consumer-friendly ラッパー。tabs/activeTab/onSelect のジェネリック API から iconsax Linear/Bulk アイコンの自動切替・pill navigation・addAction 中央 CTA を組み立てる。belle-todo の MobileTabBar を移植。",
1837
+ "features": [
1838
+ "generic tab key",
1839
+ "iconsax Linear/Bulk auto-switch",
1840
+ "addAction center CTA",
1841
+ "pointer capture blur",
1842
+ "floatingPosition passthrough"
1843
+ ],
1844
+ "rules": [
1845
+ "tabs は BottomTabBarItem を手組みせず MobileTabItem<T>[](key/label/Icon)で渡す",
1846
+ "addAction 指定時はブランド色丸背景 + Add アイコンが自動で centerAction になる",
1847
+ "floatingPosition='left'|'right' を使う場合は FAB を反対側に併置する"
1848
+ ]
1849
+ },
1690
1850
  {
1691
1851
  "name": "FilterBar",
1692
1852
  "path": "src/components/patterns/commerce/filter-bar.tsx",
@@ -1,4 +1,2 @@
1
- import { b as o } from "./server-variants-qSBVrkGA.js";
2
- export {
3
- o as buttonVariants
4
- };
1
+ import { t as e } from "./server-variants-BtHHqzwI.js";
2
+ export { e as buttonVariants };