@tylertech/forge 3.4.1 → 3.5.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/custom-elements.json +1163 -134
- package/dist/avatar/forge-avatar.css +0 -1
- package/dist/dialog/forge-dialog.css +0 -1
- package/dist/divider/forge-divider.css +0 -1
- package/dist/label-value/forge-label-value.css +2 -0
- package/dist/lib.js +174 -1
- package/dist/lib.js.map +4 -4
- package/dist/vscode.css-custom-data.json +164 -3
- package/dist/vscode.html-custom-data.json +144 -2
- package/esm/app-bar/search/app-bar-search.js +1 -1
- package/esm/autocomplete/autocomplete-core.js +4 -2
- package/esm/autocomplete/autocomplete.js +1 -5
- package/esm/avatar/avatar.js +1 -1
- package/esm/backdrop/backdrop.js +1 -1
- package/esm/button-toggle/button-toggle/button-toggle-core.js +0 -1
- package/esm/chips/chip/chip.js +1 -1
- package/esm/core/utils/a11y-utils.d.ts +20 -1
- package/esm/core/utils/a11y-utils.js +26 -1
- package/esm/divider/divider.js +1 -1
- package/esm/drawer/drawer/drawer.js +1 -1
- package/esm/drawer/mini-drawer/mini-drawer.d.ts +1 -0
- package/esm/drawer/mini-drawer/mini-drawer.js +2 -1
- package/esm/file-picker/file-picker-adapter.d.ts +2 -0
- package/esm/file-picker/file-picker-adapter.js +6 -0
- package/esm/file-picker/file-picker-core.js +1 -0
- package/esm/icon-button/icon-button.js +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.js +8 -0
- package/esm/key/index.d.ts +7 -0
- package/esm/key/index.js +7 -0
- package/esm/key/key/index.d.ts +7 -0
- package/esm/key/key/index.js +11 -0
- package/esm/key/key/key.d.ts +30 -0
- package/esm/key/key/key.js +43 -0
- package/esm/key/key-item/index.d.ts +7 -0
- package/esm/key/key-item/index.js +11 -0
- package/esm/key/key-item/key-item.d.ts +47 -0
- package/esm/key/key-item/key-item.js +86 -0
- package/esm/label-value/label-value.js +1 -1
- package/esm/linear-progress/linear-progress.js +1 -1
- package/esm/list-dropdown/list-dropdown-aware.d.ts +1 -0
- package/esm/list-dropdown/list-dropdown-aware.js +11 -0
- package/esm/meter/index.d.ts +7 -0
- package/esm/meter/index.js +7 -0
- package/esm/meter/meter/index.d.ts +7 -0
- package/esm/meter/meter/index.js +11 -0
- package/esm/meter/meter/meter.d.ts +187 -0
- package/esm/meter/meter/meter.js +359 -0
- package/esm/meter/meter-group/index.d.ts +7 -0
- package/esm/meter/meter-group/index.js +11 -0
- package/esm/meter/meter-group/meter-group.d.ts +108 -0
- package/esm/meter/meter-group/meter-group.js +198 -0
- package/esm/select/select/select.d.ts +3 -1
- package/esm/split-view/split-view/split-view.js +1 -1
- package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
- package/esm/toolbar/toolbar.d.ts +2 -2
- package/esm/toolbar/toolbar.js +3 -3
- package/package.json +2 -1
- package/sass/avatar/_core.scss +0 -2
- package/sass/backdrop/_core.scss +0 -1
- package/sass/core/styles/tokens/app-bar/search/_tokens.scss +1 -1
- package/sass/core/styles/tokens/drawer/mini/_tokens.scss +1 -0
- package/sass/core/styles/tokens/key/key/_tokens.scss +17 -0
- package/sass/core/styles/tokens/key/key-item/_tokens.scss +22 -0
- package/sass/core/styles/tokens/meter/meter/_tokens.scss +30 -0
- package/sass/core/styles/tokens/meter/meter-group/_tokens.scss +26 -0
- package/sass/core/styles/typography/index.scss +1 -1
- package/sass/divider/_core.scss +0 -1
- package/sass/drawer/base/_core.scss +1 -2
- package/sass/drawer/drawer/drawer.scss +3 -9
- package/sass/drawer/mini-drawer/_core.scss +1 -0
- package/sass/icon-button/icon-button.scss +20 -1
- package/sass/key/key/_core.scss +20 -0
- package/sass/key/key/_token-utils.scss +30 -0
- package/sass/key/key/index.scss +6 -0
- package/sass/key/key/key.scss +26 -0
- package/sass/key/key-item/_core.scss +69 -0
- package/sass/key/key-item/_token-utils.scss +30 -0
- package/sass/key/key-item/index.scss +6 -0
- package/sass/key/key-item/key-item.scss +60 -0
- package/sass/label-value/_core.scss +2 -0
- package/sass/linear-progress/_core.scss +4 -1
- package/sass/meter/meter/_core.scss +206 -0
- package/sass/meter/meter/_token-utils.scss +30 -0
- package/sass/meter/meter/index.scss +6 -0
- package/sass/meter/meter/meter.scss +218 -0
- package/sass/meter/meter-group/_core.scss +83 -0
- package/sass/meter/meter-group/_token-utils.scss +30 -0
- package/sass/meter/meter-group/index.scss +6 -0
- package/sass/meter/meter-group/meter-group.scss +111 -0
- package/sass/split-view/split-view/_mixins.scss +0 -1
- package/sass/split-view/split-view-panel/_mixins.scss +2 -2
- package/sass/toolbar/_core.scss +0 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { __decorate } from "tslib";
|
|
7
|
+
import { debounce } from '@tylertech/forge-core';
|
|
8
|
+
import { html, LitElement, unsafeCSS } from 'lit';
|
|
9
|
+
import { customElement, property, queryAssignedElements, queryAssignedNodes, state } from 'lit/decorators.js';
|
|
10
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
11
|
+
import { setDefaultAria, toggleState } from '../../core/utils/a11y-utils';
|
|
12
|
+
const styles = ':host{display:inline}.forge-meter-group{--_meter-group-background:var(--forge-meter-group-background, var(--forge-theme-surface-container-low, #ebebeb));--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-medium, 16px));--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_meter-group-tickmarks:var(--forge-meter-group-tickmarks, 10);--_meter-group-tickmark-color:var(--forge-meter-group-tickmark-color, var(--forge-theme-outline-high, #212121));--_meter-group-tickmark-opacity:var(--forge-meter-group-tickmark-opacity, 54%)}.forge-meter-group{box-sizing:border-box}.forge-meter-group .heading{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-label1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-label1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-font-size-scale, .75)));font-weight:var(--forge-typography-label1-font-weight,400);line-height:var(--forge-typography-label1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-label-line-height-scale, 1.25)));letter-spacing:var(--forge-typography-label1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-label1-text-transform,inherit);text-decoration:var(--forge-typography-label1-text-decoration,inherit);display:flex;align-items:center;justify-content:space-between;line-height:normal}.forge-meter-group .heading.not-empty{margin-bottom:var(--forge-spacing-xxsmall,4px)}.forge-meter-group .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.forge-meter-group .value{color:var(--forge-theme-text-medium,rgba(0,0,0,.6))}.forge-meter-group .track{position:relative;height:var(--_meter-group-height);border-radius:var(--_meter-group-shape);overflow:hidden;background:var(--_meter-group-background)}.forge-meter-group .track.tickmarks::after{content:\"\";position:relative;display:block;z-index:9999;width:100%;height:100%;margin-left:-1px;background:repeating-linear-gradient(90deg,var(--_meter-group-tickmark-color) 0,var(--_meter-group-tickmark-color) 1px,transparent 1px,transparent calc(100% / (var(--_meter-group-tickmarks) + 1) + 0px));opacity:var(--_meter-group-tickmark-opacity);pointer-events:none}.forge-meter-group .track.inner-shape--inherit{--forge-meter-inner-shape:var(--_meter-group-shape)}.forge-meter-group .track.shape--default{--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)))}.forge-meter-group .track.shape--rounded{--_meter-group-shape:var(--forge-meter-group-shape, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)))}.forge-meter-group .track.shape--squared{--_meter-group-shape:var(--forge-meter-group-shape, 0)}.forge-meter-group .track.density--small{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-xsmall, 8px))}.forge-meter-group .track.density--medium{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-medium, 16px))}.forge-meter-group .track.density--large{--_meter-group-height:var(--forge-meter-group-height, var(--forge-spacing-large, 24px))}:host(:is(:state(vertical),:--vertical)){display:block}:host(:is(:state(vertical),:--vertical)) .forge-meter-group{display:flex;flex-direction:row-reverse;align-items:end;width:fit-content;height:100%;max-width:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .heading{flex-direction:column;align-items:start}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .heading.not-empty{margin-bottom:0;margin-left:var(--forge-spacing-xsmall,8px)}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .track{width:var(--_meter-group-height);height:100%}:host(:is(:state(vertical),:--vertical)) .forge-meter-group .track.tickmarks::after{margin-top:1px;margin-left:0;background:repeating-linear-gradient(90deg,var(--_meter-group-tickmark-color),true 0,var(--_meter-group-tickmark-color),true 1px,transparent 1px,transparent calc(100% / (var(--_meter-group-tickmarks) + 1) + 0px))}@media (forced-colors:active){.track{border:1px solid CanvasText}}';
|
|
13
|
+
/**
|
|
14
|
+
* @tag forge-meter-group
|
|
15
|
+
*
|
|
16
|
+
* @summary Meter groups display several meters together on one track.
|
|
17
|
+
*
|
|
18
|
+
* @state vertical - Applied when the meter group is oriented vertically.
|
|
19
|
+
*
|
|
20
|
+
* @cssproperty --forge-meter-group-background - The background color of the meter group.
|
|
21
|
+
* @cssproperty --forge-meter-group-height - The block size of the meter group.
|
|
22
|
+
* @cssproperty --forge-meter-group-shape - The border radius of the meter group.
|
|
23
|
+
* @cssproperty --forge-meter-group-tickmarks - The number of tickmarks to display.
|
|
24
|
+
* @cssproperty --forge-meter-group-tickmark-color - The color of the tickmarks.
|
|
25
|
+
* @cssproperty --forge-meter-group-tickmark-opacity - The opacity of the tickmarks.
|
|
26
|
+
*
|
|
27
|
+
* @csspart root - The root container element.
|
|
28
|
+
* @csspart track - The element comprising the meter group's background.
|
|
29
|
+
*
|
|
30
|
+
* @slot - The default slot for grouped `<forge-meter>` elements.
|
|
31
|
+
* @slot label - Positions a label above the meter group.
|
|
32
|
+
* @slot value - A textual representation of the meter's value.
|
|
33
|
+
*/
|
|
34
|
+
let MeterGroupComponent = class MeterGroupComponent extends LitElement {
|
|
35
|
+
get labels() {
|
|
36
|
+
return this._internals.labels;
|
|
37
|
+
}
|
|
38
|
+
get form() {
|
|
39
|
+
return this._internals.form;
|
|
40
|
+
}
|
|
41
|
+
constructor() {
|
|
42
|
+
super();
|
|
43
|
+
/**
|
|
44
|
+
* The minimum value of each meter in the group.
|
|
45
|
+
* @default 0
|
|
46
|
+
* @attribute
|
|
47
|
+
*/
|
|
48
|
+
this.min = 0;
|
|
49
|
+
/**
|
|
50
|
+
* The maximum value of each meter in the group.
|
|
51
|
+
* @default 1
|
|
52
|
+
* @attribute
|
|
53
|
+
*/
|
|
54
|
+
this.max = 1;
|
|
55
|
+
/**
|
|
56
|
+
* Whether to display tickmarks.
|
|
57
|
+
* @default false
|
|
58
|
+
* @attribute
|
|
59
|
+
*/
|
|
60
|
+
this.tickmarks = false;
|
|
61
|
+
/**
|
|
62
|
+
* Whether the meter is oriented horizontally or vertically.
|
|
63
|
+
* @default 'horizontal'
|
|
64
|
+
* @attribute
|
|
65
|
+
*/
|
|
66
|
+
this.direction = 'horizontal';
|
|
67
|
+
/**
|
|
68
|
+
* The density of the meter group.
|
|
69
|
+
* @default 'default'
|
|
70
|
+
* @attribute
|
|
71
|
+
*/
|
|
72
|
+
this.density = 'default';
|
|
73
|
+
/**
|
|
74
|
+
* The shape of the meter group.
|
|
75
|
+
* @default 'default'
|
|
76
|
+
* @attribute
|
|
77
|
+
*/
|
|
78
|
+
this.shape = 'default';
|
|
79
|
+
/**
|
|
80
|
+
* The shape of each meter in the group.
|
|
81
|
+
* @default 'default'
|
|
82
|
+
* @attribute inner-shape
|
|
83
|
+
*/
|
|
84
|
+
this.innerShape = 'default';
|
|
85
|
+
this._hasSlottedHeadingContent = false;
|
|
86
|
+
/**
|
|
87
|
+
* Debounce the handler to reduce the number of times it's called during rapid changes,
|
|
88
|
+
* especially when the component is first connected.
|
|
89
|
+
*/
|
|
90
|
+
this._debounceMeterChange = debounce(this._handleMeterChange.bind(this), 0);
|
|
91
|
+
this._internals = this.attachInternals();
|
|
92
|
+
}
|
|
93
|
+
connectedCallback() {
|
|
94
|
+
super.connectedCallback();
|
|
95
|
+
setDefaultAria(this, this._internals, { role: 'group' });
|
|
96
|
+
}
|
|
97
|
+
willUpdate(changedProperties) {
|
|
98
|
+
const keys = Array.from(changedProperties.keys());
|
|
99
|
+
if (keys.includes('direction')) {
|
|
100
|
+
toggleState(this._internals, 'vertical', this.direction === 'vertical');
|
|
101
|
+
}
|
|
102
|
+
if (keys.some(key => ['direction', 'min', 'max'].includes(key.toString()))) {
|
|
103
|
+
this._syncMeters();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
render() {
|
|
107
|
+
return html `
|
|
108
|
+
<div part="root" class="forge-meter-group" @change=${this._debounceMeterChange}>
|
|
109
|
+
<div class=${classMap({ heading: true, 'not-empty': this._hasSlottedHeadingContent })} @slotchange=${this._handleHeadingSlotChange}>
|
|
110
|
+
<div class="label"><slot name="label"></slot></div>
|
|
111
|
+
<div class="value"><slot name="value"></slot></div>
|
|
112
|
+
</div>
|
|
113
|
+
<div
|
|
114
|
+
part="track"
|
|
115
|
+
class=${classMap({
|
|
116
|
+
track: true,
|
|
117
|
+
tickmarks: this.tickmarks,
|
|
118
|
+
[`density--${this.density}`]: true,
|
|
119
|
+
[`inner-shape--${this.innerShape}`]: true,
|
|
120
|
+
[`shape--${this.shape}`]: true
|
|
121
|
+
})}>
|
|
122
|
+
<slot @slotchange=${this._debounceMeterChange}></slot>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Applies the min and max values to each meter in the group. These should always be set on the
|
|
129
|
+
* meter group component to ensure that all meters are in sync.
|
|
130
|
+
*/
|
|
131
|
+
_syncMeters() {
|
|
132
|
+
this._meters.forEach(meter => {
|
|
133
|
+
meter.direction = this.direction;
|
|
134
|
+
meter.min = this.min;
|
|
135
|
+
meter.max = this.max;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Handles changes to the meters in the group, updating their arrangement relative to each other.
|
|
140
|
+
*/
|
|
141
|
+
_handleMeterChange(evt) {
|
|
142
|
+
evt.stopPropagation();
|
|
143
|
+
// Iterate through each slotted meter, applying z-indices based on their order and setting an
|
|
144
|
+
// inset equal to the widths of all preceding meters.
|
|
145
|
+
this._meters.reduce((inset, meter, index, meters) => {
|
|
146
|
+
meter.style.setProperty('--_meter-z-index', `${meters.length - index}`);
|
|
147
|
+
meter.style.setProperty('--_meter-inset', `${inset}%`);
|
|
148
|
+
return inset + meter.percentage;
|
|
149
|
+
}, 0);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Checks whether the meter group has any slotted heading content.
|
|
153
|
+
*/
|
|
154
|
+
_handleHeadingSlotChange() {
|
|
155
|
+
const nodes = [...this._labelNodes, ...this._valueNodes].filter(node => !!node.textContent?.trim());
|
|
156
|
+
this._hasSlottedHeadingContent = !!nodes.length;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
/* @ignore */
|
|
160
|
+
MeterGroupComponent.styles = unsafeCSS(styles);
|
|
161
|
+
MeterGroupComponent.formAssociated = true;
|
|
162
|
+
__decorate([
|
|
163
|
+
property({ type: Number })
|
|
164
|
+
], MeterGroupComponent.prototype, "min", void 0);
|
|
165
|
+
__decorate([
|
|
166
|
+
property({ type: Number })
|
|
167
|
+
], MeterGroupComponent.prototype, "max", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
property({ type: Boolean })
|
|
170
|
+
], MeterGroupComponent.prototype, "tickmarks", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
property()
|
|
173
|
+
], MeterGroupComponent.prototype, "direction", void 0);
|
|
174
|
+
__decorate([
|
|
175
|
+
property()
|
|
176
|
+
], MeterGroupComponent.prototype, "density", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
property()
|
|
179
|
+
], MeterGroupComponent.prototype, "shape", void 0);
|
|
180
|
+
__decorate([
|
|
181
|
+
property({ attribute: 'inner-shape' })
|
|
182
|
+
], MeterGroupComponent.prototype, "innerShape", void 0);
|
|
183
|
+
__decorate([
|
|
184
|
+
state()
|
|
185
|
+
], MeterGroupComponent.prototype, "_hasSlottedHeadingContent", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
queryAssignedNodes({ slot: 'label' })
|
|
188
|
+
], MeterGroupComponent.prototype, "_labelNodes", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
queryAssignedNodes({ slot: 'value' })
|
|
191
|
+
], MeterGroupComponent.prototype, "_valueNodes", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
queryAssignedElements({ selector: 'forge-meter' })
|
|
194
|
+
], MeterGroupComponent.prototype, "_meters", void 0);
|
|
195
|
+
MeterGroupComponent = __decorate([
|
|
196
|
+
customElement('forge-meter-group')
|
|
197
|
+
], MeterGroupComponent);
|
|
198
|
+
export { MeterGroupComponent };
|
|
@@ -29,7 +29,9 @@ declare global {
|
|
|
29
29
|
change: CustomEvent<any>;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
declare const SelectComponent_base: import("../../constants").AbstractConstructor<import("../../core/mixins/form/with-form-associated").WithFormAssociationContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/focus/with-focusable").WithFocusableContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-element-internals").WithElementInternalsContract> & import("../../constants").AbstractConstructor<import("../../field/base/with-base-field").WithBaseFieldContract> & (abstract new () => BaseSelectComponent<SelectCore>)
|
|
32
|
+
declare const SelectComponent_base: import("../../constants").AbstractConstructor<import("../../core/mixins/form/with-form-associated").WithFormAssociationContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/focus/with-focusable").WithFocusableContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-element-internals").WithElementInternalsContract> & import("../../constants").AbstractConstructor<import("../../field/base/with-base-field").WithBaseFieldContract> & ((abstract new () => BaseSelectComponent<SelectCore>) & {
|
|
33
|
+
readonly observedAttributes: string[];
|
|
34
|
+
});
|
|
33
35
|
/**
|
|
34
36
|
* @tag forge-select
|
|
35
37
|
*
|
|
@@ -11,7 +11,7 @@ import { SplitViewCore } from './split-view-core';
|
|
|
11
11
|
import { SPLIT_VIEW_CONSTANTS } from './split-view-constants';
|
|
12
12
|
import { SplitViewPanelComponent } from '../split-view-panel';
|
|
13
13
|
const template = '<template><div class=\"forge-split-view\" id=\"root\" part=\"root\"><slot></slot></div></template>';
|
|
14
|
-
const styles = '.forge-split-view{display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden
|
|
14
|
+
const styles = '.forge-split-view{display:flex;width:100%;height:100%}:host{--forge-split-view-handle-width:8px;display:block;height:100%;width:100%;overflow:hidden}:host([hidden]){display:none}:host([orientation=horizontal]) .forge-split-view{flex-direction:row}:host([orientation=vertical]) .forge-split-view{flex-direction:column}';
|
|
15
15
|
/**
|
|
16
16
|
* @tag forge-split-view
|
|
17
17
|
*/
|
|
@@ -13,7 +13,7 @@ import { SplitViewPanelCore } from './split-view-panel-core';
|
|
|
13
13
|
import { SplitViewPanelAdapter } from './split-view-panel-adapter';
|
|
14
14
|
import { IconComponent, IconRegistry } from '../../icon';
|
|
15
15
|
const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-state-layer target=\"handle\" id=\"state-layer\" exportparts=\"surface:state-layer\"></forge-state-layer><forge-focus-indicator inward target=\"handle\" part=\"focus-indicator\"></forge-focus-indicator></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
|
|
16
|
-
const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden
|
|
16
|
+
const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5bwqam;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5bwqam{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u5bwqbl;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5bwqbl{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5bwqbz;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5bwqbz{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u5bwqcx;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5bwqcx{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u5bwqdh;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5bwqdh{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5bwqdw;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u5bwqdw{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u5bwqeg;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5bwqeg{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u5bwqer;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u5bwqer{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
|
|
17
17
|
import { StateLayerComponent } from '../../state-layer';
|
|
18
18
|
import { FocusIndicatorComponent } from '../../focus-indicator';
|
|
19
19
|
/**
|
package/esm/toolbar/toolbar.d.ts
CHANGED
|
@@ -27,8 +27,8 @@ declare global {
|
|
|
27
27
|
* @attribute {boolean} no-padding - Sets the internal padding style to 0.
|
|
28
28
|
* @attribute {boolean} auto-height - Forces the internal container to use `height: auto` for dynamic content that doesn't fit the static height.
|
|
29
29
|
*
|
|
30
|
-
* @cssproperty --forge-
|
|
31
|
-
* @cssproperty --forge-
|
|
30
|
+
* @cssproperty --forge-toolbar-height - Controls the height.
|
|
31
|
+
* @cssproperty --forge-toolbar-min-height - Controls the minimum height. Defaults to the toolbar height.
|
|
32
32
|
* @cssproperty --forge-theme-surface - Controls the background-color of the toolbar.
|
|
33
33
|
* @cssproperty --forge-toolbar-divider-width - Controls the divider width.
|
|
34
34
|
* @cssproperty --forge-toolbar-divider-style - Controls the divider style.
|
package/esm/toolbar/toolbar.js
CHANGED
|
@@ -8,7 +8,7 @@ import { customElement, attachShadowTemplate, coerceBoolean } from '@tylertech/f
|
|
|
8
8
|
import { BaseComponent } from '../core/base/base-component';
|
|
9
9
|
import { TOOLBAR_CONSTANTS } from './toolbar-constants';
|
|
10
10
|
const template = '<template><div class=\"forge-toolbar\" part=\"root\"><div class=\"section\" part=\"before-section-start\"><slot name=\"before-start\"></slot></div><div class=\"inner center\" part=\"inner\"><div class=\"section\" part=\"section-start\"><slot name=\"start\"></slot><slot></slot></div><div class=\"section center\" part=\"section-center\"><slot name=\"center\"></slot></div><div class=\"section end\" part=\"section-end\"><slot name=\"end\"></slot></div></div><div class=\"section end\" part=\"after-section-end\"><slot name=\"after-end\"></slot></div></div></template>';
|
|
11
|
-
const styles = ':host{display:block
|
|
11
|
+
const styles = ':host{display:block}:host([hidden]){display:none}.forge-toolbar{--_toolbar-background:var(--forge-toolbar-background, var(--forge-theme-surface, #ffffff));--_toolbar-height:var(--forge-toolbar-height, 56px);--_toolbar-min-height:var(--forge-toolbar-min-height, var(--_toolbar-height));--_toolbar-divider-width:var(--forge-toolbar-divider-width, var(--forge-border-thin, 1px));--_toolbar-divider-style:var(--forge-toolbar-divider-style, solid);--_toolbar-divider-color:var(--forge-toolbar-divider-color, var(--forge-theme-outline, #e0e0e0));--_toolbar-shape:var(--forge-toolbar-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_toolbar-start-start-shape:var(--forge-toolbar-start-start-shape, var(--_toolbar-shape));--_toolbar-start-end-shape:var(--forge-toolbar-start-end-shape, var(--_toolbar-shape));--_toolbar-end-start-shape:var(--forge-toolbar-end-start-shape, 0);--_toolbar-end-end-shape:var(--forge-toolbar-end-end-shape, 0);--_toolbar-padding:var(--forge-toolbar-padding, var(--forge-spacing-medium, 16px));--_toolbar-padding-block:var(--forge-toolbar-padding-block, 0);--_toolbar-padding-inline:var(--forge-toolbar-padding-inline, var(--_toolbar-padding));--_toolbar-columns:var(--forge-toolbar-columns, auto 1fr auto)}.forge-toolbar{display:grid;grid-template-columns:var(--_toolbar-columns);height:var(--_toolbar-height);min-height:var(--_toolbar-min-height);box-sizing:border-box;padding-inline:0;border-block-end-width:var(--_toolbar-divider-width);border-block-end-style:var(--_toolbar-divider-style);border-block-end-color:var(--_toolbar-divider-color);border-start-start-radius:var(--_toolbar-start-start-shape);border-start-end-radius:var(--_toolbar-start-end-shape);border-end-start-radius:var(--_toolbar-end-start-shape);border-end-end-radius:var(--_toolbar-end-end-shape);background:var(--_toolbar-background)}.inner{display:grid;grid-template-columns:var(--_toolbar-columns);padding-inline:var(--_toolbar-padding-inline);padding-block:var(--_toolbar-padding-block);box-sizing:border-box}.section{display:flex;align-items:center;width:100%;box-sizing:border-box}.section.center{justify-content:center}.section.end{justify-content:end}:host([inverted]) .forge-toolbar{--_toolbar-start-start-shape:var(--forge-toolbar-start-start-shape, 0);--_toolbar-start-end-shape:var(--forge-toolbar-start-end-shape, 0);--_toolbar-end-start-shape:var(--_toolbar-shape);--_toolbar-end-end-shape:var(--_toolbar-shape);border-block-end:none;border-block-start-width:var(--_toolbar-divider-width);border-block-start-style:var(--_toolbar-divider-style);border-block-start-color:var(--_toolbar-divider-color)}:host(:is([no-divider],[no-border])) .forge-toolbar{border:none}:host([no-padding]) .forge-toolbar{--_toolbar-padding:var(--forge-toolbar-padding, 0)}:host([auto-height]) .forge-toolbar{--_toolbar-height:var(--forge-toolbar-height, auto)}::slotted(:is(h1,h2,h3,h4,h5,h6,p)){margin:0}';
|
|
12
12
|
/**
|
|
13
13
|
* @tag forge-toolbar
|
|
14
14
|
*
|
|
@@ -24,8 +24,8 @@ const styles = ':host{display:block;contain:layout}:host([hidden]){display:none}
|
|
|
24
24
|
* @attribute {boolean} no-padding - Sets the internal padding style to 0.
|
|
25
25
|
* @attribute {boolean} auto-height - Forces the internal container to use `height: auto` for dynamic content that doesn't fit the static height.
|
|
26
26
|
*
|
|
27
|
-
* @cssproperty --forge-
|
|
28
|
-
* @cssproperty --forge-
|
|
27
|
+
* @cssproperty --forge-toolbar-height - Controls the height.
|
|
28
|
+
* @cssproperty --forge-toolbar-min-height - Controls the minimum height. Defaults to the toolbar height.
|
|
29
29
|
* @cssproperty --forge-theme-surface - Controls the background-color of the toolbar.
|
|
30
30
|
* @cssproperty --forge-toolbar-divider-width - Controls the divider width.
|
|
31
31
|
* @cssproperty --forge-toolbar-divider-style - Controls the divider style.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tylertech/forge",
|
|
3
3
|
"description": "Tyler Forge™ Web Components library",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.0",
|
|
5
5
|
"author": "Tyler Technologies, Inc.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"@tylertech/forge-core": "^3.1.0",
|
|
18
18
|
"@tylertech/tyler-icons": "^1.12.0",
|
|
19
19
|
"imask": "^6.6.1",
|
|
20
|
+
"lit": "^3.2.1",
|
|
20
21
|
"tslib": "^2.8.1"
|
|
21
22
|
},
|
|
22
23
|
"customElements": "custom-elements.json"
|
package/sass/avatar/_core.scss
CHANGED
package/sass/backdrop/_core.scss
CHANGED
|
@@ -16,7 +16,7 @@ $tokens: (
|
|
|
16
16
|
shape: utils.module-val(app-bar-search, shape, shape.variable(small)),
|
|
17
17
|
gap: utils.module-val(app-bar-search, gap, 4px),
|
|
18
18
|
input-placeholder-color: utils.module-ref(app-bar-search, input-placeholder-color, color),
|
|
19
|
-
input-placeholder-opacity: utils.module-val(app-bar-search, input-placeholder-opacity, theme.emphasis(
|
|
19
|
+
input-placeholder-opacity: utils.module-val(app-bar-search, input-placeholder-opacity, theme.emphasis(higher)),
|
|
20
20
|
background-color: utils.module-ref(app-bar-search, background-color, color),
|
|
21
21
|
background-color-opacity: utils.module-val(app-bar-search, background-color-opacity, theme.emphasis(lowest)),
|
|
22
22
|
border-color: utils.module-ref(app-bar-search, border-color, color),
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
$tokens: (
|
|
14
14
|
width: utils.module-val(mini-drawer, width, 56px),
|
|
15
|
+
min-width: utils.module-ref(mini-drawer, min-width, width),
|
|
15
16
|
hover-width: utils.module-val(mini-drawer, hover-width, base-tokens.get(width)),
|
|
16
17
|
transition-duration: utils.module-val(mini-drawer, transition-duration, animation.variable(duration-short4)),
|
|
17
18
|
transition-easing: utils.module-val(mini-drawer, transition-easing, animation.variable(easing-standard)),
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use 'sass:map';
|
|
7
|
+
@use '../../../spacing';
|
|
8
|
+
@use '../../../utils';
|
|
9
|
+
|
|
10
|
+
$tokens: (
|
|
11
|
+
gap: utils.module-val(key, gap, spacing.variable(medium)),
|
|
12
|
+
direction: utils.module-val(key, direction, row)
|
|
13
|
+
) !default;
|
|
14
|
+
|
|
15
|
+
@function get($key) {
|
|
16
|
+
@return map.get($tokens, $key);
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use 'sass:map';
|
|
7
|
+
@use '../../../spacing';
|
|
8
|
+
@use '../../../theme';
|
|
9
|
+
@use '../../../typography';
|
|
10
|
+
@use '../../../utils';
|
|
11
|
+
|
|
12
|
+
$tokens: (
|
|
13
|
+
icon-color: utils.module-val(key-item, icon-color, theme.variable(tertiary)),
|
|
14
|
+
label-color: utils.module-val(key-item, label-color, theme.variable(text-high)),
|
|
15
|
+
value-color: utils.module-val(key-item, value-color, theme.variable(text-medium)),
|
|
16
|
+
gap: utils.module-val(key-item, gap, spacing.variable(xsmall)),
|
|
17
|
+
icon-size: utils.module-val(key-item, icon-size, typography.font-size-relative('1000'))
|
|
18
|
+
) !default;
|
|
19
|
+
|
|
20
|
+
@function get($key) {
|
|
21
|
+
@return map.get($tokens, $key);
|
|
22
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use 'sass:map';
|
|
7
|
+
@use '../../theme/color-emphasis';
|
|
8
|
+
@use '../../../animation';
|
|
9
|
+
@use '../../../elevation';
|
|
10
|
+
@use '../../../shape';
|
|
11
|
+
@use '../../../spacing';
|
|
12
|
+
@use '../../../theme';
|
|
13
|
+
@use '../../../utils';
|
|
14
|
+
|
|
15
|
+
$tokens: (
|
|
16
|
+
background: utils.module-val(meter, background, theme.variable(tertiary-container-low)),
|
|
17
|
+
color: utils.module-val(meter, color, theme.variable(tertiary)),
|
|
18
|
+
height: utils.module-val(meter, height, spacing.variable(medium)),
|
|
19
|
+
shape: utils.module-val(meter, shape, shape.variable(medium)),
|
|
20
|
+
inner-shape: utils.module-val(meter, inner-shape, 0),
|
|
21
|
+
inner-elevation: utils.module-val(meter, inner-elevation, elevation.value(4)),
|
|
22
|
+
tickmarks: utils.module-val(meter, tickmarks, 10),
|
|
23
|
+
tickmark-opacity: utils.module-val(meter, tickmark-opacity, color-emphasis.value(medium)),
|
|
24
|
+
transition-duration: utils.module-val(meter, transition-duration, animation.variable(duration-short4)),
|
|
25
|
+
transition-timing: utils.module-val(meter, transition-timing, animation.variable(easing-standard))
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
@function get($key) {
|
|
29
|
+
@return map.get($tokens, $key);
|
|
30
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use 'sass:map';
|
|
7
|
+
@use '../../theme/color-emphasis';
|
|
8
|
+
@use '../../../animation';
|
|
9
|
+
@use '../../../elevation';
|
|
10
|
+
@use '../../../shape';
|
|
11
|
+
@use '../../../spacing';
|
|
12
|
+
@use '../../../theme';
|
|
13
|
+
@use '../../../utils';
|
|
14
|
+
|
|
15
|
+
$tokens: (
|
|
16
|
+
background: utils.module-val(meter-group, background, theme.variable(surface-container-low)),
|
|
17
|
+
height: utils.module-val(meter-group, height, spacing.variable(medium)),
|
|
18
|
+
shape: utils.module-val(meter-group, shape, shape.variable(medium)),
|
|
19
|
+
tickmarks: utils.module-val(meter-group, tickmarks, 10),
|
|
20
|
+
tickmark-color: utils.module-val(meter-group, tickmark-color, theme.variable(outline-high)),
|
|
21
|
+
tickmark-opacity: utils.module-val(meter-group, tickmark-opacity, color-emphasis.value(medium))
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
@function get($key) {
|
|
25
|
+
@return map.get($tokens, $key);
|
|
26
|
+
}
|
package/sass/divider/_core.scss
CHANGED
|
@@ -25,13 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
@include base-core.core-styles;
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
// Safari fix for triggering reflow after transition completes (as of Safari
|
|
30
|
-
|
|
31
|
-
@media not all and (min-resolution: 0.001dpcm) {
|
|
32
|
-
@supports (-webkit-appearance: none) and (stroke-color: transparent) {
|
|
33
|
-
:host([open]) {
|
|
34
|
-
transform: translateZ(0);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
28
|
+
:host([open]) {
|
|
29
|
+
// Safari fix for triggering reflow after transition completes (as of Safari 17.6)
|
|
30
|
+
transform: translateZ(0);
|
|
37
31
|
}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
@use './core' as *;
|
|
7
|
-
@use '../
|
|
7
|
+
@use '../theme';
|
|
8
|
+
@use '../typography';
|
|
8
9
|
@use '../state-layer';
|
|
9
10
|
@use '../focus-indicator';
|
|
11
|
+
@use '../badge';
|
|
10
12
|
@use '../circular-progress';
|
|
11
13
|
|
|
12
14
|
//
|
|
@@ -203,6 +205,23 @@ forge-state-layer {
|
|
|
203
205
|
}
|
|
204
206
|
}
|
|
205
207
|
|
|
208
|
+
:host(:is([dense], [density='small'])) {
|
|
209
|
+
// We reduce the size of the badge when the density is small
|
|
210
|
+
::slotted(forge-badge[slot='badge']) {
|
|
211
|
+
@include typography.provide(
|
|
212
|
+
label1,
|
|
213
|
+
(
|
|
214
|
+
line-height: normal
|
|
215
|
+
)
|
|
216
|
+
);
|
|
217
|
+
@include badge.provide-theme(
|
|
218
|
+
(
|
|
219
|
+
height: auto
|
|
220
|
+
)
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
206
225
|
//
|
|
207
226
|
// Circular progress
|
|
208
227
|
//
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use './token-utils' as *;
|
|
7
|
+
|
|
8
|
+
@forward './token-utils';
|
|
9
|
+
|
|
10
|
+
@mixin host {
|
|
11
|
+
display: block;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@mixin base {
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: #{token(direction)};
|
|
18
|
+
gap: #{token(gap)};
|
|
19
|
+
flex-wrap: wrap;
|
|
20
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use '../../core/styles/tokens/key/key/tokens';
|
|
7
|
+
@use '../../core/styles/tokens/token-utils';
|
|
8
|
+
|
|
9
|
+
$_module: key;
|
|
10
|
+
$_tokens: tokens.$tokens;
|
|
11
|
+
|
|
12
|
+
@mixin provide-theme($theme) {
|
|
13
|
+
@include token-utils.provide-theme($_module, $_tokens, $theme);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@function token($name, $type: token) {
|
|
17
|
+
@return token-utils.token($_module, $_tokens, $name, $type);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@function declare($token) {
|
|
21
|
+
@return token-utils.declare($_module, $token);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@mixin override($token, $token-or-value, $type: token) {
|
|
25
|
+
@include token-utils.override($_module, $_tokens, $token, $token-or-value, $type);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@mixin tokens($includes: null, $excludes: null) {
|
|
29
|
+
@include token-utils.tokens($_module, $_tokens, $includes, $excludes);
|
|
30
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
@use './core';
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Host
|
|
10
|
+
//
|
|
11
|
+
|
|
12
|
+
:host {
|
|
13
|
+
@include core.host;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//
|
|
17
|
+
// Base
|
|
18
|
+
//
|
|
19
|
+
|
|
20
|
+
.forge-key {
|
|
21
|
+
@include core.tokens;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.forge-key {
|
|
25
|
+
@include core.base;
|
|
26
|
+
}
|