@atomm-developer/generator-workbench 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -6,8 +6,9 @@ V1 provides:
6
6
 
7
7
  - Web Component shell
8
8
  - login / avatar / logout entry
9
+ - credits badge and export credit hint
9
10
  - local template import / export entry
10
- - floating export actions
11
+ - billing-backed export actions
11
12
  - runtime panel / canvas mounting
12
13
 
13
14
  ## Install
@@ -21,7 +22,7 @@ pnpm add @atomm-developer/generator-workbench
21
22
 
22
23
  ```html
23
24
  <script src="https://static-res.atomm.com/scripts/js/generator-sdk/index.umd.js"></script>
24
- <script src="https://static-res.atomm.com/scripts/js/generator-workbench/index.umd.js"></script>
25
+ <script src="https://static-res.atomm.com/scripts/js/generator-sdk/generator-workbench/index.umd.js"></script>
25
26
  ```
26
27
 
27
28
  ## Usage
@@ -46,6 +47,12 @@ workbench.config = {
46
47
  await workbench.mount()
47
48
  ```
48
49
 
50
+ ## Billing Behavior
51
+
52
+ - When `sdk.credits` and `sdk.billing` are available, the top bar shows the current credits balance after login.
53
+ - The export trigger shows the current `creditsPerUse` hint from `sdk.billing.getUsage()`.
54
+ - `exportSvg()` and `openInStudio()` now follow the standard generator flow: ensure login first, then call `sdk.billing.consume()`, then perform the export action.
55
+
49
56
  ## Local Preview
50
57
 
51
58
  ```bash
package/dist/index.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  import { AuthStatus } from '@atomm-developer/generator-sdk';
2
+ import { BillingChangeCallback } from '@atomm-developer/generator-sdk';
3
+ import { BillingCheckResult } from '@atomm-developer/generator-sdk';
4
+ import { BillingConsumeOptions } from '@atomm-developer/generator-sdk';
5
+ import { BillingConsumeResult } from '@atomm-developer/generator-sdk';
2
6
  import { ExportDownloadResult } from '@atomm-developer/generator-sdk';
3
7
  import { ExportOpenInStudioResult } from '@atomm-developer/generator-sdk';
4
8
  import { GeneratorTemplateDefinition } from '@atomm-developer/generator-sdk';
5
9
  import { PanelFilter } from '@atomm-developer/generator-sdk';
6
10
  import { PanelSchema } from '@atomm-developer/generator-sdk';
7
11
  import { TemplateBuildOptions } from '@atomm-developer/generator-sdk';
12
+ import { UsageInfo } from '@atomm-developer/generator-sdk';
8
13
  import { UserInfo } from '@atomm-developer/generator-sdk';
9
14
 
10
15
  export declare function defineGeneratorWorkbench(tagName?: string): typeof GeneratorWorkbenchElement;
@@ -39,6 +44,21 @@ export declare interface GeneratorSDKLike {
39
44
  logout(): Promise<void>;
40
45
  onChange(callback: (status: AuthStatus) => void): () => void;
41
46
  };
47
+ credits?: {
48
+ getBalance(): Promise<{
49
+ quota: number;
50
+ }>;
51
+ getCachedBalance?(): number;
52
+ onChange?(callback: (balance: number) => void): () => void;
53
+ };
54
+ billing?: {
55
+ getUsage(): Promise<UsageInfo>;
56
+ getCachedUsage?(): UsageInfo | null;
57
+ check?(): BillingCheckResult;
58
+ consume(options?: BillingConsumeOptions): Promise<BillingConsumeResult>;
59
+ refreshCredits?(): Promise<void>;
60
+ onChange?(callback: BillingChangeCallback): () => void;
61
+ };
42
62
  template: {
43
63
  build(args: TemplateBuildOptions): GeneratorTemplateDefinition;
44
64
  parse(text: string): GeneratorTemplateDefinition;
@@ -78,6 +98,8 @@ export declare interface GeneratorWorkbenchConfig {
78
98
  autoMount?: boolean;
79
99
  panelTarget?: 'left' | 'right';
80
100
  avatarMenuTrigger?: 'hover' | 'click';
101
+ /** Override the default atomm-ui CDN CSS URL injected into Shadow DOM */
102
+ atommUiCssUrl?: string;
81
103
  runtimePanelFilter?: PanelFilter;
82
104
  getTemplateMeta?: () => Record<string, unknown>;
83
105
  getTemplateFieldPaths?: (panelSchema: PanelSchema) => string[];
@@ -90,14 +112,16 @@ export declare class GeneratorWorkbenchElement extends HTMLElement {
90
112
  private _sdk;
91
113
  private _runtime;
92
114
  private _config;
93
- private _refs;
94
115
  private _mounted;
95
116
  private _state;
96
117
  private _cleanupAuth?;
118
+ private _cleanupCredits?;
119
+ private _cleanupBilling?;
97
120
  private _authController?;
98
121
  private _templateController?;
99
122
  private _exportController?;
100
123
  private _runtimeController?;
124
+ private _shellContext?;
101
125
  constructor();
102
126
  get sdk(): GeneratorSDKLike | null;
103
127
  set sdk(value: GeneratorSDKLike | null);
@@ -116,13 +140,14 @@ export declare class GeneratorWorkbenchElement extends HTMLElement {
116
140
  openInStudio(): Promise<void>;
117
141
  private render;
118
142
  private bindControllers;
119
- private bindShellEvents;
143
+ private bindShellCallbacks;
120
144
  private bindAuthState;
145
+ private bindBillingSubscriptions;
121
146
  private syncAuthUI;
122
- private toggleFabMenu;
123
- private toggleAvatarMenu;
124
- private setAvatarMenuOpen;
125
- private syncMenuUI;
147
+ private syncBillingUI;
148
+ private applyBillingUsage;
149
+ private resetBillingState;
150
+ private syncBillingState;
126
151
  private handleLogin;
127
152
  private handleLogout;
128
153
  private handleError;