@tangle-network/blueprint-ui 0.1.0 → 0.1.2

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 (48) hide show
  1. package/README.md +47 -11
  2. package/dist/BlueprintHostPanel-6iVEh-f1.d.ts +39 -0
  3. package/dist/chunk-37ADATBT.js +55 -0
  4. package/dist/chunk-37ADATBT.js.map +1 -0
  5. package/dist/chunk-A6PJT5YQ.js +1180 -0
  6. package/dist/chunk-A6PJT5YQ.js.map +1 -0
  7. package/dist/chunk-GD3AZEJL.js +327 -0
  8. package/dist/chunk-GD3AZEJL.js.map +1 -0
  9. package/dist/components.d.ts +179 -0
  10. package/dist/components.js +1127 -0
  11. package/dist/components.js.map +1 -0
  12. package/dist/host.d.ts +96 -0
  13. package/dist/host.js +39 -0
  14. package/dist/host.js.map +1 -0
  15. package/dist/index.d.ts +8470 -0
  16. package/dist/index.js +841 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/preset.d.ts +60 -0
  19. package/dist/preset.js +7 -0
  20. package/dist/preset.js.map +1 -0
  21. package/dist/registry-JhwB9BPD.d.ts +87 -0
  22. package/dist/styles.css +559 -0
  23. package/package.json +42 -13
  24. package/src/components/layout/AppDocument.tsx +1 -1
  25. package/src/components/layout/ChainSwitcher.tsx +27 -10
  26. package/src/components/layout/Web3Shell.tsx +81 -6
  27. package/src/components/web3/ConnectWalletCta.tsx +21 -0
  28. package/src/components.ts +6 -0
  29. package/src/contracts/abi.ts +10 -1
  30. package/src/contracts/chains.ts +23 -10
  31. package/src/contracts/publicClient.ts +52 -10
  32. package/src/hooks/useOperators.ts +203 -96
  33. package/src/hooks/useProvisionProgress.ts +2 -1
  34. package/src/hooks/useQuotes.ts +69 -14
  35. package/src/hooks/useSessionAuth.ts +2 -1
  36. package/src/hooks/useSidecarAuth.ts +173 -0
  37. package/src/hooks/useWagmiSidecarAuth.ts +11 -0
  38. package/src/hooks/useWalletEthBalance.ts +68 -0
  39. package/src/host/components/BlueprintHostHero.tsx +91 -0
  40. package/src/host/components/BlueprintHostPanel.tsx +24 -0
  41. package/src/host/index.ts +42 -0
  42. package/src/host/resolver.ts +204 -0
  43. package/src/host/types.ts +111 -0
  44. package/src/index.ts +48 -2
  45. package/src/stores/infra.ts +3 -2
  46. package/src/styles.css +128 -0
  47. package/src/utils/env.ts +22 -0
  48. package/src/utils/web3.ts +9 -3
package/src/styles.css ADDED
@@ -0,0 +1,128 @@
1
+ :root,
2
+ .bp-tone-cloud {
3
+ --bp-font-display: var(--font-display, 'Outfit', system-ui, sans-serif);
4
+ --bp-font-data: var(--font-data, 'IBM Plex Mono', 'JetBrains Mono', ui-monospace, monospace);
5
+
6
+ --bp-glass-bg: var(--glass-bg, transparent);
7
+ --bp-glass-bg-strong: var(--glass-bg-strong, var(--bp-glass-bg, transparent));
8
+ --bp-glass-border: var(--glass-border, transparent);
9
+ --bp-glass-border-hover: var(--glass-border-hover, var(--bp-glass-border, transparent));
10
+ --bp-glass-blur: var(--glass-blur, 0px);
11
+ --bp-glass-blur-strong: 24px;
12
+
13
+ --bp-elements-borderColor: var(--cloud-elements-borderColor, rgba(240, 240, 245, 0.06));
14
+ --bp-elements-borderColorActive: var(--cloud-elements-borderColorActive, #8B5CF6);
15
+
16
+ --bp-elements-bg-depth-1: var(--cloud-elements-bg-depth-1, #0A0A0F);
17
+ --bp-elements-bg-depth-2: var(--cloud-elements-bg-depth-2, #12121A);
18
+ --bp-elements-bg-depth-3: var(--cloud-elements-bg-depth-3, #1A1A25);
19
+ --bp-elements-bg-depth-4: var(--cloud-elements-bg-depth-4, #22222E);
20
+
21
+ --bp-elements-textPrimary: var(--cloud-elements-textPrimary, #F0F0F5);
22
+ --bp-elements-textSecondary: var(--cloud-elements-textSecondary, #8A8A9E);
23
+ --bp-elements-textTertiary: var(--cloud-elements-textTertiary, #5A5A6E);
24
+
25
+ --bp-elements-button-primary-background: var(--cloud-elements-button-primary-background, rgba(142, 89, 255, 0.14));
26
+ --bp-elements-button-primary-backgroundHover: var(--cloud-elements-button-primary-backgroundHover, rgba(142, 89, 255, 0.24));
27
+ --bp-elements-button-primary-text: var(--cloud-elements-button-primary-text, #A87BFF);
28
+
29
+ --bp-elements-button-secondary-background: var(--cloud-elements-button-secondary-background, rgba(240, 240, 245, 0.06));
30
+ --bp-elements-button-secondary-backgroundHover: var(--cloud-elements-button-secondary-backgroundHover, rgba(240, 240, 245, 0.10));
31
+ --bp-elements-button-secondary-text: var(--cloud-elements-button-secondary-text, #F0F0F5);
32
+
33
+ --bp-elements-button-danger-background: var(--cloud-elements-button-danger-background, rgba(255, 59, 92, 0.12));
34
+ --bp-elements-button-danger-backgroundHover: var(--cloud-elements-button-danger-backgroundHover, rgba(255, 59, 92, 0.20));
35
+ --bp-elements-button-danger-text: var(--cloud-elements-button-danger-text, #FF3B5C);
36
+
37
+ --bp-elements-icon-success: var(--cloud-elements-icon-success, #38B2AC);
38
+ --bp-elements-icon-error: var(--cloud-elements-icon-error, #FF4D6A);
39
+ --bp-elements-icon-warning: var(--cloud-elements-icon-warning, #FFB800);
40
+ --bp-elements-icon-primary: var(--cloud-elements-icon-primary, #F0F0F5);
41
+ --bp-elements-icon-secondary: var(--cloud-elements-icon-secondary, #5A5A6E);
42
+
43
+ --bp-elements-dividerColor: var(--cloud-elements-dividerColor, rgba(240, 240, 245, 0.06));
44
+ --bp-elements-item-backgroundHover: var(--cloud-elements-item-backgroundHover, rgba(240, 240, 245, 0.03));
45
+ --bp-elements-item-backgroundActive: var(--cloud-elements-item-backgroundActive, rgba(240, 240, 245, 0.06));
46
+ --bp-elements-focus: var(--cloud-elements-focus, #8B5CF6);
47
+ }
48
+
49
+ .bp-tone-arena {
50
+ --bp-elements-borderColor: var(--arena-elements-borderColor, var(--bp-elements-borderColor));
51
+ --bp-elements-borderColorActive: var(--arena-elements-borderColorActive, var(--bp-elements-borderColorActive));
52
+
53
+ --bp-elements-bg-depth-1: var(--arena-elements-bg-depth-1, var(--bp-elements-bg-depth-1));
54
+ --bp-elements-bg-depth-2: var(--arena-elements-bg-depth-2, var(--bp-elements-bg-depth-2));
55
+ --bp-elements-bg-depth-3: var(--arena-elements-bg-depth-3, var(--bp-elements-bg-depth-3));
56
+ --bp-elements-bg-depth-4: var(--arena-elements-bg-depth-4, var(--bp-elements-bg-depth-4));
57
+
58
+ --bp-elements-textPrimary: var(--arena-elements-textPrimary, var(--bp-elements-textPrimary));
59
+ --bp-elements-textSecondary: var(--arena-elements-textSecondary, var(--bp-elements-textSecondary));
60
+ --bp-elements-textTertiary: var(--arena-elements-textTertiary, var(--bp-elements-textTertiary));
61
+
62
+ --bp-elements-button-primary-background: var(--arena-elements-button-primary-background, var(--bp-elements-button-primary-background));
63
+ --bp-elements-button-primary-backgroundHover: var(--arena-elements-button-primary-backgroundHover, var(--bp-elements-button-primary-backgroundHover));
64
+ --bp-elements-button-primary-text: var(--arena-elements-button-primary-text, var(--bp-elements-button-primary-text));
65
+
66
+ --bp-elements-button-secondary-background: var(--arena-elements-button-secondary-background, var(--bp-elements-button-secondary-background));
67
+ --bp-elements-button-secondary-backgroundHover: var(--arena-elements-button-secondary-backgroundHover, var(--bp-elements-button-secondary-backgroundHover));
68
+ --bp-elements-button-secondary-text: var(--arena-elements-button-secondary-text, var(--bp-elements-button-secondary-text));
69
+
70
+ --bp-elements-button-danger-background: var(--arena-elements-button-danger-background, var(--bp-elements-button-danger-background));
71
+ --bp-elements-button-danger-backgroundHover: var(--arena-elements-button-danger-backgroundHover, var(--bp-elements-button-danger-backgroundHover));
72
+ --bp-elements-button-danger-text: var(--arena-elements-button-danger-text, var(--bp-elements-button-danger-text));
73
+
74
+ --bp-elements-icon-success: var(--arena-elements-icon-success, var(--bp-elements-icon-success));
75
+ --bp-elements-icon-error: var(--arena-elements-icon-error, var(--bp-elements-icon-error));
76
+ --bp-elements-icon-warning: var(--arena-elements-icon-warning, var(--bp-elements-icon-warning));
77
+ --bp-elements-icon-primary: var(--arena-elements-icon-primary, var(--bp-elements-icon-primary));
78
+ --bp-elements-icon-secondary: var(--arena-elements-icon-secondary, var(--bp-elements-icon-secondary));
79
+
80
+ --bp-elements-dividerColor: var(--arena-elements-dividerColor, var(--bp-elements-dividerColor));
81
+ --bp-elements-item-backgroundHover: var(--arena-elements-item-backgroundHover, var(--bp-elements-item-backgroundHover));
82
+ --bp-elements-item-backgroundActive: var(--arena-elements-item-backgroundActive, var(--bp-elements-item-backgroundActive));
83
+ --bp-elements-focus: var(--arena-elements-focus, var(--bp-elements-focus));
84
+ }
85
+
86
+ .font-display {
87
+ font-family: var(--bp-font-display);
88
+ }
89
+
90
+ .font-data {
91
+ font-family: var(--bp-font-data);
92
+ font-feature-settings: 'tnum' 1;
93
+ }
94
+
95
+ .glass {
96
+ background: var(--bp-glass-bg);
97
+ backdrop-filter: blur(var(--bp-glass-blur));
98
+ -webkit-backdrop-filter: blur(var(--bp-glass-blur));
99
+ border: 1px solid var(--bp-glass-border);
100
+ }
101
+
102
+ .glass-hover {
103
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
104
+ }
105
+
106
+ .glass-hover:hover {
107
+ background: var(--bp-glass-bg-strong);
108
+ border-color: var(--bp-glass-border-hover);
109
+ }
110
+
111
+ .glass-card {
112
+ background: var(--bp-glass-bg);
113
+ backdrop-filter: blur(var(--bp-glass-blur));
114
+ -webkit-backdrop-filter: blur(var(--bp-glass-blur));
115
+ border: 1px solid var(--bp-glass-border);
116
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
117
+ }
118
+
119
+ .glass-card:hover {
120
+ border-color: var(--bp-glass-border-hover);
121
+ }
122
+
123
+ .glass-card-strong {
124
+ background: var(--bp-glass-bg-strong);
125
+ backdrop-filter: blur(var(--bp-glass-blur-strong));
126
+ -webkit-backdrop-filter: blur(var(--bp-glass-blur-strong));
127
+ border: 1px solid var(--bp-glass-border);
128
+ }
@@ -0,0 +1,22 @@
1
+ type ImportMetaEnvLike = {
2
+ DEV?: boolean;
3
+ VITE_RPC_URL?: string;
4
+ VITE_CHAIN_ID?: string;
5
+ VITE_BLUEPRINT_ID?: string;
6
+ VITE_SERVICE_ID?: string;
7
+ VITE_SERVICE_IDS?: string;
8
+ VITE_OPERATOR_API_URL?: string;
9
+ };
10
+
11
+ function readImportMetaEnv(): ImportMetaEnvLike {
12
+ return ((import.meta as ImportMeta & { env?: ImportMetaEnvLike }).env ?? {});
13
+ }
14
+
15
+ export function getEnvVar(key: keyof ImportMetaEnvLike): string | undefined {
16
+ const value = readImportMetaEnv()[key];
17
+ return typeof value === 'string' ? value : undefined;
18
+ }
19
+
20
+ export function isDevEnv(): boolean {
21
+ return Boolean(readImportMetaEnv().DEV);
22
+ }
package/src/utils/web3.ts CHANGED
@@ -2,11 +2,17 @@ import type { Chain } from 'viem';
2
2
  import { http } from 'wagmi';
3
3
  import { mainnet, rpcUrl, tangleLocal, tangleMainnet, tangleTestnet } from '../contracts/chains';
4
4
 
5
- export const tangleWalletChains: readonly [Chain, ...Chain[]] = [tangleLocal, tangleTestnet, tangleMainnet, mainnet];
5
+ export function getTangleWalletChains(localChain: Chain = tangleLocal): readonly [Chain, ...Chain[]] {
6
+ return [localChain, tangleTestnet, tangleMainnet, mainnet];
7
+ }
8
+
9
+ export const tangleWalletChains: readonly [Chain, ...Chain[]] = getTangleWalletChains();
10
+
11
+ export function createTangleTransports(localChain: Pick<Chain, 'id' | 'rpcUrls'> = tangleLocal) {
12
+ const localRpcUrl = localChain.rpcUrls.default.http[0] ?? rpcUrl;
6
13
 
7
- export function createTangleTransports() {
8
14
  return {
9
- [tangleLocal.id]: http(rpcUrl),
15
+ [localChain.id]: http(localRpcUrl),
10
16
  [tangleTestnet.id]: http('https://testnet-rpc.tangle.tools'),
11
17
  [tangleMainnet.id]: http('https://rpc.tangle.tools'),
12
18
  [mainnet.id]: http(),