@cdx-ui/components 0.1.5 → 0.1.6
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/coverage.svg +1 -1
- package/lib/commonjs/components/ToggleButton/index.js +249 -0
- package/lib/commonjs/components/ToggleButton/index.js.map +1 -0
- package/lib/commonjs/components/ToggleButton/styles.js +155 -0
- package/lib/commonjs/components/ToggleButton/styles.js.map +1 -0
- package/lib/commonjs/components/index.js +12 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/module/components/ToggleButton/index.js +245 -0
- package/lib/module/components/ToggleButton/index.js.map +1 -0
- package/lib/module/components/ToggleButton/styles.js +152 -0
- package/lib/module/components/ToggleButton/styles.js.map +1 -0
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/typescript/components/ToggleButton/index.d.ts +78 -0
- package/lib/typescript/components/ToggleButton/index.d.ts.map +1 -0
- package/lib/typescript/components/ToggleButton/styles.d.ts +30 -0
- package/lib/typescript/components/ToggleButton/styles.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/components/ToggleButton/index.tsx +346 -0
- package/src/components/ToggleButton/styles.ts +191 -0
- package/src/components/index.ts +1 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { forwardRef, useMemo } from 'react';
|
|
4
|
+
import { Text } from 'react-native';
|
|
5
|
+
import { Slot, ToggleButtonGroup as ToggleButtonGroupPrimitive, ToggleButtonRoot as ToggleButtonRootPrimitive, dataAttributes, mergeDataAttributes, useToggleButtonContext } from '@cdx-ui/primitives';
|
|
6
|
+
import { cn, flattenChildren, ParentContext, useParentContext, useStyleContext } from '@cdx-ui/utils';
|
|
7
|
+
import { Icon } from '../Icon';
|
|
8
|
+
import { positionToDataIcon } from '../../utils/positionToDataIcon';
|
|
9
|
+
import { toggleButtonAttachedVariants, toggleButtonGroupVariants, toggleButtonIconVariants, toggleButtonLabelVariants, toggleButtonRootVariants } from './styles';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
const SCOPE = 'TOGGLE_BUTTON';
|
|
12
|
+
const useToggleButtonStyleContext = () => useStyleContext(SCOPE);
|
|
13
|
+
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// STYLED ROOT COMPONENT
|
|
16
|
+
// =============================================================================
|
|
17
|
+
|
|
18
|
+
const ToggleButtonRoot = /*#__PURE__*/forwardRef(({
|
|
19
|
+
variant = 'default',
|
|
20
|
+
shape = 'circle',
|
|
21
|
+
size = 'default',
|
|
22
|
+
className,
|
|
23
|
+
children,
|
|
24
|
+
style,
|
|
25
|
+
isDisabled,
|
|
26
|
+
...props
|
|
27
|
+
}, ref) => {
|
|
28
|
+
const content = flattenChildren(children);
|
|
29
|
+
const iconOnly = content.length === 1 && /*#__PURE__*/React.isValidElement(content[0]) && content[0].type === ToggleButtonIcon;
|
|
30
|
+
const computedClassName = cn(toggleButtonRootVariants({
|
|
31
|
+
variant,
|
|
32
|
+
shape,
|
|
33
|
+
size,
|
|
34
|
+
iconOnly
|
|
35
|
+
}), className);
|
|
36
|
+
const parent = useParentContext();
|
|
37
|
+
const ctx = useMemo(() => ({
|
|
38
|
+
...parent,
|
|
39
|
+
[SCOPE]: {
|
|
40
|
+
variant,
|
|
41
|
+
shape,
|
|
42
|
+
size
|
|
43
|
+
}
|
|
44
|
+
}), [parent, variant, shape, size]);
|
|
45
|
+
return /*#__PURE__*/_jsx(ParentContext.Provider, {
|
|
46
|
+
value: ctx,
|
|
47
|
+
children: /*#__PURE__*/_jsx(ToggleButtonRootPrimitive, {
|
|
48
|
+
ref: ref,
|
|
49
|
+
className: computedClassName,
|
|
50
|
+
style: style,
|
|
51
|
+
isDisabled: isDisabled,
|
|
52
|
+
...props,
|
|
53
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
54
|
+
slot: 'toggle-button'
|
|
55
|
+
})),
|
|
56
|
+
children: children
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
ToggleButtonRoot.displayName = 'ToggleButton';
|
|
61
|
+
|
|
62
|
+
// =============================================================================
|
|
63
|
+
// STYLED LABEL COMPONENT
|
|
64
|
+
// =============================================================================
|
|
65
|
+
|
|
66
|
+
const ToggleButtonLabel = /*#__PURE__*/forwardRef(({
|
|
67
|
+
asChild,
|
|
68
|
+
className,
|
|
69
|
+
children,
|
|
70
|
+
style,
|
|
71
|
+
...props
|
|
72
|
+
}, ref) => {
|
|
73
|
+
const {
|
|
74
|
+
size
|
|
75
|
+
} = useToggleButtonStyleContext();
|
|
76
|
+
const {
|
|
77
|
+
isSelected,
|
|
78
|
+
hover,
|
|
79
|
+
active
|
|
80
|
+
} = useToggleButtonContext();
|
|
81
|
+
const computedClassName = cn(toggleButtonLabelVariants({
|
|
82
|
+
size
|
|
83
|
+
}), className);
|
|
84
|
+
const Comp = asChild ? Slot : Text;
|
|
85
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
86
|
+
ref: ref,
|
|
87
|
+
className: computedClassName,
|
|
88
|
+
style: style,
|
|
89
|
+
...props,
|
|
90
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
91
|
+
slot: 'toggle-button-label',
|
|
92
|
+
selected: isSelected,
|
|
93
|
+
hover,
|
|
94
|
+
active
|
|
95
|
+
})),
|
|
96
|
+
children: children
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
ToggleButtonLabel.displayName = 'ToggleButton.Label';
|
|
100
|
+
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// STYLED ICON COMPONENT
|
|
103
|
+
// =============================================================================
|
|
104
|
+
|
|
105
|
+
const ToggleButtonIcon = ({
|
|
106
|
+
asChild,
|
|
107
|
+
className,
|
|
108
|
+
style,
|
|
109
|
+
as,
|
|
110
|
+
position,
|
|
111
|
+
filled,
|
|
112
|
+
...props
|
|
113
|
+
}) => {
|
|
114
|
+
const {
|
|
115
|
+
size
|
|
116
|
+
} = useToggleButtonStyleContext();
|
|
117
|
+
const {
|
|
118
|
+
isSelected,
|
|
119
|
+
hover,
|
|
120
|
+
active
|
|
121
|
+
} = useToggleButtonContext();
|
|
122
|
+
const computedClassName = cn(toggleButtonIconVariants({
|
|
123
|
+
size
|
|
124
|
+
}), className);
|
|
125
|
+
const resolvedFilled = filled ?? isSelected;
|
|
126
|
+
const interactionAttributes = dataAttributes({
|
|
127
|
+
slot: 'toggle-button-icon',
|
|
128
|
+
selected: isSelected,
|
|
129
|
+
hover,
|
|
130
|
+
active
|
|
131
|
+
});
|
|
132
|
+
if (asChild) {
|
|
133
|
+
return /*#__PURE__*/_jsx(Slot, {
|
|
134
|
+
className: computedClassName,
|
|
135
|
+
style: style,
|
|
136
|
+
filled: resolvedFilled,
|
|
137
|
+
...props,
|
|
138
|
+
...mergeDataAttributes(props, interactionAttributes, positionToDataIcon(position))
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (!as) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
return /*#__PURE__*/_jsx(Icon, {
|
|
145
|
+
as: as,
|
|
146
|
+
className: computedClassName,
|
|
147
|
+
style: style,
|
|
148
|
+
filled: resolvedFilled,
|
|
149
|
+
...props,
|
|
150
|
+
...mergeDataAttributes(props, interactionAttributes, positionToDataIcon(position))
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
ToggleButtonIcon.displayName = 'ToggleButton.Icon';
|
|
154
|
+
|
|
155
|
+
// =============================================================================
|
|
156
|
+
// STYLED GROUP COMPONENT
|
|
157
|
+
// =============================================================================
|
|
158
|
+
|
|
159
|
+
const ATTACHED_RADIUS_STYLES = {
|
|
160
|
+
horizontal: {
|
|
161
|
+
only: undefined,
|
|
162
|
+
first: {
|
|
163
|
+
borderTopRightRadius: 0,
|
|
164
|
+
borderBottomRightRadius: 0
|
|
165
|
+
},
|
|
166
|
+
middle: {
|
|
167
|
+
borderRadius: 0
|
|
168
|
+
},
|
|
169
|
+
last: {
|
|
170
|
+
borderTopLeftRadius: 0,
|
|
171
|
+
borderBottomLeftRadius: 0
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
vertical: {
|
|
175
|
+
only: undefined,
|
|
176
|
+
first: {
|
|
177
|
+
borderBottomLeftRadius: 0,
|
|
178
|
+
borderBottomRightRadius: 0
|
|
179
|
+
},
|
|
180
|
+
middle: {
|
|
181
|
+
borderRadius: 0
|
|
182
|
+
},
|
|
183
|
+
last: {
|
|
184
|
+
borderTopLeftRadius: 0,
|
|
185
|
+
borderTopRightRadius: 0
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
function getAttachedPosition(index, count) {
|
|
190
|
+
if (count <= 1) {
|
|
191
|
+
return 'only';
|
|
192
|
+
}
|
|
193
|
+
if (index === 0) {
|
|
194
|
+
return 'first';
|
|
195
|
+
}
|
|
196
|
+
return index === count - 1 ? 'last' : 'middle';
|
|
197
|
+
}
|
|
198
|
+
const ToggleButtonGroup = /*#__PURE__*/forwardRef(({
|
|
199
|
+
asChild,
|
|
200
|
+
className,
|
|
201
|
+
children,
|
|
202
|
+
style,
|
|
203
|
+
orientation = 'horizontal',
|
|
204
|
+
isAttached = true,
|
|
205
|
+
...props
|
|
206
|
+
}, ref) => {
|
|
207
|
+
const childrenArray = React.Children.toArray(flattenChildren(children));
|
|
208
|
+
const computedChildren = isAttached ? childrenArray.map((child, index) => {
|
|
209
|
+
if (! /*#__PURE__*/React.isValidElement(child)) {
|
|
210
|
+
return child;
|
|
211
|
+
}
|
|
212
|
+
const position = getAttachedPosition(index, childrenArray.length);
|
|
213
|
+
const radiusStyle = ATTACHED_RADIUS_STYLES[orientation][position];
|
|
214
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
215
|
+
className: cn(toggleButtonAttachedVariants({
|
|
216
|
+
orientation,
|
|
217
|
+
position
|
|
218
|
+
}), child.props.className),
|
|
219
|
+
style: radiusStyle ? [radiusStyle, child.props.style] : child.props.style
|
|
220
|
+
});
|
|
221
|
+
}) : childrenArray;
|
|
222
|
+
const groupClassName = cn(toggleButtonGroupVariants({
|
|
223
|
+
orientation,
|
|
224
|
+
isAttached
|
|
225
|
+
}), className);
|
|
226
|
+
return /*#__PURE__*/_jsx(ToggleButtonGroupPrimitive, {
|
|
227
|
+
ref: ref,
|
|
228
|
+
asChild: asChild,
|
|
229
|
+
className: groupClassName,
|
|
230
|
+
style: style,
|
|
231
|
+
orientation: orientation,
|
|
232
|
+
...props,
|
|
233
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
234
|
+
slot: 'toggle-button-group'
|
|
235
|
+
})),
|
|
236
|
+
children: computedChildren
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
ToggleButtonGroup.displayName = 'ToggleButtonGroup';
|
|
240
|
+
export const ToggleButton = Object.assign(ToggleButtonRoot, {
|
|
241
|
+
Label: ToggleButtonLabel,
|
|
242
|
+
Icon: ToggleButtonIcon
|
|
243
|
+
});
|
|
244
|
+
export { ToggleButtonGroup };
|
|
245
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useMemo","Text","Slot","ToggleButtonGroup","ToggleButtonGroupPrimitive","ToggleButtonRoot","ToggleButtonRootPrimitive","dataAttributes","mergeDataAttributes","useToggleButtonContext","cn","flattenChildren","ParentContext","useParentContext","useStyleContext","Icon","positionToDataIcon","toggleButtonAttachedVariants","toggleButtonGroupVariants","toggleButtonIconVariants","toggleButtonLabelVariants","toggleButtonRootVariants","jsx","_jsx","SCOPE","useToggleButtonStyleContext","variant","shape","size","className","children","style","isDisabled","props","ref","content","iconOnly","length","isValidElement","type","ToggleButtonIcon","computedClassName","parent","ctx","Provider","value","slot","displayName","ToggleButtonLabel","asChild","isSelected","hover","active","Comp","selected","as","position","filled","resolvedFilled","interactionAttributes","ATTACHED_RADIUS_STYLES","horizontal","only","undefined","first","borderTopRightRadius","borderBottomRightRadius","middle","borderRadius","last","borderTopLeftRadius","borderBottomLeftRadius","vertical","getAttachedPosition","index","count","orientation","isAttached","childrenArray","Children","toArray","computedChildren","map","child","radiusStyle","cloneElement","groupClassName","ToggleButton","Object","assign","Label"],"sourceRoot":"../../../../src","sources":["components/ToggleButton/index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAA2C,OAAO;AACrF,SAASC,IAAI,QAA8D,cAAc;AACzF,SACEC,IAAI,EACJC,iBAAiB,IAAIC,0BAA0B,EAC/CC,gBAAgB,IAAIC,yBAAyB,EAC7CC,cAAc,EACdC,mBAAmB,EACnBC,sBAAsB,QAIjB,oBAAoB;AAC3B,SACEC,EAAE,EACFC,eAAe,EACfC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,QACV,eAAe;AACtB,SAASC,IAAI,QAAwB,SAAS;AAC9C,SAASC,kBAAkB,QAA+B,gCAAgC;AAC1F,SACEC,4BAA4B,EAC5BC,yBAAyB,EACzBC,wBAAwB,EACxBC,yBAAyB,EACzBC,wBAAwB,QAInB,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAElB,MAAMC,KAAK,GAAG,eAAe;AAE7B,MAAMC,2BAA2B,GAAGA,CAAA,KAAMX,eAAe,CAACU,KAAK,CAA6B;;AAE5F;AACA;AACA;;AAyBA,MAAMnB,gBAAgB,gBAAGN,UAAU,CACjC,CACE;EACE2B,OAAO,GAAG,SAAS;EACnBC,KAAK,GAAG,QAAQ;EAChBC,IAAI,GAAG,SAAS;EAChBC,SAAS;EACTC,QAAQ;EACRC,KAAK;EACLC,UAAU;EACV,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAMC,OAAO,GAAGxB,eAAe,CAACmB,QAAQ,CAAC;EACzC,MAAMM,QAAQ,GACZD,OAAO,CAACE,MAAM,KAAK,CAAC,iBACpBvC,KAAK,CAACwC,cAAc,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,IAChCA,OAAO,CAAC,CAAC,CAAC,CAACI,IAAI,KAAKC,gBAAgB;EACtC,MAAMC,iBAAiB,GAAG/B,EAAE,CAC1BW,wBAAwB,CAAC;IAAEK,OAAO;IAAEC,KAAK;IAAEC,IAAI;IAAEQ;EAAS,CAAC,CAAC,EAC5DP,SACF,CAAC;EAED,MAAMa,MAAM,GAAG7B,gBAAgB,CAAC,CAAC;EACjC,MAAM8B,GAAG,GAAG3C,OAAO,CACjB,OAAO;IAAE,GAAG0C,MAAM;IAAE,CAAClB,KAAK,GAAG;MAAEE,OAAO;MAAEC,KAAK;MAAEC;IAAK;EAAE,CAAC,CAAC,EACxD,CAACc,MAAM,EAAEhB,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAC/B,CAAC;EAED,oBACEL,IAAA,CAACX,aAAa,CAACgC,QAAQ;IAACC,KAAK,EAAEF,GAAI;IAAAb,QAAA,eACjCP,IAAA,CAACjB,yBAAyB;MACxB4B,GAAG,EAAEA,GAAI;MACTL,SAAS,EAAEY,iBAAkB;MAC7BV,KAAK,EAAEA,KAAM;MACbC,UAAU,EAAEA,UAAW;MAAA,GACnBC,KAAK;MAAA,GACLzB,mBAAmB,CAACyB,KAAK,EAAE1B,cAAc,CAAC;QAAEuC,IAAI,EAAE;MAAgB,CAAC,CAAC,CAAC;MAAAhB,QAAA,EAExEA;IAAQ,CACgB;EAAC,CACN,CAAC;AAE7B,CACF,CAAC;AAEDzB,gBAAgB,CAAC0C,WAAW,GAAG,cAAc;;AAE7C;AACA;AACA;;AASA,MAAMC,iBAAiB,gBAAGjD,UAAU,CAClC,CAAC;EAAEkD,OAAO;EAAEpB,SAAS;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGE;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1D,MAAM;IAAEN;EAAK,CAAC,GAAGH,2BAA2B,CAAC,CAAC;EAC9C,MAAM;IAAEyB,UAAU;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAG3C,sBAAsB,CAAC,CAAC;EAC9D,MAAMgC,iBAAiB,GAAG/B,EAAE,CAACU,yBAAyB,CAAC;IAAEQ;EAAK,CAAC,CAAC,EAAEC,SAAS,CAAC;EAC5E,MAAMwB,IAAI,GAAGJ,OAAO,GAAG/C,IAAI,GAAGD,IAAI;EAElC,oBACEsB,IAAA,CAAC8B,IAAI;IACHnB,GAAG,EAAEA,GAAI;IACTL,SAAS,EAAEY,iBAAkB;IAC7BV,KAAK,EAAEA,KAAM;IAAA,GACTE,KAAK;IAAA,GACLzB,mBAAmB,CACrByB,KAAK,EACL1B,cAAc,CAAC;MACbuC,IAAI,EAAE,qBAAqB;MAC3BQ,QAAQ,EAAEJ,UAAU;MACpBC,KAAK;MACLC;IACF,CAAC,CACH,CAAC;IAAAtB,QAAA,EAEAA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDkB,iBAAiB,CAACD,WAAW,GAAG,oBAAoB;;AAEpD;AACA;AACA;;AAgBA,MAAMP,gBAAgB,GAAGA,CAAC;EACxBS,OAAO;EACPpB,SAAS;EACTE,KAAK;EACLwB,EAAE;EACFC,QAAQ;EACRC,MAAM;EACN,GAAGxB;AACkB,CAAC,KAAK;EAC3B,MAAM;IAAEL;EAAK,CAAC,GAAGH,2BAA2B,CAAC,CAAC;EAC9C,MAAM;IAAEyB,UAAU;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAG3C,sBAAsB,CAAC,CAAC;EAC9D,MAAMgC,iBAAiB,GAAG/B,EAAE,CAACS,wBAAwB,CAAC;IAAES;EAAK,CAAC,CAAC,EAAEC,SAAS,CAAC;EAC3E,MAAM6B,cAAc,GAAGD,MAAM,IAAIP,UAAU;EAC3C,MAAMS,qBAAqB,GAAGpD,cAAc,CAAC;IAC3CuC,IAAI,EAAE,oBAAoB;IAC1BQ,QAAQ,EAAEJ,UAAU;IACpBC,KAAK;IACLC;EACF,CAAC,CAAC;EAEF,IAAIH,OAAO,EAAE;IACX,oBACE1B,IAAA,CAACrB,IAAI;MACH2B,SAAS,EAAEY,iBAAkB;MAC7BV,KAAK,EAAEA,KAAM;MACb0B,MAAM,EAAEC,cAAe;MAAA,GACnBzB,KAAK;MAAA,GACLzB,mBAAmB,CAACyB,KAAK,EAAE0B,qBAAqB,EAAE3C,kBAAkB,CAACwC,QAAQ,CAAC;IAAC,CACpF,CAAC;EAEN;EAEA,IAAI,CAACD,EAAE,EAAE;IACP,OAAO,IAAI;EACb;EAEA,oBACEhC,IAAA,CAACR,IAAI;IACHwC,EAAE,EAAEA,EAAG;IACP1B,SAAS,EAAEY,iBAAkB;IAC7BV,KAAK,EAAEA,KAAM;IACb0B,MAAM,EAAEC,cAAe;IAAA,GACnBzB,KAAK;IAAA,GACLzB,mBAAmB,CAACyB,KAAK,EAAE0B,qBAAqB,EAAE3C,kBAAkB,CAACwC,QAAQ,CAAC;EAAC,CACpF,CAAC;AAEN,CAAC;AAEDhB,gBAAgB,CAACO,WAAW,GAAG,mBAAmB;;AAElD;AACA;AACA;;AA8BA,MAAMa,sBAGL,GAAG;EACFC,UAAU,EAAE;IACVC,IAAI,EAAEC,SAAS;IACfC,KAAK,EAAE;MAAEC,oBAAoB,EAAE,CAAC;MAAEC,uBAAuB,EAAE;IAAE,CAAC;IAC9DC,MAAM,EAAE;MAAEC,YAAY,EAAE;IAAE,CAAC;IAC3BC,IAAI,EAAE;MAAEC,mBAAmB,EAAE,CAAC;MAAEC,sBAAsB,EAAE;IAAE;EAC5D,CAAC;EACDC,QAAQ,EAAE;IACRV,IAAI,EAAEC,SAAS;IACfC,KAAK,EAAE;MAAEO,sBAAsB,EAAE,CAAC;MAAEL,uBAAuB,EAAE;IAAE,CAAC;IAChEC,MAAM,EAAE;MAAEC,YAAY,EAAE;IAAE,CAAC;IAC3BC,IAAI,EAAE;MAAEC,mBAAmB,EAAE,CAAC;MAAEL,oBAAoB,EAAE;IAAE;EAC1D;AACF,CAAC;AAED,SAASQ,mBAAmBA,CAACC,KAAa,EAAEC,KAAa,EAAgC;EACvF,IAAIA,KAAK,IAAI,CAAC,EAAE;IACd,OAAO,MAAM;EACf;EACA,IAAID,KAAK,KAAK,CAAC,EAAE;IACf,OAAO,OAAO;EAChB;EACA,OAAOA,KAAK,KAAKC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,QAAQ;AAChD;AAEA,MAAMxE,iBAAiB,gBAAGJ,UAAU,CAClC,CACE;EACEkD,OAAO;EACPpB,SAAS;EACTC,QAAQ;EACRC,KAAK;EACL6C,WAAW,GAAG,YAAY;EAC1BC,UAAU,GAAG,IAAI;EACjB,GAAG5C;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM4C,aAAa,GAAGhF,KAAK,CAACiF,QAAQ,CAACC,OAAO,CAACrE,eAAe,CAACmB,QAAQ,CAAC,CAAC;EAEvE,MAAMmD,gBAAgB,GAAGJ,UAAU,GAC/BC,aAAa,CAACI,GAAG,CAAC,CAACC,KAAK,EAAET,KAAK,KAAK;IAClC,IAAI,eAAC5E,KAAK,CAACwC,cAAc,CAAuD6C,KAAK,CAAC,EAAE;MACtF,OAAOA,KAAK;IACd;IAEA,MAAM3B,QAAQ,GAAGiB,mBAAmB,CAACC,KAAK,EAAEI,aAAa,CAACzC,MAAM,CAAC;IACjE,MAAM+C,WAAW,GAAGxB,sBAAsB,CAACgB,WAAW,CAAC,CAACpB,QAAQ,CAAC;IAEjE,oBAAO1D,KAAK,CAACuF,YAAY,CAACF,KAAK,EAAE;MAC/BtD,SAAS,EAAEnB,EAAE,CACXO,4BAA4B,CAAC;QAAE2D,WAAW;QAAEpB;MAAS,CAAC,CAAC,EACvD2B,KAAK,CAAClD,KAAK,CAACJ,SACd,CAAC;MACDE,KAAK,EAAEqD,WAAW,GAAG,CAACA,WAAW,EAAED,KAAK,CAAClD,KAAK,CAACF,KAAK,CAAC,GAAGoD,KAAK,CAAClD,KAAK,CAACF;IACtE,CAAC,CAAC;EACJ,CAAC,CAAC,GACF+C,aAAa;EAEjB,MAAMQ,cAAc,GAAG5E,EAAE,CAACQ,yBAAyB,CAAC;IAAE0D,WAAW;IAAEC;EAAW,CAAC,CAAC,EAAEhD,SAAS,CAAC;EAE5F,oBACEN,IAAA,CAACnB,0BAA0B;IACzB8B,GAAG,EAAEA,GAAI;IACTe,OAAO,EAAEA,OAAQ;IACjBpB,SAAS,EAAEyD,cAAe;IAC1BvD,KAAK,EAAEA,KAAM;IACb6C,WAAW,EAAEA,WAAY;IAAA,GACrB3C,KAAK;IAAA,GACLzB,mBAAmB,CAACyB,KAAK,EAAE1B,cAAc,CAAC;MAAEuC,IAAI,EAAE;IAAsB,CAAC,CAAC,CAAC;IAAAhB,QAAA,EAE9EmD;EAAgB,CACS,CAAC;AAEjC,CACF,CAAC;AAED9E,iBAAiB,CAAC4C,WAAW,GAAG,mBAAmB;AAEnD,OAAO,MAAMwC,YAAY,GAAGC,MAAM,CAACC,MAAM,CAACpF,gBAAgB,EAAE;EAC1DqF,KAAK,EAAE1C,iBAAiB;EACxBjC,IAAI,EAAEyB;AACR,CAAC,CAGA;AAED,SAASrC,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { cva } from '@cdx-ui/utils';
|
|
5
|
+
import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/constants';
|
|
6
|
+
|
|
7
|
+
// `data-toggle-state` is a single derived value (see the primitive's `getToggleState`), so these
|
|
8
|
+
// selectors never tie on specificity and match on native, where compound `data-[]` chains don't.
|
|
9
|
+
const selectedTint = ['data-[toggle-state=selected]:bg-surface-action-tint', 'data-[toggle-state=selected-active]:bg-surface-action-tint-active', Platform.select({
|
|
10
|
+
default: '',
|
|
11
|
+
web: 'data-[toggle-state=selected-hover]:bg-surface-action-tint-hover'
|
|
12
|
+
})];
|
|
13
|
+
const unselectedTint = ['data-[toggle-state=active]:bg-surface-action-tint-active', Platform.select({
|
|
14
|
+
default: '',
|
|
15
|
+
web: 'data-[toggle-state=hover]:bg-surface-action-tint-hover'
|
|
16
|
+
})];
|
|
17
|
+
export const toggleButtonRootVariants = cva(['flex-row items-center justify-center self-start shrink-0 web:inline-flex', 'web:outline-none web:focus:outline-none web:focus-visible:outline-none', TRANSITION_COLORS, 'data-[disabled=true]:opacity-[var(--opacity-disabled)]', DISABLED_CURSOR, 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-stroke-focus web:data-[focus-visible=true]:ring-offset-2'], {
|
|
18
|
+
variants: {
|
|
19
|
+
variant: {
|
|
20
|
+
/** Muted filled surface. */
|
|
21
|
+
default: ['bg-surface-secondary', 'border-0'],
|
|
22
|
+
outline: ['bg-transparent', 'border border-stroke-primary', 'web:border-default native:border-[length:var(--border-width-default)]'],
|
|
23
|
+
ghost: ['bg-transparent', 'border-0']
|
|
24
|
+
},
|
|
25
|
+
shape: {
|
|
26
|
+
circle: 'rounded-[var(--border-radius-round)]',
|
|
27
|
+
rounded: 'rounded-[var(--border-radius-default)]'
|
|
28
|
+
},
|
|
29
|
+
size: {
|
|
30
|
+
small: 'h-8 min-h-8 px-3 gap-1.5',
|
|
31
|
+
default: 'h-11 min-h-11 px-4 gap-2',
|
|
32
|
+
large: 'h-12 min-h-12 px-5 gap-2.5'
|
|
33
|
+
},
|
|
34
|
+
/** Square footprint when the only content is a single `ToggleButton.Icon`. */
|
|
35
|
+
iconOnly: {
|
|
36
|
+
true: 'px-0',
|
|
37
|
+
false: ''
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
compoundVariants: [{
|
|
41
|
+
iconOnly: true,
|
|
42
|
+
size: 'small',
|
|
43
|
+
className: 'w-8 min-w-8'
|
|
44
|
+
}, {
|
|
45
|
+
iconOnly: true,
|
|
46
|
+
size: 'default',
|
|
47
|
+
className: 'w-11 min-w-11'
|
|
48
|
+
}, {
|
|
49
|
+
iconOnly: true,
|
|
50
|
+
size: 'large',
|
|
51
|
+
className: 'w-12 min-w-12'
|
|
52
|
+
}, {
|
|
53
|
+
variant: 'default',
|
|
54
|
+
className: [...selectedTint, 'data-[toggle-state=active]:bg-surface-secondary-active', Platform.select({
|
|
55
|
+
default: '',
|
|
56
|
+
web: 'data-[toggle-state=hover]:bg-surface-secondary-hover'
|
|
57
|
+
})]
|
|
58
|
+
}, {
|
|
59
|
+
variant: ['outline', 'ghost'],
|
|
60
|
+
className: [...selectedTint, ...unselectedTint]
|
|
61
|
+
}, {
|
|
62
|
+
variant: 'outline',
|
|
63
|
+
className: 'data-[selected=true]:border-stroke-action'
|
|
64
|
+
}],
|
|
65
|
+
defaultVariants: {
|
|
66
|
+
variant: 'default',
|
|
67
|
+
shape: 'circle',
|
|
68
|
+
size: 'default',
|
|
69
|
+
iconOnly: false
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Classes for an item inside an attached group. Every item after the first overlaps its
|
|
75
|
+
* predecessor by one border width so adjoining borders collapse into a single line; the
|
|
76
|
+
* interacted or selected item is raised so its full border stays visible.
|
|
77
|
+
*/
|
|
78
|
+
export const toggleButtonAttachedVariants = cva(['relative data-[hover=true]:z-[1] data-[active=true]:z-[1] data-[selected=true]:z-[1]'], {
|
|
79
|
+
variants: {
|
|
80
|
+
orientation: {
|
|
81
|
+
horizontal: '',
|
|
82
|
+
vertical: 'self-stretch'
|
|
83
|
+
},
|
|
84
|
+
position: {
|
|
85
|
+
only: '',
|
|
86
|
+
first: '',
|
|
87
|
+
middle: '',
|
|
88
|
+
last: ''
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
compoundVariants: [{
|
|
92
|
+
orientation: 'horizontal',
|
|
93
|
+
position: ['middle', 'last'],
|
|
94
|
+
className: '-ms-[length:var(--border-width-default)]'
|
|
95
|
+
}, {
|
|
96
|
+
orientation: 'vertical',
|
|
97
|
+
position: ['middle', 'last'],
|
|
98
|
+
className: '-mt-[length:var(--border-width-default)]'
|
|
99
|
+
}],
|
|
100
|
+
defaultVariants: {
|
|
101
|
+
orientation: 'horizontal',
|
|
102
|
+
position: 'only'
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
export const toggleButtonGroupVariants = cva(['self-start'], {
|
|
106
|
+
variants: {
|
|
107
|
+
orientation: {
|
|
108
|
+
horizontal: 'flex-row',
|
|
109
|
+
vertical: 'flex-col items-stretch w-max max-w-full'
|
|
110
|
+
},
|
|
111
|
+
isAttached: {
|
|
112
|
+
true: 'gap-0',
|
|
113
|
+
false: 'gap-2'
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
defaultVariants: {
|
|
117
|
+
orientation: 'horizontal',
|
|
118
|
+
isAttached: true
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Label and Icon emit their own `data-selected` / `data-active` / `data-hover` because
|
|
123
|
+
// native Uniwind cannot style a child from its parent's data attributes.
|
|
124
|
+
const contentColor = ['text-content-primary', 'data-[selected=true]:text-content-action', Platform.select({
|
|
125
|
+
default: 'data-[active=true]:text-content-action',
|
|
126
|
+
web: 'data-[hover=true]:text-content-action data-[active=true]:text-content-action'
|
|
127
|
+
})];
|
|
128
|
+
export const toggleButtonLabelVariants = cva(['shrink-0 font-medium', ...contentColor], {
|
|
129
|
+
variants: {
|
|
130
|
+
size: {
|
|
131
|
+
small: 'text-sm',
|
|
132
|
+
default: 'text-base',
|
|
133
|
+
large: 'text-lg'
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
defaultVariants: {
|
|
137
|
+
size: 'default'
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
export const toggleButtonIconVariants = cva(['shrink-0', ...contentColor], {
|
|
141
|
+
variants: {
|
|
142
|
+
size: {
|
|
143
|
+
small: 'size-4',
|
|
144
|
+
default: 'size-5',
|
|
145
|
+
large: 'size-6'
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
defaultVariants: {
|
|
149
|
+
size: 'default'
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","cva","DISABLED_CURSOR","TRANSITION_COLORS","selectedTint","select","default","web","unselectedTint","toggleButtonRootVariants","variants","variant","outline","ghost","shape","circle","rounded","size","small","large","iconOnly","true","false","compoundVariants","className","defaultVariants","toggleButtonAttachedVariants","orientation","horizontal","vertical","position","only","first","middle","last","toggleButtonGroupVariants","isAttached","contentColor","toggleButtonLabelVariants","toggleButtonIconVariants"],"sourceRoot":"../../../../src","sources":["components/ToggleButton/styles.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HStack","VStack"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,aAAa;AAC3B,cAAc,YAAY;AAC1B,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,mBAAmB;AACjC,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,eAAe;AAC7B,cAAc,kBAAkB;AAChC,cAAc,YAAY;AAC1B,cAAc,qBAAqB;AACnC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,SAASA,MAAM,EAAEC,MAAM,QAAQ,SAAS;AACxC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,cAAc;AAC5B,cAAc,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["HStack","VStack"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,aAAa;AAC3B,cAAc,YAAY;AAC1B,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,mBAAmB;AACjC,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,eAAe;AAC7B,cAAc,kBAAkB;AAChC,cAAc,YAAY;AAC1B,cAAc,qBAAqB;AACnC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,SAASA,MAAM,EAAEC,MAAM,QAAQ,SAAS;AACxC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,cAAc;AAC5B,cAAc,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React, { type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import { Text, View, type TextProps } from 'react-native';
|
|
3
|
+
import { type IToggleButtonGroupMultipleProps, type IToggleButtonGroupSingleProps, type IToggleButtonProps } from '@cdx-ui/primitives';
|
|
4
|
+
import { type IconProps } from '../Icon';
|
|
5
|
+
import { type IconSlotPosition } from '../../utils/positionToDataIcon';
|
|
6
|
+
import { type ToggleButtonGroupVariantProps, type ToggleButtonVariantProps } from './styles';
|
|
7
|
+
export type ToggleButtonVariant = 'default' | 'outline' | 'ghost';
|
|
8
|
+
export type ToggleButtonShape = NonNullable<ToggleButtonVariantProps['shape']>;
|
|
9
|
+
export interface ToggleButtonProps extends IToggleButtonProps {
|
|
10
|
+
/**
|
|
11
|
+
* Visual style. `default` is a muted filled surface; `outline` adds a border; `ghost` is transparent.
|
|
12
|
+
* @default 'default'
|
|
13
|
+
*/
|
|
14
|
+
variant?: ToggleButtonVariant;
|
|
15
|
+
/**
|
|
16
|
+
* Corner geometry — mirrors `Avatar.shape`.
|
|
17
|
+
* @default 'circle'
|
|
18
|
+
*/
|
|
19
|
+
shape?: ToggleButtonShape;
|
|
20
|
+
/**
|
|
21
|
+
* Height and padding scale.
|
|
22
|
+
* @default 'default'
|
|
23
|
+
*/
|
|
24
|
+
size?: 'small' | 'default' | 'large';
|
|
25
|
+
className?: string;
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
}
|
|
28
|
+
declare const ToggleButtonRoot: React.ForwardRefExoticComponent<ToggleButtonProps & React.RefAttributes<View>>;
|
|
29
|
+
export interface ToggleButtonLabelProps extends TextProps {
|
|
30
|
+
/** Render the consumer's child in place of the default `Text` host. */
|
|
31
|
+
asChild?: boolean;
|
|
32
|
+
className?: string;
|
|
33
|
+
children?: ReactNode;
|
|
34
|
+
}
|
|
35
|
+
declare const ToggleButtonLabel: React.ForwardRefExoticComponent<ToggleButtonLabelProps & React.RefAttributes<Text>>;
|
|
36
|
+
export interface ToggleButtonIconProps extends Omit<IconProps, 'children' | 'as'> {
|
|
37
|
+
/** Render a custom element instead of the default icon. */
|
|
38
|
+
asChild?: boolean;
|
|
39
|
+
/** Forge icon component to render. */
|
|
40
|
+
as?: IconProps['as'];
|
|
41
|
+
/** Leading or trailing placement relative to the label. */
|
|
42
|
+
position?: IconSlotPosition;
|
|
43
|
+
/**
|
|
44
|
+
* Render the filled icon variant. Defaults to the toggle's selected state.
|
|
45
|
+
* Icons without filled path data stay outlined.
|
|
46
|
+
*/
|
|
47
|
+
filled?: boolean;
|
|
48
|
+
}
|
|
49
|
+
declare const ToggleButtonIcon: {
|
|
50
|
+
({ asChild, className, style, as, position, filled, ...props }: ToggleButtonIconProps): import("react/jsx-runtime").JSX.Element | null;
|
|
51
|
+
displayName: string;
|
|
52
|
+
};
|
|
53
|
+
type ToggleButtonGroupSingleStyledProps = IToggleButtonGroupSingleProps & ToggleButtonGroupVariantProps & {
|
|
54
|
+
className?: string;
|
|
55
|
+
children: ReactElement | ReactElement[];
|
|
56
|
+
/**
|
|
57
|
+
* Collapse gaps and adjoining corners into a single segmented control.
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
60
|
+
isAttached?: boolean;
|
|
61
|
+
};
|
|
62
|
+
type ToggleButtonGroupMultipleStyledProps = IToggleButtonGroupMultipleProps & ToggleButtonGroupVariantProps & {
|
|
63
|
+
className?: string;
|
|
64
|
+
children: ReactElement | ReactElement[];
|
|
65
|
+
/**
|
|
66
|
+
* Collapse gaps and adjoining corners into a single segmented control.
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
isAttached?: boolean;
|
|
70
|
+
};
|
|
71
|
+
export type ToggleButtonGroupProps = ToggleButtonGroupSingleStyledProps | ToggleButtonGroupMultipleStyledProps;
|
|
72
|
+
declare const ToggleButtonGroup: React.ForwardRefExoticComponent<ToggleButtonGroupProps & React.RefAttributes<View>>;
|
|
73
|
+
export declare const ToggleButton: typeof ToggleButtonRoot & {
|
|
74
|
+
Label: typeof ToggleButtonLabel;
|
|
75
|
+
Icon: typeof ToggleButtonIcon;
|
|
76
|
+
};
|
|
77
|
+
export { ToggleButtonGroup };
|
|
78
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ToggleButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAuB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAkB,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAC;AAC1F,OAAO,EAOL,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAOL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,UAAU,CAAC;AAUlB,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,gBAAgB,gFA6CrB,CAAC;AAQF,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,iBAAiB,qFA2BtB,CAAC;AAQF,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/E,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,gBAAgB;oEAQnB,qBAAqB;;CAsCvB,CAAC;AAQF,KAAK,kCAAkC,GAAG,6BAA6B,GACrE,6BAA6B,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEJ,KAAK,oCAAoC,GAAG,+BAA+B,GACzE,6BAA6B,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAC9B,kCAAkC,GAClC,oCAAoC,CAAC;AAgCzC,QAAA,MAAM,iBAAiB,qFAkDtB,CAAC;AAIF,eAAO,MAAM,YAAY,EAGnB,OAAO,gBAAgB,GAAG;IAC9B,KAAK,EAAE,OAAO,iBAAiB,CAAC;IAChC,IAAI,EAAE,OAAO,gBAAgB,CAAC;CAC/B,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type VariantProps } from '@cdx-ui/utils';
|
|
2
|
+
export declare const toggleButtonRootVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "outline" | "ghost" | null | undefined;
|
|
4
|
+
shape?: "circle" | "rounded" | null | undefined;
|
|
5
|
+
size?: "small" | "default" | "large" | null | undefined;
|
|
6
|
+
iconOnly?: boolean | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Classes for an item inside an attached group. Every item after the first overlaps its
|
|
10
|
+
* predecessor by one border width so adjoining borders collapse into a single line; the
|
|
11
|
+
* interacted or selected item is raised so its full border stays visible.
|
|
12
|
+
*/
|
|
13
|
+
export declare const toggleButtonAttachedVariants: (props?: ({
|
|
14
|
+
orientation?: "vertical" | "horizontal" | null | undefined;
|
|
15
|
+
position?: "middle" | "only" | "first" | "last" | null | undefined;
|
|
16
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
17
|
+
export type ToggleButtonAttachedPosition = NonNullable<VariantProps<typeof toggleButtonAttachedVariants>['position']>;
|
|
18
|
+
export declare const toggleButtonGroupVariants: (props?: ({
|
|
19
|
+
orientation?: "vertical" | "horizontal" | null | undefined;
|
|
20
|
+
isAttached?: boolean | null | undefined;
|
|
21
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
22
|
+
export declare const toggleButtonLabelVariants: (props?: ({
|
|
23
|
+
size?: "small" | "default" | "large" | null | undefined;
|
|
24
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
25
|
+
export declare const toggleButtonIconVariants: (props?: ({
|
|
26
|
+
size?: "small" | "default" | "large" | null | undefined;
|
|
27
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
28
|
+
export type ToggleButtonVariantProps = VariantProps<typeof toggleButtonRootVariants>;
|
|
29
|
+
export type ToggleButtonGroupVariantProps = VariantProps<typeof toggleButtonGroupVariants>;
|
|
30
|
+
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/ToggleButton/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAsBvD,eAAO,MAAM,wBAAwB;;;;;8EAmEpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;8EAgCxC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,WAAW,CACpD,YAAY,CAAC,OAAO,4BAA4B,CAAC,CAAC,UAAU,CAAC,CAC9D,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;8EAepC,CAAC;AAaH,eAAO,MAAM,yBAAyB;;8EAWpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;8EAWnC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACrF,MAAM,MAAM,6BAA6B,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdx-ui/components",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -81,10 +81,10 @@
|
|
|
81
81
|
"@marceloterreiro/flash-calendar": "2.0.0",
|
|
82
82
|
"react-native-reanimated-carousel": "5.0.0-beta.5",
|
|
83
83
|
"uniwind": "1.10.0",
|
|
84
|
-
"@cdx-ui/formatters": "0.1.
|
|
85
|
-
"@cdx-ui/primitives": "0.1.
|
|
86
|
-
"@cdx-ui/utils": "0.1.
|
|
87
|
-
"@cdx-ui/icons": "0.1.
|
|
84
|
+
"@cdx-ui/formatters": "0.1.6",
|
|
85
|
+
"@cdx-ui/primitives": "0.1.6",
|
|
86
|
+
"@cdx-ui/utils": "0.1.6",
|
|
87
|
+
"@cdx-ui/icons": "0.1.6"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@react-navigation/bottom-tabs": "*",
|