jfs-components 0.0.1 → 0.0.2
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/lib/commonjs/components/ActionFooter/ActionFooter.js +124 -0
- package/lib/commonjs/components/ActionFooter/ActionFooter.js.map +1 -0
- package/lib/commonjs/components/ActionFooter/ActionFooter.mdx +101 -0
- package/lib/commonjs/components/Button/Button.js +1 -1
- package/lib/commonjs/components/Button/Button.js.map +1 -1
- package/lib/commonjs/components/Button/Button.mdx +2 -2
- package/lib/commonjs/components/CardFeedback/CardFeedback.js +47 -11
- package/lib/commonjs/components/CardFeedback/CardFeedback.js.map +1 -1
- package/lib/commonjs/components/CardFeedback/CardFeedback.mdx +1 -0
- package/lib/commonjs/components/Divider/Divider.js +63 -0
- package/lib/commonjs/components/Divider/Divider.js.map +1 -0
- package/lib/commonjs/components/Divider/Divider.mdx +91 -0
- package/lib/commonjs/components/ListItem/ListItem.js +24 -13
- package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
- package/lib/commonjs/components/ListItem/ListItem.mdx +46 -5
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.js +133 -0
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.js.map +1 -0
- package/lib/commonjs/components/MerchantProfile/MerchantProfile.mdx +139 -0
- package/lib/commonjs/components/MoneyValue/MoneyValue.mdx +4 -0
- package/lib/commonjs/components/NavArrow/NavArrow.js +90 -0
- package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -0
- package/lib/commonjs/components/NavArrow/NavArrow.mdx +123 -0
- package/lib/commonjs/components/Section/Section.mdx +4 -4
- package/lib/commonjs/components/Stepper/Step.mdx +1 -1
- package/lib/commonjs/components/index.js +28 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/design-tokens/JFS Variables-variables-full.json +18633 -1
- package/lib/commonjs/design-tokens/figma-variables-resolver.js.map +1 -2
- package/lib/commonjs/icons/registry.js +1 -1
- package/lib/module/components/ActionFooter/ActionFooter.js +119 -0
- package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -0
- package/lib/module/components/ActionFooter/ActionFooter.mdx +101 -0
- package/lib/module/components/Button/Button.js +1 -1
- package/lib/module/components/Button/Button.js.map +1 -1
- package/lib/module/components/Button/Button.mdx +2 -2
- package/lib/module/components/CardFeedback/CardFeedback.js +46 -11
- package/lib/module/components/CardFeedback/CardFeedback.js.map +1 -1
- package/lib/module/components/CardFeedback/CardFeedback.mdx +1 -0
- package/lib/module/components/Divider/Divider.js +58 -0
- package/lib/module/components/Divider/Divider.js.map +1 -0
- package/lib/module/components/Divider/Divider.mdx +91 -0
- package/lib/module/components/ListItem/ListItem.js +24 -13
- package/lib/module/components/ListItem/ListItem.js.map +1 -1
- package/lib/module/components/ListItem/ListItem.mdx +46 -5
- package/lib/module/components/MerchantProfile/MerchantProfile.js +128 -0
- package/lib/module/components/MerchantProfile/MerchantProfile.js.map +1 -0
- package/lib/module/components/MerchantProfile/MerchantProfile.mdx +139 -0
- package/lib/module/components/MoneyValue/MoneyValue.mdx +4 -0
- package/lib/module/components/NavArrow/NavArrow.js +84 -0
- package/lib/module/components/NavArrow/NavArrow.js.map +1 -0
- package/lib/module/components/NavArrow/NavArrow.mdx +123 -0
- package/lib/module/components/Section/Section.mdx +4 -4
- package/lib/module/components/Stepper/Step.mdx +1 -1
- package/lib/module/components/index.js +4 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/design-tokens/JFS Variables-variables-full.json +18633 -1
- package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
- package/lib/module/design-tokens/figma-variables-resolver.js.map +2 -1
- package/lib/module/icons/registry.js +1 -1
- package/lib/typescript/components/ActionFooter/ActionFooter.d.ts +58 -0
- package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -0
- package/lib/typescript/components/CardFeedback/CardFeedback.d.ts +4 -3
- package/lib/typescript/components/CardFeedback/CardFeedback.d.ts.map +1 -1
- package/lib/typescript/components/Divider/Divider.d.ts +50 -0
- package/lib/typescript/components/Divider/Divider.d.ts.map +1 -0
- package/lib/typescript/components/ListItem/ListItem.d.ts +4 -3
- package/lib/typescript/components/ListItem/ListItem.d.ts.map +1 -1
- package/lib/typescript/components/MerchantProfile/MerchantProfile.d.ts +68 -0
- package/lib/typescript/components/MerchantProfile/MerchantProfile.d.ts.map +1 -0
- package/lib/typescript/components/NavArrow/NavArrow.d.ts +35 -0
- package/lib/typescript/components/NavArrow/NavArrow.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +4 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/icons/registry.d.ts +1 -1
- package/package.json +2 -2
- package/src/components/.token-metadata.json +99 -11
- package/src/components/ActionFooter/ActionFooter.mdx +101 -0
- package/src/components/ActionFooter/ActionFooter.tsx +142 -0
- package/src/components/Button/Button.mdx +2 -2
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/CardFeedback/CardFeedback.mdx +1 -0
- package/src/components/CardFeedback/CardFeedback.tsx +37 -12
- package/src/components/Divider/Divider.mdx +91 -0
- package/src/components/Divider/Divider.tsx +91 -0
- package/src/components/ListItem/ListItem.mdx +46 -5
- package/src/components/ListItem/ListItem.tsx +22 -11
- package/src/components/MerchantProfile/MerchantProfile.mdx +139 -0
- package/src/components/MerchantProfile/MerchantProfile.tsx +174 -0
- package/src/components/MoneyValue/MoneyValue.mdx +4 -0
- package/src/components/NavArrow/NavArrow.mdx +123 -0
- package/src/components/NavArrow/NavArrow.tsx +108 -0
- package/src/components/Section/Section.mdx +4 -4
- package/src/components/Stepper/Step.mdx +1 -1
- package/src/components/index.ts +4 -0
- package/src/design-tokens/JFS Variables-variables-full.json +18633 -1
- package/src/icons/registry.ts +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
/**
|
|
13
|
+
* ActionFooter component that provides a fixed footer container for action buttons.
|
|
14
|
+
*
|
|
15
|
+
* This component is designed to hold action items like IconButton and Button components
|
|
16
|
+
* at the bottom of a screen. It includes a shadow for visual separation from content above.
|
|
17
|
+
*
|
|
18
|
+
* The `modes` prop is automatically passed to all slot children. If a child has its own
|
|
19
|
+
* `modes` prop, it will be merged with the parent's modes (child modes take precedence).
|
|
20
|
+
*
|
|
21
|
+
* @component
|
|
22
|
+
* @param {Object} props - Component props
|
|
23
|
+
* @param {React.ReactNode} [props.children] - Action elements to display (e.g., IconButton, Button)
|
|
24
|
+
* @param {Object} [props.modes={}] - Mode configuration for design tokens (automatically passed to children)
|
|
25
|
+
* @param {Object} [props.style] - Optional style overrides
|
|
26
|
+
* @param {string} [props.accessibilityLabel] - Accessibility label for the footer region
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* // Basic usage - modes are automatically passed to all children
|
|
31
|
+
* <ActionFooter modes={modes}>
|
|
32
|
+
* <IconButton iconName="ic_split" />
|
|
33
|
+
* <Button label="Request" style={{ flex: 1 }} />
|
|
34
|
+
* <Button label="Pay" style={{ flex: 1 }} />
|
|
35
|
+
* </ActionFooter>
|
|
36
|
+
*
|
|
37
|
+
* // Children can override with their own modes (merged with parent)
|
|
38
|
+
* <ActionFooter modes={modes}>
|
|
39
|
+
* <IconButton iconName="ic_split" />
|
|
40
|
+
* <Button label="Request" modes={{ Appearance: 'secondary' }} style={{ flex: 1 }} />
|
|
41
|
+
* <Button label="Pay" modes={{ Appearance: 'primary' }} style={{ flex: 1 }} />
|
|
42
|
+
* </ActionFooter>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
function ActionFooter({
|
|
46
|
+
children,
|
|
47
|
+
modes = {},
|
|
48
|
+
style,
|
|
49
|
+
accessibilityLabel = 'Action footer'
|
|
50
|
+
}) {
|
|
51
|
+
// Resolve design tokens
|
|
52
|
+
const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('actionFooter/background', modes) ?? '#ffffff';
|
|
53
|
+
const gap = (0, _figmaVariablesResolver.getVariableByName)('actionFooter/gap', modes) ?? 8;
|
|
54
|
+
const paddingHorizontal = (0, _figmaVariablesResolver.getVariableByName)('actionFooter/padding/horizontal', modes) ?? 16;
|
|
55
|
+
const paddingTop = (0, _figmaVariablesResolver.getVariableByName)('actionFooter/padding/top', modes) ?? 10;
|
|
56
|
+
const paddingBottom = (0, _figmaVariablesResolver.getVariableByName)('actionFooter/padding/bottom', modes) ?? 41;
|
|
57
|
+
|
|
58
|
+
// Shadow styles - cross-platform
|
|
59
|
+
const shadowStyle = _reactNative.Platform.select({
|
|
60
|
+
ios: {
|
|
61
|
+
shadowColor: 'rgba(12, 13, 16, 1)',
|
|
62
|
+
shadowOffset: {
|
|
63
|
+
width: 0,
|
|
64
|
+
height: -12
|
|
65
|
+
},
|
|
66
|
+
shadowOpacity: 0.16,
|
|
67
|
+
shadowRadius: 24
|
|
68
|
+
},
|
|
69
|
+
android: {
|
|
70
|
+
elevation: 16
|
|
71
|
+
},
|
|
72
|
+
default: {
|
|
73
|
+
// Web shadow using boxShadow (RNW supports this)
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
const containerStyle = {
|
|
77
|
+
backgroundColor,
|
|
78
|
+
paddingLeft: paddingHorizontal,
|
|
79
|
+
paddingRight: paddingHorizontal,
|
|
80
|
+
paddingTop,
|
|
81
|
+
paddingBottom,
|
|
82
|
+
...shadowStyle
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// Slot container style for horizontal layout of action items
|
|
86
|
+
const slotStyle = {
|
|
87
|
+
flexDirection: 'row',
|
|
88
|
+
alignItems: 'flex-start',
|
|
89
|
+
gap,
|
|
90
|
+
flex: 1
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// Web-specific box-shadow
|
|
94
|
+
const webShadow = _reactNative.Platform.OS === 'web' ? {
|
|
95
|
+
boxShadow: '0px -12px 24px 0px rgba(12, 13, 16, 0.12), 0px -16px 48px 0px rgba(12, 13, 16, 0.16)'
|
|
96
|
+
} : {};
|
|
97
|
+
|
|
98
|
+
// Pass modes prop to all slot children
|
|
99
|
+
const childrenWithModes = _react.default.Children.map(children, child => {
|
|
100
|
+
if (/*#__PURE__*/_react.default.isValidElement(child)) {
|
|
101
|
+
// Merge modes: child's modes take precedence over parent's modes
|
|
102
|
+
const childModes = child.props.modes;
|
|
103
|
+
const mergedModes = childModes ? {
|
|
104
|
+
...modes,
|
|
105
|
+
...childModes
|
|
106
|
+
} : modes;
|
|
107
|
+
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
108
|
+
modes: mergedModes
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return child;
|
|
112
|
+
});
|
|
113
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
114
|
+
style: [containerStyle, webShadow, style],
|
|
115
|
+
accessibilityRole: "toolbar",
|
|
116
|
+
accessibilityLabel: accessibilityLabel,
|
|
117
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
118
|
+
style: slotStyle,
|
|
119
|
+
children: childrenWithModes
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
var _default = exports.default = ActionFooter;
|
|
124
|
+
//# sourceMappingURL=ActionFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","__esModule","default","ActionFooter","children","modes","style","accessibilityLabel","backgroundColor","getVariableByName","gap","paddingHorizontal","paddingTop","paddingBottom","shadowStyle","Platform","select","ios","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","android","elevation","containerStyle","paddingLeft","paddingRight","slotStyle","flexDirection","alignItems","flex","webShadow","OS","boxShadow","childrenWithModes","React","Children","map","child","isValidElement","childModes","props","mergedModes","cloneElement","jsx","View","accessibilityRole","_default","exports"],"sourceRoot":"../../../../src","sources":["components/ActionFooter/ActionFooter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as ActionFooterStories from './ActionFooter.stories';
|
|
3
|
+
import ActionFooter from './ActionFooter';
|
|
4
|
+
|
|
5
|
+
<Meta of={ActionFooterStories} />
|
|
6
|
+
|
|
7
|
+
# ActionFooter
|
|
8
|
+
|
|
9
|
+
A fixed footer container for action buttons. Typically used at the bottom of screens to hold primary actions like `IconButton` and `Button` components.
|
|
10
|
+
|
|
11
|
+
The ActionFooter provides consistent spacing, padding, and shadow styling for action areas at the bottom of your UI.
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
<ArgsTable of={ActionFooter} />
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Available Collections and Modes
|
|
19
|
+
|
|
20
|
+
This component does not use any design token collections with multiple modes.
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
The default configuration shows the typical use case with an IconButton and two Button components:
|
|
24
|
+
|
|
25
|
+
<Canvas>
|
|
26
|
+
<Story of={ActionFooterStories.Default} />
|
|
27
|
+
</Canvas>
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
### Single Button
|
|
32
|
+
|
|
33
|
+
For simple confirmation flows, use a single full-width button:
|
|
34
|
+
|
|
35
|
+
<Canvas>
|
|
36
|
+
<Story of={ActionFooterStories.SingleButton} />
|
|
37
|
+
</Canvas>
|
|
38
|
+
|
|
39
|
+
### Two Buttons
|
|
40
|
+
|
|
41
|
+
Common pattern for cancel/confirm actions:
|
|
42
|
+
|
|
43
|
+
<Canvas>
|
|
44
|
+
<Story of={ActionFooterStories.TwoButtons} />
|
|
45
|
+
</Canvas>
|
|
46
|
+
|
|
47
|
+
### With Multiple Icon Buttons
|
|
48
|
+
|
|
49
|
+
For screens requiring multiple secondary actions alongside a primary button:
|
|
50
|
+
|
|
51
|
+
<Canvas>
|
|
52
|
+
<Story of={ActionFooterStories.WithMultipleIconButtons} />
|
|
53
|
+
</Canvas>
|
|
54
|
+
|
|
55
|
+
## Component Usage
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
import { ActionFooter, IconButton, Button } from 'jsf-components';
|
|
59
|
+
|
|
60
|
+
function PaymentScreen() {
|
|
61
|
+
const modes = {};
|
|
62
|
+
const secondaryModes = { Appearance: 'secondary' };
|
|
63
|
+
const primaryModes = { Appearance: 'primary' };
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<View style={{ flex: 1 }}>
|
|
67
|
+
{/* Screen content */}
|
|
68
|
+
|
|
69
|
+
<ActionFooter modes={modes}>
|
|
70
|
+
<IconButton iconName="ic_split" modes={modes} />
|
|
71
|
+
<Button
|
|
72
|
+
label="Request"
|
|
73
|
+
modes={secondaryModes}
|
|
74
|
+
style={{ flex: 1 }}
|
|
75
|
+
/>
|
|
76
|
+
<Button
|
|
77
|
+
label="Pay"
|
|
78
|
+
modes={primaryModes}
|
|
79
|
+
style={{ flex: 1 }}
|
|
80
|
+
/>
|
|
81
|
+
</ActionFooter>
|
|
82
|
+
</View>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Design Tokens
|
|
88
|
+
|
|
89
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
90
|
+
|
|
91
|
+
- **`actionFooter/background`**
|
|
92
|
+
- **`actionFooter/gap`**
|
|
93
|
+
- **`actionFooter/padding/bottom`**
|
|
94
|
+
- **`actionFooter/padding/horizontal`**
|
|
95
|
+
- **`actionFooter/padding/top`**
|
|
96
|
+
|
|
97
|
+
All tokens support mode-based theming through the `modes` prop.
|
|
98
|
+
## Accessibility
|
|
99
|
+
|
|
100
|
+
The ActionFooter uses `accessibilityRole="toolbar"` to indicate it contains a group of action controls. Provide a meaningful `accessibilityLabel` to describe the footer's purpose to screen reader users.
|
|
101
|
+
|
|
@@ -59,7 +59,7 @@ function Button({
|
|
|
59
59
|
const fontWeight = typeof fontWeightValue === 'number' ? fontWeightValue.toString() : fontWeightValue;
|
|
60
60
|
const lineHeight = (0, _figmaVariablesResolver.getVariableByName)('button/lineHeight', modes) || 19;
|
|
61
61
|
const fontSize = (0, _figmaVariablesResolver.getVariableByName)('button/fontSize', modes) || 16;
|
|
62
|
-
const textColor = (0, _figmaVariablesResolver.getVariableByName)('button/
|
|
62
|
+
const textColor = (0, _figmaVariablesResolver.getVariableByName)('button/foreground', modes) || '#0f0d0a';
|
|
63
63
|
const baseLabelTextStyle = {
|
|
64
64
|
color: textColor,
|
|
65
65
|
fontFamily,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_figmaVariablesResolver","_webPlatformUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Button","label","children","renderContent","leading","trailing","modes","onPress","disabled","style","labelStyle","accessibilityLabel","accessibilityHint","accessibilityState","webAccessibilityProps","rest","backgroundColor","getVariableByName","borderColor","borderWidth","radius","paddingHorizontal","paddingVertical","gap","fontFamily","fontWeightValue","fontWeight","toString","lineHeight","fontSize","textColor","baseLabelTextStyle","color","mergedLabelTextStyle","content","undefined","jsx","Text","numberOfLines","containerBaseStyle","flexDirection","alignItems","justifyContent","borderRadius","opacity","accessoryOffset","leadingAccessoryStyle","useMemo","marginRight","trailingAccessoryStyle","marginLeft","defaultAccessibilityLabel","webProps","usePressableWebSupport","restProps","isFocused","setIsFocused","useState","isHovered","setIsHovered","pressedStyle","transform","scale","focusStyle","hoverStyle","__DEV__","console","warn","jsxs","Pressable","accessibilityRole","onPressIn","onPressOut","onFocus","onBlur","onHoverIn","onHoverOut","pressed","View","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAA4H,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAsC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,MAAMA,CAAC;EACdC,KAAK,GAAG,QAAQ;EAChBC,QAAQ;EACRC,aAAa;EACbC,OAAO;EACPC,QAAQ;EACRC,KAAK,GAAG,CAAC,CAAC;EACVC,OAAO;EACPC,QAAQ,GAAG,KAAK;EAChBC,KAAK;EACLC,UAAU;EACVC,kBAAkB;EAClBC,iBAAiB;EACjBC,kBAAkB;EAClBC,qBAAqB;EACrB,GAAGC;AACQ,CAAC,EAAE;EACd;EACA,MAAMC,eAAe,GAAG,IAAAC,yCAAiB,EAAC,mBAAmB,EAAEX,KAAK,CAAC,IAAI,SAAS;EAClF,MAAMY,WAAW,GAAG,IAAAD,yCAAiB,EAAC,qBAAqB,EAAEX,KAAK,CAAC,IAAI,qBAAqB;EAC5F,MAAMa,WAAW,GAAG,IAAAF,yCAAiB,EAAC,oBAAoB,EAAEX,KAAK,CAAC;EAClE,MAAMc,MAAM,GAAG,IAAAH,yCAAiB,EAAC,eAAe,EAAEX,KAAK,CAAC,IAAI,IAAI;EAChE,MAAMe,iBAAiB,GAAG,IAAAJ,yCAAiB,EAAC,2BAA2B,EAAEX,KAAK,CAAC,IAAI,EAAE;EACrF,MAAMgB,eAAe,GAAG,IAAAL,yCAAiB,EAAC,yBAAyB,EAAEX,KAAK,CAAC,IAAI,EAAE;EACjF,MAAMiB,GAAG,GAAG,IAAAN,yCAAiB,EAAC,YAAY,EAAEX,KAAK,CAAC,IAAI,CAAC;EAEvD,MAAMkB,UAAU,GAAG,IAAAP,yCAAiB,EAAC,mBAAmB,EAAEX,KAAK,CAAC,IAAI,QAAQ;EAC5E,MAAMmB,eAAe,GAAG,IAAAR,yCAAiB,EAAC,mBAAmB,EAAEX,KAAK,CAAC,IAAI,GAAG;EAC5E,MAAMoB,UAAU,GAAG,OAAOD,eAAe,KAAK,QAAQ,GAAGA,eAAe,CAACE,QAAQ,CAAC,CAAC,GAAGF,eAAe;EACrG,MAAMG,UAAU,GAAG,IAAAX,yCAAiB,EAAC,mBAAmB,EAAEX,KAAK,CAAC,IAAI,EAAE;EACtE,MAAMuB,QAAQ,GAAG,IAAAZ,yCAAiB,EAAC,iBAAiB,EAAEX,KAAK,CAAC,IAAI,EAAE;EAClE,MAAMwB,SAAS,GAAG,IAAAb,yCAAiB,EAAC,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_figmaVariablesResolver","_webPlatformUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Button","label","children","renderContent","leading","trailing","modes","onPress","disabled","style","labelStyle","accessibilityLabel","accessibilityHint","accessibilityState","webAccessibilityProps","rest","backgroundColor","getVariableByName","borderColor","borderWidth","radius","paddingHorizontal","paddingVertical","gap","fontFamily","fontWeightValue","fontWeight","toString","lineHeight","fontSize","textColor","baseLabelTextStyle","color","mergedLabelTextStyle","content","undefined","jsx","Text","numberOfLines","containerBaseStyle","flexDirection","alignItems","justifyContent","borderRadius","opacity","accessoryOffset","leadingAccessoryStyle","useMemo","marginRight","trailingAccessoryStyle","marginLeft","defaultAccessibilityLabel","webProps","usePressableWebSupport","restProps","isFocused","setIsFocused","useState","isHovered","setIsHovered","pressedStyle","transform","scale","focusStyle","hoverStyle","__DEV__","console","warn","jsxs","Pressable","accessibilityRole","onPressIn","onPressOut","onFocus","onBlur","onHoverIn","onHoverOut","pressed","View","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Button/Button.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,7 +34,7 @@ This component uses the following design token collections. Each collection supp
|
|
|
34
34
|
- **Default:** positive
|
|
35
35
|
|
|
36
36
|
### Context
|
|
37
|
-
- **Modes:** Default | Nudge&Alert
|
|
37
|
+
- **Modes:** Default | Nudge&Alert | CTACard | ListItem
|
|
38
38
|
- **Default:** Default
|
|
39
39
|
|
|
40
40
|
### Button / Size
|
|
@@ -90,7 +90,7 @@ This component uses the following design tokens, resolved through `getVariableBy
|
|
|
90
90
|
- **`button/fontFamily`**
|
|
91
91
|
- **`button/fontSize`**
|
|
92
92
|
- **`button/fontWeight`**
|
|
93
|
-
- **`button/
|
|
93
|
+
- **`button/foreground`**
|
|
94
94
|
- **`button/gap`**
|
|
95
95
|
- **`button/lineHeight`**
|
|
96
96
|
- **`button/padding/horizontal`**
|
|
@@ -13,7 +13,9 @@ exports.default = void 0;
|
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _reactNative = require("react-native");
|
|
15
15
|
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
16
|
+
var _Icon = _interopRequireDefault(require("../../icons/Icon"));
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
19
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
18
20
|
/**
|
|
19
21
|
* Context to share 'modes' with child components.
|
|
@@ -25,9 +27,15 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
25
27
|
*/
|
|
26
28
|
function CardFeedback({
|
|
27
29
|
children,
|
|
28
|
-
modes
|
|
30
|
+
modes: propModes,
|
|
29
31
|
style
|
|
30
32
|
}) {
|
|
33
|
+
const modes = {
|
|
34
|
+
'Appearance.System': 'positive',
|
|
35
|
+
'Context': 'Nudge&Alert',
|
|
36
|
+
'Semantic Intent': 'System',
|
|
37
|
+
...propModes
|
|
38
|
+
};
|
|
31
39
|
// Container Tokens
|
|
32
40
|
const backgroundColor = (0, _figmaVariablesResolver.getVariableByName)('cardFeedback/background', modes) || '#dbf0d9';
|
|
33
41
|
const radius = parseFloat((0, _figmaVariablesResolver.getVariableByName)('cardFeedback/radius', modes) || '12');
|
|
@@ -62,19 +70,20 @@ function CardFeedback({
|
|
|
62
70
|
|
|
63
71
|
/**
|
|
64
72
|
* Icon Wrapper
|
|
65
|
-
* Tokens: cardFeedback/icon/size, cardFeedback/icon/color
|
|
73
|
+
* Tokens: cardFeedback/icon/size, appearanceFeedback/cardFeedback/icon/color
|
|
66
74
|
*/
|
|
67
75
|
function Icon({
|
|
68
76
|
children,
|
|
69
77
|
style,
|
|
70
|
-
modes: propModes
|
|
78
|
+
modes: propModes,
|
|
79
|
+
icon
|
|
71
80
|
}) {
|
|
72
81
|
const context = (0, _react.useContext)(CardFeedbackContext);
|
|
73
82
|
const modes = propModes || context.modes || {};
|
|
74
83
|
const size = parseFloat((0, _figmaVariablesResolver.getVariableByName)('cardFeedback/icon/size', modes) || '20');
|
|
75
|
-
// Color
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
// Color for the icon itself
|
|
85
|
+
const color = (0, _figmaVariablesResolver.getVariableByName)('appearanceFeedback/cardFeedback/icon/color', modes);
|
|
86
|
+
console.log(color);
|
|
78
87
|
const containerStyle = {
|
|
79
88
|
width: size,
|
|
80
89
|
height: size,
|
|
@@ -83,11 +92,25 @@ function Icon({
|
|
|
83
92
|
overflow: 'hidden'
|
|
84
93
|
};
|
|
85
94
|
|
|
86
|
-
//
|
|
87
|
-
|
|
95
|
+
// Pass modes to children (e.g., icon components that accept modes)
|
|
96
|
+
const childrenWithModes = _react.default.Children.map(children, child => {
|
|
97
|
+
if (/*#__PURE__*/(0, _react.isValidElement)(child)) {
|
|
98
|
+
return /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
99
|
+
modes: {
|
|
100
|
+
...child.props.modes,
|
|
101
|
+
...modes
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return child;
|
|
106
|
+
});
|
|
88
107
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
89
108
|
style: [containerStyle, style],
|
|
90
|
-
children:
|
|
109
|
+
children: icon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
110
|
+
name: icon,
|
|
111
|
+
size: size,
|
|
112
|
+
color: color
|
|
113
|
+
}) : childrenWithModes
|
|
91
114
|
});
|
|
92
115
|
}
|
|
93
116
|
|
|
@@ -104,12 +127,25 @@ function Content({
|
|
|
104
127
|
const context = (0, _react.useContext)(CardFeedbackContext);
|
|
105
128
|
const modes = propModes || context.modes || {};
|
|
106
129
|
const gap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('cardFeedback/text/gap', modes) || '8');
|
|
130
|
+
|
|
131
|
+
// Pass modes to children (Title, Body, etc.)
|
|
132
|
+
const childrenWithModes = _react.default.Children.map(children, child => {
|
|
133
|
+
if (/*#__PURE__*/(0, _react.isValidElement)(child)) {
|
|
134
|
+
return /*#__PURE__*/(0, _react.cloneElement)(child, {
|
|
135
|
+
modes: {
|
|
136
|
+
...child.props.modes,
|
|
137
|
+
...modes
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return child;
|
|
142
|
+
});
|
|
107
143
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
108
144
|
style: [{
|
|
109
145
|
gap,
|
|
110
146
|
width: '100%'
|
|
111
147
|
}, style],
|
|
112
|
-
children:
|
|
148
|
+
children: childrenWithModes
|
|
113
149
|
});
|
|
114
150
|
}
|
|
115
151
|
|
|
@@ -182,7 +218,7 @@ function Action({
|
|
|
182
218
|
}) {
|
|
183
219
|
const context = (0, _react.useContext)(CardFeedbackContext);
|
|
184
220
|
const modes = propModes || context.modes || {};
|
|
185
|
-
const gap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('cardFeedback/actionSlot/gap', modes) || '
|
|
221
|
+
const gap = parseFloat((0, _figmaVariablesResolver.getVariableByName)('cardFeedback/actionSlot/gap', modes) || '0');
|
|
186
222
|
|
|
187
223
|
// "Maximise existing component usage" -> Pass modes to children (Buttons)
|
|
188
224
|
const childrenWithModes = _react.default.Children.map(children, child => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","t","WeakMap","r","n","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_figmaVariablesResolver","_Icon","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CardFeedbackContext","createContext","CardFeedback","children","modes","propModes","style","backgroundColor","getVariableByName","radius","parseFloat","gap","paddingHorizontal","paddingVertical","containerStyle","borderRadius","minHeight","alignItems","flexDirection","jsx","Provider","value","View","Icon","icon","context","useContext","size","color","console","log","width","height","justifyContent","overflow","childrenWithModes","React","Children","map","child","isValidElement","cloneElement","props","name","Content","Title","fontSize","fontFamily","lineHeight","fontWeight","textStyle","Text","Body","Action","flexWrap","_default","exports"],"sourceRoot":"../../../../src","sources":["components/CardFeedback/CardFeedback.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -62,6 +62,7 @@ This component uses the following design token collections. Each collection supp
|
|
|
62
62
|
|
|
63
63
|
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
64
64
|
|
|
65
|
+
- **`appearanceFeedback/cardFeedback/icon/color`**
|
|
65
66
|
- **`cardFeedback/actionSlot/gap`**
|
|
66
67
|
- **`cardFeedback/background`**
|
|
67
68
|
- **`cardFeedback/body/color`**
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _figmaVariablesResolver = require("../../design-tokens/figma-variables-resolver");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
/**
|
|
13
|
+
* Divider component that renders a horizontal or vertical separator line.
|
|
14
|
+
*
|
|
15
|
+
* This component is used to visually separate content sections. It supports
|
|
16
|
+
* both horizontal and vertical orientations based on the `direction` prop.
|
|
17
|
+
*
|
|
18
|
+
* @component
|
|
19
|
+
* @param {Object} props - Component props
|
|
20
|
+
* @param {'horizontal' | 'vertical'} [props.direction='horizontal'] - Direction of the divider
|
|
21
|
+
* @param {Object} [props.modes={}] - Mode configuration for design tokens
|
|
22
|
+
* @param {Object} [props.style] - Optional style overrides
|
|
23
|
+
* @param {string} [props.accessibilityLabel] - Accessibility label for the divider
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* // Horizontal divider (default)
|
|
28
|
+
* <Divider />
|
|
29
|
+
*
|
|
30
|
+
* // Vertical divider
|
|
31
|
+
* <Divider direction="vertical" />
|
|
32
|
+
*
|
|
33
|
+
* // With custom modes
|
|
34
|
+
* <Divider modes={{ Appearance: 'dark' }} />
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function Divider({
|
|
38
|
+
direction = 'horizontal',
|
|
39
|
+
modes = {},
|
|
40
|
+
style,
|
|
41
|
+
accessibilityLabel = 'Divider'
|
|
42
|
+
}) {
|
|
43
|
+
// Resolve design tokens
|
|
44
|
+
const size = (0, _figmaVariablesResolver.getVariableByName)('divider/size', modes) ?? 1;
|
|
45
|
+
const color = (0, _figmaVariablesResolver.getVariableByName)('divider/color', modes) ?? '#1a1c1f';
|
|
46
|
+
const isVertical = direction === 'vertical';
|
|
47
|
+
const dividerStyle = isVertical ? {
|
|
48
|
+
width: size,
|
|
49
|
+
backgroundColor: color,
|
|
50
|
+
alignSelf: 'stretch'
|
|
51
|
+
} : {
|
|
52
|
+
height: size,
|
|
53
|
+
backgroundColor: color,
|
|
54
|
+
alignSelf: 'stretch'
|
|
55
|
+
};
|
|
56
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
57
|
+
style: [dividerStyle, style],
|
|
58
|
+
accessibilityRole: "none",
|
|
59
|
+
accessibilityLabel: accessibilityLabel
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
var _default = exports.default = Divider;
|
|
63
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_figmaVariablesResolver","_jsxRuntime","e","__esModule","default","Divider","direction","modes","style","accessibilityLabel","size","getVariableByName","color","isVertical","dividerStyle","width","backgroundColor","alignSelf","height","jsx","View","accessibilityRole","_default","exports"],"sourceRoot":"../../../../src","sources":["components/Divider/Divider.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,uBAAA,GAAAF,OAAA;AAAgF,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAyBhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,OAAOA,CAAC;EACfC,SAAS,GAAG,YAAY;EACxBC,KAAK,GAAG,CAAC,CAAC;EACVC,KAAK;EACLC,kBAAkB,GAAG;AACT,CAAC,EAAE;EACf;EACA,MAAMC,IAAI,GAAG,IAAAC,yCAAiB,EAAC,cAAc,EAAEJ,KAAK,CAAC,IAAI,CAAC;EAC1D,MAAMK,KAAK,GAAG,IAAAD,yCAAiB,EAAC,eAAe,EAAEJ,KAAK,CAAC,IAAI,SAAS;EAEpE,MAAMM,UAAU,GAAGP,SAAS,KAAK,UAAU;EAE3C,MAAMQ,YAAuB,GAAGD,UAAU,GACtC;IACEE,KAAK,EAAEL,IAAI;IACXM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC,GACD;IACEC,MAAM,EAAER,IAAI;IACZM,eAAe,EAAEJ,KAAK;IACtBK,SAAS,EAAE;EACb,CAAC;EAEL,oBACE,IAAAhB,WAAA,CAAAkB,GAAA,EAACpB,YAAA,CAAAqB,IAAI;IACHZ,KAAK,EAAE,CAACM,YAAY,EAAEN,KAAK,CAAE;IAC7Ba,iBAAiB,EAAC,MAAM;IACxBZ,kBAAkB,EAAEA;EAAmB,CACxC,CAAC;AAEN;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEcC,OAAO","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as DividerStories from './Divider.stories';
|
|
3
|
+
import Divider from './Divider';
|
|
4
|
+
|
|
5
|
+
<Meta of={DividerStories} />
|
|
6
|
+
|
|
7
|
+
# Divider
|
|
8
|
+
|
|
9
|
+
A simple divider component that renders a horizontal or vertical separator line. Uses design tokens for consistent sizing and color.
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
<ArgsTable of={Divider} />
|
|
14
|
+
|
|
15
|
+
## Available Collections and Modes
|
|
16
|
+
|
|
17
|
+
This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
|
|
18
|
+
|
|
19
|
+
### Color Mode
|
|
20
|
+
- **Modes:** Light | Dark
|
|
21
|
+
- **Default:** Light
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
### Horizontal Divider
|
|
25
|
+
|
|
26
|
+
The default horizontal divider stretches to fill its container width:
|
|
27
|
+
|
|
28
|
+
<Canvas>
|
|
29
|
+
<Story of={DividerStories.Horizontal} />
|
|
30
|
+
</Canvas>
|
|
31
|
+
|
|
32
|
+
### Vertical Divider
|
|
33
|
+
|
|
34
|
+
Vertical dividers stretch to fill their container height:
|
|
35
|
+
|
|
36
|
+
<Canvas>
|
|
37
|
+
<Story of={DividerStories.Vertical} />
|
|
38
|
+
</Canvas>
|
|
39
|
+
|
|
40
|
+
### In Content Layout
|
|
41
|
+
|
|
42
|
+
Use horizontal dividers to separate content sections:
|
|
43
|
+
|
|
44
|
+
<Canvas>
|
|
45
|
+
<Story of={DividerStories.InContentLayout} />
|
|
46
|
+
</Canvas>
|
|
47
|
+
|
|
48
|
+
### In Row Layout
|
|
49
|
+
|
|
50
|
+
Use vertical dividers to separate items in a horizontal row:
|
|
51
|
+
|
|
52
|
+
<Canvas>
|
|
53
|
+
<Story of={DividerStories.InRowLayout} />
|
|
54
|
+
</Canvas>
|
|
55
|
+
|
|
56
|
+
## Component Usage
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
import { Divider } from 'jsf-components';
|
|
60
|
+
|
|
61
|
+
// Horizontal divider (default)
|
|
62
|
+
<Divider />
|
|
63
|
+
|
|
64
|
+
// Vertical divider
|
|
65
|
+
<Divider direction="vertical" />
|
|
66
|
+
|
|
67
|
+
// In a vertical layout
|
|
68
|
+
<View>
|
|
69
|
+
<Text>Section 1</Text>
|
|
70
|
+
<Divider />
|
|
71
|
+
<Text>Section 2</Text>
|
|
72
|
+
</View>
|
|
73
|
+
|
|
74
|
+
// In a horizontal layout
|
|
75
|
+
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
|
76
|
+
<Text>Item 1</Text>
|
|
77
|
+
<View style={{ marginHorizontal: 8 }}>
|
|
78
|
+
<Divider direction="vertical" />
|
|
79
|
+
</View>
|
|
80
|
+
<Text>Item 2</Text>
|
|
81
|
+
</View>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Design Tokens
|
|
85
|
+
|
|
86
|
+
This component uses the following design tokens, resolved through `getVariableByName`:
|
|
87
|
+
|
|
88
|
+
- **`divider/color`**
|
|
89
|
+
- **`divider/size`**
|
|
90
|
+
|
|
91
|
+
All tokens support mode-based theming through the `modes` prop.
|