@threadlabs/looma 0.5.2 → 0.6.0-rc.2

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 (177) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +46 -26
  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 +45 -40
  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 +47 -26
  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 +45 -40
  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 +46 -103
  81. package/theme-high-contrast.css +22 -22
  82. package/theme-light.css +17 -41
  83. package/tokens.css +154 -201
  84. package/vanilla/UiButton.d.ts +1 -0
  85. package/vanilla/UiButton.js +1 -1
  86. package/vanilla/UiDisclosure.d.ts +1 -0
  87. package/vanilla/UiDisclosure.js +1 -1
  88. package/vanilla/UiMenu.d.ts +1 -0
  89. package/vanilla/UiMenu.js +1 -1
  90. package/vanilla/UiTabs.d.ts +1 -0
  91. package/vanilla/UiTabs.js +1 -1
  92. package/vanilla/UiTree.d.ts +1 -0
  93. package/vanilla/UiTree.js +1 -1
  94. package/vue/UiButton.d.ts +2 -0
  95. package/vue/UiButton.vue +56 -41
  96. package/vue/UiCallout.vue +1 -1
  97. package/vue/UiCheckbox.vue +1 -1
  98. package/vue/UiCluster.vue +6 -6
  99. package/vue/UiCombobox.vue +23 -23
  100. package/vue/UiContainer.vue +4 -4
  101. package/vue/UiContextMenu.vue +2 -2
  102. package/vue/UiDialog.vue +12 -12
  103. package/vue/UiDisclosure.d.ts +2 -0
  104. package/vue/UiDisclosure.vue +21 -4
  105. package/vue/UiEditable.vue +6 -6
  106. package/vue/UiEditorInsertTableGrid.vue +20 -20
  107. package/vue/UiEditorMentionMenu.vue +25 -25
  108. package/vue/UiEditorSlashMenu.vue +39 -39
  109. package/vue/UiEditorTableContextMenu.vue +20 -20
  110. package/vue/UiEditorTableOverlay.vue +48 -57
  111. package/vue/UiEditorTableToolbar.vue +34 -34
  112. package/vue/UiEditorToolbar.vue +9 -9
  113. package/vue/UiFloatingActionButton.vue +17 -22
  114. package/vue/UiGrid.vue +6 -6
  115. package/vue/UiIconButton.vue +45 -55
  116. package/vue/UiInput.vue +2 -2
  117. package/vue/UiMenu.d.ts +2 -0
  118. package/vue/UiMenu.vue +17 -7
  119. package/vue/UiMenuItem.vue +6 -5
  120. package/vue/UiPopover.vue +3 -3
  121. package/vue/UiReel.vue +6 -6
  122. package/vue/UiSearchResultRow.vue +10 -13
  123. package/vue/UiSearchShell.vue +3 -3
  124. package/vue/UiSelect.vue +2 -2
  125. package/vue/UiSidebar.vue +11 -16
  126. package/vue/UiStack.vue +6 -6
  127. package/vue/UiSwitcher.vue +6 -6
  128. package/vue/UiTabs.d.ts +2 -0
  129. package/vue/UiTabs.vue +21 -4
  130. package/vue/UiTextarea.vue +2 -2
  131. package/vue/UiToastRegion.vue +2 -2
  132. package/vue/UiTooltip.vue +1 -1
  133. package/vue/UiTopBar.vue +5 -5
  134. package/vue/UiTree.d.ts +2 -0
  135. package/vue/UiTree.vue +24 -1
  136. package/vue/UiTreeItem.vue +16 -8
  137. package/vue/chunks/UiButton.js +4 -2
  138. package/vue/chunks/UiCallout.js +1 -1
  139. package/vue/chunks/UiCheckbox.js +1 -1
  140. package/vue/chunks/UiCluster.js +1 -1
  141. package/vue/chunks/UiCombobox.js +1 -1
  142. package/vue/chunks/UiContainer.js +1 -1
  143. package/vue/chunks/UiContextMenu.js +1 -1
  144. package/vue/chunks/UiDialog.js +1 -1
  145. package/vue/chunks/UiDisclosure.js +3 -2
  146. package/vue/chunks/UiEditable.js +1 -1
  147. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  148. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  149. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  150. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  151. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  152. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  153. package/vue/chunks/UiEditorToolbar.js +1 -1
  154. package/vue/chunks/UiFloatingActionButton.js +1 -1
  155. package/vue/chunks/UiGrid.js +1 -1
  156. package/vue/chunks/UiIconButton.js +1 -1
  157. package/vue/chunks/UiInput.js +1 -1
  158. package/vue/chunks/UiMenu.js +3 -2
  159. package/vue/chunks/UiMenuItem.js +1 -1
  160. package/vue/chunks/UiPopover.js +1 -1
  161. package/vue/chunks/UiReel.js +1 -1
  162. package/vue/chunks/UiSearchResultRow.js +1 -1
  163. package/vue/chunks/UiSearchShell.js +1 -1
  164. package/vue/chunks/UiSelect.js +1 -1
  165. package/vue/chunks/UiSidebar.js +1 -1
  166. package/vue/chunks/UiStack.js +1 -1
  167. package/vue/chunks/UiSwitcher.js +1 -1
  168. package/vue/chunks/UiTabs.js +7 -2
  169. package/vue/chunks/UiTextarea.js +1 -1
  170. package/vue/chunks/UiToastRegion.js +1 -1
  171. package/vue/chunks/UiTooltip.js +1 -1
  172. package/vue/chunks/UiTopBar.js +1 -1
  173. package/vue/chunks/UiTree.js +8 -2
  174. package/vue/chunks/UiTreeItem.js +1 -1
  175. package/vue/components.css +1114 -1090
  176. package/vue/editor/LoomaEditor.d.ts +11 -0
  177. package/vue/editor/index.js +17 -0
@@ -15,11 +15,13 @@ defineOptions({ inheritAttrs: false })
15
15
 
16
16
  const props = withDefaults(
17
17
  defineProps<{
18
+ density?: 'comfortable' | 'compact'
18
19
  disabled?: boolean
19
20
  open?: boolean
20
21
  summary?: string
21
22
  }>(),
22
23
  {
24
+ density: 'comfortable',
23
25
  disabled: false,
24
26
  open: false,
25
27
  summary: 'Details',
@@ -51,6 +53,7 @@ const contentId = ref('')
51
53
  /** The values the styles' :host-state() rules test. */
52
54
  const hostState = computed(() =>
53
55
  [
56
+ props.density && `density density=${props.density}`,
54
57
  internalOpen.value && 'internalOpen',
55
58
  ].filter(Boolean).join(' ')
56
59
  )
@@ -213,6 +216,19 @@ onBeforeUnmount(() => {
213
216
  </template>
214
217
 
215
218
  <style scoped>
219
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
220
+ [data-component~="ui-disclosure"] {
221
+ --_trigger-min-block-size: var(--ui-control-size);
222
+ --_trigger-padding-block: var(--ui-space-2);
223
+ --_trigger-padding-inline: var(--ui-space-3);
224
+ }
225
+
226
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="density=compact"] {
227
+ --_trigger-min-block-size: var(--ui-control-size-sm);
228
+ --_trigger-padding-block: var(--ui-space-1);
229
+ --_trigger-padding-inline: var(--ui-space-2);
230
+ }
231
+
216
232
  /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
217
233
  * select or combobox. Stacked disclosures share their dividers. */
218
234
  [data-component~="ui-disclosure"] {
@@ -229,16 +245,17 @@ onBeforeUnmount(() => {
229
245
  gap: var(--ui-space-3);
230
246
  align-items: center;
231
247
  inline-size: 100%;
232
- min-block-size: 2.5rem;
233
- padding: var(--ui-space-2) var(--ui-space-3);
248
+ min-block-size: var(--ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
249
+ padding: var(--ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
250
+ var(--ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
234
251
  border: 0;
235
252
  background: transparent;
236
253
  color: inherit;
237
254
  font: inherit;
238
- font-weight: var(--ui-font-semibold, 600);
255
+ font-weight: var(--ui-font-semibold);
239
256
  text-align: start;
240
257
  cursor: pointer;
241
- border-radius: var(--ui-radius-1);
258
+ border-radius: var(--ui-radius-sm);
242
259
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
243
260
  }
244
261
 
@@ -277,11 +277,11 @@ onBeforeUnmount(() => {
277
277
  .input {
278
278
  grid-area: 1 / 1;
279
279
  box-sizing: border-box;
280
- min-block-size: var(--ui-control-size-sm, 2rem);
280
+ min-block-size: var(--ui-control-size-sm);
281
281
  margin: 0;
282
282
  padding: var(--ui-space-1) var(--ui-space-2);
283
283
  border: 1px solid transparent;
284
- border-radius: var(--ui-radius-2);
284
+ border-radius: var(--ui-radius-md);
285
285
  font: inherit;
286
286
  line-height: var(--ui-line-height-md);
287
287
  color: inherit;
@@ -351,13 +351,13 @@ onBeforeUnmount(() => {
351
351
  }
352
352
 
353
353
  .actions button {
354
- min-block-size: var(--ui-control-size-sm, 2rem);
354
+ min-block-size: var(--ui-control-size-sm);
355
355
  padding: 0 var(--ui-space-3);
356
356
  border: 1px solid var(--ui-border-strong);
357
- border-radius: var(--ui-radius-2);
357
+ border-radius: var(--ui-radius-md);
358
358
  background: var(--ui-surface-elevated);
359
- background-image: var(--ui-raised-highlight, none);
360
- box-shadow: var(--ui-raised, none);
359
+ background-image: var(--ui-raised-highlight);
360
+ box-shadow: var(--ui-raised);
361
361
  color: inherit;
362
362
  font: inherit;
363
363
  font-size: var(--ui-font-size-sm);
@@ -205,17 +205,17 @@ onBeforeUnmount(() => {
205
205
 
206
206
  <style scoped>
207
207
  [data-component~="ui-editor-insert-table-grid"] {
208
- padding: var(--ui-space-3, 12px);
209
- background: var(--ui-surface, #fff);
210
- border: 1px solid var(--ui-border, #e5e7eb);
211
- border-radius: var(--ui-radius-md, 6px);
208
+ padding: var(--ui-space-3);
209
+ background: var(--ui-surface);
210
+ border: 1px solid var(--ui-border);
211
+ border-radius: var(--ui-radius-md);
212
212
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
213
213
  }
214
214
 
215
215
  .hint {
216
- margin: 0 0 var(--ui-space-2, 8px);
217
- font-size: var(--ui-text-sm, 0.875rem);
218
- color: var(--ui-text-muted, #6b7280);
216
+ margin: 0 0 var(--ui-space-2);
217
+ font-size: var(--ui-font-size-sm);
218
+ color: var(--ui-text-muted);
219
219
  }
220
220
 
221
221
  .grid {
@@ -223,39 +223,39 @@ onBeforeUnmount(() => {
223
223
  grid-template-columns: repeat(var(--ui-editor-table-grid-cols, 8), 1.25rem);
224
224
  grid-template-rows: repeat(var(--ui-editor-table-grid-rows, 8), 1.25rem);
225
225
  gap: 2px;
226
- margin-bottom: var(--ui-space-2, 8px);
226
+ margin-bottom: var(--ui-space-2);
227
227
  }
228
228
 
229
229
  .cell {
230
230
  width: 1.25rem;
231
231
  height: 1.25rem;
232
232
  padding: 0;
233
- border: 1px solid var(--ui-border, #e5e7eb);
233
+ border: 1px solid var(--ui-border);
234
234
  border-radius: 2px;
235
- background: var(--ui-surface, #fff);
235
+ background: var(--ui-surface);
236
236
  cursor: pointer;
237
237
  }
238
238
 
239
239
  .cell.selected {
240
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
241
- border-color: var(--ui-accent-solid, var(--ui-accent, #0066cc));
240
+ background: var(--ui-accent-solid, var(--ui-accent));
241
+ border-color: var(--ui-accent-solid, var(--ui-accent));
242
242
  }
243
243
 
244
244
  .header {
245
245
  display: block;
246
- margin-bottom: var(--ui-space-2, 8px);
247
- font-size: var(--ui-text-sm, 0.875rem);
246
+ margin-bottom: var(--ui-space-2);
247
+ font-size: var(--ui-font-size-sm);
248
248
  cursor: pointer;
249
249
  }
250
250
 
251
251
  [data-component~="ui-editor-insert-table-grid"] .insert {
252
252
  width: 100%;
253
- padding: var(--ui-space-2, 8px) var(--ui-space-3, 12px);
254
- border: 1px solid var(--ui-border, #e5e7eb);
255
- border-radius: var(--ui-radius-sm, 4px);
256
- background: var(--ui-accent-solid, var(--ui-accent, #0066cc));
257
- color: var(--ui-accent-contrast, #fff);
258
- font-size: var(--ui-text-sm, 0.875rem);
253
+ padding: var(--ui-space-2) var(--ui-space-3);
254
+ border: 1px solid var(--ui-border);
255
+ border-radius: var(--ui-radius-sm);
256
+ background: var(--ui-accent-solid, var(--ui-accent));
257
+ color: var(--ui-accent-contrast);
258
+ font-size: var(--ui-font-size-sm);
259
259
  cursor: pointer;
260
260
  }
261
261
 
@@ -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] {