@cdx-ui/components 0.0.1-beta.2 → 0.0.1-beta.20

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 (127) hide show
  1. package/README.md +18 -11
  2. package/lib/commonjs/components/Button/styles.js +1 -1
  3. package/lib/commonjs/components/Button/styles.js.map +1 -1
  4. package/lib/commonjs/components/Card/index.js +15 -3
  5. package/lib/commonjs/components/Card/index.js.map +1 -1
  6. package/lib/commonjs/components/Card/styles.js +17 -5
  7. package/lib/commonjs/components/Card/styles.js.map +1 -1
  8. package/lib/commonjs/components/Checkbox/styles.js +1 -1
  9. package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
  10. package/lib/commonjs/components/Heading/styles.js.map +1 -1
  11. package/lib/commonjs/components/IconButton/styles.js +1 -1
  12. package/lib/commonjs/components/IconButton/styles.js.map +1 -1
  13. package/lib/commonjs/components/Input/styles.js +1 -1
  14. package/lib/commonjs/components/Input/styles.js.map +1 -1
  15. package/lib/commonjs/components/ListItem/index.js +283 -0
  16. package/lib/commonjs/components/ListItem/index.js.map +1 -0
  17. package/lib/commonjs/components/ListItem/styles.js +130 -0
  18. package/lib/commonjs/components/ListItem/styles.js.map +1 -0
  19. package/lib/commonjs/components/Radio/index.js +165 -0
  20. package/lib/commonjs/components/Radio/index.js.map +1 -0
  21. package/lib/commonjs/components/Radio/styles.js +30 -0
  22. package/lib/commonjs/components/Radio/styles.js.map +1 -0
  23. package/lib/commonjs/components/Text/styles.js +2 -2
  24. package/lib/commonjs/components/Text/styles.js.map +1 -1
  25. package/lib/commonjs/components/Tile/index.js +251 -0
  26. package/lib/commonjs/components/Tile/index.js.map +1 -0
  27. package/lib/commonjs/components/Tile/styles.js +52 -0
  28. package/lib/commonjs/components/Tile/styles.js.map +1 -0
  29. package/lib/commonjs/components/index.js +36 -0
  30. package/lib/commonjs/components/index.js.map +1 -1
  31. package/lib/commonjs/figma/Button.figma.js +69 -0
  32. package/lib/commonjs/figma/Button.figma.js.map +1 -0
  33. package/lib/commonjs/figma/Heading.figma.js +30 -0
  34. package/lib/commonjs/figma/Heading.figma.js.map +1 -0
  35. package/lib/commonjs/figma/Radio.figma.js +38 -0
  36. package/lib/commonjs/figma/Radio.figma.js.map +1 -0
  37. package/lib/commonjs/figma/Text.figma.js +29 -0
  38. package/lib/commonjs/figma/Text.figma.js.map +1 -0
  39. package/lib/commonjs/styles/primitives.js +36 -3
  40. package/lib/commonjs/styles/primitives.js.map +1 -1
  41. package/lib/module/components/Button/styles.js +1 -1
  42. package/lib/module/components/Button/styles.js.map +1 -1
  43. package/lib/module/components/Card/index.js +16 -3
  44. package/lib/module/components/Card/index.js.map +1 -1
  45. package/lib/module/components/Card/styles.js +17 -5
  46. package/lib/module/components/Card/styles.js.map +1 -1
  47. package/lib/module/components/Checkbox/styles.js +2 -2
  48. package/lib/module/components/Checkbox/styles.js.map +1 -1
  49. package/lib/module/components/Heading/styles.js.map +1 -1
  50. package/lib/module/components/IconButton/styles.js +1 -1
  51. package/lib/module/components/IconButton/styles.js.map +1 -1
  52. package/lib/module/components/Input/styles.js +1 -1
  53. package/lib/module/components/Input/styles.js.map +1 -1
  54. package/lib/module/components/ListItem/index.js +226 -0
  55. package/lib/module/components/ListItem/index.js.map +1 -0
  56. package/lib/module/components/ListItem/styles.js +127 -0
  57. package/lib/module/components/ListItem/styles.js.map +1 -0
  58. package/lib/module/components/Radio/index.js +162 -0
  59. package/lib/module/components/Radio/index.js.map +1 -0
  60. package/lib/module/components/Radio/styles.js +27 -0
  61. package/lib/module/components/Radio/styles.js.map +1 -0
  62. package/lib/module/components/Text/styles.js +2 -2
  63. package/lib/module/components/Text/styles.js.map +1 -1
  64. package/lib/module/components/Tile/index.js +243 -0
  65. package/lib/module/components/Tile/index.js.map +1 -0
  66. package/lib/module/components/Tile/styles.js +48 -0
  67. package/lib/module/components/Tile/styles.js.map +1 -0
  68. package/lib/module/components/index.js +3 -0
  69. package/lib/module/components/index.js.map +1 -1
  70. package/lib/module/figma/Button.figma.js +63 -0
  71. package/lib/module/figma/Button.figma.js.map +1 -0
  72. package/lib/module/figma/Heading.figma.js +24 -0
  73. package/lib/module/figma/Heading.figma.js.map +1 -0
  74. package/lib/module/figma/Radio.figma.js +32 -0
  75. package/lib/module/figma/Radio.figma.js.map +1 -0
  76. package/lib/module/figma/Text.figma.js +23 -0
  77. package/lib/module/figma/Text.figma.js.map +1 -0
  78. package/lib/module/styles/primitives.js +36 -3
  79. package/lib/module/styles/primitives.js.map +1 -1
  80. package/lib/typescript/components/Card/index.d.ts +3 -2
  81. package/lib/typescript/components/Card/index.d.ts.map +1 -1
  82. package/lib/typescript/components/Card/styles.d.ts +9 -2
  83. package/lib/typescript/components/Card/styles.d.ts.map +1 -1
  84. package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
  85. package/lib/typescript/components/Heading/styles.d.ts.map +1 -1
  86. package/lib/typescript/components/ListItem/index.d.ts +49 -0
  87. package/lib/typescript/components/ListItem/index.d.ts.map +1 -0
  88. package/lib/typescript/components/ListItem/styles.d.ts +30 -0
  89. package/lib/typescript/components/ListItem/styles.d.ts.map +1 -0
  90. package/lib/typescript/components/Radio/index.d.ts +40 -0
  91. package/lib/typescript/components/Radio/index.d.ts.map +1 -0
  92. package/lib/typescript/components/Radio/styles.d.ts +8 -0
  93. package/lib/typescript/components/Radio/styles.d.ts.map +1 -0
  94. package/lib/typescript/components/Text/styles.d.ts.map +1 -1
  95. package/lib/typescript/components/Tile/index.d.ts +70 -0
  96. package/lib/typescript/components/Tile/index.d.ts.map +1 -0
  97. package/lib/typescript/components/Tile/styles.d.ts +18 -0
  98. package/lib/typescript/components/Tile/styles.d.ts.map +1 -0
  99. package/lib/typescript/components/index.d.ts +3 -0
  100. package/lib/typescript/components/index.d.ts.map +1 -1
  101. package/lib/typescript/figma/Button.figma.d.ts +8 -0
  102. package/lib/typescript/figma/Button.figma.d.ts.map +1 -0
  103. package/lib/typescript/figma/Heading.figma.d.ts +8 -0
  104. package/lib/typescript/figma/Heading.figma.d.ts.map +1 -0
  105. package/lib/typescript/figma/Radio.figma.d.ts +8 -0
  106. package/lib/typescript/figma/Radio.figma.d.ts.map +1 -0
  107. package/lib/typescript/figma/Text.figma.d.ts +8 -0
  108. package/lib/typescript/figma/Text.figma.d.ts.map +1 -0
  109. package/lib/typescript/styles/primitives.d.ts +35 -0
  110. package/lib/typescript/styles/primitives.d.ts.map +1 -1
  111. package/package.json +5 -5
  112. package/src/components/Button/styles.ts +1 -1
  113. package/src/components/Card/index.tsx +33 -13
  114. package/src/components/Card/styles.ts +31 -23
  115. package/src/components/Checkbox/styles.ts +7 -9
  116. package/src/components/IconButton/styles.ts +1 -1
  117. package/src/components/Input/styles.ts +1 -1
  118. package/src/components/ListItem/index.tsx +285 -0
  119. package/src/components/ListItem/styles.ts +153 -0
  120. package/src/components/Radio/index.tsx +191 -0
  121. package/src/components/Radio/styles.ts +59 -0
  122. package/src/components/Text/{styles.tsx → styles.ts} +2 -2
  123. package/src/components/Tile/index.tsx +296 -0
  124. package/src/components/Tile/styles.ts +82 -0
  125. package/src/components/index.ts +3 -0
  126. package/src/styles/primitives.ts +36 -3
  127. /package/src/components/Heading/{styles.tsx → styles.ts} +0 -0
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ import { forwardRef } from 'react';
4
+ import { Pressable, Text, View } from 'react-native';
5
+ import { createRadio, dataAttributes } from '@cdx-ui/primitives';
6
+ import { cn } from '@cdx-ui/utils';
7
+ import { radioGroupVariants, radioIndicatorVariants, radioInnerDotVariants, radioLabelVariants, radioRootVariants } from './styles';
8
+
9
+ // =============================================================================
10
+ // STYLED INDICATOR BASE
11
+ // =============================================================================
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const RadioIndicatorBase = /*#__PURE__*/forwardRef(({
14
+ className,
15
+ children,
16
+ style,
17
+ ...props
18
+ }, ref) => {
19
+ // On web, data attributes arrive as `dataSet: { checked: true }`.
20
+ // On native, they arrive as individual `data-checked: "true"` props.
21
+ const ds = props.dataSet;
22
+ const isChecked = ds ? ds.checked === true : props['data-checked'] === 'true';
23
+ const isInvalid = ds ? ds.invalid === true : props['data-invalid'] === 'true';
24
+ return /*#__PURE__*/_jsxs(View, {
25
+ ref: ref,
26
+ className: cn(radioIndicatorVariants(), className),
27
+ style: style,
28
+ ...props,
29
+ children: [/*#__PURE__*/_jsx(View, {
30
+ className: cn(radioInnerDotVariants()),
31
+ ...dataAttributes({
32
+ checked: isChecked,
33
+ invalid: isInvalid
34
+ })
35
+ }), children]
36
+ });
37
+ });
38
+ RadioIndicatorBase.displayName = 'Radio.IndicatorBase';
39
+
40
+ // =============================================================================
41
+ // PRIMITIVE ASSEMBLY
42
+ // =============================================================================
43
+
44
+ const RadioPrimitive = createRadio({
45
+ Root: Pressable,
46
+ Indicator: RadioIndicatorBase,
47
+ Label: Text,
48
+ Group: View
49
+ });
50
+
51
+ // =============================================================================
52
+ // RADIO ROOT
53
+ // =============================================================================
54
+
55
+ const RadioRoot = /*#__PURE__*/forwardRef(({
56
+ className,
57
+ children,
58
+ style,
59
+ ...props
60
+ }, ref) => {
61
+ const computedClassName = cn(radioRootVariants(), className);
62
+ return /*#__PURE__*/_jsx(RadioPrimitive, {
63
+ ref: ref,
64
+ className: computedClassName,
65
+ style: style,
66
+ ...props,
67
+ children: children
68
+ });
69
+ });
70
+ RadioRoot.displayName = 'Radio';
71
+
72
+ // =============================================================================
73
+ // RADIO INDICATOR
74
+ // =============================================================================
75
+
76
+ const RadioIndicator = /*#__PURE__*/forwardRef(({
77
+ className,
78
+ children,
79
+ style,
80
+ ...props
81
+ }, ref) => {
82
+ return /*#__PURE__*/_jsx(RadioPrimitive.Indicator, {
83
+ ref: ref,
84
+ className: className,
85
+ style: style,
86
+ ...props,
87
+ children: children
88
+ });
89
+ });
90
+ RadioIndicator.displayName = 'Radio.Indicator';
91
+
92
+ // =============================================================================
93
+ // RADIO LABEL
94
+ // =============================================================================
95
+
96
+ const RadioLabel = /*#__PURE__*/forwardRef(({
97
+ className,
98
+ children,
99
+ style,
100
+ ...props
101
+ }, ref) => {
102
+ const computedClassName = cn(radioLabelVariants(), className);
103
+ return /*#__PURE__*/_jsx(RadioPrimitive.Label, {
104
+ ref: ref,
105
+ className: computedClassName,
106
+ style: style,
107
+ ...props,
108
+ children: children
109
+ });
110
+ });
111
+ RadioLabel.displayName = 'Radio.Label';
112
+
113
+ // =============================================================================
114
+ // RADIO GROUP
115
+ // =============================================================================
116
+
117
+ const RadioGroup = /*#__PURE__*/forwardRef(({
118
+ className,
119
+ children,
120
+ style,
121
+ direction = 'column',
122
+ value,
123
+ defaultValue,
124
+ onChange,
125
+ isDisabled,
126
+ isInvalid,
127
+ isRequired,
128
+ isReadOnly,
129
+ name,
130
+ ...viewProps
131
+ }, ref) => {
132
+ const computedClassName = cn(radioGroupVariants({
133
+ direction
134
+ }), className);
135
+ return /*#__PURE__*/_jsx(RadioPrimitive.Group, {
136
+ ref: ref,
137
+ className: computedClassName,
138
+ style: style,
139
+ value: value,
140
+ defaultValue: defaultValue,
141
+ onChange: onChange,
142
+ isDisabled: isDisabled,
143
+ isInvalid: isInvalid,
144
+ isRequired: isRequired,
145
+ isReadOnly: isReadOnly,
146
+ name: name,
147
+ ...viewProps,
148
+ children: children
149
+ });
150
+ });
151
+ RadioGroup.displayName = 'Radio.Group';
152
+
153
+ // =============================================================================
154
+ // COMPOUND COMPONENT
155
+ // =============================================================================
156
+
157
+ export const Radio = Object.assign(RadioRoot, {
158
+ Indicator: RadioIndicator,
159
+ Label: RadioLabel,
160
+ Group: RadioGroup
161
+ });
162
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","Pressable","Text","View","createRadio","dataAttributes","cn","radioGroupVariants","radioIndicatorVariants","radioInnerDotVariants","radioLabelVariants","radioRootVariants","jsx","_jsx","jsxs","_jsxs","RadioIndicatorBase","className","children","style","props","ref","ds","dataSet","isChecked","checked","isInvalid","invalid","displayName","RadioPrimitive","Root","Indicator","Label","Group","RadioRoot","computedClassName","RadioIndicator","RadioLabel","RadioGroup","direction","value","defaultValue","onChange","isDisabled","isRequired","isReadOnly","name","viewProps","Radio","Object","assign"],"sourceRoot":"../../../../src","sources":["components/Radio/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { cva } from 'class-variance-authority';
5
+ import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
6
+
7
+ // TODO: Add hover, active, and focus-visible styles based on Figma
8
+
9
+ export const radioRootVariants = cva(['flex-row items-center gap-2', 'data-[disabled=true]:opacity-[var(--opacity-disabled)]', DISABLED_CURSOR]);
10
+ export const radioIndicatorVariants = cva(['items-center justify-center', 'rounded-[var(--border-radius-round)]', 'border-[length:var(--border-width-selected)]', 'h-5 w-5', 'border-stroke-primary', 'data-[checked=false]:border-slate-300', 'bg-surface-primary', 'data-[checked=true]:border-stroke-action', 'data-[invalid=true]:border-stroke-danger', 'data-[checked=true]:data-[invalid=true]:border-stroke-danger', Platform.select({
11
+ web: [TRANSITION_COLORS, 'data-[hover=true]:data-[checked=false]:border-slate-400', 'data-[hover=true]:data-[checked=false]:bg-slate-50', 'web:data-[focus-visible=true]:outline-none', 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-offset-2', 'web:data-[focus-visible=true]:data-[checked=false]:ring-slate-400/50', 'web:data-[focus-visible=true]:data-[checked=true]:ring-stroke-focus', 'data-[invalid=true]:data-[hover=true]:border-stroke-danger', 'web:data-[invalid=true]:data-[focus-visible=true]:ring-stroke-danger'].join(' '),
12
+ default: ''
13
+ })]);
14
+ export const radioInnerDotVariants = cva(['rounded-[var(--border-radius-round)]', 'h-2.5 w-2.5', 'scale-0', 'data-[checked=true]:scale-100', 'bg-surface-action-strong', 'data-[invalid=true]:bg-surface-danger-strong']);
15
+ export const radioLabelVariants = cva(['body-md', 'text-content-primary']);
16
+ export const radioGroupVariants = cva([], {
17
+ variants: {
18
+ direction: {
19
+ column: 'gap-2',
20
+ row: 'flex-row gap-4'
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ direction: 'column'
25
+ }
26
+ });
27
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","cva","DISABLED_CURSOR","TRANSITION_COLORS","radioRootVariants","radioIndicatorVariants","select","web","join","default","radioInnerDotVariants","radioLabelVariants","radioGroupVariants","variants","direction","column","row","defaultVariants"],"sourceRoot":"../../../../src","sources":["components/Radio/styles.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,GAAG,QAAQ,0BAA0B;AAC9C,SAASC,eAAe,EAAEC,iBAAiB,QAAQ,yBAAyB;;AAE5E;;AAEA,OAAO,MAAMC,iBAAiB,GAAGH,GAAG,CAAC,CACnC,6BAA6B,EAC7B,wDAAwD,EACxDC,eAAe,CAChB,CAAC;AAEF,OAAO,MAAMG,sBAAsB,GAAGJ,GAAG,CAAC,CACxC,6BAA6B,EAC7B,sCAAsC,EACtC,8CAA8C,EAC9C,SAAS,EACT,uBAAuB,EACvB,uCAAuC,EACvC,oBAAoB,EACpB,0CAA0C,EAC1C,0CAA0C,EAC1C,8DAA8D,EAC9DD,QAAQ,CAACM,MAAM,CAAC;EACdC,GAAG,EAAE,CACHJ,iBAAiB,EACjB,yDAAyD,EACzD,oDAAoD,EACpD,4CAA4C,EAC5C,kFAAkF,EAClF,sEAAsE,EACtE,qEAAqE,EACrE,4DAA4D,EAC5D,sEAAsE,CACvE,CAACK,IAAI,CAAC,GAAG,CAAC;EACXC,OAAO,EAAE;AACX,CAAC,CAAC,CACH,CAAC;AAEF,OAAO,MAAMC,qBAAqB,GAAGT,GAAG,CAAC,CACvC,sCAAsC,EACtC,aAAa,EACb,SAAS,EACT,+BAA+B,EAC/B,0BAA0B,EAC1B,8CAA8C,CAC/C,CAAC;AAEF,OAAO,MAAMU,kBAAkB,GAAGV,GAAG,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAE1E,OAAO,MAAMW,kBAAkB,GAAGX,GAAG,CAAC,EAAE,EAAE;EACxCY,QAAQ,EAAE;IACRC,SAAS,EAAE;MACTC,MAAM,EAAE,OAAO;MACfC,GAAG,EAAE;IACP;EACF,CAAC;EACDC,eAAe,EAAE;IAAEH,SAAS,EAAE;EAAS;AACzC,CAAC,CAAC","ignoreList":[]}
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { Platform } from 'react-native';
4
4
  import { cva } from 'class-variance-authority';
5
- export const textStyle = cva([`text-content-primary font-normal`, Platform.select({
6
- web: 'font-sans my-0 bg-transparent display-inline no-underline',
5
+ export const textStyle = cva(['text-content-primary', Platform.select({
6
+ web: 'font-body my-0 bg-transparent display-inline no-underline',
7
7
  default: ''
8
8
  })], {
9
9
  variants: {
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","cva","textStyle","select","web","default","variants","size","xl","lg","md","sm","xs"],"sourceRoot":"../../../../src","sources":["components/Text/styles.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,GAAG,QAA2B,0BAA0B;AAEjE,OAAO,MAAMC,SAAS,GAAGD,GAAG,CAC1B,CACE,kCAAkC,EAClCD,QAAQ,CAACG,MAAM,CAAC;EACdC,GAAG,EAAE,2DAA2D;EAChEC,OAAO,EAAE;AACX,CAAC,CAAC,CACH,EACD;EACEC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE;IACN;EACF;AACF,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Platform","cva","textStyle","select","web","default","variants","size","xl","lg","md","sm","xs"],"sourceRoot":"../../../../src","sources":["components/Text/styles.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,GAAG,QAA2B,0BAA0B;AAEjE,OAAO,MAAMC,SAAS,GAAGD,GAAG,CAC1B,CACE,sBAAsB,EACtBD,QAAQ,CAACG,MAAM,CAAC;EACdC,GAAG,EAAE,2DAA2D;EAChEC,OAAO,EAAE;AACX,CAAC,CAAC,CACH,EACD;EACEC,QAAQ,EAAE;IACRC,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE;IACN;EACF;AACF,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+
3
+ import { forwardRef } from 'react';
4
+ import { Pressable, Text, View } from 'react-native';
5
+ import { createTile, useTileContext } from '@cdx-ui/primitives';
6
+ import { Check } from '@cdx-ui/icons';
7
+ import { dataAttributes } from '@cdx-ui/primitives';
8
+ import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
9
+ import { checkboxIndicatorVariants, checkboxIconVariants } from '../Checkbox/styles';
10
+ import { Icon } from '../Icon';
11
+ import { radioIndicatorVariants, radioInnerDotVariants } from '../Radio/styles';
12
+ import { tileContentVariants, tileDescriptionVariants, tileGroupVariants, tileIndicatorVariants, tileLeadingSlotVariants, tileRootVariants, tileTitleVariants, tileTrailingSlotVariants } from './styles';
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ const TILE_SCOPE = 'TILE';
15
+ const TILE_GROUP_SCOPE = 'TILE_GROUP';
16
+ const RootPressable = withStyleContext(Pressable, TILE_SCOPE);
17
+ const GroupView = withStyleContext(View, TILE_GROUP_SCOPE);
18
+ const useTileGroupStyleContext = () => {
19
+ // `useStyleContext` types the result as a `Record`, but at runtime the value is
20
+ // `undefined` when no provider is in scope (e.g. standalone Tile). Cast through
21
+ // `unknown` to acknowledge that.
22
+ const ctx = useStyleContext(TILE_GROUP_SCOPE);
23
+ return ctx ?? {};
24
+ };
25
+ const TilePrimitive = createTile({
26
+ Pressable: RootPressable,
27
+ Group: GroupView,
28
+ LeadingSlot: View,
29
+ Content: View,
30
+ Title: Text,
31
+ Description: Text,
32
+ Indicator: View,
33
+ TrailingSlot: View
34
+ });
35
+
36
+ // =============================================================================
37
+ // TILE GROUP
38
+ // =============================================================================
39
+
40
+ /**
41
+ * Discriminated union mirroring `ITileGroupProps`, with `className` and layout variants added at
42
+ * the styled layer. Distributing the intersection across each branch keeps `interface … extends`
43
+ * ergonomics and avoids tripping `@typescript-eslint` on `(union) & { ... }`.
44
+ *
45
+ * `direction` and `spacing` constrain the group layout to the three supported patterns:
46
+ * - `direction="column"` + `spacing="default"` — vertical stack with gaps (default).
47
+ * - `direction="column"` + `spacing="none"` — tight vertical stack (rows touch).
48
+ * - `direction="row"` + `spacing="default"` — side-by-side horizontal layout.
49
+ *
50
+ * `shape` (when set) is propagated to child `Tile`s via `withStyleContext`, matching the
51
+ * Avatar size-propagation pattern. A per-tile `shape` prop overrides the inherited value.
52
+ */
53
+
54
+ const TileGroup = /*#__PURE__*/forwardRef(({
55
+ className,
56
+ style,
57
+ children,
58
+ direction,
59
+ spacing,
60
+ shape,
61
+ ...props
62
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.Group, {
63
+ ref: ref,
64
+ className: cn(tileGroupVariants({
65
+ direction,
66
+ spacing
67
+ }), className),
68
+ style: style,
69
+ context: {
70
+ shape
71
+ },
72
+ ...props,
73
+ children: children
74
+ }));
75
+ TileGroup.displayName = 'Tile.Group';
76
+
77
+ // =============================================================================
78
+ // TILE ROOT
79
+ // =============================================================================
80
+
81
+ const TileRoot = /*#__PURE__*/forwardRef(({
82
+ shape: shapeProp,
83
+ showSeparator,
84
+ className,
85
+ style,
86
+ context,
87
+ ...props
88
+ }, ref) => {
89
+ const {
90
+ shape: inheritedShape
91
+ } = useTileGroupStyleContext();
92
+ const shape = shapeProp ?? inheritedShape ?? 'card';
93
+ const computedClassName = cn(tileRootVariants({
94
+ shape,
95
+ showSeparator
96
+ }), className);
97
+ return /*#__PURE__*/_jsx(TilePrimitive, {
98
+ ref: ref,
99
+ className: computedClassName,
100
+ context: {
101
+ ...context,
102
+ shape
103
+ },
104
+ style: style,
105
+ ...props
106
+ });
107
+ });
108
+ TileRoot.displayName = 'Tile';
109
+
110
+ // =============================================================================
111
+ // SLOTS
112
+ // =============================================================================
113
+
114
+ const TileLeadingSlot = /*#__PURE__*/forwardRef(({
115
+ className,
116
+ style,
117
+ ...props
118
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.LeadingSlot, {
119
+ ref: ref,
120
+ className: cn(tileLeadingSlotVariants(), className),
121
+ style: style,
122
+ ...props
123
+ }));
124
+ TileLeadingSlot.displayName = 'Tile.LeadingSlot';
125
+ const TileContent = /*#__PURE__*/forwardRef(({
126
+ className,
127
+ style,
128
+ ...props
129
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.Content, {
130
+ ref: ref,
131
+ className: cn(tileContentVariants(), className),
132
+ style: style,
133
+ ...props
134
+ }));
135
+ TileContent.displayName = 'Tile.Content';
136
+ const TileTitle = /*#__PURE__*/forwardRef(({
137
+ className,
138
+ style,
139
+ numberOfLines = 1,
140
+ ...props
141
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.Title, {
142
+ ref: ref,
143
+ className: cn(tileTitleVariants(), className),
144
+ style: style,
145
+ numberOfLines: numberOfLines,
146
+ ...props
147
+ }));
148
+ TileTitle.displayName = 'Tile.Title';
149
+ const TileDescription = /*#__PURE__*/forwardRef(({
150
+ className,
151
+ style,
152
+ ...props
153
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.Description, {
154
+ ref: ref,
155
+ className: cn(tileDescriptionVariants(), className),
156
+ style: style,
157
+ ...props
158
+ }));
159
+ TileDescription.displayName = 'Tile.Description';
160
+
161
+ /**
162
+ * Decorative selection affordance. Renders pure CVA-styled Views — no interactive hooks,
163
+ * no nested Pressable, zero runtime overhead. The Tile root owns the press target and
164
+ * ARIA role; this subtree is `aria-hidden` via `createTileIndicator`.
165
+ *
166
+ * The visual is inferred from the tile context: `single` (radio semantics) → radio ring,
167
+ * `multiple` (checkbox semantics) → checkbox square. An explicit `indicatorType` prop
168
+ * overrides — primarily for standalone tiles that want a radio-style visual.
169
+ */
170
+ function TileIndicatorVisual({
171
+ indicatorType
172
+ }) {
173
+ const {
174
+ isSelected,
175
+ isDisabled,
176
+ selectionType
177
+ } = useTileContext();
178
+ const effectiveType = indicatorType ?? (selectionType === 'single' ? 'radio' : 'checkbox');
179
+ const stateAttrs = dataAttributes({
180
+ checked: isSelected,
181
+ disabled: isDisabled
182
+ });
183
+ if (effectiveType === 'radio') {
184
+ return /*#__PURE__*/_jsx(View, {
185
+ className: radioIndicatorVariants(),
186
+ ...stateAttrs,
187
+ children: /*#__PURE__*/_jsx(View, {
188
+ className: radioInnerDotVariants(),
189
+ ...dataAttributes({
190
+ checked: isSelected,
191
+ invalid: false
192
+ })
193
+ })
194
+ });
195
+ }
196
+ return /*#__PURE__*/_jsx(View, {
197
+ className: cn(checkboxIndicatorVariants()),
198
+ ...stateAttrs,
199
+ children: isSelected && /*#__PURE__*/_jsx(Icon, {
200
+ as: Check,
201
+ className: checkboxIconVariants()
202
+ })
203
+ });
204
+ }
205
+ const TileIndicator = /*#__PURE__*/forwardRef(({
206
+ className,
207
+ children,
208
+ style,
209
+ indicatorType,
210
+ ...props
211
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.Indicator, {
212
+ ref: ref,
213
+ className: cn(tileIndicatorVariants(), className),
214
+ style: style,
215
+ indicatorType: indicatorType,
216
+ ...props,
217
+ children: children ?? /*#__PURE__*/_jsx(TileIndicatorVisual, {
218
+ indicatorType: indicatorType
219
+ })
220
+ }));
221
+ TileIndicator.displayName = 'Tile.Indicator';
222
+ const TileTrailingSlot = /*#__PURE__*/forwardRef(({
223
+ className,
224
+ style,
225
+ ...props
226
+ }, ref) => /*#__PURE__*/_jsx(TilePrimitive.TrailingSlot, {
227
+ ref: ref,
228
+ className: cn(tileTrailingSlotVariants(), className),
229
+ style: style,
230
+ ...props
231
+ }));
232
+ TileTrailingSlot.displayName = 'Tile.TrailingSlot';
233
+ export const Tile = Object.assign(TileRoot, {
234
+ Group: TileGroup,
235
+ LeadingSlot: TileLeadingSlot,
236
+ Content: TileContent,
237
+ Title: TileTitle,
238
+ Description: TileDescription,
239
+ Indicator: TileIndicator,
240
+ TrailingSlot: TileTrailingSlot
241
+ });
242
+ export { useTileContext };
243
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","Pressable","Text","View","createTile","useTileContext","Check","dataAttributes","cn","useStyleContext","withStyleContext","checkboxIndicatorVariants","checkboxIconVariants","Icon","radioIndicatorVariants","radioInnerDotVariants","tileContentVariants","tileDescriptionVariants","tileGroupVariants","tileIndicatorVariants","tileLeadingSlotVariants","tileRootVariants","tileTitleVariants","tileTrailingSlotVariants","jsx","_jsx","TILE_SCOPE","TILE_GROUP_SCOPE","RootPressable","GroupView","useTileGroupStyleContext","ctx","TilePrimitive","Group","LeadingSlot","Content","Title","Description","Indicator","TrailingSlot","TileGroup","className","style","children","direction","spacing","shape","props","ref","context","displayName","TileRoot","shapeProp","showSeparator","inheritedShape","computedClassName","TileLeadingSlot","TileContent","TileTitle","numberOfLines","TileDescription","TileIndicatorVisual","indicatorType","isSelected","isDisabled","selectionType","effectiveType","stateAttrs","checked","disabled","invalid","as","TileIndicator","TileTrailingSlot","Tile","Object","assign"],"sourceRoot":"../../../../src","sources":["components/Tile/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { cva } from 'class-variance-authority';
5
+ import { TRANSITION_COLORS } from '../../styles/primitives';
6
+ export const tileGroupVariants = cva(['flex w-full'], {
7
+ variants: {
8
+ direction: {
9
+ column: 'flex-col',
10
+ row: 'flex-row'
11
+ },
12
+ spacing: {
13
+ default: 'gap-2',
14
+ none: 'gap-0'
15
+ }
16
+ },
17
+ defaultVariants: {
18
+ direction: 'column',
19
+ spacing: 'default'
20
+ }
21
+ });
22
+ export const tileRootVariants = cva(['flex-row self-stretch gap-3 px-4 py-3', 'data-[disabled=true]:opacity-50', TRANSITION_COLORS, Platform.select({
23
+ web: ['outline-none', 'data-[hover=true]:data-[disabled=false]:bg-surface-action-tint-hover', 'data-[active=true]:data-[disabled=false]:data-[hover=true]:bg-surface-action-tint-active', 'data-[hover=true]:data-[disabled=false]:data-[state=unselected]:border-stroke-action', 'focus-visible:data-[disabled=false]:ring-2 focus-visible:data-[disabled=false]:ring-stroke-focus focus-visible:data-[disabled=false]:ring-offset-2'].join(' '),
24
+ default: ['data-[active=true]:bg-surface-action-tint-hover', 'data-[active=true]:border-stroke-action'].join(' ')
25
+ })], {
26
+ variants: {
27
+ shape: {
28
+ flat: 'rounded-none border-0 bg-transparent',
29
+ card: ['rounded-xl border-1 border-solid', 'border-stroke-secondary', 'bg-surface-primary', 'data-[state=selected]:border-stroke-action', 'data-[state=selected]:border-1.5', 'data-[state=selected]:bg-surface-action-tint'].join(' ')
30
+ },
31
+ showSeparator: {
32
+ true: ['border-b border-solid border-stroke-secondary! native:data-[active=true]:border-stroke-secondary' // Override border-stroke-action on hover
33
+ ],
34
+ false: ''
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ shape: 'card',
39
+ showSeparator: false
40
+ }
41
+ });
42
+ export const tileLeadingSlotVariants = cva(['flex shrink-0 items-center justify-center']);
43
+ export const tileTrailingSlotVariants = cva(['flex shrink-0 items-center justify-center']);
44
+ export const tileContentVariants = cva(['min-w-0 flex-1 flex-col gap-0.5 no-underline']);
45
+ export const tileTitleVariants = cva(['text-base font-medium text-content-primary no-underline']);
46
+ export const tileDescriptionVariants = cva(['text-sm text-content-secondary no-underline']);
47
+ export const tileIndicatorVariants = cva(['flex shrink-0 items-center justify-center']);
48
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","cva","TRANSITION_COLORS","tileGroupVariants","variants","direction","column","row","spacing","default","none","defaultVariants","tileRootVariants","select","web","join","shape","flat","card","showSeparator","true","false","tileLeadingSlotVariants","tileTrailingSlotVariants","tileContentVariants","tileTitleVariants","tileDescriptionVariants","tileIndicatorVariants"],"sourceRoot":"../../../../src","sources":["components/Tile/styles.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,GAAG,QAA2B,0BAA0B;AACjE,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,MAAMC,iBAAiB,GAAGF,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE;EACpDG,QAAQ,EAAE;IACRC,SAAS,EAAE;MACTC,MAAM,EAAE,UAAU;MAClBC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE;MACPC,OAAO,EAAE,OAAO;MAChBC,IAAI,EAAE;IACR;EACF,CAAC;EACDC,eAAe,EAAE;IACfN,SAAS,EAAE,QAAQ;IACnBG,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAIF,OAAO,MAAMI,gBAAgB,GAAGX,GAAG,CACjC,CACE,uCAAuC,EACvC,iCAAiC,EACjCC,iBAAiB,EACjBF,QAAQ,CAACa,MAAM,CAAC;EACdC,GAAG,EAAE,CACH,cAAc,EACd,sEAAsE,EACtE,0FAA0F,EAC1F,sFAAsF,EACtF,oJAAoJ,CACrJ,CAACC,IAAI,CAAC,GAAG,CAAC;EACXN,OAAO,EAAE,CACP,iDAAiD,EACjD,yCAAyC,CAC1C,CAACM,IAAI,CAAC,GAAG;AACZ,CAAC,CAAC,CACH,EACD;EACEX,QAAQ,EAAE;IACRY,KAAK,EAAE;MACLC,IAAI,EAAE,sCAAsC;MAC5CC,IAAI,EAAE,CACJ,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,4CAA4C,EAC5C,kCAAkC,EAClC,8CAA8C,CAC/C,CAACH,IAAI,CAAC,GAAG;IACZ,CAAC;IACDI,aAAa,EAAE;MACbC,IAAI,EAAE,CACJ,kGAAkG,CAAE;MAAA,CACrG;MACDC,KAAK,EAAE;IACT;EACF,CAAC;EACDV,eAAe,EAAE;IACfK,KAAK,EAAE,MAAM;IACbG,aAAa,EAAE;EACjB;AACF,CACF,CAAC;AAED,OAAO,MAAMG,uBAAuB,GAAGrB,GAAG,CAAC,CAAC,2CAA2C,CAAC,CAAC;AAEzF,OAAO,MAAMsB,wBAAwB,GAAGtB,GAAG,CAAC,CAAC,2CAA2C,CAAC,CAAC;AAE1F,OAAO,MAAMuB,mBAAmB,GAAGvB,GAAG,CAAC,CAAC,8CAA8C,CAAC,CAAC;AAExF,OAAO,MAAMwB,iBAAiB,GAAGxB,GAAG,CAAC,CAAC,yDAAyD,CAAC,CAAC;AAEjG,OAAO,MAAMyB,uBAAuB,GAAGzB,GAAG,CAAC,CAAC,6CAA6C,CAAC,CAAC;AAE3F,OAAO,MAAM0B,qBAAqB,GAAG1B,GAAG,CAAC,CAAC,2CAA2C,CAAC,CAAC","ignoreList":[]}
@@ -15,11 +15,14 @@ export * from './Image';
15
15
  export * from './Input';
16
16
  export * from './OtpInput';
17
17
  export * from './Link';
18
+ export * from './ListItem';
18
19
  export * from './ProgressBar';
19
20
  export * from './ProgressSegmented';
21
+ export * from './Radio';
20
22
  export * from './Select';
21
23
  export * from './VirtualizedList';
22
24
  export * from './Switch';
25
+ export * from './Tile';
23
26
  export { HStack, VStack } from './Stack';
24
27
  export * from './Heading';
25
28
  export * from './Text';
@@ -1 +1 @@
1
- {"version":3,"names":["HStack","VStack"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,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,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,SAASA,MAAM,EAAEC,MAAM,QAAQ,SAAS;AACxC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["HStack","VStack"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,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,UAAU;AACxB,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,qBAAqB;AACnC,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,mBAAmB;AACjC,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,SAASA,MAAM,EAAEC,MAAM,QAAQ,SAAS;AACxC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,cAAc","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/branch/LkwnLe2gHRg0vLdfg9Frjs/%E2%AD%90-CDS-V2--React-Native?node-id=119-72
4
+ // source=packages/components/src/components/Button/index.tsx
5
+ // component=Button
6
+ import figma from 'figma';
7
+ const instance = figma.selectedInstance;
8
+
9
+ // Variant rename: Figma uses "solid" but code uses "strong" for the filled/primary style.
10
+ // This divergence exists because "strong" better communicates visual weight in the code API
11
+ // while "solid" is the conventional Figma naming.
12
+ const variant = instance.getEnum('variant', {
13
+ solid: 'strong',
14
+ outline: 'outline',
15
+ ghost: 'ghost'
16
+ });
17
+ const color = instance.getEnum('color', {
18
+ action: 'action',
19
+ danger: 'danger'
20
+ });
21
+ const size = instance.getEnum('size', {
22
+ default: 'default',
23
+ small: 'small'
24
+ });
25
+ // Enum-as-boolean: isDisabled is a VARIANT property in Figma (string values "true"/"false")
26
+ // rather than a true BOOLEAN. Map "false" to undefined so the prop is omitted when not disabled.
27
+ const isDisabled = instance.getEnum('isDisabled', {
28
+ true: true,
29
+ false: undefined
30
+ });
31
+ const showLeadingIcon = instance.getBoolean('Show Leading Icon?');
32
+ const showTrailingIcon = instance.getBoolean('Show Trailing Icon?');
33
+
34
+ // Icon slots: Prefer metadata.props.componentName exposed by icon Code Connect templates,
35
+ // which yields a clean identifier (e.g. "Check"). Fall back to executeTemplate().example
36
+ // (renders a placeholder pill when the icon lacks Code Connect).
37
+ const leadingIconResult = instance.getInstanceSwap('Leading Icon')?.executeTemplate();
38
+ const trailingIconResult = instance.getInstanceSwap('Trailing Icon')?.executeTemplate();
39
+ const leadingIconName = leadingIconResult?.metadata?.props?.componentName;
40
+ const trailingIconName = trailingIconResult?.metadata?.props?.componentName;
41
+ const leadingIconSnippet = leadingIconName ?? leadingIconResult?.example;
42
+ const trailingIconSnippet = trailingIconName ?? trailingIconResult?.example;
43
+ const label = instance.findText('Button.Label').textContent;
44
+
45
+ // Include icon imports when resolved via metadata.props (propagated from icon Code Connect)
46
+ const iconImports = [];
47
+ if (showLeadingIcon && leadingIconName) {
48
+ iconImports.push(`import { ${leadingIconName} } from '@cdx-ui/icons'`);
49
+ }
50
+ if (showTrailingIcon && trailingIconName) {
51
+ iconImports.push(`import { ${trailingIconName} } from '@cdx-ui/icons'`);
52
+ }
53
+ export default {
54
+ id: 'button',
55
+ imports: ["import { Button } from '@cdx-ui/components'", ...iconImports],
56
+ example: figma.code`
57
+ <Button variant="${variant}" color="${color}" size="${size}" isDisabled={${isDisabled}}>
58
+ ${showLeadingIcon ? figma.code`<Button.Icon as={${leadingIconSnippet}} />` : null}
59
+ <Button.Label>${label}</Button.Label>
60
+ ${showTrailingIcon ? figma.code`<Button.Icon as={${trailingIconSnippet}} />` : null}
61
+ </Button>`
62
+ };
63
+ //# sourceMappingURL=Button.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","variant","getEnum","solid","outline","ghost","color","action","danger","size","default","small","isDisabled","true","false","undefined","showLeadingIcon","getBoolean","showTrailingIcon","leadingIconResult","getInstanceSwap","executeTemplate","trailingIconResult","leadingIconName","metadata","props","componentName","trailingIconName","leadingIconSnippet","example","trailingIconSnippet","label","findText","textContent","iconImports","push","id","imports","code"],"sourceRoot":"../../../src","sources":["figma/Button.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;;AAEvC;AACA;AACA;AACA,MAAMC,OAAO,GAAGF,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE;EAC1CC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE;AACT,CAAC,CAAC;AACF,MAAMC,KAAK,GAAGP,QAAQ,CAACG,OAAO,CAAC,OAAO,EAAE;EACtCK,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAC,CAAC;AACF,MAAMC,IAAI,GAAGV,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE;EACpCQ,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE;AACT,CAAC,CAAC;AACF;AACA;AACA,MAAMC,UAAU,GAAGb,QAAQ,CAACG,OAAO,CAAC,YAAY,EAAE;EAChDW,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC;AACT,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAGjB,QAAQ,CAACkB,UAAU,CAAC,oBAAoB,CAAC;AACjE,MAAMC,gBAAgB,GAAGnB,QAAQ,CAACkB,UAAU,CAAC,qBAAqB,CAAC;;AAEnE;AACA;AACA;AACA,MAAME,iBAAiB,GAAGpB,QAAQ,CAACqB,eAAe,CAAC,cAAc,CAAC,EAAEC,eAAe,CAAC,CAAC;AACrF,MAAMC,kBAAkB,GAAGvB,QAAQ,CAACqB,eAAe,CAAC,eAAe,CAAC,EAAEC,eAAe,CAAC,CAAC;AAEvF,MAAME,eAAe,GAAGJ,iBAAiB,EAAEK,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AAC/F,MAAMC,gBAAgB,GAAGL,kBAAkB,EAAEE,QAAQ,EAAEC,KAAK,EAAEC,aAAmC;AACjG,MAAME,kBAAkB,GAAGL,eAAe,IAAIJ,iBAAiB,EAAEU,OAAO;AACxE,MAAMC,mBAAmB,GAAGH,gBAAgB,IAAIL,kBAAkB,EAAEO,OAAO;AAE3E,MAAME,KAAK,GAAIhC,QAAQ,CAACiC,QAAQ,CAAC,cAAc,CAAC,CAAgCC,WAAW;;AAE3F;AACA,MAAMC,WAAqB,GAAG,EAAE;AAChC,IAAIlB,eAAe,IAAIO,eAAe,EAAE;EACtCW,WAAW,CAACC,IAAI,CAAC,YAAYZ,eAAe,yBAAyB,CAAC;AACxE;AACA,IAAIL,gBAAgB,IAAIS,gBAAgB,EAAE;EACxCO,WAAW,CAACC,IAAI,CAAC,YAAYR,gBAAgB,yBAAyB,CAAC;AACzE;AAEA,eAAe;EACbS,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,CAAC,6CAA6C,EAAE,GAAGH,WAAW,CAAC;EACxEL,OAAO,EAAE/B,KAAK,CAACwC,IAAI;AACrB,mBAAmBrC,OAAO,YAAYK,KAAK,WAAWG,IAAI,iBAAiBG,UAAU;AACrF,IAAII,eAAe,GAAGlB,KAAK,CAACwC,IAAI,oBAAoBV,kBAAkB,MAAM,GAAG,IAAI;AACnF,kBAAkBG,KAAK;AACvB,IAAIb,gBAAgB,GAAGpB,KAAK,CAACwC,IAAI,oBAAoBR,mBAAmB,MAAM,GAAG,IAAI;AACrF;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/branch/LkwnLe2gHRg0vLdfg9Frjs/%E2%AD%90-CDS-V2--React-Native?node-id=399-3385
4
+ // source=packages/components/src/components/Heading/index.tsx
5
+ // component=Heading
6
+ // Use the same branch URL as Button: Code Connect is scoped per file key; main vs branch are separate targets.
7
+ import figma from 'figma';
8
+ const instance = figma.selectedInstance;
9
+
10
+ // Figma size values are identical to code size values — no renaming needed.
11
+ const size = instance.getEnum('size', {
12
+ xl: 'xl',
13
+ lg: 'lg',
14
+ md: 'md',
15
+ sm: 'sm',
16
+ xs: 'xs'
17
+ });
18
+ const text = instance.findText('{Heading}').textContent;
19
+ export default {
20
+ id: 'heading',
21
+ imports: ["import { Heading } from '@cdx-ui/components'"],
22
+ example: figma.code`<Heading size="${size}">${text}</Heading>`
23
+ };
24
+ //# sourceMappingURL=Heading.figma.js.map