ksk-design-system 1.40.1 → 1.41.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 (277) hide show
  1. package/NATIVE_RECIPES.md +46 -1
  2. package/README.md +3 -3
  3. package/contracts/components.json +157 -18
  4. package/dist/class-names.js +2 -4
  5. package/dist/index.js +16807 -15463
  6. package/dist/native/ui.js +7305 -6335
  7. package/dist/native-D6LJPc6D.js +1748 -0
  8. package/dist/native.js +2 -1609
  9. package/dist/rolldown-runtime-Df-vAQej.js +25 -0
  10. package/dist/server-variants-BtHHqzwI.js +46 -0
  11. package/dist/types/components/patterns/admin/bulk-actions.d.ts +1 -1
  12. package/dist/types/components/patterns/admin/chart-controls.d.ts +1 -1
  13. package/dist/types/components/patterns/admin/data-table.d.ts +21 -21
  14. package/dist/types/components/patterns/admin/image-uploader.d.ts +1 -1
  15. package/dist/types/components/patterns/admin/kebab-menu.d.ts +1 -1
  16. package/dist/types/components/patterns/admin/notification-list.d.ts +1 -1
  17. package/dist/types/components/patterns/admin/search-panel.d.ts +1 -1
  18. package/dist/types/components/patterns/admin/status-tabs.d.ts +1 -1
  19. package/dist/types/components/patterns/app-header.d.ts +1 -1
  20. package/dist/types/components/patterns/banner-carousel.d.ts +1 -1
  21. package/dist/types/components/patterns/banner.d.ts +1 -1
  22. package/dist/types/components/patterns/bottom-sheet-form.d.ts +1 -1
  23. package/dist/types/components/patterns/bottom-sheet-frame.d.ts +1 -1
  24. package/dist/types/components/patterns/category-nav.d.ts +1 -1
  25. package/dist/types/components/patterns/category-scroll.d.ts +1 -1
  26. package/dist/types/components/patterns/celebration-dialog.d.ts +49 -0
  27. package/dist/types/components/patterns/celebration.d.ts +38 -2
  28. package/dist/types/components/patterns/chip-filter-bar.d.ts +38 -0
  29. package/dist/types/components/patterns/chip-selector.d.ts +1 -1
  30. package/dist/types/components/patterns/chip.d.ts +1 -1
  31. package/dist/types/components/patterns/collapsible-chip-field.d.ts +35 -0
  32. package/dist/types/components/patterns/commerce/bottom-tab-bar.d.ts +10 -2
  33. package/dist/types/components/patterns/commerce/filter-bar.d.ts +1 -1
  34. package/dist/types/components/patterns/commerce/image-carousel.d.ts +1 -1
  35. package/dist/types/components/patterns/commerce/mobile-tab-bar.d.ts +39 -0
  36. package/dist/types/components/patterns/commerce/order-summary.d.ts +1 -1
  37. package/dist/types/components/patterns/commerce/price-display.d.ts +1 -1
  38. package/dist/types/components/patterns/commerce/product-card.d.ts +1 -1
  39. package/dist/types/components/patterns/commerce/product-carousel.d.ts +1 -1
  40. package/dist/types/components/patterns/commerce/quantity-selector.d.ts +1 -1
  41. package/dist/types/components/patterns/commerce/rating-display.d.ts +1 -1
  42. package/dist/types/components/patterns/commerce/review-card.d.ts +2 -2
  43. package/dist/types/components/patterns/commerce/review-summary.d.ts +1 -1
  44. package/dist/types/components/patterns/compact-file-picker.d.ts +2 -2
  45. package/dist/types/components/patterns/confirm-dialog.d.ts +2 -1
  46. package/dist/types/components/patterns/cookie-consent.d.ts +1 -1
  47. package/dist/types/components/patterns/countdown-hero.d.ts +38 -0
  48. package/dist/types/components/patterns/detail-sheet-scaffold.d.ts +3 -3
  49. package/dist/types/components/patterns/empty-state.d.ts +1 -1
  50. package/dist/types/components/patterns/error-state.d.ts +1 -1
  51. package/dist/types/components/patterns/file-upload.d.ts +2 -1
  52. package/dist/types/components/patterns/filter-chip.d.ts +1 -1
  53. package/dist/types/components/patterns/footer.d.ts +1 -1
  54. package/dist/types/components/patterns/form-field.d.ts +1 -1
  55. package/dist/types/components/patterns/form.d.ts +3 -3
  56. package/dist/types/components/patterns/keyboard-aware-sheet-footer.d.ts +1 -1
  57. package/dist/types/components/patterns/list-item.d.ts +1 -1
  58. package/dist/types/components/patterns/list-skeletons.d.ts +2 -2
  59. package/dist/types/components/patterns/media-action-cluster.d.ts +1 -1
  60. package/dist/types/components/patterns/menu-drawer.d.ts +1 -1
  61. package/dist/types/components/patterns/mobile-app-header.d.ts +1 -1
  62. package/dist/types/components/patterns/mobile-app-shell.d.ts +1 -1
  63. package/dist/types/components/patterns/mobile-floating-action-button.d.ts +1 -1
  64. package/dist/types/components/patterns/notification-badge.d.ts +1 -1
  65. package/dist/types/components/patterns/photo-hero.d.ts +5 -5
  66. package/dist/types/components/patterns/presence-indicator.d.ts +23 -0
  67. package/dist/types/components/patterns/progress-steps.d.ts +1 -1
  68. package/dist/types/components/patterns/quick-action-grid.d.ts +2 -2
  69. package/dist/types/components/patterns/review-overlay.d.ts +1 -1
  70. package/dist/types/components/patterns/screen.d.ts +1 -1
  71. package/dist/types/components/patterns/search-bar.d.ts +1 -1
  72. package/dist/types/components/patterns/section-header.d.ts +1 -1
  73. package/dist/types/components/patterns/settings-section.d.ts +2 -2
  74. package/dist/types/components/patterns/share-buttons.d.ts +2 -1
  75. package/dist/types/components/patterns/shells/admin-shell.d.ts +1 -1
  76. package/dist/types/components/patterns/shells/app-shell.d.ts +1 -1
  77. package/dist/types/components/patterns/shells/marketing-shell.d.ts +1 -1
  78. package/dist/types/components/patterns/simple-pagination.d.ts +1 -1
  79. package/dist/types/components/patterns/stat-card.d.ts +1 -1
  80. package/dist/types/components/patterns/sticky-action-bar.d.ts +1 -1
  81. package/dist/types/components/patterns/swipe-row.d.ts +1 -1
  82. package/dist/types/components/patterns/tag-input.d.ts +2 -1
  83. package/dist/types/components/patterns/tag.d.ts +2 -2
  84. package/dist/types/components/ui/accordion.d.ts +4 -4
  85. package/dist/types/components/ui/alert-dialog.d.ts +11 -11
  86. package/dist/types/components/ui/alert.d.ts +3 -3
  87. package/dist/types/components/ui/auto-grow-textarea.d.ts +1 -1
  88. package/dist/types/components/ui/avatar.d.ts +3 -3
  89. package/dist/types/components/ui/badge.d.ts +2 -2
  90. package/dist/types/components/ui/breadcrumb.d.ts +7 -7
  91. package/dist/types/components/ui/button.d.ts +4 -2
  92. package/dist/types/components/ui/calendar.d.ts +1 -1
  93. package/dist/types/components/ui/card.d.ts +7 -7
  94. package/dist/types/components/ui/checkbox-card.d.ts +2 -2
  95. package/dist/types/components/ui/checkbox-field.d.ts +1 -1
  96. package/dist/types/components/ui/checkbox-group.d.ts +2 -2
  97. package/dist/types/components/ui/checkbox.d.ts +1 -1
  98. package/dist/types/components/ui/coach-mark.d.ts +1 -1
  99. package/dist/types/components/ui/collapsible.d.ts +3 -3
  100. package/dist/types/components/ui/combobox.d.ts +2 -1
  101. package/dist/types/components/ui/countdown-timer.d.ts +2 -1
  102. package/dist/types/components/ui/date-field.d.ts +26 -0
  103. package/dist/types/components/ui/date-picker.d.ts +3 -2
  104. package/dist/types/components/ui/dialog.d.ts +10 -10
  105. package/dist/types/components/ui/dropdown-filter.d.ts +1 -1
  106. package/dist/types/components/ui/dropdown-menu.d.ts +15 -15
  107. package/dist/types/components/ui/error-boundary.d.ts +1 -1
  108. package/dist/types/components/ui/form.d.ts +7 -7
  109. package/dist/types/components/ui/hover-card.d.ts +3 -3
  110. package/dist/types/components/ui/image-gallery.d.ts +2 -1
  111. package/dist/types/components/ui/input.d.ts +1 -1
  112. package/dist/types/components/ui/label.d.ts +1 -1
  113. package/dist/types/components/ui/multi-select.d.ts +2 -1
  114. package/dist/types/components/ui/navigation-bar.d.ts +4 -4
  115. package/dist/types/components/ui/number-input.d.ts +2 -1
  116. package/dist/types/components/ui/pagination.d.ts +7 -7
  117. package/dist/types/components/ui/pill-toggle.d.ts +1 -1
  118. package/dist/types/components/ui/popover.d.ts +4 -4
  119. package/dist/types/components/ui/progress-ring.d.ts +1 -1
  120. package/dist/types/components/ui/progress.d.ts +1 -1
  121. package/dist/types/components/ui/radio-group.d.ts +2 -2
  122. package/dist/types/components/ui/responsive-dialog.d.ts +8 -8
  123. package/dist/types/components/ui/scroll-area.d.ts +2 -2
  124. package/dist/types/components/ui/select.d.ts +8 -8
  125. package/dist/types/components/ui/separator.d.ts +1 -1
  126. package/dist/types/components/ui/sheet.d.ts +9 -9
  127. package/dist/types/components/ui/skeleton.d.ts +1 -1
  128. package/dist/types/components/ui/slider.d.ts +1 -1
  129. package/dist/types/components/ui/social-icon.d.ts +1 -1
  130. package/dist/types/components/ui/social-login-button.d.ts +1 -1
  131. package/dist/types/components/ui/spinner.d.ts +1 -1
  132. package/dist/types/components/ui/star-rating.d.ts +2 -1
  133. package/dist/types/components/ui/status-action-badge.d.ts +1 -1
  134. package/dist/types/components/ui/sub-nav.d.ts +2 -1
  135. package/dist/types/components/ui/switch.d.ts +1 -1
  136. package/dist/types/components/ui/sync-status-badge.d.ts +1 -1
  137. package/dist/types/components/ui/tabs.d.ts +4 -4
  138. package/dist/types/components/ui/textarea.d.ts +1 -1
  139. package/dist/types/components/ui/time-picker.d.ts +2 -1
  140. package/dist/types/components/ui/toast.d.ts +2 -2
  141. package/dist/types/components/ui/tooltip.d.ts +4 -4
  142. package/dist/types/index.d.ts +17 -1
  143. package/dist/types/lib/category-presets.d.ts +64 -0
  144. package/dist/types/lib/server-variants/button-variants.d.ts +2 -2
  145. package/dist/types/native/components/Accordion.d.ts +1 -1
  146. package/dist/types/native/components/Alert.d.ts +1 -1
  147. package/dist/types/native/components/AlertDialog.d.ts +2 -1
  148. package/dist/types/native/components/AppHeader.d.ts +1 -1
  149. package/dist/types/native/components/AppShell.d.ts +1 -1
  150. package/dist/types/native/components/AutoGrowTextarea.d.ts +2 -1
  151. package/dist/types/native/components/Avatar.d.ts +2 -1
  152. package/dist/types/native/components/Badge.d.ts +1 -1
  153. package/dist/types/native/components/Banner.d.ts +2 -1
  154. package/dist/types/native/components/BannerCarousel.d.ts +2 -1
  155. package/dist/types/native/components/BottomSheetForm.d.ts +1 -1
  156. package/dist/types/native/components/BottomSheetFrame.d.ts +1 -1
  157. package/dist/types/native/components/BottomTabBar.d.ts +13 -47
  158. package/dist/types/native/components/Breadcrumb.d.ts +1 -1
  159. package/dist/types/native/components/Button.d.ts +1 -1
  160. package/dist/types/native/components/Calendar.d.ts +2 -1
  161. package/dist/types/native/components/Card.d.ts +1 -1
  162. package/dist/types/native/components/CategoryNav.d.ts +1 -1
  163. package/dist/types/native/components/CategoryScroll.d.ts +2 -1
  164. package/dist/types/native/components/Celebration.d.ts +33 -1
  165. package/dist/types/native/components/CelebrationDialog.d.ts +30 -0
  166. package/dist/types/native/components/Checkbox.d.ts +2 -1
  167. package/dist/types/native/components/CheckboxCard.d.ts +2 -1
  168. package/dist/types/native/components/CheckboxField.d.ts +2 -1
  169. package/dist/types/native/components/CheckboxGroup.d.ts +2 -1
  170. package/dist/types/native/components/Chip.d.ts +1 -1
  171. package/dist/types/native/components/ChipFilterBar.d.ts +19 -0
  172. package/dist/types/native/components/ChipSelector.d.ts +2 -1
  173. package/dist/types/native/components/CoachMark.d.ts +2 -1
  174. package/dist/types/native/components/CoachMarkOverlay.d.ts +1 -1
  175. package/dist/types/native/components/Collapsible.d.ts +1 -1
  176. package/dist/types/native/components/CollapsibleChipField.d.ts +23 -0
  177. package/dist/types/native/components/Combobox.d.ts +2 -1
  178. package/dist/types/native/components/CompactFilePicker.d.ts +2 -2
  179. package/dist/types/native/components/ConfirmDialog.d.ts +2 -1
  180. package/dist/types/native/components/CountdownHero.d.ts +20 -0
  181. package/dist/types/native/components/CountdownTimer.d.ts +2 -1
  182. package/dist/types/native/components/DateField.d.ts +15 -0
  183. package/dist/types/native/components/DatePicker.d.ts +2 -1
  184. package/dist/types/native/components/DetailSheetScaffold.d.ts +3 -3
  185. package/dist/types/native/components/Dialog.d.ts +1 -1
  186. package/dist/types/native/components/DropdownFilter.d.ts +2 -1
  187. package/dist/types/native/components/DropdownMenu.d.ts +2 -1
  188. package/dist/types/native/components/EmptyState.d.ts +1 -1
  189. package/dist/types/native/components/ErrorState.d.ts +1 -1
  190. package/dist/types/native/components/FileUpload.d.ts +2 -1
  191. package/dist/types/native/components/FilterBar.d.ts +2 -1
  192. package/dist/types/native/components/FilterChip.d.ts +2 -1
  193. package/dist/types/native/components/FloatingTabBar.d.ts +30 -0
  194. package/dist/types/native/components/Footer.d.ts +2 -1
  195. package/dist/types/native/components/FormField.d.ts +1 -1
  196. package/dist/types/native/components/GlassView.d.ts +1 -1
  197. package/dist/types/native/components/GradientSurface.d.ts +27 -0
  198. package/dist/types/native/components/ImageCarousel.d.ts +2 -1
  199. package/dist/types/native/components/ImageGallery.d.ts +2 -1
  200. package/dist/types/native/components/Input.d.ts +1 -1
  201. package/dist/types/native/components/KeyboardAwareSheetFooter.d.ts +1 -1
  202. package/dist/types/native/components/Label.d.ts +1 -1
  203. package/dist/types/native/components/ListItem.d.ts +1 -1
  204. package/dist/types/native/components/ListSkeletons.d.ts +14 -1
  205. package/dist/types/native/components/MarketingShell.d.ts +1 -1
  206. package/dist/types/native/components/MediaActionCluster.d.ts +32 -0
  207. package/dist/types/native/components/MenuDrawer.d.ts +1 -1
  208. package/dist/types/native/components/MobileAppHeader.d.ts +1 -1
  209. package/dist/types/native/components/MobileAppShell.d.ts +1 -1
  210. package/dist/types/native/components/MobileFloatingActionButton.d.ts +1 -1
  211. package/dist/types/native/components/MultiSelect.d.ts +2 -1
  212. package/dist/types/native/components/NavigationBar.d.ts +1 -1
  213. package/dist/types/native/components/NotificationBadge.d.ts +1 -1
  214. package/dist/types/native/components/NumberInput.d.ts +2 -1
  215. package/dist/types/native/components/OrderSummary.d.ts +2 -1
  216. package/dist/types/native/components/Pagination.d.ts +2 -1
  217. package/dist/types/native/components/PhotoHero.d.ts +36 -0
  218. package/dist/types/native/components/PillToggle.d.ts +2 -1
  219. package/dist/types/native/components/Popover.d.ts +1 -1
  220. package/dist/types/native/components/PresenceIndicator.d.ts +15 -0
  221. package/dist/types/native/components/PriceDisplay.d.ts +2 -1
  222. package/dist/types/native/components/ProductCard.d.ts +2 -1
  223. package/dist/types/native/components/ProductCarousel.d.ts +2 -1
  224. package/dist/types/native/components/Progress.d.ts +2 -1
  225. package/dist/types/native/components/ProgressRing.d.ts +2 -1
  226. package/dist/types/native/components/ProgressSteps.d.ts +2 -1
  227. package/dist/types/native/components/QuantitySelector.d.ts +2 -1
  228. package/dist/types/native/components/QuickActionGrid.d.ts +2 -2
  229. package/dist/types/native/components/RadioGroup.d.ts +2 -1
  230. package/dist/types/native/components/RatingDisplay.d.ts +2 -1
  231. package/dist/types/native/components/ResponsiveDialog.d.ts +2 -1
  232. package/dist/types/native/components/ReviewCard.d.ts +2 -1
  233. package/dist/types/native/components/ReviewOverlay.d.ts +2 -1
  234. package/dist/types/native/components/ReviewSummary.d.ts +2 -1
  235. package/dist/types/native/components/Screen.d.ts +16 -0
  236. package/dist/types/native/components/ScrollArea.d.ts +1 -1
  237. package/dist/types/native/components/SearchBar.d.ts +2 -1
  238. package/dist/types/native/components/SectionHeader.d.ts +2 -1
  239. package/dist/types/native/components/Select.d.ts +2 -1
  240. package/dist/types/native/components/Separator.d.ts +2 -1
  241. package/dist/types/native/components/SettingsSection.d.ts +2 -2
  242. package/dist/types/native/components/ShareButtons.d.ts +2 -1
  243. package/dist/types/native/components/Sheet.d.ts +1 -1
  244. package/dist/types/native/components/SimplePagination.d.ts +2 -1
  245. package/dist/types/native/components/Skeleton.d.ts +3 -2
  246. package/dist/types/native/components/Slider.d.ts +2 -1
  247. package/dist/types/native/components/SocialIcon.d.ts +2 -1
  248. package/dist/types/native/components/SocialLoginButton.d.ts +2 -1
  249. package/dist/types/native/components/Spinner.d.ts +2 -1
  250. package/dist/types/native/components/Stack.d.ts +1 -1
  251. package/dist/types/native/components/StarRating.d.ts +2 -1
  252. package/dist/types/native/components/StatCard.d.ts +2 -1
  253. package/dist/types/native/components/StatusActionBadge.d.ts +1 -1
  254. package/dist/types/native/components/StickyActionBar.d.ts +1 -1
  255. package/dist/types/native/components/SubNav.d.ts +2 -1
  256. package/dist/types/native/components/SwipeRow.d.ts +1 -1
  257. package/dist/types/native/components/Switch.d.ts +2 -1
  258. package/dist/types/native/components/SyncStatusBadge.d.ts +2 -1
  259. package/dist/types/native/components/Tabs.d.ts +4 -4
  260. package/dist/types/native/components/Tag.d.ts +1 -1
  261. package/dist/types/native/components/TagInput.d.ts +2 -1
  262. package/dist/types/native/components/Text.d.ts +1 -1
  263. package/dist/types/native/components/Textarea.d.ts +2 -1
  264. package/dist/types/native/components/TimePicker.d.ts +2 -1
  265. package/dist/types/native/components/Toast.d.ts +1 -1
  266. package/dist/types/native/components/index.d.ts +12 -1
  267. package/dist/types/native/components/use-reduce-motion.d.ts +6 -0
  268. package/dist/types/native/theme/ThemeProvider.d.ts +1 -1
  269. package/dist/types/tokens/native/themes.d.ts +237 -0
  270. package/package.json +26 -9
  271. package/src/components/COMPONENT_LOOKUP.md +10 -3
  272. package/src/native/COMPONENT_LOOKUP.md +145 -0
  273. package/src/preset.css +25 -0
  274. package/src/styles/glass.css +42 -20
  275. package/src/themes/cobalt.css +22 -0
  276. package/tokens.json +100 -16
  277. package/dist/server-variants-qSBVrkGA.js +0 -56
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
@@ -14,7 +14,7 @@
14
14
  - **アクセシブル** — shadcn/ui(Radix UI ベース)+ `@storybook/addon-a11y` で a11y を担保
15
15
  - **Tailwind CSS v4 ネイティブ** — `@theme` ベースのトークン設計
16
16
  - **型安全** — React 19 + TypeScript、CVA によるバリアント管理
17
- - **125 + 96 コンポーネント** — Web 125(UI 57 / EC 11 / 管理 8 / シェル 3 / パターン 46)+ React Native 96
17
+ - **125 Web コンポーネント + 126 React Native exports** — Web 125(UI 57 / EC 11 / 管理 8 / シェル 3 / パターン 46)+ RN `native/ui` 公開 export 126
18
18
  - **iOS 26 Liquid Glass 対応** — RN 側 `GlassView` + `Button variant="glass"`、Web 側 `.glass` CSS マテリアル
19
19
 
20
20
  ## 🎨 テーマ
@@ -131,7 +131,7 @@ import { BottomTabBar } from "ksk-design-system"
131
131
 
132
132
  ### React Native / Expo
133
133
 
134
- `ksk-design-system/native/ui` から直接 RN 用コンポーネント(91 個)を import できます。iOS 26 の **Liquid Glass** にも対応:
134
+ `ksk-design-system/native/ui` から直接 RN 用コンポーネント export(126 個)を import できます。iOS 26 の **Liquid Glass** にも対応:
135
135
 
136
136
  ```tsx
137
137
  import { ThemeProvider, Button, Card, GlassView } from "ksk-design-system/native/ui"
@@ -144,7 +144,7 @@ npx expo install expo-glass-effect expo-blur
144
144
 
145
145
  Web は backdrop-filter で擬似、Android は半透明 surface でフォールバックします。
146
146
 
147
- Expo Router / React Navigation の tab bar、native `GlassView`、Button loading、settings/attachment/mobile shell recipes は `NATIVE_RECIPES.md` を参照してください。
147
+ 既存コンポーネントの確認は `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
148
 
149
149
  ## 🧪 試してみる(1コマンドお試し)
150
150
 
@@ -4,19 +4,19 @@
4
4
  "version": "1.34.0",
5
5
  "description": "全コンポーネントの構造化定義。バリアント・アクセシビリティ要件・使用ルールを機械可読形式で管理。",
6
6
  "counts": {
7
- "ui": 57,
8
- "patterns": 46,
9
- "commerce": 11,
7
+ "ui": 58,
8
+ "patterns": 51,
9
+ "commerce": 12,
10
10
  "admin": 8,
11
11
  "shells": 3,
12
- "total": 125
12
+ "total": 132
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,81 @@
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)。",
1279
+ "features": [
1280
+ "large-serif-number",
1281
+ "today-past-active-states",
1282
+ "illustration-slot",
1283
+ "iso-string-or-date-target"
1284
+ ],
1285
+ "rules": [
1286
+ "既存の CountdownTimer(残日数ピル表示)とは別コンポーネント。装飾ヒーロー表示専用で置き換えない。",
1287
+ "日付編集フォームは持ち込まない。表示専用コンポーネント。",
1288
+ "illustration スロットに wedding 画像等のドメイン固有アセットを直接埋め込まない。呼び出し側が用意する。",
1289
+ "serif フォントは --font-display-serif トークン未定義環境向けに Georgia / Noto Serif JP / serif へフォールバックする。"
1290
+ ]
1291
+ },
1194
1292
  {
1195
1293
  "name": "StickyActionBar",
1196
1294
  "path": "src/components/patterns/sticky-action-bar.tsx",
@@ -1272,7 +1370,8 @@
1272
1370
  "safe-area anchor",
1273
1371
  "idle auto-hide",
1274
1372
  "glass buttons",
1275
- "text-on-media"
1373
+ "text-on-media",
1374
+ "React Native port"
1276
1375
  ],
1277
1376
  "accessibility": [
1278
1377
  "role=group",
@@ -1284,7 +1383,8 @@
1284
1383
  "メディア上の操作群に使用する。通常画面の下部 CTA には StickyActionBar を使う",
1285
1384
  "items[].label は必須。アイコン単独にしない",
1286
1385
  "暗い写真・動画・濃色面上では glass-inverse / text-on-media を維持する",
1287
- "autoHideMs=null で idle fade を無効化できる"
1386
+ "autoHideMs=null で idle fade を無効化できる",
1387
+ "React Native consumer は ksk-design-system/native/ui の MediaActionCluster を使い、ローカル overlay action を再実装しない"
1288
1388
  ]
1289
1389
  },
1290
1390
  {
@@ -1297,7 +1397,8 @@
1297
1397
  "min-h-0 guard",
1298
1398
  "fixed header slot",
1299
1399
  "fixed footer slot",
1300
- "safe-area bottom"
1400
+ "safe-area bottom",
1401
+ "React Native port"
1301
1402
  ],
1302
1403
  "accessibility": [
1303
1404
  "main landmark",
@@ -1307,7 +1408,8 @@
1307
1408
  "body スクロールを使わないアプリのフルスクリーン画面に使う",
1308
1409
  "本文が長い画面では scroll=true のまま使う",
1309
1410
  "写真ヒーローなど 1 画面固定では scroll=false と padding=none を組み合わせる",
1310
- "footer には主要 CTA を置き、safe-area 余白を消費側で再実装しない"
1411
+ "footer には主要 CTA を置き、safe-area 余白を消費側で再実装しない",
1412
+ "React Native consumer は ksk-design-system/native/ui の Screen を使い、header/body/footer shell をローカル再実装しない"
1311
1413
  ]
1312
1414
  },
1313
1415
  {
@@ -1319,7 +1421,8 @@
1319
1421
  "medium / dark overlay",
1320
1422
  "bottom / center align",
1321
1423
  "on-image typography",
1322
- "compound slots"
1424
+ "compound slots",
1425
+ "React Native port"
1323
1426
  ],
1324
1427
  "subcomponents": [
1325
1428
  "PhotoHero.Eyebrow",
@@ -1333,8 +1436,9 @@
1333
1436
  ],
1334
1437
  "rules": [
1335
1438
  "オンボーディング入口・写真スライド・メディア上 CTA に使う",
1336
- "写真上の CTA には Button variant=glass-inverse / ghost-inverse を使う",
1337
- "本文が長い場合は Screen scroll=true 側で内部スクロールを確保する"
1439
+ "写真上の CTA には Web では Button variant=glass-inverse / ghost-inverse、React Native では Button variant=glass を使う",
1440
+ "本文が長い場合は Screen scroll=true 側で内部スクロールを確保する",
1441
+ "React Native consumer は ksk-design-system/native/ui の PhotoHero compound slots を使い、写真上 typography をローカル再実装しない"
1338
1442
  ]
1339
1443
  },
1340
1444
  {
@@ -1433,7 +1537,8 @@
1433
1537
  "rules": [
1434
1538
  "loadingLabel prop で i18n",
1435
1539
  "ListSkeleton: rowHeight で 1 行高",
1436
- "GridSkeleton: columns 1-4 + cardHeight で調整"
1540
+ "GridSkeleton: columns 1-4 + cardHeight で調整",
1541
+ "React Native consumer は ksk-design-system/native/ui の ListSkeleton / GridSkeleton alias を使う"
1437
1542
  ]
1438
1543
  },
1439
1544
  {
@@ -1450,6 +1555,21 @@
1450
1555
  "isActive 切替時に key を変えて Chip を強制再マウント (selected キャッシュ残り防止)"
1451
1556
  ]
1452
1557
  },
1558
+ {
1559
+ "name": "PresenceIndicator",
1560
+ "path": "src/components/patterns/presence-indicator.tsx",
1561
+ "description": "「誰か(何か)が今いる/見ている」ことを示す汎用インジケーター。Avatar(イニシャル)+ 右下ステータスドット + statusText + Badge(badgeLabel 指定時)。realtime 取得ロジックや i18n は持ち込まず表示専用。",
1562
+ "variants": [],
1563
+ "sizes": [],
1564
+ "accessibility": [
1565
+ "role=\"status\" + aria-label で name/statusText を読み上げ",
1566
+ "ステータスドットは aria-hidden(色だけに依存させない)"
1567
+ ],
1568
+ "rules": [
1569
+ "online=false は中立色(--Object-Low-Emphasis)、online=true(既定)は --Object-Success",
1570
+ "レスポンシブ非表示は呼び出し側の責務(className でユーティリティを渡す)"
1571
+ ]
1572
+ },
1453
1573
  {
1454
1574
  "name": "BottomSheetFrame",
1455
1575
  "path": "src/components/patterns/bottom-sheet-frame.tsx",
@@ -1662,7 +1782,7 @@
1662
1782
  {
1663
1783
  "name": "BottomTabBar",
1664
1784
  "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 に対応。",
1785
+ "description": "SP 下部固定タブナビゲーション。default と pill(iOS 26 Liquid Glass)バリアント。pill は centerAction・ラベル表示・inverse tone・mobile shell max-width・floatingPosition(left/center/right)に対応。",
1666
1786
  "features": [
1667
1787
  "badge",
1668
1788
  "centerAction",
@@ -1672,6 +1792,7 @@
1672
1792
  "fixed-or-absolute",
1673
1793
  "maxWidth",
1674
1794
  "inverse-tone",
1795
+ "floatingPosition",
1675
1796
  "native Expo Router tabBar adapter",
1676
1797
  "native hidden routes"
1677
1798
  ],
@@ -1684,9 +1805,27 @@
1684
1805
  "Use tone='inverse' over dark photo/video/gradient backgrounds.",
1685
1806
  "Use pillPosition='absolute' only inside controlled shells or Storybook demos; fixed is the app default.",
1686
1807
  "Set maxWidth to the mobile web shell width when the app is centered in a desktop viewport.",
1808
+ "Use floatingPosition='left'|'right' (variant='pill' only) when a FAB is placed on the opposite side; default 'center' keeps the existing centered float.",
1687
1809
  "Native Expo Router / React Navigation consumers should use createExpoRouterTabBar instead of local floating tab bars."
1688
1810
  ]
1689
1811
  },
1812
+ {
1813
+ "name": "MobileTabBar",
1814
+ "path": "src/components/patterns/commerce/mobile-tab-bar.tsx",
1815
+ "description": "BottomTabBar の consumer-friendly ラッパー。tabs/activeTab/onSelect のジェネリック API から iconsax Linear/Bulk アイコンの自動切替・pill navigation・addAction 中央 CTA を組み立てる。belle-todo の MobileTabBar を移植。",
1816
+ "features": [
1817
+ "generic tab key",
1818
+ "iconsax Linear/Bulk auto-switch",
1819
+ "addAction center CTA",
1820
+ "pointer capture blur",
1821
+ "floatingPosition passthrough"
1822
+ ],
1823
+ "rules": [
1824
+ "tabs は BottomTabBarItem を手組みせず MobileTabItem<T>[](key/label/Icon)で渡す",
1825
+ "addAction 指定時はブランド色丸背景 + Add アイコンが自動で centerAction になる",
1826
+ "floatingPosition='left'|'right' を使う場合は FAB を反対側に併置する"
1827
+ ]
1828
+ },
1690
1829
  {
1691
1830
  "name": "FilterBar",
1692
1831
  "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 };