melta-app 0.10.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.
package/README.md CHANGED
@@ -704,3 +704,7 @@ variant省略時は従来どおり可視タイトルを表示します。
704
704
 
705
705
  `HEADER_CENTERED_MIN_HEIGHT`は初期見積もり用です。スクロール退避は可能な限りonLayoutの実測値を使い、
706
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":"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","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":[]}
@@ -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":[]}
@@ -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":[]}
@@ -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"}
@@ -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"}
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melta-app",
3
- "version": "0.10.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.9.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>
@@ -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
  }
@@ -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