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
@@ -0,0 +1,42 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const chipVariants: (props?: {
4
+ variant?: "accent" | "outline" | "filled";
5
+ size?: "sm" | "lg" | "md" | "tile";
6
+ shape?: "square" | "pill";
7
+ } & import("class-variance-authority/types").ClassProp) => string;
8
+ interface ChipProps extends Omit<React.ComponentProps<"button">, "children">, VariantProps<typeof chipVariants> {
9
+ /** リンクとして使う場合の URL。指定時は `<a>` でレンダリング */
10
+ href?: string;
11
+ /** 選択状態。true で Brand 色 + 白文字へ強調 */
12
+ selected?: boolean;
13
+ /** 売り切れ状態(斜線オーバーレイ + disabled) */
14
+ soldOut?: boolean;
15
+ /** 削除可能(× ボタン表示) */
16
+ removable?: boolean;
17
+ /** 削除時のコールバック */
18
+ onRemove?: () => void;
19
+ /** 件数バッジ(例: フィルタ件数) */
20
+ count?: number;
21
+ children?: React.ReactNode;
22
+ }
23
+ /**
24
+ * Chip — クリック可能なキーワード・フィルタチップ。
25
+ *
26
+ * Tag(表示専用ラベル)との違い:
27
+ * - Chip はインタラクティブ(クリック・選択・削除可)
28
+ * - Chip は pill(rounded-full)/ square / tile を持つ
29
+ * - Chip は count バッジ・売り切れ状態・removable を持てる
30
+ *
31
+ * ### AI 向け使用ルール
32
+ * - キーワード: `<Chip>キーワード</Chip>`
33
+ * - フィルタ選択: `<Chip selected>選択済み</Chip>`
34
+ * - 削除可能タグ: `<Chip removable onRemove={fn}>タグ</Chip>`
35
+ * - サイズタイル: `<Chip shape="square" size="tile" selected={isSelected}>M</Chip>`
36
+ * - 売り切れタイル: `<Chip shape="square" size="tile" soldOut>L</Chip>`
37
+ * - カウント付き: `<Chip selected count={156}>すべて</Chip>`
38
+ * - リンク化: `<Chip href="/search?q=foo">foo</Chip>`
39
+ */
40
+ declare function Chip({ className, id, style, title, variant, size, shape, href, selected, soldOut, removable, onRemove, count, children, disabled: disabledProp, ...props }: ChipProps): import("react/jsx-runtime").JSX.Element;
41
+ export { Chip, chipVariants };
42
+ export type { ChipProps };
@@ -0,0 +1,66 @@
1
+ import * as React from "react";
2
+ import { type CoachMarkVariant } from "@/components/ui/coach-mark";
3
+ export interface CoachStep {
4
+ /** querySelector で要素を特定。要素が無ければ画面中央にフォールバック表示。 */
5
+ selector: string;
6
+ title: string;
7
+ desc: string;
8
+ /** ツールチップ位置。auto = 下に余白があれば下、なければ上 */
9
+ placement?: "auto" | "top" | "bottom" | "left" | "right";
10
+ /** spotlight outline の余白 (px、既定 8) */
11
+ padding?: number;
12
+ }
13
+ export interface CoachMarkOverlayProps {
14
+ steps: CoachStep[];
15
+ open: boolean;
16
+ onComplete: () => void;
17
+ onSkip?: () => void;
18
+ /** CoachMark の見た目(default / brand) */
19
+ variant?: CoachMarkVariant;
20
+ /** spotlight ring 色(CSS variable も可、既定 var(--Brand-Primary)) */
21
+ ringColor?: string;
22
+ /** content の最大幅 (px、既定 280) */
23
+ maxWidth?: number;
24
+ }
25
+ /**
26
+ * CoachMarkOverlay — 初回ユーザー向けの多ステップ onboarding ツアー。
27
+ *
28
+ * DS の単発 `<CoachMark>` をベースに、selector で複数要素を順番に
29
+ * spotlight + tooltip 表示するツアー orchestrator。
30
+ *
31
+ * 仕組み:
32
+ * 1. 各 step の DOM 要素を querySelector で取得 → BoundingRect の位置に
33
+ * invisible target を fixed 配置し `<CoachMark>` をアタッチ
34
+ * 2. spotlight 効果は `outline + box-shadow: 0 0 0 9999px rgba(0,0,0,0.55)`
35
+ * で対象だけを切り抜き表示
36
+ * 3. ツールチップは auto placement(下に余白あれば下、なければ上)
37
+ * 4. 要素が見つからない step は画面中央に dark overlay 付きで表示
38
+ *
39
+ * 完了状態の永続化は `isCoachCompleted` / `markCoachCompleted` を使う:
40
+ * ```tsx
41
+ * import { CoachMarkOverlay, isCoachCompleted, markCoachCompleted } from "ksk-design-system"
42
+ *
43
+ * const [open, setOpen] = useState(false)
44
+ * useEffect(() => {
45
+ * if (!isCoachCompleted()) setOpen(true)
46
+ * }, [])
47
+ *
48
+ * <CoachMarkOverlay
49
+ * open={open}
50
+ * steps={[
51
+ * { selector: 'header', title: 'ここに日付', desc: '...' },
52
+ * { selector: '.fab-fixed', title: 'クイック追加', desc: '...' },
53
+ * ]}
54
+ * onComplete={() => { markCoachCompleted(); setOpen(false) }}
55
+ * onSkip={() => { markCoachCompleted(); setOpen(false) }}
56
+ * />
57
+ * ```
58
+ */
59
+ export declare function CoachMarkOverlay({ steps, open, onComplete, onSkip, variant, ringColor, maxWidth, }: CoachMarkOverlayProps): React.ReactPortal;
60
+ /**
61
+ * Onboarding 完了状態を localStorage で管理するヘルパー。
62
+ * 複数アプリで使う際は keys を別にできるよう引数化可能。
63
+ */
64
+ export declare function isCoachCompleted(key?: string, version?: string): boolean;
65
+ export declare function markCoachCompleted(key?: string, version?: string): void;
66
+ export declare function resetCoach(key?: string): void;
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ interface BottomTabBarItem {
3
+ label: string;
4
+ icon: React.ReactNode;
5
+ activeIcon?: React.ReactNode;
6
+ href?: string;
7
+ onClick?: () => void;
8
+ badgeCount?: number;
9
+ isActive?: boolean;
10
+ }
11
+ interface BottomTabBarProps extends React.ComponentProps<"nav"> {
12
+ items: BottomTabBarItem[];
13
+ /**
14
+ * "default" : 従来の全幅バー(ボーダー付き)
15
+ * "pill" : iOS 26 スタイル — Liquid Glass フローティングピル
16
+ */
17
+ variant?: "default" | "pill";
18
+ /**
19
+ * pill variant の配置モード(デフォルト "fixed")
20
+ * - "fixed" : ビューポートに固定(実アプリ用)
21
+ * - "absolute" : 親要素内に配置(Storybook 等のデモ用)
22
+ */
23
+ pillPosition?: "fixed" | "absolute";
24
+ }
25
+ declare function BottomTabBar({ className, items, variant, pillPosition, ...props }: BottomTabBarProps): import("react/jsx-runtime").JSX.Element;
26
+ export { BottomTabBar };
27
+ export type { BottomTabBarItem, BottomTabBarProps };
@@ -0,0 +1,39 @@
1
+ import * as React from "react";
2
+ /** フィルターの選択肢 */
3
+ interface FilterOption {
4
+ label: string;
5
+ value: string;
6
+ }
7
+ /** フィルターチップの定義 */
8
+ interface FilterChip {
9
+ /** フィルターのラベル(例: "価格") */
10
+ label: string;
11
+ /** 選択中の表示値(例: "¥3,000〜¥5,000")。指定するとアクティブ表示 */
12
+ value?: string;
13
+ /** アクティブ状態 */
14
+ isActive?: boolean;
15
+ /** クリックハンドラ(options 未指定時に使用) */
16
+ onClick?: () => void;
17
+ /** 選択肢リスト(指定するとドロップダウンが開く) */
18
+ options?: FilterOption[];
19
+ /** 選択中の値 */
20
+ selectedValue?: string;
21
+ /** 選択時のコールバック */
22
+ onSelect?: (value: string | null) => void;
23
+ }
24
+ /** フィルターバーのプロパティ定義 */
25
+ interface FilterBarProps extends React.ComponentProps<"nav"> {
26
+ filters: FilterChip[];
27
+ resultCount?: number;
28
+ sortLabel?: string;
29
+ sortOptions?: FilterOption[];
30
+ selectedSort?: string;
31
+ onSortSelect?: (value: string) => void;
32
+ onSortClick?: () => void;
33
+ onMoreFilters?: () => void;
34
+ activeFilterCount?: number;
35
+ }
36
+ /** 汎用フィルターバーコンポーネント */
37
+ declare function FilterBar({ filters, resultCount, sortLabel, sortOptions, selectedSort, onSortSelect, onSortClick, onMoreFilters, activeFilterCount, className, ...props }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
38
+ export { FilterBar };
39
+ export type { FilterChip, FilterOption, FilterBarProps };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ interface ImageCarouselProps extends React.ComponentProps<"div"> {
3
+ images: Array<{
4
+ src: string;
5
+ alt: string;
6
+ href?: string;
7
+ }>;
8
+ aspectRatio?: "square" | "video" | "banner";
9
+ showDots?: boolean;
10
+ showArrows?: boolean;
11
+ autoPlay?: number;
12
+ }
13
+ declare function ImageCarousel({ images, aspectRatio, showDots, showArrows, autoPlay, className, ...props }: ImageCarouselProps): import("react/jsx-runtime").JSX.Element;
14
+ export { ImageCarousel };
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ /** 注文サマリーの明細行 */
3
+ interface OrderSummaryLineItem {
4
+ /** ラベル(例: 小計、送料) */
5
+ label: string;
6
+ /** 値(文字列またはReactノード) */
7
+ value: React.ReactNode;
8
+ }
9
+ interface OrderSummaryProps extends React.ComponentProps<"div"> {
10
+ /** 明細行の配列 */
11
+ lineItems?: OrderSummaryLineItem[];
12
+ /** 合計ラベル */
13
+ totalLabel?: string;
14
+ /** 合計金額の表示文字列 */
15
+ totalValue: string;
16
+ /** CTAボタンのラベル */
17
+ ctaLabel: string;
18
+ /** CTAボタンクリック時のコールバック */
19
+ onCTAClick?: () => void;
20
+ /** CTAボタンの無効状態 */
21
+ ctaDisabled?: boolean;
22
+ /** 画面下部に固定表示するか */
23
+ fixed?: boolean;
24
+ }
25
+ declare function OrderSummary({ className, lineItems, totalLabel, totalValue, ctaLabel, onCTAClick, ctaDisabled, fixed, ...props }: OrderSummaryProps): import("react/jsx-runtime").JSX.Element;
26
+ export { OrderSummary };
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ /** 価格表示バリアント定義 */
4
+ declare const priceVariants: (props?: {
5
+ size?: "sm" | "lg" | "xl" | "md";
6
+ } & import("class-variance-authority/types").ClassProp) => string;
7
+ interface PriceDisplayProps extends React.ComponentProps<"div">, VariantProps<typeof priceVariants> {
8
+ /** 表示価格 */
9
+ price: number;
10
+ /** 価格範囲の最大値(範囲表示用) */
11
+ maxPrice?: number;
12
+ /** 元の価格(セール時の打ち消し線表示用) */
13
+ originalPrice?: number;
14
+ /** 税込ラベルを表示するか */
15
+ showTaxLabel?: boolean;
16
+ /** 通貨記号 */
17
+ currency?: string;
18
+ }
19
+ declare function PriceDisplay({ className, price, maxPrice, originalPrice, showTaxLabel, currency, size, ...props }: PriceDisplayProps): import("react/jsx-runtime").JSX.Element;
20
+ export { PriceDisplay, priceVariants };
@@ -0,0 +1,50 @@
1
+ import * as React from "react";
2
+ interface ProductCardTag {
3
+ label: string;
4
+ variant?: "default" | "brand" | "caution" | "success";
5
+ }
6
+ interface ProductCardProps extends React.ComponentProps<"div"> {
7
+ name: string;
8
+ imageUrl: string;
9
+ imageAlt?: string;
10
+ price: number;
11
+ originalPrice?: number;
12
+ rating?: number;
13
+ reviewCount?: number;
14
+ shopName?: string;
15
+ tags?: ProductCardTag[];
16
+ isFavorite?: boolean;
17
+ onFavoriteToggle?: () => void;
18
+ href?: string;
19
+ onCardClick?: () => void;
20
+ ranking?: number;
21
+ /** @deprecated v1.30.0 以降は表示しません。既存 consumer の型互換のために残しています。 */
22
+ deliveryLabel?: string;
23
+ orientation?: "vertical" | "horizontal";
24
+ showCartButton?: boolean;
25
+ onCartAdd?: () => void;
26
+ cartButtonLabel?: string;
27
+ }
28
+ /**
29
+ * ProductCard — 商品表示カード(EC 系の中核)。
30
+ *
31
+ * orientation:
32
+ * - `vertical`(既定): グリッド表示。商品一覧・カルーセル向け。
33
+ * - `horizontal`: リスト表示。カート・検索結果・履歴向け。
34
+ *
35
+ * stretched-link パターン:
36
+ * `href` または `onCardClick` を渡すとカード全体が 1 つのクリッカブル領域に
37
+ * なる(`<a class="absolute inset-0">` を内側に重ねる)。
38
+ * FavoriteButton / CartButton は z-index で上に重ねつつ、
39
+ * `e.stopPropagation()` で外側リンクの伝播を止めている。
40
+ *
41
+ * 機能:
42
+ * - `ranking`: ランキングバッジ表示(左上)
43
+ * - `tags`: TagBadge を画像下部に表示
44
+ * - `discountPercent`: `originalPrice > price` から自動算出
45
+ * - `isFavorite` / `onFavoriteToggle`: ハート(重ね・トグル)
46
+ * - `showCartButton`: カート追加 CTA(vertical のみ)
47
+ */
48
+ declare function ProductCard({ className, name, imageUrl, imageAlt, price, originalPrice, rating, reviewCount, shopName, tags, isFavorite, onFavoriteToggle, href, onCardClick, ranking, deliveryLabel: _deliveryLabel, orientation, showCartButton, onCartAdd, cartButtonLabel, ...props }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
49
+ export { ProductCard };
50
+ export type { ProductCardProps, ProductCardTag };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { type ProductCardProps } from "./product-card";
3
+ interface ProductCarouselProps extends React.ComponentProps<"section"> {
4
+ title: string;
5
+ subtitle?: string;
6
+ moreHref?: string;
7
+ moreLabel?: string;
8
+ onMoreClick?: () => void;
9
+ products: ProductCardProps[];
10
+ cardSize?: "sm" | "md" | "lg";
11
+ showRanking?: boolean;
12
+ showCartButton?: boolean;
13
+ }
14
+ declare function ProductCarousel({ className, title, subtitle, moreHref, moreLabel, onMoreClick, products, cardSize, showRanking, showCartButton, ...props }: ProductCarouselProps): import("react/jsx-runtime").JSX.Element;
15
+ export { ProductCarousel };
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ interface QuantitySelectorProps extends Omit<React.ComponentProps<"div">, "onChange"> {
3
+ /** 現在の数量 */
4
+ value: number;
5
+ /** 最小値 */
6
+ min?: number;
7
+ /** 最大値 */
8
+ max?: number;
9
+ /** 数量変更時のコールバック */
10
+ onChange?: (value: number) => void;
11
+ /** 無効状態 */
12
+ disabled?: boolean;
13
+ /** 表示サイズ: sm(カート用コンパクトピル)/ md(詳細ページ用丸ボタン) */
14
+ size?: "sm" | "md";
15
+ /** 最小値以下でゴミ箱アイコンを表示するか */
16
+ showTrash?: boolean;
17
+ /** 削除時のコールバック */
18
+ onDelete?: () => void;
19
+ }
20
+ declare function QuantitySelector({ className, value, min, max, onChange, disabled, size, showTrash, onDelete, ...props }: QuantitySelectorProps): import("react/jsx-runtime").JSX.Element;
21
+ export { QuantitySelector };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ interface RatingDisplayProps extends React.ComponentProps<"div"> {
3
+ /** 評価値(0〜5) */
4
+ rating: number;
5
+ /** レビュー件数 */
6
+ reviewCount?: number;
7
+ /** 表示サイズ */
8
+ size?: "sm" | "md" | "lg";
9
+ /** レビュー件数を表示するか */
10
+ showCount?: boolean;
11
+ /** 評価値を数値で表示するか */
12
+ showValue?: boolean;
13
+ }
14
+ declare function RatingDisplay({ className, rating, reviewCount, size, showCount, showValue, ...props }: RatingDisplayProps): import("react/jsx-runtime").JSX.Element;
15
+ export { RatingDisplay };
@@ -0,0 +1,22 @@
1
+ interface ReviewCardProps {
2
+ reviewer: string;
3
+ /** アバターの頭文字(画像がない場合) */
4
+ avatarChar?: string;
5
+ avatarSrc?: string;
6
+ rating: number;
7
+ title?: string;
8
+ body: string;
9
+ date: string;
10
+ helpfulCount?: number;
11
+ onHelpful?: () => void;
12
+ /** helpful 済みかどうか */
13
+ helpful?: boolean;
14
+ className?: string;
15
+ }
16
+ declare function StarRow({ rating, size }: {
17
+ rating: number;
18
+ size?: number;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ declare function ReviewCard({ reviewer, avatarChar, avatarSrc, rating, title, body, date, helpfulCount, onHelpful, helpful, className, }: ReviewCardProps): import("react/jsx-runtime").JSX.Element;
21
+ export { ReviewCard, StarRow };
22
+ export type { ReviewCardProps };
@@ -0,0 +1,12 @@
1
+ interface ReviewSummaryProps {
2
+ /** 平均評価 (0-5) */
3
+ averageRating: number;
4
+ /** 総レビュー数 */
5
+ totalCount: number;
6
+ /** 各星評価の件数 [5星, 4星, 3星, 2星, 1星] */
7
+ distribution: [number, number, number, number, number];
8
+ className?: string;
9
+ }
10
+ declare function ReviewSummary({ averageRating, totalCount, distribution, className, }: ReviewSummaryProps): import("react/jsx-runtime").JSX.Element;
11
+ export { ReviewSummary };
12
+ export type { ReviewSummaryProps };
@@ -0,0 +1,32 @@
1
+ interface ConfirmDialogProps {
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ title: string;
5
+ description?: string;
6
+ confirmLabel?: string;
7
+ cancelLabel?: string;
8
+ /**
9
+ * 処理中に表示するラベル。
10
+ * i18n 対応: 英語では "Processing…" など任意文字列を渡す。
11
+ * @default "処理中…"
12
+ */
13
+ loadingLabel?: string;
14
+ /** destructive にすると確認ボタンが赤くなる */
15
+ variant?: "default" | "destructive";
16
+ onConfirm: () => void | Promise<void>;
17
+ loading?: boolean;
18
+ }
19
+ /**
20
+ * ConfirmDialog — 「アクションを止める」割り込み確認(破壊操作の二段階確認)。
21
+ *
22
+ * `role="alertdialog"`(AlertDialog 基盤)。タスク面の絞り込み・フォーム等とは
23
+ * 別カテゴリで、支援技術には緊急の確認として通知され、**オーバーレイの外側クリックでは
24
+ * 閉じない**(明示的に確認/キャンセルを選ばせる)。PC/SP とも中央表示の
25
+ * アラート(iOS/Android の確認アラート慣習に準拠)。
26
+ *
27
+ * タスク用の中央モーダル(絞り込み等)が要るときは `Dialog` / `Sheet` /
28
+ * `ResponsiveDialog` を使う。
29
+ */
30
+ declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, loadingLabel, variant, onConfirm, loading, }: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
31
+ export { ConfirmDialog };
32
+ export type { ConfirmDialogProps };
@@ -0,0 +1,62 @@
1
+ import * as React from "react";
2
+ export type CookieConsentChoice = "accept" | "essential";
3
+ export interface CookieConsentProps {
4
+ /**
5
+ * 表示文言。i18n はアプリ側で解決して string で渡す。
6
+ * 未指定キーは英語デフォルトを使う。
7
+ */
8
+ labels?: {
9
+ title?: string;
10
+ description?: string;
11
+ /** "必要なもののみ" ボタン */
12
+ essentialOnly?: string;
13
+ /** "了解" / "すべて受け入れる" ボタン */
14
+ accept?: string;
15
+ /** aria-label */
16
+ ariaLabel?: string;
17
+ };
18
+ /** 表示前の遅延 (ms)。レイアウトシフト回避用。既定 1500ms */
19
+ showDelay?: number;
20
+ /** localStorage キー名(マルチアプリの衝突回避に) */
21
+ storageKey?: string;
22
+ /** 同意決定時に dispatch する CustomEvent 名 */
23
+ eventName?: string;
24
+ /** 装飾アイコン(既定: 🍪) */
25
+ icon?: React.ReactNode;
26
+ /** 同意決定時のコールバック */
27
+ onDecide?: (choice: CookieConsentChoice) => void;
28
+ className?: string;
29
+ }
30
+ /** 同意済かどうかを判定(SSR セーフ) */
31
+ export declare function isCookieDecided(storageKey?: string): boolean;
32
+ /**
33
+ * CookieConsent — GDPR / APPI 準拠の汎用クッキー同意バナー。
34
+ *
35
+ * 動作:
36
+ * - 未決定なら `showDelay` 後に画面下に表示
37
+ * - 「必要なもののみ」「了解」の 2 択。どちらでも localStorage に記録
38
+ * - 決定時に `CustomEvent(eventName)` を window に dispatch
39
+ * (CoachMark 等、同意後に出すべき UI が listen できる)
40
+ *
41
+ * 文言は labels prop で完全に上書き可能。i18n はアプリ側で解決して渡す。
42
+ *
43
+ * ### 使用例
44
+ * ```tsx
45
+ * import { CookieConsent, isCookieDecided } from "ksk-design-system"
46
+ * import { t } from "./i18n"
47
+ *
48
+ * <CookieConsent
49
+ * labels={{
50
+ * title: t("cookie.title"),
51
+ * description: t("cookie.desc"),
52
+ * essentialOnly: t("cookie.essential_only"),
53
+ * accept: t("cookie.accept"),
54
+ * ariaLabel: t("cookie.aria_label"),
55
+ * }}
56
+ * storageKey="myapp-cookie-consent"
57
+ * eventName="myapp:cookie-decided"
58
+ * onDecide={(choice) => analytics.track("cookie_consent", { choice })}
59
+ * />
60
+ * ```
61
+ */
62
+ export declare function CookieConsent({ labels, showDelay, storageKey, eventName, icon, onDecide, className, }: CookieConsentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ interface EmptyStateProps extends React.ComponentProps<"div"> {
3
+ icon?: React.ReactNode;
4
+ title: string;
5
+ description?: string;
6
+ action?: React.ReactNode;
7
+ /**
8
+ * アイコンの色クラスを上書きする。コンテキストに応じてアイコン色を変えたいとき。
9
+ * @example iconClassName="text-[var(--Object-Caution)]"
10
+ * @default "text-[var(--Object-Low-Emphasis)]"
11
+ */
12
+ iconClassName?: string;
13
+ }
14
+ declare function EmptyState({ className, icon, title, description, action, iconClassName, ...props }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
15
+ export { EmptyState };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ interface ErrorStateProps extends React.ComponentProps<"div"> {
3
+ icon?: React.ReactNode;
4
+ title?: string;
5
+ description?: string;
6
+ onRetry?: () => void;
7
+ retryLabel?: string;
8
+ }
9
+ declare function ErrorState({ className, icon, title, description, onRetry, retryLabel, ...props }: ErrorStateProps): import("react/jsx-runtime").JSX.Element;
10
+ export { ErrorState };
@@ -0,0 +1,31 @@
1
+ export interface UploadedFile {
2
+ file: File;
3
+ url: string;
4
+ }
5
+ export interface FileUploadProps {
6
+ /** 受け付けるファイル形式。例: "image/*", ".pdf,.doc" */
7
+ accept?: string;
8
+ /** 最大ファイルサイズ(バイト)。例: 5 * 1024 * 1024 = 5MB */
9
+ maxSize?: number;
10
+ /** 複数ファイルを許可するか @default false */
11
+ multiple?: boolean;
12
+ /** 最大ファイル数(multiple=true 時)@default 10 */
13
+ maxFiles?: number;
14
+ onUpload?: (files: File[]) => void;
15
+ disabled?: boolean;
16
+ className?: string;
17
+ /** ドラッグエリアのメインラベル @default "ここにファイルをドロップ" */
18
+ dragLabel?: string;
19
+ /** またはテキスト @default "または" */
20
+ orLabel?: string;
21
+ /** ブラウズボタンのラベル @default "ファイルを選択" */
22
+ browseLabel?: string;
23
+ /** ファイルサイズ超過エラーメッセージ生成関数 */
24
+ maxSizeLabel?: (maxBytes: number) => string;
25
+ /** 最大ファイル数超過エラーメッセージ生成関数 */
26
+ maxFilesLabel?: (max: number) => string;
27
+ /** 削除ボタンの aria-label @default "削除" */
28
+ removeLabel?: string;
29
+ }
30
+ declare function FileUpload({ accept, maxSize, multiple, maxFiles, onUpload, disabled, className, dragLabel, orLabel, browseLabel, maxSizeLabel, maxFilesLabel, removeLabel, }: FileUploadProps): import("react/jsx-runtime").JSX.Element;
31
+ export { FileUpload };
@@ -0,0 +1,26 @@
1
+ export interface FilterChipProps {
2
+ /** チップに表示するラベル */
3
+ label: string;
4
+ /** active 時に "ラベル: 値" 形式で併記する値 (任意) */
5
+ value?: string;
6
+ /** 絞り込み中(強調表示)か */
7
+ isActive?: boolean;
8
+ /** クリック時のコールバック。active なときも呼ばれる(再タップで off にしたい場合は外側で判断)。 */
9
+ onClick: () => void;
10
+ className?: string;
11
+ }
12
+ /**
13
+ * FilterChip — FilterBar の中で使う「絞り込み中かどうか」をトグルするチップ。
14
+ *
15
+ * - 非 active: outline スタイル、label のみ
16
+ * - active: filled (Brand 色)、`value` 指定時は "ラベル: 値"
17
+ * - 再タップ時は親が onClick で off に戻す想定(onRemove は廃止 — `◯` と `×` が
18
+ * 視覚的に混乱するためフィードバックを受け統一)
19
+ *
20
+ * @example
21
+ * <FilterChip label="エリア" value="渋谷" isActive onClick={clearAreaFilter} />
22
+ *
23
+ * 内部で key を active 状態に紐付けて強制再マウントするため、
24
+ * isActive=false に戻したときに Chip の selected キャッシュが残らない。
25
+ */
26
+ export declare function FilterChip({ label, value, isActive, onClick, className }: FilterChipProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import * as React from "react";
2
+ interface FooterLinkGroup {
3
+ title: string;
4
+ links: {
5
+ label: string;
6
+ href?: string;
7
+ onClick?: () => void;
8
+ }[];
9
+ }
10
+ interface FooterProps {
11
+ logo?: React.ReactNode;
12
+ linkGroups?: FooterLinkGroup[];
13
+ paymentIcons?: string[];
14
+ socialLinks?: {
15
+ label: string;
16
+ href?: string;
17
+ icon: React.ReactNode;
18
+ }[];
19
+ copyright?: string;
20
+ className?: string;
21
+ }
22
+ declare function Footer({ logo, linkGroups, paymentIcons, socialLinks, copyright, className, }: FooterProps): import("react/jsx-runtime").JSX.Element;
23
+ export { Footer };
24
+ export type { FooterProps, FooterLinkGroup };
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ /**
3
+ * `required` の見た目をどう出すか。
4
+ * - "asterisk"(既定): `*` 1 文字。コンパクト・国際標準。
5
+ * - "pill" : 「必須」/「任意」のバッジ。日本語フォーム慣習。
6
+ * required=false でも「任意」を明示するため、optional 側の表示も
7
+ * この prop が制御する。
8
+ * - "none" : 何も出さない。required 単独で aria 属性のみ意味を持つ。
9
+ */
10
+ type RequiredStyle = "asterisk" | "pill" | "none";
11
+ interface FormFieldProps extends React.ComponentProps<"div"> {
12
+ label: string;
13
+ htmlFor?: string;
14
+ required?: boolean;
15
+ error?: string;
16
+ description?: string;
17
+ /**
18
+ * required の表示形式。詳細は RequiredStyle の JSDoc。
19
+ * 既定: "asterisk"。
20
+ */
21
+ requiredStyle?: RequiredStyle;
22
+ /**
23
+ * ラベル右側に置くメタ情報(バッジ / 文字数カウンタ / ヘルプアイコン等)。
24
+ * 「タイトル + 字数 12/200」「タイトル + 種別バッジ」のような用途。
25
+ */
26
+ endLabel?: React.ReactNode;
27
+ }
28
+ declare function FormField({ className, label, htmlFor, required, error, description, requiredStyle, endLabel, children, ...props }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
29
+ export { FormField };
30
+ export type { FormFieldProps, RequiredStyle };
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ interface FormRootProps extends React.ComponentProps<"form"> {
3
+ /** Prevent default form submission */
4
+ preventDefault?: boolean;
5
+ }
6
+ declare function FormRoot({ className, preventDefault, onSubmit, ...props }: FormRootProps): import("react/jsx-runtime").JSX.Element;
7
+ interface FormSectionProps extends React.ComponentProps<"fieldset"> {
8
+ title?: string;
9
+ description?: string;
10
+ }
11
+ declare function FormSection({ className, title, description, children, ...props }: FormSectionProps): import("react/jsx-runtime").JSX.Element;
12
+ declare function FormActions({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
13
+ export { FormRoot, FormSection, FormActions };