melta-app 0.5.3 → 0.7.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 (298) hide show
  1. package/README.md +493 -186
  2. package/docs/architecture.md +99 -0
  3. package/eslint-rules/melta.d.mts +44 -0
  4. package/lib/module/a11y/tap-target.js +41 -0
  5. package/lib/module/a11y/tap-target.js.map +1 -0
  6. package/lib/module/components/ActionSheet.js +20 -6
  7. package/lib/module/components/ActionSheet.js.map +1 -1
  8. package/lib/module/components/Alert.js +11 -7
  9. package/lib/module/components/Alert.js.map +1 -1
  10. package/lib/module/components/Avatar.js +7 -2
  11. package/lib/module/components/Avatar.js.map +1 -1
  12. package/lib/module/components/BottomSheet.js +11 -3
  13. package/lib/module/components/BottomSheet.js.map +1 -1
  14. package/lib/module/components/Card.js +4 -3
  15. package/lib/module/components/Card.js.map +1 -1
  16. package/lib/module/components/Checkbox.js +8 -5
  17. package/lib/module/components/Checkbox.js.map +1 -1
  18. package/lib/module/components/EmptyState.js +2 -1
  19. package/lib/module/components/EmptyState.js.map +1 -1
  20. package/lib/module/components/Header.js.map +1 -1
  21. package/lib/module/components/Image.js +5 -3
  22. package/lib/module/components/Image.js.map +1 -1
  23. package/lib/module/components/Modal.js +12 -4
  24. package/lib/module/components/Modal.js.map +1 -1
  25. package/lib/module/components/Progress.js +2 -1
  26. package/lib/module/components/Progress.js.map +1 -1
  27. package/lib/module/components/Radio.js +11 -3
  28. package/lib/module/components/Radio.js.map +1 -1
  29. package/lib/module/components/Screen.js +28 -3
  30. package/lib/module/components/Screen.js.map +1 -1
  31. package/lib/module/components/Skeleton.js +2 -1
  32. package/lib/module/components/Skeleton.js.map +1 -1
  33. package/lib/module/components/Surface.js +2 -1
  34. package/lib/module/components/Surface.js.map +1 -1
  35. package/lib/module/components/TextField.js +16 -4
  36. package/lib/module/components/TextField.js.map +1 -1
  37. package/lib/module/components/Toast.js +17 -9
  38. package/lib/module/components/Toast.js.map +1 -1
  39. package/lib/module/components/Toggle.js +13 -4
  40. package/lib/module/components/Toggle.js.map +1 -1
  41. package/lib/module/components/alert.styles.js +12 -26
  42. package/lib/module/components/alert.styles.js.map +1 -1
  43. package/lib/module/components/avatar.styles.js +24 -2
  44. package/lib/module/components/avatar.styles.js.map +1 -1
  45. package/lib/module/components/card.validate.js.map +1 -1
  46. package/lib/module/components/checkbox.styles.js +5 -2
  47. package/lib/module/components/checkbox.styles.js.map +1 -1
  48. package/lib/module/components/index.js.map +1 -1
  49. package/lib/module/components/modal.styles.js +9 -0
  50. package/lib/module/components/modal.styles.js.map +1 -1
  51. package/lib/module/components/radio.styles.js +11 -2
  52. package/lib/module/components/radio.styles.js.map +1 -1
  53. package/lib/module/components/safe-area-registry.js +64 -13
  54. package/lib/module/components/safe-area-registry.js.map +1 -1
  55. package/lib/module/components/status-colors.js +53 -0
  56. package/lib/module/components/status-colors.js.map +1 -0
  57. package/lib/module/components/textfield.styles.js +15 -8
  58. package/lib/module/components/textfield.styles.js.map +1 -1
  59. package/lib/module/components/toast.styles.js +36 -25
  60. package/lib/module/components/toast.styles.js.map +1 -1
  61. package/lib/module/components/toggle.styles.js +20 -0
  62. package/lib/module/components/toggle.styles.js.map +1 -1
  63. package/lib/module/icons/Icon.js +4 -1
  64. package/lib/module/icons/Icon.js.map +1 -1
  65. package/lib/module/icons/icon.styles.js +32 -1
  66. package/lib/module/icons/icon.styles.js.map +1 -1
  67. package/lib/module/icons/index.js.map +1 -1
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/primitives/Button.js +23 -11
  70. package/lib/module/primitives/Button.js.map +1 -1
  71. package/lib/module/primitives/Metric.js +2 -1
  72. package/lib/module/primitives/Metric.js.map +1 -1
  73. package/lib/module/primitives/Row.js.map +1 -1
  74. package/lib/module/primitives/Stack.js.map +1 -1
  75. package/lib/module/primitives/Tag.js +15 -7
  76. package/lib/module/primitives/Tag.js.map +1 -1
  77. package/lib/module/primitives/Text.js +28 -7
  78. package/lib/module/primitives/Text.js.map +1 -1
  79. package/lib/module/primitives/_internal/focus-ring.js.map +1 -1
  80. package/lib/module/primitives/button.styles.js +58 -8
  81. package/lib/module/primitives/button.styles.js.map +1 -1
  82. package/lib/module/primitives/index.js.map +1 -1
  83. package/lib/module/primitives/metric.styles.js +4 -1
  84. package/lib/module/primitives/metric.styles.js.map +1 -1
  85. package/lib/module/primitives/tag.styles.js +42 -3
  86. package/lib/module/primitives/tag.styles.js.map +1 -1
  87. package/lib/module/primitives/text.styles.js +10 -5
  88. package/lib/module/primitives/text.styles.js.map +1 -1
  89. package/lib/module/safe-area/index.js +11 -5
  90. package/lib/module/safe-area/index.js.map +1 -1
  91. package/lib/module/theme/ThemeProvider.js +5 -2
  92. package/lib/module/theme/ThemeProvider.js.map +1 -1
  93. package/lib/module/theme/define-theme.js +27 -1
  94. package/lib/module/theme/define-theme.js.map +1 -1
  95. package/lib/module/theme/index.js +7 -8
  96. package/lib/module/theme/index.js.map +1 -1
  97. package/lib/module/theme/letter-spacing.js +20 -0
  98. package/lib/module/theme/letter-spacing.js.map +1 -0
  99. package/lib/module/theme/line-height.js +52 -0
  100. package/lib/module/theme/line-height.js.map +1 -0
  101. package/lib/module/theme/native-theme.js +8 -7
  102. package/lib/module/theme/native-theme.js.map +1 -1
  103. package/lib/typescript/src/a11y/tap-target.d.ts +34 -0
  104. package/lib/typescript/src/a11y/tap-target.d.ts.map +1 -0
  105. package/lib/typescript/src/components/ActionSheet.d.ts +8 -1
  106. package/lib/typescript/src/components/ActionSheet.d.ts.map +1 -1
  107. package/lib/typescript/src/components/Alert.d.ts +9 -2
  108. package/lib/typescript/src/components/Alert.d.ts.map +1 -1
  109. package/lib/typescript/src/components/Avatar.d.ts +1 -1
  110. package/lib/typescript/src/components/Avatar.d.ts.map +1 -1
  111. package/lib/typescript/src/components/BottomSheet.d.ts +4 -1
  112. package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -1
  113. package/lib/typescript/src/components/Card.d.ts +2 -2
  114. package/lib/typescript/src/components/Checkbox.d.ts +3 -3
  115. package/lib/typescript/src/components/Checkbox.d.ts.map +1 -1
  116. package/lib/typescript/src/components/Image.d.ts +4 -3
  117. package/lib/typescript/src/components/Image.d.ts.map +1 -1
  118. package/lib/typescript/src/components/Modal.d.ts +9 -3
  119. package/lib/typescript/src/components/Modal.d.ts.map +1 -1
  120. package/lib/typescript/src/components/Progress.d.ts +1 -1
  121. package/lib/typescript/src/components/Progress.d.ts.map +1 -1
  122. package/lib/typescript/src/components/Radio.d.ts +3 -2
  123. package/lib/typescript/src/components/Radio.d.ts.map +1 -1
  124. package/lib/typescript/src/components/Screen.d.ts +28 -5
  125. package/lib/typescript/src/components/Screen.d.ts.map +1 -1
  126. package/lib/typescript/src/components/Skeleton.d.ts +1 -1
  127. package/lib/typescript/src/components/Skeleton.d.ts.map +1 -1
  128. package/lib/typescript/src/components/Surface.d.ts +1 -1
  129. package/lib/typescript/src/components/Surface.d.ts.map +1 -1
  130. package/lib/typescript/src/components/TextField.d.ts +11 -4
  131. package/lib/typescript/src/components/TextField.d.ts.map +1 -1
  132. package/lib/typescript/src/components/Toast.d.ts +10 -3
  133. package/lib/typescript/src/components/Toast.d.ts.map +1 -1
  134. package/lib/typescript/src/components/Toggle.d.ts +3 -2
  135. package/lib/typescript/src/components/Toggle.d.ts.map +1 -1
  136. package/lib/typescript/src/components/action-sheet.styles.d.ts +1 -1
  137. package/lib/typescript/src/components/action-sheet.styles.d.ts.map +1 -1
  138. package/lib/typescript/src/components/alert.styles.d.ts +14 -14
  139. package/lib/typescript/src/components/alert.styles.d.ts.map +1 -1
  140. package/lib/typescript/src/components/avatar.styles.d.ts +36 -1
  141. package/lib/typescript/src/components/avatar.styles.d.ts.map +1 -1
  142. package/lib/typescript/src/components/bottom-sheet.styles.d.ts +1 -1
  143. package/lib/typescript/src/components/bottom-sheet.styles.d.ts.map +1 -1
  144. package/lib/typescript/src/components/card.styles.d.ts +1 -1
  145. package/lib/typescript/src/components/card.styles.d.ts.map +1 -1
  146. package/lib/typescript/src/components/card.validate.d.ts +1 -1
  147. package/lib/typescript/src/components/card.validate.d.ts.map +1 -1
  148. package/lib/typescript/src/components/checkbox.styles.d.ts +6 -3
  149. package/lib/typescript/src/components/checkbox.styles.d.ts.map +1 -1
  150. package/lib/typescript/src/components/empty-state.styles.d.ts +1 -1
  151. package/lib/typescript/src/components/empty-state.styles.d.ts.map +1 -1
  152. package/lib/typescript/src/components/header.styles.d.ts +1 -1
  153. package/lib/typescript/src/components/header.styles.d.ts.map +1 -1
  154. package/lib/typescript/src/components/image.styles.d.ts +1 -1
  155. package/lib/typescript/src/components/image.styles.d.ts.map +1 -1
  156. package/lib/typescript/src/components/index.d.ts +18 -18
  157. package/lib/typescript/src/components/index.d.ts.map +1 -1
  158. package/lib/typescript/src/components/modal.styles.d.ts +13 -2
  159. package/lib/typescript/src/components/modal.styles.d.ts.map +1 -1
  160. package/lib/typescript/src/components/progress.styles.d.ts +1 -1
  161. package/lib/typescript/src/components/progress.styles.d.ts.map +1 -1
  162. package/lib/typescript/src/components/radio.styles.d.ts +10 -2
  163. package/lib/typescript/src/components/radio.styles.d.ts.map +1 -1
  164. package/lib/typescript/src/components/safe-area-registry.d.ts +47 -11
  165. package/lib/typescript/src/components/safe-area-registry.d.ts.map +1 -1
  166. package/lib/typescript/src/components/screen.styles.d.ts +1 -1
  167. package/lib/typescript/src/components/screen.styles.d.ts.map +1 -1
  168. package/lib/typescript/src/components/skeleton.styles.d.ts +1 -1
  169. package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -1
  170. package/lib/typescript/src/components/status-colors.d.ts +33 -0
  171. package/lib/typescript/src/components/status-colors.d.ts.map +1 -0
  172. package/lib/typescript/src/components/surface.styles.d.ts +1 -1
  173. package/lib/typescript/src/components/surface.styles.d.ts.map +1 -1
  174. package/lib/typescript/src/components/textfield.styles.d.ts +9 -5
  175. package/lib/typescript/src/components/textfield.styles.d.ts.map +1 -1
  176. package/lib/typescript/src/components/toast.styles.d.ts +34 -14
  177. package/lib/typescript/src/components/toast.styles.d.ts.map +1 -1
  178. package/lib/typescript/src/components/toggle.styles.d.ts +17 -1
  179. package/lib/typescript/src/components/toggle.styles.d.ts.map +1 -1
  180. package/lib/typescript/src/icons/Icon.d.ts +12 -6
  181. package/lib/typescript/src/icons/Icon.d.ts.map +1 -1
  182. package/lib/typescript/src/icons/icon.styles.d.ts +14 -2
  183. package/lib/typescript/src/icons/icon.styles.d.ts.map +1 -1
  184. package/lib/typescript/src/icons/index.d.ts +3 -3
  185. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  186. package/lib/typescript/src/index.d.ts +4 -4
  187. package/lib/typescript/src/index.d.ts.map +1 -1
  188. package/lib/typescript/src/primitives/Button.d.ts +8 -4
  189. package/lib/typescript/src/primitives/Button.d.ts.map +1 -1
  190. package/lib/typescript/src/primitives/Metric.d.ts +1 -1
  191. package/lib/typescript/src/primitives/Metric.d.ts.map +1 -1
  192. package/lib/typescript/src/primitives/Row.d.ts +2 -2
  193. package/lib/typescript/src/primitives/Row.d.ts.map +1 -1
  194. package/lib/typescript/src/primitives/Stack.d.ts +2 -2
  195. package/lib/typescript/src/primitives/Stack.d.ts.map +1 -1
  196. package/lib/typescript/src/primitives/Tag.d.ts +2 -2
  197. package/lib/typescript/src/primitives/Tag.d.ts.map +1 -1
  198. package/lib/typescript/src/primitives/Text.d.ts +20 -6
  199. package/lib/typescript/src/primitives/Text.d.ts.map +1 -1
  200. package/lib/typescript/src/primitives/button.styles.d.ts +44 -7
  201. package/lib/typescript/src/primitives/button.styles.d.ts.map +1 -1
  202. package/lib/typescript/src/primitives/index.d.ts +6 -6
  203. package/lib/typescript/src/primitives/index.d.ts.map +1 -1
  204. package/lib/typescript/src/primitives/metric.styles.d.ts +1 -1
  205. package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -1
  206. package/lib/typescript/src/primitives/row.styles.d.ts +1 -1
  207. package/lib/typescript/src/primitives/row.styles.d.ts.map +1 -1
  208. package/lib/typescript/src/primitives/stack.styles.d.ts +1 -1
  209. package/lib/typescript/src/primitives/stack.styles.d.ts.map +1 -1
  210. package/lib/typescript/src/primitives/tag.styles.d.ts +34 -1
  211. package/lib/typescript/src/primitives/tag.styles.d.ts.map +1 -1
  212. package/lib/typescript/src/primitives/text.styles.d.ts +2 -4
  213. package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -1
  214. package/lib/typescript/src/safe-area/index.d.ts +19 -5
  215. package/lib/typescript/src/safe-area/index.d.ts.map +1 -1
  216. package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -2
  217. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
  218. package/lib/typescript/src/theme/define-theme.d.ts +15 -2
  219. package/lib/typescript/src/theme/define-theme.d.ts.map +1 -1
  220. package/lib/typescript/src/theme/index.d.ts +14 -13
  221. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  222. package/lib/typescript/src/theme/letter-spacing.d.ts +15 -0
  223. package/lib/typescript/src/theme/letter-spacing.d.ts.map +1 -0
  224. package/lib/typescript/src/theme/line-height.d.ts +44 -0
  225. package/lib/typescript/src/theme/line-height.d.ts.map +1 -0
  226. package/lib/typescript/src/theme/native-theme.d.ts +1 -1
  227. package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
  228. package/lib/typescript/src/theme/types.d.ts +10 -1
  229. package/lib/typescript/src/theme/types.d.ts.map +1 -1
  230. package/llms.txt +2 -1
  231. package/package.json +22 -7
  232. package/src/a11y/tap-target.ts +38 -0
  233. package/src/components/ActionSheet.tsx +25 -15
  234. package/src/components/Alert.tsx +37 -10
  235. package/src/components/Avatar.tsx +12 -4
  236. package/src/components/BottomSheet.tsx +16 -13
  237. package/src/components/Card.tsx +9 -8
  238. package/src/components/Checkbox.tsx +12 -9
  239. package/src/components/EmptyState.tsx +7 -6
  240. package/src/components/Header.tsx +4 -4
  241. package/src/components/Image.tsx +9 -7
  242. package/src/components/Modal.tsx +22 -6
  243. package/src/components/Progress.tsx +5 -4
  244. package/src/components/Radio.tsx +11 -6
  245. package/src/components/Screen.tsx +66 -8
  246. package/src/components/Skeleton.tsx +6 -5
  247. package/src/components/Surface.tsx +5 -4
  248. package/src/components/TextField.tsx +25 -7
  249. package/src/components/Toast.tsx +33 -11
  250. package/src/components/Toggle.tsx +15 -6
  251. package/src/components/action-sheet.styles.ts +1 -1
  252. package/src/components/alert.styles.ts +13 -25
  253. package/src/components/avatar.styles.ts +25 -3
  254. package/src/components/bottom-sheet.styles.ts +1 -1
  255. package/src/components/card.styles.ts +1 -1
  256. package/src/components/card.validate.ts +2 -2
  257. package/src/components/checkbox.styles.ts +6 -3
  258. package/src/components/empty-state.styles.ts +1 -1
  259. package/src/components/header.styles.ts +1 -1
  260. package/src/components/image.styles.ts +1 -1
  261. package/src/components/index.ts +18 -18
  262. package/src/components/modal.styles.ts +11 -2
  263. package/src/components/progress.styles.ts +1 -1
  264. package/src/components/radio.styles.ts +11 -2
  265. package/src/components/safe-area-registry.ts +81 -14
  266. package/src/components/screen.styles.ts +1 -1
  267. package/src/components/skeleton.styles.ts +1 -1
  268. package/src/components/status-colors.ts +59 -0
  269. package/src/components/surface.styles.ts +1 -1
  270. package/src/components/textfield.styles.ts +18 -15
  271. package/src/components/toast.styles.ts +32 -25
  272. package/src/components/toggle.styles.ts +21 -1
  273. package/src/icons/Icon.tsx +13 -8
  274. package/src/icons/icon.styles.ts +38 -3
  275. package/src/icons/index.ts +3 -3
  276. package/src/index.ts +4 -4
  277. package/src/primitives/Button.tsx +28 -14
  278. package/src/primitives/Metric.tsx +5 -4
  279. package/src/primitives/Row.tsx +4 -4
  280. package/src/primitives/Stack.tsx +4 -4
  281. package/src/primitives/Tag.tsx +29 -11
  282. package/src/primitives/Text.tsx +42 -9
  283. package/src/primitives/_internal/focus-ring.tsx +1 -1
  284. package/src/primitives/button.styles.ts +63 -10
  285. package/src/primitives/index.ts +6 -6
  286. package/src/primitives/metric.styles.ts +9 -2
  287. package/src/primitives/row.styles.ts +1 -1
  288. package/src/primitives/stack.styles.ts +1 -1
  289. package/src/primitives/tag.styles.ts +43 -4
  290. package/src/primitives/text.styles.ts +10 -6
  291. package/src/safe-area/index.ts +21 -7
  292. package/src/theme/ThemeProvider.tsx +8 -5
  293. package/src/theme/define-theme.ts +33 -2
  294. package/src/theme/index.ts +18 -16
  295. package/src/theme/letter-spacing.ts +17 -0
  296. package/src/theme/line-height.ts +53 -0
  297. package/src/theme/native-theme.ts +9 -8
  298. package/src/theme/types.ts +10 -1
@@ -8,11 +8,13 @@
8
8
  * - Alert と同系の bg subtle + text 色に elevation.sm を重ねる(浮いている通知、recipe description)。
9
9
  * elevation は iOS shadow* + Android elevation の複合 token のため containerStyle と分けて返し、
10
10
  * 呼び出し側が [containerStyle, elevation, style] の順で合成する(Surface と同じ扱い)。
11
- * - dark mode は status.*.subtleDark / textDark 側を解決する。info variant のみ primary 固定
12
- * (dark token が無い既知の割り切り、alert と同じ)。
11
+ * - status 色(mode ごとの subtle / text、info の primary 固定)の解決は status-colors.ts が SSOT
12
+ * (Alert と同じ写像を共有する)。
13
13
  */
14
- import type { ElevationStyle, FontWeightValue, NativeTheme, ThemeMode } from "../theme";
15
- export type ToastVariant = "success" | "error" | "warning" | "info";
14
+ import type { ElevationStyle, FontWeightValue, NativeTheme, ThemeMode } from "../theme/index.js";
15
+ import { type StatusVariant } from "./status-colors.js";
16
+ /** toast.contract の variant 語彙(status 共通語彙と 1:1)。 */
17
+ export type ToastVariant = StatusVariant;
16
18
  /**
17
19
  * 構成キー(token キー)。component は Text にこのキーをそのまま渡し、resolver は同じキーから
18
20
  * style 値を解決する(component と resolver が別々のキーを持って drift する事故を防ぐ SSOT)。
@@ -25,6 +27,34 @@ export declare const TOAST_SPEC: {
25
27
  readonly messageFont: "sm";
26
28
  readonly messageWeight: "medium";
27
29
  };
30
+ /**
31
+ * 右端に並ぶ 2 つの操作要素(action テキストと × ボタン)の当たり判定。
32
+ *
33
+ * **既存バグの修正**: 以前は両方とも hitSlop 10(全方向)で、両者の間隔は gap = spacing.3 = 12pt
34
+ * しかなかった。左右 10 + 10 = 20pt の当たり判定が 12pt の隙間に食い込み、**20 − 12 = 8pt ぶん
35
+ * 重なって**いた(重なった帯では手前に描画された × が勝つ = action を押したつもりが閉じる)。
36
+ *
37
+ * 規約(AGENTS.md): **横方向の hitSlop は隣接要素との gap の 1/2 を超えない**。
38
+ * gap 12 → 片側 6pt。これで両者の当たり判定はちょうど接し、重ならない。
39
+ * 縦は隣接する操作要素が無いので 10pt を維持する(正典パターンと同じ)。
40
+ *
41
+ * 横を 6 に削ると × の実効幅が 24 + 6×2 = 36pt と 44pt を割るため、**箱の下限を 32pt に広げて**
42
+ * 32 + 6×2 = 44pt を確保する(× は背景を持たないので幅を広げても見た目は変わらない)。
43
+ * action 側はテキスト幅が可変で静的に決められないため、縦のみ 44pt を保証する。
44
+ */
45
+ export declare const TOAST_TAP_TARGET: {
46
+ /** action / × 共通の hitSlop(横だけ gap/2 = 6 に絞る)。 */
47
+ readonly hitSlop: {
48
+ readonly top: 10;
49
+ readonly bottom: 10;
50
+ readonly left: 6;
51
+ readonly right: 6;
52
+ };
53
+ /** × の箱の幅の下限(横 hitSlop を削ったぶん canonical の 24 から広げる。32 + 6×2 = 44)。 */
54
+ readonly closeMinWidth: 32;
55
+ /** × の箱の高さ下限(正典パターンと同値)。 */
56
+ readonly closeMinHeight: 24;
57
+ };
28
58
  /**
29
59
  * slot 構成(toast.recipe 各 variant の containerStyle / messageStyle と 1:1。
30
60
  * containerStyle 内の elevation 参照だけは複合 token のため別 slot に分離して返す)。
@@ -47,16 +77,6 @@ export interface ToastStyles {
47
77
  fontWeight: FontWeightValue;
48
78
  };
49
79
  }
50
- /**
51
- * variant → bg / text 色の解決。
52
- * - info: primary.50 / primary.800 固定(mode 非依存)。
53
- * - success / error / warning: status token(error は status キー上は danger)。
54
- * light は subtleLight / textLight、dark は subtleDark / textDark(recipe description の写像)。
55
- */
56
- export declare function resolveToastColors(theme: NativeTheme, mode: ThemeMode, variant: ToastVariant): {
57
- bg: string;
58
- text: string;
59
- };
60
80
  /** variant → 全 slot の style 解決(toast.recipe styleRefs の 1:1 写像)。 */
61
81
  export declare function resolveToastStyles(theme: NativeTheme, mode: ThemeMode, variant: ToastVariant): ToastStyles;
62
82
  //# sourceMappingURL=toast.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/toast.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAEV,cAAc,EAGd,eAAe,EACf,WAAW,EAGX,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;CActB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,KAAK,CAAC;QACrB,UAAU,EAAE,QAAQ,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,kEAAkE;IAClE,SAAS,EAAE,cAAc,CAAC;IAC1B,kDAAkD;IAClD,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;KAC7B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQ9B;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,WAAW,CAkBb"}
1
+ {"version":3,"file":"toast.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/toast.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAEV,cAAc,EAGd,eAAe,EACf,WAAW,EAGX,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGpF,qDAAqD;AACrD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;CActB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB;IAC3B,iDAAiD;;;;;;;IAEjD,sEAAsE;;IAEtE,4BAA4B;;CAEpB,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,KAAK,CAAC;QACrB,UAAU,EAAE,QAAQ,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,kEAAkE;IAClE,SAAS,EAAE,cAAc,CAAC;IAC1B,kDAAkD;IAClD,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;KAC7B,CAAC;CACH;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GACpB,WAAW,CAkBb"}
@@ -12,7 +12,7 @@
12
12
  * - disabled は state 差分(opacity)。TOGGLE_DISABLED_OPACITY を component が適用し、
13
13
  * conformance が recipe states.disabled と照合する。
14
14
  */
15
- import type { NativeTheme, ThemeMode } from "../theme";
15
+ import type { NativeTheme, ThemeMode } from "../theme/index.js";
16
16
  /** ON/OFF(toggle.contract の variantModeledStates と 1:1)。 */
17
17
  export type ToggleVariant = "off" | "on";
18
18
  export type ToggleSize = "medium" | "large";
@@ -28,6 +28,22 @@ export declare const TOGGLE_SIZE_SPEC: Record<ToggleSize, {
28
28
  }>;
29
29
  /** disabled state の opacity(recipe states.disabled.style.opacity と照合)。 */
30
30
  export declare const TOGGLE_DISABLED_OPACITY = 0.5;
31
+ /**
32
+ * size → 縦方向の片側 hitSlop(実効タップ標的 44pt。A11Y_MIN_TAP_TARGET_44)。
33
+ *
34
+ * Pressable の高さは **label 無しなら track の高さそのもの**(medium 24 / large 28)で、
35
+ * どちらも 44pt に届かない。track は背景(色付きの丸)を持つので minHeight で伸ばすと
36
+ * スイッチが縦長に見える → 当たり判定だけ広げる:
37
+ * medium 24 + 10×2 = 44 / large 28 + 8×2 = 44
38
+ *
39
+ * label 付きの行でも高さは label(base)の lineHeight 36pt にしかならず 44pt に届かないため、
40
+ * **label の有無に関わらず同じ値を適用する**(label 付きは 36 + 20 = 56pt と余裕が出るが、
41
+ * Toggle は alignSelf: flex-start の独立行なので横に重なる相手がいない)。
42
+ *
43
+ * ⚠️ literal で持つ(TOGGLE_SIZE_SPEC から自動導出しない)。導出にすると track 寸法を変えたときに
44
+ * hitSlop が黙って追随し、conformance が fail-open になる。
45
+ */
46
+ export declare const TOGGLE_VERTICAL_HIT_SLOP: Record<ToggleSize, number>;
31
47
  /**
32
48
  * variant / size → track + thumb の最終 style 値の解決(toggle.recipe styleRefs の 1:1 写像)。
33
49
  * track.padding = thumbOffset(thumb を track 内で浮かせる余白)。
@@ -1 +1 @@
1
- {"version":3,"file":"toggle.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/toggle.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvD,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC;AACzC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,UAAU,EACV;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAIpF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,EAAE,OAAO,EAAE,IAAe,EAAE,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,GAC1E;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,CAmBA"}
1
+ {"version":3,"file":"toggle.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/toggle.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,IAAI,CAAC;AACzC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,UAAU,EACV;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAIpF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAG/D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,EAAE,OAAO,EAAE,IAAe,EAAE,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,GAC1E;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,CAmBA"}
@@ -7,21 +7,27 @@
7
7
  * export される(optional peerDependency。利用者は `npx expo install react-native-svg` が必要)。
8
8
  *
9
9
  * - name は glyphs.ts(assets/icons/*.svg からの codegen、commit 済み配布)のキー。
10
- * - color は semantic token キー限定(default "text-default")、size は contract sizes(sm/md/lg)。
10
+ * - color は semantic token キー + status 色("status-success" / "status-warning" / "status-error")。
11
+ * default "text-default"、size は contract sizes(sm/md/lg)。status 色は Alert / Toast と同じ
12
+ * status token を引くので、アイコン単体で状態を示す場面(フォーム行の成功チェック等)に使える。
13
+ * "status-info" は無い(status token に info の実体が無い。text-accent 等で代替する)。
11
14
  * - a11y: 意味を持つ場合は accessibilityLabel を渡す。無指定は装飾扱いで a11y ツリーから除外
12
15
  * (contract a11y required の両ケース)。
13
16
  * - 決定ロジックは pure resolver(icon.styles.ts)に分離 — recipe との機械照合対象。
14
17
  */
15
- import type { SemanticColors } from "../theme";
16
- import { type SizeOf } from "../contracts/contract-types";
17
- import { type IconName } from "./glyphs";
18
+ import { type SizeOf } from "../contracts/contract-types.js";
19
+ import { type IconColor } from "./icon.styles.js";
20
+ import { type IconName } from "./glyphs.js";
18
21
  interface IconProps {
19
22
  /** グリフ名(glyphs.ts のキー。例 "close" / "share-ios")。 */
20
23
  name: IconName;
21
24
  /** サイズ(contract sizes)。default "md"(20px)。 */
22
25
  size?: SizeOf<"icon">;
23
- /** 色(semantic token キーのみ)。default "text-default"。 */
24
- color?: keyof SemanticColors;
26
+ /**
27
+ * 色(semantic token キー、または status 色 "status-success" / "status-warning" / "status-error")。
28
+ * default "text-default"。生 hex は受けない(§5 lint の意味を保つ)。
29
+ */
30
+ color?: IconColor;
25
31
  /** 意味を持つ icon は必須。省略時は装飾扱い(a11y ツリーから除外)。 */
26
32
  accessibilityLabel?: string;
27
33
  testID?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/icons/Icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEjD,UAAU,SAAS;IACjB,mDAAmD;IACnD,IAAI,EAAE,QAAQ,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAW,EAAE,KAAsB,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,SAAS,2CA2BxG;yBA3Be,IAAI"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/icons/Icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAoB,KAAK,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEpD,UAAU,SAAS;IACjB,mDAAmD;IACnD,IAAI,EAAE,QAAQ,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,IAAW,EAAE,KAAsB,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,SAAS,2CA2BxG;yBA3Be,IAAI"}
@@ -5,8 +5,19 @@
5
5
  * 直接実行できる。recipes/app/icon.recipe.json(melta-contracts の styleRefs)との
6
6
  * 機械照合は scripts/lib/icon-conformance.test.ts が行う。
7
7
  */
8
- import type { NativeTheme, SemanticColors, ThemeMode } from "../theme";
8
+ import type { NativeTheme, SemanticColors, ThemeMode } from "../theme/index.js";
9
9
  export type IconSize = "sm" | "md" | "lg";
10
+ /**
11
+ * Icon の色指定。semantic token キーに加えて status 色(success / warning / error)を受ける。
12
+ *
13
+ * - status 系は `theme.color.status.<key>.base` を引く(面ではなく tint に載る色)。
14
+ * - `"status-"` の prefix を付けるのは、将来 SemanticColors に同名キー(`success` 等)が
15
+ * 入ったときに衝突しないようにするため。
16
+ * - **`"status-info"` は無い** — status token に info の実体が無く(web と同じ既知の割り切り)、
17
+ * info 相当は semantic の `text-accent` / primary 系で表現する。
18
+ */
19
+ export type IconStatusColor = "status-success" | "status-warning" | "status-error";
20
+ export type IconColor = keyof SemanticColors | IconStatusColor;
10
21
  export interface IconStyle {
11
22
  width: number;
12
23
  height: number;
@@ -15,6 +26,7 @@ export interface IconStyle {
15
26
  /**
16
27
  * size / color → Icon style の解決(icon.recipe styleRefs の 1:1 写像)。
17
28
  * デフォルト(size=md / color=text-default)は recipe の default variant と一致させている。
29
+ * status 色は mode 非依存(status token の base は light/dark 共通)。
18
30
  */
19
- export declare function resolveIconStyle(theme: NativeTheme, mode: ThemeMode, size?: IconSize, color?: keyof SemanticColors): IconStyle;
31
+ export declare function resolveIconStyle(theme: NativeTheme, mode: ThemeMode, size?: IconSize, color?: IconColor): IconStyle;
20
32
  //# sourceMappingURL=icon.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.styles.d.ts","sourceRoot":"","sources":["../../../../src/icons/icon.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvE,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAK1C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,QAAe,EACrB,KAAK,GAAE,MAAM,cAA+B,GAC3C,SAAS,CAMX"}
1
+ {"version":3,"file":"icon.styles.d.ts","sourceRoot":"","sources":["../../../../src/icons/icon.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMhF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AACnF,MAAM,MAAM,SAAS,GAAG,MAAM,cAAc,GAAG,eAAe,CAAC;AAmB/D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,GAAE,QAAe,EACrB,KAAK,GAAE,SAA0B,GAChC,SAAS,CAUX"}
@@ -6,7 +6,7 @@
6
6
  * 本体エントリに Icon を含めると react-native-svg 未 install の利用者がバンドルできなくなる。
7
7
  * この subpath を import する利用者だけが react-native-svg を要求される。
8
8
  */
9
- export { Icon } from "./Icon";
10
- export { GLYPHS, ICON_NAMES } from "./glyphs";
11
- export type { IconName, Glyph } from "./glyphs";
9
+ export { Icon } from "./Icon.js";
10
+ export { GLYPHS, ICON_NAMES } from "./glyphs.js";
11
+ export type { IconName, Glyph } from "./glyphs.js";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/icons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/icons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
@@ -5,8 +5,8 @@
5
5
  * primitives / components がその契約を満たす。契約との整合は conformance テストが機械照合する。
6
6
  * アプリ本体ではなく UI kit。使い方はルートを ThemeProvider で包み、コンポーネントを import する。
7
7
  */
8
- export * from "./theme";
9
- export * from "./primitives";
10
- export * from "./components";
11
- export { CONTRACTS, type ContractId, type ContractShape, type VariantOf, type SizeOf, type StateOf, } from "./contracts/contract-types";
8
+ export * from "./theme/index.js";
9
+ export * from "./primitives/index.js";
10
+ export * from "./components/index.js";
11
+ export { CONTRACTS, type ContractId, type ContractShape, type VariantOf, type SizeOf, type StateOf, } from "./contracts/contract-types.js";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAG7B,OAAO,EACL,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,+BAA+B,CAAC"}
@@ -5,15 +5,19 @@
5
5
  * - iconOnly は discriminated union で accessibilityLabel 必須を型強制(§4、label 排他)。
6
6
  * - states(§2 mapping): hover→pressed(背景を pressed 色に)、focus→FocusRing overlay(共通 helper)、
7
7
  * disabled→prop(opacity + 非活性)、loading→Spinner + disabled 相当。
8
+ * - タップ標的: labeled は minHeight(fontScale でクリップさせない)+ 縦 hitSlop、
9
+ * iconOnly は正方形固定 + 四方 hitSlop で実効 44pt を確保する(A11Y_MIN_TAP_TARGET_44、
10
+ * 値の根拠は button.styles.ts の BUTTON_VERTICAL_HIT_SLOP)。
8
11
  * - 色は variant ごとに NativeTheme から解決(button.contract tokenRefs を 1:1 で写像)。
9
12
  * contained の pressed は hover-bg=primary.700(contract に native readable token あり、唯一)。
10
- * 他 variant の pressed 視覚変化は contract が Tailwind のみ=Phase1 non-conformant(§2 M-1)、
11
- * ここでは pressed 時に薄い overlay を敷く近似に留め、Phase2 で contract に pressed-* token 追加。
12
- * - height は contract sizes(small32/medium40/large48)。
13
+ * 他 variant の pressed 視覚変化は contract が Tailwind クラスしか持たず native 解決できない
14
+ * (§2 M-1)。ここでは pressed 時に薄い overlay を敷く近似に留めている。contract 側に
15
+ * pressed-* token が入ったら実値解決へ置き換える(契約側が未対応のため未着手)。
16
+ * - 高さは contract sizes(small32/medium40/large48)を **下限**として使う。
13
17
  */
14
18
  import { type ReactNode } from "react";
15
19
  import { type StyleProp, type ViewStyle } from "react-native";
16
- import { type ButtonVariant, type ButtonSize } from "./button.styles";
20
+ import { type ButtonVariant, type ButtonSize } from "./button.styles.js";
17
21
  interface ButtonBase {
18
22
  variant?: ButtonVariant;
19
23
  size?: ButtonSize;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Button.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAKtB,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEjG,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,WAAW,GAAG,UAAU,GAC3B,CAEI;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACtC,CAAC;AAEJ,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CA+DxC;yBA/De,MAAM"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Button.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAKtB,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,WAAW,GAAG,UAAU,GAC3B,CAEI;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACtC,CAAC;AAEJ,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAkExC;yBAlEe,MAAM"}
@@ -10,7 +10,7 @@
10
10
  * - a11y: value+unit+label を1つの accessibilityLabel に合成して読み上げる(contract a11y)。
11
11
  */
12
12
  import { type StyleProp, type ViewStyle } from "react-native";
13
- import { type SizeOf } from "../contracts/contract-types";
13
+ import { type SizeOf } from "../contracts/contract-types.js";
14
14
  type MetricSize = SizeOf<"metric">;
15
15
  interface MetricProps {
16
16
  /** 整形済みの数値文字列(整形は呼び出し側)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Metric.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrE,KAAK,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnC,UAAU,WAAW;IACnB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAW,EACX,KAAe,EACf,KAAK,EACL,MAAM,GACP,EAAE,WAAW,2CAsBb;yBA9Be,MAAM"}
1
+ {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Metric.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAwB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAGxE,KAAK,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEnC,UAAU,WAAW;IACnB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAW,EACX,KAAe,EACf,KAAK,EACL,MAAM,GACP,EAAE,WAAW,2CAsBb;yBA9Be,MAAM"}
@@ -8,8 +8,8 @@
8
8
  */
9
9
  import { type ReactNode } from "react";
10
10
  import { type StyleProp, type ViewStyle } from "react-native";
11
- import type { SpacingKey } from "../theme";
12
- import { type RowAlign, type RowJustify } from "./row.styles";
11
+ import type { SpacingKey } from "../theme/index.js";
12
+ import { type RowAlign, type RowJustify } from "./row.styles.js";
13
13
  interface RowProps {
14
14
  /** 子要素間の gap(spacing token キー限定)。省略時 gap なし。 */
15
15
  gap?: SpacingKey;
@@ -1 +1 @@
1
- {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Row.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAiB,MAAM,cAAc,CAAC;AAE9F,UAAU,QAAQ;IAChB,gDAAgD;IAChD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,yBAAyB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,GAAG,CAAC,EAClB,GAAG,EACH,KAAgB,EAChB,OAAiB,EACjB,IAAY,EACZ,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,QAAQ,2CAaV;yBArBe,GAAG"}
1
+ {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Row.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAEjG,UAAU,QAAQ;IAChB,gDAAgD;IAChD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,yBAAyB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,GAAG,CAAC,EAClB,GAAG,EACH,KAAgB,EAChB,OAAiB,EACjB,IAAY,EACZ,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,QAAQ,2CAaV;yBArBe,GAAG"}
@@ -8,8 +8,8 @@
8
8
  */
9
9
  import { type ReactNode } from "react";
10
10
  import { type StyleProp, type ViewStyle } from "react-native";
11
- import type { SpacingKey } from "../theme";
12
- import { type StackAlign } from "./stack.styles";
11
+ import type { SpacingKey } from "../theme/index.js";
12
+ import { type StackAlign } from "./stack.styles.js";
13
13
  interface StackProps {
14
14
  /** 子要素間の gap(spacing token キー限定)。省略時 gap なし。 */
15
15
  gap?: SpacingKey;
@@ -1 +1 @@
1
- {"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Stack.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAqB,KAAK,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAErF,UAAU,UAAU;IAClB,gDAAgD;IAChD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAG,EAAE,KAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAapF;yBAbe,KAAK"}
1
+ {"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Stack.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAqB,KAAK,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AAExF,UAAU,UAAU;IAClB,gDAAgD;IAChD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,gCAAgC;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAG,EAAE,KAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAapF;yBAbe,KAAK"}
@@ -9,8 +9,8 @@
9
9
  * 色・寸法の決定は pure resolver(tag.styles.ts)に分離、recipe との機械照合は
10
10
  * scripts/lib/tag-conformance.test.ts が行う。
11
11
  * - label は Text primitive。filter-chip active の文字色だけ primary.700(SemanticColors 外なので style 上書き)。
12
- * - focus outline は Button(Step8) で Pressable focus handling を共通化してから Tag にも適用する
13
- * (§1 は Phase1 scope だが acceptance 外。今は accessibilityState のみ。Button 実装時に回収)。
12
+ * - focus outline は Button と共通の Pressable focus handling(_internal/focus-ring)を使う
13
+ * (removable / filter-chip の押せる要素に FocusRing を描く)。
14
14
  */
15
15
  import { type StyleProp, type ViewStyle } from "react-native";
16
16
  interface TagBase {
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Tag.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO/E,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,QAAQ,GACT,CAAC,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACjC,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5F,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AA2EpF,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,2CAgBlC;yBAhBe,GAAG"}
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Tag.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAY/E,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,QAAQ,GACT,CAAC,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACjC,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5F,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAuFpF,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,2CAgBlC;yBAhBe,GAAG"}
@@ -6,16 +6,18 @@
6
6
  * 構造一致している前提で theme.typography.fontSize[variant] を引く。乖離したら型エラーで検知
7
7
  * される(= A-3 conformance の型レベル最低ライン、§2)。
8
8
  * - 色は token キーのみ(生 hex 不可、§5 lint の意味を保つ)。
9
+ * - fontScale 制御(allowFontScaling / maxFontSizeMultiplier)は RN Text へ素通しする。
10
+ * 既定は未指定 = RN 既定(OS の文字サイズ設定に追随)。器が固定寸法の箇所だけ opt-in で絞る。
9
11
  * - letterSpacing は role(heading/body) の ratio を fontSize から pt 換算(text.styles.ts)。
10
12
  * - 形状(fontSize/lineHeight/letterSpacing/fontWeight)は variant/role/weight 依存なので useMemo で
11
- * 分離(B-3 の「形状/色 分離 + 参照安定性」を Phase1 は useMemo で満たす。StyleSheet 事前生成の
12
- * 最適化は Card で実証予定)。色のみ render 時に colors から取る。
13
+ * 分離(B-3 の「形状/色 分離 + 参照安定性」は useMemo で満たす。StyleSheet 事前生成による
14
+ * 最適化はどのコンポーネントでも採っていない)。色のみ render 時に colors から取る。
13
15
  */
14
16
  import { type ReactNode } from "react";
15
17
  import { type StyleProp, type TextStyle } from "react-native";
16
- import type { FontWeightKey, SemanticColors } from "../theme";
17
- import { type VariantOf } from "../contracts/contract-types";
18
- import { type TextRole } from "./text.styles";
18
+ import type { FontWeightKey, SemanticColors } from "../theme/index.js";
19
+ import { type VariantOf } from "../contracts/contract-types.js";
20
+ import { type TextRole } from "./text.styles.js";
19
21
  type TextVariant = VariantOf<"text">;
20
22
  interface TextProps {
21
23
  /** fontSize の段階(contract variant)。default "base"。 */
@@ -27,11 +29,23 @@ interface TextProps {
27
29
  /** letterSpacing の切替軸。default "body"。 */
28
30
  role?: TextRole;
29
31
  numberOfLines?: number;
32
+ /**
33
+ * OS の文字サイズ設定に追随するか(RN Text へそのまま透過)。既定は未指定 = RN 既定(true)。
34
+ * **原則は既定のまま**(false にすると視覚障害者の拡大設定を無視することになる)。
35
+ * 固定寸法の図版・チャートのラベルなど、拡大するとレイアウトが壊れる箇所だけ false にする。
36
+ */
37
+ allowFontScaling?: boolean;
38
+ /**
39
+ * 文字サイズ倍率の上限(RN Text へそのまま透過)。既定は未指定 = RN 既定(上限なし)。
40
+ * 拡大は許しつつ器からの溢れだけ抑えたいとき(円形の Avatar initials 等)に使う。
41
+ * `0` は「上限なし」、`1` は「拡大しない」という RN の規約に従う。
42
+ */
43
+ maxFontSizeMultiplier?: number;
30
44
  style?: StyleProp<TextStyle>;
31
45
  testID?: string;
32
46
  children: ReactNode;
33
47
  }
34
- export declare function Text({ variant, weight, color, role, numberOfLines, style, testID, children, }: TextProps): import("react/jsx-runtime").JSX.Element;
48
+ export declare function Text({ variant, weight, color, role, numberOfLines, allowFontScaling, maxFontSizeMultiplier, style, testID, children, }: TextProps): import("react/jsx-runtime").JSX.Element;
35
49
  export declare namespace Text {
36
50
  var __contract: {
37
51
  readonly id: "text";
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEhE,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAErC,UAAU,SAAS;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,yCAAyC;IACzC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAgB,EAChB,MAAM,EACN,KAAsB,EACtB,IAAa,EACb,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAoBX;yBA7Be,IAAI"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAErC,UAAU,SAAS;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,yCAAyC;IACzC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAgB,EAChB,MAAM,EACN,KAAsB,EACtB,IAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAmCX;yBA9Ce,IAAI"}
@@ -1,26 +1,63 @@
1
1
  /**
2
- * button.styles — Button の pure style resolver(P4 conformance 対応で Button.tsx から分離)。
2
+ * button.styles — Button の pure style resolver(styleRefs conformance 対応で Button.tsx から分離)。
3
3
  *
4
4
  * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
5
  * 直接実行できる。recipes/app/button.recipe.json(melta-contracts の styleRefs)との
6
- * 機械照合は scripts/lib/recipe-conformance.test.ts が行う。
6
+ * 機械照合は scripts/lib/recipe-conformance.test.ts が行う(層B)。
7
+ *
8
+ * ⚠️ このファイルは resolver 機構の**最初の実装**で、戻り値が slot 単位に揃っていない
9
+ * (色だけを返し、寸法は component 側で組む)。現行の書き方は AGENTS.md「style resolver の規約」
10
+ * を参照すること — 新規 / 改修は alert.styles.ts・textfield.styles.ts の形に寄せる。
7
11
  */
8
- import type { NativeTheme, ThemeMode, FontSizeKey, SpacingKey } from "../theme";
12
+ import type { NativeTheme, ThemeMode, FontSizeKey, SpacingKey } from "../theme/index.js";
9
13
  export type ButtonVariant = "contained" | "outlined" | "brand-outline" | "neutral" | "lighted" | "danger" | "subtle";
10
14
  export type ButtonSize = "small" | "medium" | "large";
11
- /** size → height / 横 padding / label fontSize / icon box(contract sizes/iconButton と整合)。 */
12
- export declare const SIZE_SPEC: Record<ButtonSize, {
13
- height: number;
15
+ /**
16
+ * size → 最小高さ / 横 padding / label fontSize / icon box(contract sizes/iconButton と整合)。
17
+ *
18
+ * `minHeight`(`height` ではない)なのは fontScale 対策。label は Text primitive の
19
+ * lineHeight(base = 36pt)で伸びるため、height 固定だと fontScale 1.12x あたりから
20
+ * medium(40pt)で文字がクリップする。recipe 側も 0.7.0 で `minHeight` に変わっている。
21
+ * iconOnly だけは正方形を保つため width/height 固定のまま(recipe の iconOnlyWidth/iconOnlyHeight)。
22
+ */
23
+ export declare const BUTTON_SIZE_SPEC: Record<ButtonSize, {
24
+ minHeight: number;
14
25
  px: SpacingKey;
15
26
  font: FontSizeKey;
16
27
  iconBox: number;
17
28
  }>;
29
+ /**
30
+ * size → 縦方向の片側 hitSlop(実効タップ標的 44pt 確保。A11Y_MIN_TAP_TARGET_44)。
31
+ *
32
+ * 視覚寸法は据え置き、当たり判定だけを広げる:
33
+ * small 32 + 6*2 = 44 / medium 40 + 2*2 = 44 / large 48(既に 44 以上なので 0)
34
+ *
35
+ * ⚠️ literal で持つ(BUTTON_SIZE_SPEC から自動導出しない)。導出にすると視覚寸法を変えたときに
36
+ * hitSlop が黙って追随してしまい、conformance が構造的に fail-open になる。
37
+ */
38
+ export declare const BUTTON_VERTICAL_HIT_SLOP: Record<ButtonSize, number>;
39
+ /** Pressable の hitSlop(RN の Insets)。 */
40
+ export interface ButtonHitSlop {
41
+ top: number;
42
+ bottom: number;
43
+ left?: number;
44
+ right?: number;
45
+ }
46
+ /**
47
+ * size / iconOnly → Pressable に渡す hitSlop。0 のときは undefined(prop を付けない)。
48
+ *
49
+ * - labeled: **縦だけ**。横は付けない — Row の gap 0 で隣接した Button 同士の当たり判定が
50
+ * 重なって押し違いが起きるため(横方向は padding で既に広い)。
51
+ * - iconOnly: 幅も 32/40 と狭い正方形なので**横にも同値**を付ける(左右の隣接は
52
+ * iconOnly ボタンを gap 0 で並べない前提。並べる場合は消費者側で gap を取る)。
53
+ */
54
+ export declare function resolveButtonHitSlop(size: ButtonSize, iconOnly: boolean): ButtonHitSlop | undefined;
18
55
  /**
19
56
  * variant → 色解決(button.contract tokenRefs の 1:1 写像)。
20
57
  * 文字色は variant により semantic 外(primary.500 等)もあるため hex 文字列で返し、
21
58
  * Text の style で color 上書きする(Text の color prop は SemanticColors キー限定のため)。
22
59
  */
23
- export declare function resolveVariant(theme: NativeTheme, mode: ThemeMode, variant: ButtonVariant): {
60
+ export declare function resolveButtonColors(theme: NativeTheme, mode: ThemeMode, variant: ButtonVariant): {
24
61
  bg?: string;
25
62
  pressedBg?: string;
26
63
  textColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"button.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/button.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,UAAU,GACV,eAAe,GACf,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,4FAA4F;AAC5F,eAAO,MAAM,SAAS,EAAE,MAAM,CAC5B,UAAU,EACV;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKvE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,GACrB;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA6BzE"}
1
+ {"version":3,"file":"button.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/button.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzF,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,UAAU,GACV,eAAe,GACf,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,UAAU,EACV;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAK1E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI/D,CAAC;AAEF,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,OAAO,GAChB,aAAa,GAAG,SAAS,CAM3B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,GACrB;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA6BzE"}
@@ -1,8 +1,8 @@
1
1
  /** melta-app primitives の公開エントリ。実装ごとにここへ追記する(設計書 §1)。 */
2
- export { Text } from "./Text";
3
- export { Metric } from "./Metric";
4
- export { Tag } from "./Tag";
5
- export { Button } from "./Button";
6
- export { Stack } from "./Stack";
7
- export { Row } from "./Row";
2
+ export { Text } from "./Text.js";
3
+ export { Metric } from "./Metric.js";
4
+ export { Tag } from "./Tag.js";
5
+ export { Button } from "./Button.js";
6
+ export { Stack } from "./Stack.js";
7
+ export { Row } from "./Row.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * styleRefs)との機械照合は scripts/lib/metric-conformance.test.ts が行う。
7
7
  */
8
8
  import type { FontVariant } from "react-native";
9
- import type { NativeTheme, ThemeMode, FontSizeKey, FontWeightValue } from "../theme";
9
+ import type { NativeTheme, ThemeMode, FontSizeKey, FontWeightValue } from "../theme/index.js";
10
10
  export type MetricSize = "sm" | "md" | "lg";
11
11
  /**
12
12
  * size → value / unit の fontSize token(metric.recipe sizes と整合)。
@@ -1 +1 @@
1
- {"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAIrF,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,EAAE,CAAC;KAC5B,CAAC;IACF,kFAAkF;IAClF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mCAAmC;IACnC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,UAAU,GACf,YAAY,CAuBd"}
1
+ {"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAI9F,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAIrF,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,EAAE,CAAC;KAC5B,CAAC;IACF,kFAAkF;IAClF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mCAAmC;IACnC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,UAAU,GACf,YAAY,CA4Bd"}
@@ -5,7 +5,7 @@
5
5
  * 直接実行できる。recipes/app/row.recipe.json(melta-contracts の styleRefs)との
6
6
  * 機械照合は scripts/lib/row-conformance.test.ts が行う。
7
7
  */
8
- import type { NativeTheme, SpacingKey } from "../theme";
8
+ import type { NativeTheme, SpacingKey } from "../theme/index.js";
9
9
  /** 交差軸の配置(RN alignItems への写像)。default "center"(recipe default に焼いてある)。 */
10
10
  export type RowAlign = "start" | "center" | "end" | "baseline" | "stretch";
11
11
  /** 主軸の配置(RN justifyContent への写像)。default "start"(= RN デフォルト、style 出力なし)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"row.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/row.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3E,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;;CAML,CAAC;AAEX,QAAA,MAAM,WAAW;;;;;CAKP,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,KAAK,CAAC;IACrB,UAAU,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAgB,EAAE,OAAiB,EAAE,IAAY,EAAE,GAAE,aAAkB,GAC7E,QAAQ,CAQV"}
1
+ {"version":3,"file":"row.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/row.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3E,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;;CAML,CAAC;AAEX,QAAA,MAAM,WAAW;;;;;CAKP,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,KAAK,CAAC;IACrB,UAAU,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAgB,EAAE,OAAiB,EAAE,IAAY,EAAE,GAAE,aAAkB,GAC7E,QAAQ,CAQV"}
@@ -5,7 +5,7 @@
5
5
  * 直接実行できる。recipes/app/stack.recipe.json(melta-contracts の styleRefs)との
6
6
  * 機械照合は scripts/lib/stack-conformance.test.ts が行う。
7
7
  */
8
- import type { NativeTheme, SpacingKey } from "../theme";
8
+ import type { NativeTheme, SpacingKey } from "../theme/index.js";
9
9
  /** 交差軸の配置(RN alignItems への写像。default stretch = RN デフォルトなので出力しない)。 */
10
10
  export type StackAlign = "start" | "center" | "end" | "stretch";
11
11
  declare const ALIGN_MAP: {
@@ -1 +1 @@
1
- {"version":3,"file":"stack.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/stack.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;CAKL,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAiB,EAAE,GAAE,eAAoB,GAC/C,UAAU,CAMZ"}
1
+ {"version":3,"file":"stack.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/stack.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;CAKL,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAiB,EAAE,GAAE,eAAoB,GAC/C,UAAU,CAMZ"}