melta-app 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +288 -152
  2. package/docs/architecture.md +92 -0
  3. package/eslint-rules/melta.mjs +26 -0
  4. package/lib/module/primitives/Text.js +18 -5
  5. package/lib/module/primitives/Text.js.map +1 -1
  6. package/lib/module/primitives/metric.styles.js +4 -1
  7. package/lib/module/primitives/metric.styles.js.map +1 -1
  8. package/lib/module/primitives/text.styles.js +7 -1
  9. package/lib/module/primitives/text.styles.js.map +1 -1
  10. package/lib/module/theme/define-theme.js +13 -0
  11. package/lib/module/theme/define-theme.js.map +1 -1
  12. package/lib/module/theme/index.js +1 -0
  13. package/lib/module/theme/index.js.map +1 -1
  14. package/lib/module/theme/line-height.js +43 -0
  15. package/lib/module/theme/line-height.js.map +1 -0
  16. package/lib/module/theme/native-theme.js +7 -6
  17. package/lib/module/theme/native-theme.js.map +1 -1
  18. package/lib/typescript/src/primitives/Text.d.ts.map +1 -1
  19. package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -1
  20. package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -1
  21. package/lib/typescript/src/theme/define-theme.d.ts.map +1 -1
  22. package/lib/typescript/src/theme/index.d.ts +1 -0
  23. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  24. package/lib/typescript/src/theme/line-height.d.ts +34 -0
  25. package/lib/typescript/src/theme/line-height.d.ts.map +1 -0
  26. package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
  27. package/lib/typescript/src/theme/types.d.ts +9 -0
  28. package/lib/typescript/src/theme/types.d.ts.map +1 -1
  29. package/llms.txt +2 -1
  30. package/package.json +1 -1
  31. package/src/primitives/Text.tsx +19 -3
  32. package/src/primitives/metric.styles.ts +8 -1
  33. package/src/primitives/text.styles.ts +10 -1
  34. package/src/theme/define-theme.ts +18 -0
  35. package/src/theme/index.ts +5 -0
  36. package/src/theme/line-height.ts +44 -0
  37. package/src/theme/native-theme.ts +7 -6
  38. package/src/theme/types.ts +9 -0
@@ -8,6 +8,10 @@
8
8
  * - no-raw-radius : borderRadius 系プロパティに数値リテラル直書き → error
9
9
  * - no-raw-spacing : padding/margin/gap 系に数値リテラル直書き → warn(false positive 多)
10
10
  * - no-raw-fontsize: fontSize に数値リテラル直書き → warn
11
+ *
12
+ * この severity は `meltaPlugin.configs.recommended`(flat config)として機械可読な形で配布する。
13
+ * 消費者が手で書き写すとドリフト源になるため(rally-nav の外部導入 T6、2026-08-04)、
14
+ * 推奨値の正本はこのファイルの RECOMMENDED_RULES であってドキュメントではない。
11
15
  */
12
16
 
13
17
  const COLOR_RE = /#[0-9a-fA-F]{3,8}\b|\brgba?\s*\(|\bhsla?\s*\(/;
@@ -96,3 +100,25 @@ export const meltaPlugin = {
96
100
  },
97
101
  },
98
102
  };
103
+
104
+ /**
105
+ * 推奨 severity の正本。
106
+ * error = 契約違反として止める / warn = false positive がありうるので助言に留める。
107
+ */
108
+ const RECOMMENDED_RULES = {
109
+ "melta/no-raw-color": "error",
110
+ "melta/no-raw-radius": "error",
111
+ "melta/no-raw-spacing": "warn",
112
+ "melta/no-raw-fontsize": "warn",
113
+ };
114
+
115
+ // flat config 慣行に従い、plugin 自身を参照する config は定義後に後付けする(自己参照の循環を避ける)。
116
+ // `files` はあえて指定しない — 適用範囲は消費者側の config 構成に委ねる
117
+ // (TS/TSX に絞りたい場合は spread して `files` を足す。README「カスタマイズする場合」参照)。
118
+ meltaPlugin.configs = {
119
+ recommended: {
120
+ name: "melta/recommended",
121
+ plugins: { melta: meltaPlugin },
122
+ rules: { ...RECOMMENDED_RULES },
123
+ },
124
+ };
@@ -15,8 +15,8 @@
15
15
  */
16
16
 
17
17
  import { useMemo } from "react";
18
- import { Text as RNText } from "react-native";
19
- import { useTheme } from "../theme/index.js";
18
+ import { StyleSheet, Text as RNText } from "react-native";
19
+ import { useTheme, DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor } from "../theme/index.js";
20
20
  import { CONTRACTS } from "../contracts/contract-types.js";
21
21
  import { resolveTextShape } from "./text.styles.js";
22
22
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -38,10 +38,23 @@ export function Text({
38
38
  // 形状(mode 非依存)は variant/role/weight にだけ依存させてメモ化(B-3)。
39
39
  // 決定ロジックは pure resolver(text.styles.ts)に分離済み — recipe との機械照合対象。
40
40
  const shape = useMemo(() => resolveTextShape(theme, variant, role, weight), [theme, variant, role, weight]);
41
+
42
+ // 消費者 style は合成順で最後=上書きが勝つため、resolver 内のクランプだけでは
43
+ // `style={{lineHeight: 16}}` を止められない。flatten した**最終値**に行間の安全下限を掛ける
44
+ // (fontSize の上書きにも追随させるため、下限は最終 fontSize から算出。機序は theme/line-height.ts)。
45
+ const flat = StyleSheet.flatten([shape, {
46
+ color: colors[color]
47
+ }, style]);
48
+ // `fontSize: undefined` の明示上書き(flatten は undefined でも上書きする)は、RN 既定サイズで
49
+ // 描画されるのにクランプ基準だけ variant 値になる齟齬を生む。variant の fontSize を復元して
50
+ // 「Text の文字サイズは variant が決める」契約とクランプ基準を一致させる。
51
+ if (typeof flat.fontSize !== "number") flat.fontSize = shape.fontSize;
52
+ if (flat.lineHeight !== undefined) {
53
+ const floor = minLineHeightFor(flat.fontSize ?? 0, theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO);
54
+ if (flat.lineHeight < floor) flat.lineHeight = floor;
55
+ }
41
56
  return /*#__PURE__*/_jsx(RNText, {
42
- style: [shape, {
43
- color: colors[color]
44
- }, style],
57
+ style: flat,
45
58
  numberOfLines: numberOfLines,
46
59
  accessibilityRole: role === "heading" ? "header" : undefined,
47
60
  testID: testID,
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","Text","RNText","useTheme","CONTRACTS","resolveTextShape","jsx","_jsx","variant","weight","color","role","numberOfLines","style","testID","children","theme","colors","shape","accessibilityRole","undefined","__contract","text"],"sourceRoot":"../../../src","sources":["primitives/Text.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,IAAIC,MAAM,QAAwC,cAAc;AAC7E,SAASC,QAAQ,QAAQ,mBAAU;AAEnC,SAASC,SAAS,QAAwB,gCAA6B;AACvE,SAASC,gBAAgB,QAAuB,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmBhE,OAAO,SAASN,IAAIA,CAAC;EACnBO,OAAO,GAAG,MAAM;EAChBC,MAAM;EACNC,KAAK,GAAG,cAAc;EACtBC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,KAAK;EACLC,MAAM;EACNC;AACS,CAAC,EAAE;EACZ,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGd,QAAQ,CAAC,CAAC;;EAEpC;EACA;EACA,MAAMe,KAAK,GAAGlB,OAAO,CACnB,MAAMK,gBAAgB,CAACW,KAAK,EAAER,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAAC,EACpD,CAACO,KAAK,EAAER,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAC/B,CAAC;EAED,oBACEF,IAAA,CAACL,MAAM;IACLW,KAAK,EAAE,CAACK,KAAK,EAAE;MAAER,KAAK,EAAEO,MAAM,CAACP,KAAK;IAAE,CAAC,EAAEG,KAAK,CAAE;IAChDD,aAAa,EAAEA,aAAc;IAC7BO,iBAAiB,EAAER,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAGS,SAAU;IAC7DN,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAEdA;EAAQ,CACH,CAAC;AAEb;;AAEA;AACAd,IAAI,CAACoB,UAAU,GAAGjB,SAAS,CAACkB,IAAI","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","StyleSheet","Text","RNText","useTheme","DEFAULT_MIN_LINE_HEIGHT_RATIO","minLineHeightFor","CONTRACTS","resolveTextShape","jsx","_jsx","variant","weight","color","role","numberOfLines","style","testID","children","theme","colors","shape","flat","flatten","fontSize","lineHeight","undefined","floor","typography","minLineHeightRatio","accessibilityRole","__contract","text"],"sourceRoot":"../../../src","sources":["primitives/Text.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,UAAU,EAAEC,IAAI,IAAIC,MAAM,QAAwC,cAAc;AACzF,SAASC,QAAQ,EAAEC,6BAA6B,EAAEC,gBAAgB,QAAQ,mBAAU;AAEpF,SAASC,SAAS,QAAwB,gCAA6B;AACvE,SAASC,gBAAgB,QAAuB,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmBhE,OAAO,SAASR,IAAIA,CAAC;EACnBS,OAAO,GAAG,MAAM;EAChBC,MAAM;EACNC,KAAK,GAAG,cAAc;EACtBC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,KAAK;EACLC,MAAM;EACNC;AACS,CAAC,EAAE;EACZ,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGhB,QAAQ,CAAC,CAAC;;EAEpC;EACA;EACA,MAAMiB,KAAK,GAAGrB,OAAO,CACnB,MAAMQ,gBAAgB,CAACW,KAAK,EAAER,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAAC,EACpD,CAACO,KAAK,EAAER,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAC/B,CAAC;;EAED;EACA;EACA;EACA,MAAMU,IAAe,GAAGrB,UAAU,CAACsB,OAAO,CAAC,CAACF,KAAK,EAAE;IAAER,KAAK,EAAEO,MAAM,CAACP,KAAK;EAAE,CAAC,EAAEG,KAAK,CAAC,CAAC;EACpF;EACA;EACA;EACA,IAAI,OAAOM,IAAI,CAACE,QAAQ,KAAK,QAAQ,EAAEF,IAAI,CAACE,QAAQ,GAAGH,KAAK,CAACG,QAAQ;EACrE,IAAIF,IAAI,CAACG,UAAU,KAAKC,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGrB,gBAAgB,CAC5BgB,IAAI,CAACE,QAAQ,IAAI,CAAC,EAClBL,KAAK,CAACS,UAAU,CAACC,kBAAkB,IAAIxB,6BACzC,CAAC;IACD,IAAIiB,IAAI,CAACG,UAAU,GAAGE,KAAK,EAAEL,IAAI,CAACG,UAAU,GAAGE,KAAK;EACtD;EAEA,oBACEjB,IAAA,CAACP,MAAM;IACLa,KAAK,EAAEM,IAAK;IACZP,aAAa,EAAEA,aAAc;IAC7Be,iBAAiB,EAAEhB,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAGY,SAAU;IAC7DT,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAEdA;EAAQ,CACH,CAAC;AAEb;;AAEA;AACAhB,IAAI,CAAC6B,UAAU,GAAGxB,SAAS,CAACyB,IAAI","ignoreList":[]}
@@ -8,6 +8,8 @@
8
8
  * styleRefs)との機械照合は scripts/lib/metric-conformance.test.ts が行う。
9
9
  */
10
10
 
11
+ // theme index からの runtime import は ThemeProvider → react-native を引くため pure module を直接参照
12
+ import { DEFAULT_MIN_LINE_HEIGHT_RATIO, clampLineHeight } from "../theme/line-height.js";
11
13
  /**
12
14
  * size → value / unit の fontSize token(metric.recipe sizes と整合)。
13
15
  * unit は value の1段下の fontSize(ベースライン揃え用)。
@@ -34,7 +36,8 @@ export function resolveMetricStyles(theme, mode, size) {
34
36
  return {
35
37
  valueStyle: {
36
38
  fontSize: fontSize[font.value].fontSize,
37
- lineHeight: fontSize[font.value].lineHeight,
39
+ // カスタム theme の未クランプ値への防波堤(text.styles.ts と同じ。根拠は theme/line-height.ts)
40
+ lineHeight: clampLineHeight(fontSize[font.value].fontSize, fontSize[font.value].lineHeight, theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO),
38
41
  fontWeight: theme.typography.fontWeight.bold,
39
42
  color: sem["text-heading"],
40
43
  fontVariant: ["tabular-nums"]
@@ -1 +1 @@
1
- {"version":3,"names":["METRIC_FONT","sm","value","unit","md","lg","resolveMetricStyles","theme","mode","size","sem","color","semantic","fontSize","typography","font","valueStyle","lineHeight","fontWeight","bold","fontVariant","unitStyle","medium","marginLeft","spacing","labelStyle"],"sourceRoot":"../../../src","sources":["primitives/metric.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAA0E,GAAG;EACxFC,EAAE,EAAE;IAAEC,KAAK,EAAE,IAAI;IAAEC,IAAI,EAAE;EAAO,CAAC;EACjCC,EAAE,EAAE;IAAEF,KAAK,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAK,CAAC;EAChCE,EAAE,EAAE;IAAEH,KAAK,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAK;AACjC,CAAC;AAyBD;AACA,OAAO,SAASG,mBAAmBA,CACjCC,KAAkB,EAClBC,IAAe,EACfC,IAAgB,EACF;EACd,MAAMC,GAAG,GAAGH,KAAK,CAACI,KAAK,CAACC,QAAQ,CAACJ,IAAI,CAAC;EACtC,MAAMK,QAAQ,GAAGN,KAAK,CAACO,UAAU,CAACD,QAAQ;EAC1C,MAAME,IAAI,GAAGf,WAAW,CAACS,IAAI,CAAC;EAC9B,OAAO;IACLO,UAAU,EAAE;MACVH,QAAQ,EAAEA,QAAQ,CAACE,IAAI,CAACb,KAAK,CAAC,CAACW,QAAQ;MACvCI,UAAU,EAAEJ,QAAQ,CAACE,IAAI,CAACb,KAAK,CAAC,CAACe,UAAU;MAC3CC,UAAU,EAAEX,KAAK,CAACO,UAAU,CAACI,UAAU,CAACC,IAAI;MAC5CR,KAAK,EAAED,GAAG,CAAC,cAAc,CAAC;MAC1BU,WAAW,EAAE,CAAC,cAAc;IAC9B,CAAC;IACDC,SAAS,EAAE;MACTR,QAAQ,EAAEA,QAAQ,CAACE,IAAI,CAACZ,IAAI,CAAC,CAACU,QAAQ;MACtCK,UAAU,EAAEX,KAAK,CAACO,UAAU,CAACI,UAAU,CAACI,MAAM;MAC9CX,KAAK,EAAED,GAAG,CAAC,YAAY,CAAC;MACxBa,UAAU,EAAEhB,KAAK,CAACiB,OAAO,CAAC,GAAG;IAC/B,CAAC;IACDC,UAAU,EAAE;MACVZ,QAAQ,EAAEA,QAAQ,CAACZ,EAAE,CAACY,QAAQ;MAC9BF,KAAK,EAAED,GAAG,CAAC,YAAY;IACzB;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_MIN_LINE_HEIGHT_RATIO","clampLineHeight","METRIC_FONT","sm","value","unit","md","lg","resolveMetricStyles","theme","mode","size","sem","color","semantic","fontSize","typography","font","valueStyle","lineHeight","minLineHeightRatio","fontWeight","bold","fontVariant","unitStyle","medium","marginLeft","spacing","labelStyle"],"sourceRoot":"../../../src","sources":["primitives/metric.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA,SAASA,6BAA6B,EAAEC,eAAe,QAAQ,yBAAsB;AAIrF;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAA0E,GAAG;EACxFC,EAAE,EAAE;IAAEC,KAAK,EAAE,IAAI;IAAEC,IAAI,EAAE;EAAO,CAAC;EACjCC,EAAE,EAAE;IAAEF,KAAK,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAK,CAAC;EAChCE,EAAE,EAAE;IAAEH,KAAK,EAAE,KAAK;IAAEC,IAAI,EAAE;EAAK;AACjC,CAAC;AAyBD;AACA,OAAO,SAASG,mBAAmBA,CACjCC,KAAkB,EAClBC,IAAe,EACfC,IAAgB,EACF;EACd,MAAMC,GAAG,GAAGH,KAAK,CAACI,KAAK,CAACC,QAAQ,CAACJ,IAAI,CAAC;EACtC,MAAMK,QAAQ,GAAGN,KAAK,CAACO,UAAU,CAACD,QAAQ;EAC1C,MAAME,IAAI,GAAGf,WAAW,CAACS,IAAI,CAAC;EAC9B,OAAO;IACLO,UAAU,EAAE;MACVH,QAAQ,EAAEA,QAAQ,CAACE,IAAI,CAACb,KAAK,CAAC,CAACW,QAAQ;MACvC;MACAI,UAAU,EAAElB,eAAe,CACzBc,QAAQ,CAACE,IAAI,CAACb,KAAK,CAAC,CAACW,QAAQ,EAC7BA,QAAQ,CAACE,IAAI,CAACb,KAAK,CAAC,CAACe,UAAU,EAC/BV,KAAK,CAACO,UAAU,CAACI,kBAAkB,IAAIpB,6BACzC,CAAC;MACDqB,UAAU,EAAEZ,KAAK,CAACO,UAAU,CAACK,UAAU,CAACC,IAAI;MAC5CT,KAAK,EAAED,GAAG,CAAC,cAAc,CAAC;MAC1BW,WAAW,EAAE,CAAC,cAAc;IAC9B,CAAC;IACDC,SAAS,EAAE;MACTT,QAAQ,EAAEA,QAAQ,CAACE,IAAI,CAACZ,IAAI,CAAC,CAACU,QAAQ;MACtCM,UAAU,EAAEZ,KAAK,CAACO,UAAU,CAACK,UAAU,CAACI,MAAM;MAC9CZ,KAAK,EAAED,GAAG,CAAC,YAAY,CAAC;MACxBc,UAAU,EAAEjB,KAAK,CAACkB,OAAO,CAAC,GAAG;IAC/B,CAAC;IACDC,UAAU,EAAE;MACVb,QAAQ,EAAEA,QAAQ,CAACZ,EAAE,CAACY,QAAQ;MAC9BF,KAAK,EAAED,GAAG,CAAC,YAAY;IACzB;EACF,CAAC;AACH","ignoreList":[]}
@@ -8,6 +8,10 @@
8
8
  * 機械照合は scripts/lib/text-conformance.test.ts が行う。
9
9
  */
10
10
 
11
+ // theme index からの runtime import は ThemeProvider → react-native を引くため、
12
+ // pure module(line-height.ts)を直接参照する(letterSpacing の式直書きと同じ理由)。
13
+ import { DEFAULT_MIN_LINE_HEIGHT_RATIO, clampLineHeight } from "../theme/line-height.js";
14
+
11
15
  /** letterSpacing の切替軸(text.recipe description の role prop に対応)。 */
12
16
 
13
17
  /** Text の形状 style(mode 非依存部分。文字色は render 時に semantic colors から取る)。 */
@@ -23,7 +27,9 @@ export function resolveTextShape(theme, variant, role, weight) {
23
27
  const fs = theme.typography.fontSize[variant];
24
28
  return {
25
29
  fontSize: fs.fontSize,
26
- lineHeight: fs.lineHeight,
30
+ // 既定 theme は codegen 時点でクランプ済みだが、defineTheme で注入されたカスタム theme の
31
+ // 値はここが最初の防波堤(機序と下限の根拠は theme/line-height.ts)。
32
+ lineHeight: clampLineHeight(fs.fontSize, fs.lineHeight, theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO),
27
33
  letterSpacing: fs.fontSize * theme.typography.letterSpacingRatio[role],
28
34
  ...(weight ? {
29
35
  fontWeight: theme.typography.fontWeight[weight]
@@ -1 +1 @@
1
- {"version":3,"names":["resolveTextShape","theme","variant","role","weight","fs","typography","fontSize","lineHeight","letterSpacing","letterSpacingRatio","fontWeight"],"sourceRoot":"../../../src","sources":["primitives/text.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAGA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAkB,EAClBC,OAAoB,EACpBC,IAAc,EACdC,MAAsB,EACX;EACX,MAAMC,EAAE,GAAGJ,KAAK,CAACK,UAAU,CAACC,QAAQ,CAACL,OAAO,CAAC;EAC7C,OAAO;IACLK,QAAQ,EAAEF,EAAE,CAACE,QAAQ;IACrBC,UAAU,EAAEH,EAAE,CAACG,UAAU;IACzBC,aAAa,EAAEJ,EAAE,CAACE,QAAQ,GAAGN,KAAK,CAACK,UAAU,CAACI,kBAAkB,CAACP,IAAI,CAAC;IACtE,IAAIC,MAAM,GAAG;MAAEO,UAAU,EAAEV,KAAK,CAACK,UAAU,CAACK,UAAU,CAACP,MAAM;IAAE,CAAC,GAAG,IAAI;EACzE,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_MIN_LINE_HEIGHT_RATIO","clampLineHeight","resolveTextShape","theme","variant","role","weight","fs","typography","fontSize","lineHeight","minLineHeightRatio","letterSpacing","letterSpacingRatio","fontWeight"],"sourceRoot":"../../../src","sources":["primitives/text.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA,SAASA,6BAA6B,EAAEC,eAAe,QAAQ,yBAAsB;;AAErF;;AAGA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,KAAkB,EAClBC,OAAoB,EACpBC,IAAc,EACdC,MAAsB,EACX;EACX,MAAMC,EAAE,GAAGJ,KAAK,CAACK,UAAU,CAACC,QAAQ,CAACL,OAAO,CAAC;EAC7C,OAAO;IACLK,QAAQ,EAAEF,EAAE,CAACE,QAAQ;IACrB;IACA;IACAC,UAAU,EAAET,eAAe,CACzBM,EAAE,CAACE,QAAQ,EACXF,EAAE,CAACG,UAAU,EACbP,KAAK,CAACK,UAAU,CAACG,kBAAkB,IAAIX,6BACzC,CAAC;IACDY,aAAa,EAAEL,EAAE,CAACE,QAAQ,GAAGN,KAAK,CAACK,UAAU,CAACK,kBAAkB,CAACR,IAAI,CAAC;IACtE,IAAIC,MAAM,GAAG;MAAEQ,UAAU,EAAEX,KAAK,CAACK,UAAU,CAACM,UAAU,CAACR,MAAM;IAAE,CAAC,GAAG,IAAI;EACzE,CAAC;AACH","ignoreList":[]}
@@ -310,6 +310,19 @@ export function validateTheme(options) {
310
310
  problems.push(`${where}: ${label} に欠けているキー — ${missing.join(", ")}`);
311
311
  }
312
312
  }
313
+
314
+ // minLineHeightRatio は任意欄だが、書くなら実在しうる比率であること
315
+ // (0.9 のような「詰め」を宣言されると clamp が下限の意味を失う。上限は設けない——
316
+ // 行間をいくら広げても字形は欠けないので、広い分には嘘にならない)。
317
+ // missingKeys と同じ方針で **accessor は呼ばない**(値の直読みは消費者の開発用プローブを
318
+ // 発火させ、「defineTheme は accessor を1度も呼ばない」契約を破る)。data property のみ検査する。
319
+ const minRatioDesc = options.typography !== null && typeof options.typography === "object" ? Object.getOwnPropertyDescriptor(options.typography, "minLineHeightRatio") : undefined;
320
+ if (minRatioDesc !== undefined && "value" in minRatioDesc && minRatioDesc.value !== undefined) {
321
+ const minRatio = minRatioDesc.value;
322
+ if (typeof minRatio !== "number" || !Number.isFinite(minRatio) || minRatio < 1) {
323
+ problems.push(`${where}: typography.minLineHeightRatio が不正 — ${String(minRatio)}(フォント実測の 1 以上の有限数を宣言する。根拠は theme/line-height.ts)`);
324
+ }
325
+ }
313
326
  const status = options.color?.status;
314
327
  if (status !== null && typeof status === "object") {
315
328
  for (const kind of STATUS_KINDS) {
@@ -1 +1 @@
1
- {"version":3,"names":["isDev","__DEV__","globalThis","process","env","NODE_ENV","keysOf","map","Object","keys","MODES","light","dark","SEMANTIC_KEYS","PRIMARY_KEYS","STATUS_KINDS","success","warning","danger","STATUS_COLOR_KEYS","base","subtleLight","textLight","subtleDark","textDark","SPACING_KEYS","RADIUS_KEYS","sm","md","lg","full","ELEVATION_KEYS","none","overlay","FONT_SIZE_KEYS","xxs","xs","xl","FONT_WEIGHT_KEYS","normal","medium","semibold","bold","declaredModes","semantic","withValue","Set","filter","mode","has","deriveColorScheme","modes","length","Error","supportedModes","colorScheme","unknown","String","resolveMode","forcedMode","systemMode","supported","requested","includes","resolved","undefined","violation","kind","missingKeys","target","key","descriptor","getOwnPropertyDescriptor","value","validateTheme","options","problems","where","id","color","push","unknownModes","missing","join","groups","primary","spacing","radius","elevation","typography","fontSize","fontWeight","status","label","prototype","hasOwnProperty","call","installMissingModeGuards","defineProperty","enumerable","configurable","get","isPlainObject","proto","getPrototypeOf","cloneTokenTree","Array","isArray","item","source","getOwnPropertyDescriptors","Reflect","ownKeys","defineProperties","deepFreeze","isFrozen","freeze","descriptors","values","defineTheme","owned","theme","capabilities","$$melta"],"sourceRoot":"../../../src","sources":["theme/define-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isDev","__DEV__","globalThis","process","env","NODE_ENV","keysOf","map","Object","keys","MODES","light","dark","SEMANTIC_KEYS","PRIMARY_KEYS","STATUS_KINDS","success","warning","danger","STATUS_COLOR_KEYS","base","subtleLight","textLight","subtleDark","textDark","SPACING_KEYS","RADIUS_KEYS","sm","md","lg","full","ELEVATION_KEYS","none","overlay","FONT_SIZE_KEYS","xxs","xs","xl","FONT_WEIGHT_KEYS","normal","medium","semibold","bold","declaredModes","semantic","withValue","Set","filter","mode","has","deriveColorScheme","modes","length","Error","supportedModes","colorScheme","unknown","String","resolveMode","forcedMode","systemMode","supported","requested","includes","resolved","undefined","violation","kind","missingKeys","target","key","descriptor","getOwnPropertyDescriptor","value","validateTheme","options","problems","where","id","color","push","unknownModes","missing","join","groups","primary","spacing","radius","elevation","typography","fontSize","fontWeight","status","label","minRatioDesc","minRatio","Number","isFinite","prototype","hasOwnProperty","call","installMissingModeGuards","defineProperty","enumerable","configurable","get","isPlainObject","proto","getPrototypeOf","cloneTokenTree","Array","isArray","item","source","getOwnPropertyDescriptors","Reflect","ownKeys","defineProperties","deepFreeze","isFrozen","freeze","descriptors","values","defineTheme","owned","theme","capabilities","$$melta"],"sourceRoot":"../../../src","sources":["theme/define-theme.ts"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ export * from "./types.js";
10
10
  export { nativeTheme } from "./native-theme.js";
11
11
  export { ThemeProvider, useTheme } from "./ThemeProvider.js";
12
12
  export { defineTheme } from "./define-theme.js";
13
+ export { DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor, clampLineHeight } from "./line-height.js";
13
14
  /**
14
15
  * 以下は theme の解決規則を外から検証・再利用するためのヘルパ。
15
16
  * **@experimental — 安定 API ではない。** 挙動・シグネチャ・メッセージは予告なく変わりうる。
@@ -1 +1 @@
1
- {"version":3,"names":["nativeTheme","ThemeProvider","useTheme","defineTheme","validateTheme","resolveMode","supportedModes","deriveColorScheme","declaredModes","resolveLetterSpacing","fontSize","ratio"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,cAAc,YAAS;AACvB,SAASA,WAAW,QAAQ,mBAAgB;AAC5C,SAASC,aAAa,EAAEC,QAAQ,QAAQ,oBAAiB;AAEzD,SAASC,WAAW,QAAQ,mBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,QACR,mBAAgB;AASvB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,QAAgB,EAAEC,KAAa,EAAU;EAC5E,OAAOD,QAAQ,GAAGC,KAAK;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["nativeTheme","ThemeProvider","useTheme","defineTheme","DEFAULT_MIN_LINE_HEIGHT_RATIO","minLineHeightFor","clampLineHeight","validateTheme","resolveMode","supportedModes","deriveColorScheme","declaredModes","resolveLetterSpacing","fontSize","ratio"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,cAAc,YAAS;AACvB,SAASA,WAAW,QAAQ,mBAAgB;AAC5C,SAASC,aAAa,EAAEC,QAAQ,QAAQ,oBAAiB;AAEzD,SAASC,WAAW,QAAQ,mBAAgB;AAC5C,SACEC,6BAA6B,EAC7BC,gBAAgB,EAChBC,eAAe,QACV,kBAAe;AACtB;AACA;AACA;AACA;AACA;AACA,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,QACR,mBAAgB;AASvB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,QAAgB,EAAEC,KAAa,EAAU;EAC5E,OAAOD,QAAQ,GAAGC,KAAK;AACzB","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * line-height — 行間の安全下限(フォントの字形を欠かせない最小 lineHeight)。
5
+ *
6
+ * なぜ要るか(2026-08-05 modelog dogfood で実害):
7
+ * RN Android の CustomLineHeightSpan は `leading = lineHeight - (ascent + descent)` を計算し、
8
+ * leading が負になると不足分を行の上下から半分ずつ削って帳尻を合わせる。削られた領域の字形
9
+ * (濁点は行の上端にある)は Text 既定の overflow: hidden で消える——「ギ」が「チ」に見える。
10
+ * web はこの機序を持たないため、web の実描画検査では検出できない(Android 実機のみで発現)。
11
+ *
12
+ * 下限は使用フォントのメトリクス(ascent + descent)に依存するが、melta はフォントを同梱しない
13
+ * (system フォント運用)ので、既定は **Android の日本語 system フォント Noto Sans CJK JP の
14
+ * 実測 1.448**(hhea: (1160 + 288) / 1000。AOSP 版・Google Fonts 版とも同値、2026-08-06 実測)
15
+ * を切り上げた 1.45 とする。iOS(Hiragino 1.50 相当)にはこの clip 機序が無いので基準にしない。
16
+ *
17
+ * フォントを同梱する消費者は、そのフォントの実測比率を theme の
18
+ * `typography.minLineHeightRatio` で宣言する(例: LINE Seed JP = 1.61)。
19
+ * 宣言が既定より小さいラテン専用フォント(例: Inter 1.21)も同じ口で下げられる。
20
+ */
21
+
22
+ /**
23
+ * 既定の最小行間比。Android system 日本語フォント(Noto Sans CJK JP)の実測 1.448 の切り上げ。
24
+ * theme が `typography.minLineHeightRatio` を宣言しない場合にこの値へ倒れる(日本語安全側)。
25
+ */
26
+ export const DEFAULT_MIN_LINE_HEIGHT_RATIO = 1.45;
27
+
28
+ /**
29
+ * fontSize に対する安全な最小 lineHeight(px)。
30
+ * **切り上げ**であることが要点: 四捨五入だと 32 × 1.45 = 46.4 → 46 で下限を割る。
31
+ */
32
+ export function minLineHeightFor(fontSize, minRatio) {
33
+ return Math.ceil(fontSize * minRatio);
34
+ }
35
+
36
+ /**
37
+ * 宣言された lineHeight を安全下限でクランプする。
38
+ * 宣言値が下限以上ならそのまま(意匠の行間はどこまでも広げられる。詰める方向だけを止める)。
39
+ */
40
+ export function clampLineHeight(fontSize, declaredLineHeight, minRatio) {
41
+ return Math.max(declaredLineHeight, minLineHeightFor(fontSize, minRatio));
42
+ }
43
+ //# sourceMappingURL=line-height.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_MIN_LINE_HEIGHT_RATIO","minLineHeightFor","fontSize","minRatio","Math","ceil","clampLineHeight","declaredLineHeight","max"],"sourceRoot":"../../../src","sources":["theme/line-height.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMA,6BAA6B,GAAG,IAAI;;AAEjD;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,QAAgB,EAAEC,QAAgB,EAAU;EAC3E,OAAOC,IAAI,CAACC,IAAI,CAACH,QAAQ,GAAGC,QAAQ,CAAC;AACvC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASG,eAAeA,CAC7BJ,QAAgB,EAChBK,kBAA0B,EAC1BJ,QAAgB,EACR;EACR,OAAOC,IAAI,CAACI,GAAG,CAACD,kBAAkB,EAAEN,gBAAgB,CAACC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;AAC3E","ignoreList":[]}
@@ -81,11 +81,11 @@ export const nativeTheme = {
81
81
  "fontSize": {
82
82
  "xxs": {
83
83
  "fontSize": 10,
84
- "lineHeight": 14
84
+ "lineHeight": 15
85
85
  },
86
86
  "xs": {
87
87
  "fontSize": 13,
88
- "lineHeight": 18
88
+ "lineHeight": 19
89
89
  },
90
90
  "sm": {
91
91
  "fontSize": 15,
@@ -101,15 +101,15 @@ export const nativeTheme = {
101
101
  },
102
102
  "xl": {
103
103
  "fontSize": 22,
104
- "lineHeight": 31
104
+ "lineHeight": 32
105
105
  },
106
106
  "2xl": {
107
107
  "fontSize": 26,
108
- "lineHeight": 36
108
+ "lineHeight": 38
109
109
  },
110
110
  "3xl": {
111
111
  "fontSize": 32,
112
- "lineHeight": 45
112
+ "lineHeight": 47
113
113
  }
114
114
  },
115
115
  "fontWeight": {
@@ -121,7 +121,8 @@ export const nativeTheme = {
121
121
  "letterSpacingRatio": {
122
122
  "heading": 0.01,
123
123
  "body": 0.02
124
- }
124
+ },
125
+ "minLineHeightRatio": 1.45
125
126
  },
126
127
  "spacing": {
127
128
  "1": 4,
@@ -1 +1 @@
1
- {"version":3,"names":["nativeTheme"],"sourceRoot":"../../../src","sources":["theme/native-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nativeTheme"],"sourceRoot":"../../../src","sources":["theme/native-theme.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEhE,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAErC,UAAU,SAAS;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,yCAAyC;IACzC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAgB,EAChB,MAAM,EACN,KAAsB,EACtB,IAAa,EACb,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAoBX;yBA7Be,IAAI"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/primitives/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAA8B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEhE,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAErC,UAAU,SAAS;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;IAC7B,yCAAyC;IACzC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAgB,EAChB,MAAM,EACN,KAAsB,EACtB,IAAa,EACb,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAoCX;yBA7Ce,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAIrF,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,EAAE,CAAC;KAC5B,CAAC;IACF,kFAAkF;IAClF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,eAAe,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mCAAmC;IACnC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,UAAU,GACf,YAAY,CAuBd"}
1
+ {"version":3,"file":"metric.styles.d.ts","sourceRoot":"","sources":["../../../../src/primitives/metric.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIrF,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"}
@@ -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,UAAU,CAAC;AAEzF,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;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,SAAS,CAQX"}
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,UAAU,CAAC;AAKzF,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;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,SAAS,CAcX"}
@@ -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,SAAS,CAAC;AAMjB;;;;;;;;;;;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;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,EAAE,CAG/F;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GACnD,qBAAqB,CAQvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,EAAE,CAa9E;AAMD;;;;;;;;;GASG;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,CAwD7D;AA4FD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,mBAAmB,CA4BtE"}
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,SAAS,CAAC;AAMjB;;;;;;;;;;;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;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,EAAE,CAG/F;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,GACnD,qBAAqB,CAQvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,EAAE,CAa9E;AAMD;;;;;;;;;GASG;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;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,mBAAmB,CA4BtE"}
@@ -8,6 +8,7 @@ export { nativeTheme } from "./native-theme";
8
8
  export { ThemeProvider, useTheme } from "./ThemeProvider";
9
9
  export type { ThemeContextValue, ThemeMode } from "./ThemeProvider";
10
10
  export { defineTheme } from "./define-theme";
11
+ export { DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor, clampLineHeight, } from "./line-height";
11
12
  /**
12
13
  * 以下は theme の解決規則を外から検証・再利用するためのヘルパ。
13
14
  * **@experimental — 安定 API ではない。** 挙動・シグネチャ・メッセージは予告なく変わりうる。
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * line-height — 行間の安全下限(フォントの字形を欠かせない最小 lineHeight)。
3
+ *
4
+ * なぜ要るか(2026-08-05 modelog dogfood で実害):
5
+ * RN Android の CustomLineHeightSpan は `leading = lineHeight - (ascent + descent)` を計算し、
6
+ * leading が負になると不足分を行の上下から半分ずつ削って帳尻を合わせる。削られた領域の字形
7
+ * (濁点は行の上端にある)は Text 既定の overflow: hidden で消える——「ギ」が「チ」に見える。
8
+ * web はこの機序を持たないため、web の実描画検査では検出できない(Android 実機のみで発現)。
9
+ *
10
+ * 下限は使用フォントのメトリクス(ascent + descent)に依存するが、melta はフォントを同梱しない
11
+ * (system フォント運用)ので、既定は **Android の日本語 system フォント Noto Sans CJK JP の
12
+ * 実測 1.448**(hhea: (1160 + 288) / 1000。AOSP 版・Google Fonts 版とも同値、2026-08-06 実測)
13
+ * を切り上げた 1.45 とする。iOS(Hiragino 1.50 相当)にはこの clip 機序が無いので基準にしない。
14
+ *
15
+ * フォントを同梱する消費者は、そのフォントの実測比率を theme の
16
+ * `typography.minLineHeightRatio` で宣言する(例: LINE Seed JP = 1.61)。
17
+ * 宣言が既定より小さいラテン専用フォント(例: Inter 1.21)も同じ口で下げられる。
18
+ */
19
+ /**
20
+ * 既定の最小行間比。Android system 日本語フォント(Noto Sans CJK JP)の実測 1.448 の切り上げ。
21
+ * theme が `typography.minLineHeightRatio` を宣言しない場合にこの値へ倒れる(日本語安全側)。
22
+ */
23
+ export declare const DEFAULT_MIN_LINE_HEIGHT_RATIO = 1.45;
24
+ /**
25
+ * fontSize に対する安全な最小 lineHeight(px)。
26
+ * **切り上げ**であることが要点: 四捨五入だと 32 × 1.45 = 46.4 → 46 で下限を割る。
27
+ */
28
+ export declare function minLineHeightFor(fontSize: number, minRatio: number): number;
29
+ /**
30
+ * 宣言された lineHeight を安全下限でクランプする。
31
+ * 宣言値が下限以上ならそのまま(意匠の行間はどこまでも広げられる。詰める方向だけを止める)。
32
+ */
33
+ export declare function clampLineHeight(fontSize: number, declaredLineHeight: number, minRatio: number): number;
34
+ //# sourceMappingURL=line-height.d.ts.map
@@ -0,0 +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 +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,WAsNzB,CAAC"}
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,WAuNzB,CAAC"}
@@ -84,6 +84,15 @@ export interface ThemeTypography {
84
84
  heading: number;
85
85
  body: number;
86
86
  };
87
+ /**
88
+ * 使用フォントが要求する最小行間比((ascent + descent) / unitsPerEm)。
89
+ * これを下回る lineHeight は RN Android で字形の描画領域を削り、濁点などが欠ける
90
+ * (機序と既定値 1.45 の根拠は theme/line-height.ts のコメント)。
91
+ * style resolver は `clampLineHeight()` でこの比率を下限として適用する。
92
+ * 未宣言は DEFAULT_MIN_LINE_HEIGHT_RATIO(1.45 = Android system 日本語フォント基準)へ倒れる。
93
+ * フォントを同梱する消費者は実測値を宣言する(例: LINE Seed JP = 1.61)。
94
+ */
95
+ minLineHeightRatio?: number;
87
96
  }
88
97
  /**
89
98
  * elevation 1段。iOS は shadow* を、Android は elevation を読む(互いに無視するので
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/types.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -6,7 +6,8 @@ UI を組む前に docs/patterns.md(組み方の規範)を読むこと。exa
6
6
 
7
7
  ## Docs
8
8
 
9
- - [README.md](https://github.com/tsubotax/melta-app#readme): 全体像(Install / 設計の核 / トークン正規化 / コンポーネント表)
9
+ - [README.md](https://github.com/tsubotax/melta-app#readme): 使う側の全体像(Quickstart / 利用側コードの lint 強制層 / コンポーネント表 / テーマ注入 / 制約)
10
+ - [architecture.md](https://github.com/tsubotax/melta-app/blob/main/docs/architecture.md): 触る側の台帳(ディレクトリ構成 / トークン正規化 web→RN / 実装ステータス詳細 / CI)
10
11
  - [patterns.md](https://app.melta.tsubotax.com/docs/patterns.md): フォーム等「組み方」の規範 + コピペ可能スニペット(実コードと drift 検査済み)
11
12
  - [showcase](https://app.melta.tsubotax.com/): Live Catalog(実 RN コンポーネントの web export)+ 実装状態の全量表
12
13
  - [tokens.json](https://melta.tsubotax.com/design/contracts/tokens.json): デザイントークン(契約 SSOT の配信面)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melta-app",
3
- "version": "0.5.2",
3
+ "version": "0.6.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",
@@ -13,8 +13,8 @@
13
13
  */
14
14
 
15
15
  import { useMemo, type ReactNode } from "react";
16
- import { Text as RNText, type StyleProp, type TextStyle } from "react-native";
17
- import { useTheme } from "../theme";
16
+ import { StyleSheet, Text as RNText, type StyleProp, type TextStyle } from "react-native";
17
+ import { useTheme, DEFAULT_MIN_LINE_HEIGHT_RATIO, minLineHeightFor } from "../theme";
18
18
  import type { FontWeightKey, SemanticColors } from "../theme";
19
19
  import { CONTRACTS, type VariantOf } from "../contracts/contract-types";
20
20
  import { resolveTextShape, type TextRole } from "./text.styles";
@@ -55,9 +55,25 @@ export function Text({
55
55
  [theme, variant, role, weight],
56
56
  );
57
57
 
58
+ // 消費者 style は合成順で最後=上書きが勝つため、resolver 内のクランプだけでは
59
+ // `style={{lineHeight: 16}}` を止められない。flatten した**最終値**に行間の安全下限を掛ける
60
+ // (fontSize の上書きにも追随させるため、下限は最終 fontSize から算出。機序は theme/line-height.ts)。
61
+ const flat: TextStyle = StyleSheet.flatten([shape, { color: colors[color] }, style]);
62
+ // `fontSize: undefined` の明示上書き(flatten は undefined でも上書きする)は、RN 既定サイズで
63
+ // 描画されるのにクランプ基準だけ variant 値になる齟齬を生む。variant の fontSize を復元して
64
+ // 「Text の文字サイズは variant が決める」契約とクランプ基準を一致させる。
65
+ if (typeof flat.fontSize !== "number") flat.fontSize = shape.fontSize;
66
+ if (flat.lineHeight !== undefined) {
67
+ const floor = minLineHeightFor(
68
+ flat.fontSize ?? 0,
69
+ theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO,
70
+ );
71
+ if (flat.lineHeight < floor) flat.lineHeight = floor;
72
+ }
73
+
58
74
  return (
59
75
  <RNText
60
- style={[shape, { color: colors[color] }, style]}
76
+ style={flat}
61
77
  numberOfLines={numberOfLines}
62
78
  accessibilityRole={role === "heading" ? "header" : undefined}
63
79
  testID={testID}
@@ -8,6 +8,8 @@
8
8
 
9
9
  import type { FontVariant } from "react-native";
10
10
  import type { NativeTheme, ThemeMode, FontSizeKey, FontWeightValue } from "../theme";
11
+ // theme index からの runtime import は ThemeProvider → react-native を引くため pure module を直接参照
12
+ import { DEFAULT_MIN_LINE_HEIGHT_RATIO, clampLineHeight } from "../theme/line-height";
11
13
 
12
14
  export type MetricSize = "sm" | "md" | "lg";
13
15
 
@@ -56,7 +58,12 @@ export function resolveMetricStyles(
56
58
  return {
57
59
  valueStyle: {
58
60
  fontSize: fontSize[font.value].fontSize,
59
- lineHeight: fontSize[font.value].lineHeight,
61
+ // カスタム theme の未クランプ値への防波堤(text.styles.ts と同じ。根拠は theme/line-height.ts)
62
+ lineHeight: clampLineHeight(
63
+ fontSize[font.value].fontSize,
64
+ fontSize[font.value].lineHeight,
65
+ theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO,
66
+ ),
60
67
  fontWeight: theme.typography.fontWeight.bold,
61
68
  color: sem["text-heading"],
62
69
  fontVariant: ["tabular-nums"],
@@ -7,6 +7,9 @@
7
7
  */
8
8
 
9
9
  import type { NativeTheme, FontSizeKey, FontWeightKey, FontWeightValue } from "../theme";
10
+ // theme index からの runtime import は ThemeProvider → react-native を引くため、
11
+ // pure module(line-height.ts)を直接参照する(letterSpacing の式直書きと同じ理由)。
12
+ import { DEFAULT_MIN_LINE_HEIGHT_RATIO, clampLineHeight } from "../theme/line-height";
10
13
 
11
14
  /** letterSpacing の切替軸(text.recipe description の role prop に対応)。 */
12
15
  export type TextRole = "heading" | "body";
@@ -35,7 +38,13 @@ export function resolveTextShape(
35
38
  const fs = theme.typography.fontSize[variant];
36
39
  return {
37
40
  fontSize: fs.fontSize,
38
- lineHeight: fs.lineHeight,
41
+ // 既定 theme は codegen 時点でクランプ済みだが、defineTheme で注入されたカスタム theme の
42
+ // 値はここが最初の防波堤(機序と下限の根拠は theme/line-height.ts)。
43
+ lineHeight: clampLineHeight(
44
+ fs.fontSize,
45
+ fs.lineHeight,
46
+ theme.typography.minLineHeightRatio ?? DEFAULT_MIN_LINE_HEIGHT_RATIO,
47
+ ),
39
48
  letterSpacing: fs.fontSize * theme.typography.letterSpacingRatio[role],
40
49
  ...(weight ? { fontWeight: theme.typography.fontWeight[weight] } : null),
41
50
  };