@0001-labs/design-system-1 0.3.0-alpha.24 → 0.3.0-alpha.26

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 (84) hide show
  1. package/DS1/0-face/generated/toast-assets.ts +1 -1
  2. package/DS1/0-face/shared-words.ts +2 -1
  3. package/DS1/0-face/translations/da.json +2 -0
  4. package/DS1/0-face/translations/de.json +2 -0
  5. package/DS1/0-face/translations/en.json +2 -0
  6. package/DS1/0-face/translations/es.json +2 -0
  7. package/DS1/0-face/translations/fi.json +2 -0
  8. package/DS1/0-face/translations/fr.json +2 -0
  9. package/DS1/0-face/translations/is.json +2 -0
  10. package/DS1/0-face/translations/it.json +2 -0
  11. package/DS1/0-face/translations/ja.json +2 -0
  12. package/DS1/0-face/translations/ko.json +2 -0
  13. package/DS1/0-face/translations/nb.json +2 -0
  14. package/DS1/0-face/translations/pt-BR.json +2 -0
  15. package/DS1/0-face/translations/pt.json +2 -0
  16. package/DS1/0-face/translations/sv.json +2 -0
  17. package/DS1/0-face/translations/zh.json +2 -0
  18. package/DS1/1-root/cjk.css +1 -1
  19. package/DS1/1-root/fonts.css +1 -1
  20. package/DS1/1-root/notice.css +4 -1
  21. package/DS1/1-root/one.css +1 -1
  22. package/DS1/1-root/one.semantic.css +1 -1
  23. package/DS1/1-root/table.css +101 -4
  24. package/DS1/2-core/ds-tooltip.ts +23 -1
  25. package/DS1/2-core/generated/ds-icon-map.ts +1 -3
  26. package/DS1/2-core/generated/icons-extra.ts +1 -2
  27. package/DS1/2-core/generated/icons-immediate.ts +1 -1
  28. package/DS1/2-core/styles/ds-tooltip.css +3 -2
  29. package/DS1/3-unit/ds-table.ts +373 -9
  30. package/DS1/react/table.ts +53 -0
  31. package/DS1/x-icon/warning.svg +1 -1
  32. package/dist/0-face/generated/toast-assets.js +1 -1
  33. package/dist/0-face/shared-words.d.ts +2 -1
  34. package/dist/0-face/shared-words.d.ts.map +1 -1
  35. package/dist/0-face/translations/da.json +2 -0
  36. package/dist/0-face/translations/de.json +2 -0
  37. package/dist/0-face/translations/en.json +2 -0
  38. package/dist/0-face/translations/es.json +2 -0
  39. package/dist/0-face/translations/fi.json +2 -0
  40. package/dist/0-face/translations/fr.json +2 -0
  41. package/dist/0-face/translations/is.json +2 -0
  42. package/dist/0-face/translations/it.json +2 -0
  43. package/dist/0-face/translations/ja.json +2 -0
  44. package/dist/0-face/translations/ko.json +2 -0
  45. package/dist/0-face/translations/nb.json +2 -0
  46. package/dist/0-face/translations/pt-BR.json +2 -0
  47. package/dist/0-face/translations/pt.json +2 -0
  48. package/dist/0-face/translations/sv.json +2 -0
  49. package/dist/0-face/translations/zh.json +2 -0
  50. package/dist/2-core/ds-tooltip.d.ts +6 -0
  51. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  52. package/dist/2-core/ds-tooltip.js +27 -1
  53. package/dist/2-core/generated/ds-icon-map.d.ts +2 -3
  54. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
  55. package/dist/2-core/generated/ds-icon-map.js +1 -3
  56. package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
  57. package/dist/2-core/generated/icons-extra.js +1 -2
  58. package/dist/2-core/generated/icons-immediate.d.ts +1 -1
  59. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
  60. package/dist/2-core/generated/icons-immediate.js +1 -1
  61. package/dist/3-unit/ds-table.d.ts +77 -1
  62. package/dist/3-unit/ds-table.d.ts.map +1 -1
  63. package/dist/3-unit/ds-table.js +377 -7
  64. package/dist/design-system-1.bundle.js +408 -17
  65. package/dist/design-system-1.bundle.js.map +1 -1
  66. package/dist/design-system-1.bundle.min.js +4623 -4372
  67. package/dist/design-system-1.bundle.min.js.map +1 -1
  68. package/dist/feedback.js +17 -17
  69. package/dist/feedback.js.map +1 -1
  70. package/dist/{icons-extra-C0E3yQpX.js → icons-extra-CRxxWFjX.js} +2 -3
  71. package/dist/{icons-extra-C0E3yQpX.js.map → icons-extra-CRxxWFjX.js.map} +1 -1
  72. package/dist/{icons-extra-BbbpXocy.js → icons-extra-H5pqCM_R.js} +2 -5
  73. package/dist/{icons-extra-BbbpXocy.js.map → icons-extra-H5pqCM_R.js.map} +1 -1
  74. package/dist/react/table.d.ts +47 -0
  75. package/dist/react/table.d.ts.map +1 -0
  76. package/dist/react/table.js +34 -0
  77. package/dist/{shared-words-BDyeT1zO.js → shared-words-BtRee8xR.js} +46 -16
  78. package/dist/shared-words-BtRee8xR.js.map +1 -0
  79. package/dist/{shared-words-LuszeoCp.js → shared-words-CdMDVtXx.js} +31 -1
  80. package/dist/shared-words-CdMDVtXx.js.map +1 -0
  81. package/package.json +1 -1
  82. package/DS1/x-icon/triangle.svg +0 -3
  83. package/dist/shared-words-BDyeT1zO.js.map +0 -1
  84. package/dist/shared-words-LuszeoCp.js.map +0 -1
@@ -14,5 +14,5 @@ export const toastIcons: Readonly<Record<ToastIconName, string>> = {
14
14
  "check": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.68649 11.884L12.443 6.13601L11.736 5.42715L6.68835 10.4827L4.26399 8.0501L3.55696 8.74525L6.68649 11.884Z\" fill=\"currentColor\"/>\n</svg>\n",
15
15
  "close": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.1215 4.58087L8.70453 7.99397L12.1176 11.4169L11.4106 12.112L7.99847 8.69108L4.58636 12.112L3.87836 11.4031L7.29535 7.99005L3.88226 4.56716L4.58929 3.87201L8.0014 7.29294L11.4145 3.87201L12.1215 4.58087Z\" fill=\"currentColor\"/>\n</svg>\n",
16
16
  "notifications": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4.5 11.5V7.5C4.5 5.567 6.067 4 8 4C9.933 4 11.5 5.567 11.5 7.5V11.5M3 11.5H13M8 2.5V4M6.5 13.5H9.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n</svg>\n",
17
- "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8ZM7.5 6.3H8.5V10.3H7.5V6.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"#1E1E1E\"/>\n</svg>\n",
17
+ "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.5 3.3H8.5V10.3H7.5V3.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"currentColor\"/>\n</svg>\n",
18
18
  };
@@ -3,7 +3,8 @@
3
3
  * again, Undo, Redo, Copy, Copy link, Remove, Rename, Duplicate, Download,
4
4
  * Refresh, Open, Send, Clear), Saved, Saving…, Untitled, Account, sign-in,
5
5
  * empty states, dates, the settings ds-cycle shows, ds-notice's words, the
6
- * carousel's and slide's (Carousel, Slide, Previous slide, Next slide, Pause, Play…), the feedback module's (OK, Copied, Could not copy, Notifications), a meter's
6
+ * carousel's and slide's (Carousel, Slide, Previous slide, Next slide, Pause, Play…), a
7
+ * sheet's moving rows (Move row 3, Row 3 moved to 5), the feedback module's (OK, Copied, Could not copy, Notifications), a meter's
7
8
  * words ("7 of 10") and a step's (Done, Failed), the site chrome's (Menu,
8
9
  * Contents), the key names keys.ts writes as words (`key.ctrl`, `key.shift` …)
9
10
  * and the names of the languages. Keyed by the English sentence,
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} af {count}",
93
93
  "Previous slide": "Forrige dias",
94
94
  "Next slide": "Næste dias",
95
+ "Move row {index}": "Flyt række {index}",
96
+ "Row {from} moved to {to}": "Række {from} flyttet til {to}",
95
97
  "Pause": "Pause",
96
98
  "Play": "Afspil",
97
99
  "Menu": "Menu",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} von {count}",
93
93
  "Previous slide": "Vorherige Folie",
94
94
  "Next slide": "Nächste Folie",
95
+ "Move row {index}": "Zeile {index} verschieben",
96
+ "Row {from} moved to {to}": "Zeile {from} nach {to} verschoben",
95
97
  "Pause": "Pause",
96
98
  "Play": "Abspielen",
97
99
  "Menu": "Menü",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} of {count}",
93
93
  "Previous slide": "Previous slide",
94
94
  "Next slide": "Next slide",
95
+ "Move row {index}": "Move row {index}",
96
+ "Row {from} moved to {to}": "Row {from} moved to {to}",
95
97
  "Pause": "Pause",
96
98
  "Play": "Play",
97
99
  "Menu": "Menu",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} de {count}",
93
93
  "Previous slide": "Diapositiva anterior",
94
94
  "Next slide": "Diapositiva siguiente",
95
+ "Move row {index}": "Mover fila {index}",
96
+ "Row {from} moved to {to}": "Fila {from} movida a {to}",
95
97
  "Pause": "Pausar",
96
98
  "Play": "Reproducir",
97
99
  "Menu": "Menú",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index}/{count}",
93
93
  "Previous slide": "Edellinen dia",
94
94
  "Next slide": "Seuraava dia",
95
+ "Move row {index}": "Siirrä riviä {index}",
96
+ "Row {from} moved to {to}": "Rivi {from} siirretty kohtaan {to}",
95
97
  "Pause": "Tauko",
96
98
  "Play": "Toista",
97
99
  "Menu": "Valikko",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} sur {count}",
93
93
  "Previous slide": "Diapositive précédente",
94
94
  "Next slide": "Diapositive suivante",
95
+ "Move row {index}": "Déplacer la ligne {index}",
96
+ "Row {from} moved to {to}": "Ligne {from} déplacée en {to}",
95
97
  "Pause": "Pause",
96
98
  "Play": "Lecture",
97
99
  "Menu": "Menu",
@@ -85,6 +85,8 @@
85
85
  "{index} of {count}": "{index} af {count}",
86
86
  "Previous slide": "Fyrri glæra",
87
87
  "Next slide": "Næsta glæra",
88
+ "Move row {index}": "Færa röð {index}",
89
+ "Row {from} moved to {to}": "Röð {from} færð í {to}",
88
90
  "Pause": "Gera hlé",
89
91
  "Play": "Spila",
90
92
  "Menu": "Valmynd",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} di {count}",
93
93
  "Previous slide": "Slide precedente",
94
94
  "Next slide": "Slide successiva",
95
+ "Move row {index}": "Sposta la riga {index}",
96
+ "Row {from} moved to {to}": "Riga {from} spostata in {to}",
95
97
  "Pause": "Pausa",
96
98
  "Play": "Riproduci",
97
99
  "Menu": "Menu",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{count} 枚中 {index} 枚目",
93
93
  "Previous slide": "前のスライド",
94
94
  "Next slide": "次のスライド",
95
+ "Move row {index}": "{index} 行目を移動",
96
+ "Row {from} moved to {to}": "{from} 行目を {to} 行目に移動しました",
95
97
  "Pause": "一時停止",
96
98
  "Play": "再生",
97
99
  "Menu": "メニュー",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{count}개 중 {index}번째",
93
93
  "Previous slide": "이전 슬라이드",
94
94
  "Next slide": "다음 슬라이드",
95
+ "Move row {index}": "{index}행 이동",
96
+ "Row {from} moved to {to}": "{from}행을 {to}행으로 이동함",
95
97
  "Pause": "일시정지",
96
98
  "Play": "재생",
97
99
  "Menu": "메뉴",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} av {count}",
93
93
  "Previous slide": "Forrige lysbilde",
94
94
  "Next slide": "Neste lysbilde",
95
+ "Move row {index}": "Flytt rad {index}",
96
+ "Row {from} moved to {to}": "Rad {from} flyttet til {to}",
95
97
  "Pause": "Pause",
96
98
  "Play": "Spill av",
97
99
  "Menu": "Meny",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} de {count}",
93
93
  "Previous slide": "Slide anterior",
94
94
  "Next slide": "Próximo slide",
95
+ "Move row {index}": "Mover linha {index}",
96
+ "Row {from} moved to {to}": "Linha {from} movida para {to}",
95
97
  "Pause": "Pausar",
96
98
  "Play": "Reproduzir",
97
99
  "Menu": "Menu",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} de {count}",
93
93
  "Previous slide": "Diapositivo anterior",
94
94
  "Next slide": "Diapositivo seguinte",
95
+ "Move row {index}": "Mover linha {index}",
96
+ "Row {from} moved to {to}": "Linha {from} movida para {to}",
95
97
  "Pause": "Pausar",
96
98
  "Play": "Reproduzir",
97
99
  "Menu": "Menu",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "{index} av {count}",
93
93
  "Previous slide": "Föregående bild",
94
94
  "Next slide": "Nästa bild",
95
+ "Move row {index}": "Flytta rad {index}",
96
+ "Row {from} moved to {to}": "Rad {from} flyttad till {to}",
95
97
  "Pause": "Pausa",
96
98
  "Play": "Spela upp",
97
99
  "Menu": "Meny",
@@ -92,6 +92,8 @@
92
92
  "{index} of {count}": "第 {index} 张,共 {count} 张",
93
93
  "Previous slide": "上一张",
94
94
  "Next slide": "下一张",
95
+ "Move row {index}": "移动第 {index} 行",
96
+ "Row {from} moved to {to}": "第 {from} 行已移到第 {to} 行",
95
97
  "Pause": "暂停",
96
98
  "Play": "播放",
97
99
  "Menu": "菜单",
@@ -1,4 +1,4 @@
1
- /* version 0.3.0-alpha.24 */
1
+ /* version 0.3.0-alpha.26 */
2
2
 
3
3
  /* Noto Sans for Japanese and Chinese, for a product that shows them. Opt in:
4
4
  link it beside one.css or fonts.css, or ask Sync 1 for "cjk": true. Without
@@ -1,4 +1,4 @@
1
- /* version 0.3.0-alpha.24 */
1
+ /* version 0.3.0-alpha.26 */
2
2
 
3
3
  /* Design system 1's faces and the typeface tokens that name them, on their
4
4
  own: a page that does not load one.css links this sheet (one.css imports
@@ -12,7 +12,7 @@
12
12
  * the danger colour. The `ds-notice` element draws the same parts.
13
13
  *
14
14
  * ds-notice the block: mark, words, dismiss
15
- * ds-notice__mark the square mark; holds an icon in its ink
15
+ * ds-notice__mark the mark, a picture's 4px corners; holds an icon in its ink
16
16
  * ds-notice__title one line in the medium face
17
17
  * ds-notice__text lines of one square
18
18
  * ds-notice__actions buttons or links on one row
@@ -84,6 +84,9 @@
84
84
  height: var(--ds-control-height);
85
85
  margin-block: calc((var(--ds-unit) - var(--ds-control-height)) / 2);
86
86
  overflow: hidden;
87
+ /* Rounded as every icon tile is (Joachim, 19 October 2026). */
88
+ border-radius: var(--ds-radius);
89
+ corner-shape: var(--ds-corner-shape, round);
87
90
  background: var(--ds-notice-mark);
88
91
  color: var(--ds-notice-mark-ink);
89
92
  --ds-icon-color: var(--ds-notice-mark-ink);
@@ -1,4 +1,4 @@
1
- /* version 0.3.0-alpha.24 */
1
+ /* version 0.3.0-alpha.26 */
2
2
 
3
3
  @import "./grid.css";
4
4
  @import "./component-tokens.css";
@@ -1,4 +1,4 @@
1
- /* DS1 — version 0.3.0-alpha.24 */
1
+ /* DS1 — version 0.3.0-alpha.26 */
2
2
  /* A classless stylesheet for native HTML. No JavaScript is required. */
3
3
 
4
4
  /* It draws on Design system 1's measures: the 20px square, 14px type on
@@ -19,11 +19,25 @@
19
19
  *
20
20
  * `data-sheet` makes it a spreadsheet: every cell four squares by one (80 by
21
21
  * 20), its 1px lines at its end and foot so the words have 79 by 19, set 4px
22
- * in on the sixteen, as an Ezo item's are. Column letters and the row numbers
22
+ * in on the sixteen. Words that do not fit fade out over the last square
23
+ * where they are cut, never an ellipsis: put them in `.ds-table__words`,
24
+ * which carries the fade (a mask, so it fades to whatever is behind: the
25
+ * paper, a selected or hovered cell's fill). A table marked `data-fit`
26
+ * (`<ds-table sheet>` is) measures its cells and marks the cut ones
27
+ * `data-cut="end"`, or `"start"` for a number it has scrolled to its end, so
28
+ * words that fit never fade; without it every cell's end fades. Column letters and the row numbers
23
29
  * (`.ds-table__letters`, `.ds-table__number`, two squares wide) stay in place
24
30
  * while the sheet scrolls both ways inside `.ds-table-scroll`; give the table
25
31
  * `--ds-table-columns` (the number of data columns) and the scroll a height
26
32
  * with `--ds-table-height`.
33
+ *
34
+ * `data-reorderable` (set by `<ds-table sheet reorderable>`) gives each row
35
+ * number a grip, `.ds-table__handle` with the `handle` icon, in place of the
36
+ * number while the row is hovered or the grip focused. A lifted row
37
+ * (`tr[data-lifted]`) keeps the paper behind it and follows the pointer; while
38
+ * `data-moving` is on the table the other rows step aside in transform alone,
39
+ * a sortable list's 200ms on cubic-bezier(0.2, 0, 0, 1), and never under
40
+ * reduced motion.
27
41
  */
28
42
 
29
43
  .ds-table {
@@ -153,11 +167,29 @@
153
167
  border-bottom: 1px solid var(--ds-table-rule);
154
168
  border-inline-end: 1px solid var(--ds-table-rule);
155
169
  overflow: hidden;
156
- text-overflow: ellipsis;
157
170
  }
158
171
  .ds-table[data-sheet] :is(th, td):last-child {
159
172
  padding-inline-end: var(--ds-table-text);
160
173
  }
174
+ .ds-table[data-sheet] .ds-table__words {
175
+ --ds-table-fade-to: right;
176
+ --ds-table-fade-from: left;
177
+ display: block;
178
+ overflow: hidden;
179
+ white-space: nowrap;
180
+ }
181
+ .ds-table[data-sheet]:dir(rtl) .ds-table__words {
182
+ --ds-table-fade-to: left;
183
+ --ds-table-fade-from: right;
184
+ }
185
+ /* Cut words fade over their last square to nothing, at the edge where they are cut. */
186
+ .ds-table[data-sheet]:not([data-fit]) .ds-table__words,
187
+ .ds-table[data-sheet] .ds-table__words[data-cut="end"] {
188
+ mask-image: linear-gradient(to var(--ds-table-fade-to), #000 calc(100% - var(--ds-table-row)), transparent);
189
+ }
190
+ .ds-table[data-sheet] .ds-table__words[data-cut="start"] {
191
+ mask-image: linear-gradient(to var(--ds-table-fade-from), #000 calc(100% - var(--ds-table-row)), transparent);
192
+ }
161
193
  .ds-table[data-sheet] .ds-table__number {
162
194
  width: var(--ds-table-index);
163
195
  max-width: var(--ds-table-index);
@@ -172,14 +204,14 @@
172
204
  .ds-table[data-sheet] thead :is(th, td) {
173
205
  position: sticky;
174
206
  top: 0;
175
- z-index: 2;
207
+ z-index: 3;
176
208
  background: var(--ds-table-paper);
177
209
  }
178
210
  .ds-table[data-sheet] thead tr + tr :is(th, td) {
179
211
  top: var(--ds-table-row);
180
212
  }
181
213
  .ds-table[data-sheet] thead .ds-table__number {
182
- z-index: 3;
214
+ z-index: 4;
183
215
  }
184
216
  .ds-table[data-sheet] .ds-table__letters td {
185
217
  color: var(--ds-title-color, light-dark(#797979, #9a9a9a));
@@ -198,3 +230,68 @@
198
230
  overflow: auto;
199
231
  overscroll-behavior: contain;
200
232
  }
233
+
234
+ /* Rows that move: a grip on the number, the lifted row on paper, the others stepping aside. */
235
+ .ds-table[data-sheet][data-reorderable] tbody .ds-table__number {
236
+ -webkit-user-select: none;
237
+ user-select: none;
238
+ -webkit-touch-callout: none;
239
+ }
240
+ .ds-table__index {
241
+ transition: opacity 100ms ease;
242
+ }
243
+ .ds-table__handle {
244
+ all: unset;
245
+ position: absolute;
246
+ inset: 0;
247
+ display: flex;
248
+ align-items: flex-end;
249
+ justify-content: center;
250
+ color: var(--ds-reorder-color, light-dark(#777777, #cccccc));
251
+ cursor: grab;
252
+ opacity: 0;
253
+ transition: opacity 100ms ease;
254
+ }
255
+ .ds-table__handle:hover {
256
+ color: var(--ds-reorder-active-color, light-dark(#333333, #ffffff));
257
+ }
258
+ .ds-table__handle:focus-visible {
259
+ box-shadow: inset 0 0 0 2px var(--ds-focus-ring, Highlight);
260
+ }
261
+ @media (hover: hover) {
262
+ .ds-table[data-reorderable]:not([data-moving]) tbody tr:hover .ds-table__handle { opacity: 1; }
263
+ .ds-table[data-reorderable]:not([data-moving]) tbody tr:hover .ds-table__index { opacity: 0; }
264
+ }
265
+ .ds-table[data-reorderable] tbody tr:is([data-lifted], :has(.ds-table__handle:focus-visible)) .ds-table__handle { opacity: 1; }
266
+ .ds-table[data-reorderable] tbody tr:is([data-lifted], :has(.ds-table__handle:focus-visible)) .ds-table__index { opacity: 0; }
267
+ .ds-table[data-moving] tbody tr {
268
+ transition: transform 200ms cubic-bezier(0.2, 0, 0, 1);
269
+ }
270
+ .ds-table[data-moving],
271
+ .ds-table[data-moving] * {
272
+ cursor: grabbing;
273
+ }
274
+ .ds-table[data-sheet] tbody tr[data-lifted] {
275
+ position: relative;
276
+ z-index: 2;
277
+ transition: none;
278
+ }
279
+ .ds-table[data-sheet] tbody tr[data-lifted] > :is(th, td) {
280
+ background: var(--ds-table-paper);
281
+ box-shadow: inset 0 1px var(--ds-table-rule);
282
+ }
283
+ .ds-table__status {
284
+ position: absolute;
285
+ width: 1px;
286
+ height: 1px;
287
+ overflow: hidden;
288
+ clip-path: inset(50%);
289
+ white-space: nowrap;
290
+ }
291
+ @media (prefers-reduced-motion: reduce) {
292
+ .ds-table[data-moving] tbody tr,
293
+ .ds-table__index,
294
+ .ds-table__handle {
295
+ transition: none;
296
+ }
297
+ }
@@ -100,7 +100,29 @@ export class Tooltip extends LitElement {
100
100
  trigger.setAttribute("aria-describedby", [...ids, this.description.id].join(" "));
101
101
  };
102
102
 
103
- updated(): void { this.describe(); }
103
+ updated(): void {
104
+ this.describe();
105
+ if (this._visible) this.place();
106
+ }
107
+
108
+ /**
109
+ * Keeps the bubble inside the window, as the page's tooltips do (0-face/tooltips.ts): four
110
+ * pixels from its edges, and below the control when there is no room above (or above when
111
+ * `placement="bottom"` has no room below). A tooltip at a frame's edge is never cut short.
112
+ */
113
+ private place(): void {
114
+ const bubble = this.shadowRoot?.querySelector<HTMLElement>(".bubble");
115
+ if (!bubble || bubble.hidden) return;
116
+ const edge = 4 * (parseFloat(getComputedStyle(this).getPropertyValue("--ds-sf")) || 1);
117
+ bubble.style.removeProperty("--ds-tooltip-shift");
118
+ bubble.dataset.side = this.placement === "bottom" ? "bottom" : "top";
119
+ let box = bubble.getBoundingClientRect();
120
+ if (bubble.dataset.side === "top" && box.top < edge) bubble.dataset.side = "bottom";
121
+ else if (bubble.dataset.side === "bottom" && box.bottom > innerHeight - edge) bubble.dataset.side = "top";
122
+ box = bubble.getBoundingClientRect();
123
+ const shift = box.left < edge ? edge - box.left : box.right > innerWidth - edge ? innerWidth - edge - box.right : 0;
124
+ if (shift) bubble.style.setProperty("--ds-tooltip-shift", `${shift}px`);
125
+ }
104
126
 
105
127
  render() {
106
128
  return html`<slot @slotchange=${this.describe}></slot>
@@ -322,7 +322,6 @@ export const iconNameToSvgMap = {
322
322
  "toggle": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 5L7.5 8L3 11Z\" fill=\"currentColor\"/>\n<path d=\"M9.5 7.5H13.5V8.5H9.5Z\" fill=\"currentColor\"/>\n</svg>",
323
323
  "train": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3.25\" y=\"1.75\" width=\"9.5\" height=\"9.5\" rx=\"2.25\"/><path d=\"M3.25 7H12.75\"/><path d=\"M5.75 9.25H5.76M10.24 9.25H10.25\"/><path d=\"M5.25 11.25L3.75 14M10.75 11.25L12.25 14\"/></g>\n</svg>",
324
324
  "transfer": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 5.5H12.5M10 3L12.5 5.5L10 8\"/><path d=\"M13 10.5H3.5M6 8L3.5 10.5L6 13\"/></g>\n</svg>",
325
- "triangle": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8Z\" fill=\"#1E1E1E\"/>\n</svg>",
326
325
  "tv": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1.75\" y=\"3.25\" width=\"12.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M5.5 13.75H10.5\"/><path d=\"M7 6V9L9.5 7.5Z\"/></g>\n</svg>",
327
326
  "underline": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.5 3.25V8A2.5 2.5 0 0 0 10.5 8V3.25M4 12.75H12\" stroke=\"currentColor\" stroke-width=\"1.1\"/>\n</svg>",
328
327
  "undo": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 12 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1 4L4 1M1 4L4 7M1 4H8C9.65685 4 11 5.34315 11 7V9\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/>\n</svg></svg>",
@@ -341,7 +340,7 @@ export const iconNameToSvgMap = {
341
340
  "views": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<circle cx=\"7\" cy=\"7\" r=\"4.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n<path d=\"M10.2 10.2L13.5 13.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n</svg>",
342
341
  "vimeo": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 8.5l1 1s1.5 -1.102 2 -.5c.509 .609 1.863 7.65 2.5 9c.556 1.184 1.978 2.89 4 1.5c2 -1.5 7.5 -5.5 8.5 -11.5c.444 -2.661 -1 -4 -2.5 -4c-2 0 -4.047 1.202 -4.5 4c2.05 -1.254 2.551 1 1.5 3c-1.052 2 -2 3 -2.5 3c-.49 0 -.924 -1.165 -1.5 -3.5c-.59 -2.42 -.5 -6.5 -3 -6.5s-5.5 4.5 -5.5 4.5\"/>\n</svg></svg>",
343
342
  "wallet": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12.25 5.25V4.25C12.25 3.7 11.8 3.25 11.25 3.25H3.75C2.92 3.25 2.25 3.92 2.25 4.75\"/><rect x=\"2.25\" y=\"4.75\" width=\"11.5\" height=\"8\" rx=\"1.75\"/><path d=\"M13.75 7.5H11.25C10.42 7.5 9.75 8.17 9.75 9C9.75 9.83 10.42 10.5 11.25 10.5H13.75\"/></g>\n</svg>",
344
- "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8ZM7.5 6.3H8.5V10.3H7.5V6.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"#1E1E1E\"/>\n</svg>",
343
+ "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.5 3.3H8.5V10.3H7.5V3.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"currentColor\"/>\n</svg>",
345
344
  "wifi": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1.75 6.25C5.2 3.25 10.8 3.25 14.25 6.25\"/><path d=\"M3.75 8.5C6.2 6.5 9.8 6.5 12.25 8.5\"/><path d=\"M5.75 10.75C7.05 9.75 8.95 9.75 10.25 10.75\"/><path d=\"M8 12.99V13\"/></g>\n</svg>",
346
345
  "window": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"2.5\" y=\"3.5\" width=\"11\" height=\"9\" stroke=\"currentColor\"/>\n<path d=\"M2.5 6H13.5\" stroke=\"currentColor\"/>\n</svg>",
347
346
  "work": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.8153 4.78289C13.8153 4.20267 13.3448 3.73213 12.7646 3.73213H8H3.23544C2.65521 3.73213 2.18468 4.20267 2.18468 4.78289V7.31419H13.8153L13.8153 4.78289ZM2.18468 8V11.2171C2.18468 11.7973 2.65521 12.2679 3.23544 12.2679H12.7646C13.3448 12.2679 13.8153 11.7973 13.8153 11.2171L13.8153 8L9.33239 7.98014V8.63222C9.33239 8.92233 9.09712 9.1576 8.807 9.1576H8H7.19299C6.90287 9.1576 6.66761 8.92233 6.66761 8.63222V7.98014L2.18468 8Z\" fill=\"currentColor\"/>\n</svg>",
@@ -670,7 +669,6 @@ export const iconNames = [
670
669
  "toggle",
671
670
  "train",
672
671
  "transfer",
673
- "triangle",
674
672
  "tv",
675
673
  "underline",
676
674
  "undo",
@@ -278,7 +278,6 @@ export const icons: Readonly<Record<string, string>> = {
278
278
  "toggle": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 5L7.5 8L3 11Z\" fill=\"currentColor\"/>\n<path d=\"M9.5 7.5H13.5V8.5H9.5Z\" fill=\"currentColor\"/>\n</svg>",
279
279
  "train": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3.25\" y=\"1.75\" width=\"9.5\" height=\"9.5\" rx=\"2.25\"/><path d=\"M3.25 7H12.75\"/><path d=\"M5.75 9.25H5.76M10.24 9.25H10.25\"/><path d=\"M5.25 11.25L3.75 14M10.75 11.25L12.25 14\"/></g>\n</svg>",
280
280
  "transfer": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 5.5H12.5M10 3L12.5 5.5L10 8\"/><path d=\"M13 10.5H3.5M6 8L3.5 10.5L6 13\"/></g>\n</svg>",
281
- "triangle": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8Z\" fill=\"#1E1E1E\"/>\n</svg>",
282
281
  "tv": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1.75\" y=\"3.25\" width=\"12.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M5.5 13.75H10.5\"/><path d=\"M7 6V9L9.5 7.5Z\"/></g>\n</svg>",
283
282
  "underline": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.5 3.25V8A2.5 2.5 0 0 0 10.5 8V3.25M4 12.75H12\" stroke=\"currentColor\" stroke-width=\"1.1\"/>\n</svg>",
284
283
  "undo": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 12 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M1 4L4 1M1 4L4 7M1 4H8C9.65685 4 11 5.34315 11 7V9\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/>\n</svg></svg>",
@@ -291,7 +290,7 @@ export const icons: Readonly<Record<string, string>> = {
291
290
  "video": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"2.5\" y=\"4.5\" width=\"8\" height=\"7\" stroke=\"currentColor\"/>\n<path d=\"M10.5 7L13.5 5V11L10.5 9\" stroke=\"currentColor\"/>\n</svg>",
292
291
  "vimeo": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3 8.5l1 1s1.5 -1.102 2 -.5c.509 .609 1.863 7.65 2.5 9c.556 1.184 1.978 2.89 4 1.5c2 -1.5 7.5 -5.5 8.5 -11.5c.444 -2.661 -1 -4 -2.5 -4c-2 0 -4.047 1.202 -4.5 4c2.05 -1.254 2.551 1 1.5 3c-1.052 2 -2 3 -2.5 3c-.49 0 -.924 -1.165 -1.5 -3.5c-.59 -2.42 -.5 -6.5 -3 -6.5s-5.5 4.5 -5.5 4.5\"/>\n</svg></svg>",
293
292
  "wallet": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12.25 5.25V4.25C12.25 3.7 11.8 3.25 11.25 3.25H3.75C2.92 3.25 2.25 3.92 2.25 4.75\"/><rect x=\"2.25\" y=\"4.75\" width=\"11.5\" height=\"8\" rx=\"1.75\"/><path d=\"M13.75 7.5H11.25C10.42 7.5 9.75 8.17 9.75 9C9.75 9.83 10.42 10.5 11.25 10.5H13.75\"/></g>\n</svg>",
294
- "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8ZM7.5 6.3H8.5V10.3H7.5V6.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"#1E1E1E\"/>\n</svg>",
293
+ "warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.5 3.3H8.5V10.3H7.5V3.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"currentColor\"/>\n</svg>",
295
294
  "wifi": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g stroke=\"currentColor\" stroke-width=\"0.92\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1.75 6.25C5.2 3.25 10.8 3.25 14.25 6.25\"/><path d=\"M3.75 8.5C6.2 6.5 9.8 6.5 12.25 8.5\"/><path d=\"M5.75 10.75C7.05 9.75 8.95 9.75 10.25 10.75\"/><path d=\"M8 12.99V13\"/></g>\n</svg>",
296
295
  "window": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"2.5\" y=\"3.5\" width=\"11\" height=\"9\" stroke=\"currentColor\"/>\n<path d=\"M2.5 6H13.5\" stroke=\"currentColor\"/>\n</svg>",
297
296
  "work": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.8153 4.78289C13.8153 4.20267 13.3448 3.73213 12.7646 3.73213H8H3.23544C2.65521 3.73213 2.18468 4.20267 2.18468 4.78289V7.31419H13.8153L13.8153 4.78289ZM2.18468 8V11.2171C2.18468 11.7973 2.65521 12.2679 3.23544 12.2679H12.7646C13.3448 12.2679 13.8153 11.7973 13.8153 11.2171L13.8153 8L9.33239 7.98014V8.63222C9.33239 8.92233 9.09712 9.1576 8.807 9.1576H8H7.19299C6.90287 9.1576 6.66761 8.92233 6.66761 8.63222V7.98014L2.18468 8Z\" fill=\"currentColor\"/>\n</svg>",
@@ -46,4 +46,4 @@ export const icons: Readonly<Record<string, string>> = {
46
46
  "up": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.49645 3.48222V16H8.50702L8.50841 3.48259L11.4156 6.38982L12.1095 5.68299L8.00173 1.57524L3.8905 5.68647L4.59784 6.39381L7.49645 3.48222Z\" fill=\"currentColor\"/>\n</svg>",
47
47
  "views": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<circle cx=\"7\" cy=\"7\" r=\"4.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n<path d=\"M10.2 10.2L13.5 13.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n</svg>"
48
48
  }
49
- export const deferredIconNames = ["1x","1xdots","1xgrid","1xlines","2x","2xdots","2xgrid","2xgrid-alt","2xgrid-alt-2","2xgrid-alt-3","2xlines","4x4","airtable","archive-alt","arrange-archive","arrange-check","arrange-chevron","arrange-connect","arrange-draft","arrange-dropdown","arrange-home","arrange-link","arrange-menu","arrange-more","arrange-page","arrange-plus","arrange-site","attach","audio","avatar","badge-bands","badge-bands-3d","badge-blue-fan","badge-blue-fan-3d","badge-bricks","badge-bricks-3d","badge-broken-stripes","badge-broken-stripes-3d","badge-checker","badge-checker-3d","badge-diamond","badge-diamond-3d","badge-fan","badge-fan-3d","badge-fan-dark","badge-fan-dark-3d","badge-halves","badge-halves-3d","badge-halves-green","badge-halves-green-3d","badge-red","badge-red-3d","badge-red-blue-bricks","badge-red-blue-bricks-3d","badge-round-fan","badge-round-fan-3d","badge-shard","badge-shard-3d","badge-split-circle","badge-split-circle-3d","badge-tall-bricks","badge-tall-bricks-3d","badge-weave","badge-weave-3d","bag-alt","bank","banknote","block-accordion","block-banner","block-breadcrumbs","block-button","block-divider","block-forms","block-group","block-heading","block-image","block-logo-marquee","block-page-progress","block-section","block-table","block-tabs","block-text","bold","bolt","book","book-alt","box","briefcase","building","bullet","callout","car","card","cart","categories","check-alt","chevron-down","chevron-left","chevron-right","chevron-up","cloud","code","code-block","coffee","coins","color","column","comment","connect","content","cursor","curve","default","dictate","dislike","divider","dot-bank","dot-banknote","dot-banknotes","dot-card","dot-coin","dot-coins","dot-happy","dot-neutral","dot-receipt","dot-sad","dot-safe","dot-transfer","dot-wallet","download","drive","drop","dropbox","dumbbell","equation","exercise","eye","eye-off","facebook","figma","flame","flip","food","form","fuel","gallery","game","gift","github","globe","group","group-alt","group-alt-2","h1","h2","h3","handle","head","heart","help","help-alt","history","home-alt","icon","image","in","income","indent","info","instagram","italic","item","jpbank","key","keyboard","life","like","link","linkedin","list-line","lock-filled","logo-marquee","loom","map","medical","mention","menu","minimize","minimize-alt","minus","money","moon","move","music","music-alt","navigation-check","note-alt","note-alt-2","note-lines","notifications","notion","numbered","offline","open-alt","open-source","outdent","page","page-18","page-alt","page-note","panel","password-see","password-unsee","pattern-call-to-action","pattern-card","pattern-feature","pattern-hero","pause","paw","pdf","people","percent","phone","pill","plane","play-alt","postal","present","quote","reaction","receipt","redo","refresh","refund","relationships","repeat","rewind","rewind-30","rewind-30-alt","rotate","row","safe","school","school-alt","search-30","see-30","settings","shield","shield-alt","shirt","shop","sign-in","sign-out","slack","slash","sparkle","star-alt","star-alt-2","start","status","status-alt","status-filled","stop","strike","sun","system","table","tag","templates","text","ticket","title","title-struck","titlestyle","todo","toggle","train","transfer","triangle","tv","underline","undo","ungroup","unhead","unicon","untitle","up-right","upload","video","vimeo","wallet","warning","wifi","window","work","wrench","x-brand","youtube"] as const
49
+ export const deferredIconNames = ["1x","1xdots","1xgrid","1xlines","2x","2xdots","2xgrid","2xgrid-alt","2xgrid-alt-2","2xgrid-alt-3","2xlines","4x4","airtable","archive-alt","arrange-archive","arrange-check","arrange-chevron","arrange-connect","arrange-draft","arrange-dropdown","arrange-home","arrange-link","arrange-menu","arrange-more","arrange-page","arrange-plus","arrange-site","attach","audio","avatar","badge-bands","badge-bands-3d","badge-blue-fan","badge-blue-fan-3d","badge-bricks","badge-bricks-3d","badge-broken-stripes","badge-broken-stripes-3d","badge-checker","badge-checker-3d","badge-diamond","badge-diamond-3d","badge-fan","badge-fan-3d","badge-fan-dark","badge-fan-dark-3d","badge-halves","badge-halves-3d","badge-halves-green","badge-halves-green-3d","badge-red","badge-red-3d","badge-red-blue-bricks","badge-red-blue-bricks-3d","badge-round-fan","badge-round-fan-3d","badge-shard","badge-shard-3d","badge-split-circle","badge-split-circle-3d","badge-tall-bricks","badge-tall-bricks-3d","badge-weave","badge-weave-3d","bag-alt","bank","banknote","block-accordion","block-banner","block-breadcrumbs","block-button","block-divider","block-forms","block-group","block-heading","block-image","block-logo-marquee","block-page-progress","block-section","block-table","block-tabs","block-text","bold","bolt","book","book-alt","box","briefcase","building","bullet","callout","car","card","cart","categories","check-alt","chevron-down","chevron-left","chevron-right","chevron-up","cloud","code","code-block","coffee","coins","color","column","comment","connect","content","cursor","curve","default","dictate","dislike","divider","dot-bank","dot-banknote","dot-banknotes","dot-card","dot-coin","dot-coins","dot-happy","dot-neutral","dot-receipt","dot-sad","dot-safe","dot-transfer","dot-wallet","download","drive","drop","dropbox","dumbbell","equation","exercise","eye","eye-off","facebook","figma","flame","flip","food","form","fuel","gallery","game","gift","github","globe","group","group-alt","group-alt-2","h1","h2","h3","handle","head","heart","help","help-alt","history","home-alt","icon","image","in","income","indent","info","instagram","italic","item","jpbank","key","keyboard","life","like","link","linkedin","list-line","lock-filled","logo-marquee","loom","map","medical","mention","menu","minimize","minimize-alt","minus","money","moon","move","music","music-alt","navigation-check","note-alt","note-alt-2","note-lines","notifications","notion","numbered","offline","open-alt","open-source","outdent","page","page-18","page-alt","page-note","panel","password-see","password-unsee","pattern-call-to-action","pattern-card","pattern-feature","pattern-hero","pause","paw","pdf","people","percent","phone","pill","plane","play-alt","postal","present","quote","reaction","receipt","redo","refresh","refund","relationships","repeat","rewind","rewind-30","rewind-30-alt","rotate","row","safe","school","school-alt","search-30","see-30","settings","shield","shield-alt","shirt","shop","sign-in","sign-out","slack","slash","sparkle","star-alt","star-alt-2","start","status","status-alt","status-filled","stop","strike","sun","system","table","tag","templates","text","ticket","title","title-struck","titlestyle","todo","toggle","train","transfer","tv","underline","undo","ungroup","unhead","unicon","untitle","up-right","upload","video","vimeo","wallet","warning","wifi","window","work","wrench","x-brand","youtube"] as const
@@ -10,7 +10,8 @@
10
10
  position: absolute;
11
11
  left: 50%;
12
12
  bottom: calc(100% + 2px * var(--ds-sf, var(--sf, 1)));
13
- transform: translateX(-50%);
13
+ /* Centred over its control, shifted to stay four pixels inside the window (ds-tooltip.ts). */
14
+ transform: translateX(calc(-50% + var(--ds-tooltip-shift, 0px)));
14
15
  z-index: var(--ds-tooltip-z-index, 1000);
15
16
  width: max-content;
16
17
  max-width: min(calc(320px * var(--ds-sf, var(--sf, 1))), calc(100vw - 20px));
@@ -32,7 +33,7 @@
32
33
 
33
34
  .bubble[hidden] { display: none; }
34
35
 
35
- :host([placement="bottom"]) .bubble {
36
+ .bubble[data-side="bottom"] {
36
37
  bottom: auto;
37
38
  top: calc(100% + 2px * var(--ds-sf, var(--sf, 1)));
38
39
  }