bitboss-ui 3.0.0-beta.21 → 3.0.0-beta.22

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 (183) hide show
  1. package/README.md +55 -3
  2. package/bin/bitboss-ui-mcp.mjs +419 -9
  3. package/bin/bitboss-ui.mjs +293 -22
  4. package/dist/ai/BbAccordion.md +21 -23
  5. package/dist/ai/BbAlert.md +6 -12
  6. package/dist/ai/BbAvatar.md +60 -24
  7. package/dist/ai/BbBadge.md +12 -20
  8. package/dist/ai/BbBaseButton.md +14 -16
  9. package/dist/ai/BbBaseCheckboxIcon.md +6 -10
  10. package/dist/ai/BbBaseRadioIcon.md +6 -10
  11. package/dist/ai/BbBaseSwitchIcon.md +5 -9
  12. package/dist/ai/BbBreadcrumbs.md +23 -34
  13. package/dist/ai/BbButton.md +35 -47
  14. package/dist/ai/BbCheckbox.md +21 -37
  15. package/dist/ai/BbCheckboxGroup.md +13 -13
  16. package/dist/ai/BbCollapsible.md +14 -26
  17. package/dist/ai/BbColorInput.md +13 -23
  18. package/dist/ai/BbColorPalette.md +23 -35
  19. package/dist/ai/BbConfirm.md +17 -32
  20. package/dist/ai/BbDatePickerInput.md +15 -21
  21. package/dist/ai/BbDialog.md +159 -62
  22. package/dist/ai/BbDropdown.md +21 -25
  23. package/dist/ai/BbDropdownButton.md +13 -30
  24. package/dist/ai/BbDropzone.md +9 -11
  25. package/dist/ai/BbIcon.md +44 -33
  26. package/dist/ai/BbIndicator.md +2 -2
  27. package/dist/ai/BbNumberInput.md +18 -20
  28. package/dist/ai/BbOffCanvas.md +42 -42
  29. package/dist/ai/BbPagination.md +21 -23
  30. package/dist/ai/BbPopover.md +15 -17
  31. package/dist/ai/BbProgress.md +40 -51
  32. package/dist/ai/BbRadio.md +9 -9
  33. package/dist/ai/BbRadioGroup.md +7 -11
  34. package/dist/ai/BbRating.md +8 -12
  35. package/dist/ai/BbSelect.md +32 -36
  36. package/dist/ai/BbSelectPopover.md +19 -31
  37. package/dist/ai/BbSlider.md +15 -19
  38. package/dist/ai/BbSmoothHeight.md +16 -31
  39. package/dist/ai/BbSpinner.md +118 -74
  40. package/dist/ai/BbSwitch.md +25 -18
  41. package/dist/ai/BbSwitchGroup.md +9 -14
  42. package/dist/ai/BbTable.md +102 -55
  43. package/dist/ai/BbTabs.md +59 -82
  44. package/dist/ai/BbTag.md +12 -23
  45. package/dist/ai/BbTextInput.md +20 -26
  46. package/dist/ai/BbTextarea.md +28 -34
  47. package/dist/ai/BbToast.md +14 -34
  48. package/dist/ai/BbTooltip.md +22 -20
  49. package/dist/ai/BbTree.md +46 -72
  50. package/dist/ai/changelog.json +169 -62
  51. package/dist/ai/components.json +1467 -9
  52. package/dist/ai/composables/useConfirm.md +5 -2
  53. package/dist/ai/composables/useToast.md +4 -2
  54. package/dist/ai/guides/agent-contract.md +7 -4
  55. package/dist/ai/guides/ai-router.md +37 -22
  56. package/dist/ai/guides/component-picker.md +23 -18
  57. package/dist/ai/guides/design-language.md +141 -13
  58. package/dist/ai/guides/design-tokens.md +29 -4
  59. package/dist/ai/guides/icons-policy.md +46 -21
  60. package/dist/ai/guides/installation-and-plugin-setup.md +253 -17
  61. package/dist/ai/guides/migration/components/bb-rating.md +26 -1
  62. package/dist/ai/guides/migration/components/bb-tooltip.md +18 -0
  63. package/dist/ai/guides/migration/v2-to-v3.md +50 -23
  64. package/dist/ai/index.md +1 -1
  65. package/dist/ai/recipes/inertia/approvals-inbox.md +3 -3
  66. package/dist/ai/recipes/inertia/inline-edit-workspace.md +2 -2
  67. package/dist/ai/recipes/inertia/onboarding.md +2 -2
  68. package/dist/ai/recipes/inertia/ownership-atlas.md +6 -6
  69. package/dist/ai/recipes/inertia/record-form.md +5 -5
  70. package/dist/ai/recipes/inertia/records-workspace.md +4 -4
  71. package/dist/ai/recipes/inertia/upload-center.md +6 -6
  72. package/dist/ai/recipes/inertia/wizard-form.md +5 -5
  73. package/dist/ai/recipes/nuxt/approvals-inbox.md +3 -3
  74. package/dist/ai/recipes/nuxt/inline-edit-workspace.md +2 -2
  75. package/dist/ai/recipes/nuxt/onboarding.md +2 -2
  76. package/dist/ai/recipes/nuxt/record-form.md +5 -5
  77. package/dist/ai/recipes/nuxt/records-workspace.md +4 -4
  78. package/dist/ai/recipes/nuxt/upload-center.md +6 -6
  79. package/dist/ai/recipes/nuxt/wizard-form.md +5 -5
  80. package/dist/ai/recipes/vue/approvals-inbox.md +3 -3
  81. package/dist/ai/recipes/vue/inline-edit-workspace.md +2 -2
  82. package/dist/ai/recipes/vue/onboarding.md +2 -2
  83. package/dist/ai/recipes/vue/record-form.md +10 -10
  84. package/dist/ai/recipes/vue/records-workspace.md +4 -4
  85. package/dist/ai/recipes/vue/upload-center.md +6 -6
  86. package/dist/ai/recipes/vue/wizard-form.md +5 -5
  87. package/dist/ai/source/BbBadge.md +1 -1
  88. package/dist/ai/source/BbBaseCheckbox.md +1 -1
  89. package/dist/ai/source/BbBaseDatePicker.md +5 -5
  90. package/dist/ai/source/BbBaseDatePickerInput.md +2 -2
  91. package/dist/ai/source/BbBaseRadio.md +1 -1
  92. package/dist/ai/source/BbBaseRating.md +5 -5
  93. package/dist/ai/source/BbBaseSelect.md +1 -1
  94. package/dist/ai/source/BbBaseSlider.md +5 -5
  95. package/dist/ai/source/BbBaseSwitch.md +1 -1
  96. package/dist/ai/source/BbBaseTimePickerInput.md +1 -1
  97. package/dist/ai/source/BbBreadcrumbs.md +20 -1
  98. package/dist/ai/source/BbButton.md +2 -2
  99. package/dist/ai/source/BbDialog.md +39 -8
  100. package/dist/ai/source/BbDropdown.md +1 -1
  101. package/dist/ai/source/BbDropzone.md +5 -5
  102. package/dist/ai/source/BbIcon.md +23 -10
  103. package/dist/ai/source/BbOffCanvas.md +50 -28
  104. package/dist/ai/source/BbPagination.md +2 -2
  105. package/dist/ai/source/BbPopover.md +12 -1
  106. package/dist/ai/source/BbSelectPopover.md +45 -7
  107. package/dist/ai/source/BbSpinner.md +2 -2
  108. package/dist/ai/source/BbTable.md +11 -11
  109. package/dist/ai/source/BbTooltip.md +57 -10
  110. package/dist/ai/source/ChipsBox.md +1 -1
  111. package/dist/ai/source/CommaBox.md +1 -1
  112. package/dist/ai/source/GuidesComponent.md +14 -7
  113. package/dist/ai/source/OptionsContainer.md +1 -1
  114. package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +1 -1
  115. package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  116. package/dist/components/BbBaseCheckbox/BbBaseCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/components/BbBaseDatePicker/BbBaseDatePicker.vue_vue_type_script_setup_true_lang.js +4 -4
  118. package/dist/components/BbBaseDatePicker/BbBaseDatePickerInputDaySelector.vue_vue_type_script_setup_true_lang.js +1 -1
  119. package/dist/components/BbBaseDatePickerInput/BbBaseDatePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
  120. package/dist/components/BbBaseInputContainer/BbBaseInputContainer.vue.d.ts +1 -1
  121. package/dist/components/BbBaseRadio/BbBaseRadio.vue_vue_type_script_setup_true_lang.js +1 -1
  122. package/dist/components/BbBaseRating/BbBaseRating.vue_vue_type_script_setup_true_lang.js +3 -3
  123. package/dist/components/BbBaseSelect/BbBaseSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  124. package/dist/components/BbBaseSlider/BbBaseSlider.vue_vue_type_script_setup_true_lang.js +3 -3
  125. package/dist/components/BbBaseSwitch/BbBaseSwitch.vue_vue_type_script_setup_true_lang.js +1 -1
  126. package/dist/components/BbBaseTimePickerInput/BbBaseTimePickerInput.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/components/BbBreadcrumbs/BbBreadcrumbs.vue_vue_type_script_setup_true_lang.js +71 -71
  128. package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +2 -2
  129. package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +102 -97
  130. package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +1 -1
  131. package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +58 -58
  132. package/dist/components/BbDropzone/BbDropzone.vue_vue_type_script_setup_true_lang.js +2 -2
  133. package/dist/components/BbIcon/BbIcon.vue_vue_type_script_setup_true_lang.js +33 -35
  134. package/dist/components/BbIcon/iconCache.d.ts +30 -0
  135. package/dist/components/BbIcon/iconCache.js +21 -3
  136. package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +57 -56
  137. package/dist/components/BbPagination/BbPagination.vue_vue_type_script_setup_true_lang.js +2 -2
  138. package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +138 -138
  139. package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +43 -43
  140. package/dist/components/BbSpinner/BbSpinner.vue_vue_type_script_setup_true_lang.js +1 -1
  141. package/dist/components/BbSpinner/types.d.ts +1 -1
  142. package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +8 -8
  143. package/dist/components/BbTable/BbTableDataRow.js +2 -2
  144. package/dist/components/BbToast/BbToastRegion.vue_vue_type_script_setup_true_lang.js +62 -62
  145. package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +81 -78
  146. package/dist/components/BbTooltip/types.d.ts +8 -1
  147. package/dist/components/ChipsBox/ChipsBox.vue_vue_type_script_setup_true_lang.js +1 -1
  148. package/dist/components/CommaBox/CommaBox.vue_vue_type_script_setup_true_lang.js +1 -1
  149. package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  150. package/dist/composables/useConfirm.d.ts +22 -0
  151. package/dist/composables/useConfirm.js +43 -40
  152. package/dist/composables/useSafeAreaInternal.js +1 -1
  153. package/dist/composables/useToast.d.ts +16 -0
  154. package/dist/composables/useToast.js +20 -16
  155. package/dist/composables/useViewportWidth.d.ts +20 -6
  156. package/dist/composables/useViewportWidth.js +8 -7
  157. package/dist/icon-scan.d.ts +276 -0
  158. package/dist/icon-scan.js +485 -0
  159. package/dist/icons-whitelist.d.ts +5 -4
  160. package/dist/llms-full.txt +1979 -1527
  161. package/dist/llms-medium.txt +461 -74
  162. package/dist/llms.txt +1 -1
  163. package/dist/nuxt.js +10 -7
  164. package/dist/plugin.js +1 -0
  165. package/dist/runtime/nuxt-plugin.js +2 -1
  166. package/dist/styles.css +1 -1
  167. package/dist/types/Config.d.ts +18 -0
  168. package/dist/utils/cssLayers.d.ts +91 -0
  169. package/dist/utils/cssLayers.js +43 -0
  170. package/dist/utils/injectLibraryStyles.d.ts +3 -1
  171. package/dist/utils/injectLibraryStyles.js +24 -23
  172. package/dist/vite-plugin.d.ts +74 -11
  173. package/dist/vite.js +292 -253
  174. package/llms.txt +1 -1
  175. package/package.json +7 -5
  176. package/scripts/lib/ensure-manifest.mjs +28 -5
  177. package/scripts/lib/eslint-plugin.d.ts +35 -0
  178. package/scripts/lib/eslint-plugin.mjs +299 -3
  179. package/scripts/lib/hand-roll-hints.mjs +50 -6
  180. package/scripts/lib/html-attributes.mjs +42 -0
  181. package/scripts/lib/mcp-config.mjs +38 -34
  182. package/scripts/lib/public-type-exports.mjs +246 -0
  183. package/scripts/lib/validate-bb-markup.mjs +205 -12
package/dist/ai/BbTree.md CHANGED
@@ -68,20 +68,14 @@ normally:
68
68
  ```vue
69
69
  <template>
70
70
  <div
71
- class="w-full max-w-xs overflow-hidden rounded-[var(--bb-radius)] border border-[color:var(--bb-border)]"
71
+ class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
72
72
  >
73
73
  <div
74
- class="flex items-center gap-1.5 border-b border-[color:var(--bb-border)] px-2.5 py-1.5"
74
+ class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
75
75
  >
76
- <BbIcon
77
- class="text-[color:var(--bb-text-muted)]"
78
- icon="lucide:users"
79
- size="sm"
80
- />
76
+ <BbIcon class="text-(--bb-text-muted)" icon="lucide:users" size="sm" />
81
77
  <span class="text-xs font-medium">People</span>
82
- <span class="ml-auto text-xs text-[color:var(--bb-text-muted)]"
83
- >Acme Studio</span
84
- >
78
+ <span class="ml-auto text-xs text-(--bb-text-muted)">Acme Studio</span>
85
79
  </div>
86
80
 
87
81
  <BbTree
@@ -96,12 +90,12 @@ normally:
96
90
  <button
97
91
  v-if="expandable"
98
92
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
99
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-sm font-medium hover:bg-[color:var(--bb-surface-hover)]"
93
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm font-medium hover:bg-(--bb-surface-hover)"
100
94
  type="button"
101
95
  v-bind="expandProps"
102
96
  >
103
97
  <BbIcon
104
- class="shrink-0 text-[color:var(--bb-text-muted)]"
98
+ class="shrink-0 text-(--bb-text-muted)"
105
99
  :icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
106
100
  size="sm"
107
101
  />
@@ -114,7 +108,7 @@ normally:
114
108
  expanded with no toggle, so it reads as a pinned section. -->
115
109
  <span
116
110
  v-else-if="item.children?.length"
117
- class="flex items-center gap-1.5 px-1.5 py-1 text-xs font-semibold uppercase tracking-wide text-[color:var(--bb-text-muted)]"
111
+ class="flex items-center gap-1.5 px-1.5 py-1 text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase"
118
112
  >
119
113
  {{ meta.name }}
120
114
  </span>
@@ -124,7 +118,7 @@ normally:
124
118
  {{ initials(meta.name) }}
125
119
  </BbAvatar>
126
120
  <span class="min-w-0 truncate font-medium">{{ meta.name }}</span>
127
- <span class="shrink-0 text-xs text-[color:var(--bb-text-muted)]">{{
121
+ <span class="shrink-0 text-xs text-(--bb-text-muted)">{{
128
122
  meta.role
129
123
  }}</span>
130
124
  </span>
@@ -222,20 +216,14 @@ as plain rows.
222
216
  ```vue
223
217
  <template>
224
218
  <div
225
- class="w-full max-w-xs overflow-hidden rounded-[var(--bb-radius)] border border-[color:var(--bb-border)]"
219
+ class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
226
220
  >
227
221
  <div
228
- class="flex items-center gap-1.5 border-b border-[color:var(--bb-border)] px-2.5 py-1.5"
222
+ class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
229
223
  >
230
- <BbIcon
231
- class="text-[color:var(--bb-text-muted)]"
232
- icon="lucide:files"
233
- size="sm"
234
- />
224
+ <BbIcon class="text-(--bb-text-muted)" icon="lucide:files" size="sm" />
235
225
  <span class="text-xs font-medium">Explorer</span>
236
- <span class="ml-auto text-xs text-[color:var(--bb-text-muted)]"
237
- >acme-web</span
238
- >
226
+ <span class="ml-auto text-xs text-(--bb-text-muted)">acme-web</span>
239
227
  </div>
240
228
 
241
229
  <BbTree
@@ -249,17 +237,17 @@ as plain rows.
249
237
  <button
250
238
  v-if="expandable"
251
239
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
252
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-sm hover:bg-[color:var(--bb-surface-hover)]"
240
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm hover:bg-(--bb-surface-hover)"
253
241
  type="button"
254
242
  v-bind="expandProps"
255
243
  >
256
244
  <BbIcon
257
- class="shrink-0 text-[color:var(--bb-text-muted)]"
245
+ class="shrink-0 text-(--bb-text-muted)"
258
246
  :icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
259
247
  size="sm"
260
248
  />
261
249
  <BbIcon
262
- class="shrink-0 text-[color:var(--bb-text-muted)]"
250
+ class="shrink-0 text-(--bb-text-muted)"
263
251
  :icon="expanded ? 'lucide:folder-open' : 'lucide:folder'"
264
252
  size="sm"
265
253
  />
@@ -267,16 +255,14 @@ as plain rows.
267
255
  </button>
268
256
  <span
269
257
  v-else
270
- class="flex items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 pl-[1.55rem] text-sm text-[color:var(--bb-text-muted)]"
258
+ class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted)"
271
259
  >
272
260
  <BbIcon
273
- class="shrink-0 text-[color:var(--bb-text-faint)]"
261
+ class="shrink-0 text-(--bb-text-faint)"
274
262
  icon="lucide:file"
275
263
  size="sm"
276
264
  />
277
- <span class="truncate text-[color:var(--bb-text)]">{{
278
- meta.name
279
- }}</span>
265
+ <span class="truncate text-(--bb-text)">{{ meta.name }}</span>
280
266
  </span>
281
267
  </template>
282
268
  </BbTree>
@@ -364,7 +350,7 @@ or restore them on reload.
364
350
 
365
351
  <BbTree
366
352
  v-model:expanded-items="expandedSections"
367
- class="rounded-[var(--bb-radius)] border border-[color:var(--bb-border)] p-1.5"
353
+ class="rounded-(--bb-radius) border border-(--bb-border) p-1.5"
368
354
  :expandable="(node) => !!node.children?.length"
369
355
  item-value="id"
370
356
  :items="sections"
@@ -374,7 +360,7 @@ or restore them on reload.
374
360
  <button
375
361
  v-if="expandable"
376
362
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
377
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-xs font-semibold uppercase tracking-wide text-[color:var(--bb-text-muted)] hover:bg-[color:var(--bb-surface-hover)]"
363
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase hover:bg-(--bb-surface-hover)"
378
364
  type="button"
379
365
  v-bind="expandProps"
380
366
  >
@@ -471,7 +457,7 @@ useful for a custom layout or an inline empty state under one branch.
471
457
  ```vue
472
458
  <template>
473
459
  <BbTree
474
- class="w-full max-w-xs rounded-[var(--bb-radius)] border border-[color:var(--bb-border)] p-1.5"
460
+ class="w-full max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
475
461
  :expandable="(n) => !!n.children?.length"
476
462
  item-value="id"
477
463
  :items="pages"
@@ -481,7 +467,7 @@ useful for a custom layout or an inline empty state under one branch.
481
467
  <template #0="{ meta, expanded, expandProps }">
482
468
  <button
483
469
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
484
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-xs font-semibold uppercase tracking-wide text-[color:var(--bb-text-muted)] hover:bg-[color:var(--bb-surface-hover)]"
470
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-xs font-semibold tracking-wide text-(--bb-text-muted) uppercase hover:bg-(--bb-surface-hover)"
485
471
  type="button"
486
472
  v-bind="expandProps"
487
473
  >
@@ -498,7 +484,7 @@ useful for a custom layout or an inline empty state under one branch.
498
484
  <template #trash="{ meta, expanded, expandProps }">
499
485
  <button
500
486
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.label}`"
501
- class="knowledge-base-tree__trash flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-sm"
487
+ class="knowledge-base-tree__trash flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm"
502
488
  type="button"
503
489
  v-bind="expandProps"
504
490
  >
@@ -514,13 +500,11 @@ useful for a custom layout or an inline empty state under one branch.
514
500
  <li
515
501
  v-for="page in item.children ?? []"
516
502
  :key="page.meta.id"
517
- class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-[color:var(--bb-text-muted)] line-through"
503
+ class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted) line-through"
518
504
  >
519
505
  <BbIcon icon="lucide:file-x" size="sm" /> {{ page.meta.label }}
520
506
  </li>
521
- <li
522
- class="px-1.5 pb-1 pl-[1.55rem] text-xs text-[color:var(--bb-text-muted)]"
523
- >
507
+ <li class="px-1.5 pb-1 pl-[1.55rem] text-xs text-(--bb-text-muted)">
524
508
  Deleted pages are removed for good after 30 days.
525
509
  </li>
526
510
  </ul>
@@ -529,10 +513,10 @@ useful for a custom layout or an inline empty state under one branch.
529
513
  <!-- Default slot: every remaining node (the pages). -->
530
514
  <template #default="{ meta }">
531
515
  <span
532
- class="flex items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 pl-[1.55rem] text-sm"
516
+ class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 pl-[1.55rem] text-sm"
533
517
  >
534
518
  <BbIcon
535
- class="text-[color:var(--bb-text-faint)]"
519
+ class="text-(--bb-text-faint)"
536
520
  icon="lucide:file-text"
537
521
  size="sm"
538
522
  />
@@ -646,7 +630,7 @@ out of the box: collapsing is a smooth CSS grid-rows transition, not a remount.
646
630
  },
647
631
  ]"
648
632
  :expandable="(n) => !!n.children?.length"
649
- class="max-w-xs rounded-[var(--bb-radius)] border border-[color:var(--bb-border)] p-1.5"
633
+ class="max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
650
634
  style="--indent:1.5rem; --gap:.375rem"
651
635
  >
652
636
  <template #default="{ meta, expandable, expanded, expandProps }">
@@ -654,16 +638,16 @@ out of the box: collapsing is a smooth CSS grid-rows transition, not a remount.
654
638
  v-if="expandable"
655
639
  v-bind="expandProps"
656
640
  type="button"
657
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-sm font-medium hover:bg-[color:var(--bb-surface-hover)]"
641
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm font-medium hover:bg-(--bb-surface-hover)"
658
642
  >
659
643
  <BbIcon
660
- class="text-[color:var(--bb-text-muted)]"
644
+ class="text-(--bb-text-muted)"
661
645
  :icon="expanded ? 'lucide:chevron-down' : 'lucide:chevron-right'"
662
646
  size="sm"
663
647
  />
664
648
  {{ meta.name }}
665
649
  </button>
666
- <span v-else class="px-1.5 py-0.5 text-sm text-[color:var(--bb-text-muted)]">{{ meta.name }}</span>
650
+ <span v-else class="px-1.5 py-0.5 text-sm text-(--bb-text-muted)">{{ meta.name }}</span>
667
651
  </template>
668
652
  </BbTree>
669
653
  ```
@@ -682,7 +666,7 @@ scoped under a wrapper class so it stays local.
682
666
  ```vue
683
667
  <template>
684
668
  <BbTree
685
- class="connector-tree w-full max-w-xs rounded-[var(--bb-radius)] border border-[color:var(--bb-border)] p-1.5"
669
+ class="connector-tree w-full max-w-xs rounded-(--bb-radius) border border-(--bb-border) p-1.5"
686
670
  :expandable="(node) => !!node.children?.length"
687
671
  item-value="path"
688
672
  :items="items"
@@ -691,12 +675,12 @@ scoped under a wrapper class so it stays local.
691
675
  <button
692
676
  v-if="expandable"
693
677
  :aria-label="`${expanded ? 'Collapse' : 'Expand'} ${meta.name}`"
694
- class="flex items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-sm hover:bg-[color:var(--bb-surface-hover)]"
678
+ class="flex items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-sm hover:bg-(--bb-surface-hover)"
695
679
  type="button"
696
680
  v-bind="expandProps"
697
681
  >
698
682
  <BbIcon
699
- class="shrink-0 text-[color:var(--bb-text-muted)]"
683
+ class="shrink-0 text-(--bb-text-muted)"
700
684
  :icon="expanded ? 'lucide:folder-open' : 'lucide:folder'"
701
685
  size="sm"
702
686
  />
@@ -704,14 +688,14 @@ scoped under a wrapper class so it stays local.
704
688
  </button>
705
689
  <span
706
690
  v-else
707
- class="flex items-center gap-1.5 px-1.5 py-0.5 text-sm text-[color:var(--bb-text-muted)]"
691
+ class="flex items-center gap-1.5 px-1.5 py-0.5 text-sm text-(--bb-text-muted)"
708
692
  >
709
693
  <BbIcon
710
- class="shrink-0 text-[color:var(--bb-text-faint)]"
694
+ class="shrink-0 text-(--bb-text-faint)"
711
695
  icon="lucide:file"
712
696
  size="sm"
713
697
  />
714
- <span class="text-[color:var(--bb-text)]">{{ meta.name }}</span>
698
+ <span class="text-(--bb-text)">{{ meta.name }}</span>
715
699
  </span>
716
700
  </template>
717
701
  </BbTree>
@@ -829,20 +813,14 @@ fetch and swap its children.
829
813
  ```vue
830
814
  <template>
831
815
  <div
832
- class="w-full max-w-xs overflow-hidden rounded-[var(--bb-radius)] border border-[color:var(--bb-border)]"
816
+ class="w-full max-w-xs overflow-hidden rounded-(--bb-radius) border border-(--bb-border)"
833
817
  >
834
818
  <div
835
- class="flex items-center gap-1.5 border-b border-[color:var(--bb-border)] px-2.5 py-1.5"
819
+ class="flex items-center gap-1.5 border-b border-(--bb-border) px-2.5 py-1.5"
836
820
  >
837
- <BbIcon
838
- class="text-[color:var(--bb-text-muted)]"
839
- icon="lucide:cloud"
840
- size="sm"
841
- />
821
+ <BbIcon class="text-(--bb-text-muted)" icon="lucide:cloud" size="sm" />
842
822
  <span class="text-xs font-medium">Remote files</span>
843
- <span class="ml-auto text-xs text-[color:var(--bb-text-muted)]"
844
- >lazy load</span
845
- >
823
+ <span class="ml-auto text-xs text-(--bb-text-muted)">lazy load</span>
846
824
  </div>
847
825
 
848
826
  <BbTree
@@ -857,17 +835,17 @@ fetch and swap its children.
857
835
  <button
858
836
  v-if="expandable"
859
837
  :aria-label="`${isOpen ? 'Collapse' : 'Expand'} ${meta.label}`"
860
- class="flex w-full items-center gap-1.5 rounded-[var(--bb-radius-sm)] px-1.5 py-0.5 text-left text-sm hover:bg-[color:var(--bb-surface-hover)]"
838
+ class="flex w-full items-center gap-1.5 rounded-(--bb-radius-sm) px-1.5 py-0.5 text-left text-sm hover:bg-(--bb-surface-hover)"
861
839
  type="button"
862
840
  v-bind="expandProps"
863
841
  >
864
842
  <BbIcon
865
- class="shrink-0 text-[color:var(--bb-text-muted)]"
843
+ class="shrink-0 text-(--bb-text-muted)"
866
844
  :icon="isOpen ? 'lucide:chevron-down' : 'lucide:chevron-right'"
867
845
  size="sm"
868
846
  />
869
847
  <BbIcon
870
- class="shrink-0 text-[color:var(--bb-text-muted)]"
848
+ class="shrink-0 text-(--bb-text-muted)"
871
849
  :icon="isOpen ? 'lucide:folder-open' : 'lucide:folder'"
872
850
  size="sm"
873
851
  />
@@ -875,7 +853,7 @@ fetch and swap its children.
875
853
  </button>
876
854
  <span
877
855
  v-else-if="meta.loading"
878
- class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-[color:var(--bb-text-muted)]"
856
+ class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm text-(--bb-text-muted)"
879
857
  >
880
858
  <BbSpinner size="xs" /> Loading…
881
859
  </span>
@@ -883,11 +861,7 @@ fetch and swap its children.
883
861
  v-else
884
862
  class="flex items-center gap-1.5 px-1.5 py-0.5 pl-[1.55rem] text-sm"
885
863
  >
886
- <BbIcon
887
- class="text-[color:var(--bb-text-faint)]"
888
- icon="lucide:file"
889
- size="sm"
890
- />
864
+ <BbIcon class="text-(--bb-text-faint)" icon="lucide:file" size="sm" />
891
865
  {{ meta.label }}
892
866
  </span>
893
867
  </template>