react-native-inapp-inspector 2.3.25 → 2.4.0

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 (123) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +9 -6
  3. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  4. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  5. package/dist/commonjs/components/Inspector/AnalyticsTab.js +11 -15
  6. package/dist/commonjs/components/Inspector/ConsoleTab.js +11 -14
  7. package/dist/commonjs/components/Inspector/CrashDetail.js +7 -6
  8. package/dist/commonjs/components/Inspector/CrashTab.js +14 -14
  9. package/dist/commonjs/components/Inspector/DebuggingTab.js +6 -6
  10. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +77 -43
  11. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  12. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  13. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  14. package/dist/commonjs/components/Inspector/MainScreen.js +67 -29
  15. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  16. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  17. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  18. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  19. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  20. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  21. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  22. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  23. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  24. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  25. package/dist/commonjs/components/Inspector/ReduxTab.js +13 -23
  26. package/dist/commonjs/components/Inspector/SettingsPanel.js +253 -105
  27. package/dist/commonjs/components/Inspector/StorageTab.js +35 -35
  28. package/dist/commonjs/components/Inspector/TabBar.js +9 -8
  29. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  30. package/dist/commonjs/components/JsonViewer.js +77 -90
  31. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  32. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  33. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  34. package/dist/commonjs/components/NetworkIcons.js +10 -6
  35. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  36. package/dist/commonjs/components/SegmentedTabs.js +12 -8
  37. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  38. package/dist/commonjs/components/ShareButton.js +6 -0
  39. package/dist/commonjs/constants/version.d.ts +1 -1
  40. package/dist/commonjs/constants/version.js +1 -1
  41. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  42. package/dist/commonjs/customHooks/networkLogger.js +1 -1
  43. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  44. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  45. package/dist/commonjs/helpers/memoryManager.d.ts +2 -1
  46. package/dist/commonjs/helpers/memoryManager.js +1 -1
  47. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  48. package/dist/commonjs/helpers/settingsStore.js +1 -1
  49. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  50. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  51. package/dist/commonjs/i18n/locales/en.json +1 -1
  52. package/dist/commonjs/index.d.ts +5 -2
  53. package/dist/commonjs/index.js +4 -4
  54. package/dist/commonjs/push.d.ts +4 -0
  55. package/dist/commonjs/push.js +1 -0
  56. package/dist/commonjs/types/enums.d.ts +30 -0
  57. package/dist/commonjs/types/enums.js +1 -1
  58. package/dist/commonjs/types/index.d.ts +10 -0
  59. package/dist/commonjs/types/interfaces.d.ts +63 -7
  60. package/dist/esm/components/AnalyticsDetail.js +28 -25
  61. package/dist/esm/components/AppHeaderLogo.js +5 -7
  62. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  63. package/dist/esm/components/Inspector/AnalyticsTab.js +35 -39
  64. package/dist/esm/components/Inspector/ConsoleTab.js +50 -53
  65. package/dist/esm/components/Inspector/CrashDetail.js +11 -10
  66. package/dist/esm/components/Inspector/CrashTab.js +14 -14
  67. package/dist/esm/components/Inspector/DebuggingTab.js +10 -10
  68. package/dist/esm/components/Inspector/DeviceInfoTab.js +208 -174
  69. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  70. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  71. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  72. package/dist/esm/components/Inspector/MainScreen.js +100 -62
  73. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  74. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  75. package/dist/esm/components/Inspector/NetworkTab.js +136 -134
  76. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  77. package/dist/esm/components/Inspector/PushCard.js +89 -0
  78. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  79. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  80. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  81. package/dist/esm/components/Inspector/PushTab.js +45 -0
  82. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  83. package/dist/esm/components/Inspector/ReduxTab.js +103 -113
  84. package/dist/esm/components/Inspector/SettingsPanel.js +406 -258
  85. package/dist/esm/components/Inspector/StorageTab.js +158 -158
  86. package/dist/esm/components/Inspector/TabBar.js +28 -27
  87. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  88. package/dist/esm/components/JsonViewer.js +101 -114
  89. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  90. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  91. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  92. package/dist/esm/components/NetworkIcons.js +7 -3
  93. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  94. package/dist/esm/components/SegmentedTabs.js +12 -8
  95. package/dist/esm/components/ShareButton.d.ts +11 -0
  96. package/dist/esm/components/ShareButton.js +6 -0
  97. package/dist/esm/constants/version.d.ts +1 -1
  98. package/dist/esm/constants/version.js +1 -1
  99. package/dist/esm/customHooks/crashHandler.js +6 -6
  100. package/dist/esm/customHooks/networkLogger.js +1 -1
  101. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  102. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  103. package/dist/esm/helpers/memoryManager.d.ts +2 -1
  104. package/dist/esm/helpers/memoryManager.js +1 -1
  105. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  106. package/dist/esm/helpers/settingsStore.js +1 -1
  107. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  108. package/dist/esm/helpers/shareFormatter.js +7 -0
  109. package/dist/esm/i18n/locales/en.json +1 -1
  110. package/dist/esm/index.d.ts +5 -2
  111. package/dist/esm/index.js +7 -7
  112. package/dist/esm/push.d.ts +4 -0
  113. package/dist/esm/push.js +1 -0
  114. package/dist/esm/types/enums.d.ts +30 -0
  115. package/dist/esm/types/enums.js +1 -1
  116. package/dist/esm/types/index.d.ts +10 -0
  117. package/dist/esm/types/interfaces.d.ts +63 -7
  118. package/package.json +53 -10
  119. package/src/native/NativeInspector.ts +0 -1
  120. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  121. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  122. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  123. package/dist/esm/components/BrandSquareIcon.js +0 -112
@@ -1,159 +1,146 @@
1
- import Q,{useState as L,useEffect as le,useMemo as v,useCallback as He}from"react";import{ScrollView as O,View as T,Text as S,StyleSheet as Ie,TouchableOpacity as Te,Platform as Ae}from"react-native";import{useTranslation as je}from"../i18n";import Pe from"./TreeNode";import X from"./HighlightText";import N from"./TouchableScale";import{PrettyIcon as Oe,RawIcon as Le,TableIcon as Ne,ChevronIcon as De,CopyIcon as Ee,CheckIcon as Je}from"./NetworkIcons";import{AppColors as t}from"../styles/AppColors";import{getSize as Ke,copyToClipboard as Me}from"../helpers";import{triggerNativeHaptic as $e}from"../native/NativeInspector";const V=Ae.select({ios:"Menlo",android:"monospace",default:"monospace"}),Ge=o=>o===null?{label:"null",color:t.errorColor,bg:t.errorCardBg,border:t.errorBorder}:o===void 0?{label:"undef",color:t.errorColor,bg:t.errorCardBg,border:t.errorBorder}:Array.isArray(o)?{label:`arr[${o.length}]`,color:t.blue600,bg:t.blueBg,border:t.sky100}:typeof o=="object"?{label:`obj{${Object.keys(o).length}}`,color:t.violet600,bg:t.purple50,border:t.purple200}:typeof o=="number"?{label:"num",color:t.amber600,bg:t.amber100,border:t.amber200}:typeof o=="boolean"?{label:"bool",color:t.pink600,bg:t.roseBg,border:t.roseBorder}:{label:"str",color:t.emerald600,bg:t.emeraldBg,border:t.emeraldBorder},Ce=Q.memo(({text:o,search:C,detectLinks:A})=>{const k=o.trim();let F=e.rawMonospaceText;return k.startsWith('"')?F=e.syntaxString:k==="null"||k.startsWith("null,")||k==="undefined"?F=e.syntaxNull:k==="true"||k.startsWith("true,")||k==="false"||k.startsWith("false,")?F=e.syntaxBoolean:/^-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?,?$/.test(k)&&(F=e.syntaxNumber),<X text={o}search={C}detectLinks={A}style={F}selectable={!0}highlightStyle={e.highlight}/>}),Ye=Q.memo(({line:o,search:C,detectLinks:A})=>{const k=o.match(/^(\s+)(.*)$/),F=k?k[1]:"",j=k?k[2]:o,P=F?F.replace(/ /g,"\xB7 ").replace(/ /g,"\xB7"):"",W=j.match(/^("(?:[^"\\]|\\.)*")(\s*:\s*)(.*)$/);if(W){const H=W[1],J=W[2],z=W[3];return<T style={e.rawLineContentRow}>
2
- {P.length>0&&<S style={e.indentDots}>{P}</S>}
3
- <X text={H}search={C}style={e.syntaxKey}selectable={!0}highlightStyle={e.highlight}/>
4
- <S style={e.syntaxColon}>{J}</S>
5
- <Ce text={z}search={C}detectLinks={A}/>
1
+ import Q,{useState as D,useEffect as le,useMemo as G,useCallback as He}from"react";import{ScrollView as O,View as T,Text as V,StyleSheet as Ie,TouchableOpacity as Te,Platform as We}from"react-native";import{useTranslation as Ae}from"../i18n";import Pe from"./TreeNode";import X from"./HighlightText";import E from"./TouchableScale";import{PrettyIcon as Ne,RawIcon as Oe,TableIcon as De,ChevronIcon as Ee,CopyIcon as Le,CheckIcon as Ke}from"./NetworkIcons";import{AppColors as t}from"../styles/AppColors";import{AppFonts as N}from"../styles/AppFonts";import{getSize as Me,copyToClipboard as ve}from"../helpers";import{triggerNativeHaptic as Je}from"../native/NativeInspector";const I=We.select({ios:"Menlo",android:"monospace",default:"monospace"}),$e=o=>o===null?{label:"null",color:t.errorColor,bg:t.errorCardBg,border:t.errorBorder}:o===void 0?{label:"undef",color:t.errorColor,bg:t.errorCardBg,border:t.errorBorder}:Array.isArray(o)?{label:`arr[${o.length}]`,color:t.blue600,bg:t.blueBg,border:t.sky100}:typeof o=="object"?{label:`obj{${Object.keys(o).length}}`,color:t.violet600,bg:t.purple50,border:t.purple200}:typeof o=="number"?{label:"num",color:t.amber600,bg:t.amber100,border:t.amber200}:typeof o=="boolean"?{label:"bool",color:t.pink600,bg:t.roseBg,border:t.roseBorder}:{label:"str",color:t.emerald600,bg:t.emeraldBg,border:t.emeraldBorder},Se=Q.memo(({text:o,search:S,detectLinks:A})=>{const B=o.trim();let F=e.rawMonospaceText;return B.startsWith('"')?F=e.syntaxString:B==="null"||B.startsWith("null,")||B==="undefined"?F=e.syntaxNull:B==="true"||B.startsWith("true,")||B==="false"||B.startsWith("false,")?F=e.syntaxBoolean:/^-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?,?$/.test(B)&&(F=e.syntaxNumber),<X text={o}search={S}detectLinks={A}style={F}selectable={!0}highlightStyle={e.highlight}/>}),Ge=Q.memo(({line:o,search:S,detectLinks:A})=>{const B=o.match(/^(\s+)(.*)$/),F=B?B[1]:"",P=B?B[2]:o,j=F?F.replace(/ /g,"\xB7 ").replace(/ /g,"\xB7"):"",z=P.match(/^("(?:[^"\\]|\\.)*")(\s*:\s*)(.*)$/);if(z){const k=z[1],K=z[2],H=z[3];return<T style={e.rawLineContentRow}>
2
+ {j.length>0&&<V style={e.indentDots}>{j}</V>}
3
+ <X text={k}search={S}style={e.syntaxKey}selectable={!0}highlightStyle={e.highlight}/>
4
+ <V style={e.syntaxColon}>{K}</V>
5
+ <Se text={H}search={S}detectLinks={A}/>
6
6
  </T>}return<T style={e.rawLineContentRow}>
7
- {P.length>0&&<S style={e.indentDots}>{P}</S>}
8
- <Ce text={j}search={C}detectLinks={A}/>
9
- </T>}),Ue=Q.memo(({itemKey:o,val:C,search:A,index:k})=>{const[F,j]=L(!1),P=C!==null&&typeof C=="object",W=Ge(C);let H="";if(C===null)H="null";else if(C===void 0)H="undefined";else if(P)try{H=JSON.stringify(C,null,2)}catch{H=String(C)}else H=String(C);const J=H.includes(`
10
- `)||H.length>80;return<T style={[e.tableRow,k%2===1&&e.tableRowAlt]}>
7
+ {j.length>0&&<V style={e.indentDots}>{j}</V>}
8
+ <Se text={P}search={S}detectLinks={A}/>
9
+ </T>}),Ye=Q.memo(({itemKey:o,val:S,search:A,index:B})=>{const[F,P]=D(!1),j=S!==null&&typeof S=="object",z=$e(S);let k="";if(S===null)k="null";else if(S===void 0)k="undefined";else if(j)try{k=JSON.stringify(S,null,2)}catch{k=String(S)}else k=String(S);const K=k.includes(`
10
+ `)||k.length>80;return<T style={[e.tableRow,B%2===1&&e.tableRowAlt]}>
11
11
 
12
12
  <T style={e.tableColKey}>
13
13
  <X text={o}search={A}style={e.tableCellKey}highlightStyle={e.highlight}/>
14
- <T style={[e.typePill,{backgroundColor:W.bg,borderColor:W.border}]}>
15
- <S style={[e.typePillText,{color:W.color}]}>
16
- {W.label}
17
- </S>
14
+ <T style={[e.typePill,{backgroundColor:z.bg,borderColor:z.border}]}>
15
+ <V style={[e.typePillText,{color:z.color}]}>
16
+ {z.label}
17
+ </V>
18
18
  </T>
19
19
  </T>
20
20
 
21
21
 
22
22
  <T style={e.tableColVal}>
23
- <T style={P?e.tableCodeBox:void 0}>
24
- <X text={H}search={A}style={[e.tableCellValue,C==null?e.syntaxNull:void 0,typeof C=="number"?e.syntaxNumber:void 0,typeof C=="boolean"?e.syntaxBoolean:void 0,typeof C=="string"?e.syntaxString:void 0]}highlightStyle={e.highlight}numberOfLines={F?void 0:3}selectable={!0}/>
23
+ <T style={j?e.tableCodeBox:void 0}>
24
+ <X text={k}search={A}style={[e.tableCellValue,S==null?e.syntaxNull:void 0,typeof S=="number"?e.syntaxNumber:void 0,typeof S=="boolean"?e.syntaxBoolean:void 0,typeof S=="string"?e.syntaxString:void 0]}highlightStyle={e.highlight}numberOfLines={F?void 0:3}selectable={!0}/>
25
25
  </T>
26
- {J&&<Te onPress={()=>j(z=>!z)}hitSlop={6}style={e.showMoreBtn}>
27
- <S style={e.showMoreText}>
26
+ {K&&<Te onPress={()=>P(H=>!H)}hitSlop={6}style={e.showMoreBtn}>
27
+ <V style={e.showMoreText}>
28
28
  {F?"Collapse":"Expand"}
29
- </S>
30
- <De direction={F?"up":"down"}size={9}color="#4F46E5"/>
29
+ </V>
30
+ <Ee direction={F?"up":"down"}size={9}color="#4F46E5"/>
31
31
  </Te>}
32
32
  </T>
33
- </T>}),_e=Q.memo(({data:o,search:C,forceOpen:A,defaultExpandDepth:k=1,wrap:F,fullHeight:j=!1,maxHeight:P,mode:W,onModeChange:H,hideTabs:J=!1})=>{const{t:z}=je(),[Se,ne]=L(W??"pretty"),[ie,ae]=L(!1),[K,se]=L(F??!0),[D,Ve]=L("compact"),[M,ce]=L(A),[Be,ke]=L(!1),R=H&&W?W:Se,Z=B=>{ne(B),H&&H(B)};le(()=>{F!==void 0&&se(F)},[F]),le(()=>{A!==void 0&&ce(A)},[A]),le(()=>{W&&ne(W)},[W]);const E=v(()=>{if(o==null)return"";if(typeof o=="string"){const B=o.trim();try{const I=JSON.parse(B);return JSON.stringify(I,null,2)}catch{return o}}try{return JSON.stringify(o,null,2)??""}catch{return String(o)||""}},[o]),ee=v(()=>{if(typeof o=="string"){const B=o.trim();try{const I=JSON.parse(B);return JSON.stringify(I)}catch{return o}}try{return JSON.stringify(o)??""}catch{return String(o)||""}},[o]),de=D==="formatted"?E:ee,ge=5e4,$=typeof de=="string"?de:"",ye=$.length>ge&&!Be,te=ye?$.slice(0,ge):$,oe=v(()=>te?te.split(`
34
- `):[""],[te]),pe=v(()=>R==="raw"?oe.length:E?E.split(`
35
- `).length:1,[R,oe.length,E]),Fe=v(()=>Ke(o),[o]),ze=He(()=>{$e("success"),Me(D==="compact"?ee:E,"JSON"),ae(!0),setTimeout(()=>ae(!1),1200)},[D,ee,E]),re=typeof o=="object"&&o!==null,Re=o==null||re&&Object.keys(o).length===0,ue=()=>{if(!re)return<T style={e.tableRow}>
33
+ </T>}),qe=Q.memo(({data:o,search:S,forceOpen:A,defaultExpandDepth:B=1,wrap:F,fullHeight:P=!1,maxHeight:j,mode:z,onModeChange:k,hideTabs:K=!1})=>{const{t:H}=Ae(),[Ce,ne]=D(z??"raw"),[ie,ae]=D(!1),[M,se]=D(F??!0),[v,Ve]=D("compact"),[J,ce]=D(A),[Be,Fe]=D(!1),R=k&&z?z:Ce,Z=C=>{ne(C),k&&k(C)};le(()=>{F!==void 0&&se(F)},[F]),le(()=>{A!==void 0&&ce(A)},[A]),le(()=>{z&&ne(z)},[z]);const L=G(()=>{if(o==null)return"";if(typeof o=="string"){const C=o.trim();try{const W=JSON.parse(C);return JSON.stringify(W,null,2)}catch{return o}}try{return JSON.stringify(o,null,2)??""}catch{return String(o)||""}},[o]),ee=G(()=>{if(typeof o=="string"){const C=o.trim();try{const W=JSON.parse(C);return JSON.stringify(W)}catch{return o}}try{return JSON.stringify(o)??""}catch{return String(o)||""}},[o]),de=v==="formatted"?L:ee,ge=5e4,$=typeof de=="string"?de:"",ye=$.length>ge&&!Be,te=ye?$.slice(0,ge):$,oe=G(()=>te?te.split(`
34
+ `):[""],[te]),Ue=G(()=>R==="raw"?oe.length:L?L.split(`
35
+ `).length:1,[R,oe.length,L]),_e=G(()=>Me(o),[o]),ze=He(()=>{Je("success"),ve(v==="compact"?ee:L,"JSON"),ae(!0),setTimeout(()=>ae(!1),1200)},[v,ee,L]),re=typeof o=="object"&&o!==null,Re=o==null||re&&Object.keys(o).length===0,pe=()=>{if(!re)return<T style={e.tableRow}>
36
36
  <T style={e.tableColKey}>
37
- <S style={e.tableCellKey}>
38
- {z("network.jsonViewer.value")}
39
- </S>
37
+ <V style={e.tableCellKey}>
38
+ {H("network.jsonViewer.value")}
39
+ </V>
40
40
  </T>
41
41
  <T style={e.tableColVal}>
42
- <S style={e.tableCellValue}>{String(o)}</S>
42
+ <V style={e.tableCellValue}>{String(o)}</V>
43
43
  </T>
44
- </T>;let B=Object.keys(o);if(C&&C.trim().length>0){const I=C.trim().toLowerCase();B=B.filter(U=>{const _=o[U],We=typeof _=="object"&&_!==null?JSON.stringify(_):String(_);return U.toLowerCase().includes(I)||We.toLowerCase().includes(I)})}return B.length===0?<T style={e.emptyContainer}>
45
- <S style={e.emptyText}>
46
- {C&&C.trim().length>0?"No matching keys or values found":z("network.jsonViewer.emptyTable")}
47
- </S>
44
+ </T>;let C=Object.keys(o);if(S&&S.trim().length>0){const W=S.trim().toLowerCase();C=C.filter(U=>{const _=o[U],ke=typeof _=="object"&&_!==null?JSON.stringify(_):String(_);return U.toLowerCase().includes(W)||ke.toLowerCase().includes(W)})}return C.length===0?<T style={e.emptyContainer}>
45
+ <V style={e.emptyText}>
46
+ {S&&S.trim().length>0?"No matching keys or values found":H("network.jsonViewer.emptyTable")}
47
+ </V>
48
48
  </T>:<T style={e.tableView}>
49
49
 
50
50
  <T style={e.tableHeaderRow}>
51
- <S style={[e.tableHeaderCell,{flex:2}]}>
51
+ <V style={[e.tableHeaderCell,{flex:2}]}>
52
52
  KEY / PROPERTY
53
- </S>
54
- <S style={[e.tableHeaderCell,{flex:3}]}>VALUE</S>
53
+ </V>
54
+ <V style={[e.tableHeaderCell,{flex:3}]}>VALUE</V>
55
55
  </T>
56
- {B.map((I,U)=><Ue key={I}index={U}itemKey={I}val={o[I]}search={C}/>)}
57
- </T>},Y=<Pe data={o}search={C}forceOpen={M}defaultExpandDepth={M?99:k}/>,q=()=><T style={e.rawLinesWrapper}>
58
- {oe.map((B,I)=><T key={I}style={e.rawCodeLineRow}>
56
+ {C.map((W,U)=><Ye key={W}index={U}itemKey={W}val={o[W]}search={S}/>)}
57
+ </T>},Y=<Pe data={o}search={S}forceOpen={J}defaultExpandDepth={J?99:B}/>,q=()=><T style={e.rawLinesWrapper}>
58
+ {oe.map((C,W)=><T key={W}style={e.rawCodeLineRow}>
59
59
 
60
60
  <T style={e.gutterCell}>
61
- <S style={e.gutterNumber}selectable={!1}>
62
- {I+1}
63
- </S>
61
+ <V style={e.gutterNumber}selectable={!1}>
62
+ {W+1}
63
+ </V>
64
64
  </T>
65
65
 
66
66
 
67
67
  <T style={e.rawTextCell}>
68
- <Ye line={B}search={C}detectLinks={$.length<2e4}/>
68
+ <Ge line={C}search={S}detectLinks={$.length<2e4}/>
69
69
  </T>
70
70
  </T>)}
71
- </T>,be=()=>ye?<Te onPress={()=>ke(!0)}activeOpacity={.8}style={e.truncationBanner}>
72
- <S style={e.truncationText}>
71
+ </T>,ue=()=>ye?<Te onPress={()=>Fe(!0)}activeOpacity={.8}style={e.truncationBanner}>
72
+ <V style={e.truncationText}>
73
73
  Showing first 50 KB ({Math.round($.length/1024)} KB
74
74
  total) · Tap to load full payload
75
- </S>
76
- </Te>:null,G=v(()=>Array.isArray(o)?{label:`ARRAY [${o.length}]`,color:t.blue600,bg:`${t.blue600}12`,border:`${t.blue600}30`}:o&&typeof o=="object"?{label:`OBJECT {${Object.keys(o).length}}`,color:t.violet600,bg:`${t.violet600}12`,border:`${t.violet600}30`}:{label:"JSON",color:t.slate700,bg:`${t.slate700}10`,border:`${t.slate700}25`},[o]);return<T style={[e.container,j&&{flex:1}]}>
75
+ </V>
76
+ </Te>:null;return<T style={[e.container,P&&{flex:1}]}>
77
77
 
78
78
  <T style={e.snippetHeader}>
79
79
 
80
- <T style={e.headerLeft}>
81
- <T style={[e.langBadge,{backgroundColor:G.bg,borderColor:G.border}]}>
82
- <T style={[e.langDot,{backgroundColor:G.color}]}/>
83
- <S style={[e.langBadgeText,{color:G.color}]}>
84
- {G.label}
85
- </S>
86
- </T>
87
- <T style={e.metaBadge}>
88
- <S style={e.metaBadgeText}numberOfLines={1}ellipsizeMode="tail">
89
- {Fe} · {pe} {pe===1?z("jsonViewer.line","line"):z("jsonViewer.lines","lines")}
90
- </S>
91
- </T>
92
- </T>
93
-
94
-
95
- <T style={e.headerRight}>
96
- {!J&&<T style={e.snippetTabs}>
97
- <N onPress={()=>Z("pretty")}style={[e.snippetTabBtn,R==="pretty"&&[e.snippetTabBtnActive,{backgroundColor:t.brandPurple,shadowColor:t.brandPurple}]]}>
98
- <Oe color={R==="pretty"?t.white:t.grayTextWeak}size={11}/>
99
- <S style={[e.snippetTabText,R==="pretty"&&e.snippetTabTextActive]}>
100
- {z("network.jsonViewer.pretty","Pretty")}
101
- </S>
102
- </N>
80
+ {!K&&<T style={e.snippetTabs}>
81
+ <E onPress={()=>Z("raw")}style={[e.snippetTabBtn,R==="raw"&&e.snippetTabBtnActive]}>
82
+ <Oe color={R==="raw"?t.white:t.grayText}size={11.5}/>
83
+ <V style={[e.snippetTabText,R==="raw"&&e.snippetTabTextActive]}>
84
+ {H("network.jsonViewer.raw","Raw")}
85
+ </V>
86
+ </E>
103
87
 
104
- <N onPress={()=>Z("raw")}style={[e.snippetTabBtn,R==="raw"&&[e.snippetTabBtnActive,{backgroundColor:t.sky600,shadowColor:t.sky600}]]}>
105
- <Le color={R==="raw"?t.white:t.grayTextWeak}size={11}/>
106
- <S style={[e.snippetTabText,R==="raw"&&e.snippetTabTextActive]}>
107
- {z("network.jsonViewer.raw","Raw")}
108
- </S>
109
- </N>
88
+ <E onPress={()=>Z("pretty")}style={[e.snippetTabBtn,R==="pretty"&&e.snippetTabBtnActive]}>
89
+ <Ne color={R==="pretty"?t.white:t.grayText}size={11.5}/>
90
+ <V style={[e.snippetTabText,R==="pretty"&&e.snippetTabTextActive]}>
91
+ {H("network.jsonViewer.pretty","Pretty")}
92
+ </V>
93
+ </E>
110
94
 
111
- <N onPress={()=>Z("table")}style={[e.snippetTabBtn,R==="table"&&[e.snippetTabBtnActive,{backgroundColor:t.teal600,shadowColor:t.teal600}]]}>
112
- <Ne color={R==="table"?t.white:t.grayTextWeak}size={11}/>
113
- <S style={[e.snippetTabText,R==="table"&&e.snippetTabTextActive]}>
114
- {z("network.jsonViewer.table","Table")}
115
- </S>
116
- </N>
117
- </T>}
95
+ <E onPress={()=>Z("table")}style={[e.snippetTabBtn,R==="table"&&e.snippetTabBtnActive]}>
96
+ <De color={R==="table"?t.white:t.grayText}size={11.5}/>
97
+ <V style={[e.snippetTabText,R==="table"&&e.snippetTabTextActive]}>
98
+ {H("network.jsonViewer.table","Table")}
99
+ </V>
100
+ </E>
101
+ </T>}
118
102
 
103
+
104
+ <T style={e.headerRight}>
119
105
 
120
- {R==="pretty"&&re&&<N onPress={()=>ce(B=>!B)}style={[e.toolToggleBtn,M&&e.toolToggleBtnActive]}>
121
- <S style={[e.toolToggleText,M&&e.toolToggleTextActive]}>
122
- {M?z("jsonViewer.fold","Fold"):z("jsonViewer.expand","Expand")}
123
- </S>
124
- </N>}
106
+ {R==="raw"&&<>
107
+ <E onPress={()=>Ve(C=>C==="compact"?"formatted":"compact")}style={[e.toolToggleBtn,v==="compact"&&e.toolToggleBtnActive]}>
108
+ <V style={[e.toolToggleText,v==="compact"&&e.toolToggleTextActive]}>
109
+ {H("jsonViewer.min","Min")}
110
+ </V>
111
+ </E>
125
112
 
126
-
127
- {R==="raw"&&<N onPress={()=>Ve(B=>B==="compact"?"formatted":"compact")}style={[e.toolToggleBtn,D==="compact"&&e.toolToggleBtnActive]}>
128
- <S style={[e.toolToggleText,D==="compact"&&e.toolToggleTextActive]}>
129
- {D==="compact"?z("jsonViewer.min","Min"):z("jsonViewer.indent","Indent")}
130
- </S>
131
- </N>}
113
+ <E onPress={()=>se(C=>!C)}style={[e.toolToggleBtn,M&&e.toolToggleBtnActive]}>
114
+ <V style={[e.toolToggleText,M&&e.toolToggleTextActive]}>
115
+ {H("jsonViewer.wrap","Wrap")}
116
+ </V>
117
+ </E>
118
+ </>}
132
119
 
133
120
 
134
- {R==="raw"&&<N onPress={()=>se(B=>!B)}style={[e.toolToggleBtn,K&&e.toolToggleBtnActive]}>
135
- <S style={[e.toolToggleText,K&&e.toolToggleTextActive]}>
136
- {z("jsonViewer.wrap","Wrap")}
137
- </S>
138
- </N>}
121
+ {R==="pretty"&&re&&<E onPress={()=>ce(C=>!C)}style={[e.toolToggleBtn,J&&e.toolToggleBtnActive]}>
122
+ <V style={[e.toolToggleText,J&&e.toolToggleTextActive]}>
123
+ {J?H("jsonViewer.fold","Fold"):H("jsonViewer.expand","Expand")}
124
+ </V>
125
+ </E>}
139
126
 
140
127
 
141
- <N onPress={ze}hitSlop={6}style={[e.copyBtn,ie&&e.copyBtnSuccess]}>
142
- {ie?<Je color={t.emerald500}size={12}/>:<Ee color={t.grayTextWeak}size={12}/>}
143
- </N>
128
+ <E onPress={ze}hitSlop={6}style={[e.copyBtn,ie&&e.copyBtnSuccess]}>
129
+ {ie?<Ke color={t.emerald500}size={13}/>:<Le color={t.grayText}size={13}/>}
130
+ </E>
144
131
  </T>
145
132
  </T>
146
133
 
147
134
 
148
- <T style={[e.editorBody,j&&{flex:1,maxHeight:void 0},!j&&P!=null&&{maxHeight:P}]}>
135
+ <T style={[e.editorBody,P&&{flex:1,maxHeight:void 0},!P&&j!=null&&{maxHeight:j}]}>
149
136
 
150
137
  {R==="pretty"&&(Re?<T style={e.emptyContainer}>
151
- <S style={e.emptyText}>
152
- {z("network.jsonViewer.emptyPayload")}
153
- </S>
154
- </T>:K?j?<O style={{flex:1}}contentContainerStyle={e.prettyContainer}showsVerticalScrollIndicator={!0}>
138
+ <V style={e.emptyText}>
139
+ {H("network.jsonViewer.emptyPayload")}
140
+ </V>
141
+ </T>:M?P?<O style={{flex:1}}contentContainerStyle={e.prettyContainer}showsVerticalScrollIndicator={!0}>
155
142
  {Y}
156
- </O>:<T style={e.prettyContainer}>{Y}</T>:j?<O style={{flex:1}}contentContainerStyle={{flexGrow:1}}showsVerticalScrollIndicator={!0}>
143
+ </O>:<T style={e.prettyContainer}>{Y}</T>:P?<O style={{flex:1}}contentContainerStyle={{flexGrow:1}}showsVerticalScrollIndicator={!0}>
157
144
  <O horizontal showsHorizontalScrollIndicator={!0}contentContainerStyle={e.prettyContainer}>
158
145
  {Y}
159
146
  </O>
@@ -162,29 +149,29 @@ import Q,{useState as L,useEffect as le,useMemo as v,useCallback as He}from"reac
162
149
  </O>)}
163
150
 
164
151
 
165
- {R==="raw"&&(j?<O style={e.fullHeightScrollView}contentContainerStyle={e.fullHeightScrollContent}showsVerticalScrollIndicator={!0}showsHorizontalScrollIndicator={!1}>
166
- {K?<T style={e.rawEditorFullWidth}>
152
+ {R==="raw"&&(P?<O style={e.fullHeightScrollView}contentContainerStyle={e.fullHeightScrollContent}showsVerticalScrollIndicator={!0}showsHorizontalScrollIndicator={!1}>
153
+ {M?<T style={e.rawEditorFullWidth}>
167
154
  {q()}
168
155
  </T>:<O horizontal showsHorizontalScrollIndicator={!0}contentContainerStyle={e.rawHorizontalContent}>
169
156
  <T style={{flexDirection:"column"}}>
170
157
  {q()}
171
158
  </T>
172
159
  </O>}
173
- {be()}
160
+ {ue()}
174
161
  </O>:<T style={e.rawEditorAutoHeight}>
175
- {K?<T style={e.rawEditorFullWidth}>
162
+ {M?<T style={e.rawEditorFullWidth}>
176
163
  {q()}
177
164
  </T>:<O horizontal showsHorizontalScrollIndicator={!0}contentContainerStyle={e.rawHorizontalContent}>
178
165
  <T style={{flexDirection:"column"}}>
179
166
  {q()}
180
167
  </T>
181
168
  </O>}
182
- {be()}
169
+ {ue()}
183
170
  </T>)}
184
171
 
185
172
 
186
- {R==="table"&&(j?<O style={{flex:1}}contentContainerStyle={{flexGrow:1}}showsVerticalScrollIndicator={!0}>
187
- {ue()}
188
- </O>:<T style={e.tableView}>{ue()}</T>)}
173
+ {R==="table"&&(P?<O style={{flex:1}}contentContainerStyle={{flexGrow:1}}showsVerticalScrollIndicator={!0}>
174
+ {pe()}
175
+ </O>:<T style={e.tableView}>{pe()}</T>)}
189
176
  </T>
190
- </T>}),e=Ie.create({container:{backgroundColor:t.white,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary,overflow:"hidden",shadowColor:t.brandPurple,shadowOpacity:.04,shadowRadius:6,shadowOffset:{width:0,height:2},elevation:2,width:"100%"},snippetHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:t.grayBackground,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary,paddingHorizontal:8,paddingVertical:5,gap:6,minHeight:38},headerLeft:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:1,minWidth:0},langBadge:{flexDirection:"row",alignItems:"center",backgroundColor:t.white,borderRadius:6,borderWidth:1,borderColor:t.grayBorderSecondary,paddingHorizontal:6,paddingVertical:2.5,gap:4.5},langDot:{width:5,height:5,borderRadius:2.5,backgroundColor:t.emerald500},langBadgeText:{fontFamily:V,fontSize:9.5,color:t.primaryBlack,fontWeight:"700",letterSpacing:.3},metaBadge:{backgroundColor:t.white,borderRadius:6,borderWidth:1,borderColor:t.grayBorderSecondary,paddingHorizontal:6,paddingVertical:2.5,flexShrink:1},metaBadgeText:{fontFamily:V,fontSize:9.5,color:t.grayTextWeak,fontWeight:"600"},headerRight:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},snippetTabs:{flexDirection:"row",alignItems:"center",backgroundColor:`${t.grayBorderSecondary}66`,borderRadius:7,padding:2,borderWidth:1,borderColor:t.dividerColor,gap:2},snippetTabBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingVertical:2.5,paddingHorizontal:6,borderRadius:5},snippetTabBtnActive:{backgroundColor:t.brandPurple,shadowColor:t.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:2,elevation:1},snippetTabText:{fontFamily:V,fontSize:9.5,color:t.grayTextWeak,fontWeight:"600"},snippetTabTextActive:{color:t.white,fontWeight:"700"},toolToggleBtn:{paddingHorizontal:6,paddingVertical:3,borderRadius:6,backgroundColor:t.white,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},toolToggleBtnActive:{backgroundColor:t.purple50,borderColor:t.purple200},toolToggleText:{fontFamily:V,fontSize:9.5,color:t.grayTextWeak,fontWeight:"600"},toolToggleTextActive:{color:t.brandPurple,fontWeight:"700"},copyBtn:{width:25,height:25,borderRadius:6,backgroundColor:t.white,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},copyBtnSuccess:{borderColor:t.greenMintBorder,backgroundColor:t.greenMintBg},editorBody:{backgroundColor:"#FFFFFF",minHeight:80},prettyContainer:{padding:10,minWidth:"100%",backgroundColor:"#FFFFFF"},fullHeightScrollView:{flex:1},fullHeightScrollContent:{flexGrow:1},rawEditorAutoHeight:{width:"100%"},rawEditorFullWidth:{width:"100%"},rawHorizontalContent:{minWidth:"100%"},rawLinesWrapper:{paddingVertical:6,backgroundColor:"#FFFFFF",width:"100%"},rawCodeLineRow:{flexDirection:"row",alignItems:"flex-start",minHeight:20,width:"100%"},gutterCell:{width:38,paddingRight:8,paddingTop:1,alignItems:"flex-end",justifyContent:"flex-start",borderRightWidth:1,borderRightColor:"#E2E8F0",backgroundColor:"#F8FAFC",userSelect:"none"},gutterNumber:{fontFamily:V,fontSize:11,lineHeight:18,color:"#94A3B8",textAlign:"right"},rawTextCell:{flex:1,paddingLeft:8,paddingRight:8,paddingTop:1,alignItems:"flex-start"},rawLineContentRow:{flexDirection:"row",alignItems:"flex-start",flexWrap:"wrap",minHeight:18},indentDots:{fontFamily:V,fontSize:11.5,lineHeight:18,color:"#CBD5E1",letterSpacing:.5},rawMonospaceText:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.slate900},syntaxKey:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxKey,fontWeight:"700"},syntaxColon:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxColon,marginRight:4},syntaxString:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxString},syntaxNumber:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxNumber},syntaxBoolean:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxBoolean},syntaxNull:{fontFamily:V,fontSize:11.5,lineHeight:18,color:t.syntaxNull,fontStyle:"italic"},truncationBanner:{margin:10,backgroundColor:t.purple50,paddingVertical:8,paddingHorizontal:12,borderRadius:6,alignItems:"center",borderWidth:1,borderColor:t.purple200},truncationText:{fontFamily:V,fontSize:10.5,color:t.brandPurple,fontWeight:"600"},tableView:{flex:1,width:"100%"},tableHeaderRow:{flexDirection:"row",backgroundColor:t.slate100,borderBottomWidth:1,borderBottomColor:t.slate200,paddingVertical:7,paddingHorizontal:12},tableHeaderCell:{fontFamily:V,fontSize:10,color:t.slate600,fontWeight:"700",letterSpacing:.5},tableRow:{flexDirection:"row",borderBottomWidth:1,borderBottomColor:t.slate100,paddingVertical:8,paddingHorizontal:12,alignItems:"flex-start",backgroundColor:t.white},tableRowAlt:{backgroundColor:t.slate50},tableColKey:{flex:2,paddingRight:8},tableColVal:{flex:3},tableCellKey:{fontFamily:V,fontSize:11.5,fontWeight:"700",color:t.brandPurple},typePill:{alignSelf:"flex-start",borderRadius:4,borderWidth:1,paddingHorizontal:4,paddingVertical:1,marginTop:3},typePillText:{fontFamily:V,fontSize:9,fontWeight:"700"},tableCellValue:{fontFamily:V,fontSize:11.5,color:t.slate900,lineHeight:17},tableCodeBox:{backgroundColor:t.slate100,borderRadius:6,borderWidth:1,borderColor:t.slate200,padding:6},showMoreBtn:{flexDirection:"row",alignItems:"center",gap:4,alignSelf:"flex-start",marginTop:4,paddingVertical:2,paddingHorizontal:4},showMoreText:{fontFamily:V,fontSize:10,color:t.brandPurple,fontWeight:"600"},emptyContainer:{padding:24,alignItems:"center",justifyContent:"center"},emptyText:{fontFamily:V,fontSize:11.5,color:t.slate500},highlight:{backgroundColor:t.yellow200,color:t.yellow800,fontFamily:V,fontWeight:"700",borderRadius:2,paddingHorizontal:2}});export default _e;
177
+ </T>}),e=Ie.create({container:{backgroundColor:t.white,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary,overflow:"hidden",shadowColor:t.brandPurple,shadowOpacity:.04,shadowRadius:6,shadowOffset:{width:0,height:2},elevation:2,width:"100%"},snippetHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:t.grayBackground,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary,paddingHorizontal:8,paddingVertical:5,gap:6,minHeight:38},headerLeft:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:1,minWidth:0},langBadge:{flexDirection:"row",alignItems:"center",backgroundColor:t.white,borderRadius:6,borderWidth:1,borderColor:t.grayBorderSecondary,paddingHorizontal:6,paddingVertical:2.5,gap:4.5},langDot:{width:5,height:5,borderRadius:2.5,backgroundColor:t.emerald500},langBadgeText:{fontFamily:I,fontSize:9.5,color:t.primaryBlack,fontWeight:"700",letterSpacing:.3},metaBadge:{backgroundColor:t.white,borderRadius:6,borderWidth:1,borderColor:t.grayBorderSecondary,paddingHorizontal:6,paddingVertical:2.5,flexShrink:1},metaBadgeText:{fontFamily:I,fontSize:9.5,color:t.grayTextWeak,fontWeight:"600"},headerRight:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},snippetTabs:{flexDirection:"row",alignItems:"center",backgroundColor:`${t.slate200}80`,borderRadius:8,padding:2.5,borderWidth:1,borderColor:t.dividerColor,gap:2},snippetTabBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingVertical:3.5,paddingHorizontal:8,borderRadius:6},snippetTabBtnActive:{backgroundColor:t.brandPurple,shadowColor:t.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:2,elevation:1},snippetTabText:{fontFamily:N.interSemiBold,fontSize:10.5,color:t.grayText},snippetTabTextActive:{color:t.white,fontFamily:N.interBold},toolToggleBtn:{paddingHorizontal:8,paddingVertical:3.5,borderRadius:6,backgroundColor:t.white,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},toolToggleBtnActive:{backgroundColor:t.purpleShade50,borderColor:`${t.brandPurple}60`},toolToggleText:{fontFamily:N.interSemiBold,fontSize:10.5,color:t.grayText},toolToggleTextActive:{color:t.brandPurple,fontFamily:N.interBold},copyBtn:{width:27,height:27,borderRadius:6,backgroundColor:t.white,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},copyBtnSuccess:{borderColor:t.greenMintBorder,backgroundColor:t.greenMintBg},editorBody:{backgroundColor:"#FFFFFF",minHeight:80},prettyContainer:{padding:10,minWidth:"100%",backgroundColor:"#FFFFFF"},fullHeightScrollView:{flex:1},fullHeightScrollContent:{flexGrow:1},rawEditorAutoHeight:{width:"100%"},rawEditorFullWidth:{width:"100%"},rawHorizontalContent:{minWidth:"100%"},rawLinesWrapper:{paddingVertical:6,backgroundColor:"#FFFFFF",width:"100%"},rawCodeLineRow:{flexDirection:"row",alignItems:"flex-start",minHeight:20,width:"100%"},gutterCell:{width:38,paddingRight:8,paddingTop:1,alignItems:"flex-end",justifyContent:"flex-start",borderRightWidth:1,borderRightColor:"#E2E8F0",backgroundColor:"#F8FAFC",userSelect:"none"},gutterNumber:{fontFamily:I,fontSize:11,lineHeight:18,color:"#94A3B8",textAlign:"right"},rawTextCell:{flex:1,paddingLeft:8,paddingRight:8,paddingTop:1,alignItems:"flex-start"},rawLineContentRow:{flexDirection:"row",alignItems:"flex-start",flexWrap:"wrap",minHeight:18},indentDots:{fontFamily:I,fontSize:11.5,lineHeight:18,color:"#CBD5E1",letterSpacing:.5},rawMonospaceText:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.slate900},syntaxKey:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxKey,fontWeight:"700"},syntaxColon:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxColon,marginRight:4},syntaxString:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxString},syntaxNumber:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxNumber},syntaxBoolean:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxBoolean},syntaxNull:{fontFamily:I,fontSize:11.5,lineHeight:18,color:t.syntaxNull,fontStyle:"italic"},truncationBanner:{margin:10,backgroundColor:t.purple50,paddingVertical:8,paddingHorizontal:12,borderRadius:6,alignItems:"center",borderWidth:1,borderColor:t.purple200},truncationText:{fontFamily:N.interSemiBold,fontSize:11,color:t.brandPurple},tableView:{flex:1,width:"100%"},tableHeaderRow:{flexDirection:"row",backgroundColor:t.slate100,borderBottomWidth:1,borderBottomColor:t.slate200,paddingVertical:7,paddingHorizontal:12},tableHeaderCell:{fontFamily:N.interBold,fontSize:10.5,color:t.slate600,letterSpacing:.5,textTransform:"uppercase"},tableRow:{flexDirection:"row",borderBottomWidth:1,borderBottomColor:t.slate100,paddingVertical:8,paddingHorizontal:12,alignItems:"flex-start",backgroundColor:t.white},tableRowAlt:{backgroundColor:t.slate50},tableColKey:{flex:2,paddingRight:8},tableColVal:{flex:3},tableCellKey:{fontFamily:I,fontSize:11.5,fontWeight:"700",color:t.brandPurple},typePill:{alignSelf:"flex-start",borderRadius:4,borderWidth:1,paddingHorizontal:4,paddingVertical:1,marginTop:3},typePillText:{fontFamily:N.interBold,fontSize:9},tableCellValue:{fontFamily:I,fontSize:11.5,color:t.slate900,lineHeight:17},tableCodeBox:{backgroundColor:t.slate100,borderRadius:6,borderWidth:1,borderColor:t.slate200,padding:6},showMoreBtn:{flexDirection:"row",alignItems:"center",gap:4,alignSelf:"flex-start",marginTop:4,paddingVertical:2,paddingHorizontal:4},showMoreText:{fontFamily:N.interSemiBold,fontSize:10.5,color:t.brandPurple},emptyContainer:{padding:24,alignItems:"center",justifyContent:"center"},emptyText:{fontFamily:N.interMedium,fontSize:12,color:t.slate500},highlight:{backgroundColor:t.yellow200,color:t.yellow800,fontFamily:I,fontWeight:"700",borderRadius:2,paddingHorizontal:2}});export default qe;
@@ -0,0 +1,24 @@
1
+ import React, { Component, ErrorInfo, ReactNode } from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface ModuleErrorBoundaryProps {
4
+ moduleName?: string;
5
+ fallback?: ReactNode | ((error: Error, retry: () => void) => ReactNode);
6
+ children: ReactNode;
7
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
8
+ onRetry?: () => void;
9
+ containerStyle?: StyleProp<ViewStyle>;
10
+ }
11
+ interface ModuleErrorBoundaryState {
12
+ hasError: boolean;
13
+ error: Error | null;
14
+ copied: boolean;
15
+ }
16
+ export declare class ModuleErrorBoundary extends Component<ModuleErrorBoundaryProps, ModuleErrorBoundaryState> {
17
+ state: ModuleErrorBoundaryState;
18
+ static getDerivedStateFromError(error: Error): Partial<ModuleErrorBoundaryState>;
19
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
20
+ handleRetry: () => void;
21
+ handleCopy: () => void;
22
+ render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>> | React.JSX.Element;
23
+ }
24
+ export default ModuleErrorBoundary;
@@ -0,0 +1,33 @@
1
+ import{Component as E}from"react";import{StyleSheet as S,Text as F,View as C,TouchableOpacity as T,Platform as D}from"react-native";import{AppFonts as w}from"../styles/AppFonts";import{copyToClipboard as k}from"../helpers";import{WarningTriangleIcon as B,RefreshCcwIcon as I,CopyIcon as O}from"./NetworkIcons";import{handleInterceptedCrash as V}from"../customHooks/crashHandler";import{CrashType as W}from"../types/enums";export class ModuleErrorBoundary extends E{constructor(){super(...arguments),this.state={hasError:!1,error:null,copied:!1},this.handleRetry=()=>{this.setState({hasError:!1,error:null,copied:!1}),this.props.onRetry&&this.props.onRetry()},this.handleCopy=()=>{if(!this.state.error)return;const e=`[Module Error: ${this.props.moduleName||"Micro-Feature"}]
2
+ Message: ${this.state.error.message}
3
+ Stack: ${this.state.error.stack||"N/A"}`;k(e),this.setState({copied:!0}),setTimeout(()=>{this.setState({copied:!1})},2e3)}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,b){try{V(e,e?.stack,!1,W.Js,b.componentStack||void 0)}catch{}this.props.onError&&this.props.onError(e,b)}render(){if(this.state.hasError&&this.state.error){const{fallback:e,moduleName:b="UI Module",containerStyle:R}=this.props;return typeof e=="function"?e(this.state.error,this.handleRetry):e||<C style={[t.card,R]}>
4
+ <C style={t.headerRow}>
5
+ <C style={t.titleRow}>
6
+ <B color="#DC2626"size={16}/>
7
+ <F style={t.moduleName}numberOfLines={1}>
8
+ {b}
9
+ </F>
10
+ </C>
11
+ <C style={t.badge}>
12
+ <F style={t.badgeText}>FAULT ISOLATED</F>
13
+ </C>
14
+ </C>
15
+
16
+ <F style={t.message}numberOfLines={2}>
17
+ {this.state.error.message||"An unexpected rendering error occurred in this module."}
18
+ </F>
19
+
20
+ <C style={t.actionsRow}>
21
+ <T style={t.retryButton}onPress={this.handleRetry}activeOpacity={.7}>
22
+ <I color="#FFFFFF"size={12}/>
23
+ <F style={t.retryText}>Retry Module</F>
24
+ </T>
25
+
26
+ <T style={t.copyButton}onPress={this.handleCopy}activeOpacity={.7}>
27
+ <O color="#475569"size={12}/>
28
+ <F style={t.copyText}>
29
+ {this.state.copied?"Copied":"Copy Error"}
30
+ </F>
31
+ </T>
32
+ </C>
33
+ </C>}return this.props.children}}export default ModuleErrorBoundary;const t=S.create({card:{backgroundColor:"#FEF2F2",borderColor:"#FECDD3",borderWidth:1.2,borderRadius:16,padding:14,marginVertical:6,gap:10,...D.select({ios:{shadowColor:"#DC2626",shadowOffset:{width:0,height:2},shadowOpacity:.06,shadowRadius:6},android:{elevation:2}})},headerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},titleRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},moduleName:{fontSize:12.5,fontWeight:"800",color:"#991B1B",fontFamily:w.interBold,flexShrink:1},badge:{backgroundColor:"#FEE2E2",paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:"#FCA5A5"},badgeText:{fontSize:8.5,fontWeight:"800",color:"#B91C1C",letterSpacing:.4},message:{fontSize:11.5,color:"#7F1D1D",lineHeight:16,fontFamily:w.interRegular},actionsRow:{flexDirection:"row",alignItems:"center",gap:8,marginTop:2},retryButton:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:"#DC2626",paddingVertical:7,paddingHorizontal:12,borderRadius:9},retryText:{fontSize:11,fontWeight:"700",color:"#FFFFFF",fontFamily:w.interBold},copyButton:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:4,backgroundColor:"#F1F5F9",paddingVertical:7,paddingHorizontal:12,borderRadius:9,borderWidth:1,borderColor:"#E2E8F0"},copyText:{fontSize:11,fontWeight:"600",color:"#475569",fontFamily:w.interMedium}});
@@ -4,7 +4,6 @@ export interface IconProps {
4
4
  size?: number;
5
5
  strokeWidth?: number;
6
6
  isExpanded?: boolean;
7
- isPaused?: boolean;
8
7
  active?: boolean;
9
8
  direction?: 'up' | 'down' | string;
10
9
  ascending?: boolean;
@@ -31,7 +30,6 @@ export declare const CircleXIcon: ({ color, size }: IconProps) => React.JSX.Elem
31
30
  export declare const CircleAlertIcon: ({ color, size }: IconProps) => React.JSX.Element;
32
31
  export declare const FailIcon: ({ color, size }: IconProps) => React.JSX.Element;
33
32
  export declare const TrashIcon: ({ color, size }: IconProps) => React.JSX.Element;
34
- export declare const HeaderPauseIcon: ({ isPaused, color, size, }: IconProps) => React.JSX.Element;
35
33
  export declare const ExportIcon: ({ color, size, }: IconProps) => React.JSX.Element;
36
34
  export declare const ShareIcon: ({ color, size, }: IconProps) => React.JSX.Element;
37
35
  export declare const SignalIcon: ({ color, size, }: IconProps) => React.JSX.Element;
@@ -49,7 +47,6 @@ export declare const DebugIcon: ({ color, size }: IconProps) => React.JSX.Elemen
49
47
  export declare const SunIcon: ({ color, size }: IconProps) => React.JSX.Element;
50
48
  export declare const MoonIcon: ({ color, size }: IconProps) => React.JSX.Element;
51
49
  export { BrandCircleIcon } from './BrandCircleIcon';
52
- export { BrandSquareIcon } from './BrandSquareIcon';
53
50
  export declare const HtmlIcon: ({ color, size }: IconProps) => React.JSX.Element;
54
51
  export declare const CssIcon: ({ color, size }: IconProps) => React.JSX.Element;
55
52
  export declare const JsIcon: ({ color, size }: IconProps) => React.JSX.Element;
@@ -168,3 +165,6 @@ export declare const NeutralFaceIcon: ({ color, size, }: IconProps) => React.JSX
168
165
  export declare const SmileFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
169
166
  export declare const StarFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
170
167
  export declare const HeartFaceIcon: ({ color, size, }: IconProps) => React.JSX.Element;
168
+ export declare const BellIcon: ({ color, size, }: IconProps) => React.JSX.Element;
169
+ export declare const NotificationIcon: ({ color, size, }: IconProps) => React.JSX.Element;
170
+ export declare const CloudPushIcon: ({ color, size, }: IconProps) => React.JSX.Element;
@@ -60,8 +60,6 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
60
60
  <L d="M18 6L6 18M6 6l12 12"stroke={e}strokeWidth="3"strokeLinecap="round"strokeLinejoin="round"/>
61
61
  </W>,TrashIcon=({color:e=p.primaryLight,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
62
62
  <L d="M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
63
- </W>,HeaderPauseIcon=({isPaused:e,color:t=p.primaryLight,size:I=20})=><W width={I}height={I}viewBox="0 0 24 24"fill="none">
64
- {e?<L d="M5 3l14 9-14 9V3z"fill={t}/>:<L d="M6 5h3v14H6V5zm9 0h3v14h-3V5z"fill={t}/>}
65
63
  </W>,ExportIcon=({color:e=p.primaryLight,size:t=18})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
66
64
  <L d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
67
65
  </W>,ShareIcon=({color:e=p.white,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
@@ -116,7 +114,7 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
116
114
  <L d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"stroke={e}strokeWidth="2"strokeLinecap="round"/>
117
115
  </W>,MoonIcon=({color:e=p.white,size:t=16})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
118
116
  <L d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"fill={e}stroke={e}strokeWidth="1.5"strokeLinecap="round"strokeLinejoin="round"/>
119
- </W>;export{BrandCircleIcon}from"./BrandCircleIcon";export{BrandSquareIcon}from"./BrandSquareIcon";export const HtmlIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
117
+ </W>;export{BrandCircleIcon}from"./BrandCircleIcon";export const HtmlIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
120
118
  <L d="M17.5 8.5L21 12l-3.5 3.5M6.5 8.5L3 12l3.5 3.5M14 4.5l-4 15"stroke={e}strokeWidth="2.5"strokeLinecap="round"strokeLinejoin="round"/>
121
119
  </W>,CssIcon=({color:e=p.grayTextWeak,size:t=14})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
122
120
  <L d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
@@ -533,4 +531,10 @@ import"react";import W,{Circle as M,Ellipse as T,Line as S,Path as L,Rect as B}f
533
531
 
534
532
  <L d="M15 8.2C14.3 7.4 13.2 7.5 12.7 8.2C12.1 9 12.4 10.1 15 11.6C17.6 10.1 17.9 9 17.3 8.2C16.8 7.5 15.7 7.4 15 8.2Z"fill={e}/>
535
533
  <L d="M8 14.5C8 14.5 9.5 17.5 12 17.5C14.5 17.5 16 14.5 16 14.5"stroke={e}strokeWidth="1.8"strokeLinecap="round"/>
534
+ </W>,BellIcon=({color:e=p.brandPurple,size:t=20})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
535
+ <L d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
536
+ <L d="M13.73 21a2 2 0 0 1-3.46 0"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
537
+ </W>,NotificationIcon=BellIcon,CloudPushIcon=({color:e=p.brandPurple,size:t=20})=><W width={t}height={t}viewBox="0 0 24 24"fill="none">
538
+ <L d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"stroke={e}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
539
+ <L d="m12 13 3 3m0 0-3 3m3-3H7"stroke={e}strokeWidth="1.8"strokeLinecap="round"strokeLinejoin="round"/>
536
540
  </W>;
@@ -12,7 +12,10 @@ interface SegmentedTabsProps {
12
12
  activeKey: string;
13
13
  onChange: (key: string) => void;
14
14
  style?: ViewStyle | ViewStyle[];
15
+ scrollable?: boolean;
15
16
  }
16
17
  export declare const DEFAULT_INNER_TAB_THEMES: Record<string, string>;
17
- declare const SegmentedTabs: React.MemoExoticComponent<({ tabs, activeKey, onChange, style }: SegmentedTabsProps) => React.JSX.Element>;
18
+ declare const SegmentedTabs: React.MemoExoticComponent<({ tabs, activeKey, onChange, style, scrollable }: SegmentedTabsProps & {
19
+ scrollable?: boolean;
20
+ }) => React.JSX.Element>;
18
21
  export default SegmentedTabs;
@@ -1,8 +1,12 @@
1
- import d from"react";import{Pressable as C,Text as P,View as T}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as S}from"../styles/AppFonts";export const DEFAULT_INNER_TAB_THEMES={metadata:e.sky600,headers:e.teal600,request:e.amber600,response:e.brandPurple,req:e.amber600,res:e.brandPurple,output:e.teal600,arguments:e.amber600,stack:e.errorColor,caller:e.sky600,error:e.errorColor,app:e.green600,all:e.brandPurple,live:e.violet600,timeline:e.orange600,persisted:e.teal600,payload:e.violet600,diff:e.green600,raw:e.slate600,diagnostics:e.amber600,breadcrumbs:e.orange600,overview:e.sky600,json:e.brandPurple,tree:e.violet600,pretty:e.brandPurple,table:e.teal600,production:e.brandPurple,files:e.teal600,packages:e.orange600,media:e.pink600,optimizer:e.violet600,hardware:e.orange600,network:e.teal600,display:e.pink600,runtime:e.amber600,security:e.errorColor,fatal:e.errorColor,promise:e.orange600,render:e.pink600,native:e.cyan600,js:e.amber600,asyncStorage:e.brandPurple,mmkv:e.teal600};const A=d.memo(({tabs:t,activeKey:i,onChange:l,style:n})=><T style={[{flexDirection:"row",borderRadius:10,backgroundColor:`${e.slate200}80`,padding:3,borderWidth:1,borderColor:e.dividerColor,gap:3,minWidth:0},n]}>
2
- {t.map(r=>{const o=i===r.key,a=r.themeColor||r.color||DEFAULT_INNER_TAB_THEMES[r.key]||e.brandPurple;return<C key={r.key}onPress={()=>l(r.key)}style={({pressed:s})=>[{flex:1,paddingVertical:7,paddingHorizontal:6,borderRadius:7,backgroundColor:o?a:"transparent",alignItems:"center",justifyContent:"center",gap:4.5,flexDirection:"row",opacity:s?.8:1},o&&{shadowColor:a,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:3,elevation:2}]}>
3
- {r.icon?typeof r.icon=="function"?r.icon(o,a):r.icon:null}
4
- <P numberOfLines={1}ellipsizeMode="tail"style={{flexShrink:1,fontFamily:S.interBold,fontSize:10.5,color:o?e.white:e.grayText,letterSpacing:.2}}>
5
- {r.label}
6
- </P>
7
- </C>})}
8
- </T>);export default A;
1
+ import T from"react";import{Pressable as A,ScrollView as R,Text as V,View as C}from"react-native";import{AppColors as e}from"../styles/AppColors";import{AppFonts as z}from"../styles/AppFonts";export const DEFAULT_INNER_TAB_THEMES={metadata:e.sky600,headers:e.teal600,request:e.amber600,response:e.brandPurple,req:e.amber600,res:e.brandPurple,output:e.teal600,arguments:e.amber600,stack:e.errorColor,caller:e.sky600,error:e.errorColor,app:e.green600,all:e.brandPurple,live:e.violet600,timeline:e.orange600,persisted:e.teal600,payload:e.violet600,diff:e.green600,raw:e.brandPurple,diagnostics:e.amber600,breadcrumbs:e.orange600,overview:e.sky600,json:e.brandPurple,tree:e.violet600,preview:e.brandPurple,delivery:e.amber600,domainAttrs:e.sky600,pretty:e.violet600,table:e.teal600,production:e.brandPurple,files:e.teal600,packages:e.orange600,media:e.pink600,optimizer:e.violet600,hardware:e.orange600,network:e.teal600,display:e.pink600,runtime:e.amber600,security:e.errorColor,fatal:e.errorColor,promise:e.orange600,render:e.pink600,native:e.cyan600,js:e.amber600,asyncStorage:e.brandPurple,mmkv:e.teal600};const D=T.memo(({tabs:v,activeKey:P,onChange:x,style:i,scrollable:t})=>{const n=v.map(r=>{const o=P===r.key,a=r.themeColor||r.color||DEFAULT_INNER_TAB_THEMES[r.key]||e.brandPurple;return<A key={r.key}onPress={()=>x(r.key)}style={({pressed:S})=>[{flex:t?void 0:1,paddingVertical:7,paddingHorizontal:t?12:6,borderRadius:7,backgroundColor:o?a:"transparent",alignItems:"center",justifyContent:"center",gap:4.5,flexDirection:"row",opacity:S?.8:1},o&&{shadowColor:a,shadowOffset:{width:0,height:1},shadowOpacity:.28,shadowRadius:3,elevation:2}]}>
2
+ {r.icon?typeof r.icon=="function"?r.icon(o,a):r.icon:null}
3
+ <V numberOfLines={1}style={{fontFamily:z.interBold,fontSize:10.5,color:o?e.white:e.grayText,letterSpacing:.2}}>
4
+ {r.label}
5
+ </V>
6
+ </A>});return t?<C style={[{borderRadius:10,backgroundColor:`${e.slate200}80`,padding:3,borderWidth:1,borderColor:e.dividerColor},i]}>
7
+ <R horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:4}}>
8
+ {n}
9
+ </R>
10
+ </C>:<C style={[{flexDirection:"row",borderRadius:10,backgroundColor:`${e.slate200}80`,padding:3,borderWidth:1,borderColor:e.dividerColor,gap:3,minWidth:0},i]}>
11
+ {n}
12
+ </C>});export default D;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle } from 'react-native';
3
+ export interface ShareButtonProps {
4
+ onShare: () => void | Promise<void>;
5
+ label?: string;
6
+ style?: StyleProp<ViewStyle>;
7
+ color?: string;
8
+ size?: number;
9
+ }
10
+ declare const ShareButton: React.MemoExoticComponent<({ onShare, label, style, color, size, }: ShareButtonProps) => React.JSX.Element>;
11
+ export default ShareButton;
@@ -0,0 +1,6 @@
1
+ import p,{useCallback as h,useState as S}from"react";import{Text as C}from"react-native";import T from"./TouchableScale";import{ShareIcon as B,CheckIcon as $}from"./NetworkIcons";import{triggerNativeHaptic as q}from"../native/NativeInspector";import{AppColors as r}from"../styles/AppColors";import s from"../styles";const n=p.memo(({onShare:a,label:e,style:l,color:t=r.brandPurple,size:i=14})=>{const[o,c]=S(!1),m=h(async()=>{try{q("medium"),await a(),c(!0),setTimeout(()=>c(!1),1200)}catch{}},[a]),u=[s.iconSquareBtn,{backgroundColor:`${t}14`,borderColor:`${t}30`},o&&s.iconSquareBtnSuccess,l];return<T accessible={!0}accessibilityRole="button"accessibilityLabel={`Share ${e}`}accessibilityHint={`Opens native share sheet to export ${e}`}style={u}onPress={m}hitSlop={8}>
2
+ {o?<$ color={r.greenColor}size={i}strokeWidth={2.4}/>:<B color={t}size={i}/>}
3
+ {e?<C style={[s.iconSquareBtnText,{color:o?r.greenColor:t}]}>
4
+ {o?"Shared":e}
5
+ </C>:null}
6
+ </T>});n.displayName="ShareButton";export default n;
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.3.25";
1
+ export declare const LIB_VERSION = "2.4.0";
@@ -1 +1 @@
1
- export const LIB_VERSION="2.3.25";
1
+ export const LIB_VERSION="2.4.0";