@nectary/components 0.40.0 → 0.41.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/accordion-item/index.js +4 -0
- package/action-menu/index.js +11 -13
- package/action-menu-option/index.js +2 -1
- package/button/index.js +5 -1
- package/button/types.d.ts +1 -1
- package/checkbox/index.js +4 -0
- package/chip/index.js +18 -15
- package/chip/types.d.ts +3 -4
- package/color-menu/index.d.ts +1 -0
- package/color-menu/index.js +37 -51
- package/color-menu/types.d.ts +5 -6
- package/color-menu/utils.d.ts +1 -0
- package/color-menu/utils.js +15 -0
- package/color-swatch/index.js +8 -7
- package/color-swatch/types.d.ts +3 -4
- package/colors.json +14 -10
- package/date-picker/index.js +1 -1
- package/field/index.js +22 -5
- package/file-drop/index.js +1 -1
- package/file-picker/index.js +1 -1
- package/help-tooltip/index.js +10 -27
- package/icon-button/index.d.ts +1 -0
- package/icon-button/index.js +26 -15
- package/icon-button/types.d.ts +16 -2
- package/input/index.js +4 -0
- package/link/index.js +5 -1
- package/package.json +1 -1
- package/pagination/index.js +4 -0
- package/pop/index.d.ts +11 -0
- package/pop/index.js +429 -0
- package/pop/types.d.ts +35 -0
- package/pop/utils.d.ts +7 -0
- package/pop/utils.js +18 -0
- package/popover/index.d.ts +1 -0
- package/popover/index.js +91 -230
- package/popover/types.d.ts +8 -1
- package/popover/utils.d.ts +5 -0
- package/popover/utils.js +17 -1
- package/radio-option/index.js +4 -0
- package/segment-collapse/index.js +4 -0
- package/segmented-control-option/index.js +5 -1
- package/segmented-icon-control-option/index.js +5 -1
- package/select-button/index.js +6 -1
- package/select-menu/index.js +12 -13
- package/tabs-option/index.js +4 -0
- package/tag/index.js +13 -15
- package/tag/types.d.ts +3 -4
- package/textarea/index.js +4 -0
- package/theme.css +76 -10
- package/tile-control-option/index.js +5 -1
- package/time-picker/index.js +1 -1
- package/toggle/index.js +5 -1
- package/tooltip/index.d.ts +2 -0
- package/tooltip/index.js +160 -17
- package/tooltip/types.d.ts +13 -0
- package/tooltip/utils.d.ts +5 -0
- package/tooltip/utils.js +25 -1
- package/types.d.ts +0 -7
- package/utils/animation.d.ts +17 -0
- package/utils/animation.js +142 -0
- package/utils/colors.d.ts +4 -9
- package/utils/colors.js +4 -120
- package/utils/context.d.ts +15 -0
- package/utils/context.js +57 -0
- package/utils/index.d.ts +5 -9
- package/utils/index.js +49 -50
- package/dropdown-checkbox-option/index.d.ts +0 -11
- package/dropdown-checkbox-option/index.js +0 -74
- package/dropdown-checkbox-option/types.d.ts +0 -15
- package/dropdown-radio-option/index.d.ts +0 -11
- package/dropdown-radio-option/index.js +0 -74
- package/dropdown-radio-option/types.d.ts +0 -15
- package/dropdown-radio-option/types.js +0 -1
- /package/{dropdown-checkbox-option → pop}/types.js +0 -0
package/accordion-item/index.js
CHANGED
package/action-menu/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isSinchActionMenuOption } from '../action-menu-option/utils';
|
|
2
2
|
import { attrValueToPixels, defineCustomElement, getBooleanAttribute, getIntegerAttribute, NectaryElement, updateBooleanAttribute, updateIntegerAttribute } from '../utils';
|
|
3
|
+
import { dispatchContextConnectEvent, dispatchContextDisconnectEvent } from '../utils/context';
|
|
3
4
|
const templateHTML = '<style>:host{display:block;outline:0}#listbox{overflow-y:auto}</style><div id="listbox" role="presentation"><slot></slot></div>';
|
|
4
5
|
const ITEM_HEIGHT = 40;
|
|
5
6
|
const template = document.createElement('template');
|
|
@@ -7,7 +8,7 @@ template.innerHTML = templateHTML;
|
|
|
7
8
|
defineCustomElement('sinch-action-menu', class extends NectaryElement {
|
|
8
9
|
#$optionSlot;
|
|
9
10
|
#$listbox;
|
|
10
|
-
#controller =
|
|
11
|
+
#controller = null;
|
|
11
12
|
|
|
12
13
|
constructor() {
|
|
13
14
|
super();
|
|
@@ -18,6 +19,7 @@ defineCustomElement('sinch-action-menu', class extends NectaryElement {
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
connectedCallback() {
|
|
22
|
+
this.#controller = new AbortController();
|
|
21
23
|
const {
|
|
22
24
|
signal
|
|
23
25
|
} = this.#controller;
|
|
@@ -38,21 +40,13 @@ defineCustomElement('sinch-action-menu', class extends NectaryElement {
|
|
|
38
40
|
this.#$listbox.addEventListener('click', this.#onListboxClick, {
|
|
39
41
|
signal
|
|
40
42
|
});
|
|
41
|
-
this
|
|
42
|
-
|
|
43
|
-
}));
|
|
44
|
-
this.dispatchEvent(new CustomEvent('-context-connect-visibility', {
|
|
45
|
-
bubbles: true
|
|
46
|
-
}));
|
|
43
|
+
dispatchContextConnectEvent(this, 'keydown');
|
|
44
|
+
dispatchContextConnectEvent(this, 'visibility');
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
disconnectedCallback() {
|
|
50
|
-
this
|
|
51
|
-
|
|
52
|
-
}));
|
|
53
|
-
this.dispatchEvent(new CustomEvent('-context-disconnect-visibility', {
|
|
54
|
-
bubbles: true
|
|
55
|
-
}));
|
|
48
|
+
dispatchContextDisconnectEvent(this, 'keydown');
|
|
49
|
+
dispatchContextDisconnectEvent(this, 'visibility');
|
|
56
50
|
this.#controller.abort();
|
|
57
51
|
}
|
|
58
52
|
|
|
@@ -248,4 +242,8 @@ defineCustomElement('sinch-action-menu', class extends NectaryElement {
|
|
|
248
242
|
return null;
|
|
249
243
|
}
|
|
250
244
|
|
|
245
|
+
get focusable() {
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
|
|
251
249
|
});
|
|
@@ -6,7 +6,7 @@ template.innerHTML = templateHTML;
|
|
|
6
6
|
defineCustomElement('sinch-action-menu-option', class ActionMenuOption extends NectaryElement {
|
|
7
7
|
#$wrapper;
|
|
8
8
|
#$content;
|
|
9
|
-
#controller =
|
|
9
|
+
#controller = null;
|
|
10
10
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
@@ -17,6 +17,7 @@ defineCustomElement('sinch-action-menu-option', class ActionMenuOption extends N
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
connectedCallback() {
|
|
20
|
+
this.#controller = new AbortController();
|
|
20
21
|
const {
|
|
21
22
|
signal
|
|
22
23
|
} = this.#controller;
|
package/button/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineCustomElement, getBooleanAttribute, getAttribute, getLiteralAttribute, isAttrTrue, updateBooleanAttribute, updateAttribute, updateLiteralAttribute, NectaryElement, getReactEventHandler } from '../utils';
|
|
2
|
-
const templateHTML = '<style>:host{--sinch-button-color-background:var(--sinch-color-tropical-500);--sinch-button-color-background-hover:var(--sinch-color-tropical-400);--sinch-button-color-background-active:var(--sinch-color-tropical-600);--sinch-button-color-background-disabled:var(--sinch-color-tropical-100);--sinch-button-color-border:var(--sinch-color-transparent);--sinch-button-color-border-disabled:var(--sinch-color-transparent);--sinch-button-color-text:var(--sinch-color-snow-100);--sinch-button-color-text-disabled:var(--sinch-color-snow-100);--sinch-button-shape-radius:var(--sinch-shape-radius-l);display:inline-block;vertical-align:middle;outline:0}#button{--sinch-color-icon:var(--sinch-button-color-text);--sinch-color-spinner-bg:var(--sinch-color-tropical-300);--sinch-color-spinner-fg:var(--sinch-color-snow-100)}#button:disabled{--sinch-color-icon:var(--sinch-button-color-text-disabled);--sinch-color-spinner-bg:var(--sinch-color-snow-100);--sinch-color-spinner-fg:var(--sinch-color-tropical-200)}:host([small]:not([small=false])){--sinch-button-shape-radius:var(--sinch-shape-radius-m)}:host([type=secondary]){--sinch-button-color-background:var(--sinch-color-snow-100);--sinch-button-color-background-hover:var(--sinch-color-tropical-100);--sinch-button-color-background-active:var(--sinch-color-tropical-100);--sinch-button-color-background-disabled:var(--sinch-color-snow-100);--sinch-button-color-border:var(--sinch-color-tropical-500);--sinch-button-color-border-disabled:var(--sinch-color-tropical-200);--sinch-button-color-text:var(--sinch-color-tropical-500);--sinch-button-color-text-disabled:var(--sinch-color-tropical-200)}:host([type=secondary])>#button{--sinch-color-spinner-bg:var(--sinch-color-tropical-500);--sinch-color-spinner-fg:var(--sinch-color-tropical-100)}:host([type=secondary]) #button:enabled:active,:host([type=secondary]) #button:enabled:hover{--sinch-color-spinner-fg:var(--sinch-color-tropical-200)}:host([type=secondary]) #button:disabled{--sinch-color-spinner-bg:var(--sinch-color-tropical-200)}:host([type=cta-primary]){--sinch-button-color-background:var(--sinch-color-honey-500);--sinch-button-color-background-hover:var(--sinch-color-honey-400);--sinch-button-color-background-active:var(--sinch-color-honey-600);--sinch-button-color-background-disabled:var(--sinch-color-honey-200);--sinch-button-color-text:var(--sinch-color-stormy-500);--sinch-button-color-text-disabled:var(--sinch-color-stormy-300)}:host([type=cta-primary])>#button{--sinch-color-spinner-bg:var(--sinch-color-honey-700);--sinch-color-spinner-fg:var(--sinch-color-stormy-500)}:host([type=cta-primary])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-honey-100);--sinch-color-spinner-fg:var(--sinch-color-stormy-300)}:host([type=cta-secondary]){--sinch-button-color-background:transparent;--sinch-button-color-background-hover:#F1F3F4;--sinch-button-color-background-active:#E3E6E8;--sinch-button-color-background-disabled:transparent;--sinch-button-color-text:var(--sinch-color-stormy-500);--sinch-button-color-text-disabled:var(--sinch-color-stormy-100);--sinch-button-color-border:var(--sinch-color-stormy-500);--sinch-button-color-border-disabled:var(--sinch-color-stormy-100)}:host([type=cta-secondary])>#button{--sinch-color-spinner-bg:var(--sinch-color-snow-700);--sinch-color-spinner-fg:var(--sinch-color-stormy-500)}:host([type=cta-secondary])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-snow-500);--sinch-color-spinner-fg:var(--sinch-color-stormy-100)}:host([type=cta-secondary])>#button::before{mix-blend-mode:multiply}:host([type=destructive]){--sinch-button-color-background:var(--sinch-color-snow-100);--sinch-button-color-background-hover:var(--sinch-color-raspberry-100);--sinch-button-color-background-active:var(--sinch-color-raspberry-100);--sinch-button-color-background-disabled:var(--sinch-color-snow-100);--sinch-button-color-text:var(--sinch-color-raspberry-500);--sinch-button-color-text-disabled:var(--sinch-color-raspberry-200);--sinch-button-color-border:var(--sinch-color-raspberry-500);--sinch-button-color-border-disabled:var(--sinch-color-raspberry-200)}:host([type=destructive])>#button{--sinch-color-spinner-bg:var(--sinch-color-raspberry-100);--sinch-color-spinner-fg:var(--sinch-color-raspberry-500)}:host([type=destructive])>#button:enabled:active,:host([type=destructive])>#button:enabled:hover{--sinch-color-spinner-bg:var(--sinch-color-raspberry-200);--sinch-color-spinner-fg:var(--sinch-color-raspberry-500)}:host([type=destructive])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-raspberry-100);--sinch-color-spinner-fg:var(--sinch-color-raspberry-200)}#button{all:initial;display:block;position:relative;width:100%;height:48px;font:var(--sinch-font-title-s);color:var(--sinch-button-color-text);cursor:pointer;--sinch-size-icon:24px}#button::before{content:"";position:absolute;left:0;top:0;bottom:0;right:0;border:1px solid var(--sinch-button-color-border);border-radius:var(--sinch-button-shape-radius);background-color:var(--sinch-button-color-background);box-shadow:var(--sinch-elevation-level-1);pointer-events:none}#button:focus-visible::after{position:absolute;content:"";left:-4px;top:-4px;right:-4px;bottom:-4px;border:2px solid var(--sinch-color-
|
|
2
|
+
const templateHTML = '<style>:host{--sinch-button-color-background:var(--sinch-color-tropical-500);--sinch-button-color-background-hover:var(--sinch-color-tropical-400);--sinch-button-color-background-active:var(--sinch-color-tropical-600);--sinch-button-color-background-disabled:var(--sinch-color-tropical-100);--sinch-button-color-border:var(--sinch-color-transparent);--sinch-button-color-border-disabled:var(--sinch-color-transparent);--sinch-button-color-text:var(--sinch-color-snow-100);--sinch-button-color-text-disabled:var(--sinch-color-snow-100);--sinch-button-shape-radius:var(--sinch-shape-radius-l);display:inline-block;vertical-align:middle;outline:0}#button{--sinch-color-icon:var(--sinch-button-color-text);--sinch-color-spinner-bg:var(--sinch-color-tropical-300);--sinch-color-spinner-fg:var(--sinch-color-snow-100)}#button:disabled{--sinch-color-icon:var(--sinch-button-color-text-disabled);--sinch-color-spinner-bg:var(--sinch-color-snow-100);--sinch-color-spinner-fg:var(--sinch-color-tropical-200)}:host([small]:not([small=false])){--sinch-button-shape-radius:var(--sinch-shape-radius-m)}:host([type=secondary]){--sinch-button-color-background:var(--sinch-color-snow-100);--sinch-button-color-background-hover:var(--sinch-color-tropical-100);--sinch-button-color-background-active:var(--sinch-color-tropical-100);--sinch-button-color-background-disabled:var(--sinch-color-snow-100);--sinch-button-color-border:var(--sinch-color-tropical-500);--sinch-button-color-border-disabled:var(--sinch-color-tropical-200);--sinch-button-color-text:var(--sinch-color-tropical-500);--sinch-button-color-text-disabled:var(--sinch-color-tropical-200)}:host([type=secondary])>#button{--sinch-color-spinner-bg:var(--sinch-color-tropical-500);--sinch-color-spinner-fg:var(--sinch-color-tropical-100)}:host([type=secondary]) #button:enabled:active,:host([type=secondary]) #button:enabled:hover{--sinch-color-spinner-fg:var(--sinch-color-tropical-200)}:host([type=secondary]) #button:disabled{--sinch-color-spinner-bg:var(--sinch-color-tropical-200)}:host([type=cta-primary]){--sinch-button-color-background:var(--sinch-color-honey-500);--sinch-button-color-background-hover:var(--sinch-color-honey-400);--sinch-button-color-background-active:var(--sinch-color-honey-600);--sinch-button-color-background-disabled:var(--sinch-color-honey-200);--sinch-button-color-text:var(--sinch-color-stormy-500);--sinch-button-color-text-disabled:var(--sinch-color-stormy-300)}:host([type=cta-primary])>#button{--sinch-color-spinner-bg:var(--sinch-color-honey-700);--sinch-color-spinner-fg:var(--sinch-color-stormy-500)}:host([type=cta-primary])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-honey-100);--sinch-color-spinner-fg:var(--sinch-color-stormy-300)}:host([type=cta-secondary]){--sinch-button-color-background:transparent;--sinch-button-color-background-hover:#F1F3F4;--sinch-button-color-background-active:#E3E6E8;--sinch-button-color-background-disabled:transparent;--sinch-button-color-text:var(--sinch-color-stormy-500);--sinch-button-color-text-disabled:var(--sinch-color-stormy-100);--sinch-button-color-border:var(--sinch-color-stormy-500);--sinch-button-color-border-disabled:var(--sinch-color-stormy-100)}:host([type=cta-secondary])>#button{--sinch-color-spinner-bg:var(--sinch-color-snow-700);--sinch-color-spinner-fg:var(--sinch-color-stormy-500)}:host([type=cta-secondary])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-snow-500);--sinch-color-spinner-fg:var(--sinch-color-stormy-100)}:host([type=cta-secondary])>#button::before{mix-blend-mode:multiply}:host([type=destructive]){--sinch-button-color-background:var(--sinch-color-snow-100);--sinch-button-color-background-hover:var(--sinch-color-raspberry-100);--sinch-button-color-background-active:var(--sinch-color-raspberry-100);--sinch-button-color-background-disabled:var(--sinch-color-snow-100);--sinch-button-color-text:var(--sinch-color-raspberry-500);--sinch-button-color-text-disabled:var(--sinch-color-raspberry-200);--sinch-button-color-border:var(--sinch-color-raspberry-500);--sinch-button-color-border-disabled:var(--sinch-color-raspberry-200)}:host([type=destructive])>#button{--sinch-color-spinner-bg:var(--sinch-color-raspberry-100);--sinch-color-spinner-fg:var(--sinch-color-raspberry-500)}:host([type=destructive])>#button:enabled:active,:host([type=destructive])>#button:enabled:hover{--sinch-color-spinner-bg:var(--sinch-color-raspberry-200);--sinch-color-spinner-fg:var(--sinch-color-raspberry-500)}:host([type=destructive])>#button:disabled{--sinch-color-spinner-bg:var(--sinch-color-raspberry-100);--sinch-color-spinner-fg:var(--sinch-color-raspberry-200)}#button{all:initial;display:block;position:relative;width:100%;height:48px;font:var(--sinch-font-title-s);color:var(--sinch-button-color-text);cursor:pointer;--sinch-size-icon:24px}#button::before{content:"";position:absolute;left:0;top:0;bottom:0;right:0;border:1px solid var(--sinch-button-color-border);border-radius:var(--sinch-button-shape-radius);background-color:var(--sinch-button-color-background);box-shadow:var(--sinch-elevation-level-1);pointer-events:none}#button:focus-visible::after{position:absolute;content:"";left:-4px;top:-4px;right:-4px;bottom:-4px;border:2px solid var(--sinch-color-border-focus);border-radius:calc(var(--sinch-button-shape-radius) + 4px);pointer-events:none}@supports not selector(:focus-visible){#button:focus::after{position:absolute;content:"";left:-4px;top:-4px;right:-4px;bottom:-4px;border:2px solid var(--sinch-color-border-focus);border-radius:calc(var(--sinch-button-shape-radius) + 4px);pointer-events:none}}#button:enabled:hover::before{background-color:var(--sinch-button-color-background-hover)}#button:enabled:active::before{background-color:var(--sinch-button-color-background-active);border-width:2px;box-shadow:var(--sinch-elevation-level-0)}#button:disabled{color:var(--sinch-button-color-text-disabled);cursor:initial}#button:disabled::before{background-color:var(--sinch-button-color-background-disabled);border-color:var(--sinch-button-color-border-disabled)}:host([type=cta-primary])>#button::before,:host([type=primary])>#button::before{border-width:0}#content{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;padding:0 16px;box-sizing:border-box;pointer-events:none}:host([small]:not([small=false]))>#button{font:var(--sinch-font-title-xs);height:32px;--sinch-size-icon:16px}:host([small]:not([small=false])) #content{padding:0 12px;gap:8px}#text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0}</style><button id="button"><div id="content"><slot name="left-icon"></slot><span id="text"></span><slot name="right-icon"></slot></div></button>';
|
|
3
3
|
import { buttonTypes } from './utils';
|
|
4
4
|
const template = document.createElement('template');
|
|
5
5
|
template.innerHTML = templateHTML;
|
|
@@ -88,6 +88,10 @@ defineCustomElement('sinch-button', class extends NectaryElement {
|
|
|
88
88
|
return getBooleanAttribute(this, 'small');
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
get focusable() {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
|
|
91
95
|
focus() {
|
|
92
96
|
this.#$button.focus();
|
|
93
97
|
}
|
package/button/types.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare type TSinchButtonReact = TSinchElementReact<TSinchButtonElement>
|
|
|
29
29
|
type: TSinchButtonType;
|
|
30
30
|
/** Text content */
|
|
31
31
|
text: string;
|
|
32
|
-
/** Label that is used for a11y
|
|
32
|
+
/** Label that is used for a11y */
|
|
33
33
|
'aria-label': string;
|
|
34
34
|
/** Disabled */
|
|
35
35
|
disabled?: boolean;
|
package/checkbox/index.js
CHANGED
package/chip/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import '../text';
|
|
2
2
|
import '../icons/cancel';
|
|
3
|
-
import { defineCustomElement, getBooleanAttribute, getAttribute,
|
|
4
|
-
import {
|
|
5
|
-
const templateHTML = '<style>:host{display:inline-block;vertical-align:middle;outline:0}#button{all:initial;position:relative;display:flex;flex-direction:row;align-items:center;gap:4px;width:100%;height:24px;padding:0 5px 0
|
|
3
|
+
import { defineCustomElement, getBooleanAttribute, getAttribute, updateBooleanAttribute, updateAttribute, NectaryElement, getReactEventHandler } from '../utils';
|
|
4
|
+
import { NO_COLOR } from '../utils/colors';
|
|
5
|
+
const templateHTML = '<style>:host{display:inline-block;vertical-align:middle;outline:0}#button{all:initial;position:relative;display:flex;flex-direction:row;align-items:center;gap:4px;width:100%;height:24px;padding:0 5px 0 9px;border-radius:12px;background-color:var(--sinch-color-snow-500);color:var(--sinch-color-text-default);box-sizing:border-box;cursor:pointer;--sinch-color-icon:var(--sinch-color-stormy-500);--sinch-size-icon:16px}#button:focus-visible::after{content:"";position:absolute;inset:-4px;border-radius:16px;border:2px solid var(--sinch-color-border-focus);pointer-events:none}@supports not selector(:focus-visible){#button:focus::after{content:"";position:absolute;inset:-4px;border-radius:16px;border:2px solid var(--sinch-color-border-focus);pointer-events:none}:host([small]:not([small=false])) #button:focus::after{border-radius:14px}}#text{flex:1}:host([small]:not([small=false])) #button{height:20px;border-radius:10px;padding:0 3px 0 7px}:host([small]:not([small=false])) #button:focus-visible::after{border-radius:14px}::slotted(*){margin-left:-4px}</style><button id="button"><slot name="icon"></slot><sinch-text id="text" type="xs" ellipsis></sinch-text><sinch-icon-cancel id="close"></sinch-icon-cancel></button>';
|
|
6
6
|
const template = document.createElement('template');
|
|
7
7
|
template.innerHTML = templateHTML;
|
|
8
8
|
defineCustomElement('sinch-chip', class extends NectaryElement {
|
|
9
9
|
#$text;
|
|
10
10
|
#$button;
|
|
11
|
-
#controller =
|
|
11
|
+
#controller = null;
|
|
12
12
|
|
|
13
13
|
constructor() {
|
|
14
14
|
super();
|
|
@@ -19,6 +19,7 @@ defineCustomElement('sinch-chip', class extends NectaryElement {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
connectedCallback() {
|
|
22
|
+
this.#controller = new AbortController();
|
|
22
23
|
const {
|
|
23
24
|
signal
|
|
24
25
|
} = this.#controller;
|
|
@@ -49,11 +50,11 @@ defineCustomElement('sinch-chip', class extends NectaryElement {
|
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
get color() {
|
|
52
|
-
return
|
|
53
|
+
return getAttribute(this, 'color');
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
set color(value) {
|
|
56
|
-
|
|
57
|
+
updateAttribute(this, 'color', value);
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
get text() {
|
|
@@ -80,7 +81,6 @@ defineCustomElement('sinch-chip', class extends NectaryElement {
|
|
|
80
81
|
switch (name) {
|
|
81
82
|
case 'color':
|
|
82
83
|
{
|
|
83
|
-
assertColorNameValue(newVal);
|
|
84
84
|
this.#updateColor();
|
|
85
85
|
break;
|
|
86
86
|
}
|
|
@@ -95,17 +95,20 @@ defineCustomElement('sinch-chip', class extends NectaryElement {
|
|
|
95
95
|
|
|
96
96
|
#updateColor() {
|
|
97
97
|
const colorName = this.color ?? NO_COLOR;
|
|
98
|
-
const {
|
|
99
|
-
value,
|
|
100
|
-
isInverted
|
|
101
|
-
} = colorMap[colorName];
|
|
102
98
|
|
|
103
|
-
if (
|
|
104
|
-
this.#$button.style.
|
|
99
|
+
if (colorName !== NO_COLOR) {
|
|
100
|
+
this.#$button.style.setProperty('background-color', `var(--sinch-color-map-${colorName}-bg)`);
|
|
101
|
+
this.#$button.style.setProperty('color', `var(--sinch-color-map-${colorName}-fg)`);
|
|
102
|
+
this.#$button.style.setProperty('--sinch-color-icon', `var(--sinch-color-map-${colorName}-fg)`);
|
|
103
|
+
} else {
|
|
104
|
+
this.#$button.style.removeProperty('background-color');
|
|
105
|
+
this.#$button.style.removeProperty('color');
|
|
106
|
+
this.#$button.style.removeProperty('--sinch-color-icon');
|
|
105
107
|
}
|
|
108
|
+
}
|
|
106
109
|
|
|
107
|
-
|
|
108
|
-
|
|
110
|
+
get focusable() {
|
|
111
|
+
return true;
|
|
109
112
|
}
|
|
110
113
|
|
|
111
114
|
focus() {
|
package/chip/types.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { TSinchElementReact } from '../types';
|
|
2
|
-
import type { TSinchColorName } from '../utils/colors';
|
|
3
2
|
export declare type TSinchChipElement = HTMLElement & {
|
|
4
3
|
/** Text */
|
|
5
4
|
text: string;
|
|
6
5
|
/** Color, gray by default */
|
|
7
|
-
color:
|
|
6
|
+
color: string | null;
|
|
8
7
|
/** Small */
|
|
9
8
|
small: boolean;
|
|
10
9
|
/** Click event */
|
|
@@ -16,7 +15,7 @@ export declare type TSinchChipElement = HTMLElement & {
|
|
|
16
15
|
/** Text */
|
|
17
16
|
setAttribute(name: 'text', value: string): void;
|
|
18
17
|
/** Color, gray by default */
|
|
19
|
-
setAttribute(name: 'color', value:
|
|
18
|
+
setAttribute(name: 'color', value: string): void;
|
|
20
19
|
/** Small */
|
|
21
20
|
setAttribute(name: 'small', value: ''): void;
|
|
22
21
|
};
|
|
@@ -24,7 +23,7 @@ export declare type TSinchChipReact = TSinchElementReact<TSinchChipElement> & {
|
|
|
24
23
|
/** Text */
|
|
25
24
|
text: string;
|
|
26
25
|
/** Color, gray by default */
|
|
27
|
-
color?:
|
|
26
|
+
color?: string;
|
|
28
27
|
/** Small */
|
|
29
28
|
small?: boolean;
|
|
30
29
|
/** Click event handler */
|
package/color-menu/index.d.ts
CHANGED
package/color-menu/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import '../color-swatch';
|
|
2
|
+
import '../tooltip';
|
|
2
3
|
import '../icons/check';
|
|
3
|
-
import { attrValueToPixels, defineCustomElement, getAttribute, getBooleanAttribute, getCsvSet, getIntegerAttribute,
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
const
|
|
4
|
+
import { attrValueToPixels, defineCustomElement, getAttribute, getBooleanAttribute, getCsvSet, getIntegerAttribute, getReactEventHandler, getRect, NectaryElement, updateAttribute, updateBooleanAttribute, updateExplicitBooleanAttribute, updateIntegerAttribute } from '../utils';
|
|
5
|
+
import { lightColorNames, darkColorNames, vibrantColorNames, NO_COLOR } from '../utils/colors';
|
|
6
|
+
import { dispatchContextConnectEvent, dispatchContextDisconnectEvent } from '../utils/context';
|
|
7
|
+
const optionTemplateHTML = '<div class="option" role="option"><sinch-tooltip inverted class="tooltip"><div class="swatch-wrapper"><sinch-color-swatch class="swatch"></sinch-color-swatch><sinch-icon-check class="check"></sinch-icon-check></div></sinch-tooltip></div>';
|
|
8
|
+
const templateHTML = '<style>:host{display:block;outline:0}#listbox{display:flex;flex-direction:row;flex-wrap:wrap;padding:4px 10px;overflow-y:auto}#listbox:empty{display:none}.option{padding:12px 6px;--sinch-color-icon:var(--sinch-color-stormy-500)}.swatch-wrapper{position:relative;cursor:pointer;width:32px;height:32px}.swatch-wrapper::after{content:"";position:absolute;width:34px;height:34px;inset:-3px;border:2px solid transparent;border-radius:50%;pointer-events:none}.option[data-selected]:not([data-checked]) .swatch-wrapper::after{border-color:var(--sinch-color-border-focus)}.check{display:none;position:absolute;left:4px;top:4px;pointer-events:none;--sinch-size-icon:24px}.option[data-checked] .check{display:block}</style><div id="listbox" role="presentation"></div>';
|
|
9
|
+
import { getParentOption } from './utils';
|
|
7
10
|
const NUM_COLS_DEFAULT = 5;
|
|
8
11
|
const ITEM_WIDTH = 44;
|
|
9
12
|
const ITEM_HEIGHT = 56;
|
|
@@ -13,8 +16,7 @@ template.innerHTML = templateHTML;
|
|
|
13
16
|
optionTemplate.innerHTML = optionTemplateHTML;
|
|
14
17
|
defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
15
18
|
#$listbox;
|
|
16
|
-
|
|
17
|
-
#controller = new AbortController();
|
|
19
|
+
#controller = null;
|
|
18
20
|
#prevColorsValue = '';
|
|
19
21
|
#isConnected = false;
|
|
20
22
|
|
|
@@ -23,10 +25,10 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
23
25
|
const shadowRoot = this.attachShadow();
|
|
24
26
|
shadowRoot.appendChild(template.content.cloneNode(true));
|
|
25
27
|
this.#$listbox = shadowRoot.querySelector('#listbox');
|
|
26
|
-
this.#$checkIcon = shadowRoot.querySelector('#check');
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
connectedCallback() {
|
|
31
|
+
this.#controller = new AbortController();
|
|
30
32
|
const {
|
|
31
33
|
signal
|
|
32
34
|
} = this.#controller;
|
|
@@ -50,25 +52,17 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
50
52
|
this.addEventListener('-visibility', this.#onContextVisibility, {
|
|
51
53
|
signal
|
|
52
54
|
});
|
|
53
|
-
this
|
|
54
|
-
|
|
55
|
-
}));
|
|
56
|
-
this.dispatchEvent(new CustomEvent('-context-connect-visibility', {
|
|
57
|
-
bubbles: true
|
|
58
|
-
}));
|
|
55
|
+
dispatchContextConnectEvent(this, 'visibility');
|
|
56
|
+
dispatchContextConnectEvent(this, 'keydown');
|
|
59
57
|
requestAnimationFrame(this.#onMount);
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
disconnectedCallback() {
|
|
63
61
|
this.#isConnected = false;
|
|
64
62
|
this.#prevColorsValue = null;
|
|
63
|
+
dispatchContextDisconnectEvent(this, 'visibility');
|
|
64
|
+
dispatchContextDisconnectEvent(this, 'keydown');
|
|
65
65
|
this.#controller.abort();
|
|
66
|
-
this.dispatchEvent(new CustomEvent('-context-disconnect-keydown', {
|
|
67
|
-
bubbles: true
|
|
68
|
-
}));
|
|
69
|
-
this.dispatchEvent(new CustomEvent('-context-disconnect-visibility', {
|
|
70
|
-
bubbles: true
|
|
71
|
-
}));
|
|
72
66
|
}
|
|
73
67
|
|
|
74
68
|
static get observedAttributes() {
|
|
@@ -76,11 +70,11 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
76
70
|
}
|
|
77
71
|
|
|
78
72
|
set value(value) {
|
|
79
|
-
|
|
73
|
+
updateAttribute(this, 'value', value);
|
|
80
74
|
}
|
|
81
75
|
|
|
82
76
|
get value() {
|
|
83
|
-
return
|
|
77
|
+
return getAttribute(this, 'value', NO_COLOR);
|
|
84
78
|
}
|
|
85
79
|
|
|
86
80
|
set colors(value) {
|
|
@@ -107,11 +101,11 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
107
101
|
return getIntegerAttribute(this, 'cols', null);
|
|
108
102
|
}
|
|
109
103
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
104
|
+
get focusable() {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
114
107
|
|
|
108
|
+
nthItemRect(index) {
|
|
115
109
|
const $item = this.#$listbox.children[index];
|
|
116
110
|
|
|
117
111
|
if ($item != null) {
|
|
@@ -130,7 +124,6 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
130
124
|
case 'value':
|
|
131
125
|
{
|
|
132
126
|
if (this.#isConnected) {
|
|
133
|
-
assertColorNameValue(newVal);
|
|
134
127
|
this.#onValueChange();
|
|
135
128
|
}
|
|
136
129
|
|
|
@@ -171,20 +164,22 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
171
164
|
}
|
|
172
165
|
|
|
173
166
|
this.#prevColorsValue = colorsValue;
|
|
174
|
-
const colorNames =
|
|
167
|
+
const colorNames = getCsvSet(colorsValue ?? `${lightColorNames},${vibrantColorNames},${darkColorNames}`);
|
|
175
168
|
const fragment = document.createDocumentFragment();
|
|
176
169
|
|
|
177
|
-
for (const
|
|
178
|
-
if (
|
|
170
|
+
for (const color of colorNames) {
|
|
171
|
+
if (color === NO_COLOR) {
|
|
179
172
|
continue;
|
|
180
173
|
}
|
|
181
174
|
|
|
182
175
|
const optFrag = optionTemplate.content.cloneNode(true);
|
|
183
|
-
const $
|
|
184
|
-
const $swatch = optFrag.querySelector('
|
|
185
|
-
|
|
186
|
-
updateAttribute($
|
|
187
|
-
updateAttribute($
|
|
176
|
+
const $option = optFrag.querySelector('.option');
|
|
177
|
+
const $swatch = optFrag.querySelector('.swatch');
|
|
178
|
+
const $tooltip = optFrag.querySelector('.tooltip');
|
|
179
|
+
updateAttribute($option, 'data-value', color);
|
|
180
|
+
updateAttribute($tooltip, 'text', color);
|
|
181
|
+
updateAttribute($swatch, 'name', color);
|
|
182
|
+
$option.style.setProperty('--sinch-color-icon', `var(--sinch-color-map-${color}-fg)`);
|
|
188
183
|
fragment.appendChild(optFrag);
|
|
189
184
|
}
|
|
190
185
|
|
|
@@ -226,8 +221,9 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
226
221
|
return;
|
|
227
222
|
}
|
|
228
223
|
|
|
229
|
-
|
|
230
|
-
this.#
|
|
224
|
+
const $option = getParentOption($elem);
|
|
225
|
+
this.#dispatchChangeEvent($option);
|
|
226
|
+
this.#selectOption($option);
|
|
231
227
|
};
|
|
232
228
|
#onContextVisibility = e => {
|
|
233
229
|
if (e.detail) {
|
|
@@ -289,22 +285,10 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
289
285
|
}
|
|
290
286
|
|
|
291
287
|
#onValueChange() {
|
|
292
|
-
if (!this.hasAttribute('value')) {
|
|
293
|
-
this.#$checkIcon.remove();
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
288
|
const value = this.value;
|
|
298
|
-
this.#$checkIcon.remove();
|
|
299
289
|
|
|
300
290
|
for (const $option of this.#getOptionElements()) {
|
|
301
291
|
const isChecked = value === getAttribute($option, 'data-value', '');
|
|
302
|
-
|
|
303
|
-
if (isChecked) {
|
|
304
|
-
$option.appendChild(this.#$checkIcon);
|
|
305
|
-
setClass(this.#$checkIcon, 'inverted', colorMap[value].isInverted);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
292
|
updateBooleanAttribute($option, 'data-checked', isChecked);
|
|
309
293
|
updateExplicitBooleanAttribute($option, 'aria-selected', isChecked);
|
|
310
294
|
}
|
|
@@ -453,9 +437,11 @@ defineCustomElement('sinch-color-menu', class extends NectaryElement {
|
|
|
453
437
|
return;
|
|
454
438
|
}
|
|
455
439
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
440
|
+
if ($opt !== null) {
|
|
441
|
+
this.dispatchEvent(new CustomEvent('-change', {
|
|
442
|
+
detail: getAttribute($opt, 'data-value')
|
|
443
|
+
}));
|
|
444
|
+
}
|
|
459
445
|
}
|
|
460
446
|
|
|
461
447
|
#onChangeReactHandler = e => {
|
package/color-menu/types.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { TRect, TSinchElementReact } from '../types';
|
|
2
|
-
import type { TSinchColorName } from '../utils/colors';
|
|
3
2
|
export declare type TSinchSelectMenuElement = HTMLElement & {
|
|
4
3
|
/** Value */
|
|
5
|
-
value:
|
|
4
|
+
value: string;
|
|
6
5
|
/** How many rows to show and scroll the rest */
|
|
7
6
|
rows: number | null;
|
|
8
7
|
/** How many cols to show and scroll the rest */
|
|
@@ -11,11 +10,11 @@ export declare type TSinchSelectMenuElement = HTMLElement & {
|
|
|
11
10
|
colors: string | null;
|
|
12
11
|
nthItemRect(index: number): TRect | null;
|
|
13
12
|
/** Change event */
|
|
14
|
-
addEventListener(type: '-change', listener: (e: CustomEvent<
|
|
13
|
+
addEventListener(type: '-change', listener: (e: CustomEvent<string>) => void): void;
|
|
15
14
|
/** Comma-separated color names, all colors by default */
|
|
16
15
|
setAttribute(name: 'colors', value: string): void;
|
|
17
16
|
/** Value */
|
|
18
|
-
setAttribute(name: 'value', value:
|
|
17
|
+
setAttribute(name: 'value', value: string): void;
|
|
19
18
|
/** How many rows to show and scroll the rest */
|
|
20
19
|
setAttribute(name: 'rows', value: string): void;
|
|
21
20
|
/** How many cols to show and scroll the rest */
|
|
@@ -23,7 +22,7 @@ export declare type TSinchSelectMenuElement = HTMLElement & {
|
|
|
23
22
|
};
|
|
24
23
|
export declare type TSinchSelectMenuReact = TSinchElementReact<TSinchSelectMenuElement> & {
|
|
25
24
|
/** Value */
|
|
26
|
-
value:
|
|
25
|
+
value: string;
|
|
27
26
|
/** How many rows to show and scroll the rest */
|
|
28
27
|
rows?: number;
|
|
29
28
|
/** How many cols to show and scroll the rest */
|
|
@@ -33,5 +32,5 @@ export declare type TSinchSelectMenuReact = TSinchElementReact<TSinchSelectMenuE
|
|
|
33
32
|
/** Label that is used for a11y */
|
|
34
33
|
'aria-label': string;
|
|
35
34
|
/** Change event handler */
|
|
36
|
-
'on-change'?: (e: CustomEvent<
|
|
35
|
+
'on-change'?: (e: CustomEvent<string>) => void;
|
|
37
36
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getParentOption: ($element: Element) => Element | null;
|
package/color-swatch/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../icons/cancel';
|
|
2
2
|
import '../text';
|
|
3
|
-
import { defineCustomElement,
|
|
4
|
-
import {
|
|
5
|
-
const templateHTML = '<style>:host{display:inline-block;vertical-align:middle}#wrapper{width:var(--sinch-size-icon,32px);height:var(--sinch-size-icon,32px);border-radius:50%}#wrapper.no-color{background:linear-gradient(45deg,var(--sinch-color-
|
|
3
|
+
import { defineCustomElement, NectaryElement, setClass, getAttribute, updateAttribute } from '../utils';
|
|
4
|
+
import { NO_COLOR } from '../utils/colors';
|
|
5
|
+
const templateHTML = '<style>:host{display:inline-block;vertical-align:middle}#wrapper{width:var(--sinch-size-icon,32px);height:var(--sinch-size-icon,32px);border-radius:50%}#wrapper.no-color{background:linear-gradient(45deg,var(--sinch-color-map-light-orange-bg),var(--sinch-color-map-light-yellow-bg),var(--sinch-color-map-light-green-bg),var(--sinch-color-map-light-blue-bg),var(--sinch-color-map-light-violet-bg))}</style><div id="wrapper"></div>';
|
|
6
6
|
const template = document.createElement('template');
|
|
7
7
|
template.innerHTML = templateHTML;
|
|
8
8
|
defineCustomElement('sinch-color-swatch', class extends NectaryElement {
|
|
@@ -20,11 +20,11 @@ defineCustomElement('sinch-color-swatch', class extends NectaryElement {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
get name() {
|
|
23
|
-
return
|
|
23
|
+
return getAttribute(this, 'name', NO_COLOR);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
set name(value) {
|
|
27
|
-
|
|
27
|
+
updateAttribute(this, 'name', value);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
static get observedAttributes() {
|
|
@@ -39,7 +39,6 @@ defineCustomElement('sinch-color-swatch', class extends NectaryElement {
|
|
|
39
39
|
switch (name) {
|
|
40
40
|
case 'name':
|
|
41
41
|
{
|
|
42
|
-
assertColorNameValue(newVal);
|
|
43
42
|
this.#updateColor();
|
|
44
43
|
break;
|
|
45
44
|
}
|
|
@@ -50,7 +49,9 @@ defineCustomElement('sinch-color-swatch', class extends NectaryElement {
|
|
|
50
49
|
const colorName = this.name;
|
|
51
50
|
|
|
52
51
|
if (colorName !== NO_COLOR) {
|
|
53
|
-
this.#$wrapper.style.
|
|
52
|
+
this.#$wrapper.style.setProperty('background-color', `var(--sinch-color-map-${colorName}-bg)`);
|
|
53
|
+
} else {
|
|
54
|
+
this.#$wrapper.style.removeProperty('background-color');
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
setClass(this.#$wrapper, 'no-color', colorName === NO_COLOR);
|
package/color-swatch/types.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { TSinchElementReact } from '../types';
|
|
2
|
-
import type { TSinchColorName } from '../utils/colors';
|
|
3
2
|
export declare type TSinchColorSwatchElement = HTMLElement & {
|
|
4
3
|
/** Color name */
|
|
5
|
-
name:
|
|
4
|
+
name: string;
|
|
6
5
|
/** Color name */
|
|
7
|
-
setAttribute(name: 'name', value:
|
|
6
|
+
setAttribute(name: 'name', value: string): void;
|
|
8
7
|
};
|
|
9
8
|
export declare type TSinchColorSwatchReact = TSinchElementReact<TSinchColorSwatchElement> & {
|
|
10
9
|
/** Color name */
|
|
11
|
-
name:
|
|
10
|
+
name: string;
|
|
12
11
|
};
|
package/colors.json
CHANGED
|
@@ -43,24 +43,28 @@
|
|
|
43
43
|
"colorRaspberry200": "#FBD5D5",
|
|
44
44
|
"colorRaspberry100": "#FFE8E4",
|
|
45
45
|
"colorRaspberry50": "#FFF6F5",
|
|
46
|
+
"colorNight700": "#1223a1",
|
|
46
47
|
"colorNight400": "#3247E9",
|
|
47
48
|
"colorNight200": "#D1D6FA",
|
|
48
|
-
"
|
|
49
|
-
"colorAqua200": "#A1D5F5",
|
|
49
|
+
"colorGrass700": "#006602",
|
|
50
50
|
"colorGrass400": "#39B93D",
|
|
51
51
|
"colorGrass200": "#B4E4B5",
|
|
52
|
+
"colorDirt700": "#363230",
|
|
52
53
|
"colorDirt400": "#828282",
|
|
53
54
|
"colorDirt200": "#E0DDDC",
|
|
54
|
-
"
|
|
55
|
-
"colorBerry200": "#FFB8B8",
|
|
55
|
+
"colorCandy700": "#981b77",
|
|
56
56
|
"colorCandy400": "#E467C3",
|
|
57
57
|
"colorCandy200": "#F6CBEA",
|
|
58
|
+
"colorMud700": "#6d4e46",
|
|
58
59
|
"colorMud400": "#8B6559",
|
|
59
60
|
"colorMud200": "#D7C6C1",
|
|
61
|
+
"colorOrange700": "#974302",
|
|
60
62
|
"colorOrange400": "#FF8C34",
|
|
61
63
|
"colorOrange200": "#FFD4B3",
|
|
64
|
+
"colorBolt700": "#805500",
|
|
62
65
|
"colorBolt400": "#FFBE3C",
|
|
63
66
|
"colorBolt200": "#FFE6B3",
|
|
67
|
+
"colorViolet700": "#4F1B98",
|
|
64
68
|
"colorViolet400": "#9E67E4",
|
|
65
69
|
"colorViolet200": "#DECBF6",
|
|
66
70
|
"colorError700": "#882024",
|
|
@@ -75,10 +79,10 @@
|
|
|
75
79
|
"colorWarning700": "#9C2E00",
|
|
76
80
|
"colorWarning500": "#F35B1C",
|
|
77
81
|
"colorWarning200": "#FFE8D6",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
82
|
+
"colorColorSkinTone0": "#FFCC4D",
|
|
83
|
+
"colorColorSkinTone10": "#F7DECE",
|
|
84
|
+
"colorColorSkinTone20": "#F3D2A2",
|
|
85
|
+
"colorColorSkinTone30": "#D4AB88",
|
|
86
|
+
"colorColorSkinTone40": "#AF7E57",
|
|
87
|
+
"colorColorSkinTone50": "#7C533E"
|
|
84
88
|
}
|