@metamask/design-system-react-native 0.35.0 → 0.37.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/CHANGELOG.md +35 -1
- package/dist/components/BannerBase/BannerBase.cjs +8 -6
- package/dist/components/BannerBase/BannerBase.cjs.map +1 -1
- package/dist/components/BannerBase/BannerBase.d.cts.map +1 -1
- package/dist/components/BannerBase/BannerBase.d.mts.map +1 -1
- package/dist/components/BannerBase/BannerBase.mjs +9 -7
- package/dist/components/BannerBase/BannerBase.mjs.map +1 -1
- package/dist/components/BannerBase/index.cjs +3 -1
- package/dist/components/BannerBase/index.cjs.map +1 -1
- package/dist/components/BannerBase/index.d.cts +1 -0
- package/dist/components/BannerBase/index.d.cts.map +1 -1
- package/dist/components/BannerBase/index.d.mts +1 -0
- package/dist/components/BannerBase/index.d.mts.map +1 -1
- package/dist/components/BannerBase/index.mjs +1 -0
- package/dist/components/BannerBase/index.mjs.map +1 -1
- package/dist/components/Content/Content.cjs +27 -13
- package/dist/components/Content/Content.cjs.map +1 -1
- package/dist/components/Content/Content.d.cts.map +1 -1
- package/dist/components/Content/Content.d.mts.map +1 -1
- package/dist/components/Content/Content.mjs +28 -14
- package/dist/components/Content/Content.mjs.map +1 -1
- package/dist/components/Content/index.cjs +3 -3
- package/dist/components/Content/index.cjs.map +1 -1
- package/dist/components/Content/index.d.cts +1 -1
- package/dist/components/Content/index.d.cts.map +1 -1
- package/dist/components/Content/index.d.mts +1 -1
- package/dist/components/Content/index.d.mts.map +1 -1
- package/dist/components/Content/index.mjs +1 -1
- package/dist/components/Content/index.mjs.map +1 -1
- package/dist/components/ListItem/ListItem.cjs +19 -8
- package/dist/components/ListItem/ListItem.cjs.map +1 -1
- package/dist/components/ListItem/ListItem.d.cts.map +1 -1
- package/dist/components/ListItem/ListItem.d.mts.map +1 -1
- package/dist/components/ListItem/ListItem.mjs +20 -9
- package/dist/components/ListItem/ListItem.mjs.map +1 -1
- package/dist/components/ListItem/index.cjs +3 -3
- package/dist/components/ListItem/index.cjs.map +1 -1
- package/dist/components/ListItem/index.d.cts +1 -1
- package/dist/components/ListItem/index.d.cts.map +1 -1
- package/dist/components/ListItem/index.d.mts +1 -1
- package/dist/components/ListItem/index.d.mts.map +1 -1
- package/dist/components/ListItem/index.mjs +1 -1
- package/dist/components/ListItem/index.mjs.map +1 -1
- package/dist/components/Slider/Slider.cjs +26 -13
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.constants.cjs +8 -3
- package/dist/components/Slider/Slider.constants.cjs.map +1 -1
- package/dist/components/Slider/Slider.constants.d.cts +2 -2
- package/dist/components/Slider/Slider.constants.d.cts.map +1 -1
- package/dist/components/Slider/Slider.constants.d.mts +2 -2
- package/dist/components/Slider/Slider.constants.d.mts.map +1 -1
- package/dist/components/Slider/Slider.constants.mjs +7 -2
- package/dist/components/Slider/Slider.constants.mjs.map +1 -1
- package/dist/components/Slider/Slider.d.cts +1 -1
- package/dist/components/Slider/Slider.d.cts.map +1 -1
- package/dist/components/Slider/Slider.d.mts +1 -1
- package/dist/components/Slider/Slider.d.mts.map +1 -1
- package/dist/components/Slider/Slider.mjs +31 -18
- package/dist/components/Slider/Slider.mjs.map +1 -1
- package/dist/components/Slider/Slider.types.cjs.map +1 -1
- package/dist/components/Slider/Slider.types.d.cts +14 -16
- package/dist/components/Slider/Slider.types.d.cts.map +1 -1
- package/dist/components/Slider/Slider.types.d.mts +14 -16
- package/dist/components/Slider/Slider.types.d.mts.map +1 -1
- package/dist/components/Slider/Slider.types.mjs.map +1 -1
- package/dist/components/Slider/Slider.utilities.cjs +96 -11
- package/dist/components/Slider/Slider.utilities.cjs.map +1 -1
- package/dist/components/Slider/Slider.utilities.d.cts +57 -8
- package/dist/components/Slider/Slider.utilities.d.cts.map +1 -1
- package/dist/components/Slider/Slider.utilities.d.mts +57 -8
- package/dist/components/Slider/Slider.utilities.d.mts.map +1 -1
- package/dist/components/Slider/Slider.utilities.mjs +89 -9
- package/dist/components/Slider/Slider.utilities.mjs.map +1 -1
- package/dist/components/Slider/index.cjs +4 -3
- package/dist/components/Slider/index.cjs.map +1 -1
- package/dist/components/Slider/index.d.cts +3 -1
- package/dist/components/Slider/index.d.cts.map +1 -1
- package/dist/components/Slider/index.d.mts +3 -1
- package/dist/components/Slider/index.d.mts.map +1 -1
- package/dist/components/Slider/index.mjs +2 -1
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/Slider/useSliderGesture.cjs +55 -22
- package/dist/components/Slider/useSliderGesture.cjs.map +1 -1
- package/dist/components/Slider/useSliderGesture.d.cts +2 -2
- package/dist/components/Slider/useSliderGesture.d.cts.map +1 -1
- package/dist/components/Slider/useSliderGesture.d.mts +2 -2
- package/dist/components/Slider/useSliderGesture.d.mts.map +1 -1
- package/dist/components/Slider/useSliderGesture.mjs +58 -25
- package/dist/components/Slider/useSliderGesture.mjs.map +1 -1
- package/dist/components/Toast/Toast.cjs +12 -3
- package/dist/components/Toast/Toast.cjs.map +1 -1
- package/dist/components/Toast/Toast.constants.cjs +10 -2
- package/dist/components/Toast/Toast.constants.cjs.map +1 -1
- package/dist/components/Toast/Toast.constants.d.cts +7 -1
- package/dist/components/Toast/Toast.constants.d.cts.map +1 -1
- package/dist/components/Toast/Toast.constants.d.mts +7 -1
- package/dist/components/Toast/Toast.constants.d.mts.map +1 -1
- package/dist/components/Toast/Toast.constants.mjs +9 -1
- package/dist/components/Toast/Toast.constants.mjs.map +1 -1
- package/dist/components/Toast/Toast.d.cts.map +1 -1
- package/dist/components/Toast/Toast.d.mts.map +1 -1
- package/dist/components/Toast/Toast.mjs +13 -4
- package/dist/components/Toast/Toast.mjs.map +1 -1
- package/dist/components/Toast/Toast.types.cjs.map +1 -1
- package/dist/components/Toast/Toast.types.d.cts +1 -1
- package/dist/components/Toast/Toast.types.d.cts.map +1 -1
- package/dist/components/Toast/Toast.types.d.mts +1 -1
- package/dist/components/Toast/Toast.types.d.mts.map +1 -1
- package/dist/components/Toast/Toast.types.mjs.map +1 -1
- package/dist/components/Toast/Toaster.cjs +18 -14
- package/dist/components/Toast/Toaster.cjs.map +1 -1
- package/dist/components/Toast/Toaster.d.cts.map +1 -1
- package/dist/components/Toast/Toaster.d.mts.map +1 -1
- package/dist/components/Toast/Toaster.mjs +20 -16
- package/dist/components/Toast/Toaster.mjs.map +1 -1
- package/dist/components/Toast/index.cjs +2 -2
- package/dist/components/Toast/index.cjs.map +1 -1
- package/dist/components/Toast/index.d.cts +1 -1
- package/dist/components/Toast/index.d.cts.map +1 -1
- package/dist/components/Toast/index.d.mts +1 -1
- package/dist/components/Toast/index.d.mts.map +1 -1
- package/dist/components/Toast/index.mjs +1 -1
- package/dist/components/Toast/index.mjs.map +1 -1
- package/dist/components/index.cjs +8 -7
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +5 -5
- package/dist/components/index.d.cts.map +1 -1
- package/dist/components/index.d.mts +5 -5
- package/dist/components/index.d.mts.map +1 -1
- package/dist/components/index.mjs +4 -4
- package/dist/components/index.mjs.map +1 -1
- package/package.json +4 -4
- package/dist/components/Content/Content.constants.cjs +0 -9
- package/dist/components/Content/Content.constants.cjs.map +0 -1
- package/dist/components/Content/Content.constants.d.cts +0 -3
- package/dist/components/Content/Content.constants.d.cts.map +0 -1
- package/dist/components/Content/Content.constants.d.mts +0 -3
- package/dist/components/Content/Content.constants.d.mts.map +0 -1
- package/dist/components/Content/Content.constants.mjs +0 -6
- package/dist/components/Content/Content.constants.mjs.map +0 -1
|
@@ -11,14 +11,26 @@ const react_native_1 = require("react-native");
|
|
|
11
11
|
const Box_1 = require("../Box/index.cjs");
|
|
12
12
|
const BoxRow_1 = require("../BoxRow/index.cjs");
|
|
13
13
|
const Content_1 = require("../Content/index.cjs");
|
|
14
|
-
const
|
|
15
|
-
const ListItem = ({ children, isInteractive = false, twClassName, style, startAccessory, endAccessory, accessoryGap = 0, verticalAlignment, avatar, title, titleProps, titleStartAccessory, titleEndAccessory, description, descriptionProps, descriptionStartAccessory, descriptionEndAccessory, value, valueProps, valueStartAccessory, valueEndAccessory, subvalue, subvalueProps, subvalueStartAccessory, subvalueEndAccessory, accessibilityRole, ...props }) => {
|
|
14
|
+
const ListItem = ({ children, isInteractive = false, twClassName, style, startAccessory, endAccessory, accessoryGap = 0, variant = design_system_shared_1.ContentVariant.TwoLines, avatar, title, titleProps, titleStartAccessory, titleEndAccessory, description, descriptionProps, descriptionStartAccessory, descriptionEndAccessory, value, valueProps, valueStartAccessory, valueEndAccessory, subvalue, subvalueProps, subvalueStartAccessory, subvalueEndAccessory, accessibilityRole, ...props }) => {
|
|
16
15
|
const tw = (0, design_system_twrnc_preset_1.useTailwind)();
|
|
16
|
+
const isMultiLine = variant === design_system_shared_1.ContentVariant.MultiLine;
|
|
17
|
+
let rootSizeClassName = 'min-h-[72px] justify-center';
|
|
18
|
+
if (variant === design_system_shared_1.ContentVariant.OneLine) {
|
|
19
|
+
rootSizeClassName = 'min-h-[48px] justify-center';
|
|
20
|
+
}
|
|
21
|
+
else if (isMultiLine) {
|
|
22
|
+
rootSizeClassName = 'min-h-[88px] justify-start';
|
|
23
|
+
}
|
|
24
|
+
const accessoryAlignItems = isMultiLine
|
|
25
|
+
? design_system_shared_1.BoxAlignItems.Start
|
|
26
|
+
: design_system_shared_1.BoxAlignItems.Center;
|
|
27
|
+
const rootBaseClassName = (0, design_system_shared_1.mergeTwClassName)('w-full px-4 py-3', rootSizeClassName);
|
|
28
|
+
const rootTwClassName = (0, design_system_shared_1.mergeTwClassName)(rootBaseClassName, twClassName);
|
|
17
29
|
const wrapperStyle = style
|
|
18
|
-
? [tw.style(
|
|
19
|
-
: tw.style(
|
|
30
|
+
? [tw.style(rootTwClassName), style]
|
|
31
|
+
: tw.style(rootTwClassName);
|
|
20
32
|
const getPressableStyle = ({ pressed, }) => {
|
|
21
|
-
const baseStyle = tw.style(
|
|
33
|
+
const baseStyle = tw.style(rootTwClassName, pressed && 'bg-pressed');
|
|
22
34
|
if (!style) {
|
|
23
35
|
return baseStyle;
|
|
24
36
|
}
|
|
@@ -26,9 +38,8 @@ const ListItem = ({ children, isInteractive = false, twClassName, style, startAc
|
|
|
26
38
|
return [baseStyle, userStyle];
|
|
27
39
|
};
|
|
28
40
|
const hasRowAccessories = Boolean(startAccessory) || Boolean(endAccessory);
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const listContent = hasRowAccessories ? (<BoxRow_1.BoxRow startAccessory={startAccessory} endAccessory={endAccessory} alignItems={rowAlignment} gap={accessoryGap} twClassName="min-h-[46px] w-full">
|
|
41
|
+
const content = (<Content_1.Content twClassName={hasRowAccessories ? 'flex-1 min-w-0' : undefined} variant={variant} avatar={avatar} title={title} titleProps={titleProps} titleStartAccessory={titleStartAccessory} titleEndAccessory={titleEndAccessory} description={description} descriptionProps={descriptionProps} descriptionStartAccessory={descriptionStartAccessory} descriptionEndAccessory={descriptionEndAccessory} value={value} valueProps={valueProps} valueStartAccessory={valueStartAccessory} valueEndAccessory={valueEndAccessory} subvalue={subvalue} subvalueProps={subvalueProps} subvalueStartAccessory={subvalueStartAccessory} subvalueEndAccessory={subvalueEndAccessory}/>);
|
|
42
|
+
const listContent = hasRowAccessories ? (<BoxRow_1.BoxRow startAccessory={startAccessory} endAccessory={endAccessory} alignItems={accessoryAlignItems} gap={accessoryGap}>
|
|
32
43
|
{content}
|
|
33
44
|
</BoxRow_1.BoxRow>) : (content);
|
|
34
45
|
if (isInteractive) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.cjs","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ListItem.cjs","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BoxAlignItems,\n ContentVariant,\n mergeTwClassName,\n} from '@metamask/design-system-shared';\nimport { useTailwind } from '@metamask/design-system-twrnc-preset';\nimport React from 'react';\nimport { Pressable } from 'react-native';\nimport type {\n PressableStateCallbackType,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport { Box } from '../Box';\nimport { BoxRow } from '../BoxRow';\nimport { Content } from '../Content';\n\nimport type { ListItemProps } from './ListItem.types';\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n isInteractive = false,\n twClassName,\n style,\n startAccessory,\n endAccessory,\n accessoryGap = 0,\n variant = ContentVariant.TwoLines,\n avatar,\n title,\n titleProps,\n titleStartAccessory,\n titleEndAccessory,\n description,\n descriptionProps,\n descriptionStartAccessory,\n descriptionEndAccessory,\n value,\n valueProps,\n valueStartAccessory,\n valueEndAccessory,\n subvalue,\n subvalueProps,\n subvalueStartAccessory,\n subvalueEndAccessory,\n accessibilityRole,\n ...props\n}) => {\n const tw = useTailwind();\n const isMultiLine = variant === ContentVariant.MultiLine;\n let rootSizeClassName = 'min-h-[72px] justify-center';\n if (variant === ContentVariant.OneLine) {\n rootSizeClassName = 'min-h-[48px] justify-center';\n } else if (isMultiLine) {\n rootSizeClassName = 'min-h-[88px] justify-start';\n }\n const accessoryAlignItems = isMultiLine\n ? BoxAlignItems.Start\n : BoxAlignItems.Center;\n\n const rootBaseClassName = mergeTwClassName(\n 'w-full px-4 py-3',\n rootSizeClassName,\n );\n const rootTwClassName = mergeTwClassName(rootBaseClassName, twClassName);\n\n const wrapperStyle = style\n ? [tw.style(rootTwClassName), style]\n : tw.style(rootTwClassName);\n\n const getPressableStyle = ({\n pressed,\n }: PressableStateCallbackType): StyleProp<ViewStyle> => {\n const baseStyle = tw.style(rootTwClassName, pressed && 'bg-pressed');\n\n if (!style) {\n return baseStyle;\n }\n\n const userStyle = typeof style === 'function' ? style({ pressed }) : style;\n\n return [baseStyle, userStyle];\n };\n\n const hasRowAccessories = Boolean(startAccessory) || Boolean(endAccessory);\n\n const content = (\n <Content\n twClassName={hasRowAccessories ? 'flex-1 min-w-0' : undefined}\n variant={variant}\n avatar={avatar}\n title={title}\n titleProps={titleProps}\n titleStartAccessory={titleStartAccessory}\n titleEndAccessory={titleEndAccessory}\n description={description}\n descriptionProps={descriptionProps}\n descriptionStartAccessory={descriptionStartAccessory}\n descriptionEndAccessory={descriptionEndAccessory}\n value={value}\n valueProps={valueProps}\n valueStartAccessory={valueStartAccessory}\n valueEndAccessory={valueEndAccessory}\n subvalue={subvalue}\n subvalueProps={subvalueProps}\n subvalueStartAccessory={subvalueStartAccessory}\n subvalueEndAccessory={subvalueEndAccessory}\n />\n );\n\n const listContent = hasRowAccessories ? (\n <BoxRow\n startAccessory={startAccessory}\n endAccessory={endAccessory}\n alignItems={accessoryAlignItems}\n gap={accessoryGap}\n >\n {content}\n </BoxRow>\n ) : (\n content\n );\n\n if (isInteractive) {\n return (\n <Pressable\n accessibilityRole={accessibilityRole ?? 'button'}\n style={getPressableStyle}\n {...props}\n >\n {listContent}\n {children}\n </Pressable>\n );\n }\n\n return (\n <Box style={wrapperStyle} {...props}>\n {listContent}\n {children}\n </Box>\n );\n};\n\nListItem.displayName = 'ListItem';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.d.cts","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ListItem.d.cts","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc;AAY1B,OAAO,KAAK,EAAE,aAAa,EAAE,6BAAyB;AAEtD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2H5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.d.mts","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ListItem.d.mts","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,cAAc;AAY1B,OAAO,KAAK,EAAE,aAAa,EAAE,6BAAyB;AAEtD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA2H5C,CAAC"}
|
|
@@ -4,7 +4,7 @@ function $importDefault(module) {
|
|
|
4
4
|
}
|
|
5
5
|
return module;
|
|
6
6
|
}
|
|
7
|
-
import {
|
|
7
|
+
import { BoxAlignItems, ContentVariant, mergeTwClassName } from "@metamask/design-system-shared";
|
|
8
8
|
import { useTailwind } from "@metamask/design-system-twrnc-preset";
|
|
9
9
|
import $React from "react";
|
|
10
10
|
const React = $importDefault($React);
|
|
@@ -12,14 +12,26 @@ import { Pressable } from "react-native";
|
|
|
12
12
|
import { Box } from "../Box/index.mjs";
|
|
13
13
|
import { BoxRow } from "../BoxRow/index.mjs";
|
|
14
14
|
import { Content } from "../Content/index.mjs";
|
|
15
|
-
|
|
16
|
-
export const ListItem = ({ children, isInteractive = false, twClassName, style, startAccessory, endAccessory, accessoryGap = 0, verticalAlignment, avatar, title, titleProps, titleStartAccessory, titleEndAccessory, description, descriptionProps, descriptionStartAccessory, descriptionEndAccessory, value, valueProps, valueStartAccessory, valueEndAccessory, subvalue, subvalueProps, subvalueStartAccessory, subvalueEndAccessory, accessibilityRole, ...props }) => {
|
|
15
|
+
export const ListItem = ({ children, isInteractive = false, twClassName, style, startAccessory, endAccessory, accessoryGap = 0, variant = ContentVariant.TwoLines, avatar, title, titleProps, titleStartAccessory, titleEndAccessory, description, descriptionProps, descriptionStartAccessory, descriptionEndAccessory, value, valueProps, valueStartAccessory, valueEndAccessory, subvalue, subvalueProps, subvalueStartAccessory, subvalueEndAccessory, accessibilityRole, ...props }) => {
|
|
17
16
|
const tw = useTailwind();
|
|
17
|
+
const isMultiLine = variant === ContentVariant.MultiLine;
|
|
18
|
+
let rootSizeClassName = 'min-h-[72px] justify-center';
|
|
19
|
+
if (variant === ContentVariant.OneLine) {
|
|
20
|
+
rootSizeClassName = 'min-h-[48px] justify-center';
|
|
21
|
+
}
|
|
22
|
+
else if (isMultiLine) {
|
|
23
|
+
rootSizeClassName = 'min-h-[88px] justify-start';
|
|
24
|
+
}
|
|
25
|
+
const accessoryAlignItems = isMultiLine
|
|
26
|
+
? BoxAlignItems.Start
|
|
27
|
+
: BoxAlignItems.Center;
|
|
28
|
+
const rootBaseClassName = mergeTwClassName('w-full px-4 py-3', rootSizeClassName);
|
|
29
|
+
const rootTwClassName = mergeTwClassName(rootBaseClassName, twClassName);
|
|
18
30
|
const wrapperStyle = style
|
|
19
|
-
? [tw.style(
|
|
20
|
-
: tw.style(
|
|
31
|
+
? [tw.style(rootTwClassName), style]
|
|
32
|
+
: tw.style(rootTwClassName);
|
|
21
33
|
const getPressableStyle = ({ pressed, }) => {
|
|
22
|
-
const baseStyle = tw.style(
|
|
34
|
+
const baseStyle = tw.style(rootTwClassName, pressed && 'bg-pressed');
|
|
23
35
|
if (!style) {
|
|
24
36
|
return baseStyle;
|
|
25
37
|
}
|
|
@@ -27,9 +39,8 @@ export const ListItem = ({ children, isInteractive = false, twClassName, style,
|
|
|
27
39
|
return [baseStyle, userStyle];
|
|
28
40
|
};
|
|
29
41
|
const hasRowAccessories = Boolean(startAccessory) || Boolean(endAccessory);
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const listContent = hasRowAccessories ? (<BoxRow startAccessory={startAccessory} endAccessory={endAccessory} alignItems={rowAlignment} gap={accessoryGap} twClassName="min-h-[46px] w-full">
|
|
42
|
+
const content = (<Content twClassName={hasRowAccessories ? 'flex-1 min-w-0' : undefined} variant={variant} avatar={avatar} title={title} titleProps={titleProps} titleStartAccessory={titleStartAccessory} titleEndAccessory={titleEndAccessory} description={description} descriptionProps={descriptionProps} descriptionStartAccessory={descriptionStartAccessory} descriptionEndAccessory={descriptionEndAccessory} value={value} valueProps={valueProps} valueStartAccessory={valueStartAccessory} valueEndAccessory={valueEndAccessory} subvalue={subvalue} subvalueProps={subvalueProps} subvalueStartAccessory={subvalueStartAccessory} subvalueEndAccessory={subvalueEndAccessory}/>);
|
|
43
|
+
const listContent = hasRowAccessories ? (<BoxRow startAccessory={startAccessory} endAccessory={endAccessory} alignItems={accessoryAlignItems} gap={accessoryGap}>
|
|
33
44
|
{content}
|
|
34
45
|
</BoxRow>) : (content);
|
|
35
46
|
if (isInteractive) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.mjs","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":";;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ListItem.mjs","sourceRoot":"","sources":["../../../src/components/ListItem/ListItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BoxAlignItems,\n ContentVariant,\n mergeTwClassName,\n} from '@metamask/design-system-shared';\nimport { useTailwind } from '@metamask/design-system-twrnc-preset';\nimport React from 'react';\nimport { Pressable } from 'react-native';\nimport type {\n PressableStateCallbackType,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport { Box } from '../Box';\nimport { BoxRow } from '../BoxRow';\nimport { Content } from '../Content';\n\nimport type { ListItemProps } from './ListItem.types';\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n isInteractive = false,\n twClassName,\n style,\n startAccessory,\n endAccessory,\n accessoryGap = 0,\n variant = ContentVariant.TwoLines,\n avatar,\n title,\n titleProps,\n titleStartAccessory,\n titleEndAccessory,\n description,\n descriptionProps,\n descriptionStartAccessory,\n descriptionEndAccessory,\n value,\n valueProps,\n valueStartAccessory,\n valueEndAccessory,\n subvalue,\n subvalueProps,\n subvalueStartAccessory,\n subvalueEndAccessory,\n accessibilityRole,\n ...props\n}) => {\n const tw = useTailwind();\n const isMultiLine = variant === ContentVariant.MultiLine;\n let rootSizeClassName = 'min-h-[72px] justify-center';\n if (variant === ContentVariant.OneLine) {\n rootSizeClassName = 'min-h-[48px] justify-center';\n } else if (isMultiLine) {\n rootSizeClassName = 'min-h-[88px] justify-start';\n }\n const accessoryAlignItems = isMultiLine\n ? BoxAlignItems.Start\n : BoxAlignItems.Center;\n\n const rootBaseClassName = mergeTwClassName(\n 'w-full px-4 py-3',\n rootSizeClassName,\n );\n const rootTwClassName = mergeTwClassName(rootBaseClassName, twClassName);\n\n const wrapperStyle = style\n ? [tw.style(rootTwClassName), style]\n : tw.style(rootTwClassName);\n\n const getPressableStyle = ({\n pressed,\n }: PressableStateCallbackType): StyleProp<ViewStyle> => {\n const baseStyle = tw.style(rootTwClassName, pressed && 'bg-pressed');\n\n if (!style) {\n return baseStyle;\n }\n\n const userStyle = typeof style === 'function' ? style({ pressed }) : style;\n\n return [baseStyle, userStyle];\n };\n\n const hasRowAccessories = Boolean(startAccessory) || Boolean(endAccessory);\n\n const content = (\n <Content\n twClassName={hasRowAccessories ? 'flex-1 min-w-0' : undefined}\n variant={variant}\n avatar={avatar}\n title={title}\n titleProps={titleProps}\n titleStartAccessory={titleStartAccessory}\n titleEndAccessory={titleEndAccessory}\n description={description}\n descriptionProps={descriptionProps}\n descriptionStartAccessory={descriptionStartAccessory}\n descriptionEndAccessory={descriptionEndAccessory}\n value={value}\n valueProps={valueProps}\n valueStartAccessory={valueStartAccessory}\n valueEndAccessory={valueEndAccessory}\n subvalue={subvalue}\n subvalueProps={subvalueProps}\n subvalueStartAccessory={subvalueStartAccessory}\n subvalueEndAccessory={subvalueEndAccessory}\n />\n );\n\n const listContent = hasRowAccessories ? (\n <BoxRow\n startAccessory={startAccessory}\n endAccessory={endAccessory}\n alignItems={accessoryAlignItems}\n gap={accessoryGap}\n >\n {content}\n </BoxRow>\n ) : (\n content\n );\n\n if (isInteractive) {\n return (\n <Pressable\n accessibilityRole={accessibilityRole ?? 'button'}\n style={getPressableStyle}\n {...props}\n >\n {listContent}\n {children}\n </Pressable>\n );\n }\n\n return (\n <Box style={wrapperStyle} {...props}>\n {listContent}\n {children}\n </Box>\n );\n};\n\nListItem.displayName = 'ListItem';\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var design_system_shared_1 = require("@metamask/design-system-shared");
|
|
5
|
-
Object.defineProperty(exports, "ListItemVerticalAlignment", { enumerable: true, get: function () { return design_system_shared_1.ContentVerticalAlignment; } });
|
|
3
|
+
exports.ListItemVariant = exports.ListItem = void 0;
|
|
6
4
|
var ListItem_1 = require("./ListItem.cjs");
|
|
7
5
|
Object.defineProperty(exports, "ListItem", { enumerable: true, get: function () { return ListItem_1.ListItem; } });
|
|
6
|
+
var design_system_shared_1 = require("@metamask/design-system-shared");
|
|
7
|
+
Object.defineProperty(exports, "ListItemVariant", { enumerable: true, get: function () { return design_system_shared_1.ContentVariant; } });
|
|
8
8
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,uEAAmF;AAA1E,uHAAA,cAAc,OAAmB","sourcesContent":["export { ListItem } from './ListItem';\nexport { ContentVariant as ListItemVariant } from '@metamask/design-system-shared';\nexport type { ListItemProps } from './ListItem.types';\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ContentVerticalAlignment as ListItemVerticalAlignment } from "@metamask/design-system-shared";
|
|
2
1
|
export { ListItem } from "./ListItem.cjs";
|
|
2
|
+
export { ContentVariant as ListItemVariant } from "@metamask/design-system-shared";
|
|
3
3
|
export type { ListItemProps } from "./ListItem.types.cjs";
|
|
4
4
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAmB;AACtC,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,uCAAuC;AACnF,YAAY,EAAE,aAAa,EAAE,6BAAyB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ContentVerticalAlignment as ListItemVerticalAlignment } from "@metamask/design-system-shared";
|
|
2
1
|
export { ListItem } from "./ListItem.mjs";
|
|
2
|
+
export { ContentVariant as ListItemVariant } from "@metamask/design-system-shared";
|
|
3
3
|
export type { ListItemProps } from "./ListItem.types.mjs";
|
|
4
4
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAmB;AACtC,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,uCAAuC;AACnF,YAAY,EAAE,aAAa,EAAE,6BAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/components/ListItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,uBAAmB;AACtC,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,uCAAuC","sourcesContent":["export { ListItem } from './ListItem';\nexport { ContentVariant as ListItemVariant } from '@metamask/design-system-shared';\nexport type { ListItemProps } from './ListItem.types';\n"]}
|
|
@@ -38,9 +38,20 @@ const Text_1 = require("../Text/index.cjs");
|
|
|
38
38
|
const Slider_constants_1 = require("./Slider.constants.cjs");
|
|
39
39
|
const Slider_utilities_1 = require("./Slider.utilities.cjs");
|
|
40
40
|
const useSliderGesture_1 = require("./useSliderGesture.cjs");
|
|
41
|
-
const Slider = ({ value, onValueChange, onDragEnd, minimumValue = 0, maximumValue = 100, step = 1, isDisabled = false, testID,
|
|
41
|
+
const Slider = ({ value, onValueChange, onDragEnd, minimumValue = 0, maximumValue = 100, step = 1, isDisabled = false, testID, marks = Slider_constants_1.DEFAULT_MARKS, showRangeLabels = false, showRangeDots = false, onGrip, onMark, mapValueToTrackPercent, mapTrackPercentToValue, trackInset = Slider_constants_1.SLIDER_TRACK_INSET, twClassName, style, ...props }) => {
|
|
42
42
|
const tw = (0, design_system_twrnc_preset_1.useTailwind)();
|
|
43
|
-
const
|
|
43
|
+
const theme = (0, design_system_twrnc_preset_1.useTheme)();
|
|
44
|
+
const isPureBlack = (0, design_system_twrnc_preset_1.usePureBlack)();
|
|
45
|
+
const palette = (0, react_1.useMemo)(() => (0, design_system_twrnc_preset_1.getThemeColors)(theme, isPureBlack), [isPureBlack, theme]);
|
|
46
|
+
const themedColors = (0, react_1.useMemo)(() => {
|
|
47
|
+
const hasThemedColors = (0, Slider_utilities_1.hasThemedMarkColors)(marks);
|
|
48
|
+
return {
|
|
49
|
+
hasThemedColors,
|
|
50
|
+
fillColorStops: (0, Slider_utilities_1.buildColorStops)(marks, palette, design_system_shared_1.SliderMarkColor.IconAlternative),
|
|
51
|
+
thumbColorStops: (0, Slider_utilities_1.buildColorStops)(marks, palette, design_system_shared_1.SliderMarkColor.IconDefault),
|
|
52
|
+
};
|
|
53
|
+
}, [palette, marks]);
|
|
54
|
+
const labeledMarks = (0, react_1.useMemo)(() => marks.filter((mark) => mark.label !== undefined), [marks]);
|
|
44
55
|
const { handleLayout, progressStyle, thumbStyle, gesture, handlePressStep } = (0, useSliderGesture_1.useSliderGesture)({
|
|
45
56
|
value,
|
|
46
57
|
minimumValue,
|
|
@@ -50,11 +61,13 @@ const Slider = ({ value, onValueChange, onDragEnd, minimumValue = 0, maximumValu
|
|
|
50
61
|
onValueChange,
|
|
51
62
|
onDragEnd,
|
|
52
63
|
onGrip,
|
|
53
|
-
|
|
54
|
-
|
|
64
|
+
onMark,
|
|
65
|
+
marks,
|
|
66
|
+
fillColorStops: themedColors.fillColorStops,
|
|
67
|
+
thumbColorStops: themedColors.thumbColorStops,
|
|
68
|
+
hasThemedColors: themedColors.hasThemedColors,
|
|
55
69
|
mapValueToTrackPercent,
|
|
56
70
|
mapTrackPercentToValue,
|
|
57
|
-
stepToValue: stepToValueProp,
|
|
58
71
|
});
|
|
59
72
|
const getAccessibilityText = (0, react_1.useCallback)(() => {
|
|
60
73
|
const trackPercent = Math.round((0, Slider_utilities_1.getTrackPercentFromValue)(value, minimumValue, maximumValue, mapValueToTrackPercent));
|
|
@@ -96,17 +109,17 @@ const Slider = ({ value, onValueChange, onDragEnd, minimumValue = 0, maximumValu
|
|
|
96
109
|
<react_native_reanimated_1.default.View style={[tw.style('relative'), { height: Slider_constants_1.THUMB_BOTTOM_OFFSET }]}>
|
|
97
110
|
<react_native_reanimated_1.default.View style={tw.style('absolute left-0 top-0 h-2 w-full rounded-full bg-border-muted')}/>
|
|
98
111
|
<react_native_reanimated_1.default.View style={[
|
|
99
|
-
tw.style('absolute left-0 top-0 h-2 rounded-full bg-icon-alternative'),
|
|
112
|
+
tw.style('absolute left-0 top-0 h-2 rounded-full', !themedColors.hasThemedColors && 'bg-icon-alternative'),
|
|
100
113
|
progressStyle,
|
|
101
114
|
]}/>
|
|
102
115
|
{showRangeDots &&
|
|
103
|
-
|
|
104
|
-
left: (0, Slider_utilities_1.getDotLeftPercent)(
|
|
116
|
+
marks.map((mark) => (<Box_1.Box key={`dot-${mark.step}`} pointerEvents="none" twClassName="absolute top-0.5 h-1 w-1 rounded-full bg-text-muted" style={{
|
|
117
|
+
left: (0, Slider_utilities_1.getDotLeftPercent)(mark.step),
|
|
105
118
|
transform: [{ translateX: -2 }],
|
|
106
119
|
zIndex: -2,
|
|
107
120
|
}}/>))}
|
|
108
121
|
<react_native_reanimated_1.default.View style={[
|
|
109
|
-
tw.style('absolute rounded-full bg-icon-default'),
|
|
122
|
+
tw.style('absolute rounded-full', !themedColors.hasThemedColors && 'bg-icon-default'),
|
|
110
123
|
{
|
|
111
124
|
width: Slider_constants_1.THUMB_SIZE,
|
|
112
125
|
height: Slider_constants_1.THUMB_SIZE,
|
|
@@ -120,16 +133,16 @@ const Slider = ({ value, onValueChange, onDragEnd, minimumValue = 0, maximumValu
|
|
|
120
133
|
</react_native_gesture_handler_1.GestureDetector>
|
|
121
134
|
|
|
122
135
|
{showRangeLabels &&
|
|
123
|
-
|
|
136
|
+
labeledMarks.map((mark) => (<react_native_1.Pressable key={`label-${mark.step}`} style={[
|
|
124
137
|
tw.style('absolute items-center'),
|
|
125
138
|
{
|
|
126
139
|
top: Slider_constants_1.RANGE_LABEL_TOP,
|
|
127
|
-
left: (0, Slider_utilities_1.getDotLeftPercent)(
|
|
140
|
+
left: (0, Slider_utilities_1.getDotLeftPercent)(mark.step),
|
|
128
141
|
transform: [{ translateX: '-50%' }],
|
|
129
142
|
},
|
|
130
|
-
]} onPress={() => handlePressStep(
|
|
143
|
+
]} onPress={() => handlePressStep(mark.step)} disabled={isDisabled} accessibilityRole="button">
|
|
131
144
|
<Text_1.Text variant={design_system_shared_1.TextVariant.BodyMd} fontWeight={design_system_shared_1.FontWeight.Medium} color={design_system_shared_1.TextColor.TextAlternative}>
|
|
132
|
-
{
|
|
145
|
+
{mark.label}
|
|
133
146
|
</Text_1.Text>
|
|
134
147
|
</react_native_1.Pressable>))}
|
|
135
148
|
</Box_1.Box>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.cjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FontWeight,\n TextColor,\n TextVariant,\n} from '@metamask/design-system-shared';\nimport { useTailwind } from '@metamask/design-system-twrnc-preset';\nimport React, { useCallback } from 'react';\nimport { AccessibilityActionEvent, Pressable } from 'react-native';\nimport type { ViewStyle } from 'react-native';\nimport { GestureDetector } from 'react-native-gesture-handler';\nimport Animated from 'react-native-reanimated';\n\nimport { Box } from '../Box';\nimport { Text } from '../Text';\n\nimport {\n DEFAULT_RANGE_LABEL_STEPS,\n DEFAULT_TICK_THRESHOLDS,\n RANGE_LABEL_TOP,\n SLIDER_BOTTOM_PADDING,\n SLIDER_TRACK_INSET,\n THUMB_BOTTOM_OFFSET,\n THUMB_LEFT_OFFSET,\n THUMB_SIZE,\n THUMB_TOP_OFFSET,\n} from './Slider.constants';\nimport type { SliderProps } from './Slider.types';\nimport {\n clampValueToRange,\n defaultFormatStepLabel,\n getDotLeftPercent,\n getTrackPercentFromValue,\n} from './Slider.utilities';\nimport { useSliderGesture } from './useSliderGesture';\n\nexport const Slider = ({\n value,\n onValueChange,\n onDragEnd,\n minimumValue = 0,\n maximumValue = 100,\n step = 1,\n isDisabled = false,\n testID,\n rangeLabelSteps = DEFAULT_RANGE_LABEL_STEPS,\n showRangeLabels = false,\n showRangeDots = false,\n onGrip,\n onTick,\n tickThresholds = DEFAULT_TICK_THRESHOLDS,\n mapValueToTrackPercent,\n mapTrackPercentToValue,\n formatStepLabel,\n stepToValue: stepToValueProp,\n trackInset = SLIDER_TRACK_INSET,\n twClassName,\n style,\n ...props\n}: SliderProps) => {\n const tw = useTailwind();\n\n const formatLabel = formatStepLabel ?? defaultFormatStepLabel;\n\n const { handleLayout, progressStyle, thumbStyle, gesture, handlePressStep } =\n useSliderGesture({\n value,\n minimumValue,\n maximumValue,\n step,\n isDisabled,\n onValueChange,\n onDragEnd,\n onGrip,\n onTick,\n tickThresholds,\n mapValueToTrackPercent,\n mapTrackPercentToValue,\n stepToValue: stepToValueProp,\n });\n\n const getAccessibilityText = useCallback(() => {\n const trackPercent = Math.round(\n getTrackPercentFromValue(\n value,\n minimumValue,\n maximumValue,\n mapValueToTrackPercent,\n ),\n );\n return `${trackPercent}%`;\n }, [mapValueToTrackPercent, maximumValue, minimumValue, value]);\n\n const handleAccessibilityAction = useCallback(\n (event: AccessibilityActionEvent) => {\n if (isDisabled) {\n return;\n }\n\n const delta = event.nativeEvent.actionName === 'increment' ? step : -step;\n const nextValue = clampValueToRange(\n value + delta,\n minimumValue,\n maximumValue,\n step,\n );\n\n if (nextValue !== value) {\n onValueChange(nextValue);\n onDragEnd?.(nextValue);\n }\n },\n [\n isDisabled,\n maximumValue,\n minimumValue,\n onDragEnd,\n onValueChange,\n step,\n value,\n ],\n );\n\n return (\n <Box\n {...props}\n testID={testID}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled: isDisabled }}\n accessibilityValue={{\n min: minimumValue,\n max: maximumValue,\n now: value,\n text: getAccessibilityText(),\n }}\n accessibilityActions={[{ name: 'increment' }, { name: 'decrement' }]}\n onAccessibilityAction={handleAccessibilityAction}\n onLayout={handleLayout}\n style={[\n tw.style(\n 'relative self-stretch',\n isDisabled ? 'py-2 opacity-40' : 'py-2',\n ),\n {\n marginHorizontal: trackInset,\n ...(showRangeLabels && { paddingBottom: SLIDER_BOTTOM_PADDING }),\n },\n style,\n ]}\n twClassName={twClassName}\n >\n <GestureDetector gesture={gesture}>\n <Animated.View\n style={[tw.style('relative'), { height: THUMB_BOTTOM_OFFSET }]}\n >\n <Animated.View\n style={tw.style(\n 'absolute left-0 top-0 h-2 w-full rounded-full bg-border-muted',\n )}\n />\n <Animated.View\n style={[\n tw.style(\n 'absolute left-0 top-0 h-2 rounded-full bg-icon-alternative',\n ),\n progressStyle,\n ]}\n />\n {showRangeDots &&\n rangeLabelSteps.map((rangeStep) => (\n <Box\n key={`dot-${rangeStep}`}\n pointerEvents=\"none\"\n twClassName=\"absolute top-0.5 h-1 w-1 rounded-full bg-text-muted\"\n style={{\n left: getDotLeftPercent(rangeStep) as ViewStyle['left'],\n transform: [{ translateX: -2 }],\n zIndex: -2,\n }}\n />\n ))}\n <Animated.View\n style={[\n tw.style('absolute rounded-full bg-icon-default'),\n {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n top: THUMB_TOP_OFFSET,\n left: THUMB_LEFT_OFFSET,\n elevation: 4,\n },\n thumbStyle,\n ]}\n hitSlop={{ top: 25, bottom: 25, left: 25, right: 25 }}\n />\n </Animated.View>\n </GestureDetector>\n\n {showRangeLabels &&\n rangeLabelSteps.map((rangeStep) => (\n <Pressable\n key={`label-${rangeStep}`}\n style={[\n tw.style('absolute items-center'),\n {\n top: RANGE_LABEL_TOP,\n left: getDotLeftPercent(rangeStep) as ViewStyle['left'],\n transform: [{ translateX: '-50%' }],\n },\n ]}\n onPress={() => handlePressStep(rangeStep)}\n disabled={isDisabled}\n accessibilityRole=\"button\"\n >\n <Text\n variant={TextVariant.BodyMd}\n fontWeight={FontWeight.Medium}\n color={TextColor.TextAlternative}\n >\n {formatLabel(rangeStep)}\n </Text>\n </Pressable>\n ))}\n </Box>\n );\n};\n\nSlider.displayName = 'Slider';\n"]}
|
|
1
|
+
{"version":3,"file":"Slider.cjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FontWeight,\n TextColor,\n TextVariant,\n SliderMarkColor,\n} from '@metamask/design-system-shared';\nimport {\n getThemeColors,\n usePureBlack,\n useTailwind,\n useTheme,\n} from '@metamask/design-system-twrnc-preset';\nimport React, { useCallback, useMemo } from 'react';\nimport { AccessibilityActionEvent, Pressable } from 'react-native';\nimport type { ViewStyle } from 'react-native';\nimport { GestureDetector } from 'react-native-gesture-handler';\nimport Animated from 'react-native-reanimated';\n\nimport { Box } from '../Box';\nimport { Text } from '../Text';\n\nimport {\n DEFAULT_MARKS,\n RANGE_LABEL_TOP,\n SLIDER_BOTTOM_PADDING,\n SLIDER_TRACK_INSET,\n THUMB_BOTTOM_OFFSET,\n THUMB_LEFT_OFFSET,\n THUMB_SIZE,\n THUMB_TOP_OFFSET,\n} from './Slider.constants';\nimport type { SliderProps } from './Slider.types';\nimport {\n buildColorStops,\n clampValueToRange,\n getDotLeftPercent,\n getTrackPercentFromValue,\n hasThemedMarkColors,\n} from './Slider.utilities';\nimport { useSliderGesture } from './useSliderGesture';\n\nexport const Slider = ({\n value,\n onValueChange,\n onDragEnd,\n minimumValue = 0,\n maximumValue = 100,\n step = 1,\n isDisabled = false,\n testID,\n marks = DEFAULT_MARKS,\n showRangeLabels = false,\n showRangeDots = false,\n onGrip,\n onMark,\n mapValueToTrackPercent,\n mapTrackPercentToValue,\n trackInset = SLIDER_TRACK_INSET,\n twClassName,\n style,\n ...props\n}: SliderProps) => {\n const tw = useTailwind();\n const theme = useTheme();\n const isPureBlack = usePureBlack();\n\n const palette = useMemo(\n () => getThemeColors(theme, isPureBlack),\n [isPureBlack, theme],\n );\n\n const themedColors = useMemo(() => {\n const hasThemedColors = hasThemedMarkColors(marks);\n\n return {\n hasThemedColors,\n fillColorStops: buildColorStops(\n marks,\n palette,\n SliderMarkColor.IconAlternative,\n ),\n thumbColorStops: buildColorStops(\n marks,\n palette,\n SliderMarkColor.IconDefault,\n ),\n };\n }, [palette, marks]);\n\n const labeledMarks = useMemo(\n () => marks.filter((mark) => mark.label !== undefined),\n [marks],\n );\n\n const { handleLayout, progressStyle, thumbStyle, gesture, handlePressStep } =\n useSliderGesture({\n value,\n minimumValue,\n maximumValue,\n step,\n isDisabled,\n onValueChange,\n onDragEnd,\n onGrip,\n onMark,\n marks,\n fillColorStops: themedColors.fillColorStops,\n thumbColorStops: themedColors.thumbColorStops,\n hasThemedColors: themedColors.hasThemedColors,\n mapValueToTrackPercent,\n mapTrackPercentToValue,\n });\n\n const getAccessibilityText = useCallback(() => {\n const trackPercent = Math.round(\n getTrackPercentFromValue(\n value,\n minimumValue,\n maximumValue,\n mapValueToTrackPercent,\n ),\n );\n return `${trackPercent}%`;\n }, [mapValueToTrackPercent, maximumValue, minimumValue, value]);\n\n const handleAccessibilityAction = useCallback(\n (event: AccessibilityActionEvent) => {\n if (isDisabled) {\n return;\n }\n\n const delta = event.nativeEvent.actionName === 'increment' ? step : -step;\n const nextValue = clampValueToRange(\n value + delta,\n minimumValue,\n maximumValue,\n step,\n );\n\n if (nextValue !== value) {\n onValueChange(nextValue);\n onDragEnd?.(nextValue);\n }\n },\n [\n isDisabled,\n maximumValue,\n minimumValue,\n onDragEnd,\n onValueChange,\n step,\n value,\n ],\n );\n\n return (\n <Box\n {...props}\n testID={testID}\n accessibilityRole=\"adjustable\"\n accessibilityState={{ disabled: isDisabled }}\n accessibilityValue={{\n min: minimumValue,\n max: maximumValue,\n now: value,\n text: getAccessibilityText(),\n }}\n accessibilityActions={[{ name: 'increment' }, { name: 'decrement' }]}\n onAccessibilityAction={handleAccessibilityAction}\n onLayout={handleLayout}\n style={[\n tw.style(\n 'relative self-stretch',\n isDisabled ? 'py-2 opacity-40' : 'py-2',\n ),\n {\n marginHorizontal: trackInset,\n ...(showRangeLabels && { paddingBottom: SLIDER_BOTTOM_PADDING }),\n },\n style,\n ]}\n twClassName={twClassName}\n >\n <GestureDetector gesture={gesture}>\n <Animated.View\n style={[tw.style('relative'), { height: THUMB_BOTTOM_OFFSET }]}\n >\n <Animated.View\n style={tw.style(\n 'absolute left-0 top-0 h-2 w-full rounded-full bg-border-muted',\n )}\n />\n <Animated.View\n style={[\n tw.style(\n 'absolute left-0 top-0 h-2 rounded-full',\n !themedColors.hasThemedColors && 'bg-icon-alternative',\n ),\n progressStyle,\n ]}\n />\n {showRangeDots &&\n marks.map((mark) => (\n <Box\n key={`dot-${mark.step}`}\n pointerEvents=\"none\"\n twClassName=\"absolute top-0.5 h-1 w-1 rounded-full bg-text-muted\"\n style={{\n left: getDotLeftPercent(mark.step) as ViewStyle['left'],\n transform: [{ translateX: -2 }],\n zIndex: -2,\n }}\n />\n ))}\n <Animated.View\n style={[\n tw.style(\n 'absolute rounded-full',\n !themedColors.hasThemedColors && 'bg-icon-default',\n ),\n {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n top: THUMB_TOP_OFFSET,\n left: THUMB_LEFT_OFFSET,\n elevation: 4,\n },\n thumbStyle,\n ]}\n hitSlop={{ top: 25, bottom: 25, left: 25, right: 25 }}\n />\n </Animated.View>\n </GestureDetector>\n\n {showRangeLabels &&\n labeledMarks.map((mark) => (\n <Pressable\n key={`label-${mark.step}`}\n style={[\n tw.style('absolute items-center'),\n {\n top: RANGE_LABEL_TOP,\n left: getDotLeftPercent(mark.step) as ViewStyle['left'],\n transform: [{ translateX: '-50%' }],\n },\n ]}\n onPress={() => handlePressStep(mark.step)}\n disabled={isDisabled}\n accessibilityRole=\"button\"\n >\n <Text\n variant={TextVariant.BodyMd}\n fontWeight={FontWeight.Medium}\n color={TextColor.TextAlternative}\n >\n {mark.label}\n </Text>\n </Pressable>\n ))}\n </Box>\n );\n};\n\nSlider.displayName = 'Slider';\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DEFAULT_MARKS = exports.DOT_EDGE_MAX_PERCENT = exports.DOT_EDGE_INSET_PERCENT = exports.SLIDER_TRACK_INSET = exports.SLIDER_BOTTOM_PADDING = exports.SLIDER_LABEL_LINE_HEIGHT = exports.RANGE_LABEL_TOP = exports.SLIDER_VERTICAL_PADDING = exports.THUMB_GRIP_ANIMATION_DURATION = exports.THUMB_GRIP_SCALE = exports.THUMB_TO_LABEL_GAP = exports.THUMB_BOTTOM_OFFSET = exports.THUMB_LEFT_OFFSET = exports.THUMB_TOP_OFFSET = exports.THUMB_SIZE = void 0;
|
|
4
4
|
/** Slider geometry and behavior defaults — not typography or spacing tokens. */
|
|
5
5
|
exports.THUMB_SIZE = 32;
|
|
6
6
|
exports.THUMB_TOP_OFFSET = -13;
|
|
@@ -31,6 +31,11 @@ exports.SLIDER_TRACK_INSET = Math.abs(exports.THUMB_LEFT_OFFSET);
|
|
|
31
31
|
*/
|
|
32
32
|
exports.DOT_EDGE_INSET_PERCENT = '2%';
|
|
33
33
|
exports.DOT_EDGE_MAX_PERCENT = '98%';
|
|
34
|
-
exports.
|
|
35
|
-
|
|
34
|
+
exports.DEFAULT_MARKS = [
|
|
35
|
+
{ step: 0, label: '0%', haptic: false },
|
|
36
|
+
{ step: 25, label: '25%', haptic: true },
|
|
37
|
+
{ step: 50, label: '50%', haptic: true },
|
|
38
|
+
{ step: 75, label: '75%', haptic: true },
|
|
39
|
+
{ step: 100, label: '100%', haptic: false },
|
|
40
|
+
];
|
|
36
41
|
//# sourceMappingURL=Slider.constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.constants.cjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Slider.constants.cjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":";;;AAEA,gFAAgF;AACnE,QAAA,UAAU,GAAG,EAAE,CAAC;AAChB,QAAA,gBAAgB,GAAG,CAAC,EAAE,CAAC;AACpC,6EAA6E;AAChE,QAAA,iBAAiB,GAAG,CAAC,EAAE,CAAC;AACxB,QAAA,mBAAmB,GAAG,wBAAgB,GAAG,kBAAU,CAAC;AACpD,QAAA,kBAAkB,GAAG,CAAC,CAAC;AACpC,6DAA6D;AAChD,QAAA,gBAAgB,GAAG,IAAI,CAAC;AACrC,iDAAiD;AACpC,QAAA,6BAA6B,GAAG,GAAG,CAAC;AACjD,oEAAoE;AACvD,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,eAAe,GAC1B,+BAAuB,GAAG,2BAAmB,GAAG,0BAAkB,CAAC;AACrE,uEAAuE;AAC1D,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAC3C,oFAAoF;AACvE,QAAA,qBAAqB,GAAG,uBAAe,GAAG,gCAAwB,CAAC;AAChF;;;GAGG;AACU,QAAA,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAiB,CAAC,CAAC;AAC9D;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAE7B,QAAA,aAAa,GAA0B;IAClD,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACvC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;CAC5C,CAAC","sourcesContent":["import type { SliderMark } from '@metamask/design-system-shared';\n\n/** Slider geometry and behavior defaults — not typography or spacing tokens. */\nexport const THUMB_SIZE = 32;\nexport const THUMB_TOP_OFFSET = -13;\n/** Negative offset so the thumb center aligns with the track start at 0%. */\nexport const THUMB_LEFT_OFFSET = -16;\nexport const THUMB_BOTTOM_OFFSET = THUMB_TOP_OFFSET + THUMB_SIZE;\nexport const THUMB_TO_LABEL_GAP = 8;\n/** Scale applied to the thumb while the user is dragging. */\nexport const THUMB_GRIP_SCALE = 1.12;\n/** Duration (ms) for thumb grip scale in/out. */\nexport const THUMB_GRIP_ANIMATION_DURATION = 100;\n/** Matches root `py-2` vertical padding on the slider container. */\nexport const SLIDER_VERTICAL_PADDING = 8;\nexport const RANGE_LABEL_TOP =\n SLIDER_VERTICAL_PADDING + THUMB_BOTTOM_OFFSET + THUMB_TO_LABEL_GAP;\n/** Approximate line height for BodyMd range labels below the track. */\nexport const SLIDER_LABEL_LINE_HEIGHT = 20;\n/** Bottom padding when range labels may render (RANGE_LABEL_TOP + label height). */\nexport const SLIDER_BOTTOM_PADDING = RANGE_LABEL_TOP + SLIDER_LABEL_LINE_HEIGHT;\n/**\n * Default horizontal inset on the root container; equals |THUMB_LEFT_OFFSET| so\n * the thumb can overhang at min/max without clipping.\n */\nexport const SLIDER_TRACK_INSET = Math.abs(THUMB_LEFT_OFFSET);\n/**\n * Edge marker inset (percent) so dots/labels at 0/100 stay on the visible track.\n * The thumb at 0% sits half its width (THUMB_SIZE / 2) left of the track start;\n * a small inset keeps edge markers from sitting under the thumb center.\n */\nexport const DOT_EDGE_INSET_PERCENT = '2%';\nexport const DOT_EDGE_MAX_PERCENT = '98%';\n\nexport const DEFAULT_MARKS: readonly SliderMark[] = [\n { step: 0, label: '0%', haptic: false },\n { step: 25, label: '25%', haptic: true },\n { step: 50, label: '50%', haptic: true },\n { step: 75, label: '75%', haptic: true },\n { step: 100, label: '100%', haptic: false },\n];\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SliderMark } from "@metamask/design-system-shared";
|
|
1
2
|
/** Slider geometry and behavior defaults — not typography or spacing tokens. */
|
|
2
3
|
export declare const THUMB_SIZE = 32;
|
|
3
4
|
export declare const THUMB_TOP_OFFSET = -13;
|
|
@@ -28,6 +29,5 @@ export declare const SLIDER_TRACK_INSET: number;
|
|
|
28
29
|
*/
|
|
29
30
|
export declare const DOT_EDGE_INSET_PERCENT = "2%";
|
|
30
31
|
export declare const DOT_EDGE_MAX_PERCENT = "98%";
|
|
31
|
-
export declare const
|
|
32
|
-
export declare const DEFAULT_TICK_THRESHOLDS: readonly [25, 50, 75];
|
|
32
|
+
export declare const DEFAULT_MARKS: readonly SliderMark[];
|
|
33
33
|
//# sourceMappingURL=Slider.constants.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.constants.d.cts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,mBAAmB,QAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,iDAAiD;AACjD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,eAAe,QACwC,CAAC;AACrE,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Slider.constants.d.cts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,uCAAuC;AAEjE,gFAAgF;AAChF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,mBAAmB,QAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,iDAAiD;AACjD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,eAAe,QACwC,CAAC;AACrE,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAM9C,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SliderMark } from "@metamask/design-system-shared";
|
|
1
2
|
/** Slider geometry and behavior defaults — not typography or spacing tokens. */
|
|
2
3
|
export declare const THUMB_SIZE = 32;
|
|
3
4
|
export declare const THUMB_TOP_OFFSET = -13;
|
|
@@ -28,6 +29,5 @@ export declare const SLIDER_TRACK_INSET: number;
|
|
|
28
29
|
*/
|
|
29
30
|
export declare const DOT_EDGE_INSET_PERCENT = "2%";
|
|
30
31
|
export declare const DOT_EDGE_MAX_PERCENT = "98%";
|
|
31
|
-
export declare const
|
|
32
|
-
export declare const DEFAULT_TICK_THRESHOLDS: readonly [25, 50, 75];
|
|
32
|
+
export declare const DEFAULT_MARKS: readonly SliderMark[];
|
|
33
33
|
//# sourceMappingURL=Slider.constants.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.constants.d.mts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,mBAAmB,QAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,iDAAiD;AACjD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,eAAe,QACwC,CAAC;AACrE,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Slider.constants.d.mts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,uCAAuC;AAEjE,gFAAgF;AAChF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,mBAAmB,QAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,iDAAiD;AACjD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,eAAe,QACwC,CAAC;AACrE,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,QAA6C,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAM9C,CAAC"}
|
|
@@ -28,6 +28,11 @@ export const SLIDER_TRACK_INSET = Math.abs(THUMB_LEFT_OFFSET);
|
|
|
28
28
|
*/
|
|
29
29
|
export const DOT_EDGE_INSET_PERCENT = '2%';
|
|
30
30
|
export const DOT_EDGE_MAX_PERCENT = '98%';
|
|
31
|
-
export const
|
|
32
|
-
|
|
31
|
+
export const DEFAULT_MARKS = [
|
|
32
|
+
{ step: 0, label: '0%', haptic: false },
|
|
33
|
+
{ step: 25, label: '25%', haptic: true },
|
|
34
|
+
{ step: 50, label: '50%', haptic: true },
|
|
35
|
+
{ step: 75, label: '75%', haptic: true },
|
|
36
|
+
{ step: 100, label: '100%', haptic: false },
|
|
37
|
+
];
|
|
33
38
|
//# sourceMappingURL=Slider.constants.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.constants.mjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.constants.mjs","sourceRoot":"","sources":["../../../src/components/Slider/Slider.constants.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,CAAC;AACpC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,UAAU,CAAC;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,iDAAiD;AACjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AACjD,oEAAoE;AACpE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAC1B,uBAAuB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AACrE,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,oFAAoF;AACpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,GAAG,wBAAwB,CAAC;AAChF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACvC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;CAC5C,CAAC","sourcesContent":["import type { SliderMark } from '@metamask/design-system-shared';\n\n/** Slider geometry and behavior defaults — not typography or spacing tokens. */\nexport const THUMB_SIZE = 32;\nexport const THUMB_TOP_OFFSET = -13;\n/** Negative offset so the thumb center aligns with the track start at 0%. */\nexport const THUMB_LEFT_OFFSET = -16;\nexport const THUMB_BOTTOM_OFFSET = THUMB_TOP_OFFSET + THUMB_SIZE;\nexport const THUMB_TO_LABEL_GAP = 8;\n/** Scale applied to the thumb while the user is dragging. */\nexport const THUMB_GRIP_SCALE = 1.12;\n/** Duration (ms) for thumb grip scale in/out. */\nexport const THUMB_GRIP_ANIMATION_DURATION = 100;\n/** Matches root `py-2` vertical padding on the slider container. */\nexport const SLIDER_VERTICAL_PADDING = 8;\nexport const RANGE_LABEL_TOP =\n SLIDER_VERTICAL_PADDING + THUMB_BOTTOM_OFFSET + THUMB_TO_LABEL_GAP;\n/** Approximate line height for BodyMd range labels below the track. */\nexport const SLIDER_LABEL_LINE_HEIGHT = 20;\n/** Bottom padding when range labels may render (RANGE_LABEL_TOP + label height). */\nexport const SLIDER_BOTTOM_PADDING = RANGE_LABEL_TOP + SLIDER_LABEL_LINE_HEIGHT;\n/**\n * Default horizontal inset on the root container; equals |THUMB_LEFT_OFFSET| so\n * the thumb can overhang at min/max without clipping.\n */\nexport const SLIDER_TRACK_INSET = Math.abs(THUMB_LEFT_OFFSET);\n/**\n * Edge marker inset (percent) so dots/labels at 0/100 stay on the visible track.\n * The thumb at 0% sits half its width (THUMB_SIZE / 2) left of the track start;\n * a small inset keeps edge markers from sitting under the thumb center.\n */\nexport const DOT_EDGE_INSET_PERCENT = '2%';\nexport const DOT_EDGE_MAX_PERCENT = '98%';\n\nexport const DEFAULT_MARKS: readonly SliderMark[] = [\n { step: 0, label: '0%', haptic: false },\n { step: 25, label: '25%', haptic: true },\n { step: 50, label: '50%', haptic: true },\n { step: 75, label: '75%', haptic: true },\n { step: 100, label: '100%', haptic: false },\n];\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { SliderProps } from "./Slider.types.cjs";
|
|
3
3
|
export declare const Slider: {
|
|
4
|
-
({ value, onValueChange, onDragEnd, minimumValue, maximumValue, step, isDisabled, testID,
|
|
4
|
+
({ value, onValueChange, onDragEnd, minimumValue, maximumValue, step, isDisabled, testID, marks, showRangeLabels, showRangeDots, onGrip, onMark, mapValueToTrackPercent, mapTrackPercentToValue, trackInset, twClassName, style, ...props }: SliderProps): React.JSX.Element;
|
|
5
5
|
displayName: string;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=Slider.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.d.cts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.d.cts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+B,cAAc;AAmBpD,OAAO,KAAK,EAAE,WAAW,EAAE,2BAAuB;AAUlD,eAAO,MAAM,MAAM;iPAoBhB,WAAW;;CAwMb,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { SliderProps } from "./Slider.types.mjs";
|
|
3
3
|
export declare const Slider: {
|
|
4
|
-
({ value, onValueChange, onDragEnd, minimumValue, maximumValue, step, isDisabled, testID,
|
|
4
|
+
({ value, onValueChange, onDragEnd, minimumValue, maximumValue, step, isDisabled, testID, marks, showRangeLabels, showRangeDots, onGrip, onMark, mapValueToTrackPercent, mapTrackPercentToValue, trackInset, twClassName, style, ...props }: SliderProps): React.JSX.Element;
|
|
5
5
|
displayName: string;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=Slider.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.d.mts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.d.mts","sourceRoot":"","sources":["../../../src/components/Slider/Slider.tsx"],"names":[],"mappings":"AAYA,OAAO,KAA+B,cAAc;AAmBpD,OAAO,KAAK,EAAE,WAAW,EAAE,2BAAuB;AAUlD,eAAO,MAAM,MAAM;iPAoBhB,WAAW;;CAwMb,CAAC"}
|