melta-app 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -12
- package/docs/architecture.md +11 -4
- package/eslint-rules/melta.d.mts +44 -0
- package/lib/module/a11y/tap-target.js +41 -0
- package/lib/module/a11y/tap-target.js.map +1 -0
- package/lib/module/components/ActionSheet.js +20 -6
- package/lib/module/components/ActionSheet.js.map +1 -1
- package/lib/module/components/Alert.js +11 -7
- package/lib/module/components/Alert.js.map +1 -1
- package/lib/module/components/Avatar.js +7 -2
- package/lib/module/components/Avatar.js.map +1 -1
- package/lib/module/components/BottomSheet.js +11 -3
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/Card.js +4 -3
- package/lib/module/components/Card.js.map +1 -1
- package/lib/module/components/Checkbox.js +8 -5
- package/lib/module/components/Checkbox.js.map +1 -1
- package/lib/module/components/EmptyState.js +2 -1
- package/lib/module/components/EmptyState.js.map +1 -1
- package/lib/module/components/Header.js.map +1 -1
- package/lib/module/components/Image.js +5 -3
- package/lib/module/components/Image.js.map +1 -1
- package/lib/module/components/Modal.js +12 -4
- package/lib/module/components/Modal.js.map +1 -1
- package/lib/module/components/Progress.js +2 -1
- package/lib/module/components/Progress.js.map +1 -1
- package/lib/module/components/Radio.js +11 -3
- package/lib/module/components/Radio.js.map +1 -1
- package/lib/module/components/Screen.js +28 -3
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/Skeleton.js +2 -1
- package/lib/module/components/Skeleton.js.map +1 -1
- package/lib/module/components/Surface.js +2 -1
- package/lib/module/components/Surface.js.map +1 -1
- package/lib/module/components/TextField.js +16 -4
- package/lib/module/components/TextField.js.map +1 -1
- package/lib/module/components/Toast.js +17 -9
- package/lib/module/components/Toast.js.map +1 -1
- package/lib/module/components/Toggle.js +13 -4
- package/lib/module/components/Toggle.js.map +1 -1
- package/lib/module/components/alert.styles.js +12 -26
- package/lib/module/components/alert.styles.js.map +1 -1
- package/lib/module/components/avatar.styles.js +24 -2
- package/lib/module/components/avatar.styles.js.map +1 -1
- package/lib/module/components/card.validate.js.map +1 -1
- package/lib/module/components/checkbox.styles.js +5 -2
- package/lib/module/components/checkbox.styles.js.map +1 -1
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/modal.styles.js +9 -0
- package/lib/module/components/modal.styles.js.map +1 -1
- package/lib/module/components/radio.styles.js +11 -2
- package/lib/module/components/radio.styles.js.map +1 -1
- package/lib/module/components/safe-area-registry.js +64 -13
- package/lib/module/components/safe-area-registry.js.map +1 -1
- package/lib/module/components/status-colors.js +53 -0
- package/lib/module/components/status-colors.js.map +1 -0
- package/lib/module/components/textfield.styles.js +15 -8
- package/lib/module/components/textfield.styles.js.map +1 -1
- package/lib/module/components/toast.styles.js +36 -25
- package/lib/module/components/toast.styles.js.map +1 -1
- package/lib/module/components/toggle.styles.js +20 -0
- package/lib/module/components/toggle.styles.js.map +1 -1
- package/lib/module/icons/Icon.js +4 -1
- package/lib/module/icons/Icon.js.map +1 -1
- package/lib/module/icons/icon.styles.js +32 -1
- package/lib/module/icons/icon.styles.js.map +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/primitives/Button.js +23 -11
- package/lib/module/primitives/Button.js.map +1 -1
- package/lib/module/primitives/Metric.js +2 -1
- package/lib/module/primitives/Metric.js.map +1 -1
- package/lib/module/primitives/Row.js.map +1 -1
- package/lib/module/primitives/Stack.js.map +1 -1
- package/lib/module/primitives/Tag.js +15 -7
- package/lib/module/primitives/Tag.js.map +1 -1
- package/lib/module/primitives/Text.js +13 -5
- package/lib/module/primitives/Text.js.map +1 -1
- package/lib/module/primitives/_internal/focus-ring.js.map +1 -1
- package/lib/module/primitives/button.styles.js +58 -8
- package/lib/module/primitives/button.styles.js.map +1 -1
- package/lib/module/primitives/index.js.map +1 -1
- package/lib/module/primitives/metric.styles.js +2 -2
- package/lib/module/primitives/metric.styles.js.map +1 -1
- package/lib/module/primitives/tag.styles.js +42 -3
- package/lib/module/primitives/tag.styles.js.map +1 -1
- package/lib/module/primitives/text.styles.js +6 -7
- package/lib/module/primitives/text.styles.js.map +1 -1
- package/lib/module/safe-area/index.js +11 -5
- package/lib/module/safe-area/index.js.map +1 -1
- package/lib/module/theme/ThemeProvider.js +5 -2
- package/lib/module/theme/ThemeProvider.js.map +1 -1
- package/lib/module/theme/define-theme.js +14 -1
- package/lib/module/theme/define-theme.js.map +1 -1
- package/lib/module/theme/index.js +6 -8
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/letter-spacing.js +20 -0
- package/lib/module/theme/letter-spacing.js.map +1 -0
- package/lib/module/theme/line-height.js +9 -0
- package/lib/module/theme/line-height.js.map +1 -1
- package/lib/module/theme/native-theme.js +1 -1
- package/lib/typescript/src/a11y/tap-target.d.ts +34 -0
- package/lib/typescript/src/a11y/tap-target.d.ts.map +1 -0
- package/lib/typescript/src/components/ActionSheet.d.ts +8 -1
- package/lib/typescript/src/components/ActionSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Alert.d.ts +9 -2
- package/lib/typescript/src/components/Alert.d.ts.map +1 -1
- package/lib/typescript/src/components/Avatar.d.ts +1 -1
- package/lib/typescript/src/components/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/components/BottomSheet.d.ts +4 -1
- package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/src/components/Card.d.ts +2 -2
- package/lib/typescript/src/components/Checkbox.d.ts +3 -3
- package/lib/typescript/src/components/Checkbox.d.ts.map +1 -1
- package/lib/typescript/src/components/Image.d.ts +4 -3
- package/lib/typescript/src/components/Image.d.ts.map +1 -1
- package/lib/typescript/src/components/Modal.d.ts +9 -3
- package/lib/typescript/src/components/Modal.d.ts.map +1 -1
- package/lib/typescript/src/components/Progress.d.ts +1 -1
- package/lib/typescript/src/components/Progress.d.ts.map +1 -1
- package/lib/typescript/src/components/Radio.d.ts +3 -2
- package/lib/typescript/src/components/Radio.d.ts.map +1 -1
- package/lib/typescript/src/components/Screen.d.ts +28 -5
- package/lib/typescript/src/components/Screen.d.ts.map +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts +1 -1
- package/lib/typescript/src/components/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/components/Surface.d.ts +1 -1
- package/lib/typescript/src/components/Surface.d.ts.map +1 -1
- package/lib/typescript/src/components/TextField.d.ts +11 -4
- package/lib/typescript/src/components/TextField.d.ts.map +1 -1
- package/lib/typescript/src/components/Toast.d.ts +10 -3
- package/lib/typescript/src/components/Toast.d.ts.map +1 -1
- package/lib/typescript/src/components/Toggle.d.ts +3 -2
- package/lib/typescript/src/components/Toggle.d.ts.map +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/action-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/alert.styles.d.ts +14 -14
- package/lib/typescript/src/components/alert.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/avatar.styles.d.ts +36 -1
- package/lib/typescript/src/components/avatar.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts +1 -1
- package/lib/typescript/src/components/bottom-sheet.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.styles.d.ts +1 -1
- package/lib/typescript/src/components/card.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/card.validate.d.ts +1 -1
- package/lib/typescript/src/components/card.validate.d.ts.map +1 -1
- package/lib/typescript/src/components/checkbox.styles.d.ts +6 -3
- package/lib/typescript/src/components/checkbox.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts +1 -1
- package/lib/typescript/src/components/empty-state.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/header.styles.d.ts +1 -1
- package/lib/typescript/src/components/header.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/image.styles.d.ts +1 -1
- package/lib/typescript/src/components/image.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/index.d.ts +18 -18
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/lib/typescript/src/components/modal.styles.d.ts +13 -2
- package/lib/typescript/src/components/modal.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts +1 -1
- package/lib/typescript/src/components/progress.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/radio.styles.d.ts +10 -2
- package/lib/typescript/src/components/radio.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/safe-area-registry.d.ts +47 -11
- package/lib/typescript/src/components/safe-area-registry.d.ts.map +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts +1 -1
- package/lib/typescript/src/components/screen.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts +1 -1
- package/lib/typescript/src/components/skeleton.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/status-colors.d.ts +33 -0
- package/lib/typescript/src/components/status-colors.d.ts.map +1 -0
- package/lib/typescript/src/components/surface.styles.d.ts +1 -1
- package/lib/typescript/src/components/surface.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/textfield.styles.d.ts +9 -5
- package/lib/typescript/src/components/textfield.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toast.styles.d.ts +34 -14
- package/lib/typescript/src/components/toast.styles.d.ts.map +1 -1
- package/lib/typescript/src/components/toggle.styles.d.ts +17 -1
- package/lib/typescript/src/components/toggle.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/Icon.d.ts +12 -6
- package/lib/typescript/src/icons/Icon.d.ts.map +1 -1
- package/lib/typescript/src/icons/icon.styles.d.ts +14 -2
- package/lib/typescript/src/icons/icon.styles.d.ts.map +1 -1
- package/lib/typescript/src/icons/index.d.ts +3 -3
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Button.d.ts +8 -4
- package/lib/typescript/src/primitives/Button.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts +1 -1
- package/lib/typescript/src/primitives/Metric.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Row.d.ts +2 -2
- package/lib/typescript/src/primitives/Row.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Stack.d.ts +2 -2
- package/lib/typescript/src/primitives/Stack.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Tag.d.ts +2 -2
- package/lib/typescript/src/primitives/Tag.d.ts.map +1 -1
- package/lib/typescript/src/primitives/Text.d.ts +20 -6
- package/lib/typescript/src/primitives/Text.d.ts.map +1 -1
- package/lib/typescript/src/primitives/button.styles.d.ts +44 -7
- package/lib/typescript/src/primitives/button.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/index.d.ts +6 -6
- package/lib/typescript/src/primitives/index.d.ts.map +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/metric.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/row.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts +1 -1
- package/lib/typescript/src/primitives/stack.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts +34 -1
- package/lib/typescript/src/primitives/tag.styles.d.ts.map +1 -1
- package/lib/typescript/src/primitives/text.styles.d.ts +2 -4
- package/lib/typescript/src/primitives/text.styles.d.ts.map +1 -1
- package/lib/typescript/src/safe-area/index.d.ts +19 -5
- package/lib/typescript/src/safe-area/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/define-theme.d.ts +15 -2
- package/lib/typescript/src/theme/define-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/index.d.ts +14 -14
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/letter-spacing.d.ts +15 -0
- package/lib/typescript/src/theme/letter-spacing.d.ts.map +1 -0
- package/lib/typescript/src/theme/line-height.d.ts +10 -0
- package/lib/typescript/src/theme/line-height.d.ts.map +1 -1
- package/lib/typescript/src/theme/native-theme.d.ts +1 -1
- package/lib/typescript/src/theme/native-theme.d.ts.map +1 -1
- package/lib/typescript/src/theme/types.d.ts +1 -1
- package/package.json +22 -7
- package/src/a11y/tap-target.ts +38 -0
- package/src/components/ActionSheet.tsx +25 -15
- package/src/components/Alert.tsx +37 -10
- package/src/components/Avatar.tsx +12 -4
- package/src/components/BottomSheet.tsx +16 -13
- package/src/components/Card.tsx +9 -8
- package/src/components/Checkbox.tsx +12 -9
- package/src/components/EmptyState.tsx +7 -6
- package/src/components/Header.tsx +4 -4
- package/src/components/Image.tsx +9 -7
- package/src/components/Modal.tsx +22 -6
- package/src/components/Progress.tsx +5 -4
- package/src/components/Radio.tsx +11 -6
- package/src/components/Screen.tsx +66 -8
- package/src/components/Skeleton.tsx +6 -5
- package/src/components/Surface.tsx +5 -4
- package/src/components/TextField.tsx +25 -7
- package/src/components/Toast.tsx +33 -11
- package/src/components/Toggle.tsx +15 -6
- package/src/components/action-sheet.styles.ts +1 -1
- package/src/components/alert.styles.ts +13 -25
- package/src/components/avatar.styles.ts +25 -3
- package/src/components/bottom-sheet.styles.ts +1 -1
- package/src/components/card.styles.ts +1 -1
- package/src/components/card.validate.ts +2 -2
- package/src/components/checkbox.styles.ts +6 -3
- package/src/components/empty-state.styles.ts +1 -1
- package/src/components/header.styles.ts +1 -1
- package/src/components/image.styles.ts +1 -1
- package/src/components/index.ts +18 -18
- package/src/components/modal.styles.ts +11 -2
- package/src/components/progress.styles.ts +1 -1
- package/src/components/radio.styles.ts +11 -2
- package/src/components/safe-area-registry.ts +81 -14
- package/src/components/screen.styles.ts +1 -1
- package/src/components/skeleton.styles.ts +1 -1
- package/src/components/status-colors.ts +59 -0
- package/src/components/surface.styles.ts +1 -1
- package/src/components/textfield.styles.ts +18 -15
- package/src/components/toast.styles.ts +32 -25
- package/src/components/toggle.styles.ts +21 -1
- package/src/icons/Icon.tsx +13 -8
- package/src/icons/icon.styles.ts +38 -3
- package/src/icons/index.ts +3 -3
- package/src/index.ts +4 -4
- package/src/primitives/Button.tsx +28 -14
- package/src/primitives/Metric.tsx +5 -4
- package/src/primitives/Row.tsx +4 -4
- package/src/primitives/Stack.tsx +4 -4
- package/src/primitives/Tag.tsx +29 -11
- package/src/primitives/Text.tsx +28 -11
- package/src/primitives/_internal/focus-ring.tsx +1 -1
- package/src/primitives/button.styles.ts +63 -10
- package/src/primitives/index.ts +6 -6
- package/src/primitives/metric.styles.ts +3 -3
- package/src/primitives/row.styles.ts +1 -1
- package/src/primitives/stack.styles.ts +1 -1
- package/src/primitives/tag.styles.ts +43 -4
- package/src/primitives/text.styles.ts +7 -12
- package/src/safe-area/index.ts +21 -7
- package/src/theme/ThemeProvider.tsx +8 -5
- package/src/theme/define-theme.ts +15 -2
- package/src/theme/index.ts +14 -17
- package/src/theme/letter-spacing.ts +17 -0
- package/src/theme/line-height.ts +9 -0
- package/src/theme/native-theme.ts +2 -2
- package/src/theme/types.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","useTheme","CONTRACTS","resolveSurfaceStyle","jsx","_jsx","Surface","bg","radius","elevation","padding","style","testID","children","theme","mode","resolved","base","__contract","surface"],"sourceRoot":"../../../src","sources":["components/Surface.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,
|
|
1
|
+
{"version":3,"names":["View","useTheme","CONTRACTS","resolveSurfaceStyle","jsx","_jsx","Surface","bg","radius","elevation","padding","style","testID","children","theme","mode","resolved","base","__contract","surface"],"sourceRoot":"../../../src","sources":["components/Surface.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,IAAI,QAAwC,cAAc;AACnE,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SAASC,mBAAmB,QAAgC,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQlF,OAAO,SAASC,OAAOA,CAAC;EAAEC,EAAE;EAAEC,MAAM;EAAEC,SAAS;EAAEC,OAAO;EAAEC,KAAK;EAAEC,MAAM;EAAEC;AAAuB,CAAC,EAAE;EACjG,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGd,QAAQ,CAAC,CAAC;EAClC,MAAMe,QAAQ,GAAGb,mBAAmB,CAACW,KAAK,EAAEC,IAAI,EAAE;IAAER,EAAE;IAAEC,MAAM;IAAEC,SAAS;IAAEC;EAAQ,CAAC,CAAC;EACrF,oBACEL,IAAA,CAACL,IAAI;IAACY,MAAM,EAAEA,MAAO;IAACD,KAAK,EAAE,CAACK,QAAQ,CAACC,IAAI,EAAED,QAAQ,CAACP,SAAS,EAAEE,KAAK,CAAE;IAAAE,QAAA,EACrEA;EAAQ,CACL,CAAC;AAEX;;AAEA;AACA;AACAP,OAAO,CAACY,UAAU,GAAGhB,SAAS,CAACiB,OAAO","ignoreList":[]}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* editable=false + accessibilityState.disabled を併せて適用する(recipe description の規約)。
|
|
9
9
|
* - error 時は errorText を必ずテキストで表示する(FORM_NO_COLOR_ONLY_ERROR = 色だけで伝えない)。
|
|
10
10
|
* RN には aria-describedby 相当が無いため、(a) errorText を input の accessibilityLabel に合成
|
|
11
|
-
*
|
|
11
|
+
* (再フォーカス時に読み上げ。合成文は formatErrorAccessibilityLabel で差し替え可能 = i18n フック。
|
|
12
|
+
* 既定は日本語)、(b) errorText 側に accessibilityLiveRegion="polite"(Android は
|
|
12
13
|
* 出現時に通知。iOS の即時通知が要る画面は submit 時に announceForAccessibility を併用する —
|
|
13
14
|
* docs/patterns.md 参照)。
|
|
14
15
|
* - focus は内部 state(onFocus/onBlur)で recipe states.focus の inputStyle 差分
|
|
@@ -28,7 +29,7 @@ import { CONTRACTS } from "../contracts/contract-types.js";
|
|
|
28
29
|
import { resolveTextFieldStyle, resolveTextFieldFocusStyle } from "./textfield.styles.js";
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
|
-
* Android の EditText
|
|
32
|
+
* Android の EditText は高さ下限(minHeight)と組み合わさると既定の縦 padding で文字が
|
|
32
33
|
* 上寄り・下端切れになるため、縦 padding を殺して縦センターに揃える。
|
|
33
34
|
* textAlignVertical は Android 専用、paddingVertical: 0 は iOS の見た目を変えない
|
|
34
35
|
* (iOS の単一行入力は元々縦センター)。
|
|
@@ -54,6 +55,15 @@ export function resolveInputVerticalFix(os) {
|
|
|
54
55
|
/* eslint-enable melta/no-raw-spacing */
|
|
55
56
|
|
|
56
57
|
const INPUT_VERTICAL_FIX = resolveInputVerticalFix(Platform.OS);
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* error 時の accessibilityLabel 合成の既定(日本語)。
|
|
61
|
+
* props で差し替え可能(formatErrorAccessibilityLabel)。既定値を変えると
|
|
62
|
+
* 既存アプリの VoiceOver 読み上げが変わるので、既定は日本語のまま据え置く。
|
|
63
|
+
*/
|
|
64
|
+
function defaultErrorAccessibilityLabel(label, errorText) {
|
|
65
|
+
return `${label}。エラー: ${errorText}`;
|
|
66
|
+
}
|
|
57
67
|
export function TextField({
|
|
58
68
|
label,
|
|
59
69
|
value,
|
|
@@ -64,6 +74,7 @@ export function TextField({
|
|
|
64
74
|
size = "medium",
|
|
65
75
|
helperText,
|
|
66
76
|
errorText,
|
|
77
|
+
formatErrorAccessibilityLabel = defaultErrorAccessibilityLabel,
|
|
67
78
|
keyboardType,
|
|
68
79
|
autoCapitalize,
|
|
69
80
|
autoCorrect,
|
|
@@ -108,7 +119,7 @@ export function TextField({
|
|
|
108
119
|
maxLength: maxLength,
|
|
109
120
|
returnKeyType: returnKeyType,
|
|
110
121
|
onSubmitEditing: onSubmitEditing,
|
|
111
|
-
accessibilityLabel: showError ?
|
|
122
|
+
accessibilityLabel: showError ? formatErrorAccessibilityLabel(label, errorText) : label,
|
|
112
123
|
accessibilityState: {
|
|
113
124
|
disabled
|
|
114
125
|
},
|
|
@@ -132,6 +143,7 @@ export function TextField({
|
|
|
132
143
|
});
|
|
133
144
|
}
|
|
134
145
|
|
|
135
|
-
//
|
|
146
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
147
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
136
148
|
TextField.__contract = CONTRACTS.textfield;
|
|
137
149
|
//# sourceMappingURL=TextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useState","Platform","TextInput","View","Text","RNText","useTheme","CONTRACTS","resolveTextFieldStyle","resolveTextFieldFocusStyle","jsx","_jsx","jsxs","_jsxs","resolveInputVerticalFix","os","paddingVertical","paddingBottom","textAlignVertical","INPUT_VERTICAL_FIX","OS","
|
|
1
|
+
{"version":3,"names":["useMemo","useState","Platform","TextInput","View","Text","RNText","useTheme","CONTRACTS","resolveTextFieldStyle","resolveTextFieldFocusStyle","jsx","_jsx","jsxs","_jsxs","resolveInputVerticalFix","os","paddingVertical","paddingBottom","textAlignVertical","INPUT_VERTICAL_FIX","OS","defaultErrorAccessibilityLabel","label","errorText","TextField","value","onChangeText","placeholder","variant","disabled","size","helperText","formatErrorAccessibilityLabel","keyboardType","autoCapitalize","autoCorrect","maxLength","returnKeyType","onSubmitEditing","onBlur","onFocus","style","testID","theme","mode","colors","focused","setFocused","effectiveVariant","resolved","focusStyle","showError","children","placeholderTextColor","editable","accessibilityLabel","accessibilityState","e","input","accessibilityLiveRegion","__contract","textfield"],"sourceRoot":"../../../src","sources":["components/TextField.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* - presentational component。表示位置・キュー・自動消滅はアプリ層の責務
|
|
8
8
|
* (entering/visible/dismissing のアニメ state は Phase 外、recipe description)。
|
|
9
9
|
* - closeButton は契約 anatomy で必須 → onClose を required prop にして型で強制。
|
|
10
|
-
* Pressable + テキスト ×(accessibilityLabel
|
|
10
|
+
* Pressable + テキスト ×(accessibilityLabel は既定 "閉じる"、closeAccessibilityLabel で差し替え可能)。
|
|
11
|
+
* - action と × は隣接する 2 つの操作要素。当たり判定が重なると押し違いが起きるので、
|
|
12
|
+
* 横 hitSlop を gap の 1/2 に絞る(toast.styles.ts の TOAST_TAP_TARGET)。
|
|
11
13
|
* - a11y(§2 web→RN mapping): web の role=status + aria-live=polite を
|
|
12
14
|
* accessibilityLiveRegion="polite"(Android のみ有効)に落とす。
|
|
13
15
|
* - elevation は theme.elevation.sm(iOS shadow* + Android elevation の複合値)を container に
|
|
@@ -22,7 +24,7 @@ import { Pressable, View } from "react-native";
|
|
|
22
24
|
import { Text } from "../primitives/Text.js";
|
|
23
25
|
import { useTheme } from "../theme/index.js";
|
|
24
26
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
25
|
-
import { TOAST_SPEC, resolveToastStyles } from "./toast.styles.js";
|
|
27
|
+
import { TOAST_SPEC, TOAST_TAP_TARGET, resolveToastStyles } from "./toast.styles.js";
|
|
26
28
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
29
|
export function Toast({
|
|
28
30
|
variant,
|
|
@@ -31,6 +33,7 @@ export function Toast({
|
|
|
31
33
|
onClose,
|
|
32
34
|
actionLabel,
|
|
33
35
|
onAction,
|
|
36
|
+
closeAccessibilityLabel = "閉じる",
|
|
34
37
|
style,
|
|
35
38
|
testID
|
|
36
39
|
}) {
|
|
@@ -65,10 +68,14 @@ export function Toast({
|
|
|
65
68
|
},
|
|
66
69
|
children: description
|
|
67
70
|
})]
|
|
68
|
-
}), actionLabel != null && onAction != null &&
|
|
71
|
+
}), actionLabel != null && onAction != null &&
|
|
72
|
+
/*#__PURE__*/
|
|
73
|
+
// 横 hitSlop は gap/2(= 6)まで。10 のままだと隣の × と当たり判定が 8pt 重なり、
|
|
74
|
+
// 手前に描かれる × が勝って「元に戻す」が押せない(toast.styles.ts の TOAST_TAP_TARGET 参照)。
|
|
75
|
+
_jsx(Pressable, {
|
|
69
76
|
onPress: onAction,
|
|
70
77
|
accessibilityRole: "button",
|
|
71
|
-
hitSlop:
|
|
78
|
+
hitSlop: TOAST_TAP_TARGET.hitSlop,
|
|
72
79
|
children: /*#__PURE__*/_jsx(Text, {
|
|
73
80
|
variant: TOAST_SPEC.messageFont,
|
|
74
81
|
weight: TOAST_SPEC.messageWeight,
|
|
@@ -81,11 +88,11 @@ export function Toast({
|
|
|
81
88
|
}), /*#__PURE__*/_jsx(Pressable, {
|
|
82
89
|
onPress: onClose,
|
|
83
90
|
accessibilityRole: "button",
|
|
84
|
-
accessibilityLabel:
|
|
85
|
-
hitSlop:
|
|
91
|
+
accessibilityLabel: closeAccessibilityLabel,
|
|
92
|
+
hitSlop: TOAST_TAP_TARGET.hitSlop,
|
|
86
93
|
style: {
|
|
87
|
-
minWidth:
|
|
88
|
-
minHeight:
|
|
94
|
+
minWidth: TOAST_TAP_TARGET.closeMinWidth,
|
|
95
|
+
minHeight: TOAST_TAP_TARGET.closeMinHeight,
|
|
89
96
|
alignItems: "center",
|
|
90
97
|
justifyContent: "center"
|
|
91
98
|
},
|
|
@@ -100,6 +107,7 @@ export function Toast({
|
|
|
100
107
|
});
|
|
101
108
|
}
|
|
102
109
|
|
|
103
|
-
//
|
|
110
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
111
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
104
112
|
Toast.__contract = CONTRACTS.toast;
|
|
105
113
|
//# sourceMappingURL=Toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","Pressable","View","Text","useTheme","CONTRACTS","TOAST_SPEC","resolveToastStyles","jsx","_jsx","jsxs","_jsxs","Toast","variant","message","description","onClose","actionLabel","onAction","style","testID","theme","mode","styles","accessibilityLiveRegion","containerStyle","elevation","children","flex","gap","spacing","messageFont","weight","messageWeight","color","messageStyle","onPress","accessibilityRole","hitSlop","textDecorationLine","accessibilityLabel","minWidth","minHeight","alignItems","justifyContent","__contract","toast"],"sourceRoot":"../../../src","sources":["components/Toast.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,SAAS,EAAEC,IAAI,QAAwC,cAAc;AAC9E,SAASC,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","Pressable","View","Text","useTheme","CONTRACTS","TOAST_SPEC","TOAST_TAP_TARGET","resolveToastStyles","jsx","_jsx","jsxs","_jsxs","Toast","variant","message","description","onClose","actionLabel","onAction","closeAccessibilityLabel","style","testID","theme","mode","styles","accessibilityLiveRegion","containerStyle","elevation","children","flex","gap","spacing","messageFont","weight","messageWeight","color","messageStyle","onPress","accessibilityRole","hitSlop","textDecorationLine","accessibilityLabel","minWidth","closeMinWidth","minHeight","closeMinHeight","alignItems","justifyContent","__contract","toast"],"sourceRoot":"../../../src","sources":["components/Toast.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* flex-start / flex-end を切り替える(アニメは Phase 外)。
|
|
11
11
|
* - disabled: recipe states.disabled の opacity + accessibilityState.disabled + onPress 無効。
|
|
12
12
|
* - a11y: accessibilityRole="switch" + accessibilityState.checked。label があれば右に表示し、
|
|
13
|
-
* Pressable 全体がタップ領域 + accessibilityLabel
|
|
13
|
+
* Pressable 全体がタップ領域 + accessibilityLabel になる。実効タップ標的 44pt は
|
|
14
|
+
* 縦 hitSlop で確保する(TOGGLE_VERTICAL_HIT_SLOP、A11Y_MIN_TAP_TARGET_44)。
|
|
14
15
|
* - 色・寸法の決定は pure resolver(toggle.styles.ts)に分離。
|
|
15
16
|
* recipes/app/toggle.recipe.json との機械照合は scripts/lib/toggle-conformance.test.ts が行う。
|
|
16
17
|
*/
|
|
@@ -20,7 +21,7 @@ import { Pressable, View } from "react-native";
|
|
|
20
21
|
import { Text } from "../primitives/Text.js";
|
|
21
22
|
import { useTheme } from "../theme/index.js";
|
|
22
23
|
import { CONTRACTS } from "../contracts/contract-types.js";
|
|
23
|
-
import { resolveToggleStyle, TOGGLE_DISABLED_OPACITY } from "./toggle.styles.js";
|
|
24
|
+
import { resolveToggleStyle, TOGGLE_DISABLED_OPACITY, TOGGLE_VERTICAL_HIT_SLOP } from "./toggle.styles.js";
|
|
24
25
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
26
|
export function Toggle({
|
|
26
27
|
value,
|
|
@@ -48,7 +49,14 @@ export function Toggle({
|
|
|
48
49
|
checked: value,
|
|
49
50
|
disabled
|
|
50
51
|
},
|
|
51
|
-
accessibilityLabel: label
|
|
52
|
+
accessibilityLabel: label
|
|
53
|
+
// track(24/28pt)も label 付きの行(36pt)も 44pt に届かないので縦 hitSlop で補う。
|
|
54
|
+
// 値の根拠は toggle.styles.ts の TOGGLE_VERTICAL_HIT_SLOP。
|
|
55
|
+
,
|
|
56
|
+
hitSlop: {
|
|
57
|
+
top: TOGGLE_VERTICAL_HIT_SLOP[size],
|
|
58
|
+
bottom: TOGGLE_VERTICAL_HIT_SLOP[size]
|
|
59
|
+
},
|
|
52
60
|
testID: testID,
|
|
53
61
|
style: [{
|
|
54
62
|
flexDirection: "row",
|
|
@@ -72,6 +80,7 @@ export function Toggle({
|
|
|
72
80
|
});
|
|
73
81
|
}
|
|
74
82
|
|
|
75
|
-
//
|
|
83
|
+
// conformance test 用の contract メタ(§2 A-3)。scripts/lib/conformance.test.ts が
|
|
84
|
+
// 「この宣言が正しい contract を指しているか」を静的スキャンで照合する。
|
|
76
85
|
Toggle.__contract = CONTRACTS.toggle;
|
|
77
86
|
//# sourceMappingURL=Toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","Pressable","View","Text","useTheme","CONTRACTS","resolveToggleStyle","TOGGLE_DISABLED_OPACITY","jsx","_jsx","jsxs","_jsxs","Toggle","value","onValueChange","label","size","disabled","style","testID","theme","mode","variant","resolved","onPress","accessibilityRole","accessibilityState","checked","accessibilityLabel","flexDirection","alignItems","alignSelf","gap","spacing","opacity","children","track","justifyContent","thumb","__contract","toggle"],"sourceRoot":"../../../src","sources":["components/Toggle.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,SAAS,EAAEC,IAAI,QAAwC,cAAc;AAC9E,SAASC,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"names":["useMemo","Pressable","View","Text","useTheme","CONTRACTS","resolveToggleStyle","TOGGLE_DISABLED_OPACITY","TOGGLE_VERTICAL_HIT_SLOP","jsx","_jsx","jsxs","_jsxs","Toggle","value","onValueChange","label","size","disabled","style","testID","theme","mode","variant","resolved","onPress","accessibilityRole","accessibilityState","checked","accessibilityLabel","hitSlop","top","bottom","flexDirection","alignItems","alignSelf","gap","spacing","opacity","children","track","justifyContent","thumb","__contract","toggle"],"sourceRoot":"../../../src","sources":["components/Toggle.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,SAAS,EAAEC,IAAI,QAAwC,cAAc;AAC9E,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,SAASC,QAAQ,QAAQ,mBAAmB;AAC5C,SAASC,SAAS,QAAQ,gCAAgC;AAC1D,SACEC,kBAAkB,EAClBC,uBAAuB,EACvBC,wBAAwB,QAGnB,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAc5B,OAAO,SAASC,MAAMA,CAAC;EACrBC,KAAK;EACLC,aAAa;EACbC,KAAK;EACLC,IAAI,GAAG,QAAQ;EACfC,QAAQ,GAAG,KAAK;EAChBC,KAAK;EACLC;AACW,CAAC,EAAE;EACd,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGlB,QAAQ,CAAC,CAAC;EAElC,MAAMmB,OAAsB,GAAGT,KAAK,GAAG,IAAI,GAAG,KAAK;EACnD,MAAMU,QAAQ,GAAGxB,OAAO,CACtB,MAAMM,kBAAkB,CAACe,KAAK,EAAEC,IAAI,EAAE;IAAEC,OAAO;IAAEN;EAAK,CAAC,CAAC,EACxD,CAACI,KAAK,EAAEC,IAAI,EAAEC,OAAO,EAAEN,IAAI,CAC7B,CAAC;EAED,oBACEL,KAAA,CAACX,SAAS;IACRwB,OAAO,EAAEA,CAAA,KAAMV,aAAa,GAAG,CAACD,KAAK,CAAE;IACvCI,QAAQ,EAAEA,QAAS;IACnBQ,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE;MAAEC,OAAO,EAAEd,KAAK;MAAEI;IAAS,CAAE;IACjDW,kBAAkB,EAAEb;IACpB;IACA;IAAA;IACAc,OAAO,EAAE;MACPC,GAAG,EAAEvB,wBAAwB,CAACS,IAAI,CAAC;MACnCe,MAAM,EAAExB,wBAAwB,CAACS,IAAI;IACvC,CAAE;IACFG,MAAM,EAAEA,MAAO;IACfD,KAAK,EAAE,CACL;MACEc,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,QAAQ;MACpBC,SAAS,EAAE,YAAY;MACvBC,GAAG,EAAEf,KAAK,CAACgB,OAAO,CAAC,GAAG,CAAC;MACvBC,OAAO,EAAEpB,QAAQ,GAAGX,uBAAuB,GAAG;IAChD,CAAC,EACDY,KAAK,CACL;IAAAoB,QAAA,gBAEF7B,IAAA,CAACR,IAAI;MACHiB,KAAK,EAAE,CACLK,QAAQ,CAACgB,KAAK,EACd;QACEP,aAAa,EAAE,KAAK;QACpBC,UAAU,EAAE,QAAQ;QACpBO,cAAc,EAAE3B,KAAK,GAAG,UAAU,GAAG;MACvC,CAAC,CACD;MAAAyB,QAAA,eAEF7B,IAAA,CAACR,IAAI;QAACiB,KAAK,EAAEK,QAAQ,CAACkB;MAAM,CAAE;IAAC,CAC3B,CAAC,EACN1B,KAAK,IAAI,IAAI,iBAAIN,IAAA,CAACP,IAAI;MAAAoC,QAAA,EAAEvB;IAAK,CAAO,CAAC;EAAA,CAC7B,CAAC;AAEhB;;AAEA;AACA;AACAH,MAAM,CAAC8B,UAAU,GAAGtC,SAAS,CAACuC,MAAM","ignoreList":[]}
|
|
@@ -9,14 +9,23 @@
|
|
|
9
9
|
*
|
|
10
10
|
* - RN では border を持たず bg subtle + text 色で表現する(status token に border 用の中間色が
|
|
11
11
|
* 無いため。COLOR_ONLY_FORBIDDEN は title/message のテキストと icon slot で担保、recipe description)。
|
|
12
|
-
* -
|
|
13
|
-
* (dark token が無い既知の割り切り、web と同じ)。
|
|
12
|
+
* - status 色(mode ごとの subtle / text、info の primary 固定)の解決は status-colors.ts が SSOT。
|
|
14
13
|
*/
|
|
15
14
|
|
|
15
|
+
import { resolveStatusVariantColors } from "./status-colors.js";
|
|
16
|
+
import { CANONICAL_TAP_TARGET } from "../a11y/tap-target.js";
|
|
17
|
+
|
|
18
|
+
/** alert.contract の variant 語彙(status 共通語彙と 1:1)。 */
|
|
19
|
+
|
|
16
20
|
/**
|
|
17
21
|
* 構成キー(token キー)。component は Text にこのキーをそのまま渡し、resolver は同じキーから
|
|
18
22
|
* style 値を解決する(component と resolver が別々のキーを持って drift する事故を防ぐ SSOT)。
|
|
19
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* × の当たり判定(正典パターン: 視覚 24pt + hitSlop 10 = 実効 44pt)。
|
|
26
|
+
* Alert の × は右端に単独で立つ(Toast と違い隣接する操作要素が無い)ので横も 10 のままでよい。
|
|
27
|
+
*/
|
|
28
|
+
export const ALERT_CLOSE_TAP_TARGET = CANONICAL_TAP_TARGET;
|
|
20
29
|
export const ALERT_SPEC = {
|
|
21
30
|
padding: "4",
|
|
22
31
|
gap: "3",
|
|
@@ -28,35 +37,12 @@ export const ALERT_SPEC = {
|
|
|
28
37
|
|
|
29
38
|
/** slot 構成(alert.recipe 各 variant の containerStyle / titleStyle / messageStyle と 1:1)。 */
|
|
30
39
|
|
|
31
|
-
/**
|
|
32
|
-
* variant → bg / text 色の解決。
|
|
33
|
-
* - info: primary.50 / primary.800 固定(mode 非依存)。
|
|
34
|
-
* - success / warning / error: status token(error は status キー上は danger)。
|
|
35
|
-
* light は subtleLight / textLight、dark は subtleDark / textDark(recipe description の写像)。
|
|
36
|
-
*/
|
|
37
|
-
export function resolveAlertColors(theme, mode, variant) {
|
|
38
|
-
if (variant === "info") {
|
|
39
|
-
return {
|
|
40
|
-
bg: theme.color.primary["50"],
|
|
41
|
-
text: theme.color.primary["800"]
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
const status = theme.color.status[variant === "error" ? "danger" : variant];
|
|
45
|
-
return mode === "dark" ? {
|
|
46
|
-
bg: status.subtleDark,
|
|
47
|
-
text: status.textDark
|
|
48
|
-
} : {
|
|
49
|
-
bg: status.subtleLight,
|
|
50
|
-
text: status.textLight
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
40
|
/** variant → 全 slot の style 解決(alert.recipe styleRefs の 1:1 写像)。 */
|
|
55
41
|
export function resolveAlertStyles(theme, mode, variant) {
|
|
56
42
|
const {
|
|
57
43
|
bg,
|
|
58
44
|
text
|
|
59
|
-
} =
|
|
45
|
+
} = resolveStatusVariantColors(theme, mode, variant);
|
|
60
46
|
return {
|
|
61
47
|
containerStyle: {
|
|
62
48
|
backgroundColor: bg,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ALERT_SPEC","padding","gap","radius","titleFont","titleWeight","messageFont","
|
|
1
|
+
{"version":3,"names":["resolveStatusVariantColors","CANONICAL_TAP_TARGET","ALERT_CLOSE_TAP_TARGET","ALERT_SPEC","padding","gap","radius","titleFont","titleWeight","messageFont","resolveAlertStyles","theme","mode","variant","bg","text","containerStyle","backgroundColor","borderRadius","spacing","flexDirection","alignItems","titleStyle","color","fontSize","typography","fontWeight","messageStyle"],"sourceRoot":"../../../src","sources":["components/alert.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASA,0BAA0B,QAA4B,oBAAoB;AACnF,SAASC,oBAAoB,QAAQ,uBAAuB;;AAE5D;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGD,oBAAoB;AAE1D,OAAO,MAAME,UAAU,GAAG;EACxBC,OAAO,EAAE,GAAG;EACZC,GAAG,EAAE,GAAG;EACRC,MAAM,EAAE,IAAI;EACZC,SAAS,EAAE,MAAM;EACjBC,WAAW,EAAE,QAAQ;EACrBC,WAAW,EAAE;AACf,CAOC;;AAED;;AAuBA;AACA,OAAO,SAASC,kBAAkBA,CAChCC,KAAkB,EAClBC,IAAe,EACfC,OAAqB,EACR;EACb,MAAM;IAAEC,EAAE;IAAEC;EAAK,CAAC,GAAGf,0BAA0B,CAACW,KAAK,EAAEC,IAAI,EAAEC,OAAO,CAAC;EACrE,OAAO;IACLG,cAAc,EAAE;MACdC,eAAe,EAAEH,EAAE;MACnBI,YAAY,EAAEP,KAAK,CAACL,MAAM,CAACH,UAAU,CAACG,MAAM,CAAC;MAC7CF,OAAO,EAAEO,KAAK,CAACQ,OAAO,CAAChB,UAAU,CAACC,OAAO,CAAC;MAC1CgB,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,YAAY;MACxBhB,GAAG,EAAEM,KAAK,CAACQ,OAAO,CAAChB,UAAU,CAACE,GAAG;IACnC,CAAC;IACDiB,UAAU,EAAE;MACVC,KAAK,EAAER,IAAI;MACXS,QAAQ,EAAEb,KAAK,CAACc,UAAU,CAACD,QAAQ,CAACrB,UAAU,CAACI,SAAS,CAAC,CAACiB,QAAQ;MAClEE,UAAU,EAAEf,KAAK,CAACc,UAAU,CAACC,UAAU,CAACvB,UAAU,CAACK,WAAW;IAChE,CAAC;IACDmB,YAAY,EAAE;MACZJ,KAAK,EAAER,IAAI;MACXS,QAAQ,EAAEb,KAAK,CAACc,UAAU,CAACD,QAAQ,CAACrB,UAAU,CAACM,WAAW,CAAC,CAACe;IAC9D;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/** サイズ軸(contract sizes の height と 1:1。recipe sizes の width/height/dotSize/fontSize に対応)。 */
|
|
12
|
-
const
|
|
12
|
+
export const AVATAR_SIZE_SPEC = {
|
|
13
13
|
small: {
|
|
14
14
|
box: 32,
|
|
15
15
|
dot: 8,
|
|
@@ -30,6 +30,28 @@ const SIZE_TABLE = {
|
|
|
30
30
|
/** group の重なり(-spacing.2 相当。負値 token が無いため recipe と同じ literal)。 */
|
|
31
31
|
export const AVATAR_GROUP_OVERLAP = -8;
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* initials の文字サイズ倍率の上限(size 別)。
|
|
35
|
+
*
|
|
36
|
+
* Avatar の器は **width = height の円**(recipe sizes の box)で、fontScale で伸びるのは
|
|
37
|
+
* 中身の文字だけ。器は伸びないので、上限を掛けないと OS の文字サイズ拡大で文字が円から
|
|
38
|
+
* はみ出す(円が楕円に見える / 文字が切れる)。
|
|
39
|
+
*
|
|
40
|
+
* 導出は「box ÷ その size が使う fontSize token の lineHeight」を**小数第1位で切り捨て**(安全側):
|
|
41
|
+
* small 32 ÷ 19(xs の lineHeight) = 1.68… → 1.6
|
|
42
|
+
* medium 40 ÷ 26(sm の lineHeight) = 1.53… → 1.5
|
|
43
|
+
* large 48 ÷ 36(base の lineHeight) = 1.33… → 1.3
|
|
44
|
+
*
|
|
45
|
+
* lineHeight(fontSize ではなく)を分母に採るのは、RN が確保する行ボックスの高さが
|
|
46
|
+
* 溢れの実体だから。theme を差し替えても壊れないよう、この導出そのものは
|
|
47
|
+
* avatar-conformance.test.ts が実 theme の値で再検算する。
|
|
48
|
+
*/
|
|
49
|
+
export const AVATAR_INITIALS_MAX_FONT_SCALE = {
|
|
50
|
+
small: 1.6,
|
|
51
|
+
medium: 1.5,
|
|
52
|
+
large: 1.3
|
|
53
|
+
};
|
|
54
|
+
|
|
33
55
|
/**
|
|
34
56
|
* group variant(avatar.recipe の group.style / group.overlapStyle の 1:1 写像)。
|
|
35
57
|
* container は横並び、2枚目以降の子に overlap(負 margin)を適用する。
|
|
@@ -48,7 +70,7 @@ export function resolveAvatarGroupStyle() {
|
|
|
48
70
|
* variant / size → Avatar style の解決(avatar.recipe styleRefs の 1:1 写像)。
|
|
49
71
|
*/
|
|
50
72
|
export function resolveAvatarStyle(theme, mode, variant, size) {
|
|
51
|
-
const s =
|
|
73
|
+
const s = AVATAR_SIZE_SPEC[size];
|
|
52
74
|
return {
|
|
53
75
|
container: {
|
|
54
76
|
width: s.box,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["AVATAR_SIZE_SPEC","small","box","dot","fontSize","medium","large","AVATAR_GROUP_OVERLAP","AVATAR_INITIALS_MAX_FONT_SCALE","resolveAvatarGroupStyle","container","flexDirection","overlap","marginLeft","resolveAvatarStyle","theme","mode","variant","size","s","width","height","borderRadius","radius","full","overflow","backgroundColor","color","primary","alignItems","justifyContent","text","fontWeight","typography","borderWidth","borderColor","semantic","resolveAvatarStatusColor","status","success","base","warning"],"sourceRoot":"../../../src","sources":["components/avatar.styles.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isValidElement","CARD_INTERACTIVE","validateCardProps","variant","onPress","primaryAction","Object","prototype","hasOwnProperty","call","String","keys","join","problems","push"],"sourceRoot":"../../../src","sources":["components/card.validate.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,OAAO;AAEtC,SAASC,gBAAgB,QAAQ,
|
|
1
|
+
{"version":3,"names":["isValidElement","CARD_INTERACTIVE","validateCardProps","variant","onPress","primaryAction","Object","prototype","hasOwnProperty","call","String","keys","join","problems","push"],"sourceRoot":"../../../src","sources":["components/card.validate.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,OAAO;AAEtC,SAASC,gBAAgB,QAAQ,kBAAkB;AAQnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,OAAO;EACPC,OAAO;EACPC;AACsB,CAAC,EAAY;EACnC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAI,OAAOF,OAAO,KAAK,QAAQ,EAAE;IAC/B,OAAO,CACL,kCAAkCA,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,OAAO,IAAI,CACjF;EACH;EACA,IAAI,CAACG,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACR,gBAAgB,EAAEE,OAAO,CAAC,EAAE;IACpE,OAAO,CACL,mBAAmBO,MAAM,CAACP,OAAO,CAAC,WAAW,GAC3C,GAAGG,MAAM,CAACK,IAAI,CAACV,gBAAgB,CAAC,CAACW,IAAI,CAAC,KAAK,CAAC,UAAU,CACzD;EACH;EAEA,IAAI,CAACX,gBAAgB,CAACE,OAAO,CAAC,EAAE;IAC9B,MAAMU,QAAkB,GAAG,EAAE;IAC7B,IAAIT,OAAO,IAAI,IAAI,EAAE;MACnBS,QAAQ,CAACC,IAAI,CAAC,iBAAiBX,OAAO,yCAAyC,CAAC;IAClF;IACA,IAAIE,aAAa,IAAI,IAAI,EAAE;MACzBQ,QAAQ,CAACC,IAAI,CAAC,iBAAiBX,OAAO,+CAA+C,CAAC;IACxF;IACA,OAAOU,QAAQ;EACjB;EAEA,MAAMA,QAAkB,GAAG,EAAE;EAE7B,IAAIT,OAAO,IAAI,IAAI,EAAE;IACnBS,QAAQ,CAACC,IAAI,CACX,iBAAiBX,OAAO,wCAC1B,CAAC;EACH,CAAC,MAAM,IAAI,OAAOC,OAAO,KAAK,UAAU,EAAE;IACxCS,QAAQ,CAACC,IAAI,CAAC,iBAAiBX,OAAO,sBAAsB,OAAOC,OAAO,IAAI,CAAC;EACjF;EAEA,IAAIC,aAAa,IAAI,IAAI,EAAE;IACzBQ,QAAQ,CAACC,IAAI,CACX,iBAAiBX,OAAO,wCAAwC,GAC9D,2CAA2C,GAC3C,qDACJ,CAAC;EACH,CAAC,MAAM,IAAI,eAACH,cAAc,CAACK,aAAa,CAAC,EAAE;IACzCQ,QAAQ,CAACC,IAAI,CACX,iBAAiBX,OAAO,mCAAmC,OAAOE,aAAa,IAAI,GACjF,qBACJ,CAAC;EACH;EAEA,OAAOQ,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -11,13 +11,16 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* recipe 由来の literal 値テーブル(token 化されていない数値。conformance が recipe と照合する)。
|
|
13
13
|
* - box は 20px(web の 16px より大きいのはタッチ前提、recipe description)
|
|
14
|
-
* -
|
|
14
|
+
* - 実効タップ標的 44pt は行の minHeight で確保(A11Y_MIN_TAP_TARGET_44。規約 10-(b):
|
|
15
|
+
* 背景を持たない行は hitSlop でなく寸法で満たす — 旧実装の四方 hitSlop 12 は行全体
|
|
16
|
+
* Pressable に効くため、縦積みの隣接 Checkbox と当たり判定が最大 24pt 重なっていた
|
|
17
|
+
* (Codex レビュー指摘)。Radio の option 行と同じ手当てに統一)
|
|
15
18
|
*/
|
|
16
19
|
export const CHECKBOX_SPEC = {
|
|
17
20
|
boxSize: 20,
|
|
18
21
|
boxBorderWidth: 2,
|
|
19
22
|
disabledOpacity: 0.5,
|
|
20
|
-
|
|
23
|
+
rowMinHeight: 44
|
|
21
24
|
};
|
|
22
25
|
|
|
23
26
|
/** 見た目(色)に効く状態入力。disabled は opacity のみで色を変えないため含めない。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CHECKBOX_SPEC","boxSize","boxBorderWidth","disabledOpacity","
|
|
1
|
+
{"version":3,"names":["CHECKBOX_SPEC","boxSize","boxBorderWidth","disabledOpacity","rowMinHeight","resolveCheckboxStyle","theme","mode","checked","indeterminate","error","sem","color","semantic","filled","boxStyle","width","height","borderWidth","borderColor","status","danger","base","primary","borderRadius","radius","sm","backgroundColor","labelStyle","fontSize","typography","gap","spacing","markColor"],"sourceRoot":"../../../src","sources":["components/checkbox.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,aAAa,GAAG;EAC3BC,OAAO,EAAE,EAAE;EACXC,cAAc,EAAE,CAAC;EACjBC,eAAe,EAAE,GAAG;EACpBC,YAAY,EAAE;AAChB,CAAU;;AAEV;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,KAAkB,EAClBC,IAAe,EACf;EAAEC,OAAO;EAAEC,aAAa,GAAG,KAAK;EAAEC,KAAK,GAAG;AAA0B,CAAC,EACnD;EAClB,MAAMC,GAAG,GAAGL,KAAK,CAACM,KAAK,CAACC,QAAQ,CAACN,IAAI,CAAC;EACtC,MAAMO,MAAM,GAAGN,OAAO,IAAIC,aAAa;EACvC,OAAO;IACLM,QAAQ,EAAE;MACRC,KAAK,EAAEhB,aAAa,CAACC,OAAO;MAC5BgB,MAAM,EAAEjB,aAAa,CAACC,OAAO;MAC7BiB,WAAW,EAAElB,aAAa,CAACE,cAAc;MACzCiB,WAAW,EAAET,KAAK,GACdJ,KAAK,CAACM,KAAK,CAACQ,MAAM,CAACC,MAAM,CAACC,IAAI,GAC9BR,MAAM,GACJR,KAAK,CAACM,KAAK,CAACW,OAAO,CAAC,KAAK,CAAC,GAC1BZ,GAAG,CAAC,eAAe,CAAC;MAC1Ba,YAAY,EAAElB,KAAK,CAACmB,MAAM,CAACC,EAAE;MAC7BC,eAAe,EAAEb,MAAM,GAAGR,KAAK,CAACM,KAAK,CAACW,OAAO,CAAC,KAAK,CAAC,GAAGZ,GAAG,CAAC,UAAU;IACvE,CAAC;IACDiB,UAAU,EAAE;MACVC,QAAQ,EAAEvB,KAAK,CAACwB,UAAU,CAACD,QAAQ,CAACP,IAAI,CAACO,QAAQ;MACjDjB,KAAK,EAAED,GAAG,CAAC,cAAc;IAC3B,CAAC;IACDoB,GAAG,EAAEzB,KAAK,CAAC0B,OAAO,CAAC,GAAG,CAAC;IACvBC,SAAS,EAAEtB,GAAG,CAAC,gBAAgB;EACjC,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Surface","Image","Card","Skeleton","EmptyState","Screen","Header","Avatar","TextField","Toggle","Checkbox","Radio","Alert","Toast","Progress","Modal","ActionSheet","BottomSheet"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,
|
|
1
|
+
{"version":3,"names":["Surface","Image","Card","Skeleton","EmptyState","Screen","Header","Avatar","TextField","Toggle","Checkbox","Radio","Alert","Toast","Progress","Modal","ActionSheet","BottomSheet"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,IAAI,QAAQ,WAAW;AAChC,SAASC,QAAQ,QAAQ,eAAe;AACxC,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,SAASC,MAAM,QAAQ,aAAa;AACpC,SAASC,QAAQ,QAAQ,eAAe;AACxC,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,QAAQ,QAAQ,eAAe;AACxC,SAASC,KAAK,QAAQ,YAAY;AAClC,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,WAAW,QAAQ,kBAAkB","ignoreList":[]}
|
|
@@ -15,6 +15,15 @@
|
|
|
15
15
|
* - sizes はタブレット以上で効く maxWidth(モバイルは width 100% - overlay padding が先に効く)。
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
import { CANONICAL_TAP_TARGET } from "../a11y/tap-target.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* title 行の × の当たり判定(正典パターン: 視覚 24pt + hitSlop 10 = 実効 44pt)。
|
|
22
|
+
*
|
|
23
|
+
* 以前は hitSlop=spacing.2(8)だけで、× のグリフ幅(fontSize.xl の "×" ≈ 13pt)+ 8×2 =
|
|
24
|
+
* 実効 29pt しか無かった(Toast / Alert の × は正典パターン済みだったので Modal だけ取り残されていた)。
|
|
25
|
+
*/
|
|
26
|
+
export const MODAL_CLOSE_TAP_TARGET = CANONICAL_TAP_TARGET;
|
|
18
27
|
/** size → panel の maxWidth(modal.recipe sizes の literal と 1:1)。 */
|
|
19
28
|
export const MODAL_MAX_WIDTH = {
|
|
20
29
|
small: 384,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MODAL_MAX_WIDTH","small","medium","large","MODAL_OVERLAY_COLOR","resolveModalStyle","theme","mode","size","semantic","color","overlayStyle","flex","backgroundColor","justifyContent","alignItems","padding","spacing","panelStyle","borderRadius","radius","lg","width","maxWidth","panelElevation","elevation","overlay","titleStyle","fontSize","typography","fontWeight","bold","bodyStyle","marginTop","footerStyle","flexDirection","gap"],"sourceRoot":"../../../src","sources":["components/modal.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["CANONICAL_TAP_TARGET","MODAL_CLOSE_TAP_TARGET","MODAL_MAX_WIDTH","small","medium","large","MODAL_OVERLAY_COLOR","resolveModalStyle","theme","mode","size","semantic","color","overlayStyle","flex","backgroundColor","justifyContent","alignItems","padding","spacing","panelStyle","borderRadius","radius","lg","width","maxWidth","panelElevation","elevation","overlay","titleStyle","fontSize","typography","fontWeight","bold","bodyStyle","marginTop","footerStyle","flexDirection","gap"],"sourceRoot":"../../../src","sources":["components/modal.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,oBAAoB,QAAQ,uBAAuB;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGD,oBAAoB;AAK1D;AACA,OAAO,MAAME,eAA0C,GAAG;EACxDC,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAG,iBAAiB;AAoCpD;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,KAAkB,EAClBC,IAAe,EACf;EAAEC,IAAI,GAAG;AAA0B,CAAC,GAAG,CAAC,CAAC,EAC7B;EACZ,MAAMC,QAAQ,GAAGH,KAAK,CAACI,KAAK,CAACD,QAAQ,CAACF,IAAI,CAAC;EAC3C,OAAO;IACLI,YAAY,EAAE;MACZC,IAAI,EAAE,CAAC;MACPC,eAAe,EAAET,mBAAmB;MACpCU,cAAc,EAAE,QAAQ;MACxBC,UAAU,EAAE,QAAQ;MACpBC,OAAO,EAAEV,KAAK,CAACW,OAAO,CAAC,GAAG;IAC5B,CAAC;IACDC,UAAU,EAAE;MACVL,eAAe,EAAEJ,QAAQ,CAAC,YAAY,CAAC;MACvCU,YAAY,EAAEb,KAAK,CAACc,MAAM,CAACC,EAAE;MAC7BL,OAAO,EAAEV,KAAK,CAACW,OAAO,CAAC,GAAG,CAAC;MAC3BK,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAEvB,eAAe,CAACQ,IAAI;IAChC,CAAC;IACDgB,cAAc,EAAElB,KAAK,CAACmB,SAAS,CAACC,OAAO;IACvCC,UAAU,EAAE;MACVC,QAAQ,EAAEtB,KAAK,CAACuB,UAAU,CAACD,QAAQ,CAAC,KAAK,CAAC,CAACA,QAAQ;MACnDE,UAAU,EAAExB,KAAK,CAACuB,UAAU,CAACC,UAAU,CAACC,IAAI;MAC5CrB,KAAK,EAAED,QAAQ,CAAC,cAAc;IAChC,CAAC;IACDuB,SAAS,EAAE;MAAEC,SAAS,EAAE3B,KAAK,CAACW,OAAO,CAAC,GAAG;IAAE,CAAC;IAC5CiB,WAAW,EAAE;MACXC,aAAa,EAAE,KAAK;MACpBrB,cAAc,EAAE,UAAU;MAC1BsB,GAAG,EAAE9B,KAAK,CAACW,OAAO,CAAC,GAAG,CAAC;MACvBgB,SAAS,EAAE3B,KAAK,CAACW,OAAO,CAAC,GAAG;IAC9B;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -13,13 +13,22 @@
|
|
|
13
13
|
* 実装ではこの共通部を variant に関わらず同値で返す(conformance が variant 間一致を照合)。
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
import { MIN_TAP_TARGET } from "../a11y/tap-target.js";
|
|
17
|
+
/**
|
|
18
|
+
* recipe 由来の literal 値テーブル(token 化されていない数値。conformance が recipe と照合する)。
|
|
19
|
+
*
|
|
20
|
+
* `optionMinHeight` だけは recipe 外の a11y 手当て(A11Y_MIN_TAP_TARGET_44)。
|
|
21
|
+
* option 行の視覚高さは label(base)の lineHeight 36pt しかなく 44pt に届かないが、
|
|
22
|
+
* option 行は**背景を持たない**(card-style を除く。card は padding 16×2 で既に 68pt)ので
|
|
23
|
+
* hitSlop ではなく minHeight で下げ止める — 見た目は変わらず、hitSlop の重なりも原理的に起きない。
|
|
24
|
+
*/
|
|
17
25
|
export const RADIO_SPEC = {
|
|
18
26
|
circleSize: 20,
|
|
19
27
|
circleBorderWidth: 2,
|
|
20
28
|
dotSize: 10,
|
|
21
29
|
cardBorderWidth: 1,
|
|
22
|
-
disabledOpacity: 0.5
|
|
30
|
+
disabledOpacity: 0.5,
|
|
31
|
+
optionMinHeight: MIN_TAP_TARGET
|
|
23
32
|
};
|
|
24
33
|
/**
|
|
25
34
|
* variant → グループ全体の style 解決(radio.recipe styleRefs の 1:1 写像)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RADIO_SPEC","circleSize","circleBorderWidth","dotSize","cardBorderWidth","disabledOpacity","resolveRadioGroupStyle","theme","mode","variant","sem","color","semantic","containerStyle","flexDirection","flexWrap","gap","spacing","dotStyle","width","height","borderRadius","radius","full","backgroundColor","primary","labelStyle","fontSize","typography","base","groupLabelStyle","sm","fontWeight","medium","marginBottom","optionGap","errorTextStyle","xs","status","danger","textLight","marginTop","cardStyle","borderWidth","borderColor","md","padding","cardSelectedStyle","resolveRadioCircleStyle","selected","error","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["components/radio.styles.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["MIN_TAP_TARGET","RADIO_SPEC","circleSize","circleBorderWidth","dotSize","cardBorderWidth","disabledOpacity","optionMinHeight","resolveRadioGroupStyle","theme","mode","variant","sem","color","semantic","containerStyle","flexDirection","flexWrap","gap","spacing","dotStyle","width","height","borderRadius","radius","full","backgroundColor","primary","labelStyle","fontSize","typography","base","groupLabelStyle","sm","fontWeight","medium","marginBottom","optionGap","errorTextStyle","xs","status","danger","textLight","marginTop","cardStyle","borderWidth","borderColor","md","padding","cardSelectedStyle","resolveRadioCircleStyle","selected","error","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["components/radio.styles.ts"],"mappings":"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","ignoreList":[]}
|