@cdx-ui/components 0.0.1-beta.36 → 0.0.1-beta.37

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.
@@ -27,7 +27,7 @@ const AvatarPrimitive = (0, _primitives.createAvatar)({
27
27
  // =============================================================================
28
28
 
29
29
  const AvatarRoot = /*#__PURE__*/(0, _react.forwardRef)(({
30
- size = 'lg',
30
+ size = 'md',
31
31
  className,
32
32
  children,
33
33
  style,
@@ -5,76 +5,83 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.avatarTextVariants = exports.avatarRootVariants = exports.avatarImageVariants = exports.avatarIconVariants = exports.avatarBadgeVariants = void 0;
7
7
  var _classVarianceAuthority = require("class-variance-authority");
8
- var _primitives = require("../../styles/primitives");
9
8
  // ── Root ─────────────────────────────────────────────────
10
9
 
11
- const avatarRootVariants = exports.avatarRootVariants = (0, _classVarianceAuthority.cva)([_primitives.RADIUS_FULL, 'relative items-center justify-center', _primitives.COLOR_BG_MUTED], {
10
+ const avatarRootVariants = exports.avatarRootVariants = (0, _classVarianceAuthority.cva)(['rounded-[var(--border-radius-round)]', 'relative items-center justify-center', 'bg-surface-tertiary'], {
12
11
  variants: {
13
12
  size: {
14
- sm: 'w-8 h-8',
15
- md: 'w-10 h-10',
16
- lg: 'w-12 h-12',
17
- xl: 'w-16 h-16',
18
- '2xl': 'w-20 h-20'
13
+ '2xs': 'w-3 h-3',
14
+ xs: 'w-[18px] h-[18px]',
15
+ sm: 'w-6 h-6',
16
+ md: 'w-8 h-8',
17
+ lg: 'w-10 h-10',
18
+ xl: 'w-12 h-12',
19
+ '2xl': 'w-14 h-14'
19
20
  }
20
21
  },
21
22
  defaultVariants: {
22
- size: 'lg'
23
+ size: 'md'
23
24
  }
24
25
  });
25
26
 
26
27
  // ── Image ────────────────────────────────────────────────
27
28
 
28
- const avatarImageVariants = exports.avatarImageVariants = (0, _classVarianceAuthority.cva)(['absolute top-0 left-0 w-full h-full', _primitives.RADIUS_FULL, 'overflow-hidden']);
29
+ const avatarImageVariants = exports.avatarImageVariants = (0, _classVarianceAuthority.cva)(['absolute top-0 left-0 w-full h-full', 'rounded-[var(--border-radius-round)]', 'overflow-hidden', 'border border-stroke-secondary']);
29
30
 
30
31
  // ── Text ─────────────────────────────────────────────────
31
32
 
32
- const avatarTextVariants = exports.avatarTextVariants = (0, _classVarianceAuthority.cva)([_primitives.COLOR_TEXT_SECONDARY, 'font-semibold'], {
33
+ const avatarTextVariants = exports.avatarTextVariants = (0, _classVarianceAuthority.cva)(['text-content-primary', 'font-medium'], {
33
34
  variants: {
34
35
  size: {
36
+ '2xs': 'text-[6px]',
37
+ xs: 'text-[9px]',
35
38
  sm: 'text-xs',
36
- md: 'text-sm',
37
- lg: 'text-base',
38
- xl: 'text-xl',
39
- '2xl': 'text-2xl'
39
+ md: 'text-base',
40
+ lg: 'text-xl',
41
+ xl: 'text-2xl',
42
+ '2xl': 'text-[28px]'
40
43
  }
41
44
  },
42
45
  defaultVariants: {
43
- size: 'lg'
46
+ size: 'md'
44
47
  }
45
48
  });
46
49
 
47
50
  // ── Icon ─────────────────────────────────────────────────
48
51
 
49
- const avatarIconVariants = exports.avatarIconVariants = (0, _classVarianceAuthority.cva)([_primitives.COLOR_TEXT_SECONDARY], {
52
+ const avatarIconVariants = exports.avatarIconVariants = (0, _classVarianceAuthority.cva)(['text-content-primary'], {
50
53
  variants: {
51
54
  size: {
52
- sm: 'size-4',
53
- md: 'size-5',
54
- lg: 'size-6',
55
- xl: 'size-8',
56
- '2xl': 'size-10'
55
+ '2xs': 'size-1.5',
56
+ xs: 'size-[9px]',
57
+ sm: 'size-3',
58
+ md: 'size-4',
59
+ lg: 'size-5',
60
+ xl: 'size-6',
61
+ '2xl': 'size-7'
57
62
  }
58
63
  },
59
64
  defaultVariants: {
60
- size: 'lg'
65
+ size: 'md'
61
66
  }
62
67
  });
63
68
 
64
69
  // ── Badge ────────────────────────────────────────────────
65
70
 
66
- const avatarBadgeVariants = exports.avatarBadgeVariants = (0, _classVarianceAuthority.cva)(['absolute border-2 border-white', _primitives.RADIUS_FULL], {
71
+ const avatarBadgeVariants = exports.avatarBadgeVariants = (0, _classVarianceAuthority.cva)(['absolute border-white', 'rounded-[var(--border-radius-round)]', 'bottom-0 right-0'], {
67
72
  variants: {
68
73
  size: {
69
- sm: 'w-2.5 h-2.5 bottom-0 right-0',
70
- md: 'w-3 h-3 bottom-0 right-0',
71
- lg: 'w-3.5 h-3.5 bottom-0 right-0',
72
- xl: 'w-4 h-4 bottom-0.5 right-0.5',
73
- '2xl': 'w-5 h-5 bottom-0.5 right-0.5'
74
+ '2xs': 'w-1.5 h-1.5 border translate-x-[21%] translate-y-[21%]',
75
+ xs: 'w-2 h-2 border translate-x-[17%] translate-y-[17%]',
76
+ sm: 'w-2.5 h-2.5 border-2 translate-x-[15%] translate-y-[15%]',
77
+ md: 'w-3 h-3 border-2 translate-x-[11%] translate-y-[11%]',
78
+ lg: 'w-3.5 h-3.5 border-2 translate-x-[8%] translate-y-[8%]',
79
+ xl: 'w-4 h-4 border-2 translate-x-[6%] translate-y-[6%]',
80
+ '2xl': 'w-5 h-5 border-2 translate-x-[9%] translate-y-[9%]'
74
81
  }
75
82
  },
76
83
  defaultVariants: {
77
- size: 'lg'
84
+ size: 'md'
78
85
  }
79
86
  });
80
87
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_classVarianceAuthority","require","_primitives","avatarRootVariants","exports","cva","RADIUS_FULL","COLOR_BG_MUTED","variants","size","sm","md","lg","xl","defaultVariants","avatarImageVariants","avatarTextVariants","COLOR_TEXT_SECONDARY","avatarIconVariants","avatarBadgeVariants"],"sourceRoot":"../../../../src","sources":["components/Avatar/styles.ts"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA;;AAEO,MAAME,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,2BAAG,EACnC,CAACC,uBAAW,EAAE,sCAAsC,EAAEC,0BAAc,CAAC,EACrE;EACEC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACf,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CACF,CAAC;;AAED;;AAEO,MAAMM,mBAAmB,GAAAX,OAAA,CAAAW,mBAAA,GAAG,IAAAV,2BAAG,EAAC,CACrC,qCAAqC,EACrCC,uBAAW,EACX,iBAAiB,CAClB,CAAC;;AAEF;;AAEO,MAAMU,kBAAkB,GAAAZ,OAAA,CAAAY,kBAAA,GAAG,IAAAX,2BAAG,EAAC,CAACY,gCAAoB,EAAE,eAAe,CAAC,EAAE;EAC7ET,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,SAAS;MACb,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEO,MAAMS,kBAAkB,GAAAd,OAAA,CAAAc,kBAAA,GAAG,IAAAb,2BAAG,EAAC,CAACY,gCAAoB,CAAC,EAAE;EAC5DT,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZ,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEO,MAAMU,mBAAmB,GAAAf,OAAA,CAAAe,mBAAA,GAAG,IAAAd,2BAAG,EAAC,CAAC,gCAAgC,EAAEC,uBAAW,CAAC,EAAE;EACtFE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,8BAA8B;MAClCC,EAAE,EAAE,0BAA0B;MAC9BC,EAAE,EAAE,8BAA8B;MAClCC,EAAE,EAAE,8BAA8B;MAClC,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_classVarianceAuthority","require","avatarRootVariants","exports","cva","variants","size","xs","sm","md","lg","xl","defaultVariants","avatarImageVariants","avatarTextVariants","avatarIconVariants","avatarBadgeVariants"],"sourceRoot":"../../../../src","sources":["components/Avatar/styles.ts"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AAEA;;AAEO,MAAMC,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,2BAAG,EACnC,CACE,sCAAsC,EACtC,sCAAsC,EACtC,qBAAqB,CACtB,EACD;EACEC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,SAAS;MAChBC,EAAE,EAAE,mBAAmB;MACvBC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACf,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CACF,CAAC;;AAED;;AAEO,MAAMO,mBAAmB,GAAAV,OAAA,CAAAU,mBAAA,GAAG,IAAAT,2BAAG,EAAC,CACrC,qCAAqC,EACrC,sCAAsC,EACtC,iBAAiB,EACjB,gCAAgC,CACjC,CAAC;;AAEF;;AAEO,MAAMU,kBAAkB,GAAAX,OAAA,CAAAW,kBAAA,GAAG,IAAAV,2BAAG,EAAC,CAAC,sBAAsB,EAAE,aAAa,CAAC,EAAE;EAC7EC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,YAAY;MACnBC,EAAE,EAAE,YAAY;MAChBC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,UAAU;MACd,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEO,MAAMS,kBAAkB,GAAAZ,OAAA,CAAAY,kBAAA,GAAG,IAAAX,2BAAG,EAAC,CAAC,sBAAsB,CAAC,EAAE;EAC9DC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,UAAU;MACjBC,EAAE,EAAE,YAAY;MAChBC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZ,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEO,MAAMU,mBAAmB,GAAAb,OAAA,CAAAa,mBAAA,GAAG,IAAAZ,2BAAG,EACpC,CAAC,uBAAuB,EAAE,sCAAsC,EAAE,kBAAkB,CAAC,EACrF;EACEC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,wDAAwD;MAC/DC,EAAE,EAAE,oDAAoD;MACxDC,EAAE,EAAE,0DAA0D;MAC9DC,EAAE,EAAE,sDAAsD;MAC1DC,EAAE,EAAE,wDAAwD;MAC5DC,EAAE,EAAE,oDAAoD;MACxD,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _figma = _interopRequireDefault(require("figma"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--React-Native-Components?node-id=449-377
10
+ // source=packages/components/src/components/Avatar/index.tsx
11
+ // component=Avatar
12
+
13
+ const instance = _figma.default.selectedInstance;
14
+
15
+ // size: 1:1 mapping between Figma and code values
16
+ const size = instance.getEnum('size', {
17
+ '2xs': '2xs',
18
+ xs: 'xs',
19
+ sm: 'sm',
20
+ md: 'md',
21
+ lg: 'lg',
22
+ xl: 'xl',
23
+ '2xl': '2xl'
24
+ });
25
+
26
+ // type: VARIANT — determines which Avatar sub-component to render.
27
+ // Not a code prop; used only to choose Avatar.Image, Avatar.Text, or Avatar.Icon.
28
+ const type = instance.getEnum('type', {
29
+ image: 'image',
30
+ text: 'text',
31
+ icon: 'icon'
32
+ });
33
+
34
+ // icon: INSTANCE_SWAP → Avatar.Icon `as` prop (CdxIcon identifier).
35
+ // Prefer metadata.props.componentName exposed by icon Code Connect templates.
36
+ // Falls back to executeTemplate().example (placeholder pill) when the icon lacks Code Connect.
37
+ const iconResult = instance.getInstanceSwap('icon')?.executeTemplate();
38
+ const iconName = iconResult?.metadata?.props?.componentName;
39
+ const iconSnippet = iconName ?? iconResult?.example;
40
+ const iconImports = iconName ? [`import { ${iconName} } from '@cdx-ui/icons'`] : [];
41
+
42
+ // text: TEXT property — the initials or label rendered inside Avatar.Text
43
+ const textContent = instance.getString('text');
44
+ var _default = exports.default = {
45
+ id: 'avatar',
46
+ imports: ["import { Avatar } from '@cdx-ui/components'", ...iconImports],
47
+ example: _figma.default.code`
48
+ <Avatar size="${size}">
49
+ ${type === 'image' ? _figma.default.code`<Avatar.Image src="..." />` : null}
50
+ ${type === 'text' ? _figma.default.code`<Avatar.Text>${textContent}</Avatar.Text>` : null}
51
+ ${type === 'icon' ? _figma.default.code`<Avatar.Icon as={${iconSnippet}} />` : null}
52
+ </Avatar>`
53
+ };
54
+ //# sourceMappingURL=Avatar.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_figma","_interopRequireDefault","require","e","__esModule","default","instance","figma","selectedInstance","size","getEnum","xs","sm","md","lg","xl","type","image","text","icon","iconResult","getInstanceSwap","executeTemplate","iconName","metadata","props","componentName","iconSnippet","example","iconImports","textContent","getString","_default","exports","id","imports","code"],"sourceRoot":"../../../src","sources":["figma/Avatar.figma.ts"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAH1B;AACA;AACA;;AAGA,MAAMG,QAAQ,GAAGC,cAAK,CAACC,gBAAgB;;AAEvC;AACA,MAAMC,IAAI,GAAGH,QAAQ,CAACI,OAAO,CAAC,MAAM,EAAE;EACpC,KAAK,EAAE,KAAK;EACZC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACR,KAAK,EAAE;AACT,CAAC,CAAC;;AAEF;AACA;AACA,MAAMC,IAAI,GAAGV,QAAQ,CAACI,OAAO,CAAC,MAAM,EAAE;EACpCO,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMC,UAAU,GAAGd,QAAQ,CAACe,eAAe,CAAC,MAAM,CAAC,EAAEC,eAAe,CAAC,CAAC;AACtE,MAAMC,QAAQ,GAAGH,UAAU,EAAEI,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AACjF,MAAMC,WAAW,GAAGJ,QAAQ,IAAIH,UAAU,EAAEQ,OAAO;AAEnD,MAAMC,WAAW,GAAGN,QAAQ,GAAG,CAAC,YAAYA,QAAQ,yBAAyB,CAAC,GAAG,EAAE;;AAEnF;AACA,MAAMO,WAAW,GAAGxB,QAAQ,CAACyB,SAAS,CAAC,MAAM,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA5B,OAAA,GAEhC;EACb6B,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,CAAC,6CAA6C,EAAE,GAAGN,WAAW,CAAC;EACxED,OAAO,EAAErB,cAAK,CAAC6B,IAAI;AACrB,gBAAgB3B,IAAI;AACpB,IAAIO,IAAI,KAAK,OAAO,GAAGT,cAAK,CAAC6B,IAAI,4BAA4B,GAAG,IAAI;AACpE,IAAIpB,IAAI,KAAK,MAAM,GAAGT,cAAK,CAAC6B,IAAI,gBAAgBN,WAAW,gBAAgB,GAAG,IAAI;AAClF,IAAId,IAAI,KAAK,MAAM,GAAGT,cAAK,CAAC6B,IAAI,oBAAoBT,WAAW,MAAM,GAAG,IAAI;AAC5E;AACA,CAAC","ignoreList":[]}
@@ -23,7 +23,7 @@ const AvatarPrimitive = createAvatar({
23
23
  // =============================================================================
24
24
 
25
25
  const AvatarRoot = /*#__PURE__*/forwardRef(({
26
- size = 'lg',
26
+ size = 'md',
27
27
  className,
28
28
  children,
29
29
  style,
@@ -1,77 +1,84 @@
1
1
  "use strict";
2
2
 
3
3
  import { cva } from 'class-variance-authority';
4
- import { COLOR_BG_MUTED, COLOR_TEXT_SECONDARY, RADIUS_FULL } from '../../styles/primitives';
5
4
 
6
5
  // ── Root ─────────────────────────────────────────────────
7
6
 
8
- export const avatarRootVariants = cva([RADIUS_FULL, 'relative items-center justify-center', COLOR_BG_MUTED], {
7
+ export const avatarRootVariants = cva(['rounded-[var(--border-radius-round)]', 'relative items-center justify-center', 'bg-surface-tertiary'], {
9
8
  variants: {
10
9
  size: {
11
- sm: 'w-8 h-8',
12
- md: 'w-10 h-10',
13
- lg: 'w-12 h-12',
14
- xl: 'w-16 h-16',
15
- '2xl': 'w-20 h-20'
10
+ '2xs': 'w-3 h-3',
11
+ xs: 'w-[18px] h-[18px]',
12
+ sm: 'w-6 h-6',
13
+ md: 'w-8 h-8',
14
+ lg: 'w-10 h-10',
15
+ xl: 'w-12 h-12',
16
+ '2xl': 'w-14 h-14'
16
17
  }
17
18
  },
18
19
  defaultVariants: {
19
- size: 'lg'
20
+ size: 'md'
20
21
  }
21
22
  });
22
23
 
23
24
  // ── Image ────────────────────────────────────────────────
24
25
 
25
- export const avatarImageVariants = cva(['absolute top-0 left-0 w-full h-full', RADIUS_FULL, 'overflow-hidden']);
26
+ export const avatarImageVariants = cva(['absolute top-0 left-0 w-full h-full', 'rounded-[var(--border-radius-round)]', 'overflow-hidden', 'border border-stroke-secondary']);
26
27
 
27
28
  // ── Text ─────────────────────────────────────────────────
28
29
 
29
- export const avatarTextVariants = cva([COLOR_TEXT_SECONDARY, 'font-semibold'], {
30
+ export const avatarTextVariants = cva(['text-content-primary', 'font-medium'], {
30
31
  variants: {
31
32
  size: {
33
+ '2xs': 'text-[6px]',
34
+ xs: 'text-[9px]',
32
35
  sm: 'text-xs',
33
- md: 'text-sm',
34
- lg: 'text-base',
35
- xl: 'text-xl',
36
- '2xl': 'text-2xl'
36
+ md: 'text-base',
37
+ lg: 'text-xl',
38
+ xl: 'text-2xl',
39
+ '2xl': 'text-[28px]'
37
40
  }
38
41
  },
39
42
  defaultVariants: {
40
- size: 'lg'
43
+ size: 'md'
41
44
  }
42
45
  });
43
46
 
44
47
  // ── Icon ─────────────────────────────────────────────────
45
48
 
46
- export const avatarIconVariants = cva([COLOR_TEXT_SECONDARY], {
49
+ export const avatarIconVariants = cva(['text-content-primary'], {
47
50
  variants: {
48
51
  size: {
49
- sm: 'size-4',
50
- md: 'size-5',
51
- lg: 'size-6',
52
- xl: 'size-8',
53
- '2xl': 'size-10'
52
+ '2xs': 'size-1.5',
53
+ xs: 'size-[9px]',
54
+ sm: 'size-3',
55
+ md: 'size-4',
56
+ lg: 'size-5',
57
+ xl: 'size-6',
58
+ '2xl': 'size-7'
54
59
  }
55
60
  },
56
61
  defaultVariants: {
57
- size: 'lg'
62
+ size: 'md'
58
63
  }
59
64
  });
60
65
 
61
66
  // ── Badge ────────────────────────────────────────────────
62
67
 
63
- export const avatarBadgeVariants = cva(['absolute border-2 border-white', RADIUS_FULL], {
68
+ export const avatarBadgeVariants = cva(['absolute border-white', 'rounded-[var(--border-radius-round)]', 'bottom-0 right-0'], {
64
69
  variants: {
65
70
  size: {
66
- sm: 'w-2.5 h-2.5 bottom-0 right-0',
67
- md: 'w-3 h-3 bottom-0 right-0',
68
- lg: 'w-3.5 h-3.5 bottom-0 right-0',
69
- xl: 'w-4 h-4 bottom-0.5 right-0.5',
70
- '2xl': 'w-5 h-5 bottom-0.5 right-0.5'
71
+ '2xs': 'w-1.5 h-1.5 border translate-x-[21%] translate-y-[21%]',
72
+ xs: 'w-2 h-2 border translate-x-[17%] translate-y-[17%]',
73
+ sm: 'w-2.5 h-2.5 border-2 translate-x-[15%] translate-y-[15%]',
74
+ md: 'w-3 h-3 border-2 translate-x-[11%] translate-y-[11%]',
75
+ lg: 'w-3.5 h-3.5 border-2 translate-x-[8%] translate-y-[8%]',
76
+ xl: 'w-4 h-4 border-2 translate-x-[6%] translate-y-[6%]',
77
+ '2xl': 'w-5 h-5 border-2 translate-x-[9%] translate-y-[9%]'
71
78
  }
72
79
  },
73
80
  defaultVariants: {
74
- size: 'lg'
81
+ size: 'md'
75
82
  }
76
83
  });
77
84
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["cva","COLOR_BG_MUTED","COLOR_TEXT_SECONDARY","RADIUS_FULL","avatarRootVariants","variants","size","sm","md","lg","xl","defaultVariants","avatarImageVariants","avatarTextVariants","avatarIconVariants","avatarBadgeVariants"],"sourceRoot":"../../../../src","sources":["components/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,GAAG,QAA2B,0BAA0B;AACjE,SAASC,cAAc,EAAEC,oBAAoB,EAAEC,WAAW,QAAQ,yBAAyB;;AAE3F;;AAEA,OAAO,MAAMC,kBAAkB,GAAGJ,GAAG,CACnC,CAACG,WAAW,EAAE,sCAAsC,EAAEF,cAAc,CAAC,EACrE;EACEI,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACf,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CACF,CAAC;;AAED;;AAEA,OAAO,MAAMM,mBAAmB,GAAGZ,GAAG,CAAC,CACrC,qCAAqC,EACrCG,WAAW,EACX,iBAAiB,CAClB,CAAC;;AAEF;;AAEA,OAAO,MAAMU,kBAAkB,GAAGb,GAAG,CAAC,CAACE,oBAAoB,EAAE,eAAe,CAAC,EAAE;EAC7EG,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,SAAS;MACb,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEA,OAAO,MAAMQ,kBAAkB,GAAGd,GAAG,CAAC,CAACE,oBAAoB,CAAC,EAAE;EAC5DG,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZ,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEA,OAAO,MAAMS,mBAAmB,GAAGf,GAAG,CAAC,CAAC,gCAAgC,EAAEG,WAAW,CAAC,EAAE;EACtFE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,8BAA8B;MAClCC,EAAE,EAAE,0BAA0B;MAC9BC,EAAE,EAAE,8BAA8B;MAClCC,EAAE,EAAE,8BAA8B;MAClC,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["cva","avatarRootVariants","variants","size","xs","sm","md","lg","xl","defaultVariants","avatarImageVariants","avatarTextVariants","avatarIconVariants","avatarBadgeVariants"],"sourceRoot":"../../../../src","sources":["components/Avatar/styles.ts"],"mappings":";;AAAA,SAASA,GAAG,QAA2B,0BAA0B;;AAEjE;;AAEA,OAAO,MAAMC,kBAAkB,GAAGD,GAAG,CACnC,CACE,sCAAsC,EACtC,sCAAsC,EACtC,qBAAqB,CACtB,EACD;EACEE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,SAAS;MAChBC,EAAE,EAAE,mBAAmB;MACvBC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,WAAW;MACf,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CACF,CAAC;;AAED;;AAEA,OAAO,MAAMO,mBAAmB,GAAGV,GAAG,CAAC,CACrC,qCAAqC,EACrC,sCAAsC,EACtC,iBAAiB,EACjB,gCAAgC,CACjC,CAAC;;AAEF;;AAEA,OAAO,MAAMW,kBAAkB,GAAGX,GAAG,CAAC,CAAC,sBAAsB,EAAE,aAAa,CAAC,EAAE;EAC7EE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,YAAY;MACnBC,EAAE,EAAE,YAAY;MAChBC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,WAAW;MACfC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,UAAU;MACd,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEA,OAAO,MAAMS,kBAAkB,GAAGZ,GAAG,CAAC,CAAC,sBAAsB,CAAC,EAAE;EAC9DE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,UAAU;MACjBC,EAAE,EAAE,YAAY;MAChBC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZC,EAAE,EAAE,QAAQ;MACZ,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CAAC,CAAC;;AAEF;;AAEA,OAAO,MAAMU,mBAAmB,GAAGb,GAAG,CACpC,CAAC,uBAAuB,EAAE,sCAAsC,EAAE,kBAAkB,CAAC,EACrF;EACEE,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJ,KAAK,EAAE,wDAAwD;MAC/DC,EAAE,EAAE,oDAAoD;MACxDC,EAAE,EAAE,0DAA0D;MAC9DC,EAAE,EAAE,sDAAsD;MAC1DC,EAAE,EAAE,wDAAwD;MAC5DC,EAAE,EAAE,oDAAoD;MACxD,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,IAAI,EAAE;EACR;AACF,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--React-Native-Components?node-id=449-377
4
+ // source=packages/components/src/components/Avatar/index.tsx
5
+ // component=Avatar
6
+ import figma from 'figma';
7
+ const instance = figma.selectedInstance;
8
+
9
+ // size: 1:1 mapping between Figma and code values
10
+ const size = instance.getEnum('size', {
11
+ '2xs': '2xs',
12
+ xs: 'xs',
13
+ sm: 'sm',
14
+ md: 'md',
15
+ lg: 'lg',
16
+ xl: 'xl',
17
+ '2xl': '2xl'
18
+ });
19
+
20
+ // type: VARIANT — determines which Avatar sub-component to render.
21
+ // Not a code prop; used only to choose Avatar.Image, Avatar.Text, or Avatar.Icon.
22
+ const type = instance.getEnum('type', {
23
+ image: 'image',
24
+ text: 'text',
25
+ icon: 'icon'
26
+ });
27
+
28
+ // icon: INSTANCE_SWAP → Avatar.Icon `as` prop (CdxIcon identifier).
29
+ // Prefer metadata.props.componentName exposed by icon Code Connect templates.
30
+ // Falls back to executeTemplate().example (placeholder pill) when the icon lacks Code Connect.
31
+ const iconResult = instance.getInstanceSwap('icon')?.executeTemplate();
32
+ const iconName = iconResult?.metadata?.props?.componentName;
33
+ const iconSnippet = iconName ?? iconResult?.example;
34
+ const iconImports = iconName ? [`import { ${iconName} } from '@cdx-ui/icons'`] : [];
35
+
36
+ // text: TEXT property — the initials or label rendered inside Avatar.Text
37
+ const textContent = instance.getString('text');
38
+ export default {
39
+ id: 'avatar',
40
+ imports: ["import { Avatar } from '@cdx-ui/components'", ...iconImports],
41
+ example: figma.code`
42
+ <Avatar size="${size}">
43
+ ${type === 'image' ? figma.code`<Avatar.Image src="..." />` : null}
44
+ ${type === 'text' ? figma.code`<Avatar.Text>${textContent}</Avatar.Text>` : null}
45
+ ${type === 'icon' ? figma.code`<Avatar.Icon as={${iconSnippet}} />` : null}
46
+ </Avatar>`
47
+ };
48
+ //# sourceMappingURL=Avatar.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","size","getEnum","xs","sm","md","lg","xl","type","image","text","icon","iconResult","getInstanceSwap","executeTemplate","iconName","metadata","props","componentName","iconSnippet","example","iconImports","textContent","getString","id","imports","code"],"sourceRoot":"../../../src","sources":["figma/Avatar.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;;AAEvC;AACA,MAAMC,IAAI,GAAGF,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE;EACpC,KAAK,EAAE,KAAK;EACZC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACR,KAAK,EAAE;AACT,CAAC,CAAC;;AAEF;AACA;AACA,MAAMC,IAAI,GAAGT,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE;EACpCO,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA;AACA,MAAMC,UAAU,GAAGb,QAAQ,CAACc,eAAe,CAAC,MAAM,CAAC,EAAEC,eAAe,CAAC,CAAC;AACtE,MAAMC,QAAQ,GAAGH,UAAU,EAAEI,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AACjF,MAAMC,WAAW,GAAGJ,QAAQ,IAAIH,UAAU,EAAEQ,OAAO;AAEnD,MAAMC,WAAW,GAAGN,QAAQ,GAAG,CAAC,YAAYA,QAAQ,yBAAyB,CAAC,GAAG,EAAE;;AAEnF;AACA,MAAMO,WAAW,GAAGvB,QAAQ,CAACwB,SAAS,CAAC,MAAM,CAAC;AAE9C,eAAe;EACbC,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,CAAC,6CAA6C,EAAE,GAAGJ,WAAW,CAAC;EACxED,OAAO,EAAEtB,KAAK,CAAC4B,IAAI;AACrB,gBAAgBzB,IAAI;AACpB,IAAIO,IAAI,KAAK,OAAO,GAAGV,KAAK,CAAC4B,IAAI,4BAA4B,GAAG,IAAI;AACpE,IAAIlB,IAAI,KAAK,MAAM,GAAGV,KAAK,CAAC4B,IAAI,gBAAgBJ,WAAW,gBAAgB,GAAG,IAAI;AAClF,IAAId,IAAI,KAAK,MAAM,GAAGV,KAAK,CAAC4B,IAAI,oBAAoBP,WAAW,MAAM,GAAG,IAAI;AAC5E;AACA,CAAC","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export declare const avatarRootVariants: (props?: ({
3
- size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
3
+ size?: "sm" | "md" | "lg" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  export declare const avatarImageVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
6
6
  export declare const avatarTextVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
7
+ size?: "sm" | "md" | "lg" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export declare const avatarIconVariants: (props?: ({
10
- size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
12
  export declare const avatarBadgeVariants: (props?: ({
13
- size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
13
+ size?: "sm" | "md" | "lg" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  export type AvatarVariantProps = VariantProps<typeof avatarRootVariants>;
16
16
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,eAAO,MAAM,kBAAkB;;8EAgB9B,CAAC;AAIF,eAAO,MAAM,mBAAmB,oFAI9B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;8EAa7B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;8EAa7B,CAAC;AAIH,eAAO,MAAM,mBAAmB;;8EAa9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Avatar/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,eAAO,MAAM,kBAAkB;;8EAsB9B,CAAC;AAIF,eAAO,MAAM,mBAAmB,oFAK9B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;8EAe7B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;8EAe7B,CAAC;AAIH,eAAO,MAAM,mBAAmB;;8EAkB/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export declare const headingStyle: (props?: ({
3
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
3
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  export type HeadingVariantProps = VariantProps<typeof headingStyle>;
6
6
  //# sourceMappingURL=styles.d.ts.map
@@ -13,11 +13,11 @@ declare const spaceMap: {
13
13
  export type StackSpace = keyof typeof spaceMap;
14
14
  export declare const hStackRootVariants: (props?: ({
15
15
  reversed?: boolean | null | undefined;
16
- space?: "sm" | "md" | "lg" | "xl" | "2xl" | "xs" | "3xl" | "4xl" | "5xl" | "6xl" | null | undefined;
16
+ space?: "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | null | undefined;
17
17
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
18
18
  export declare const vStackRootVariants: (props?: ({
19
19
  reversed?: boolean | null | undefined;
20
- space?: "sm" | "md" | "lg" | "xl" | "2xl" | "xs" | "3xl" | "4xl" | "5xl" | "6xl" | null | undefined;
20
+ space?: "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | null | undefined;
21
21
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
22
22
  export {};
23
23
  //# sourceMappingURL=styles.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export declare const textStyle: (props?: ({
3
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
3
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | null | undefined;
4
4
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
5
5
  export type TextVariantProps = VariantProps<typeof textStyle>;
6
6
  //# sourceMappingURL=styles.d.ts.map
@@ -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=Avatar.figma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.figma.d.ts","sourceRoot":"","sources":["../../../src/figma/Avatar.figma.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;AAmC1B,wBASE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/components",
3
- "version": "0.0.1-beta.36",
3
+ "version": "0.0.1-beta.37",
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.6.1",
70
- "@cdx-ui/primitives": "0.0.1-beta.36",
71
- "@cdx-ui/utils": "0.0.1-beta.36",
72
- "@cdx-ui/icons": "0.0.1-beta.36"
70
+ "@cdx-ui/primitives": "0.0.1-beta.37",
71
+ "@cdx-ui/utils": "0.0.1-beta.37",
72
+ "@cdx-ui/icons": "0.0.1-beta.37"
73
73
  },
74
74
  "devDependencies": {
75
75
  "@types/react": "*",
@@ -36,7 +36,7 @@ export interface AvatarProps extends ViewProps, IAvatarProps, AvatarVariantProps
36
36
  }
37
37
 
38
38
  const AvatarRoot = forwardRef<View, AvatarProps>(
39
- ({ size = 'lg', className, children, style, ...props }, ref) => {
39
+ ({ size = 'md', className, children, style, ...props }, ref) => {
40
40
  const computedClassName = cn(avatarRootVariants({ size }), className);
41
41
 
42
42
  return (
@@ -1,22 +1,27 @@
1
1
  import { cva, type VariantProps } from 'class-variance-authority';
2
- import { COLOR_BG_MUTED, COLOR_TEXT_SECONDARY, RADIUS_FULL } from '../../styles/primitives';
3
2
 
4
3
  // ── Root ─────────────────────────────────────────────────
5
4
 
6
5
  export const avatarRootVariants = cva(
7
- [RADIUS_FULL, 'relative items-center justify-center', COLOR_BG_MUTED],
6
+ [
7
+ 'rounded-[var(--border-radius-round)]',
8
+ 'relative items-center justify-center',
9
+ 'bg-surface-tertiary',
10
+ ],
8
11
  {
9
12
  variants: {
10
13
  size: {
11
- sm: 'w-8 h-8',
12
- md: 'w-10 h-10',
13
- lg: 'w-12 h-12',
14
- xl: 'w-16 h-16',
15
- '2xl': 'w-20 h-20',
14
+ '2xs': 'w-3 h-3',
15
+ xs: 'w-[18px] h-[18px]',
16
+ sm: 'w-6 h-6',
17
+ md: 'w-8 h-8',
18
+ lg: 'w-10 h-10',
19
+ xl: 'w-12 h-12',
20
+ '2xl': 'w-14 h-14',
16
21
  },
17
22
  },
18
23
  defaultVariants: {
19
- size: 'lg',
24
+ size: 'md',
20
25
  },
21
26
  },
22
27
  );
@@ -25,59 +30,69 @@ export const avatarRootVariants = cva(
25
30
 
26
31
  export const avatarImageVariants = cva([
27
32
  'absolute top-0 left-0 w-full h-full',
28
- RADIUS_FULL,
33
+ 'rounded-[var(--border-radius-round)]',
29
34
  'overflow-hidden',
35
+ 'border border-stroke-secondary',
30
36
  ]);
31
37
 
32
38
  // ── Text ─────────────────────────────────────────────────
33
39
 
34
- export const avatarTextVariants = cva([COLOR_TEXT_SECONDARY, 'font-semibold'], {
40
+ export const avatarTextVariants = cva(['text-content-primary', 'font-medium'], {
35
41
  variants: {
36
42
  size: {
43
+ '2xs': 'text-[6px]',
44
+ xs: 'text-[9px]',
37
45
  sm: 'text-xs',
38
- md: 'text-sm',
39
- lg: 'text-base',
40
- xl: 'text-xl',
41
- '2xl': 'text-2xl',
46
+ md: 'text-base',
47
+ lg: 'text-xl',
48
+ xl: 'text-2xl',
49
+ '2xl': 'text-[28px]',
42
50
  },
43
51
  },
44
52
  defaultVariants: {
45
- size: 'lg',
53
+ size: 'md',
46
54
  },
47
55
  });
48
56
 
49
57
  // ── Icon ─────────────────────────────────────────────────
50
58
 
51
- export const avatarIconVariants = cva([COLOR_TEXT_SECONDARY], {
59
+ export const avatarIconVariants = cva(['text-content-primary'], {
52
60
  variants: {
53
61
  size: {
54
- sm: 'size-4',
55
- md: 'size-5',
56
- lg: 'size-6',
57
- xl: 'size-8',
58
- '2xl': 'size-10',
62
+ '2xs': 'size-1.5',
63
+ xs: 'size-[9px]',
64
+ sm: 'size-3',
65
+ md: 'size-4',
66
+ lg: 'size-5',
67
+ xl: 'size-6',
68
+ '2xl': 'size-7',
59
69
  },
60
70
  },
61
71
  defaultVariants: {
62
- size: 'lg',
72
+ size: 'md',
63
73
  },
64
74
  });
65
75
 
66
76
  // ── Badge ────────────────────────────────────────────────
67
77
 
68
- export const avatarBadgeVariants = cva(['absolute border-2 border-white', RADIUS_FULL], {
69
- variants: {
70
- size: {
71
- sm: 'w-2.5 h-2.5 bottom-0 right-0',
72
- md: 'w-3 h-3 bottom-0 right-0',
73
- lg: 'w-3.5 h-3.5 bottom-0 right-0',
74
- xl: 'w-4 h-4 bottom-0.5 right-0.5',
75
- '2xl': 'w-5 h-5 bottom-0.5 right-0.5',
78
+ export const avatarBadgeVariants = cva(
79
+ ['absolute border-white', 'rounded-[var(--border-radius-round)]', 'bottom-0 right-0'],
80
+ {
81
+ variants: {
82
+ size: {
83
+ '2xs': 'w-1.5 h-1.5 border translate-x-[21%] translate-y-[21%]',
84
+ xs: 'w-2 h-2 border translate-x-[17%] translate-y-[17%]',
85
+ sm: 'w-2.5 h-2.5 border-2 translate-x-[15%] translate-y-[15%]',
86
+ md: 'w-3 h-3 border-2 translate-x-[11%] translate-y-[11%]',
87
+ lg: 'w-3.5 h-3.5 border-2 translate-x-[8%] translate-y-[8%]',
88
+ xl: 'w-4 h-4 border-2 translate-x-[6%] translate-y-[6%]',
89
+ '2xl': 'w-5 h-5 border-2 translate-x-[9%] translate-y-[9%]',
90
+ },
91
+ },
92
+ defaultVariants: {
93
+ size: 'md',
76
94
  },
77
95
  },
78
- defaultVariants: {
79
- size: 'lg',
80
- },
81
- });
96
+ );
82
97
 
83
98
  export type AvatarVariantProps = VariantProps<typeof avatarRootVariants>;