melta-app 0.9.0 → 0.10.1

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 (42) hide show
  1. package/README.md +25 -0
  2. package/lib/module/components/Card.js +3 -2
  3. package/lib/module/components/Card.js.map +1 -1
  4. package/lib/module/components/Header.js +35 -12
  5. package/lib/module/components/Header.js.map +1 -1
  6. package/lib/module/components/Skeleton.js +4 -3
  7. package/lib/module/components/Skeleton.js.map +1 -1
  8. package/lib/module/components/card.styles.js +13 -6
  9. package/lib/module/components/card.styles.js.map +1 -1
  10. package/lib/module/components/header.styles.js +41 -2
  11. package/lib/module/components/header.styles.js.map +1 -1
  12. package/lib/module/components/skeleton.styles.js +26 -15
  13. package/lib/module/components/skeleton.styles.js.map +1 -1
  14. package/lib/module/contracts/contract-types.js +2 -2
  15. package/lib/module/contracts/contract-types.js.map +1 -1
  16. package/lib/module/index.js +1 -0
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/typescript/src/components/Card.d.ts +3 -1
  19. package/lib/typescript/src/components/Card.d.ts.map +1 -1
  20. package/lib/typescript/src/components/Header.d.ts +10 -6
  21. package/lib/typescript/src/components/Header.d.ts.map +1 -1
  22. package/lib/typescript/src/components/Skeleton.d.ts +3 -1
  23. package/lib/typescript/src/components/Skeleton.d.ts.map +1 -1
  24. package/lib/typescript/src/components/card.styles.d.ts +8 -1
  25. package/lib/typescript/src/components/card.styles.d.ts.map +1 -1
  26. package/lib/typescript/src/components/header.styles.d.ts +12 -20
  27. package/lib/typescript/src/components/header.styles.d.ts.map +1 -1
  28. package/lib/typescript/src/components/skeleton.styles.d.ts +8 -1
  29. package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -1
  30. package/lib/typescript/src/contracts/contract-types.d.ts +2 -2
  31. package/lib/typescript/src/index.d.ts +1 -0
  32. package/lib/typescript/src/index.d.ts.map +1 -1
  33. package/llms.txt +1 -1
  34. package/package.json +2 -2
  35. package/src/components/Card.tsx +5 -2
  36. package/src/components/Header.tsx +25 -12
  37. package/src/components/Skeleton.tsx +6 -3
  38. package/src/components/card.styles.ts +12 -6
  39. package/src/components/header.styles.ts +32 -11
  40. package/src/components/skeleton.styles.ts +10 -4
  41. package/src/contracts/contract-types.ts +2 -2
  42. package/src/index.ts +2 -0
package/README.md CHANGED
@@ -683,3 +683,28 @@ variant省略時は従来どおり可視タイトルを表示します。
683
683
  320/393px幅・大きな子要素の余白と44pt標的を測定できます。Playwrightは検証環境に用意し、
684
684
  別のインストールを使う場合は `--playwright-module <playwrightのディレクトリ>` を渡します。
685
685
  この実描画検査は手動レーンで、OSの文字拡大・読み上げ確認は別途必要です。
686
+
687
+ ### 中央タイトルのHeader
688
+
689
+ `variant="centered"` は親のページ余白内に置く中央タイトル(内側横余白と下線なし)、
690
+ `variant="navigation"` は左右のページ余白と端末hairlineを持つ詳細画面用です。
691
+ いずれも最小高44で、左右に同じ幅を予約し、長いタイトルは1行で省略します。
692
+ 左右slotには44ptの単独アイコン操作を渡してください。幅の広い文字操作はdefault/actionsを使います。
693
+ 見出しと左右操作は独立した読み上げ対象です。
694
+
695
+ ```tsx
696
+ <Header variant="centered" title="ホーム" />
697
+ <Header variant="navigation" title="詳細" leading={backButton} />
698
+ ```
699
+
700
+ 中央タイトルの組版はlg/boldです。長い動的タイトルは`titleVariant="base"`で1段下げられます。
701
+ `wrapTitle={heading => <Animated.View ...>{heading}</Animated.View>}`で見出しを保持したまま
702
+ 外部のアニメーションを適用できます。非表示中はwrapperに`aria-hidden`等を設定し、
703
+ 戻る操作まで隠さないでください。MeltaはReanimatedへ依存しません。
704
+
705
+ `HEADER_CENTERED_MIN_HEIGHT`は初期見積もり用です。スクロール退避は可能な限りonLayoutの実測値を使い、
706
+ 文字拡大時の高くなったHeaderを固定高で切らないでください。
707
+
708
+ ### Card / Skeletonの影なし指定
709
+
710
+ `<Card elevation="none">...</Card>` と `<Skeleton variant="card" elevation="none" />` は背景・枠・余白を維持して影だけを除く。省略時の `default` は従来どおり。Cardのaction/linkもnoneなら押下中に影が付かない。Skeletonのtext/circleは影のトークンを参照しない。
@@ -56,6 +56,7 @@ const reported = new Set();
56
56
 
57
57
  export function Card({
58
58
  variant = "basic",
59
+ elevation = "default",
59
60
  header,
60
61
  footer,
61
62
  media,
@@ -105,7 +106,7 @@ export function Card({
105
106
  return /*#__PURE__*/_jsx(View, {
106
107
  role: "article",
107
108
  testID: testID,
108
- style: [resolveCardShape(theme, mode, variant), style],
109
+ style: [resolveCardShape(theme, mode, variant, false, elevation), style],
109
110
  children: content
110
111
  });
111
112
  }
@@ -122,7 +123,7 @@ export function Card({
122
123
  testID: testID,
123
124
  style: ({
124
125
  pressed
125
- }) => [resolveCardShape(theme, mode, variant, pressed), style],
126
+ }) => [resolveCardShape(theme, mode, variant, pressed, elevation), style],
126
127
  children: content
127
128
  });
128
129
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Pressable","View","useTheme","CONTRACTS","isDev","CARD_INTERACTIVE","resolveCardShape","resolveCardBodyStyle","validateCardProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","reported","Set","Card","variant","header","footer","media","onPress","primaryAction","style","testID","children","theme","mode","interactive","problem","has","add","console","error","isMedia","inner","content","borderRadius","radius","lg","overflow","role","accessible","pressed","__contract","card"],"sourceRoot":"../../../src","sources":["components/Card.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,SAAS,QAA2C,OAAO;AACpE,SAASC,SAAS,EAAEC,IAAI,QAAwC,cAAc;AAC9E,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,KAAK,QAAQ,0BAA0B;AAChD,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,oBAAoB,QAAQ,kBAAkB;AAC3F,SAASC,iBAAiB,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAOA,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAAS,CAAC;;AAYlC;AACA;;AAgBA,OAAO,SAASC,IAAIA,CAAC;EACnBC,OAAO,GAAG,OAAO;EACjBC,MAAM;EACNC,MAAM;EACNC,KAAK;EACLC,OAAO;EACPC,aAAa;EACbC,KAAK;EACLC,MAAM;EACNC;AACS,CAAC,EAAE;EACZ,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAG1B,QAAQ,CAAC,CAAC;EAClC,MAAM2B,WAAW,GAAGxB,gBAAgB,CAACa,OAAO,CAAC,IAAII,OAAO,IAAI,IAAI;EAEhEvB,SAAS,CAAC,MAAM;IACd,IAAI,CAACK,KAAK,EAAE;IACZ,KAAK,MAAM0B,OAAO,IAAItB,iBAAiB,CAAC;MAAEU,OAAO;MAAEI,OAAO;MAAEC;IAAc,CAAC,CAAC,EAAE;MAC5E,IAAIR,QAAQ,CAACgB,GAAG,CAACD,OAAO,CAAC,EAAE;MAC3Bf,QAAQ,CAACiB,GAAG,CAACF,OAAO,CAAC;MACrBG,OAAO,CAACC,KAAK,CAAC,UAAUJ,OAAO,EAAE,CAAC;IACpC;EACF,CAAC,EAAE,CAACZ,OAAO,EAAEI,OAAO,EAAEC,aAAa,CAAC,CAAC;EACrC,MAAMY,OAAO,GAAGjB,OAAO,KAAK,OAAO;EAEnC,MAAMkB,KAAK,gBACTxB,KAAA,CAAAE,SAAA;IAAAY,QAAA,GACGL,KAAK,IAAI,IAAI,iBAAIX,IAAA,CAACT,IAAI;MAAAyB,QAAA,EAAEL;IAAK,CAAO,CAAC,eACtCT,KAAA,CAACX,IAAI;MAACuB,KAAK,EAAEjB,oBAAoB,CAACoB,KAAK,EAAET,OAAO,CAAE;MAAAQ,QAAA,GAC/CP,MAAM,EACNO,QAAQ,EACRN,MAAM,EACNG,aAAa;IAAA,CACV,CAAC;EAAA,CACP,CACH;;EAED;EACA;EACA,MAAMc,OAAO,GAAGF,OAAO,gBACrBzB,IAAA,CAACT,IAAI;IAACuB,KAAK,EAAE;MAAEc,YAAY,EAAEX,KAAK,CAACY,MAAM,CAACC,EAAE;MAAEC,QAAQ,EAAE;IAAS,CAAE;IAAAf,QAAA,EAAEU;EAAK,CAAO,CAAC,GAElFA,KACD;EAED,IAAI,CAACP,WAAW,EAAE;IAChB,oBACEnB,IAAA,CAACT,IAAI;MAACyC,IAAI,EAAC,SAAS;MAACjB,MAAM,EAAEA,MAAO;MAACD,KAAK,EAAE,CAAClB,gBAAgB,CAACqB,KAAK,EAAEC,IAAI,EAAEV,OAAO,CAAC,EAAEM,KAAK,CAAE;MAAAE,QAAA,EACzFW;IAAO,CACJ,CAAC;EAEX;;EAEA;EACA,oBACE3B,IAAA,CAACV,SAAS;IACR0C,IAAI,EAAC,SAAS;IACdpB,OAAO,EAAEA;IACT;IACA;IACA;IAAA;IACAqB,UAAU,EAAE,KAAM;IAClBlB,MAAM,EAAEA,MAAO;IACfD,KAAK,EAAEA,CAAC;MAAEoB;IAAQ,CAAC,KAAK,CAACtC,gBAAgB,CAACqB,KAAK,EAAEC,IAAI,EAAEV,OAAO,EAAE0B,OAAO,CAAC,EAAEpB,KAAK,CAAE;IAAAE,QAAA,EAEhFW;EAAO,CACC,CAAC;AAEhB;;AAEA;AACA;AACApB,IAAI,CAAC4B,UAAU,GAAG1C,SAAS,CAAC2C,IAAI","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","Pressable","View","useTheme","CONTRACTS","isDev","CARD_INTERACTIVE","resolveCardShape","resolveCardBodyStyle","validateCardProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","reported","Set","Card","variant","elevation","header","footer","media","onPress","primaryAction","style","testID","children","theme","mode","interactive","problem","has","add","console","error","isMedia","inner","content","borderRadius","radius","lg","overflow","role","accessible","pressed","__contract","card"],"sourceRoot":"../../../src","sources":["components/Card.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,19 +2,23 @@
2
2
 
3
3
  /**
4
4
  * Header — 画面名と左右の操作を持つ共通ヘッダー。
5
- * actionsでは画面名を視覚的に隠すが、独立したa11y見出しとして残す。
6
- * 余白・下線・見出しの配置はheader recipeとpure resolverが所有する。
5
+ * 配置・余白・見出しの組版を所有し、navigationやタイトルのアニメーションは利用側が渡す。
7
6
  */
8
7
  import { useMemo } from "react";
9
- import { View } from "react-native";
8
+ import { StyleSheet, View } from "react-native";
10
9
  import { useTheme } from "../theme/index.js";
11
10
  import { CONTRACTS } from "../contracts/contract-types.js";
12
11
  import { Text } from "../primitives/Text.js";
13
- import { HEADER_SPEC, resolveHeaderStyle } from "./header.styles.js";
12
+ import { HEADER_SPEC, isCenteredHeader, resolveHeaderStyle } from "./header.styles.js";
13
+
14
+ /** 中央タイトルの最小高。スクロール量には可能な限りonLayoutの実測を使う。 */
14
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ export const HEADER_CENTERED_MIN_HEIGHT = HEADER_SPEC.centeredMinHeight;
15
17
  export function Header({
16
18
  title,
17
19
  variant = "default",
20
+ titleVariant = HEADER_SPEC.centeredTitleFont,
21
+ wrapTitle,
18
22
  leading,
19
23
  trailing,
20
24
  style,
@@ -27,19 +31,35 @@ export function Header({
27
31
  const {
28
32
  containerStyle,
29
33
  titleWrapStyle,
30
- hiddenTitleStyle
34
+ hiddenTitleStyle,
35
+ leadingStyle,
36
+ trailingStyle
31
37
  } = useMemo(() => resolveHeaderStyle(theme, mode, {
32
38
  variant
33
- }), [theme, mode, variant]);
39
+ }, StyleSheet.hairlineWidth), [theme, mode, variant]);
40
+ const centered = isCenteredHeader(variant);
41
+ // 中央タイトルは既存の本文字間を維持し、独立した見出しの意味をwrapperで与える。
42
+ const centeredTitle = centered ? /*#__PURE__*/_jsx(View, {
43
+ accessible: true,
44
+ accessibilityRole: "header",
45
+ accessibilityLabel: title,
46
+ children: /*#__PURE__*/_jsx(Text, {
47
+ variant: titleVariant,
48
+ weight: HEADER_SPEC.titleWeight,
49
+ color: HEADER_SPEC.titleColor,
50
+ numberOfLines: 1,
51
+ children: title
52
+ })
53
+ }) : null;
34
54
  return /*#__PURE__*/_jsxs(View, {
35
55
  style: [containerStyle, style],
36
56
  testID: testID,
37
- children: [leading, /*#__PURE__*/_jsx(View, {
57
+ children: [centered ? /*#__PURE__*/_jsx(View, {
58
+ style: leadingStyle,
59
+ children: leading
60
+ }) : leading, /*#__PURE__*/_jsx(View, {
38
61
  style: titleWrapStyle,
39
- children: variant === "actions" ?
40
- /*#__PURE__*/
41
- // 見出しTextの契約を再利用し、左右の操作を親の読み上げへ畳まない。
42
- _jsx(View, {
62
+ children: centered ? wrapTitle ? wrapTitle(centeredTitle) : centeredTitle : variant === "actions" ? /*#__PURE__*/_jsx(View, {
43
63
  pointerEvents: "none",
44
64
  style: hiddenTitleStyle,
45
65
  children: /*#__PURE__*/_jsx(Text, {
@@ -58,7 +78,10 @@ export function Header({
58
78
  numberOfLines: 1,
59
79
  children: title
60
80
  })
61
- }), trailing]
81
+ }), centered ? /*#__PURE__*/_jsx(View, {
82
+ style: trailingStyle,
83
+ children: trailing
84
+ }) : trailing]
62
85
  });
63
86
  }
64
87
  Header.__contract = CONTRACTS.header;
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","View","useTheme","CONTRACTS","Text","HEADER_SPEC","resolveHeaderStyle","jsx","_jsx","jsxs","_jsxs","Header","title","variant","leading","trailing","style","testID","theme","mode","containerStyle","titleWrapStyle","hiddenTitleStyle","children","pointerEvents","titleFont","weight","titleWeight","color","titleColor","role","numberOfLines","__contract","header"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAwB,gCAAgC;AAC1E,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAarE,OAAO,SAASC,MAAMA,CAAC;EAAEC,KAAK;EAAEC,OAAO,GAAG,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAoB,CAAC,EAAE;EACpG,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGjB,QAAQ,CAAC,CAAC;EAClC,MAAM;IAAEkB,cAAc;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGtB,OAAO,CAClE,MAAMM,kBAAkB,CAACY,KAAK,EAAEC,IAAI,EAAE;IAAEN;EAAQ,CAAC,CAAC,EAAE,CAACK,KAAK,EAAEC,IAAI,EAAEN,OAAO,CAC3E,CAAC;EACD,oBACEH,KAAA,CAACT,IAAI;IAACe,KAAK,EAAE,CAACI,cAAc,EAAEJ,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAM,QAAA,GAClDT,OAAO,eACRN,IAAA,CAACP,IAAI;MAACe,KAAK,EAAEK,cAAe;MAAAE,QAAA,EACzBV,OAAO,KAAK,SAAS;MAAA;MACpB;MACAL,IAAA,CAACP,IAAI;QAACuB,aAAa,EAAC,MAAM;QAACR,KAAK,EAAEM,gBAAiB;QAAAC,QAAA,eACjDf,IAAA,CAACJ,IAAI;UAACS,OAAO,EAAER,WAAW,CAACoB,SAAU;UAACC,MAAM,EAAErB,WAAW,CAACsB,WAAY;UACpEC,KAAK,EAAEvB,WAAW,CAACwB,UAAW;UAACC,IAAI,EAAC,SAAS;UAACC,aAAa,EAAE,CAAE;UAAAR,QAAA,EAC9DX;QAAK,CACF;MAAC,CACH,CAAC,gBAEPJ,IAAA,CAACJ,IAAI;QAACS,OAAO,EAAER,WAAW,CAACoB,SAAU;QAACC,MAAM,EAAErB,WAAW,CAACsB,WAAY;QACpEC,KAAK,EAAEvB,WAAW,CAACwB,UAAW;QAACC,IAAI,EAAC,SAAS;QAACC,aAAa,EAAE,CAAE;QAAAR,QAAA,EAC9DX;MAAK,CACF;IACP,CACG,CAAC,EACNG,QAAQ;EAAA,CACL,CAAC;AAEX;AACAJ,MAAM,CAACqB,UAAU,GAAG7B,SAAS,CAAC8B,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","StyleSheet","View","useTheme","CONTRACTS","Text","HEADER_SPEC","isCenteredHeader","resolveHeaderStyle","jsx","_jsx","jsxs","_jsxs","HEADER_CENTERED_MIN_HEIGHT","centeredMinHeight","Header","title","variant","titleVariant","centeredTitleFont","wrapTitle","leading","trailing","style","testID","theme","mode","containerStyle","titleWrapStyle","hiddenTitleStyle","leadingStyle","trailingStyle","hairlineWidth","centered","centeredTitle","accessible","accessibilityRole","accessibilityLabel","children","weight","titleWeight","color","titleColor","numberOfLines","pointerEvents","titleFont","role","__contract","header"],"sourceRoot":"../../../src","sources":["components/Header.tsx"],"mappings":"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","ignoreList":[]}
@@ -20,10 +20,11 @@ import { AccessibilityInfo, Animated, View } from "react-native";
20
20
  import { Surface } from "./Surface.js";
21
21
  import { useTheme } from "../theme/index.js";
22
22
  import { CONTRACTS } from "../contracts/contract-types.js";
23
- import { CARD_SURFACE_SPEC, PULSE_OPACITY, SKELETON_METRICS, resolveSkeletonStates, resolveSkeletonVariants } from "./skeleton.styles.js";
23
+ import { resolveSkeletonSurfaceProps, PULSE_OPACITY, SKELETON_METRICS, resolveSkeletonStates, resolveSkeletonVariants } from "./skeleton.styles.js";
24
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
25
  export function Skeleton({
26
26
  variant = "text",
27
+ elevation = "default",
27
28
  width = "100%",
28
29
  lines = 1,
29
30
  accessibilityLabel = "読み込み中",
@@ -34,7 +35,7 @@ export function Skeleton({
34
35
  theme,
35
36
  mode
36
37
  } = useTheme();
37
- const styles = useMemo(() => resolveSkeletonVariants(theme, mode), [theme, mode]);
38
+ const styles = useMemo(() => resolveSkeletonVariants(theme, mode, elevation), [theme, mode, elevation]);
38
39
  // 初期値 opacityFrom = 非アニメ(reduce-motion でも光らない)。reduce-motion OFF を確認後にのみ loop で揺らす。
39
40
  const opacity = useRef(new Animated.Value(PULSE_OPACITY.from)).current;
40
41
  useEffect(() => {
@@ -88,7 +89,7 @@ export function Skeleton({
88
89
  borderColor
89
90
  } = styles.card.style;
90
91
  return /*#__PURE__*/_jsx(Surface, {
91
- ...CARD_SURFACE_SPEC,
92
+ ...resolveSkeletonSurfaceProps(elevation),
92
93
  // contract skeleton.card は border-default を要求(Surface は border を出さないので Skeleton で付与)。
93
94
  style: [{
94
95
  borderWidth,
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","AccessibilityInfo","Animated","View","Surface","useTheme","CONTRACTS","CARD_SURFACE_SPEC","PULSE_OPACITY","SKELETON_METRICS","resolveSkeletonStates","resolveSkeletonVariants","jsx","_jsx","jsxs","_jsxs","Skeleton","variant","width","lines","accessibilityLabel","style","testID","theme","mode","styles","opacity","Value","from","current","cancelled","loop","anim","loading","animation","isReduceMotionEnabled","then","reduce","sequence","timing","toValue","opacityTo","duration","useNativeDriver","opacityFrom","start","stop","a11y","accessible","accessibilityState","busy","circle","barStyle","card","borderWidth","borderColor","children","gap","spacing","flexDirection","alignItems","circleSize","height","borderRadius","radius","full","backgroundColor","flex","textBar","text","Array","length","_unused","i","__contract","skeleton"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useMemo","useRef","AccessibilityInfo","Animated","View","Surface","useTheme","CONTRACTS","resolveSkeletonSurfaceProps","PULSE_OPACITY","SKELETON_METRICS","resolveSkeletonStates","resolveSkeletonVariants","jsx","_jsx","jsxs","_jsxs","Skeleton","variant","elevation","width","lines","accessibilityLabel","style","testID","theme","mode","styles","opacity","Value","from","current","cancelled","loop","anim","loading","animation","isReduceMotionEnabled","then","reduce","sequence","timing","toValue","opacityTo","duration","useNativeDriver","opacityFrom","start","stop","a11y","accessible","accessibilityState","busy","circle","barStyle","card","borderWidth","borderColor","children","gap","spacing","flexDirection","alignItems","circleSize","height","borderRadius","radius","full","backgroundColor","flex","textBar","text","Array","length","_unused","i","__contract","skeleton"],"sourceRoot":"../../../src","sources":["components/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,13 @@
8
8
  * との機械照合は scripts/lib/card-conformance.test.ts が行う。
9
9
  */
10
10
 
11
+ export const CARD_SPEC = {
12
+ radius: "lg",
13
+ padding: "6",
14
+ elevation: "sm",
15
+ pressedElevation: "md",
16
+ flatElevation: "none"
17
+ };
11
18
  /** variant → インタラクティブ(Pressable)か。action/link のみ true(recipe pressedStyle の有無と対応)。 */
12
19
  export const CARD_INTERACTIVE = {
13
20
  basic: false,
@@ -25,26 +32,26 @@ export const CARD_INTERACTIVE = {
25
32
  * 消えるため(contract は media でも elevation.sm 要求)。media のクリップは内側の clip View で行う。
26
33
  * - media は内側 clip View が padding を持つ(resolveCardBodyStyle / recipe bodyStyle)ので外枠は padding なし。
27
34
  */
28
- export function resolveCardShape(theme, mode, variant, pressed = false) {
35
+ export function resolveCardShape(theme, mode, variant, pressed = false, elevation = "default") {
29
36
  const sem = theme.color.semantic[mode];
30
- const elevation = pressed && CARD_INTERACTIVE[variant] ? "md" : "sm";
37
+ const elevationKey = elevation === "none" ? CARD_SPEC.flatElevation : pressed && CARD_INTERACTIVE[variant] ? CARD_SPEC.pressedElevation : CARD_SPEC.elevation;
31
38
  return {
32
39
  backgroundColor: sem["bg-surface"],
33
- borderRadius: theme.radius.lg,
40
+ borderRadius: theme.radius[CARD_SPEC.radius],
34
41
  borderWidth: 1,
35
42
  borderColor: sem["border-default"],
36
43
  // media は内側 clip View が padding を持つので外枠は padding なし。
37
44
  ...(variant === "media" ? null : {
38
- padding: theme.spacing["6"]
45
+ padding: theme.spacing[CARD_SPEC.padding]
39
46
  }),
40
- ...theme.elevation[elevation]
47
+ ...theme.elevation[elevationKey]
41
48
  };
42
49
  }
43
50
 
44
51
  /** media の body padding(内側 clip View 側が持つ。recipe bodyStyle の写像)。media 以外は undefined。 */
45
52
  export function resolveCardBodyStyle(theme, variant) {
46
53
  return variant === "media" ? {
47
- padding: theme.spacing["6"]
54
+ padding: theme.spacing[CARD_SPEC.padding]
48
55
  } : undefined;
49
56
  }
50
57
  //# sourceMappingURL=card.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CARD_INTERACTIVE","basic","media","action","link","resolveCardShape","theme","mode","variant","pressed","sem","color","semantic","elevation","backgroundColor","borderRadius","radius","lg","borderWidth","borderColor","padding","spacing","resolveCardBodyStyle","undefined"],"sourceRoot":"../../../src","sources":["components/card.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA,OAAO,MAAMA,gBAA8C,GAAG;EAC5DC,KAAK,EAAE,KAAK;EACZC,KAAK,EAAE,KAAK;EACZC,MAAM,EAAE,IAAI;EACZC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,KAAkB,EAClBC,IAAe,EACfC,OAAoB,EACpBC,OAAO,GAAG,KAAK,EACJ;EACX,MAAMC,GAAG,GAAGJ,KAAK,CAACK,KAAK,CAACC,QAAQ,CAACL,IAAI,CAAC;EACtC,MAAMM,SAAuB,GAAGJ,OAAO,IAAIT,gBAAgB,CAACQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI;EAClF,OAAO;IACLM,eAAe,EAAEJ,GAAG,CAAC,YAAY,CAAC;IAClCK,YAAY,EAAET,KAAK,CAACU,MAAM,CAACC,EAAE;IAC7BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAET,GAAG,CAAC,gBAAgB,CAAC;IAClC;IACA,IAAIF,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG;MAAEY,OAAO,EAAEd,KAAK,CAACe,OAAO,CAAC,GAAG;IAAE,CAAC,CAAC;IACjE,GAAGf,KAAK,CAACO,SAAS,CAACA,SAAS;EAC9B,CAAC;AACH;;AAEA;AACA,OAAO,SAASS,oBAAoBA,CAClChB,KAAkB,EAClBE,OAAoB,EACa;EACjC,OAAOA,OAAO,KAAK,OAAO,GAAG;IAAEY,OAAO,EAAEd,KAAK,CAACe,OAAO,CAAC,GAAG;EAAE,CAAC,GAAGE,SAAS;AAC1E","ignoreList":[]}
1
+ {"version":3,"names":["CARD_SPEC","radius","padding","elevation","pressedElevation","flatElevation","CARD_INTERACTIVE","basic","media","action","link","resolveCardShape","theme","mode","variant","pressed","sem","color","semantic","elevationKey","backgroundColor","borderRadius","borderWidth","borderColor","spacing","resolveCardBodyStyle","undefined"],"sourceRoot":"../../../src","sources":["components/card.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,MAAMA,SAAS,GAAG;EACvBC,MAAM,EAAE,IAAI;EAAEC,OAAO,EAAE,GAAG;EAAEC,SAAS,EAAE,IAAI;EAAEC,gBAAgB,EAAE,IAAI;EAAEC,aAAa,EAAE;AACtF,CAAqJ;AAIrJ;AACA,OAAO,MAAMC,gBAA8C,GAAG;EAC5DC,KAAK,EAAE,KAAK;EACZC,KAAK,EAAE,KAAK;EACZC,MAAM,EAAE,IAAI;EACZC,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,KAAkB,EAClBC,IAAe,EACfC,OAAoB,EACpBC,OAAO,GAAG,KAAK,EACfZ,SAA6B,GAAG,SAAS,EAC9B;EACX,MAAMa,GAAG,GAAGJ,KAAK,CAACK,KAAK,CAACC,QAAQ,CAACL,IAAI,CAAC;EACtC,MAAMM,YAAY,GAAGhB,SAAS,KAAK,MAAM,GAAGH,SAAS,CAACK,aAAa,GAC/DU,OAAO,IAAIT,gBAAgB,CAACQ,OAAO,CAAC,GAAGd,SAAS,CAACI,gBAAgB,GAAGJ,SAAS,CAACG,SAAS;EAC3F,OAAO;IACLiB,eAAe,EAAEJ,GAAG,CAAC,YAAY,CAAC;IAClCK,YAAY,EAAET,KAAK,CAACX,MAAM,CAACD,SAAS,CAACC,MAAM,CAAC;IAC5CqB,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEP,GAAG,CAAC,gBAAgB,CAAC;IAClC;IACA,IAAIF,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG;MAAEZ,OAAO,EAAEU,KAAK,CAACY,OAAO,CAACxB,SAAS,CAACE,OAAO;IAAE,CAAC,CAAC;IAC/E,GAAGU,KAAK,CAACT,SAAS,CAACgB,YAAY;EACjC,CAAC;AACH;;AAEA;AACA,OAAO,SAASM,oBAAoBA,CAClCb,KAAkB,EAClBE,OAAoB,EACa;EACjC,OAAOA,OAAO,KAAK,OAAO,GAAG;IAAEZ,OAAO,EAAEU,KAAK,CAACY,OAAO,CAACxB,SAAS,CAACE,OAAO;EAAE,CAAC,GAAGwB,SAAS;AACxF","ignoreList":[]}
@@ -8,12 +8,51 @@ export const HEADER_SPEC = {
8
8
  paddingX: "4",
9
9
  paddingY: "3",
10
10
  titleFont: "xl",
11
+ centeredTitleFont: "lg",
11
12
  titleWeight: "bold",
12
13
  titleColor: "text-heading",
13
14
  borderWidth: 1,
14
- hiddenTitleSize: 1
15
+ hiddenTitleSize: 1,
16
+ centeredMinHeight: 44,
17
+ sideMinWidth: 44
15
18
  };
16
- export function resolveHeaderStyle(theme, mode, props = {}) {
19
+ /** 中央タイトルの2形だけが同じ配置と組版を共有する。 */
20
+ export function isCenteredHeader(variant) {
21
+ return variant === "centered" || variant === "navigation";
22
+ }
23
+ export function resolveHeaderStyle(theme, mode, props = {},
24
+ // recipeは密度1で照合し、実機のhairline値だけを外から注入する。
25
+ hairlineWidth = HEADER_SPEC.borderWidth) {
26
+ if (isCenteredHeader(props.variant)) {
27
+ return {
28
+ containerStyle: {
29
+ flexDirection: "row",
30
+ alignItems: "center",
31
+ minHeight: HEADER_SPEC.centeredMinHeight,
32
+ ...(props.variant === "navigation" ? {
33
+ paddingHorizontal: theme.spacing[HEADER_SPEC.paddingX],
34
+ borderBottomWidth: hairlineWidth,
35
+ borderBottomColor: theme.color.semantic[mode]["border-default"]
36
+ } : {})
37
+ },
38
+ titleWrapStyle: {
39
+ flexShrink: 1,
40
+ minWidth: 0
41
+ },
42
+ leadingStyle: {
43
+ flex: 1,
44
+ minWidth: HEADER_SPEC.sideMinWidth,
45
+ flexDirection: "row",
46
+ justifyContent: "flex-start"
47
+ },
48
+ trailingStyle: {
49
+ flex: 1,
50
+ minWidth: HEADER_SPEC.sideMinWidth,
51
+ flexDirection: "row",
52
+ justifyContent: "flex-end"
53
+ }
54
+ };
55
+ }
17
56
  return {
18
57
  containerStyle: {
19
58
  flexDirection: "row",
@@ -1 +1 @@
1
- {"version":3,"names":["HEADER_SPEC","gap","actionsGap","paddingX","paddingY","titleFont","titleWeight","titleColor","borderWidth","hiddenTitleSize","resolveHeaderStyle","theme","mode","props","containerStyle","flexDirection","alignItems","spacing","variant","paddingHorizontal","paddingVertical","backgroundColor","color","semantic","borderBottomWidth","borderBottomColor","titleWrapStyle","flex","hiddenTitleStyle","position","width","height","overflow"],"sourceRoot":"../../../src","sources":["components/header.styles.ts"],"mappings":";;AAAA;;AAIA,OAAO,MAAMA,WAAW,GAAG;EACzBC,GAAG,EAAE,GAAG;EAAEC,UAAU,EAAE,GAAG;EAAEC,QAAQ,EAAE,GAAG;EAAEC,QAAQ,EAAE,GAAG;EACvDC,SAAS,EAAE,IAAI;EAAEC,WAAW,EAAE,MAAM;EAAEC,UAAU,EAAE,cAAc;EAChEC,WAAW,EAAE,CAAC;EAAEC,eAAe,EAAE;AACnC,CAIC;AAYD,OAAO,SAASC,kBAAkBA,CAChCC,KAAkB,EAAEC,IAAe,EAAEC,KAAwC,GAAG,CAAC,CAAC,EACrE;EACb,OAAO;IACLC,cAAc,EAAE;MACdC,aAAa,EAAE,KAAK;MAAEC,UAAU,EAAE,QAAQ;MAAEf,GAAG,EAAEU,KAAK,CAACM,OAAO,CAACJ,KAAK,CAACK,OAAO,KAAK,SAAS,GAAGlB,WAAW,CAACE,UAAU,GAAGF,WAAW,CAACC,GAAG,CAAC;MACtIkB,iBAAiB,EAAER,KAAK,CAACM,OAAO,CAACjB,WAAW,CAACG,QAAQ,CAAC;MACtDiB,eAAe,EAAET,KAAK,CAACM,OAAO,CAACjB,WAAW,CAACI,QAAQ,CAAC;MACpDiB,eAAe,EAAEV,KAAK,CAACW,KAAK,CAACC,QAAQ,CAACX,IAAI,CAAC,CAAC,SAAS,CAAC;MACtDY,iBAAiB,EAAExB,WAAW,CAACQ,WAAW;MAC1CiB,iBAAiB,EAAEd,KAAK,CAACW,KAAK,CAACC,QAAQ,CAACX,IAAI,CAAC,CAAC,gBAAgB;IAChE,CAAC;IACDc,cAAc,EAAE;MAAEC,IAAI,EAAE;IAAE,CAAC;IAC3B,IAAId,KAAK,CAACK,OAAO,KAAK,SAAS,GAAG;MAChCU,gBAAgB,EAAE;QAChBC,QAAQ,EAAE,UAAmB;QAAEC,KAAK,EAAE9B,WAAW,CAACS,eAAe;QACjEsB,MAAM,EAAE/B,WAAW,CAACS,eAAe;QAAEuB,QAAQ,EAAE;MACjD;IACF,CAAC,GAAG,CAAC,CAAC;EACR,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["HEADER_SPEC","gap","actionsGap","paddingX","paddingY","titleFont","centeredTitleFont","titleWeight","titleColor","borderWidth","hiddenTitleSize","centeredMinHeight","sideMinWidth","isCenteredHeader","variant","resolveHeaderStyle","theme","mode","props","hairlineWidth","containerStyle","flexDirection","alignItems","minHeight","paddingHorizontal","spacing","borderBottomWidth","borderBottomColor","color","semantic","titleWrapStyle","flexShrink","minWidth","leadingStyle","flex","justifyContent","trailingStyle","paddingVertical","backgroundColor","hiddenTitleStyle","position","width","height","overflow"],"sourceRoot":"../../../src","sources":["components/header.styles.ts"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,14 @@ export const CARD_SURFACE_SPEC = {
22
22
  padding: "6"
23
23
  };
24
24
 
25
+ /** Surface と resolver は同じ elevation 選択を共有する。 */
26
+ export function resolveSkeletonSurfaceProps(elevation = "default") {
27
+ return {
28
+ ...CARD_SURFACE_SPEC,
29
+ elevation: elevation === "none" ? "none" : CARD_SURFACE_SPEC.elevation
30
+ };
31
+ }
32
+
25
33
  /** バー / アバター円の寸法。recipe と同じく token に対応が無い literal(recipe description 参照)。 */
26
34
  export const SKELETON_METRICS = {
27
35
  /** text variant の行バー高さ */
@@ -50,7 +58,7 @@ export const PULSE_OPACITY = {
50
58
  * バーの色は text / circle / card すべて border-default(contract に忠実、§1 Agent m2)。
51
59
  * card の土台は CARD_SURFACE_SPEC のキーから解決する(component 側の Surface props と同源)。
52
60
  */
53
- export function resolveSkeletonVariants(theme, mode) {
61
+ export function resolveSkeletonVariants(theme, mode, elevation = "default") {
54
62
  const sem = theme.color.semantic[mode];
55
63
  const bar = sem["border-default"];
56
64
  return {
@@ -70,20 +78,23 @@ export function resolveSkeletonVariants(theme, mode) {
70
78
  backgroundColor: bar
71
79
  }
72
80
  },
73
- card: {
74
- style: {
75
- backgroundColor: sem[CARD_SURFACE_SPEC.bg],
76
- borderRadius: theme.radius[CARD_SURFACE_SPEC.radius],
77
- borderWidth: 1,
78
- borderColor: bar,
79
- padding: theme.spacing[CARD_SURFACE_SPEC.padding],
80
- elevation: theme.elevation[CARD_SURFACE_SPEC.elevation]
81
- },
82
- barStyle: {
83
- height: SKELETON_METRICS.cardBarHeight,
84
- borderRadius: theme.radius.sm,
85
- backgroundColor: bar
86
- }
81
+ // card を使う時だけ影を解決する。text/circle は影のトークンを読まない。
82
+ get card() {
83
+ return {
84
+ style: {
85
+ backgroundColor: sem[CARD_SURFACE_SPEC.bg],
86
+ borderRadius: theme.radius[CARD_SURFACE_SPEC.radius],
87
+ borderWidth: 1,
88
+ borderColor: bar,
89
+ padding: theme.spacing[CARD_SURFACE_SPEC.padding],
90
+ elevation: theme.elevation[resolveSkeletonSurfaceProps(elevation).elevation]
91
+ },
92
+ barStyle: {
93
+ height: SKELETON_METRICS.cardBarHeight,
94
+ borderRadius: theme.radius.sm,
95
+ backgroundColor: bar
96
+ }
97
+ };
87
98
  }
88
99
  };
89
100
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CARD_SURFACE_SPEC","bg","radius","elevation","padding","SKELETON_METRICS","textBarHeight","cardBarHeight","circleSize","PULSE_OPACITY","from","to","resolveSkeletonVariants","theme","mode","sem","color","semantic","bar","text","style","height","borderRadius","sm","backgroundColor","gap","spacing","circle","width","full","card","borderWidth","borderColor","barStyle","resolveSkeletonStates","loading","opacity","animation","opacityFrom","opacityTo","duration","motion","slow","loaded"],"sourceRoot":"../../../src","sources":["components/skeleton.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,GAAG;EAC/BC,EAAE,EAAE,YAAY;EAChBC,MAAM,EAAE,IAAI;EACZC,SAAS,EAAE,IAAI;EACfC,OAAO,EAAE;AACX,CAKC;;AAED;AACA,OAAO,MAAMC,gBAAgB,GAAG;EAC9B;EACAC,aAAa,EAAE,EAAE;EACjB;EACAC,aAAa,EAAE,EAAE;EACjB;EACAC,UAAU,EAAE;AACd,CAAU;;AAEV;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG;EAAEC,IAAI,EAAE,CAAC;EAAEC,EAAE,EAAE;AAAI,CAAU;;AAE1D;;AAOA;;AAqBA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,KAAkB,EAAEC,IAAe,EAAyB;EAClG,MAAMC,GAAG,GAAGF,KAAK,CAACG,KAAK,CAACC,QAAQ,CAACH,IAAI,CAAC;EACtC,MAAMI,GAAG,GAAGH,GAAG,CAAC,gBAAgB,CAAC;EACjC,OAAO;IACLI,IAAI,EAAE;MACJC,KAAK,EAAE;QACLC,MAAM,EAAEhB,gBAAgB,CAACC,aAAa;QACtCgB,YAAY,EAAET,KAAK,CAACX,MAAM,CAACqB,EAAE;QAC7BC,eAAe,EAAEN,GAAG;QACpBO,GAAG,EAAEZ,KAAK,CAACa,OAAO,CAAC,GAAG;MACxB;IACF,CAAC;IACDC,MAAM,EAAE;MACNP,KAAK,EAAE;QACLQ,KAAK,EAAEvB,gBAAgB,CAACG,UAAU;QAClCa,MAAM,EAAEhB,gBAAgB,CAACG,UAAU;QACnCc,YAAY,EAAET,KAAK,CAACX,MAAM,CAAC2B,IAAI;QAC/BL,eAAe,EAAEN;MACnB;IACF,CAAC;IACDY,IAAI,EAAE;MACJV,KAAK,EAAE;QACLI,eAAe,EAAET,GAAG,CAACf,iBAAiB,CAACC,EAAE,CAAC;QAC1CqB,YAAY,EAAET,KAAK,CAACX,MAAM,CAACF,iBAAiB,CAACE,MAAM,CAAC;QACpD6B,WAAW,EAAE,CAAC;QACdC,WAAW,EAAEd,GAAG;QAChBd,OAAO,EAAES,KAAK,CAACa,OAAO,CAAC1B,iBAAiB,CAACI,OAAO,CAAC;QACjDD,SAAS,EAAEU,KAAK,CAACV,SAAS,CAACH,iBAAiB,CAACG,SAAS;MACxD,CAAC;MACD8B,QAAQ,EAAE;QACRZ,MAAM,EAAEhB,gBAAgB,CAACE,aAAa;QACtCe,YAAY,EAAET,KAAK,CAACX,MAAM,CAACqB,EAAE;QAC7BC,eAAe,EAAEN;MACnB;IACF;EACF,CAAC;AACH;;AAEA;;AAYA;AACA;AACA;AACA;AACA,OAAO,SAASgB,qBAAqBA,CAACrB,KAAkB,EAAuB;EAC7E,OAAO;IACLsB,OAAO,EAAE;MACPf,KAAK,EAAE;QAAEgB,OAAO,EAAE3B,aAAa,CAACE;MAAG,CAAC;MACpC0B,SAAS,EAAE;QACTC,WAAW,EAAE7B,aAAa,CAACC,IAAI;QAC/B6B,SAAS,EAAE9B,aAAa,CAACE,EAAE;QAC3B6B,QAAQ,EAAE3B,KAAK,CAAC4B,MAAM,CAACD,QAAQ,CAACE;MAClC;IACF,CAAC;IACDC,MAAM,EAAE;MAAEvB,KAAK,EAAE,CAAC;IAAE;EACtB,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["CARD_SURFACE_SPEC","bg","radius","elevation","padding","resolveSkeletonSurfaceProps","SKELETON_METRICS","textBarHeight","cardBarHeight","circleSize","PULSE_OPACITY","from","to","resolveSkeletonVariants","theme","mode","sem","color","semantic","bar","text","style","height","borderRadius","sm","backgroundColor","gap","spacing","circle","width","full","card","borderWidth","borderColor","barStyle","resolveSkeletonStates","loading","opacity","animation","opacityFrom","opacityTo","duration","motion","slow","loaded"],"sourceRoot":"../../../src","sources":["components/skeleton.styles.ts"],"mappings":"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","ignoreList":[]}
@@ -93,8 +93,8 @@ export const CONTRACTS = {
93
93
  },
94
94
  header: {
95
95
  id: "header",
96
- version: "0.2.0",
97
- variants: ["default", "actions"],
96
+ version: "0.3.0",
97
+ variants: ["default", "actions", "centered", "navigation"],
98
98
  sizes: [],
99
99
  states: ["default"]
100
100
  },
@@ -1 +1 @@
1
- {"version":3,"names":["CONTRACTS","text","id","version","variants","sizes","states","button","tag","card","image","surface","skeleton","emptyState","metric","stack","row","screen","header","icon","avatar","textfield","toggle","checkbox","radio","alert","toast","progress","modal","actionSheet","bottomSheet"],"sourceRoot":"../../../src","sources":["contracts/contract-types.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CONTRACTS","text","id","version","variants","sizes","states","button","tag","card","image","surface","skeleton","emptyState","metric","stack","row","screen","header","icon","avatar","textfield","toggle","checkbox","radio","alert","toast","progress","modal","actionSheet","bottomSheet"],"sourceRoot":"../../../src","sources":["contracts/contract-types.ts"],"mappings":"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","ignoreList":[]}
@@ -17,4 +17,5 @@ export * from "./components/index.js";
17
17
 
18
18
  // 契約メタ(variant/size/state の実行時参照 + 型。__contract 照合にも使う)
19
19
  export { CONTRACTS } from "./contracts/contract-types.js";
20
+ export { HEADER_CENTERED_MIN_HEIGHT } from "./components/Header.js";
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CONTRACTS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAkB;;AAEhC;AACA,cAAc,uBAAuB;AACrC,cAAc,uBAAuB;;AAErC;AACA,SACEA,SAAS,QAMJ,+BAA+B","ignoreList":[]}
1
+ {"version":3,"names":["CONTRACTS","HEADER_CENTERED_MIN_HEIGHT"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kBAAkB;;AAEhC;AACA,cAAc,uBAAuB;AACrC,cAAc,uBAAuB;;AAErC;AACA,SACEA,SAAS,QAMJ,+BAA+B;AAEtC,SAASC,0BAA0B,QAAQ,wBAAwB","ignoreList":[]}
@@ -33,6 +33,8 @@
33
33
  import { type ReactElement, type ReactNode } from "react";
34
34
  import { type StyleProp, type ViewStyle } from "react-native";
35
35
  interface CardBase {
36
+ /** none は押下中も影なし。省略時は従来の影を維持する。 */
37
+ elevation?: "default" | "none";
36
38
  header?: ReactNode;
37
39
  footer?: ReactNode;
38
40
  media?: ReactNode;
@@ -55,7 +57,7 @@ type CardProps = CardBase & ({
55
57
  */
56
58
  primaryAction: ReactElement;
57
59
  });
58
- export declare function Card({ variant, header, footer, media, onPress, primaryAction, style, testID, children, }: CardProps): import("react/jsx-runtime").JSX.Element;
60
+ export declare function Card({ variant, elevation, header, footer, media, onPress, primaryAction, style, testID, children, }: CardProps): import("react/jsx-runtime").JSX.Element;
59
61
  export declare namespace Card {
60
62
  var __contract: {
61
63
  readonly id: "card";
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/components/Card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAgB/E,UAAU,QAAQ;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,QAAQ,EAAE,SAAS,CAAC;CACrB;AAID,KAAK,SAAS,GAAG,QAAQ,GACvB,CACI;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,KAAK,CAAA;CAAE,GACvE;IACE,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,aAAa,EAAE,YAAY,CAAC;CAC7B,CACJ,CAAC;AAEJ,wBAAgB,IAAI,CAAC,EACnB,OAAiB,EACjB,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAyDX;yBAnEe,IAAI"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../src/components/Card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAgB/E,UAAU,QAAQ;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,QAAQ,EAAE,SAAS,CAAC;CACrB;AAID,KAAK,SAAS,GAAG,QAAQ,GACvB,CACI;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAAC,aAAa,CAAC,EAAE,KAAK,CAAA;CAAE,GACvE;IACE,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,aAAa,EAAE,YAAY,CAAC;CAC7B,CACJ,CAAC;AAEJ,wBAAgB,IAAI,CAAC,EACnB,OAAiB,EACjB,SAAqB,EACrB,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,GACT,EAAE,SAAS,2CAyDX;yBApEe,IAAI"}
@@ -1,27 +1,31 @@
1
1
  /**
2
2
  * Header — 画面名と左右の操作を持つ共通ヘッダー。
3
- * actionsでは画面名を視覚的に隠すが、独立したa11y見出しとして残す。
4
- * 余白・下線・見出しの配置はheader recipeとpure resolverが所有する。
3
+ * 配置・余白・見出しの組版を所有し、navigationやタイトルのアニメーションは利用側が渡す。
5
4
  */
6
5
  import { type ReactNode } from "react";
7
6
  import { type StyleProp, type ViewStyle } from "react-native";
8
7
  import { type VariantOf } from "../contracts/contract-types.js";
8
+ /** 中央タイトルの最小高。スクロール量には可能な限りonLayoutの実測を使う。 */
9
+ export declare const HEADER_CENTERED_MIN_HEIGHT: 44;
9
10
  interface HeaderProps {
10
11
  /** 空でない画面名。actionsでも読み上げるため必須。 */
11
12
  title: string;
12
- /** defaultは可視見出し、actionsは可視タイトルのない操作バー。 */
13
13
  variant?: VariantOf<"header">;
14
+ /** 中央タイトルの長い画面名を1段下げる。default/actionsの組版は変更しない。 */
15
+ titleVariant?: "base" | "lg";
16
+ /** 中央タイトルのfade用。渡された見出しを保ち、アニメーションと読み上げ非表示だけを包む。 */
17
+ wrapTitle?: (heading: ReactNode) => ReactNode;
14
18
  leading?: ReactNode;
15
19
  trailing?: ReactNode;
16
20
  style?: StyleProp<ViewStyle>;
17
21
  testID?: string;
18
22
  }
19
- export declare function Header({ title, variant, leading, trailing, style, testID }: HeaderProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function Header({ title, variant, titleVariant, wrapTitle, leading, trailing, style, testID }: HeaderProps): import("react/jsx-runtime").JSX.Element;
20
24
  export declare namespace Header {
21
25
  var __contract: {
22
26
  readonly id: "header";
23
- readonly version: "0.2.0";
24
- readonly variants: readonly ["default", "actions"];
27
+ readonly version: "0.3.0";
28
+ readonly variants: readonly ["default", "actions", "centered", "navigation"];
25
29
  readonly sizes: readonly [];
26
30
  readonly states: readonly ["default"];
27
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAI3E,UAAU,WAAW;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAmB,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CA2BnG;yBA3Be,MAAM"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/components/Header.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAI3E,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,IAAgC,CAAC;AAExE,UAAU,WAAW;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9B,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAmB,EAAE,YAA4C,EAC/F,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAkC3D;yBAnCe,MAAM"}
@@ -15,6 +15,8 @@
15
15
  import { type DimensionValue, type StyleProp, type ViewStyle } from "react-native";
16
16
  import { type SkeletonVariant } from "./skeleton.styles.js";
17
17
  interface SkeletonProps {
18
+ /** card の影。text/circle は影を使用しない。 */
19
+ elevation?: "default" | "none";
18
20
  variant?: SkeletonVariant;
19
21
  width?: DimensionValue;
20
22
  /** text variant の行数。 */
@@ -23,7 +25,7 @@ interface SkeletonProps {
23
25
  style?: StyleProp<ViewStyle>;
24
26
  testID?: string;
25
27
  }
26
- export declare function Skeleton({ variant, width, lines, accessibilityLabel, style, testID, }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function Skeleton({ variant, elevation, width, lines, accessibilityLabel, style, testID, }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
27
29
  export declare namespace Skeleton {
28
30
  var __contract: {
29
31
  readonly id: "skeleton";
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/Skeleton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAgB,EAChB,KAAc,EACd,KAAS,EACT,kBAA4B,EAC5B,KAAK,EACL,MAAM,GACP,EAAE,aAAa,2CAiGf;yBAxGe,QAAQ"}
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/Skeleton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,aAAa;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAgB,EAChB,SAAqB,EACrB,KAAc,EACd,KAAS,EACT,kBAA4B,EAC5B,KAAK,EACL,MAAM,GACP,EAAE,aAAa,2CAiGf;yBAzGe,QAAQ"}
@@ -7,6 +7,13 @@
7
7
  */
8
8
  import type { ViewStyle } from "react-native";
9
9
  import type { NativeTheme, ThemeMode } from "../theme/index.js";
10
+ export declare const CARD_SPEC: {
11
+ readonly radius: "lg";
12
+ readonly padding: "6";
13
+ readonly elevation: "sm";
14
+ readonly pressedElevation: "md";
15
+ readonly flatElevation: "none";
16
+ };
10
17
  export type CardVariant = "basic" | "media" | "action" | "link";
11
18
  /** variant → インタラクティブ(Pressable)か。action/link のみ true(recipe pressedStyle の有無と対応)。 */
12
19
  export declare const CARD_INTERACTIVE: Record<CardVariant, boolean>;
@@ -19,7 +26,7 @@ export declare const CARD_INTERACTIVE: Record<CardVariant, boolean>;
19
26
  * 消えるため(contract は media でも elevation.sm 要求)。media のクリップは内側の clip View で行う。
20
27
  * - media は内側 clip View が padding を持つ(resolveCardBodyStyle / recipe bodyStyle)ので外枠は padding なし。
21
28
  */
22
- export declare function resolveCardShape(theme: NativeTheme, mode: ThemeMode, variant: CardVariant, pressed?: boolean): ViewStyle;
29
+ export declare function resolveCardShape(theme: NativeTheme, mode: ThemeMode, variant: CardVariant, pressed?: boolean, elevation?: "default" | "none"): ViewStyle;
23
30
  /** media の body padding(内側 clip View 側が持つ。recipe bodyStyle の写像)。media 以外は undefined。 */
24
31
  export declare function resolveCardBodyStyle(theme: NativeTheme, variant: CardVariant): {
25
32
  padding: number;
@@ -1 +1 @@
1
- {"version":3,"file":"card.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/card.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAgB,MAAM,mBAAmB,CAAC;AAE9E,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,UAAQ,GACd,SAAS,CAYX;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACnB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEjC"}
1
+ {"version":3,"file":"card.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/card.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAuC,MAAM,mBAAmB,CAAC;AAErG,eAAO,MAAM,SAAS;;;;;;CAE+H,CAAC;AAEtJ,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhE,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,UAAQ,EACf,SAAS,GAAE,SAAS,GAAG,MAAkB,GACxC,SAAS,CAaX;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACnB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEjC"}
@@ -1,4 +1,5 @@
1
1
  /** Headerの見た目をrecipeと照合できるpure resolverへ集約する。 */
2
+ import type { ViewStyle } from "react-native";
2
3
  import type { NativeTheme, ThemeMode } from "../theme/index.js";
3
4
  import type { VariantOf } from "../contracts/contract-types.js";
4
5
  export declare const HEADER_SPEC: {
@@ -7,33 +8,24 @@ export declare const HEADER_SPEC: {
7
8
  readonly paddingX: "4";
8
9
  readonly paddingY: "3";
9
10
  readonly titleFont: "xl";
11
+ readonly centeredTitleFont: "lg";
10
12
  readonly titleWeight: "bold";
11
13
  readonly titleColor: "text-heading";
12
14
  readonly borderWidth: 1;
13
15
  readonly hiddenTitleSize: 1;
16
+ readonly centeredMinHeight: 44;
17
+ readonly sideMinWidth: 44;
14
18
  };
15
19
  export interface HeaderStyle {
16
- containerStyle: {
17
- flexDirection: "row";
18
- alignItems: "center";
19
- gap: number;
20
- paddingHorizontal: number;
21
- paddingVertical: number;
22
- backgroundColor: string;
23
- borderBottomWidth: 1;
24
- borderBottomColor: string;
25
- };
26
- titleWrapStyle: {
27
- flex: 1;
28
- };
29
- hiddenTitleStyle?: {
30
- position: "absolute";
31
- width: 1;
32
- height: 1;
33
- overflow: "hidden";
34
- };
20
+ containerStyle: ViewStyle;
21
+ titleWrapStyle: ViewStyle;
22
+ hiddenTitleStyle?: ViewStyle;
23
+ leadingStyle?: ViewStyle;
24
+ trailingStyle?: ViewStyle;
35
25
  }
26
+ /** 中央タイトルの2形だけが同じ配置と組版を共有する。 */
27
+ export declare function isCenteredHeader(variant?: VariantOf<"header">): boolean;
36
28
  export declare function resolveHeaderStyle(theme: NativeTheme, mode: ThemeMode, props?: {
37
29
  variant?: VariantOf<"header">;
38
- }): HeaderStyle;
30
+ }, hairlineWidth?: number): HeaderStyle;
39
31
  //# sourceMappingURL=header.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"header.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/header.styles.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAA0D,MAAM,mBAAmB,CAAC;AACxH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,eAAO,MAAM,WAAW;;;;;;;;;;CAQvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE;QACd,aAAa,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QACxD,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QACnD,eAAe,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,CAAC,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;KAC1E,CAAC;IACF,cAAc,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;CACtF;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAO,GACjF,WAAW,CAkBb"}
1
+ {"version":3,"file":"header.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/header.styles.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAA0D,MAAM,mBAAmB,CAAC;AACxH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAQvB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAEvE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAE;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAO,EAElF,aAAa,GAA8B,MAAM,GAChD,WAAW,CAiCb"}
@@ -20,6 +20,13 @@ export declare const CARD_SURFACE_SPEC: {
20
20
  readonly elevation: "sm";
21
21
  readonly padding: "6";
22
22
  };
23
+ /** Surface と resolver は同じ elevation 選択を共有する。 */
24
+ export declare function resolveSkeletonSurfaceProps(elevation?: "default" | "none"): {
25
+ elevation: "sm" | "none";
26
+ bg: "bg-surface";
27
+ radius: "lg";
28
+ padding: "6";
29
+ };
23
30
  /** バー / アバター円の寸法。recipe と同じく token に対応が無い literal(recipe description 参照)。 */
24
31
  export declare const SKELETON_METRICS: {
25
32
  /** text variant の行バー高さ */
@@ -77,7 +84,7 @@ export interface SkeletonVariantStyles {
77
84
  * バーの色は text / circle / card すべて border-default(contract に忠実、§1 Agent m2)。
78
85
  * card の土台は CARD_SURFACE_SPEC のキーから解決する(component 側の Surface props と同源)。
79
86
  */
80
- export declare function resolveSkeletonVariants(theme: NativeTheme, mode: ThemeMode): SkeletonVariantStyles;
87
+ export declare function resolveSkeletonVariants(theme: NativeTheme, mode: ThemeMode, elevation?: "default" | "none"): SkeletonVariantStyles;
81
88
  /** states ごとの slot 構成(recipe の states.*.style / animation と 1:1)。 */
82
89
  export interface SkeletonStateStyles {
83
90
  loading: {
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/skeleton.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,WAAW,EAIX,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzD,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;CAU7B,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;IAC3B,0BAA0B;;IAE1B,0BAA0B;;IAE1B,sCAAsC;;CAE9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,aAAa;;;CAAgC,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,IAAI,EAAE;QAAE,KAAK,EAAE,gBAAgB,GAAG;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACpD,MAAM,EAAE;QACN,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;KACzF,CAAC;IACF,IAAI,EAAE;QACJ,6EAA6E;QAC7E,KAAK,EAAE;YACL,eAAe,EAAE,MAAM,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,cAAc,CAAC;SAC3B,CAAC;QACF,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAoClG;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE;QACP,2BAA2B;QAC3B,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3B,yDAAyD;QACzD,SAAS,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KACzE,CAAC;IACF,8CAA8C;IAC9C,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;KAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAY7E"}
1
+ {"version":3,"file":"skeleton.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/skeleton.styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,WAAW,EAIX,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzD,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;CAU7B,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,2BAA2B,CAAC,SAAS,GAAE,SAAS,GAAG,MAAkB;;;;;EAEpF;AAED,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;IAC3B,0BAA0B;;IAE1B,0BAA0B;;IAE1B,sCAAsC;;CAE9B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,aAAa;;;CAAgC,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,IAAI,EAAE;QAAE,KAAK,EAAE,gBAAgB,GAAG;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACpD,MAAM,EAAE;QACN,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;KACzF,CAAC;IACF,IAAI,EAAE;QACJ,6EAA6E;QAC7E,KAAK,EAAE;YACL,eAAe,EAAE,MAAM,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,cAAc,CAAC;SAC3B,CAAC;QACF,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,GAAE,SAAS,GAAG,MAAkB,GAAG,qBAAqB,CAqC7I;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE;QACP,2BAA2B;QAC3B,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3B,yDAAyD;QACzD,SAAS,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KACzE,CAAC;IACF,8CAA8C;IAC9C,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;KAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAY7E"}
@@ -93,8 +93,8 @@ export declare const CONTRACTS: {
93
93
  };
94
94
  readonly header: {
95
95
  readonly id: "header";
96
- readonly version: "0.2.0";
97
- readonly variants: readonly ["default", "actions"];
96
+ readonly version: "0.3.0";
97
+ readonly variants: readonly ["default", "actions", "centered", "navigation"];
98
98
  readonly sizes: readonly [];
99
99
  readonly states: readonly ["default"];
100
100
  };
@@ -9,4 +9,5 @@ export * from "./theme/index.js";
9
9
  export * from "./primitives/index.js";
10
10
  export * from "./components/index.js";
11
11
  export { CONTRACTS, type ContractId, type ContractShape, type VariantOf, type SizeOf, type StateOf, } from "./contracts/contract-types.js";
12
+ export { HEADER_CENTERED_MIN_HEIGHT } from "./components/Header.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,OAAO,GACb,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC"}
package/llms.txt CHANGED
@@ -23,7 +23,7 @@ UI を組む前に docs/patterns.md(組み方の規範)を読むこと。exa
23
23
  - [card](https://melta.tsubotax.com/design/contracts/components/card.contract.json): ✅ `Card` — コンテンツコンテナ。Basic / Metrics / Media / Action / Link の5バリエーション。
24
24
  - [checkbox](https://melta.tsubotax.com/design/contracts/components/checkbox.contract.json): ✅ `Checkbox` — 複数選択フォームコントロール。CSS 18px サイズ。
25
25
  - [empty-state](https://melta.tsubotax.com/design/contracts/components/empty-state.contract.json): ✅ `EmptyState` — データ無し時のプレースホルダー(アイコン + タイトル + 説明 + 任意のアクション)。Text + Button の compose。
26
- - [header](https://melta.tsubotax.com/design/contracts/components/header.contract.json): ✅ `Header` — 画面ヘッダー。defaultは可視見出し、actionsは見出しを視覚的に隠した操作バー。どちらも意味のあるtitleを必須とし、leading/trailingの操作を個別に読み上げる。
26
+ - [header](https://melta.tsubotax.com/design/contracts/components/header.contract.json): ✅ `Header` — 画面ヘッダー。defaultは左寄せ見出し、actionsは可視タイトルなしの操作バー、centered/navigationは中央タイトル。配置・寸法・文字組みはHeaderが所有し、画面の操作内容とnavigationは利用側が渡す。
27
27
  - [icon](https://melta.tsubotax.com/design/contracts/components/icon.contract.json): ✅ `Icon` — 統一アイコン primitive。name prop でグリフを選択し(グリフ集合は実装側の公開面 = assets/icons の Charcoal セット由来)、色は semantic token キー限定の prop(default
28
28
  - [image](https://melta.tsubotax.com/design/contracts/components/image.contract.json): ✅ `Image` — 画像表示 primitive。aspectRatio / radius / contentFit / onError fallback を持つ。Phase1 は RN コア Image、expo-image は Phase2。
29
29
  - [metric](https://melta.tsubotax.com/design/contracts/components/metric.contract.json): ✅ `Metric` — 数値 + 単位 + ラベルの指標表示 primitive(距離 / 時間 / 獲得標高 等の走行サマリー表示)。tabular-nums で桁揃え。sizes の height は数値テキストの想定行高(px)で、実 fontSize は実
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melta-app",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
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",
@@ -86,7 +86,7 @@
86
86
  "@types/react": "~19.2.2",
87
87
  "eslint": "^10.4.1",
88
88
  "jest": "^29.7.0",
89
- "melta-contracts": "^0.8.0",
89
+ "melta-contracts": "0.9.1",
90
90
  "react": "19.2.3",
91
91
  "react-native": "0.85.3",
92
92
  "react-native-builder-bob": "^0.40.13",
@@ -49,6 +49,8 @@ import { validateCardProps } from "./card.validate.js";
49
49
  const reported = new Set<string>();
50
50
 
51
51
  interface CardBase {
52
+ /** none は押下中も影なし。省略時は従来の影を維持する。 */
53
+ elevation?: "default" | "none";
52
54
  header?: ReactNode;
53
55
  footer?: ReactNode;
54
56
  media?: ReactNode;
@@ -77,6 +79,7 @@ type CardProps = CardBase &
77
79
 
78
80
  export function Card({
79
81
  variant = "basic",
82
+ elevation = "default",
80
83
  header,
81
84
  footer,
82
85
  media,
@@ -121,7 +124,7 @@ export function Card({
121
124
 
122
125
  if (!interactive) {
123
126
  return (
124
- <View role="article" testID={testID} style={[resolveCardShape(theme, mode, variant), style]}>
127
+ <View role="article" testID={testID} style={[resolveCardShape(theme, mode, variant, false, elevation), style]}>
125
128
  {content}
126
129
  </View>
127
130
  );
@@ -137,7 +140,7 @@ export function Card({
137
140
  // 独立した操作要素として読み上げられる(既定の Pressable は子を畳んでしまう)。
138
141
  accessible={false}
139
142
  testID={testID}
140
- style={({ pressed }) => [resolveCardShape(theme, mode, variant, pressed), style]}
143
+ style={({ pressed }) => [resolveCardShape(theme, mode, variant, pressed, elevation), style]}
141
144
  >
142
145
  {content}
143
146
  </Pressable>
@@ -1,37 +1,50 @@
1
1
  /**
2
2
  * Header — 画面名と左右の操作を持つ共通ヘッダー。
3
- * actionsでは画面名を視覚的に隠すが、独立したa11y見出しとして残す。
4
- * 余白・下線・見出しの配置はheader recipeとpure resolverが所有する。
3
+ * 配置・余白・見出しの組版を所有し、navigationやタイトルのアニメーションは利用側が渡す。
5
4
  */
6
5
  import { useMemo, type ReactNode } from "react";
7
- import { View, type StyleProp, type ViewStyle } from "react-native";
6
+ import { StyleSheet, View, type StyleProp, type ViewStyle } from "react-native";
8
7
  import { useTheme } from "../theme/index.js";
9
8
  import { CONTRACTS, type VariantOf } from "../contracts/contract-types.js";
10
9
  import { Text } from "../primitives/Text.js";
11
- import { HEADER_SPEC, resolveHeaderStyle } from "./header.styles.js";
10
+ import { HEADER_SPEC, isCenteredHeader, resolveHeaderStyle } from "./header.styles.js";
11
+
12
+ /** 中央タイトルの最小高。スクロール量には可能な限りonLayoutの実測を使う。 */
13
+ export const HEADER_CENTERED_MIN_HEIGHT = HEADER_SPEC.centeredMinHeight;
12
14
 
13
15
  interface HeaderProps {
14
16
  /** 空でない画面名。actionsでも読み上げるため必須。 */
15
17
  title: string;
16
- /** defaultは可視見出し、actionsは可視タイトルのない操作バー。 */
17
18
  variant?: VariantOf<"header">;
19
+ /** 中央タイトルの長い画面名を1段下げる。default/actionsの組版は変更しない。 */
20
+ titleVariant?: "base" | "lg";
21
+ /** 中央タイトルのfade用。渡された見出しを保ち、アニメーションと読み上げ非表示だけを包む。 */
22
+ wrapTitle?: (heading: ReactNode) => ReactNode;
18
23
  leading?: ReactNode;
19
24
  trailing?: ReactNode;
20
25
  style?: StyleProp<ViewStyle>;
21
26
  testID?: string;
22
27
  }
23
28
 
24
- export function Header({ title, variant = "default", leading, trailing, style, testID }: HeaderProps) {
29
+ export function Header({ title, variant = "default", titleVariant = HEADER_SPEC.centeredTitleFont,
30
+ wrapTitle, leading, trailing, style, testID }: HeaderProps) {
25
31
  const { theme, mode } = useTheme();
26
- const { containerStyle, titleWrapStyle, hiddenTitleStyle } = useMemo(
27
- () => resolveHeaderStyle(theme, mode, { variant }), [theme, mode, variant],
32
+ const { containerStyle, titleWrapStyle, hiddenTitleStyle, leadingStyle, trailingStyle } = useMemo(
33
+ () => resolveHeaderStyle(theme, mode, { variant }, StyleSheet.hairlineWidth), [theme, mode, variant],
28
34
  );
35
+ const centered = isCenteredHeader(variant);
36
+ // 中央タイトルは既存の本文字間を維持し、独立した見出しの意味をwrapperで与える。
37
+ const centeredTitle = centered ? (
38
+ <View accessible accessibilityRole="header" accessibilityLabel={title}>
39
+ <Text variant={titleVariant} weight={HEADER_SPEC.titleWeight}
40
+ color={HEADER_SPEC.titleColor} numberOfLines={1}>{title}</Text>
41
+ </View>
42
+ ) : null;
29
43
  return (
30
44
  <View style={[containerStyle, style]} testID={testID}>
31
- {leading}
45
+ {centered ? <View style={leadingStyle}>{leading}</View> : leading}
32
46
  <View style={titleWrapStyle}>
33
- {variant === "actions" ? (
34
- // 見出しTextの契約を再利用し、左右の操作を親の読み上げへ畳まない。
47
+ {centered ? (wrapTitle ? wrapTitle(centeredTitle) : centeredTitle) : variant === "actions" ? (
35
48
  <View pointerEvents="none" style={hiddenTitleStyle}>
36
49
  <Text variant={HEADER_SPEC.titleFont} weight={HEADER_SPEC.titleWeight}
37
50
  color={HEADER_SPEC.titleColor} role="heading" numberOfLines={1}>
@@ -45,7 +58,7 @@ export function Header({ title, variant = "default", leading, trailing, style, t
45
58
  </Text>
46
59
  )}
47
60
  </View>
48
- {trailing}
61
+ {centered ? <View style={trailingStyle}>{trailing}</View> : trailing}
49
62
  </View>
50
63
  );
51
64
  }
@@ -26,7 +26,7 @@ import { Surface } from "./Surface.js";
26
26
  import { useTheme } from "../theme/index.js";
27
27
  import { CONTRACTS } from "../contracts/contract-types.js";
28
28
  import {
29
- CARD_SURFACE_SPEC,
29
+ resolveSkeletonSurfaceProps,
30
30
  PULSE_OPACITY,
31
31
  SKELETON_METRICS,
32
32
  resolveSkeletonStates,
@@ -35,6 +35,8 @@ import {
35
35
  } from "./skeleton.styles.js";
36
36
 
37
37
  interface SkeletonProps {
38
+ /** card の影。text/circle は影を使用しない。 */
39
+ elevation?: "default" | "none";
38
40
  variant?: SkeletonVariant;
39
41
  width?: DimensionValue;
40
42
  /** text variant の行数。 */
@@ -46,6 +48,7 @@ interface SkeletonProps {
46
48
 
47
49
  export function Skeleton({
48
50
  variant = "text",
51
+ elevation = "default",
49
52
  width = "100%",
50
53
  lines = 1,
51
54
  accessibilityLabel = "読み込み中",
@@ -53,7 +56,7 @@ export function Skeleton({
53
56
  testID,
54
57
  }: SkeletonProps) {
55
58
  const { theme, mode } = useTheme();
56
- const styles = useMemo(() => resolveSkeletonVariants(theme, mode), [theme, mode]);
59
+ const styles = useMemo(() => resolveSkeletonVariants(theme, mode, elevation), [theme, mode, elevation]);
57
60
  // 初期値 opacityFrom = 非アニメ(reduce-motion でも光らない)。reduce-motion OFF を確認後にのみ loop で揺らす。
58
61
  const opacity = useRef(new Animated.Value(PULSE_OPACITY.from)).current;
59
62
 
@@ -105,7 +108,7 @@ export function Skeleton({
105
108
  const { borderWidth, borderColor } = styles.card.style;
106
109
  return (
107
110
  <Surface
108
- {...CARD_SURFACE_SPEC}
111
+ {...resolveSkeletonSurfaceProps(elevation)}
109
112
  // contract skeleton.card は border-default を要求(Surface は border を出さないので Skeleton で付与)。
110
113
  style={[{ borderWidth, borderColor }, style]}
111
114
  testID={testID}
@@ -7,7 +7,11 @@
7
7
  */
8
8
 
9
9
  import type { ViewStyle } from "react-native";
10
- import type { NativeTheme, ThemeMode, ElevationKey } from "../theme/index.js";
10
+ import type { NativeTheme, ThemeMode, ElevationKey, RadiusKey, SpacingKey } from "../theme/index.js";
11
+
12
+ export const CARD_SPEC = {
13
+ radius: "lg", padding: "6", elevation: "sm", pressedElevation: "md", flatElevation: "none",
14
+ } as const satisfies { radius: RadiusKey; padding: SpacingKey; elevation: ElevationKey; pressedElevation: ElevationKey; flatElevation: ElevationKey };
11
15
 
12
16
  export type CardVariant = "basic" | "media" | "action" | "link";
13
17
 
@@ -33,17 +37,19 @@ export function resolveCardShape(
33
37
  mode: ThemeMode,
34
38
  variant: CardVariant,
35
39
  pressed = false,
40
+ elevation: "default" | "none" = "default",
36
41
  ): ViewStyle {
37
42
  const sem = theme.color.semantic[mode];
38
- const elevation: ElevationKey = pressed && CARD_INTERACTIVE[variant] ? "md" : "sm";
43
+ const elevationKey = elevation === "none" ? CARD_SPEC.flatElevation
44
+ : pressed && CARD_INTERACTIVE[variant] ? CARD_SPEC.pressedElevation : CARD_SPEC.elevation;
39
45
  return {
40
46
  backgroundColor: sem["bg-surface"],
41
- borderRadius: theme.radius.lg,
47
+ borderRadius: theme.radius[CARD_SPEC.radius],
42
48
  borderWidth: 1,
43
49
  borderColor: sem["border-default"],
44
50
  // media は内側 clip View が padding を持つので外枠は padding なし。
45
- ...(variant === "media" ? null : { padding: theme.spacing["6"] }),
46
- ...theme.elevation[elevation],
51
+ ...(variant === "media" ? null : { padding: theme.spacing[CARD_SPEC.padding] }),
52
+ ...theme.elevation[elevationKey],
47
53
  };
48
54
  }
49
55
 
@@ -52,5 +58,5 @@ export function resolveCardBodyStyle(
52
58
  theme: NativeTheme,
53
59
  variant: CardVariant,
54
60
  ): { padding: number } | undefined {
55
- return variant === "media" ? { padding: theme.spacing["6"] } : undefined;
61
+ return variant === "media" ? { padding: theme.spacing[CARD_SPEC.padding] } : undefined;
56
62
  }
@@ -1,30 +1,51 @@
1
1
  /** Headerの見た目をrecipeと照合できるpure resolverへ集約する。 */
2
+ import type { ViewStyle } from "react-native";
2
3
  import type { NativeTheme, ThemeMode, SpacingKey, FontSizeKey, FontWeightKey, SemanticColors } from "../theme/index.js";
3
4
  import type { VariantOf } from "../contracts/contract-types.js";
4
5
 
5
6
  export const HEADER_SPEC = {
6
7
  gap: "3", actionsGap: "1", paddingX: "4", paddingY: "3",
7
- titleFont: "xl", titleWeight: "bold", titleColor: "text-heading",
8
- borderWidth: 1, hiddenTitleSize: 1,
8
+ titleFont: "xl", centeredTitleFont: "lg", titleWeight: "bold", titleColor: "text-heading",
9
+ borderWidth: 1, hiddenTitleSize: 1, centeredMinHeight: 44, sideMinWidth: 44,
9
10
  } as const satisfies {
10
11
  gap: SpacingKey; actionsGap: SpacingKey; paddingX: SpacingKey; paddingY: SpacingKey;
11
- titleFont: FontSizeKey; titleWeight: FontWeightKey; titleColor: keyof SemanticColors;
12
- borderWidth: 1; hiddenTitleSize: 1;
12
+ titleFont: FontSizeKey; centeredTitleFont: FontSizeKey; titleWeight: FontWeightKey; titleColor: keyof SemanticColors;
13
+ borderWidth: 1; hiddenTitleSize: 1; centeredMinHeight: 44; sideMinWidth: 44;
13
14
  };
14
15
 
15
16
  export interface HeaderStyle {
16
- containerStyle: {
17
- flexDirection: "row"; alignItems: "center"; gap: number;
18
- paddingHorizontal: number; paddingVertical: number;
19
- backgroundColor: string; borderBottomWidth: 1; borderBottomColor: string;
20
- };
21
- titleWrapStyle: { flex: 1 };
22
- hiddenTitleStyle?: { position: "absolute"; width: 1; height: 1; overflow: "hidden" };
17
+ containerStyle: ViewStyle;
18
+ titleWrapStyle: ViewStyle;
19
+ hiddenTitleStyle?: ViewStyle;
20
+ leadingStyle?: ViewStyle;
21
+ trailingStyle?: ViewStyle;
22
+ }
23
+
24
+ /** 中央タイトルの2形だけが同じ配置と組版を共有する。 */
25
+ export function isCenteredHeader(variant?: VariantOf<"header">): boolean {
26
+ return variant === "centered" || variant === "navigation";
23
27
  }
24
28
 
25
29
  export function resolveHeaderStyle(
26
30
  theme: NativeTheme, mode: ThemeMode, props: { variant?: VariantOf<"header"> } = {},
31
+ // recipeは密度1で照合し、実機のhairline値だけを外から注入する。
32
+ hairlineWidth = HEADER_SPEC.borderWidth as number,
27
33
  ): HeaderStyle {
34
+ if (isCenteredHeader(props.variant)) {
35
+ return {
36
+ containerStyle: {
37
+ flexDirection: "row", alignItems: "center", minHeight: HEADER_SPEC.centeredMinHeight,
38
+ ...(props.variant === "navigation" ? {
39
+ paddingHorizontal: theme.spacing[HEADER_SPEC.paddingX],
40
+ borderBottomWidth: hairlineWidth,
41
+ borderBottomColor: theme.color.semantic[mode]["border-default"],
42
+ } : {}),
43
+ },
44
+ titleWrapStyle: { flexShrink: 1, minWidth: 0 },
45
+ leadingStyle: { flex: 1, minWidth: HEADER_SPEC.sideMinWidth, flexDirection: "row", justifyContent: "flex-start" },
46
+ trailingStyle: { flex: 1, minWidth: HEADER_SPEC.sideMinWidth, flexDirection: "row", justifyContent: "flex-end" },
47
+ };
48
+ }
28
49
  return {
29
50
  containerStyle: {
30
51
  flexDirection: "row", alignItems: "center", gap: theme.spacing[props.variant === "actions" ? HEADER_SPEC.actionsGap : HEADER_SPEC.gap],
@@ -37,6 +37,11 @@ export const CARD_SURFACE_SPEC = {
37
37
  padding: SpacingKey;
38
38
  };
39
39
 
40
+ /** Surface と resolver は同じ elevation 選択を共有する。 */
41
+ export function resolveSkeletonSurfaceProps(elevation: "default" | "none" = "default") {
42
+ return { ...CARD_SURFACE_SPEC, elevation: elevation === "none" ? "none" as const : CARD_SURFACE_SPEC.elevation };
43
+ }
44
+
40
45
  /** バー / アバター円の寸法。recipe と同じく token に対応が無い literal(recipe description 参照)。 */
41
46
  export const SKELETON_METRICS = {
42
47
  /** text variant の行バー高さ */
@@ -86,7 +91,7 @@ export interface SkeletonVariantStyles {
86
91
  * バーの色は text / circle / card すべて border-default(contract に忠実、§1 Agent m2)。
87
92
  * card の土台は CARD_SURFACE_SPEC のキーから解決する(component 側の Surface props と同源)。
88
93
  */
89
- export function resolveSkeletonVariants(theme: NativeTheme, mode: ThemeMode): SkeletonVariantStyles {
94
+ export function resolveSkeletonVariants(theme: NativeTheme, mode: ThemeMode, elevation: "default" | "none" = "default"): SkeletonVariantStyles {
90
95
  const sem = theme.color.semantic[mode];
91
96
  const bar = sem["border-default"];
92
97
  return {
@@ -106,21 +111,22 @@ export function resolveSkeletonVariants(theme: NativeTheme, mode: ThemeMode): Sk
106
111
  backgroundColor: bar,
107
112
  },
108
113
  },
109
- card: {
114
+ // card を使う時だけ影を解決する。text/circle は影のトークンを読まない。
115
+ get card() { return {
110
116
  style: {
111
117
  backgroundColor: sem[CARD_SURFACE_SPEC.bg],
112
118
  borderRadius: theme.radius[CARD_SURFACE_SPEC.radius],
113
119
  borderWidth: 1,
114
120
  borderColor: bar,
115
121
  padding: theme.spacing[CARD_SURFACE_SPEC.padding],
116
- elevation: theme.elevation[CARD_SURFACE_SPEC.elevation],
122
+ elevation: theme.elevation[resolveSkeletonSurfaceProps(elevation).elevation],
117
123
  },
118
124
  barStyle: {
119
125
  height: SKELETON_METRICS.cardBarHeight,
120
126
  borderRadius: theme.radius.sm,
121
127
  backgroundColor: bar,
122
128
  },
123
- },
129
+ }; },
124
130
  };
125
131
  }
126
132
 
@@ -98,8 +98,8 @@ export const CONTRACTS = {
98
98
  },
99
99
  header: {
100
100
  id: "header",
101
- version: "0.2.0",
102
- variants: ["default", "actions"],
101
+ version: "0.3.0",
102
+ variants: ["default", "actions", "centered", "navigation"],
103
103
  sizes: [],
104
104
  states: ["default"],
105
105
  },
package/src/index.ts CHANGED
@@ -22,3 +22,5 @@ export {
22
22
  type SizeOf,
23
23
  type StateOf,
24
24
  } from "./contracts/contract-types.js";
25
+
26
+ export { HEADER_CENTERED_MIN_HEIGHT } from "./components/Header.js";