@buoy-gg/shared-ui 7.0.7 → 7.0.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.
Files changed (101) hide show
  1. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  2. package/lib/module/hooks/safe-area-impl.js +1 -1
  3. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  4. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  5. package/package.json +4 -4
  6. package/lib/commonjs/license/DeviceLimitModal.js +0 -480
  7. package/lib/commonjs/license/ManageDevicesModal.js +0 -546
  8. package/lib/commonjs/types/index.js +0 -16
  9. package/lib/commonjs/ui/components/Divider.js +0 -18
  10. package/lib/commonjs/ui/components/ErrorBoundary.js +0 -113
  11. package/lib/commonjs/ui/components/ExpandableSection.js +0 -72
  12. package/lib/commonjs/ui/components/ExpandableSectionHeader.js +0 -87
  13. package/lib/commonjs/ui/components/ExpandableSectionWithModal.js +0 -183
  14. package/lib/commonjs/ui/components/FilterViewPattern.js +0 -175
  15. package/lib/commonjs/ui/components/TypeBadge.js +0 -100
  16. package/lib/commonjs/ui/components/types.js +0 -5
  17. package/lib/commonjs/ui/console/BubbleSettingsModal.js +0 -50
  18. package/lib/commonjs/ui/console/ConsoleSection.js +0 -50
  19. package/lib/commonjs/ui/console/CyberpunkConsoleSection.js +0 -650
  20. package/lib/commonjs/ui/console/GalaxyButton.js +0 -100
  21. package/lib/commonjs/ui/console/index.js +0 -12
  22. package/lib/module/license/DeviceLimitModal.js +0 -474
  23. package/lib/module/license/ManageDevicesModal.js +0 -540
  24. package/lib/module/types/index.js +0 -3
  25. package/lib/module/ui/components/Divider.js +0 -14
  26. package/lib/module/ui/components/ErrorBoundary.js +0 -108
  27. package/lib/module/ui/components/ExpandableSection.js +0 -68
  28. package/lib/module/ui/components/ExpandableSectionHeader.js +0 -83
  29. package/lib/module/ui/components/ExpandableSectionWithModal.js +0 -179
  30. package/lib/module/ui/components/FilterViewPattern.js +0 -172
  31. package/lib/module/ui/components/TypeBadge.js +0 -96
  32. package/lib/module/ui/components/types.js +0 -3
  33. package/lib/module/ui/console/BubbleSettingsModal.js +0 -46
  34. package/lib/module/ui/console/ConsoleSection.js +0 -46
  35. package/lib/module/ui/console/CyberpunkConsoleSection.js +0 -647
  36. package/lib/module/ui/console/GalaxyButton.js +0 -96
  37. package/lib/module/ui/console/index.js +0 -5
  38. package/lib/typescript/commonjs/license/DeviceLimitModal.d.ts +0 -23
  39. package/lib/typescript/commonjs/license/DeviceLimitModal.d.ts.map +0 -1
  40. package/lib/typescript/commonjs/license/ManageDevicesModal.d.ts +0 -23
  41. package/lib/typescript/commonjs/license/ManageDevicesModal.d.ts.map +0 -1
  42. package/lib/typescript/commonjs/types/index.d.ts +0 -2
  43. package/lib/typescript/commonjs/types/index.d.ts.map +0 -1
  44. package/lib/typescript/commonjs/ui/components/Divider.d.ts +0 -2
  45. package/lib/typescript/commonjs/ui/components/Divider.d.ts.map +0 -1
  46. package/lib/typescript/commonjs/ui/components/ErrorBoundary.d.ts +0 -18
  47. package/lib/typescript/commonjs/ui/components/ErrorBoundary.d.ts.map +0 -1
  48. package/lib/typescript/commonjs/ui/components/ExpandableSection.d.ts +0 -15
  49. package/lib/typescript/commonjs/ui/components/ExpandableSection.d.ts.map +0 -1
  50. package/lib/typescript/commonjs/ui/components/ExpandableSectionHeader.d.ts +0 -13
  51. package/lib/typescript/commonjs/ui/components/ExpandableSectionHeader.d.ts.map +0 -1
  52. package/lib/typescript/commonjs/ui/components/ExpandableSectionWithModal.d.ts +0 -18
  53. package/lib/typescript/commonjs/ui/components/ExpandableSectionWithModal.d.ts.map +0 -1
  54. package/lib/typescript/commonjs/ui/components/FilterViewPattern.d.ts +0 -15
  55. package/lib/typescript/commonjs/ui/components/FilterViewPattern.d.ts.map +0 -1
  56. package/lib/typescript/commonjs/ui/components/TypeBadge.d.ts +0 -6
  57. package/lib/typescript/commonjs/ui/components/TypeBadge.d.ts.map +0 -1
  58. package/lib/typescript/commonjs/ui/components/types.d.ts +0 -3
  59. package/lib/typescript/commonjs/ui/components/types.d.ts.map +0 -1
  60. package/lib/typescript/commonjs/ui/console/BubbleSettingsModal.d.ts +0 -11
  61. package/lib/typescript/commonjs/ui/console/BubbleSettingsModal.d.ts.map +0 -1
  62. package/lib/typescript/commonjs/ui/console/ConsoleSection.d.ts +0 -19
  63. package/lib/typescript/commonjs/ui/console/ConsoleSection.d.ts.map +0 -1
  64. package/lib/typescript/commonjs/ui/console/CyberpunkConsoleSection.d.ts +0 -17
  65. package/lib/typescript/commonjs/ui/console/CyberpunkConsoleSection.d.ts.map +0 -1
  66. package/lib/typescript/commonjs/ui/console/GalaxyButton.d.ts +0 -10
  67. package/lib/typescript/commonjs/ui/console/GalaxyButton.d.ts.map +0 -1
  68. package/lib/typescript/commonjs/ui/console/index.d.ts +0 -2
  69. package/lib/typescript/commonjs/ui/console/index.d.ts.map +0 -1
  70. package/lib/typescript/module/license/DeviceLimitModal.d.ts +0 -23
  71. package/lib/typescript/module/license/DeviceLimitModal.d.ts.map +0 -1
  72. package/lib/typescript/module/license/ManageDevicesModal.d.ts +0 -23
  73. package/lib/typescript/module/license/ManageDevicesModal.d.ts.map +0 -1
  74. package/lib/typescript/module/types/index.d.ts +0 -2
  75. package/lib/typescript/module/types/index.d.ts.map +0 -1
  76. package/lib/typescript/module/ui/components/Divider.d.ts +0 -2
  77. package/lib/typescript/module/ui/components/Divider.d.ts.map +0 -1
  78. package/lib/typescript/module/ui/components/ErrorBoundary.d.ts +0 -18
  79. package/lib/typescript/module/ui/components/ErrorBoundary.d.ts.map +0 -1
  80. package/lib/typescript/module/ui/components/ExpandableSection.d.ts +0 -15
  81. package/lib/typescript/module/ui/components/ExpandableSection.d.ts.map +0 -1
  82. package/lib/typescript/module/ui/components/ExpandableSectionHeader.d.ts +0 -13
  83. package/lib/typescript/module/ui/components/ExpandableSectionHeader.d.ts.map +0 -1
  84. package/lib/typescript/module/ui/components/ExpandableSectionWithModal.d.ts +0 -18
  85. package/lib/typescript/module/ui/components/ExpandableSectionWithModal.d.ts.map +0 -1
  86. package/lib/typescript/module/ui/components/FilterViewPattern.d.ts +0 -15
  87. package/lib/typescript/module/ui/components/FilterViewPattern.d.ts.map +0 -1
  88. package/lib/typescript/module/ui/components/TypeBadge.d.ts +0 -6
  89. package/lib/typescript/module/ui/components/TypeBadge.d.ts.map +0 -1
  90. package/lib/typescript/module/ui/components/types.d.ts +0 -3
  91. package/lib/typescript/module/ui/components/types.d.ts.map +0 -1
  92. package/lib/typescript/module/ui/console/BubbleSettingsModal.d.ts +0 -11
  93. package/lib/typescript/module/ui/console/BubbleSettingsModal.d.ts.map +0 -1
  94. package/lib/typescript/module/ui/console/ConsoleSection.d.ts +0 -19
  95. package/lib/typescript/module/ui/console/ConsoleSection.d.ts.map +0 -1
  96. package/lib/typescript/module/ui/console/CyberpunkConsoleSection.d.ts +0 -17
  97. package/lib/typescript/module/ui/console/CyberpunkConsoleSection.d.ts.map +0 -1
  98. package/lib/typescript/module/ui/console/GalaxyButton.d.ts +0 -10
  99. package/lib/typescript/module/ui/console/GalaxyButton.d.ts.map +0 -1
  100. package/lib/typescript/module/ui/console/index.d.ts +0 -2
  101. package/lib/typescript/module/ui/console/index.d.ts.map +0 -1
@@ -7,7 +7,7 @@ exports.useNativeSafeAreaInsets = exports.safeAreaType = exports.hasSafeAreaPack
7
7
  /**
8
8
  * Auto-generated safe area implementation
9
9
  * Detected: none
10
- * Generated at: 2026-07-29T14:20:09.071Z
10
+ * Generated at: 2026-08-01T22:58:20.807Z
11
11
  *
12
12
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
13
13
  *
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Auto-generated safe area implementation
5
5
  * Detected: none
6
- * Generated at: 2026-07-29T14:20:09.071Z
6
+ * Generated at: 2026-08-01T22:58:20.807Z
7
7
  *
8
8
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
9
9
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated safe area implementation
3
3
  * Detected: none
4
- * Generated at: 2026-07-29T14:20:09.071Z
4
+ * Generated at: 2026-08-01T22:58:20.807Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Auto-generated safe area implementation
3
3
  * Detected: none
4
- * Generated at: 2026-07-29T14:20:09.071Z
4
+ * Generated at: 2026-08-01T22:58:20.807Z
5
5
  *
6
6
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
7
7
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/shared-ui",
3
- "version": "7.0.7",
3
+ "version": "7.0.8",
4
4
  "description": "Shared UI components, hooks, and utilities",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -136,10 +136,10 @@
136
136
  ],
137
137
  "sideEffects": false,
138
138
  "dependencies": {
139
- "@buoy-gg/floating-tools-core": "7.0.7"
139
+ "@buoy-gg/floating-tools-core": "7.0.8"
140
140
  },
141
141
  "peerDependencies": {
142
- "@buoy-gg/license": "7.0.7",
142
+ "@buoy-gg/license": "7.0.8",
143
143
  "@react-native-clipboard/clipboard": "*",
144
144
  "expo-clipboard": "*",
145
145
  "expo-file-system": "*",
@@ -167,7 +167,7 @@
167
167
  "expo-clipboard": "~7.1.5",
168
168
  "react-native-safe-area-context": "^5.6.2",
169
169
  "typescript": "~5.8.3",
170
- "@buoy-gg/license": "7.0.7"
170
+ "@buoy-gg/license": "7.0.8"
171
171
  },
172
172
  "react-native-builder-bob": {
173
173
  "source": "src",
@@ -1,480 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DeviceLimitModal = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _absoluteFill = require("../utils/absoluteFill.js");
10
- var _macOSDesignSystemColors = require("../ui/gameUI/constants/macOSDesignSystemColors.js");
11
- var _lucideIcons = require("../icons/lucide-icons.js");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- /**
15
- * DeviceLimitModal - Shown when device limit is exceeded
16
- *
17
- * Displays registered devices and allows removing one to free up a slot.
18
- */
19
-
20
- // Lazy load LicenseManager
21
- let _LicenseManager = null;
22
- function getLicenseManager() {
23
- if (!_LicenseManager) {
24
- try {
25
- const mod = require("@buoy-gg/license");
26
- _LicenseManager = mod.LicenseManager;
27
- } catch {
28
- // Not available
29
- }
30
- }
31
- return _LicenseManager;
32
- }
33
- const DeviceLimitModal = ({
34
- visible,
35
- onClose,
36
- onRetry,
37
- maxDevices
38
- }) => {
39
- const [devices, setDevices] = (0, _react.useState)([]);
40
- const [isLoading, setIsLoading] = (0, _react.useState)(true);
41
- const [isRemoving, setIsRemoving] = (0, _react.useState)(null);
42
- const [error, setError] = (0, _react.useState)(null);
43
-
44
- // Only allow device removal on web (admin dashboard)
45
- const canRemoveDevices = _reactNative.Platform.OS === "web";
46
- const fetchDevices = (0, _react.useCallback)(async () => {
47
- setIsLoading(true);
48
- setError(null);
49
- try {
50
- const LicenseManager = getLicenseManager();
51
- if (LicenseManager?.getRegisteredDevices) {
52
- const registeredDevices = await LicenseManager.getRegisteredDevices();
53
- setDevices(registeredDevices);
54
- }
55
- } catch (err) {
56
- setError("Failed to load devices");
57
- console.warn("[DeviceLimitModal] Failed to fetch devices:", err);
58
- } finally {
59
- setIsLoading(false);
60
- }
61
- }, []);
62
- (0, _react.useEffect)(() => {
63
- if (visible) {
64
- fetchDevices();
65
- }
66
- }, [visible, fetchDevices]);
67
- const handleRemoveDevice = (0, _react.useCallback)(async device => {
68
- const confirmRemove = () => {
69
- return new Promise(resolve => {
70
- if (_reactNative.Platform.OS === "web") {
71
- // Use globalThis for cross-platform window access
72
- const win = globalThis;
73
- resolve(win.confirm?.(`Remove "${device.name}" from your license?`) ?? true);
74
- } else {
75
- _reactNative.Alert.alert("Remove Device", `Remove "${device.name}" from your license? You can re-register it later.`, [{
76
- text: "Cancel",
77
- style: "cancel",
78
- onPress: () => resolve(false)
79
- }, {
80
- text: "Remove",
81
- style: "destructive",
82
- onPress: () => resolve(true)
83
- }]);
84
- }
85
- });
86
- };
87
- const confirmed = await confirmRemove();
88
- if (!confirmed) return;
89
- setIsRemoving(device.id);
90
- try {
91
- const LicenseManager = getLicenseManager();
92
- if (LicenseManager?.deactivateDevice) {
93
- const success = await LicenseManager.deactivateDevice(device.id);
94
- if (success) {
95
- // Refresh the list
96
- await fetchDevices();
97
- // If we now have room, let user know they can retry
98
- if (devices.length <= maxDevices) {
99
- setError(null);
100
- }
101
- } else {
102
- setError("Failed to remove device");
103
- }
104
- }
105
- } catch (err) {
106
- setError("Failed to remove device");
107
- console.warn("[DeviceLimitModal] Failed to remove device:", err);
108
- } finally {
109
- setIsRemoving(null);
110
- }
111
- }, [fetchDevices, devices.length, maxDevices]);
112
- const formatDate = date => {
113
- const now = new Date();
114
- const diffMs = now.getTime() - date.getTime();
115
- const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
116
- if (diffDays === 0) return "Today";
117
- if (diffDays === 1) return "Yesterday";
118
- if (diffDays < 7) return `${diffDays} days ago`;
119
- if (diffDays < 30) return `${Math.floor(diffDays / 7)} weeks ago`;
120
- return `${Math.floor(diffDays / 30)} months ago`;
121
- };
122
- const canRetry = devices.length < maxDevices;
123
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
124
- visible: visible,
125
- transparent: true,
126
- animationType: "fade",
127
- onRequestClose: onClose,
128
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
129
- style: styles.overlay,
130
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
131
- style: styles.backdrop,
132
- activeOpacity: 1,
133
- onPress: onClose
134
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
135
- style: styles.modal,
136
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
137
- style: styles.closeButton,
138
- onPress: onClose,
139
- activeOpacity: 0.7,
140
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.X, {
141
- size: 18,
142
- color: _macOSDesignSystemColors.macOSColors.text.muted
143
- })
144
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
145
- style: styles.header,
146
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
147
- style: styles.iconContainer,
148
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.AlertTriangle, {
149
- size: 20,
150
- color: _macOSDesignSystemColors.macOSColors.semantic.warning
151
- })
152
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
153
- style: styles.title,
154
- children: "Device Limit Reached"
155
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
156
- style: styles.subtitle,
157
- children: ["Your license allows ", maxDevices, " device", maxDevices !== 1 ? "s" : "", ". Remove one to continue."]
158
- })]
159
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
160
- style: styles.countBadge,
161
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
162
- style: styles.countText,
163
- children: [devices.length, " / ", maxDevices, " devices registered"]
164
- })
165
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
166
- style: styles.devicesContainer,
167
- children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
168
- style: styles.loadingContainer,
169
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
170
- size: "small",
171
- color: _macOSDesignSystemColors.macOSColors.text.muted
172
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
173
- style: styles.loadingText,
174
- children: "Loading devices..."
175
- })]
176
- }) : error && devices.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
177
- style: styles.errorContainer,
178
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
179
- style: styles.errorText,
180
- children: error
181
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
182
- style: styles.retryButton,
183
- onPress: fetchDevices,
184
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.RefreshCw, {
185
- size: 14,
186
- color: _macOSDesignSystemColors.macOSColors.text.secondary
187
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
188
- style: styles.retryButtonText,
189
- children: "Retry"
190
- })]
191
- })]
192
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
193
- style: styles.devicesList,
194
- showsVerticalScrollIndicator: false,
195
- children: devices.map(device => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
196
- style: styles.deviceItem,
197
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
198
- style: styles.deviceIcon,
199
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.Smartphone, {
200
- size: 16,
201
- color: _macOSDesignSystemColors.macOSColors.text.secondary
202
- })
203
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
204
- style: styles.deviceInfo,
205
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
206
- style: styles.deviceName,
207
- numberOfLines: 1,
208
- children: [device.name, device.isCurrentDevice && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
209
- style: styles.currentBadge,
210
- children: " (this device)"
211
- })]
212
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
213
- style: styles.deviceMeta,
214
- children: [device.platform, " \u2022 Last seen ", formatDate(device.lastSeenAt)]
215
- })]
216
- }), canRemoveDevices && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
217
- style: [styles.removeButton, isRemoving === device.id && styles.removeButtonDisabled],
218
- onPress: () => handleRemoveDevice(device),
219
- disabled: isRemoving !== null,
220
- activeOpacity: 0.7,
221
- children: isRemoving === device.id ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
222
- size: "small",
223
- color: _macOSDesignSystemColors.macOSColors.semantic.error
224
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideIcons.Trash2, {
225
- size: 14,
226
- color: _macOSDesignSystemColors.macOSColors.semantic.error
227
- })
228
- })]
229
- }, device.id))
230
- })
231
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
232
- style: styles.actions,
233
- children: canRemoveDevices ?
234
- // Web: Show retry button or hint to remove
235
- canRetry ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
236
- style: styles.primaryButton,
237
- onPress: onRetry,
238
- activeOpacity: 0.8,
239
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
240
- style: styles.primaryButtonText,
241
- children: "Try Again"
242
- })
243
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
244
- style: styles.hintText,
245
- children: "Remove a device above to free up a slot"
246
- }) :
247
- /*#__PURE__*/
248
- // Mobile: Show instructions to use web dashboard
249
- (0, _jsxRuntime.jsxs)(_reactNative.View, {
250
- style: styles.mobileInstructions,
251
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
252
- style: styles.mobileInstructionsText,
253
- children: "To remove a device, visit your account dashboard at"
254
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
255
- onPress: () => _reactNative.Linking.openURL("https://buoy.gg/account"),
256
- activeOpacity: 0.7,
257
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
258
- style: styles.mobileInstructionsLink,
259
- children: "buoy.gg/account"
260
- })
261
- })]
262
- })
263
- })]
264
- })]
265
- })
266
- });
267
- };
268
- exports.DeviceLimitModal = DeviceLimitModal;
269
- const styles = _reactNative.StyleSheet.create({
270
- overlay: {
271
- flex: 1,
272
- justifyContent: "center",
273
- alignItems: "center"
274
- },
275
- backdrop: {
276
- ..._absoluteFill.absoluteFill,
277
- backgroundColor: "rgba(0, 0, 0, 0.8)"
278
- },
279
- modal: {
280
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.card,
281
- borderRadius: 12,
282
- padding: 24,
283
- width: "90%",
284
- maxWidth: 400,
285
- maxHeight: "80%",
286
- borderWidth: 1,
287
- borderColor: _macOSDesignSystemColors.macOSColors.semantic.warning + "50",
288
- shadowColor: _macOSDesignSystemColors.macOSColors.semantic.warning,
289
- shadowOffset: {
290
- width: 0,
291
- height: 0
292
- },
293
- shadowOpacity: 0.5,
294
- shadowRadius: 24,
295
- elevation: 24
296
- },
297
- closeButton: {
298
- position: "absolute",
299
- top: 12,
300
- right: 12,
301
- width: 28,
302
- height: 28,
303
- borderRadius: 6,
304
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.hover,
305
- alignItems: "center",
306
- justifyContent: "center",
307
- zIndex: 1
308
- },
309
- header: {
310
- alignItems: "center",
311
- marginBottom: 16,
312
- paddingTop: 8
313
- },
314
- iconContainer: {
315
- width: 48,
316
- height: 48,
317
- borderRadius: 12,
318
- backgroundColor: _macOSDesignSystemColors.macOSColors.semantic.warning + "15",
319
- borderWidth: 1,
320
- borderColor: _macOSDesignSystemColors.macOSColors.semantic.warning + "30",
321
- alignItems: "center",
322
- justifyContent: "center",
323
- marginBottom: 16
324
- },
325
- title: {
326
- fontSize: 18,
327
- fontWeight: "600",
328
- color: _macOSDesignSystemColors.macOSColors.text.primary,
329
- marginBottom: 6
330
- },
331
- subtitle: {
332
- fontSize: 13,
333
- color: _macOSDesignSystemColors.macOSColors.text.secondary,
334
- textAlign: "center",
335
- lineHeight: 18
336
- },
337
- countBadge: {
338
- alignSelf: "center",
339
- backgroundColor: _macOSDesignSystemColors.macOSColors.semantic.warning + "20",
340
- paddingHorizontal: 12,
341
- paddingVertical: 6,
342
- borderRadius: 12,
343
- marginBottom: 16
344
- },
345
- countText: {
346
- fontSize: 12,
347
- fontWeight: "600",
348
- color: _macOSDesignSystemColors.macOSColors.semantic.warning
349
- },
350
- devicesContainer: {
351
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.hover,
352
- borderRadius: 8,
353
- borderWidth: 1,
354
- borderColor: _macOSDesignSystemColors.macOSColors.border.default,
355
- minHeight: 120,
356
- maxHeight: 200
357
- },
358
- loadingContainer: {
359
- flex: 1,
360
- alignItems: "center",
361
- justifyContent: "center",
362
- padding: 24,
363
- gap: 8
364
- },
365
- loadingText: {
366
- fontSize: 12,
367
- color: _macOSDesignSystemColors.macOSColors.text.muted
368
- },
369
- errorContainer: {
370
- flex: 1,
371
- alignItems: "center",
372
- justifyContent: "center",
373
- padding: 24,
374
- gap: 12
375
- },
376
- errorText: {
377
- fontSize: 12,
378
- color: _macOSDesignSystemColors.macOSColors.semantic.error
379
- },
380
- retryButton: {
381
- flexDirection: "row",
382
- alignItems: "center",
383
- gap: 6,
384
- paddingVertical: 8,
385
- paddingHorizontal: 12,
386
- borderRadius: 6,
387
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.input
388
- },
389
- retryButtonText: {
390
- fontSize: 12,
391
- color: _macOSDesignSystemColors.macOSColors.text.secondary
392
- },
393
- devicesList: {
394
- padding: 8
395
- },
396
- deviceItem: {
397
- flexDirection: "row",
398
- alignItems: "center",
399
- padding: 10,
400
- borderRadius: 6,
401
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.input,
402
- marginBottom: 6
403
- },
404
- deviceIcon: {
405
- width: 32,
406
- height: 32,
407
- borderRadius: 8,
408
- backgroundColor: _macOSDesignSystemColors.macOSColors.background.hover,
409
- alignItems: "center",
410
- justifyContent: "center",
411
- marginRight: 10
412
- },
413
- deviceInfo: {
414
- flex: 1,
415
- marginRight: 8
416
- },
417
- deviceName: {
418
- fontSize: 13,
419
- fontWeight: "500",
420
- color: _macOSDesignSystemColors.macOSColors.text.primary
421
- },
422
- currentBadge: {
423
- fontSize: 11,
424
- fontWeight: "400",
425
- color: _macOSDesignSystemColors.macOSColors.semantic.info
426
- },
427
- deviceMeta: {
428
- fontSize: 11,
429
- color: _macOSDesignSystemColors.macOSColors.text.muted,
430
- marginTop: 2
431
- },
432
- removeButton: {
433
- width: 32,
434
- height: 32,
435
- borderRadius: 6,
436
- backgroundColor: _macOSDesignSystemColors.macOSColors.semantic.error + "15",
437
- alignItems: "center",
438
- justifyContent: "center"
439
- },
440
- removeButtonDisabled: {
441
- opacity: 0.5
442
- },
443
- actions: {
444
- marginTop: 16,
445
- alignItems: "center"
446
- },
447
- primaryButton: {
448
- width: "100%",
449
- backgroundColor: _macOSDesignSystemColors.macOSColors.semantic.info,
450
- borderRadius: 8,
451
- paddingVertical: 12,
452
- alignItems: "center"
453
- },
454
- primaryButtonText: {
455
- fontSize: 14,
456
- fontWeight: "600",
457
- color: "#000"
458
- },
459
- hintText: {
460
- fontSize: 12,
461
- color: _macOSDesignSystemColors.macOSColors.text.muted,
462
- fontStyle: "italic"
463
- },
464
- mobileInstructions: {
465
- alignItems: "center",
466
- paddingVertical: 8
467
- },
468
- mobileInstructionsText: {
469
- fontSize: 12,
470
- color: _macOSDesignSystemColors.macOSColors.text.secondary,
471
- textAlign: "center",
472
- lineHeight: 18
473
- },
474
- mobileInstructionsLink: {
475
- fontSize: 13,
476
- fontWeight: "600",
477
- color: _macOSDesignSystemColors.macOSColors.semantic.info,
478
- marginTop: 4
479
- }
480
- });