rn-backstage 1.2.0 → 1.2.1

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 (100) hide show
  1. package/README.md +2 -0
  2. package/lib/commonjs/Backstage.js +40 -33
  3. package/lib/commonjs/Backstage.js.map +1 -1
  4. package/lib/commonjs/ThemeContext.js +43 -0
  5. package/lib/commonjs/ThemeContext.js.map +1 -0
  6. package/lib/commonjs/components/BackstagePanel.js +17 -10
  7. package/lib/commonjs/components/BackstagePanel.js.map +1 -1
  8. package/lib/commonjs/components/FlagsTab.js +50 -49
  9. package/lib/commonjs/components/FlagsTab.js.map +1 -1
  10. package/lib/commonjs/components/FloatingPill.js +4 -2
  11. package/lib/commonjs/components/FloatingPill.js.map +1 -1
  12. package/lib/commonjs/components/InfoTab.js +73 -107
  13. package/lib/commonjs/components/InfoTab.js.map +1 -1
  14. package/lib/commonjs/components/JsonTreeView.js +39 -34
  15. package/lib/commonjs/components/JsonTreeView.js.map +1 -1
  16. package/lib/commonjs/components/LogItem.js +33 -29
  17. package/lib/commonjs/components/LogItem.js.map +1 -1
  18. package/lib/commonjs/components/LogsTab.js +37 -42
  19. package/lib/commonjs/components/LogsTab.js.map +1 -1
  20. package/lib/commonjs/components/NetworkItem.js +111 -135
  21. package/lib/commonjs/components/NetworkItem.js.map +1 -1
  22. package/lib/commonjs/components/NetworkTab.js +48 -49
  23. package/lib/commonjs/components/NetworkTab.js.map +1 -1
  24. package/lib/commonjs/components/TabBar.js +8 -5
  25. package/lib/commonjs/components/TabBar.js.map +1 -1
  26. package/lib/commonjs/constants.js +24 -1
  27. package/lib/commonjs/constants.js.map +1 -1
  28. package/lib/commonjs/index.js +19 -0
  29. package/lib/commonjs/index.js.map +1 -1
  30. package/lib/commonjs/types.js.map +1 -1
  31. package/lib/module/Backstage.js +40 -33
  32. package/lib/module/Backstage.js.map +1 -1
  33. package/lib/module/ThemeContext.js +37 -0
  34. package/lib/module/ThemeContext.js.map +1 -0
  35. package/lib/module/components/BackstagePanel.js +19 -12
  36. package/lib/module/components/BackstagePanel.js.map +1 -1
  37. package/lib/module/components/FlagsTab.js +51 -50
  38. package/lib/module/components/FlagsTab.js.map +1 -1
  39. package/lib/module/components/FloatingPill.js +5 -3
  40. package/lib/module/components/FloatingPill.js.map +1 -1
  41. package/lib/module/components/InfoTab.js +73 -107
  42. package/lib/module/components/InfoTab.js.map +1 -1
  43. package/lib/module/components/JsonTreeView.js +42 -38
  44. package/lib/module/components/JsonTreeView.js.map +1 -1
  45. package/lib/module/components/LogItem.js +35 -31
  46. package/lib/module/components/LogItem.js.map +1 -1
  47. package/lib/module/components/LogsTab.js +38 -43
  48. package/lib/module/components/LogsTab.js.map +1 -1
  49. package/lib/module/components/NetworkItem.js +113 -137
  50. package/lib/module/components/NetworkItem.js.map +1 -1
  51. package/lib/module/components/NetworkTab.js +49 -50
  52. package/lib/module/components/NetworkTab.js.map +1 -1
  53. package/lib/module/components/TabBar.js +10 -7
  54. package/lib/module/components/TabBar.js.map +1 -1
  55. package/lib/module/constants.js +23 -0
  56. package/lib/module/constants.js.map +1 -1
  57. package/lib/module/index.js +1 -0
  58. package/lib/module/index.js.map +1 -1
  59. package/lib/module/types.js.map +1 -1
  60. package/lib/typescript/Backstage.d.ts.map +1 -1
  61. package/lib/typescript/ThemeContext.d.ts +11 -0
  62. package/lib/typescript/ThemeContext.d.ts.map +1 -0
  63. package/lib/typescript/components/BackstagePanel.d.ts +1 -0
  64. package/lib/typescript/components/BackstagePanel.d.ts.map +1 -1
  65. package/lib/typescript/components/FlagsTab.d.ts.map +1 -1
  66. package/lib/typescript/components/FloatingPill.d.ts.map +1 -1
  67. package/lib/typescript/components/InfoTab.d.ts +1 -0
  68. package/lib/typescript/components/InfoTab.d.ts.map +1 -1
  69. package/lib/typescript/components/JsonTreeView.d.ts.map +1 -1
  70. package/lib/typescript/components/LogItem.d.ts +1 -0
  71. package/lib/typescript/components/LogItem.d.ts.map +1 -1
  72. package/lib/typescript/components/LogsTab.d.ts +1 -0
  73. package/lib/typescript/components/LogsTab.d.ts.map +1 -1
  74. package/lib/typescript/components/NetworkItem.d.ts +1 -0
  75. package/lib/typescript/components/NetworkItem.d.ts.map +1 -1
  76. package/lib/typescript/components/NetworkTab.d.ts +1 -0
  77. package/lib/typescript/components/NetworkTab.d.ts.map +1 -1
  78. package/lib/typescript/components/TabBar.d.ts.map +1 -1
  79. package/lib/typescript/constants.d.ts +1 -0
  80. package/lib/typescript/constants.d.ts.map +1 -1
  81. package/lib/typescript/index.d.ts +2 -0
  82. package/lib/typescript/index.d.ts.map +1 -1
  83. package/lib/typescript/types.d.ts +4 -0
  84. package/lib/typescript/types.d.ts.map +1 -1
  85. package/package.json +1 -1
  86. package/src/Backstage.tsx +39 -33
  87. package/src/ThemeContext.tsx +38 -0
  88. package/src/components/BackstagePanel.tsx +66 -57
  89. package/src/components/FlagsTab.tsx +123 -174
  90. package/src/components/FloatingPill.tsx +6 -3
  91. package/src/components/InfoTab.tsx +152 -186
  92. package/src/components/JsonTreeView.tsx +53 -73
  93. package/src/components/LogItem.tsx +55 -100
  94. package/src/components/LogsTab.tsx +110 -132
  95. package/src/components/NetworkItem.tsx +306 -417
  96. package/src/components/NetworkTab.tsx +129 -163
  97. package/src/components/TabBar.tsx +51 -47
  98. package/src/constants.ts +23 -0
  99. package/src/index.ts +2 -0
  100. package/src/types.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkTab.d.ts","sourceRoot":"","sources":["../../../src/components/NetworkTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5C,UAAU,eAAe;IACvB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA2HhD,CAAA"}
1
+ {"version":3,"file":"NetworkTab.d.ts","sourceRoot":"","sources":["../../../src/components/NetworkTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAK7D,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,UAAU,CAAA;AAK5D,UAAU,eAAe;IACvB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAID,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA6HhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAc7D,UAAU,GAAG;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAID,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAyExC,CAAA"}
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../src/components/TabBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAetE,UAAU,GAAG;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAID,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2ExC,CAAA"}
@@ -12,6 +12,7 @@ export declare const Metrics: {
12
12
  contentPadding: number;
13
13
  };
14
14
  export declare const DarkTheme: BackstageTheme;
15
+ export declare const LightTheme: BackstageTheme;
15
16
  export declare const DEFAULT_MAX_LOGS = 500;
16
17
  export declare const DEFAULT_MAX_NETWORK_ENTRIES = 500;
17
18
  export declare const DEFAULT_MAX_NETWORK_BODY_SIZE = 65536;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,eAAO,MAAM,OAAO;;;;;;;;;;;CAWnB,CAAA;AAID,eAAO,MAAM,SAAS,EAAE,cAmBvB,CAAA;AAED,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAInC,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAC9C,eAAO,MAAM,6BAA6B,QAAQ,CAAA;AAIlD,eAAO,MAAM,aAAa,QAGxB,CAAA;AAIF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,eAAO,MAAM,OAAO;;;;;;;;;;;CAWnB,CAAA;AAID,eAAO,MAAM,SAAS,EAAE,cAmBvB,CAAA;AAID,eAAO,MAAM,UAAU,EAAE,cAmBxB,CAAA;AAED,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAInC,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAC9C,eAAO,MAAM,6BAA6B,QAAQ,CAAA;AAIlD,eAAO,MAAM,aAAa,QAGxB,CAAA;AAIF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnB,CAAA"}
@@ -1,4 +1,6 @@
1
1
  export { Backstage } from './Backstage';
2
2
  export type { BackstageProps, BackstageRef, BackstageTab, BackstageStyleOverrides, BackstageTheme, QuickAction, FeatureFlag, AppInfoItem, LogEntry, NetworkEntry, } from './types';
3
3
  export { LogLevel, NetworkState } from './types';
4
+ export { TestIDs, DarkTheme, LightTheme } from './constants';
5
+ export type { ThemePreference } from './ThemeContext';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,YAAY,GACb,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,YAAY,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,YAAY,GACb,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
@@ -87,6 +87,8 @@ export interface BackstageTheme {
87
87
  export interface BackstageProps {
88
88
  /** Whether the floating pill trigger is visible. Default: true */
89
89
  visible?: boolean;
90
+ /** Theme preference: 'light', 'dark', or 'auto' (follows device setting). Default: 'auto' */
91
+ theme?: 'light' | 'dark' | 'auto';
90
92
  /** App version string (e.g., "1.2.3") */
91
93
  appVersion?: string;
92
94
  /** Build number (e.g., "42") */
@@ -131,6 +133,8 @@ export interface BackstageProps {
131
133
  networkFilters?: string[];
132
134
  /** Auto-filter console.logs from network callbacks (e.g., Axios interceptors) out of the Logs tab. Default: true */
133
135
  autoFilterNetworkLogs?: boolean;
136
+ /** Max nesting depth for JSON tree views (state tree, log data, network bodies). Default: 10 */
137
+ jsonMaxDepth?: number;
134
138
  }
135
139
  export interface BackstageStyleOverrides {
136
140
  pillStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAInE,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,CAAA;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,SAAS,CAAA;CACxB;AAID,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAEjC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAE1B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAE5B,oDAAoD;IACpD,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAE5B,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAE3D,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IAErB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAEnC,kDAAkD;IAClD,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAE1B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAA;IAEpB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAEhC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,oEAAoE;IACpE,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAEhC,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IAEzB,oHAAoH;IACpH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAE/B,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACjC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACvC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACxC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACxC,sBAAsB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACxC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CACvC;AAID,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-backstage",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "A zero-dependency developer/QA debug panel for React Native apps",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
package/src/Backstage.tsx CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  } from './network-interceptor'
17
17
  import { FloatingPill } from './components/FloatingPill'
18
18
  import { BackstagePanel } from './components/BackstagePanel'
19
+ import { BackstageThemeProvider } from './ThemeContext'
19
20
  import type { BackstageProps, BackstageRef, LogEntry, NetworkEntry } from './types'
20
21
 
21
22
  // ─── Component ───────────────────────────────────────────────────────────────
@@ -24,6 +25,7 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
24
25
  (
25
26
  {
26
27
  visible = true,
28
+ theme: themePreference = 'auto',
27
29
  appVersion,
28
30
  buildNumber,
29
31
  bundleId,
@@ -46,6 +48,7 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
46
48
  maxNetworkBodySize,
47
49
  networkFilters,
48
50
  autoFilterNetworkLogs = true,
51
+ jsonMaxDepth,
49
52
  },
50
53
  ref,
51
54
  ) => {
@@ -153,39 +156,42 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
153
156
  const displayText = pillText || (appVersion ? `v${appVersion}` : 'DEV')
154
157
 
155
158
  return (
156
- <View style={styles.container} pointerEvents="box-none">
157
- <FloatingPill
158
- text={displayText}
159
- hasError={hasError}
160
- onPress={openPanel}
161
- initialX={initialX}
162
- initialY={initialY}
163
- styles={propStyles}
164
- />
165
- <BackstagePanel
166
- visible={panelVisible}
167
- onClose={closePanel}
168
- appVersion={appVersion}
169
- buildNumber={buildNumber}
170
- bundleId={bundleId}
171
- deviceInfo={deviceInfo}
172
- state={state}
173
- quickActions={quickActions}
174
- featureFlags={featureFlags}
175
- onToggleFeatureFlag={onToggleFeatureFlag}
176
- logs={logs}
177
- onRefreshLogs={refreshLogs}
178
- onCopyLogs={onCopyLogs}
179
- networkEntries={networkEntries}
180
- onRefreshNetwork={refreshNetwork}
181
- onClearNetwork={clearNetwork}
182
- onCopyNetwork={onCopyLogs}
183
- extraTabs={extraTabs}
184
- styles={propStyles}
185
- >
186
- {children}
187
- </BackstagePanel>
188
- </View>
159
+ <BackstageThemeProvider preference={themePreference}>
160
+ <View style={styles.container} pointerEvents="box-none">
161
+ <FloatingPill
162
+ text={displayText}
163
+ hasError={hasError}
164
+ onPress={openPanel}
165
+ initialX={initialX}
166
+ initialY={initialY}
167
+ styles={propStyles}
168
+ />
169
+ <BackstagePanel
170
+ visible={panelVisible}
171
+ onClose={closePanel}
172
+ appVersion={appVersion}
173
+ buildNumber={buildNumber}
174
+ bundleId={bundleId}
175
+ deviceInfo={deviceInfo}
176
+ state={state}
177
+ quickActions={quickActions}
178
+ featureFlags={featureFlags}
179
+ onToggleFeatureFlag={onToggleFeatureFlag}
180
+ logs={logs}
181
+ onRefreshLogs={refreshLogs}
182
+ onCopyLogs={onCopyLogs}
183
+ networkEntries={networkEntries}
184
+ onRefreshNetwork={refreshNetwork}
185
+ onClearNetwork={clearNetwork}
186
+ onCopyNetwork={onCopyLogs}
187
+ extraTabs={extraTabs}
188
+ jsonMaxDepth={jsonMaxDepth}
189
+ styles={propStyles}
190
+ >
191
+ {children}
192
+ </BackstagePanel>
193
+ </View>
194
+ </BackstageThemeProvider>
189
195
  )
190
196
  },
191
197
  )
@@ -0,0 +1,38 @@
1
+ import React, { createContext, useContext, useMemo } from 'react'
2
+ import { useColorScheme } from 'react-native'
3
+ import { DarkTheme, LightTheme } from './constants'
4
+ import type { BackstageTheme } from './types'
5
+
6
+ // ─── Theme Preference ────────────────────────────────────────────────────────
7
+
8
+ export type ThemePreference = 'light' | 'dark' | 'auto'
9
+
10
+ // ─── Context ─────────────────────────────────────────────────────────────────
11
+
12
+ const ThemeContext = createContext<BackstageTheme>(DarkTheme)
13
+
14
+ // ─── Provider ────────────────────────────────────────────────────────────────
15
+
16
+ interface ThemeProviderProps {
17
+ preference: ThemePreference
18
+ children: React.ReactNode
19
+ }
20
+
21
+ export const BackstageThemeProvider: React.FC<ThemeProviderProps> = ({ preference, children }) => {
22
+ const systemScheme = useColorScheme()
23
+
24
+ const theme = useMemo(() => {
25
+ if (preference === 'light') return LightTheme
26
+ if (preference === 'dark') return DarkTheme
27
+ // 'auto' — follow system, fallback to dark
28
+ return systemScheme === 'light' ? LightTheme : DarkTheme
29
+ }, [preference, systemScheme])
30
+
31
+ return <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>
32
+ }
33
+
34
+ // ─── Hook ────────────────────────────────────────────────────────────────────
35
+
36
+ export function useBackstageTheme(): BackstageTheme {
37
+ return useContext(ThemeContext)
38
+ }
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react'
1
+ import React, { useMemo, useState } from 'react'
2
2
  import {
3
3
  Modal,
4
4
  SafeAreaView,
@@ -8,7 +8,8 @@ import {
8
8
  TouchableOpacity,
9
9
  View,
10
10
  } from 'react-native'
11
- import { DarkTheme, MonospaceFont, TestIDs } from '../constants'
11
+ import { MonospaceFont, TestIDs } from '../constants'
12
+ import { useBackstageTheme } from '../ThemeContext'
12
13
  import { TabBar } from './TabBar'
13
14
  import { InfoTab } from './InfoTab'
14
15
  import { LogsTab } from './LogsTab'
@@ -54,6 +55,9 @@ interface BackstagePanelProps {
54
55
  // Extensibility
55
56
  extraTabs?: BackstageTab[]
56
57
 
58
+ // JSON tree
59
+ jsonMaxDepth?: number
60
+
57
61
  // Styling
58
62
  styles?: BackstageStyleOverrides
59
63
  children?: React.ReactNode
@@ -91,10 +95,13 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
91
95
  onClearNetwork,
92
96
  onCopyNetwork,
93
97
  extraTabs = [],
98
+ jsonMaxDepth,
94
99
  styles: propStyles,
95
100
  children,
96
101
  }) => {
97
102
  const [activeTab, setActiveTab] = useState('info')
103
+ const theme = useBackstageTheme()
104
+ const styles = useMemo(() => createStyles(theme), [theme])
98
105
 
99
106
  // Compose all tabs: built-in (conditionally including Flags) + extra
100
107
  const hasFlags = featureFlags && featureFlags.length > 0
@@ -117,6 +124,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
117
124
  deviceInfo={deviceInfo}
118
125
  state={state}
119
126
  quickActions={quickActions}
127
+ jsonMaxDepth={jsonMaxDepth}
120
128
  onClosePanel={onClose}
121
129
  styles={propStyles}
122
130
  >
@@ -124,12 +132,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
124
132
  </InfoTab>
125
133
  )
126
134
  case 'flags':
127
- return (
128
- <FlagsTab
129
- flags={featureFlags ?? []}
130
- onToggle={onToggleFeatureFlag}
131
- />
132
- )
135
+ return <FlagsTab flags={featureFlags ?? []} onToggle={onToggleFeatureFlag} />
133
136
  case 'network':
134
137
  return (
135
138
  <NetworkTab
@@ -137,6 +140,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
137
140
  onRefresh={onRefreshNetwork}
138
141
  onClear={onClearNetwork}
139
142
  onCopy={onCopyNetwork}
143
+ jsonMaxDepth={jsonMaxDepth}
140
144
  />
141
145
  )
142
146
  case 'logs':
@@ -145,6 +149,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
145
149
  logs={logs}
146
150
  onRefresh={onRefreshLogs}
147
151
  onCopyLogs={onCopyLogs}
152
+ jsonMaxDepth={jsonMaxDepth}
148
153
  styles={propStyles}
149
154
  />
150
155
  )
@@ -168,7 +173,10 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
168
173
  onRequestClose={onClose}
169
174
  statusBarTranslucent
170
175
  >
171
- <StatusBar barStyle="light-content" backgroundColor={DarkTheme.background} />
176
+ <StatusBar
177
+ barStyle={theme.background < '#888' ? 'light-content' : 'dark-content'}
178
+ backgroundColor={theme.background}
179
+ />
172
180
  <SafeAreaView style={[styles.safeArea, propStyles?.panelStyle]}>
173
181
  {/* ── Header ──────────────────────────────────────────── */}
174
182
  <View style={styles.header}>
@@ -199,51 +207,52 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
199
207
 
200
208
  // ─── Styles ──────────────────────────────────────────────────────────────────
201
209
 
202
- const styles = StyleSheet.create({
203
- safeArea: {
204
- flex: 1,
205
- backgroundColor: DarkTheme.background,
206
- },
207
- header: {
208
- flexDirection: 'row',
209
- alignItems: 'center',
210
- justifyContent: 'space-between',
211
- paddingHorizontal: 16,
212
- paddingVertical: 12,
213
- borderBottomWidth: 1,
214
- borderBottomColor: DarkTheme.border,
215
- },
216
- headerLeft: {
217
- flexDirection: 'row',
218
- alignItems: 'center',
219
- },
220
- headerBrand: {
221
- fontSize: 20,
222
- marginRight: 8,
223
- },
224
- headerTitle: {
225
- fontFamily: MonospaceFont,
226
- fontSize: 18,
227
- fontWeight: '800',
228
- color: DarkTheme.text,
229
- letterSpacing: 1,
230
- },
231
- closeButton: {
232
- width: 32,
233
- height: 32,
234
- borderRadius: 16,
235
- backgroundColor: DarkTheme.surfaceElevated,
236
- borderWidth: 1,
237
- borderColor: DarkTheme.border,
238
- alignItems: 'center',
239
- justifyContent: 'center',
240
- },
241
- closeButtonText: {
242
- fontSize: 14,
243
- color: DarkTheme.textSecondary,
244
- fontWeight: '700',
245
- },
246
- content: {
247
- flex: 1,
248
- },
249
- })
210
+ const createStyles = (t: import('../types').BackstageTheme) =>
211
+ StyleSheet.create({
212
+ safeArea: {
213
+ flex: 1,
214
+ backgroundColor: t.background,
215
+ },
216
+ header: {
217
+ flexDirection: 'row',
218
+ alignItems: 'center',
219
+ justifyContent: 'space-between',
220
+ paddingHorizontal: 16,
221
+ paddingVertical: 12,
222
+ borderBottomWidth: 1,
223
+ borderBottomColor: t.border,
224
+ },
225
+ headerLeft: {
226
+ flexDirection: 'row',
227
+ alignItems: 'center',
228
+ },
229
+ headerBrand: {
230
+ fontSize: 20,
231
+ marginRight: 8,
232
+ },
233
+ headerTitle: {
234
+ fontFamily: MonospaceFont,
235
+ fontSize: 18,
236
+ fontWeight: '800',
237
+ color: t.text,
238
+ letterSpacing: 1,
239
+ },
240
+ closeButton: {
241
+ width: 32,
242
+ height: 32,
243
+ borderRadius: 16,
244
+ backgroundColor: t.surfaceElevated,
245
+ borderWidth: 1,
246
+ borderColor: t.border,
247
+ alignItems: 'center',
248
+ justifyContent: 'center',
249
+ },
250
+ closeButtonText: {
251
+ fontSize: 14,
252
+ color: t.textSecondary,
253
+ fontWeight: '700',
254
+ },
255
+ content: {
256
+ flex: 1,
257
+ },
258
+ })