@calimero-network/mero-react 2.0.1 → 2.1.0

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/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import React__default from 'react';
3
+ import React__default, { CSSProperties } from 'react';
4
4
  import * as _calimero_network_mero_js from '@calimero-network/mero-js';
5
5
  import { MeroJs, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, GroupMember, GroupUpgradeStatusResponseData, JoinGroupRequest, JoinNamespaceRequest, Namespace, SubgroupEntry, NamespaceIdentity, NestGroupRequest, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetGroupAliasRequest, SetMemberAliasRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, SseEventData, SyncGroupRequest, UnnestGroupRequest, UpdateGroupSettingsRequest, UpdateMemberRoleRequest, UpgradeGroupRequest, TokenData } from '@calimero-network/mero-js';
6
6
  export * from '@calimero-network/mero-js';
@@ -122,6 +122,81 @@ interface MeroProviderProps extends MeroProviderConfig {
122
122
  declare function MeroProvider({ children, mode, packageName, packageVersion, registryUrl, timeoutMs, }: MeroProviderProps): react_jsx_runtime.JSX.Element;
123
123
  declare function useMero(): MeroContextValue;
124
124
 
125
+ /**
126
+ * Theme tokens for mero-react components.
127
+ *
128
+ * Defaults match the green palette used across Calimero apps (admin-dashboard,
129
+ * tauri-app, app-registry). Pass a partial `MeroTheme` to `ConnectButton` or
130
+ * `LoginModal` to override any token.
131
+ */
132
+
133
+ interface MeroTheme {
134
+ /** Primary accent / CTA color */
135
+ primary?: string;
136
+ /** Primary accent on hover */
137
+ primaryHover?: string;
138
+ /** Text color rendered on top of `primary` (e.g. inside the Connect button when connected) */
139
+ primaryText?: string;
140
+ /** Main surface color (modal background, button background) */
141
+ background?: string;
142
+ /** Secondary surface color (input fields, info chips) */
143
+ backgroundSecondary?: string;
144
+ /** Tertiary surface color (subtle elevation) */
145
+ backgroundTertiary?: string;
146
+ /** Border color */
147
+ border?: string;
148
+ /** Primary text color */
149
+ text?: string;
150
+ /** Muted / secondary text color */
151
+ textSecondary?: string;
152
+ /** Error / danger color */
153
+ error?: string;
154
+ /** Modal backdrop color */
155
+ overlay?: string;
156
+ /** Border radius (any CSS length) */
157
+ radius?: string;
158
+ }
159
+ type ResolvedMeroTheme = Required<MeroTheme>;
160
+ declare const defaultMeroTheme: Readonly<ResolvedMeroTheme>;
161
+ /**
162
+ * Merge a partial theme with the defaults.
163
+ *
164
+ * Filtering rules — values that fall back to the default:
165
+ * - `undefined` (the prop key wasn't set, or was set to `undefined`)
166
+ * - empty string `''`
167
+ * - whitespace-only strings (e.g. `' '`)
168
+ *
169
+ * These are dropped because they're invalid CSS and would produce
170
+ * invisible elements (transparent backgrounds, missing borders, etc.).
171
+ * If you genuinely want the browser default for a token, omit the key
172
+ * from the theme prop rather than passing an empty string.
173
+ *
174
+ * Any other non-empty string is forwarded as-is — CSS syntax itself
175
+ * is NOT validated.
176
+ */
177
+ declare function resolveMeroTheme(theme?: MeroTheme): ResolvedMeroTheme;
178
+ /**
179
+ * Single source of truth mapping each `MeroTheme` token name to the CSS
180
+ * custom-property name it surfaces as. Used by `themeToCssVars` to emit the
181
+ * inline-style map and by component code (e.g. `LoginModal`) to read the
182
+ * variable in inline styles via `var(--mero-*, fallback)`.
183
+ *
184
+ * Adding a new token? Add it here, in `MeroTheme`, and in `defaultMeroTheme`,
185
+ * and the rest of the system picks it up automatically.
186
+ */
187
+ declare const MERO_CSS_VARS: Record<keyof MeroTheme, string>;
188
+ /**
189
+ * Build a `style` object that exposes a resolved theme as CSS variables, so
190
+ * descendant CSS rules (e.g. those in `styles.css`) pick up the overrides.
191
+ */
192
+ declare function themeToCssVars(theme: ResolvedMeroTheme): CSSProperties;
193
+ /**
194
+ * Returns a `var(--mero-*, fallback)` reference for a theme token, suitable
195
+ * for inline styles in portal-rendered components where descendant CSS
196
+ * variables also need to support global `:root` overrides.
197
+ */
198
+ declare function cssVar(theme: ResolvedMeroTheme, key: keyof MeroTheme): string;
199
+
125
200
  interface ConnectButtonProps {
126
201
  /** Connection type for login modal */
127
202
  connectionType?: ConnectionType | CustomConnectionConfig;
@@ -129,11 +204,29 @@ interface ConnectButtonProps {
129
204
  className?: string;
130
205
  /** Custom styles */
131
206
  style?: React__default.CSSProperties;
207
+ /** Theme overrides — accepts any subset of `MeroTheme` tokens */
208
+ theme?: MeroTheme;
209
+ /**
210
+ * Render only the Calimero logo, no text. Produces a square 40×40 icon
211
+ * button. The label is still announced to screen readers via `aria-label`.
212
+ * Default: false.
213
+ */
214
+ logoOnly?: boolean;
215
+ /**
216
+ * Override the default labels per state. A bare string is shorthand for
217
+ * `{ connect: '<string>' }`. The connected and reconnecting states keep
218
+ * their defaults unless explicitly overridden.
219
+ */
220
+ label?: string | {
221
+ connect?: string;
222
+ connected?: string;
223
+ reconnecting?: string;
224
+ };
132
225
  }
133
226
  /**
134
227
  * ConnectButton - Displays connection status and handles login/logout
135
228
  */
136
- declare function ConnectButton({ connectionType, className, style, }: ConnectButtonProps): react_jsx_runtime.JSX.Element;
229
+ declare function ConnectButton({ connectionType, className, style, theme, logoOnly, label, }: ConnectButtonProps): react_jsx_runtime.JSX.Element;
137
230
 
138
231
  interface LoginModalProps {
139
232
  /** Callback when user connects */
@@ -144,11 +237,19 @@ interface LoginModalProps {
144
237
  connectionType: ConnectionType | CustomConnectionConfig;
145
238
  /** Whether the modal is open */
146
239
  isOpen: boolean;
240
+ /** Theme overrides — accepts any subset of `MeroTheme` tokens */
241
+ theme?: MeroTheme;
147
242
  }
148
243
  /**
149
244
  * LoginModal - Connection modal component
150
245
  */
151
- declare function LoginModal({ onConnect, onClose, connectionType, isOpen, }: LoginModalProps): React.ReactPortal | null;
246
+ declare function LoginModal({ onConnect, onClose, connectionType, isOpen, theme, }: LoginModalProps): React.ReactPortal | null;
247
+
248
+ interface CalimeroLogoProps extends React__default.SVGAttributes<SVGSVGElement> {
249
+ /** Width / height shorthand (applied to both). Default: 24. */
250
+ size?: number | string;
251
+ }
252
+ declare function CalimeroLogo({ size, color, style, ...rest }: CalimeroLogoProps): react_jsx_runtime.JSX.Element;
152
253
 
153
254
  /**
154
255
  * Execute RPC methods against a context.
@@ -455,4 +556,4 @@ declare function clearContextIdentity(): void;
455
556
  */
456
557
  declare function clearAllStorage(): void;
457
558
 
458
- export { type AppContext, AppMode, type ApplicationContextRecord, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, getApplicationId, getContextId, getContextIdentity, getNodeUrl, localStorageTokenStorage, setApplicationId, setContextId, setContextIdentity, setNodeUrl, useAddGroupMembers, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupUpgradeStatus, useJoinContext, useJoinGroup, useJoinNamespace, useMero, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useNestGroup, useRegisterGroupSigningKey, useRemoveGroupMembers, useRetryGroupUpgrade, useSetDefaultCapabilities, useSetGroupAlias, useSetMemberAlias, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroups, useSubscription, useSyncGroup, useUnnestGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
559
+ export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MERO_CSS_VARS, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, type MeroTheme, type ResolvedMeroTheme, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, cssVar, defaultMeroTheme, getApplicationId, getContextId, getContextIdentity, getNodeUrl, localStorageTokenStorage, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, themeToCssVars, useAddGroupMembers, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupUpgradeStatus, useJoinContext, useJoinGroup, useJoinNamespace, useMero, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useNestGroup, useRegisterGroupSigningKey, useRemoveGroupMembers, useRetryGroupUpgrade, useSetDefaultCapabilities, useSetGroupAlias, useSetMemberAlias, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroups, useSubscription, useSyncGroup, useUnnestGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import React__default from 'react';
3
+ import React__default, { CSSProperties } from 'react';
4
4
  import * as _calimero_network_mero_js from '@calimero-network/mero-js';
5
5
  import { MeroJs, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, GroupMember, GroupUpgradeStatusResponseData, JoinGroupRequest, JoinNamespaceRequest, Namespace, SubgroupEntry, NamespaceIdentity, NestGroupRequest, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetGroupAliasRequest, SetMemberAliasRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, SseEventData, SyncGroupRequest, UnnestGroupRequest, UpdateGroupSettingsRequest, UpdateMemberRoleRequest, UpgradeGroupRequest, TokenData } from '@calimero-network/mero-js';
6
6
  export * from '@calimero-network/mero-js';
@@ -122,6 +122,81 @@ interface MeroProviderProps extends MeroProviderConfig {
122
122
  declare function MeroProvider({ children, mode, packageName, packageVersion, registryUrl, timeoutMs, }: MeroProviderProps): react_jsx_runtime.JSX.Element;
123
123
  declare function useMero(): MeroContextValue;
124
124
 
125
+ /**
126
+ * Theme tokens for mero-react components.
127
+ *
128
+ * Defaults match the green palette used across Calimero apps (admin-dashboard,
129
+ * tauri-app, app-registry). Pass a partial `MeroTheme` to `ConnectButton` or
130
+ * `LoginModal` to override any token.
131
+ */
132
+
133
+ interface MeroTheme {
134
+ /** Primary accent / CTA color */
135
+ primary?: string;
136
+ /** Primary accent on hover */
137
+ primaryHover?: string;
138
+ /** Text color rendered on top of `primary` (e.g. inside the Connect button when connected) */
139
+ primaryText?: string;
140
+ /** Main surface color (modal background, button background) */
141
+ background?: string;
142
+ /** Secondary surface color (input fields, info chips) */
143
+ backgroundSecondary?: string;
144
+ /** Tertiary surface color (subtle elevation) */
145
+ backgroundTertiary?: string;
146
+ /** Border color */
147
+ border?: string;
148
+ /** Primary text color */
149
+ text?: string;
150
+ /** Muted / secondary text color */
151
+ textSecondary?: string;
152
+ /** Error / danger color */
153
+ error?: string;
154
+ /** Modal backdrop color */
155
+ overlay?: string;
156
+ /** Border radius (any CSS length) */
157
+ radius?: string;
158
+ }
159
+ type ResolvedMeroTheme = Required<MeroTheme>;
160
+ declare const defaultMeroTheme: Readonly<ResolvedMeroTheme>;
161
+ /**
162
+ * Merge a partial theme with the defaults.
163
+ *
164
+ * Filtering rules — values that fall back to the default:
165
+ * - `undefined` (the prop key wasn't set, or was set to `undefined`)
166
+ * - empty string `''`
167
+ * - whitespace-only strings (e.g. `' '`)
168
+ *
169
+ * These are dropped because they're invalid CSS and would produce
170
+ * invisible elements (transparent backgrounds, missing borders, etc.).
171
+ * If you genuinely want the browser default for a token, omit the key
172
+ * from the theme prop rather than passing an empty string.
173
+ *
174
+ * Any other non-empty string is forwarded as-is — CSS syntax itself
175
+ * is NOT validated.
176
+ */
177
+ declare function resolveMeroTheme(theme?: MeroTheme): ResolvedMeroTheme;
178
+ /**
179
+ * Single source of truth mapping each `MeroTheme` token name to the CSS
180
+ * custom-property name it surfaces as. Used by `themeToCssVars` to emit the
181
+ * inline-style map and by component code (e.g. `LoginModal`) to read the
182
+ * variable in inline styles via `var(--mero-*, fallback)`.
183
+ *
184
+ * Adding a new token? Add it here, in `MeroTheme`, and in `defaultMeroTheme`,
185
+ * and the rest of the system picks it up automatically.
186
+ */
187
+ declare const MERO_CSS_VARS: Record<keyof MeroTheme, string>;
188
+ /**
189
+ * Build a `style` object that exposes a resolved theme as CSS variables, so
190
+ * descendant CSS rules (e.g. those in `styles.css`) pick up the overrides.
191
+ */
192
+ declare function themeToCssVars(theme: ResolvedMeroTheme): CSSProperties;
193
+ /**
194
+ * Returns a `var(--mero-*, fallback)` reference for a theme token, suitable
195
+ * for inline styles in portal-rendered components where descendant CSS
196
+ * variables also need to support global `:root` overrides.
197
+ */
198
+ declare function cssVar(theme: ResolvedMeroTheme, key: keyof MeroTheme): string;
199
+
125
200
  interface ConnectButtonProps {
126
201
  /** Connection type for login modal */
127
202
  connectionType?: ConnectionType | CustomConnectionConfig;
@@ -129,11 +204,29 @@ interface ConnectButtonProps {
129
204
  className?: string;
130
205
  /** Custom styles */
131
206
  style?: React__default.CSSProperties;
207
+ /** Theme overrides — accepts any subset of `MeroTheme` tokens */
208
+ theme?: MeroTheme;
209
+ /**
210
+ * Render only the Calimero logo, no text. Produces a square 40×40 icon
211
+ * button. The label is still announced to screen readers via `aria-label`.
212
+ * Default: false.
213
+ */
214
+ logoOnly?: boolean;
215
+ /**
216
+ * Override the default labels per state. A bare string is shorthand for
217
+ * `{ connect: '<string>' }`. The connected and reconnecting states keep
218
+ * their defaults unless explicitly overridden.
219
+ */
220
+ label?: string | {
221
+ connect?: string;
222
+ connected?: string;
223
+ reconnecting?: string;
224
+ };
132
225
  }
133
226
  /**
134
227
  * ConnectButton - Displays connection status and handles login/logout
135
228
  */
136
- declare function ConnectButton({ connectionType, className, style, }: ConnectButtonProps): react_jsx_runtime.JSX.Element;
229
+ declare function ConnectButton({ connectionType, className, style, theme, logoOnly, label, }: ConnectButtonProps): react_jsx_runtime.JSX.Element;
137
230
 
138
231
  interface LoginModalProps {
139
232
  /** Callback when user connects */
@@ -144,11 +237,19 @@ interface LoginModalProps {
144
237
  connectionType: ConnectionType | CustomConnectionConfig;
145
238
  /** Whether the modal is open */
146
239
  isOpen: boolean;
240
+ /** Theme overrides — accepts any subset of `MeroTheme` tokens */
241
+ theme?: MeroTheme;
147
242
  }
148
243
  /**
149
244
  * LoginModal - Connection modal component
150
245
  */
151
- declare function LoginModal({ onConnect, onClose, connectionType, isOpen, }: LoginModalProps): React.ReactPortal | null;
246
+ declare function LoginModal({ onConnect, onClose, connectionType, isOpen, theme, }: LoginModalProps): React.ReactPortal | null;
247
+
248
+ interface CalimeroLogoProps extends React__default.SVGAttributes<SVGSVGElement> {
249
+ /** Width / height shorthand (applied to both). Default: 24. */
250
+ size?: number | string;
251
+ }
252
+ declare function CalimeroLogo({ size, color, style, ...rest }: CalimeroLogoProps): react_jsx_runtime.JSX.Element;
152
253
 
153
254
  /**
154
255
  * Execute RPC methods against a context.
@@ -455,4 +556,4 @@ declare function clearContextIdentity(): void;
455
556
  */
456
557
  declare function clearAllStorage(): void;
457
558
 
458
- export { type AppContext, AppMode, type ApplicationContextRecord, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, getApplicationId, getContextId, getContextIdentity, getNodeUrl, localStorageTokenStorage, setApplicationId, setContextId, setContextIdentity, setNodeUrl, useAddGroupMembers, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupUpgradeStatus, useJoinContext, useJoinGroup, useJoinNamespace, useMero, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useNestGroup, useRegisterGroupSigningKey, useRemoveGroupMembers, useRetryGroupUpgrade, useSetDefaultCapabilities, useSetGroupAlias, useSetMemberAlias, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroups, useSubscription, useSyncGroup, useUnnestGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
559
+ export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MERO_CSS_VARS, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, type MeroTheme, type ResolvedMeroTheme, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, cssVar, defaultMeroTheme, getApplicationId, getContextId, getContextIdentity, getNodeUrl, localStorageTokenStorage, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, themeToCssVars, useAddGroupMembers, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupUpgradeStatus, useJoinContext, useJoinGroup, useJoinNamespace, useMero, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useNestGroup, useRegisterGroupSigningKey, useRemoveGroupMembers, useRetryGroupUpgrade, useSetDefaultCapabilities, useSetGroupAlias, useSetMemberAlias, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroups, useSubscription, useSyncGroup, useUnnestGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };