@cdx-ui/components 0.0.1-beta.93 → 0.0.1-beta.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/commonjs/components/Avatar/index.js +9 -0
- package/lib/commonjs/components/Avatar/index.js.map +1 -1
- package/lib/commonjs/components/Badge/index.js +86 -0
- package/lib/commonjs/components/Badge/index.js.map +1 -0
- package/lib/commonjs/components/Badge/styles.js +127 -0
- package/lib/commonjs/components/Badge/styles.js.map +1 -0
- package/lib/commonjs/components/index.js +12 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/figma/Badge.Indicator.figma.js +47 -0
- package/lib/commonjs/figma/Badge.Indicator.figma.js.map +1 -0
- package/lib/commonjs/figma/Badge.figma.js +65 -0
- package/lib/commonjs/figma/Badge.figma.js.map +1 -0
- package/lib/module/components/Avatar/index.js +9 -0
- package/lib/module/components/Avatar/index.js.map +1 -1
- package/lib/module/components/Badge/index.js +83 -0
- package/lib/module/components/Badge/index.js.map +1 -0
- package/lib/module/components/Badge/styles.js +123 -0
- package/lib/module/components/Badge/styles.js.map +1 -0
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/figma/Badge.Indicator.figma.js +41 -0
- package/lib/module/figma/Badge.Indicator.figma.js.map +1 -0
- package/lib/module/figma/Badge.figma.js +59 -0
- package/lib/module/figma/Badge.figma.js.map +1 -0
- package/lib/typescript/components/Avatar/index.d.ts +8 -0
- package/lib/typescript/components/Avatar/index.d.ts.map +1 -1
- package/lib/typescript/components/Badge/index.d.ts +14 -0
- package/lib/typescript/components/Badge/index.d.ts.map +1 -0
- package/lib/typescript/components/Badge/styles.d.ts +18 -0
- package/lib/typescript/components/Badge/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/lib/typescript/figma/Badge.Indicator.figma.d.ts +11 -0
- package/lib/typescript/figma/Badge.Indicator.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Badge.figma.d.ts +8 -0
- package/lib/typescript/figma/Badge.figma.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/components/Avatar/index.tsx +8 -0
- package/src/components/Badge/index.tsx +91 -0
- package/src/components/Badge/styles.ts +136 -0
- package/src/components/index.ts +1 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { Text, View } from 'react-native';
|
|
5
|
+
import { dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
|
|
6
|
+
import { cn } from '@cdx-ui/utils';
|
|
7
|
+
import { Icon } from '../Icon';
|
|
8
|
+
import { badgeIconVariants, badgeIndicatorVariants, badgeLabelVariants, badgeRootVariants } from './styles';
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const INDICATOR_STYLE = {
|
|
11
|
+
pointerEvents: 'none'
|
|
12
|
+
};
|
|
13
|
+
const Badge = /*#__PURE__*/forwardRef(({
|
|
14
|
+
children,
|
|
15
|
+
variant = 'default',
|
|
16
|
+
color = 'action',
|
|
17
|
+
placement = 'top-end',
|
|
18
|
+
overlap = 'rectangular',
|
|
19
|
+
label,
|
|
20
|
+
icon: IconComponent,
|
|
21
|
+
accessibilityLabel,
|
|
22
|
+
className,
|
|
23
|
+
style,
|
|
24
|
+
...props
|
|
25
|
+
}, ref) => {
|
|
26
|
+
const isDecorative = variant === 'dot' || !accessibilityLabel;
|
|
27
|
+
const renderContent = () => {
|
|
28
|
+
if (variant === 'dot') return null;
|
|
29
|
+
if (IconComponent) {
|
|
30
|
+
return /*#__PURE__*/_jsx(Icon, {
|
|
31
|
+
as: IconComponent,
|
|
32
|
+
className: badgeIconVariants({
|
|
33
|
+
color
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (typeof label === 'string' || typeof label === 'number') {
|
|
38
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
39
|
+
className: badgeLabelVariants({
|
|
40
|
+
color
|
|
41
|
+
}),
|
|
42
|
+
...dataAttributes({
|
|
43
|
+
slot: 'badge-label'
|
|
44
|
+
}),
|
|
45
|
+
children: label
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return label ?? null;
|
|
49
|
+
};
|
|
50
|
+
const hasChildren = children != null;
|
|
51
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
52
|
+
ref: ref,
|
|
53
|
+
className: cn(badgeRootVariants({
|
|
54
|
+
standalone: !hasChildren
|
|
55
|
+
}), className),
|
|
56
|
+
style: style,
|
|
57
|
+
...props,
|
|
58
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
59
|
+
slot: 'badge'
|
|
60
|
+
})),
|
|
61
|
+
children: [children, /*#__PURE__*/_jsx(View, {
|
|
62
|
+
className: cn(badgeIndicatorVariants({
|
|
63
|
+
variant,
|
|
64
|
+
color,
|
|
65
|
+
placement,
|
|
66
|
+
overlap
|
|
67
|
+
})),
|
|
68
|
+
style: INDICATOR_STYLE,
|
|
69
|
+
accessible: !isDecorative,
|
|
70
|
+
accessibilityLabel: accessibilityLabel,
|
|
71
|
+
"aria-hidden": isDecorative,
|
|
72
|
+
accessibilityElementsHidden: isDecorative,
|
|
73
|
+
importantForAccessibility: isDecorative ? 'no-hide-descendants' : 'auto',
|
|
74
|
+
...dataAttributes({
|
|
75
|
+
slot: 'badge-indicator'
|
|
76
|
+
}),
|
|
77
|
+
children: renderContent()
|
|
78
|
+
})]
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
Badge.displayName = 'Badge';
|
|
82
|
+
export { Badge };
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","Text","View","dataAttributes","mergeDataAttributes","cn","Icon","badgeIconVariants","badgeIndicatorVariants","badgeLabelVariants","badgeRootVariants","jsx","_jsx","jsxs","_jsxs","INDICATOR_STYLE","pointerEvents","Badge","children","variant","color","placement","overlap","label","icon","IconComponent","accessibilityLabel","className","style","props","ref","isDecorative","renderContent","as","slot","hasChildren","standalone","accessible","accessibilityElementsHidden","importantForAccessibility","displayName"],"sourceRoot":"../../../../src","sources":["components/Badge/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAwB,OAAO;AAClD,SAASC,IAAI,EAAEC,IAAI,QAAwB,cAAc;AACzD,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,oBAAoB;AACxE,SAASC,EAAE,QAAQ,eAAe;AAElC,SAASC,IAAI,QAAQ,SAAS;AAC9B,SACEC,iBAAiB,EACjBC,sBAAsB,EACtBC,kBAAkB,EAClBC,iBAAiB,QAEZ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElB,MAAMC,eAAe,GAAG;EAAEC,aAAa,EAAE;AAAgB,CAAC;AAS1D,MAAMC,KAAK,gBAAGjB,UAAU,CACtB,CACE;EACEkB,QAAQ;EACRC,OAAO,GAAG,SAAS;EACnBC,KAAK,GAAG,QAAQ;EAChBC,SAAS,GAAG,SAAS;EACrBC,OAAO,GAAG,aAAa;EACvBC,KAAK;EACLC,IAAI,EAAEC,aAAa;EACnBC,kBAAkB;EAClBC,SAAS;EACTC,KAAK;EACL,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAMC,YAAY,GAAGZ,OAAO,KAAK,KAAK,IAAI,CAACO,kBAAkB;EAE7D,MAAMM,aAAa,GAAGA,CAAA,KAAM;IAC1B,IAAIb,OAAO,KAAK,KAAK,EAAE,OAAO,IAAI;IAClC,IAAIM,aAAa,EAAE;MACjB,oBAAOb,IAAA,CAACN,IAAI;QAAC2B,EAAE,EAAER,aAAc;QAACE,SAAS,EAAEpB,iBAAiB,CAAC;UAAEa;QAAM,CAAC;MAAE,CAAE,CAAC;IAC7E;IACA,IAAI,OAAOG,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC1D,oBACEX,IAAA,CAACX,IAAI;QACH0B,SAAS,EAAElB,kBAAkB,CAAC;UAAEW;QAAM,CAAC,CAAE;QAAA,GACrCjB,cAAc,CAAC;UAAE+B,IAAI,EAAE;QAAc,CAAC,CAAC;QAAAhB,QAAA,EAE1CK;MAAK,CACF,CAAC;IAEX;IACA,OAAOA,KAAK,IAAI,IAAI;EACtB,CAAC;EAED,MAAMY,WAAW,GAAGjB,QAAQ,IAAI,IAAI;EAEpC,oBACEJ,KAAA,CAACZ,IAAI;IACH4B,GAAG,EAAEA,GAAI;IACTH,SAAS,EAAEtB,EAAE,CAACK,iBAAiB,CAAC;MAAE0B,UAAU,EAAE,CAACD;IAAY,CAAC,CAAC,EAAER,SAAS,CAAE;IAC1EC,KAAK,EAAEA,KAAM;IAAA,GACTC,KAAK;IAAA,GACLzB,mBAAmB,CAACyB,KAAK,EAAE1B,cAAc,CAAC;MAAE+B,IAAI,EAAE;IAAQ,CAAC,CAAC,CAAC;IAAAhB,QAAA,GAEhEA,QAAQ,eACTN,IAAA,CAACV,IAAI;MACHyB,SAAS,EAAEtB,EAAE,CAACG,sBAAsB,CAAC;QAAEW,OAAO;QAAEC,KAAK;QAAEC,SAAS;QAAEC;MAAQ,CAAC,CAAC,CAAE;MAC9EM,KAAK,EAAEb,eAAgB;MACvBsB,UAAU,EAAE,CAACN,YAAa;MAC1BL,kBAAkB,EAAEA,kBAAmB;MACvC,eAAaK,YAAa;MAC1BO,2BAA2B,EAAEP,YAAa;MAC1CQ,yBAAyB,EAAER,YAAY,GAAG,qBAAqB,GAAG,MAAO;MAAA,GACrE5B,cAAc,CAAC;QAAE+B,IAAI,EAAE;MAAkB,CAAC,CAAC;MAAAhB,QAAA,EAE9Cc,aAAa,CAAC;IAAC,CACZ,CAAC;EAAA,CACH,CAAC;AAEX,CACF,CAAC;AACDf,KAAK,CAACuB,WAAW,GAAG,OAAO;AAE3B,SAASvB,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { TRANSITION_COLORS } from '../../styles/primitives';
|
|
5
|
+
export const badgeRootVariants = cva(['relative self-start'], {
|
|
6
|
+
variants: {
|
|
7
|
+
standalone: {
|
|
8
|
+
true: 'inline-flex',
|
|
9
|
+
false: ''
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
standalone: false
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
export const badgeIndicatorVariants = cva(['absolute items-center justify-center overflow-hidden', 'rounded-[var(--border-radius-round)]', 'border border-surface-primary', TRANSITION_COLORS], {
|
|
17
|
+
variants: {
|
|
18
|
+
variant: {
|
|
19
|
+
default: 'h-5 min-w-5 px-1',
|
|
20
|
+
dot: 'h-2 w-2 min-w-0 px-0'
|
|
21
|
+
},
|
|
22
|
+
color: {
|
|
23
|
+
action: 'bg-surface-action-strong',
|
|
24
|
+
danger: 'bg-surface-danger-strong',
|
|
25
|
+
warning: 'bg-surface-warning-strong',
|
|
26
|
+
success: 'bg-surface-success-strong',
|
|
27
|
+
info: 'bg-surface-info-strong'
|
|
28
|
+
},
|
|
29
|
+
placement: {
|
|
30
|
+
'top-start': 'top-0 ltr:left-0 rtl:right-0',
|
|
31
|
+
'top-end': 'top-0 ltr:right-0 rtl:left-0',
|
|
32
|
+
'bottom-start': 'bottom-0 ltr:left-0 rtl:right-0',
|
|
33
|
+
'bottom-end': 'bottom-0 ltr:right-0 rtl:left-0'
|
|
34
|
+
},
|
|
35
|
+
overlap: {
|
|
36
|
+
circular: '',
|
|
37
|
+
rectangular: ''
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
compoundVariants: [
|
|
41
|
+
// Positioning model (mirrors MUI Badge): the indicator is always centered on an
|
|
42
|
+
// anchor point via a 50% self-translate, so it straddles that point regardless of
|
|
43
|
+
// its own size (dot vs default). `overlap` only moves the anchor point.
|
|
44
|
+
//
|
|
45
|
+
// Translate uses arbitrary `[50%]` (not the `1/2` fraction utility) because the
|
|
46
|
+
// fraction sugar is web-only in Uniwind — Avatar's badge uses `[N%]` translate on
|
|
47
|
+
// native, Toast gates `-translate-x-1/2` behind `web:`.
|
|
48
|
+
//
|
|
49
|
+
// rectangular: anchor at the host's true bounding-box corner.
|
|
50
|
+
{
|
|
51
|
+
placement: 'top-end',
|
|
52
|
+
overlap: 'rectangular',
|
|
53
|
+
className: 'ltr:translate-x-[50%] rtl:-translate-x-[50%] -translate-y-[50%]'
|
|
54
|
+
}, {
|
|
55
|
+
placement: 'top-start',
|
|
56
|
+
overlap: 'rectangular',
|
|
57
|
+
className: 'ltr:-translate-x-[50%] rtl:translate-x-[50%] -translate-y-[50%]'
|
|
58
|
+
}, {
|
|
59
|
+
placement: 'bottom-end',
|
|
60
|
+
overlap: 'rectangular',
|
|
61
|
+
className: 'ltr:translate-x-[50%] rtl:-translate-x-[50%] translate-y-[50%]'
|
|
62
|
+
}, {
|
|
63
|
+
placement: 'bottom-start',
|
|
64
|
+
overlap: 'rectangular',
|
|
65
|
+
className: 'ltr:-translate-x-[50%] rtl:translate-x-[50%] translate-y-[50%]'
|
|
66
|
+
},
|
|
67
|
+
// circular: anchor inset 14% from each edge — the ~45° point of the inscribed
|
|
68
|
+
// circle ((1 - √2/2)/2 ≈ 14.6%, rounded to 14% per MUI) — so the indicator sits
|
|
69
|
+
// on the host's visible arc. The inset is host-relative (percent of the wrapper,
|
|
70
|
+
// which hugs the host), keeping it independent of the indicator's own size.
|
|
71
|
+
{
|
|
72
|
+
placement: 'top-end',
|
|
73
|
+
overlap: 'circular',
|
|
74
|
+
className: 'top-[14%] ltr:right-[14%] rtl:left-[14%] ltr:translate-x-[50%] rtl:-translate-x-[50%] -translate-y-[50%]'
|
|
75
|
+
}, {
|
|
76
|
+
placement: 'top-start',
|
|
77
|
+
overlap: 'circular',
|
|
78
|
+
className: 'top-[14%] ltr:left-[14%] rtl:right-[14%] ltr:-translate-x-[50%] rtl:translate-x-[50%] -translate-y-[50%]'
|
|
79
|
+
}, {
|
|
80
|
+
placement: 'bottom-end',
|
|
81
|
+
overlap: 'circular',
|
|
82
|
+
className: 'bottom-[14%] ltr:right-[14%] rtl:left-[14%] ltr:translate-x-[50%] rtl:-translate-x-[50%] translate-y-[50%]'
|
|
83
|
+
}, {
|
|
84
|
+
placement: 'bottom-start',
|
|
85
|
+
overlap: 'circular',
|
|
86
|
+
className: 'bottom-[14%] ltr:left-[14%] rtl:right-[14%] ltr:-translate-x-[50%] rtl:translate-x-[50%] translate-y-[50%]'
|
|
87
|
+
}],
|
|
88
|
+
defaultVariants: {
|
|
89
|
+
variant: 'default',
|
|
90
|
+
color: 'action',
|
|
91
|
+
placement: 'top-end',
|
|
92
|
+
overlap: 'rectangular'
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
export const badgeLabelVariants = cva(['body-sm font-medium text-center'], {
|
|
96
|
+
variants: {
|
|
97
|
+
color: {
|
|
98
|
+
action: 'text-content-action-on-strong',
|
|
99
|
+
danger: 'text-content-danger-on-strong',
|
|
100
|
+
warning: 'text-content-warning-on-strong',
|
|
101
|
+
success: 'text-content-success-on-strong',
|
|
102
|
+
info: 'text-content-info-on-strong'
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
defaultVariants: {
|
|
106
|
+
color: 'action'
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
export const badgeIconVariants = cva(['size-3'], {
|
|
110
|
+
variants: {
|
|
111
|
+
color: {
|
|
112
|
+
action: 'text-content-action-on-strong',
|
|
113
|
+
danger: 'text-content-danger-on-strong',
|
|
114
|
+
warning: 'text-content-warning-on-strong',
|
|
115
|
+
success: 'text-content-success-on-strong',
|
|
116
|
+
info: 'text-content-info-on-strong'
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
defaultVariants: {
|
|
120
|
+
color: 'action'
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cva","TRANSITION_COLORS","badgeRootVariants","variants","standalone","true","false","defaultVariants","badgeIndicatorVariants","variant","default","dot","color","action","danger","warning","success","info","placement","overlap","circular","rectangular","compoundVariants","className","badgeLabelVariants","badgeIconVariants"],"sourceRoot":"../../../../src","sources":["components/Badge/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,eAAe;AAC7B,cAAc,OAAO;AACrB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,qBAAqB;AACnC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,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,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,iBAAiB;AAC/B,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,qBAAqB;AACnC,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,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,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--Components?node-id=6866-4851
|
|
4
|
+
// source=packages/components/src/components/Badge/index.tsx
|
|
5
|
+
// component=Badge
|
|
6
|
+
import figma from 'figma';
|
|
7
|
+
const instance = figma.selectedInstance;
|
|
8
|
+
|
|
9
|
+
// Figma variant → code: dot → "dot"; number/icon → "default" (omitted, content prop differentiates).
|
|
10
|
+
const figmaVariant = instance.getEnum('variant', {
|
|
11
|
+
number: 'number',
|
|
12
|
+
dot: 'dot',
|
|
13
|
+
icon: 'icon'
|
|
14
|
+
});
|
|
15
|
+
const color = instance.getEnum('color', {
|
|
16
|
+
action: 'action',
|
|
17
|
+
danger: 'danger',
|
|
18
|
+
warning: 'warning',
|
|
19
|
+
success: 'success',
|
|
20
|
+
info: 'info'
|
|
21
|
+
});
|
|
22
|
+
const labelText = figmaVariant === 'number' ? instance.findText('Badge.Content')?.textContent : undefined;
|
|
23
|
+
const iconResult = figmaVariant === 'icon' ? instance.getInstanceSwap('Badge.Icon')?.executeTemplate() : undefined;
|
|
24
|
+
const iconName = iconResult?.metadata?.props?.componentName;
|
|
25
|
+
const iconSnippet = iconName ?? iconResult?.example;
|
|
26
|
+
const iconImports = iconName ? [`import { ${iconName} } from '@cdx-ui/icons'`] : [];
|
|
27
|
+
|
|
28
|
+
// Emit variant only for dot (default is the code default and needs no prop).
|
|
29
|
+
const variantProp = figmaVariant === 'dot' ? figma.code` variant="dot"` : '';
|
|
30
|
+
const labelProp = labelText ? figma.code` label="${labelText}"` : '';
|
|
31
|
+
const iconProp = figmaVariant === 'icon' ? figma.code` icon={${iconSnippet}}` : '';
|
|
32
|
+
export default {
|
|
33
|
+
id: 'badge-indicator',
|
|
34
|
+
imports: ["import { Badge } from '@cdx-ui/components'", ...iconImports],
|
|
35
|
+
metadata: {
|
|
36
|
+
nestable: true
|
|
37
|
+
},
|
|
38
|
+
example: figma.code`
|
|
39
|
+
<Badge${variantProp} color="${color}"${labelProp}${iconProp} />`
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=Badge.Indicator.figma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["figma","instance","selectedInstance","figmaVariant","getEnum","number","dot","icon","color","action","danger","warning","success","info","labelText","findText","textContent","undefined","iconResult","getInstanceSwap","executeTemplate","iconName","metadata","props","componentName","iconSnippet","example","iconImports","variantProp","code","labelProp","iconProp","id","imports","nestable"],"sourceRoot":"../../../src","sources":["figma/Badge.Indicator.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;;AAEvC;AACA,MAAMC,YAAY,GAAGF,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE;EAAEC,MAAM,EAAE,QAAQ;EAAEC,GAAG,EAAE,KAAK;EAAEC,IAAI,EAAE;AAAO,CAAC,CAAC;AAChG,MAAMC,KAAK,GAAGP,QAAQ,CAACG,OAAO,CAAC,OAAO,EAAE;EACtCK,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAAC,CAAC;AAEF,MAAMC,SAAS,GACbX,YAAY,KAAK,QAAQ,GACpBF,QAAQ,CAACc,QAAQ,CAAC,eAAe,CAAC,EAAiCC,WAAW,GAC/EC,SAAS;AAEf,MAAMC,UAAU,GACdf,YAAY,KAAK,MAAM,GAAGF,QAAQ,CAACkB,eAAe,CAAC,YAAY,CAAC,EAAEC,eAAe,CAAC,CAAC,GAAGH,SAAS;AACjG,MAAMI,QAAQ,GAAGH,UAAU,EAAEI,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AACjF,MAAMC,WAAW,GAAGJ,QAAQ,IAAIH,UAAU,EAAEQ,OAAO;AACnD,MAAMC,WAAW,GAAGN,QAAQ,GAAG,CAAC,YAAYA,QAAQ,yBAAyB,CAAC,GAAG,EAAE;;AAEnF;AACA,MAAMO,WAAW,GAAGzB,YAAY,KAAK,KAAK,GAAGH,KAAK,CAAC6B,IAAI,gBAAgB,GAAG,EAAE;AAC5E,MAAMC,SAAS,GAAGhB,SAAS,GAAGd,KAAK,CAAC6B,IAAI,WAAWf,SAAS,GAAG,GAAG,EAAE;AACpE,MAAMiB,QAAQ,GAAG5B,YAAY,KAAK,MAAM,GAAGH,KAAK,CAAC6B,IAAI,UAAUJ,WAAW,GAAG,GAAG,EAAE;AAElF,eAAe;EACbO,EAAE,EAAE,iBAAiB;EACrBC,OAAO,EAAE,CAAC,4CAA4C,EAAE,GAAGN,WAAW,CAAC;EACvEL,QAAQ,EAAE;IAAEY,QAAQ,EAAE;EAAK,CAAC;EAC5BR,OAAO,EAAE1B,KAAK,CAAC6B,IAAI;AACrB,QAAQD,WAAW,WAAWpB,KAAK,IAAIsB,SAAS,GAAGC,QAAQ;AAC3D,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--Components?node-id=6894-409
|
|
4
|
+
// source=packages/components/src/components/Badge/index.tsx
|
|
5
|
+
// component=Badge
|
|
6
|
+
import figma from 'figma';
|
|
7
|
+
const instance = figma.selectedInstance;
|
|
8
|
+
|
|
9
|
+
// Figma `position` (camelCase, physical) → code `placement` prop (kebab-case, logical).
|
|
10
|
+
// `end` = right in LTR, `start` = left in LTR.
|
|
11
|
+
const placement = instance.getEnum('position', {
|
|
12
|
+
topRight: 'top-end',
|
|
13
|
+
topLeft: 'top-start',
|
|
14
|
+
bottomRight: 'bottom-end',
|
|
15
|
+
bottomLeft: 'bottom-start'
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// overlap: 1:1.
|
|
19
|
+
const overlap = instance.getEnum('overlap', {
|
|
20
|
+
rectangular: 'rectangular',
|
|
21
|
+
circular: 'circular'
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// variant/color/content/icon come from the nested Badge.Indicator.
|
|
25
|
+
// Accessed via exposed nested props (confirmed via get_context_for_code_connect).
|
|
26
|
+
// Figma variant → code: dot → "dot"; number/icon → "default" (omitted, content prop differentiates).
|
|
27
|
+
const figmaVariant = instance.getEnum('variant', {
|
|
28
|
+
number: 'number',
|
|
29
|
+
dot: 'dot',
|
|
30
|
+
icon: 'icon'
|
|
31
|
+
});
|
|
32
|
+
const color = instance.getEnum('color', {
|
|
33
|
+
action: 'action',
|
|
34
|
+
danger: 'danger',
|
|
35
|
+
warning: 'warning',
|
|
36
|
+
success: 'success',
|
|
37
|
+
info: 'info'
|
|
38
|
+
});
|
|
39
|
+
const labelText = figmaVariant === 'number' ? instance.findText('Badge.Content')?.textContent : undefined;
|
|
40
|
+
const iconResult = figmaVariant === 'icon' ? instance.getInstanceSwap('Badge.Icon')?.executeTemplate() : undefined;
|
|
41
|
+
const iconName = iconResult?.metadata?.props?.componentName;
|
|
42
|
+
const iconSnippet = iconName ?? iconResult?.example;
|
|
43
|
+
const iconImports = iconName ? [`import { ${iconName} } from '@cdx-ui/icons'`] : [];
|
|
44
|
+
|
|
45
|
+
// Emit variant only for dot (default is the code default and needs no prop).
|
|
46
|
+
const variantProp = figmaVariant === 'dot' ? figma.code` variant="dot"` : '';
|
|
47
|
+
const labelProp = labelText ? figma.code` label="${labelText}"` : '';
|
|
48
|
+
const iconProp = figmaVariant === 'icon' ? figma.code` icon={${iconSnippet}}` : '';
|
|
49
|
+
const childrenSlot = instance.getSlot('children');
|
|
50
|
+
const children = childrenSlot ? figma.helpers.react.renderChildren(childrenSlot) : null;
|
|
51
|
+
export default {
|
|
52
|
+
id: 'badge',
|
|
53
|
+
imports: ["import { Badge } from '@cdx-ui/components'", ...iconImports],
|
|
54
|
+
example: figma.code`
|
|
55
|
+
<Badge${variantProp} color="${color}" placement="${placement}" overlap="${overlap}"${labelProp}${iconProp}>
|
|
56
|
+
${children}
|
|
57
|
+
</Badge>`
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=Badge.figma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["figma","instance","selectedInstance","placement","getEnum","topRight","topLeft","bottomRight","bottomLeft","overlap","rectangular","circular","figmaVariant","number","dot","icon","color","action","danger","warning","success","info","labelText","findText","textContent","undefined","iconResult","getInstanceSwap","executeTemplate","iconName","metadata","props","componentName","iconSnippet","example","iconImports","variantProp","code","labelProp","iconProp","childrenSlot","getSlot","children","helpers","react","renderChildren","id","imports"],"sourceRoot":"../../../src","sources":["figma/Badge.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;;AAEvC;AACA;AACA,MAAMC,SAAS,GAAGF,QAAQ,CAACG,OAAO,CAAC,UAAU,EAAE;EAC7CC,QAAQ,EAAE,SAAS;EACnBC,OAAO,EAAE,WAAW;EACpBC,WAAW,EAAE,YAAY;EACzBC,UAAU,EAAE;AACd,CAAC,CAAC;;AAEF;AACA,MAAMC,OAAO,GAAGR,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE;EAC1CM,WAAW,EAAE,aAAa;EAC1BC,QAAQ,EAAE;AACZ,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMC,YAAY,GAAGX,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE;EAAES,MAAM,EAAE,QAAQ;EAAEC,GAAG,EAAE,KAAK;EAAEC,IAAI,EAAE;AAAO,CAAC,CAAC;AAChG,MAAMC,KAAK,GAAGf,QAAQ,CAACG,OAAO,CAAC,OAAO,EAAE;EACtCa,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAAC,CAAC;AAEF,MAAMC,SAAS,GACbV,YAAY,KAAK,QAAQ,GACpBX,QAAQ,CAACsB,QAAQ,CAAC,eAAe,CAAC,EAAiCC,WAAW,GAC/EC,SAAS;AAEf,MAAMC,UAAU,GACdd,YAAY,KAAK,MAAM,GAAGX,QAAQ,CAAC0B,eAAe,CAAC,YAAY,CAAC,EAAEC,eAAe,CAAC,CAAC,GAAGH,SAAS;AACjG,MAAMI,QAAQ,GAAGH,UAAU,EAAEI,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AACjF,MAAMC,WAAW,GAAGJ,QAAQ,IAAIH,UAAU,EAAEQ,OAAO;AACnD,MAAMC,WAAW,GAAGN,QAAQ,GAAG,CAAC,YAAYA,QAAQ,yBAAyB,CAAC,GAAG,EAAE;;AAEnF;AACA,MAAMO,WAAW,GAAGxB,YAAY,KAAK,KAAK,GAAGZ,KAAK,CAACqC,IAAI,gBAAgB,GAAG,EAAE;AAC5E,MAAMC,SAAS,GAAGhB,SAAS,GAAGtB,KAAK,CAACqC,IAAI,WAAWf,SAAS,GAAG,GAAG,EAAE;AACpE,MAAMiB,QAAQ,GAAG3B,YAAY,KAAK,MAAM,GAAGZ,KAAK,CAACqC,IAAI,UAAUJ,WAAW,GAAG,GAAG,EAAE;AAElF,MAAMO,YAAY,GAAGvC,QAAQ,CAACwC,OAAO,CAAC,UAAU,CAAC;AACjD,MAAMC,QAAQ,GAAGF,YAAY,GAAGxC,KAAK,CAAC2C,OAAO,CAACC,KAAK,CAACC,cAAc,CAACL,YAAY,CAAC,GAAG,IAAI;AAEvF,eAAe;EACbM,EAAE,EAAE,OAAO;EACXC,OAAO,EAAE,CAAC,4CAA4C,EAAE,GAAGZ,WAAW,CAAC;EACvED,OAAO,EAAElC,KAAK,CAACqC,IAAI;AACrB,QAAQD,WAAW,WAAWpB,KAAK,gBAAgBb,SAAS,cAAcM,OAAO,IAAI6B,SAAS,GAAGC,QAAQ;AACzG,IAAIG,QAAQ;AACZ;AACA,CAAC","ignoreList":[]}
|
|
@@ -27,11 +27,19 @@ declare const AvatarIcon: {
|
|
|
27
27
|
({ asChild, className, style, ...props }: AvatarIconProps): import("react/jsx-runtime").JSX.Element;
|
|
28
28
|
displayName: string;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated Use the generic `Badge` component instead.
|
|
32
|
+
* Wrap your `Avatar` in `<Badge placement="bottom-end" overlap="circular">` for equivalent behavior.
|
|
33
|
+
*/
|
|
30
34
|
export interface AvatarBadgeProps extends ViewProps {
|
|
31
35
|
asChild?: boolean;
|
|
32
36
|
className?: string;
|
|
33
37
|
children?: ReactNode;
|
|
34
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated Use the generic `Badge` component instead.
|
|
41
|
+
* Wrap your `Avatar` in `<Badge placement="bottom-end" overlap="circular">` for equivalent behavior.
|
|
42
|
+
*/
|
|
35
43
|
declare const AvatarBadge: import("react").ForwardRefExoticComponent<AvatarBadgeProps & import("react").RefAttributes<View>>;
|
|
36
44
|
type AvatarCompoundComponent = typeof AvatarRoot & {
|
|
37
45
|
Image: typeof AvatarImage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,UAAU,CAAC;AAgClB,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,YAAY,EAAE,kBAAkB;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,8FAqBf,CAAC;AAQF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,WAAW,oGAyChB,CAAC;AAQF,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,kGAuBf,CAAC;AAQF,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,UAAU;8CAA6C,eAAe;;CAyB3E,CAAC;AAQF,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,WAAW,mGAkBhB,CAAC;AAQF,KAAK,uBAAuB,GAAG,OAAO,UAAU,GAAG;IACjD,KAAK,EAAE,OAAO,WAAW,CAAC;IAC1B,IAAI,EAAE,OAAO,UAAU,CAAC;IACxB,IAAI,EAAE,OAAO,UAAU,CAAC;IACxB,KAAK,EAAE,OAAO,WAAW,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,MAAM,EAKb,uBAAuB,CAAC;AAE9B,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,UAAU,CAAC;AAgClB,MAAM,WAAW,WAAY,SAAQ,SAAS,EAAE,YAAY,EAAE,kBAAkB;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,8FAqBf,CAAC;AAQF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,WAAW,oGAyChB,CAAC;AAQF,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,QAAA,MAAM,UAAU,kGAuBf,CAAC;AAQF,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,UAAU;8CAA6C,eAAe;;CAyB3E,CAAC;AAQF;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,mGAkBhB,CAAC;AAQF,KAAK,uBAAuB,GAAG,OAAO,UAAU,GAAG;IACjD,KAAK,EAAE,OAAO,WAAW,CAAC;IAC1B,IAAI,EAAE,OAAO,UAAU,CAAC;IACxB,IAAI,EAAE,OAAO,UAAU,CAAC;IACxB,KAAK,EAAE,OAAO,WAAW,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,MAAM,EAKb,uBAAuB,CAAC;AAE9B,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { View, type ViewProps } from 'react-native';
|
|
3
|
+
import type { ForgeIcon } from '@cdx-ui/icons';
|
|
4
|
+
import { type BadgeVariantProps } from './styles';
|
|
5
|
+
export interface BadgeProps extends ViewProps, BadgeVariantProps {
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
label?: ReactNode;
|
|
8
|
+
icon?: ForgeIcon;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<View>>;
|
|
12
|
+
export { Badge };
|
|
13
|
+
export type { BadgeVariantProps } from './styles';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAQ,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,UAAW,SAAQ,SAAS,EAAE,iBAAiB;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,KAAK,6FA+DV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
export declare const badgeRootVariants: (props?: ({
|
|
3
|
+
standalone?: boolean | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
export declare const badgeIndicatorVariants: (props?: ({
|
|
6
|
+
variant?: "default" | "dot" | null | undefined;
|
|
7
|
+
color?: "danger" | "warning" | "success" | "info" | "action" | null | undefined;
|
|
8
|
+
placement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | null | undefined;
|
|
9
|
+
overlap?: "circular" | "rectangular" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
export declare const badgeLabelVariants: (props?: ({
|
|
12
|
+
color?: "danger" | "warning" | "success" | "info" | "action" | null | undefined;
|
|
13
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
14
|
+
export declare const badgeIconVariants: (props?: ({
|
|
15
|
+
color?: "danger" | "warning" | "success" | "info" | "action" | null | undefined;
|
|
16
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
17
|
+
export type BadgeVariantProps = VariantProps<typeof badgeIndicatorVariants>;
|
|
18
|
+
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Badge/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,eAAO,MAAM,iBAAiB;;8EAQ5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;8EA8FlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;8EAW7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;8EAW5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,sBAAsB,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,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,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,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.Indicator.figma.d.ts","sourceRoot":"","sources":["../../../src/figma/Badge.Indicator.figma.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;;;;AA8B1B,wBAME"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.figma.d.ts","sourceRoot":"","sources":["../../../src/figma/Badge.figma.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;AAkD1B,wBAOE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdx-ui/components",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.95",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"module": "lib/module/index.js",
|
|
6
6
|
"react-native": "src/index.ts",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"@gorhom/bottom-sheet": "^5.2.6",
|
|
68
68
|
"class-variance-authority": "^0.7.1",
|
|
69
69
|
"uniwind": "1.10.0",
|
|
70
|
-
"@cdx-ui/primitives": "0.0.1-beta.
|
|
71
|
-
"@cdx-ui/utils": "0.0.1-beta.
|
|
72
|
-
"@cdx-ui/icons": "0.0.1-beta.
|
|
70
|
+
"@cdx-ui/primitives": "0.0.1-beta.95",
|
|
71
|
+
"@cdx-ui/utils": "0.0.1-beta.95",
|
|
72
|
+
"@cdx-ui/icons": "0.0.1-beta.95"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@react-navigation/bottom-tabs": "*",
|
|
@@ -213,12 +213,20 @@ AvatarIcon.displayName = 'Avatar.Icon';
|
|
|
213
213
|
// AVATAR BADGE
|
|
214
214
|
// =============================================================================
|
|
215
215
|
|
|
216
|
+
/**
|
|
217
|
+
* @deprecated Use the generic `Badge` component instead.
|
|
218
|
+
* Wrap your `Avatar` in `<Badge placement="bottom-end" overlap="circular">` for equivalent behavior.
|
|
219
|
+
*/
|
|
216
220
|
export interface AvatarBadgeProps extends ViewProps {
|
|
217
221
|
asChild?: boolean;
|
|
218
222
|
className?: string;
|
|
219
223
|
children?: ReactNode;
|
|
220
224
|
}
|
|
221
225
|
|
|
226
|
+
/**
|
|
227
|
+
* @deprecated Use the generic `Badge` component instead.
|
|
228
|
+
* Wrap your `Avatar` in `<Badge placement="bottom-end" overlap="circular">` for equivalent behavior.
|
|
229
|
+
*/
|
|
222
230
|
const AvatarBadge = forwardRef<View, AvatarBadgeProps>(
|
|
223
231
|
({ asChild, className, children, style, ...props }, ref) => {
|
|
224
232
|
const { size } = useAvatarStyleContext();
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { Text, View, type ViewProps } from 'react-native';
|
|
3
|
+
import { dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
|
|
4
|
+
import { cn } from '@cdx-ui/utils';
|
|
5
|
+
import type { ForgeIcon } from '@cdx-ui/icons';
|
|
6
|
+
import { Icon } from '../Icon';
|
|
7
|
+
import {
|
|
8
|
+
badgeIconVariants,
|
|
9
|
+
badgeIndicatorVariants,
|
|
10
|
+
badgeLabelVariants,
|
|
11
|
+
badgeRootVariants,
|
|
12
|
+
type BadgeVariantProps,
|
|
13
|
+
} from './styles';
|
|
14
|
+
|
|
15
|
+
const INDICATOR_STYLE = { pointerEvents: 'none' as const };
|
|
16
|
+
|
|
17
|
+
export interface BadgeProps extends ViewProps, BadgeVariantProps {
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
label?: ReactNode;
|
|
20
|
+
icon?: ForgeIcon;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const Badge = forwardRef<View, BadgeProps>(
|
|
25
|
+
(
|
|
26
|
+
{
|
|
27
|
+
children,
|
|
28
|
+
variant = 'default',
|
|
29
|
+
color = 'action',
|
|
30
|
+
placement = 'top-end',
|
|
31
|
+
overlap = 'rectangular',
|
|
32
|
+
label,
|
|
33
|
+
icon: IconComponent,
|
|
34
|
+
accessibilityLabel,
|
|
35
|
+
className,
|
|
36
|
+
style,
|
|
37
|
+
...props
|
|
38
|
+
},
|
|
39
|
+
ref,
|
|
40
|
+
) => {
|
|
41
|
+
const isDecorative = variant === 'dot' || !accessibilityLabel;
|
|
42
|
+
|
|
43
|
+
const renderContent = () => {
|
|
44
|
+
if (variant === 'dot') return null;
|
|
45
|
+
if (IconComponent) {
|
|
46
|
+
return <Icon as={IconComponent} className={badgeIconVariants({ color })} />;
|
|
47
|
+
}
|
|
48
|
+
if (typeof label === 'string' || typeof label === 'number') {
|
|
49
|
+
return (
|
|
50
|
+
<Text
|
|
51
|
+
className={badgeLabelVariants({ color })}
|
|
52
|
+
{...dataAttributes({ slot: 'badge-label' })}
|
|
53
|
+
>
|
|
54
|
+
{label}
|
|
55
|
+
</Text>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
return label ?? null;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const hasChildren = children != null;
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<View
|
|
65
|
+
ref={ref}
|
|
66
|
+
className={cn(badgeRootVariants({ standalone: !hasChildren }), className)}
|
|
67
|
+
style={style}
|
|
68
|
+
{...props}
|
|
69
|
+
{...mergeDataAttributes(props, dataAttributes({ slot: 'badge' }))}
|
|
70
|
+
>
|
|
71
|
+
{children}
|
|
72
|
+
<View
|
|
73
|
+
className={cn(badgeIndicatorVariants({ variant, color, placement, overlap }))}
|
|
74
|
+
style={INDICATOR_STYLE}
|
|
75
|
+
accessible={!isDecorative}
|
|
76
|
+
accessibilityLabel={accessibilityLabel}
|
|
77
|
+
aria-hidden={isDecorative}
|
|
78
|
+
accessibilityElementsHidden={isDecorative}
|
|
79
|
+
importantForAccessibility={isDecorative ? 'no-hide-descendants' : 'auto'}
|
|
80
|
+
{...dataAttributes({ slot: 'badge-indicator' })}
|
|
81
|
+
>
|
|
82
|
+
{renderContent()}
|
|
83
|
+
</View>
|
|
84
|
+
</View>
|
|
85
|
+
);
|
|
86
|
+
},
|
|
87
|
+
);
|
|
88
|
+
Badge.displayName = 'Badge';
|
|
89
|
+
|
|
90
|
+
export { Badge };
|
|
91
|
+
export type { BadgeVariantProps } from './styles';
|