@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.
@@ -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":"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","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":[]}
@@ -52,6 +52,7 @@ export * from './Tabs';
52
52
  export * from './Table';
53
53
  export * from './Textarea';
54
54
  export * from './Tile';
55
+ export * from './ToggleButton';
55
56
  export * from './Toast';
56
57
  export * from './Tooltip';
57
58
  export { HStack, VStack } from './Stack';
@@ -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"}
@@ -50,6 +50,7 @@ export * from './Tabs';
50
50
  export * from './Table';
51
51
  export * from './Textarea';
52
52
  export * from './Tile';
53
+ export * from './ToggleButton';
53
54
  export * from './Toast';
54
55
  export * from './Tooltip';
55
56
  export { HStack, VStack } from './Stack';
@@ -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.5",
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.5",
85
- "@cdx-ui/primitives": "0.1.5",
86
- "@cdx-ui/utils": "0.1.5",
87
- "@cdx-ui/icons": "0.1.5"
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": "*",