@cdx-ui/components 0.0.1-beta.50 → 0.0.1-beta.52

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 (159) hide show
  1. package/lib/commonjs/components/AlertDialog/index.js +4 -3
  2. package/lib/commonjs/components/AlertDialog/index.js.map +1 -1
  3. package/lib/commonjs/components/Button/index.js +4 -0
  4. package/lib/commonjs/components/Button/index.js.map +1 -1
  5. package/lib/commonjs/components/Button/styles.js +59 -0
  6. package/lib/commonjs/components/Button/styles.js.map +1 -1
  7. package/lib/commonjs/components/Dialog/index.js +71 -16
  8. package/lib/commonjs/components/Dialog/index.js.map +1 -1
  9. package/lib/commonjs/components/Dialog/styles.js +60 -14
  10. package/lib/commonjs/components/Dialog/styles.js.map +1 -1
  11. package/lib/commonjs/figma/AlertDialog.Description.figma.js +20 -0
  12. package/lib/commonjs/figma/AlertDialog.Description.figma.js.map +1 -0
  13. package/lib/commonjs/figma/AlertDialog.Footer.figma.js +41 -0
  14. package/lib/commonjs/figma/AlertDialog.Footer.figma.js.map +1 -0
  15. package/lib/commonjs/figma/AlertDialog.Header.figma.js +28 -0
  16. package/lib/commonjs/figma/AlertDialog.Header.figma.js.map +1 -0
  17. package/lib/commonjs/figma/AlertDialog.Text.figma.js +20 -0
  18. package/lib/commonjs/figma/AlertDialog.Text.figma.js.map +1 -0
  19. package/lib/commonjs/figma/AlertDialog.Title.figma.js +27 -0
  20. package/lib/commonjs/figma/AlertDialog.Title.figma.js.map +1 -0
  21. package/lib/commonjs/figma/AlertDialog.figma.js +43 -0
  22. package/lib/commonjs/figma/AlertDialog.figma.js.map +1 -0
  23. package/lib/commonjs/figma/Dialog.Description.figma.js +20 -0
  24. package/lib/commonjs/figma/Dialog.Description.figma.js.map +1 -0
  25. package/lib/commonjs/figma/Dialog.Footer.figma.js +30 -0
  26. package/lib/commonjs/figma/Dialog.Footer.figma.js.map +1 -0
  27. package/lib/commonjs/figma/Dialog.Header.figma.js +29 -0
  28. package/lib/commonjs/figma/Dialog.Header.figma.js.map +1 -0
  29. package/lib/commonjs/figma/Dialog.Text.figma.js +20 -0
  30. package/lib/commonjs/figma/Dialog.Text.figma.js.map +1 -0
  31. package/lib/commonjs/figma/Dialog.Title.figma.js +27 -0
  32. package/lib/commonjs/figma/Dialog.Title.figma.js.map +1 -0
  33. package/lib/commonjs/figma/Dialog.figma.js +51 -0
  34. package/lib/commonjs/figma/Dialog.figma.js.map +1 -0
  35. package/lib/commonjs/hooks/index.js +19 -0
  36. package/lib/commonjs/hooks/index.js.map +1 -0
  37. package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js +246 -0
  38. package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
  39. package/lib/commonjs/index.js +24 -0
  40. package/lib/commonjs/index.js.map +1 -1
  41. package/lib/commonjs/navigation/forgeTabIcon.js +43 -0
  42. package/lib/commonjs/navigation/forgeTabIcon.js.map +1 -0
  43. package/lib/commonjs/navigation/forgeTabIcon.native.js +35 -0
  44. package/lib/commonjs/navigation/forgeTabIcon.native.js.map +1 -0
  45. package/lib/commonjs/navigation/index.js +13 -0
  46. package/lib/commonjs/navigation/index.js.map +1 -0
  47. package/lib/commonjs/navigation/types.js +40 -0
  48. package/lib/commonjs/navigation/types.js.map +1 -0
  49. package/lib/module/components/AlertDialog/index.js +4 -3
  50. package/lib/module/components/AlertDialog/index.js.map +1 -1
  51. package/lib/module/components/Button/index.js +4 -0
  52. package/lib/module/components/Button/index.js.map +1 -1
  53. package/lib/module/components/Button/styles.js +59 -0
  54. package/lib/module/components/Button/styles.js.map +1 -1
  55. package/lib/module/components/Dialog/index.js +74 -19
  56. package/lib/module/components/Dialog/index.js.map +1 -1
  57. package/lib/module/components/Dialog/styles.js +60 -14
  58. package/lib/module/components/Dialog/styles.js.map +1 -1
  59. package/lib/module/figma/AlertDialog.Description.figma.js +14 -0
  60. package/lib/module/figma/AlertDialog.Description.figma.js.map +1 -0
  61. package/lib/module/figma/AlertDialog.Footer.figma.js +35 -0
  62. package/lib/module/figma/AlertDialog.Footer.figma.js.map +1 -0
  63. package/lib/module/figma/AlertDialog.Header.figma.js +22 -0
  64. package/lib/module/figma/AlertDialog.Header.figma.js.map +1 -0
  65. package/lib/module/figma/AlertDialog.Text.figma.js +14 -0
  66. package/lib/module/figma/AlertDialog.Text.figma.js.map +1 -0
  67. package/lib/module/figma/AlertDialog.Title.figma.js +21 -0
  68. package/lib/module/figma/AlertDialog.Title.figma.js.map +1 -0
  69. package/lib/module/figma/AlertDialog.figma.js +37 -0
  70. package/lib/module/figma/AlertDialog.figma.js.map +1 -0
  71. package/lib/module/figma/Dialog.Description.figma.js +14 -0
  72. package/lib/module/figma/Dialog.Description.figma.js.map +1 -0
  73. package/lib/module/figma/Dialog.Footer.figma.js +24 -0
  74. package/lib/module/figma/Dialog.Footer.figma.js.map +1 -0
  75. package/lib/module/figma/Dialog.Header.figma.js +23 -0
  76. package/lib/module/figma/Dialog.Header.figma.js.map +1 -0
  77. package/lib/module/figma/Dialog.Text.figma.js +14 -0
  78. package/lib/module/figma/Dialog.Text.figma.js.map +1 -0
  79. package/lib/module/figma/Dialog.Title.figma.js +21 -0
  80. package/lib/module/figma/Dialog.Title.figma.js.map +1 -0
  81. package/lib/module/figma/Dialog.figma.js +45 -0
  82. package/lib/module/figma/Dialog.figma.js.map +1 -0
  83. package/lib/module/hooks/index.js +4 -0
  84. package/lib/module/hooks/index.js.map +1 -0
  85. package/lib/module/hooks/useForgeBottomTabScreenOptions.js +242 -0
  86. package/lib/module/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
  87. package/lib/module/index.js +2 -0
  88. package/lib/module/index.js.map +1 -1
  89. package/lib/module/navigation/forgeTabIcon.js +39 -0
  90. package/lib/module/navigation/forgeTabIcon.js.map +1 -0
  91. package/lib/module/navigation/forgeTabIcon.native.js +31 -0
  92. package/lib/module/navigation/forgeTabIcon.native.js.map +1 -0
  93. package/lib/module/navigation/index.js +4 -0
  94. package/lib/module/navigation/index.js.map +1 -0
  95. package/lib/module/navigation/types.js +38 -0
  96. package/lib/module/navigation/types.js.map +1 -0
  97. package/lib/typescript/components/AlertDialog/index.d.ts +3 -2
  98. package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -1
  99. package/lib/typescript/components/Avatar/styles.d.ts +4 -4
  100. package/lib/typescript/components/Button/styles.d.ts +2 -0
  101. package/lib/typescript/components/Button/styles.d.ts.map +1 -1
  102. package/lib/typescript/components/Dialog/index.d.ts +16 -10
  103. package/lib/typescript/components/Dialog/index.d.ts.map +1 -1
  104. package/lib/typescript/components/Dialog/styles.d.ts +16 -5
  105. package/lib/typescript/components/Dialog/styles.d.ts.map +1 -1
  106. package/lib/typescript/components/Heading/styles.d.ts +1 -1
  107. package/lib/typescript/components/Stack/styles.d.ts +2 -2
  108. package/lib/typescript/components/Text/styles.d.ts +1 -1
  109. package/lib/typescript/figma/AlertDialog.Description.figma.d.ts +8 -0
  110. package/lib/typescript/figma/AlertDialog.Description.figma.d.ts.map +1 -0
  111. package/lib/typescript/figma/AlertDialog.Footer.figma.d.ts +8 -0
  112. package/lib/typescript/figma/AlertDialog.Footer.figma.d.ts.map +1 -0
  113. package/lib/typescript/figma/AlertDialog.Header.figma.d.ts +8 -0
  114. package/lib/typescript/figma/AlertDialog.Header.figma.d.ts.map +1 -0
  115. package/lib/typescript/figma/AlertDialog.Text.figma.d.ts +8 -0
  116. package/lib/typescript/figma/AlertDialog.Text.figma.d.ts.map +1 -0
  117. package/lib/typescript/figma/AlertDialog.Title.figma.d.ts +8 -0
  118. package/lib/typescript/figma/AlertDialog.Title.figma.d.ts.map +1 -0
  119. package/lib/typescript/figma/AlertDialog.figma.d.ts +8 -0
  120. package/lib/typescript/figma/AlertDialog.figma.d.ts.map +1 -0
  121. package/lib/typescript/figma/Dialog.Description.figma.d.ts +8 -0
  122. package/lib/typescript/figma/Dialog.Description.figma.d.ts.map +1 -0
  123. package/lib/typescript/figma/Dialog.Footer.figma.d.ts +8 -0
  124. package/lib/typescript/figma/Dialog.Footer.figma.d.ts.map +1 -0
  125. package/lib/typescript/figma/Dialog.Header.figma.d.ts +8 -0
  126. package/lib/typescript/figma/Dialog.Header.figma.d.ts.map +1 -0
  127. package/lib/typescript/figma/Dialog.Text.figma.d.ts +8 -0
  128. package/lib/typescript/figma/Dialog.Text.figma.d.ts.map +1 -0
  129. package/lib/typescript/figma/Dialog.Title.figma.d.ts +8 -0
  130. package/lib/typescript/figma/Dialog.Title.figma.d.ts.map +1 -0
  131. package/lib/typescript/figma/Dialog.figma.d.ts +8 -0
  132. package/lib/typescript/figma/Dialog.figma.d.ts.map +1 -0
  133. package/lib/typescript/hooks/index.d.ts +2 -0
  134. package/lib/typescript/hooks/index.d.ts.map +1 -0
  135. package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts +137 -0
  136. package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts.map +1 -0
  137. package/lib/typescript/index.d.ts +2 -0
  138. package/lib/typescript/index.d.ts.map +1 -1
  139. package/lib/typescript/navigation/forgeTabIcon.d.ts +27 -0
  140. package/lib/typescript/navigation/forgeTabIcon.d.ts.map +1 -0
  141. package/lib/typescript/navigation/forgeTabIcon.native.d.ts +15 -0
  142. package/lib/typescript/navigation/forgeTabIcon.native.d.ts.map +1 -0
  143. package/lib/typescript/navigation/index.d.ts +4 -0
  144. package/lib/typescript/navigation/index.d.ts.map +1 -0
  145. package/lib/typescript/navigation/types.d.ts +37 -0
  146. package/lib/typescript/navigation/types.d.ts.map +1 -0
  147. package/package.json +6 -4
  148. package/src/components/AlertDialog/index.tsx +7 -5
  149. package/src/components/Button/index.tsx +2 -2
  150. package/src/components/Button/styles.ts +29 -0
  151. package/src/components/Dialog/index.tsx +95 -29
  152. package/src/components/Dialog/styles.ts +72 -30
  153. package/src/hooks/index.ts +5 -0
  154. package/src/hooks/useForgeBottomTabScreenOptions.ts +245 -0
  155. package/src/index.ts +2 -0
  156. package/src/navigation/forgeTabIcon.native.ts +36 -0
  157. package/src/navigation/forgeTabIcon.ts +33 -0
  158. package/src/navigation/index.ts +3 -0
  159. package/src/navigation/types.ts +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","showDescription","getBoolean","titleInstance","findInstance","titleSnippet","type","executeTemplate","example","descriptionInstance","descriptionSnippet","id","imports","code"],"sourceRoot":"../../../src","sources":["figma/Dialog.Header.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;AAEvC,MAAMC,eAAe,GAAGF,QAAQ,CAACG,UAAU,CAAC,mBAAmB,CAAC;AAEhE,MAAMC,aAAa,GAAGJ,QAAQ,CAACK,YAAY,CAAC,cAAc,CAAC;AAC3D,MAAMC,YAAY,GAChBF,aAAa,CAACG,IAAI,KAAK,UAAU,GAAGH,aAAa,CAACI,eAAe,CAAC,CAAC,CAACC,OAAO,GAAG,IAAI;AAEpF,MAAMC,mBAAmB,GAAGV,QAAQ,CAACK,YAAY,CAAC,oBAAoB,CAAC;AACvE,MAAMM,kBAAkB,GACtBT,eAAe,IAAIQ,mBAAmB,EAAEH,IAAI,KAAK,UAAU,GACvDG,mBAAmB,CAACF,eAAe,CAAC,CAAC,CAACC,OAAO,GAC7C,IAAI;AAEV,eAAe;EACbG,EAAE,EAAE,eAAe;EACnBC,OAAO,EAAE,CAAC,6CAA6C,CAAC;EACxDJ,OAAO,EAAEV,KAAK,CAACe,IAAI;AACrB;AACA,IAAIR,YAAY;AAChB,IAAIK,kBAAkB;AACtB;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--Components?node-id=4583-426
4
+ // source=packages/components/src/components/Dialog/index.tsx
5
+ // component=Dialog.Text
6
+ import figma from 'figma';
7
+ const instance = figma.selectedInstance;
8
+ const text = instance.findText('{text}').textContent;
9
+ export default {
10
+ id: 'dialog-text',
11
+ imports: ["import { Dialog } from '@cdx-ui/components'"],
12
+ example: figma.code`<Dialog.Text>${text}</Dialog.Text>`
13
+ };
14
+ //# sourceMappingURL=Dialog.Text.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","text","findText","textContent","id","imports","example","code"],"sourceRoot":"../../../src","sources":["figma/Dialog.Text.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;AAEvC,MAAMC,IAAI,GAAIF,QAAQ,CAACG,QAAQ,CAAC,QAAQ,CAAC,CAAgCC,WAAW;AAEpF,eAAe;EACbC,EAAE,EAAE,aAAa;EACjBC,OAAO,EAAE,CAAC,6CAA6C,CAAC;EACxDC,OAAO,EAAER,KAAK,CAACS,IAAI,gBAAgBN,IAAI;AACzC,CAAC","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--Components?node-id=4428-440
4
+ // source=packages/components/src/components/Dialog/index.tsx
5
+ // component=Dialog.Title
6
+ import figma from 'figma';
7
+ const instance = figma.selectedInstance;
8
+ const appearance = instance.getEnum('appearance', {
9
+ default: undefined,
10
+ danger: 'danger',
11
+ warning: 'warning',
12
+ success: 'success'
13
+ });
14
+ const appearanceProp = figma.helpers.react.renderProp('appearance', appearance);
15
+ const title = instance.findText('{title}').textContent;
16
+ export default {
17
+ id: 'dialog-title',
18
+ imports: ["import { Dialog } from '@cdx-ui/components'"],
19
+ example: figma.code`<Dialog.Title${appearanceProp}>${title}</Dialog.Title>`
20
+ };
21
+ //# sourceMappingURL=Dialog.Title.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","appearance","getEnum","default","undefined","danger","warning","success","appearanceProp","helpers","react","renderProp","title","findText","textContent","id","imports","example","code"],"sourceRoot":"../../../src","sources":["figma/Dialog.Title.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;AAEvC,MAAMC,UAAU,GAAGF,QAAQ,CAACG,OAAO,CAAC,YAAY,EAAE;EAChDC,OAAO,EAAEC,SAAS;EAClBC,MAAM,EAAE,QAAQ;EAChBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,cAAc,GAAGV,KAAK,CAACW,OAAO,CAACC,KAAK,CAACC,UAAU,CAAC,YAAY,EAAEV,UAAU,CAAC;AAE/E,MAAMW,KAAK,GAAIb,QAAQ,CAACc,QAAQ,CAAC,SAAS,CAAC,CAAgCC,WAAW;AAEtF,eAAe;EACbC,EAAE,EAAE,cAAc;EAClBC,OAAO,EAAE,CAAC,6CAA6C,CAAC;EACxDC,OAAO,EAAEnB,KAAK,CAACoB,IAAI,gBAAgBV,cAAc,IAAII,KAAK;AAC5D,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ // url=https://www.figma.com/design/0lEVMVlLj8ZS4fgItr3pmd/%E2%AD%90-Forge-DS--Components?node-id=4331-429
4
+ // source=packages/components/src/components/Dialog/index.tsx
5
+ // component=Dialog
6
+ import figma from 'figma';
7
+ const instance = figma.selectedInstance;
8
+ const size = instance.getEnum('size', {
9
+ xs: 'xs',
10
+ sm: 'sm',
11
+ md: 'md',
12
+ lg: 'lg',
13
+ xl: 'xl',
14
+ full: 'full'
15
+ });
16
+
17
+ // Boolean-as-variant: fullBleed is a VARIANT property with "true"/"false" string values.
18
+ // Map "false" to undefined so the prop is omitted at the default value.
19
+ const fullBleed = instance.getEnum('fullBleed', {
20
+ true: true,
21
+ false: undefined
22
+ });
23
+ const fullBleedProp = figma.helpers.react.renderProp('fullBleed', fullBleed);
24
+
25
+ // Delegate to nested Code Connect templates — each sub-component manages its own snippet.
26
+ const headerInstance = instance.findInstance('Dialog.Header');
27
+ const headerSnippet = headerInstance.type === 'INSTANCE' ? headerInstance.executeTemplate().example : null;
28
+ const contentSlot = instance.getSlot('Dialog.Content');
29
+ const contentChildren = contentSlot ? figma.helpers.react.renderChildren(contentSlot) : null;
30
+ const footerInstance = instance.findInstance('Dialog.Footer');
31
+ const footerSnippet = footerInstance.type === 'INSTANCE' ? footerInstance.executeTemplate().example : null;
32
+ export default {
33
+ id: 'dialog',
34
+ imports: ["import { Dialog } from '@cdx-ui/components'"],
35
+ example: figma.code`
36
+ <Dialog size="${size}"${fullBleedProp}>
37
+ <Dialog.Trigger>{/* Trigger */}</Dialog.Trigger>
38
+ <Dialog.Popup>
39
+ ${headerSnippet}
40
+ <Dialog.Content>${contentChildren}</Dialog.Content>
41
+ ${footerSnippet}
42
+ </Dialog.Popup>
43
+ </Dialog>`
44
+ };
45
+ //# sourceMappingURL=Dialog.figma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["figma","instance","selectedInstance","size","getEnum","xs","sm","md","lg","xl","full","fullBleed","true","false","undefined","fullBleedProp","helpers","react","renderProp","headerInstance","findInstance","headerSnippet","type","executeTemplate","example","contentSlot","getSlot","contentChildren","renderChildren","footerInstance","footerSnippet","id","imports","code"],"sourceRoot":"../../../src","sources":["figma/Dialog.figma.ts"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,QAAQ,GAAGD,KAAK,CAACE,gBAAgB;AAEvC,MAAMC,IAAI,GAAGF,QAAQ,CAACG,OAAO,CAAC,MAAM,EAAE;EACpCC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE;AACR,CAAC,CAAC;;AAEF;AACA;AACA,MAAMC,SAAS,GAAGV,QAAQ,CAACG,OAAO,CAAC,WAAW,EAAE;EAC9CQ,IAAI,EAAE,IAAI;EACVC,KAAK,EAAEC;AACT,CAAC,CAAC;AACF,MAAMC,aAAa,GAAGf,KAAK,CAACgB,OAAO,CAACC,KAAK,CAACC,UAAU,CAAC,WAAW,EAAEP,SAAS,CAAC;;AAE5E;AACA,MAAMQ,cAAc,GAAGlB,QAAQ,CAACmB,YAAY,CAAC,eAAe,CAAC;AAC7D,MAAMC,aAAa,GACjBF,cAAc,CAACG,IAAI,KAAK,UAAU,GAAGH,cAAc,CAACI,eAAe,CAAC,CAAC,CAACC,OAAO,GAAG,IAAI;AAEtF,MAAMC,WAAW,GAAGxB,QAAQ,CAACyB,OAAO,CAAC,gBAAgB,CAAC;AACtD,MAAMC,eAAe,GAAGF,WAAW,GAAGzB,KAAK,CAACgB,OAAO,CAACC,KAAK,CAACW,cAAc,CAACH,WAAW,CAAC,GAAG,IAAI;AAE5F,MAAMI,cAAc,GAAG5B,QAAQ,CAACmB,YAAY,CAAC,eAAe,CAAC;AAC7D,MAAMU,aAAa,GACjBD,cAAc,CAACP,IAAI,KAAK,UAAU,GAAGO,cAAc,CAACN,eAAe,CAAC,CAAC,CAACC,OAAO,GAAG,IAAI;AAEtF,eAAe;EACbO,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,CAAC,6CAA6C,CAAC;EACxDR,OAAO,EAAExB,KAAK,CAACiC,IAAI;AACrB,gBAAgB9B,IAAI,IAAIY,aAAa;AACrC;AACA;AACA,MAAMM,aAAa;AACnB,sBAAsBM,eAAe;AACrC,MAAMG,aAAa;AACnB;AACA;AACA,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { useForgeBottomTabScreenOptions, mergeForgeBottomTabScreenOptions } from './useForgeBottomTabScreenOptions';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useForgeBottomTabScreenOptions","mergeForgeBottomTabScreenOptions"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SACEA,8BAA8B,EAC9BC,gCAAgC,QAE3B,kCAAkC","ignoreList":[]}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * useForgeBottomTabScreenOptions
5
+ *
6
+ * Returns a `screenOptions` object for **React Navigation bottom tab navigators**
7
+ * (`@react-navigation/bottom-tabs` v7+), populated with CDX UI design-system
8
+ * token values.
9
+ *
10
+ * CDX UI does not import `@react-navigation` — the consumer passes the returned
11
+ * object to their own navigator. This keeps the dependency out of
12
+ * `@cdx-ui/components` and works with any React Navigation tab variant:
13
+ * `createNativeBottomTabNavigator` (iOS/Android) or `createBottomTabNavigator`
14
+ * (web/JS).
15
+ *
16
+ * **Not compatible with:**
17
+ * - Expo Router `<NativeTabs>` — uses different prop names
18
+ * - React Router or DOM tab components — these are not React Navigation
19
+ *
20
+ * ## Basic usage
21
+ *
22
+ * ```tsx
23
+ * import { useForgeBottomTabScreenOptions } from '@cdx-ui/components';
24
+ * import { createNativeBottomTabNavigator } from '@react-navigation/bottom-tabs/unstable';
25
+ *
26
+ * const Tab = createNativeBottomTabNavigator<AppTabs>();
27
+ *
28
+ * function AppTabs() {
29
+ * const screenOptions = useForgeBottomTabScreenOptions();
30
+ * return (
31
+ * <Tab.Navigator screenOptions={screenOptions}>
32
+ * <Tab.Screen name="Home" component={HomeScreen} />
33
+ * </Tab.Navigator>
34
+ * );
35
+ * }
36
+ * ```
37
+ *
38
+ * ## Overriding individual tokens
39
+ *
40
+ * Spread the returned object and override only the keys you need.
41
+ * Nested style objects (`tabBarLabelStyle`, `tabBarStyle`, `tabBarBadgeStyle`)
42
+ * must be spread individually to preserve unrelated DS defaults:
43
+ *
44
+ * ```tsx
45
+ * const dsOptions = useForgeBottomTabScreenOptions();
46
+ * const screenOptions = {
47
+ * ...dsOptions,
48
+ * tabBarActiveTintColor: '#custom',
49
+ * tabBarLabelStyle: { ...dsOptions.tabBarLabelStyle, fontFamily: 'MyFont' },
50
+ * };
51
+ * ```
52
+ *
53
+ * ## Token variable names
54
+ *
55
+ * | screenOption | CSS variable |
56
+ * | ---------------------------------- | ---------------------------------- |
57
+ * | tabBarActiveTintColor | --color-content-action |
58
+ * | tabBarInactiveTintColor | --color-content-secondary |
59
+ * | tabBarStyle.backgroundColor | --color-surface-primary |
60
+ * | tabBarLabelStyle.fontFamily | --font-body |
61
+ * | tabBarLabelStyle.fontSize | --text-xs (via `text-xs` class) |
62
+ * | tabBarLabelStyle.fontWeight | --font-weight-medium |
63
+ * | tabBarBadgeStyle.backgroundColor | --color-surface-danger-strong |
64
+ *
65
+ * ## Platform notes
66
+ *
67
+ * - `tabBarInactiveTintColor` has no effect on iOS — inactive items always use
68
+ * system grey.
69
+ * - `tabBarStyle.backgroundColor` is ignored on iOS 26+ (liquid glass takes
70
+ * over). It is honoured on iOS ≤18 and all Android versions.
71
+ * - The hook resolves CSS variables via Uniwind's `useCSSVariable`. If the
72
+ * Uniwind runtime is not set up (e.g. in a plain Jest test without a CSS
73
+ * context), each variable resolves to `undefined` and the hardcoded fallback
74
+ * is used instead — fallbacks intentionally match the CDX UI light-theme
75
+ * values.
76
+ * - `tabBarLabelStyle.fontSize` is resolved via Uniwind's
77
+ * `useResolveClassNames('text-xs')` rather than reading the rem-valued
78
+ * `--text-xs` variable directly. React Navigation v7 requires a numeric
79
+ * `fontSize`, and letting Uniwind resolve the class means the rem→px
80
+ * conversion uses the consumer's configured rem base (default 16px,
81
+ * overridable via the `polyfills.rem` Metro option) instead of a constant
82
+ * hardcoded here.
83
+ */
84
+
85
+ import { useCSSVariable, useResolveClassNames } from 'uniwind';
86
+
87
+ // ── Types ────────────────────────────────────────────────────────────────────
88
+
89
+ /**
90
+ * The `screenOptions` shape returned by `useForgeBottomTabScreenOptions`.
91
+ *
92
+ * These are concrete types (not the broad `StyleProp<…>` React Navigation
93
+ * uses internally) so consumers get precise IDE completion. The compile-time
94
+ * drift guard below ensures this type stays assignable to
95
+ * `BottomTabNavigationOptions` — the TypeScript compiler will error if CDX UI
96
+ * adds a key or value that React Navigation no longer accepts.
97
+ *
98
+ * Pass directly as `screenOptions` on a `createNativeBottomTabNavigator` or
99
+ * `createBottomTabNavigator` navigator, or spread and override individual keys.
100
+ */
101
+
102
+ /**
103
+ * Compile-time drift guard.
104
+ *
105
+ * `ForgeReactNavigationBottomTabScreenOptions` must be assignable to
106
+ * `BottomTabNavigationOptions`. TypeScript checks this assignment at build
107
+ * time — if React Navigation removes or incompatibly narrows one of our keys,
108
+ * this line becomes a type error before it reaches consumers.
109
+ *
110
+ * The `null as unknown as ...` cast keeps the runtime value `null` so tree-
111
+ * shakers eliminate the variable from the final bundle entirely.
112
+ */
113
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
+ const _rnDriftGuard =
115
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ null;
117
+
118
+ // ── Fallbacks ────────────────────────────────────────────────────────────────
119
+ //
120
+ // Resolved light-theme values for each token. Used when useCSSVariable returns
121
+ // undefined (no Uniwind CSS context in scope, e.g. Jest).
122
+
123
+ const FALLBACKS = {
124
+ activeTintColor: '#346099',
125
+ // --color-brand-700 (--color-content-action)
126
+ inactiveTintColor: '#4a4c4f',
127
+ // --color-base-800 (--color-content-secondary)
128
+ fontFamily: 'Inter',
129
+ // --font-sans (--font-body)
130
+ fontSize: 12,
131
+ // px (--text-xs)
132
+ fontWeight: '500',
133
+ // (--font-weight-medium)
134
+ backgroundColor: '#ffffff',
135
+ // --color-white (--color-surface-primary)
136
+ badgeBackgroundColor: '#c10007' // --color-red-700 (--color-surface-danger-strong)
137
+ };
138
+
139
+ /**
140
+ * Coerces a Uniwind-resolved `fontSize` to a finite pixel number, falling
141
+ * back when the style could not be resolved (e.g. no Uniwind runtime in Jest).
142
+ *
143
+ * `useResolveClassNames('text-xs')` performs the rem→px conversion using
144
+ * Uniwind's configured rem base, so the value is already numeric on native.
145
+ * React Native Web may surface string values; unit-less and `px` strings are
146
+ * accepted, but anything else (`rem`, `em`, `%`) falls back rather than
147
+ * guessing a rem base here.
148
+ */
149
+ function toPx(value, fallbackPx) {
150
+ if (typeof value === 'number') {
151
+ return Number.isFinite(value) ? value : fallbackPx;
152
+ }
153
+ if (typeof value !== 'string') return fallbackPx;
154
+ const trimmed = value.trim();
155
+ if (!/^-?\d*\.?\d+(px)?$/.test(trimmed)) return fallbackPx;
156
+ return parseFloat(trimmed);
157
+ }
158
+
159
+ /**
160
+ * Coerces a Uniwind `useCSSVariable` fontWeight value to a string.
161
+ *
162
+ * `--font-weight-*` variables are emitted as unit-less numbers (e.g. `500`),
163
+ * and `useCSSVariable` may return them as numbers. React Native's `TextStyle`
164
+ * accepts numeric fontWeight, but react-native-screens' native bottom tabs
165
+ * declare the corresponding host prop (`tabBarItemTitleFontWeight`) as a
166
+ * String — passing a number crashes Android Fabric with
167
+ * "java.lang.Double cannot be cast to java.lang.String".
168
+ */
169
+ function toFontWeight(value, fallback) {
170
+ if (value === undefined) return fallback;
171
+ return String(value);
172
+ }
173
+
174
+ // ── Hook ─────────────────────────────────────────────────────────────────────
175
+
176
+ /**
177
+ * Returns a `screenOptions` object for **React Navigation bottom tab
178
+ * navigators** (`@react-navigation/bottom-tabs` v7+), populated with CDX UI
179
+ * design-system token values.
180
+ *
181
+ * Must be called inside a React component or custom hook (React hook rules
182
+ * apply).
183
+ */
184
+ /**
185
+ * Deep-merges consumer overrides into a base `ForgeReactNavigationBottomTabScreenOptions`
186
+ * object. Nested style objects (`tabBarLabelStyle`, `tabBarStyle`,
187
+ * `tabBarBadgeStyle`) are merged property-by-property so consumers can override
188
+ * individual style properties without losing unrelated DS defaults.
189
+ *
190
+ * Use with `useForgeBottomTabScreenOptions` to apply targeted overrides:
191
+ *
192
+ * ```tsx
193
+ * const dsOptions = useForgeBottomTabScreenOptions();
194
+ * const screenOptions = mergeForgeBottomTabScreenOptions(dsOptions, {
195
+ * tabBarActiveTintColor: '#custom',
196
+ * tabBarLabelStyle: { fontFamily: 'MyFont' }, // fontSize + fontWeight preserved
197
+ * });
198
+ * ```
199
+ */
200
+ export function mergeForgeBottomTabScreenOptions(base, overrides) {
201
+ return {
202
+ ...base,
203
+ ...overrides,
204
+ tabBarLabelStyle: {
205
+ ...base.tabBarLabelStyle,
206
+ ...overrides.tabBarLabelStyle
207
+ },
208
+ tabBarStyle: {
209
+ ...base.tabBarStyle,
210
+ ...overrides.tabBarStyle
211
+ },
212
+ tabBarBadgeStyle: {
213
+ ...base.tabBarBadgeStyle,
214
+ ...overrides.tabBarBadgeStyle
215
+ }
216
+ };
217
+ }
218
+ export function useForgeBottomTabScreenOptions() {
219
+ const activeTintColor = useCSSVariable('--color-content-action');
220
+ const inactiveTintColor = useCSSVariable('--color-content-secondary');
221
+ const fontFamily = useCSSVariable('--font-body');
222
+ const labelTextStyle = useResolveClassNames('text-xs');
223
+ const fontWeight = useCSSVariable('--font-weight-medium');
224
+ const backgroundColor = useCSSVariable('--color-surface-primary');
225
+ const badgeBackgroundColor = useCSSVariable('--color-surface-danger-strong');
226
+ return {
227
+ tabBarActiveTintColor: String(activeTintColor ?? FALLBACKS.activeTintColor),
228
+ tabBarInactiveTintColor: String(inactiveTintColor ?? FALLBACKS.inactiveTintColor),
229
+ tabBarStyle: {
230
+ backgroundColor: String(backgroundColor ?? FALLBACKS.backgroundColor)
231
+ },
232
+ tabBarLabelStyle: {
233
+ fontFamily: String(fontFamily ?? FALLBACKS.fontFamily),
234
+ fontSize: toPx(labelTextStyle?.fontSize, FALLBACKS.fontSize),
235
+ fontWeight: toFontWeight(fontWeight, FALLBACKS.fontWeight)
236
+ },
237
+ tabBarBadgeStyle: {
238
+ backgroundColor: String(badgeBackgroundColor ?? FALLBACKS.badgeBackgroundColor)
239
+ }
240
+ };
241
+ }
242
+ //# sourceMappingURL=useForgeBottomTabScreenOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCSSVariable","useResolveClassNames","_rnDriftGuard","FALLBACKS","activeTintColor","inactiveTintColor","fontFamily","fontSize","fontWeight","backgroundColor","badgeBackgroundColor","toPx","value","fallbackPx","Number","isFinite","trimmed","trim","test","parseFloat","toFontWeight","fallback","undefined","String","mergeForgeBottomTabScreenOptions","base","overrides","tabBarLabelStyle","tabBarStyle","tabBarBadgeStyle","useForgeBottomTabScreenOptions","labelTextStyle","tabBarActiveTintColor","tabBarInactiveTintColor"],"sourceRoot":"../../../src","sources":["hooks/useForgeBottomTabScreenOptions.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,EAAEC,oBAAoB,QAAQ,SAAS;;AAG9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAyC;AAC7C;AACA,IAAyD;;AAE3D;AACA;AACA;AACA;;AAEA,MAAMC,SAAS,GAAG;EAChBC,eAAe,EAAE,SAAS;EAAE;EAC5BC,iBAAiB,EAAE,SAAS;EAAE;EAC9BC,UAAU,EAAE,OAAO;EAAE;EACrBC,QAAQ,EAAE,EAAE;EAAE;EACdC,UAAU,EAAE,KAAgC;EAAE;EAC9CC,eAAe,EAAE,SAAS;EAAE;EAC5BC,oBAAoB,EAAE,SAAS,CAAE;AACnC,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,IAAIA,CAACC,KAAkC,EAAEC,UAAkB,EAAU;EAC5E,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOE,MAAM,CAACC,QAAQ,CAACH,KAAK,CAAC,GAAGA,KAAK,GAAGC,UAAU;EACpD;EACA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE,OAAOC,UAAU;EAChD,MAAMG,OAAO,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;EAC5B,IAAI,CAAC,oBAAoB,CAACC,IAAI,CAACF,OAAO,CAAC,EAAE,OAAOH,UAAU;EAC1D,OAAOM,UAAU,CAACH,OAAO,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,YAAYA,CACnBR,KAAkC,EAClCS,QAAiC,EACR;EACzB,IAAIT,KAAK,KAAKU,SAAS,EAAE,OAAOD,QAAQ;EACxC,OAAOE,MAAM,CAACX,KAAK,CAAC;AACtB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASY,gCAAgCA,CAC9CC,IAAgD,EAChDC,SAA8D,EAClB;EAC5C,OAAO;IACL,GAAGD,IAAI;IACP,GAAGC,SAAS;IACZC,gBAAgB,EAAE;MAAE,GAAGF,IAAI,CAACE,gBAAgB;MAAE,GAAGD,SAAS,CAACC;IAAiB,CAAC;IAC7EC,WAAW,EAAE;MAAE,GAAGH,IAAI,CAACG,WAAW;MAAE,GAAGF,SAAS,CAACE;IAAY,CAAC;IAC9DC,gBAAgB,EAAE;MAAE,GAAGJ,IAAI,CAACI,gBAAgB;MAAE,GAAGH,SAAS,CAACG;IAAiB;EAC9E,CAAC;AACH;AAEA,OAAO,SAASC,8BAA8BA,CAAA,EAA+C;EAC3F,MAAM1B,eAAe,GAAGJ,cAAc,CAAC,wBAAwB,CAAC;EAChE,MAAMK,iBAAiB,GAAGL,cAAc,CAAC,2BAA2B,CAAC;EACrE,MAAMM,UAAU,GAAGN,cAAc,CAAC,aAAa,CAAC;EAChD,MAAM+B,cAAc,GAAG9B,oBAAoB,CAAC,SAAS,CAAC;EACtD,MAAMO,UAAU,GAAGR,cAAc,CAAC,sBAAsB,CAAC;EACzD,MAAMS,eAAe,GAAGT,cAAc,CAAC,yBAAyB,CAAC;EACjE,MAAMU,oBAAoB,GAAGV,cAAc,CAAC,+BAA+B,CAAC;EAE5E,OAAO;IACLgC,qBAAqB,EAAET,MAAM,CAACnB,eAAe,IAAID,SAAS,CAACC,eAAe,CAAC;IAC3E6B,uBAAuB,EAAEV,MAAM,CAAClB,iBAAiB,IAAIF,SAAS,CAACE,iBAAiB,CAAC;IACjFuB,WAAW,EAAE;MACXnB,eAAe,EAAEc,MAAM,CAACd,eAAe,IAAIN,SAAS,CAACM,eAAe;IACtE,CAAC;IACDkB,gBAAgB,EAAE;MAChBrB,UAAU,EAAEiB,MAAM,CAACjB,UAAU,IAAIH,SAAS,CAACG,UAAU,CAAC;MACtDC,QAAQ,EAAEI,IAAI,CAACoB,cAAc,EAAExB,QAAQ,EAAEJ,SAAS,CAACI,QAAQ,CAAC;MAC5DC,UAAU,EAAEY,YAAY,CAACZ,UAAU,EAAEL,SAAS,CAACK,UAAU;IAC3D,CAAC;IACDqB,gBAAgB,EAAE;MAChBpB,eAAe,EAAEc,MAAM,CAACb,oBAAoB,IAAIP,SAAS,CAACO,oBAAoB;IAChF;EACF,CAAC;AACH","ignoreList":[]}
@@ -2,6 +2,8 @@
2
2
 
3
3
  /// <reference types="uniwind/types" preserve="true" />
4
4
  export * from './components';
5
+ export * from './hooks';
6
+ export * from './navigation';
5
7
  export { View, ScrollView, KeyboardAvoidingView } from 'react-native';
6
8
  export { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","ScrollView","KeyboardAvoidingView","SafeAreaView","useSafeAreaInsets"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,cAAc,cAAc;AAC5B,SAASA,IAAI,EAAEC,UAAU,EAAEC,oBAAoB,QAAQ,cAAc;AACrE,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,gCAAgC","ignoreList":[]}
1
+ {"version":3,"names":["View","ScrollView","KeyboardAvoidingView","SafeAreaView","useSafeAreaInsets"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,cAAc,cAAc;AAC5B,cAAc,SAAS;AACvB,cAAc,cAAc;AAC5B,SAASA,IAAI,EAAEC,UAAU,EAAEC,oBAAoB,QAAQ,cAAc;AACrE,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,gCAAgC","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import { createElement } from 'react';
4
+ /**
5
+ * forgeTabIcon — web/JS-navigator implementation.
6
+ *
7
+ * Maps a {@link ForgeTabIcon} descriptor to a React Navigation `tabBarIcon`
8
+ * value that renders the same Forge UI icon on every platform:
9
+ *
10
+ * - **Web** (`createBottomTabNavigator`): renders the SVG icon component with
11
+ * `filled={focused}` and the navigator-supplied `color`/`size` — pair with
12
+ * `useForgeBottomTabScreenOptions` so tints come from design tokens.
13
+ * - **iOS/Android** (`createNativeBottomTabNavigator`): the `.native` module
14
+ * of this file returns a tinted template-image descriptor instead.
15
+ *
16
+ * ```tsx
17
+ * import { useForgeBottomTabScreenOptions, forgeTabIcon } from '@cdx-ui/components';
18
+ * import { HomeTabIcon } from '@cdx-ui/icons/tab-icons';
19
+ *
20
+ * <Tab.Screen
21
+ * name="Home"
22
+ * component={HomeScreen}
23
+ * options={{ title: 'Home', tabBarIcon: forgeTabIcon(HomeTabIcon) }}
24
+ * />
25
+ * ```
26
+ */
27
+ export function forgeTabIcon(icon) {
28
+ const render = ({
29
+ focused,
30
+ color,
31
+ size
32
+ }) => /*#__PURE__*/createElement(icon.Component, {
33
+ filled: focused,
34
+ color,
35
+ size
36
+ });
37
+ return render;
38
+ }
39
+ //# sourceMappingURL=forgeTabIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createElement","forgeTabIcon","icon","render","focused","color","size","Component","filled"],"sourceRoot":"../../../src","sources":["navigation/forgeTabIcon.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,OAAO;AAIrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,IAAkB,EAAmB;EAChE,MAAMC,MAAM,GAAGA,CAAC;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAwD,CAAC,kBACzFN,aAAa,CAACE,IAAI,CAACK,SAAS,EAAE;IAAEC,MAAM,EAAEJ,OAAO;IAAEC,KAAK;IAAEC;EAAK,CAAC,CAAC;EAEjE,OAAOH,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * forgeTabIcon — iOS/Android implementation (see `forgeTabIcon.ts` for the
5
+ * full contract and usage example).
6
+ *
7
+ * Returns a `tabBarIcon` function for `createNativeBottomTabNavigator` that
8
+ * resolves the descriptor's pre-rasterized template PNGs: outlined at rest,
9
+ * filled when focused (iOS only — Android tabs use one static icon and
10
+ * express selection via tint). `tinted: true` makes the native tab bar apply
11
+ * `tabBarActiveTintColor` / `tabBarInactiveTintColor` at runtime, so theming
12
+ * and dark mode flow through `useForgeBottomTabScreenOptions` unchanged.
13
+ */
14
+ export function forgeTabIcon(icon) {
15
+ const {
16
+ native
17
+ } = icon;
18
+ if (!native) {
19
+ const name = icon.Component.displayName ?? 'icon';
20
+ throw new Error(`forgeTabIcon: "${name}" has no native tab assets. Use a generated ` + `descriptor from '@cdx-ui/icons/tab-icons' (curated in the icon ` + `package's tab-icons.config.json), or pass a descriptor with your ` + `own template PNGs: { native: { outlined: require(...), filled: ` + `require(...) } } at a 24dp base size with @2x/@3x variants.`);
21
+ }
22
+ const resolve = ({
23
+ focused
24
+ }) => ({
25
+ type: 'image',
26
+ source: focused ? native.filled : native.outlined,
27
+ tinted: true
28
+ });
29
+ return resolve;
30
+ }
31
+ //# sourceMappingURL=forgeTabIcon.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forgeTabIcon","icon","native","name","Component","displayName","Error","resolve","focused","type","source","filled","outlined","tinted"],"sourceRoot":"../../../src","sources":["navigation/forgeTabIcon.native.ts"],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,YAAYA,CAACC,IAAkB,EAAmB;EAChE,MAAM;IAAEC;EAAO,CAAC,GAAGD,IAAI;EAEvB,IAAI,CAACC,MAAM,EAAE;IACX,MAAMC,IAAI,GAAGF,IAAI,CAACG,SAAS,CAACC,WAAW,IAAI,MAAM;IACjD,MAAM,IAAIC,KAAK,CACb,kBAAkBH,IAAI,8CAA8C,GAClE,iEAAiE,GACjE,mEAAmE,GACnE,iEAAiE,GACjE,6DACJ,CAAC;EACH;EAEA,MAAMI,OAAO,GAAGA,CAAC;IAAEC;EAA8B,CAAC,MAAgC;IAChFC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAEF,OAAO,GAAGN,MAAM,CAACS,MAAM,GAAGT,MAAM,CAACU,QAAQ;IACjDC,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,OAAON,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { forgeTabIcon } from './forgeTabIcon';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forgeTabIcon"],"sourceRoot":"../../../src","sources":["navigation/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gBAAgB","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Structural mirror of the `image` arm of `NativeBottomTabIcon` from
5
+ * `@react-navigation/bottom-tabs/unstable`. Declared locally so
6
+ * `@cdx-ui/components` carries no runtime React Navigation dependency —
7
+ * the drift guards below fail the build if the upstream shape changes.
8
+ */
9
+
10
+ /**
11
+ * The value `forgeTabIcon()` returns — callable as `tabBarIcon` on **both**
12
+ * React Navigation bottom tab navigators. The intersection carries both call
13
+ * signatures; the platform-split implementation guarantees the matching one
14
+ * at runtime:
15
+ *
16
+ * - `createBottomTabNavigator` (web/JS) invokes it with
17
+ * `{ focused, color, size }` and renders the returned element.
18
+ * - `createNativeBottomTabNavigator` (iOS/Android) invokes it with
19
+ * `{ focused }` and receives a native icon descriptor.
20
+ */
21
+
22
+ /**
23
+ * Compile-time drift guards (see `useForgeBottomTabScreenOptions` for the
24
+ * pattern): `ForgeTabBarIcon` must stay assignable to the `tabBarIcon`
25
+ * option of both navigators. The `null as any` casts keep the runtime
26
+ * values `null` so tree-shakers eliminate them entirely.
27
+ */
28
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
+ const _rnDriftGuardWeb =
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ null;
32
+
33
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
+ const _rnDriftGuardNative =
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ null;
37
+ export {};
38
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rnDriftGuardWeb","_rnDriftGuardNative"],"sourceRoot":"../../../src","sources":["navigation/types.ts"],"mappings":";;AAKA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,gBAA0D;AAC9D;AACA,IAA8B;;AAEhC;AACA,MAAMC,mBAAmE;AACvE;AACA,IAA8B;AAAC","ignoreList":[]}
@@ -15,11 +15,12 @@ export interface AlertDialogCancelProps extends Omit<ButtonProps, 'variant'> {
15
15
  declare const AlertDialogCancel: React.ForwardRefExoticComponent<AlertDialogCancelProps & React.RefAttributes<View>>;
16
16
  type AlertDialogCompoundComponent = typeof AlertDialogRoot & {
17
17
  Trigger: typeof Dialog.Trigger;
18
- Content: typeof Dialog.Content;
18
+ Popup: typeof Dialog.Popup;
19
19
  Header: typeof Dialog.Header;
20
20
  Title: typeof Dialog.Title;
21
21
  Description: typeof Dialog.Description;
22
- Body: typeof Dialog.Body;
22
+ Content: typeof Dialog.Content;
23
+ Text: typeof Dialog.Text;
23
24
  Footer: typeof Dialog.Footer;
24
25
  Close: typeof Dialog.Close;
25
26
  Action: typeof AlertDialogAction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AlertDialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAMzD,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE,QAAA,MAAM,eAAe,mFAqBpB,CAAC;AAOF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,qFAgBtB,CAAC;AAOF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,qFAoBtB,CAAC;AAOF,KAAK,4BAA4B,GAAG,OAAO,eAAe,GAAG;IAC3D,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3B,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,EAAE,OAAO,iBAAiB,CAAC;IACjC,MAAM,EAAE,OAAO,iBAAiB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,WAAW,EAWlB,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AlertDialog/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAMzD,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE,QAAA,MAAM,eAAe,mFAqBpB,CAAC;AAOF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,qFAgBtB,CAAC;AAOF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,qFAoBtB,CAAC;AAOF,KAAK,4BAA4B,GAAG,OAAO,eAAe,GAAG;IAC3D,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3B,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC;IACvC,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,EAAE,OAAO,iBAAiB,CAAC;IACjC,MAAM,EAAE,OAAO,iBAAiB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,WAAW,EAYlB,4BAA4B,CAAC"}
@@ -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" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
3
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | "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" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
7
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | "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" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
10
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | "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" | "2xs" | "xs" | "xl" | "2xl" | null | undefined;
13
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | "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
@@ -19,6 +19,8 @@ export declare const buttonGroupVariants: (props?: ({
19
19
  isAttached?: boolean | null | undefined;
20
20
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
21
21
  export declare const buttonIconVariants: (props?: ({
22
+ variant?: "solid" | "outline" | "ghost" | null | undefined;
23
+ color?: "action" | "danger" | "warning" | "success" | "info" | null | undefined;
22
24
  size?: "small" | "default" | null | undefined;
23
25
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
24
26
  export type ButtonVariantProps = VariantProps<typeof buttonRootVariants>;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Button/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,eAAO,MAAM,kBAAkB;;;;;8EA+M9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;8EAuC7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;8EA0EhC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;8EAiB9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;8EAU7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Button/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKlE,eAAO,MAAM,kBAAkB;;;;;8EA+M9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;8EAuC7B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;8EA0EhC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;8EAiB9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;8EAuC7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}