@buoy-gg/storage 1.7.7 → 1.7.8
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.
- package/lib/commonjs/storage/components/DiffViewer/themes/diffThemes.js +35 -44
- package/lib/commonjs/storage/components/GameUIStorageBrowser.js +9 -23
- package/lib/commonjs/storage/components/SelectionActionBar.js +8 -22
- package/lib/commonjs/storage/components/StorageActionButtons.js +8 -22
- package/lib/commonjs/storage/components/StorageActions.js +8 -22
- package/lib/commonjs/storage/components/StorageEventActionButton.js +120 -0
- package/lib/commonjs/storage/components/StorageEventDetailContent.js +331 -822
- package/lib/commonjs/storage/components/StorageModalWithTabs.js +2 -23
- package/lib/commonjs/storage/utils/AsyncStorageListener.js +164 -35
- package/lib/commonjs/storage/utils/index.js +37 -0
- package/lib/commonjs/storage/utils/storageTimeTravelUtils.js +251 -0
- package/lib/module/storage/components/DiffViewer/themes/diffThemes.js +35 -44
- package/lib/module/storage/components/GameUIStorageBrowser.js +9 -23
- package/lib/module/storage/components/SelectionActionBar.js +9 -24
- package/lib/module/storage/components/StorageActionButtons.js +9 -24
- package/lib/module/storage/components/StorageActions.js +9 -24
- package/lib/module/storage/components/StorageEventActionButton.js +117 -0
- package/lib/module/storage/components/StorageEventDetailContent.js +332 -824
- package/lib/module/storage/components/StorageModalWithTabs.js +2 -22
- package/lib/module/storage/utils/AsyncStorageListener.js +159 -33
- package/lib/module/storage/utils/index.js +4 -1
- package/lib/module/storage/utils/storageTimeTravelUtils.js +245 -0
- package/lib/typescript/storage/components/DiffViewer/themes/diffThemes.d.ts +1 -1
- package/lib/typescript/storage/components/DiffViewer/themes/diffThemes.d.ts.map +1 -1
- package/lib/typescript/storage/components/GameUIStorageBrowser.d.ts.map +1 -1
- package/lib/typescript/storage/components/SelectionActionBar.d.ts.map +1 -1
- package/lib/typescript/storage/components/StorageActionButtons.d.ts.map +1 -1
- package/lib/typescript/storage/components/StorageActions.d.ts.map +1 -1
- package/lib/typescript/storage/components/StorageEventActionButton.d.ts +37 -0
- package/lib/typescript/storage/components/StorageEventActionButton.d.ts.map +1 -0
- package/lib/typescript/storage/components/StorageEventDetailContent.d.ts +11 -3
- package/lib/typescript/storage/components/StorageEventDetailContent.d.ts.map +1 -1
- package/lib/typescript/storage/components/StorageModalWithTabs.d.ts.map +1 -1
- package/lib/typescript/storage/utils/AsyncStorageListener.d.ts +38 -1
- package/lib/typescript/storage/utils/AsyncStorageListener.d.ts.map +1 -1
- package/lib/typescript/storage/utils/index.d.ts +2 -1
- package/lib/typescript/storage/utils/index.d.ts.map +1 -1
- package/lib/typescript/storage/utils/storageTimeTravelUtils.d.ts +35 -0
- package/lib/typescript/storage/utils/storageTimeTravelUtils.d.ts.map +1 -0
- package/package.json +6 -4
|
@@ -54,63 +54,54 @@ const gitClassicTheme = exports.gitClassicTheme = {
|
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* Dev Tools Default Theme
|
|
57
|
-
* Clean dark theme
|
|
57
|
+
* Clean dark theme matching Buoy website brand colors
|
|
58
58
|
*/
|
|
59
59
|
const devToolsDefaultTheme = exports.devToolsDefaultTheme = {
|
|
60
60
|
name: "Dev Tools Default",
|
|
61
|
-
description: "Clean dark theme with
|
|
62
|
-
//
|
|
63
|
-
background: "#
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
removedBackground: "rgba(255, 82, 82, 0.1)",
|
|
74
|
-
// Red for removals
|
|
75
|
-
modifiedBackground: "rgba(0, 184, 230, 0.1)",
|
|
76
|
-
// Cyan for modifications
|
|
61
|
+
description: "Clean dark theme with Buoy brand colors",
|
|
62
|
+
// Surface colors (matching website dark theme)
|
|
63
|
+
background: "#121212",
|
|
64
|
+
panelBackground: "#1A1A1A",
|
|
65
|
+
headerBackground: "#1A1A1A",
|
|
66
|
+
// Diff colors using website's semantic colors
|
|
67
|
+
// Added: Primary teal (#20C997)
|
|
68
|
+
// Removed: Error red (#EF4444)
|
|
69
|
+
// Modified: Secondary purple (#9B70E0)
|
|
70
|
+
addedBackground: "rgba(32, 201, 151, 0.12)",
|
|
71
|
+
removedBackground: "rgba(239, 68, 68, 0.12)",
|
|
72
|
+
modifiedBackground: "rgba(155, 112, 224, 0.12)",
|
|
77
73
|
unchangedBackground: "transparent",
|
|
78
74
|
contextBackground: "rgba(255, 255, 255, 0.02)",
|
|
79
75
|
// Text colors
|
|
80
|
-
addedText: "#
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
modifiedText: "#00B8E6",
|
|
85
|
-
// Bright cyan
|
|
86
|
-
unchangedText: "#B8BFC9",
|
|
87
|
-
// Muted text
|
|
88
|
-
|
|
76
|
+
addedText: "#20C997",
|
|
77
|
+
removedText: "#EF4444",
|
|
78
|
+
modifiedText: "#9B70E0",
|
|
79
|
+
unchangedText: "#E0E0E0",
|
|
89
80
|
// Word-level highlights
|
|
90
|
-
addedWordHighlight: "rgba(
|
|
91
|
-
removedWordHighlight: "rgba(
|
|
81
|
+
addedWordHighlight: "rgba(32, 201, 151, 0.3)",
|
|
82
|
+
removedWordHighlight: "rgba(239, 68, 68, 0.3)",
|
|
92
83
|
// UI elements
|
|
93
|
-
lineNumberBackground: "#
|
|
94
|
-
lineNumberText: "#
|
|
95
|
-
lineNumberBorder: "#
|
|
84
|
+
lineNumberBackground: "#121212",
|
|
85
|
+
lineNumberText: "#A0A0A0",
|
|
86
|
+
lineNumberBorder: "#333333",
|
|
96
87
|
// Markers
|
|
97
|
-
markerAddedBackground: "rgba(
|
|
98
|
-
markerRemovedBackground: "rgba(
|
|
99
|
-
markerModifiedBackground: "rgba(
|
|
100
|
-
markerText: "#
|
|
88
|
+
markerAddedBackground: "rgba(32, 201, 151, 0.2)",
|
|
89
|
+
markerRemovedBackground: "rgba(239, 68, 68, 0.2)",
|
|
90
|
+
markerModifiedBackground: "rgba(155, 112, 224, 0.2)",
|
|
91
|
+
markerText: "#A0A0A0",
|
|
101
92
|
// Borders and dividers
|
|
102
|
-
borderColor: "#
|
|
103
|
-
dividerColor: "#
|
|
93
|
+
borderColor: "#333333",
|
|
94
|
+
dividerColor: "#333333",
|
|
104
95
|
// Summary bar
|
|
105
|
-
summaryBackground: "#
|
|
106
|
-
summaryAddedText: "#
|
|
107
|
-
summaryRemovedText: "#
|
|
108
|
-
summaryModifiedText: "#
|
|
96
|
+
summaryBackground: "#1A1A1A",
|
|
97
|
+
summaryAddedText: "#20C997",
|
|
98
|
+
summaryRemovedText: "#EF4444",
|
|
99
|
+
summaryModifiedText: "#9B70E0",
|
|
109
100
|
// Empty state
|
|
110
|
-
emptyStateText: "#
|
|
101
|
+
emptyStateText: "#888888",
|
|
111
102
|
// Separator
|
|
112
|
-
separatorBackground: "#
|
|
113
|
-
separatorText: "#
|
|
103
|
+
separatorBackground: "#1A1A1A",
|
|
104
|
+
separatorText: "#A0A0A0"
|
|
114
105
|
};
|
|
115
106
|
|
|
116
107
|
/**
|
|
@@ -17,6 +17,7 @@ var _useMMKVInstances = require("../hooks/useMMKVInstances");
|
|
|
17
17
|
var _mmkvAvailability = require("../utils/mmkvAvailability");
|
|
18
18
|
var _StorageActionButtons = require("./StorageActionButtons");
|
|
19
19
|
var _SelectionActionBar = require("./SelectionActionBar");
|
|
20
|
+
var _license = require("@buoy-gg/license");
|
|
20
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
22
|
// Conditionally import MMKV listener
|
|
22
23
|
let addMMKVListener;
|
|
@@ -27,26 +28,6 @@ if ((0, _mmkvAvailability.isMMKVAvailable)()) {
|
|
|
27
28
|
|
|
28
29
|
// Import shared Game UI components
|
|
29
30
|
|
|
30
|
-
// Lazy load the license hooks to avoid circular dependencies
|
|
31
|
-
let _useIsPro = null;
|
|
32
|
-
let _licenseLoadAttempted = false;
|
|
33
|
-
function loadLicenseModule() {
|
|
34
|
-
if (_licenseLoadAttempted) return;
|
|
35
|
-
_licenseLoadAttempted = true;
|
|
36
|
-
try {
|
|
37
|
-
const mod = require("@buoy-gg/license");
|
|
38
|
-
if (mod) {
|
|
39
|
-
_useIsPro = mod.useIsPro ?? null;
|
|
40
|
-
}
|
|
41
|
-
} catch {
|
|
42
|
-
// License package not available
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function getUseIsPro() {
|
|
46
|
-
loadLicenseModule();
|
|
47
|
-
return _useIsPro ?? (() => false);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
31
|
// MMKV Instance color palette - consistent colors per instance
|
|
51
32
|
const INSTANCE_COLORS = [_sharedUi.macOSColors.semantic.info,
|
|
52
33
|
// Blue
|
|
@@ -81,10 +62,15 @@ function GameUIStorageBrowser({
|
|
|
81
62
|
searchQuery = "",
|
|
82
63
|
storageDataRef
|
|
83
64
|
}) {
|
|
84
|
-
|
|
85
|
-
const useIsPro = getUseIsPro();
|
|
86
|
-
const isPro = useIsPro();
|
|
65
|
+
const isPro = (0, _license.useIsPro)();
|
|
87
66
|
const [showUpgradeModal, setShowUpgradeModal] = (0, _react.useState)(false);
|
|
67
|
+
|
|
68
|
+
// Auto-close upgrade modal when user becomes Pro
|
|
69
|
+
(0, _react.useEffect)(() => {
|
|
70
|
+
if (showUpgradeModal && isPro) {
|
|
71
|
+
setShowUpgradeModal(false);
|
|
72
|
+
}
|
|
73
|
+
}, [showUpgradeModal, isPro]);
|
|
88
74
|
const [activeFilter, setActiveFilter] = (0, _react.useState)("all");
|
|
89
75
|
const [activeStorageType, setActiveStorageType] = (0, _react.useState)("all");
|
|
90
76
|
const [selectedMMKVInstance, setSelectedMMKVInstance] = (0, _react.useState)(null);
|
|
@@ -7,28 +7,10 @@ exports.SelectionActionBar = SelectionActionBar;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
+
var _license = require("@buoy-gg/license");
|
|
10
11
|
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
// Lazy load the license hooks to avoid circular dependencies
|
|
14
|
-
let _useIsPro = null;
|
|
15
|
-
let _licenseLoadAttempted = false;
|
|
16
|
-
function loadLicenseModule() {
|
|
17
|
-
if (_licenseLoadAttempted) return;
|
|
18
|
-
_licenseLoadAttempted = true;
|
|
19
|
-
try {
|
|
20
|
-
const mod = require("@buoy-gg/license");
|
|
21
|
-
if (mod) {
|
|
22
|
-
_useIsPro = mod.useIsPro ?? null;
|
|
23
|
-
}
|
|
24
|
-
} catch {
|
|
25
|
-
// License package not available
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function getUseIsPro() {
|
|
29
|
-
loadLicenseModule();
|
|
30
|
-
return _useIsPro ?? (() => false);
|
|
31
|
-
}
|
|
32
14
|
function SelectionActionBar({
|
|
33
15
|
selectedKeys,
|
|
34
16
|
mmkvInstances,
|
|
@@ -38,10 +20,14 @@ function SelectionActionBar({
|
|
|
38
20
|
totalVisibleKeys
|
|
39
21
|
}) {
|
|
40
22
|
const [showUpgradeModal, setShowUpgradeModal] = (0, _react.useState)(false);
|
|
23
|
+
const isPro = (0, _license.useIsPro)();
|
|
41
24
|
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
25
|
+
// Auto-close upgrade modal when user becomes Pro
|
|
26
|
+
(0, _react.useEffect)(() => {
|
|
27
|
+
if (showUpgradeModal && isPro) {
|
|
28
|
+
setShowUpgradeModal(false);
|
|
29
|
+
}
|
|
30
|
+
}, [showUpgradeModal, isPro]);
|
|
45
31
|
const selectedCount = selectedKeys.length;
|
|
46
32
|
const allSelected = selectedCount === totalVisibleKeys && totalVisibleKeys > 0;
|
|
47
33
|
|
|
@@ -7,28 +7,10 @@ exports.StorageActionButtons = StorageActionButtons;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
+
var _license = require("@buoy-gg/license");
|
|
10
11
|
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
// Lazy load the license hooks to avoid circular dependencies
|
|
14
|
-
let _useIsPro = null;
|
|
15
|
-
let _licenseLoadAttempted = false;
|
|
16
|
-
function loadLicenseModule() {
|
|
17
|
-
if (_licenseLoadAttempted) return;
|
|
18
|
-
_licenseLoadAttempted = true;
|
|
19
|
-
try {
|
|
20
|
-
const mod = require("@buoy-gg/license");
|
|
21
|
-
if (mod) {
|
|
22
|
-
_useIsPro = mod.useIsPro ?? null;
|
|
23
|
-
}
|
|
24
|
-
} catch {
|
|
25
|
-
// License package not available
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function getUseIsPro() {
|
|
29
|
-
loadLicenseModule();
|
|
30
|
-
return _useIsPro ?? (() => false);
|
|
31
|
-
}
|
|
32
14
|
function StorageActionButtons({
|
|
33
15
|
copyValue,
|
|
34
16
|
mmkvInstances = [],
|
|
@@ -39,10 +21,14 @@ function StorageActionButtons({
|
|
|
39
21
|
selectedCount = 0
|
|
40
22
|
}) {
|
|
41
23
|
const [showUpgradeModal, setShowUpgradeModal] = (0, _react.useState)(false);
|
|
24
|
+
const isPro = (0, _license.useIsPro)();
|
|
42
25
|
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
26
|
+
// Auto-close upgrade modal when user becomes Pro
|
|
27
|
+
(0, _react.useEffect)(() => {
|
|
28
|
+
if (showUpgradeModal && isPro) {
|
|
29
|
+
setShowUpgradeModal(false);
|
|
30
|
+
}
|
|
31
|
+
}, [showUpgradeModal, isPro]);
|
|
46
32
|
const handleClearAsyncStorage = () => {
|
|
47
33
|
// Gate clear behind Pro
|
|
48
34
|
if (!isPro) {
|
|
@@ -8,26 +8,8 @@ var _reactNative = require("react-native");
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _clearAllStorage = require("../utils/clearAllStorage");
|
|
10
10
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
11
|
+
var _license = require("@buoy-gg/license");
|
|
11
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
// Lazy load the license hooks to avoid circular dependencies
|
|
13
|
-
let _useIsPro = null;
|
|
14
|
-
let _licenseLoadAttempted = false;
|
|
15
|
-
function loadLicenseModule() {
|
|
16
|
-
if (_licenseLoadAttempted) return;
|
|
17
|
-
_licenseLoadAttempted = true;
|
|
18
|
-
try {
|
|
19
|
-
const mod = require("@buoy-gg/license");
|
|
20
|
-
if (mod) {
|
|
21
|
-
_useIsPro = mod.useIsPro ?? null;
|
|
22
|
-
}
|
|
23
|
-
} catch {
|
|
24
|
-
// License package not available
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function getUseIsPro() {
|
|
28
|
-
loadLicenseModule();
|
|
29
|
-
return _useIsPro ?? (() => false);
|
|
30
|
-
}
|
|
31
13
|
function StorageActions({
|
|
32
14
|
storageKeys,
|
|
33
15
|
onClearAll,
|
|
@@ -36,10 +18,14 @@ function StorageActions({
|
|
|
36
18
|
}) {
|
|
37
19
|
const [isRefreshing, setIsRefreshing] = (0, _react.useState)(false);
|
|
38
20
|
const [showUpgradeModal, setShowUpgradeModal] = (0, _react.useState)(false);
|
|
21
|
+
const isPro = (0, _license.useIsPro)();
|
|
39
22
|
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
// Auto-close upgrade modal when user becomes Pro
|
|
24
|
+
(0, _react.useEffect)(() => {
|
|
25
|
+
if (showUpgradeModal && isPro) {
|
|
26
|
+
setShowUpgradeModal(false);
|
|
27
|
+
}
|
|
28
|
+
}, [showUpgradeModal, isPro]);
|
|
43
29
|
const handleRefresh = (0, _react.useCallback)(async () => {
|
|
44
30
|
setIsRefreshing(true);
|
|
45
31
|
try {
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StorageEventActionButton = StorageEventActionButton;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
/**
|
|
11
|
+
* StorageEventActionButton
|
|
12
|
+
*
|
|
13
|
+
* Action button for Storage DevTools detail view
|
|
14
|
+
* Matches Redux DevTools ActionButton styling
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// Button color configurations matching Redux/React Query pattern
|
|
18
|
+
const buttonConfigs = {
|
|
19
|
+
copy: {
|
|
20
|
+
color: _sharedUi.buoyColors.primary,
|
|
21
|
+
backgroundColor: _sharedUi.buoyColors.primary + "15",
|
|
22
|
+
borderColor: _sharedUi.buoyColors.primary + "40",
|
|
23
|
+
textColor: _sharedUi.buoyColors.primary
|
|
24
|
+
},
|
|
25
|
+
jump: {
|
|
26
|
+
color: _sharedUi.buoyColors.warning,
|
|
27
|
+
backgroundColor: _sharedUi.buoyColors.warning + "15",
|
|
28
|
+
borderColor: _sharedUi.buoyColors.warning + "40",
|
|
29
|
+
textColor: _sharedUi.buoyColors.warning
|
|
30
|
+
},
|
|
31
|
+
undo: {
|
|
32
|
+
color: _sharedUi.buoyColors.info,
|
|
33
|
+
backgroundColor: _sharedUi.buoyColors.info + "15",
|
|
34
|
+
borderColor: _sharedUi.buoyColors.info + "40",
|
|
35
|
+
textColor: _sharedUi.buoyColors.info
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
function StorageEventActionButton({
|
|
39
|
+
onPress,
|
|
40
|
+
text,
|
|
41
|
+
type,
|
|
42
|
+
disabled = false,
|
|
43
|
+
locked = false
|
|
44
|
+
}) {
|
|
45
|
+
const config = buttonConfigs[type];
|
|
46
|
+
const isDisabledOrLocked = disabled || locked;
|
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
48
|
+
disabled: isDisabledOrLocked,
|
|
49
|
+
onPress: onPress,
|
|
50
|
+
style: [styles.button, {
|
|
51
|
+
backgroundColor: isDisabledOrLocked ? _sharedUi.buoyColors.textMuted + "1A" : config.backgroundColor,
|
|
52
|
+
borderColor: isDisabledOrLocked ? _sharedUi.buoyColors.textMuted + "33" : config.borderColor,
|
|
53
|
+
opacity: disabled ? 0.5 : 1
|
|
54
|
+
}],
|
|
55
|
+
activeOpacity: 0.7,
|
|
56
|
+
accessibilityRole: "button",
|
|
57
|
+
accessibilityLabel: text,
|
|
58
|
+
accessibilityState: {
|
|
59
|
+
disabled: isDisabledOrLocked
|
|
60
|
+
},
|
|
61
|
+
children: [locked ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Lock, {
|
|
62
|
+
size: 10,
|
|
63
|
+
color: _sharedUi.buoyColors.textMuted,
|
|
64
|
+
style: styles.lockIcon
|
|
65
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
66
|
+
style: [styles.dot, {
|
|
67
|
+
backgroundColor: isDisabledOrLocked ? _sharedUi.buoyColors.textMuted : config.color
|
|
68
|
+
}]
|
|
69
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
70
|
+
style: [styles.text, {
|
|
71
|
+
color: isDisabledOrLocked ? _sharedUi.buoyColors.textMuted : config.textColor
|
|
72
|
+
}],
|
|
73
|
+
children: text
|
|
74
|
+
})]
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const styles = _reactNative.StyleSheet.create({
|
|
78
|
+
button: {
|
|
79
|
+
flexDirection: "row",
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
justifyContent: "center",
|
|
82
|
+
borderRadius: 6,
|
|
83
|
+
borderWidth: 1,
|
|
84
|
+
paddingHorizontal: 12,
|
|
85
|
+
paddingVertical: 6,
|
|
86
|
+
height: 25,
|
|
87
|
+
minWidth: 70,
|
|
88
|
+
shadowOffset: {
|
|
89
|
+
width: 0,
|
|
90
|
+
height: 1
|
|
91
|
+
},
|
|
92
|
+
shadowOpacity: 0.2,
|
|
93
|
+
shadowRadius: 2,
|
|
94
|
+
elevation: 2
|
|
95
|
+
},
|
|
96
|
+
dot: {
|
|
97
|
+
width: 5,
|
|
98
|
+
height: 5,
|
|
99
|
+
borderRadius: 3,
|
|
100
|
+
marginRight: 6,
|
|
101
|
+
shadowColor: _sharedUi.buoyColors.text,
|
|
102
|
+
shadowOffset: {
|
|
103
|
+
width: 0,
|
|
104
|
+
height: 0
|
|
105
|
+
},
|
|
106
|
+
shadowOpacity: 0.6,
|
|
107
|
+
shadowRadius: 2
|
|
108
|
+
},
|
|
109
|
+
lockIcon: {
|
|
110
|
+
marginRight: 4
|
|
111
|
+
},
|
|
112
|
+
text: {
|
|
113
|
+
fontSize: 10,
|
|
114
|
+
fontWeight: "600",
|
|
115
|
+
letterSpacing: 0.5,
|
|
116
|
+
textTransform: "uppercase",
|
|
117
|
+
fontFamily: "monospace",
|
|
118
|
+
height: 12
|
|
119
|
+
}
|
|
120
|
+
});
|