melta-app 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +493 -186
- package/docs/architecture.md +99 -0
- package/eslint-rules/melta.d.mts +44 -0
- package/lib/module/a11y/tap-target.js +41 -0
- package/lib/module/a11y/tap-target.js.map +1 -0
- package/lib/module/components/ActionSheet.js +20 -6
- package/lib/module/components/ActionSheet.js.map +1 -1
- package/lib/module/components/Alert.js +11 -7
- package/lib/module/components/Alert.js.map +1 -1
- package/lib/module/components/Avatar.js +7 -2
- package/lib/module/components/Avatar.js.map +1 -1
- package/lib/module/components/BottomSheet.js +11 -3
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/Card.js +4 -3
- package/lib/module/components/Card.js.map +1 -1
- package/lib/module/components/Checkbox.js +8 -5
- package/lib/module/components/Checkbox.js.map +1 -1
- package/lib/module/components/EmptyState.js +2 -1
- package/lib/module/components/EmptyState.js.map +1 -1
- package/lib/module/components/Header.js.map +1 -1
- package/lib/module/components/Image.js +5 -3
- package/lib/module/components/Image.js.map +1 -1
- package/lib/module/components/Modal.js +12 -4
- package/lib/module/components/Modal.js.map +1 -1
- package/lib/module/components/Progress.js +2 -1
- package/lib/module/components/Progress.js.map +1 -1
- package/lib/module/components/Radio.js +11 -3
- package/lib/module/components/Radio.js.map +1 -1
- package/lib/module/components/Screen.js +28 -3
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/Skeleton.js +2 -1
- package/lib/module/components/Skeleton.js.map +1 -1
- package/lib/module/components/Surface.js +2 -1
- package/lib/module/components/Surface.js.map +1 -1
- package/lib/module/components/TextField.js +16 -4
- package/lib/module/components/TextField.js.map +1 -1
- package/lib/module/components/Toast.js +17 -9
- package/lib/module/components/Toast.js.map +1 -1
- package/lib/module/components/Toggle.js +13 -4
- package/lib/module/components/Toggle.js.map +1 -1
- package/lib/module/components/alert.styles.js +12 -26
- package/lib/module/components/alert.styles.js.map +1 -1
- package/lib/module/components/avatar.styles.js +24 -2
- package/lib/module/components/avatar.styles.js.map +1 -1
- package/lib/module/components/card.validate.js.map +1 -1
- package/lib/module/components/checkbox.styles.js +5 -2
- package/lib/module/components/checkbox.styles.js.map +1 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/modal.styles.js +9 -0
- package/lib/module/components/modal.styles.js.map +1 -1
- package/lib/module/components/radio.styles.js +11 -2
- package/lib/module/components/radio.styles.js.map +1 -1
- package/lib/module/components/safe-area-registry.js +64 -13
- package/lib/module/components/safe-area-registry.js.map +1 -1
- package/lib/module/components/status-colors.js +53 -0
- package/lib/module/components/status-colors.js.map +1 -0
- package/lib/module/components/textfield.styles.js +15 -8
- package/lib/module/components/textfield.styles.js.map +1 -1
- package/lib/module/components/toast.styles.js +36 -25
- package/lib/module/components/toast.styles.js.map +1 -1
- package/lib/module/components/toggle.styles.js +20 -0
- package/lib/module/components/toggle.styles.js.map +1 -1
- package/lib/module/icons/Icon.js +4 -1
- package/lib/module/icons/Icon.js.map +1 -1
- package/lib/module/icons/icon.styles.js +32 -1
- package/lib/module/icons/icon.styles.js.map +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/primitives/Button.js +23 -11
- package/lib/module/primitives/Button.js.map +1 -1
- package/lib/module/primitives/Metric.js +2 -1
- package/lib/module/primitives/Metric.js.map +1 -1
- package/lib/module/primitives/Row.js.map +1 -1
- package/lib/module/primitives/Stack.js.map +1 -1
- package/lib/module/primitives/Tag.js +15 -7
- package/lib/module/primitives/Tag.js.map +1 -1
- package/lib/module/primitives/Text.js +28 -7
- package/lib/module/primitives/Text.js.map +1 -1
- package/lib/module/primitives/_internal/focus-ring.js.map +1 -1
- package/lib/module/primitives/button.styles.js +58 -8
- package/lib/module/primitives/button.styles.js.map +1 -1
- package/lib/module/primitives/index.js.map +1 -1
- package/lib/module/primitives/metric.styles.js +4 -1
- package/lib/module/primitives/metric.styles.js.map +1 -1
- package/lib/module/primitives/tag.styles.js +42 -3
- package/lib/module/primitives/tag.styles.js.map +1 -1
- package/lib/module/primitives/text.styles.js +10 -5
- package/lib/module/primitives/text.styles.js.map +1 -1
- package/lib/module/safe-area/index.js +11 -5
- package/lib/module/safe-area/index.js.map +1 -1
- package/lib/module/theme/ThemeProvider.js +5 -2
- package/lib/module/theme/ThemeProvider.js.map +1 -1
- package/lib/module/theme/define-theme.js +27 -1
- package/lib/module/theme/define-theme.js.map +1 -1
- package/lib/module/theme/index.js +7 -8
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/letter-spacing.js +20 -0
- package/lib/module/theme/letter-spacing.js.map +1 -0
- package/lib/module/theme/line-height.js +52 -0
- package/lib/module/theme/line-height.js.map +1 -0
- package/lib/module/theme/native-theme.js +8 -7
- package/lib/module/theme/native-theme.js.map +1 -1
- package/lib/typescript/src/a11y/tap-target.d.ts +34 -0
- package/lib/typescript/src/a11y/tap-target.d.ts.map +1 -0
- package/lib/typescript/src/components/ActionSheet.d.ts +8 -1
- package/lib/typescript/src/components/ActionSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Alert.d.ts +9 -2
- package/lib/typescript/src/components/Alert.d.ts.map +1 -1
- package/lib/typescript/src/components/Avatar.d.ts +1 -1
- package/lib/typescript/src/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/BottomSheet.d.ts +4 -1
- package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Card.d.ts +2 -2
- package/lib/typescript/src/components/Checkbox.d.ts +3 -3
- package/lib/typescript/src/components/Checkbox.d.ts.map +1 -1
- package/lib/typescript/src/components/Image.d.ts +4 -3
- package/lib/typescript/src/components/Image.d.ts.map +1 -1
- package/lib/typescript/src/components/Modal.d.ts +9 -3
- package/lib/typescript/src/components/Modal.d.ts.map +1 -1
- package/lib/typescript/src/components/Progress.d.ts +1 -1
- package/lib/typescript/src/components/Progress.d.ts.map +1 -1
- package/lib/typescript/src/components/Radio.d.ts +3 -2
- package/lib/typescript/src/components/Radio.d.ts.map +1 -1
- package/lib/typescript/src/components/Screen.d.ts +28 -5
- package/lib/typescript/src/components/Screen.d.ts.map +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/Surface.d.ts +1 -1
- package/lib/typescript/src/components/Surface.d.ts.map +1 -1
- package/lib/typescript/src/components/TextField.d.ts +11 -4
- package/lib/typescript/src/components/TextField.d.ts.map +1 -1
- package/lib/typescript/src/components/Toast.d.ts +10 -3
- package/lib/typescript/src/components/Toast.d.ts.map +1 -1
- package/lib/typescript/src/components/Toggle.d.ts +3 -2
- package/lib/typescript/src/components/Toggle.d.ts.map +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/alert.styles.d.ts +14 -14
- package/lib/typescript/src/components/alert.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/avatar.styles.d.ts +36 -1
- package/lib/typescript/src/components/avatar.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.styles.d.ts +1 -1
- package/lib/typescript/src/components/card.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.validate.d.ts +1 -1
- package/lib/typescript/src/components/card.validate.d.ts.map +1 -1
- package/lib/typescript/src/components/checkbox.styles.d.ts +6 -3
- package/lib/typescript/src/components/checkbox.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/header.styles.d.ts +1 -1
- package/lib/typescript/src/components/header.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/image.styles.d.ts +1 -1
- package/lib/typescript/src/components/image.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/index.d.ts +18 -18
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/lib/typescript/src/components/modal.styles.d.ts +13 -2
- package/lib/typescript/src/components/modal.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/radio.styles.d.ts +10 -2
- package/lib/typescript/src/components/radio.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/safe-area-registry.d.ts +47 -11
- package/lib/typescript/src/components/safe-area-registry.d.ts.map +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/status-colors.d.ts +33 -0
- package/lib/typescript/src/components/status-colors.d.ts.map +1 -0
- package/lib/typescript/src/components/surface.styles.d.ts +1 -1
- package/lib/typescript/src/components/surface.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/textfield.styles.d.ts +9 -5
- package/lib/typescript/src/components/textfield.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toast.styles.d.ts +34 -14
- package/lib/typescript/src/components/toast.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toggle.styles.d.ts +17 -1
- package/lib/typescript/src/components/toggle.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/Icon.d.ts +12 -6
- package/lib/typescript/src/icons/Icon.d.ts.map +1 -1
- package/lib/typescript/src/icons/icon.styles.d.ts +14 -2
- package/lib/typescript/src/icons/icon.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/index.d.ts +3 -3
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Button.d.ts +8 -4
- package/lib/typescript/src/primitives/Button.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Row.d.ts +2 -2
- package/lib/typescript/src/primitives/Row.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Stack.d.ts +2 -2
- package/lib/typescript/src/primitives/Stack.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Tag.d.ts +2 -2
- package/lib/typescript/src/primitives/Tag.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Text.d.ts +20 -6
- package/lib/typescript/src/primitives/Text.d.ts.map +1 -1
- package/lib/typescript/src/primitives/button.styles.d.ts +44 -7
- package/lib/typescript/src/primitives/button.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/index.d.ts +6 -6
- package/lib/typescript/src/primitives/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts +34 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/text.styles.d.ts +2 -4
- package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -1
- package/lib/typescript/src/safe-area/index.d.ts +19 -5
- package/lib/typescript/src/safe-area/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/define-theme.d.ts +15 -2
- package/lib/typescript/src/theme/define-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/index.d.ts +14 -13
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/letter-spacing.d.ts +15 -0
- package/lib/typescript/src/theme/letter-spacing.d.ts.map +1 -0
- package/lib/typescript/src/theme/line-height.d.ts +44 -0
- package/lib/typescript/src/theme/line-height.d.ts.map +1 -0
- package/lib/typescript/src/theme/native-theme.d.ts +1 -1
- package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/types.d.ts +10 -1
- package/lib/typescript/src/theme/types.d.ts.map +1 -1
- package/llms.txt +2 -1
- package/package.json +22 -7
- package/src/a11y/tap-target.ts +38 -0
- package/src/components/ActionSheet.tsx +25 -15
- package/src/components/Alert.tsx +37 -10
- package/src/components/Avatar.tsx +12 -4
- package/src/components/BottomSheet.tsx +16 -13
- package/src/components/Card.tsx +9 -8
- package/src/components/Checkbox.tsx +12 -9
- package/src/components/EmptyState.tsx +7 -6
- package/src/components/Header.tsx +4 -4
- package/src/components/Image.tsx +9 -7
- package/src/components/Modal.tsx +22 -6
- package/src/components/Progress.tsx +5 -4
- package/src/components/Radio.tsx +11 -6
- package/src/components/Screen.tsx +66 -8
- package/src/components/Skeleton.tsx +6 -5
- package/src/components/Surface.tsx +5 -4
- package/src/components/TextField.tsx +25 -7
- package/src/components/Toast.tsx +33 -11
- package/src/components/Toggle.tsx +15 -6
- package/src/components/action-sheet.styles.ts +1 -1
- package/src/components/alert.styles.ts +13 -25
- package/src/components/avatar.styles.ts +25 -3
- package/src/components/bottom-sheet.styles.ts +1 -1
- package/src/components/card.styles.ts +1 -1
- package/src/components/card.validate.ts +2 -2
- package/src/components/checkbox.styles.ts +6 -3
- package/src/components/empty-state.styles.ts +1 -1
- package/src/components/header.styles.ts +1 -1
- package/src/components/image.styles.ts +1 -1
- package/src/components/index.ts +18 -18
- package/src/components/modal.styles.ts +11 -2
- package/src/components/progress.styles.ts +1 -1
- package/src/components/radio.styles.ts +11 -2
- package/src/components/safe-area-registry.ts +81 -14
- package/src/components/screen.styles.ts +1 -1
- package/src/components/skeleton.styles.ts +1 -1
- package/src/components/status-colors.ts +59 -0
- package/src/components/surface.styles.ts +1 -1
- package/src/components/textfield.styles.ts +18 -15
- package/src/components/toast.styles.ts +32 -25
- package/src/components/toggle.styles.ts +21 -1
- package/src/icons/Icon.tsx +13 -8
- package/src/icons/icon.styles.ts +38 -3
- package/src/icons/index.ts +3 -3
- package/src/index.ts +4 -4
- package/src/primitives/Button.tsx +28 -14
- package/src/primitives/Metric.tsx +5 -4
- package/src/primitives/Row.tsx +4 -4
- package/src/primitives/Stack.tsx +4 -4
- package/src/primitives/Tag.tsx +29 -11
- package/src/primitives/Text.tsx +42 -9
- package/src/primitives/_internal/focus-ring.tsx +1 -1
- package/src/primitives/button.styles.ts +63 -10
- package/src/primitives/index.ts +6 -6
- package/src/primitives/metric.styles.ts +9 -2
- package/src/primitives/row.styles.ts +1 -1
- package/src/primitives/stack.styles.ts +1 -1
- package/src/primitives/tag.styles.ts +43 -4
- package/src/primitives/text.styles.ts +10 -6
- package/src/safe-area/index.ts +21 -7
- package/src/theme/ThemeProvider.tsx +8 -5
- package/src/theme/define-theme.ts +33 -2
- package/src/theme/index.ts +18 -16
- package/src/theme/letter-spacing.ts +17 -0
- package/src/theme/line-height.ts +53 -0
- package/src/theme/native-theme.ts +9 -8
- package/src/theme/types.ts +10 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TOAST_SPEC","padding","gap","radius","elevation","messageFont","messageWeight","
|
|
1
|
+
{"version":3,"names":["resolveStatusVariantColors","CANONICAL_TAP_TARGET","TOAST_SPEC","padding","gap","radius","elevation","messageFont","messageWeight","TOAST_TAP_TARGET","hitSlop","top","bottom","left","right","closeMinWidth","closeMinHeight","minHeight","resolveToastStyles","theme","mode","variant","bg","text","containerStyle","backgroundColor","borderRadius","spacing","flexDirection","alignItems","messageStyle","color","fontSize","typography","fontWeight"],"sourceRoot":"../../../src","sources":["components/toast.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA,SAASA,0BAA0B,QAA4B,oBAAoB;AACnF,SAASC,oBAAoB,QAAQ,uBAAuB;;AAE5D;;AAGA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG;EACxBC,OAAO,EAAE,GAAG;EACZC,GAAG,EAAE,GAAG;EACRC,MAAM,EAAE,IAAI;EACZC,SAAS,EAAE,IAAI;EACfC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE;AACjB,CAOC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG;EAC9B;EACAC,OAAO,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,MAAM,EAAE,EAAE;IAAEC,IAAI,EAAE,CAAC;IAAEC,KAAK,EAAE;EAAE,CAAC;EACnD;EACAC,aAAa,EAAE,EAAE;EACjB;EACAC,cAAc,EAAEf,oBAAoB,CAACgB;AACvC,CAAU;;AAEV;AACA;AACA;AACA;;AAoBA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAAkB,EAClBC,IAAe,EACfC,OAAqB,EACR;EACb,MAAM;IAAEC,EAAE;IAAEC;EAAK,CAAC,GAAGvB,0BAA0B,CAACmB,KAAK,EAAEC,IAAI,EAAEC,OAAO,CAAC;EACrE,OAAO;IACLG,cAAc,EAAE;MACdC,eAAe,EAAEH,EAAE;MACnBI,YAAY,EAAEP,KAAK,CAACd,MAAM,CAACH,UAAU,CAACG,MAAM,CAAC;MAC7CF,OAAO,EAAEgB,KAAK,CAACQ,OAAO,CAACzB,UAAU,CAACC,OAAO,CAAC;MAC1CyB,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,QAAQ;MACpBzB,GAAG,EAAEe,KAAK,CAACQ,OAAO,CAACzB,UAAU,CAACE,GAAG;IACnC,CAAC;IACDE,SAAS,EAAEa,KAAK,CAACb,SAAS,CAACJ,UAAU,CAACI,SAAS,CAAC;IAChDwB,YAAY,EAAE;MACZC,KAAK,EAAER,IAAI;MACXS,QAAQ,EAAEb,KAAK,CAACc,UAAU,CAACD,QAAQ,CAAC9B,UAAU,CAACK,WAAW,CAAC,CAACyB,QAAQ;MACpEE,UAAU,EAAEf,KAAK,CAACc,UAAU,CAACC,UAAU,CAAChC,UAAU,CAACM,aAAa;IAClE;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -39,6 +39,26 @@ export const TOGGLE_SIZE_SPEC = {
|
|
|
39
39
|
/** disabled state の opacity(recipe states.disabled.style.opacity と照合)。 */
|
|
40
40
|
export const TOGGLE_DISABLED_OPACITY = 0.5;
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* size → 縦方向の片側 hitSlop(実効タップ標的 44pt。A11Y_MIN_TAP_TARGET_44)。
|
|
44
|
+
*
|
|
45
|
+
* Pressable の高さは **label 無しなら track の高さそのもの**(medium 24 / large 28)で、
|
|
46
|
+
* どちらも 44pt に届かない。track は背景(色付きの丸)を持つので minHeight で伸ばすと
|
|
47
|
+
* スイッチが縦長に見える → 当たり判定だけ広げる:
|
|
48
|
+
* medium 24 + 10×2 = 44 / large 28 + 8×2 = 44
|
|
49
|
+
*
|
|
50
|
+
* label 付きの行でも高さは label(base)の lineHeight 36pt にしかならず 44pt に届かないため、
|
|
51
|
+
* **label の有無に関わらず同じ値を適用する**(label 付きは 36 + 20 = 56pt と余裕が出るが、
|
|
52
|
+
* Toggle は alignSelf: flex-start の独立行なので横に重なる相手がいない)。
|
|
53
|
+
*
|
|
54
|
+
* ⚠️ literal で持つ(TOGGLE_SIZE_SPEC から自動導出しない)。導出にすると track 寸法を変えたときに
|
|
55
|
+
* hitSlop が黙って追随し、conformance が fail-open になる。
|
|
56
|
+
*/
|
|
57
|
+
export const TOGGLE_VERTICAL_HIT_SLOP = {
|
|
58
|
+
medium: 10,
|
|
59
|
+
large: 8
|
|
60
|
+
};
|
|
61
|
+
|
|
42
62
|
/**
|
|
43
63
|
* variant / size → track + thumb の最終 style 値の解決(toggle.recipe styleRefs の 1:1 写像)。
|
|
44
64
|
* track.padding = thumbOffset(thumb を track 内で浮かせる余白)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TOGGLE_SIZE_SPEC","medium","trackWidth","trackHeight","thumbSize","thumbOffset","large","TOGGLE_DISABLED_OPACITY","resolveToggleStyle","theme","mode","variant","size","c","color","sem","semantic","spec","track","width","height","backgroundColor","primary","borderRadius","radius","full","padding","thumb"],"sourceRoot":"../../../src","sources":["components/toggle.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAIA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAGZ,GAAG;EACFC,MAAM,EAAE;IAAEC,UAAU,EAAE,EAAE;IAAEC,WAAW,EAAE,EAAE;IAAEC,SAAS,EAAE,EAAE;IAAEC,WAAW,EAAE;EAAE,CAAC;EAC1EC,KAAK,EAAE;IAAEJ,UAAU,EAAE,EAAE;IAAEC,WAAW,EAAE,EAAE;IAAEC,SAAS,EAAE,EAAE;IAAEC,WAAW,EAAE;EAAE;AAC1E,CAAC;;AAED;AACA,OAAO,MAAME,uBAAuB,GAAG,GAAG;;AAE1C;AACA;AACA;AACA;AACA,OAAO,
|
|
1
|
+
{"version":3,"names":["TOGGLE_SIZE_SPEC","medium","trackWidth","trackHeight","thumbSize","thumbOffset","large","TOGGLE_DISABLED_OPACITY","TOGGLE_VERTICAL_HIT_SLOP","resolveToggleStyle","theme","mode","variant","size","c","color","sem","semantic","spec","track","width","height","backgroundColor","primary","borderRadius","radius","full","padding","thumb"],"sourceRoot":"../../../src","sources":["components/toggle.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAIA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAGZ,GAAG;EACFC,MAAM,EAAE;IAAEC,UAAU,EAAE,EAAE;IAAEC,WAAW,EAAE,EAAE;IAAEC,SAAS,EAAE,EAAE;IAAEC,WAAW,EAAE;EAAE,CAAC;EAC1EC,KAAK,EAAE;IAAEJ,UAAU,EAAE,EAAE;IAAEC,WAAW,EAAE,EAAE;IAAEC,SAAS,EAAE,EAAE;IAAEC,WAAW,EAAE;EAAE;AAC1E,CAAC;;AAED;AACA,OAAO,MAAME,uBAAuB,GAAG,GAAG;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAoD,GAAG;EAClEP,MAAM,EAAE,EAAE;EACVK,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASG,kBAAkBA,CAChCC,KAAkB,EAClBC,IAAe,EACf;EAAEC,OAAO;EAAEC,IAAI,GAAG;AAAwD,CAAC,EAU3E;EACA,MAAMC,CAAC,GAAGJ,KAAK,CAACK,KAAK;EACrB,MAAMC,GAAG,GAAGF,CAAC,CAACG,QAAQ,CAACN,IAAI,CAAC;EAC5B,MAAMO,IAAI,GAAGlB,gBAAgB,CAACa,IAAI,CAAC;EACnC,OAAO;IACLM,KAAK,EAAE;MACLC,KAAK,EAAEF,IAAI,CAAChB,UAAU;MACtBmB,MAAM,EAAEH,IAAI,CAACf,WAAW;MACxBmB,eAAe,EAAEV,OAAO,KAAK,IAAI,GAAGE,CAAC,CAACS,OAAO,CAAC,KAAK,CAAC,GAAGP,GAAG,CAAC,eAAe,CAAC;MAC3EQ,YAAY,EAAEd,KAAK,CAACe,MAAM,CAACC,IAAI;MAC/BC,OAAO,EAAET,IAAI,CAACb;IAChB,CAAC;IACDuB,KAAK,EAAE;MACLR,KAAK,EAAEF,IAAI,CAACd,SAAS;MACrBiB,MAAM,EAAEH,IAAI,CAACd,SAAS;MACtBkB,eAAe,EAAEN,GAAG,CAAC,YAAY,CAAC;MAClCQ,YAAY,EAAEd,KAAK,CAACe,MAAM,CAACC;IAC7B;EACF,CAAC;AACH","ignoreList":[]}
|
package/lib/module/icons/Icon.js
CHANGED
|
@@ -9,7 +9,10 @@
|
|
|
9
9
|
* export される(optional peerDependency。利用者は `npx expo install react-native-svg` が必要)。
|
|
10
10
|
*
|
|
11
11
|
* - name は glyphs.ts(assets/icons/*.svg からの codegen、commit 済み配布)のキー。
|
|
12
|
-
* - color は semantic token
|
|
12
|
+
* - color は semantic token キー + status 色("status-success" / "status-warning" / "status-error")。
|
|
13
|
+
* default "text-default"、size は contract sizes(sm/md/lg)。status 色は Alert / Toast と同じ
|
|
14
|
+
* status token を引くので、アイコン単体で状態を示す場面(フォーム行の成功チェック等)に使える。
|
|
15
|
+
* "status-info" は無い(status token に info の実体が無い。text-accent 等で代替する)。
|
|
13
16
|
* - a11y: 意味を持つ場合は accessibilityLabel を渡す。無指定は装飾扱いで a11y ツリーから除外
|
|
14
17
|
* (contract a11y required の両ケース)。
|
|
15
18
|
* - 決定ロジックは pure resolver(icon.styles.ts)に分離 — recipe との機械照合対象。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","Svg","Path","useTheme","CONTRACTS","resolveIconStyle","GLYPHS","jsx","_jsx","Icon","name","size","color","accessibilityLabel","testID","theme","mode","resolved","glyph","decorative","width","height","viewBox","accessible","accessibilityRole","accessibilityElementsHidden","importantForAccessibility","children","paths","map","p","i","d","fillRule","fill","__contract","icon"],"sourceRoot":"../../../src","sources":["icons/Icon.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,OAAOC,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAC5C,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","Svg","Path","useTheme","CONTRACTS","resolveIconStyle","GLYPHS","jsx","_jsx","Icon","name","size","color","accessibilityLabel","testID","theme","mode","resolved","glyph","decorative","width","height","viewBox","accessible","accessibilityRole","accessibilityElementsHidden","importantForAccessibility","children","paths","map","p","i","d","fillRule","fill","__contract","icon"],"sourceRoot":"../../../src","sources":["icons/Icon.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,OAAOC,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAC5C,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAqB,gCAAgC;AACvE,SAASC,gBAAgB,QAAwC,kBAAkB;AACnF,SAASC,MAAM,QAAuB,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBpD,OAAO,SAASC,IAAIA,CAAC;EAAEC,IAAI;EAAEC,IAAI,GAAG,IAAI;EAAEC,KAAK,GAAG,cAAc;EAAEC,kBAAkB;EAAEC;AAAkB,CAAC,EAAE;EACzG,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAElC,MAAMc,QAAQ,GAAGjB,OAAO,CACtB,MAAMK,gBAAgB,CAACU,KAAK,EAAEC,IAAI,EAAEL,IAAI,EAAEC,KAAK,CAAC,EAChD,CAACG,KAAK,EAAEC,IAAI,EAAEL,IAAI,EAAEC,KAAK,CAC3B,CAAC;EACD,MAAMM,KAAK,GAAGZ,MAAM,CAACI,IAAI,CAAC;EAC1B,MAAMS,UAAU,GAAGN,kBAAkB,IAAI,IAAI;EAE7C,oBACEL,IAAA,CAACP,GAAG;IACFmB,KAAK,EAAEH,QAAQ,CAACG,KAAM;IACtBC,MAAM,EAAEJ,QAAQ,CAACI,MAAO;IACxBC,OAAO,EAAEJ,KAAK,CAACI,OAAQ;IACvBC,UAAU,EAAE,CAACJ,UAAW;IACxBK,iBAAiB,EAAC,OAAO;IACzBX,kBAAkB,EAAEA,kBAAmB;IACvCY,2BAA2B,EAAEN,UAAW;IACxCO,yBAAyB,EAAEP,UAAU,GAAG,qBAAqB,GAAG,KAAM;IACtEL,MAAM,EAAEA,MAAO;IAAAa,QAAA,EAEdT,KAAK,CAACU,KAAK,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACpBvB,IAAA,CAACN,IAAI;MAAS8B,CAAC,EAAEF,CAAC,CAACE,CAAE;MAACC,QAAQ,EAAEH,CAAC,CAACG,QAAS;MAACC,IAAI,EAAEjB,QAAQ,CAACL;IAAM,GAAtDmB,CAAwD,CACpE;EAAC,CACC,CAAC;AAEV;AAEAtB,IAAI,CAAC0B,UAAU,GAAG/B,SAAS,CAACgC,IAAI","ignoreList":[]}
|
|
@@ -8,21 +8,52 @@
|
|
|
8
8
|
* 機械照合は scripts/lib/icon-conformance.test.ts が行う。
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
// status 色の「error → token では danger」読み替えは status-colors.ts が SSOT(AGENTS.md 規約 7)。
|
|
12
|
+
// icons → components の参照になるが、status-colors.ts は theme の型しか import しない純粋モジュール
|
|
13
|
+
// なので依存の向きとして安全(ActionSheet destructive の文字色と同じ慣用)。
|
|
14
|
+
import { toStatusTokenKey } from "../components/status-colors.js";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Icon の色指定。semantic token キーに加えて status 色(success / warning / error)を受ける。
|
|
18
|
+
*
|
|
19
|
+
* - status 系は `theme.color.status.<key>.base` を引く(面ではなく tint に載る色)。
|
|
20
|
+
* - `"status-"` の prefix を付けるのは、将来 SemanticColors に同名キー(`success` 等)が
|
|
21
|
+
* 入ったときに衝突しないようにするため。
|
|
22
|
+
* - **`"status-info"` は無い** — status token に info の実体が無く(web と同じ既知の割り切り)、
|
|
23
|
+
* info 相当は semantic の `text-accent` / primary 系で表現する。
|
|
24
|
+
*/
|
|
25
|
+
|
|
11
26
|
/** サイズ軸(contract sizes の height と 1:1。width=height の正方形)。 */
|
|
12
27
|
const SIZE_TABLE = {
|
|
13
28
|
sm: 16,
|
|
14
29
|
md: 20,
|
|
15
30
|
lg: 24
|
|
16
31
|
};
|
|
32
|
+
|
|
33
|
+
/** `"status-error"` → `"error"`(型で status 系だけを絞り込むための判定)。 */
|
|
34
|
+
function statusVariantOf(color) {
|
|
35
|
+
switch (color) {
|
|
36
|
+
case "status-success":
|
|
37
|
+
return "success";
|
|
38
|
+
case "status-warning":
|
|
39
|
+
return "warning";
|
|
40
|
+
case "status-error":
|
|
41
|
+
return "error";
|
|
42
|
+
default:
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
17
46
|
/**
|
|
18
47
|
* size / color → Icon style の解決(icon.recipe styleRefs の 1:1 写像)。
|
|
19
48
|
* デフォルト(size=md / color=text-default)は recipe の default variant と一致させている。
|
|
49
|
+
* status 色は mode 非依存(status token の base は light/dark 共通)。
|
|
20
50
|
*/
|
|
21
51
|
export function resolveIconStyle(theme, mode, size = "md", color = "text-default") {
|
|
52
|
+
const status = statusVariantOf(color);
|
|
22
53
|
return {
|
|
23
54
|
width: SIZE_TABLE[size],
|
|
24
55
|
height: SIZE_TABLE[size],
|
|
25
|
-
color: theme.color.semantic[mode][color]
|
|
56
|
+
color: status !== null ? theme.color.status[toStatusTokenKey(status)].base : theme.color.semantic[mode][color]
|
|
26
57
|
};
|
|
27
58
|
}
|
|
28
59
|
//# sourceMappingURL=icon.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SIZE_TABLE","sm","md","lg","resolveIconStyle","theme","mode","size","
|
|
1
|
+
{"version":3,"names":["toStatusTokenKey","SIZE_TABLE","sm","md","lg","statusVariantOf","color","resolveIconStyle","theme","mode","size","status","width","height","base","semantic"],"sourceRoot":"../../../src","sources":["icons/icon.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA,SAASA,gBAAgB,QAAQ,gCAAgC;;AAIjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA,MAAMC,UAAU,GAAG;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE,EAAE;EAAEC,EAAE,EAAE;AAAG,CAAU;;AAEtD;AACA,SAASC,eAAeA,CAACC,KAAgB,EAA0C;EACjF,QAAQA,KAAK;IACX,KAAK,gBAAgB;MACnB,OAAO,SAAS;IAClB,KAAK,gBAAgB;MACnB,OAAO,SAAS;IAClB,KAAK,cAAc;MACjB,OAAO,OAAO;IAChB;MACE,OAAO,IAAI;EACf;AACF;AAQA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,KAAkB,EAClBC,IAAe,EACfC,IAAc,GAAG,IAAI,EACrBJ,KAAgB,GAAG,cAAc,EACtB;EACX,MAAMK,MAAM,GAAGN,eAAe,CAACC,KAAK,CAAC;EACrC,OAAO;IACLM,KAAK,EAAEX,UAAU,CAACS,IAAI,CAAC;IACvBG,MAAM,EAAEZ,UAAU,CAACS,IAAI,CAAC;IACxBJ,KAAK,EACHK,MAAM,KAAK,IAAI,GACXH,KAAK,CAACF,KAAK,CAACK,MAAM,CAACX,gBAAgB,CAACW,MAAM,CAAC,CAAC,CAACG,IAAI,GACjDN,KAAK,CAACF,KAAK,CAACS,QAAQ,CAACN,IAAI,CAAC,CAACH,KAAK;EACxC,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Icon","GLYPHS","ICON_NAMES"],"sourceRoot":"../../../src","sources":["icons/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"names":["Icon","GLYPHS","ICON_NAMES"],"sourceRoot":"../../../src","sources":["icons/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,WAAW;AAChC,SAASC,MAAM,EAAEC,UAAU,QAAQ,aAAa","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CONTRACTS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,
|
|
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":[]}
|
|
@@ -7,11 +7,15 @@
|
|
|
7
7
|
* - iconOnly は discriminated union で accessibilityLabel 必須を型強制(§4、label 排他)。
|
|
8
8
|
* - states(§2 mapping): hover→pressed(背景を pressed 色に)、focus→FocusRing overlay(共通 helper)、
|
|
9
9
|
* disabled→prop(opacity + 非活性)、loading→Spinner + disabled 相当。
|
|
10
|
+
* - タップ標的: labeled は minHeight(fontScale でクリップさせない)+ 縦 hitSlop、
|
|
11
|
+
* iconOnly は正方形固定 + 四方 hitSlop で実効 44pt を確保する(A11Y_MIN_TAP_TARGET_44、
|
|
12
|
+
* 値の根拠は button.styles.ts の BUTTON_VERTICAL_HIT_SLOP)。
|
|
10
13
|
* - 色は variant ごとに NativeTheme から解決(button.contract tokenRefs を 1:1 で写像)。
|
|
11
14
|
* contained の pressed は hover-bg=primary.700(contract に native readable token あり、唯一)。
|
|
12
|
-
* 他 variant の pressed 視覚変化は contract が Tailwind
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
+
* 他 variant の pressed 視覚変化は contract が Tailwind クラスしか持たず native 解決できない
|
|
16
|
+
* (§2 M-1)。ここでは pressed 時に薄い overlay を敷く近似に留めている。contract 側に
|
|
17
|
+
* pressed-* token が入ったら実値解決へ置き換える(契約側が未対応のため未着手)。
|
|
18
|
+
* - 高さは contract sizes(small32/medium40/large48)を **下限**として使う。
|
|
15
19
|
*/
|
|
16
20
|
|
|
17
21
|
import { useMemo } from "react";
|
|
@@ -20,7 +24,7 @@ import { Text } from "./Text.js";
|
|
|
20
24
|
import { useTheme } from "../theme/index.js";
|
|
21
25
|
import { useFocusRing, FocusRing } from "./_internal/focus-ring.js";
|
|
22
26
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
23
|
-
import {
|
|
27
|
+
import { BUTTON_SIZE_SPEC, resolveButtonColors, resolveButtonHitSlop } from "./button.styles.js";
|
|
24
28
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
29
|
export function Button(props) {
|
|
26
30
|
const {
|
|
@@ -42,8 +46,8 @@ export function Button(props) {
|
|
|
42
46
|
focused,
|
|
43
47
|
focusHandlers
|
|
44
48
|
} = useFocusRing();
|
|
45
|
-
const spec =
|
|
46
|
-
const colors = useMemo(() =>
|
|
49
|
+
const spec = BUTTON_SIZE_SPEC[size];
|
|
50
|
+
const colors = useMemo(() => resolveButtonColors(theme, mode, variant), [theme, mode, variant]);
|
|
47
51
|
const isDisabled = disabled || loading;
|
|
48
52
|
const iconOnly = props.iconOnly === true;
|
|
49
53
|
return /*#__PURE__*/_jsxs(Pressable, {
|
|
@@ -56,20 +60,27 @@ export function Button(props) {
|
|
|
56
60
|
busy: loading
|
|
57
61
|
},
|
|
58
62
|
accessibilityLabel: iconOnly ? props.accessibilityLabel : undefined,
|
|
63
|
+
hitSlop: resolveButtonHitSlop(size, iconOnly),
|
|
59
64
|
testID: testID,
|
|
60
65
|
style: ({
|
|
61
66
|
pressed
|
|
62
67
|
}) => [{
|
|
63
|
-
height: spec.height,
|
|
64
68
|
flexDirection: "row",
|
|
65
69
|
alignItems: "center",
|
|
66
70
|
justifyContent: "center",
|
|
67
71
|
gap: theme.spacing["2"],
|
|
68
72
|
borderRadius: theme.radius.md,
|
|
69
73
|
backgroundColor: pressed && !isDisabled ? colors.pressedBg : colors.bg,
|
|
70
|
-
...(iconOnly ?
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
...(iconOnly ?
|
|
75
|
+
// iconOnly は正方形を保つ(recipe の iconOnlyWidth/iconOnlyHeight)。
|
|
76
|
+
// 中身は glyph 固定でテキストが伸びないので height 固定でもクリップしない。
|
|
77
|
+
{
|
|
78
|
+
width: spec.iconBox,
|
|
79
|
+
height: spec.iconBox
|
|
80
|
+
} :
|
|
81
|
+
// labeled は minHeight(fontScale で label が伸びてもクリップしない)。
|
|
82
|
+
{
|
|
83
|
+
minHeight: spec.minHeight,
|
|
73
84
|
paddingHorizontal: theme.spacing[spec.px]
|
|
74
85
|
}),
|
|
75
86
|
...(colors.border != null ? {
|
|
@@ -100,6 +111,7 @@ export function Button(props) {
|
|
|
100
111
|
});
|
|
101
112
|
}
|
|
102
113
|
|
|
103
|
-
//
|
|
114
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
115
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
104
116
|
Button.__contract = CONTRACTS.button;
|
|
105
117
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","ActivityIndicator","Pressable","View","Text","useTheme","useFocusRing","FocusRing","CONTRACTS","
|
|
1
|
+
{"version":3,"names":["useMemo","ActivityIndicator","Pressable","View","Text","useTheme","useFocusRing","FocusRing","CONTRACTS","BUTTON_SIZE_SPEC","resolveButtonColors","resolveButtonHitSlop","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Button","props","theme","mode","variant","size","leadingIcon","trailingIcon","disabled","loading","onPress","style","testID","focused","focusHandlers","spec","colors","isDisabled","iconOnly","accessibilityRole","accessibilityState","busy","accessibilityLabel","undefined","hitSlop","pressed","flexDirection","alignItems","justifyContent","gap","spacing","borderRadius","radius","md","backgroundColor","pressedBg","bg","width","iconBox","height","minHeight","paddingHorizontal","px","border","borderWidth","borderColor","opacity","children","color","textColor","font","weight","label","visible","__contract","button"],"sourceRoot":"../../../src","sources":["primitives/Button.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -63,6 +63,7 @@ export function Metric({
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
//
|
|
66
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
67
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
67
68
|
Metric.__contract = CONTRACTS.metric;
|
|
68
69
|
//# sourceMappingURL=Metric.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","Text","RNText","View","useTheme","CONTRACTS","resolveMetricStyles","jsx","_jsx","jsxs","_jsxs","Metric","value","unit","label","size","align","style","testID","theme","mode","styles","a11yLabel","filter","Boolean","join","accessible","accessibilityLabel","alignItems","children","flexDirection","valueStyle","unitStyle","labelStyle","__contract","metric"],"sourceRoot":"../../../src","sources":["primitives/Metric.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,IAAI,IAAIC,MAAM,EAAEC,IAAI,QAAwC,cAAc;AACnF,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","Text","RNText","View","useTheme","CONTRACTS","resolveMetricStyles","jsx","_jsx","jsxs","_jsxs","Metric","value","unit","label","size","align","style","testID","theme","mode","styles","a11yLabel","filter","Boolean","join","accessible","accessibilityLabel","alignItems","children","flexDirection","valueStyle","unitStyle","labelStyle","__contract","metric"],"sourceRoot":"../../../src","sources":["primitives/Metric.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,IAAI,IAAIC,MAAM,EAAEC,IAAI,QAAwC,cAAc;AACnF,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAqB,gCAAgC;AACvE,SAASC,mBAAmB,QAAQ,oBAAoB;;AAEpB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAepC,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,IAAI;EACJC,KAAK;EACLC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,OAAO;EACfC,KAAK;EACLC;AACW,CAAC,EAAE;EACd,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGhB,QAAQ,CAAC,CAAC;;EAElC;EACA,MAAMiB,MAAM,GAAGrB,OAAO,CAAC,MAAMM,mBAAmB,CAACa,KAAK,EAAEC,IAAI,EAAEL,IAAI,CAAC,EAAE,CAACI,KAAK,EAAEC,IAAI,EAAEL,IAAI,CAAC,CAAC;EAEzF,MAAMO,SAAS,GAAG,CAACV,KAAK,EAAEC,IAAI,EAAEC,KAAK,CAAC,CAACS,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;EAEhE,oBACEf,KAAA,CAACP,IAAI;IACHe,MAAM,EAAEA,MAAO;IACfQ,UAAU;IACVC,kBAAkB,EAAEL,SAAU;IAC9BL,KAAK,EAAE,CAAC;MAAEW,UAAU,EAAEZ,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG;IAAa,CAAC,EAAEC,KAAK,CAAE;IAAAY,QAAA,gBAE7EnB,KAAA,CAACP,IAAI;MAACc,KAAK,EAAE;QAAEa,aAAa,EAAE,KAAK;QAAEF,UAAU,EAAE;MAAW,CAAE;MAAAC,QAAA,gBAC5DrB,IAAA,CAACN,MAAM;QAACe,KAAK,EAAEI,MAAM,CAACU,UAAW;QAAAF,QAAA,EAAEjB;MAAK,CAAS,CAAC,EACjDC,IAAI,IAAI,IAAI,iBAAIL,IAAA,CAACN,MAAM;QAACe,KAAK,EAAEI,MAAM,CAACW,SAAU;QAAAH,QAAA,EAAEhB;MAAI,CAAS,CAAC;IAAA,CAC7D,CAAC,EACNC,KAAK,IAAI,IAAI,iBAAIN,IAAA,CAACN,MAAM;MAACe,KAAK,EAAEI,MAAM,CAACY,UAAW;MAAAJ,QAAA,EAAEf;IAAK,CAAS,CAAC;EAAA,CAChE,CAAC;AAEX;;AAEA;AACA;AACAH,MAAM,CAACuB,UAAU,GAAG7B,SAAS,CAAC8B,MAAM","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","View","useTheme","CONTRACTS","resolveRowStyle","jsx","_jsx","Row","gap","align","justify","wrap","style","testID","children","theme","layout","__contract","row"],"sourceRoot":"../../../src","sources":["primitives/Row.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","View","useTheme","CONTRACTS","resolveRowStyle","jsx","_jsx","Row","gap","align","justify","wrap","style","testID","children","theme","layout","__contract","row"],"sourceRoot":"../../../src","sources":["primitives/Row.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,mBAAmB;AAE5C,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,eAAe,QAAuD,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAgBjG,OAAO,SAASC,GAAGA,CAAC;EAClBC,GAAG;EACHC,KAAK,GAAG,QAAQ;EAChBC,OAAO,GAAG,OAAO;EACjBC,IAAI,GAAG,KAAK;EACZC,KAAK;EACLC,MAAM;EACNC;AACQ,CAAC,EAAE;EACX,MAAM;IAAEC;EAAM,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAE5B,MAAMc,MAAM,GAAGhB,OAAO,CACpB,MAAMI,eAAe,CAACW,KAAK,EAAE;IAAEP,GAAG;IAAEC,KAAK;IAAEC,OAAO;IAAEC;EAAK,CAAC,CAAC,EAC3D,CAACI,KAAK,EAAEP,GAAG,EAAEC,KAAK,EAAEC,OAAO,EAAEC,IAAI,CACnC,CAAC;EAED,oBACEL,IAAA,CAACL,IAAI;IAACW,KAAK,EAAE,CAACI,MAAM,EAAEJ,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAC1CA;EAAQ,CACL,CAAC;AAEX;AAEAP,GAAG,CAACU,UAAU,GAAGd,SAAS,CAACe,GAAG","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","View","useTheme","CONTRACTS","resolveStackStyle","jsx","_jsx","Stack","gap","align","style","testID","children","theme","layout","__contract","stack"],"sourceRoot":"../../../src","sources":["primitives/Stack.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","View","useTheme","CONTRACTS","resolveStackStyle","jsx","_jsx","Stack","gap","align","style","testID","children","theme","layout","__contract","stack"],"sourceRoot":"../../../src","sources":["primitives/Stack.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,mBAAmB;AAE5C,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,iBAAiB,QAA0C,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYxF,OAAO,SAASC,KAAKA,CAAC;EAAEC,GAAG;EAAEC,KAAK,GAAG,SAAS;EAAEC,KAAK;EAAEC,MAAM;EAAEC;AAAqB,CAAC,EAAE;EACrF,MAAM;IAAEC;EAAM,CAAC,GAAGX,QAAQ,CAAC,CAAC;EAE5B,MAAMY,MAAM,GAAGd,OAAO,CACpB,MAAMI,iBAAiB,CAACS,KAAK,EAAE;IAAEL,GAAG;IAAEC;EAAM,CAAC,CAAC,EAC9C,CAACI,KAAK,EAAEL,GAAG,EAAEC,KAAK,CACpB,CAAC;EAED,oBACEH,IAAA,CAACL,IAAI;IAACS,KAAK,EAAE,CAACI,MAAM,EAAEJ,KAAK,CAAE;IAACC,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAC1CA;EAAQ,CACL,CAAC;AAEX;AAEAL,KAAK,CAACQ,UAAU,GAAGZ,SAAS,CAACa,KAAK","ignoreList":[]}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* 色・寸法の決定は pure resolver(tag.styles.ts)に分離、recipe との機械照合は
|
|
12
12
|
* scripts/lib/tag-conformance.test.ts が行う。
|
|
13
13
|
* - label は Text primitive。filter-chip active の文字色だけ primary.700(SemanticColors 外なので style 上書き)。
|
|
14
|
-
* - focus outline は Button
|
|
15
|
-
*
|
|
14
|
+
* - focus outline は Button と共通の Pressable focus handling(_internal/focus-ring)を使う
|
|
15
|
+
* (removable / filter-chip の押せる要素に FocusRing を描く)。
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import { Pressable, View } from "react-native";
|
|
@@ -20,7 +20,7 @@ import { Text } from "./Text.js";
|
|
|
20
20
|
import { useTheme } from "../theme/index.js";
|
|
21
21
|
import { useFocusRing, FocusRing } from "./_internal/focus-ring.js";
|
|
22
22
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
23
|
-
import { resolveTagBase, resolveTagVariant } from "./tag.styles.js";
|
|
23
|
+
import { resolveTagBase, resolveTagVariant, TAG_FILTER_CHIP_VERTICAL_HIT_SLOP, TAG_REMOVE_TAP_TARGET } from "./tag.styles.js";
|
|
24
24
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
25
|
/** 共通形状(px-3 py-1 rounded-full。寸法は resolver、layout はここで足す)。 */
|
|
26
26
|
function useTagBase() {
|
|
@@ -57,6 +57,13 @@ function FilterChipTag(props) {
|
|
|
57
57
|
accessibilityRole: "button",
|
|
58
58
|
accessibilityState: {
|
|
59
59
|
selected
|
|
60
|
+
}
|
|
61
|
+
// 視覚高さ 34pt(padding 駆動)に縦 hitSlop を足して実効 44pt(A11Y_MIN_TAP_TARGET_44)。
|
|
62
|
+
// 背景と枠を持つので minHeight で伸ばすと見た目が変わる → 当たり判定だけ広げる。
|
|
63
|
+
,
|
|
64
|
+
hitSlop: {
|
|
65
|
+
top: TAG_FILTER_CHIP_VERTICAL_HIT_SLOP,
|
|
66
|
+
bottom: TAG_FILTER_CHIP_VERTICAL_HIT_SLOP
|
|
60
67
|
},
|
|
61
68
|
testID: testID,
|
|
62
69
|
style: [base, {
|
|
@@ -109,10 +116,10 @@ function RemovableTag(props) {
|
|
|
109
116
|
onPress: onRemove,
|
|
110
117
|
accessibilityRole: "button",
|
|
111
118
|
accessibilityLabel: removeAccessibilityLabel,
|
|
112
|
-
hitSlop:
|
|
119
|
+
hitSlop: TAG_REMOVE_TAP_TARGET.hitSlop,
|
|
113
120
|
style: {
|
|
114
|
-
minWidth:
|
|
115
|
-
minHeight:
|
|
121
|
+
minWidth: TAG_REMOVE_TAP_TARGET.minWidth,
|
|
122
|
+
minHeight: TAG_REMOVE_TAP_TARGET.minHeight,
|
|
116
123
|
alignItems: "center",
|
|
117
124
|
justifyContent: "center"
|
|
118
125
|
},
|
|
@@ -155,6 +162,7 @@ export function Tag(props) {
|
|
|
155
162
|
});
|
|
156
163
|
}
|
|
157
164
|
|
|
158
|
-
//
|
|
165
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
166
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
159
167
|
Tag.__contract = CONTRACTS.tag;
|
|
160
168
|
//# sourceMappingURL=Tag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Pressable","View","Text","useTheme","useFocusRing","FocusRing","CONTRACTS","resolveTagBase","resolveTagVariant","jsx","_jsx","jsxs","_jsxs","useTagBase","theme","flexDirection","alignItems","FilterChipTag","props","mode","base","focused","focusHandlers","label","selected","onToggle","style","testID","v","onPress","accessibilityRole","accessibilityState","backgroundColor","bg","borderWidth","borderColor","border","children","variant","font","color","textColor","undefined","visible","radius","full","RemovableTag","onRemove","removeAccessibilityLabel","accessibilityLabel","
|
|
1
|
+
{"version":3,"names":["Pressable","View","Text","useTheme","useFocusRing","FocusRing","CONTRACTS","resolveTagBase","resolveTagVariant","TAG_FILTER_CHIP_VERTICAL_HIT_SLOP","TAG_REMOVE_TAP_TARGET","jsx","_jsx","jsxs","_jsxs","useTagBase","theme","flexDirection","alignItems","FilterChipTag","props","mode","base","focused","focusHandlers","label","selected","onToggle","style","testID","v","onPress","accessibilityRole","accessibilityState","hitSlop","top","bottom","backgroundColor","bg","borderWidth","borderColor","border","children","variant","font","color","textColor","undefined","visible","radius","full","RemovableTag","onRemove","removeAccessibilityLabel","accessibilityLabel","minWidth","minHeight","justifyContent","Tag","__contract","tag"],"sourceRoot":"../../../src","sources":["primitives/Tag.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,15 +8,18 @@
|
|
|
8
8
|
* 構造一致している前提で theme.typography.fontSize[variant] を引く。乖離したら型エラーで検知
|
|
9
9
|
* される(= A-3 conformance の型レベル最低ライン、§2)。
|
|
10
10
|
* - 色は token キーのみ(生 hex 不可、§5 lint の意味を保つ)。
|
|
11
|
+
* - fontScale 制御(allowFontScaling / maxFontSizeMultiplier)は RN Text へ素通しする。
|
|
12
|
+
* 既定は未指定 = RN 既定(OS の文字サイズ設定に追随)。器が固定寸法の箇所だけ opt-in で絞る。
|
|
11
13
|
* - letterSpacing は role(heading/body) の ratio を fontSize から pt 換算(text.styles.ts)。
|
|
12
14
|
* - 形状(fontSize/lineHeight/letterSpacing/fontWeight)は variant/role/weight 依存なので useMemo で
|
|
13
|
-
* 分離(B-3 の「形状/色 分離 +
|
|
14
|
-
*
|
|
15
|
+
* 分離(B-3 の「形状/色 分離 + 参照安定性」は useMemo で満たす。StyleSheet 事前生成による
|
|
16
|
+
* 最適化はどのコンポーネントでも採っていない)。色のみ render 時に colors から取る。
|
|
15
17
|
*/
|
|
16
18
|
|
|
17
19
|
import { useMemo } from "react";
|
|
18
|
-
import { Text as RNText } from "react-native";
|
|
20
|
+
import { StyleSheet, Text as RNText } from "react-native";
|
|
19
21
|
import { useTheme } from "../theme/index.js";
|
|
22
|
+
import { minLineHeightFor, minRatioOf } from "../theme/line-height.js";
|
|
20
23
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
21
24
|
import { resolveTextShape } from "./text.styles.js";
|
|
22
25
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -26,6 +29,8 @@ export function Text({
|
|
|
26
29
|
color = "text-default",
|
|
27
30
|
role = "body",
|
|
28
31
|
numberOfLines,
|
|
32
|
+
allowFontScaling,
|
|
33
|
+
maxFontSizeMultiplier,
|
|
29
34
|
style,
|
|
30
35
|
testID,
|
|
31
36
|
children
|
|
@@ -38,17 +43,33 @@ export function Text({
|
|
|
38
43
|
// 形状(mode 非依存)は variant/role/weight にだけ依存させてメモ化(B-3)。
|
|
39
44
|
// 決定ロジックは pure resolver(text.styles.ts)に分離済み — recipe との機械照合対象。
|
|
40
45
|
const shape = useMemo(() => resolveTextShape(theme, variant, role, weight), [theme, variant, role, weight]);
|
|
46
|
+
|
|
47
|
+
// 消費者 style は合成順で最後=上書きが勝つため、resolver 内のクランプだけでは
|
|
48
|
+
// `style={{lineHeight: 16}}` を止められない。flatten した**最終値**に行間の安全下限を掛ける
|
|
49
|
+
// (fontSize の上書きにも追随させるため、下限は最終 fontSize から算出。機序は theme/line-height.ts)。
|
|
50
|
+
const flat = StyleSheet.flatten([shape, {
|
|
51
|
+
color: colors[color]
|
|
52
|
+
}, style]);
|
|
53
|
+
// `fontSize: undefined` の明示上書き(flatten は undefined でも上書きする)は、RN 既定サイズで
|
|
54
|
+
// 描画されるのにクランプ基準だけ variant 値になる齟齬を生む。variant の fontSize を復元して
|
|
55
|
+
// 「Text の文字サイズは variant が決める」契約とクランプ基準を一致させる。
|
|
56
|
+
if (typeof flat.fontSize !== "number") flat.fontSize = shape.fontSize;
|
|
57
|
+
if (flat.lineHeight !== undefined) {
|
|
58
|
+
const floor = minLineHeightFor(flat.fontSize ?? 0, minRatioOf(theme));
|
|
59
|
+
if (flat.lineHeight < floor) flat.lineHeight = floor;
|
|
60
|
+
}
|
|
41
61
|
return /*#__PURE__*/_jsx(RNText, {
|
|
42
|
-
style:
|
|
43
|
-
color: colors[color]
|
|
44
|
-
}, style],
|
|
62
|
+
style: flat,
|
|
45
63
|
numberOfLines: numberOfLines,
|
|
64
|
+
allowFontScaling: allowFontScaling,
|
|
65
|
+
maxFontSizeMultiplier: maxFontSizeMultiplier,
|
|
46
66
|
accessibilityRole: role === "heading" ? "header" : undefined,
|
|
47
67
|
testID: testID,
|
|
48
68
|
children: children
|
|
49
69
|
});
|
|
50
70
|
}
|
|
51
71
|
|
|
52
|
-
//
|
|
72
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
73
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
53
74
|
Text.__contract = CONTRACTS.text;
|
|
54
75
|
//# sourceMappingURL=Text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","Text","RNText","useTheme","CONTRACTS","resolveTextShape","jsx","_jsx","variant","weight","color","role","numberOfLines","style","testID","children","theme","colors","shape","
|
|
1
|
+
{"version":3,"names":["useMemo","StyleSheet","Text","RNText","useTheme","minLineHeightFor","minRatioOf","CONTRACTS","resolveTextShape","jsx","_jsx","variant","weight","color","role","numberOfLines","allowFontScaling","maxFontSizeMultiplier","style","testID","children","theme","colors","shape","flat","flatten","fontSize","lineHeight","undefined","floor","accessibilityRole","__contract","text"],"sourceRoot":"../../../src","sources":["primitives/Text.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAwB,OAAO;AAC/C,SAASC,UAAU,EAAEC,IAAI,IAAIC,MAAM,QAAwC,cAAc;AACzF,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,yBAAyB;AAEtE,SAASC,SAAS,QAAwB,gCAAgC;AAC1E,SAASC,gBAAgB,QAAuB,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA+BnE,OAAO,SAASR,IAAIA,CAAC;EACnBS,OAAO,GAAG,MAAM;EAChBC,MAAM;EACNC,KAAK,GAAG,cAAc;EACtBC,IAAI,GAAG,MAAM;EACbC,aAAa;EACbC,gBAAgB;EAChBC,qBAAqB;EACrBC,KAAK;EACLC,MAAM;EACNC;AACS,CAAC,EAAE;EACZ,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGlB,QAAQ,CAAC,CAAC;;EAEpC;EACA;EACA,MAAMmB,KAAK,GAAGvB,OAAO,CACnB,MAAMQ,gBAAgB,CAACa,KAAK,EAAEV,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAAC,EACpD,CAACS,KAAK,EAAEV,OAAO,EAAEG,IAAI,EAAEF,MAAM,CAC/B,CAAC;;EAED;EACA;EACA;EACA,MAAMY,IAAe,GAAGvB,UAAU,CAACwB,OAAO,CAAC,CAACF,KAAK,EAAE;IAAEV,KAAK,EAAES,MAAM,CAACT,KAAK;EAAE,CAAC,EAAEK,KAAK,CAAC,CAAC;EACpF;EACA;EACA;EACA,IAAI,OAAOM,IAAI,CAACE,QAAQ,KAAK,QAAQ,EAAEF,IAAI,CAACE,QAAQ,GAAGH,KAAK,CAACG,QAAQ;EACrE,IAAIF,IAAI,CAACG,UAAU,KAAKC,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGxB,gBAAgB,CAACmB,IAAI,CAACE,QAAQ,IAAI,CAAC,EAAEpB,UAAU,CAACe,KAAK,CAAC,CAAC;IACrE,IAAIG,IAAI,CAACG,UAAU,GAAGE,KAAK,EAAEL,IAAI,CAACG,UAAU,GAAGE,KAAK;EACtD;EAEA,oBACEnB,IAAA,CAACP,MAAM;IACLe,KAAK,EAAEM,IAAK;IACZT,aAAa,EAAEA,aAAc;IAC7BC,gBAAgB,EAAEA,gBAAiB;IACnCC,qBAAqB,EAAEA,qBAAsB;IAC7Ca,iBAAiB,EAAEhB,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAGc,SAAU;IAC7DT,MAAM,EAAEA,MAAO;IAAAC,QAAA,EAEdA;EAAQ,CACH,CAAC;AAEb;;AAEA;AACA;AACAlB,IAAI,CAAC6B,UAAU,GAAGxB,SAAS,CAACyB,IAAI","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","View","useTheme","jsx","_jsx","useFocusRing","focused","setFocused","focusHandlers","onFocus","onBlur","INSET","FocusRing","visible","radius","theme","pointerEvents","style","position","top","left","right","bottom","borderWidth","borderColor","color","primary","borderRadius"],"sourceRoot":"../../../../src","sources":["primitives/_internal/focus-ring.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["useState","View","useTheme","jsx","_jsx","useFocusRing","focused","setFocused","focusHandlers","onFocus","onBlur","INSET","FocusRing","visible","radius","theme","pointerEvents","style","position","top","left","right","bottom","borderWidth","borderColor","color","primary","borderRadius"],"sourceRoot":"../../../../src","sources":["primitives/_internal/focus-ring.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,QAAQ,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,OAAO,SAASC,YAAYA,CAAA,EAAG;EAC7B,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGP,QAAQ,CAAC,KAAK,CAAC;EAC7C,OAAO;IACLM,OAAO;IACPE,aAAa,EAAE;MACbC,OAAO,EAAEA,CAAA,KAAMF,UAAU,CAAC,IAAI,CAAC;MAC/BG,MAAM,EAAEA,CAAA,KAAMH,UAAU,CAAC,KAAK;IAChC;EACF,CAAC;AACH;AAQA,MAAMI,KAAK,GAAG,CAAC;AAEf,OAAO,SAASC,SAASA,CAAC;EAAEC,OAAO;EAAEC;AAAuB,CAAC,EAAE;EAC7D,MAAM;IAAEC;EAAM,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAC5B,IAAI,CAACW,OAAO,EAAE,OAAO,IAAI;EACzB,oBACET,IAAA,CAACH,IAAI;IACHe,aAAa,EAAC,MAAM;IACpBC,KAAK,EAAE;MACLC,QAAQ,EAAE,UAAU;MACpBC,GAAG,EAAE,CAACR,KAAK;MACXS,IAAI,EAAE,CAACT,KAAK;MACZU,KAAK,EAAE,CAACV,KAAK;MACbW,MAAM,EAAE,CAACX,KAAK;MACdY,WAAW,EAAE,CAAC;MACdC,WAAW,EAAET,KAAK,CAACU,KAAK,CAACC,OAAO,CAAC,KAAK,CAAC;MACvCC,YAAY,EAAEb,MAAM,GAAGH;IACzB;EAAE,CACH,CAAC;AAEN","ignoreList":[]}
|
|
@@ -1,41 +1,91 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* button.styles — Button の pure style resolver(
|
|
4
|
+
* button.styles — Button の pure style resolver(styleRefs conformance 対応で Button.tsx から分離)。
|
|
5
5
|
*
|
|
6
6
|
* react-native を import しない純粋モジュールにすることで node テスト(tsx --test)から
|
|
7
7
|
* 直接実行できる。recipes/app/button.recipe.json(melta-contracts の styleRefs)との
|
|
8
|
-
* 機械照合は scripts/lib/recipe-conformance.test.ts
|
|
8
|
+
* 機械照合は scripts/lib/recipe-conformance.test.ts が行う(層B)。
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ このファイルは resolver 機構の**最初の実装**で、戻り値が slot 単位に揃っていない
|
|
11
|
+
* (色だけを返し、寸法は component 側で組む)。現行の書き方は AGENTS.md「style resolver の規約」
|
|
12
|
+
* を参照すること — 新規 / 改修は alert.styles.ts・textfield.styles.ts の形に寄せる。
|
|
9
13
|
*/
|
|
10
14
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
15
|
+
/**
|
|
16
|
+
* size → 最小高さ / 横 padding / label fontSize / icon box(contract sizes/iconButton と整合)。
|
|
17
|
+
*
|
|
18
|
+
* `minHeight`(`height` ではない)なのは fontScale 対策。label は Text primitive の
|
|
19
|
+
* lineHeight(base = 36pt)で伸びるため、height 固定だと fontScale 1.12x あたりから
|
|
20
|
+
* medium(40pt)で文字がクリップする。recipe 側も 0.7.0 で `minHeight` に変わっている。
|
|
21
|
+
* iconOnly だけは正方形を保つため width/height 固定のまま(recipe の iconOnlyWidth/iconOnlyHeight)。
|
|
22
|
+
*/
|
|
23
|
+
export const BUTTON_SIZE_SPEC = {
|
|
13
24
|
small: {
|
|
14
|
-
|
|
25
|
+
minHeight: 32,
|
|
15
26
|
px: "3",
|
|
16
27
|
font: "sm",
|
|
17
28
|
iconBox: 32
|
|
18
29
|
},
|
|
19
30
|
medium: {
|
|
20
|
-
|
|
31
|
+
minHeight: 40,
|
|
21
32
|
px: "4",
|
|
22
33
|
font: "base",
|
|
23
34
|
iconBox: 40
|
|
24
35
|
},
|
|
25
36
|
large: {
|
|
26
|
-
|
|
37
|
+
minHeight: 48,
|
|
27
38
|
px: "6",
|
|
28
39
|
font: "base",
|
|
29
40
|
iconBox: 48
|
|
30
41
|
}
|
|
31
42
|
};
|
|
32
43
|
|
|
44
|
+
/**
|
|
45
|
+
* size → 縦方向の片側 hitSlop(実効タップ標的 44pt 確保。A11Y_MIN_TAP_TARGET_44)。
|
|
46
|
+
*
|
|
47
|
+
* 視覚寸法は据え置き、当たり判定だけを広げる:
|
|
48
|
+
* small 32 + 6*2 = 44 / medium 40 + 2*2 = 44 / large 48(既に 44 以上なので 0)
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ literal で持つ(BUTTON_SIZE_SPEC から自動導出しない)。導出にすると視覚寸法を変えたときに
|
|
51
|
+
* hitSlop が黙って追随してしまい、conformance が構造的に fail-open になる。
|
|
52
|
+
*/
|
|
53
|
+
export const BUTTON_VERTICAL_HIT_SLOP = {
|
|
54
|
+
small: 6,
|
|
55
|
+
medium: 2,
|
|
56
|
+
large: 0
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/** Pressable の hitSlop(RN の Insets)。 */
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* size / iconOnly → Pressable に渡す hitSlop。0 のときは undefined(prop を付けない)。
|
|
63
|
+
*
|
|
64
|
+
* - labeled: **縦だけ**。横は付けない — Row の gap 0 で隣接した Button 同士の当たり判定が
|
|
65
|
+
* 重なって押し違いが起きるため(横方向は padding で既に広い)。
|
|
66
|
+
* - iconOnly: 幅も 32/40 と狭い正方形なので**横にも同値**を付ける(左右の隣接は
|
|
67
|
+
* iconOnly ボタンを gap 0 で並べない前提。並べる場合は消費者側で gap を取る)。
|
|
68
|
+
*/
|
|
69
|
+
export function resolveButtonHitSlop(size, iconOnly) {
|
|
70
|
+
const slop = BUTTON_VERTICAL_HIT_SLOP[size];
|
|
71
|
+
if (slop === 0) return undefined;
|
|
72
|
+
return iconOnly ? {
|
|
73
|
+
top: slop,
|
|
74
|
+
bottom: slop,
|
|
75
|
+
left: slop,
|
|
76
|
+
right: slop
|
|
77
|
+
} : {
|
|
78
|
+
top: slop,
|
|
79
|
+
bottom: slop
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
33
83
|
/**
|
|
34
84
|
* variant → 色解決(button.contract tokenRefs の 1:1 写像)。
|
|
35
85
|
* 文字色は variant により semantic 外(primary.500 等)もあるため hex 文字列で返し、
|
|
36
86
|
* Text の style で color 上書きする(Text の color prop は SemanticColors キー限定のため)。
|
|
37
87
|
*/
|
|
38
|
-
export function
|
|
88
|
+
export function resolveButtonColors(theme, mode, variant) {
|
|
39
89
|
const c = theme.color;
|
|
40
90
|
const sem = c.semantic[mode];
|
|
41
91
|
switch (variant) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["BUTTON_SIZE_SPEC","small","minHeight","px","font","iconBox","medium","large","BUTTON_VERTICAL_HIT_SLOP","resolveButtonHitSlop","size","iconOnly","slop","undefined","top","bottom","left","right","resolveButtonColors","theme","mode","variant","c","color","sem","semantic","bg","primary","pressedBg","textColor","border","status","danger","base","textLight"],"sourceRoot":"../../../src","sources":["primitives/button.styles.ts"],"mappings":"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","ignoreList":[]}
|