@cdx-ui/components 0.0.1-beta.93 → 0.0.1-beta.94

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.
Files changed (41) hide show
  1. package/lib/commonjs/components/Avatar/index.js +9 -0
  2. package/lib/commonjs/components/Avatar/index.js.map +1 -1
  3. package/lib/commonjs/components/Badge/index.js +86 -0
  4. package/lib/commonjs/components/Badge/index.js.map +1 -0
  5. package/lib/commonjs/components/Badge/styles.js +127 -0
  6. package/lib/commonjs/components/Badge/styles.js.map +1 -0
  7. package/lib/commonjs/components/index.js +12 -0
  8. package/lib/commonjs/components/index.js.map +1 -1
  9. package/lib/commonjs/figma/Badge.Indicator.figma.js +47 -0
  10. package/lib/commonjs/figma/Badge.Indicator.figma.js.map +1 -0
  11. package/lib/commonjs/figma/Badge.figma.js +65 -0
  12. package/lib/commonjs/figma/Badge.figma.js.map +1 -0
  13. package/lib/module/components/Avatar/index.js +9 -0
  14. package/lib/module/components/Avatar/index.js.map +1 -1
  15. package/lib/module/components/Badge/index.js +83 -0
  16. package/lib/module/components/Badge/index.js.map +1 -0
  17. package/lib/module/components/Badge/styles.js +123 -0
  18. package/lib/module/components/Badge/styles.js.map +1 -0
  19. package/lib/module/components/index.js +1 -0
  20. package/lib/module/components/index.js.map +1 -1
  21. package/lib/module/figma/Badge.Indicator.figma.js +41 -0
  22. package/lib/module/figma/Badge.Indicator.figma.js.map +1 -0
  23. package/lib/module/figma/Badge.figma.js +59 -0
  24. package/lib/module/figma/Badge.figma.js.map +1 -0
  25. package/lib/typescript/components/Avatar/index.d.ts +8 -0
  26. package/lib/typescript/components/Avatar/index.d.ts.map +1 -1
  27. package/lib/typescript/components/Badge/index.d.ts +14 -0
  28. package/lib/typescript/components/Badge/index.d.ts.map +1 -0
  29. package/lib/typescript/components/Badge/styles.d.ts +18 -0
  30. package/lib/typescript/components/Badge/styles.d.ts.map +1 -0
  31. package/lib/typescript/components/index.d.ts +1 -0
  32. package/lib/typescript/components/index.d.ts.map +1 -1
  33. package/lib/typescript/figma/Badge.Indicator.figma.d.ts +11 -0
  34. package/lib/typescript/figma/Badge.Indicator.figma.d.ts.map +1 -0
  35. package/lib/typescript/figma/Badge.figma.d.ts +8 -0
  36. package/lib/typescript/figma/Badge.figma.d.ts.map +1 -0
  37. package/package.json +4 -4
  38. package/src/components/Avatar/index.tsx +8 -0
  39. package/src/components/Badge/index.tsx +91 -0
  40. package/src/components/Badge/styles.ts +136 -0
  41. package/src/components/index.ts +1 -0
@@ -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":[]}
@@ -3,6 +3,7 @@
3
3
  export * from './Alert';
4
4
  export * from './AlertDialog';
5
5
  export * from './Avatar';
6
+ export * from './Badge';
6
7
  export * from './BottomSheet';
7
8
  export * from './Box';
8
9
  export * from './Button';
@@ -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,6 +1,7 @@
1
1
  export * from './Alert';
2
2
  export * from './AlertDialog';
3
3
  export * from './Avatar';
4
+ export * from './Badge';
4
5
  export * from './BottomSheet';
5
6
  export * from './Box';
6
7
  export * from './Button';
@@ -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,11 @@
1
+ import figma from 'figma';
2
+ declare const _default: {
3
+ id: string;
4
+ imports: string[];
5
+ metadata: {
6
+ nestable: boolean;
7
+ };
8
+ example: figma.TemplateStringResult;
9
+ };
10
+ export default _default;
11
+ //# sourceMappingURL=Badge.Indicator.figma.d.ts.map
@@ -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,8 @@
1
+ import figma from 'figma';
2
+ declare const _default: {
3
+ id: string;
4
+ imports: string[];
5
+ example: figma.TemplateStringResult;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=Badge.figma.d.ts.map
@@ -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.93",
3
+ "version": "0.0.1-beta.94",
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.93",
71
- "@cdx-ui/utils": "0.0.1-beta.93",
72
- "@cdx-ui/icons": "0.0.1-beta.93"
70
+ "@cdx-ui/primitives": "0.0.1-beta.94",
71
+ "@cdx-ui/utils": "0.0.1-beta.94",
72
+ "@cdx-ui/icons": "0.0.1-beta.94"
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';