@sealpixel/ui 1.0.0-rc.0 → 1.0.0-rc.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 (51) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/theme.js +6 -6
  3. package/package.json +5 -5
  4. package/dist/components/lumbra-button.d.ts +0 -28
  5. package/dist/components/lumbra-button.d.ts.map +0 -1
  6. package/dist/components/lumbra-button.js +0 -87
  7. package/dist/components/lumbra-button.js.map +0 -1
  8. package/dist/components/lumbra-editor.d.ts +0 -226
  9. package/dist/components/lumbra-editor.d.ts.map +0 -1
  10. package/dist/components/lumbra-editor.js +0 -873
  11. package/dist/components/lumbra-editor.js.map +0 -1
  12. package/dist/components/lumbra-nav.d.ts +0 -48
  13. package/dist/components/lumbra-nav.d.ts.map +0 -1
  14. package/dist/components/lumbra-nav.js +0 -159
  15. package/dist/components/lumbra-nav.js.map +0 -1
  16. package/dist/components/lumbra-slider.d.ts +0 -48
  17. package/dist/components/lumbra-slider.d.ts.map +0 -1
  18. package/dist/components/lumbra-slider.js +0 -168
  19. package/dist/components/lumbra-slider.js.map +0 -1
  20. package/dist/components/lumbra-stage.d.ts +0 -92
  21. package/dist/components/lumbra-stage.d.ts.map +0 -1
  22. package/dist/components/lumbra-stage.js +0 -344
  23. package/dist/components/lumbra-stage.js.map +0 -1
  24. package/dist/components/lumbra-toolbar.d.ts +0 -30
  25. package/dist/components/lumbra-toolbar.d.ts.map +0 -1
  26. package/dist/components/lumbra-toolbar.js +0 -127
  27. package/dist/components/lumbra-toolbar.js.map +0 -1
  28. package/dist/components/pincel-button.d.ts +0 -28
  29. package/dist/components/pincel-button.d.ts.map +0 -1
  30. package/dist/components/pincel-button.js +0 -87
  31. package/dist/components/pincel-button.js.map +0 -1
  32. package/dist/components/pincel-editor.d.ts +0 -195
  33. package/dist/components/pincel-editor.d.ts.map +0 -1
  34. package/dist/components/pincel-editor.js +0 -794
  35. package/dist/components/pincel-editor.js.map +0 -1
  36. package/dist/components/pincel-nav.d.ts +0 -33
  37. package/dist/components/pincel-nav.d.ts.map +0 -1
  38. package/dist/components/pincel-nav.js +0 -147
  39. package/dist/components/pincel-nav.js.map +0 -1
  40. package/dist/components/pincel-slider.d.ts +0 -48
  41. package/dist/components/pincel-slider.d.ts.map +0 -1
  42. package/dist/components/pincel-slider.js +0 -168
  43. package/dist/components/pincel-slider.js.map +0 -1
  44. package/dist/components/pincel-stage.d.ts +0 -66
  45. package/dist/components/pincel-stage.d.ts.map +0 -1
  46. package/dist/components/pincel-stage.js +0 -233
  47. package/dist/components/pincel-stage.js.map +0 -1
  48. package/dist/components/pincel-toolbar.d.ts +0 -30
  49. package/dist/components/pincel-toolbar.d.ts.map +0 -1
  50. package/dist/components/pincel-toolbar.js +0 -127
  51. package/dist/components/pincel-toolbar.js.map +0 -1
package/LICENSE.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Licensor:** nine feet UG (haftungsbeschränkt), Germany (https://9feet.io)
6
6
 
7
- **Licensed Work:** Sealpixel, in every version the Licensor publishes: the source code, the npm packages under the `@sealpixel` scope and `create-sealpixel-plugin`, the Rust crates, the WebAssembly binaries, the documentation and the example projects. The Licensed Work is (c) 2026 nine feet UG (haftungsbeschränkt).
7
+ **Licensed Work:** Sealpixel, in every version the Licensor publishes: the source code, the npm packages under the `@sealpixel` scope and the unscoped `sealpixel` package, the Rust crates, the WebAssembly binaries, the documentation and the example projects. The Licensed Work is (c) 2026 nine feet UG (haftungsbeschränkt).
8
8
 
9
9
  **Additional Use Grant:** You may make production use of the Licensed Work if you are a Small User. You are a Small User if you are a natural person acting for yourself, or if the organization you act for had less than EUR 1,000,000 of gross revenue in its most recent completed financial year. Revenue is counted across the whole group: the organization, everything that controls it, everything it controls, and everything under common control with it. Where the work is done for a client, the client's revenue decides.
10
10
 
package/dist/theme.js CHANGED
@@ -67,11 +67,11 @@ export const tokens = css `
67
67
  --sealpixel-color-border: #e1ded6;
68
68
  --sealpixel-color-fg: #1a1a1f;
69
69
  --sealpixel-color-fg-muted: #5f6370;
70
- --sealpixel-color-accent: #d9481f;
70
+ --sealpixel-color-accent: #c2410c;
71
71
  --sealpixel-color-accent-fg: #ffffff;
72
- --sealpixel-color-accent-soft: rgba(217, 72, 31, 0.12);
72
+ --sealpixel-color-accent-soft: rgba(194, 65, 12, 0.08);
73
73
  --sealpixel-color-danger: #c73a3f;
74
- --sealpixel-color-focus: #d9481f;
74
+ --sealpixel-color-focus: #c2410c;
75
75
  --sealpixel-shadow: 0 10px 30px rgba(30, 20, 10, 0.12);
76
76
  --sealpixel-shadow-sm: 0 1px 2px rgba(30, 20, 10, 0.08);
77
77
  --sealpixel-shadow-raised: 0 4px 12px rgba(30, 20, 10, 0.12);
@@ -93,11 +93,11 @@ export const tokens = css `
93
93
  --sealpixel-color-border: #e1ded6;
94
94
  --sealpixel-color-fg: #1a1a1f;
95
95
  --sealpixel-color-fg-muted: #5f6370;
96
- --sealpixel-color-accent: #d9481f;
96
+ --sealpixel-color-accent: #c2410c;
97
97
  --sealpixel-color-accent-fg: #ffffff;
98
- --sealpixel-color-accent-soft: rgba(217, 72, 31, 0.12);
98
+ --sealpixel-color-accent-soft: rgba(194, 65, 12, 0.08);
99
99
  --sealpixel-color-danger: #c73a3f;
100
- --sealpixel-color-focus: #d9481f;
100
+ --sealpixel-color-focus: #c2410c;
101
101
  --sealpixel-shadow: 0 10px 30px rgba(30, 20, 10, 0.12);
102
102
  --sealpixel-shadow-sm: 0 1px 2px rgba(30, 20, 10, 0.08);
103
103
  --sealpixel-shadow-raised: 0 4px 12px rgba(30, 20, 10, 0.12);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealpixel/ui",
3
- "version": "1.0.0-rc.0",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "Default, themeable Sealpixel editor UI as Web Components (Lit). Optional: the core is headless.",
5
5
  "license": "BUSL-1.1",
6
6
  "repository": {
@@ -37,15 +37,15 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "lit": "^3.3.0",
40
- "@sealpixel/core": "1.0.0-rc.0",
41
- "@sealpixel/plugins": "1.0.0-rc.0"
40
+ "@sealpixel/core": "1.0.0-rc.2",
41
+ "@sealpixel/plugins": "1.0.0-rc.2"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/node": "^24.0.0",
45
45
  "typescript": "^5.9.0",
46
46
  "vitest": "^4.0.0",
47
- "@sealpixel/wasm": "1.0.0-rc.0",
48
- "@sealpixel/config": "0.0.0"
47
+ "@sealpixel/config": "0.0.0",
48
+ "@sealpixel/wasm": "1.0.0-rc.2"
49
49
  },
50
50
  "scripts": {
51
51
  "build": "tsc -p tsconfig.build.json",
@@ -1,28 +0,0 @@
1
- import { LitElement } from 'lit';
2
- export declare class LumbraButton extends LitElement {
3
- static styles: import("lit").CSSResult[];
4
- static properties: {
5
- disabled: {
6
- type: BooleanConstructor;
7
- reflect: boolean;
8
- };
9
- pressed: {
10
- type: BooleanConstructor;
11
- reflect: boolean;
12
- };
13
- variant: {
14
- type: StringConstructor;
15
- reflect: boolean;
16
- };
17
- label: {
18
- type: StringConstructor;
19
- };
20
- };
21
- disabled: boolean;
22
- pressed: boolean;
23
- variant: 'default' | 'primary' | 'ghost';
24
- label: string;
25
- constructor();
26
- render(): import("lit").TemplateResult<1>;
27
- }
28
- //# sourceMappingURL=lumbra-button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lumbra-button.d.ts","sourceRoot":"","sources":["../../src/components/lumbra-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAG5C,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,4BAwDpB;IAEF,OAAgB,UAAU;;;;;;;;;;;;;;;;MAKxB;IAEM,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;;IAUb,MAAM;CAYhB"}
@@ -1,87 +0,0 @@
1
- import { css, html, LitElement } from 'lit';
2
- import { base } from '../theme.js';
3
- export class LumbraButton extends LitElement {
4
- static { this.styles = [
5
- base,
6
- css `
7
- :host {
8
- display: inline-block;
9
- }
10
- button {
11
- min-width: var(--lumbra-touch-target);
12
- min-height: var(--lumbra-touch-target);
13
- padding: 0 calc(var(--lumbra-space) * 1.5);
14
- border: 1px solid var(--lumbra-color-border);
15
- border-radius: var(--lumbra-radius-sm);
16
- background: var(--lumbra-color-surface-2);
17
- color: var(--lumbra-color-fg);
18
- font: inherit;
19
- font-weight: 500;
20
- cursor: pointer;
21
- display: inline-flex;
22
- align-items: center;
23
- justify-content: center;
24
- gap: var(--lumbra-space);
25
- width: 100%;
26
- transition:
27
- background var(--lumbra-transition),
28
- border-color var(--lumbra-transition),
29
- transform var(--lumbra-transition);
30
- }
31
- button:hover:not(:disabled) {
32
- background: var(--lumbra-color-surface-3, var(--lumbra-color-surface-2));
33
- border-color: var(--lumbra-color-fg-muted);
34
- }
35
- button:active:not(:disabled) {
36
- transform: translateY(1px);
37
- }
38
- button:disabled {
39
- opacity: 0.45;
40
- cursor: default;
41
- }
42
- :host([variant='primary']) button {
43
- background: var(--lumbra-color-accent);
44
- border-color: var(--lumbra-color-accent);
45
- color: var(--lumbra-color-accent-fg);
46
- }
47
- :host([variant='ghost']) button {
48
- background: transparent;
49
- border-color: transparent;
50
- }
51
- :host([pressed]) button {
52
- background: var(--lumbra-color-accent-soft, transparent);
53
- border-color: var(--lumbra-color-accent);
54
- color: var(--lumbra-color-fg);
55
- }
56
- :host([variant='primary']) button:hover:not(:disabled) {
57
- filter: brightness(1.08);
58
- }
59
- `,
60
- ]; }
61
- static { this.properties = {
62
- disabled: { type: Boolean, reflect: true },
63
- pressed: { type: Boolean, reflect: true },
64
- variant: { type: String, reflect: true },
65
- label: { type: String },
66
- }; }
67
- constructor() {
68
- super();
69
- this.disabled = false;
70
- this.pressed = false;
71
- this.variant = 'default';
72
- this.label = '';
73
- }
74
- render() {
75
- return html `<button
76
- part="button"
77
- type="button"
78
- ?disabled=${this.disabled}
79
- aria-pressed=${this.pressed ? 'true' : 'false'}
80
- aria-label=${this.label || undefined}
81
- title=${this.label || undefined}
82
- >
83
- <slot></slot>
84
- </button>`;
85
- }
86
- }
87
- //# sourceMappingURL=lumbra-button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lumbra-button.js","sourceRoot":"","sources":["../../src/components/lumbra-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,OAAO,YAAa,SAAQ,UAAU;aAC1B,WAAM,GAAG;QACvB,IAAI;QACJ,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDF;KACF,CAAC;aAEc,eAAU,GAAG;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QACxC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KACxB,CAAC;IAOF;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;kBAGG,IAAI,CAAC,QAAQ;qBACV,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;mBACjC,IAAI,CAAC,KAAK,IAAI,SAAS;cAC5B,IAAI,CAAC,KAAK,IAAI,SAAS;;;cAGvB,CAAC;IACb,CAAC"}
@@ -1,226 +0,0 @@
1
- import { type AnyPlugin, type AssetResolver, type EditorSession, type ExportResult, type OutputOptions, type PluginOptionsMap, type Renderer, type SessionOptions } from '@lumbra/core';
2
- import { LitElement, type TemplateResult } from 'lit';
3
- import { type Dictionary } from '../i18n.js';
4
- import type { UiTool } from '../tool.js';
5
- export type EditorSource = File | Blob | Uint8Array | string;
6
- /**
7
- * The default editor. Headless `EditorSession` underneath; this element adds
8
- * the responsive shell, tools and events.
9
- *
10
- * Events: `lumbra:ready`, `lumbra:load`, `lumbra:change` ({ log, index }),
11
- * `lumbra:process` (ExportResult), `lumbra:error` (LumbraError).
12
- */
13
- export declare class LumbraEditor extends LitElement {
14
- static styles: import("lit").CSSResult[];
15
- static properties: {
16
- plugins: {
17
- attribute: boolean;
18
- };
19
- pluginOptions: {
20
- attribute: string;
21
- converter: {
22
- fromAttribute: (value: string | null) => Readonly<Record<string, unknown>> | null;
23
- toAttribute: (value: PluginOptionsMap | null) => string | null;
24
- };
25
- };
26
- session: {
27
- attribute: boolean;
28
- };
29
- renderer: {
30
- attribute: boolean;
31
- };
32
- assets: {
33
- attribute: boolean;
34
- };
35
- server: {
36
- attribute: boolean;
37
- };
38
- serverEndpoint: {
39
- type: StringConstructor;
40
- attribute: string;
41
- };
42
- src: {
43
- attribute: boolean;
44
- };
45
- editLog: {
46
- attribute: boolean;
47
- };
48
- defaultEditLog: {
49
- attribute: boolean;
50
- };
51
- output: {
52
- attribute: boolean;
53
- };
54
- theme: {
55
- type: StringConstructor;
56
- reflect: boolean;
57
- };
58
- locale: {
59
- type: StringConstructor;
60
- };
61
- dictionary: {
62
- attribute: boolean;
63
- };
64
- tools: {
65
- attribute: boolean;
66
- };
67
- activeTool: {
68
- type: StringConstructor;
69
- attribute: string;
70
- };
71
- showExport: {
72
- type: StringConstructor;
73
- attribute: string;
74
- };
75
- showDownload: {
76
- type: StringConstructor;
77
- attribute: string;
78
- };
79
- showHistory: {
80
- type: StringConstructor;
81
- attribute: string;
82
- };
83
- downloadLabel: {
84
- type: StringConstructor;
85
- attribute: string;
86
- };
87
- _busy: {
88
- state: boolean;
89
- };
90
- _processListeners: {
91
- state: boolean;
92
- };
93
- _toast: {
94
- state: boolean;
95
- };
96
- _dragover: {
97
- state: boolean;
98
- };
99
- _wide: {
100
- state: boolean;
101
- };
102
- _pluginTools: {
103
- state: boolean;
104
- };
105
- };
106
- plugins: readonly AnyPlugin[] | null;
107
- /** `{ pluginId: partialOptions }` applied to `plugins` (or the defaults) through each plugin's `configure()`. */
108
- pluginOptions: PluginOptionsMap | null;
109
- session: EditorSession | null;
110
- renderer: Renderer | null;
111
- /** Fonts and images. Defaults to a fetch resolver over the plugins' declarations. */
112
- assets: AssetResolver | null;
113
- /** Server rendering configuration; `server-endpoint` is the attribute shorthand. */
114
- server: SessionOptions['server'] | null;
115
- serverEndpoint: string | null;
116
- src: EditorSource | null;
117
- /** Controlled mode: the host owns the log. */
118
- editLog: unknown;
119
- /** Uncontrolled: applied once on load. */
120
- defaultEditLog: unknown;
121
- output: OutputOptions;
122
- theme: 'dark' | 'light' | 'auto';
123
- locale: string;
124
- /** Overrides the shipped dictionary for `locale`; shipped locales resolve automatically. */
125
- dictionary: Dictionary | null;
126
- tools: Record<string, UiTool> | null;
127
- activeTool: string | null;
128
- /**
129
- * When the Export button is shown. `auto` (default) shows it only while a
130
- * `lumbra:process` listener is attached, because Export hands the result to
131
- * the host and does nothing visible otherwise. Download is always shown.
132
- */
133
- showExport: 'auto' | 'always' | 'never';
134
- /** `always` (default) or `never`. Hosts that only consume `lumbra:process` hide the button. */
135
- showDownload: 'always' | 'never';
136
- /** `all` (default), `buttons` (undo and redo, no timeline) or `none` (also disables the undo/redo shortcuts). */
137
- showHistory: 'all' | 'buttons' | 'none';
138
- /** Custom text for the Download button; the localized label when null. */
139
- downloadLabel: string | null;
140
- _busy: boolean;
141
- _processListeners: number;
142
- _toast: {
143
- text: string;
144
- hash: string;
145
- } | null;
146
- _dragover: boolean;
147
- _wide: boolean;
148
- /** Tools loaded from `plugin.tool()`, keyed by plugin id. */
149
- _pluginTools: Record<string, UiTool>;
150
- private resizeObserver;
151
- private toolLoads;
152
- /**
153
- * Used when no `renderer` property is set. `@lumbra/element` installs a
154
- * factory that starts the bundled worker; without it the editor renders inline.
155
- */
156
- static defaultRendererFactory: ((plugins: readonly AnyPlugin[]) => Renderer) | null;
157
- private readonly ctl;
158
- private i18n;
159
- private ownsSession;
160
- private lastEmittedVersion;
161
- private lastAppliedControlled;
162
- private hint;
163
- private previousTool;
164
- private loadedSrc;
165
- constructor();
166
- addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
167
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
168
- removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
169
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
170
- /** A renderer the editor made through the factory dies with the session; a host's renderer lives on. */
171
- private disposeOwnedRenderer;
172
- /** `plugins` (or the defaults) with `pluginOptions` applied. Invalid options raise `lumbra:error`. */
173
- private effectivePlugins;
174
- /** The live session, created on first connection when none was passed. */
175
- getSession(): EditorSession;
176
- getEditLog(): {
177
- log: import("@lumbra/core").EditLog;
178
- index: number;
179
- };
180
- setEditLog(saved: unknown, index?: number): void;
181
- undo(): void;
182
- redo(): void;
183
- timeTravel(index: number): void;
184
- export(output?: OutputOptions, options?: {
185
- embedEditLog?: boolean;
186
- }): Promise<ExportResult>;
187
- download(options?: {
188
- output?: OutputOptions;
189
- filename?: string;
190
- embedEditLog?: boolean;
191
- }): Promise<{
192
- filename: string;
193
- result: ExportResult | import("@lumbra/core").ServerRenderResult;
194
- }>;
195
- private ensureSession;
196
- connectedCallback(): void;
197
- disconnectedCallback(): void;
198
- willUpdate(changed: Map<string, unknown>): void;
199
- updated(): void;
200
- private lastError;
201
- private loadSource;
202
- private applyControlled;
203
- /** Whether the owned session was built from the current `plugins` and `renderer`. */
204
- private sessionMatchesProps;
205
- private sessionRenderer;
206
- private sessionAssets;
207
- private sessionServer;
208
- private currentTools;
209
- /** Plugins may ship their own tool; load each once and re-render when it arrives. */
210
- private loadPluginTools;
211
- private get stage();
212
- private toolContext;
213
- private syncActiveTool;
214
- private onPointerDown;
215
- private onKeydown;
216
- private onExport;
217
- private onDownload;
218
- private announce;
219
- private toastTimer;
220
- /** Brief confirmation over the stage: format, size and hash of the result. */
221
- private toast;
222
- private onFiles;
223
- render(): TemplateResult<1>;
224
- private renderEmpty;
225
- }
226
- //# sourceMappingURL=lumbra-editor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lumbra-editor.d.ts","sourceRoot":"","sources":["../../src/components/lumbra-editor.ts"],"names":[],"mappings":"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"}