melta-app 0.1.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 (311) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +197 -0
  3. package/THIRD_PARTY_LICENSES.md +198 -0
  4. package/lib/module/components/ActionSheet.js +87 -0
  5. package/lib/module/components/ActionSheet.js.map +1 -0
  6. package/lib/module/components/Alert.js +93 -0
  7. package/lib/module/components/Alert.js.map +1 -0
  8. package/lib/module/components/Avatar.js +93 -0
  9. package/lib/module/components/Avatar.js.map +1 -0
  10. package/lib/module/components/BottomSheet.js +69 -0
  11. package/lib/module/components/BottomSheet.js.map +1 -0
  12. package/lib/module/components/Card.js +93 -0
  13. package/lib/module/components/Card.js.map +1 -0
  14. package/lib/module/components/Checkbox.js +115 -0
  15. package/lib/module/components/Checkbox.js.map +1 -0
  16. package/lib/module/components/EmptyState.js +70 -0
  17. package/lib/module/components/EmptyState.js.map +1 -0
  18. package/lib/module/components/Header.js +53 -0
  19. package/lib/module/components/Header.js.map +1 -0
  20. package/lib/module/components/Image.js +67 -0
  21. package/lib/module/components/Image.js.map +1 -0
  22. package/lib/module/components/Modal.js +95 -0
  23. package/lib/module/components/Modal.js.map +1 -0
  24. package/lib/module/components/Progress.js +113 -0
  25. package/lib/module/components/Progress.js.map +1 -0
  26. package/lib/module/components/Radio.js +134 -0
  27. package/lib/module/components/Radio.js.map +1 -0
  28. package/lib/module/components/Screen.js +57 -0
  29. package/lib/module/components/Screen.js.map +1 -0
  30. package/lib/module/components/Skeleton.js +169 -0
  31. package/lib/module/components/Skeleton.js.map +1 -0
  32. package/lib/module/components/Surface.js +49 -0
  33. package/lib/module/components/Surface.js.map +1 -0
  34. package/lib/module/components/TextField.js +84 -0
  35. package/lib/module/components/TextField.js.map +1 -0
  36. package/lib/module/components/Toast.js +105 -0
  37. package/lib/module/components/Toast.js.map +1 -0
  38. package/lib/module/components/Toggle.js +77 -0
  39. package/lib/module/components/Toggle.js.map +1 -0
  40. package/lib/module/components/action-sheet.styles.js +70 -0
  41. package/lib/module/components/action-sheet.styles.js.map +1 -0
  42. package/lib/module/components/alert.styles.js +80 -0
  43. package/lib/module/components/alert.styles.js.map +1 -0
  44. package/lib/module/components/avatar.styles.js +94 -0
  45. package/lib/module/components/avatar.styles.js.map +1 -0
  46. package/lib/module/components/bottom-sheet.styles.js +55 -0
  47. package/lib/module/components/bottom-sheet.styles.js.map +1 -0
  48. package/lib/module/components/card.styles.js +50 -0
  49. package/lib/module/components/card.styles.js.map +1 -0
  50. package/lib/module/components/checkbox.styles.js +55 -0
  51. package/lib/module/components/checkbox.styles.js.map +1 -0
  52. package/lib/module/components/empty-state.styles.js +60 -0
  53. package/lib/module/components/empty-state.styles.js.map +1 -0
  54. package/lib/module/components/header.styles.js +33 -0
  55. package/lib/module/components/header.styles.js.map +1 -0
  56. package/lib/module/components/image.styles.js +37 -0
  57. package/lib/module/components/image.styles.js.map +1 -0
  58. package/lib/module/components/index.js +26 -0
  59. package/lib/module/components/index.js.map +1 -0
  60. package/lib/module/components/modal.styles.js +68 -0
  61. package/lib/module/components/modal.styles.js.map +1 -0
  62. package/lib/module/components/progress.styles.js +55 -0
  63. package/lib/module/components/progress.styles.js.map +1 -0
  64. package/lib/module/components/radio.styles.js +96 -0
  65. package/lib/module/components/radio.styles.js.map +1 -0
  66. package/lib/module/components/screen.styles.js +38 -0
  67. package/lib/module/components/screen.styles.js.map +1 -0
  68. package/lib/module/components/skeleton.styles.js +114 -0
  69. package/lib/module/components/skeleton.styles.js.map +1 -0
  70. package/lib/module/components/surface.styles.js +37 -0
  71. package/lib/module/components/surface.styles.js.map +1 -0
  72. package/lib/module/components/textfield.styles.js +121 -0
  73. package/lib/module/components/textfield.styles.js.map +1 -0
  74. package/lib/module/components/toast.styles.js +81 -0
  75. package/lib/module/components/toast.styles.js.map +1 -0
  76. package/lib/module/components/toggle.styles.js +69 -0
  77. package/lib/module/components/toggle.styles.js.map +1 -0
  78. package/lib/module/contracts/contract-types.js +192 -0
  79. package/lib/module/contracts/contract-types.js.map +1 -0
  80. package/lib/module/icons/Icon.js +57 -0
  81. package/lib/module/icons/Icon.js.map +1 -0
  82. package/lib/module/icons/glyphs.js +257 -0
  83. package/lib/module/icons/glyphs.js.map +1 -0
  84. package/lib/module/icons/icon.styles.js +28 -0
  85. package/lib/module/icons/icon.styles.js.map +1 -0
  86. package/lib/module/icons/index.js +14 -0
  87. package/lib/module/icons/index.js.map +1 -0
  88. package/lib/module/index.js +20 -0
  89. package/lib/module/index.js.map +1 -0
  90. package/lib/module/package.json +1 -0
  91. package/lib/module/primitives/Button.js +105 -0
  92. package/lib/module/primitives/Button.js.map +1 -0
  93. package/lib/module/primitives/Metric.js +68 -0
  94. package/lib/module/primitives/Metric.js.map +1 -0
  95. package/lib/module/primitives/Row.js +43 -0
  96. package/lib/module/primitives/Row.js.map +1 -0
  97. package/lib/module/primitives/Stack.js +39 -0
  98. package/lib/module/primitives/Stack.js.map +1 -0
  99. package/lib/module/primitives/Tag.js +160 -0
  100. package/lib/module/primitives/Tag.js.map +1 -0
  101. package/lib/module/primitives/Text.js +54 -0
  102. package/lib/module/primitives/Text.js.map +1 -0
  103. package/lib/module/primitives/_internal/focus-ring.js +57 -0
  104. package/lib/module/primitives/_internal/focus-ring.js.map +1 -0
  105. package/lib/module/primitives/button.styles.js +88 -0
  106. package/lib/module/primitives/button.styles.js.map +1 -0
  107. package/lib/module/primitives/index.js +11 -0
  108. package/lib/module/primitives/index.js.map +1 -0
  109. package/lib/module/primitives/metric.styles.js +54 -0
  110. package/lib/module/primitives/metric.styles.js.map +1 -0
  111. package/lib/module/primitives/row.styles.js +53 -0
  112. package/lib/module/primitives/row.styles.js.map +1 -0
  113. package/lib/module/primitives/stack.styles.js +37 -0
  114. package/lib/module/primitives/stack.styles.js.map +1 -0
  115. package/lib/module/primitives/tag.styles.js +56 -0
  116. package/lib/module/primitives/tag.styles.js.map +1 -0
  117. package/lib/module/primitives/text.styles.js +33 -0
  118. package/lib/module/primitives/text.styles.js.map +1 -0
  119. package/lib/module/theme/ThemeProvider.js +41 -0
  120. package/lib/module/theme/ThemeProvider.js.map +1 -0
  121. package/lib/module/theme/index.js +19 -0
  122. package/lib/module/theme/index.js.map +1 -0
  123. package/lib/module/theme/native-theme.js +201 -0
  124. package/lib/module/theme/native-theme.js.map +1 -0
  125. package/lib/module/theme/types.js +4 -0
  126. package/lib/module/theme/types.js.map +1 -0
  127. package/lib/typescript/package.json +1 -0
  128. package/lib/typescript/src/components/ActionSheet.d.ts +45 -0
  129. package/lib/typescript/src/components/ActionSheet.d.ts.map +1 -0
  130. package/lib/typescript/src/components/Alert.d.ts +43 -0
  131. package/lib/typescript/src/components/Alert.d.ts.map +1 -0
  132. package/lib/typescript/src/components/Avatar.d.ts +45 -0
  133. package/lib/typescript/src/components/Avatar.d.ts.map +1 -0
  134. package/lib/typescript/src/components/BottomSheet.d.ts +36 -0
  135. package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -0
  136. package/lib/typescript/src/components/Card.d.ts +46 -0
  137. package/lib/typescript/src/components/Card.d.ts.map +1 -0
  138. package/lib/typescript/src/components/Checkbox.d.ts +40 -0
  139. package/lib/typescript/src/components/Checkbox.d.ts.map +1 -0
  140. package/lib/typescript/src/components/EmptyState.d.ts +36 -0
  141. package/lib/typescript/src/components/EmptyState.d.ts.map +1 -0
  142. package/lib/typescript/src/components/Header.d.ts +34 -0
  143. package/lib/typescript/src/components/Header.d.ts.map +1 -0
  144. package/lib/typescript/src/components/Image.d.ts +41 -0
  145. package/lib/typescript/src/components/Image.d.ts.map +1 -0
  146. package/lib/typescript/src/components/Modal.d.ts +46 -0
  147. package/lib/typescript/src/components/Modal.d.ts.map +1 -0
  148. package/lib/typescript/src/components/Progress.d.ts +39 -0
  149. package/lib/typescript/src/components/Progress.d.ts.map +1 -0
  150. package/lib/typescript/src/components/Radio.d.ts +52 -0
  151. package/lib/typescript/src/components/Radio.d.ts.map +1 -0
  152. package/lib/typescript/src/components/Screen.d.ts +42 -0
  153. package/lib/typescript/src/components/Screen.d.ts.map +1 -0
  154. package/lib/typescript/src/components/Skeleton.d.ts +37 -0
  155. package/lib/typescript/src/components/Skeleton.d.ts.map +1 -0
  156. package/lib/typescript/src/components/Surface.d.ts +31 -0
  157. package/lib/typescript/src/components/Surface.d.ts.map +1 -0
  158. package/lib/typescript/src/components/TextField.d.ts +45 -0
  159. package/lib/typescript/src/components/TextField.d.ts.map +1 -0
  160. package/lib/typescript/src/components/Toast.d.ts +45 -0
  161. package/lib/typescript/src/components/Toast.d.ts.map +1 -0
  162. package/lib/typescript/src/components/Toggle.d.ts +39 -0
  163. package/lib/typescript/src/components/Toggle.d.ts.map +1 -0
  164. package/lib/typescript/src/components/action-sheet.styles.d.ts +65 -0
  165. package/lib/typescript/src/components/action-sheet.styles.d.ts.map +1 -0
  166. package/lib/typescript/src/components/alert.styles.d.ts +61 -0
  167. package/lib/typescript/src/components/alert.styles.d.ts.map +1 -0
  168. package/lib/typescript/src/components/avatar.styles.d.ts +60 -0
  169. package/lib/typescript/src/components/avatar.styles.d.ts.map +1 -0
  170. package/lib/typescript/src/components/bottom-sheet.styles.d.ts +50 -0
  171. package/lib/typescript/src/components/bottom-sheet.styles.d.ts.map +1 -0
  172. package/lib/typescript/src/components/card.styles.d.ts +27 -0
  173. package/lib/typescript/src/components/card.styles.d.ts.map +1 -0
  174. package/lib/typescript/src/components/checkbox.styles.d.ts +55 -0
  175. package/lib/typescript/src/components/checkbox.styles.d.ts.map +1 -0
  176. package/lib/typescript/src/components/empty-state.styles.d.ts +58 -0
  177. package/lib/typescript/src/components/empty-state.styles.d.ts.map +1 -0
  178. package/lib/typescript/src/components/header.styles.d.ts +30 -0
  179. package/lib/typescript/src/components/header.styles.d.ts.map +1 -0
  180. package/lib/typescript/src/components/image.styles.d.ts +28 -0
  181. package/lib/typescript/src/components/image.styles.d.ts.map +1 -0
  182. package/lib/typescript/src/components/index.d.ts +23 -0
  183. package/lib/typescript/src/components/index.d.ts.map +1 -0
  184. package/lib/typescript/src/components/modal.styles.d.ts +66 -0
  185. package/lib/typescript/src/components/modal.styles.d.ts.map +1 -0
  186. package/lib/typescript/src/components/progress.styles.d.ts +44 -0
  187. package/lib/typescript/src/components/progress.styles.d.ts.map +1 -0
  188. package/lib/typescript/src/components/radio.styles.d.ts +91 -0
  189. package/lib/typescript/src/components/radio.styles.d.ts.map +1 -0
  190. package/lib/typescript/src/components/screen.styles.d.ts +34 -0
  191. package/lib/typescript/src/components/screen.styles.d.ts.map +1 -0
  192. package/lib/typescript/src/components/skeleton.styles.d.ts +105 -0
  193. package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -0
  194. package/lib/typescript/src/components/surface.styles.d.ts +31 -0
  195. package/lib/typescript/src/components/surface.styles.d.ts.map +1 -0
  196. package/lib/typescript/src/components/textfield.styles.d.ts +75 -0
  197. package/lib/typescript/src/components/textfield.styles.d.ts.map +1 -0
  198. package/lib/typescript/src/components/toast.styles.d.ts +62 -0
  199. package/lib/typescript/src/components/toast.styles.d.ts.map +1 -0
  200. package/lib/typescript/src/components/toggle.styles.d.ts +53 -0
  201. package/lib/typescript/src/components/toggle.styles.d.ts.map +1 -0
  202. package/lib/typescript/src/contracts/contract-types.d.ts +193 -0
  203. package/lib/typescript/src/contracts/contract-types.d.ts.map +1 -0
  204. package/lib/typescript/src/icons/Icon.d.ts +40 -0
  205. package/lib/typescript/src/icons/Icon.d.ts.map +1 -0
  206. package/lib/typescript/src/icons/glyphs.d.ts +259 -0
  207. package/lib/typescript/src/icons/glyphs.d.ts.map +1 -0
  208. package/lib/typescript/src/icons/icon.styles.d.ts +20 -0
  209. package/lib/typescript/src/icons/icon.styles.d.ts.map +1 -0
  210. package/lib/typescript/src/icons/index.d.ts +12 -0
  211. package/lib/typescript/src/icons/index.d.ts.map +1 -0
  212. package/lib/typescript/src/index.d.ts +12 -0
  213. package/lib/typescript/src/index.d.ts.map +1 -0
  214. package/lib/typescript/src/primitives/Button.d.ts +48 -0
  215. package/lib/typescript/src/primitives/Button.d.ts.map +1 -0
  216. package/lib/typescript/src/primitives/Metric.d.ts +38 -0
  217. package/lib/typescript/src/primitives/Metric.d.ts.map +1 -0
  218. package/lib/typescript/src/primitives/Row.d.ts +37 -0
  219. package/lib/typescript/src/primitives/Row.d.ts.map +1 -0
  220. package/lib/typescript/src/primitives/Stack.d.ts +33 -0
  221. package/lib/typescript/src/primitives/Stack.d.ts.map +1 -0
  222. package/lib/typescript/src/primitives/Tag.d.ts +43 -0
  223. package/lib/typescript/src/primitives/Tag.d.ts.map +1 -0
  224. package/lib/typescript/src/primitives/Text.d.ts +45 -0
  225. package/lib/typescript/src/primitives/Text.d.ts.map +1 -0
  226. package/lib/typescript/src/primitives/_internal/focus-ring.d.ts +31 -0
  227. package/lib/typescript/src/primitives/_internal/focus-ring.d.ts.map +1 -0
  228. package/lib/typescript/src/primitives/button.styles.d.ts +29 -0
  229. package/lib/typescript/src/primitives/button.styles.d.ts.map +1 -0
  230. package/lib/typescript/src/primitives/index.d.ts +8 -0
  231. package/lib/typescript/src/primitives/index.d.ts.map +1 -0
  232. package/lib/typescript/src/primitives/metric.styles.d.ts +43 -0
  233. package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -0
  234. package/lib/typescript/src/primitives/row.styles.d.ts +50 -0
  235. package/lib/typescript/src/primitives/row.styles.d.ts.map +1 -0
  236. package/lib/typescript/src/primitives/stack.styles.d.ts +34 -0
  237. package/lib/typescript/src/primitives/stack.styles.d.ts.map +1 -0
  238. package/lib/typescript/src/primitives/tag.styles.d.ts +32 -0
  239. package/lib/typescript/src/primitives/tag.styles.d.ts.map +1 -0
  240. package/lib/typescript/src/primitives/text.styles.d.ts +26 -0
  241. package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -0
  242. package/lib/typescript/src/theme/ThemeProvider.d.ts +32 -0
  243. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -0
  244. package/lib/typescript/src/theme/index.d.ts +15 -0
  245. package/lib/typescript/src/theme/index.d.ts.map +1 -0
  246. package/lib/typescript/src/theme/native-theme.d.ts +3 -0
  247. package/lib/typescript/src/theme/native-theme.d.ts.map +1 -0
  248. package/lib/typescript/src/theme/types.d.ts +121 -0
  249. package/lib/typescript/src/theme/types.d.ts.map +1 -0
  250. package/package.json +120 -0
  251. package/src/components/ActionSheet.tsx +112 -0
  252. package/src/components/Alert.tsx +84 -0
  253. package/src/components/Avatar.tsx +110 -0
  254. package/src/components/BottomSheet.tsx +81 -0
  255. package/src/components/Card.tsx +102 -0
  256. package/src/components/Checkbox.tsx +107 -0
  257. package/src/components/EmptyState.tsx +64 -0
  258. package/src/components/Header.tsx +51 -0
  259. package/src/components/Image.tsx +89 -0
  260. package/src/components/Modal.tsx +113 -0
  261. package/src/components/Progress.tsx +124 -0
  262. package/src/components/Radio.tsx +151 -0
  263. package/src/components/Screen.tsx +62 -0
  264. package/src/components/Skeleton.tsx +154 -0
  265. package/src/components/Surface.tsx +37 -0
  266. package/src/components/TextField.tsx +102 -0
  267. package/src/components/Toast.tsx +103 -0
  268. package/src/components/Toggle.tsx +94 -0
  269. package/src/components/action-sheet.styles.ts +102 -0
  270. package/src/components/alert.styles.ts +115 -0
  271. package/src/components/avatar.styles.ts +110 -0
  272. package/src/components/bottom-sheet.styles.ts +78 -0
  273. package/src/components/card.styles.ts +56 -0
  274. package/src/components/checkbox.styles.ts +83 -0
  275. package/src/components/empty-state.styles.ts +98 -0
  276. package/src/components/header.styles.ts +44 -0
  277. package/src/components/image.styles.ts +36 -0
  278. package/src/components/index.ts +23 -0
  279. package/src/components/modal.styles.ts +106 -0
  280. package/src/components/progress.styles.ts +74 -0
  281. package/src/components/radio.styles.ts +132 -0
  282. package/src/components/screen.styles.ts +44 -0
  283. package/src/components/skeleton.styles.ts +155 -0
  284. package/src/components/surface.styles.ts +50 -0
  285. package/src/components/textfield.styles.ts +135 -0
  286. package/src/components/toast.styles.ts +115 -0
  287. package/src/components/toggle.styles.ts +73 -0
  288. package/src/contracts/contract-types.ts +199 -0
  289. package/src/icons/Icon.tsx +65 -0
  290. package/src/icons/glyphs.ts +54 -0
  291. package/src/icons/icon.styles.ts +37 -0
  292. package/src/icons/index.ts +12 -0
  293. package/src/index.ts +24 -0
  294. package/src/primitives/Button.tsx +114 -0
  295. package/src/primitives/Metric.tsx +67 -0
  296. package/src/primitives/Row.tsx +54 -0
  297. package/src/primitives/Stack.tsx +42 -0
  298. package/src/primitives/Tag.tsx +126 -0
  299. package/src/primitives/Text.tsx +71 -0
  300. package/src/primitives/_internal/focus-ring.tsx +59 -0
  301. package/src/primitives/button.styles.ts +69 -0
  302. package/src/primitives/index.ts +8 -0
  303. package/src/primitives/metric.styles.ts +75 -0
  304. package/src/primitives/row.styles.ts +66 -0
  305. package/src/primitives/stack.styles.ts +47 -0
  306. package/src/primitives/tag.styles.ts +65 -0
  307. package/src/primitives/text.styles.ts +42 -0
  308. package/src/theme/ThemeProvider.tsx +60 -0
  309. package/src/theme/index.ts +18 -0
  310. package/src/theme/native-theme.ts +215 -0
  311. package/src/theme/types.ts +137 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * alert.styles — Alert の pure style resolver(styleRefs conformance 対応で Alert.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/alert.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/alert-conformance.test.ts が行う。
7
+ *
8
+ * - RN では border を持たず bg subtle + text 色で表現する(status token に border 用の中間色が
9
+ * 無いため。COLOR_ONLY_FORBIDDEN は title/message のテキストと icon slot で担保、recipe description)。
10
+ * - dark mode は status.*.subtleDark / textDark 側を解決する。info variant のみ primary 固定
11
+ * (dark token が無い既知の割り切り、web と同じ)。
12
+ */
13
+ import type { FontWeightValue, NativeTheme, ThemeMode } from "../theme";
14
+ export type AlertVariant = "info" | "success" | "warning" | "error";
15
+ /**
16
+ * 構成キー(token キー)。component は Text にこのキーをそのまま渡し、resolver は同じキーから
17
+ * style 値を解決する(component と resolver が別々のキーを持って drift する事故を防ぐ SSOT)。
18
+ */
19
+ export declare const ALERT_SPEC: {
20
+ readonly padding: "4";
21
+ readonly gap: "3";
22
+ readonly radius: "md";
23
+ readonly titleFont: "base";
24
+ readonly titleWeight: "medium";
25
+ readonly messageFont: "sm";
26
+ };
27
+ /** slot 構成(alert.recipe 各 variant の containerStyle / titleStyle / messageStyle と 1:1)。 */
28
+ export interface AlertStyles {
29
+ containerStyle: {
30
+ backgroundColor: string;
31
+ borderRadius: number;
32
+ padding: number;
33
+ flexDirection: "row";
34
+ alignItems: "flex-start";
35
+ gap: number;
36
+ };
37
+ /** compose する Text primitive(title)へ渡す値の解決結果 */
38
+ titleStyle: {
39
+ color: string;
40
+ fontSize: number;
41
+ fontWeight: FontWeightValue;
42
+ };
43
+ /** compose する Text primitive(message)へ渡す値の解決結果 */
44
+ messageStyle: {
45
+ color: string;
46
+ fontSize: number;
47
+ };
48
+ }
49
+ /**
50
+ * variant → bg / text 色の解決。
51
+ * - info: primary.50 / primary.800 固定(mode 非依存)。
52
+ * - success / warning / error: status token(error は status キー上は danger)。
53
+ * light は subtleLight / textLight、dark は subtleDark / textDark(recipe description の写像)。
54
+ */
55
+ export declare function resolveAlertColors(theme: NativeTheme, mode: ThemeMode, variant: AlertVariant): {
56
+ bg: string;
57
+ text: string;
58
+ };
59
+ /** variant → 全 slot の style 解決(alert.recipe styleRefs の 1:1 写像)。 */
60
+ export declare function resolveAlertStyles(theme: NativeTheme, mode: ThemeMode, variant: AlertVariant): AlertStyles;
61
+ //# sourceMappingURL=alert.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/alert.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAGV,eAAe,EACf,WAAW,EAGX,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;CActB,CAAC;AAEF,0FAA0F;AAC1F,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,YAAY,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,gDAAgD;IAChD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;KAC7B,CAAC;IACF,kDAAkD;IAClD,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,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,CAqBb"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * avatar.styles — Avatar の pure style resolver(styleRefs conformance 対応で Avatar.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/avatar.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/avatar-conformance.test.ts が行う。
7
+ */
8
+ import type { FontWeightValue, NativeTheme, ThemeMode } from "../theme";
9
+ export type AvatarSize = "small" | "medium" | "large";
10
+ export type AvatarStatus = "online" | "away" | "offline";
11
+ /** group の重なり(-spacing.2 相当。負値 token が無いため recipe と同じ literal)。 */
12
+ export declare const AVATAR_GROUP_OVERLAP = -8;
13
+ /**
14
+ * group variant(avatar.recipe の group.style / group.overlapStyle の 1:1 写像)。
15
+ * container は横並び、2枚目以降の子に overlap(負 margin)を適用する。
16
+ */
17
+ export declare function resolveAvatarGroupStyle(): {
18
+ container: {
19
+ flexDirection: "row";
20
+ };
21
+ overlap: {
22
+ marginLeft: number;
23
+ };
24
+ };
25
+ export interface AvatarStyleResult {
26
+ /** 円形コンテナ(image は overflow clip / initials は bg + 中央寄せ)。 */
27
+ container: {
28
+ width: number;
29
+ height: number;
30
+ borderRadius: number;
31
+ overflow?: "hidden";
32
+ backgroundColor?: string;
33
+ alignItems?: "center";
34
+ justifyContent?: "center";
35
+ };
36
+ /** initials 文字(image variant では未使用)。 */
37
+ text: {
38
+ color: string;
39
+ fontWeight: FontWeightValue;
40
+ fontSize: number;
41
+ };
42
+ /** statusDot(status 指定時のみ使用。右下配置は Avatar.tsx 側の絶対配置で行う)。 */
43
+ dot: {
44
+ width: number;
45
+ height: number;
46
+ borderRadius: number;
47
+ borderWidth: 2;
48
+ borderColor: string;
49
+ };
50
+ }
51
+ /**
52
+ * variant / size → Avatar style の解決(avatar.recipe styleRefs の 1:1 写像)。
53
+ */
54
+ export declare function resolveAvatarStyle(theme: NativeTheme, mode: ThemeMode, variant: "image" | "initials", size: AvatarSize): AvatarStyleResult;
55
+ /**
56
+ * status → statusDot の背景色(avatar.recipe states の 1:1 写像)。
57
+ * online=success / away=warning / offline=ニュートラル(border-strong)。
58
+ */
59
+ export declare function resolveAvatarStatusColor(theme: NativeTheme, mode: ThemeMode, status: AvatarStatus): string;
60
+ //# sourceMappingURL=avatar.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/avatar.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AASzD,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI;IACzC,SAAS,EAAE;QAAE,aAAa,EAAE,KAAK,CAAA;KAAE,CAAC;IACpC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAKA;AAED,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,QAAQ,CAAC;QACtB,cAAc,CAAC,EAAE,QAAQ,CAAC;KAC3B,CAAC;IACF,wCAAwC;IACxC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,eAAe,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,4DAA4D;IAC5D,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CACnG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,GAAG,UAAU,EAC7B,IAAI,EAAE,UAAU,GACf,iBAAiB,CA4BnB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,YAAY,GACnB,MAAM,CASR"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * bottom-sheet.styles — BottomSheet の pure style resolver(styleRefs conformance 対応で
3
+ * BottomSheet.tsx から分離)。
4
+ *
5
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
6
+ * 直接実行できる。recipes/app/bottom-sheet.recipe.json(melta-contracts の styleRefs)との
7
+ * 機械照合は scripts/lib/bottom-sheet-conformance.test.ts が行う。
8
+ *
9
+ * - sheet は上角のみ radius(下端密着のため)。grabber は装飾バー(a11y ツリーから除外は
10
+ * 実装側の importantForAccessibility / accessibilityElementsHidden が担う)。
11
+ * - content は自由 slot で padding のみ供給。
12
+ * - overlay の黒 50% は token 外の literal(modal と同じ)。
13
+ * - sheet の下余白(SafeArea)は実装(BottomSheet.tsx)が SafeAreaView で加算する。
14
+ */
15
+ import type { FontWeightValue, NativeTheme, ThemeMode } from "../theme";
16
+ /** overlay の黒 50%(token 外 literal。modal と同値)。 */
17
+ export declare const BOTTOM_SHEET_OVERLAY_COLOR = "rgba(0,0,0,0.5)";
18
+ export interface BottomSheetStyle {
19
+ overlayStyle: {
20
+ flex: 1;
21
+ backgroundColor: string;
22
+ justifyContent: "flex-end";
23
+ };
24
+ sheetStyle: {
25
+ backgroundColor: string;
26
+ borderTopLeftRadius: number;
27
+ borderTopRightRadius: number;
28
+ };
29
+ grabberStyle: {
30
+ width: 36;
31
+ height: 4;
32
+ borderRadius: number;
33
+ backgroundColor: string;
34
+ alignSelf: "center";
35
+ marginTop: number;
36
+ };
37
+ titleStyle: {
38
+ fontSize: number;
39
+ fontWeight: FontWeightValue;
40
+ color: string;
41
+ paddingHorizontal: number;
42
+ paddingTop: number;
43
+ };
44
+ contentStyle: {
45
+ padding: number;
46
+ };
47
+ }
48
+ /** mode → BottomSheet style の解決(bottom-sheet.recipe styleRefs の 1:1 写像)。 */
49
+ export declare function resolveBottomSheetStyle(theme: NativeTheme, mode: ThemeMode): BottomSheetStyle;
50
+ //# sourceMappingURL=bottom-sheet.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottom-sheet.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/bottom-sheet.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAExE,iDAAiD;AAEjD,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,UAAU,CAAA;KAAE,CAAC;IAC/E,UAAU,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,CAAC;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,CA8B7F"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * card.styles — Card の pure style resolver(styleRefs conformance 対応で Card.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュール(型 import のみ)にすることで node テスト
5
+ * (tsx --test)から直接実行できる。recipes/app/card.recipe.json(melta-contracts の styleRefs)
6
+ * との機械照合は scripts/lib/card-conformance.test.ts が行う。
7
+ */
8
+ import type { ViewStyle } from "react-native";
9
+ import type { NativeTheme, ThemeMode } from "../theme";
10
+ export type CardVariant = "basic" | "media" | "action" | "link";
11
+ /** variant → インタラクティブ(Pressable)か。action/link のみ true(recipe pressedStyle の有無と対応)。 */
12
+ export declare const CARD_INTERACTIVE: Record<CardVariant, boolean>;
13
+ /**
14
+ * Card の外枠 style を一元生成(card.recipe variants.style の 1:1 写像、
15
+ * 非インタラクティブ View / インタラクティブ Pressable の両分岐で共有)。
16
+ *
17
+ * - pressed は action/link のみ elevation sm→md(recipe pressedStyle、contract hover→pressed mapping)。
18
+ * - 注: overflow:hidden は付けない。iOS は shadow(elevation) と overflow:hidden が同居すると影が
19
+ * 消えるため(contract は media でも elevation.sm 要求)。media のクリップは内側の clip View で行う。
20
+ * - media は内側 clip View が padding を持つ(resolveCardBodyStyle / recipe bodyStyle)ので外枠は padding なし。
21
+ */
22
+ export declare function resolveCardShape(theme: NativeTheme, mode: ThemeMode, variant: CardVariant, pressed?: boolean): ViewStyle;
23
+ /** media の body padding(内側 clip View 側が持つ。recipe bodyStyle の写像)。media 以外は undefined。 */
24
+ export declare function resolveCardBodyStyle(theme: NativeTheme, variant: CardVariant): {
25
+ padding: number;
26
+ } | undefined;
27
+ //# sourceMappingURL=card.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/card.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAgB,MAAM,UAAU,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,UAAQ,GACd,SAAS,CAYX;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACnB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEjC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * checkbox.styles — Checkbox の pure style resolver(styleRefs conformance 対応で Checkbox.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/checkbox.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/checkbox-conformance.test.ts が行う。
7
+ */
8
+ import type { NativeTheme, ThemeMode } from "../theme";
9
+ /**
10
+ * recipe 由来の literal 値テーブル(token 化されていない数値。conformance が recipe と照合する)。
11
+ * - box は 20px(web の 16px より大きいのはタッチ前提、recipe description)
12
+ * - hitSlop は (44 - box 20) / 2 = 12。行全体 Pressable に足して実タッチ領域 44pt を確保
13
+ */
14
+ export declare const CHECKBOX_SPEC: {
15
+ readonly boxSize: 20;
16
+ readonly boxBorderWidth: 2;
17
+ readonly disabledOpacity: 0.5;
18
+ readonly hitSlop: 12;
19
+ };
20
+ /** 見た目(色)に効く状態入力。disabled は opacity のみで色を変えないため含めない。 */
21
+ export interface CheckboxStateInput {
22
+ checked: boolean;
23
+ /** true で variant "indeterminate"。box の塗りは checked と同じ、mark が横棒になる。 */
24
+ indeterminate?: boolean;
25
+ /** true で states.error の borderColor 差分。checked より優先(選択済みでもエラーなら赤枠)。 */
26
+ error?: boolean;
27
+ }
28
+ export interface CheckboxResolved {
29
+ /** box(20px の四角)。recipe の boxStyle スロットと 1:1。 */
30
+ boxStyle: {
31
+ width: number;
32
+ height: number;
33
+ borderWidth: number;
34
+ borderColor: string;
35
+ borderRadius: number;
36
+ backgroundColor: string;
37
+ };
38
+ /** label(recipe の labelStyle スロットと 1:1。実装は Text primitive の base/text-default で同値)。 */
39
+ labelStyle: {
40
+ fontSize: number;
41
+ color: string;
42
+ };
43
+ /** box と label の間隔。 */
44
+ gap: number;
45
+ /** checkmark(L 字 border)/ indeterminate 横棒の色(states.checked.markColor)。 */
46
+ markColor: string;
47
+ }
48
+ /**
49
+ * 状態 → 最終 style 値の解決(checkbox.recipe styleRefs の 1:1 写像)。
50
+ * - 塗り(bg/border = primary.500)は checked / indeterminate 共通(recipe の variants.indeterminate
51
+ * boxStyle と states.checked boxStyle が同値であることは conformance が recipe 側で担保)。
52
+ * - error は borderColor のみ上書き(states.error)。
53
+ */
54
+ export declare function resolveCheckboxStyle(theme: NativeTheme, mode: ThemeMode, { checked, indeterminate, error }: CheckboxStateInput): CheckboxResolved;
55
+ //# sourceMappingURL=checkbox.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/checkbox.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,uFAAuF;IACvF,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,EAAE,OAAO,EAAE,aAAqB,EAAE,KAAa,EAAE,EAAE,kBAAkB,GACpE,gBAAgB,CAuBlB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * empty-state.styles — EmptyState の pure style resolver(styleRefs conformance 対応で
3
+ * EmptyState.tsx から分離)。
4
+ *
5
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
6
+ * 直接実行できる。recipes/app/empty-state.recipe.json(melta-contracts の styleRefs)との
7
+ * 機械照合は scripts/lib/empty-state-conformance.test.ts が行う。
8
+ */
9
+ import type { FontWeightValue, NativeTheme, ThemeMode } from "../theme";
10
+ /**
11
+ * default variant の構成キー(token キー)。
12
+ * component は Text / View にこのキーをそのまま渡し、resolver は同じキーから style 値を解決する
13
+ * (component と resolver が別々のキーを持って drift する事故を防ぐ SSOT)。
14
+ */
15
+ export declare const EMPTY_STATE_SPEC: {
16
+ readonly padding: "8";
17
+ readonly gap: "3";
18
+ readonly titleFont: "lg";
19
+ readonly titleWeight: "semibold";
20
+ readonly titleColor: "text-heading";
21
+ readonly descriptionFont: "sm";
22
+ readonly descriptionColor: "text-muted";
23
+ readonly actionMarginTop: "2";
24
+ };
25
+ /** slot 構成(recipe default variant の style / titleStyle / descriptionStyle / actionStyle と 1:1)。 */
26
+ export interface EmptyStateStyles {
27
+ /** 中央寄せコンテナ */
28
+ style: {
29
+ alignItems: "center";
30
+ justifyContent: "center";
31
+ padding: number;
32
+ gap: number;
33
+ };
34
+ /** compose する Text primitive(title)へ渡す値の解決結果 */
35
+ titleStyle: {
36
+ fontSize: number;
37
+ fontWeight: FontWeightValue;
38
+ color: string;
39
+ textAlign: "center";
40
+ };
41
+ /** compose する Text primitive(description)へ渡す値の解決結果 */
42
+ descriptionStyle: {
43
+ fontSize: number;
44
+ color: string;
45
+ textAlign: "center";
46
+ };
47
+ /** 任意 action(Button contained を内部 compose)のラッパ */
48
+ actionStyle: {
49
+ marginTop: number;
50
+ };
51
+ }
52
+ /**
53
+ * default variant → style 解決(empty-state.recipe styleRefs の 1:1 写像)。
54
+ * title / description の fontSize・fontWeight・色は EMPTY_STATE_SPEC のキーから解決する
55
+ * (component 側は同じキーを Text の variant / weight / color prop に渡す = 同源)。
56
+ */
57
+ export declare function resolveEmptyStateStyles(theme: NativeTheme, mode: ThemeMode): EmptyStateStyles;
58
+ //# sourceMappingURL=empty-state.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/empty-state.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAGV,eAAe,EACf,WAAW,EAGX,SAAS,EACV,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CAkB5B,CAAC;AAEF,mGAAmG;AACnG,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,KAAK,EAAE;QACL,UAAU,EAAE,QAAQ,CAAC;QACrB,cAAc,EAAE,QAAQ,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,gDAAgD;IAChD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,QAAQ,CAAC;KACrB,CAAC;IACF,sDAAsD;IACtD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,QAAQ,CAAC;KACrB,CAAC;IACF,kDAAkD;IAClD,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAsB7F"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * header.styles — Header の pure style resolver(styleRefs conformance 対応で Header.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/header.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/header-conformance.test.ts が行う。
7
+ */
8
+ import type { NativeTheme, ThemeMode } from "../theme";
9
+ export interface HeaderStyle {
10
+ containerStyle: {
11
+ flexDirection: "row";
12
+ alignItems: "center";
13
+ gap: number;
14
+ paddingHorizontal: number;
15
+ paddingVertical: number;
16
+ backgroundColor: string;
17
+ borderBottomWidth: 1;
18
+ borderBottomColor: string;
19
+ };
20
+ titleWrapStyle: {
21
+ flex: 1;
22
+ };
23
+ }
24
+ /**
25
+ * mode → ヘッダー style の解決(header.recipe styleRefs の 1:1 写像)。
26
+ * title の typography はここでは持たない — Header は melta の Text
27
+ * (variant="xl" weight="bold" color="text-heading" role="heading")を compose する(text recipe が正)。
28
+ */
29
+ export declare function resolveHeaderStyle(theme: NativeTheme, mode: ThemeMode): HeaderStyle;
30
+ //# sourceMappingURL=header.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/header.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE;QACd,aAAa,EAAE,KAAK,CAAC;QACrB,UAAU,EAAE,QAAQ,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,CAAC,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,cAAc,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,WAAW,CAcnF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * image.styles — Image の pure style resolver(styleRefs conformance 対応で Image.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/image.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/image-conformance.test.ts が行う。
7
+ *
8
+ * recipe の variants.default.style / states.error.style は両方とも空 object=
9
+ * 「実装はデフォルトの装飾 style を持たない」が意図(contract の tokenRefs radius=radius.md
10
+ * とは意図的な食い違い。recipe description に明記済み)。ここでは radius prop
11
+ * (token キー限定)指定時のみ borderRadius + overflow:hidden を付ける。
12
+ */
13
+ import type { NativeTheme, RadiusKey } from "../theme";
14
+ /**
15
+ * ImageStyle / ViewStyle 双方に有効な共通サブセット。
16
+ * 画像本体(RNImage)と error 時の fallback View で同じ shape を共用する。
17
+ */
18
+ export interface ImageShapeStyle {
19
+ aspectRatio?: number;
20
+ borderRadius?: number;
21
+ overflow?: "hidden";
22
+ }
23
+ /** radius / aspectRatio props → shape style の解決。未指定なら空 object(装飾なし)。 */
24
+ export declare function resolveImageShape(theme: NativeTheme, { aspectRatio, radius }?: {
25
+ aspectRatio?: number;
26
+ radius?: RadiusKey;
27
+ }): ImageShapeStyle;
28
+ //# sourceMappingURL=image.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/image.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,EAAE,WAAW,EAAE,MAAM,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAO,GACzE,eAAe,CAMjB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * melta-app components の公開エントリ(設計書 §1)。
3
+ * Surface はライブラリ公開(P1)で正式 export(契約 surface.contract.json + recipe を持つ implemented)。
4
+ */
5
+ export { Surface } from "./Surface";
6
+ export { Image } from "./Image";
7
+ export { Card } from "./Card";
8
+ export { Skeleton } from "./Skeleton";
9
+ export { EmptyState } from "./EmptyState";
10
+ export { Screen } from "./Screen";
11
+ export { Header } from "./Header";
12
+ export { Avatar } from "./Avatar";
13
+ export { TextField } from "./TextField";
14
+ export { Toggle } from "./Toggle";
15
+ export { Checkbox } from "./Checkbox";
16
+ export { Radio } from "./Radio";
17
+ export { Alert } from "./Alert";
18
+ export { Toast } from "./Toast";
19
+ export { Progress } from "./Progress";
20
+ export { Modal } from "./Modal";
21
+ export { ActionSheet } from "./ActionSheet";
22
+ export { BottomSheet } from "./BottomSheet";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * modal.styles — Modal の pure style resolver(styleRefs conformance 対応で Modal.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/modal.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/modal-conformance.test.ts が行う。
7
+ *
8
+ * - variant(confirmation/form/alert)は意味分類で style は 3 つとも共通(recipe と同じ)。
9
+ * props には受けるが style 解決では使わない(API 対称性のため interface には残す)。
10
+ * - overlay の黒 50% は token 外の literal(recipe description 参照。web も bg-black/50)。
11
+ * - elevation.overlay は iOS shadow* + Android elevation の複合 token のため、
12
+ * panelStyle 本体と分けて panelElevation で返す(Surface と同じ扱い)。
13
+ * - sizes はタブレット以上で効く maxWidth(モバイルは width 100% - overlay padding が先に効く)。
14
+ */
15
+ import type { ElevationStyle, FontWeightValue, NativeTheme, ThemeMode } from "../theme";
16
+ import type { SizeOf, VariantOf } from "../contracts/contract-types";
17
+ export type ModalVariant = VariantOf<"modal">;
18
+ export type ModalSize = SizeOf<"modal">;
19
+ /** size → panel の maxWidth(modal.recipe sizes の literal と 1:1)。 */
20
+ export declare const MODAL_MAX_WIDTH: Record<ModalSize, number>;
21
+ /** overlay の黒 50%(token 外 literal。recipe / web の bg-black/50 と同値)。 */
22
+ export declare const MODAL_OVERLAY_COLOR = "rgba(0,0,0,0.5)";
23
+ export interface ModalStyleProps {
24
+ /** 意味分類(style は共通)。default "confirmation"。 */
25
+ variant?: ModalVariant;
26
+ /** panel の maxWidth 段階。default "medium"。 */
27
+ size?: ModalSize;
28
+ }
29
+ export interface ModalStyle {
30
+ overlayStyle: {
31
+ flex: 1;
32
+ backgroundColor: string;
33
+ justifyContent: "center";
34
+ alignItems: "center";
35
+ padding: number;
36
+ };
37
+ panelStyle: {
38
+ backgroundColor: string;
39
+ borderRadius: number;
40
+ padding: number;
41
+ width: "100%";
42
+ maxWidth: number;
43
+ };
44
+ /** iOS shadow* + Android elevation の複合値。panelStyle と並べて spread する。 */
45
+ panelElevation: ElevationStyle;
46
+ titleStyle: {
47
+ fontSize: number;
48
+ fontWeight: FontWeightValue;
49
+ color: string;
50
+ };
51
+ bodyStyle: {
52
+ marginTop: number;
53
+ };
54
+ footerStyle: {
55
+ flexDirection: "row";
56
+ justifyContent: "flex-end";
57
+ gap: number;
58
+ marginTop: number;
59
+ };
60
+ }
61
+ /**
62
+ * size / mode → Modal style の解決(modal.recipe styleRefs の 1:1 写像)。
63
+ * variant は意味分類のみで style に影響しない(recipe の 3 variant が同値)。
64
+ */
65
+ export declare function resolveModalStyle(theme: NativeTheme, mode: ThemeMode, { size }?: ModalStyleProps): ModalStyle;
66
+ //# sourceMappingURL=modal.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/modal.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAExC,mEAAmE;AACnE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIrD,CAAC;AAEF,sEAAsE;AAEtE,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC,CAAC;QACR,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,QAAQ,CAAC;QACzB,UAAU,EAAE,QAAQ,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,sEAAsE;IACtE,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,eAAe,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,WAAW,EAAE;QACX,aAAa,EAAE,KAAK,CAAC;QACrB,cAAc,EAAE,UAAU,CAAC;QAC3B,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,EAAE,IAAe,EAAE,GAAE,eAAoB,GACxC,UAAU,CA+BZ"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * progress.styles — Progress の pure style resolver(styleRefs conformance 対応で Progress.tsx から分離)。
3
+ *
4
+ * react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
5
+ * 直接実行できる。recipes/app/progress.recipe.json(melta-contracts の styleRefs)との
6
+ * 機械照合は scripts/lib/progress-conformance.test.ts が行う。
7
+ *
8
+ * - track(高さ8 = web h-2)の中を fill が value%(determinate)または往復アニメ
9
+ * (indeterminate variant)で埋める。fill の幅は実装(Progress.tsx)が value から算出する
10
+ * (recipe は色と形のみ、recipe description)。
11
+ * - track の背景は semantic border-default → dark mode では dark 側から解決する。
12
+ * fill は primary.500 / status.success.base(mode 非依存)。
13
+ */
14
+ import type { NativeTheme, ThemeMode } from "../theme";
15
+ export type ProgressVariant = "primary" | "success" | "indeterminate";
16
+ /** track / fill の高さ(recipe の literal 8 = web h-2 の写像。token では無い raw px)。 */
17
+ export declare const PROGRESS_TRACK_HEIGHT = 8;
18
+ /** indeterminate variant の fill 幅比率(track の 40%。往復アニメ / reduce motion 時の静止幅)。 */
19
+ export declare const PROGRESS_INDETERMINATE_FILL_RATIO = 0.4;
20
+ /** 角丸キー(token キー。全 variant 共通 radius.full)。 */
21
+ export declare const PROGRESS_RADIUS: "full";
22
+ /** value の 0〜100 clamp(非有限は 0 に落とす)。determinate の幅・accessibilityValue.now の同源。 */
23
+ export declare function clampProgressValue(value: number): number;
24
+ /** slot 構成(progress.recipe 各 variant の trackStyle / fillStyle と 1:1)。 */
25
+ export interface ProgressStyles {
26
+ trackStyle: {
27
+ backgroundColor: string;
28
+ borderRadius: number;
29
+ height: number;
30
+ overflow: "hidden";
31
+ };
32
+ fillStyle: {
33
+ backgroundColor: string;
34
+ borderRadius: number;
35
+ height: number;
36
+ };
37
+ }
38
+ /**
39
+ * variant → 全 slot の style 解決(progress.recipe styleRefs の 1:1 写像)。
40
+ * - track: semantic border-default(mode 依存)。
41
+ * - fill: success は status.success.base、primary / indeterminate は primary.500(mode 非依存)。
42
+ */
43
+ export declare function resolveProgressStyles(theme: NativeTheme, mode: ThemeMode, variant: ProgressVariant): ProgressStyles;
44
+ //# sourceMappingURL=progress.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/progress.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAa,SAAS,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;AAEtE,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,iFAAiF;AACjF,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,+CAA+C;AAC/C,eAAO,MAAM,eAAe,QAAsC,CAAC;AAEnE,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,eAAe,GACvB,cAAc,CAgBhB"}