@threadlabs/looma 0.5.2 → 0.6.0-rc.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.
Files changed (174) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +14 -14
  3. package/components/ui-callout/ui-callout.html +1 -1
  4. package/components/ui-checkbox/ui-checkbox.html +1 -1
  5. package/components/ui-cluster/ui-cluster.html +6 -6
  6. package/components/ui-combobox/ui-combobox.html +23 -23
  7. package/components/ui-container/ui-container.html +4 -4
  8. package/components/ui-context-menu/ui-context-menu.html +2 -2
  9. package/components/ui-dialog/ui-dialog.html +12 -12
  10. package/components/ui-disclosure/ui-disclosure.html +19 -4
  11. package/components/ui-editable/ui-editable.html +6 -6
  12. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +20 -20
  13. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +25 -25
  14. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  15. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +20 -20
  16. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +48 -48
  17. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +34 -34
  18. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  19. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  20. package/components/ui-grid/ui-grid.html +6 -6
  21. package/components/ui-icon-button/ui-icon-button.html +42 -38
  22. package/components/ui-input/ui-input.html +2 -2
  23. package/components/ui-menu/ui-menu.html +15 -4
  24. package/components/ui-menu-item/ui-menu-item.html +5 -5
  25. package/components/ui-popover/ui-popover.html +3 -3
  26. package/components/ui-reel/ui-reel.html +6 -6
  27. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  28. package/components/ui-search-shell/ui-search-shell.html +3 -3
  29. package/components/ui-select/ui-select.html +2 -2
  30. package/components/ui-sidebar/ui-sidebar.html +11 -11
  31. package/components/ui-stack/ui-stack.html +6 -6
  32. package/components/ui-switcher/ui-switcher.html +6 -6
  33. package/components/ui-tabs/ui-tabs.html +18 -4
  34. package/components/ui-textarea/ui-textarea.html +2 -2
  35. package/components/ui-toast-region/ui-toast-region.html +2 -2
  36. package/components/ui-tooltip/ui-tooltip.html +1 -1
  37. package/components/ui-top-bar/ui-top-bar.html +5 -5
  38. package/components/ui-tree/ui-tree.html +7 -0
  39. package/components/ui-tree-item/ui-tree-item.html +15 -7
  40. package/dist/index.js +1 -1
  41. package/package.json +1 -1
  42. package/styles/ui-button.css +14 -14
  43. package/styles/ui-callout.css +1 -1
  44. package/styles/ui-checkbox.css +1 -1
  45. package/styles/ui-cluster.css +6 -6
  46. package/styles/ui-combobox.css +23 -23
  47. package/styles/ui-container.css +4 -4
  48. package/styles/ui-context-menu.css +2 -2
  49. package/styles/ui-dialog.css +12 -12
  50. package/styles/ui-disclosure.css +22 -6
  51. package/styles/ui-editable.css +6 -6
  52. package/styles/ui-editor-insert-table-grid.css +20 -20
  53. package/styles/ui-editor-mention-menu.css +25 -25
  54. package/styles/ui-editor-slash-menu.css +39 -39
  55. package/styles/ui-editor-table-context-menu.css +20 -20
  56. package/styles/ui-editor-table-overlay.css +48 -48
  57. package/styles/ui-editor-table-toolbar.css +34 -34
  58. package/styles/ui-editor-toolbar.css +9 -9
  59. package/styles/ui-floating-action-button.css +16 -22
  60. package/styles/ui-grid.css +6 -6
  61. package/styles/ui-icon-button.css +42 -38
  62. package/styles/ui-input.css +2 -2
  63. package/styles/ui-menu-item.css +5 -5
  64. package/styles/ui-menu.css +18 -6
  65. package/styles/ui-popover.css +3 -3
  66. package/styles/ui-reel.css +6 -6
  67. package/styles/ui-search-result-row.css +9 -9
  68. package/styles/ui-search-shell.css +3 -3
  69. package/styles/ui-select.css +2 -2
  70. package/styles/ui-sidebar.css +11 -11
  71. package/styles/ui-stack.css +6 -6
  72. package/styles/ui-switcher.css +6 -6
  73. package/styles/ui-tabs.css +20 -6
  74. package/styles/ui-textarea.css +2 -2
  75. package/styles/ui-toast-region.css +2 -2
  76. package/styles/ui-tooltip.css +1 -1
  77. package/styles/ui-top-bar.css +5 -5
  78. package/styles/ui-tree-item.css +21 -8
  79. package/styles/ui-tree.css +7 -1
  80. package/theme-dark.css +42 -103
  81. package/theme-high-contrast.css +18 -22
  82. package/theme-light.css +15 -41
  83. package/tokens.css +149 -201
  84. package/vanilla/UiDisclosure.d.ts +1 -0
  85. package/vanilla/UiDisclosure.js +1 -1
  86. package/vanilla/UiMenu.d.ts +1 -0
  87. package/vanilla/UiMenu.js +1 -1
  88. package/vanilla/UiTabs.d.ts +1 -0
  89. package/vanilla/UiTabs.js +1 -1
  90. package/vanilla/UiTree.d.ts +1 -0
  91. package/vanilla/UiTree.js +1 -1
  92. package/vue/UiButton.vue +20 -14
  93. package/vue/UiCallout.vue +1 -1
  94. package/vue/UiCheckbox.vue +1 -1
  95. package/vue/UiCluster.vue +6 -6
  96. package/vue/UiCombobox.vue +23 -23
  97. package/vue/UiContainer.vue +4 -4
  98. package/vue/UiContextMenu.vue +2 -2
  99. package/vue/UiDialog.vue +12 -12
  100. package/vue/UiDisclosure.d.ts +2 -0
  101. package/vue/UiDisclosure.vue +21 -4
  102. package/vue/UiEditable.vue +6 -6
  103. package/vue/UiEditorInsertTableGrid.vue +20 -20
  104. package/vue/UiEditorMentionMenu.vue +25 -25
  105. package/vue/UiEditorSlashMenu.vue +39 -39
  106. package/vue/UiEditorTableContextMenu.vue +20 -20
  107. package/vue/UiEditorTableOverlay.vue +48 -57
  108. package/vue/UiEditorTableToolbar.vue +34 -34
  109. package/vue/UiEditorToolbar.vue +9 -9
  110. package/vue/UiFloatingActionButton.vue +17 -22
  111. package/vue/UiGrid.vue +6 -6
  112. package/vue/UiIconButton.vue +46 -42
  113. package/vue/UiInput.vue +2 -2
  114. package/vue/UiMenu.d.ts +2 -0
  115. package/vue/UiMenu.vue +17 -7
  116. package/vue/UiMenuItem.vue +6 -5
  117. package/vue/UiPopover.vue +3 -3
  118. package/vue/UiReel.vue +6 -6
  119. package/vue/UiSearchResultRow.vue +10 -13
  120. package/vue/UiSearchShell.vue +3 -3
  121. package/vue/UiSelect.vue +2 -2
  122. package/vue/UiSidebar.vue +11 -16
  123. package/vue/UiStack.vue +6 -6
  124. package/vue/UiSwitcher.vue +6 -6
  125. package/vue/UiTabs.d.ts +2 -0
  126. package/vue/UiTabs.vue +21 -4
  127. package/vue/UiTextarea.vue +2 -2
  128. package/vue/UiToastRegion.vue +2 -2
  129. package/vue/UiTooltip.vue +1 -1
  130. package/vue/UiTopBar.vue +5 -5
  131. package/vue/UiTree.d.ts +2 -0
  132. package/vue/UiTree.vue +24 -1
  133. package/vue/UiTreeItem.vue +16 -8
  134. package/vue/chunks/UiButton.js +1 -1
  135. package/vue/chunks/UiCallout.js +1 -1
  136. package/vue/chunks/UiCheckbox.js +1 -1
  137. package/vue/chunks/UiCluster.js +1 -1
  138. package/vue/chunks/UiCombobox.js +1 -1
  139. package/vue/chunks/UiContainer.js +1 -1
  140. package/vue/chunks/UiContextMenu.js +1 -1
  141. package/vue/chunks/UiDialog.js +1 -1
  142. package/vue/chunks/UiDisclosure.js +3 -2
  143. package/vue/chunks/UiEditable.js +1 -1
  144. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  145. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  146. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  147. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  148. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  149. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  150. package/vue/chunks/UiEditorToolbar.js +1 -1
  151. package/vue/chunks/UiFloatingActionButton.js +1 -1
  152. package/vue/chunks/UiGrid.js +1 -1
  153. package/vue/chunks/UiIconButton.js +1 -1
  154. package/vue/chunks/UiInput.js +1 -1
  155. package/vue/chunks/UiMenu.js +3 -2
  156. package/vue/chunks/UiMenuItem.js +1 -1
  157. package/vue/chunks/UiPopover.js +1 -1
  158. package/vue/chunks/UiReel.js +1 -1
  159. package/vue/chunks/UiSearchResultRow.js +1 -1
  160. package/vue/chunks/UiSearchShell.js +1 -1
  161. package/vue/chunks/UiSelect.js +1 -1
  162. package/vue/chunks/UiSidebar.js +1 -1
  163. package/vue/chunks/UiStack.js +1 -1
  164. package/vue/chunks/UiSwitcher.js +1 -1
  165. package/vue/chunks/UiTabs.js +7 -2
  166. package/vue/chunks/UiTextarea.js +1 -1
  167. package/vue/chunks/UiToastRegion.js +1 -1
  168. package/vue/chunks/UiTooltip.js +1 -1
  169. package/vue/chunks/UiTopBar.js +1 -1
  170. package/vue/chunks/UiTree.js +8 -2
  171. package/vue/chunks/UiTreeItem.js +1 -1
  172. package/vue/components.css +1082 -1048
  173. package/vue/editor/LoomaEditor.d.ts +11 -0
  174. package/vue/editor/index.js +9 -0
@@ -218,9 +218,9 @@ onBeforeUnmount(() => {
218
218
  display: flex;
219
219
  overflow: hidden;
220
220
  flex-direction: column;
221
- background: var(--ui-surface, #fff);
222
- border: 1px solid var(--ui-border, #e5e7eb);
223
- border-radius: var(--ui-radius-xl, 1rem);
221
+ background: var(--ui-surface);
222
+ border: 1px solid var(--ui-border);
223
+ border-radius: var(--ui-radius-dialog);
224
224
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
225
225
  }
226
226
 
@@ -228,25 +228,25 @@ onBeforeUnmount(() => {
228
228
  display: flex;
229
229
  align-items: center;
230
230
  justify-content: space-between;
231
- gap: var(--ui-space-3, 12px);
232
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
233
- color: var(--ui-text-secondary, #4b5563);
234
- border-bottom: 1px solid var(--ui-border, #e5e7eb);
235
- font-size: var(--ui-font-size-xs, 0.75rem);
236
- font-weight: var(--ui-font-semibold, 600);
231
+ gap: var(--ui-space-3);
232
+ padding: var(--ui-space-2) var(--ui-space-3);
233
+ color: var(--ui-text-secondary);
234
+ border-bottom: 1px solid var(--ui-border);
235
+ font-size: var(--ui-font-size-xs);
236
+ font-weight: var(--ui-font-semibold);
237
237
  }
238
238
 
239
239
  .hint {
240
240
  overflow: hidden;
241
- color: var(--ui-text-muted, #6b7280);
242
- font-weight: var(--ui-font-normal, 400);
241
+ color: var(--ui-text-muted);
242
+ font-weight: var(--ui-font-normal);
243
243
  text-overflow: ellipsis;
244
244
  white-space: nowrap;
245
245
  }
246
246
 
247
247
  .list {
248
248
  max-height: 280px;
249
- padding: var(--ui-space-1, 4px) 0;
249
+ padding: var(--ui-space-1) 0;
250
250
  margin: 0;
251
251
  overflow-y: auto;
252
252
  overscroll-behavior: contain;
@@ -257,8 +257,8 @@ onBeforeUnmount(() => {
257
257
  display: flex;
258
258
  align-items: center;
259
259
  min-height: 44px;
260
- padding: var(--ui-space-1-5, 6px) var(--ui-space-3, 12px);
261
- gap: var(--ui-space-3, 12px);
260
+ padding: var(--ui-space-2) var(--ui-space-3);
261
+ gap: var(--ui-space-3);
262
262
  cursor: pointer;
263
263
  }
264
264
 
@@ -273,11 +273,11 @@ onBeforeUnmount(() => {
273
273
  width: 32px;
274
274
  height: 32px;
275
275
  flex: 0 0 auto;
276
- color: var(--ui-accent-active, var(--ui-accent-solid, #2563eb));
277
- background: var(--ui-accent-soft, var(--ui-accent-subtle, #eff6ff));
276
+ color: var(--ui-accent-active, var(--ui-accent-solid));
277
+ background: var(--ui-accent-soft, var(--ui-accent-subtle));
278
278
  border-radius: 999px;
279
- font-size: var(--ui-font-size-xs, 0.75rem);
280
- font-weight: var(--ui-font-semibold, 600);
279
+ font-size: var(--ui-font-size-xs);
280
+ font-weight: var(--ui-font-semibold);
281
281
  }
282
282
 
283
283
  .body {
@@ -294,26 +294,26 @@ onBeforeUnmount(() => {
294
294
  }
295
295
 
296
296
  .label {
297
- color: var(--ui-text-primary, #111827);
298
- font-size: var(--ui-font-size-sm, 0.875rem);
299
- font-weight: var(--ui-font-medium, 500);
297
+ color: var(--ui-text-primary);
298
+ font-size: var(--ui-font-size-sm);
299
+ font-weight: var(--ui-font-medium);
300
300
  }
301
301
 
302
302
  .detail,
303
303
  .loading {
304
- color: var(--ui-text-muted, #6b7280);
305
- font-size: var(--ui-font-size-xs, 0.75rem);
304
+ color: var(--ui-text-muted);
305
+ font-size: var(--ui-font-size-xs);
306
306
  }
307
307
 
308
308
  .loading {
309
309
  min-height: 44px;
310
- padding: var(--ui-space-3, 12px);
310
+ padding: var(--ui-space-3);
311
311
  }
312
312
 
313
313
  @media (max-width: 767px) {
314
314
  [data-component~="ui-editor-mention-menu"] {
315
315
  border-bottom: 0;
316
- border-radius: var(--ui-radius-xl, 1rem) var(--ui-radius-xl, 1rem) 0 0;
316
+ border-radius: var(--ui-radius-dialog) var(--ui-radius-dialog) 0 0;
317
317
  }
318
318
 
319
319
  .list {
@@ -191,9 +191,9 @@ onBeforeUnmount(() => {
191
191
  }
192
192
 
193
193
  [data-component~="ui-editor-slash-menu"] {
194
- background: var(--ui-surface, #fff);
195
- border: 1px solid var(--ui-border, #e5e7eb);
196
- border-radius: var(--ui-radius-xl, 1rem);
194
+ background: var(--ui-surface);
195
+ border: 1px solid var(--ui-border);
196
+ border-radius: var(--ui-radius-dialog);
197
197
  box-shadow: var(--ui-shadow-lg, 0 8px 24px rgb(0 0 0 / 0.12));
198
198
  overflow: hidden;
199
199
  display: flex;
@@ -202,7 +202,7 @@ onBeforeUnmount(() => {
202
202
 
203
203
  @media (max-width: 767px) {
204
204
  [data-component~="ui-editor-slash-menu"] {
205
- border-radius: var(--ui-radius-xl, 1rem) var(--ui-radius-xl, 1rem) 0 0;
205
+ border-radius: var(--ui-radius-dialog) var(--ui-radius-dialog) 0 0;
206
206
  border-bottom: none;
207
207
  }
208
208
  }
@@ -210,12 +210,12 @@ onBeforeUnmount(() => {
210
210
  .header {
211
211
  display: none;
212
212
  align-items: center;
213
- gap: var(--ui-space-2, 8px);
214
- padding: var(--ui-space-3, 12px) var(--ui-space-4, 16px);
215
- border-bottom: 1px solid var(--ui-border, #e5e7eb);
216
- font-size: var(--ui-font-size-xs, 0.75rem);
217
- color: var(--ui-text-muted, #6b7280);
218
- font-weight: var(--ui-font-semibold, 600);
213
+ gap: var(--ui-space-2);
214
+ padding: var(--ui-space-3) var(--ui-space-4);
215
+ border-bottom: 1px solid var(--ui-border);
216
+ font-size: var(--ui-font-size-xs);
217
+ color: var(--ui-text-muted);
218
+ font-weight: var(--ui-font-semibold);
219
219
  text-transform: uppercase;
220
220
  letter-spacing: 0.05em;
221
221
  }
@@ -227,12 +227,12 @@ onBeforeUnmount(() => {
227
227
  }
228
228
 
229
229
  .header-query {
230
- background: var(--ui-surface-hover, #f3f4f6);
231
- border-radius: var(--ui-radius-sm, 4px);
230
+ background: var(--ui-surface-hover);
231
+ border-radius: var(--ui-radius-sm);
232
232
  padding: 0.1em 0.4em;
233
233
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
234
- font-size: var(--ui-font-size-xs, 0.75rem);
235
- color: var(--ui-accent, #3b82f6);
234
+ font-size: var(--ui-font-size-xs);
235
+ color: var(--ui-accent);
236
236
  text-transform: none;
237
237
  letter-spacing: 0;
238
238
  }
@@ -240,7 +240,7 @@ onBeforeUnmount(() => {
240
240
  .list {
241
241
  list-style: none;
242
242
  margin: 0;
243
- padding: var(--ui-space-1, 4px) 0;
243
+ padding: var(--ui-space-1) 0;
244
244
  overflow-y: auto;
245
245
  max-height: 280px;
246
246
  overscroll-behavior: contain;
@@ -249,15 +249,15 @@ onBeforeUnmount(() => {
249
249
  @media (max-width: 767px) {
250
250
  .list {
251
251
  max-height: calc(60dvh - 80px);
252
- padding: var(--ui-space-1, 4px) 0 var(--ui-space-2, 8px);
252
+ padding: var(--ui-space-1) 0 var(--ui-space-2);
253
253
  }
254
254
  }
255
255
 
256
256
  .item {
257
257
  display: flex;
258
258
  align-items: center;
259
- gap: var(--ui-space-3, 12px);
260
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
259
+ gap: var(--ui-space-3);
260
+ padding: var(--ui-space-2) var(--ui-space-3);
261
261
  min-height: 44px;
262
262
  cursor: pointer;
263
263
  transition: background-color 120ms ease;
@@ -273,21 +273,21 @@ onBeforeUnmount(() => {
273
273
  justify-content: center;
274
274
  width: 32px;
275
275
  height: 32px;
276
- background: var(--ui-surface-hover, #f3f4f6);
277
- border: 1px solid var(--ui-border, #e5e7eb);
278
- border-radius: var(--ui-radius-md, 6px);
279
- font-size: var(--ui-font-size-sm, 0.875rem);
280
- font-weight: var(--ui-font-bold, 700);
281
- color: var(--ui-text-secondary, #4b5563);
276
+ background: var(--ui-surface-hover);
277
+ border: 1px solid var(--ui-border);
278
+ border-radius: var(--ui-radius-md);
279
+ font-size: var(--ui-font-size-sm);
280
+ font-weight: var(--ui-font-bold);
281
+ color: var(--ui-text-secondary);
282
282
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
283
283
  flex-shrink: 0;
284
284
  line-height: 1;
285
285
  }
286
286
 
287
287
  .item.active .icon {
288
- background: var(--ui-accent, #3b82f6);
289
- border-color: var(--ui-accent, #3b82f6);
290
- color: var(--ui-accent-contrast, #fff);
288
+ background: var(--ui-accent);
289
+ border-color: var(--ui-accent);
290
+ color: var(--ui-accent-contrast);
291
291
  }
292
292
 
293
293
  .icon {
@@ -303,17 +303,17 @@ onBeforeUnmount(() => {
303
303
  }
304
304
 
305
305
  .title {
306
- font-size: var(--ui-font-size-sm, 0.875rem);
307
- font-weight: var(--ui-font-medium, 500);
308
- color: var(--ui-text, #111827);
306
+ font-size: var(--ui-font-size-sm);
307
+ font-weight: var(--ui-font-medium);
308
+ color: var(--ui-text);
309
309
  white-space: nowrap;
310
310
  overflow: hidden;
311
311
  text-overflow: ellipsis;
312
312
  }
313
313
 
314
314
  .description {
315
- font-size: var(--ui-font-size-xs, 0.75rem);
316
- color: var(--ui-text-muted, #6b7280);
315
+ font-size: var(--ui-font-size-xs);
316
+ color: var(--ui-text-muted);
317
317
  white-space: nowrap;
318
318
  overflow: hidden;
319
319
  text-overflow: ellipsis;
@@ -321,10 +321,10 @@ onBeforeUnmount(() => {
321
321
 
322
322
  .footer {
323
323
  display: none;
324
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
325
- border-top: 1px solid var(--ui-border, #e5e7eb);
326
- font-size: var(--ui-font-size-xs, 0.75rem);
327
- color: var(--ui-text-muted, #6b7280);
324
+ padding: var(--ui-space-2) var(--ui-space-3);
325
+ border-top: 1px solid var(--ui-border);
326
+ font-size: var(--ui-font-size-xs);
327
+ color: var(--ui-text-muted);
328
328
  }
329
329
 
330
330
  @media (min-width: 768px) {
@@ -339,11 +339,11 @@ onBeforeUnmount(() => {
339
339
  justify-content: center;
340
340
  font-family: var(--ui-font-family-mono, ui-monospace, monospace);
341
341
  font-size: 10px;
342
- background: var(--ui-surface-hover, #f3f4f6);
343
- border: 1px solid var(--ui-border, #e5e7eb);
342
+ background: var(--ui-surface-hover);
343
+ border: 1px solid var(--ui-border);
344
344
  border-radius: 3px;
345
345
  padding: 0 3px;
346
- color: var(--ui-text-secondary, #4b5563);
346
+ color: var(--ui-text-secondary);
347
347
  }
348
348
 
349
349
  [data-component~="ui-editor-slash-menu"][hidden] {
@@ -251,10 +251,10 @@ onBeforeUnmount(() => {
251
251
  min-width: 14rem;
252
252
  max-width: min(17rem, calc(100vw - 24px));
253
253
  max-height: min(28rem, calc(100vh - 24px));
254
- padding: var(--ui-space-1-5, 6px);
255
- background: var(--ui-surface, #fff);
256
- border: 1px solid var(--ui-border, #e5e7eb);
257
- border-radius: var(--ui-radius-lg, 10px);
254
+ padding: var(--ui-space-2);
255
+ background: var(--ui-surface);
256
+ border: 1px solid var(--ui-border);
257
+ border-radius: var(--ui-radius-lg);
258
258
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
259
259
  display: flex;
260
260
  flex-direction: column;
@@ -273,17 +273,17 @@ onBeforeUnmount(() => {
273
273
  [data-component~="ui-editor-table-context-menu"] button {
274
274
  display: flex;
275
275
  align-items: center;
276
- gap: var(--ui-space-2, 8px);
276
+ gap: var(--ui-space-2);
277
277
  width: 100%;
278
278
  text-align: left;
279
279
  min-height: 32px;
280
- padding: var(--ui-space-1-5, 6px) var(--ui-space-2, 8px);
280
+ padding: var(--ui-space-2) var(--ui-space-2);
281
281
  border: none;
282
- border-radius: var(--ui-radius-sm, 4px);
282
+ border-radius: var(--ui-radius-sm);
283
283
  background: none;
284
- font-size: var(--ui-font-size-sm, 0.875rem);
284
+ font-size: var(--ui-font-size-sm);
285
285
  cursor: pointer;
286
- color: var(--ui-text, #111);
286
+ color: var(--ui-text);
287
287
  }
288
288
 
289
289
  [data-component~="ui-editor-table-context-menu"] button {
@@ -292,7 +292,7 @@ onBeforeUnmount(() => {
292
292
  }
293
293
 
294
294
  [data-component~="ui-editor-table-context-menu"] button:hover:not(:disabled) {
295
- background: var(--ui-surface-hover, #f3f4f6);
295
+ background: var(--ui-surface-hover);
296
296
  }
297
297
 
298
298
  [data-component~="ui-editor-table-context-menu"] button.selected {
@@ -300,7 +300,7 @@ onBeforeUnmount(() => {
300
300
  }
301
301
 
302
302
  [data-component~="ui-editor-table-context-menu"] button.danger {
303
- color: var(--ui-danger, #dc2626);
303
+ color: var(--ui-danger);
304
304
  }
305
305
 
306
306
  .swatches {
@@ -312,7 +312,7 @@ onBeforeUnmount(() => {
312
312
  .swatch-button {
313
313
  display: inline-flex;
314
314
  align-items: center;
315
- gap: var(--ui-space-2, 8px);
315
+ gap: var(--ui-space-2);
316
316
  }
317
317
 
318
318
  .swatch {
@@ -320,7 +320,7 @@ onBeforeUnmount(() => {
320
320
  width: 1rem;
321
321
  height: 1rem;
322
322
  border-radius: 999px;
323
- border: 1px solid var(--ui-border, #d1d5db);
323
+ border: 1px solid var(--ui-border);
324
324
  background: var(--ui-editor-table-context-swatch, #fff);
325
325
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.35);
326
326
  flex-shrink: 0;
@@ -332,11 +332,11 @@ onBeforeUnmount(() => {
332
332
  linear-gradient(
333
333
  135deg,
334
334
  transparent calc(50% - 1px),
335
- var(--ui-text-muted, #6b7280) calc(50% - 1px),
336
- var(--ui-text-muted, #6b7280) calc(50% + 1px),
335
+ var(--ui-text-muted) calc(50% - 1px),
336
+ var(--ui-text-muted) calc(50% + 1px),
337
337
  transparent calc(50% + 1px)
338
338
  ),
339
- var(--ui-surface, #fff);
339
+ var(--ui-surface);
340
340
  }
341
341
 
342
342
  .swatch-label {
@@ -345,18 +345,18 @@ onBeforeUnmount(() => {
345
345
  }
346
346
 
347
347
  .heading {
348
- padding: var(--ui-space-1, 4px) var(--ui-space-2, 8px);
348
+ padding: var(--ui-space-1) var(--ui-space-2);
349
349
  font-size: 0.6875rem;
350
350
  font-weight: 700;
351
351
  letter-spacing: 0.05em;
352
352
  text-transform: uppercase;
353
- color: var(--ui-text-muted, #6b7280);
353
+ color: var(--ui-text-muted);
354
354
  }
355
355
 
356
356
  .sep {
357
357
  height: 1px;
358
- background: var(--ui-border, #e5e7eb);
359
- margin: var(--ui-space-1, 4px) 0;
358
+ background: var(--ui-border);
359
+ margin: var(--ui-space-1) 0;
360
360
  }
361
361
 
362
362
  [data-component~="ui-editor-table-context-menu"][hidden] {
@@ -418,10 +418,10 @@ onBeforeUnmount(() => {
418
418
  width: 24px;
419
419
  height: 24px;
420
420
  padding: 0;
421
- border: 1px solid var(--ui-affordance-near-color, var(--ui-border-strong, #c8c8c4));
422
- border-radius: var(--ui-radius-round, 999px);
423
- background: color-mix(in srgb, var(--ui-surface-elevated, #fff) 96%, transparent);
424
- color: var(--ui-affordance-near-color, var(--ui-text-secondary, #5c5c5c));
421
+ border: 1px solid var(--ui-affordance-near-color, var(--ui-border-strong));
422
+ border-radius: var(--ui-radius-round);
423
+ background: color-mix(in srgb, var(--ui-surface-elevated) 96%, transparent);
424
+ color: var(--ui-affordance-near-color, var(--ui-text-secondary));
425
425
  font: inherit;
426
426
  font-size: 16px;
427
427
  line-height: 1;
@@ -429,20 +429,18 @@ onBeforeUnmount(() => {
429
429
  opacity: 0;
430
430
  scale: 0.72;
431
431
  transition:
432
- opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease),
433
- scale var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease),
434
- color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease),
435
- background-color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
436
- var(--ui-motion-ease, ease),
437
- border-color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
438
- var(--ui-motion-ease, ease);
432
+ opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
433
+ scale var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
434
+ color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
435
+ background-color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
436
+ border-color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
439
437
  pointer-events: auto;
440
438
  cursor: pointer;
441
439
  }
442
440
 
443
441
  .handle {
444
442
  --ui-icon-size: 14px;
445
- --ui-icon-stroke-width: var(--ui-editor-table-affordance-icon-stroke-width, 2);
443
+ --ui-icon-stroke-width: 2;
446
444
  }
447
445
 
448
446
  .handle[data-ui-proximity="near"],
@@ -454,16 +452,16 @@ onBeforeUnmount(() => {
454
452
 
455
453
  .control.active .handle,
456
454
  .handle:focus-visible {
457
- border-color: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
458
- background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
459
- color: var(--ui-text-on-accent, #fff);
455
+ border-color: var(--ui-affordance-direct-color, var(--ui-accent-solid));
456
+ background: var(--ui-affordance-direct-color, var(--ui-accent-solid));
457
+ color: var(--ui-text-on-accent);
460
458
  box-shadow: var(--ui-shadow-sm, 0 1px 3px rgb(0 0 0 / 0.1));
461
459
  }
462
460
 
463
461
  .handle:focus-visible,
464
462
  .selector:focus-visible,
465
463
  .cell-menu:focus-visible {
466
- outline: 2px solid var(--ui-focus-ring, #5b55d6);
464
+ outline: 2px solid var(--ui-focus-ring);
467
465
  outline-offset: 2px;
468
466
  }
469
467
 
@@ -491,10 +489,9 @@ onBeforeUnmount(() => {
491
489
 
492
490
  .line {
493
491
  position: absolute;
494
- background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
492
+ background: var(--ui-affordance-direct-color, var(--ui-accent-solid));
495
493
  opacity: 0;
496
- transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
497
- var(--ui-motion-ease, ease);
494
+ transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
498
495
  }
499
496
 
500
497
  .control.row .line {
@@ -513,13 +510,12 @@ onBeforeUnmount(() => {
513
510
 
514
511
  .guide {
515
512
  position: absolute;
516
- width: var(--ui-affordance-guide-size, 4px);
517
- height: var(--ui-affordance-guide-size, 4px);
518
- border-radius: var(--ui-radius-round, 999px);
519
- background: var(--ui-affordance-guide-color, var(--ui-border-strong, #c8c8c4));
520
- opacity: var(--ui-affordance-guide-opacity, 0.42);
521
- transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
522
- var(--ui-motion-ease, ease);
513
+ width: var(--ui-affordance-guide-size);
514
+ height: var(--ui-affordance-guide-size);
515
+ border-radius: var(--ui-radius-round);
516
+ background: var(--ui-affordance-guide-color, var(--ui-border-strong));
517
+ opacity: var(--ui-affordance-guide-opacity);
518
+ transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
523
519
  }
524
520
 
525
521
  .control.row .guide {
@@ -544,17 +540,16 @@ onBeforeUnmount(() => {
544
540
  left: 50%;
545
541
  width: max-content;
546
542
  max-width: 14rem;
547
- padding: var(--ui-space-1, 4px) var(--ui-space-2, 8px);
548
- border-radius: var(--ui-radius-1, 4px);
549
- background: var(--ui-text-primary, #1a1a1a);
550
- color: var(--ui-surface-elevated, #fff);
551
- font-size: var(--ui-font-size-xs, 0.75rem);
552
- font-weight: var(--ui-font-medium, 500);
553
- line-height: var(--ui-line-height-md, 1.4);
543
+ padding: var(--ui-space-1) var(--ui-space-2);
544
+ border-radius: var(--ui-radius-sm);
545
+ background: var(--ui-text-primary);
546
+ color: var(--ui-surface-elevated);
547
+ font-size: var(--ui-font-size-xs);
548
+ font-weight: var(--ui-font-medium);
549
+ line-height: var(--ui-line-height-md);
554
550
  opacity: 0;
555
551
  transform: translateX(-50%);
556
- transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
557
- var(--ui-motion-ease, ease);
552
+ transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
558
553
  pointer-events: none;
559
554
  }
560
555
 
@@ -580,41 +575,37 @@ onBeforeUnmount(() => {
580
575
  padding: 0;
581
576
  border: 1px solid transparent;
582
577
  background: transparent;
583
- color: var(--ui-text-secondary, #5c5c5c);
578
+ color: var(--ui-text-secondary);
584
579
  box-shadow: none;
585
580
  pointer-events: auto;
586
581
  cursor: pointer;
587
582
  transition:
588
- color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease),
589
- background-color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
590
- var(--ui-motion-ease, ease),
591
- border-color var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
592
- var(--ui-motion-ease, ease),
593
- box-shadow var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
594
- var(--ui-motion-ease, ease);
583
+ color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
584
+ background-color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
585
+ border-color var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
586
+ box-shadow var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
595
587
  }
596
588
 
597
589
  .selector:hover,
598
590
  .cell-menu:hover {
599
- background: var(--ui-icon-button-hover-bg, var(--ui-surface-muted, #f3f4f6));
600
- color: var(--ui-icon-button-hover-color, var(--ui-text-primary, #1a1a1a));
591
+ background: var(--ui-icon-button-hover-surface, var(--ui-surface-muted));
592
+ color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
601
593
  box-shadow: var(--ui-shadow-xs, 0 1px 2px rgb(0 0 0 / 0.05));
602
594
  }
603
595
 
604
596
  .selector {
605
- border-radius: var(--ui-radius-round, 999px);
597
+ border-radius: var(--ui-radius-round);
606
598
  }
607
599
 
608
600
  .selector::before {
609
601
  content: "";
610
602
  position: absolute;
611
603
  inset: 50% auto auto 50%;
612
- border-radius: var(--ui-radius-round, 999px);
613
- background: var(--ui-affordance-guide-color, var(--ui-border-strong, #c8c8c4));
614
- opacity: var(--ui-affordance-guide-opacity, 0.42);
604
+ border-radius: var(--ui-radius-round);
605
+ background: var(--ui-affordance-guide-color, var(--ui-border-strong));
606
+ opacity: var(--ui-affordance-guide-opacity);
615
607
  transform: translate(-50%, -50%);
616
- transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms))
617
- var(--ui-motion-ease, ease);
608
+ transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
618
609
  pointer-events: none;
619
610
  }
620
611
 
@@ -623,12 +614,12 @@ onBeforeUnmount(() => {
623
614
  width: 14px;
624
615
  height: 14px;
625
616
  --ui-icon-size: 14px;
626
- --ui-icon-stroke-width: var(--ui-editor-table-affordance-icon-stroke-width, 2);
617
+ --ui-icon-stroke-width: 2;
627
618
  opacity: 0;
628
619
  transform: scale(0.72);
629
620
  transition:
630
- opacity var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease),
631
- transform var(--ui-affordance-motion, var(--ui-motion-fast, 120ms)) var(--ui-motion-ease, ease);
621
+ opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease),
622
+ transform var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
632
623
  }
633
624
 
634
625
  .selector:hover::before,
@@ -680,13 +671,13 @@ onBeforeUnmount(() => {
680
671
  .cell-menu {
681
672
  width: 24px;
682
673
  height: 24px;
683
- border-radius: var(--ui-radius-1, 4px);
684
- background: color-mix(in srgb, var(--ui-surface-muted, #f3f4f6) 78%, transparent);
674
+ border-radius: var(--ui-radius-sm);
675
+ background: color-mix(in srgb, var(--ui-surface-muted) 78%, transparent);
685
676
  }
686
677
 
687
678
  .cell-menu {
688
679
  --ui-icon-size: 15px;
689
- --ui-icon-stroke-width: var(--ui-editor-table-affordance-icon-stroke-width, 2);
680
+ --ui-icon-stroke-width: 2;
690
681
  }
691
682
 
692
683
  [data-component~="ui-editor-table-overlay"][hidden] {