rn-backstage 1.2.1 → 1.3.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 (77) hide show
  1. package/README.md +82 -2
  2. package/lib/commonjs/Backstage.js +6 -0
  3. package/lib/commonjs/Backstage.js.map +1 -1
  4. package/lib/commonjs/components/BackstagePanel.js +18 -2
  5. package/lib/commonjs/components/BackstagePanel.js.map +1 -1
  6. package/lib/commonjs/components/FlagsTab.js +11 -9
  7. package/lib/commonjs/components/FlagsTab.js.map +1 -1
  8. package/lib/commonjs/components/FloatingPill.js +82 -22
  9. package/lib/commonjs/components/FloatingPill.js.map +1 -1
  10. package/lib/commonjs/components/InfoTab.js +5 -1
  11. package/lib/commonjs/components/InfoTab.js.map +1 -1
  12. package/lib/commonjs/components/LogItem.js +6 -0
  13. package/lib/commonjs/components/LogItem.js.map +1 -1
  14. package/lib/commonjs/components/LogsTab.js +2 -0
  15. package/lib/commonjs/components/LogsTab.js.map +1 -1
  16. package/lib/commonjs/components/NetworkTab.js +2 -0
  17. package/lib/commonjs/components/NetworkTab.js.map +1 -1
  18. package/lib/commonjs/components/StorageTab.js +655 -0
  19. package/lib/commonjs/components/StorageTab.js.map +1 -0
  20. package/lib/commonjs/constants.js +72 -6
  21. package/lib/commonjs/constants.js.map +1 -1
  22. package/lib/commonjs/index.js +77 -0
  23. package/lib/commonjs/index.js.map +1 -1
  24. package/lib/commonjs/types.js +1 -0
  25. package/lib/commonjs/types.js.map +1 -1
  26. package/lib/module/Backstage.js +6 -0
  27. package/lib/module/Backstage.js.map +1 -1
  28. package/lib/module/components/BackstagePanel.js +18 -2
  29. package/lib/module/components/BackstagePanel.js.map +1 -1
  30. package/lib/module/components/FlagsTab.js +11 -9
  31. package/lib/module/components/FlagsTab.js.map +1 -1
  32. package/lib/module/components/FloatingPill.js +86 -26
  33. package/lib/module/components/FloatingPill.js.map +1 -1
  34. package/lib/module/components/InfoTab.js +6 -2
  35. package/lib/module/components/InfoTab.js.map +1 -1
  36. package/lib/module/components/LogItem.js +7 -1
  37. package/lib/module/components/LogItem.js.map +1 -1
  38. package/lib/module/components/LogsTab.js +2 -0
  39. package/lib/module/components/LogsTab.js.map +1 -1
  40. package/lib/module/components/NetworkTab.js +2 -0
  41. package/lib/module/components/NetworkTab.js.map +1 -1
  42. package/lib/module/components/StorageTab.js +650 -0
  43. package/lib/module/components/StorageTab.js.map +1 -0
  44. package/lib/module/constants.js +72 -6
  45. package/lib/module/constants.js.map +1 -1
  46. package/lib/module/index.js +13 -0
  47. package/lib/module/index.js.map +1 -1
  48. package/lib/module/types.js +2 -0
  49. package/lib/module/types.js.map +1 -1
  50. package/lib/typescript/Backstage.d.ts.map +1 -1
  51. package/lib/typescript/components/BackstagePanel.d.ts +2 -1
  52. package/lib/typescript/components/BackstagePanel.d.ts.map +1 -1
  53. package/lib/typescript/components/FloatingPill.d.ts +2 -0
  54. package/lib/typescript/components/FloatingPill.d.ts.map +1 -1
  55. package/lib/typescript/components/InfoTab.d.ts.map +1 -1
  56. package/lib/typescript/components/LogItem.d.ts.map +1 -1
  57. package/lib/typescript/components/StorageTab.d.ts +9 -0
  58. package/lib/typescript/components/StorageTab.d.ts.map +1 -0
  59. package/lib/typescript/constants.d.ts +59 -4
  60. package/lib/typescript/constants.d.ts.map +1 -1
  61. package/lib/typescript/index.d.ts +12 -1
  62. package/lib/typescript/index.d.ts.map +1 -1
  63. package/lib/typescript/types.d.ts +16 -0
  64. package/lib/typescript/types.d.ts.map +1 -1
  65. package/package.json +6 -4
  66. package/src/Backstage.tsx +6 -0
  67. package/src/components/BackstagePanel.tsx +23 -4
  68. package/src/components/FlagsTab.tsx +6 -4
  69. package/src/components/FloatingPill.tsx +122 -28
  70. package/src/components/InfoTab.tsx +6 -5
  71. package/src/components/LogItem.tsx +13 -4
  72. package/src/components/LogsTab.tsx +2 -2
  73. package/src/components/NetworkTab.tsx +2 -2
  74. package/src/components/StorageTab.tsx +607 -0
  75. package/src/constants.ts +80 -4
  76. package/src/index.ts +15 -0
  77. package/src/types.ts +22 -0
@@ -82,35 +82,101 @@ export const MonospaceFont = Platform.select({
82
82
  // ─── Test IDs ────────────────────────────────────────────────────────────────
83
83
 
84
84
  export const TestIDs = {
85
+ // ── Floating Pill ──────────────────────────────
85
86
  floatingPill: 'backstage.floating-pill',
87
+ floatingPillText: 'backstage.floating-pill.text',
88
+ // ── Panel ──────────────────────────────────────
86
89
  panel: 'backstage.panel',
90
+ panelModal: 'backstage.panel.modal',
91
+ // ── Header ─────────────────────────────────────
87
92
  header: {
88
93
  container: 'backstage.header',
89
94
  title: 'backstage.header.title',
90
95
  closeButton: 'backstage.header.close'
91
96
  },
97
+ // ── Tab Bar ────────────────────────────────────
92
98
  tabBar: 'backstage.tab-bar',
93
99
  tabs: {
94
100
  info: 'backstage.tab.info',
101
+ network: 'backstage.tab.network',
102
+ flags: 'backstage.tab.flags',
103
+ storage: 'backstage.tab.storage',
95
104
  logs: 'backstage.tab.logs'
96
105
  },
106
+ // ── Info Tab ───────────────────────────────────
97
107
  infoTab: {
98
- section: 'backstage.info',
108
+ container: 'backstage.info',
99
109
  deviceInfo: 'backstage.info.device',
100
110
  stateTree: 'backstage.info.state-tree',
101
- quickActions: 'backstage.info.quick-actions'
111
+ quickActions: 'backstage.info.quick-actions',
112
+ /** Dynamic: backstage.info.action.{index} */
113
+ actionButton: index => `backstage.info.action.${index}`
102
114
  },
115
+ // ── Logs Tab ───────────────────────────────────
103
116
  logsTab: {
104
- section: 'backstage.logs',
117
+ container: 'backstage.logs',
105
118
  searchInput: 'backstage.logs.search',
106
119
  copyButton: 'backstage.logs.copy',
107
- list: 'backstage.logs.list'
120
+ list: 'backstage.logs.list',
121
+ statsBar: 'backstage.logs.stats'
108
122
  },
123
+ // ── Log Item ───────────────────────────────────
124
+ logItem: {
125
+ /** Dynamic: backstage.log-item.{id} */
126
+ container: id => `backstage.log-item.${id}`,
127
+ badge: id => `backstage.log-item.${id}.badge`,
128
+ message: id => `backstage.log-item.${id}.message`,
129
+ timestamp: id => `backstage.log-item.${id}.timestamp`,
130
+ dataContainer: id => `backstage.log-item.${id}.data`,
131
+ copyButton: id => `backstage.log-item.${id}.copy`
132
+ },
133
+ // ── Network Tab ────────────────────────────────
109
134
  networkTab: {
110
- section: 'backstage.network',
135
+ container: 'backstage.network',
111
136
  searchInput: 'backstage.network.search',
137
+ clearButton: 'backstage.network.clear',
112
138
  list: 'backstage.network.list',
113
- clearButton: 'backstage.network.clear'
139
+ statsBar: 'backstage.network.stats'
140
+ },
141
+ // ── Network Item ───────────────────────────────
142
+ networkItem: {
143
+ /** Dynamic: backstage.network-item.{id} */
144
+ container: id => `backstage.network-item.${id}`,
145
+ methodBadge: id => `backstage.network-item.${id}.method`,
146
+ statusBadge: id => `backstage.network-item.${id}.status`,
147
+ url: id => `backstage.network-item.${id}.url`,
148
+ sectionTab: (id, section) => `backstage.network-item.${id}.section.${section}`,
149
+ curlButton: id => `backstage.network-item.${id}.curl`
150
+ },
151
+ // ── Flags Tab ──────────────────────────────────
152
+ flagsTab: {
153
+ container: 'backstage.flags',
154
+ searchInput: 'backstage.flags.search',
155
+ statsBar: 'backstage.flags.stats',
156
+ list: 'backstage.flags.list',
157
+ /** Dynamic: backstage.flag.{key} — applied to the Switch */
158
+ flagSwitch: key => `backstage.flag.${key}`,
159
+ flagLabel: key => `backstage.flag.${key}.label`,
160
+ flagRow: key => `backstage.flag.${key}.row`
161
+ },
162
+ // ── Storage Tab ────────────────────────────────
163
+ storageTab: {
164
+ container: 'backstage.storage',
165
+ searchInput: 'backstage.storage.search',
166
+ addButton: 'backstage.storage.add-button',
167
+ addForm: 'backstage.storage.add-form',
168
+ addKeyInput: 'backstage.storage.add-form.key',
169
+ addValueInput: 'backstage.storage.add-form.value',
170
+ addSubmitButton: 'backstage.storage.add-form.submit',
171
+ statsBar: 'backstage.storage.stats',
172
+ list: 'backstage.storage.list',
173
+ /** Dynamic: backstage.storage.entry.{key} */
174
+ entryRow: key => `backstage.storage.entry.${key}`,
175
+ entryEditButton: key => `backstage.storage.entry.${key}.edit`,
176
+ entryDeleteButton: key => `backstage.storage.entry.${key}.delete`,
177
+ entryEditInput: key => `backstage.storage.entry.${key}.edit-input`,
178
+ entrySaveButton: key => `backstage.storage.entry.${key}.save`,
179
+ entryCancelButton: key => `backstage.storage.entry.${key}.cancel`
114
180
  }
115
181
  };
116
182
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","Platform","width","screenWidth","height","screenHeight","get","Metrics","isIOS","OS","pillWidth","pillHeight","panelBorderRadius","tabBarHeight","headerHeight","sectionSpacing","contentPadding","DarkTheme","background","surface","surfaceElevated","border","text","textSecondary","textMuted","accent","accentDim","error","errorDim","warning","warningDim","success","info","infoDim","debugColor","debugDim","LightTheme","DEFAULT_MAX_LOGS","DEFAULT_MAX_NETWORK_ENTRIES","DEFAULT_MAX_NETWORK_BODY_SIZE","MonospaceFont","select","ios","default","TestIDs","floatingPill","panel","header","container","title","closeButton","tabBar","tabs","logs","infoTab","section","deviceInfo","stateTree","quickActions","logsTab","searchInput","copyButton","list","networkTab","clearButton"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","Platform","width","screenWidth","height","screenHeight","get","Metrics","isIOS","OS","pillWidth","pillHeight","panelBorderRadius","tabBarHeight","headerHeight","sectionSpacing","contentPadding","DarkTheme","background","surface","surfaceElevated","border","text","textSecondary","textMuted","accent","accentDim","error","errorDim","warning","warningDim","success","info","infoDim","debugColor","debugDim","LightTheme","DEFAULT_MAX_LOGS","DEFAULT_MAX_NETWORK_ENTRIES","DEFAULT_MAX_NETWORK_BODY_SIZE","MonospaceFont","select","ios","default","TestIDs","floatingPill","floatingPillText","panel","panelModal","header","container","title","closeButton","tabBar","tabs","network","flags","storage","logs","infoTab","deviceInfo","stateTree","quickActions","actionButton","index","logsTab","searchInput","copyButton","list","statsBar","logItem","id","badge","message","timestamp","dataContainer","networkTab","clearButton","networkItem","methodBadge","statusBadge","url","sectionTab","section","curlButton","flagsTab","flagSwitch","key","flagLabel","flagRow","storageTab","addButton","addForm","addKeyInput","addValueInput","addSubmitButton","entryRow","entryEditButton","entryDeleteButton","entryEditInput","entrySaveButton","entryCancelButton"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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","ignoreList":[]}
@@ -3,4 +3,17 @@
3
3
  export { Backstage } from './Backstage';
4
4
  export { LogLevel, NetworkState } from './types';
5
5
  export { TestIDs, DarkTheme, LightTheme } from './constants';
6
+ // ─── Individual Components ───────────────────────────────────────────────────
7
+
8
+ export { BackstagePanel } from './components/BackstagePanel';
9
+ export { FloatingPill } from './components/FloatingPill';
10
+ export { TabBar } from './components/TabBar';
11
+ export { InfoTab } from './components/InfoTab';
12
+ export { LogsTab } from './components/LogsTab';
13
+ export { LogItem } from './components/LogItem';
14
+ export { NetworkTab } from './components/NetworkTab';
15
+ export { NetworkItem } from './components/NetworkItem';
16
+ export { FlagsTab } from './components/FlagsTab';
17
+ export { StorageTab } from './components/StorageTab';
18
+ export { JsonTreeView } from './components/JsonTreeView';
6
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Backstage","LogLevel","NetworkState","TestIDs","DarkTheme","LightTheme"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,aAAa;AAevC,SAASC,QAAQ,EAAEC,YAAY,QAAQ,SAAS;AAChD,SAASC,OAAO,EAAEC,SAAS,EAAEC,UAAU,QAAQ,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["Backstage","LogLevel","NetworkState","TestIDs","DarkTheme","LightTheme","BackstagePanel","FloatingPill","TabBar","InfoTab","LogsTab","LogItem","NetworkTab","NetworkItem","FlagsTab","StorageTab","JsonTreeView"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,aAAa;AAgBvC,SAASC,QAAQ,EAAEC,YAAY,QAAQ,SAAS;AAChD,SAASC,OAAO,EAAEC,SAAS,EAAEC,UAAU,QAAQ,aAAa;AAG5D;;AAEA,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,YAAY,QAAQ,2BAA2B","ignoreList":[]}
@@ -25,6 +25,8 @@ export let NetworkState = /*#__PURE__*/function (NetworkState) {
25
25
 
26
26
  // ─── Feature Flags ─────────────────────────────────────────────────────────
27
27
 
28
+ // ─── Storage Adapter ─────────────────────────────────────────────────────────
29
+
28
30
  // ─── Extensible Tabs ─────────────────────────────────────────────────────────
29
31
 
30
32
  // ─── Theme ───────────────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"names":["LogLevel","NetworkState"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAGA;;AAEA,WAAYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAgBpB;;AAEA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAwBxB;;AAOA;;AAWA;;AAaA;;AASA;;AAuBA;;AA6FA","ignoreList":[]}
1
+ {"version":3,"names":["LogLevel","NetworkState"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAGA;;AAEA,WAAYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAgBpB;;AAEA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAwBxB;;AAOA;;AAWA;;AAaA;;AAaA;;AASA;;AAuBA;;AAsGA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Backstage.d.ts","sourceRoot":"","sources":["../../src/Backstage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAA;AAInF,eAAO,MAAM,SAAS,qFA6KrB,CAAA"}
1
+ {"version":3,"file":"Backstage.d.ts","sourceRoot":"","sources":["../../src/Backstage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAA;AAInF,eAAO,MAAM,SAAS,qFAmLrB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { AppInfoItem, BackstageStyleOverrides, BackstageTab, FeatureFlag, LogEntry, NetworkEntry, QuickAction } from '../types';
2
+ import type { AppInfoItem, BackstageStyleOverrides, BackstageTab, FeatureFlag, LogEntry, NetworkEntry, QuickAction, StorageAdapter } from '../types';
3
3
  interface BackstagePanelProps {
4
4
  visible: boolean;
5
5
  onClose: () => void;
@@ -20,6 +20,7 @@ interface BackstagePanelProps {
20
20
  onCopyNetwork?: (text: string) => void;
21
21
  extraTabs?: BackstageTab[];
22
22
  jsonMaxDepth?: number;
23
+ storageAdapter?: StorageAdapter;
23
24
  styles?: BackstageStyleOverrides;
24
25
  children?: React.ReactNode;
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BackstagePanel.d.ts","sourceRoot":"","sources":["../../../src/components/BackstagePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAiBhD,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAA;AAIjB,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAG3D,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAGnC,cAAc,EAAE,YAAY,EAAE,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAGtC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAG1B,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAeD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+HxD,CAAA"}
1
+ {"version":3,"file":"BackstagePanel.d.ts","sourceRoot":"","sources":["../../../src/components/BackstagePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAkBhD,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,cAAc,EACf,MAAM,UAAU,CAAA;AAIjB,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAG3D,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAGnC,cAAc,EAAE,YAAY,EAAE,CAAA;IAC9B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAGtC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAG1B,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,cAAc,CAAC,EAAE,cAAc,CAAA;IAG/B,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAiBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2IxD,CAAA"}
@@ -6,6 +6,8 @@ interface FloatingPillProps {
6
6
  onPress: () => void;
7
7
  initialX?: number;
8
8
  initialY?: number;
9
+ pillWidth?: number;
10
+ pillHeight?: number;
9
11
  styles?: BackstageStyleOverrides;
10
12
  }
11
13
  export declare const FloatingPill: React.FC<FloatingPillProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingPill.d.ts","sourceRoot":"","sources":["../../../src/components/FloatingPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAIrC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAIvD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAkBD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6FpD,CAAA"}
1
+ {"version":3,"file":"FloatingPill.d.ts","sourceRoot":"","sources":["../../../src/components/FloatingPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAa5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAIvD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAsCD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuJpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoTab.d.ts","sourceRoot":"","sources":["../../../src/components/InfoTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAkB,WAAW,EAAE,MAAM,UAAU,CAAA;AAIjG,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAID,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAkH1C,CAAA"}
1
+ {"version":3,"file":"InfoTab.d.ts","sourceRoot":"","sources":["../../../src/components/InfoTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAkB,WAAW,EAAE,MAAM,UAAU,CAAA;AAIjG,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAID,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAmH1C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogItem.d.ts","sourceRoot":"","sources":["../../../src/components/LogItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAK7D,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAkB,MAAM,UAAU,CAAA;AAMjF,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAuCD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6D1C,CAAA"}
1
+ {"version":3,"file":"LogItem.d.ts","sourceRoot":"","sources":["../../../src/components/LogItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAK7D,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAkB,MAAM,UAAU,CAAA;AAMjF,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAuCD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAsE1C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { StorageAdapter } from '../types';
3
+ interface StorageTabProps {
4
+ adapter: StorageAdapter;
5
+ jsonMaxDepth?: number;
6
+ }
7
+ export declare const StorageTab: React.FC<StorageTabProps>;
8
+ export {};
9
+ //# sourceMappingURL=StorageTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageTab.d.ts","sourceRoot":"","sources":["../../../src/components/StorageTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAKxE,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,UAAU,CAAA;AAI9D,UAAU,eAAe;IACvB,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAyBD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4UhD,CAAA"}
@@ -19,7 +19,9 @@ export declare const DEFAULT_MAX_NETWORK_BODY_SIZE = 65536;
19
19
  export declare const MonospaceFont: string;
20
20
  export declare const TestIDs: {
21
21
  floatingPill: string;
22
+ floatingPillText: string;
22
23
  panel: string;
24
+ panelModal: string;
23
25
  header: {
24
26
  container: string;
25
27
  title: string;
@@ -28,25 +30,78 @@ export declare const TestIDs: {
28
30
  tabBar: string;
29
31
  tabs: {
30
32
  info: string;
33
+ network: string;
34
+ flags: string;
35
+ storage: string;
31
36
  logs: string;
32
37
  };
33
38
  infoTab: {
34
- section: string;
39
+ container: string;
35
40
  deviceInfo: string;
36
41
  stateTree: string;
37
42
  quickActions: string;
43
+ /** Dynamic: backstage.info.action.{index} */
44
+ actionButton: (index: number) => string;
38
45
  };
39
46
  logsTab: {
40
- section: string;
47
+ container: string;
41
48
  searchInput: string;
42
49
  copyButton: string;
43
50
  list: string;
51
+ statsBar: string;
52
+ };
53
+ logItem: {
54
+ /** Dynamic: backstage.log-item.{id} */
55
+ container: (id: string) => string;
56
+ badge: (id: string) => string;
57
+ message: (id: string) => string;
58
+ timestamp: (id: string) => string;
59
+ dataContainer: (id: string) => string;
60
+ copyButton: (id: string) => string;
44
61
  };
45
62
  networkTab: {
46
- section: string;
63
+ container: string;
47
64
  searchInput: string;
48
- list: string;
49
65
  clearButton: string;
66
+ list: string;
67
+ statsBar: string;
68
+ };
69
+ networkItem: {
70
+ /** Dynamic: backstage.network-item.{id} */
71
+ container: (id: string) => string;
72
+ methodBadge: (id: string) => string;
73
+ statusBadge: (id: string) => string;
74
+ url: (id: string) => string;
75
+ sectionTab: (id: string, section: string) => string;
76
+ curlButton: (id: string) => string;
77
+ };
78
+ flagsTab: {
79
+ container: string;
80
+ searchInput: string;
81
+ statsBar: string;
82
+ list: string;
83
+ /** Dynamic: backstage.flag.{key} — applied to the Switch */
84
+ flagSwitch: (key: string) => string;
85
+ flagLabel: (key: string) => string;
86
+ flagRow: (key: string) => string;
87
+ };
88
+ storageTab: {
89
+ container: string;
90
+ searchInput: string;
91
+ addButton: string;
92
+ addForm: string;
93
+ addKeyInput: string;
94
+ addValueInput: string;
95
+ addSubmitButton: string;
96
+ statsBar: string;
97
+ list: string;
98
+ /** Dynamic: backstage.storage.entry.{key} */
99
+ entryRow: (key: string) => string;
100
+ entryEditButton: (key: string) => string;
101
+ entryDeleteButton: (key: string) => string;
102
+ entryEditInput: (key: string) => string;
103
+ entrySaveButton: (key: string) => string;
104
+ entryCancelButton: (key: string) => string;
50
105
  };
51
106
  };
52
107
  //# sourceMappingURL=constants.d.ts.map
@@ -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;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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;QAgChB,6CAA6C;8BACvB,MAAM;;;;;;;;;;QAc5B,uCAAuC;wBACvB,MAAM;oBACV,MAAM;sBACJ,MAAM;wBACJ,MAAM;4BACF,MAAM;yBACT,MAAM;;;;;;;;;;QAcvB,2CAA2C;wBAC3B,MAAM;0BACJ,MAAM;0BACN,MAAM;kBACd,MAAM;yBACC,MAAM,WAAW,MAAM;yBACvB,MAAM;;;;;;;QASvB,4DAA4D;0BAC1C,MAAM;yBACP,MAAM;uBACR,MAAM;;;;;;;;;;;;QAcrB,6CAA6C;wBAC7B,MAAM;+BACC,MAAM;iCACJ,MAAM;8BACT,MAAM;+BACL,MAAM;iCACJ,MAAM;;CAElC,CAAA"}
@@ -1,6 +1,17 @@
1
1
  export { Backstage } from './Backstage';
2
- export type { BackstageProps, BackstageRef, BackstageTab, BackstageStyleOverrides, BackstageTheme, QuickAction, FeatureFlag, AppInfoItem, LogEntry, NetworkEntry, } from './types';
2
+ export type { BackstageProps, BackstageRef, BackstageTab, BackstageStyleOverrides, BackstageTheme, QuickAction, FeatureFlag, StorageAdapter, AppInfoItem, LogEntry, NetworkEntry, } from './types';
3
3
  export { LogLevel, NetworkState } from './types';
4
4
  export { TestIDs, DarkTheme, LightTheme } from './constants';
5
5
  export type { ThemePreference } from './ThemeContext';
6
+ export { BackstagePanel } from './components/BackstagePanel';
7
+ export { FloatingPill } from './components/FloatingPill';
8
+ export { TabBar } from './components/TabBar';
9
+ export { InfoTab } from './components/InfoTab';
10
+ export { LogsTab } from './components/LogsTab';
11
+ export { LogItem } from './components/LogItem';
12
+ export { NetworkTab } from './components/NetworkTab';
13
+ export { NetworkItem } from './components/NetworkItem';
14
+ export { FlagsTab } from './components/FlagsTab';
15
+ export { StorageTab } from './components/StorageTab';
16
+ export { JsonTreeView } from './components/JsonTreeView';
6
17
  //# 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;AAChD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,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,cAAc,EACd,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;AAIrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
@@ -58,6 +58,16 @@ export interface FeatureFlag {
58
58
  /** Optional description shown below the label */
59
59
  description?: string;
60
60
  }
61
+ export interface StorageAdapter {
62
+ /** Return all stored keys */
63
+ getAllKeys: () => Promise<string[]>;
64
+ /** Get value for a key. Return null if not found */
65
+ getItem: (key: string) => Promise<string | null>;
66
+ /** Set a value for a key */
67
+ setItem: (key: string, value: string) => Promise<void>;
68
+ /** Remove an entry by key */
69
+ removeItem: (key: string) => Promise<void>;
70
+ }
61
71
  export interface BackstageTab {
62
72
  key: string;
63
73
  title: string;
@@ -105,6 +115,8 @@ export interface BackstageProps {
105
115
  featureFlags?: FeatureFlag[];
106
116
  /** Callback when a feature flag is toggled */
107
117
  onToggleFeatureFlag?: (key: string, value: boolean) => void;
118
+ /** Storage adapter for the Storage Viewer tab (AsyncStorage, MMKV, etc.) */
119
+ storageAdapter?: StorageAdapter;
108
120
  /** Maximum number of logs to retain in memory. Default: 500 */
109
121
  maxLogs?: number;
110
122
  /** Log messages containing these strings will be excluded */
@@ -123,6 +135,10 @@ export interface BackstageProps {
123
135
  initialY?: number;
124
136
  /** Text displayed on the floating pill. Defaults to appVersion or "DEV" */
125
137
  pillText?: string;
138
+ /** Width of the floating pill. Default: 60 */
139
+ pillWidth?: number;
140
+ /** Height of the floating pill. Default: 32 */
141
+ pillHeight?: number;
126
142
  /** Whether to enable network request interception. Default: true */
127
143
  enableNetworkInspector?: boolean;
128
144
  /** Maximum number of network entries to retain in memory. Default: 500 */
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rn-backstage",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
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",
@@ -16,6 +16,8 @@
16
16
  "!**/.*"
17
17
  ],
18
18
  "scripts": {
19
+ "example:ios": "cd example && npx expo run:ios",
20
+ "example:android": "cd example && npx expo run:android",
19
21
  "typecheck": "tsc --noEmit",
20
22
  "lint": "prettier --write \"**/*.{js,ts,tsx}\" && eslint \"**/*.{js,ts,tsx}\"",
21
23
  "prepack": "bob build",
@@ -44,12 +46,12 @@
44
46
  "access": "public"
45
47
  },
46
48
  "devDependencies": {
47
- "@types/react": "~18.3.0",
49
+ "@types/react": "~19.2.10",
48
50
  "del-cli": "^6.0.0",
49
51
  "eslint": "^9.0.0",
50
52
  "prettier": "^3.0.0",
51
- "react": "18.3.1",
52
- "react-native": "^0.78.0",
53
+ "react": "19.2.0",
54
+ "react-native": "0.83.4",
53
55
  "react-native-builder-bob": "^0.35.0",
54
56
  "release-it": "^18.0.0",
55
57
  "typescript": "^5.0.0",
package/src/Backstage.tsx CHANGED
@@ -34,6 +34,7 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
34
34
  quickActions,
35
35
  featureFlags,
36
36
  onToggleFeatureFlag,
37
+ storageAdapter,
37
38
  maxLogs = DEFAULT_MAX_LOGS,
38
39
  logFilters,
39
40
  onCopyLogs,
@@ -43,6 +44,8 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
43
44
  initialX,
44
45
  initialY,
45
46
  pillText,
47
+ pillWidth,
48
+ pillHeight,
46
49
  enableNetworkInspector = true,
47
50
  maxNetworkEntries = DEFAULT_MAX_NETWORK_ENTRIES,
48
51
  maxNetworkBodySize,
@@ -164,6 +167,8 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
164
167
  onPress={openPanel}
165
168
  initialX={initialX}
166
169
  initialY={initialY}
170
+ pillWidth={pillWidth}
171
+ pillHeight={pillHeight}
167
172
  styles={propStyles}
168
173
  />
169
174
  <BackstagePanel
@@ -186,6 +191,7 @@ export const Backstage = forwardRef<BackstageRef, BackstageProps>(
186
191
  onCopyNetwork={onCopyLogs}
187
192
  extraTabs={extraTabs}
188
193
  jsonMaxDepth={jsonMaxDepth}
194
+ storageAdapter={storageAdapter}
189
195
  styles={propStyles}
190
196
  >
191
197
  {children}
@@ -15,6 +15,7 @@ import { InfoTab } from './InfoTab'
15
15
  import { LogsTab } from './LogsTab'
16
16
  import { NetworkTab } from './NetworkTab'
17
17
  import { FlagsTab } from './FlagsTab'
18
+ import { StorageTab } from './StorageTab'
18
19
  import type {
19
20
  AppInfoItem,
20
21
  BackstageStyleOverrides,
@@ -23,6 +24,7 @@ import type {
23
24
  LogEntry,
24
25
  NetworkEntry,
25
26
  QuickAction,
27
+ StorageAdapter,
26
28
  } from '../types'
27
29
 
28
30
  // ─── Types ───────────────────────────────────────────────────────────────────
@@ -58,6 +60,9 @@ interface BackstagePanelProps {
58
60
  // JSON tree
59
61
  jsonMaxDepth?: number
60
62
 
63
+ // Storage
64
+ storageAdapter?: StorageAdapter
65
+
61
66
  // Styling
62
67
  styles?: BackstageStyleOverrides
63
68
  children?: React.ReactNode
@@ -72,6 +77,8 @@ const ALWAYS_ON_TABS = [
72
77
 
73
78
  const FLAGS_TAB = { key: 'flags', title: 'Flags', icon: '🎚' }
74
79
 
80
+ const STORAGE_TAB = { key: 'storage', title: 'Storage', icon: '🗄' }
81
+
75
82
  const LOGS_TAB = { key: 'logs', title: 'Logs', icon: '📋' }
76
83
 
77
84
  // ─── Component ───────────────────────────────────────────────────────────────
@@ -96,6 +103,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
96
103
  onCopyNetwork,
97
104
  extraTabs = [],
98
105
  jsonMaxDepth,
106
+ storageAdapter,
99
107
  styles: propStyles,
100
108
  children,
101
109
  }) => {
@@ -105,9 +113,11 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
105
113
 
106
114
  // Compose all tabs: built-in (conditionally including Flags) + extra
107
115
  const hasFlags = featureFlags && featureFlags.length > 0
116
+ const hasStorage = !!storageAdapter
108
117
  const allTabs = [
109
118
  ...ALWAYS_ON_TABS,
110
119
  ...(hasFlags ? [FLAGS_TAB] : []),
120
+ ...(hasStorage ? [STORAGE_TAB] : []),
111
121
  LOGS_TAB,
112
122
  ...extraTabs.map(t => ({ key: t.key, title: t.title, icon: t.icon })),
113
123
  ]
@@ -133,6 +143,10 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
133
143
  )
134
144
  case 'flags':
135
145
  return <FlagsTab flags={featureFlags ?? []} onToggle={onToggleFeatureFlag} />
146
+ case 'storage':
147
+ return storageAdapter ? (
148
+ <StorageTab adapter={storageAdapter} jsonMaxDepth={jsonMaxDepth} />
149
+ ) : null
136
150
  case 'network':
137
151
  return (
138
152
  <NetworkTab
@@ -166,7 +180,7 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
166
180
 
167
181
  return (
168
182
  <Modal
169
- testID={TestIDs.panel}
183
+ testID={TestIDs.panelModal}
170
184
  animationType="slide"
171
185
  transparent={false}
172
186
  visible={visible}
@@ -177,12 +191,17 @@ export const BackstagePanel: React.FC<BackstagePanelProps> = ({
177
191
  barStyle={theme.background < '#888' ? 'light-content' : 'dark-content'}
178
192
  backgroundColor={theme.background}
179
193
  />
180
- <SafeAreaView style={[styles.safeArea, propStyles?.panelStyle]}>
194
+ <SafeAreaView testID={TestIDs.panel} style={[styles.safeArea, propStyles?.panelStyle]}>
181
195
  {/* ── Header ──────────────────────────────────────────── */}
182
- <View style={styles.header}>
196
+ <View testID={TestIDs.header.container} style={styles.header}>
183
197
  <View style={styles.headerLeft}>
184
198
  <Text style={styles.headerBrand}>⚙</Text>
185
- <Text style={[styles.headerTitle, propStyles?.headerTitleStyle]}>Backstage</Text>
199
+ <Text
200
+ testID={TestIDs.header.title}
201
+ style={[styles.headerTitle, propStyles?.headerTitleStyle]}
202
+ >
203
+ Backstage
204
+ </Text>
186
205
  </View>
187
206
  <TouchableOpacity
188
207
  testID={TestIDs.header.closeButton}
@@ -79,10 +79,10 @@ export const FlagsTab: React.FC<FlagsTabProps> = ({ flags, onToggle }) => {
79
79
  <View key={flag.key}>
80
80
  <View style={s.flagRow}>
81
81
  <View style={s.flagInfo}>
82
- <View style={s.flagHeader}>
83
- <Text style={s.flagLabel}>{flag.label}</Text>
84
- <Text style={[s.flagKey, flag.value && s.flagKeyActive]}>{flag.key}</Text>
82
+ <View style={s.flagHeader}>
83
+ <Text style={s.flagLabel} numberOfLines={2}>{flag.label}</Text>
85
84
  </View>
85
+ <Text style={[s.flagKey, flag.value && s.flagKeyActive]}>{flag.key}</Text>
86
86
  {flag.description && <Text style={s.flagDescription}>{flag.description}</Text>}
87
87
  </View>
88
88
  <Switch
@@ -169,7 +169,7 @@ const createStyles = (t: BackstageTheme) =>
169
169
  paddingHorizontal: 4,
170
170
  },
171
171
  flagInfo: { flex: 1, marginRight: 16 },
172
- flagHeader: { flexDirection: 'row', alignItems: 'center', gap: 8 },
172
+ flagHeader: { flexDirection: 'row', alignItems: 'center' },
173
173
  flagLabel: {
174
174
  fontFamily: MonospaceFont,
175
175
  fontSize: 14,
@@ -185,6 +185,8 @@ const createStyles = (t: BackstageTheme) =>
185
185
  paddingHorizontal: 6,
186
186
  paddingVertical: 1,
187
187
  overflow: 'hidden',
188
+ alignSelf: 'flex-start',
189
+ marginTop: 4,
188
190
  },
189
191
  flagKeyActive: { color: t.accent, backgroundColor: t.accentDim },
190
192
  flagDescription: {