melta-app 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -12
- package/docs/architecture.md +11 -4
- package/eslint-rules/melta.d.mts +44 -0
- package/lib/module/a11y/tap-target.js +41 -0
- package/lib/module/a11y/tap-target.js.map +1 -0
- package/lib/module/components/ActionSheet.js +20 -6
- package/lib/module/components/ActionSheet.js.map +1 -1
- package/lib/module/components/Alert.js +11 -7
- package/lib/module/components/Alert.js.map +1 -1
- package/lib/module/components/Avatar.js +7 -2
- package/lib/module/components/Avatar.js.map +1 -1
- package/lib/module/components/BottomSheet.js +11 -3
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/Card.js +4 -3
- package/lib/module/components/Card.js.map +1 -1
- package/lib/module/components/Checkbox.js +8 -5
- package/lib/module/components/Checkbox.js.map +1 -1
- package/lib/module/components/EmptyState.js +2 -1
- package/lib/module/components/EmptyState.js.map +1 -1
- package/lib/module/components/Header.js.map +1 -1
- package/lib/module/components/Image.js +5 -3
- package/lib/module/components/Image.js.map +1 -1
- package/lib/module/components/Modal.js +12 -4
- package/lib/module/components/Modal.js.map +1 -1
- package/lib/module/components/Progress.js +2 -1
- package/lib/module/components/Progress.js.map +1 -1
- package/lib/module/components/Radio.js +11 -3
- package/lib/module/components/Radio.js.map +1 -1
- package/lib/module/components/Screen.js +28 -3
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/Skeleton.js +2 -1
- package/lib/module/components/Skeleton.js.map +1 -1
- package/lib/module/components/Surface.js +2 -1
- package/lib/module/components/Surface.js.map +1 -1
- package/lib/module/components/TextField.js +16 -4
- package/lib/module/components/TextField.js.map +1 -1
- package/lib/module/components/Toast.js +17 -9
- package/lib/module/components/Toast.js.map +1 -1
- package/lib/module/components/Toggle.js +13 -4
- package/lib/module/components/Toggle.js.map +1 -1
- package/lib/module/components/alert.styles.js +12 -26
- package/lib/module/components/alert.styles.js.map +1 -1
- package/lib/module/components/avatar.styles.js +24 -2
- package/lib/module/components/avatar.styles.js.map +1 -1
- package/lib/module/components/card.validate.js.map +1 -1
- package/lib/module/components/checkbox.styles.js +5 -2
- package/lib/module/components/checkbox.styles.js.map +1 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/modal.styles.js +9 -0
- package/lib/module/components/modal.styles.js.map +1 -1
- package/lib/module/components/radio.styles.js +11 -2
- package/lib/module/components/radio.styles.js.map +1 -1
- package/lib/module/components/safe-area-registry.js +64 -13
- package/lib/module/components/safe-area-registry.js.map +1 -1
- package/lib/module/components/status-colors.js +53 -0
- package/lib/module/components/status-colors.js.map +1 -0
- package/lib/module/components/textfield.styles.js +15 -8
- package/lib/module/components/textfield.styles.js.map +1 -1
- package/lib/module/components/toast.styles.js +36 -25
- package/lib/module/components/toast.styles.js.map +1 -1
- package/lib/module/components/toggle.styles.js +20 -0
- package/lib/module/components/toggle.styles.js.map +1 -1
- package/lib/module/icons/Icon.js +4 -1
- package/lib/module/icons/Icon.js.map +1 -1
- package/lib/module/icons/icon.styles.js +32 -1
- package/lib/module/icons/icon.styles.js.map +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/primitives/Button.js +23 -11
- package/lib/module/primitives/Button.js.map +1 -1
- package/lib/module/primitives/Metric.js +2 -1
- package/lib/module/primitives/Metric.js.map +1 -1
- package/lib/module/primitives/Row.js.map +1 -1
- package/lib/module/primitives/Stack.js.map +1 -1
- package/lib/module/primitives/Tag.js +15 -7
- package/lib/module/primitives/Tag.js.map +1 -1
- package/lib/module/primitives/Text.js +13 -5
- package/lib/module/primitives/Text.js.map +1 -1
- package/lib/module/primitives/_internal/focus-ring.js.map +1 -1
- package/lib/module/primitives/button.styles.js +58 -8
- package/lib/module/primitives/button.styles.js.map +1 -1
- package/lib/module/primitives/index.js.map +1 -1
- package/lib/module/primitives/metric.styles.js +2 -2
- package/lib/module/primitives/metric.styles.js.map +1 -1
- package/lib/module/primitives/tag.styles.js +42 -3
- package/lib/module/primitives/tag.styles.js.map +1 -1
- package/lib/module/primitives/text.styles.js +6 -7
- package/lib/module/primitives/text.styles.js.map +1 -1
- package/lib/module/safe-area/index.js +11 -5
- package/lib/module/safe-area/index.js.map +1 -1
- package/lib/module/theme/ThemeProvider.js +5 -2
- package/lib/module/theme/ThemeProvider.js.map +1 -1
- package/lib/module/theme/define-theme.js +14 -1
- package/lib/module/theme/define-theme.js.map +1 -1
- package/lib/module/theme/index.js +6 -8
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/letter-spacing.js +20 -0
- package/lib/module/theme/letter-spacing.js.map +1 -0
- package/lib/module/theme/line-height.js +9 -0
- package/lib/module/theme/line-height.js.map +1 -1
- package/lib/module/theme/native-theme.js +1 -1
- package/lib/typescript/src/a11y/tap-target.d.ts +34 -0
- package/lib/typescript/src/a11y/tap-target.d.ts.map +1 -0
- package/lib/typescript/src/components/ActionSheet.d.ts +8 -1
- package/lib/typescript/src/components/ActionSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Alert.d.ts +9 -2
- package/lib/typescript/src/components/Alert.d.ts.map +1 -1
- package/lib/typescript/src/components/Avatar.d.ts +1 -1
- package/lib/typescript/src/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/BottomSheet.d.ts +4 -1
- package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Card.d.ts +2 -2
- package/lib/typescript/src/components/Checkbox.d.ts +3 -3
- package/lib/typescript/src/components/Checkbox.d.ts.map +1 -1
- package/lib/typescript/src/components/Image.d.ts +4 -3
- package/lib/typescript/src/components/Image.d.ts.map +1 -1
- package/lib/typescript/src/components/Modal.d.ts +9 -3
- package/lib/typescript/src/components/Modal.d.ts.map +1 -1
- package/lib/typescript/src/components/Progress.d.ts +1 -1
- package/lib/typescript/src/components/Progress.d.ts.map +1 -1
- package/lib/typescript/src/components/Radio.d.ts +3 -2
- package/lib/typescript/src/components/Radio.d.ts.map +1 -1
- package/lib/typescript/src/components/Screen.d.ts +28 -5
- package/lib/typescript/src/components/Screen.d.ts.map +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/Surface.d.ts +1 -1
- package/lib/typescript/src/components/Surface.d.ts.map +1 -1
- package/lib/typescript/src/components/TextField.d.ts +11 -4
- package/lib/typescript/src/components/TextField.d.ts.map +1 -1
- package/lib/typescript/src/components/Toast.d.ts +10 -3
- package/lib/typescript/src/components/Toast.d.ts.map +1 -1
- package/lib/typescript/src/components/Toggle.d.ts +3 -2
- package/lib/typescript/src/components/Toggle.d.ts.map +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/alert.styles.d.ts +14 -14
- package/lib/typescript/src/components/alert.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/avatar.styles.d.ts +36 -1
- package/lib/typescript/src/components/avatar.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.styles.d.ts +1 -1
- package/lib/typescript/src/components/card.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.validate.d.ts +1 -1
- package/lib/typescript/src/components/card.validate.d.ts.map +1 -1
- package/lib/typescript/src/components/checkbox.styles.d.ts +6 -3
- package/lib/typescript/src/components/checkbox.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/header.styles.d.ts +1 -1
- package/lib/typescript/src/components/header.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/image.styles.d.ts +1 -1
- package/lib/typescript/src/components/image.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/index.d.ts +18 -18
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/lib/typescript/src/components/modal.styles.d.ts +13 -2
- package/lib/typescript/src/components/modal.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/radio.styles.d.ts +10 -2
- package/lib/typescript/src/components/radio.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/safe-area-registry.d.ts +47 -11
- package/lib/typescript/src/components/safe-area-registry.d.ts.map +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/status-colors.d.ts +33 -0
- package/lib/typescript/src/components/status-colors.d.ts.map +1 -0
- package/lib/typescript/src/components/surface.styles.d.ts +1 -1
- package/lib/typescript/src/components/surface.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/textfield.styles.d.ts +9 -5
- package/lib/typescript/src/components/textfield.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toast.styles.d.ts +34 -14
- package/lib/typescript/src/components/toast.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toggle.styles.d.ts +17 -1
- package/lib/typescript/src/components/toggle.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/Icon.d.ts +12 -6
- package/lib/typescript/src/icons/Icon.d.ts.map +1 -1
- package/lib/typescript/src/icons/icon.styles.d.ts +14 -2
- package/lib/typescript/src/icons/icon.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/index.d.ts +3 -3
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Button.d.ts +8 -4
- package/lib/typescript/src/primitives/Button.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Row.d.ts +2 -2
- package/lib/typescript/src/primitives/Row.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Stack.d.ts +2 -2
- package/lib/typescript/src/primitives/Stack.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Tag.d.ts +2 -2
- package/lib/typescript/src/primitives/Tag.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Text.d.ts +20 -6
- package/lib/typescript/src/primitives/Text.d.ts.map +1 -1
- package/lib/typescript/src/primitives/button.styles.d.ts +44 -7
- package/lib/typescript/src/primitives/button.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/index.d.ts +6 -6
- package/lib/typescript/src/primitives/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts +34 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/text.styles.d.ts +2 -4
- package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -1
- package/lib/typescript/src/safe-area/index.d.ts +19 -5
- package/lib/typescript/src/safe-area/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/define-theme.d.ts +15 -2
- package/lib/typescript/src/theme/define-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/index.d.ts +14 -14
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/letter-spacing.d.ts +15 -0
- package/lib/typescript/src/theme/letter-spacing.d.ts.map +1 -0
- package/lib/typescript/src/theme/line-height.d.ts +10 -0
- package/lib/typescript/src/theme/line-height.d.ts.map +1 -1
- package/lib/typescript/src/theme/native-theme.d.ts +1 -1
- package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/types.d.ts +1 -1
- package/package.json +22 -7
- package/src/a11y/tap-target.ts +38 -0
- package/src/components/ActionSheet.tsx +25 -15
- package/src/components/Alert.tsx +37 -10
- package/src/components/Avatar.tsx +12 -4
- package/src/components/BottomSheet.tsx +16 -13
- package/src/components/Card.tsx +9 -8
- package/src/components/Checkbox.tsx +12 -9
- package/src/components/EmptyState.tsx +7 -6
- package/src/components/Header.tsx +4 -4
- package/src/components/Image.tsx +9 -7
- package/src/components/Modal.tsx +22 -6
- package/src/components/Progress.tsx +5 -4
- package/src/components/Radio.tsx +11 -6
- package/src/components/Screen.tsx +66 -8
- package/src/components/Skeleton.tsx +6 -5
- package/src/components/Surface.tsx +5 -4
- package/src/components/TextField.tsx +25 -7
- package/src/components/Toast.tsx +33 -11
- package/src/components/Toggle.tsx +15 -6
- package/src/components/action-sheet.styles.ts +1 -1
- package/src/components/alert.styles.ts +13 -25
- package/src/components/avatar.styles.ts +25 -3
- package/src/components/bottom-sheet.styles.ts +1 -1
- package/src/components/card.styles.ts +1 -1
- package/src/components/card.validate.ts +2 -2
- package/src/components/checkbox.styles.ts +6 -3
- package/src/components/empty-state.styles.ts +1 -1
- package/src/components/header.styles.ts +1 -1
- package/src/components/image.styles.ts +1 -1
- package/src/components/index.ts +18 -18
- package/src/components/modal.styles.ts +11 -2
- package/src/components/progress.styles.ts +1 -1
- package/src/components/radio.styles.ts +11 -2
- package/src/components/safe-area-registry.ts +81 -14
- package/src/components/screen.styles.ts +1 -1
- package/src/components/skeleton.styles.ts +1 -1
- package/src/components/status-colors.ts +59 -0
- package/src/components/surface.styles.ts +1 -1
- package/src/components/textfield.styles.ts +18 -15
- package/src/components/toast.styles.ts +32 -25
- package/src/components/toggle.styles.ts +21 -1
- package/src/icons/Icon.tsx +13 -8
- package/src/icons/icon.styles.ts +38 -3
- package/src/icons/index.ts +3 -3
- package/src/index.ts +4 -4
- package/src/primitives/Button.tsx +28 -14
- package/src/primitives/Metric.tsx +5 -4
- package/src/primitives/Row.tsx +4 -4
- package/src/primitives/Stack.tsx +4 -4
- package/src/primitives/Tag.tsx +29 -11
- package/src/primitives/Text.tsx +28 -11
- package/src/primitives/_internal/focus-ring.tsx +1 -1
- package/src/primitives/button.styles.ts +63 -10
- package/src/primitives/index.ts +6 -6
- package/src/primitives/metric.styles.ts +3 -3
- package/src/primitives/row.styles.ts +1 -1
- package/src/primitives/stack.styles.ts +1 -1
- package/src/primitives/tag.styles.ts +43 -4
- package/src/primitives/text.styles.ts +7 -12
- package/src/safe-area/index.ts +21 -7
- package/src/theme/ThemeProvider.tsx +8 -5
- package/src/theme/define-theme.ts +15 -2
- package/src/theme/index.ts +14 -17
- package/src/theme/letter-spacing.ts +17 -0
- package/src/theme/line-height.ts +9 -0
- package/src/theme/native-theme.ts +2 -2
- package/src/theme/types.ts +1 -1
|
@@ -6,16 +6,18 @@
|
|
|
6
6
|
* 構造一致している前提で theme.typography.fontSize[variant] を引く。乖離したら型エラーで検知
|
|
7
7
|
* される(= A-3 conformance の型レベル最低ライン、§2)。
|
|
8
8
|
* - 色は token キーのみ(生 hex 不可、§5 lint の意味を保つ)。
|
|
9
|
+
* - fontScale 制御(allowFontScaling / maxFontSizeMultiplier)は RN Text へ素通しする。
|
|
10
|
+
* 既定は未指定 = RN 既定(OS の文字サイズ設定に追随)。器が固定寸法の箇所だけ opt-in で絞る。
|
|
9
11
|
* - letterSpacing は role(heading/body) の ratio を fontSize から pt 換算(text.styles.ts)。
|
|
10
12
|
* - 形状(fontSize/lineHeight/letterSpacing/fontWeight)は variant/role/weight 依存なので useMemo で
|
|
11
|
-
* 分離(B-3 の「形状/色 分離 +
|
|
12
|
-
*
|
|
13
|
+
* 分離(B-3 の「形状/色 分離 + 参照安定性」は useMemo で満たす。StyleSheet 事前生成による
|
|
14
|
+
* 最適化はどのコンポーネントでも採っていない)。色のみ render 時に colors から取る。
|
|
13
15
|
*/
|
|
14
16
|
import { type ReactNode } from "react";
|
|
15
17
|
import { type StyleProp, type TextStyle } from "react-native";
|
|
16
|
-
import type { FontWeightKey, SemanticColors } from "../theme";
|
|
17
|
-
import { type VariantOf } from "../contracts/contract-types";
|
|
18
|
-
import { type TextRole } from "./text.styles";
|
|
18
|
+
import type { FontWeightKey, SemanticColors } from "../theme/index.js";
|
|
19
|
+
import { type VariantOf } from "../contracts/contract-types.js";
|
|
20
|
+
import { type TextRole } from "./text.styles.js";
|
|
19
21
|
type TextVariant = VariantOf<"text">;
|
|
20
22
|
interface TextProps {
|
|
21
23
|
/** fontSize の段階(contract variant)。default "base"。 */
|
|
@@ -27,11 +29,23 @@ interface TextProps {
|
|
|
27
29
|
/** letterSpacing の切替軸。default "body"。 */
|
|
28
30
|
role?: TextRole;
|
|
29
31
|
numberOfLines?: number;
|
|
32
|
+
/**
|
|
33
|
+
* OS の文字サイズ設定に追随するか(RN Text へそのまま透過)。既定は未指定 = RN 既定(true)。
|
|
34
|
+
* **原則は既定のまま**(false にすると視覚障害者の拡大設定を無視することになる)。
|
|
35
|
+
* 固定寸法の図版・チャートのラベルなど、拡大するとレイアウトが壊れる箇所だけ false にする。
|
|
36
|
+
*/
|
|
37
|
+
allowFontScaling?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 文字サイズ倍率の上限(RN Text へそのまま透過)。既定は未指定 = RN 既定(上限なし)。
|
|
40
|
+
* 拡大は許しつつ器からの溢れだけ抑えたいとき(円形の Avatar initials 等)に使う。
|
|
41
|
+
* `0` は「上限なし」、`1` は「拡大しない」という RN の規約に従う。
|
|
42
|
+
*/
|
|
43
|
+
maxFontSizeMultiplier?: number;
|
|
30
44
|
style?: StyleProp<TextStyle>;
|
|
31
45
|
testID?: string;
|
|
32
46
|
children: ReactNode;
|
|
33
47
|
}
|
|
34
|
-
export declare function Text({ variant, weight, color, role, numberOfLines, style, testID, children, }: TextProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export declare function Text({ variant, weight, color, role, numberOfLines, allowFontScaling, maxFontSizeMultiplier, style, testID, children, }: TextProps): import("react/jsx-runtime").JSX.Element;
|
|
35
49
|
export declare namespace Text {
|
|
36
50
|
var __contract: {
|
|
37
51
|
readonly id: "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAErC,UAAU,SAAS;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,yCAAyC;IACzC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAgB,EAChB,MAAM,EACN,KAAsB,EACtB,IAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAmCX;yBA9Ce,IAAI"}
|
|
@@ -1,26 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* button.styles — Button の pure style resolver(
|
|
2
|
+
* button.styles — Button の pure style resolver(styleRefs conformance 対応で Button.tsx から分離)。
|
|
3
3
|
*
|
|
4
4
|
* react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
|
|
5
5
|
* 直接実行できる。recipes/app/button.recipe.json(melta-contracts の styleRefs)との
|
|
6
|
-
* 機械照合は scripts/lib/recipe-conformance.test.ts
|
|
6
|
+
* 機械照合は scripts/lib/recipe-conformance.test.ts が行う(層B)。
|
|
7
|
+
*
|
|
8
|
+
* ⚠️ このファイルは resolver 機構の**最初の実装**で、戻り値が slot 単位に揃っていない
|
|
9
|
+
* (色だけを返し、寸法は component 側で組む)。現行の書き方は AGENTS.md「style resolver の規約」
|
|
10
|
+
* を参照すること — 新規 / 改修は alert.styles.ts・textfield.styles.ts の形に寄せる。
|
|
7
11
|
*/
|
|
8
|
-
import type { NativeTheme, ThemeMode, FontSizeKey, SpacingKey } from "../theme";
|
|
12
|
+
import type { NativeTheme, ThemeMode, FontSizeKey, SpacingKey } from "../theme/index.js";
|
|
9
13
|
export type ButtonVariant = "contained" | "outlined" | "brand-outline" | "neutral" | "lighted" | "danger" | "subtle";
|
|
10
14
|
export type ButtonSize = "small" | "medium" | "large";
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
/**
|
|
16
|
+
* size → 最小高さ / 横 padding / label fontSize / icon box(contract sizes/iconButton と整合)。
|
|
17
|
+
*
|
|
18
|
+
* `minHeight`(`height` ではない)なのは fontScale 対策。label は Text primitive の
|
|
19
|
+
* lineHeight(base = 36pt)で伸びるため、height 固定だと fontScale 1.12x あたりから
|
|
20
|
+
* medium(40pt)で文字がクリップする。recipe 側も 0.7.0 で `minHeight` に変わっている。
|
|
21
|
+
* iconOnly だけは正方形を保つため width/height 固定のまま(recipe の iconOnlyWidth/iconOnlyHeight)。
|
|
22
|
+
*/
|
|
23
|
+
export declare const BUTTON_SIZE_SPEC: Record<ButtonSize, {
|
|
24
|
+
minHeight: number;
|
|
14
25
|
px: SpacingKey;
|
|
15
26
|
font: FontSizeKey;
|
|
16
27
|
iconBox: number;
|
|
17
28
|
}>;
|
|
29
|
+
/**
|
|
30
|
+
* size → 縦方向の片側 hitSlop(実効タップ標的 44pt 確保。A11Y_MIN_TAP_TARGET_44)。
|
|
31
|
+
*
|
|
32
|
+
* 視覚寸法は据え置き、当たり判定だけを広げる:
|
|
33
|
+
* small 32 + 6*2 = 44 / medium 40 + 2*2 = 44 / large 48(既に 44 以上なので 0)
|
|
34
|
+
*
|
|
35
|
+
* ⚠️ literal で持つ(BUTTON_SIZE_SPEC から自動導出しない)。導出にすると視覚寸法を変えたときに
|
|
36
|
+
* hitSlop が黙って追随してしまい、conformance が構造的に fail-open になる。
|
|
37
|
+
*/
|
|
38
|
+
export declare const BUTTON_VERTICAL_HIT_SLOP: Record<ButtonSize, number>;
|
|
39
|
+
/** Pressable の hitSlop(RN の Insets)。 */
|
|
40
|
+
export interface ButtonHitSlop {
|
|
41
|
+
top: number;
|
|
42
|
+
bottom: number;
|
|
43
|
+
left?: number;
|
|
44
|
+
right?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* size / iconOnly → Pressable に渡す hitSlop。0 のときは undefined(prop を付けない)。
|
|
48
|
+
*
|
|
49
|
+
* - labeled: **縦だけ**。横は付けない — Row の gap 0 で隣接した Button 同士の当たり判定が
|
|
50
|
+
* 重なって押し違いが起きるため(横方向は padding で既に広い)。
|
|
51
|
+
* - iconOnly: 幅も 32/40 と狭い正方形なので**横にも同値**を付ける(左右の隣接は
|
|
52
|
+
* iconOnly ボタンを gap 0 で並べない前提。並べる場合は消費者側で gap を取る)。
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveButtonHitSlop(size: ButtonSize, iconOnly: boolean): ButtonHitSlop | undefined;
|
|
18
55
|
/**
|
|
19
56
|
* variant → 色解決(button.contract tokenRefs の 1:1 写像)。
|
|
20
57
|
* 文字色は variant により semantic 外(primary.500 等)もあるため hex 文字列で返し、
|
|
21
58
|
* Text の style で color 上書きする(Text の color prop は SemanticColors キー限定のため)。
|
|
22
59
|
*/
|
|
23
|
-
export declare function
|
|
60
|
+
export declare function resolveButtonColors(theme: NativeTheme, mode: ThemeMode, variant: ButtonVariant): {
|
|
24
61
|
bg?: string;
|
|
25
62
|
pressedBg?: string;
|
|
26
63
|
textColor: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/button.styles.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"button.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/button.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzF,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,UAAU,GACV,eAAe,GACf,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,UAAU,EACV;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAK1E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI/D,CAAC;AAEF,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,OAAO,GAChB,aAAa,GAAG,SAAS,CAM3B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,GACrB;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA6BzE"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** melta-app primitives の公開エントリ。実装ごとにここへ追記する(設計書 §1)。 */
|
|
2
|
-
export { Text } from "./Text";
|
|
3
|
-
export { Metric } from "./Metric";
|
|
4
|
-
export { Tag } from "./Tag";
|
|
5
|
-
export { Button } from "./Button";
|
|
6
|
-
export { Stack } from "./Stack";
|
|
7
|
-
export { Row } from "./Row";
|
|
2
|
+
export { Text } from "./Text.js";
|
|
3
|
+
export { Metric } from "./Metric.js";
|
|
4
|
+
export { Tag } from "./Tag.js";
|
|
5
|
+
export { Button } from "./Button.js";
|
|
6
|
+
export { Stack } from "./Stack.js";
|
|
7
|
+
export { Row } from "./Row.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* styleRefs)との機械照合は scripts/lib/metric-conformance.test.ts が行う。
|
|
7
7
|
*/
|
|
8
8
|
import type { FontVariant } from "react-native";
|
|
9
|
-
import type { NativeTheme, ThemeMode, FontSizeKey, FontWeightValue } from "../theme";
|
|
9
|
+
import type { NativeTheme, ThemeMode, FontSizeKey, FontWeightValue } from "../theme/index.js";
|
|
10
10
|
export type MetricSize = "sm" | "md" | "lg";
|
|
11
11
|
/**
|
|
12
12
|
* size → value / unit の fontSize token(metric.recipe sizes と整合)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAI9F,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAIrF,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,EAAE,CAAC;KAC5B,CAAC;IACF,kFAAkF;IAClF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mCAAmC;IACnC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,UAAU,GACf,YAAY,CA4Bd"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 直接実行できる。recipes/app/row.recipe.json(melta-contracts の styleRefs)との
|
|
6
6
|
* 機械照合は scripts/lib/row-conformance.test.ts が行う。
|
|
7
7
|
*/
|
|
8
|
-
import type { NativeTheme, SpacingKey } from "../theme";
|
|
8
|
+
import type { NativeTheme, SpacingKey } from "../theme/index.js";
|
|
9
9
|
/** 交差軸の配置(RN alignItems への写像)。default "center"(recipe default に焼いてある)。 */
|
|
10
10
|
export type RowAlign = "start" | "center" | "end" | "baseline" | "stretch";
|
|
11
11
|
/** 主軸の配置(RN justifyContent への写像)。default "start"(= RN デフォルト、style 出力なし)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/row.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"row.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/row.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3E,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;;CAML,CAAC;AAEX,QAAA,MAAM,WAAW;;;;;CAKP,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,KAAK,CAAC;IACrB,UAAU,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAgB,EAAE,OAAiB,EAAE,IAAY,EAAE,GAAE,aAAkB,GAC7E,QAAQ,CAQV"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 直接実行できる。recipes/app/stack.recipe.json(melta-contracts の styleRefs)との
|
|
6
6
|
* 機械照合は scripts/lib/stack-conformance.test.ts が行う。
|
|
7
7
|
*/
|
|
8
|
-
import type { NativeTheme, SpacingKey } from "../theme";
|
|
8
|
+
import type { NativeTheme, SpacingKey } from "../theme/index.js";
|
|
9
9
|
/** 交差軸の配置(RN alignItems への写像。default stretch = RN デフォルトなので出力しない)。 */
|
|
10
10
|
export type StackAlign = "start" | "center" | "end" | "stretch";
|
|
11
11
|
declare const ALIGN_MAP: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/stack.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stack.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/stack.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,QAAA,MAAM,SAAS;;;;;CAKL,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,EAAE,GAAG,EAAE,KAAiB,EAAE,GAAE,eAAoB,GAC/C,UAAU,CAMZ"}
|
|
@@ -5,8 +5,41 @@
|
|
|
5
5
|
* 直接実行できる。recipes/app/tag.recipe.json(melta-contracts の styleRefs)との
|
|
6
6
|
* 機械照合は scripts/lib/tag-conformance.test.ts が行う。
|
|
7
7
|
*/
|
|
8
|
-
import type { NativeTheme, ThemeMode, FontSizeKey } from "../theme";
|
|
8
|
+
import type { NativeTheme, ThemeMode, FontSizeKey } from "../theme/index.js";
|
|
9
9
|
export type TagVariant = "basic" | "removable" | "filter-chip";
|
|
10
|
+
/** label の fontSize token キー(component / resolver / 検算が同じキーを読む SSOT)。 */
|
|
11
|
+
export declare const TAG_SPEC: {
|
|
12
|
+
/** basic / removable の label。 */
|
|
13
|
+
readonly labelFont: "xs";
|
|
14
|
+
/** filter-chip の label(押せる要素なので一段大きい)。 */
|
|
15
|
+
readonly chipLabelFont: "sm";
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* removable の × の当たり判定(正典パターン: 視覚 24pt + hitSlop 10 = 実効 44pt)。
|
|
19
|
+
* 親 Tag の高さ(padding 駆動で 34pt 前後)を超えられないので × 自身に持たせる。
|
|
20
|
+
*/
|
|
21
|
+
export declare const TAG_REMOVE_TAP_TARGET: {
|
|
22
|
+
readonly minWidth: 24;
|
|
23
|
+
readonly minHeight: 24;
|
|
24
|
+
readonly hitSlop: 10;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* filter-chip(押せる chip 本体)の縦 hitSlop。
|
|
28
|
+
*
|
|
29
|
+
* chip は背景と枠を持つので minHeight で伸ばすと**見た目が変わる**(他 variant と高さが揃わない)。
|
|
30
|
+
* よって視覚寸法は据え置き、当たり判定だけ広げる:
|
|
31
|
+
* 視覚高さ 34pt(paddingVertical 4 × 2 + label sm の lineHeight 26)+ 5 × 2 = 44pt。
|
|
32
|
+
*
|
|
33
|
+
* padding 駆動なので fontScale で視覚高さ自体が伸びる = 拡大時に過剰な当たり判定にならない。
|
|
34
|
+
* ⚠️ literal で持つ(resolveTagFilterChipVisualHeight から導出しない)。導出にすると
|
|
35
|
+
* 寸法変更に hitSlop が黙って追随し、conformance が fail-open になる。
|
|
36
|
+
*/
|
|
37
|
+
export declare const TAG_FILTER_CHIP_VERTICAL_HIT_SLOP = 5;
|
|
38
|
+
/**
|
|
39
|
+
* filter-chip の視覚高さ(padding 駆動)。conformance が 44pt 到達を検算するための実測値。
|
|
40
|
+
* = paddingVertical × 2 + label(sm)の lineHeight。
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveTagFilterChipVisualHeight(theme: NativeTheme): number;
|
|
10
43
|
/** 共通形状(px-3 py-1 gap-1 rounded-full。tag.recipe の全 variant style と共通の寸法キー)。 */
|
|
11
44
|
export declare function resolveTagBase(theme: NativeTheme): {
|
|
12
45
|
gap: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/tag.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tag.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/tag.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI7E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;AAE/D,yEAAyE;AACzE,eAAO,MAAM,QAAQ;IACnB,iCAAiC;;IAEjC,0CAA0C;;CAE+B,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CAAuB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI3E;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAOA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,UAAU,EACnB,QAAQ,UAAQ,GACf;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAwB7F"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 直接実行できる。recipes/app/text.recipe.json(melta-contracts の styleRefs)との
|
|
6
6
|
* 機械照合は scripts/lib/text-conformance.test.ts が行う。
|
|
7
7
|
*/
|
|
8
|
-
import type { NativeTheme, FontSizeKey, FontWeightKey, FontWeightValue } from "../theme";
|
|
8
|
+
import type { NativeTheme, FontSizeKey, FontWeightKey, FontWeightValue } from "../theme/index.js";
|
|
9
9
|
/** letterSpacing の切替軸(text.recipe description の role prop に対応)。 */
|
|
10
10
|
export type TextRole = "heading" | "body";
|
|
11
11
|
/** Text の形状 style(mode 非依存部分。文字色は render 時に semantic colors から取る)。 */
|
|
@@ -18,9 +18,7 @@ export interface TextShape {
|
|
|
18
18
|
/**
|
|
19
19
|
* variant / role / weight → 形状解決(text.recipe styleRefs の 1:1 写像)。
|
|
20
20
|
* - fontSize token は複合値(px + lineHeight 比率)。theme 生成時に lineHeight は px 化済み。
|
|
21
|
-
* - letterSpacing は em 比率 token のため fontSize × ratio で pt
|
|
22
|
-
* theme の resolveLetterSpacing と同一式だが、theme index 経由の runtime import は
|
|
23
|
-
* ThemeProvider → react-native を引くため、pure に保つ目的でここでは式を直書きする。
|
|
21
|
+
* - letterSpacing は em 比率 token のため fontSize × ratio で pt 化する(resolveLetterSpacing)。
|
|
24
22
|
*/
|
|
25
23
|
export declare function resolveTextShape(theme: NativeTheme, variant: FontSizeKey, role: TextRole, weight?: FontWeightKey): TextShape;
|
|
26
24
|
//# sourceMappingURL=text.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/text.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"text.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/text.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMlG,mEAAmE;AACnE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1C,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,SAAS,CAUX"}
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
* import { enableSafeAreaContext } from "melta-app/safe-area";
|
|
12
12
|
* enableSafeAreaContext();
|
|
13
13
|
*
|
|
14
|
-
* これで Screen の SafeArea が useSafeAreaInsets() + View の
|
|
15
|
-
* Provider の context 値を render 中に同期参照して padding を付けるため、
|
|
16
|
-
* SafeAreaView の layout/state 更新を待たず、初回 render から inset が反映される。
|
|
14
|
+
* これで Screen / ActionSheet / BottomSheet の SafeArea が useSafeAreaInsets() + View の
|
|
15
|
+
* adapter に切り替わる。Provider の context 値を render 中に同期参照して padding を付けるため、
|
|
16
|
+
* native SafeAreaView の layout/state 更新を待たず、初回 render から inset が反映される。
|
|
17
|
+
* Android でも効く(RN core の SafeAreaView は Android では完全 no-op)。
|
|
17
18
|
*
|
|
18
19
|
* ⚠️ 前提: アプリの root に SafeAreaProvider が必要(無いと useSafeAreaInsets が throw
|
|
19
20
|
* する)。初回 render から正しい inset を使うには Provider に initialMetrics も渡す。
|
|
@@ -26,9 +27,22 @@
|
|
|
26
27
|
import { type Edge } from "react-native-safe-area-context";
|
|
27
28
|
/** enableSafeAreaContext() の設定。edges 省略時は従来相当の全 edge。 */
|
|
28
29
|
export interface EnableSafeAreaContextOptions {
|
|
29
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* **Screen の既定 edge**(`edges` prop を渡さなかった Screen に適用される)。
|
|
32
|
+
* tab bar 等が担当する edge は除外する。
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ 0.5.x までは「アプリ全体で 1 個のグローバル」だったが、edge は消費者ごとに
|
|
35
|
+
* 決まるべきものなので既定値の意味に変わった。ActionSheet / BottomSheet は画面下端に
|
|
36
|
+
* 出る都合上、ここの指定に関わらず自前の edge(bottom + 左右)を使う。
|
|
37
|
+
* 画面ごとに変えたい場合は `<Screen edges={["top"]} />` のように Screen 側で指定する。
|
|
38
|
+
*/
|
|
30
39
|
edges?: readonly Edge[];
|
|
31
40
|
}
|
|
32
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* melta の SafeArea を context 同期参照の View adapter に切り替える。
|
|
43
|
+
*
|
|
44
|
+
* registry には**ファクトリ**を渡す(消費者ごとに edges が違うため)。同じ edges 集合には
|
|
45
|
+
* 同じコンポーネント参照が返るよう memo するのは registry 側の責務。
|
|
46
|
+
*/
|
|
33
47
|
export declare function enableSafeAreaContext(options?: EnableSafeAreaContextOptions): void;
|
|
34
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/safe-area/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/safe-area/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAEL,KAAK,IAAI,EAEV,MAAM,gCAAgC,CAAC;AASxC,yDAAyD;AACzD,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;CACzB;AAyDD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,IAAI,CAEtF"}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* `defineTheme()` の戻り値だけ(define-theme.ts 参照)。
|
|
13
13
|
*/
|
|
14
14
|
import { type ReactNode } from "react";
|
|
15
|
-
import { type ResolvedCapabilities, type ResolvedNativeTheme } from "./define-theme";
|
|
16
|
-
import type { NativeTheme, SemanticColors, ThemeMode } from "./types";
|
|
15
|
+
import { type ResolvedCapabilities, type ResolvedNativeTheme } from "./define-theme.js";
|
|
16
|
+
import type { NativeTheme, SemanticColors, ThemeMode } from "./types.js";
|
|
17
17
|
export type { ThemeMode };
|
|
18
18
|
export interface ThemeContextValue {
|
|
19
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3E,OAAO,EAAmC,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAA2B,MAAM,
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3E,OAAO,EAAmC,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAA2B,MAAM,mBAAmB,CAAC;AAClJ,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzE,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB,gBAAgB;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,cAAc,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,oBAAoB,CAAC;CACpC;AAsCD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,2CAiChF;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* theme でも現状 **必須のまま**。①の射程は colorScheme 軸だけで、それらの capability 化は
|
|
20
20
|
* 後続(accent 依存の除去)で扱う。
|
|
21
21
|
*/
|
|
22
|
-
import type { NativeTheme, SemanticColors, ThemeColor, ThemeMode } from "./types";
|
|
22
|
+
import type { NativeTheme, SemanticColors, ThemeColor, ThemeMode } from "./types.js";
|
|
23
23
|
/**
|
|
24
24
|
* 開発ビルドか。**裸の `__DEV__` を直接書かないこと。**
|
|
25
25
|
*
|
|
@@ -78,9 +78,15 @@ export interface ThemeModeViolation {
|
|
|
78
78
|
* プロパティにも true を返すので、それで判定すると「持っていない mode に置いた番人の getter」を
|
|
79
79
|
* 値として数えてしまい、解決後の theme に対して常に light / dark 両方を返す(0.4.0 の不具合)。
|
|
80
80
|
* 入力(素のデータプロパティ)と解決後(番人つき)のどちらに対しても正しく答える必要がある。
|
|
81
|
+
*
|
|
82
|
+
* @experimental 公開しているが安定 API ではない。挙動・シグネチャは予告なく変わりうる。
|
|
81
83
|
*/
|
|
82
84
|
export declare function declaredModes(semantic: Partial<Record<ThemeMode, SemanticColors>>): ThemeMode[];
|
|
83
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* colorScheme capability を `color.semantic` のキー集合から導出する。
|
|
87
|
+
*
|
|
88
|
+
* @experimental 公開しているが安定 API ではない。挙動・シグネチャは予告なく変わりうる。
|
|
89
|
+
*/
|
|
84
90
|
export declare function deriveColorScheme(semantic: Partial<Record<ThemeMode, SemanticColors>>): ColorSchemeCapability;
|
|
85
91
|
/**
|
|
86
92
|
* capability が実際に描ける mode。
|
|
@@ -88,6 +94,8 @@ export declare function deriveColorScheme(semantic: Partial<Record<ThemeMode, Se
|
|
|
88
94
|
* 未知の値は**黙って light-dark 扱いにしない**。TypeScript を使わない消費者や、将来
|
|
89
95
|
* capability の値が増えたときに、誤った値が「両対応の theme」として通ってしまうと、
|
|
90
96
|
* 持っていない mode で描画されて初めて壊れる(=原因から遠い場所で落ちる)。
|
|
97
|
+
*
|
|
98
|
+
* @experimental 公開しているが安定 API ではない。挙動・シグネチャは予告なく変わりうる。
|
|
91
99
|
*/
|
|
92
100
|
export declare function supportedModes(colorScheme: ColorSchemeCapability): ThemeMode[];
|
|
93
101
|
/**
|
|
@@ -99,6 +107,8 @@ export declare function supportedModes(colorScheme: ColorSchemeCapability): Them
|
|
|
99
107
|
* - **`forcedMode` との不一致は報告する**。宣言同士の矛盾=呼び出し側の間違いなので violation を返す。
|
|
100
108
|
* ただし throw はしない(clamp して描き続ける)。厳格に落としたいテストや compiler が
|
|
101
109
|
* violation を error に昇格させる側の責務にする。
|
|
110
|
+
*
|
|
111
|
+
* @experimental 公開しているが安定 API ではない。挙動・シグネチャ・violation の内容は予告なく変わりうる。
|
|
102
112
|
*/
|
|
103
113
|
export declare function resolveMode(colorScheme: ColorSchemeCapability, forcedMode: ThemeMode | undefined, systemMode: ThemeMode): {
|
|
104
114
|
mode: ThemeMode;
|
|
@@ -127,6 +137,9 @@ export declare function validateTheme(options: ThemeOptions): string[];
|
|
|
127
137
|
*
|
|
128
138
|
* dev では validateTheme を1回通し、問題があれば throw する(構造が壊れた theme は
|
|
129
139
|
* 後段で必ず事故になるので早く落とす)。production では検査ごと省く。
|
|
140
|
+
*
|
|
141
|
+
* dev では**戻り値だけ**が入れ子まで再帰 freeze される。入力オブジェクトと公開 export の
|
|
142
|
+
* `nativeTheme` は `cloneTokenTree` で参照を切ってあるので凍らない(0.4.3 で意図的にこうした)。
|
|
130
143
|
*/
|
|
131
144
|
export declare function defineTheme(options: ThemeOptions): ResolvedNativeTheme;
|
|
132
145
|
//# sourceMappingURL=define-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/define-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAIV,WAAW,EAGX,cAAc,EAGd,UAAU,EACV,SAAS,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"define-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/define-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAIV,WAAW,EAGX,cAAc,EAGd,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,EAAE,OAID,CAAC;AAMpB,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9D,gEAAgE;IAChE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG;QACpC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;KACtD,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;CAC7C;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,oCAAoC;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,qBAAqB,CAAC;CACpC;AA0GD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,EAAE,CAG/F;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GACnD,qBAAqB,CAQvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,EAAE,CAa9E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,qBAAqB,EAClC,UAAU,EAAE,SAAS,GAAG,SAAS,EACjC,UAAU,EAAE,SAAS,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAgBrD;AA2BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CA0E7D;AA4FD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,mBAAmB,CA4BtE"}
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
* 型は types.ts、値は native-theme.ts(melta-contracts から自動生成)。
|
|
4
4
|
* 消費者ブランドの theme を注入する口は define-theme.ts(`defineTheme`)。
|
|
5
5
|
*/
|
|
6
|
-
export * from "./types";
|
|
7
|
-
export { nativeTheme } from "./native-theme";
|
|
8
|
-
export { ThemeProvider, useTheme } from "./ThemeProvider";
|
|
9
|
-
export type { ThemeContextValue, ThemeMode } from "./ThemeProvider";
|
|
10
|
-
export { defineTheme } from "./define-theme";
|
|
11
|
-
export { DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor, clampLineHeight, } from "./line-height";
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export { nativeTheme } from "./native-theme.js";
|
|
8
|
+
export { ThemeProvider, useTheme } from "./ThemeProvider.js";
|
|
9
|
+
export type { ThemeContextValue, ThemeMode } from "./ThemeProvider.js";
|
|
10
|
+
export { defineTheme } from "./define-theme.js";
|
|
11
|
+
export { DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor, clampLineHeight, } from "./line-height.js";
|
|
12
|
+
/**
|
|
13
|
+
* letterSpacingRatio(em 相当の比率)を適用先の fontSize から letterSpacing(pt) に解決する helper。
|
|
14
|
+
* 実体は pure module(./letter-spacing)。resolver 側は index を経由せず直接 import する
|
|
15
|
+
* (index は ThemeProvider = react-native を引くため)。
|
|
16
|
+
*/
|
|
17
|
+
export { resolveLetterSpacing } from "./letter-spacing.js";
|
|
12
18
|
/**
|
|
13
19
|
* 以下は theme の解決規則を外から検証・再利用するためのヘルパ。
|
|
14
20
|
* **@experimental — 安定 API ではない。** 挙動・シグネチャ・メッセージは予告なく変わりうる。
|
|
15
21
|
* アプリの実行時ロジックが依存する場合は、useTheme().capabilities を使うほうが安全。
|
|
16
22
|
*/
|
|
17
|
-
export { validateTheme, resolveMode, supportedModes, deriveColorScheme, declaredModes, } from "./define-theme";
|
|
18
|
-
export type { ColorSchemeCapability, ResolvedCapabilities, ResolvedNativeTheme, ThemeModeViolation, ThemeOptions, } from "./define-theme";
|
|
19
|
-
/**
|
|
20
|
-
* letterSpacingRatio(em 相当の比率)を、適用先の fontSize から RN の letterSpacing(pt) に解決する。
|
|
21
|
-
* 例: resolveLetterSpacing(18, theme.typography.letterSpacingRatio.body)
|
|
22
|
-
* theme.typography.letterSpacingRatio.* をそのまま style.letterSpacing に入れる誤用を避けるための helper。
|
|
23
|
-
*/
|
|
24
|
-
export declare function resolveLetterSpacing(fontSize: number, ratio: number): number;
|
|
23
|
+
export { validateTheme, resolveMode, supportedModes, deriveColorScheme, declaredModes, } from "./define-theme.js";
|
|
24
|
+
export type { ColorSchemeCapability, ResolvedCapabilities, ResolvedNativeTheme, ThemeModeViolation, ThemeOptions, } from "./define-theme.js";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B;;;;GAIG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* letter-spacing — letterSpacingRatio(em 相当の比率)→ RN の letterSpacing(pt) の解決。
|
|
3
|
+
*
|
|
4
|
+
* theme/index.ts は ThemeProvider(react-native 依存)を re-export するので、pure style resolver や
|
|
5
|
+
* node テストから index 経由でこの helper を引くと RN を巻き込んでしまう。そのため実体は
|
|
6
|
+
* line-height.ts と同じく **pure module** に置き、index.ts は re-export だけする
|
|
7
|
+
* (公開 API の位置と名前は不変)。以前は index.ts に実体があり、pure 側は同じ式を直書きしていた。
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* letterSpacingRatio(em 相当の比率)を、適用先の fontSize から RN の letterSpacing(pt) に解決する。
|
|
11
|
+
* 例: resolveLetterSpacing(18, theme.typography.letterSpacingRatio.body)
|
|
12
|
+
* theme.typography.letterSpacingRatio.* をそのまま style.letterSpacing に入れる誤用を避けるための helper。
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveLetterSpacing(fontSize: number, ratio: number): number;
|
|
15
|
+
//# sourceMappingURL=letter-spacing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"letter-spacing.d.ts","sourceRoot":"","sources":["../../../../src/theme/letter-spacing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E"}
|
|
@@ -21,6 +21,16 @@
|
|
|
21
21
|
* theme が `typography.minLineHeightRatio` を宣言しない場合にこの値へ倒れる(日本語安全側)。
|
|
22
22
|
*/
|
|
23
23
|
export declare const DEFAULT_MIN_LINE_HEIGHT_RATIO = 1.45;
|
|
24
|
+
/**
|
|
25
|
+
* theme が宣言する最小行間比を取り出す(未宣言なら既定へ倒す)。
|
|
26
|
+
* `theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO` を各 resolver が
|
|
27
|
+
* 写経すると、既定へ倒す規則が一箇所ずつ腐る(片方だけ ?? を落とす等)ためここに集約する。
|
|
28
|
+
*/
|
|
29
|
+
export declare function minRatioOf(theme: {
|
|
30
|
+
typography: {
|
|
31
|
+
minLineHeightRatio?: number;
|
|
32
|
+
};
|
|
33
|
+
}): number;
|
|
24
34
|
/**
|
|
25
35
|
* fontSize に対する安全な最小 lineHeight(px)。
|
|
26
36
|
* **切り上げ**であることが要点: 四捨五入だと 32 × 1.45 = 46.4 → 46 で下限を割る。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"line-height.d.ts","sourceRoot":"","sources":["../../../../src/theme/line-height.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER"}
|
|
1
|
+
{"version":3,"file":"line-height.d.ts","sourceRoot":"","sources":["../../../../src/theme/line-height.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,CAEzF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,GACf,MAAM,CAER"}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"native-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-theme.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,WAuNzB,CAAC"}
|
|
@@ -64,7 +64,7 @@ export interface ThemeTypography {
|
|
|
64
64
|
/**
|
|
65
65
|
* 初期は system default(未指定 = OS デフォルトフォント)。RN の fontFamily は string 一本で
|
|
66
66
|
* web の fallback 配列のようには効かず、Inter 等を焼くと expo-font でのロード必須になり実機で崩れる。
|
|
67
|
-
* Inter / JetBrains Mono の embed は expo-font
|
|
67
|
+
* Inter / JetBrains Mono の embed は expo-font を導入し、generator へ font マップを渡す形になる(未着手)。
|
|
68
68
|
* それまでは sans/mono とも未指定(= OS の sans / monospace)にする。
|
|
69
69
|
*/
|
|
70
70
|
fontFamily: {
|