@dxos/lit-theme-editor 0.8.2-main.10c050d
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/LICENSE +8 -0
- package/README.md +3 -0
- package/dist/src/dx-theme-editor/dx-range-spinbutton.d.ts +16 -0
- package/dist/src/dx-theme-editor/dx-range-spinbutton.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-range-spinbutton.js +127 -0
- package/dist/src/dx-theme-editor/dx-range-spinbutton.js.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-alias-colors.d.ts +21 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-alias-colors.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-alias-colors.js +267 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-alias-colors.js.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-physical-colors.d.ts +19 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-physical-colors.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-physical-colors.js +163 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-physical-colors.js.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-semantic-colors.d.ts +32 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-semantic-colors.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-semantic-colors.js +474 -0
- package/dist/src/dx-theme-editor/dx-theme-editor-semantic-colors.js.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.d.ts +16 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.js +160 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.js.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.lit-stories.d.ts +22 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.lit-stories.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.lit-stories.js +27 -0
- package/dist/src/dx-theme-editor/dx-theme-editor.lit-stories.js.map +1 -0
- package/dist/src/dx-theme-editor/index.d.ts +5 -0
- package/dist/src/dx-theme-editor/index.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/index.js +8 -0
- package/dist/src/dx-theme-editor/index.js.map +1 -0
- package/dist/src/dx-theme-editor/util.d.ts +8 -0
- package/dist/src/dx-theme-editor/util.d.ts.map +1 -0
- package/dist/src/dx-theme-editor/util.js +61 -0
- package/dist/src/dx-theme-editor/util.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/src/dx-theme-editor/dx-range-spinbutton.d.ts +16 -0
- package/dist/types/src/dx-theme-editor/dx-range-spinbutton.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-range-spinbutton.js +127 -0
- package/dist/types/src/dx-theme-editor/dx-range-spinbutton.js.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-alias-colors.d.ts +21 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-alias-colors.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-alias-colors.js +267 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-alias-colors.js.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-physical-colors.d.ts +19 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-physical-colors.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-physical-colors.js +163 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-physical-colors.js.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-semantic-colors.d.ts +32 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-semantic-colors.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-semantic-colors.js +474 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor-semantic-colors.js.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.d.ts +16 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.js +160 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.js.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.lit-stories.d.ts +22 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.lit-stories.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.lit-stories.js +27 -0
- package/dist/types/src/dx-theme-editor/dx-theme-editor.lit-stories.js.map +1 -0
- package/dist/types/src/dx-theme-editor/index.d.ts +5 -0
- package/dist/types/src/dx-theme-editor/index.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/index.js +8 -0
- package/dist/types/src/dx-theme-editor/index.js.map +1 -0
- package/dist/types/src/dx-theme-editor/util.d.ts +8 -0
- package/dist/types/src/dx-theme-editor/util.d.ts.map +1 -0
- package/dist/types/src/dx-theme-editor/util.js +61 -0
- package/dist/types/src/dx-theme-editor/util.js.map +1 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/index.js +5 -0
- package/dist/types/src/index.js.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +40 -0
- package/src/dx-theme-editor/dx-range-spinbutton.ts +124 -0
- package/src/dx-theme-editor/dx-theme-editor-alias-colors.ts +305 -0
- package/src/dx-theme-editor/dx-theme-editor-physical-colors.ts +179 -0
- package/src/dx-theme-editor/dx-theme-editor-semantic-colors.ts +558 -0
- package/src/dx-theme-editor/dx-theme-editor.lit-stories.ts +37 -0
- package/src/dx-theme-editor/dx-theme-editor.pcss +299 -0
- package/src/dx-theme-editor/dx-theme-editor.ts +158 -0
- package/src/dx-theme-editor/index.ts +8 -0
- package/src/dx-theme-editor/util.ts +66 -0
- package/src/index.ts +5 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
5
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
6
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
7
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
8
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9
|
+
};
|
|
10
|
+
import { LitElement, html } from 'lit';
|
|
11
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
12
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
13
|
+
import './dx-theme-editor-physical-colors';
|
|
14
|
+
import './dx-theme-editor-semantic-colors';
|
|
15
|
+
import './dx-theme-editor-alias-colors';
|
|
16
|
+
import { reset, restore, tokenSetUpdateEvent } from './util';
|
|
17
|
+
let DxThemeEditor = class DxThemeEditor extends LitElement {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.activeTab = 'physical';
|
|
21
|
+
this.currentTokenSet = restore();
|
|
22
|
+
this.handleTokenSetUpdate = () => {
|
|
23
|
+
this.currentTokenSet = restore();
|
|
24
|
+
this.requestUpdate();
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
handleTabClick(tab) {
|
|
28
|
+
this.activeTab = tab;
|
|
29
|
+
}
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
super.connectedCallback();
|
|
32
|
+
window.addEventListener(tokenSetUpdateEvent, this.handleTokenSetUpdate);
|
|
33
|
+
}
|
|
34
|
+
disconnectedCallback() {
|
|
35
|
+
super.disconnectedCallback();
|
|
36
|
+
window.removeEventListener(tokenSetUpdateEvent, this.handleTokenSetUpdate);
|
|
37
|
+
}
|
|
38
|
+
render() {
|
|
39
|
+
return html `
|
|
40
|
+
<div class="theme-editor-container">
|
|
41
|
+
<div class="tabs-container" role="tablist">
|
|
42
|
+
<button
|
|
43
|
+
id="tab-physical"
|
|
44
|
+
class=${classMap({ 'dx-focus-ring': true, tab: true, active: this.activeTab === 'physical' })}
|
|
45
|
+
role="tab"
|
|
46
|
+
aria-selected=${this.activeTab === 'physical'}
|
|
47
|
+
aria-controls="panel-physical"
|
|
48
|
+
@click=${() => this.handleTabClick('physical')}
|
|
49
|
+
>
|
|
50
|
+
Physical
|
|
51
|
+
</button>
|
|
52
|
+
<button
|
|
53
|
+
id="tab-semantic"
|
|
54
|
+
class=${classMap({ 'dx-focus-ring': true, tab: true, active: this.activeTab === 'semantic' })}
|
|
55
|
+
role="tab"
|
|
56
|
+
aria-selected=${this.activeTab === 'semantic'}
|
|
57
|
+
aria-controls="panel-semantic"
|
|
58
|
+
@click=${() => this.handleTabClick('semantic')}
|
|
59
|
+
>
|
|
60
|
+
Semantic
|
|
61
|
+
</button>
|
|
62
|
+
<button
|
|
63
|
+
id="tab-alias"
|
|
64
|
+
class=${classMap({ 'dx-focus-ring': true, tab: true, active: this.activeTab === 'alias' })}
|
|
65
|
+
role="tab"
|
|
66
|
+
aria-selected=${this.activeTab === 'alias'}
|
|
67
|
+
aria-controls="panel-alias"
|
|
68
|
+
@click=${() => this.handleTabClick('alias')}
|
|
69
|
+
>
|
|
70
|
+
Alias
|
|
71
|
+
</button>
|
|
72
|
+
<button
|
|
73
|
+
id="tab-json"
|
|
74
|
+
class=${classMap({ 'dx-focus-ring': true, tab: true, active: this.activeTab === 'json' })}
|
|
75
|
+
role="tab"
|
|
76
|
+
aria-selected=${this.activeTab === 'json'}
|
|
77
|
+
aria-controls="panel-json"
|
|
78
|
+
@click=${() => this.handleTabClick('json')}
|
|
79
|
+
>
|
|
80
|
+
JSON
|
|
81
|
+
</button>
|
|
82
|
+
<button
|
|
83
|
+
id="tab-reset"
|
|
84
|
+
class=${classMap({ 'dx-focus-ring': true, tab: true, active: this.activeTab === 'reset' })}
|
|
85
|
+
role="tab"
|
|
86
|
+
aria-selected=${this.activeTab === 'reset'}
|
|
87
|
+
aria-controls="panel-reset"
|
|
88
|
+
@click=${() => this.handleTabClick('reset')}
|
|
89
|
+
>
|
|
90
|
+
Reset
|
|
91
|
+
</button>
|
|
92
|
+
</div>
|
|
93
|
+
|
|
94
|
+
<div
|
|
95
|
+
id="panel-physical"
|
|
96
|
+
class=${classMap({ 'tab-panel': true, active: this.activeTab === 'physical' })}
|
|
97
|
+
role="tabpanel"
|
|
98
|
+
aria-labelledby="tab-physical"
|
|
99
|
+
?hidden=${this.activeTab !== 'physical'}
|
|
100
|
+
>
|
|
101
|
+
<dx-theme-editor-physical-colors></dx-theme-editor-physical-colors>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div
|
|
105
|
+
id="panel-semantic"
|
|
106
|
+
class=${classMap({ 'tab-panel': true, active: this.activeTab === 'semantic' })}
|
|
107
|
+
role="tabpanel"
|
|
108
|
+
aria-labelledby="tab-semantic"
|
|
109
|
+
?hidden=${this.activeTab !== 'semantic'}
|
|
110
|
+
>
|
|
111
|
+
<dx-theme-editor-semantic-colors></dx-theme-editor-semantic-colors>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<div
|
|
115
|
+
id="panel-alias"
|
|
116
|
+
class=${classMap({ 'tab-panel': true, active: this.activeTab === 'alias' })}
|
|
117
|
+
role="tabpanel"
|
|
118
|
+
aria-labelledby="tab-alias"
|
|
119
|
+
?hidden=${this.activeTab !== 'alias'}
|
|
120
|
+
>
|
|
121
|
+
<dx-theme-editor-alias-colors></dx-theme-editor-alias-colors>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div
|
|
125
|
+
id="panel-json"
|
|
126
|
+
class=${classMap({ 'tab-panel': true, active: this.activeTab === 'json' })}
|
|
127
|
+
role="tabpanel"
|
|
128
|
+
aria-labelledby="tab-json"
|
|
129
|
+
?hidden=${this.activeTab !== 'json'}
|
|
130
|
+
>
|
|
131
|
+
<textarea readonly>${JSON.stringify(this.currentTokenSet, null, 2)}</textarea>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<div
|
|
135
|
+
id="panel-reset"
|
|
136
|
+
class=${classMap({ 'tab-panel': true, active: this.activeTab === 'reset' })}
|
|
137
|
+
role="tabpanel"
|
|
138
|
+
aria-labelledby="tab-reset"
|
|
139
|
+
?hidden=${this.activeTab !== 'reset'}
|
|
140
|
+
>
|
|
141
|
+
<button class="dx-button dx-focus-ring" data-variant="destructive" @click=${() => reset()}>Reset</button>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
146
|
+
createRenderRoot() {
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
__decorate([
|
|
151
|
+
state()
|
|
152
|
+
], DxThemeEditor.prototype, "activeTab", void 0);
|
|
153
|
+
__decorate([
|
|
154
|
+
state()
|
|
155
|
+
], DxThemeEditor.prototype, "currentTokenSet", void 0);
|
|
156
|
+
DxThemeEditor = __decorate([
|
|
157
|
+
customElement('dx-theme-editor')
|
|
158
|
+
], DxThemeEditor);
|
|
159
|
+
export { DxThemeEditor };
|
|
160
|
+
//# sourceMappingURL=dx-theme-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dx-theme-editor.js","sourceRoot":"","sources":["../../../../src/dx-theme-editor/dx-theme-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import './dx-theme-editor.ts';
|
|
2
|
+
import './dx-theme-editor-physical-colors.ts';
|
|
3
|
+
import './dx-theme-editor-semantic-colors.ts';
|
|
4
|
+
import './dx-theme-editor-alias-colors.ts';
|
|
5
|
+
import './dx-theme-editor.pcss';
|
|
6
|
+
import '@dxos/lit-ui';
|
|
7
|
+
import { type DxThemeEditorProps } from './dx-theme-editor';
|
|
8
|
+
import { type DxThemeEditorAliasColorsProps } from './dx-theme-editor-alias-colors';
|
|
9
|
+
import { type DxThemeEditorPhysicalColorsProps } from './dx-theme-editor-physical-colors';
|
|
10
|
+
import { type DxThemeEditorSemanticColorsProps } from './dx-theme-editor-semantic-colors';
|
|
11
|
+
declare const _default: {
|
|
12
|
+
title: string;
|
|
13
|
+
parameters: {
|
|
14
|
+
layout: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
18
|
+
export declare const CombinedThemeEditor: (props: DxThemeEditorProps) => import("lit").TemplateResult<1>;
|
|
19
|
+
export declare const PhysicalColors: (props: DxThemeEditorPhysicalColorsProps) => import("lit").TemplateResult<1>;
|
|
20
|
+
export declare const SemanticColors: (props: DxThemeEditorSemanticColorsProps) => import("lit").TemplateResult<1>;
|
|
21
|
+
export declare const AliasColors: (props: DxThemeEditorAliasColorsProps) => import("lit").TemplateResult<1>;
|
|
22
|
+
//# sourceMappingURL=dx-theme-editor.lit-stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dx-theme-editor.lit-stories.d.ts","sourceRoot":"","sources":["../../../../src/dx-theme-editor/dx-theme-editor.lit-stories.ts"],"names":[],"mappings":"AAIA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,wBAAwB,CAAC;AAChC,OAAO,cAAc,CAAC;AAGtB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;;;;;;;AAE1F,wBAGE;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,kBAAkB,oCAE5D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,gCAAgC,oCAErE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,gCAAgC,oCAErE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,6BAA6B,oCAE/D,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import './dx-theme-editor.ts';
|
|
5
|
+
import './dx-theme-editor-physical-colors.ts';
|
|
6
|
+
import './dx-theme-editor-semantic-colors.ts';
|
|
7
|
+
import './dx-theme-editor-alias-colors.ts';
|
|
8
|
+
import './dx-theme-editor.pcss';
|
|
9
|
+
import '@dxos/lit-ui';
|
|
10
|
+
import { html } from 'lit';
|
|
11
|
+
export default {
|
|
12
|
+
title: 'dx-theme-editor',
|
|
13
|
+
parameters: { layout: 'fullscreen' },
|
|
14
|
+
};
|
|
15
|
+
export const CombinedThemeEditor = (props) => {
|
|
16
|
+
return html `<dx-theme-editor></dx-theme-editor>`;
|
|
17
|
+
};
|
|
18
|
+
export const PhysicalColors = (props) => {
|
|
19
|
+
return html `<dx-theme-editor-physical-colors></dx-theme-editor-physical-colors>`;
|
|
20
|
+
};
|
|
21
|
+
export const SemanticColors = (props) => {
|
|
22
|
+
return html `<dx-theme-editor-semantic-colors></dx-theme-editor-semantic-colors>`;
|
|
23
|
+
};
|
|
24
|
+
export const AliasColors = (props) => {
|
|
25
|
+
return html `<dx-theme-editor-alias-colors></dx-theme-editor-alias-colors>`;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=dx-theme-editor.lit-stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dx-theme-editor.lit-stories.js","sourceRoot":"","sources":["../../../../src/dx-theme-editor/dx-theme-editor.lit-stories.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,wBAAwB,CAAC;AAChC,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAO3B,eAAe;IACb,KAAK,EAAE,iBAAiB;IACxB,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE;IAC/D,OAAO,IAAI,CAAA,qCAAqC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAuC,EAAE,EAAE;IACxE,OAAO,IAAI,CAAA,qEAAqE,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAuC,EAAE,EAAE;IACxE,OAAO,IAAI,CAAA,qEAAqE,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAoC,EAAE,EAAE;IAClE,OAAO,IAAI,CAAA,+DAA+D,CAAC;AAC7E,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/dx-theme-editor/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dx-theme-editor/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type TokenSet } from '@ch-ui/tokens';
|
|
2
|
+
export declare const tokenSetUpdateEvent = "dx-theme-editor-token-set-update";
|
|
3
|
+
export declare const notifyTokenSetUpdate: () => void;
|
|
4
|
+
export declare const save: (value: string) => unknown;
|
|
5
|
+
export declare const restore: () => TokenSet;
|
|
6
|
+
export declare const saveAndRender: (tokenSet?: TokenSet) => void;
|
|
7
|
+
export declare const reset: () => void;
|
|
8
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/dx-theme-editor/util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9D,eAAO,MAAM,mBAAmB,qCAAqC,CAAC;AAEtE,eAAO,MAAM,oBAAoB,YAEhC,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,OAAO,MAAM,YAcjC,CAAC;AAEF,eAAO,MAAM,OAAO,QAE4D,QAC/E,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,WAAW,QAAQ,SAqBhD,CAAC;AAEF,eAAO,MAAM,KAAK,YAGjB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import { renderTokenSet } from '@ch-ui/tokens';
|
|
5
|
+
import { log } from '@dxos/log';
|
|
6
|
+
import { userDefaultTokenSet } from '@dxos/react-ui-theme';
|
|
7
|
+
const storageKey = 'dxos.org/dx-theme-editor/user-tokens';
|
|
8
|
+
export const tokenSetUpdateEvent = 'dx-theme-editor-token-set-update';
|
|
9
|
+
export const notifyTokenSetUpdate = () => {
|
|
10
|
+
window.dispatchEvent(new CustomEvent(tokenSetUpdateEvent));
|
|
11
|
+
};
|
|
12
|
+
export const save = (value) => {
|
|
13
|
+
let nextValue = null;
|
|
14
|
+
try {
|
|
15
|
+
nextValue = JSON.stringify(JSON.parse(value));
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
log.warn('Invalid JSON', err);
|
|
19
|
+
return err;
|
|
20
|
+
}
|
|
21
|
+
if (nextValue) {
|
|
22
|
+
localStorage.setItem(storageKey, nextValue);
|
|
23
|
+
log.debug('Saved');
|
|
24
|
+
notifyTokenSetUpdate();
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export const restore = () => {
|
|
29
|
+
const storedTokenSet = localStorage.getItem(storageKey);
|
|
30
|
+
return (storedTokenSet ? JSON.parse(storedTokenSet) : userDefaultTokenSet);
|
|
31
|
+
};
|
|
32
|
+
const styleNodeId = `${storageKey}/style`;
|
|
33
|
+
export const saveAndRender = (tokenSet) => {
|
|
34
|
+
let tokens = '';
|
|
35
|
+
try {
|
|
36
|
+
const nextTokens = tokenSet !== null && tokenSet !== void 0 ? tokenSet : restore();
|
|
37
|
+
localStorage.setItem(storageKey, JSON.stringify(nextTokens));
|
|
38
|
+
tokens = `@layer user-tokens { ${renderTokenSet(nextTokens)} }`;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return log.warn('Failed to render', err);
|
|
42
|
+
}
|
|
43
|
+
if (tokens) {
|
|
44
|
+
const styleNode = document.getElementById(styleNodeId);
|
|
45
|
+
if (styleNode) {
|
|
46
|
+
styleNode.textContent = tokens;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const newStyleNode = document.createElement('style');
|
|
50
|
+
newStyleNode.id = styleNodeId;
|
|
51
|
+
newStyleNode.textContent = tokens;
|
|
52
|
+
document.head.appendChild(newStyleNode);
|
|
53
|
+
}
|
|
54
|
+
notifyTokenSetUpdate();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
export const reset = () => {
|
|
58
|
+
saveAndRender(userDefaultTokenSet);
|
|
59
|
+
notifyTokenSetUpdate();
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/dx-theme-editor/util.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,UAAU,GAAG,sCAAsC,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAEtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE;IACpC,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,oBAAoB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAa,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,UAAU,QAAQ,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAmB,EAAE,EAAE;IACnD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,OAAO,EAAE,CAAC;QACzC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7D,MAAM,GAAG,wBAAwB,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACrD,YAAY,CAAC,EAAE,GAAG,WAAW,CAAC;YAC9B,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QACD,oBAAoB,EAAE,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACxB,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACnC,oBAAoB,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"5.8.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dxos/lit-theme-editor",
|
|
3
|
+
"version": "0.8.2-main.10c050d",
|
|
4
|
+
"description": "A component for editing the user tokens layer of dxos-theme.",
|
|
5
|
+
"homepage": "https://dxos.org",
|
|
6
|
+
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "DXOS.org",
|
|
9
|
+
"sideEffects": true,
|
|
10
|
+
"type": "module",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/types/src/index.d.ts",
|
|
14
|
+
"browser": "./dist/src/index.js",
|
|
15
|
+
"node": "./dist/src/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./dx-theme-editor.pcss": "./src/dx-theme-editor/dx-theme-editor.pcss"
|
|
18
|
+
},
|
|
19
|
+
"main": "dist/src/index.js",
|
|
20
|
+
"types": "dist/src/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"src",
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@ch-ui/colors": "1.2.0",
|
|
27
|
+
"@ch-ui/tokens": "2.4.0",
|
|
28
|
+
"lit": "^3.2.0",
|
|
29
|
+
"@dxos/lit-ui": "0.8.2-main.10c050d",
|
|
30
|
+
"@dxos/log": "0.8.2-main.10c050d",
|
|
31
|
+
"@dxos/react-ui-theme": "0.8.2-main.10c050d",
|
|
32
|
+
"@dxos/react-hooks": "0.8.2-main.10c050d"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@dxos/test-utils": "0.8.2-main.10c050d"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { LitElement, html } from 'lit';
|
|
6
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
7
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
8
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
9
|
+
|
|
10
|
+
export type DxRangeSpinbuttonVariant = 'reverse-range' | 'reverse-order' | 'torsion';
|
|
11
|
+
|
|
12
|
+
@customElement('dx-range-spinbutton')
|
|
13
|
+
export class DxRangeSpinbutton extends LitElement {
|
|
14
|
+
@property({ type: String })
|
|
15
|
+
label: string = '';
|
|
16
|
+
|
|
17
|
+
@property({ type: String })
|
|
18
|
+
min: string | number = 0;
|
|
19
|
+
|
|
20
|
+
@property({ type: String })
|
|
21
|
+
max: string | number = 100;
|
|
22
|
+
|
|
23
|
+
@property({ type: String })
|
|
24
|
+
step: string | number = 1;
|
|
25
|
+
|
|
26
|
+
@property({ type: String })
|
|
27
|
+
value: string | number = 0;
|
|
28
|
+
|
|
29
|
+
@property({ type: String })
|
|
30
|
+
headingId: string = '';
|
|
31
|
+
|
|
32
|
+
@property({ type: String })
|
|
33
|
+
variant?: DxRangeSpinbuttonVariant;
|
|
34
|
+
|
|
35
|
+
private handleInput(e: Event): void {
|
|
36
|
+
const value = (e.target as HTMLInputElement).value;
|
|
37
|
+
this.value = value;
|
|
38
|
+
|
|
39
|
+
// For torsion variant, calculate and apply styles
|
|
40
|
+
if (this.variant === 'torsion') {
|
|
41
|
+
const controlInputsDiv = (e.target as HTMLElement).closest('.control-inputs');
|
|
42
|
+
if (controlInputsDiv) {
|
|
43
|
+
const styles = this.calculateTorsionStyles(Number(value), Number(this.min), Number(this.max));
|
|
44
|
+
Object.entries(styles).forEach(([key, value]) => {
|
|
45
|
+
(controlInputsDiv as HTMLElement).style.setProperty(key, value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Dispatch custom event
|
|
51
|
+
this.dispatchEvent(
|
|
52
|
+
new CustomEvent('value-changed', {
|
|
53
|
+
detail: { value: parseFloat(value) },
|
|
54
|
+
bubbles: true,
|
|
55
|
+
composed: true,
|
|
56
|
+
}),
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private calculateTorsionStyles(value: number, min: number, max: number): Record<string, string> {
|
|
61
|
+
// Calculate the width per step
|
|
62
|
+
const totalSteps = Math.abs(min) + Math.abs(max);
|
|
63
|
+
const widthPerStep = 100 / totalSteps; // Using percentage for width
|
|
64
|
+
|
|
65
|
+
// Calculate the width of the before element
|
|
66
|
+
const beforeWidth = `${Math.abs(value) * widthPerStep}%`;
|
|
67
|
+
|
|
68
|
+
// Calculate the position of the before element
|
|
69
|
+
let beforeLeft = '50%';
|
|
70
|
+
if (value < 0) {
|
|
71
|
+
beforeLeft = `calc(50% - ${beforeWidth})`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
'--before-width': beforeWidth,
|
|
76
|
+
'--before-left': beforeLeft,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
override render() {
|
|
81
|
+
const controlId = `${this.headingId}-${this.label.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;
|
|
82
|
+
|
|
83
|
+
// For torsion variant, calculate initial styles
|
|
84
|
+
const isTorsion = this.variant === 'torsion';
|
|
85
|
+
const initialStyles = isTorsion
|
|
86
|
+
? this.calculateTorsionStyles(Number(this.value), Number(this.min), Number(this.max))
|
|
87
|
+
: {};
|
|
88
|
+
|
|
89
|
+
return html`
|
|
90
|
+
<label class="control-label" id="${controlId}-label" for="${controlId}-range">${this.label}:</label>
|
|
91
|
+
<div
|
|
92
|
+
class="${classMap({ 'control-inputs': true, ...(this.variant && { [this.variant]: true }) })}"
|
|
93
|
+
style=${isTorsion ? styleMap(initialStyles) : undefined}
|
|
94
|
+
>
|
|
95
|
+
<input
|
|
96
|
+
id="${controlId}-range"
|
|
97
|
+
type="range"
|
|
98
|
+
min="${this.min}"
|
|
99
|
+
max="${this.max}"
|
|
100
|
+
step="${this.step}"
|
|
101
|
+
class="range-input dx-focus-ring"
|
|
102
|
+
.value=${this.value.toString()}
|
|
103
|
+
@input=${this.handleInput}
|
|
104
|
+
aria-labelledby="${this.headingId} ${controlId}-label"
|
|
105
|
+
/>
|
|
106
|
+
<input
|
|
107
|
+
id="${controlId}-number"
|
|
108
|
+
type="number"
|
|
109
|
+
min="${this.min}"
|
|
110
|
+
max="${this.max}"
|
|
111
|
+
step="${this.step}"
|
|
112
|
+
class="number-input dx-input dx-focus-ring"
|
|
113
|
+
.value=${this.value.toString()}
|
|
114
|
+
@input=${this.handleInput}
|
|
115
|
+
aria-labelledby="${this.headingId} ${controlId}-label"
|
|
116
|
+
/>
|
|
117
|
+
</div>
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
override createRenderRoot(): this {
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
}
|