vira 31.31.7 → 32.0.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.
Files changed (74) hide show
  1. package/dist/elements/color/vira-all-color-space-sliders.element.d.ts +11 -0
  2. package/dist/elements/color/vira-all-color-space-sliders.element.js +55 -0
  3. package/dist/elements/color/vira-all-spaces-color-picker.element.d.ts +15 -0
  4. package/dist/elements/color/vira-all-spaces-color-picker.element.js +73 -0
  5. package/dist/elements/color/vira-color-details.element.d.ts +14 -0
  6. package/dist/elements/color/vira-color-details.element.js +153 -0
  7. package/dist/elements/color/vira-color-format-sliders.element.d.ts +14 -0
  8. package/dist/elements/color/vira-color-format-sliders.element.js +60 -0
  9. package/dist/elements/color/vira-color-pair-contrast-summary.element.d.ts +9 -0
  10. package/dist/elements/color/vira-color-pair-contrast-summary.element.js +308 -0
  11. package/dist/elements/color/vira-color-pair.element.d.ts +17 -0
  12. package/dist/elements/color/vira-color-pair.element.js +201 -0
  13. package/dist/elements/color/vira-color-picker.element.d.ts +20 -0
  14. package/dist/elements/color/vira-color-picker.element.js +278 -0
  15. package/dist/elements/color/vira-color-slider.element.d.ts +14 -0
  16. package/dist/elements/color/vira-color-slider.element.js +124 -0
  17. package/dist/elements/color/vira-color-swatch.element.d.ts +20 -0
  18. package/dist/elements/color/vira-color-swatch.element.js +48 -0
  19. package/dist/elements/color/vira-contrast-indicator.element.d.ts +10 -0
  20. package/dist/elements/color/vira-contrast-indicator.element.js +96 -0
  21. package/dist/elements/index.d.ts +10 -0
  22. package/dist/elements/index.js +10 -0
  23. package/dist/elements/pop-up/vira-menu-item.element.d.ts +1 -1
  24. package/dist/elements/pop-up/vira-menu-item.element.js +20 -8
  25. package/dist/elements/pop-up/vira-menu-trigger.element.d.ts +1 -1
  26. package/dist/elements/pop-up/vira-menu-trigger.element.js +3 -1
  27. package/dist/elements/pop-up/vira-menu.element.js +10 -4
  28. package/dist/elements/pop-up/vira-pop-up-trigger.element.d.ts +3 -3
  29. package/dist/elements/pop-up/vira-pop-up-trigger.element.js +24 -10
  30. package/dist/elements/vira-bold-text.element.js +4 -2
  31. package/dist/elements/vira-button.element.d.ts +1 -8
  32. package/dist/elements/vira-button.element.js +28 -37
  33. package/dist/elements/vira-card.element.js +7 -3
  34. package/dist/elements/vira-checkbox.element.d.ts +1 -1
  35. package/dist/elements/vira-checkbox.element.js +13 -5
  36. package/dist/elements/vira-collapsible-card.element.d.ts +1 -1
  37. package/dist/elements/vira-collapsible-card.element.js +13 -5
  38. package/dist/elements/vira-collapsible-wrapper.element.d.ts +1 -1
  39. package/dist/elements/vira-collapsible-wrapper.element.js +7 -3
  40. package/dist/elements/vira-date-input.element.d.ts +1 -1
  41. package/dist/elements/vira-date-input.element.js +10 -4
  42. package/dist/elements/vira-drawer.element.d.ts +1 -1
  43. package/dist/elements/vira-drawer.element.js +14 -6
  44. package/dist/elements/vira-dropdown.element.d.ts +2 -8
  45. package/dist/elements/vira-dropdown.element.js +6 -10
  46. package/dist/elements/vira-error.element.js +1 -1
  47. package/dist/elements/vira-form.element.d.ts +2 -2
  48. package/dist/elements/vira-form.element.js +36 -22
  49. package/dist/elements/vira-icon.element.js +4 -2
  50. package/dist/elements/vira-image.element.d.ts +2 -2
  51. package/dist/elements/vira-image.element.js +7 -3
  52. package/dist/elements/vira-input.element.d.ts +2 -2
  53. package/dist/elements/vira-input.element.js +23 -9
  54. package/dist/elements/vira-json-form.element.d.ts +1 -1
  55. package/dist/elements/vira-json-form.element.js +18 -8
  56. package/dist/elements/vira-link.element.js +5 -3
  57. package/dist/elements/vira-modal.element.d.ts +1 -1
  58. package/dist/elements/vira-modal.element.js +14 -6
  59. package/dist/elements/vira-progress.element.js +1 -1
  60. package/dist/elements/vira-select.element.d.ts +1 -1
  61. package/dist/elements/vira-select.element.js +20 -8
  62. package/dist/elements/vira-tabs.element.d.ts +2 -2
  63. package/dist/elements/vira-tabs.element.js +35 -21
  64. package/dist/elements/vira-tag.element.d.ts +3 -3
  65. package/dist/elements/vira-tag.element.js +46 -18
  66. package/dist/elements/vira-text-area.element.d.ts +2 -2
  67. package/dist/elements/vira-text-area.element.js +16 -6
  68. package/dist/util/color-local-storage.client.d.ts +4 -0
  69. package/dist/util/color-local-storage.client.js +6 -0
  70. package/dist/util/define-vira-element.js +1 -1
  71. package/dist/util/vira-json-schema.js +9 -9
  72. package/package.json +11 -11
  73. package/dist/icons/icon-color.test-helper.d.ts +0 -6
  74. package/dist/icons/icon-color.test-helper.js +0 -9
@@ -0,0 +1,11 @@
1
+ import { type Color } from '@electrovir/color/dist/data/color-class/color.js';
2
+ /**
3
+ * Color sliders for all color spaces.
4
+ *
5
+ * @category Elements
6
+ */
7
+ export declare const ViraAllColorSpaceSliders: import("element-vir").DeclarativeElementDefinition<"vira-all-color-space-sliders", {
8
+ color: Readonly<Color>;
9
+ }, {}, {
10
+ colorChange: import("element-vir").DefineElementEvent<string>;
11
+ }, "vira-all-color-space-sliders-", "vira-all-color-space-sliders-", readonly [], readonly []>;
@@ -0,0 +1,55 @@
1
+ /* node:coverage disable */
2
+ import { getObjectTypedKeys, getObjectTypedValues } from '@augment-vir/common';
3
+ import { colorFormatsBySpace } from '@electrovir/color/dist/data/color-class/color-formats.js';
4
+ import { css, defineElement, defineElementEvent, html, listen } from 'element-vir';
5
+ import { ViraColorFormatSliders } from './vira-color-format-sliders.element.js';
6
+ /**
7
+ * Color sliders for all color spaces.
8
+ *
9
+ * @category Elements
10
+ */
11
+ export const ViraAllColorSpaceSliders = defineElement()({
12
+ tagName: 'vira-all-color-space-sliders',
13
+ styles: css `
14
+ :host {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 16px;
18
+ }
19
+
20
+ .color-space {
21
+ display: flex;
22
+ flex-wrap: wrap;
23
+ column-gap: 32px;
24
+ row-gap: 8px;
25
+ }
26
+ `,
27
+ events: {
28
+ colorChange: defineElementEvent(),
29
+ },
30
+ render({ inputs, dispatch, events }) {
31
+ const colorSpaceTemplates = getObjectTypedValues(colorFormatsBySpace).map((colorSpaceFormats) => {
32
+ const formatTemplates = getObjectTypedKeys(colorSpaceFormats).map((colorFormatName) => {
33
+ return html `
34
+ <${ViraColorFormatSliders.assign({
35
+ color: inputs.color,
36
+ colorFormatName,
37
+ showFormatName: true,
38
+ })}
39
+ ${listen(ViraColorFormatSliders.events.colorChange, (event) => {
40
+ dispatch(new events.colorChange({
41
+ detail: event.detail,
42
+ }));
43
+ })}
44
+ ></${ViraColorFormatSliders}>
45
+ `;
46
+ });
47
+ return html `
48
+ <section class="color-space">${formatTemplates}</section>
49
+ `;
50
+ });
51
+ return html `
52
+ ${colorSpaceTemplates}
53
+ `;
54
+ },
55
+ });
@@ -0,0 +1,15 @@
1
+ import { type ColorSyntaxName } from '@electrovir/color/dist/data/color-class/color-formats.js';
2
+ /**
3
+ * A color picker element that shows sliders for all supported color spaces at once, as well as all
4
+ * the values for all supported color spaces in a table.
5
+ *
6
+ * @category Elements
7
+ */
8
+ export declare const ViraAllSpacesColorPicker: import("element-vir").DeclarativeElementDefinition<"vira-all-spaces-color-picker", {
9
+ color: string;
10
+ }, {
11
+ inputColorString: undefined | string;
12
+ overrideInputColor: undefined | ColorSyntaxName;
13
+ }, {
14
+ colorChange: import("element-vir").DefineElementEvent<string>;
15
+ }, "vira-all-spaces-color-picker-", "vira-all-spaces-color-picker-", readonly [], readonly []>;
@@ -0,0 +1,73 @@
1
+ /* node:coverage disable */
2
+ import { getColorSyntaxFromCssString, } from '@electrovir/color/dist/data/color-class/color-formats.js';
3
+ import { Color } from '@electrovir/color/dist/data/color-class/color.js';
4
+ import { css, defineElement, defineElementEvent, html, listen } from 'element-vir';
5
+ import { ViraAllColorSpaceSliders } from './vira-all-color-space-sliders.element.js';
6
+ import { ViraColorDetails } from './vira-color-details.element.js';
7
+ /**
8
+ * A color picker element that shows sliders for all supported color spaces at once, as well as all
9
+ * the values for all supported color spaces in a table.
10
+ *
11
+ * @category Elements
12
+ */
13
+ export const ViraAllSpacesColorPicker = defineElement()({
14
+ tagName: 'vira-all-spaces-color-picker',
15
+ styles: css `
16
+ :host {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 16px;
20
+ }
21
+ `,
22
+ events: {
23
+ colorChange: defineElementEvent(),
24
+ },
25
+ state() {
26
+ return {
27
+ inputColorString: undefined,
28
+ overrideInputColor: undefined,
29
+ };
30
+ },
31
+ render({ inputs, dispatch, events, state, updateState }) {
32
+ const color = new Color(inputs.color);
33
+ if (state.overrideInputColor) {
34
+ updateState({
35
+ inputColorString: color.toCss()[state.overrideInputColor],
36
+ });
37
+ }
38
+ if (state.inputColorString == undefined) {
39
+ updateState({
40
+ inputColorString: inputs.color,
41
+ });
42
+ }
43
+ return html `
44
+ <${ViraColorDetails.assign({
45
+ color: inputs.color,
46
+ showInput: true,
47
+ })}
48
+ ${listen(ViraColorDetails.events.colorChange, (event) => {
49
+ updateState({
50
+ inputColorString: event.detail,
51
+ overrideInputColor: undefined,
52
+ });
53
+ dispatch(new events.colorChange({
54
+ detail: event.detail,
55
+ }));
56
+ })}
57
+ ></${ViraColorDetails}>
58
+ <${ViraAllColorSpaceSliders.assign({
59
+ color,
60
+ })}
61
+ ${listen(ViraAllColorSpaceSliders.events.colorChange, (event) => {
62
+ const colorSyntax = getColorSyntaxFromCssString(state.inputColorString || '#');
63
+ updateState({
64
+ overrideInputColor: colorSyntax,
65
+ });
66
+ dispatch(new events.colorChange({
67
+ detail: event.detail,
68
+ }));
69
+ })}
70
+ ></${ViraAllColorSpaceSliders}>
71
+ `;
72
+ },
73
+ });
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A color swatch alongside the color in all of its different supported formats.
3
+ *
4
+ * @category Internal
5
+ */
6
+ export declare const ViraColorDetails: import("element-vir").DeclarativeElementDefinition<"vira-color-details", {
7
+ color: string;
8
+ /** Show a text input that triggers an event when it is edited, for changing the color. */
9
+ showInput: boolean;
10
+ }, {
11
+ inputColorString: undefined | string;
12
+ }, {
13
+ colorChange: import("element-vir").DefineElementEvent<string>;
14
+ }, "vira-color-details-", "vira-color-details-", readonly [], readonly []>;
@@ -0,0 +1,153 @@
1
+ /* node:coverage disable */
2
+ import { check } from '@augment-vir/assert';
3
+ import { getObjectTypedEntries, mapObject } from '@augment-vir/common';
4
+ import { ColorSyntaxName } from '@electrovir/color/dist/data/color-class/color-formats.js';
5
+ import { Color } from '@electrovir/color/dist/data/color-class/color.js';
6
+ import { css, defineElement, defineElementEvent, html, listen } from 'element-vir';
7
+ import { viraFontCssVars } from '../../styles/font.js';
8
+ import { noNativeSpacing } from '../../styles/native-styles.js';
9
+ import { defineTable } from '../../util/define-table.js';
10
+ import { ViraInput } from '../vira-input.element.js';
11
+ import { ViraColorSwatch } from './vira-color-swatch.element.js';
12
+ const omittedColors = [
13
+ ColorSyntaxName.hex,
14
+ ColorSyntaxName.name,
15
+ ];
16
+ /**
17
+ * A color swatch alongside the color in all of its different supported formats.
18
+ *
19
+ * @category Internal
20
+ */
21
+ export const ViraColorDetails = defineElement()({
22
+ tagName: 'vira-color-details',
23
+ styles: css `
24
+ :host {
25
+ display: flex;
26
+ gap: 16px;
27
+ }
28
+
29
+ ${ViraColorSwatch} {
30
+ height: 200px;
31
+ width: 200px;
32
+ }
33
+
34
+ .swatch {
35
+ display: flex;
36
+ flex-direction: column;
37
+ gap: 8px;
38
+ align-items: center;
39
+ }
40
+
41
+ ${ViraInput} {
42
+ font-size: 14px;
43
+ font-family: ${viraFontCssVars['vira-monospace'].value};
44
+ max-width: 200px;
45
+ }
46
+
47
+ td {
48
+ font-weight: bold;
49
+ }
50
+
51
+ th {
52
+ padding: 4px 8px;
53
+ font-weight: normal;
54
+ text-align: right;
55
+ }
56
+ pre {
57
+ ${noNativeSpacing};
58
+ font-family: ${viraFontCssVars['vira-monospace'].value};
59
+ }
60
+ `,
61
+ events: {
62
+ colorChange: defineElementEvent(),
63
+ },
64
+ state() {
65
+ return {
66
+ inputColorString: undefined,
67
+ };
68
+ },
69
+ render({ inputs, dispatch, events, state, updateState }) {
70
+ const color = new Color(inputs.color);
71
+ const colorStrings = mapObject(color.toFormattedStrings(), (key, value) => {
72
+ if (check.hasValue(omittedColors, key)) {
73
+ return undefined;
74
+ }
75
+ else if (key === 'hexString') {
76
+ return {
77
+ key: 'hex',
78
+ value,
79
+ };
80
+ }
81
+ else {
82
+ return {
83
+ key,
84
+ value,
85
+ };
86
+ }
87
+ });
88
+ if (state.inputColorString == undefined) {
89
+ updateState({
90
+ inputColorString: inputs.color,
91
+ });
92
+ }
93
+ const { rows } = defineTable({
94
+ headers: [
95
+ {
96
+ key: 'colorFormat',
97
+ },
98
+ {
99
+ key: 'formattedString',
100
+ },
101
+ ],
102
+ originalData: getObjectTypedEntries(colorStrings),
103
+ dataMap([colorFormat, value,]) {
104
+ return {
105
+ colorFormat: `${colorFormat}:`,
106
+ formattedString: html `
107
+ <pre>${value}</pre>
108
+ `,
109
+ };
110
+ },
111
+ });
112
+ const inputTemplate = inputs.showInput
113
+ ? html `
114
+ <${ViraInput.assign({
115
+ value: state.inputColorString || '',
116
+ fitText: true,
117
+ })}
118
+ ${listen(ViraInput.events.valueChange, (event) => {
119
+ updateState({
120
+ inputColorString: event.detail,
121
+ });
122
+ dispatch(new events.colorChange({
123
+ detail: event.detail,
124
+ }));
125
+ })}
126
+ ></${ViraInput}>
127
+ `
128
+ : '';
129
+ return html `
130
+ <div class="swatch">
131
+ <${ViraColorSwatch.assign({
132
+ backgroundColor: inputs.color,
133
+ })}></${ViraColorSwatch}>
134
+ ${inputTemplate}
135
+ </div>
136
+ <table>
137
+ <tbody>
138
+ ${rows.map((row) => {
139
+ const cells = row.cells.map((cell, index) => {
140
+ const element = index ? 'td' : 'th';
141
+ return html `
142
+ <${element}>${cell.content}</${element}>
143
+ `;
144
+ });
145
+ return html `
146
+ <tr>${cells}</tr>
147
+ `;
148
+ })}
149
+ </tbody>
150
+ </table>
151
+ `;
152
+ },
153
+ });
@@ -0,0 +1,14 @@
1
+ import { type ColorFormatName } from '@electrovir/color/dist/data/color-class/color-formats.js';
2
+ import { type Color } from '@electrovir/color/dist/data/color-class/color.js';
3
+ /**
4
+ * Color sliders for all coordinates within a specific color format.
5
+ *
6
+ * @category Elements
7
+ */
8
+ export declare const ViraColorFormatSliders: import("element-vir").DeclarativeElementDefinition<"vira-color-format-sliders", {
9
+ color: Readonly<Color>;
10
+ colorFormatName: ColorFormatName;
11
+ showFormatName: boolean;
12
+ }, {}, {
13
+ colorChange: import("element-vir").DefineElementEvent<string>;
14
+ }, "vira-color-format-sliders-", "vira-color-format-sliders-", readonly [], readonly []>;
@@ -0,0 +1,60 @@
1
+ /* node:coverage disable */
2
+ import { getObjectTypedKeys } from '@augment-vir/common';
3
+ import { colorFormats, } from '@electrovir/color/dist/data/color-class/color-formats.js';
4
+ import { css, defineElement, defineElementEvent, html, listen, nothing } from 'element-vir';
5
+ import { noNativeSpacing } from '../../styles/native-styles.js';
6
+ import { ViraColorSlider } from './vira-color-slider.element.js';
7
+ /**
8
+ * Color sliders for all coordinates within a specific color format.
9
+ *
10
+ * @category Elements
11
+ */
12
+ export const ViraColorFormatSliders = defineElement()({
13
+ tagName: 'vira-color-format-sliders',
14
+ styles: css `
15
+ :host {
16
+ display: flex;
17
+ flex-direction: column;
18
+ }
19
+
20
+ h3 {
21
+ ${noNativeSpacing};
22
+ }
23
+ `,
24
+ events: {
25
+ colorChange: defineElementEvent(),
26
+ },
27
+ render({ inputs, dispatch, events }) {
28
+ const colorFormat = colorFormats[inputs.colorFormatName];
29
+ const coordinateTemplates = getObjectTypedKeys(colorFormat.coords).map((colorCoordinate) => {
30
+ return html `
31
+ <${ViraColorSlider.assign({
32
+ color: inputs.color,
33
+ colorCoordinateName: colorCoordinate,
34
+ colorFormatName: inputs.colorFormatName,
35
+ })}
36
+ ${listen(ViraColorSlider.events.valueChange, (event) => {
37
+ const newColor = inputs.color.clone();
38
+ newColor.set({
39
+ [inputs.colorFormatName]: {
40
+ [colorCoordinate]: event.detail,
41
+ },
42
+ });
43
+ const newValue = newColor.toCss()[colorFormat.conversionFormat];
44
+ dispatch(new events.colorChange({
45
+ detail: newValue,
46
+ }));
47
+ })}
48
+ ></${ViraColorSlider}>
49
+ `;
50
+ });
51
+ return html `
52
+ ${inputs.showFormatName
53
+ ? html `
54
+ <h3>${inputs.colorFormatName}</h3>
55
+ `
56
+ : nothing}
57
+ ${coordinateTemplates}
58
+ `;
59
+ },
60
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A huge summary of a color pair's contrast levels, font sizes, font weights, etc.
3
+ *
4
+ * @category Elements
5
+ */
6
+ export declare const ViraColorPairContrastSummary: import("element-vir").DeclarativeElementDefinition<"vira-color-pair-contrast-summary", {
7
+ foregroundColor: string;
8
+ backgroundColor: string;
9
+ }, {}, {}, "vira-color-pair-contrast-summary-", "vira-color-pair-contrast-summary-", readonly [], readonly []>;