melta-app 0.1.0 → 0.2.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.
- package/README.md +31 -9
- package/THIRD_PARTY_LICENSES.md +9 -0
- package/lib/module/components/Card.js +1 -1
- package/lib/module/components/Screen.js +9 -6
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/avatar.styles.js +1 -1
- package/lib/module/components/safe-area-registry.js +32 -0
- package/lib/module/components/safe-area-registry.js.map +1 -0
- package/lib/module/contracts/contract-types.js +2 -2
- package/lib/module/contracts/contract-types.js.map +1 -1
- package/lib/module/icons/glyphs.js +13 -1
- package/lib/module/icons/glyphs.js.map +1 -1
- package/lib/module/primitives/Metric.js +1 -1
- package/lib/module/primitives/button.styles.js +1 -1
- package/lib/module/safe-area/index.js +27 -0
- package/lib/module/safe-area/index.js.map +1 -0
- package/lib/module/theme/native-theme.js +9 -3
- package/lib/module/theme/native-theme.js.map +1 -1
- package/lib/typescript/src/components/Card.d.ts +1 -1
- package/lib/typescript/src/components/Screen.d.ts +5 -4
- package/lib/typescript/src/components/Screen.d.ts.map +1 -1
- package/lib/typescript/src/components/safe-area-registry.d.ts +27 -0
- package/lib/typescript/src/components/safe-area-registry.d.ts.map +1 -0
- package/lib/typescript/src/contracts/contract-types.d.ts +2 -2
- package/lib/typescript/src/icons/glyphs.d.ts +12 -0
- package/lib/typescript/src/icons/glyphs.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts +3 -3
- package/lib/typescript/src/primitives/Metric.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Text.d.ts +2 -2
- package/lib/typescript/src/safe-area/index.d.ts +19 -0
- package/lib/typescript/src/safe-area/index.d.ts.map +1 -0
- package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/types.d.ts +2 -1
- package/lib/typescript/src/theme/types.d.ts.map +1 -1
- package/package.json +15 -3
- package/src/components/Card.tsx +1 -1
- package/src/components/Screen.tsx +11 -7
- package/src/components/avatar.styles.ts +1 -1
- package/src/components/safe-area-registry.ts +38 -0
- package/src/contracts/contract-types.ts +2 -2
- package/src/icons/glyphs.ts +3 -1
- package/src/primitives/Metric.tsx +3 -3
- package/src/primitives/button.styles.ts +1 -1
- package/src/safe-area/index.ts +28 -0
- package/src/theme/native-theme.ts +9 -3
- package/src/theme/types.ts +2 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Showcase / Live Catalog**: https://app.melta.tsubotax.com (Live Catalog は実 RN コンポーネントの web export。HTML 再現デモではない)
|
|
8
8
|
- **Web 版 showcase**: https://melta.tsubotax.com
|
|
9
9
|
|
|
10
|
-
D2I
|
|
10
|
+
D2I アプリが最初の adopter / dogfood。最初の実需は「活動記録をサマリーカードに焼いて外部シェア」機能。
|
|
11
11
|
|
|
12
12
|
## Install
|
|
13
13
|
|
|
@@ -23,11 +23,11 @@ import { ThemeProvider, Screen, Header, Card, Text, Button } from "melta-app";
|
|
|
23
23
|
export default function App() {
|
|
24
24
|
return (
|
|
25
25
|
<ThemeProvider>
|
|
26
|
-
<Screen variant="scroll" header={<Header title="
|
|
26
|
+
<Screen variant="scroll" header={<Header title="ダッシュボード" />}>
|
|
27
27
|
<Card>
|
|
28
|
-
<Text
|
|
28
|
+
<Text>東京プロジェクト</Text>
|
|
29
29
|
</Card>
|
|
30
|
-
<Button label="
|
|
30
|
+
<Button label="保存する" onPress={() => {}} />
|
|
31
31
|
</Screen>
|
|
32
32
|
</ThemeProvider>
|
|
33
33
|
);
|
|
@@ -39,7 +39,7 @@ export default function App() {
|
|
|
39
39
|
## 設計の核
|
|
40
40
|
|
|
41
41
|
- **契約は共有、実装は各最適**: tokens / 禁止ルール / component 契約は `melta-contracts`(JSON)が SSOT。melta-app に token は持たない(二重化を物理防止)。
|
|
42
|
-
- **公開 DS の純度を守る**: 汎用 UI プリミティブだけを置く。D2I 固有 UI
|
|
42
|
+
- **公開 DS の純度を守る**: 汎用 UI プリミティブだけを置く。D2I 固有 UI(アプリ固有の画面・機能)は **D2I 側**に置き、ここには混ぜない。
|
|
43
43
|
- **依存最小**: 初期は RN `StyleSheet` 固定(nativewind / unistyles 等の runtime styling lib を入れない)。Storybook RN も使わず自前カタログ。
|
|
44
44
|
|
|
45
45
|
## AI-Ready
|
|
@@ -174,21 +174,43 @@ import { Icon } from "melta-app/icons";
|
|
|
174
174
|
<Icon name="close" size="sm" color="text-muted" /> // 省略時は装飾扱い(a11y ツリーから除外)
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
グリフは Charcoal Icons(pixiv、Apache-2.0)の curated
|
|
177
|
+
グリフは Charcoal Icons(pixiv、Apache-2.0)の curated サブセット + Charcoal に無いグリフの
|
|
178
|
+
Material Symbols Rounded(Google、Apache-2.0)補完(`assets/icons/*.svg` →
|
|
178
179
|
`npm run generate:icons` で `src/icons/glyphs.ts` に codegen、commit 済みを配布)。
|
|
179
180
|
帰属表示は `THIRD_PARTY_LICENSES.md`。
|
|
180
181
|
|
|
182
|
+
### SafeArea の差し替え(`melta-app/safe-area`)
|
|
183
|
+
|
|
184
|
+
Screen の SafeArea は default で RN core の SafeAreaView(deprecated / iOS のみの最小対応、
|
|
185
|
+
依存ゼロ維持)。`react-native-safe-area-context` を使うアプリは subpath から一度有効化すると
|
|
186
|
+
Screen が context 版に切り替わり、RN 0.85+ の deprecation 警告も出なくなる:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
npx expo install react-native-safe-area-context
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
```tsx
|
|
193
|
+
// アプリの entry(Screen の初回 render より前)で一度だけ
|
|
194
|
+
import { enableSafeAreaContext } from "melta-app/safe-area";
|
|
195
|
+
enableSafeAreaContext();
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
⚠️ react-native-safe-area-context の SafeAreaView は祖先に `SafeAreaProvider` が必要
|
|
199
|
+
(React Navigation / Expo Router を使っていれば設置済みのことが多い。無い場合は root を
|
|
200
|
+
`<SafeAreaProvider>` で包むこと — 無いと警告は消えるが inset が効かない)。
|
|
201
|
+
|
|
181
202
|
## ステータス
|
|
182
203
|
|
|
183
204
|
- ✅ ライブラリ化(root=ライブラリ / example=カタログアプリ、peerDeps react + react-native、runtime deps ゼロ)
|
|
184
205
|
- ✅ `melta-contracts` を npm 依存として購読(recipes/app の styleRefs 同梱)
|
|
185
206
|
- ✅ conformance: 契約源 ↔ 生成メタ ↔ `__contract` 宣言の照合 + consumer テスト(契約 subset / token 実在 / contractVersion 同期)+ styleRefs conformance(全実装コンポーネント展開済み)+ RN mount smoke(light/dark × 全公開コンポーネント)
|
|
186
207
|
- ✅ ハーネス: design lint(CI `--max-warnings 0` + PostToolUse hook)/ drift 検査(README・catalog・allowlist 突合)/ installability ゲート(pack → install → import → typecheck)
|
|
187
|
-
- ✅ layout 6 個(Stack / Row / Screen / Header / Icon / Avatar)— dogfood 不足 1〜4 を解消、
|
|
188
|
-
-
|
|
208
|
+
- ✅ layout 6 個(Stack / Row / Screen / Header / Icon / Avatar)— dogfood 不足 1〜4 を解消、ProjectFeedScreen は公開 primitive だけで構成
|
|
209
|
+
- Screen の SafeArea は adapter registry 化済み: default は RN core SafeAreaView(依存ゼロ維持)、`melta-app/safe-area` の `enableSafeAreaContext()` で react-native-safe-area-context に差し替え可(optional peer)
|
|
189
210
|
- ✅ form / feedback 10 個(TextField / Toggle / Checkbox / Radio / Alert / Toast / Progress / Modal / ActionSheet / BottomSheet)— checkbox / radio は Pressable + 描画(svg 非依存)、ActionSheet / BottomSheet は select / dropdown の adapted 変換先の受け皿
|
|
190
211
|
- ✅ showcase(https://app.melta.tsubotax.com — melta-ui 様式シェル + 実 RN カタログの Live 埋め込み。表・統計は契約からビルド時生成)
|
|
191
|
-
-
|
|
212
|
+
- ✅ [npm publish(0.1.0)](https://www.npmjs.com/package/melta-app)
|
|
213
|
+
- ⬜ React Native Directory 登録([PR #2606](https://github.com/react-native-community/directory/pull/2606) レビュー待ち)
|
|
192
214
|
|
|
193
215
|
詳細は D2I リポの `.team/specs/requirements-melta-app.md`。
|
|
194
216
|
|
package/THIRD_PARTY_LICENSES.md
CHANGED
|
@@ -13,6 +13,15 @@ melta-app は以下のサードパーティ製アイコンを同梱していま
|
|
|
13
13
|
- **Location**: repository source: `assets/icons/`(melta-ui からの curated サブセット SVG。npm tarball には含まない)/ packaged output: `src/icons/glyphs.ts` + `lib/module/icons/`(SVG から codegen した path データ、これが配布物)
|
|
14
14
|
- **Modifications**: 単色 tint 契約のため fill が currentColor でない path(白抜き backdrop)を codegen 時に除外(scripts/generate-icons.ts)
|
|
15
15
|
|
|
16
|
+
## Material Symbols (Rounded)
|
|
17
|
+
|
|
18
|
+
- **License**: Apache License, Version 2.0(下記の条文は Charcoal Icons と共通)
|
|
19
|
+
- **Copyright**: Copyright Google LLC
|
|
20
|
+
- **Source**: https://github.com/google/material-design-icons
|
|
21
|
+
- **Location**: `assets/icons/Map.svg` / `assets/icons/Route.svg`(Charcoal に存在しないグリフの補完。packaged output は Charcoal と同じ `src/icons/glyphs.ts` + `lib/module/icons/`)
|
|
22
|
+
- **Origin**: `symbols/web/{map,route}/materialsymbolsrounded/{map,route}_24px.svg`(google/material-design-icons、2026-07-12 取得)
|
|
23
|
+
- **Modifications**: viewBox "0 -960 960 960" を "0 0 24 24" に affine 座標変換(x/40, (y+960)/40、小数3桁丸め)+ fill を currentColor に変更し melta の SVG 形式(path のみ)に整形
|
|
24
|
+
|
|
16
25
|
### Apache License, Version 2.0
|
|
17
26
|
|
|
18
27
|
```
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* focus-within は RN 非サポートとして Phase1 明示 drop(§2)。
|
|
13
13
|
* - 型で action/link は onPress 必須を強制(§4 の DU 精神。無言で非対話に落ちる事故を防ぐ)。
|
|
14
14
|
* - Card は Image/Metric に依存しない(§1)。media/header/footer/children に呼び出し側が差し込む。
|
|
15
|
-
*
|
|
15
|
+
* 呼び出し側(例: D2I)は用途に応じて slot に Image+Metric を compose する。
|
|
16
16
|
* - media variant は overflow:hidden で角丸に画像をクリップし、body だけにパディング(contract と整合)。
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -10,14 +10,16 @@
|
|
|
10
10
|
* - padding は spacing token キー限定 | "none"(default "4")。
|
|
11
11
|
* - 決定ロジックは pure resolver(screen.styles.ts)に分離 — recipe との機械照合対象。
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* SafeArea は registry(safe-area-registry.ts)で解決する。default は RN core の
|
|
14
|
+
* SafeAreaView(deprecated / iOS のみの最小対応)で依存ゼロを維持しつつ、
|
|
15
|
+
* react-native-safe-area-context 利用者は subpath "melta-app/safe-area" の
|
|
16
|
+
* enableSafeAreaContext() で差し替えられる(rally-nav dogfood 由来、RN 0.85 の
|
|
17
|
+
* core SafeAreaView deprecation 警告対応)。
|
|
17
18
|
*/
|
|
18
19
|
|
|
19
20
|
import { useMemo } from "react";
|
|
20
|
-
import {
|
|
21
|
+
import { ScrollView, View } from "react-native";
|
|
22
|
+
import { resolveSafeAreaView } from "./safe-area-registry.js";
|
|
21
23
|
import { useTheme } from "../theme/index.js";
|
|
22
24
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
23
25
|
import { resolveScreenStyle } from "./screen.styles.js";
|
|
@@ -41,7 +43,8 @@ export function Screen({
|
|
|
41
43
|
variant,
|
|
42
44
|
padding
|
|
43
45
|
}), [theme, mode, variant, padding]);
|
|
44
|
-
|
|
46
|
+
const SafeArea = resolveSafeAreaView();
|
|
47
|
+
return /*#__PURE__*/_jsxs(SafeArea, {
|
|
45
48
|
style: [safeAreaStyle, style],
|
|
46
49
|
testID: testID,
|
|
47
50
|
children: [header, variant === "scroll" ? /*#__PURE__*/_jsx(ScrollView, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","
|
|
1
|
+
{"version":3,"names":["useMemo","ScrollView","View","resolveSafeAreaView","useTheme","CONTRACTS","resolveScreenStyle","jsx","_jsx","jsxs","_jsxs","Screen","variant","padding","header","style","testID","children","theme","mode","safeAreaStyle","contentStyle","SafeArea","contentContainerStyle","__contract","screen"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAC/E,SAASC,mBAAmB,QAAQ,yBAAsB;AAC1D,SAASC,QAAQ,QAAQ,mBAAU;AACnC,SAASC,SAAS,QAAwB,gCAA6B;AACvE,SAASC,kBAAkB,QAA8C,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAc3F,OAAO,SAASC,MAAMA,CAAC;EACrBC,OAAO,GAAG,QAAQ;EAClBC,OAAO,GAAG,GAAG;EACbC,MAAM;EACNC,KAAK;EACLC,MAAM;EACNC;AACW,CAAC,EAAE;EACd,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGf,QAAQ,CAAC,CAAC;EAElC,MAAM;IAAEgB,aAAa;IAAEC;EAAa,CAAC,GAAGrB,OAAO,CAC7C,MAAMM,kBAAkB,CAACY,KAAK,EAAEC,IAAI,EAAE;IAAEP,OAAO;IAAEC;EAAQ,CAAC,CAAC,EAC3D,CAACK,KAAK,EAAEC,IAAI,EAAEP,OAAO,EAAEC,OAAO,CAChC,CAAC;EAED,MAAMS,QAAQ,GAAGnB,mBAAmB,CAAC,CAAC;EAEtC,oBACEO,KAAA,CAACY,QAAQ;IAACP,KAAK,EAAE,CAACK,aAAa,EAAEL,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAC,QAAA,GACrDH,MAAM,EACNF,OAAO,KAAK,QAAQ,gBACnBJ,IAAA,CAACP,UAAU;MAACsB,qBAAqB,EAAEF,YAAa;MAAAJ,QAAA,EAAEA;IAAQ,CAAa,CAAC,gBAExET,IAAA,CAACN,IAAI;MAACa,KAAK,EAAEM,YAAa;MAAAJ,QAAA,EAAEA;IAAQ,CAAO,CAC5C;EAAA,CACO,CAAC;AAEf;AAEAN,MAAM,CAACa,UAAU,GAAGnB,SAAS,CAACoB,MAAM","ignoreList":[]}
|
|
@@ -63,7 +63,7 @@ export function resolveAvatarStyle(theme, mode, variant, size) {
|
|
|
63
63
|
})
|
|
64
64
|
},
|
|
65
65
|
text: {
|
|
66
|
-
color: theme.color.primary["
|
|
66
|
+
color: theme.color.primary["600"],
|
|
67
67
|
fontWeight: theme.typography.fontWeight.medium,
|
|
68
68
|
fontSize: theme.typography.fontSize[s.fontSize].fontSize
|
|
69
69
|
},
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* safe-area-registry — Screen が使う SafeAreaView 実装の差し替え点(adapter registry)。
|
|
5
|
+
*
|
|
6
|
+
* 本体エントリは依存ゼロ方針(P1)のため、default は RN core の SafeAreaView
|
|
7
|
+
* (deprecated / iOS のみの最小対応)。react-native-safe-area-context を使う利用者は
|
|
8
|
+
* subpath "melta-app/safe-area" の enableSafeAreaContext() をアプリ起動時に一度呼ぶと
|
|
9
|
+
* Screen の SafeArea が差し替わる(optional peer の前例 = Icon × react-native-svg。
|
|
10
|
+
* ただし Screen は本体エントリ所属のため subpath 分離ではなく registry で切り替える)。
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ RN 0.85 は react-native の SafeAreaView プロパティへの getter アクセス時点で
|
|
13
|
+
* deprecation 警告を出す。adapter 登録済みの利用者に警告を出さないため、core への
|
|
14
|
+
* アクセスは「未登録のまま Screen が render された時」まで遅延させる。
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import * as ReactNative from "react-native";
|
|
18
|
+
|
|
19
|
+
/** Screen が SafeArea 実装に要求する最小 props(core / safe-area-context 両対応)。 */
|
|
20
|
+
|
|
21
|
+
let registered = null;
|
|
22
|
+
|
|
23
|
+
/** SafeArea 実装を登録する(Screen の初回 render より前に呼ぶ)。 */
|
|
24
|
+
export function setSafeAreaView(component) {
|
|
25
|
+
registered = component;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** 登録済み実装、無ければ RN core SafeAreaView(ここで初めて getter に触れる)。 */
|
|
29
|
+
export function resolveSafeAreaView() {
|
|
30
|
+
return registered ?? ReactNative.SafeAreaView;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=safe-area-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReactNative","registered","setSafeAreaView","component","resolveSafeAreaView","SafeAreaView"],"sourceRoot":"../../../src","sources":["components/safe-area-registry.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAO,KAAKA,WAAW,MAAM,cAAc;;AAE3C;;AASA,IAAIC,UAAmC,GAAG,IAAI;;AAE9C;AACA,OAAO,SAASC,eAAeA,CAACC,SAA2B,EAAQ;EACjEF,UAAU,GAAGE,SAAS;AACxB;;AAEA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAqB;EACtD,OAAOH,UAAU,IAAKD,WAAW,CAACK,YAAiC;AACrE","ignoreList":[]}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export const CONTRACTS = {
|
|
10
10
|
text: {
|
|
11
11
|
id: "text",
|
|
12
|
-
version: "0.
|
|
13
|
-
variants: ["xs", "sm", "base", "lg", "xl", "2xl", "3xl"],
|
|
12
|
+
version: "0.2.0",
|
|
13
|
+
variants: ["xxs", "xs", "sm", "base", "lg", "xl", "2xl", "3xl"],
|
|
14
14
|
sizes: [],
|
|
15
15
|
states: ["default"]
|
|
16
16
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CONTRACTS","text","id","version","variants","sizes","states","button","tag","card","image","surface","skeleton","emptyState","metric","stack","row","screen","header","icon","avatar","textfield","toggle","checkbox","radio","alert","toast","progress","modal","actionSheet","bottomSheet"],"sourceRoot":"../../../src","sources":["contracts/contract-types.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA;;AASA,OAAO,MAAMA,SAAS,GAAG;EACvBC,IAAI,EAAE;IACJC,EAAE,EAAE,MAAM;IACVC,OAAO,EAAE,OAAO;IAChBC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"names":["CONTRACTS","text","id","version","variants","sizes","states","button","tag","card","image","surface","skeleton","emptyState","metric","stack","row","screen","header","icon","avatar","textfield","toggle","checkbox","radio","alert","toast","progress","modal","actionSheet","bottomSheet"],"sourceRoot":"../../../src","sources":["contracts/contract-types.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
// ⚠️ 自動生成ファイル — 手で編集しないこと。
|
|
4
|
-
// 生成元: scripts/generate-icons.ts(入力 assets/icons/*.svg = Charcoal Icons
|
|
4
|
+
// 生成元: scripts/generate-icons.ts(入力 assets/icons/*.svg = Charcoal Icons + Material Symbols Rounded 補完, Apache-2.0)
|
|
5
5
|
// 帰属表示は THIRD_PARTY_LICENSES.md を参照。
|
|
6
6
|
|
|
7
7
|
const GLYPHS_SOURCE = {
|
|
@@ -137,6 +137,12 @@ const GLYPHS_SOURCE = {
|
|
|
137
137
|
d: "M13.418 9.166c.284.18.547.391.784.63.27.27.41.644.386 1.026-.023.32-.16.62-.386.847a1.366 1.366 0 01-1.873 0 2 2 0 00-2.827 0L5.246 15.92a2 2 0 002.83 2.83l2.516-2.52a.333.333 0 01.363-.073 5.612 5.612 0 002.133.413h.134a.333.333 0 01.236.57l-3.5 3.5A4.636 4.636 0 016.664 22a4.666 4.666 0 01-3.3-7.962l4.24-4.242a4.666 4.666 0 015.816-.63z"
|
|
138
138
|
}]
|
|
139
139
|
},
|
|
140
|
+
"map": {
|
|
141
|
+
viewBox: "0 0 24 24",
|
|
142
|
+
paths: [{
|
|
143
|
+
d: "M14.35 20.775 l-5.35 -1.875 l-4.65 1.8 q-0.25 0.1 -0.488 0.063 T3.425 20.6 q-0.2 -0.125 -0.312 -0.337 T3 19.775 v-14.025 q0 -0.325 0.188 -0.575 t0.513 -0.375 l4.65 -1.575 q0.15 -0.05 0.313 -0.075 t0.338 -0.025 q0.175 0 0.338 0.025 t0.313 0.075 l5.35 1.875 l4.65 -1.8 q0.25 -0.1 0.488 -0.062 T20.575 3.4 q0.2 0.125 0.313 0.338 T21 4.225 v14.025 q0 0.325 -0.187 0.575 T20.3 19.2 l-4.65 1.575 q-0.15 0.05 -0.312 0.075 t-0.337 0.025 q-0.175 0 -0.337 -0.025 t-0.312 -0.075 Z m-0.35 -2.225 v-11.7 l-4 -1.4 v11.7 l4 1.4 Z m2 0 l3 -1 v-11.85 l-3 1.15 v11.7 Z m-11 -0.25 l3 -1.15 v-11.7 l-3 1 v11.85 Z m11 -11.45 v11.7 v-11.7 Z m-8 -1.4 v11.7 v-11.7 Z"
|
|
144
|
+
}]
|
|
145
|
+
},
|
|
140
146
|
"menu": {
|
|
141
147
|
viewBox: "0 0 24 24",
|
|
142
148
|
paths: [{
|
|
@@ -180,6 +186,12 @@ const GLYPHS_SOURCE = {
|
|
|
180
186
|
d: "M12 7a6 6 0 106 6 1 1 0 112 0 8 8 0 11-8-8h1.42l-1.7-2.125a1 1 0 111.56-1.25l3 3.75a1 1 0 010 1.25l-3 3.75a1 1 0 01-1.56-1.25L13.42 7H12z"
|
|
181
187
|
}]
|
|
182
188
|
},
|
|
189
|
+
"route": {
|
|
190
|
+
viewBox: "0 0 24 24",
|
|
191
|
+
paths: [{
|
|
192
|
+
d: "M9 21 q-1.65 0 -2.825 -1.175 t-1.175 -2.825 v-8.175 q-0.875 -0.325 -1.437 -1.088 T3 6 q0 -1.25 0.875 -2.125 t2.125 -0.875 q1.25 0 2.125 0.875 t0.875 2.125 q0 0.975 -0.562 1.738 T7 8.825 v8.175 q0 0.825 0.588 1.413 T9 19 q0.825 0 1.413 -0.587 T11 17 v-10 q0 -1.65 1.175 -2.825 t2.825 -1.175 q1.65 0 2.825 1.175 t1.175 2.825 v8.175 q0.875 0.325 1.438 1.088 T21 18 q0 1.25 -0.875 2.125 t-2.125 0.875 q-1.25 0 -2.125 -0.875 t-0.875 -2.125 q0 -0.975 0.563 -1.75 t1.438 -1.075 v-8.175 q0 -0.825 -0.587 -1.412 T15 5 q-0.825 0 -1.412 0.588 T13 7 v10 q0 1.65 -1.175 2.825 t-2.825 1.175 Z M6 7 q0.425 0 0.713 -0.288 T7 6 q0 -0.425 -0.288 -0.712 T6 5 q-0.425 0 -0.712 0.288 T5 6 q0 0.425 0.288 0.713 T6 7 Z m12 12 q0.425 0 0.713 -0.288 T19 18 q0 -0.425 -0.288 -0.712 T18 17 q-0.425 0 -0.712 0.288 T17 18 q0 0.425 0.288 0.713 T18 19 Z M6 6 Z m12 12 Z"
|
|
193
|
+
}]
|
|
194
|
+
},
|
|
183
195
|
"search": {
|
|
184
196
|
viewBox: "0 0 24 24",
|
|
185
197
|
paths: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GLYPHS_SOURCE","viewBox","paths","d","fillRule","GLYPHS","ICON_NAMES","Object","keys"],"sourceRoot":"../../../src","sources":["icons/glyphs.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["GLYPHS_SOURCE","viewBox","paths","d","fillRule","GLYPHS","ICON_NAMES","Object","keys"],"sourceRoot":"../../../src","sources":["icons/glyphs.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Metric — 数値 + 単位 + ラベルの指標表示 primitive(設計書 §1、意思決定3)。
|
|
5
|
-
* contract: metric(app
|
|
5
|
+
* contract: metric(app 先行定義)。カード内の主要指標表示に使う(進捗率 / 予算 / 残日数 等)。
|
|
6
6
|
*
|
|
7
7
|
* - value は tabular(fontVariant:["tabular-nums"])で桁揃え。Text primitive は fontVariant を
|
|
8
8
|
* 公開しないので、value は RN Text を直接使う。
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* melta-app/safe-area — react-native-safe-area-context adapter の subpath エントリ。
|
|
5
|
+
*
|
|
6
|
+
* 本体エントリ("melta-app")から分離している理由: このファイルだけが
|
|
7
|
+
* react-native-safe-area-context(optional peerDependency)に依存するため。
|
|
8
|
+
* Metro は import を静的に解決するので、本体エントリに含めると未 install の
|
|
9
|
+
* 利用者がバンドルできなくなる(分離の前例 = melta-app/icons × react-native-svg)。
|
|
10
|
+
*
|
|
11
|
+
* 使い方: アプリの entry で一度呼ぶ(Screen の初回 render より前)。
|
|
12
|
+
*
|
|
13
|
+
* import { enableSafeAreaContext } from "melta-app/safe-area";
|
|
14
|
+
* enableSafeAreaContext();
|
|
15
|
+
*
|
|
16
|
+
* これで Screen の SafeArea が react-native-safe-area-context の SafeAreaView に
|
|
17
|
+
* 切り替わり、RN core SafeAreaView の deprecation 警告(RN 0.85+)も出なくなる。
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { SafeAreaView } from "react-native-safe-area-context";
|
|
21
|
+
import { setSafeAreaView } from "../components/safe-area-registry.js";
|
|
22
|
+
|
|
23
|
+
/** Screen の SafeArea を react-native-safe-area-context に切り替える。 */
|
|
24
|
+
export function enableSafeAreaContext() {
|
|
25
|
+
setSafeAreaView(SafeAreaView);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SafeAreaView","setSafeAreaView","enableSafeAreaContext"],"sourceRoot":"../../../src","sources":["safe-area/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,QAAQ,gCAAgC;AAC7D,SAASC,eAAe,QAAQ,qCAAkC;;AAElE;AACA,OAAO,SAASC,qBAAqBA,CAAA,EAAS;EAC5CD,eAAe,CAACD,YAAY,CAAC;AAC/B","ignoreList":[]}
|
|
@@ -33,6 +33,7 @@ export const nativeTheme = {
|
|
|
33
33
|
"border-strong": "#cbd5e1",
|
|
34
34
|
"input-bg": "#ffffff",
|
|
35
35
|
"input-border": "#cbd5e1",
|
|
36
|
+
"text-accent": "#2b70ef",
|
|
36
37
|
"text-on-accent": "#ffffff"
|
|
37
38
|
},
|
|
38
39
|
"dark": {
|
|
@@ -47,6 +48,7 @@ export const nativeTheme = {
|
|
|
47
48
|
"border-strong": "#475569",
|
|
48
49
|
"input-bg": "#0f172a",
|
|
49
50
|
"input-border": "#475569",
|
|
51
|
+
"text-accent": "#6492ff",
|
|
50
52
|
"text-on-accent": "#ffffff"
|
|
51
53
|
}
|
|
52
54
|
},
|
|
@@ -66,10 +68,10 @@ export const nativeTheme = {
|
|
|
66
68
|
"textDark": "#fcd34d"
|
|
67
69
|
},
|
|
68
70
|
"danger": {
|
|
69
|
-
"base": "#
|
|
71
|
+
"base": "#dc2626",
|
|
70
72
|
"subtleLight": "#fef2f2",
|
|
71
|
-
"textLight": "#
|
|
72
|
-
"subtleDark": "rgba(
|
|
73
|
+
"textLight": "#b91c1c",
|
|
74
|
+
"subtleDark": "rgba(220,38,38,0.12)",
|
|
73
75
|
"textDark": "#fca5a5"
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -77,6 +79,10 @@ export const nativeTheme = {
|
|
|
77
79
|
"typography": {
|
|
78
80
|
"fontFamily": {},
|
|
79
81
|
"fontSize": {
|
|
82
|
+
"xxs": {
|
|
83
|
+
"fontSize": 10,
|
|
84
|
+
"lineHeight": 14
|
|
85
|
+
},
|
|
80
86
|
"xs": {
|
|
81
87
|
"fontSize": 13,
|
|
82
88
|
"lineHeight": 18
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nativeTheme"],"sourceRoot":"../../../src","sources":["theme/native-theme.ts"],"mappings":";;AAAA;AACA;AACA;;AAIA,OAAO,MAAMA,WAAwB,GAAG;EACtC,OAAO,EAAE;IACP,SAAS,EAAE;MACT,IAAI,EAAE,SAAS;MACf,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE;IACT,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE;MACV,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,SAAS;QAC1B,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE;MACpB,CAAC;MACD,MAAM,EAAE;QACN,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,SAAS;QAC1B,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE;MACpB;IACF,CAAC;IACD,QAAQ,EAAE;MACR,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd,CAAC;MACD,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd,CAAC;MACD,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd;IACF;EACF,CAAC;EACD,YAAY,EAAE;IACZ,YAAY,EAAE,CAAC,CAAC;IAChB,UAAU,EAAE;MACV,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,MAAM,EAAE;QACN,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB;IACF,CAAC;IACD,YAAY,EAAE;MACZ,QAAQ,EAAE,KAAK;MACf,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE;IACV,CAAC;IACD,oBAAoB,EAAE;MACpB,SAAS,EAAE,IAAI;MACf,MAAM,EAAE;IACV;EACF,CAAC;EACD,SAAS,EAAE;IACT,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE;EACR,CAAC;EACD,QAAQ,EAAE;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,MAAM,EAAE;EACV,CAAC;EACD,WAAW,EAAE;IACX,MAAM,EAAE;MACN,aAAa,EAAE,SAAS;MACxB,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,CAAC;MAClB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,IAAI,EAAE;MACJ,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,IAAI;MACrB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,IAAI,EAAE;MACJ,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,GAAG;MACpB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,SAAS,EAAE;MACT,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,GAAG;MACpB,cAAc,EAAE,EAAE;MAClB,WAAW,EAAE;IACf;EACF,CAAC;EACD,QAAQ,EAAE;IACR,UAAU,EAAE;MACV,MAAM,EAAE,GAAG;MACX,QAAQ,EAAE,GAAG;MACb,MAAM,EAAE;IACV,CAAC;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,CACT,GAAG,EACH,CAAC,EACD,GAAG,EACH,CAAC,CACF;MACD,IAAI,EAAE,CACJ,GAAG,EACH,CAAC,EACD,CAAC,EACD,CAAC,CACF;MACD,KAAK,EAAE,CACL,CAAC,EACD,CAAC,EACD,GAAG,EACH,CAAC;IAEL;EACF,CAAC;EACD,QAAQ,EAAE;IACR,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["nativeTheme"],"sourceRoot":"../../../src","sources":["theme/native-theme.ts"],"mappings":";;AAAA;AACA;AACA;;AAIA,OAAO,MAAMA,WAAwB,GAAG;EACtC,OAAO,EAAE;IACP,SAAS,EAAE;MACT,IAAI,EAAE,SAAS;MACf,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE;IACT,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE;MACV,OAAO,EAAE;QACP,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,SAAS;QAC1B,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,SAAS;QACzB,aAAa,EAAE,SAAS;QACxB,gBAAgB,EAAE;MACpB,CAAC;MACD,MAAM,EAAE;QACN,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,SAAS;QAC1B,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,SAAS;QACzB,aAAa,EAAE,SAAS;QACxB,gBAAgB,EAAE;MACpB;IACF,CAAC;IACD,QAAQ,EAAE;MACR,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd,CAAC;MACD,SAAS,EAAE;QACT,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd,CAAC;MACD,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,SAAS;QACxB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,sBAAsB;QACpC,UAAU,EAAE;MACd;IACF;EACF,CAAC;EACD,YAAY,EAAE;IACZ,YAAY,EAAE,CAAC,CAAC;IAChB,UAAU,EAAE;MACV,KAAK,EAAE;QACL,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,MAAM,EAAE;QACN,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB,CAAC;MACD,KAAK,EAAE;QACL,UAAU,EAAE,EAAE;QACd,YAAY,EAAE;MAChB;IACF,CAAC;IACD,YAAY,EAAE;MACZ,QAAQ,EAAE,KAAK;MACf,QAAQ,EAAE,KAAK;MACf,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE;IACV,CAAC;IACD,oBAAoB,EAAE;MACpB,SAAS,EAAE,IAAI;MACf,MAAM,EAAE;IACV;EACF,CAAC;EACD,SAAS,EAAE;IACT,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE;EACR,CAAC;EACD,QAAQ,EAAE;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,MAAM,EAAE;EACV,CAAC;EACD,WAAW,EAAE;IACX,MAAM,EAAE;MACN,aAAa,EAAE,SAAS;MACxB,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,CAAC;MAClB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,IAAI,EAAE;MACJ,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,IAAI;MACrB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,IAAI,EAAE;MACJ,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,GAAG;MACpB,cAAc,EAAE,CAAC;MACjB,WAAW,EAAE;IACf,CAAC;IACD,SAAS,EAAE;MACT,aAAa,EAAE,cAAc;MAC7B,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;MACZ,CAAC;MACD,eAAe,EAAE,GAAG;MACpB,cAAc,EAAE,EAAE;MAClB,WAAW,EAAE;IACf;EACF,CAAC;EACD,QAAQ,EAAE;IACR,UAAU,EAAE;MACV,MAAM,EAAE,GAAG;MACX,QAAQ,EAAE,GAAG;MACb,MAAM,EAAE;IACV,CAAC;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,CACT,GAAG,EACH,CAAC,EACD,GAAG,EACH,CAAC,CACF;MACD,IAAI,EAAE,CACJ,GAAG,EACH,CAAC,EACD,CAAC,EACD,CAAC,CACF;MACD,KAAK,EAAE,CACL,CAAC,EACD,CAAC,EACD,GAAG,EACH,CAAC;IAEL;EACF,CAAC;EACD,QAAQ,EAAE;IACR,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* focus-within は RN 非サポートとして Phase1 明示 drop(§2)。
|
|
11
11
|
* - 型で action/link は onPress 必須を強制(§4 の DU 精神。無言で非対話に落ちる事故を防ぐ)。
|
|
12
12
|
* - Card は Image/Metric に依存しない(§1)。media/header/footer/children に呼び出し側が差し込む。
|
|
13
|
-
*
|
|
13
|
+
* 呼び出し側(例: D2I)は用途に応じて slot に Image+Metric を compose する。
|
|
14
14
|
* - media variant は overflow:hidden で角丸に画像をクリップし、body だけにパディング(contract と整合)。
|
|
15
15
|
*/
|
|
16
16
|
import type { ReactNode } from "react";
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* - padding は spacing token キー限定 | "none"(default "4")。
|
|
9
9
|
* - 決定ロジックは pure resolver(screen.styles.ts)に分離 — recipe との機械照合対象。
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* SafeArea は registry(safe-area-registry.ts)で解決する。default は RN core の
|
|
12
|
+
* SafeAreaView(deprecated / iOS のみの最小対応)で依存ゼロを維持しつつ、
|
|
13
|
+
* react-native-safe-area-context 利用者は subpath "melta-app/safe-area" の
|
|
14
|
+
* enableSafeAreaContext() で差し替えられる(rally-nav dogfood 由来、RN 0.85 の
|
|
15
|
+
* core SafeAreaView deprecation 警告対応)。
|
|
15
16
|
*/
|
|
16
17
|
import { type ReactNode } from "react";
|
|
17
18
|
import { type StyleProp, type ViewStyle } from "react-native";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../../src/components/Screen.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../../src/components/Screen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGhF,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAsB,KAAK,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAE3F,UAAU,WAAW;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,kEAAkE;IAClE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,EACrB,OAAkB,EAClB,OAAa,EACb,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,WAAW,2CAoBb;yBA3Be,MAAM"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* safe-area-registry — Screen が使う SafeAreaView 実装の差し替え点(adapter registry)。
|
|
3
|
+
*
|
|
4
|
+
* 本体エントリは依存ゼロ方針(P1)のため、default は RN core の SafeAreaView
|
|
5
|
+
* (deprecated / iOS のみの最小対応)。react-native-safe-area-context を使う利用者は
|
|
6
|
+
* subpath "melta-app/safe-area" の enableSafeAreaContext() をアプリ起動時に一度呼ぶと
|
|
7
|
+
* Screen の SafeArea が差し替わる(optional peer の前例 = Icon × react-native-svg。
|
|
8
|
+
* ただし Screen は本体エントリ所属のため subpath 分離ではなく registry で切り替える)。
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ RN 0.85 は react-native の SafeAreaView プロパティへの getter アクセス時点で
|
|
11
|
+
* deprecation 警告を出す。adapter 登録済みの利用者に警告を出さないため、core への
|
|
12
|
+
* アクセスは「未登録のまま Screen が render された時」まで遅延させる。
|
|
13
|
+
*/
|
|
14
|
+
import type { ComponentType, ReactNode } from "react";
|
|
15
|
+
import type { StyleProp, ViewStyle } from "react-native";
|
|
16
|
+
/** Screen が SafeArea 実装に要求する最小 props(core / safe-area-context 両対応)。 */
|
|
17
|
+
export interface SafeAreaViewLikeProps {
|
|
18
|
+
style?: StyleProp<ViewStyle>;
|
|
19
|
+
testID?: string;
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export type SafeAreaViewLike = ComponentType<SafeAreaViewLikeProps>;
|
|
23
|
+
/** SafeArea 実装を登録する(Screen の初回 render より前に呼ぶ)。 */
|
|
24
|
+
export declare function setSafeAreaView(component: SafeAreaViewLike): void;
|
|
25
|
+
/** 登録済み実装、無ければ RN core SafeAreaView(ここで初めて getter に触れる)。 */
|
|
26
|
+
export declare function resolveSafeAreaView(): SafeAreaViewLike;
|
|
27
|
+
//# sourceMappingURL=safe-area-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-area-registry.d.ts","sourceRoot":"","sources":["../../../../src/components/safe-area-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAIpE,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAEjE;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD"}
|
|
@@ -9,8 +9,8 @@ export interface ContractShape {
|
|
|
9
9
|
export declare const CONTRACTS: {
|
|
10
10
|
readonly text: {
|
|
11
11
|
readonly id: "text";
|
|
12
|
-
readonly version: "0.
|
|
13
|
-
readonly variants: readonly ["xs", "sm", "base", "lg", "xl", "2xl", "3xl"];
|
|
12
|
+
readonly version: "0.2.0";
|
|
13
|
+
readonly variants: readonly ["xxs", "xs", "sm", "base", "lg", "xl", "2xl", "3xl"];
|
|
14
14
|
readonly sizes: readonly [];
|
|
15
15
|
readonly states: readonly ["default"];
|
|
16
16
|
};
|
|
@@ -138,6 +138,12 @@ declare const GLYPHS_SOURCE: {
|
|
|
138
138
|
readonly d: "M13.418 9.166c.284.18.547.391.784.63.27.27.41.644.386 1.026-.023.32-.16.62-.386.847a1.366 1.366 0 01-1.873 0 2 2 0 00-2.827 0L5.246 15.92a2 2 0 002.83 2.83l2.516-2.52a.333.333 0 01.363-.073 5.612 5.612 0 002.133.413h.134a.333.333 0 01.236.57l-3.5 3.5A4.636 4.636 0 016.664 22a4.666 4.666 0 01-3.3-7.962l4.24-4.242a4.666 4.666 0 015.816-.63z";
|
|
139
139
|
}];
|
|
140
140
|
};
|
|
141
|
+
readonly map: {
|
|
142
|
+
readonly viewBox: "0 0 24 24";
|
|
143
|
+
readonly paths: readonly [{
|
|
144
|
+
readonly d: "M14.35 20.775 l-5.35 -1.875 l-4.65 1.8 q-0.25 0.1 -0.488 0.063 T3.425 20.6 q-0.2 -0.125 -0.312 -0.337 T3 19.775 v-14.025 q0 -0.325 0.188 -0.575 t0.513 -0.375 l4.65 -1.575 q0.15 -0.05 0.313 -0.075 t0.338 -0.025 q0.175 0 0.338 0.025 t0.313 0.075 l5.35 1.875 l4.65 -1.8 q0.25 -0.1 0.488 -0.062 T20.575 3.4 q0.2 0.125 0.313 0.338 T21 4.225 v14.025 q0 0.325 -0.187 0.575 T20.3 19.2 l-4.65 1.575 q-0.15 0.05 -0.312 0.075 t-0.337 0.025 q-0.175 0 -0.337 -0.025 t-0.312 -0.075 Z m-0.35 -2.225 v-11.7 l-4 -1.4 v11.7 l4 1.4 Z m2 0 l3 -1 v-11.85 l-3 1.15 v11.7 Z m-11 -0.25 l3 -1.15 v-11.7 l-3 1 v11.85 Z m11 -11.45 v11.7 v-11.7 Z m-8 -1.4 v11.7 v-11.7 Z";
|
|
145
|
+
}];
|
|
146
|
+
};
|
|
141
147
|
readonly menu: {
|
|
142
148
|
readonly viewBox: "0 0 24 24";
|
|
143
149
|
readonly paths: readonly [{
|
|
@@ -181,6 +187,12 @@ declare const GLYPHS_SOURCE: {
|
|
|
181
187
|
readonly d: "M12 7a6 6 0 106 6 1 1 0 112 0 8 8 0 11-8-8h1.42l-1.7-2.125a1 1 0 111.56-1.25l3 3.75a1 1 0 010 1.25l-3 3.75a1 1 0 01-1.56-1.25L13.42 7H12z";
|
|
182
188
|
}];
|
|
183
189
|
};
|
|
190
|
+
readonly route: {
|
|
191
|
+
readonly viewBox: "0 0 24 24";
|
|
192
|
+
readonly paths: readonly [{
|
|
193
|
+
readonly d: "M9 21 q-1.65 0 -2.825 -1.175 t-1.175 -2.825 v-8.175 q-0.875 -0.325 -1.437 -1.088 T3 6 q0 -1.25 0.875 -2.125 t2.125 -0.875 q1.25 0 2.125 0.875 t0.875 2.125 q0 0.975 -0.562 1.738 T7 8.825 v8.175 q0 0.825 0.588 1.413 T9 19 q0.825 0 1.413 -0.587 T11 17 v-10 q0 -1.65 1.175 -2.825 t2.825 -1.175 q1.65 0 2.825 1.175 t1.175 2.825 v8.175 q0.875 0.325 1.438 1.088 T21 18 q0 1.25 -0.875 2.125 t-2.125 0.875 q-1.25 0 -2.125 -0.875 t-0.875 -2.125 q0 -0.975 0.563 -1.75 t1.438 -1.075 v-8.175 q0 -0.825 -0.587 -1.412 T15 5 q-0.825 0 -1.412 0.588 T13 7 v10 q0 1.65 -1.175 2.825 t-2.825 1.175 Z M6 7 q0.425 0 0.713 -0.288 T7 6 q0 -0.425 -0.288 -0.712 T6 5 q-0.425 0 -0.712 0.288 T5 6 q0 0.425 0.288 0.713 T6 7 Z m12 12 q0.425 0 0.713 -0.288 T19 18 q0 -0.425 -0.288 -0.712 T18 17 q-0.425 0 -0.712 0.288 T17 18 q0 0.425 0.288 0.713 T18 19 Z M6 6 Z m12 12 Z";
|
|
194
|
+
}];
|
|
195
|
+
};
|
|
184
196
|
readonly search: {
|
|
185
197
|
readonly viewBox: "0 0 24 24";
|
|
186
198
|
readonly paths: readonly [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../../../../src/icons/glyphs.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACvD;AAED,QAAA,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../../../../src/icons/glyphs.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACvD;AAED,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCT,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,aAAa,CAAC;AAElD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAiB,CAAC;AAE7D,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAA0B,QAAQ,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Metric — 数値 + 単位 + ラベルの指標表示 primitive(設計書 §1、意思決定3)。
|
|
3
|
-
* contract: metric(app
|
|
3
|
+
* contract: metric(app 先行定義)。カード内の主要指標表示に使う(進捗率 / 予算 / 残日数 等)。
|
|
4
4
|
*
|
|
5
5
|
* - value は tabular(fontVariant:["tabular-nums"])で桁揃え。Text primitive は fontVariant を
|
|
6
6
|
* 公開しないので、value は RN Text を直接使う。
|
|
@@ -15,9 +15,9 @@ type MetricSize = SizeOf<"metric">;
|
|
|
15
15
|
interface MetricProps {
|
|
16
16
|
/** 整形済みの数値文字列(整形は呼び出し側)。 */
|
|
17
17
|
value: string;
|
|
18
|
-
/** 単位("
|
|
18
|
+
/** 単位("%" / "万円" / "日" 等)。 */
|
|
19
19
|
unit?: string;
|
|
20
|
-
/** ラベル("
|
|
20
|
+
/** ラベル("進捗率" 等)。 */
|
|
21
21
|
label?: string;
|
|
22
22
|
size?: MetricSize;
|
|
23
23
|
align?: "start" | "center";
|
|
@@ -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,
|
|
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"}
|
|
@@ -35,8 +35,8 @@ export declare function Text({ variant, weight, color, role, numberOfLines, styl
|
|
|
35
35
|
export declare namespace Text {
|
|
36
36
|
var __contract: {
|
|
37
37
|
readonly id: "text";
|
|
38
|
-
readonly version: "0.
|
|
39
|
-
readonly variants: readonly ["xs", "sm", "base", "lg", "xl", "2xl", "3xl"];
|
|
38
|
+
readonly version: "0.2.0";
|
|
39
|
+
readonly variants: readonly ["xxs", "xs", "sm", "base", "lg", "xl", "2xl", "3xl"];
|
|
40
40
|
readonly sizes: readonly [];
|
|
41
41
|
readonly states: readonly ["default"];
|
|
42
42
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* melta-app/safe-area — react-native-safe-area-context adapter の subpath エントリ。
|
|
3
|
+
*
|
|
4
|
+
* 本体エントリ("melta-app")から分離している理由: このファイルだけが
|
|
5
|
+
* react-native-safe-area-context(optional peerDependency)に依存するため。
|
|
6
|
+
* Metro は import を静的に解決するので、本体エントリに含めると未 install の
|
|
7
|
+
* 利用者がバンドルできなくなる(分離の前例 = melta-app/icons × react-native-svg)。
|
|
8
|
+
*
|
|
9
|
+
* 使い方: アプリの entry で一度呼ぶ(Screen の初回 render より前)。
|
|
10
|
+
*
|
|
11
|
+
* import { enableSafeAreaContext } from "melta-app/safe-area";
|
|
12
|
+
* enableSafeAreaContext();
|
|
13
|
+
*
|
|
14
|
+
* これで Screen の SafeArea が react-native-safe-area-context の SafeAreaView に
|
|
15
|
+
* 切り替わり、RN core SafeAreaView の deprecation 警告(RN 0.85+)も出なくなる。
|
|
16
|
+
*/
|
|
17
|
+
/** Screen の SafeArea を react-native-safe-area-context に切り替える。 */
|
|
18
|
+
export declare function enableSafeAreaContext(): void;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/safe-area/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,iEAAiE;AACjE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-theme.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"native-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-theme.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,WAsNzB,CAAC"}
|
|
@@ -21,6 +21,7 @@ export interface SemanticColors {
|
|
|
21
21
|
"border-strong": string;
|
|
22
22
|
"input-bg": string;
|
|
23
23
|
"input-border": string;
|
|
24
|
+
"text-accent": string;
|
|
24
25
|
"text-on-accent": string;
|
|
25
26
|
}
|
|
26
27
|
/** status カラー(success / warning / danger)。light/dark の subtle・text を保持。 */
|
|
@@ -44,7 +45,7 @@ export interface ThemeColor {
|
|
|
44
45
|
danger: StatusColors;
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
|
-
export type FontSizeKey = "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl";
|
|
48
|
+
export type FontSizeKey = "xxs" | "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl";
|
|
48
49
|
export type FontWeightKey = "normal" | "medium" | "semibold" | "bold";
|
|
49
50
|
/** RN の fontWeight は文字列。tokens の数値(400 等)を文字列化したもの。 */
|
|
50
51
|
export type FontWeightValue = "400" | "500" | "600" | "700";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,uCAAuC;AACvC,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "melta-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "melta for APP — melta デザインシステムの React Native UI kit。melta-contracts(デザイン契約)を single source of truth に RN 実装でその契約を満たす。アプリ本体ではなくライブラリ。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://app.melta.tsubotax.com",
|
|
@@ -31,6 +31,12 @@
|
|
|
31
31
|
"import": "./lib/module/icons/index.js",
|
|
32
32
|
"default": "./lib/module/icons/index.js"
|
|
33
33
|
},
|
|
34
|
+
"./safe-area": {
|
|
35
|
+
"types": "./lib/typescript/src/safe-area/index.d.ts",
|
|
36
|
+
"react-native": "./lib/module/safe-area/index.js",
|
|
37
|
+
"import": "./lib/module/safe-area/index.js",
|
|
38
|
+
"default": "./lib/module/safe-area/index.js"
|
|
39
|
+
},
|
|
34
40
|
"./package.json": "./package.json"
|
|
35
41
|
},
|
|
36
42
|
"files": [
|
|
@@ -46,9 +52,13 @@
|
|
|
46
52
|
"peerDependencies": {
|
|
47
53
|
"react": "*",
|
|
48
54
|
"react-native": "*",
|
|
55
|
+
"react-native-safe-area-context": ">=4",
|
|
49
56
|
"react-native-svg": ">=15"
|
|
50
57
|
},
|
|
51
58
|
"peerDependenciesMeta": {
|
|
59
|
+
"react-native-safe-area-context": {
|
|
60
|
+
"optional": true
|
|
61
|
+
},
|
|
52
62
|
"react-native-svg": {
|
|
53
63
|
"optional": true
|
|
54
64
|
}
|
|
@@ -62,10 +72,11 @@
|
|
|
62
72
|
"@types/react": "~19.2.2",
|
|
63
73
|
"eslint": "^10.4.1",
|
|
64
74
|
"jest": "^29.7.0",
|
|
65
|
-
"melta-contracts": "^0.4.
|
|
75
|
+
"melta-contracts": "^0.4.3",
|
|
66
76
|
"react": "19.2.3",
|
|
67
77
|
"react-native": "0.85.3",
|
|
68
78
|
"react-native-builder-bob": "^0.40.13",
|
|
79
|
+
"react-native-safe-area-context": "^5.5.2",
|
|
69
80
|
"react-native-svg": "^15.15.4",
|
|
70
81
|
"tsx": "^4.19.0",
|
|
71
82
|
"typescript": "~6.0.3",
|
|
@@ -80,7 +91,8 @@
|
|
|
80
91
|
"build:showcase": "bash scripts/build-showcase.sh",
|
|
81
92
|
"generate:theme": "tsx scripts/generate-native-theme.ts",
|
|
82
93
|
"generate:contracts": "tsx scripts/generate-contract-types.ts",
|
|
83
|
-
"generate": "
|
|
94
|
+
"generate:icons": "tsx scripts/generate-icons.ts",
|
|
95
|
+
"generate": "npm run generate:theme && npm run generate:contracts && npm run generate:icons",
|
|
84
96
|
"build": "bob build",
|
|
85
97
|
"prepare": "bob build",
|
|
86
98
|
"test": "tsx --test scripts/lib/*.test.ts",
|
package/src/components/Card.tsx
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* focus-within は RN 非サポートとして Phase1 明示 drop(§2)。
|
|
11
11
|
* - 型で action/link は onPress 必須を強制(§4 の DU 精神。無言で非対話に落ちる事故を防ぐ)。
|
|
12
12
|
* - Card は Image/Metric に依存しない(§1)。media/header/footer/children に呼び出し側が差し込む。
|
|
13
|
-
*
|
|
13
|
+
* 呼び出し側(例: D2I)は用途に応じて slot に Image+Metric を compose する。
|
|
14
14
|
* - media variant は overflow:hidden で角丸に画像をクリップし、body だけにパディング(contract と整合)。
|
|
15
15
|
*/
|
|
16
16
|
|
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
* - padding は spacing token キー限定 | "none"(default "4")。
|
|
9
9
|
* - 決定ロジックは pure resolver(screen.styles.ts)に分離 — recipe との機械照合対象。
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* SafeArea は registry(safe-area-registry.ts)で解決する。default は RN core の
|
|
12
|
+
* SafeAreaView(deprecated / iOS のみの最小対応)で依存ゼロを維持しつつ、
|
|
13
|
+
* react-native-safe-area-context 利用者は subpath "melta-app/safe-area" の
|
|
14
|
+
* enableSafeAreaContext() で差し替えられる(rally-nav dogfood 由来、RN 0.85 の
|
|
15
|
+
* core SafeAreaView deprecation 警告対応)。
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
import { useMemo, type ReactNode } from "react";
|
|
18
|
-
import {
|
|
19
|
+
import { ScrollView, View, type StyleProp, type ViewStyle } from "react-native";
|
|
20
|
+
import { resolveSafeAreaView } from "./safe-area-registry";
|
|
19
21
|
import { useTheme } from "../theme";
|
|
20
22
|
import { CONTRACTS, type VariantOf } from "../contracts/contract-types";
|
|
21
23
|
import { resolveScreenStyle, type ScreenPadding, type ScreenStyle } from "./screen.styles";
|
|
@@ -47,15 +49,17 @@ export function Screen({
|
|
|
47
49
|
[theme, mode, variant, padding],
|
|
48
50
|
);
|
|
49
51
|
|
|
52
|
+
const SafeArea = resolveSafeAreaView();
|
|
53
|
+
|
|
50
54
|
return (
|
|
51
|
-
<
|
|
55
|
+
<SafeArea style={[safeAreaStyle, style]} testID={testID}>
|
|
52
56
|
{header}
|
|
53
57
|
{variant === "scroll" ? (
|
|
54
58
|
<ScrollView contentContainerStyle={contentStyle}>{children}</ScrollView>
|
|
55
59
|
) : (
|
|
56
60
|
<View style={contentStyle}>{children}</View>
|
|
57
61
|
)}
|
|
58
|
-
</
|
|
62
|
+
</SafeArea>
|
|
59
63
|
);
|
|
60
64
|
}
|
|
61
65
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* safe-area-registry — Screen が使う SafeAreaView 実装の差し替え点(adapter registry)。
|
|
3
|
+
*
|
|
4
|
+
* 本体エントリは依存ゼロ方針(P1)のため、default は RN core の SafeAreaView
|
|
5
|
+
* (deprecated / iOS のみの最小対応)。react-native-safe-area-context を使う利用者は
|
|
6
|
+
* subpath "melta-app/safe-area" の enableSafeAreaContext() をアプリ起動時に一度呼ぶと
|
|
7
|
+
* Screen の SafeArea が差し替わる(optional peer の前例 = Icon × react-native-svg。
|
|
8
|
+
* ただし Screen は本体エントリ所属のため subpath 分離ではなく registry で切り替える)。
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ RN 0.85 は react-native の SafeAreaView プロパティへの getter アクセス時点で
|
|
11
|
+
* deprecation 警告を出す。adapter 登録済みの利用者に警告を出さないため、core への
|
|
12
|
+
* アクセスは「未登録のまま Screen が render された時」まで遅延させる。
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { ComponentType, ReactNode } from "react";
|
|
16
|
+
import type { StyleProp, ViewStyle } from "react-native";
|
|
17
|
+
import * as ReactNative from "react-native";
|
|
18
|
+
|
|
19
|
+
/** Screen が SafeArea 実装に要求する最小 props(core / safe-area-context 両対応)。 */
|
|
20
|
+
export interface SafeAreaViewLikeProps {
|
|
21
|
+
style?: StyleProp<ViewStyle>;
|
|
22
|
+
testID?: string;
|
|
23
|
+
children?: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type SafeAreaViewLike = ComponentType<SafeAreaViewLikeProps>;
|
|
27
|
+
|
|
28
|
+
let registered: SafeAreaViewLike | null = null;
|
|
29
|
+
|
|
30
|
+
/** SafeArea 実装を登録する(Screen の初回 render より前に呼ぶ)。 */
|
|
31
|
+
export function setSafeAreaView(component: SafeAreaViewLike): void {
|
|
32
|
+
registered = component;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** 登録済み実装、無ければ RN core SafeAreaView(ここで初めて getter に触れる)。 */
|
|
36
|
+
export function resolveSafeAreaView(): SafeAreaViewLike {
|
|
37
|
+
return registered ?? (ReactNative.SafeAreaView as SafeAreaViewLike);
|
|
38
|
+
}
|
|
@@ -14,8 +14,8 @@ export interface ContractShape {
|
|
|
14
14
|
export const CONTRACTS = {
|
|
15
15
|
text: {
|
|
16
16
|
id: "text",
|
|
17
|
-
version: "0.
|
|
18
|
-
variants: ["xs", "sm", "base", "lg", "xl", "2xl", "3xl"],
|
|
17
|
+
version: "0.2.0",
|
|
18
|
+
variants: ["xxs", "xs", "sm", "base", "lg", "xl", "2xl", "3xl"],
|
|
19
19
|
sizes: [],
|
|
20
20
|
states: ["default"],
|
|
21
21
|
},
|
package/src/icons/glyphs.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ⚠️ 自動生成ファイル — 手で編集しないこと。
|
|
2
|
-
// 生成元: scripts/generate-icons.ts(入力 assets/icons/*.svg = Charcoal Icons
|
|
2
|
+
// 生成元: scripts/generate-icons.ts(入力 assets/icons/*.svg = Charcoal Icons + Material Symbols Rounded 補完, Apache-2.0)
|
|
3
3
|
// 帰属表示は THIRD_PARTY_LICENSES.md を参照。
|
|
4
4
|
|
|
5
5
|
export interface Glyph {
|
|
@@ -27,6 +27,7 @@ const GLYPHS_SOURCE = {
|
|
|
27
27
|
"like-off": { viewBox: "0 0 24 24", paths: [{ d: "M13.087 21.021C18.792 17.831 22 13.81 22 8.91A5.91 5.91 0 0016.09 3c-1.529 0-2.976.747-4.09 1.834C10.886 3.747 9.439 3 7.91 3A5.91 5.91 0 002 8.91c0 4.9 3.208 8.92 8.913 12.111a2.227 2.227 0 002.174 0zM16.09 5A3.91 3.91 0 0120 8.91c0 3.86-2.482 7.342-7.889 10.366a.229.229 0 01-.222 0C6.482 16.252 4 12.77 4 8.91A3.91 3.91 0 017.91 5c1.115 0 2.38.723 3.287 1.943L12 8.021l.803-1.078C13.71 5.723 14.975 5 16.09 5z", fillRule: "evenodd" as const }] },
|
|
28
28
|
"like-on": { viewBox: "0 0 24 24", paths: [{ d: "M2 9.023A6.023 6.023 0 018.023 3c1.486 0 2.88.68 3.977 1.677C13.096 3.68 14.49 3 15.977 3A6.023 6.023 0 0122 9.023c0 4.908-3.22 8.893-8.807 12.018a2.443 2.443 0 01-2.386 0C5.22 17.916 2 13.931 2 9.023z", fillRule: "evenodd" as const }] },
|
|
29
29
|
"link": { viewBox: "0 0 24 24", paths: [{ d: "M14.031 3.367a4.666 4.666 0 116.6 6.598l-4.243 4.243a4.665 4.665 0 01-2.163 1.226h-.037l-.193.04-.107.02-.23.034h-.113c-.05 0-.097.005-.142.01a1.296 1.296 0 01-.095.01l-.2.023h-.253a4.616 4.616 0 01-.497-.047 5.356 5.356 0 01-.403-.083l-.197-.053a2.64 2.64 0 01-.213-.07l-.078-.029c-.045-.016-.09-.032-.135-.051a4.71 4.71 0 00-.07-.03 4.627 4.627 0 01-1.473-.994 1.333 1.333 0 010-1.879 1.366 1.366 0 011.873 0 2 2 0 002.826 0l1.093-1.086.027-.03 3.126-3.123a2 2 0 00-2.83-2.83l-2.51 2.507a.333.333 0 01-.362.073 5.6 5.6 0 00-2.13-.417h-.123a.333.333 0 01-.243-.57l3.495-3.492z" }, { d: "M13.418 9.166c.284.18.547.391.784.63.27.27.41.644.386 1.026-.023.32-.16.62-.386.847a1.366 1.366 0 01-1.873 0 2 2 0 00-2.827 0L5.246 15.92a2 2 0 002.83 2.83l2.516-2.52a.333.333 0 01.363-.073 5.612 5.612 0 002.133.413h.134a.333.333 0 01.236.57l-3.5 3.5A4.636 4.636 0 016.664 22a4.666 4.666 0 01-3.3-7.962l4.24-4.242a4.666 4.666 0 015.816-.63z" }] },
|
|
30
|
+
"map": { viewBox: "0 0 24 24", paths: [{ d: "M14.35 20.775 l-5.35 -1.875 l-4.65 1.8 q-0.25 0.1 -0.488 0.063 T3.425 20.6 q-0.2 -0.125 -0.312 -0.337 T3 19.775 v-14.025 q0 -0.325 0.188 -0.575 t0.513 -0.375 l4.65 -1.575 q0.15 -0.05 0.313 -0.075 t0.338 -0.025 q0.175 0 0.338 0.025 t0.313 0.075 l5.35 1.875 l4.65 -1.8 q0.25 -0.1 0.488 -0.062 T20.575 3.4 q0.2 0.125 0.313 0.338 T21 4.225 v14.025 q0 0.325 -0.187 0.575 T20.3 19.2 l-4.65 1.575 q-0.15 0.05 -0.312 0.075 t-0.337 0.025 q-0.175 0 -0.337 -0.025 t-0.312 -0.075 Z m-0.35 -2.225 v-11.7 l-4 -1.4 v11.7 l4 1.4 Z m2 0 l3 -1 v-11.85 l-3 1.15 v11.7 Z m-11 -0.25 l3 -1.15 v-11.7 l-3 1 v11.85 Z m11 -11.45 v11.7 v-11.7 Z m-8 -1.4 v11.7 v-11.7 Z" }] },
|
|
30
31
|
"menu": { viewBox: "0 0 24 24", paths: [{ d: "M4 7a1 1 0 011-1h14a1 1 0 110 2H5a1 1 0 01-1-1zM4 12a1 1 0 011-1h14a1 1 0 110 2H5a1 1 0 01-1-1zM5 16a1 1 0 100 2h14a1 1 0 100-2H5z" }] },
|
|
31
32
|
"more": { viewBox: "0 0 16 16", paths: [{ d: "M6.043 4.957a1 1 0 011.414-1.414L11.914 8l-4.457 4.457a1 1 0 01-1.414-1.414L9.086 8 6.043 4.957z" }] },
|
|
32
33
|
"next": { viewBox: "0 0 24 24", paths: [{ d: "M8.086 16.586a2 2 0 102.828 2.828L18.328 12l-7.414-7.414a2 2 0 10-2.828 2.828L12.672 12l-4.586 4.586z" }] },
|
|
@@ -34,6 +35,7 @@ const GLYPHS_SOURCE = {
|
|
|
34
35
|
"prev": { viewBox: "0 0 24 24", paths: [{ d: "M15.913 16.586a2 2 0 01-2.829 2.828L5.67 12l7.414-7.414a2 2 0 012.829 2.828L11.327 12l4.586 4.586z" }] },
|
|
35
36
|
"question": { viewBox: "0 0 24 24", paths: [{ d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.179 15.254a1.25 1.25 0 11-2.5 0 1.25 1.25 0 012.5 0zm.058-3.98c.01-.02.02-.04.03-.05.272-.4.651-.732 1.036-1.069.886-.777 1.8-1.579 1.494-3.281-.29-1.69-1.64-3.08-3.33-3.33-2.06-.3-3.88.97-4.43 2.79-.17.58.27 1.17.87 1.17h.2c.41 0 .74-.29.88-.65.32-.89 1.26-1.5 2.3-1.28.96.2 1.66 1.15 1.57 2.13-.068.763-.613 1.186-1.219 1.654-.377.293-.778.603-1.101 1.026l-.01-.01a.326.326 0 00-.046.066 1.302 1.302 0 01-.084.129 2.261 2.261 0 00-.27.515.156.156 0 01-.025.05c-.01.015-.02.03-.025.05-.01.01-.01.02-.01.03-.12.36-.2.79-.2 1.3h2.01a2.11 2.11 0 01.18-.89c.01-.04.02-.08.04-.11.04-.08.09-.16.14-.24z", fillRule: "evenodd" as const }] },
|
|
36
37
|
"reload": { viewBox: "0 0 24 24", paths: [{ d: "M12 7a6 6 0 106 6 1 1 0 112 0 8 8 0 11-8-8h1.42l-1.7-2.125a1 1 0 111.56-1.25l3 3.75a1 1 0 010 1.25l-3 3.75a1 1 0 01-1.56-1.25L13.42 7H12z" }] },
|
|
38
|
+
"route": { viewBox: "0 0 24 24", paths: [{ d: "M9 21 q-1.65 0 -2.825 -1.175 t-1.175 -2.825 v-8.175 q-0.875 -0.325 -1.437 -1.088 T3 6 q0 -1.25 0.875 -2.125 t2.125 -0.875 q1.25 0 2.125 0.875 t0.875 2.125 q0 0.975 -0.562 1.738 T7 8.825 v8.175 q0 0.825 0.588 1.413 T9 19 q0.825 0 1.413 -0.587 T11 17 v-10 q0 -1.65 1.175 -2.825 t2.825 -1.175 q1.65 0 2.825 1.175 t1.175 2.825 v8.175 q0.875 0.325 1.438 1.088 T21 18 q0 1.25 -0.875 2.125 t-2.125 0.875 q-1.25 0 -2.125 -0.875 t-0.875 -2.125 q0 -0.975 0.563 -1.75 t1.438 -1.075 v-8.175 q0 -0.825 -0.587 -1.412 T15 5 q-0.825 0 -1.412 0.588 T13 7 v10 q0 1.65 -1.175 2.825 t-2.825 1.175 Z M6 7 q0.425 0 0.713 -0.288 T7 6 q0 -0.425 -0.288 -0.712 T6 5 q-0.425 0 -0.712 0.288 T5 6 q0 0.425 0.288 0.713 T6 7 Z m12 12 q0.425 0 0.713 -0.288 T19 18 q0 -0.425 -0.288 -0.712 T18 17 q-0.425 0 -0.712 0.288 T17 18 q0 0.425 0.288 0.713 T18 19 Z M6 6 Z m12 12 Z" }] },
|
|
37
39
|
"search": { viewBox: "0 0 24 24", paths: [{ d: "M15.461 10.615c0-1.334-.474-2.475-1.422-3.423-.948-.949-2.09-1.423-3.424-1.423s-2.475.474-3.423 1.423c-.949.948-1.423 2.09-1.423 3.423 0 1.335.474 2.476 1.423 3.424.948.948 2.09 1.422 3.423 1.422 1.335 0 2.476-.474 3.424-1.422s1.422-2.09 1.422-3.424zm5.539 9c0 .375-.137.7-.411.974a1.33 1.33 0 01-.974.411c-.389 0-.714-.137-.973-.411l-3.71-3.7a7.407 7.407 0 01-4.317 1.342c-1.03 0-2.017-.2-2.958-.6a7.613 7.613 0 01-2.434-1.623A7.614 7.614 0 013.6 13.574c-.4-.941-.6-1.927-.6-2.959 0-1.03.2-2.017.6-2.958.4-.941.941-1.753 1.623-2.434A7.614 7.614 0 017.657 3.6c.941-.4 1.927-.6 2.958-.6 1.032 0 2.018.2 2.959.6.941.4 1.752.941 2.434 1.623a7.613 7.613 0 011.622 2.434c.4.941.6 1.927.6 2.958a7.407 7.407 0 01-1.34 4.316l3.71 3.71c.267.268.4.592.4.974z", fillRule: "evenodd" as const }] },
|
|
38
40
|
"send": { viewBox: "0 0 24 24", paths: [{ d: "M3 13.5h5a1.5 1.5 0 000-3H3V3.695a1 1 0 011.466-.885l15.853 8.343a1 1 0 010 1.77L4.466 21.267A1 1 0 013 20.382V13.5z", fillRule: "evenodd" as const }] },
|
|
39
41
|
"settings": { viewBox: "0 0 24 24", paths: [{ d: "M19.5 12c0 .61.224 1.21.704 1.586l1.336 1.044c.19.15.24.42.12.64l-2 3.46c-.12.22-.38.31-.61.22l-1.589-.638c-.56-.225-1.186-.13-1.705.176-.528.31-.94.814-1.026 1.42l-.24 1.672c-.03.24-.24.42-.49.42h-4c-.25 0-.46-.18-.49-.42l-.24-1.68c-.087-.6-.495-1.098-1.02-1.404-.524-.305-1.156-.407-1.718-.181l-1.582.635c-.22.08-.49 0-.61-.22l-2-3.46a.505.505 0 01.12-.64l1.335-1.044c.48-.376.705-.976.705-1.586 0-.61-.224-1.21-.705-1.586L2.46 9.37a.493.493 0 01-.12-.64l2-3.46c.12-.22.38-.31.61-.22l1.588.638c.56.225 1.186.13 1.706-.176.528-.31.94-.814 1.026-1.42l.24-1.672c.03-.24.24-.42.49-.42h4c.25 0 .46.18.49.42l.24 1.68c.087.6.494 1.098 1.02 1.404.524.306 1.155.407 1.718.181l1.582-.635c.22-.08.49 0 .61.22l2 3.46c.12.22.07.49-.12.64l-1.336 1.044c-.48.376-.704.976-.704 1.586zm-11 0c0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5-3.5 1.57-3.5 3.5z", fillRule: "evenodd" as const }] },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Metric — 数値 + 単位 + ラベルの指標表示 primitive(設計書 §1、意思決定3)。
|
|
3
|
-
* contract: metric(app
|
|
3
|
+
* contract: metric(app 先行定義)。カード内の主要指標表示に使う(進捗率 / 予算 / 残日数 等)。
|
|
4
4
|
*
|
|
5
5
|
* - value は tabular(fontVariant:["tabular-nums"])で桁揃え。Text primitive は fontVariant を
|
|
6
6
|
* 公開しないので、value は RN Text を直接使う。
|
|
@@ -21,9 +21,9 @@ type MetricSize = SizeOf<"metric">; // "sm" | "md" | "lg"
|
|
|
21
21
|
interface MetricProps {
|
|
22
22
|
/** 整形済みの数値文字列(整形は呼び出し側)。 */
|
|
23
23
|
value: string;
|
|
24
|
-
/** 単位("
|
|
24
|
+
/** 単位("%" / "万円" / "日" 等)。 */
|
|
25
25
|
unit?: string;
|
|
26
|
-
/** ラベル("
|
|
26
|
+
/** ラベル("進捗率" 等)。 */
|
|
27
27
|
label?: string;
|
|
28
28
|
size?: MetricSize;
|
|
29
29
|
align?: "start" | "center";
|
|
@@ -60,7 +60,7 @@ export function resolveVariant(
|
|
|
60
60
|
case "neutral":
|
|
61
61
|
return { bg: sem["bg-surface-alt"], pressedBg: sem["border-default"], textColor: sem["text-default"] };
|
|
62
62
|
case "lighted":
|
|
63
|
-
return { bg: c.primary["50"], pressedBg: c.primary["100"], textColor: c.primary["
|
|
63
|
+
return { bg: c.primary["50"], pressedBg: c.primary["100"], textColor: c.primary["600"] };
|
|
64
64
|
case "danger":
|
|
65
65
|
return { bg: c.status.danger.base, pressedBg: c.status.danger.textLight, textColor: sem["text-on-accent"] };
|
|
66
66
|
case "subtle":
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* melta-app/safe-area — react-native-safe-area-context adapter の subpath エントリ。
|
|
3
|
+
*
|
|
4
|
+
* 本体エントリ("melta-app")から分離している理由: このファイルだけが
|
|
5
|
+
* react-native-safe-area-context(optional peerDependency)に依存するため。
|
|
6
|
+
* Metro は import を静的に解決するので、本体エントリに含めると未 install の
|
|
7
|
+
* 利用者がバンドルできなくなる(分離の前例 = melta-app/icons × react-native-svg)。
|
|
8
|
+
*
|
|
9
|
+
* 使い方: アプリの entry で一度呼ぶ(Screen の初回 render より前)。
|
|
10
|
+
*
|
|
11
|
+
* import { enableSafeAreaContext } from "melta-app/safe-area";
|
|
12
|
+
* enableSafeAreaContext();
|
|
13
|
+
*
|
|
14
|
+
* これで Screen の SafeArea が react-native-safe-area-context の SafeAreaView に
|
|
15
|
+
* 切り替わり、RN core SafeAreaView の deprecation 警告(RN 0.85+)も出なくなる。
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ 前提: アプリの root に SafeAreaProvider が必要(context 版 SafeAreaView は
|
|
18
|
+
* nearest provider から inset を取る。無いと inset が効かない)。React Navigation /
|
|
19
|
+
* Expo Router 利用時は設置済みのことが多い。
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { SafeAreaView } from "react-native-safe-area-context";
|
|
23
|
+
import { setSafeAreaView } from "../components/safe-area-registry";
|
|
24
|
+
|
|
25
|
+
/** Screen の SafeArea を react-native-safe-area-context に切り替える。 */
|
|
26
|
+
export function enableSafeAreaContext(): void {
|
|
27
|
+
setSafeAreaView(SafeAreaView);
|
|
28
|
+
}
|
|
@@ -33,6 +33,7 @@ export const nativeTheme: NativeTheme = {
|
|
|
33
33
|
"border-strong": "#cbd5e1",
|
|
34
34
|
"input-bg": "#ffffff",
|
|
35
35
|
"input-border": "#cbd5e1",
|
|
36
|
+
"text-accent": "#2b70ef",
|
|
36
37
|
"text-on-accent": "#ffffff"
|
|
37
38
|
},
|
|
38
39
|
"dark": {
|
|
@@ -47,6 +48,7 @@ export const nativeTheme: NativeTheme = {
|
|
|
47
48
|
"border-strong": "#475569",
|
|
48
49
|
"input-bg": "#0f172a",
|
|
49
50
|
"input-border": "#475569",
|
|
51
|
+
"text-accent": "#6492ff",
|
|
50
52
|
"text-on-accent": "#ffffff"
|
|
51
53
|
}
|
|
52
54
|
},
|
|
@@ -66,10 +68,10 @@ export const nativeTheme: NativeTheme = {
|
|
|
66
68
|
"textDark": "#fcd34d"
|
|
67
69
|
},
|
|
68
70
|
"danger": {
|
|
69
|
-
"base": "#
|
|
71
|
+
"base": "#dc2626",
|
|
70
72
|
"subtleLight": "#fef2f2",
|
|
71
|
-
"textLight": "#
|
|
72
|
-
"subtleDark": "rgba(
|
|
73
|
+
"textLight": "#b91c1c",
|
|
74
|
+
"subtleDark": "rgba(220,38,38,0.12)",
|
|
73
75
|
"textDark": "#fca5a5"
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -77,6 +79,10 @@ export const nativeTheme: NativeTheme = {
|
|
|
77
79
|
"typography": {
|
|
78
80
|
"fontFamily": {},
|
|
79
81
|
"fontSize": {
|
|
82
|
+
"xxs": {
|
|
83
|
+
"fontSize": 10,
|
|
84
|
+
"lineHeight": 14
|
|
85
|
+
},
|
|
80
86
|
"xs": {
|
|
81
87
|
"fontSize": 13,
|
|
82
88
|
"lineHeight": 18
|
package/src/theme/types.ts
CHANGED
|
@@ -35,6 +35,7 @@ export interface SemanticColors {
|
|
|
35
35
|
"border-strong": string;
|
|
36
36
|
"input-bg": string;
|
|
37
37
|
"input-border": string;
|
|
38
|
+
"text-accent": string;
|
|
38
39
|
"text-on-accent": string;
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -54,7 +55,7 @@ export interface ThemeColor {
|
|
|
54
55
|
status: { success: StatusColors; warning: StatusColors; danger: StatusColors };
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
export type FontSizeKey = "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl";
|
|
58
|
+
export type FontSizeKey = "xxs" | "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl";
|
|
58
59
|
export type FontWeightKey = "normal" | "medium" | "semibold" | "bold";
|
|
59
60
|
/** RN の fontWeight は文字列。tokens の数値(400 等)を文字列化したもの。 */
|
|
60
61
|
export type FontWeightValue = "400" | "500" | "600" | "700";
|