@ethlete/components 1.0.0-next.77 → 1.0.0-next.78

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 (78) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/design/config.json +19 -0
  3. package/design/form-field.ts +40 -1
  4. package/design/icon-set.ts +19 -0
  5. package/design/icon.ts +9 -0
  6. package/design/sdk/components/button/button.ts +39 -0
  7. package/design/sdk/components/form-field/form-field.ts +100 -0
  8. package/design/sdk/components/select/select.css +5 -0
  9. package/design/sdk/components/select/select.ts +16 -0
  10. package/design/sdk/components/select/shared/select-part.ts +60 -0
  11. package/design/sdk/fixtures.ts +0 -0
  12. package/design/sdk/foundations/colors/colors.css +528 -0
  13. package/design/sdk/foundations/colors/colors.ts +188 -0
  14. package/design/sdk/foundations/colors/overrides.json +19 -0
  15. package/design/sdk/foundations/colors/shared/contrast.ts +120 -0
  16. package/design/select.ts +113 -28
  17. package/design/tree.ts +106 -0
  18. package/fesm2022/ethlete-components.mjs +15 -15
  19. package/fesm2022/ethlete-components.mjs.map +1 -1
  20. package/package.json +1 -1
  21. package/src/lib/forms/form-field/form-field-text-shell-styles.component.css +24 -16
  22. package/src/lib/forms/select/select-option-styles.component.css +3 -2
  23. package/src/lib/icon/headless/align-icons.ts +30 -0
  24. package/src/lib/icon/headless/arrow-out-up-right-icon.ts +17 -0
  25. package/src/lib/icon/headless/arrow-right-icon.ts +23 -0
  26. package/src/lib/icon/headless/arrow-up-icon.ts +30 -0
  27. package/src/lib/icon/headless/arrows-left-right-icon.ts +31 -0
  28. package/src/lib/icon/headless/bold-icon.ts +11 -0
  29. package/src/lib/icon/headless/calendar-icon.ts +21 -0
  30. package/src/lib/icon/headless/check-icon.ts +14 -0
  31. package/src/lib/icon/headless/chevron-icon.ts +14 -0
  32. package/src/lib/icon/headless/circle-check-icon.ts +14 -0
  33. package/src/lib/icon/headless/circle-info-icon.ts +14 -0
  34. package/src/lib/icon/headless/clipboard-check-icon.ts +28 -0
  35. package/src/lib/icon/headless/clock-icon.ts +21 -0
  36. package/src/lib/icon/headless/code-block-icon.ts +15 -0
  37. package/src/lib/icon/headless/code-icon.ts +14 -0
  38. package/src/lib/icon/headless/ellipsis-icon.ts +13 -0
  39. package/src/lib/icon/headless/ellipsis-vertical-icon.ts +13 -0
  40. package/src/lib/icon/headless/eye-icons.ts +27 -0
  41. package/src/lib/icon/headless/eyedropper-icon.ts +22 -0
  42. package/src/lib/icon/headless/file-icon.ts +16 -0
  43. package/src/lib/icon/headless/filter-icon.ts +11 -0
  44. package/src/lib/icon/headless/floppy-disk-icon.ts +27 -0
  45. package/src/lib/icon/headless/focus-frame-icon.ts +16 -0
  46. package/src/lib/icon/headless/grid-2x2-icon.ts +17 -0
  47. package/src/lib/icon/headless/heading-1-icon.ts +11 -0
  48. package/src/lib/icon/headless/heading-2-icon.ts +11 -0
  49. package/src/lib/icon/headless/heading-3-icon.ts +11 -0
  50. package/src/lib/icon/headless/icon-definition.ts +14 -0
  51. package/src/lib/icon/headless/image-icon.ts +14 -0
  52. package/src/lib/icon/headless/italic-icon.ts +19 -0
  53. package/src/lib/icon/headless/link-icon.ts +17 -0
  54. package/src/lib/icon/headless/list-bulleted-icon.ts +14 -0
  55. package/src/lib/icon/headless/list-numbered-icon.ts +14 -0
  56. package/src/lib/icon/headless/location-icon.ts +21 -0
  57. package/src/lib/icon/headless/lock-icon.ts +14 -0
  58. package/src/lib/icon/headless/minus-icon.ts +14 -0
  59. package/src/lib/icon/headless/paragraph-icon.ts +11 -0
  60. package/src/lib/icon/headless/pause-icon.ts +11 -0
  61. package/src/lib/icon/headless/pencil-icon.ts +21 -0
  62. package/src/lib/icon/headless/play-icon.ts +10 -0
  63. package/src/lib/icon/headless/plus-icon.ts +21 -0
  64. package/src/lib/icon/headless/quote-icon.ts +15 -0
  65. package/src/lib/icon/headless/rotate-right-icon.ts +16 -0
  66. package/src/lib/icon/headless/star-icon.ts +14 -0
  67. package/src/lib/icon/headless/strikethrough-icon.ts +18 -0
  68. package/src/lib/icon/headless/table-icon.ts +15 -0
  69. package/src/lib/icon/headless/thumbtack-icon.ts +18 -0
  70. package/src/lib/icon/headless/times-icon.ts +14 -0
  71. package/src/lib/icon/headless/trash-icon.ts +24 -0
  72. package/src/lib/icon/headless/triangle-exclamation-icon.ts +14 -0
  73. package/src/lib/icon/headless/trophy-icon.ts +24 -0
  74. package/src/lib/icon/headless/underline-icon.ts +12 -0
  75. package/src/lib/icon/headless/undo-redo-icons.ts +24 -0
  76. package/src/lib/icon/headless/upload-icon.ts +16 -0
  77. package/src/lib/tree/tree.component.css +2 -2
  78. package/types/ethlete-components.d.ts +52 -52
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethlete/components",
3
- "version": "1.0.0-next.77",
3
+ "version": "1.0.0-next.78",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ethlete-io/ethdk",
@@ -47,6 +47,26 @@
47
47
  injected by the control, so a control instantiated before any form-field would inject it
48
48
  *before* the base sheet and lose every source-order tie against the base frame/label rules. */
49
49
  &[data-text-shell] {
50
+ --_et-form-field-frame-border: var(--et-surface-border-solid, currentColor);
51
+ --_et-form-field-frame-border-hover: var(--et-surface-interaction-hover-solid, currentColor);
52
+ --_et-form-field-label-color: var(--et-surface-color-muted-solid, currentColor);
53
+ --_et-form-field-label-color-active: var(--et-surface-color-solid, currentColor);
54
+
55
+ &[data-error] {
56
+ --_et-form-field-frame-border: color-mix(in srgb, var(--et-theme-color-primary-solid) 50%, transparent);
57
+ --_et-form-field-frame-border-hover: var(--et-theme-color-ink-solid);
58
+ --_et-form-field-label-color: var(--et-theme-color-ink-solid);
59
+ --_et-form-field-label-color-active: var(--et-theme-color-ink-solid);
60
+ }
61
+
62
+ .et-form-field-control-frame {
63
+ border-color: var(--_et-form-field-frame-border);
64
+ }
65
+
66
+ .et-form-field-affix {
67
+ color: var(--_et-form-field-label-color);
68
+ }
69
+
50
70
  &[data-label-mode='static'] {
51
71
  &[data-has-label]:not(:has(et-label[hidden])) .et-form-field-shell {
52
72
  padding-block-start: calc(var(--et-form-field-label-font-size) * 1.2 + var(--et-form-field-gap));
@@ -178,6 +198,7 @@
178
198
  }
179
199
 
180
200
  .et-form-field-label-area {
201
+ color: var(--_et-form-field-label-color);
181
202
  max-inline-size: 100%;
182
203
  overflow: hidden;
183
204
  text-overflow: ellipsis;
@@ -194,12 +215,12 @@
194
215
  :has(.et-form-field-label-area:hover)
195
216
  ) {
196
217
  .et-form-field-control-frame {
197
- border-color: var(--et-surface-interaction-hover-solid, currentColor);
218
+ border-color: var(--_et-form-field-frame-border-hover);
198
219
  }
199
220
 
200
221
  .et-form-field-label-area,
201
222
  .et-form-field-affix {
202
- color: var(--et-surface-color-solid, currentColor);
223
+ color: var(--_et-form-field-label-color-active);
203
224
  opacity: 1;
204
225
  }
205
226
  }
@@ -217,7 +238,7 @@
217
238
  &:where([data-expanded]:not([data-readonly])) .et-form-field-affix,
218
239
  &:where([data-focused]:not([data-readonly])) .et-form-field-label-area,
219
240
  &:where([data-focused]:not([data-readonly])) .et-form-field-affix {
220
- color: var(--et-surface-color-solid, currentColor);
241
+ color: var(--_et-form-field-label-color-active);
221
242
  opacity: 1;
222
243
  }
223
244
 
@@ -242,19 +263,6 @@
242
263
  }
243
264
  }
244
265
 
245
- &[data-error] .et-form-field-control-frame {
246
- border-color: var(--et-theme-color-primary-solid);
247
- }
248
-
249
- &[data-error] .et-form-field-label-area {
250
- color: var(--et-theme-color-ink-solid);
251
- }
252
-
253
- &[data-error] .et-form-field-affix {
254
- color: var(--et-theme-color-ink-solid);
255
- opacity: 1;
256
- }
257
-
258
266
  /* Driven by the registered control's disabled state (data-disabled), NOT :has(:disabled) —
259
267
  a composite control like the rich text editor legitimately disables individual toolbar
260
268
  buttons while fully enabled, and :has(:disabled) would dim (and pointer-events-kill) the
@@ -61,7 +61,8 @@
61
61
  opacity 120ms ease;
62
62
 
63
63
  &:where([data-active][data-active-source='keyboard']) {
64
- background: color-mix(in srgb, var(--et-surface-interaction-solid, rgb(255 255 255)) 12%, transparent);
64
+ outline: 2px solid var(--et-theme-color-ink-solid, currentColor);
65
+ outline-offset: -2px;
65
66
  }
66
67
 
67
68
  @media (hover: hover) {
@@ -90,7 +91,7 @@
90
91
  flex: none;
91
92
  inline-size: var(--et-select-option-check-size);
92
93
  block-size: var(--et-select-option-check-size);
93
- color: var(--et-theme-color-primary-solid, currentColor);
94
+ color: var(--et-theme-color-ink-solid, currentColor);
94
95
  /* hidden via opacity, NOT visibility — an explicit `visibility: visible` would punch
95
96
  through the pane's positioning phase (`visibility: hidden`) and paint the check
96
97
  before the panel itself becomes visible */
@@ -0,0 +1,30 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ const svg = (lines: string) =>
4
+ `<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"
5
+ stroke="currentColor" stroke-width="1.4" stroke-linecap="round">${lines}</svg>`;
6
+
7
+ // Custom icons - horizontal rules representing text-align.
8
+ export const ALIGN_LEFT_ICON: IconDefinition = {
9
+ name: 'et-align-left',
10
+ data: /* @__PURE__ */ svg(`<line x1="2.5" y1="4" x2="13.5" y2="4"/><line x1="2.5" y1="8" x2="9.5" y2="8"/>
11
+ <line x1="2.5" y1="12" x2="12" y2="12"/>`),
12
+ };
13
+
14
+ export const ALIGN_CENTER_ICON: IconDefinition = {
15
+ name: 'et-align-center',
16
+ data: /* @__PURE__ */ svg(`<line x1="2.5" y1="4" x2="13.5" y2="4"/><line x1="4.5" y1="8" x2="11.5" y2="8"/>
17
+ <line x1="3.5" y1="12" x2="12.5" y2="12"/>`),
18
+ };
19
+
20
+ export const ALIGN_RIGHT_ICON: IconDefinition = {
21
+ name: 'et-align-right',
22
+ data: /* @__PURE__ */ svg(`<line x1="2.5" y1="4" x2="13.5" y2="4"/><line x1="6.5" y1="8" x2="13.5" y2="8"/>
23
+ <line x1="4" y1="12" x2="13.5" y2="12"/>`),
24
+ };
25
+
26
+ export const ALIGN_JUSTIFY_ICON: IconDefinition = {
27
+ name: 'et-align-justify',
28
+ data: /* @__PURE__ */ svg(`<line x1="2.5" y1="4" x2="13.5" y2="4"/><line x1="2.5" y1="8" x2="13.5" y2="8"/>
29
+ <line x1="2.5" y1="12" x2="13.5" y2="12"/>`),
30
+ };
@@ -0,0 +1,17 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const ARROW_OUT_UP_RIGHT_ICON: IconDefinition = {
4
+ name: 'et-arrow-out-up-right',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
7
+ <path
8
+ fill="currentColor"
9
+ d="M5 6.75A1.75 1.75 0 0 1 6.75 5h4.5a.75.75 0 0 1 0 1.5h-4.5a.25.25 0 0 0-.25.25v10.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-4.5a.75.75 0 0 1 1.5 0v4.5A1.75 1.75 0 0 1 17.25 19H6.75A1.75 1.75 0 0 1 5 17.25V6.75Z"
10
+ />
11
+ <path
12
+ fill="currentColor"
13
+ d="M11.5 5.75c0-.414.336-.75.75-.75h6c.414 0 .75.336.75.75v6a.75.75 0 0 1-1.5 0V7.56l-6.72 6.72a.75.75 0 1 1-1.06-1.06l6.72-6.72h-4.19a.75.75 0 0 1-.75-.75Z"
14
+ />
15
+ </svg>
16
+ `,
17
+ };
@@ -0,0 +1,23 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const ARROW_RIGHT_ICON: IconDefinition = {
4
+ name: 'et-arrow-right',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
7
+ <path
8
+ d="M4 12h14"
9
+ stroke="currentColor"
10
+ stroke-width="1.8"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ />
14
+ <path
15
+ d="M13 7l5 5-5 5"
16
+ stroke="currentColor"
17
+ stroke-width="1.8"
18
+ stroke-linecap="round"
19
+ stroke-linejoin="round"
20
+ />
21
+ </svg>
22
+ `,
23
+ };
@@ -0,0 +1,30 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ /**
4
+ * Upward arrow. Rotate it 180° for the downward one - see the table's sort indicator.
5
+ *
6
+ * Drawn to fill its viewBox and sit centred in it (the shaft spans 3.5–20.5 of 24, so the glyph's
7
+ * midpoint is the box's). An arrow inset from its own box renders far smaller than the text it sits
8
+ * beside, and off-centre against it, however carefully the box itself is aligned.
9
+ */
10
+ export const ARROW_UP_ICON: IconDefinition = {
11
+ name: 'et-arrow-up',
12
+ data: `
13
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
14
+ <path
15
+ d="M12 20.5V3.5"
16
+ stroke="currentColor"
17
+ stroke-width="2"
18
+ stroke-linecap="round"
19
+ stroke-linejoin="round"
20
+ />
21
+ <path
22
+ d="M5.5 10L12 3.5 18.5 10"
23
+ stroke="currentColor"
24
+ stroke-width="2"
25
+ stroke-linecap="round"
26
+ stroke-linejoin="round"
27
+ />
28
+ </svg>
29
+ `,
30
+ };
@@ -0,0 +1,31 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ /** Arrows pointing apart along the inline axis - a "fit to width" action (the table's autosize). */
4
+ export const ARROWS_LEFT_RIGHT_ICON: IconDefinition = {
5
+ name: 'et-arrows-left-right',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
8
+ <path
9
+ d="M3.5 12h17"
10
+ stroke="currentColor"
11
+ stroke-width="2"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ />
15
+ <path
16
+ d="M8 7.5L3.5 12 8 16.5"
17
+ stroke="currentColor"
18
+ stroke-width="2"
19
+ stroke-linecap="round"
20
+ stroke-linejoin="round"
21
+ />
22
+ <path
23
+ d="M16 7.5L20.5 12 16 16.5"
24
+ stroke="currentColor"
25
+ stroke-width="2"
26
+ stroke-linecap="round"
27
+ stroke-linejoin="round"
28
+ />
29
+ </svg>
30
+ `,
31
+ };
@@ -0,0 +1,11 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon.
4
+ export const BOLD_ICON: IconDefinition = {
5
+ name: 'et-bold',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
8
+ <text x="8" y="12" font-size="12" font-weight="700" text-anchor="middle" fill="currentColor">B</text>
9
+ </svg>
10
+ `,
11
+ };
@@ -0,0 +1,21 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const CALENDAR_ICON: IconDefinition = {
4
+ name: 'et-calendar',
5
+ data: `
6
+ <svg
7
+ width="100%"
8
+ height="100%"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ viewBox="0 0 24 24"
11
+ fill="none"
12
+ stroke="currentColor"
13
+ stroke-width="1.8"
14
+ stroke-linecap="round"
15
+ stroke-linejoin="round"
16
+ >
17
+ <rect x="3.5" y="4.5" width="17" height="16.5" rx="3" />
18
+ <path d="M8 2.5v4M16 2.5v4M3.5 10h17" />
19
+ </svg>
20
+ `,
21
+ };
@@ -0,0 +1,14 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
4
+ export const CHECK_ICON: IconDefinition = {
5
+ name: 'et-check',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
8
+ <path
9
+ fill="currentColor"
10
+ d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"
11
+ />
12
+ </svg>
13
+ `,
14
+ };
@@ -0,0 +1,14 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
4
+ export const CHEVRON_ICON: IconDefinition = {
5
+ name: 'et-chevron',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
8
+ <path
9
+ fill="currentColor"
10
+ d="M244.7 116.7c6.2-6.2 16.4-6.2 22.6 0l192 192c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L256 150.6 75.3 331.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l192-192z"
11
+ />
12
+ </svg>
13
+ `,
14
+ };
@@ -0,0 +1,14 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
4
+ export const CIRCLE_CHECK_ICON: IconDefinition = {
5
+ name: 'et-circle-check',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
8
+ <path
9
+ fill="currentColor"
10
+ d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335.1 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"
11
+ />
12
+ </svg>
13
+ `,
14
+ };
@@ -0,0 +1,14 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
4
+ export const CIRCLE_INFO_ICON: IconDefinition = {
5
+ name: 'et-circle-info',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
8
+ <path
9
+ fill="currentColor"
10
+ d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"
11
+ />
12
+ </svg>
13
+ `,
14
+ };
@@ -0,0 +1,28 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const CLIPBOARD_CHECK_ICON: IconDefinition = {
4
+ name: 'et-clipboard-check',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
7
+ <path
8
+ d="M9 4.5h6"
9
+ stroke="currentColor"
10
+ stroke-width="1.8"
11
+ stroke-linecap="round"
12
+ />
13
+ <path
14
+ d="M9 3h6a1.5 1.5 0 0 1 1.5 1.5V6H18a2 2 0 0 1 2 2v10.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 4 18.5V8a2 2 0 0 1 2-2h1.5V4.5A1.5 1.5 0 0 1 9 3z"
15
+ stroke="currentColor"
16
+ stroke-width="1.8"
17
+ stroke-linejoin="round"
18
+ />
19
+ <path
20
+ d="M8.5 13l2.2 2.2 4.8-4.9"
21
+ stroke="currentColor"
22
+ stroke-width="1.8"
23
+ stroke-linecap="round"
24
+ stroke-linejoin="round"
25
+ />
26
+ </svg>
27
+ `,
28
+ };
@@ -0,0 +1,21 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const CLOCK_ICON: IconDefinition = {
4
+ name: 'et-clock',
5
+ data: `
6
+ <svg
7
+ width="100%"
8
+ height="100%"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ viewBox="0 0 24 24"
11
+ fill="none"
12
+ stroke="currentColor"
13
+ stroke-width="1.8"
14
+ stroke-linecap="round"
15
+ stroke-linejoin="round"
16
+ >
17
+ <circle cx="12" cy="12" r="8.75" />
18
+ <path d="M12 7.5V12l3 2" />
19
+ </svg>
20
+ `,
21
+ };
@@ -0,0 +1,15 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon: the inline-code chevrons inside a block, so it reads as a fenced block next to
4
+ // `et-code` (the inline mark) in the same toolbar.
5
+ export const CODE_BLOCK_ICON: IconDefinition = {
6
+ name: 'et-code-block',
7
+ data: `
8
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"
9
+ stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round">
10
+ <rect x="1.75" y="2.75" width="12.5" height="10.5" rx="2" />
11
+ <path d="M6.75 6.5 5 8l1.75 1.5" />
12
+ <path d="M9.25 6.5 11 8 9.25 9.5" />
13
+ </svg>
14
+ `,
15
+ };
@@ -0,0 +1,14 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon.
4
+ export const CODE_ICON: IconDefinition = {
5
+ name: 'et-code',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"
8
+ stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
9
+ <path d="M5.5 5 2.5 8l3 3" />
10
+ <path d="M10.5 5l3 3-3 3" />
11
+ <path d="M9 3.5 7 12.5" />
12
+ </svg>
13
+ `,
14
+ };
@@ -0,0 +1,13 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ /** Horizontal three-dot glyph - the breadcrumb's "show the hidden levels" trigger. */
4
+ export const ELLIPSIS_ICON: IconDefinition = {
5
+ name: 'et-ellipsis',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
8
+ <circle cx="5" cy="12" r="1.75" fill="currentColor" />
9
+ <circle cx="12" cy="12" r="1.75" fill="currentColor" />
10
+ <circle cx="19" cy="12" r="1.75" fill="currentColor" />
11
+ </svg>
12
+ `,
13
+ };
@@ -0,0 +1,13 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ /** Vertical three-dot "more actions" glyph - the table's column menu trigger. */
4
+ export const ELLIPSIS_VERTICAL_ICON: IconDefinition = {
5
+ name: 'et-ellipsis-vertical',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
8
+ <circle cx="12" cy="5" r="1.75" fill="currentColor" />
9
+ <circle cx="12" cy="12" r="1.75" fill="currentColor" />
10
+ <circle cx="12" cy="19" r="1.75" fill="currentColor" />
11
+ </svg>
12
+ `,
13
+ };
@@ -0,0 +1,27 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
4
+ export const EYE_ICON: IconDefinition = {
5
+ name: 'et-eye',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512">
8
+ <path
9
+ fill="currentColor"
10
+ d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"
11
+ />
12
+ </svg>
13
+ `,
14
+ };
15
+
16
+ // Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.
17
+ export const EYE_SLASH_ICON: IconDefinition = {
18
+ name: 'et-eye-slash',
19
+ data: `
20
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
21
+ <path
22
+ fill="currentColor"
23
+ d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"
24
+ />
25
+ </svg>
26
+ `,
27
+ };
@@ -0,0 +1,22 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const EYEDROPPER_ICON: IconDefinition = {
4
+ name: 'et-eyedropper',
5
+ data: `
6
+ <svg
7
+ width="100%"
8
+ height="100%"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ viewBox="0 0 24 24"
11
+ fill="none"
12
+ stroke="currentColor"
13
+ stroke-width="1.8"
14
+ stroke-linecap="round"
15
+ stroke-linejoin="round"
16
+ >
17
+ <path d="m3 21 1-1h3l8.5-8.5" />
18
+ <path d="M4 20v-3l8.5-8.5" />
19
+ <path d="m15 6 2.9-2.9a2.05 2.05 0 0 1 2.9 2.9L17.9 8.9l.4.4a2.05 2.05 0 0 1-2.9 2.9l-3.6-3.6a2.05 2.05 0 0 1 2.9-2.9l.3.3Z" />
20
+ </svg>
21
+ `,
22
+ };
@@ -0,0 +1,16 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const FILE_ICON: IconDefinition = {
4
+ name: 'et-file',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
7
+ <path
8
+ d="M13 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V9m-6-6 6 6m-6-6v6h6"
9
+ stroke="currentColor"
10
+ stroke-width="1.5"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ />
14
+ </svg>
15
+ `,
16
+ };
@@ -0,0 +1,11 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ /** Funnel glyph for a column's filter menu trigger. */
4
+ export const FILTER_ICON: IconDefinition = {
5
+ name: 'et-filter',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
8
+ <path fill="currentColor" d="M1 2h14l-5.5 6.5V14L6.5 12V8.5z" />
9
+ </svg>
10
+ `,
11
+ };
@@ -0,0 +1,27 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const FLOPPY_DISK_ICON: IconDefinition = {
4
+ name: 'et-floppy-disk',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
7
+ <path
8
+ d="M5 3h11l3 3v13a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V3z"
9
+ stroke="currentColor"
10
+ stroke-width="1.8"
11
+ stroke-linejoin="round"
12
+ />
13
+ <path
14
+ d="M8 3v6h7V3"
15
+ stroke="currentColor"
16
+ stroke-width="1.8"
17
+ stroke-linejoin="round"
18
+ />
19
+ <path
20
+ d="M8 17h8"
21
+ stroke="currentColor"
22
+ stroke-width="1.8"
23
+ stroke-linecap="round"
24
+ />
25
+ </svg>
26
+ `,
27
+ };
@@ -0,0 +1,16 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const FOCUS_FRAME_ICON: IconDefinition = {
4
+ name: 'et-focus-frame',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
7
+ <path
8
+ fill="currentColor"
9
+ fill-rule="evenodd"
10
+ d="M5.75 4A1.75 1.75 0 0 0 4 5.75v12.5C4 19.216 4.784 20 5.75 20h12.5A1.75 1.75 0 0 0 20 18.25V5.75A1.75 1.75 0 0 0 18.25 4H5.75Zm0 1.5a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V5.75a.25.25 0 0 0-.25-.25H5.75Z"
11
+ clip-rule="evenodd"
12
+ />
13
+ <rect x="8" y="8" width="8" height="8" rx="1.25" fill="currentColor" />
14
+ </svg>
15
+ `,
16
+ };
@@ -0,0 +1,17 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ export const GRID_2X2_ICON: IconDefinition = {
4
+ name: 'et-grid-2x2',
5
+ data: `
6
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
7
+ <path
8
+ fill="currentColor"
9
+ fill-rule="evenodd"
10
+ d="M5.75 4A1.75 1.75 0 0 0 4 5.75v12.5C4 19.216 4.784 20 5.75 20h12.5A1.75 1.75 0 0 0 20 18.25V5.75A1.75 1.75 0 0 0 18.25 4H5.75Zm0 1.5a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V5.75a.25.25 0 0 0-.25-.25H5.75Z"
11
+ clip-rule="evenodd"
12
+ />
13
+ <rect x="11.25" y="5.5" width="1.5" height="13" fill="currentColor" />
14
+ <rect x="5.5" y="11.25" width="13" height="1.5" fill="currentColor" />
15
+ </svg>
16
+ `,
17
+ };
@@ -0,0 +1,11 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon.
4
+ export const HEADING_1_ICON: IconDefinition = {
5
+ name: 'et-heading-1',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
8
+ <text x="8" y="12" font-size="11" font-weight="700" text-anchor="middle" fill="currentColor">H1</text>
9
+ </svg>
10
+ `,
11
+ };
@@ -0,0 +1,11 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon.
4
+ export const HEADING_2_ICON: IconDefinition = {
5
+ name: 'et-heading-2',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
8
+ <text x="8" y="12" font-size="11" font-weight="700" text-anchor="middle" fill="currentColor">H2</text>
9
+ </svg>
10
+ `,
11
+ };
@@ -0,0 +1,11 @@
1
+ import { IconDefinition } from './icon-definition';
2
+
3
+ // Custom icon.
4
+ export const HEADING_3_ICON: IconDefinition = {
5
+ name: 'et-heading-3',
6
+ data: `
7
+ <svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
8
+ <text x="8" y="12" font-size="11" font-weight="700" text-anchor="middle" fill="currentColor">H3</text>
9
+ </svg>
10
+ `,
11
+ };