@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
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- import { useState } from "react";
4
- import { StyleSheet, View, Animated } from "react-native";
5
- import { ExpandableSectionHeader } from "./ExpandableSectionHeader.js";
6
- import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
7
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- export function ExpandableSection({
9
- icon,
10
- iconColor,
11
- iconBackgroundColor,
12
- title,
13
- subtitle,
14
- children,
15
- defaultExpanded = false,
16
- onPress
17
- }) {
18
- const [isExpanded, setIsExpanded] = useState(defaultExpanded);
19
- const handlePress = () => {
20
- if (onPress) {
21
- onPress();
22
- } else {
23
- setIsExpanded(!isExpanded);
24
- }
25
- };
26
- return /*#__PURE__*/_jsx(View, {
27
- style: styles.container,
28
- children: /*#__PURE__*/_jsxs(View, {
29
- style: styles.content,
30
- children: [/*#__PURE__*/_jsx(ExpandableSectionHeader, {
31
- icon: icon,
32
- iconColor: iconColor,
33
- iconBackgroundColor: iconBackgroundColor,
34
- title: title,
35
- subtitle: subtitle,
36
- isExpanded: isExpanded,
37
- onPress: handlePress
38
- }), /*#__PURE__*/_jsx(View, {
39
- style: styles.divider
40
- }), isExpanded && /*#__PURE__*/_jsx(Animated.View, {
41
- style: {
42
- opacity: 1
43
- },
44
- children: children
45
- })]
46
- })
47
- });
48
- }
49
- const styles = StyleSheet.create({
50
- container: {
51
- backgroundColor: macOSColors.background.card,
52
- borderRadius: 12,
53
- borderWidth: 1,
54
- borderColor: "rgba(128, 128, 128, 0.16)",
55
- overflow: "hidden",
56
- marginHorizontal: 8,
57
- marginBottom: 16
58
- },
59
- content: {
60
- padding: 24
61
- },
62
- divider: {
63
- height: 1,
64
- width: "100%",
65
- backgroundColor: "rgba(128, 128, 128, 0.12)",
66
- marginBottom: 24
67
- }
68
- });
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
4
- import { ChevronDown, ChevronRight } from "../../icons/index.js";
5
- import { buoyColors } from "../gameUI/constants/gameUIColors.js";
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- export function ExpandableSectionHeader({
8
- icon: Icon,
9
- iconColor,
10
- iconBackgroundColor,
11
- title,
12
- subtitle,
13
- isExpanded,
14
- onPress
15
- }) {
16
- return /*#__PURE__*/_jsx(TouchableOpacity, {
17
- "sentry-label": "ignore expand section button",
18
- accessibilityRole: "button",
19
- onPress: onPress,
20
- style: styles.button,
21
- children: /*#__PURE__*/_jsxs(View, {
22
- style: styles.container,
23
- children: [/*#__PURE__*/_jsx(View, {
24
- style: [styles.iconContainer, {
25
- backgroundColor: iconBackgroundColor.replace(")", ", 0.7)").replace("rgb(", "rgba(")
26
- }],
27
- children: /*#__PURE__*/_jsx(Icon, {
28
- size: 20,
29
- color: iconColor
30
- })
31
- }), /*#__PURE__*/_jsxs(View, {
32
- style: styles.textContainer,
33
- children: [/*#__PURE__*/_jsx(Text, {
34
- style: styles.title,
35
- children: title
36
- }), /*#__PURE__*/_jsx(Text, {
37
- style: styles.subtitle,
38
- numberOfLines: 2,
39
- children: subtitle
40
- })]
41
- }), /*#__PURE__*/_jsx(View, {
42
- style: styles.chevronContainer,
43
- children: isExpanded ? /*#__PURE__*/_jsx(ChevronDown, {
44
- size: 18,
45
- color: "#4B5563"
46
- }) : /*#__PURE__*/_jsx(ChevronRight, {
47
- size: 18,
48
- color: "#4B5563"
49
- })
50
- })]
51
- })
52
- });
53
- }
54
- const styles = StyleSheet.create({
55
- button: {
56
- marginBottom: 16
57
- },
58
- container: {
59
- flexDirection: "row",
60
- alignItems: "flex-start"
61
- },
62
- iconContainer: {
63
- padding: 12,
64
- borderRadius: 12
65
- },
66
- textContainer: {
67
- flex: 1,
68
- marginHorizontal: 16
69
- },
70
- title: {
71
- fontSize: 18,
72
- fontWeight: "500",
73
- color: "white",
74
- marginBottom: 4
75
- },
76
- subtitle: {
77
- fontSize: 16,
78
- color: buoyColors.textSecondary
79
- },
80
- chevronContainer: {
81
- paddingTop: 6
82
- }
83
- });
@@ -1,179 +0,0 @@
1
- "use strict";
2
-
3
- import { useState } from "react";
4
- import { Dimensions, Modal, ScrollView, StyleSheet, TouchableOpacity, View } from "react-native";
5
- import { absoluteFill } from "../../utils/absoluteFill.js";
6
- import { useSafeAreaInsets } from "../../hooks/useSafeAreaInsets.js";
7
- import { X } from "../../icons/index.js";
8
- import { ExpandableSection } from "./ExpandableSection.js";
9
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- const {
11
- height: screenHeight
12
- } = Dimensions.get("window");
13
- export function ExpandableSectionWithModal({
14
- icon,
15
- iconColor,
16
- iconBackgroundColor,
17
- title,
18
- subtitle,
19
- children,
20
- modalBackgroundColor = "#0F0F0F",
21
- showModalHeader = true,
22
- fullScreen = false,
23
- onModalOpen,
24
- onModalClose
25
- }) {
26
- const [isModalOpen, setIsModalOpen] = useState(false);
27
- const insets = useSafeAreaInsets({
28
- minBottom: 16
29
- });
30
- const openModal = () => {
31
- setIsModalOpen(true);
32
- onModalOpen?.();
33
- };
34
- const closeModal = () => {
35
- setIsModalOpen(false);
36
- onModalClose?.();
37
- };
38
- return /*#__PURE__*/_jsxs(_Fragment, {
39
- children: [/*#__PURE__*/_jsx(ExpandableSection, {
40
- icon: icon,
41
- iconColor: iconColor,
42
- iconBackgroundColor: iconBackgroundColor,
43
- title: title,
44
- subtitle: subtitle,
45
- onPress: openModal,
46
- children: /*#__PURE__*/_jsx(_Fragment, {})
47
- }), /*#__PURE__*/_jsx(Modal, {
48
- accessibilityLabel: "Expandable section modal",
49
- accessibilityHint: "View expandable section modal",
50
- "sentry-label": "ignore expandable section modal",
51
- visible: isModalOpen,
52
- transparent: true,
53
- animationType: "slide",
54
- onRequestClose: closeModal,
55
- children: /*#__PURE__*/_jsxs(View, {
56
- style: styles.container,
57
- children: [/*#__PURE__*/_jsx(View, {
58
- style: styles.backdrop,
59
- children: /*#__PURE__*/_jsx(TouchableOpacity, {
60
- accessibilityLabel: "Modal backdrop close",
61
- accessibilityHint: "View modal backdrop close",
62
- "sentry-label": "ignore modal backdrop close",
63
- accessibilityRole: "button",
64
- style: styles.backdropTouchable,
65
- onPress: closeModal,
66
- activeOpacity: 1
67
- })
68
- }), /*#__PURE__*/_jsx(View, {
69
- style: fullScreen ? styles.fullScreenModalContainer : styles.modalContainer,
70
- children: /*#__PURE__*/_jsxs(View, {
71
- style: [fullScreen ? styles.fullScreenModal : styles.modal, {
72
- backgroundColor: modalBackgroundColor,
73
- paddingTop: fullScreen ? insets.top : showModalHeader ? insets.top : 0
74
- }],
75
- children: [showModalHeader && /*#__PURE__*/_jsx(View, {
76
- style: styles.headerContainer,
77
- children: /*#__PURE__*/_jsx(TouchableOpacity, {
78
- accessibilityLabel: "Modal close button",
79
- accessibilityHint: "View modal close button",
80
- "sentry-label": "ignore modal close button",
81
- accessibilityRole: "button",
82
- onPress: closeModal,
83
- style: styles.closeButton,
84
- children: /*#__PURE__*/_jsx(X, {
85
- size: 20,
86
- color: "#9CA3AF"
87
- })
88
- })
89
- }), showModalHeader ? /*#__PURE__*/_jsxs(ScrollView, {
90
- accessibilityLabel: "Modal content scroll",
91
- accessibilityHint: "View modal content scroll",
92
- "sentry-label": "ignore modal content scroll",
93
- style: styles.scrollView,
94
- contentContainerStyle: styles.contentContainer,
95
- showsVerticalScrollIndicator: false,
96
- nestedScrollEnabled: true,
97
- scrollEventThrottle: 16,
98
- children: [/*#__PURE__*/_jsx(View, {
99
- style: styles.content,
100
- children: typeof children === "function" ? children(closeModal) : children
101
- }), /*#__PURE__*/_jsx(View, {
102
- style: {
103
- paddingBottom: insets.bottom + 20
104
- }
105
- })]
106
- }) :
107
- /*#__PURE__*/
108
- /* Direct content without ScrollView wrapper when no header - allows internal gesture handling */
109
- _jsx(View, {
110
- style: styles.directContent,
111
- pointerEvents: "box-none",
112
- children: typeof children === "function" ? children(closeModal) : children
113
- })]
114
- })
115
- })]
116
- })
117
- })]
118
- });
119
- }
120
- const styles = StyleSheet.create({
121
- container: {
122
- flex: 1
123
- },
124
- backdrop: {
125
- ...absoluteFill,
126
- backgroundColor: "rgba(0, 0, 0, 0.8)"
127
- },
128
- backdropTouchable: {
129
- flex: 1
130
- },
131
- modalContainer: {
132
- position: "absolute",
133
- bottom: 0,
134
- left: 0,
135
- right: 0,
136
- maxHeight: screenHeight * 0.9
137
- },
138
- fullScreenModalContainer: {
139
- position: "absolute",
140
- top: 0,
141
- left: 0,
142
- right: 0,
143
- bottom: 0,
144
- height: screenHeight
145
- },
146
- modal: {
147
- borderTopLeftRadius: 20,
148
- borderTopRightRadius: 20,
149
- minHeight: 200,
150
- flex: 1
151
- },
152
- fullScreenModal: {
153
- flex: 1,
154
- minHeight: screenHeight
155
- },
156
- headerContainer: {
157
- alignItems: "flex-end",
158
- paddingHorizontal: 20,
159
- paddingTop: 16,
160
- paddingBottom: 8
161
- },
162
- closeButton: {
163
- padding: 8,
164
- borderRadius: 8,
165
- backgroundColor: "rgba(156, 163, 175, 0.1)"
166
- },
167
- scrollView: {
168
- flex: 1
169
- },
170
- contentContainer: {
171
- flexGrow: 1
172
- },
173
- content: {
174
- flex: 1
175
- },
176
- directContent: {
177
- flex: 1
178
- }
179
- });
@@ -1,172 +0,0 @@
1
- "use strict";
2
-
3
- import { View, Text, TouchableOpacity, StyleSheet, ScrollView } from "react-native";
4
- import { Plus } from "../../icons/index.js";
5
- import { gameUIColors } from "../gameUI/constants/gameUIColors.js";
6
- import { buoyColors } from "../gameUI/constants/gameUIColors.js";
7
- import { macOSColors } from "../gameUI/constants/macOSDesignSystemColors.js";
8
- import { useFilterManager } from "../../hooks/useFilterManager.js";
9
- import { FilterSection, AddFilterInput, AddFilterButton, FilterList } from "./FilterComponents.js";
10
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- export function FilterViewPattern({
12
- patterns,
13
- availableItems,
14
- onTogglePattern,
15
- onAddPattern,
16
- icon: Icon,
17
- iconColor = gameUIColors.network,
18
- placeholder = "Enter pattern",
19
- emptyText = "No patterns configured",
20
- suggestionsTitle = "AVAILABLE ITEMS",
21
- type
22
- }) {
23
- const filterManager = useFilterManager(patterns);
24
- const suggestedItems = availableItems.filter(item => !patterns.has(item));
25
- const handleAddPattern = () => {
26
- if (filterManager.newFilter.trim()) {
27
- onAddPattern(filterManager.newFilter.trim());
28
- filterManager.addFilter(filterManager.newFilter);
29
- }
30
- };
31
- return /*#__PURE__*/_jsx(View, {
32
- style: styles.container,
33
- children: /*#__PURE__*/_jsxs(FilterSection, {
34
- style: styles.filterSectionOverrides,
35
- children: [!filterManager.showAddInput ? /*#__PURE__*/_jsx(AddFilterButton, {
36
- onPress: () => filterManager.setShowAddInput(true),
37
- color: iconColor
38
- }) : /*#__PURE__*/_jsx(AddFilterInput, {
39
- value: filterManager.newFilter,
40
- onChange: filterManager.setNewFilter,
41
- onSubmit: handleAddPattern,
42
- onCancel: () => {
43
- filterManager.setShowAddInput(false);
44
- filterManager.setNewFilter("");
45
- },
46
- placeholder: placeholder,
47
- color: gameUIColors.primaryLight
48
- }), suggestedItems.length > 0 ? /*#__PURE__*/_jsxs(View, {
49
- style: [styles.suggestedContainer, !filterManager.showAddInput && {
50
- marginTop: 12
51
- }],
52
- children: [/*#__PURE__*/_jsx(Text, {
53
- style: styles.suggestedTitle,
54
- children: suggestionsTitle
55
- }), /*#__PURE__*/_jsx(ScrollView, {
56
- style: styles.suggestedScroll,
57
- showsVerticalScrollIndicator: true,
58
- nestedScrollEnabled: true,
59
- children: suggestedItems.map(item => /*#__PURE__*/_jsxs(TouchableOpacity, {
60
- onPress: () => {
61
- if (filterManager.showAddInput) {
62
- filterManager.setNewFilter(item);
63
- } else {
64
- onTogglePattern(item);
65
- }
66
- },
67
- style: styles.suggestedItem,
68
- children: [Icon && /*#__PURE__*/_jsx(Icon, {
69
- size: 14,
70
- color: "#9CA3AF"
71
- }), /*#__PURE__*/_jsx(Text, {
72
- style: styles.suggestedText,
73
- numberOfLines: 1,
74
- children: item
75
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
76
- onPress: () => {
77
- if (filterManager.showAddInput) {
78
- filterManager.setNewFilter(item);
79
- } else {
80
- onTogglePattern(item);
81
- }
82
- },
83
- style: styles.addIconButton,
84
- children: /*#__PURE__*/_jsx(Plus, {
85
- size: 16,
86
- color: "#8B5CF6"
87
- })
88
- })]
89
- }, item))
90
- })]
91
- }) : availableItems.length === 0 && /*#__PURE__*/_jsxs(View, {
92
- style: [styles.suggestedContainer, {
93
- marginTop: 12
94
- }],
95
- children: [/*#__PURE__*/_jsxs(Text, {
96
- style: styles.suggestedTitle,
97
- children: ["NO ", type.toUpperCase(), " AVAILABLE"]
98
- }), /*#__PURE__*/_jsxs(Text, {
99
- style: styles.emptyText,
100
- children: ["Make some requests to see ", type, " here"]
101
- })]
102
- }), patterns.size > 0 ? /*#__PURE__*/_jsx(FilterList, {
103
- filters: patterns,
104
- onRemoveFilter: onTogglePattern,
105
- color: iconColor
106
- }) : /*#__PURE__*/_jsx(Text, {
107
- style: styles.emptyText,
108
- children: emptyText
109
- })]
110
- })
111
- });
112
- }
113
- const styles = StyleSheet.create({
114
- container: {
115
- flex: 1
116
- },
117
- filterSectionOverrides: {
118
- paddingHorizontal: 0,
119
- paddingTop: 0,
120
- backgroundColor: "transparent"
121
- },
122
- suggestedContainer: {
123
- backgroundColor: "rgba(128, 128, 128, 0.06)",
124
- borderRadius: 8,
125
- padding: 12,
126
- marginBottom: 16,
127
- maxHeight: 300,
128
- borderWidth: 1,
129
- borderColor: "rgba(128, 128, 128, 0.16)"
130
- },
131
- suggestedTitle: {
132
- fontSize: 10,
133
- color: macOSColors.text.icon,
134
- fontWeight: "600",
135
- letterSpacing: 0.5,
136
- marginBottom: 12,
137
- textTransform: "uppercase"
138
- },
139
- suggestedScroll: {
140
- maxHeight: 250
141
- },
142
- suggestedItem: {
143
- flexDirection: "row",
144
- alignItems: "center",
145
- backgroundColor: "rgba(128, 128, 128, 0.04)",
146
- borderRadius: 6,
147
- paddingHorizontal: 10,
148
- paddingVertical: 10,
149
- marginBottom: 6,
150
- borderWidth: 1,
151
- borderColor: "rgba(128, 128, 128, 0.1)"
152
- },
153
- suggestedText: {
154
- flex: 1,
155
- fontSize: 12,
156
- color: buoyColors.text,
157
- fontFamily: "monospace",
158
- marginLeft: 4
159
- },
160
- emptyText: {
161
- fontSize: 11,
162
- color: macOSColors.text.icon,
163
- fontStyle: "italic",
164
- padding: 12,
165
- textAlign: "center"
166
- },
167
- addIconButton: {
168
- padding: 4,
169
- borderRadius: 4,
170
- backgroundColor: "rgba(139, 92, 246, 0.1)"
171
- }
172
- });
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- import { View, Text, StyleSheet } from "react-native";
4
- import { buoyColors } from "../gameUI/constants/gameUIColors.js";
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const getTypeConfig = type => {
7
- const normalizedType = type.toLowerCase();
8
-
9
- // Use consistent teal-based styling for all types
10
- // This matches the Buoy theme where info = primary = teal
11
- switch (normalizedType) {
12
- case "string":
13
- return {
14
- backgroundColor: buoyColors.primary + "15",
15
- borderColor: buoyColors.primary + "40",
16
- textColor: buoyColors.primary,
17
- label: "string"
18
- };
19
- case "number":
20
- return {
21
- backgroundColor: buoyColors.primary + "15",
22
- borderColor: buoyColors.primary + "40",
23
- textColor: buoyColors.primary,
24
- label: "number"
25
- };
26
- case "boolean":
27
- return {
28
- backgroundColor: buoyColors.primary + "15",
29
- borderColor: buoyColors.primary + "40",
30
- textColor: buoyColors.primary,
31
- label: "boolean"
32
- };
33
- case "object":
34
- return {
35
- backgroundColor: buoyColors.textMuted + "20",
36
- borderColor: buoyColors.textMuted + "40",
37
- textColor: buoyColors.textSecondary,
38
- label: "object"
39
- };
40
- case "array":
41
- return {
42
- backgroundColor: buoyColors.textMuted + "20",
43
- borderColor: buoyColors.textMuted + "40",
44
- textColor: buoyColors.textSecondary,
45
- label: "array"
46
- };
47
- case "function":
48
- return {
49
- backgroundColor: buoyColors.textMuted + "20",
50
- borderColor: buoyColors.textMuted + "40",
51
- textColor: buoyColors.textSecondary,
52
- label: "fn"
53
- };
54
- default:
55
- return {
56
- backgroundColor: buoyColors.textMuted + "20",
57
- borderColor: buoyColors.textMuted + "40",
58
- textColor: buoyColors.textMuted,
59
- label: normalizedType.slice(0, 6)
60
- };
61
- }
62
- };
63
- export function TypeBadge({
64
- type
65
- }) {
66
- if (!type) return null;
67
- const config = getTypeConfig(type);
68
- return /*#__PURE__*/_jsx(View, {
69
- style: [styles.badge, {
70
- backgroundColor: config.backgroundColor,
71
- borderColor: config.borderColor
72
- }],
73
- children: /*#__PURE__*/_jsx(Text, {
74
- style: [styles.badgeText, {
75
- color: config.textColor
76
- }],
77
- children: config.label
78
- })
79
- });
80
- }
81
- const styles = StyleSheet.create({
82
- badge: {
83
- paddingHorizontal: 6,
84
- paddingVertical: 2,
85
- borderRadius: 4,
86
- borderWidth: 1,
87
- alignSelf: "flex-start"
88
- },
89
- badgeText: {
90
- fontSize: 10,
91
- fontWeight: "600",
92
- fontFamily: "monospace",
93
- textTransform: "uppercase",
94
- letterSpacing: 0.5
95
- }
96
- });
@@ -1,3 +0,0 @@
1
- "use strict";
2
-
3
- export {};
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- import { useCallback } from "react";
4
- import { ModalHeader } from "../components/ModalHeader.js";
5
- import { JsModal } from "../../JsModal.js";
6
- import { BubbleSettingsDetail } from "../../settings/index.js";
7
- import { devToolsStorageKeys } from "../../storage/devToolsStorageKeys.js";
8
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- export function BubbleSettingsModal({
10
- visible,
11
- onClose,
12
- onBack,
13
- enableSharedModalDimensions = false,
14
- onSettingsChange
15
- }) {
16
- const handleModeChange = useCallback(_mode => {
17
- // Mode changes handled by JsModal
18
- }, []);
19
- if (!visible) return null;
20
- const persistenceKey = enableSharedModalDimensions ? devToolsStorageKeys.modal.root() : devToolsStorageKeys.bubble.settings();
21
- return /*#__PURE__*/_jsx(JsModal, {
22
- visible: visible,
23
- onClose: onClose,
24
- persistenceKey: persistenceKey,
25
- header: {
26
- showToggleButton: true,
27
- customContent: /*#__PURE__*/_jsxs(ModalHeader, {
28
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
29
- onBack: onBack
30
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
31
- title: "Bubble Settings",
32
- subtitle: "Configure visibility",
33
- centered: true
34
- }), /*#__PURE__*/_jsx(ModalHeader.Actions, {})]
35
- })
36
- },
37
- onModeChange: handleModeChange,
38
- enablePersistence: true,
39
- initialMode: "bottomSheet",
40
- enableGlitchEffects: true,
41
- styles: {},
42
- children: /*#__PURE__*/_jsx(BubbleSettingsDetail, {
43
- onSettingsChange: onSettingsChange
44
- })
45
- });
46
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- import { View, StyleSheet } from "react-native";
4
- import { ExpandableSectionHeader } from "../components/ExpandableSectionHeader.js";
5
- import { GalaxyButton } from "./GalaxyButton.js";
6
-
7
- // Stable constants moved to module scope to prevent re-renders [[memory:4875251]]
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- /**
10
- * Individual console section component following composition principles.
11
- * Separates section UI rendering from business logic.
12
- */
13
- export function ConsoleSection({
14
- id: _id,
15
- title,
16
- subtitle,
17
- icon,
18
- iconColor,
19
- iconBackgroundColor,
20
- onPress
21
- }) {
22
- return /*#__PURE__*/_jsx(GalaxyButton, {
23
- onPress: onPress,
24
- style: styles.sectionCard,
25
- children: /*#__PURE__*/_jsx(View, {
26
- style: styles.sectionCardContent,
27
- children: /*#__PURE__*/_jsx(ExpandableSectionHeader, {
28
- title: title,
29
- subtitle: subtitle || "",
30
- icon: icon,
31
- iconColor: iconColor,
32
- iconBackgroundColor: iconBackgroundColor,
33
- isExpanded: false,
34
- onPress: onPress
35
- })
36
- })
37
- });
38
- }
39
- const styles = StyleSheet.create({
40
- sectionCard: {
41
- marginBottom: 16 // Match ExpandableSection spacing
42
- },
43
- sectionCardContent: {
44
- padding: 24 // Match ExpandableSection padding
45
- }
46
- });