@xpufx/paseo-top 0.4.4 → 0.4.7

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 (130) hide show
  1. package/OVERVIEW.md +18 -0
  2. package/client/host-ui.tsx +184 -0
  3. package/client/multi-host-view.tsx +57 -43
  4. package/client/multi-host.ts +36 -13
  5. package/client/pill-labels.ts +94 -1
  6. package/client/pill.tsx +692 -616
  7. package/client/resources-query.ts +1 -1
  8. package/client/settings-events.ts +1 -1
  9. package/client/settings-ui.tsx +86 -9
  10. package/client/surface.tsx +308 -276
  11. package/client/telemetry-copy.ts +8 -2
  12. package/client/telemetry.tsx +372 -321
  13. package/client/turn-panel.tsx +126 -104
  14. package/client/vendor/paseo-plugin-helper/{host.ts → core/host.ts} +9 -3
  15. package/client/vendor/paseo-plugin-helper/core/index.ts +76 -0
  16. package/client/vendor/paseo-plugin-helper/core/plugin-load-count.ts +89 -0
  17. package/client/vendor/paseo-plugin-helper/{query-refresh.ts → core/query-refresh.ts} +2 -2
  18. package/client/vendor/paseo-plugin-helper/{query.ts → core/query.ts} +2 -2
  19. package/client/vendor/paseo-plugin-helper/{settings.ts → core/settings.ts} +1 -1
  20. package/client/vendor/paseo-plugin-helper/{shared-settings.ts → core/shared-settings.ts} +2 -2
  21. package/client/vendor/paseo-plugin-helper/{utils → lifecycle}/clipboard.ts +2 -2
  22. package/client/vendor/paseo-plugin-helper/lifecycle/flair.ts +26 -0
  23. package/client/vendor/paseo-plugin-helper/{theme/color-utils.ts → lifecycle/host-color.ts} +95 -38
  24. package/client/vendor/paseo-plugin-helper/lifecycle/host-theme.tsx +109 -0
  25. package/client/vendor/paseo-plugin-helper/lifecycle/index.ts +23 -0
  26. package/client/vendor/paseo-plugin-helper/lifecycle/multi-host.ts +66 -0
  27. package/client/vendor/paseo-plugin-helper/{panel.tsx → lifecycle/panel.tsx} +7 -7
  28. package/client/vendor/paseo-plugin-helper/{pill.tsx → lifecycle/pill.tsx} +51 -18
  29. package/client/vendor/paseo-plugin-helper/lifecycle/providers.tsx +46 -0
  30. package/client/vendor/paseo-plugin-helper/lifecycle/scroll-owner.ts +26 -0
  31. package/client/vendor/paseo-plugin-helper/{surface.tsx → lifecycle/surface.tsx} +6 -6
  32. package/client/vendor/paseo-plugin-helper/ui/color.ts +1 -0
  33. package/client/vendor/paseo-plugin-helper/ui/content.tsx +1326 -0
  34. package/client/vendor/paseo-plugin-helper/ui/controls.tsx +1018 -0
  35. package/client/vendor/paseo-plugin-helper/{components/DataTable.tsx → ui/data.tsx} +50 -58
  36. package/client/vendor/paseo-plugin-helper/ui/index.ts +44 -0
  37. package/client/vendor/paseo-plugin-helper/ui/layout.tsx +263 -0
  38. package/client/vendor/paseo-plugin-helper/ui/modal.tsx +111 -0
  39. package/client/vendor/paseo-plugin-helper/ui/plugin-reload-banner.tsx +119 -0
  40. package/client/vendor/paseo-plugin-helper/{settings-screen.tsx → ui/settings-screen.tsx} +3 -3
  41. package/client/vendor/paseo-plugin-helper/ui/settings.ts +36 -0
  42. package/client/vendor/paseo-plugin-helper/ui/text.tsx +821 -0
  43. package/client/vendor/paseo-plugin-helper/ui/theme.tsx +1 -0
  44. package/client/vendor/permission-audit/client.tsx +706 -0
  45. package/client/vendor/permission-audit/index.tsx +1 -0
  46. package/index.client.tsx +58 -37
  47. package/index.server.ts +256 -234
  48. package/npm-shrinkwrap.json +44 -0
  49. package/package.json +8 -4
  50. package/paseo-plugin.json +2 -0
  51. package/screenshots/1-paseo-top-modal-system.jpg +0 -0
  52. package/screenshots/2-paseo-top-modal-workspace.jpg +0 -0
  53. package/screenshots/3-paseo-top-modal-settings.jpg +0 -0
  54. package/screenshots/4-paseo-top-modal-about.jpg +0 -0
  55. package/screenshots/paseo-top-dashboard.jpg +0 -0
  56. package/screenshots/paseo-top-general-view.jpg +0 -0
  57. package/server/resources.ts +98 -0
  58. package/server/vendor/paseo-plugin-helper/custom-pills.ts +70 -0
  59. package/server/vendor/paseo-plugin-helper/index.ts +2 -0
  60. package/server/vendor/paseo-plugin-helper/logger.ts +5 -16
  61. package/server/vendor/paseo-plugin-helper/rpc-guard.ts +2 -2
  62. package/server/vendor/paseo-plugin-helper/storage-guard.ts +294 -0
  63. package/server/vendor/paseo-plugin-helper/storage.ts +36 -2
  64. package/server/vendor/paseo-plugin-helper/telemetry.ts +486 -0
  65. package/server/vendor/paseo-plugin-helper/tickets.ts +18 -67
  66. package/server/vendor/permission-audit/index.ts +1 -0
  67. package/server/vendor/permission-audit/server.ts +839 -0
  68. package/shared/helper-version.ts +1 -1
  69. package/shared/multi-host.ts +153 -159
  70. package/shared/resources.ts +145 -0
  71. package/shared/vendor/paseo-plugin-helper/async.ts +14 -7
  72. package/shared/vendor/paseo-plugin-helper/features.ts +244 -0
  73. package/shared/vendor/paseo-plugin-helper/forge.ts +27 -0
  74. package/shared/vendor/paseo-plugin-helper/index.ts +1 -0
  75. package/shared/vendor/paseo-plugin-helper/tickets.ts +122 -28
  76. package/shared/vendor/permission-audit/filter.ts +61 -0
  77. package/shared/vendor/permission-audit/index.ts +2 -0
  78. package/shared/vendor/permission-audit/shared.ts +119 -0
  79. package/shared/version.ts +1 -1
  80. package/client/vendor/paseo-plugin-helper/components/AboutSection.tsx +0 -493
  81. package/client/vendor/paseo-plugin-helper/components/AttentionBeacon.tsx +0 -250
  82. package/client/vendor/paseo-plugin-helper/components/Badge.tsx +0 -168
  83. package/client/vendor/paseo-plugin-helper/components/Button.tsx +0 -204
  84. package/client/vendor/paseo-plugin-helper/components/Card.tsx +0 -257
  85. package/client/vendor/paseo-plugin-helper/components/CodeBlock.tsx +0 -196
  86. package/client/vendor/paseo-plugin-helper/components/Collapsible.tsx +0 -277
  87. package/client/vendor/paseo-plugin-helper/components/CommandBox.tsx +0 -172
  88. package/client/vendor/paseo-plugin-helper/components/CopyButton.tsx +0 -180
  89. package/client/vendor/paseo-plugin-helper/components/EmptyState.tsx +0 -97
  90. package/client/vendor/paseo-plugin-helper/components/HighlightedText.tsx +0 -70
  91. package/client/vendor/paseo-plugin-helper/components/InlineButton.tsx +0 -88
  92. package/client/vendor/paseo-plugin-helper/components/InteractiveRow.tsx +0 -142
  93. package/client/vendor/paseo-plugin-helper/components/KeyValue.tsx +0 -446
  94. package/client/vendor/paseo-plugin-helper/components/MetricGauge.tsx +0 -247
  95. package/client/vendor/paseo-plugin-helper/components/ProgressBar.tsx +0 -117
  96. package/client/vendor/paseo-plugin-helper/components/Responsive.tsx +0 -53
  97. package/client/vendor/paseo-plugin-helper/components/SearchInput.tsx +0 -132
  98. package/client/vendor/paseo-plugin-helper/components/SectionHeader.tsx +0 -87
  99. package/client/vendor/paseo-plugin-helper/components/Select.tsx +0 -283
  100. package/client/vendor/paseo-plugin-helper/components/StatusDot.tsx +0 -80
  101. package/client/vendor/paseo-plugin-helper/components/Tabs.tsx +0 -319
  102. package/client/vendor/paseo-plugin-helper/components/TextInput.tsx +0 -150
  103. package/client/vendor/paseo-plugin-helper/components/Toggle.tsx +0 -163
  104. package/client/vendor/paseo-plugin-helper/components/TruncatedText.tsx +0 -157
  105. package/client/vendor/paseo-plugin-helper/components/index.ts +0 -26
  106. package/client/vendor/paseo-plugin-helper/custom-pills.tsx +0 -225
  107. package/client/vendor/paseo-plugin-helper/forge-icon.tsx +0 -79
  108. package/client/vendor/paseo-plugin-helper/icon.tsx +0 -39
  109. package/client/vendor/paseo-plugin-helper/index.ts +0 -30
  110. package/client/vendor/paseo-plugin-helper/layout/ActionBar.tsx +0 -49
  111. package/client/vendor/paseo-plugin-helper/layout/FormRow.tsx +0 -103
  112. package/client/vendor/paseo-plugin-helper/layout/Grid.tsx +0 -65
  113. package/client/vendor/paseo-plugin-helper/layout/ModalBody.tsx +0 -368
  114. package/client/vendor/paseo-plugin-helper/layout/ModalContent.tsx +0 -51
  115. package/client/vendor/paseo-plugin-helper/layout/Row.tsx +0 -39
  116. package/client/vendor/paseo-plugin-helper/layout/Stack.tsx +0 -39
  117. package/client/vendor/paseo-plugin-helper/layout/index.ts +0 -7
  118. package/client/vendor/paseo-plugin-helper/styles/index.ts +0 -1
  119. package/client/vendor/paseo-plugin-helper/styles/recipes.ts +0 -550
  120. package/client/vendor/paseo-plugin-helper/theme/flair.ts +0 -76
  121. package/client/vendor/paseo-plugin-helper/theme/host-variables.ts +0 -121
  122. package/client/vendor/paseo-plugin-helper/theme/index.ts +0 -7
  123. package/client/vendor/paseo-plugin-helper/theme/provider.tsx +0 -178
  124. package/client/vendor/paseo-plugin-helper/theme/responsive.ts +0 -213
  125. package/client/vendor/paseo-plugin-helper/theme/tokens.ts +0 -200
  126. package/client/vendor/paseo-plugin-helper/theme/useResponsive.ts +0 -57
  127. package/client/vendor/paseo-plugin-helper/tickets.tsx +0 -766
  128. /package/client/vendor/paseo-plugin-helper/{command-center.ts → core/command-center.ts} +0 -0
  129. /package/client/vendor/paseo-plugin-helper/{snapshot.ts → core/snapshot.ts} +0 -0
  130. /package/client/vendor/paseo-plugin-helper/{utils → lifecycle}/haptics.ts +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  sharedSnapshotKey,
5
5
  normalizeSnapshotScope,
6
6
  type UseAutoRefreshQueryOptions,
7
- } from "./vendor/paseo-plugin-helper/index";
7
+ } from "./vendor/paseo-plugin-helper/core/index";
8
8
  import {
9
9
  getSystemResourcesRpc,
10
10
  getCustomPillsRpc,
@@ -1,4 +1,4 @@
1
- import { shouldEmitSnapshotUpdate } from "./vendor/paseo-plugin-helper/index";
1
+ import { shouldEmitSnapshotUpdate } from "./vendor/paseo-plugin-helper/core/index";
2
2
  import type { TopSettings } from "../shared/resources";
3
3
 
4
4
  export type SettingsListener = (settings: TopSettings) => void;
@@ -1,11 +1,18 @@
1
1
  import React from "react";
2
2
  import { Text } from "react-native";
3
- import { Button, Row, Stack, usePluginTheme } from "./vendor/paseo-plugin-helper/index";
3
+ import {
4
+ HostButton,
5
+ HostRow,
6
+ HostStack,
7
+ useHostTheme,
8
+ } from "./host-ui";
4
9
 
5
10
  export interface ChipOption<T extends string | number> {
6
11
  id: T;
7
12
  label: string;
13
+ icon?: string | React.ReactNode;
8
14
  description?: string;
15
+ disabled?: boolean;
9
16
  }
10
17
 
11
18
  export interface ChoiceChipsProps<T extends string | number> {
@@ -18,8 +25,8 @@ export interface ChoiceChipsProps<T extends string | number> {
18
25
 
19
26
  /**
20
27
  * Single-select chip row shared by every Top settings surface. Built from the
21
- * helper `Button`/`Row` primitives so the modal and the sidebar dashboard
22
- * cannot drift into two hand-rolled chip systems.
28
+ * `ui/` Host primitives so the modal and the sidebar dashboard cannot drift
29
+ * into two hand-rolled chip systems.
23
30
  */
24
31
  export function ChoiceChips<T extends string | number>({
25
32
  options,
@@ -27,24 +34,94 @@ export function ChoiceChips<T extends string | number>({
27
34
  onChange,
28
35
  showActiveDescription = false,
29
36
  }: ChoiceChipsProps<T>) {
30
- const { colors } = usePluginTheme();
37
+ const { colors } = useHostTheme();
31
38
  const selected = options.find((option) => option.id === value);
32
39
  return (
33
- <Stack gap={6}>
34
- <Row wrap gap={6}>
40
+ <HostStack gap={6}>
41
+ <HostRow wrap gap={6}>
35
42
  {options.map((option) => (
36
- <Button
43
+ <HostButton
37
44
  key={String(option.id)}
38
45
  label={option.label}
46
+ icon={option.icon}
39
47
  size="sm"
40
48
  variant={option.id === value ? "primary" : "ghost"}
49
+ disabled={option.disabled}
41
50
  onPress={() => onChange(option.id)}
42
51
  />
43
52
  ))}
44
- </Row>
53
+ </HostRow>
45
54
  {showActiveDescription && selected?.description ? (
46
55
  <Text style={{ fontSize: 9, color: colors.foregroundMuted }}>{selected.description}</Text>
47
56
  ) : null}
48
- </Stack>
57
+ </HostStack>
49
58
  );
50
59
  }
60
+
61
+ export interface MultiChoiceChipsProps<T extends string | number> {
62
+ options: ChipOption<T>[];
63
+ selected: T[];
64
+ onToggle: (id: T) => void;
65
+ /** Inactive button variant, defaults to "secondary". */
66
+ inactiveVariant?: "secondary" | "ghost";
67
+ /** Optional select-all callback to render a helper button. */
68
+ onSelectAll?: () => void;
69
+ /** Optional clear-all callback to render a helper button. */
70
+ onClearAll?: () => void;
71
+ }
72
+
73
+ /**
74
+ * Multi-select chip grid shared by Top settings surfaces for compact pill and
75
+ * timeline metric selection. Wraps fluidly without vertical runaway.
76
+ */
77
+ export function MultiChoiceChips<T extends string | number>({
78
+ options,
79
+ selected,
80
+ onToggle,
81
+ inactiveVariant = "secondary",
82
+ onSelectAll,
83
+ onClearAll,
84
+ }: MultiChoiceChipsProps<T>) {
85
+ const selectedSet = new Set(selected);
86
+ return (
87
+ <HostStack gap={6}>
88
+ {(onSelectAll || onClearAll) && (
89
+ <HostRow gap={6} justify="end">
90
+ {onSelectAll && (
91
+ <HostButton
92
+ label="All"
93
+ size="sm"
94
+ variant="ghost"
95
+ onPress={onSelectAll}
96
+ />
97
+ )}
98
+ {onClearAll && (
99
+ <HostButton
100
+ label="None"
101
+ size="sm"
102
+ variant="ghost"
103
+ onPress={onClearAll}
104
+ />
105
+ )}
106
+ </HostRow>
107
+ )}
108
+ <HostRow wrap gap={6}>
109
+ {options.map((option) => {
110
+ const isSelected = selectedSet.has(option.id);
111
+ return (
112
+ <HostButton
113
+ key={String(option.id)}
114
+ label={option.label}
115
+ icon={option.icon}
116
+ size="sm"
117
+ variant={isSelected ? "primary" : inactiveVariant}
118
+ disabled={option.disabled}
119
+ onPress={() => onToggle(option.id)}
120
+ />
121
+ );
122
+ })}
123
+ </HostRow>
124
+ </HostStack>
125
+ );
126
+ }
127
+